Medicare Advantage, Part D, Medicaid

MA pbp section b11 dme prosth orth sup

medicare_silver.pbp_section_b11_dme_prosth_orth_sup·partial·silver·annual·Medicare Advantage Plan Benefit Packages (PBP)
Rows
N/A
Columns
200
History
2001 (report_year 2001 / effective_period_start 2001-01-01) to 2026 (report_year 2026 / effective_period_start 2026-01-01)
Card
yesgrain, traps, filters
Typed tools
1

What it is

  1. 1CMS Plan Benefit Package (PBP) Section B-11 extract: the member cost-sharing DESIGN (coinsurance %, copays, deductibles, out-of-pocket maximums, prior-authorization/referral rules) that each Medicare Advantage / Part C plan sets for Durable Medical Equipment (B-11a), Prosthetics/Orthotics (B-11b), and Medical Supplies (B-11c).
  2. 2It is the benefit-design layer (what the plan charges the enrollee), sourced from CMS PBP Public Use Files, for benchmarking MA DME/prosthetic cost-share across plans and years.

Grain

KeyGrain
contract_idplan_idsegment_idreport_yearquarter
  1. 1One row per Medicare Advantage / Part C plan benefit package, per PBP report_year, per within-year CMS re-release quarter.
  2. 2The MINIMAL verified-unique key is (contract_id, plan_id, segment_id, report_year, quarter) = exactly 201,488 distinct = the full row count. report_year alone is NOT enough (only 114,175 distinct) because CMS republished the PBP PUF up to 4 times within some years (2018-2020, 2022-2024 have quarters 1-4); segment_id is load-bearing (dropping it gives 191,793, since 5,295 plan-years are split into multiple geographic segments).
  3. 3This is plan-level Part C cost-share DESIGN for the Durable Medical Equipment / Prosthetics / Orthotics / Medical Supplies benefit (PBP Section B-11), not a claims or rate table.

How to read it

  1. 1"What in-network coinsurance % do Medicare Advantage plans charge for DME in 2026?" -> SELECT pbp_b11a_coins_pct_mc, count(*) FROM medicare_silver.pbp_section_b11_dme_prosth_orth_sup WHERE report_year=2026 AND quarter=1 AND pbp_b11a_coins_yn='1' GROUP BY 1 ORDER BY 2 DESC.
  2. 2This returns the distribution of DME coinsurance rates across plans; the dominant value is 20.0% (the Medicare standard), with a long tail of 0% (zero-cost-share plans), 10/15/30%, etc.
  3. 3Always pin report_year AND quarter to a single snapshot.

Traps

  1. 1NOT a rate/price table. This is plan benefit DESIGN - what the MA plan charges the ENROLLEE for DME (coinsurance %, copays, deductibles), sourced from CMS PBP PUFs. It contains no provider rates, no claims, no allowed amounts. To get the commercial-to-Medicare cost story you join plan design here to actual DME fee schedules elsewhere.
  2. 2GRAIN TRAP: the profiler reports an 18-column superset key (adds maxplan/maxenr benefit-value columns). The TRUE minimal grain is just (contract_id, plan_id, segment_id, report_year, quarter) = 201,488 = row count. report_year alone is NOT unique (114,175) and (contract,plan,seg,effective_period_start) is NOT unique - you MUST include quarter because CMS republished the PBP PUF up to 4x within 2018-2020 & 2022-2024.
  3. 3DEPRECATED COLUMN FAMILY: pbp_b11_* (no a/b/c letter) is populated ONLY in report_year 2001 (742 rows) and is 100% NULL for 2002+. Querying it for modern DME cost-share returns nothing. Use pbp_b11a_* (DME), pbp_b11b_* (prosthetics/orthotics), pbp_b11c_* (medical supplies), which are populated 2002-2026.
  4. 4NO is_current column and NO snapshot-dedup needed: the natural key already yields one row each, so do NOT add a row_number()/latest filter. But quarter is a RE-RELEASE axis, not coverage-quarter - if you want the canonical annual benefit pin quarter=1 (and the latest cms_vintage_sequence if a year was republished), otherwise a single plan-year can be counted 2-4 times.
  5. 5NULLS CARRY MEANING and yn convention is CMS-style: '1'=Yes, '2'=No (strings), NULL=not applicable / not separately captured for that vintage (e.g. pbp_b11a_auth_yn is NULL for 62K older rows even though the plan had an auth rule encoded in the 5-char pbp_b11a_auth string). Treat '2' as an explicit No, not as missing; treat NULL as unknown/legacy.
  6. 6segment_id is part of the grain and must not be dropped: 5,295 plan-years are split into multiple geographic segments with different DME benefits. Most rows are segment '0' (single segment) but multi-segment plans ('1'..'N') and empty '' (2001-era) both occur.

