# Part D plan cost share (CMS SPUF), days supply in days, era by contract year, catastrophic statutory-minimum tokens

`drug_silver.vw_fact_part_d_plan_cost_share_v3` · Drugs and formularies · status live · 5,112,331 rows

Quarterly SPUF beneficiary cost share by plan x coverage level x tier x days supply. days_supply_code is CMS's code (1=30, 2=90, 3=other, 4=60 days); days_supply_days is the days it means: filter and join pricing on days_supply_days. contract_year / methodology_era / ira_phase as the pricing view (a Q4 release carries the next contract year). cost_min_amt_*_code and cost_min_amt_*_basis carry CMS's '*' (generic statutory minimum) and '**' (brand statutory minimum) tokens where the catastrophic minimum cell printed a token instead of dollars (2020-Q2..2023-Q3). cost_share_lens reads this view from 2026-10-05.

**Grain.** One row per (contract_id, plan_id, segment_id, coverage_level, tier, days_supply_code, report_quarter); row for row drug_silver.fact_part_d_plan_cost_share (5,112,331 = 5,112,331 rows, 30 of 30 quarters equal, no fan-out from the token join; every cost_type_pref / cost_amt_pref equal; Athena 948b3c7d, 00dc28ba).

| column | type | meaning |
|---|---|---|
| contract_id | string |  |
| plan_id | string |  |
| segment_id | string |  |
| coverage_level | int |  |
| tier | int |  |
| days_supply_code | int |  |
| days_supply_days | int |  |
| report_quarter | string |  |
| contract_year | int |  |
| methodology_era | varchar(11) |  |
| ira_phase | varchar(26) |  |
| methodology_era_legacy | string |  |
| cost_type_pref | int |  |
| cost_amt_pref | double |  |
| cost_min_amt_pref | double |  |
| cost_max_amt_pref | double |  |
| cost_type_nonpref | int |  |
| cost_amt_nonpref | double |  |
| cost_min_amt_nonpref | double |  |
| cost_max_amt_nonpref | double |  |
| cost_type_mail_pref | int |  |
| cost_amt_mail_pref | double |  |
| cost_min_amt_mail_pref | double |  |
| cost_max_amt_mail_pref | double |  |
| cost_type_mail_nonpref | int |  |
| cost_amt_mail_nonpref | double |  |
| cost_min_amt_mail_nonpref | double |  |
| cost_max_amt_mail_nonpref | double |  |
| tier_specialty_yn | boolean |  |
| ded_applies_yn | boolean |  |
| observed_period | date |  |
| asserted_at | date |  |
| effective_period_start | date |  |
| effective_period_end | date |  |
| cms_vintage_sequence | int |  |
| parse_revision | int |  |
| parser_artifact_hash | string |  |
| source_url | string |  |
| sha256_content_hash | string |  |
| source_id | string |  |
| is_current | boolean |  |
| bronze_object_key | string |  |
| s3_version_id | string |  |
| vintage_tag | string |  |
| drug_source_version_id | string |  |
| cost_min_amt_pref_code | string |  |
| cost_min_amt_nonpref_code | string |  |
| cost_min_amt_mail_pref_code | string |  |
| cost_min_amt_mail_nonpref_code | string |  |
| cost_min_amt_pref_basis | varchar(25) |  |
| cost_min_amt_nonpref_basis | varchar(25) |  |
| cost_min_amt_mail_pref_basis | varchar(25) |  |
| cost_min_amt_mail_nonpref_basis | varchar(25) |  |

Query it: `query_substrate` with `SELECT ... FROM drug_silver.vw_fact_part_d_plan_cost_share_v3 WHERE ... LIMIT 100`; read `describe_data_source("drug_silver.vw_fact_part_d_plan_cost_share_v3")` first.
