← Methods repository
CONCEPTINTERMEDIATEPYTHON · R · SAS5 citations

Primary Non-Adherence and Treatment Initiation

The operational distinction between a medication being prescribed/ordered and actually being dispensed, picked up, or administered, where failure of that first fill or first administration (primary non-adherence) silently removes patients from any "first-fill" exposure cohort and selects a more adherent population.

Exposure Definitionprimary-non-adherenceprescription-abandonmenttreatment-initiationfirst-fille-prescribingpharmacoepidemiology
On this page
Methods reference only. Use primary source citations and local policy before applying this in a study protocol, regulatory submission, payer dossier, or clinical decision.
In plain language

Primary non-adherence describes what happens when a doctor writes a prescription for a drug but the patient never goes to the pharmacy to fill it — the medication is ordered but the bottle is never picked up. To measure this you need two data layers linked together: the electronic order that the doctor sent, plus the pharmacy dispensing record that shows whether a fill actually happened. A claims database alone cannot reveal this gap, because it only records fills that occurred, not prescriptions that were ignored. This is different from secondary non-adherence, where the patient fills the prescription at least once but later stops taking the drug consistently.

When to use it
Questions about uptake, abandonment, or the validity of a first-fill time zero.
Whenever the exposure (fill) decision could differ across comparison groups and bias the contrast.
Effectiveness/safety questions where exposure means the patient actually started the drug.
Watch out for
Requires an order source (e-Rx/EHR/integrated system) that PDC/MPR do not; cannot be computed from claims alone.
Requires order data, a defensible order-to-fill window, and extra diagnostics.
Cannot answer prescriber-behavior questions that intentionally treat the order itself as the exposure.

Primary non-adherence

is the gap between the moment a clinician prescribes or orders a drug and the moment the patient actually starts it — fills the prescription at a pharmacy, picks up the dispensed product, or (for administered products) receives the first dose A patient who is prescribed a statin but never fills it is a primary non-adherer; this is categorically different from a patient who fills once and then stops (persistence) or fills sporadically (secondary non-adherence, measured by PDC/MPR)

The reported magnitude is large and consistent: ~28% of new e-prescriptions were never dispensed within the index period in a 195,930-prescription analysis (Fischer 2010), and ~31% of newly prescribed medications in primary care were never filled (Tamblyn 2014). "Initiation" is the mirror image: the point at which exposure truly begins and time zero can legitimately be set.

Core conceptual distinction

The decisive fact — and the reason this is a discrete catalog entry rather than a footnote to exposure-episode construction — is that administrative claims data structurally cannot measure primary non-adherence. Claims record dispensings, not orders The denominator you need (everyone who was prescribed) is invisible in a claims database; you only ever observe the numerator's survivors (those who filled at least once)

Measuring primary non-adherence therefore requires a source that captures the order: an e-prescribing network (Surescripts), EHR computerized provider order entry (CPOE), or an integrated delivery system's prescribing record, linked to fill/administration data Without that order layer you can measure secondary non-adherence among fillers and nothing about the people who never filled

Two further sub-distinctions matter: (1) dispensed vs picked up — a pharmacy can adjudicate and reverse a claim when the patient never collects the drug (prescription abandonment), so a raw paid pharmacy claim is not proof of pickup unless reversals are netted out; (2) dispensed vs administered — for buy-and-bill infusibles, injectables, and in-office products, a pharmacy fill is not initiation; the J-code/procedure on a service date or the EHR medication administration record (MAR) is A vialed biologic that is dispensed but never infused is initiation failure, not initiation.

