Medicare Advantage, Part D, Medicaid

MA pbp section b19 model test

medicare_silver.pbp_section_b19_model_test·partial·silver·annual
Rows
N/A
Columns
114
History
2017 (report_year; effective_period_start 2017-01-01) to 2026 (report_year; effective_period_start 2026-01-01). Years present: 2017, 2021, 2022, 2024, 2025, 2026 — 2018/2019/2020/2023 absent.
Card
yesgrain, traps, filters
Typed tools
0

What it is

  1. 1CMS Medicare Advantage Plan Benefit Package (PBP) Section B-19 — the supplemental-benefit summary section covering VBID (Value-Based Insurance Design), MA Uniformity Flexibility, SSBCI (Special Supplemental Benefits for the Chronically Ill), VBID Hospice, Health Equity (HEP), Wellness/Health-Planning (WHP), and Part-C Rewards-and-Incentives.
  2. 2One wide row per MA plan-segment per benefit year, carrying the top-level yes/no flags, package counts, and the (sparse) reduced cost-share dollar amounts each plan filed in its bid.
  3. 3It is the source for 'which MA plans offer VBID/SSBCI/UF supplemental benefits, of what type, in which years.'

Grain

KeyGrain
contract_idplan_idsegment_idreport_year
  1. 1One row per Medicare Advantage plan-segment per benefit year: (contract_id, plan_id, segment_id, report_year).
  2. 2VERIFIED — contract_id||plan_id||segment_id||report_year yields exactly 40,737 distinct = the full 40,737 row_count, with zero duplicate groups.
  3. 3Equivalent shorthand keys: (bid_id, report_year) since bid_id IS exactly contract_id_'_'_plan_id_'_'_segment_id (0 mismatches), and (contract_id, plan_id, segment_id, observed_period) since observed_period = Jan-1 of report_year. quarter is constant (always 1.0) and adds nothing.

How to read it

  1. 1"SELECT report_year, COUNT(*) AS plans, SUM(CASE WHEN pbp_b19a_ssbci_yn='1' THEN 1 ELSE 0 END) AS ssbci_yes, SUM(CASE WHEN pbp_b19a_uf_yn='1' THEN 1 ELSE 0 END) AS uf_yes, SUM(CASE WHEN pbp_b19a_vbd_yn='1' THEN 1 ELSE 0 END) AS vbd_yes FROM medicare_silver.pbp_section_b19_model_test GROUP BY report_year ORDER BY report_year;" answers 'how many MA plan-segments offer SSBCI / MA Uniformity Flexibility / VBID supplemental benefits each year, and how did adoption shift (e.g.
  2. 2VBID going to zero in 2026)?'.
  3. 3Join to pbp_section_a (or pbp_vbid_overlay) on (contract_id, plan_id, segment_id, report_year) to attach plan name/enrollment/region.
  4. 4Always GROUP BY or filter report_year first because field availability is year-dependent."

