Medicare Advantage, Part D, Medicaid

PBP supplemental other (cleaned view)

medicare_semantic.vw_pbp_supplemental_other·partial·semantic_view·CMS PBP snapshot cadence: annual landscape file per contract year, plus intra-year quarterly republishes. In this data, 2024 has 3 quarterly snapshots (Q1/Q3/Q4) while 2025 and 2026 each have a single annual snapshot (quarter=1). Treat report_year as the benefit/plan year and (report_year, quarter) as the snapshot key.
Rows
N/A
Columns
50
History
2024 Q1 (report_year=2024, quarter=1; source pbp-benefits-2024-quarter-1.zip) to 2026 annual (report_year=2026, quarter=1; source pbp-benefits-2026.zip)
Card
yesgrain, traps, filters
Typed tools
1

What it is

  1. 1A Medicare Advantage Plan Benefit Package (PBP) semantic view exposing the "other / catch-all supplemental" benefit (CMS PBP Section B-20) per MA plan per CMS data snapshot.
  2. 2It is meant to tell you, for each plan offering, whether an "other supplemental" benefit is offered and a few cost-sharing indicator flags (auth required, has-copay/coinsurance/deductible/max-OOP).
  3. 3In its current build it is a near-empty SCAFFOLD: the actual dollar/percent cost-share and benefit-amount columns are hardcoded NULL in the view definition, and only 3 contracts / 88 plan-snapshots are materialized.

Grain

KeyGrain
contract_idplan_idsegment_idreport_yearquarter
  1. 1one row per MA plan (contract_id + plan_id + segment_id) per CMS PBP snapshot (report_year + quarter), for the single Section B-20 'other supplemental' benefit bucket

How to read it

  1. 1To list MA plans that OFFER an 'other supplemental' (B-20) benefit in the latest 2026 snapshot and whether each requires prior auth or carries a copay/coinsurance: SELECT contract_id, plan_id, segment_id, auth_required, has_copay, has_coinsurance, has_max_enrollee_oop FROM medicare_semantic.vw_pbp_supplemental_other WHERE report_year=2026 AND quarter=1.
  2. 2This answers 'which of these plans offer the catch-all supplemental benefit and what cost-share types apply' — but for the actual copay/coinsurance AMOUNTS you must join to medicare_silver.pbp_section_b20 on (contract_id, plan_id, segment_id, report_year, quarter), since the amount columns in this view are hardcoded null.

Traps

  1. 1This view is a near-empty SCAFFOLD, not a populated benefit table. ~30 of 47 columns are hardcoded CAST(null AS ...) in the view DDL — including EVERY cost-sharing/benefit-amount column (copay_amount, coinsurance_pct, benefit_amount*, limit_*, max_oop_applies, referral_required, normalization_*). They are structurally null regardless of the underlying CMS data. The real dollar/percent values DO exist in medicare_silver.pbp_section_b20 (pbp_b20_b_copay_max, pbp_b20_coins_mc_pct, etc.) and must be joined from there. Do NOT report any rates/amounts from this view.
  2. 2has_copay / has_coinsurance / has_max_enrollee_oop can be TRUE while the corresponding amount column is NULL. The 2 'has_*'=true rows (H5264 002 & 005, 2026) still have copay_amount=null and coinsurance_pct=null. The has_* flags only tell you the benefit HAS that cost-share type (decoded from CMS Y/N indicators); they do not give the value.
  3. 3No is_current / snapshot-dedup column. The SAME plan repeats once per snapshot — e.g. H1651 plan 001 appears 5 times (2024 Q1/Q3/Q4, 2025, 2026). To avoid multi-counting you MUST filter to a single (report_year, quarter), or pick the latest per plan yourself. quarter is the CMS publication quarter, not a benefit period.
  4. 4Tiny / partial materialization. Only 3 contracts and 88 plan-snapshots are present, vs ~1,972 contracts in sibling views (vw_pbp_dental/vision/dme/otc). This reflects two things: (a) PBP Section B-20 is genuinely sparse (silver source = 463 rows / 7 contracts) because most plans don't file an 'other/catch-all' supplemental benefit, and (b) the view is filtered to report_year>=2024 and only a few contracts are built. Do not treat this as MA-wide coverage of supplemental benefits.
  5. 5Several columns that look informative are constants and carry no signal: benefit_category='supplemental_other', network_type='in_network', offered_status='offered', numeric_amount_observability='offered_without_numeric_amounts', null_amount_reason='unknown_requires_crosswalk', confidence_tier='source_faithful', consumer_document_reconciliation_status='not_checked', supplemental_other_sub_benefit='other_supplemental', source_pbp_section='B20', cost_share_attestation_text='1' — all single-valued across every row. Also 'benefit_group_count' is mislabeled (it is the raw pbp_b20_bendesc_grp_num group-number string and varies by SNAPSHOT, not by plan), and 'version' is a CMS record version that is plan-specific and FD-determined — it is NOT part of the grain despite the profiler testing it.
  6. 6limit_period_code and benefit_amount_period_code (which the profiler tried as grain keys) are 100% null here — they are not keys and were red herrings. The minimal verified grain is just (contract_id, plan_id, segment_id, report_year, quarter).

