Drug spending
Medicare drug spending from two programs: Part D (pharmacy-dispensed
prescriptions, reported per drug and manufacturer) and Part B
(physician-administered drugs, reported per HCPCS billing code). Part D
figures below use CMS's 'Overall' manufacturer roll-up rows only, so
no drug is double-counted across its manufacturers.
Top drugs by total spending ( 2024 )
All single-year figures below use the latest year available in both programs, so Part B and Part D are always compared like-for-like even if one file gains a new year first.
Loading...
Loading...
Spending trend by program
Loading...
Drugs billed in both programs
Joined through dim_drug, which conforms Part B and Part D on exact
(upper-cased) brand + generic name matches — treat the overlap as a
lower bound, since name formatting differs between the two files.
No Results
Page
/
2 10 of 15 records
Caveats
- Part D total shown here ≠ Part D total on /prescribers. This
page's Part D figures come from the CMS spending-by-drug file
(2023 program-wide roll-up: $275.8B,
'Overall'manufacturer rows infct_part_d_drug_spending). The /prescribers page reports Part D from the CMS prescriber-profile file ($288.4B total drug cost; $284.8B MAPD+PDP infct_prescriber_profile). The two CMS sources roll up different universes — drug-level spending vs per-NPI prescriber totals — and neither reconciles to the other; the site convention is to stay within one source per page. 'Overall'manufacturer rows are kept for drug-level analysis. Part D's spending file publishes both per-manufacturer rows and an'Overall'roll-up for each drug.fct_part_d_drug_spendingkeeps both and flags the roll-up viais_manufacturer_rollup. Every Part D chart on this page filters on that flag; summingtotal_spendingwithout it double-counts.- Part B has no manufacturer breakdown. CMS publishes Part B
spending per HCPCS billing code only, so a single code can cover
several branded drugs — the
brand_namecolumn occasionally lists multiple values. Summing Part Btotal_spendingneeds no roll-up filter. - Unmarketed drug-years are dropped, suppressed cells are kept.
Both facts drop rows where every metric for a drug-year is null
(the drug wasn't marketed that year — 11,038 rows dropped in Part
D). Individual cells that CMS suppressed for privacy stay
NULLand are never coalesced to 0, so per-beneficiary and per-claim-derived metrics disappear on small cells rather than reading as $0. dim_drugjoin is name-based. The Part B ↔ Part D overlap table joins ondrug_key, a hash of upper-cased brand + generic names. Name formatting differs between the two files, so treat the overlap as a lower bound on drugs billed in both programs. Part B rows whose HCPCS code carries no drug name (e.g. not-otherwise-classified codes) havedrug_key = NULLand are excluded from the join.
