DrugDashboards

Methodology

Every number on DrugDashboards traces to a public primary source — FDA and CMS files, state transparency filings — ingested by an automated pipeline that runs every day. This page explains what we collect, what we compute from it, and what the data can and can't tell you.

Sources and update cadence

The pipeline checks every source daily; each file changes on its publisher's own schedule. Nothing is entered by hand and no proprietary data (PBM MAC lists, rebates, actual transaction prices) is included.

DataSourceUpdates
NADAC pharmacy acquisition pricesCMS / data.medicaid.gov (weekly survey; monthly archives back to 2013)File updates weekly
NDC Directory (products, labelers, marketing status)FDA via openFDA bulk downloadDaily
Orange Book (approvals, TE codes, patents & exclusivity)FDA / openFDAMonthly
Purple Book (biologics, biosimilars, interchangeability)FDAMonthly
Drug shortages (current + historical archive)FDA via openFDADaily
Recalls / enforcement reportsFDA via openFDADaily
Medicare Part B payment limits (ASP)CMS quarterly files + NDC–HCPCS crosswalkQuarterly
WAC list prices and increasesCalifornia SB-17 and Texas transparency filingsAs states publish
Medicare negotiated prices (MFP)CMSAs published
Medicaid spend & utilization, federal upper limitsCMS State Drug Utilization Data, FUL filesAnnual / monthly
Medicare Part D spend, plans, geographyCMSAnnual
VA Federal Supply Schedule pricesVA National Acquisition CenterAs published
Manufacturing facilities & inspectionsFDA SPL establishment data, registration files, inspection classificationsDaily / as published
Pharma company financials (revenue, R&D, buybacks, dividends)SEC EDGAR 10-K XBRL filings, 15 largest US-listed drugmakersDaily (filings land yearly)
REMS programs (restricted distribution)FDA REMS@FDA active rosterDaily

How the pieces join: the NDC

FDA publishes drug codes as 10 digits in three different formats; pricing files use the 11-digit HIPAA format. Everything here is normalized to the 11-digit NDC on ingest, which is what lets a price, a shortage, a recall, and a manufacturing plant line up on one page. (Curious how NDCs work? We wrote a guide.)

The change feed is a diff, not a news wire

FDA and CMS publish snapshots — "here is everything, as of today" — not changes. Each day's download is compared against what we already hold, and the differences become events: price changes, new and resolved shortages, recalls, products appearing, manufacturers entering or leaving a market. The change feed, the My Drug List email digests, and the manufacturer entry/exit histories on drug pages are all built from these events. Comparisons happen in the same database transaction as the update, so an event can never be emitted twice or drift from the data it describes.

Prices: always labeled, never mixed

US drugs have several "prices," and mixing them is how drug-price claims go wrong. Every figure on this site is labeled with its basis:

Estimates are always labeled as estimates and shown as ranges, not false-precision points.

The fragility score (v1)

A descriptive 0–100 score, recomputed daily for every NDC with a NADAC price. Points are added from factors observable in the data: how many manufacturers are active in the market (sole-source is the largest penalty, up to 30 points), current or recent shortage status (up to 25), Class I/II recalls in the trailing 12 months (up to 15), sustained year-over-year price deflation — cheap generics get abandoned (up to 15) — sterile-injectable form (10), and active discontinuation filings (10), capped at 100. Every score is published with the exact factors that fired and their point values; the full factor table lives on the fragility page. It describes current conditions; it does not forecast.

The 90-day shortage risk model (v2)

Where v1 describes, v2 estimates: for each drug market (molecule × form), the probability of a new shortage posting within 90 days. It is a deliberately small logistic regression trained on a monthly grid of historical dates back to 2019, using only features knowable on each date — manufacturer counts, price trend, recalls, form, discontinuation filings, open shortage episodes, and facility inspection outcomes — with labels taken from what actually happened in the following 90 days. The model is validated on a held-out later time period before anything ships, and its coefficients and backtest performance are published on the fragility page — no black box.

Shortage durations

Median shortage durations shown on the shortages page are Kaplan–Meier estimates from the historical shortage archive — the method accounts for shortages that are still open, which a simple average of resolved ones would understate.

The spread tracker

The spread trackercompares Medicare Part D plans' median negotiated point-of-sale price for an NDC with NADAC pharmacy acquisition cost for the same NDC — matched to the plan file's quarter, not today's NADAC, because the quarterly plan file lags the weekly NADAC and comparing across that gap measures the lag, not a spread. One row per molecule (its highest-markup NDC); drugs with acquisition cost under 5¢/unit are excluded so rounding can't manufacture large ratios. All prices are gross of rebates: on brands, confidential rebates recover part of the gap for the plan; on multi-source generics rebates are minimal, so the gap is mostly channel margin. Annual dollar figures multiply the per-unit gap by the molecule's Part D dosage units from the most recent spending year and are labeled estimates.

The specialty definitions matrix

"Specialty drug" has no regulatory definition, so the specialty pagetests each public criterion separately rather than inventing another composite: specialty-tier placement is a median formulary tier of 5 or higher across Part D plans (one representative NDC per molecule); the cost test compares average Part D spend per prescription — the closest public proxy for a 30-day fill — against CMS's specialty-tier threshold; biologic means BLA-licensed; orphan means FDA orphan-drug exclusivity on the application; REMS means an active program on the REMS@FDA roster. Tier moves across the specialty boundary are detected by diffing quarterly formulary files and posted to the change feed as tier-change events. PBM limited-distribution lists — the most consequential specialty designation in practice — are contractual and have no public source, so they are named as a gap rather than estimated.

Known limits

Citing DrugDashboards

The site is free to cite with attribution. A citation should name the page, the date retrieved, and the URL — for example:
DrugDashboards, "Drug shortages," retrieved September 3, 2026, https://drugdashboards.com/shortages.
Drug pages include a ready-to-copy citation. Because the data refreshes daily, the retrieval date matters.