Medicare Advantage, Part D, Medicaid
MA pbp mrx
Rows
N/A
Columns
380
History
2010 (report_year 2010; NOTE: 2020 is missing due to the CY2020 CMS filename quirk) to 2026
Card
yesgrain, traps, filters
Typed tools
1
What it is
- 1The plan-level Part D (Medicare prescription-drug) benefit record from CMS's Plan Benefit Package (PBP) filings — Section MRx — describing each Medicare Advantage / PDP plan's drug coverage design: whether it offers Part D, basic vs enhanced-alternative benefit type, deductible, formulary/tier model, coverage-gap and IRA-era cost-share structures, utilization-management flags, and rewards/incentive programs.
- 2It is the canonical 'what is this plan's drug benefit shape' table for Medicare-Advantage cost analysis, and the parent of the per-tier pbp_mrx_tier table.
Grain
| Key | Grain |
|---|---|
bid_idreport_yearquartercms_vintage_sequence |
|
How to read it
- 1Pick ONE snapshot, then read plan-level Part D design.
- 2Example: SELECT bid_id, mrx_drug_ben_yn, mrx_benefit_type, mrx_alt_ded_amount FROM medicare_silver.pbp_mrx WHERE report_year=2026 AND quarter=1 AND cms_vintage_sequence=1 AND mrx_drug_ben_yn='1' — returns, for every 2026 Medicare plan that offers Part D, its benefit type (4=Enhanced Alternative) and Part D deductible (e.g.
- 3615.0 = the CY2026 standard).
- 4To analyze actual generic/brand copays per formulary tier and pharmacy channel, join bid_id+snapshot to the sibling table medicare_silver.pbp_mrx_tier (this table does NOT carry usable tier copays).
- 5To trend a plan over years, group by report_year keeping one release per year (e.g.
- 6MIN(quarter)/MIN(cms_vintage_sequence)).
Traps
- 1NOT a tier/copay table. This is the PLAN-LEVEL Part D record (~8K plans/year). The per-tier × per-pharmacy generic/brand copay & coinsurance amounts live in the SIBLING table pbp_mrx_tier (~27-33K rows = one per plan×tier). The mrx_gen_* copay matrix here is ~empty (mrx_gen_in_1m: 632 non-null of 208,537). NEVER read 'the plan's drug copay' from this table, and never sum tier copays here.
- 2Grain needs FOUR columns, not the obvious ones. Minimal verified key = (bid_id, report_year, quarter, cms_vintage_sequence) [= contract_id+plan_id+segment_id+report_year+quarter+cms_vintage_sequence], 208,537 distinct = 208,537 rows. Dropping cms_vintage_sequence creates 16,307 dup rows (2021 Q1 & 2022 Q1 were each loaded at two vintages from two CMS ZIPs); dropping quarter creates 8,336 dups. bid_id is unique only WITHIN one snapshot (8,326 in 2025 Q1).
- 3The profiler's reported grain is WRONG/superset — it leaned on mrx_grp_id, mrx_grp_type_id, mrx_v_bid_attestation, etc. mrx_grp_id and mrx_grp_type_id are 100% NULL across all 208,537 rows (this table is never exploded to benefit-group rows), so those columns spuriously appeared to 'add uniqueness.' Ignore them as keys.
- 4No is_current column and NO dedup applied — every quarterly CMS release is STACKED. There are 30 snapshots (report_year × quarter × cms_vintage_sequence). To get 'the current plan benefits' you MUST filter, e.g. report_year=2026 AND quarter=1 AND cms_vintage_sequence=1 (or pick MAX vintage per year). Querying without a snapshot filter double/triple-counts plans and mixes 16 years.
- 5Massive year-dependent column sparsity driven by documented PBP layout churn. Of 356 columns most are NULL for any given year: CY2022-Q2 moved 42 cols OUT of pbp_mrx into siblings (pbp_vbid, pbp_mrx_dmodel, pbp_mrx_ssm); CY2024 'New PBP' redesign reshaped Section D; CY2026 discontinued VBID and removed the coverage-gap (IRA). Examples observed: mrx_formulary_yn/mrx_basic_plan_yn/mrx_alt_drug_type 100% NULL in 2026; mrx_quantity_limits only 2010-2021; mrx_form_tier_model_5 only 2013-2016. Always check non-null coverage for your target year before trusting a column.
- 6Report year 2020 is entirely MISSING (data jumps 2019→2021). This is the documented CY2020 CMS filename quirk (the file shipped as 'pbp_mrx 2.txt' with the canonical 'pbp_mrx.txt' absent), so 2020 was not ingested. Don't treat the gap as data loss for other years.
- 7mrx_drug_ben_yn='2' (~12% of plans) means the plan offers NO Part D benefit — those rows are shells with all cost/deductible fields NULL (verified: 0 such rows have mrx_alt_ded_amount set). Filter to mrx_drug_ben_yn='1' before analyzing drug cost-share.
- 8Identifier columns are zero-padded strings, not numbers: plan_id='001', segment_id='0', pbp_a_plan_type='01', orgtype='08'. Join/compare as strings. version, report_year, quarter, mrx_*_amt are doubles. Missing values are true SQL NULL (no '.' or '' sentinel leakage — verified).
Columns (380)
| Column | Type | Meaning |
|---|---|---|
contract_id | string | CMS Medicare Advantage/Part D contract ID (e.g. H0016, H0022). String, 1,806 distinct. First component of bid_id. A contract holds many plans. |
plan_id | string | 3-digit plan number within the contract (e.g. 001, 003, 007). String, 656 distinct values (reused across contracts). Second component of bid_id. |
segment_id | string | Plan segment number, string '0'-'25'. '0' for unsegmented plans (the vast majority); >0 identifies geographic/benefit segments of a segmented plan. Third component of bid_id. Part of the grain. |
version | double | CMS bid submission/refile version for that plan-year (double 1..12+). Plan metadata, NOT a snapshot/dedup key; most plans are v1-4, higher versions progressively rarer. Do not use to dedup. |
report_year | double | Benefit/contract year the PBP describes (double, 2010-2026; 2020 is ABSENT). Part of the snapshot grain. Equals YEAR(effective_period_start). |
quarter | double | CMS release quarter for that plan-year (double 1-4). PBP is re-released quarterly; quarter labels which release. Part of the grain. NOTE: 2010-2017 only have Q1; later years have multiple quarters. |
bid_id | string | Concatenated plan identity contract_id_plan_id_segment_id (e.g. 'H0028_007_0'). The natural per-snapshot primary key; exactly = (contract_id||plan_id||segment_id). Unique within one CMS release. |
max_rai_ann_partd_rew_amt_1rx | double | |
max_rai_ann_partd_rew_amt_2rx | double | |
max_rai_ann_partd_rew_amt_3rx | double | |
max_rai_frq_rew_incent_1rx | string | |
max_rai_frq_rew_incent_2rx | string | |
max_rai_frq_rew_incent_3rx | string | |
max_rai_partd_rew_inc_amt_1rx | double | |
max_rai_partd_rew_inc_amt_2rx | double | |
max_rai_partd_rew_inc_amt_3rx | double | |
mrx_ae_copay_lesser_yn | string | |
mrx_ae_cstshr_apply | string | |
mrx_ae_cstshr_grps | double | |
mrx_ae_oon_cstshr_struct | string | |
mrx_ae_ooptcs_apply | string | |
mrx_ae_ot_grps | double | |
mrx_alt_copay_lesser_yn | string | |
mrx_alt_cov_lmt_amt | double | |
mrx_alt_cov_lmt_yn | string | |
mrx_alt_cstshr_post_oopt | string | |
mrx_alt_cstshr_post_oopt_mmp | string | |
mrx_alt_ded_amount | double | Part D deductible dollar amount for the plan's (enhanced-alternative) design (double). Real & current: CY2026 standard = 615.0. Populated for ~half of drug-offering plans (others use $0 or tier-differential deductibles). One of the few cost fields reliably populated in this parent table. |
mrx_alt_ded_charge | string | |
mrx_alt_ded_tier_cstshr_yn | string | |
mrx_alt_ded_type_yn | string | |
mrx_alt_drug_type | string | |
mrx_alt_excl_drugs_maxplan_yn | string | |
mrx_alt_excl_drugs_yn | string | |
mrx_alt_excl_max_plan_amt | double | |
mrx_alt_fulfill_desc | string | |
mrx_alt_gap_covg_brand | string | |
mrx_alt_gap_covg_gen | string | |
mrx_alt_gap_covg_tier | string | |
mrx_alt_gap_covg_yn | string | |
mrx_alt_gap_drug_type | string | |
mrx_alt_gen_coins_pct | double | |
mrx_alt_gen_copay_amt | double | |
mrx_alt_gen_cstshr_struct | string | |
mrx_alt_ira_covg_tier | string | |
mrx_alt_lim_amt | double | |
mrx_alt_max_enroll_mmp_amt | double | |
mrx_alt_max_enroll_mmp_yn | string | |
mrx_alt_no_ded_tier | string | |
mrx_alt_oon_cstshr_struct | string | |
mrx_alt_post_icl_yn | string | |
mrx_alt_pre_icl_cost_share | string | |
mrx_alt_pre_icl_cost_share_mmp | string | |
mrx_alt_pre_icl_exclud_only_yn | string | |
mrx_alt_pre_icl_lis_mmp_tiers | string | |
mrx_alt_pre_icl_lis_mmp_yn | string | |
mrx_alt_red_cost_sharing | string | |
mrx_alt_red_cost_sharing_items | string | |
mrx_auth_ynba | string | |
mrx_avg_exp_cost_share_attest | string | |
mrx_b_auth_yn | string | |
mrx_b_coins_amt_maacqcost | double | |
mrx_b_coins_awp_disc | double | |
mrx_b_coins_covbasis | string | |
mrx_b_coins_max_dispfee | double | |
mrx_b_coins_min_dispfee | double | |
mrx_b_coins_pct | double | |
mrx_b_coins_prp_disc | double | |
mrx_b_coins_yn | string | |
mrx_b_copay_max_amt | double | |
mrx_b_copay_min_amt | double | |
mrx_b_copay_yn | string | |
mrx_b_ded_amt | double | |
mrx_b_ded_yn | string | |
mrx_b_max_oop_amt | double | |
mrx_b_max_oop_per | string | |
mrx_b_max_oop_yn | string | |
mrx_ba_cov_lmt_amt | double | |
mrx_ba_cov_lmt_yn | string | |
mrx_ba_cstshr_apply | string | |
mrx_ba_cstshr_grps | double | |
mrx_ba_ded_amount | double | |
mrx_ba_ded_charge | string | |
mrx_ba_ooptcs_apply | string | |
mrx_ba_ot_grps | double | |
mrx_basic_plan_yn | string | |
mrx_basic_plan_zero_prem_yn | string | |
mrx_benefit_type | string | Part D benefit design type, string '1'-'4' (4=Enhanced Alternative dominant; 1=Defined Standard, 2=Actuarially Equivalent, 3=Basic Alternative) plus NULL (~2,500/yr, mostly the no-drug plans). Distinguishes basic vs enhanced coverage. |
mrx_ceiling_price_yn | string | |
mrx_d_adher_goal | string | |
mrx_d_adher_goal_desc | string | |
mrx_d_elig_freq_other | string | |
mrx_d_eligcrit_chk | string | |
mrx_d_eligcrit_other | string | |
mrx_d_pmm_flex_chk | string | |
mrx_d_red_cs_lisb_detail | string | |
mrx_d_ri_amt | double | |
mrx_d_ri_elig_rdo | string | |
mrx_d_ri_max_amt | double | |
mrx_d_ri_type_chk | string | |
mrx_d_ri_type_other | string | |
mrx_demo_type | string | |
mrx_demo_yn | string | |
mrx_drug_ben_yn | string | KEY GATE: does the plan offer a Part D drug benefit? String '1'=yes (offers Rx, ~88%), '2'=no (~12%). drug_ben_yn='2' rows are shells with all cost fields NULL. |
mrx_ea_cov_lmt_amt | double | |
mrx_ea_cov_lmt_yn | string | |
mrx_ea_cstshr_apply | string | |
mrx_ea_cstshr_group | double | |
mrx_ea_cstshr_group_sec | double | |
mrx_ea_cstshr_grps | double | |
mrx_ea_cstshr_post_oopt | string | |
mrx_ea_cstshr_post_oopt_sec | string | |
mrx_ea_ded_amount | double | |
mrx_ea_ded_charge | string | |
mrx_ea_oop_th_amt | double | |
mrx_ea_oop_th_amt_sec | double | |
mrx_ea_oop_th_yn | string | |
mrx_ea_oop_th_yn_sec | string | |
mrx_ea_sec_covlmt_icl_amt | double | |
mrx_ea_sec_covlmt_icl_yn | string | |
mrx_excluded_tiers_yn | string | |
mrx_first_fill | string | |
mrx_floor_price_yn | string | |
mrx_form_model_desc | string | |
mrx_form_model_type | string | |
mrx_form_tier_model_2 | string | |
mrx_form_tier_model_2_mmp | string | |
mrx_form_tier_model_3 | string | |
mrx_form_tier_model_3_mmp | string | |
mrx_form_tier_model_4 | string | |
mrx_form_tier_model_4_mmp | string | |
mrx_form_tier_model_5 | string | |
mrx_form_tier_model_5_mmp | string | |
mrx_form_tier_model_5_opt1 | string | |
mrx_form_tier_model_5_opt2 | string | |
mrx_form_tier_model_5_opt3 | string | |
mrx_form_tier_model_5_opt4 | string | |
mrx_form_tier_model_5_opt5 | string | |
mrx_form_tier_model_5_opt6 | string | |
mrx_form_tier_model_6 | string | |
mrx_form_tier_model_6_mmp | string | |
mrx_form_tier_model_6_opt1 | string | |
mrx_form_tier_model_6_opt2 | string | |
mrx_form_tier_model_6_opt3 | string | |
mrx_form_tier_model_6_opt4 | string | |
mrx_form_tier_model_6_opt5 | string | |
mrx_formulary_tiers_num | string | |
mrx_formulary_yn | string | |
mrx_free_gnrc_max_amt | double | |
mrx_free_gnrc_yn | string | |
mrx_gen_extd_first_fill | string | |
mrx_gen_in_1m | double | |
mrx_gen_in_2m | double | |
mrx_gen_in_3m | double | |
mrx_gen_innpp_1m | double | |
mrx_gen_innpp_2m | double | |
mrx_gen_innpp_3m | double | |
mrx_gen_innpp_os | double | |
mrx_gen_inp_1m | double | |
mrx_gen_inp_2m | double | |
mrx_gen_inp_3m | double | |
mrx_gen_inp_os | double | |
mrx_gen_inpp_1m | double | |
mrx_gen_inpp_2m | double | |
mrx_gen_inpp_3m | double | |
mrx_gen_inpp_os | double | |
mrx_gen_ira_ltcp_coins_1m | double | |
mrx_gen_ira_ltcp_copay_1m | double | |
mrx_gen_ira_mostd_coins_1m | double | |
mrx_gen_ira_mostd_coins_2m | double | |
mrx_gen_ira_mostd_coins_3m | double | |
mrx_gen_ira_mostd_copay_1m | double | |
mrx_gen_ira_mostd_copay_2m | double | |
mrx_gen_ira_mostd_copay_3m | double | |
mrx_gen_ira_oonp_coins_1m | double | |
mrx_gen_ira_oonp_coins_othnum | double | |
mrx_gen_ira_oonp_copay_1m | double | |
mrx_gen_ira_oonp_copay_othnum | double | |
mrx_gen_ira_rstd_coins_1m | double | |
mrx_gen_ira_rstd_coins_2m | double | |
mrx_gen_ira_rstd_coins_3m | double | |
mrx_gen_ira_rstd_copay_1m | double | |
mrx_gen_ira_rstd_copay_2m | double | |
mrx_gen_ira_rstd_copay_3m | double | |
mrx_gen_loc | string | |
mrx_gen_loc_in | string | |
mrx_gen_loc_inp | string | |
mrx_gen_loc_ltc | string | |
mrx_gen_loc_mo | string | |
mrx_gen_loc_mop | string | |
mrx_gen_loc_mostd | string | |
mrx_gen_loc_oon | string | |
mrx_gen_loc_rstd | string | |
mrx_gen_ltc_1m | double | |
mrx_gen_ltcp_1m | double | |
mrx_gen_ltcp_b_1m | double | |
mrx_gen_ltcp_b_os | double | |
mrx_gen_ltcp_g_1m | double | |
mrx_gen_ltcp_g_os | double | |
mrx_gen_mo_1m | double | |
mrx_gen_mo_2m | double | |
mrx_gen_mo_3m | double | |
mrx_gen_mo_os | double | |
mrx_gen_monpp_1m | double | |
mrx_gen_monpp_2m | double | |
mrx_gen_monpp_3m | double | |
mrx_gen_monpp_os | double | |
mrx_gen_mop_1m | double | |
mrx_gen_mop_2m | double | |
mrx_gen_mop_3m | double | |
mrx_gen_mopp_1m | double | |
mrx_gen_mopp_2m | double | |
mrx_gen_mopp_3m | double | |
mrx_gen_mopp_os | double | |
mrx_gen_mostd_1m | double | |
mrx_gen_mostd_2m | double | |
mrx_gen_mostd_3m | double | |
mrx_gen_oon_1m | double | |
mrx_gen_oon_os | double | |
mrx_gen_oonp_1m | double | |
mrx_gen_oonp_3m | double | |
mrx_gen_oonp_os | double | |
mrx_gen_rstd_1m | double | |
mrx_gen_rstd_2m | double | |
mrx_gen_rstd_3m | double | |
mrx_grp_coins_yn | string | |
mrx_grp_copay_yn | string | |
mrx_grp_id | string | |
mrx_grp_innpp_1m_num | double | |
mrx_grp_innpp_3m_num | double | |
mrx_grp_innpp_coins_1m | double | |
mrx_grp_innpp_coins_3m | double | |
mrx_grp_innpp_coins_os | double | |
mrx_grp_innpp_copay_1m | double | |
mrx_grp_innpp_copay_3m | double | |
mrx_grp_innpp_copay_os | double | |
mrx_grp_innpp_othnum | double | |
mrx_grp_innpp_presup | string | |
mrx_grp_inpp_1m_num | double | |
mrx_grp_inpp_3m_num | double | |
mrx_grp_inpp_co_num | double | |
mrx_grp_inpp_coins_1m | double | |
mrx_grp_inpp_coins_3m | double | |
mrx_grp_inpp_coins_os | double | |
mrx_grp_inpp_copay_1m | double | |
mrx_grp_inpp_copay_3m | double | |
mrx_grp_inpp_copay_os | double | |
mrx_grp_inpp_ps | string | |
mrx_grp_lbl | string | |
mrx_grp_lbl1 | string | |
mrx_grp_lbl2 | string | |
mrx_grp_locat | string | |
mrx_grp_mo_1m_num | double | |
mrx_grp_mo_3m_num | double | |
mrx_grp_mo_coins_1m | double | |
mrx_grp_mo_coins_3m | double | |
mrx_grp_mo_coins_os | double | |
mrx_grp_mo_copay_1m | double | |
mrx_grp_mo_copay_3m | double | |
mrx_grp_mo_copay_os | double | |
mrx_grp_mo_othnum | double | |
mrx_grp_mo_presup | string | |
mrx_grp_oonp_1m_num | double | |
mrx_grp_oonp_3m_num | double | |
mrx_grp_oonp_coins_1m | double | |
mrx_grp_oonp_coins_3m | double | |
mrx_grp_oonp_coins_os | double | |
mrx_grp_oonp_copay_1m | double | |
mrx_grp_oonp_copay_3m | double | |
mrx_grp_oonp_copay_os | double | |
mrx_grp_oonp_othnumn | double | |
mrx_grp_oonp_presup | string | |
mrx_grp_tier_lbl1 | string | |
mrx_grp_tier_lbl2 | string | |
mrx_grp_tierlbl | string | |
mrx_grp_type | string | |
mrx_grp_type_id | string | |
mrx_innpp_1m_num | double | |
mrx_innpp_3m_num | double | |
mrx_innpp_othnum | double | |
mrx_innpp_presup | string | |
mrx_inpp_1m_num | double | |
mrx_inpp_3m_num | double | |
mrx_inpp_co_num | double | |
mrx_inpp_ps | string | |
mrx_insulin_attest | string | |
mrx_limit_ofc_yn | string | |
mrx_locat | string | |
mrx_ltc_attest_flag | string | |
mrx_mo_1m_num | double | |
mrx_mo_3m_num | double | |
mrx_mo_othnum | double | |
mrx_mo_presup | string | |
mrx_nat_rx_cov_yn | string | |
mrx_oonp_1m_num | double | |
mrx_oonp_3m_num | double | |
mrx_oonp_othnumn | double | |
mrx_oonp_presup | string | |
mrx_otc_meds_attest_flag | string | |
mrx_otc_meds_pay_ump_yn | string | |
mrx_otc_step_therapy_yn | string | |
mrx_partd_network_loc | string | |
mrx_pen_lessexpen_yn | string | |
mrx_pen_oonpharm_yn | string | |
mrx_post_exclud_only_yn | string | |
mrx_pro_part_fill | string | |
mrx_ptd_nat_avg | double | |
mrx_quantity_limits | string | |
mrx_rai_adh_goal_notes_1rx | string | |
mrx_rai_adh_goal_notes_2rx | string | |
mrx_rai_adh_goal_notes_3rx | string | |
mrx_rai_elig_crit_1rx | string | |
mrx_rai_elig_crit_2rx | string | |
mrx_rai_elig_crit_3rx | string | |
mrx_rai_elig_crit_notes_1rx | string | |
mrx_rai_elig_crit_notes_2rx | string | |
mrx_rai_elig_crit_notes_3rx | string | |
mrx_rai_frq_ri_desc_1rx | string | |
mrx_rai_frq_ri_desc_2rx | string | |
mrx_rai_frq_ri_desc_3rx | string | |
mrx_rai_meet_adh_goal_yn_1rx | string | |
mrx_rai_meet_adh_goal_yn_2rx | string | |
mrx_rai_meet_adh_goal_yn_3rx | string | |
mrx_rai_num_partd_offrd | string | |
mrx_rai_off_rew_incent_yn | string | |
mrx_rai_rew_inc_notes_1rx | string | |
mrx_rai_rew_inc_notes_2rx | string | |
mrx_rai_rew_inc_notes_3rx | string | |
mrx_rai_type_partd_rew_1rx | string | |
mrx_rai_type_partd_rew_2rx | string | |
mrx_rai_type_partd_rew_3rx | string | |
mrx_reduct_cost_yn | string | |
mrx_snp_zerocost_attest | string | |
mrx_sp_access_yn | string | |
mrx_step_ther_drugs_yn | string | |
mrx_tier_extd_days_gen_yn | string | |
mrx_tier_form_ex | string | |
mrx_tier_form_ex_2 | double | |
mrx_tier_form_ex_2_yn | string | |
mrx_tier_group_num | double | |
mrx_v_bid_attestation | string | |
mrx_vaccine_attest | string | |
orgtype | string | CMS organization type code, string (01=Local CCP/HMO-PPO dominant, 08, 10, 11, 06, 04, 02...). Plan-sponsor org category. Largely co-varies with pbp_a_plan_type. |
part_d_enhncd_cvrg_demo | string | |
part_d_model_demo | string | |
pbp_a_ben_cov | string | Section-A benefit-coverage scope code (string; '1' dominant, '2', plus nulls). Indicates the plan's overall benefit coverage class. |
pbp_a_plan_type | string | PBP plan-type code, string ('01'=HMO, '02'=HMO-POS, '04'=Local PPO, '29'=PDP-style, '20', '31'=Regional PPO, etc.). Carried from Section A; identifies the MA/PDP product type. |
observed_period | date | Vlada-normalized observation period (date) = Jan 1 of report_year. Always equals effective_period_start in this table; does NOT distinguish quarterly releases (so it cannot stand in for quarter/vintage in the grain). |
asserted_at | date | Vlada ingestion/assert date (date; 3 values: 2026-05-16, 2026-05-20, 2026-05-25). The 16,307 rows asserted 2026-05-25 are exactly the 2021/2022 dual-vintage backfill rows. Pipeline provenance, not benefit data. |
effective_period_start | date | |
effective_period_end | date | |
cms_vintage_sequence | int | Integer ordinal of the CMS release within the plan-year, normally tracking quarter (Q1=1...Q4=4). REQUIRED in the grain: in 2021/2022 the same (year,quarter) was loaded at two different vintage sequences from two different CMS source ZIPs (mid-year 'updated-MMDDYYYY' re-releases). |
parse_revision | int | |
parser_artifact_hash | string | |
source_url | string | |
sha256_content_hash | string | |
source_row_ordinal | double | |
mrx_bal_model_attest | string | |
mrx_bal_opt_flex | string | |
mrx_bal_opt_flex_other_desc | string | |
mrx_balance_covg_tier | string | |
mrx_balance_cstshr_struc_type | string | |
mrx_balance_deductible_amt | double | |
mrx_balance_deductible_opt | string | |
mrx_balance_extended_tier | string | |
mrx_balance_mo_tier | string | |
mrx_dsnp_buydown_attest | string | |
mrx_alt_* (family) | ~35 cols describing the Enhanced Alternative coverage design: deductible (ded_amount/charge/type), coverage limits (cov_lmt_amt/yn), gap coverage (gap_covg_brand/gen/tier/yn — pre-2026; IRA removed the gap in 2026), generic cost-share (gen_coins_pct/gen_copay_amt/gen_cstshr_struct), excluded/reduced drugs, pre/post-ICL cost share, and MMP (Medicare-Medicaid plan) variants. Sparse; which sub-fields are valid depends on report_year (PBP layout churn). | |
mrx_b_* (family) | ~22 cols for the Part D supplemental/'B' cost-share block (coinsurance pct, copay min/max, AWP discount, dispensing-fee min/max, deductible, max-OOP). Mostly NULL in recent years (mrx_b_ded_amt=0 non-null across all 208K rows in sample) — legacy/rarely-used design fields. | |
mrx_gen_* tier-copay matrix (mrx_gen_in/inp/innpp/mo/mop/oon/rstd/mostd/ltc _1m/_2m/_3m) | ~120 double cols intended for generic-drug copay/coins by pharmacy location (in-network, preferred, mail-order, OON, retail/mail standard, LTC) and days-supply (1/2/3-month). TRAP: essentially EMPTY in this parent table (mrx_gen_in_1m = 632 non-null of 208,537, only legacy years). Tier×pharmacy cost detail lives in the child table pbp_mrx_tier, not here. | |
mrx_gen_loc_* / mrx_locat / mrx_partd_network_loc | Part D pharmacy-location indicators (rstd=retail-standard, mostd=mail-order-standard, oon=out-of-network-preferred, ltc=long-term-care-preferred, in/inp/mo/mop). String flags describing which pharmacy channels the plan structures cost-share for. | |
mrx_gen_ira_* (family) | ~30 cols added for IRA (Inflation Reduction Act) standardized Part D cost-share — generic coins/copay by standard-retail (rstd), mail-standard (mostd), LTC-preferred (ltcp), OON-preferred (oonp) at 1/2/3-month supply. Populated only in IRA-era years (CY2024+). | |
mrx_grp_* (family) | ~50 cols for cost-share 'group' constructs (group id/type/labels, per-group copay/coins by pharmacy×supply). TRAP: mrx_grp_id and mrx_grp_type_id are 100% NULL across all 208K rows — this table is NEVER exploded to group rows. The profiler wrongly used these as a 'key'. | |
mrx_rai_* / max_rai_* (family) | ~30 cols for Part D Rewards & Incentives programs (offered y/n, type, eligibility criteria, adherence-goal notes, max annual reward amounts _1rx/_2rx/_3rx). Free-text + amounts; mostly NULL. | |
mrx_ae_/mrx_ba_/mrx_ea_* (family) | Cost-share-group apply flags and out-of-pocket-threshold structures for Alternative-Enhanced (ae), Basic-Alternative (ba), Enhanced-Alternative (ea) tiers — cstshr_apply, cstshr_grps, ded_amount, oop_th_amt, post_oopt. Sparse design-detail fields. | |
mrx_form_* / mrx_formulary_yn / mrx_formulary_tiers_num / mrx_form_tier_model_2..6 | Formulary model descriptors: formulary y/n, number of tiers, tier-model codes (2-6 tiers, with _mmp and _opt variants). mrx_form_tier_model_5 populated only CY2013-2016; mrx_formulary_yn 100% NULL in 2026 — strongly year-dependent (these moved/changed in the CY2022-Q2 and CY2024 PBP redesigns). | |
mrx_quantity_limits / mrx_step_ther_drugs_yn / mrx_otc_step_therapy_yn / mrx_auth_ynba / mrx_first_fill / mrx_excluded_tiers_yn | Utilization-management flags: quantity limits (string, populated 2010-2021 then NULL), step therapy, prior auth, first-fill/extended-first-fill, excluded tiers. String y/n-style indicators; coverage varies by year. | |
mrx_demo_yn / mrx_demo_type / part_d_model_demo / part_d_enhncd_cvrg_demo | Part D demonstration/model-test participation flags and type (e.g. VBID, Enhanced Med Therapy demos). VBID-related fields blanked in CY2026 (VBID discontinued). | |
effective_period_start / effective_period_end | Plan-year coverage window: always Jan 1 .. Dec 31 of report_year (dates). Derived from report_year; identical for all quarterly releases of the same year. | |
cms_vintage_sequence / parse_revision / parser_artifact_hash / source_url / sha256_content_hash | Lineage: source_url = the exact CMS PBP ZIP (29 distinct, e.g. pbp-benefits-2025.zip, pbp-benefits-2021-updated-08022021.zip); sha256_content_hash = content hash of that file; parse_revision (1 or 2) = Vlada parser version; parser_artifact_hash = parser build. source_url is the truest snapshot discriminator. |
Query it
describe_data_source(source_fqn="medicare_silver.pbp_mrx") # the card, live query_substrate(sql="SELECT * FROM medicare_silver.pbp_mrx WHERE bid_id = '<value>' AND report_year = '<value>' AND quarter = '<value>' AND cms_vintage_sequence = '<value>' LIMIT 100")
| Item | Value |
|---|---|
| Typed tools that read it | get_pbp_benefit |
| Identity key | contract_id,plan_id,segment_id,version,mrx_grp_type_id,mrx_grp_id,report_year,quarter |
| Join | how_to_join(source_fqn="medicare_silver.pbp_mrx") |
| Raw door | Athena (read-only via query_substrate): medicare_silver.pbp_mrx |
| Note | Grain-governed; live in Glue / query_substrate. Source family pbp_benefits. |
This page as markdown: /docs-md/data/medicare_silver_pbp_mrx.md · every page in one file: /llms-full.txt