Columns (50)

ColumnTypeMeaning
contract_idstringCMS MA contract ID (H-number, e.g. H1651). Part of the grain. 3 distinct in this build (H1651, H5256, H5264).
plan_idstringPlan ID within the contract (e.g. '001','008'). Part of the grain. 13 distinct values; the (contract,plan,segment) plan identity has 19 distinct values.
segment_idstringPBP plan segment ID. Part of the grain. Always '0' here (no segmented plans materialized).
versiondoubleRaw PBP record version from the CMS source file (3 or 4 in 2024; 1 or 2 in 2025/2026). It is functionally determined by (plan, snapshot) — 0 plan-snapshots have >1 version — so it is NOT part of the grain and is plan-specific (e.g. H5264 is always v4 in 2024). Do not treat it as a build/ETL version.
report_yeardoublePBP contract/benefit year (double: 2024.0/2025.0/2026.0). Part of the grain. View is filtered to report_year >= 2024 (DDL: BETWEEN 2024 AND 9999), even though silver has 2017+.
quarterdoubleCMS publication quarter of the snapshot (1.0/3.0/4.0). Part of the grain. This is the snapshot/republish quarter, NOT a benefit-period quarter.
benefit_categorystringConstant literal 'supplemental_other' for all rows — the dimension this view represents. Hardcoded in the view (CAST('supplemental_other')). Not a discriminator.
cost_share_stringstringIntended human-readable cost-share text. HARDCODED NULL in the view definition — 100% null, carries no data in this build.
copay_amountdoubleIntended copay dollar amount. HARDCODED NULL (CAST(null AS double)) — 100% null. The real B-20 copay min/max exist in the silver source (pbp_b20_b_min_copay / pbp_b20_b_copay_max) but are NOT surfaced here.
coinsurance_pctdoubleIntended coinsurance percent. HARDCODED NULL — 100% null. Real B-20 coinsurance pct (pbp_b20_coins_mc_pct) is not surfaced.
limit_textstringIntended benefit-limit description. HARDCODED NULL — 100% null.
auth_requiredbooleanREAL DATA. Whether prior authorization is required, decoded from silver pbp_b20_auth_yn (Y/1/T -> true, N/2/F -> false). Populated for all 88 rows; all are FALSE in this build (no nulls observed).
referral_requiredbooleanIntended referral-required flag. HARDCODED NULL (CAST(null AS boolean)) — 100% null.
network_typevarchar(10)Constant literal 'in_network' for all rows. Hardcoded; not a discriminator (no out-of-network rows in this view).
max_oop_appliesbooleanIntended 'counts toward MOOP' flag. HARDCODED NULL — 100% null. (Distinct from has_max_enrollee_oop, which IS real.)
limit_quantitydoubleIntended numeric benefit limit. HARDCODED NULL — 100% null.
limit_unitstringIntended unit for limit_quantity. HARDCODED NULL — 100% null.
limit_period_codestringIntended limit period code. HARDCODED NULL — 100% null. (Profiler tested it as a candidate key; it is null for every row and carries nothing.)
limit_period_labelstringIntended limit period label. HARDCODED NULL — 100% null.
limit_quantity_per_yeardoubleIntended annualized limit quantity. HARDCODED NULL — 100% null.
benefit_amountdoubleIntended benefit dollar value/allowance. HARDCODED NULL — 100% null.
benefit_amount_kindstringIntended classification of benefit_amount (allowance/cap/etc). HARDCODED NULL — 100% null.
benefit_amount_period_codestringIntended period code for benefit_amount. HARDCODED NULL — 100% null.
benefit_amount_period_labelstringIntended period label for benefit_amount. HARDCODED NULL — 100% null.
benefit_amount_annualizeddoubleIntended annualized benefit amount. HARDCODED NULL — 100% null.
benefit_amount_pmpmdoubleIntended per-member-per-month benefit amount. HARDCODED NULL — 100% null.
normalization_statusstringIntended normalization status. HARDCODED NULL — 100% null.
normalization_basisstringIntended normalization basis. HARDCODED NULL — 100% null.
aggregation_policystringIntended aggregation policy. HARDCODED NULL — 100% null.
offered_statusvarchar(15)Constant 'offered' for all rows. The view computes CASE WHEN true THEN 'offered' (literally always true), so it never indicates 'not_offered'. Treat every row as an offered B-20 benefit; absence of a plan = not offered.
numeric_amount_observabilityvarchar(31)Constant 'offered_without_numeric_amounts' for all 88 rows. Because the numeric inputs are hardcoded null, the CASE always lands here. This is the honest self-description: the benefit is flagged offered but no dollar/percent amounts are captured in this view.
null_amount_reasonvarchar(30)Constant 'unknown_requires_crosswalk' for all rows (CASE over null inputs always collapses here). Means: to get actual amounts you must crosswalk to the silver B-20 fields or other sources.
annualization_policyvarchar(17)Constant 'not_numeric' for all rows (no numeric amount to annualize). Derived over null inputs.
combined_limit_policyvarchar(29)Constant 'none_detected' for all rows. Derived over null inputs; does not actually detect combined/shared limits in this build.
consumer_document_reconciliation_statusvarchar(11)Constant 'not_checked' for all rows. Hardcoded; indicates no reconciliation against consumer-facing documents (MPF/SB) was performed.
confidence_tiervarchar(23)Constant 'source_faithful' for all rows. Because reconciliation_status='not_checked', the CASE always yields 'source_faithful' (i.e. values reflect the raw CMS source, not cross-document-verified).
benefit_group_countstringREAL DATA but mislabeled — it is the raw silver field pbp_b20_bendesc_grp_num (benefit-description group number), a string. Empty string for all 2024 snapshots; '2' for all 2025/2026 snapshots. Varies by SNAPSHOT, not by plan; do not read it as a meaningful per-plan count.
cost_share_attestation_textstringREAL DATA from silver pbp_b20_cost_share_attest. Constant '1' across all 88 rows (the CMS attestation indicator, not free text).
has_coinsurancebooleanREAL DATA. Decoded from silver pbp_b20_coins_mc_yn (Y/N flag for whether the benefit has coinsurance). TRUE for only 2 rows (H5264 plans 002 & 005, 2026); false otherwise. NOTE: even when true, coinsurance_pct is still null.
has_copaybooleanREAL DATA. Decoded from silver pbp_b20_copay_mc_yn. TRUE for only 2 rows (H5264 002 & 005, 2026); false otherwise. When true, copay_amount is still null.
has_deductiblebooleanREAL DATA. Decoded from silver pbp_b20_ded_yn. FALSE/0 for all 88 rows in this build.
has_max_enrollee_oopbooleanREAL DATA. Decoded from silver pbp_b20_maxenr_yn (benefit has a max-enrollee-OOP). TRUE for only 1 row (H5264 005, 2026); false otherwise. Distinct from max_oop_applies (which is hardcoded null).
supplemental_drugs_offeredboolean
supplemental_drugs_plan_terms_textstring
supplemental_other_sub_benefitstringConstant 'other_supplemental' for all rows. Hardcoded sub-benefit label; the B-20 catch-all has no finer sub-type breakdown here.
source_pbp_sectionvarchar(3)Constant 'B20' for all rows. Identifies the CMS PBP source section (Section B-20 = other/additional supplemental services).
source_silver_tablevarchar(31)Constant 'medicare_silver.pbp_section_b20' — the upstream silver table feeding this view. That silver table holds the richer raw amount fields not surfaced here.
lmi_authoritiesstringConstant URL to the CMS/LMI 'CY 2026 PBP Service Category Descriptions' PDF (provenance/definition reference). Same value for every row.
source_urlstringREAL provenance. The exact CMS PBP zip the snapshot came from (e.g. pbp-benefits-2024-quarter-1.zip, pbp-benefits-2025.zip). One distinct value per (report_year, quarter) snapshot.
sha256_content_hashstringREAL provenance. SHA-256 of the source content for that snapshot; 5 distinct values = one per snapshot. Use with source_url to pin lineage.

Query it

describe_data_source(source_fqn="medicare_semantic.vw_pbp_supplemental_other")     # the card, live
query_substrate(sql="SELECT * FROM medicare_semantic.vw_pbp_supplemental_other WHERE contract_id = '<value>' AND plan_id = '<value>' AND segment_id = '<value>' AND report_year = '<value>' AND quarter = '<value>' LIMIT 100")
ItemValue
Typed tools that read itget_pbp_benefit
Identity keycontract_id,plan_id,segment_id
Joinhow_to_join(source_fqn="medicare_semantic.vw_pbp_supplemental_other")
Raw doorAthena (read-only via query_substrate): medicare_semantic.vw_pbp_supplemental_other
NoteCleaned PBP reasoning surface (categories/supplemental_other/contract.yaml); raw is pbp_section_*.

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