Columns (200)

ColumnTypeMeaning
contract_idstringCMS MA/Part-C contract id (e.g. H0104). 1,972 distinct. Part of grain. Pairs with plan_id.
plan_idstring3-char plan id within the contract (e.g. '001','005'). 656 distinct. Part of grain.
segment_idstringPlan benefit segment, for plans whose benefits vary by geographic segment. Values '0' (single segment, 181K rows, the norm), '' empty (mostly 2001-era), '1'..'N' for multi-segment plans. LOAD-BEARING in grain: 5,295 plan-years carry >1 segment. Do not drop it.
versiondoubleCMS PBP/bid version number (0-27, double). A snapshot revision indicator, fully determined by the grain (NOT an extra key axis). High versions are rare (version>=10 < 1% of rows).
report_yeardoublePBP contract/benefit year (2001-2026). The primary time axis. Equals year(effective_period_start). NOT unique per plan by itself - see quarter.
quarterdoubleWithin-year CMS RE-RELEASE quarter (1-4), NOT a calendar quarter of coverage. Most years are quarter=1 only; 2018-2020 & 2022-2024 were republished mid-year so carry quarters 2/3/4. A plan-year can appear up to 4 times, once per released quarter. Part of grain - required for uniqueness.
bid_idstringCMS bid identifier. NULL for older years (2001-era samples show null); present in recent files. Not required for grain uniqueness (grain holds without it).
orgtypestringMA organization type code. '01' dominates (177K, local CCP/HMO-PPO); '08','04','11','06','05' are other org types (PFFS, MSA, cost, regional, etc.). String code, CMS PBP codebook.
pbp_a_ben_covstringPlan benefit-coverage indicator from Section A. '1'=standard (196K), '2'=alternative (4K), NULL (342, the 2001/no-URL rows). Carries meaning when null (legacy rows).
pbp_a_plan_typestringPlan type code (string): '01' local HMO (101K), '04' local PPO (56K), '02' (20K), '20' MSA, '09','31','18','48' etc. CMS PBP plan-type codebook. Describes plan structure.
pbp_b11_authstring
pbp_b11_auth_posstring
pbp_b11_coins_cov__posstring
pbp_b11_coins_cov_mcstring
pbp_b11_coins_pct_discdouble
pbp_b11_coins_pct_mcdouble
pbp_b11_coins_pct_mcmaxdouble
pbp_b11_coins_pct_posdouble
pbp_b11_coins_pct_prpdisc_posdouble
pbp_b11_coins_pctmax_posdouble
pbp_b11_coins_yesnostring
pbp_b11_coins_yesno_posstring
pbp_b11_copay_amt_posdouble
pbp_b11_copay_amtmax_posdouble
pbp_b11_copay_mc_amtdouble
pbp_b11_copay_mcmax_amtdouble
pbp_b11_copay_yesnostring
pbp_b11_copay_yesno_posstring
pbp_b11_ded_amtdouble
pbp_b11_ded_amt_posdouble
pbp_b11_ded_yesnostring
pbp_b11_ded_yesno_posstring
pbp_b11_maxenr_amtdouble
pbp_b11_maxenr_amt_posdouble
pbp_b11_maxenr_perstring
pbp_b11_maxenr_yesnostring
pbp_b11_maxenr_yn_posstring
pbp_b11_maxplan_yesno_posstring
pbp_b11_maxpln_amt_posdouble
pbp_b11_maxpln_cov_posstring
pbp_b11_maxpln_pct_prpdisc_posdouble
pbp_b11_maxpln_per_posstring
pbp_b11a_authstring
pbp_b11a_auth_ynstring
pbp_b11a_coins_cov_mcstring
pbp_b11a_coins_pct_discdouble
pbp_b11a_coins_pct_mcdouble
pbp_b11a_coins_pct_mcmaxdouble
pbp_b11a_coins_ynstring
pbp_b11a_copay_mc_amtdouble
pbp_b11a_copay_mcmax_amtdouble
pbp_b11a_copay_ynstring
pbp_b11a_ded_amtdouble
pbp_b11a_ded_ynstring
pbp_b11a_dme_pref_vend_man_ynstring
pbp_b11a_esrd_coinsdouble
pbp_b11a_esrd_maxamtdouble
pbp_b11a_maxenr_amtdouble
pbp_b11a_maxenr_perstring
pbp_b11a_maxenr_per_dstring
pbp_b11a_maxenr_ynstring
pbp_b11a_mm_add_service_other1string
pbp_b11a_mm_add_service_other2string
pbp_b11a_mm_authstring
pbp_b11a_mm_auth_ynstring
pbp_b11a_mm_coins_dme_maxdouble
pbp_b11a_mm_coins_dme_mindouble
pbp_b11a_mm_coins_other1_maxdouble
pbp_b11a_mm_coins_other1_mindouble
pbp_b11a_mm_coins_other2_maxdouble
pbp_b11a_mm_coins_other2_mindouble
pbp_b11a_mm_coins_servicesstring
pbp_b11a_mm_coins_ynstring
pbp_b11a_mm_copay_dme_maxdouble
pbp_b11a_mm_copay_dme_mindouble
pbp_b11a_mm_copay_other1_maxdouble
pbp_b11a_mm_copay_other1_mindouble
pbp_b11a_mm_copay_other2_maxdouble
pbp_b11a_mm_copay_other2_mindouble
pbp_b11a_mm_copay_servicesstring
pbp_b11a_mm_copay_ynstring
pbp_b11a_mm_maxplan_amtdouble
pbp_b11a_mm_maxplan_perstring
pbp_b11a_mm_maxplan_per_dstring
pbp_b11a_mm_maxplan_ynstring
pbp_b11a_mm_nmc_ynstring
pbp_b11a_mm_refer_ynstring
pbp_b11a_mm_servicesstring
pbp_b11a_pffs_coinsdouble
pbp_b11a_pffs_maxamtdouble
pbp_b11b_authstring
pbp_b11b_auth_posstring
pbp_b11b_auth_ynstring
pbp_b11b_coins_cov__posstring
pbp_b11b_coins_cov_mcstring
pbp_b11b_coins_cov_mcmsstring
pbp_b11b_coins_ehcstring
pbp_b11b_coins_pct_discdouble
pbp_b11b_coins_pct_disc_msdouble
pbp_b11b_coins_pct_mcdouble
pbp_b11b_coins_pct_mcmaxdouble
pbp_b11b_coins_pct_mcms_maxdouble
pbp_b11b_coins_pct_mcms_mindouble
pbp_b11b_coins_pct_posdouble
pbp_b11b_coins_pct_prpdisc_posdouble
pbp_b11b_coins_pctmax_posdouble
pbp_b11b_coins_yesnostring
pbp_b11b_coins_yesno_posstring
pbp_b11b_coins_ynstring
pbp_b11b_copay_amt_posdouble
pbp_b11b_copay_amtmax_posdouble
pbp_b11b_copay_ehcstring
pbp_b11b_copay_mcmax_amtdouble
pbp_b11b_copay_mcmin_amtdouble
pbp_b11b_copay_mcms_max_amtdouble
pbp_b11b_copay_mcms_min_amtdouble
pbp_b11b_copay_yesnostring
pbp_b11b_copay_yesno_posstring
pbp_b11b_copay_ynstring
pbp_b11b_ded_amtdouble
pbp_b11b_ded_amt_posdouble
pbp_b11b_ded_yesnostring
pbp_b11b_ded_yesno_posstring
pbp_b11b_ded_ynstring
pbp_b11b_esrd_coinsdouble
pbp_b11b_esrd_maxamtbdouble
pbp_b11b_maxenr_amtdouble
pbp_b11b_maxenr_amt_posdouble
pbp_b11b_maxenr_cost_typestring
pbp_b11b_maxenr_perstring
pbp_b11b_maxenr_per_dstring
pbp_b11b_maxenr_yesnostring
pbp_b11b_maxenr_ynstring
pbp_b11b_maxenr_yn_posstring
pbp_b11b_maxplan_yesno_posstring
pbp_b11b_maxpln_amt_posdouble
pbp_b11b_maxpln_cov_posstring
pbp_b11b_maxpln_pct_prpdis_posdouble
pbp_b11b_maxpln_per_posstring
pbp_b11b_mm_add_service_other1string
pbp_b11b_mm_authstring
pbp_b11b_mm_auth_ynstring
pbp_b11b_mm_coins_pctdouble
pbp_b11b_mm_coins_ynstring
pbp_b11b_mm_copay_amtdouble
pbp_b11b_mm_copay_ynstring
pbp_b11b_mm_maxplan_amtdouble
pbp_b11b_mm_maxplan_perstring
pbp_b11b_mm_maxplan_per_dstring
pbp_b11b_mm_maxplan_ynstring
pbp_b11b_mm_nmc_ynstring
pbp_b11b_mm_refer_ynstring
pbp_b11b_pffs_coinsdouble
pbp_b11b_pffs_maxamtbdouble
pbp_b11c_authstring
pbp_b11c_auth_ynstring
pbp_b11c_coins_cov_mcstring
pbp_b11c_coins_dtsi_mcmax_pctdouble
pbp_b11c_coins_dtsi_mcmin_pctdouble
pbp_b11c_coins_ehcstring
pbp_b11c_coins_pct_discdouble
pbp_b11c_coins_pct_mcdouble
pbp_b11c_coins_pct_mcmaxdouble
pbp_b11c_coins_pct_mcmindouble
pbp_b11c_coins_ynstring
pbp_b11c_copay_dtsi_mcmax_amtdouble
pbp_b11c_copay_dtsi_mcmin_amtdouble
pbp_b11c_copay_ehcstring
pbp_b11c_copay_mcmax_amtdouble
pbp_b11c_copay_mcmin_amtdouble
pbp_b11c_copay_ynstring
pbp_b11c_ded_amtdouble
pbp_b11c_ded_ynstring
pbp_b11c_dme_limit_manufact_ynstring
pbp_b11c_maxenr_amtdouble
pbp_b11c_maxenr_cost_typestring
pbp_b11c_maxenr_perstring
pbp_b11c_maxenr_per_dstring
pbp_b11c_maxenr_ynstring
observed_perioddateDate the benefit period was observed (= effective_period_start, 2001-01-01 .. 2026-01-01). Provenance date axis.
asserted_atdatePipeline assertion/load date. Exactly TWO values: 2026-05-16 (100,054 rows, parse_revision=1) and 2026-05-20 (101,434 rows, parse_revision=2). These two parse batches partition the table with NO overlap (they loaded different plan-year-quarter snapshots), so this is NOT within-grain re-assertion.
effective_period_startdate
effective_period_enddate
cms_vintage_sequenceintInteger 1-4 that tracks the within-year release ordinal (maps to quarter: 1=Q1...4=Q4 release). NOT a correction/restatement counter.
parse_revisionintParser batch number (1 or 2). 1 -> asserted_at 2026-05-16; 2 -> asserted_at 2026-05-20. Provenance only; not a grain axis.
parser_artifact_hashstring
source_urlstring
sha256_content_hashstring
pbp_b11c3_coins_max_pctdouble
pbp_b11c3_coins_min_pctdouble
pbp_b11c3_copay_max_amtdouble
pbp_b11c3_copay_min_amtdouble
pbp_b11_* (no letter suffix)DEPRECATED 2001-only combined DME layout (pbp_b11_auth, pbp_b11_coins_*, pbp_b11_copay_*, pbp_b11_ded_*, pbp_b11_maxenr_*, pbp_b11_maxpln_*). Populated ONLY in report_year 2001 (742 rows); 100% NULL for 2002+. Do NOT use for modern DME cost-share - use b11a/b/c.
pbp_b11a_* (DME sub-benefit)Durable Medical Equipment cost-share design, populated 2002-2026. Key fields: pbp_b11a_coins_yn (1=Yes/2=No, coinsurance applies), pbp_b11a_coins_pct_mc (in-network DME coinsurance %, dominant 20.0, range 0-50, avg ~17.7 - this is real cost data), pbp_b11a_copay_yn / pbp_b11a_copay_mc_amt (copay $, 0-200), pbp_b11a_ded_yn / pbp_b11a_ded_amt (deductible $, 0-500), pbp_b11a_auth_yn (prior auth: 1=Yes 130K, 2=No 9K, NULL 62K), pbp_b11a_maxenr_amt/_per (max-enrollee OOP cap & period), pbp_b11a_esrd_coins, pbp_b11a_pffs_coins. The b11a_mm_* family = optional supplemental (Medicare-uncovered, non-Medicare-covered) DME/other-item cost-share with min/max coins & copay tiers (mostly NULL).
pbp_b11b_* (Prosthetics/Orthotics sub-benefit)Prosthetics & medical supplies / orthotics cost-share, populated 2002-2026 in lockstep with b11a. Same shape as b11a: coins_yn, coins_pct_mc, copay_*, ded_*, auth_yn, maxenr_*, esrd, plus _ms / _mcms variants (medical-supply split) and b11b_mm_* supplemental tier.
pbp_b11c_* (Medical Supplies sub-benefit)Diabetes/medical supplies cost-share, populated 2002-2026 in lockstep with b11a/b. Fields: coins_yn, coins_pct_mc(/min/max), copay_mc*_amt, ded_yn/amt, auth_yn, dme_limit_manufact_yn (network/manufacturer limit), maxenr_*, plus dtsi (diabetes testing supplies/insulin) min/max coins & copay fields.
*_pos columnsPoint-Of-Service / out-of-network counterparts of the in-network cost-share fields (e.g. pbp_b11a... none; mostly on parent pbp_b11_*_pos and b11b_*_pos). Largely NULL except for plans with an OON benefit. Mirror the in-network fields for the OON side.
*_yn / *_yesnoCMS boolean convention: '1'=Yes, '2'=No (string), NULL=not captured/not applicable for that vintage. Applies to all coins_yn, copay_yn, ded_yn, auth_yn, maxenr_yn, refer_yn flags.
effective_period_start / effective_period_endBenefit-year coverage window, always Jan 1 - Dec 31 of report_year (e.g. 2005-01-01 .. 2005-12-31). Annual. effective_period_start is the canonical time column (26 distinct years).
parser_artifact_hash / sha256_content_hash / source_urlProvenance: source_url is the CMS PBP zip (one per report_year, or per year-quarter for republished years, e.g. pbp-benefits-2024-quarter-4.zip; 40 distinct URLs = 40 snapshots). Hashes pin the extractor build and source-file content.

Query it

describe_data_source(source_fqn="medicare_silver.pbp_section_b11_dme_prosth_orth_sup")     # the card, live
query_substrate(sql="SELECT * FROM medicare_silver.pbp_section_b11_dme_prosth_orth_sup 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
Joinhow_to_join(source_fqn="medicare_silver.pbp_section_b11_dme_prosth_orth_sup")
Raw doorAthena (read-only via query_substrate): medicare_silver.pbp_section_b11_dme_prosth_orth_sup
NoteGrain-governed; live in Glue / query_substrate. Source family pbp_benefits.

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