Provenance

Dataset ID
partb-drug-spending
Entity Type
drug
Role
enrichment
Source
CMS
Vintage
CY2023
Entity Count
Last ETL Run
2026-04-13

Overview

The Medicare Part B Spending by Drug dataset is published by CMS on data.cms.gov as part of the Medicare Drug Spending dashboard. It reports total spending, claim counts, and per-dosage-unit costs for drugs covered under Medicare Part B — the physician-administered drug benefit. Part B covers drugs that are infused, injected, or inhaled in physician offices and hospital outpatient departments, billed under HCPCS J-codes and Q-codes. Oral and self-administered drugs are excluded from Part B and instead fall under Part D. Each row represents one drug identified by HCPCS code, brand name, and generic name. The current file covers the 2023 reporting year.

This dataset answers questions such as: which physician-administered drugs account for the largest share of Medicare Part B drug spending, how total spending and claim volume compare across injectable biologics and infused therapies, and how biosimilar adoption is shifting spending away from reference biologics. Spending is heavily concentrated in oncology, ophthalmology (anti-VEGF agents), rheumatology (biologics), and immunology — the top 20 drugs by total spending account for the majority of Part B drug expenditures. Reimbursement is based on the Average Sales Price (ASP) plus a percentage markup (currently ASP+6% in non-sequestration years), so reported spending reflects ASP-based reimbursement rates, not acquisition cost or list price.

Join Strategy

This dataset joins to drug entity pages on CareGraph using the generic name field (Gnrc_Name), uppercased and whitespace-trimmed during ETL. The _load_partb_data() function in etl/build/build_drugs.py reads the source CSV and groups rows by uppercased generic name. Each Part B row also carries an HCPCS code (HCPCS_Cd) and HCPCS description, which are preserved in the manifest as structured detail under data.partb_spending.hcpcs_codes. The join to drug entities is a string match on generic name — the same key used by the Part D spending dataset — so a drug entity page at /drug/bevacizumab-bvzr displays Part B spending alongside Part D spending when both datasets contain rows for that generic name. The join is a left join from Part D entities: only drugs that appear in the Part D dataset have entity pages, and Part B data is attached when a matching generic name exists. Drugs that appear only in Part B (with no Part D record) do not generate entity pages. The ETL aggregates total spending and total claims across all HCPCS codes for a given generic name, and stores per-HCPCS breakdowns with code, description, spending, and claim count.

Known Limitations

Data Quality Notes

---

← Back to Methodology Hub · Report an error