Traps

  1. 1NAME TRAP — '_model_test' is NOT a dev/sample/partial table. It is the literal CMS PBP source section name ('B-19 Model Test', the VBID/MA-Uniformity-Flexibility 'model test' supplemental-benefit section). It carries ~88-95% of all MA contracts for its years (e.g. 2024: 953 of 1,034 contracts vs full pbp_section_a). It IS real production data, just only for plans that file Section B-19.
  2. 2GRAIN TRAP — the profiler reports an 11-column SUPERSET key. The true minimal grain is just (contract_id, plan_id, segment_id, report_year) = 40,737 distinct = row_count, zero dupes. bid_id, quarter, observed_period, effective_period_start are all redundant (bid_id = contract_'_'_plan_'_'_segment exactly; quarter is always 1; observed_period/eff_start = Jan-1 of report_year). The extra columns the profiler added (pbp_a_plan_type, max_plan_ben_amt, whp_provid_incent...) are NOT keys — they just happen not to break uniqueness.
  3. 3YEAR GAPS — only 2017, 2021, 2022, 2024, 2025, 2026 exist; 2018/2019/2020/2023 are MISSING from silver. Never assume a continuous yearly series. For a continuous VBID index across 2017-2026 use the sibling pbp_vbid_overlay (16 cols, index-only, no benefit fields). Also quarter=1 always, but the source files are mixed quarters per year (see source_url) — don't read quarter as the true release.
  4. 4NULL-MEANS-NOT-COLLECTED, varying by year — this is the single biggest analysis trap. 2017 has EVERY B19a/HEP/WHP/B19b field 100% NULL (the section had a totally different shape then; only legacy base cols). HEP fields are populated ONLY in 2024. WHP and VBID fields are populated 2021/2022/2024 and NULL in 2025/2026 (VBID demonstration sunset; CMS restructured ~40 fields CY2024->CY2025). So NULL on vbd_yn/hep_action/whp_* usually means 'field absent that year', NOT 'plan answered No'. Always filter by report_year before interpreting a flag, and read 1/2/NULL as Yes/No/not-applicable.
  5. 5ONLY ~90 of 1,181 source columns are extracted (92% of the per-sub-benefit cost-share matrix is NOT in silver). The detailed reduced-cost-share dollar amounts a cost analyst wants (pbp_b19a_coins_16a_min, copay/deductible per sub-benefit) DO NOT EXIST here — only top-level yes/no flags + package counts + a handful of sparse aggregate dollars survive. Whole column families are placeholder-empty in every year: all pbp_b19_c_* Part-C cash-rebate/R&I fields (the live reward data is in pbp_b19_whp_* instead), pbp_b19a_reduct_cost_add_yn, and most pbp_b19c_* hospice cost-share cells (≤10 rows ever). See docs/research/26_pbp_b19_column_ledger.md for the per-column inhabitance-by-year ledger.
  6. 6SINGLE SNAPSHOT, no is_current / no dedup needed — there is no is_current column. asserted_at (2026-05-16), cms_vintage_sequence (=1), and parse_revision (=1) are CONSTANT across all rows: the bi-temporal columns are scaffolding for future re-releases but currently carry exactly one vintage. Do NOT write supersession/dedup logic; one row per (bid, year) already. Provenance columns (source_url, sha256_content_hash, parser_artifact_hash) have 6 distinct values = one per report_year.

Columns (114)