Pros, cons, and trade-offs

  • vs PDC / MPR (secondary-adherence measures): PDC and MPR are computed conditional on having filled at least once — they are blind to primary non-adherers by construction and so systematically overstate population-level drug exposure. Capturing primary non-adherence + initiation gives the complete picture from order to discontinuation. Cost: it requires an order source PDC/MPR do not (PDC runs on claims alone). Prefer this concept when the policy or effectiveness question concerns uptake, abandonment, or the validity of "first-fill" time zero; prefer PDC/MPR for ongoing-coverage adherence among established users.
  • vs simply defining index = "first fill" and moving on (the silent default in most new-user/ACNU studies): explicitly modeling primary non-adherence reveals that the first-fill cohort is a selected, more-adherent subset — the ~25-30% who never filled are dropped before time zero, a healthy-adherer-flavored selection that can bias even a methodologically clean comparative-effectiveness contrast. Cost: more data, an order-to-fill window to defend, and extra diagnostics. Prefer explicit modeling whenever the exposure decision (not just on-treatment behavior) could differ across the comparison groups.
  • vs an intention-to-treat "as-prescribed" estimand from e-Rx alone: counting the order as exposure regardless of fill answers a prescriber-behavior question but misclassifies never-fillers as treated, biasing effect estimates toward the null for any drug that works only if taken. Prefer the as-prescribed estimand only when the question is explicitly about the prescribing decision (e.g., a prescriber-level intervention), and say so in the estimand.

When NOT to use — and when it is actively misleading or dangerous

  • You have claims only. Do not report a "primary non-adherence rate" from a claims database — there is no order denominator, so any such number is uninterpretable and will mislead reviewers. With claims you can only study secondary non-adherence among fillers. State this as a hard limitation, not something a workaround fixes.
  • The order source is incomplete. Surescripts misses paper/written and verbal prescriptions; an EHR captures only in-network orders. If a non-trivial share of prescribing bypasses the captured channel, "never filled" conflates true abandonment with prescriptions that were routed elsewhere — differential by clinic, payer, or drug.
  • For administered products, when only the pharmacy fill is checked. Declaring initiation on a buy-and-bill fill that was never infused overcounts initiation and miscounts the true initiation-failure population.
  • When the order-to-fill window is left implicit. A 7-day window labels mail-order and prior-authorization delays as non-adherence; a 365-day window absorbs genuine abandonment into "delayed fill." The window is an analytic choice that must be pre-specified and varied in sensitivity analysis.

Data-source operational depth

  • Claims only (FFS, commercial, MA): Cannot measure primary non-adherence at all — no order denominator. Worse, in Medicare Advantage and capitated arrangements, fee-for-service pharmacy claims may be absent, so even fill capture among the supposedly-treated is incomplete; "no fill" can be MA-only missing person-time rather than true non-fulfillment. Workaround: restrict to enrollees with complete Part D (or commercial pharmacy benefit) and use claims for secondary adherence only.
  • EHR with CPOE / e-prescribing: the order is visible (good), but the fill is not unless pharmacy data are linked. Use the Surescripts fill-status response, payer pharmacy claims, or integrated-pharmacy dispensings to close the loop. Failure mode: external-care leakage — a patient who fills at a pharmacy outside the linked network looks like a non-adherer.
  • Surescripts / e-Rx network: the standard denominator source. Failure modes: transmission failures, cancel/replace messages that double-count, and invisibility of paper/verbal prescriptions and free-text orders; reconcile the new-prescription event before treating it as the denominator.
  • Linked claims–EHR (and integrated systems such as Kaiser, VA, Geisinger): the gold standard — order from EHR/e-Rx, fill from claims/pharmacy, administration from MAR/J-codes. The central reconciliation task is date alignment: a fill may post 7, 30, or 90 days after the order; pre-specify the index window and test 7/30/90-day cuts. For infusibles, require a J-code/administration on a service date, not the buy-and-bill fill, to confirm initiation.

Worked example (e-Rx linked to claims)

Question: primary non-adherence to newly e-prescribed oral anticoagulants, and its effect on a downstream "new-user" cohort (1) Denominator: every new e-prescription (`erx_date`, `drug_class='DOAC'`, `new_start_flag=1` so refills/continuations are excluded) for an adult with continuous medical + pharmacy enrollment in the 90 days before and the index window after `erx_date` — enrollment is required so that "no fill" is observed, not missing (2) Numerator (primary non-adherer): no DOAC pharmacy dispense (`fill_date` within `[erx_date, erx_date + W]`), netting out reversed/abandoned claims

(3) Primary non-adherence rate = numerator / denominator; with W = 30 days suppose 1,000 of 4,000 new e-Rx never filled → 25.0% (4) Window sensitivity: W = 7 days → 1,420/4,000 = 35.5% (counts slow legitimate fills as non-adherence); W = 90 days → 860/4,000 = 21.5% (absorbs true abandonment) Report all three

