Secondary Medication Non-Adherence
Post-initiation failure to obtain or use medication according to the intended regimen, operationalized from longitudinal dispensing or administration histories using coverage measures such as PDC and MPR, persistence and discontinuation rules, refill gaps, or adherence trajectories.
Explore this method family
In plain language
Secondary non-adherence is what happens after a patient starts treatment but does not keep medication available or stops early. PDC and MPR summarize coverage, persistence measures how long treatment continues, and refill-gap or trajectory methods show the shape of the patient's medication history.
Secondary medication non-adherence
begins only after treatment has been initiated. It describes incomplete implementation of the prescribed regimen, early discontinuation, or both during a defined follow-up period. In electronic RWE, the observed behavior is usually medication acquisition or administration rather than ingestion: pharmacy claims show when supply was dispensed, medication administration records show doses given in a care setting, and EHR medication lists show what clinicians believe is active. The card therefore treats every metric as an operational proxy tied to a data source and denominator.
Core conceptual distinction
PDC and MPR are fixed-window coverage-intensity measures; persistence is a duration-to-discontinuation construct; refill-gap measures preserve the timing and size of uncovered intervals; trajectory models classify longitudinal patterns such as consistently high, declining, intermittent, or rapid discontinuation. PDC counts the union of covered days and is bounded at 1.0. MPR sums acquired days_supply and can exceed 1.0 when fills overlap unless capped. Persistence asks how long therapy continues before a prespecified permissible gap is exceeded and can be high even when several smaller gaps reduce PDC. No one metric is the definition of secondary non-adherence. The estimand should determine which child measure is primary.
Pros, cons, and trade-offs
A secondary-adherence hub makes the measurement choice explicit and prevents PDC, MPR, and persistence from being used as synonyms. PDC is usually preferable for bounded quality measurement; MPR can preserve information about oversupply or acquisition volume; persistence is more intuitive for time-to-discontinuation; gap sequences and trajectories expose patterns hidden by one summary number. The cost is analytic multiplicity. Reporting several metrics without prespecifying one primary rule creates threshold shopping. Choose the primary measure, observation window, stockpiling rule, inpatient rule, permissible gap, switch rule, and censoring strategy before outcomes are examined.
When to use
Use this card after a valid initiation event when the research question concerns ongoing medication availability, refill behavior, time on therapy, discontinuation, intermittent use, or adherence-pattern heterogeneity. It is appropriate for drug-utilization studies, quality measures, comparative persistence, adherence interventions, and analyses that need to distinguish inadequate treatment implementation from pharmacologic non-response. Route readers to the PDC, MPR, persistence, or trajectory child card based on the required output.
When NOT to use - and when it is actively misleading
Do not apply secondary-adherence metrics to patients who never initiated; that is primary non-adherence. Do not calculate PDC or MPR when days_supply is absent or meaningless, as for many infused or procedure-administered therapies. Do not interpret a paid claim as confirmed ingestion, or an EHR order as a dispensing. Do not count missing benefit data, plan disenrollment, cash fills, or out-of-network dispensings as uncovered days. Do not define a 12-month adherence group with future data and then start outcome follow-up at initiation; this creates immortal-time and reverse-causation bias. Use a landmark before outcome follow-up, a time-varying adherence history, or a properly specified per-protocol analysis.
Data-source operational depth
Pharmacy claims support PDC, MPR, refill gaps, and persistence when `fill_date`, `days_supply`, reversals, drug identity, and continuous pharmacy enrollment are reliable. Early refills require an explicit stockpiling/carryover rule, hospitalizations require denominator removal or bridging, and switches within a class require an interchangeable-product policy. EHR data may add prescribed dose, stop orders, reasons for discontinuation, and clinical response, but orders and medication lists are not proof of supply. Medication administration records support dose-completion and appointment-gap measures for clinician-administered therapies. Registries and patient reports add reasons and actual-use context but may be incomplete longitudinally. Linked sources are strongest when their date semantics are reconciled.
Worked example
One patient initiates a chronic oral medication on January 1 and receives three consecutive 30-day fills on January 1, January 31, and March 1. The 180-day observation window runs from January 1 through June 28. Under a carryover rule, the fills provide 90 unique covered days, so PDC is 90/180 = 0.50. MPR is also 90/180 = 0.50 because no oversupply remains beyond the window. With a 60-day permissible gap, discontinuation is assigned to March 31, the first uncovered day after the last supply; persistence is 90 days. A patient with early overlapping fills could have MPR above PDC, and a patient who restarts after a long gap could have moderate PDC but short persistence to first discontinuation. Those differences are the reason the measures remain separate children.
Index definitions
Source-backed definitions and variants for the index or checklist family.
| name | definition | source | notes |
|---|---|---|---|
| Proportion of Days Covered (PDC) | Unique covered days during a fixed observation window divided by days in the window, bounded from 0 to 1. | Raebel et al. 2013; doi:10.1097/MLR.0b013e31829b1d2a | Preferred bounded coverage measure for many quality and comparative analyses. |
| Medication Possession Ratio (MPR) | Total days_supply acquired during the measurement interval divided by days in the interval. | Steiner and Prochazka 1997; doi:10.1016/S0895-4356(96)00268-5 | Can exceed 1.0 under overlapping fills unless capped; preserves acquisition volume. |
| Persistence / time to discontinuation | Duration from treatment initiation until discontinuation, usually identified after a permissible gap is exceeded. | Cramer et al. 2008; doi:10.1111/j.1524-4733.2007.00213.x | A duration construct, not a fixed-window coverage percentage. |
| Continuous measure of medication gaps (CMG) | Proportion of the observation interval without medication available; under compatible rules it is the complement of PDC. | Raebel et al. 2013; doi:10.1097/MLR.0b013e31829b1d2a | Expresses non-adherence as uncovered time rather than covered time. |
| Refill-gap sequence | Ordered sizes and timing of uncovered intervals between dispensings rather than one aggregate ratio. | Steiner and Prochazka 1997; doi:10.1016/S0895-4356(96)00268-5 | Retains intermittent-use patterns that PDC and MPR compress. |
| Group-based adherence trajectory | Model-based longitudinal class assignment using repeated coverage or refill measures over time. | Child card group-based-trajectory-models-lca | Useful when pattern heterogeneity is itself the target, but class selection and future-window bias must be addressed. |
Worked example
Scenario
A patient has three consecutive 30-day fills and then no further dispensing during a 180-day window. The analysis compares fixed-window coverage measures with time to discontinuation.
Dataset
Three pharmacy dispensings for one initiated patient.
| person_id | fill_date | days_supply |
|---|---|---|
| 2001 | 2024-01-01 | 30 |
| 2001 | 2024-01-31 | 30 |
| 2001 | 2024-03-01 | 30 |
Steps
Build daily coverage from January 1 through June 28 using a carryover rule for overlapping fills.
The three fills contribute 90 unique covered days, so PDC equals 90 divided by 180, or 0.50.
Total acquired supply is also 90 days, so uncapped MPR equals 90 divided by 180, or 0.50.
With a 60-day permissible gap, discontinuation is backdated to March 31, the first uncovered day after 90 days of supply.
Persistence is 90 days from initiation to discontinuation; PDC and persistence therefore express different aspects of the same history.
Result
PDC = 0.50, MPR = 0.50, and persistence = 90 days under a 60-day permissible-gap rule.
Runnable example
python implementation
Calculate PDC, uncapped MPR, and first-discontinuation persistence. Input fills has person_id, fill_date, and days_supply; index has person_id, index_date, window_end. This compact example assumes same-drug fills, cleaned reversals, continuous...
import pandas as pd
GAP_DAYS = 60
rows = []
for person_id, person_fills in fills.sort_values("fill_date").groupby("person_id"):
start = index.loc[index.person_id.eq(person_id), "index_date"].iloc[0]
end = index.loc[index.person_id.eq(person_id), "window_end"].iloc[0]
window_days = (end - start).days + 1
covered = set()
supply_end = start
discontinuation = pd.NaT
total_supply = 0
for fill in person_fills.itertuples():
total_supply += int(fill.days_supply)
fill_start = max(fill.fill_date, supply_end)
if (fill.fill_date - supply_end).days > GAP_DAYS and pd.isna(discontinuation):
discontinuation = supply_end
fill_end = fill_start + pd.Timedelta(days=int(fill.days_supply))
covered.update(pd.date_range(fill_start, fill_end - pd.Timedelta(days=1), freq="D"))
supply_end = max(supply_end, fill_end)
covered_days = sum(start <= day <= end for day in covered)
rows.append({"person_id": person_id, "pdc": covered_days / window_days,
"mpr": total_supply / window_days,
"persistence_days": ((discontinuation if pd.notna(discontinuation) else supply_end) - start).days})
adherence = pd.DataFrame(rows)r implementation
R/data.table fixed-window PDC and MPR plus a permissible-gap persistence endpoint. Inputs contain cleaned dispensings and one index/window row per initiated patient. Overlapping days are capped for PDC; this compact version does not carry stockpiled supply...
library(data.table)
setDT(fills); setDT(index)
gap_days <- 60L
daily <- fills[, .(covered_date = seq(fill_date, by = "day", length.out = days_supply)),
by = .(person_id, fill_date)]
daily <- unique(daily)
daily <- merge(daily, index, by = "person_id")
daily <- daily[covered_date >= index_date & covered_date <= window_end]
pdc <- daily[, .(covered_days = uniqueN(covered_date)), by = person_id]
supply <- fills[, .(total_supply = sum(days_supply)), by = person_id]
out <- Reduce(function(x, y) merge(x, y, by = "person_id", all = TRUE), list(index, pdc, supply))
out[, window_days := as.integer(window_end - index_date) + 1L]
out[, `:=`(pdc = pmin(covered_days / window_days, 1), mpr = total_supply / window_days)]
setorder(fills, person_id, fill_date)
fills[, previous_end := shift(fill_date + days_supply), by = person_id]
first_gap <- fills[as.integer(fill_date - previous_end) > gap_days,
.(discontinuation = min(previous_end)), by = person_id]
out <- merge(out, first_gap, by = "person_id", all.x = TRUE)
out[, persistence_days := as.integer(fifelse(is.na(discontinuation), window_end + 1L, discontinuation) - index_date)]