Signature
PDC = C / T
| Inputs | Definition | Unit |
|---|---|---|
C | Number of days within the observation period on which at least one fill provides medicine, after shifting overlapping supply of the same drug, each day counted once | days |
T | Number of days from the index date, the first fill of the target medicine, to the end of the measurement year, disenrolment or death, whichever comes first, counted inclusively | days, above zero |
PDC | Share of the days in the observation period on which pharmacy records show medicine on hand | proportion, at most 1, often reported as a percentage |
|---|
Function
Proportion of days covered from pharmacy fill dates and days' supply function
Maps a patient's dispensing records, each a fill date and a days' supply, and an observation period to the proportion of days covered (PDC), the share of days in the period on which at least one fill provides medicine, each day counted once. Same-drug refills collected before the previous supply runs out are shifted to start the day after it ends, overlaps between different drugs in a class are not shifted, supply running past the end of the period is ignored, and the CMS method removes inpatient and skilled nursing facility stay days. The records follow the notation of the Proportion of Days Covered article. The medication possession ratio, which sums days' supply instead, is HE-FM-MPR-001.
Computational function
Computational function: proportion of days covered from a same-drug fill history with overlap shifting
Takes a patient's fill history for one drug, as dispensing days and days' supply, and the last day of the observation period, and returns the PDC. It sorts the fills by date, shifts each early refill to the day after the previous supply ends (HE-FM-PDC-002), counts the covered days on or before the end day (HE-FM-PDC-003) and divides by the days from the first fill to the end day inclusive (HE-FM-PDC-001). The inputs therefore differ from the formula's variables: the formula needs the covered days and the period length, and the function builds both from the raw fills. An optional switch merges overlaps without shifting, for a sensitivity analysis of the overlap rule.
Inputs and outputs:
fill_day: Dispensing day of each fill of the drug, with the index date as day 1; required, whole numbers. Unit: day number.;supply: Days' supply of each fill, in the same order; required, above zero. Unit: days.;end_day: Last day of the observation period on the same scale; required. Unit: day number.;shift: TRUE (the default) to shift early same-drug refills, FALSE to merge overlaps instead.;PDC: Proportion of days covered. Unit: proportion, at most 1.Assumption: All fills are of the same drug (the same active ingredient), the dispensing record is complete, each fill's supply starts on its dispensing day and the patient finishes the earlier supply before starting a refill. For a class measure with different drugs, overlaps between drugs are not shifted and the union of covered days is counted instead.
Worked example (Five fills over 180 days with early refills shifted): The article's history gives shifted starts on days 1, 31, 61, 121 and 211, 150 covered days and a PDC of about 0.833.
fill_day = [1,22,45,121,170]; supply = [30,30,30,90,30]; end_day = 180; PDC = 0.8333Worked example (Same fills with overlaps merged instead of shifted): With shift set to FALSE the fills cover days 1 to 74 and 121 to 180, 134 days, a PDC of about 0.744.
fill_day = [1,22,45,121,170]; supply = [30,30,30,90,30]; end_day = 180; shift = FALSE; PDC = 0.7444Excel:
=MAX(B3,D2+C2)With dispensing days in column B and days' supply in column C from row 2, sorted by date, D2 holds=B2and this formula, filled down from D3, gives the shifted starts. E2 holds=MAX(0,MIN(C2,EndDay-D2+1)), filled down, and=SUM(E2:E6)/(EndDay-B2+1)returns the PDC for five fills.R:
pdc <- function(fill_day, supply, end_day, shift = TRUE) { o <- order(fill_day); f <- fill_day[o]; s <- supply[o]; if (shift) { a <- f; for (i in seq_along(f)[-1]) a[i] <- max(f[i], a[i-1]+s[i-1]); covered <- sum(pmax(0, pmin(s, end_day-a+1))) } else { days <- unique(unlist(mapply(function(x, y) x:(x+y-1), f, s, SIMPLIFY = FALSE))); covered <- sum(days <= end_day) }; covered/(end_day-f[1]+1) }Returns 0.8333 for the article's fills and 0.7444 with shift = FALSE.Python:
def pdc(fill_day, supply, end_day): import itertools; arr = list(itertools.accumulate(sorted(zip(fill_day, supply)), lambda p, c: (max(c[0], p[0]+p[1]), c[1]))); return sum(max(0, min(s, end_day-a+1)) for a, s in arr)/(end_day-arr[0][0]+1)Each element of arr is a shifted start and its supply. The merged-overlap version islen({d for f, s in zip(fill_day, supply) for d in range(f, f+s) if d <= end_day})/(end_day-min(fill_day)+1).Test (Shifted PDC is not below the merged-overlap PDC): Shifting moves supply later but never loses a day that the raw fills cover, so on the same fills and period the shifted PDC is at least the merged one, 0.833 against 0.744 in the article's example. Expected result: TRUE. Excel check:
=PDCShifted>=PDCMergedTest (Shifted fills in date order do not overlap): With dispensing days in B2:B6, days' supply in C2:C6 and shifted starts in D2:D6, no shifted start falls before the previous fill's supply has ended, and the dispensing days are in date order. The article's shifted starts (days 1, 31, 61, 121 and 211) pass; unshifted starts, or starts shifted in record order, fail. Expected result: TRUE. Excel check:
=SUMPRODUCT(--(D3:D6<D2:D5+C2:C5))+SUMPRODUCT(--(B3:B6<B2:B5))=0Common error (Shifting the fills in record order instead of date order): If the day-170 fill is processed before the day-121 fill, fill 5 starts on day 170 and fill 4 is pushed to day 200, so only 101 days fall in the period and the PDC drops to about 0.561 instead of 0.833 (computed here for illustration). The fills are sorted by dispensing day before shifting.
Source: Nau DP. Proportion of Days Covered (PDC) as a Preferred Method of Measuring Medication Adherence. Pharmacy Quality Alliance; undated, cited as 2011 by Raebel and colleagues (2013); archived copy of 27 July 2018. Pages 2 and 3: time arrays of the dates each fill covers, and adjusting the start date of an overlapping fill of the same drug to the day after the previous fill has ended.
a_1 = f_1; a_i = max(f_i, a_prev + S_prev); C = sum_(i=1)^n [(E - a_i + 1) * (E - a_i + 1 > 0) * (E - a_i + 1 < S_i) + S_i * (E - a_i + 1 >= S_i)]; T = E - f_1 + 1; PDC = C / T
Try this function
Implementations
Excel
Proportion of days covered from named covered-day and period cells
Excel divides the named cell holding the unique covered days in the period by the named cell holding the number of days from the index date to the end date. CoveredDays can come from HE-FM-PDC-003 or from the computational function HE-CF-PDC-001.
=CoveredDays/PeriodDays
Assumptions
Covered days counted as calendar days, not summed supply
Each fill is laid out as a run of calendar dates starting on the dispensing day, so a 30-day supply collected on 1 March covers 1 to 30 March, and a day covered by more than one fill counts once.
Fixed end date for the PDC observation period
The period runs to a fixed end date (the end of the measurement year, disenrolment or death) rather than to the last fill, so a patient who stops refilling is still followed and stopping lowers the PDC. CMS also requires at least two fills on different dates and a treatment period of at least 91 days.
Complete dispensing record with correct days' supply for the PDC
Every fill appears in the data and its recorded days' supply reflects the prescribed dose. Fills paid in cash or made outside the database look like gaps, and imputing one unit a day is less reliable for drugs whose dose varies.
Worked examples
PDC of the five-fill history with early refills shifted
In the article's illustrative history (fills on days 1, 22, 45, 121 and 170 with 30, 30, 30, 90 and 30 days' supply, period days 1 to 180), shifting the early refills leaves days 1 to 90 and 121 to 180 covered, 150 days, so the PDC is 150 / 180, about 0.833, above an 80% threshold.
C = 150; T = 180; PDC = 0.8333
PDC of the five-fill history with overlaps merged, not shifted
Merging overlaps instead of shifting them, fills 1 to 3 cover days 1 to 74 and fill 4 covers days 121 to 180, so 134 days are covered and the PDC is about 0.744, below an 80% threshold. Fill 5 (days 170 to 199) lies inside fill 4 and adds nothing.
C = 134; T = 180; PDC = 0.7444
CMS overlap example before and after shifting a same-ingredient refill
In Example 2 (Tables L-2 and L-3) of Attachment L of the CMS 2026 Star Ratings technical notes, a 120-day period has 59 covered days before the overlap between two products containing lisinopril is shifted and 62 after, so the PDC rises from 49% to 52%.
C = 62; T = 120; PDC = 0.5167
Common errors
Reporting a PDC without stating the overlap rule
The same five fills give a PDC of about 0.833 with early refills shifted and about 0.744 with overlaps merged, so the patient is adherent at 80% under one rule and non-adherent under the other. A 2022 scoping review of 76 articles found that early refills were carried over in 45% and not reported in 37%.
Ending the PDC period at the last fill instead of the fixed end date
If the patient in the article's example had stopped after fill 3, the PQA period would still run to day 180 and the PDC would be 90 / 180, or 0.5. Ending the period when the supply ran out on day 90 gives 90 / 90, or 1, and hides the discontinuation (computed here for illustration).
Sources
PQA method for counting days covered with time arrays
Nau DP. Proportion of Days Covered (PDC) as a Preferred Method of Measuring Medication Adherence. Pharmacy Quality Alliance; undated, cited as 2011 by Raebel and colleagues (2013); archived copy of 27 July 2018. Pages 2 and 3: time arrays of the dates each fill covers instead of summed days' supply, a 30-day supply from 1 March covering 1 to 30 March, the measurement period from the index prescription date to the end of the year, disenrolment or death, covered days divided by days in the period, and the 0.8 threshold.
CMS Part D adherence measures and the PDC calculation
Centers for Medicare & Medicaid Services. Medicare 2026 Part C & D Star Ratings Technical Notes. Baltimore: CMS; updated 25 September 2025. Measures D08 to D10 and Attachment L: PDC is calculated by dividing the number of covered days by the number of days in the treatment period, which begins on the index prescription start date and must be at least 91 days, for members with at least two fills on unique dates of service; Example 2 (Tables L-2 and L-3) shows the overlap adjustment.
Standard database definition of the proportion of days covered
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. Table 2, PDC row: days in the observation period from the first dispensing to its end, capped at 1, with time arrays of the dates covered by each dispensing; Table 1: a PDC of at least 80% as a cut-point used by convention, only rarely with supporting evidence.
Reporting of PDC parameters in cardiovascular adherence studies
Dalli LL, Kilkenny MF, Arnet I, Sanfilippo FM, Cummings DM, Kapral MK, et al. Towards better reporting of the proportion of days covered method in cardiovascular medication adherence: a scoping review and new tool TEN-SPIDERS. British Journal of Clinical Pharmacology. 2022;88(10):4427-4442. Table 2: of 76 articles, early refills were carried over in 34 (45%) and not reported in 28 (37%); the TEN-SPIDERS tool lists the parameters to report.
Canonical Identity
Stable URI · Machine-readable · Resolvable · CC BY 4.0