(5) Selection-bias link: the 3,000 fillers are the exact population a conventional new-user/ACNU study would index on "first fill" — so that downstream cohort has silently excluded the 25% never-fillers and is selected toward adherence; flag this when interpreting the comparative estimate (6) For an injectable arm, replace step (2) with a J-code administration on a service date so a dispensed-but- never-infused vial is correctly counted as initiation failure.

Decision diagram

flowchart TD
  Order[New e-prescription / CPOE order<br/>drug_class, new_start_flag, erx_date] --> Window{Eligible dispense or administration<br/>within order-to-fill window?}
  Window -->|No fill / no administration| PNA[Primary non-adherence<br/>= initiation failure]
  Window -->|Fill / J-code on service date| Init[Initiation: time zero set here]
  Init --> Cohort[Enters first-fill new-user / ACNU cohort]
  PNA -.silently excluded.-> Cohort
  Cohort --> Bias[Cohort selected toward adherers<br/>-> healthy-adherer-like selection bias]
How primary non-adherence determines initiation and silently selects the first-fill cohort. Only patients whose order is matched by a dispense (or administration) within the pre-specified window become initiators and enter a new-user/ACNU cohort; the never-fillers are dropped before time zero, biasing the surviving cohort toward adherers.
flowchart LR
  subgraph Sources[Required data layers]
    eRx[Order: Surescripts / EHR CPOE] --> Link
    Fill[Fill: pharmacy claims / dispensings] --> Link
    Adm[Administration: J-code / MAR] --> Link
  end
  Link[Linked, date-reconciled record] --> Num[Numerator: orders with no fill/admin in window]
  Link --> Den[Denominator: all new orders for the class]
  Num --> Rate[Primary non-adherence rate<br/>vary window 7/30/90 days]
  Den --> Rate
  ClaimsOnly[Claims only: no order layer] -.cannot compute.-> Rate
Data-flow for measuring primary non-adherence. The order layer is mandatory; a claims-only source has no order denominator and cannot produce the rate.

Worked example

Scenario

A cardiologist sends three e-prescriptions for a blood thinner (a DOAC) on 2023-03-01. We want to see which patients started the drug (filled it within 30 days) and which were primary non-adherers (never filled). The pharmacy claims table covers the same time window. Patient 2001 fills promptly, patient 2002 fills late (outside the 30-day window), and patient 2003 never fills at all.

Dataset

Caption

Left table: electronic prescriptions sent by the doctor. Right table: pharmacy fills found in claims (reversed = claim later voided, meaning the patient left without the drug).

Erx Table
person_iderx_datedrug_classnew_start_flag
20012023-03-01DOAC1
20022023-03-01DOAC1
20032023-03-01DOAC1
Rx Table
person_idfill_datedrug_classdays_supplyreversed
20012023-03-10DOAC30False
20022023-04-15DOAC30False
20032023-03-05DOAC30True
FIG. 1 — DESIGN TIMELINE
Horizontal timeline from 2023-03-01 to beyond 2023-03-31. A vertical marker on March 1 labels the e-prescription order for all three patients. A green fill bar for patient 2001 begins March 10 inside the window. A small red stub on March 5 marks patient 2003 reversed fill. Patient 2002 has no bar inside the window. The 30-day boundary is drawn as a dashed vertical line at March 31.
Timeline showing one prescription date (2023-03-01) and three patient outcomes: patient 2001 fills within the 30-day window (initiates), patient 2003 shows a reversed fill at the counter but never takes the drug home (abandonment), and patient 2002 fills 45 days later, outside the window.

Steps