ColumnTypeMeaning
contract_idstringCMS MA contract ID (e.g. H0022, H0028); 1,296 distinct. First component of bid_id. Part of grain.
plan_idstringPlan ID within the contract (3-char, e.g. 001, 014); 655 distinct values. Second component of bid_id. Part of grain.
segment_idstringPlan segment (regional split). Mostly '0' (36,975 rows = non-segmented); 1-7 are regional segments of PPO/regional plans (segment 1=1,264 ... 7=40 rows). Third component of bid_id. Part of grain.
versiondoubleCMS PBP software submission/version number of the bid filing (range 1-27, 25 distinct). Metadata of the bid, NOT a grain or dedup key — there is exactly one row per bid per year, no version stacking.
report_yeardoubleContract/benefit year the PBP describes (double). Six values present: 2017, 2021, 2022, 2024, 2025, 2026. GAPPED — 2018/2019/2020/2023 are absent. Part of grain.
quarterdoubleCMS PBP release quarter. CONSTANT = 1.0 for every row. Not part of grain; do not rely on it to distinguish releases (the underlying source files are actually mixed quarters Q1/Q2 per year — see source_url).
bid_idstringComposite plan key = contract_id || '_' || plan_id || '_' || segment_id (verified 0 mismatches). 13,953 distinct = distinct (contract,plan,segment). Fully redundant with those three columns; a convenience join key, not extra grain.
orgtypestringCMS organization type code. 01=Local MA (37,402, dominant), 08=Cost plan (1,896), 11=Regional MA/RPPO (541), 06=MSA (390), 05/04/02 small. (Code meanings per docs/kbs/pbp/CY2024.md.)
pbp_a_ben_covstringPlan benefit-coverage type from Section A. 1=most plans (39,836), 2=822, NULL=79. Carried over from Section A as a join/context attribute.
pbp_a_plan_typestringPlan type code (from Section A). 01=HMO (18,951), 04=Local PPO (13,123), 02=HMO-POS (5,328), 20=Cost (1,896), 31=Regional PPO (541), 18=MSA (390). (Meanings per CY2024 KB; '[INFERRED]' there.)
pbp_b19_c_cash_rebate_max_amtdouble
pbp_b19_c_cash_rebate_mnt_amtdouble
pbp_b19_c_cash_rebate_otherstring
pbp_b19_c_cash_rebate_typestring
pbp_b19_c_ri_amt_1double
pbp_b19_c_ri_amt_2double
pbp_b19_c_ri_amt_3double
pbp_b19_c_ri_cntstring
pbp_b19_c_ri_freq_1string
pbp_b19_c_ri_freq_2string
pbp_b19_c_ri_freq_3string
pbp_b19_c_ri_freq_desc_1string
pbp_b19_c_ri_freq_desc_2string
pbp_b19_c_ri_freq_desc_3string
pbp_b19_c_ri_max_1double
pbp_b19_c_ri_max_2double
pbp_b19_c_ri_max_3double
pbp_b19_c_ri_type_1string
pbp_b19_c_ri_type_2string
pbp_b19_c_ri_type_3string
pbp_b19_c_ri_type_note_1string
pbp_b19_c_ri_type_note_2string
pbp_b19_c_ri_type_note_3string
pbp_b19_hep_actionstring
pbp_b19_hep_action_descstring
pbp_b19_hep_data_sourcestring
pbp_b19_hep_data_source_descstring
pbp_b19_hep_toolstring
pbp_b19_hep_tool_descstring
pbp_b19_whp_ben_eng_ann_amtdouble
pbp_b19_whp_eligibil_critstring
pbp_b19_whp_freq_rewstring
pbp_b19_whp_mode_of_engstring
pbp_b19_whp_partc_rew_inc_ynstring
pbp_b19_whp_prog_connectednessstring
pbp_b19_whp_prog_typestring
pbp_b19_whp_prog_type_otherstring
pbp_b19_whp_provid_incentstring
pbp_b19_whp_rew_inc_amtdouble
pbp_b19_whp_type_partc_rewstring
pbp_b19a_attestationstringVBID attestation flag. 1=3,049 rows, else NULL. Populated 2021/2022/2024 only (VBID-participating plans).
pbp_b19a_reduct_cost_add_ynstringVariant 'Part-C reductions in cost OR additional benefits' flag. Truly empty in silver across all years (0 populated) — present in schema but never filled.
pbp_b19a_reduct_cost_ynstringDoes the VBID/UF/SSBCI benefit offer Part-C reductions in cost-sharing? 1=Yes (3,084), 2=No (20,467), NULL=17,186 (all-2017 + 2021/2022 where the field was barely collected).
pbp_b19a_reduct_package_numdoubleNumber of 19a Reduction-in-Cost-Sharing packages the plan files (double, e.g. 1.0, 2.0). Populated where reduct_cost_yn=Yes; NULL otherwise.
pbp_b19a_ssbci_bendescstringType/category of benefit the SSBCI includes (coded string, e.g. '11'). Populated 2021+ where SSBCI=Yes; NULL otherwise.
pbp_b19a_ssbci_ynstringDoes the plan offer Special Supplemental Benefits for the Chronically Ill (SSBCI)? 1=Yes (7,567), 2=No (27,082), NULL=6,088. NULL is concentrated in 2017 (field did not exist) plus a few hundred 'not answered' per later year.
pbp_b19a_uf_ynstringDoes the plan include MA Uniformity Flexibility (reductions in cost-share/added benefits for targeted enrollees)? 1=Yes (3,029), 2=No (31,903), NULL=5,805 (all-2017 + a few hundred/year).
pbp_b19a_vbd_hospice_ben_ynstringDoes the plan offer VBID Hospice benefits? Yes/No, sparsely populated 2021-2025, ZERO in 2026 (demonstration ended).
pbp_b19a_vbd_typestringWhich additional VBID interventions (beyond wellness/care-planning) the plan offers (coded string, e.g. '01','010'). Populated only 2021/2022/2024; NULL in 38,641 rows.
pbp_b19a_vbd_ynstringDoes the plan offer Value-Based Insurance Design flexibilities (by condition / socioeconomic status)? 1=Yes (2,998), 2=No (949), NULL=36,790. NULL dominates: VBID was only collected 2021/2022/2024 (and ZERO in 2026 — VBID demonstration sunset). Treat NULL as 'not in scope that year', not 'No'.
pbp_b19b_add_cost_ynstringDoes the VBID/UF/SSBCI benefit offer ADDITIONAL Part-C benefits (b19b)? 1=Yes (10,499), 2=No (14,566), NULL=15,672 (2017 absent + ~half of 2021/2022).
pbp_b19b_add_package_numdoubleNumber of additional-benefit packages (1-15) the plan files in b19b (double). The most-populated b19b dollar/count field across 2021-2026.
pbp_b19c_coins_pct2_maxovdouble
pbp_b19c_coins_pct2_minovdouble
pbp_b19c_coins_pct_maxovdouble
pbp_b19c_coins_pct_minovdouble
pbp_b19c_coins_pct_resp2_maxdouble
pbp_b19c_coins_pct_resp2_mindouble
pbp_b19c_coins_pct_resp_maxdouble
pbp_b19c_coins_pct_resp_mindouble
pbp_b19c_conins_enrol2_ynstring
pbp_b19c_conins_enrol_ynstring
pbp_b19c_conins_resp_enrol2_ynstring
pbp_b19c_conins_resp_enrol_ynstring
pbp_b19c_copay_amt2_maxovdouble
pbp_b19c_copay_amt2_minovdouble
pbp_b19c_copay_amt_maxovdouble
pbp_b19c_copay_amt_minovdouble
pbp_b19c_copay_amt_resp2_maxdouble
pbp_b19c_copay_amt_resp2_mindouble
pbp_b19c_copay_amt_resp_maxdouble
pbp_b19c_copay_amt_resp_mindouble
pbp_b19c_copay_enrol2_ynstring
pbp_b19c_copay_enrol_ynstring
pbp_b19c_copay_resp_enrol2_ynstring
pbp_b19c_copay_resp_enrol_ynstring
pbp_b19c_cov_hlth_rltdstring
pbp_b19c_cov_hlth_rltd_ynstring
pbp_b19c_hosp_supp_ben_cont_ynstring
pbp_b19c_mand_supp_ben_ynstring
pbp_b19c_max_plan_ben_amtdouble
pbp_b19c_max_plan_ben_ynstring
pbp_b19c_oth_man_supp_benstring
pbp_b19c_oth_man_supp_ben_ynstring
pbp_b19c_pres_drug2_maxdouble
pbp_b19c_pres_drug_maxdouble
pbp_b19c_red_cost_shar_ynstring
pbp_b19c_resp_care2_maxdouble
pbp_b19c_resp_care_maxdouble
pbp_b19c_tmp_cov_res_fac_ynstring
observed_perioddateBi-temporal: the period the data describes = Jan-1 of report_year (date). Derivable from report_year; equals effective_period_start. Constant within a (bid, year).
asserted_atdateBi-temporal: when this fact was loaded/asserted. CONSTANT = 2026-05-16 for every row — single load. No supersession history.
effective_period_startdate
effective_period_enddate
cms_vintage_sequenceintBi-temporal vintage ordinal for superseding CMS re-releases. CONSTANT = 1 for every row (only one vintage loaded). Scaffolding for future versioning; nothing to filter today.
parse_revisionintParser revision ordinal. CONSTANT = 1 everywhere. Scaffolding; not a dedup key in current data.
parser_artifact_hashstringSHA-256 of the parser build that produced the row. 6 distinct values (one per report_year's extraction run). Provenance.
source_urlstringCMS download URL of the PBP ZIP this row came from. 6 distinct (one per year). Reveals the real release quarter despite quarter=1: 2021=updated-07012021, 2022=quarter-2, 2024=quarter-1, etc. Provenance.
sha256_content_hashstringSHA-256 of the source file content. 6 distinct (one per year). Provenance / integrity.
pbp_b19_hep_action / pbp_b19_hep_action_desc / pbp_b19_hep_data_source / pbp_b19_hep_data_source_desc / pbp_b19_hep_tool / pbp_b19_hep_tool_descVBID Health Equity Plan (HEP) fields: actions, disparity data-sources, screening tool, and free-text descriptions. CODED multi-select strings (e.g. action='0111111', tool='0110'). POPULATED ONLY IN 2024 (118 rows); NULL in every other year — a one-year CMS data collection. Major NULL-means-'not-collected' trap.
pbp_b19_whp_* (ben_eng_ann_amt, mode_of_eng, partc_rew_inc_yn, prog_connectedness, prog_type, prog_type_other, provid_incent, freq_rew, rew_inc_amt, type_partc_rew, eligibil_crit)Wellness & Health-Planning (WHP) program fields: expected beneficiaries engaged annually (ben_eng_ann_amt, $/count 0-389,061), mode of engagement, program type/connectedness (coded strings like '111','11111'), provider-incentive and reward flags, reward amount/type/frequency, and a free-text 'other program' description. Populated 2021/2022/2024 only; NULL in 2025/2026 (field retired). eligibil_crit is empty in all years.
pbp_b19_c_cash_rebate_* and pbp_b19_c_ri_* (amt_1..3, max_1..3, freq_1..3, type_1..3, type_note_1..3, freq_desc_1..3, cnt)Part-C cash/monetary rebate and Rewards-and-Incentives package fields (max annual rebate, monthly amount, R&I amounts/maxes/frequencies/types/notes for up to 3 packages). In THIS silver table they are ENTIRELY EMPTY (0 populated in every year) — placeholder columns the silver writer never filled. The live R&I/reward data that IS populated lives in the pbp_b19_whp_* family instead.
pbp_b19c_* hospice cost-share block (mand_supp_ben_yn, oth_man_supp_ben(_yn), red_cost_shar_yn, cov_hlth_rltd(_yn), hosp_supp_ben_cont_yn, tmp_cov_res_fac_yn, max_plan_ben_yn, max_plan_ben_amt, conins_enrol(2)_yn, conins_resp_enrol(2)_yn, copay_enrol(2)_yn, copay_resp_enrol(2)_yn, coins_pct*_min/max(ov), copay_amt*_min/max(ov), resp_care(2)_max, pres_drug(2)_max)VBID Hospice supplemental-benefit cost-share matrix: yes/no toggles for hospice supplemental benefits and a min/max copay/coinsurance grid (INN/OON, respite, prescription). EXTREMELY SPARSE — at most ~10 rows populated (2022) and many sub-fields (coins_pct*ov, copay_amt_resp*, pres_drug*) are 0 across all years. max_plan_ben_amt populated for only 102 rows (range $0-$500). Treat this whole block as near-empty in the current extract.
effective_period_start / effective_period_endThe benefit year window: Jan-1 to Dec-31 of report_year (dates). Fully derivable from report_year; the profiler's reported time axis (2017-01-01 .. 2026-01-01).

Query it

describe_data_source(source_fqn="medicare_silver.pbp_section_b19_model_test")     # the card, live
query_substrate(sql="SELECT * FROM medicare_silver.pbp_section_b19_model_test WHERE contract_id = '<value>' AND plan_id = '<value>' AND segment_id = '<value>' AND report_year = '<value>' LIMIT 100")
ItemValue
Typed tools that read itnone; raw SQL
Identity keycontract_id
Joinhow_to_join(source_fqn="medicare_silver.pbp_section_b19_model_test")
Raw doorAthena (read-only via query_substrate): medicare_silver.pbp_section_b19_model_test
NoteGrain-governed; live in Glue / query_substrate. Source family pbp_benefits.

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