Drugs and formularies

Part D plan drug pricing (CMS SPUF), per-unit price with the CY2019 cost-per-fill set apart and the era by contract year

drug_silver.vw_fact_part_d_plan_drug_pricing_v2·live·semantic_view
Rows
1,647,406,675
Columns
29
History
N/A
Card
nocolumns only
Typed tools
0

What it is

  1. 1Quarterly SPUF Plan Finder retail point-of-sale price per unit (not net of rebates), by plan x NDC x days supply (days).
  2. 22019-Q1..Q3 published only a cost per fill: unit_cost is NULL there and fill_cost_cy2019 holds it. contract_year is the plan year the release describes (a Q4 release carries the next year); methodology_era is pre_ira through CY2024 and ira_oop_cap from CY2025; 'pre_ira' means before the CY2025 benefit redesign, not untouched by the IRA (CY2023 insulin cap, CY2024 catastrophic cost share removed): filter on contract_year for those. ira_phase splits CY2025 (redesign) from CY2026 (first negotiated prices). unit_cost_legacy and methodology_era_legacy keep the stored values.

Grain

KeyGrain
N/A
  1. 1One row per (contract_id, plan_id, segment_id, ndc11, days_supply, report_quarter, cms_vintage_sequence); row for row drug_silver.fact_part_d_plan_drug_pricing (1,647,406,675 = 1,647,406,675 rows over 30 of 30 quarters, 2019-Q1..2026-Q2;
  2. 2Athena 2d01f782).

Columns (29)

ColumnTypeMeaning
contract_idstring
plan_idstring
segment_idstring
ndc11string
days_supplyint
report_quarterstring
unit_costdouble
fill_cost_cy2019double
unit_cost_basisvarchar(22)
unit_cost_legacydouble
contract_yearint
methodology_eravarchar(11)
ira_phasevarchar(26)
methodology_era_legacystring
observed_perioddate
asserted_atdate
effective_period_startdate
effective_period_enddate
cms_vintage_sequenceint
parse_revisionint
parser_artifact_hashstring
source_urlstring
sha256_content_hashstring
source_idstring
is_currentboolean
bronze_object_keystring
s3_version_idstring
vintage_tagstring
drug_source_version_idstring

Query it

describe_data_source(source_fqn="drug_silver.vw_fact_part_d_plan_drug_pricing_v2")     # the card, live
query_substrate(sql="SELECT * FROM drug_silver.vw_fact_part_d_plan_drug_pricing_v2 WHERE <filter> LIMIT 100")
ItemValue
Typed tools that read itnone; raw SQL
Identity keycontract_id,plan_id,segment_id,ndc11
Joinhow_to_join(source_fqn="drug_silver.vw_fact_part_d_plan_drug_pricing_v2")
Raw doorTools: pricing_lens, formulary_coverage_lookup, drug_price_composite, monitor_drug_price_shocks; Athena: drug_silver.vw_fact_part_d_plan_drug_pricing_v2 (filter is_current = true; ALWAYS pin report_quarter, 1.65B rows)
NoteVersioned view (Data Tracker drug wave 1B, PR 3114). Versioned, never overwritten; the table card stays live as the rollback.

This page as markdown: /docs-md/data/drug_silver_vw_fact_part_d_plan_drug_pricing_v2.md · every page in one file: /llms-full.txt