1The denominator is all three e-prescriptions written on 2023-03-01 — this is the group the doctor intended to treat.
2For each order, look for a pharmacy fill for the same person, same drug class, that is NOT reversed, and falls within 30 days of 2023-03-01 (i.e., on or before 2023-03-31).
3Patient 2001 filled on 2023-03-10 — that is 9 days after the prescription, within the 30-day window, and the claim was not reversed. Patient 2001 INITIATED the drug.
4Patient 2002 filled on 2023-04-15 — that is 45 days after the prescription, outside the 30-day window. Under a 30-day rule, patient 2002 is counted as a primary non-adherer (a 90-day window would reclassify them as a late initiator).
5Patient 2003 has a fill record dated 2023-03-05, but the reversed flag is true — the pharmacy voided that claim, meaning the patient did not actually take the drug home. No valid fill exists. Patient 2003 is a primary non-adherer (prescription abandonment at the counter).
6Primary non-adherence rate = 2 never-filled orders out of 3 total orders = 2/3 = 67%. Note: this small example is illustrative; real studies with thousands of prescriptions typically find 25-35% primary non-adherence.

Result

Label

Primary non-adherence rate (30-day window): 2 of 3 patients never filled = 67% (illustrative example; real-world rates ~25-35%)

Value

0.667

Trade-offs

vs. PDC / MPR (secondary adherence measures)
Pros of this
Captures the never-fillers that PDC/MPR are structurally blind to, giving a complete order-to-discontinuation picture and exposing first-fill selection.
vs. Defining index date as "first fill" with no primary non adherence modeling
Pros of this
Reveals that the first-fill cohort is a selected, more-adherent subset (the ~25-30% never-fillers are dropped), making a healthy-adherer-like selection visible rather than hidden.
vs. As prescribed (order only) intention to treat exposure
Pros of this
Avoids misclassifying never-fillers as treated, which biases drug-effect estimates toward the null.

Runnable example

Primary non-adherence (oral/self-administered) by anti-joining e-prescriptions to dispensings. Required inputs (already cleaned, de-duplicated, restricted to enrolled person-time): erx : new e-prescription orders -> person_id, erx_date (datetime), drug_class, new_start_flag (1=new start) rx : pharmacy dispensings ->...

requires: pandas
import pandas as pd

def primary_non_adherence(erx: pd.DataFrame, rx: pd.DataFrame,
                          drug_class: str, window_days: int = 30) -> tuple[pd.DataFrame, float]:
    # Denominator: one row per new e-prescription for the target class.
    orders = erx[(erx["drug_class"] == drug_class) & (erx["new_start_flag"] == 1)].copy()

    # Eligible fills: same class, NOT reversed/abandoned, within [erx_date, erx_date + window].
    fills = rx[(rx["drug_class"] == drug_class) & (~rx["reversed"])][["person_id", "fill_date"]]
    m = orders.merge(fills, on="person_id", how="left")
    in_window = (m["fill_date"] >= m["erx_date"]) & \
                (m["fill_date"] <= m["erx_date"] + pd.Timedelta(days=window_days))

    # An order is "filled" if at least one eligible fill falls in its window.
    m["filled"] = in_window
    filled_per_order = m.groupby(orders.index).agg(filled=("filled", "any"))
    orders = orders.join(filled_per_order)
    orders["primary_non_adherent"] = ~orders["filled"].fillna(False)

    rate = orders["primary_non_adherent"].mean()
    return orders[["person_id", "erx_date", "primary_non_adherent"]], float(rate)

Citations

FOUNDATIONAL / METHODS
  1. [1]Fischer MA, Stedman MR, Lii J, et al. Primary medication non-adherence: analysis of 195,930 electronic prescriptions. Journal of General Internal Medicine. 2010;25(4):284-290.
  2. [2]Raebel MA, Schmittdiel J, Karter AJ, Konieczny JL, Steiner JF. Standardizing terminology and definitions of medication adherence and persistence in research employing electronic databases. Medical Care. 2013;51(8 Suppl 3):S11-S21.
  3. [3]Andrade SE, Kahler KH, Frech F, Chan KA. Methods for evaluation of medication adherence and persistence using automated databases. Pharmacoepidemiology and Drug Safety. 2006;15(8):565-574.
APPLIED EXAMPLES
  1. [4]Tamblyn R, Eguale T, Huang A, Winslade N, Doran P. The incidence and determinants of primary nonadherence with prescribed medication in primary care. Annals of Internal Medicine. 2014;160(7):441-450.
  2. [5]Steiner JF, Prochazka AV. The assessment of refill compliance using pharmacy records: methods, validity, and applications. Journal of Clinical Epidemiology. 1997;50(1):105-116.