Medicare Advantage, Part D, Medicaid

MA pbp section b20

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

What it is

  1. 1CMS Plan Benefit Package (PBP) Section B-20, the cost-sharing/benefit design for OUTPATIENT (Medicare Part B) DRUGS in Medicare Advantage / Part C plans.
  2. 2One row encodes what an enrollee pays for Part B-covered outpatient drugs (chemotherapy/radiation, insulin, other Part B drugs) under a specific MA plan: whether prior authorization is required, the coinsurance % and/or copay, deductible, max out-of-pocket, plus supplemental Part C outpatient-drug and Part D home-infusion bundling.
  3. 3Sourced from the quarterly CMS PBP PUF zips.
  4. 4This slice is a small sample (7 contracts, 50 plans) for demo, not the full national MA universe.

Grain

KeyGrain
contract_idplan_idsegment_idreport_yearquarter
  1. 1One row per Medicare Advantage plan segment per quarterly PBP PUF snapshot.
  2. 2The minimal verified unique key is (contract_id, plan_id, segment_id, report_year, quarter) = exactly 463 distinct = 463 rows. bid_id is just contract_id_plan_id_segment_id concatenated, so (bid_id, report_year, quarter) is an equivalent key.
  3. 3The same plan-year benefit is republished across multiple quarterly PUF releases, so the 463 rows collapse to only 215 distinct plan-years (contract×plan×segment×report_year) spread over 19 quarterly snapshots — there is NO is_current flag and NO dedup, so you must pick a snapshot yourself.

How to read it

  1. 1Get the latest-snapshot Part B outpatient-drug cost sharing for each plan in 2024: pick one row per plan from the most recent quarterly PUF, then read the coinsurance. e.g.
  2. 2SELECT contract_id, plan_id, pbp_b20_coins_mc_yn, pbp_b20_coins_mc_pct, pbp_b20_auth_yn FROM pbp_section_b20 WHERE report_year=2024 AND quarter=(SELECT max(quarter) FROM pbp_section_b20 WHERE report_year=2024) — answers 'what do these MA plans charge enrollees (coinsurance %) for Medicare Part B drugs, and do they require prior authorization?' To trend across years, GROUP BY contract_id,plan_id,report_year and take the latest quarter per year to avoid double-counting the republished snapshots.

Traps

  1. 1NO is_current / no dedup, and NO single-version flag. The 463 rows are only 215 distinct plan-years (contract×plan×segment×report_year) republished across 19 quarterly PUF snapshots. Summing or counting rows double-counts plans. To get one row per plan-year, filter to a chosen snapshot (e.g. the max cms_vintage_sequence / latest quarter per report_year) or GROUP to the (contract,plan,segment,report_year) grain.
  2. 2'version' is a TRAP for picking 'latest'. It is the plan's bid Version Number (a per-contract attribute that differs across contracts within the very same snapshot, e.g. v1/v5/v8 all in 2020-Q4), NOT a global data vintage. Use cms_vintage_sequence + quarter for snapshot recency; use asserted_at for nothing data-related (it's just the load date).
  3. 3bid_id, observed_period, and effective_period_start are all redundant restatements of the grain (bid_id = contract_plan_segment; observed_period/effective_period_start = Jan-1 of report_year). pbp_b20_bendesc_grp_num LOOKS like a sub-grain but is NOT — there is exactly one row per plan per snapshot.
  4. 4This table is Medicare Part B / OUTPATIENT DRUGS (chemo, insulin, other Part B drugs administered in a clinical setting) under MA plans — it is NOT Part D pharmacy benefits. For Part D drug tiers/formulary use the pbp_mrx* tables; sibling pbp_section_b15_partb_rx_drugs also covers Part B Rx, so confirm which section the use-case needs. B20 ('Outpatient Drugs') carries the prior-auth, coinsurance (mostly the standard 20%), and supplemental-bundling design.
  5. 5Most fields are NULL by design: deductible amount, copay amounts, MOOP, addl_cost, all grp1-5 supplemental blocks, and the maxplan_* caps are almost entirely empty — the sampled plans price Part B drugs via simple Medicare-covered coinsurance (commonly 20%). A NULL _yn means the question wasn't answered/parsed (10 all-null placeholder rows = plan_type '02'/orgtype '01'); a '2' explicitly means 'No'. coins_mc_ehc is a concatenated bitmask code string ('11','101'), not a numeric value.
  6. 6This is a small SAMPLE (7 contracts / 50 plans), not the national MA universe. Do not treat counts here as population statistics.

Columns (299)

ColumnTypeMeaning
contract_idstringCMS MA contract ID (the 'H number', e.g. H0602). 7 distinct in this sample. Part of grain.
plan_idstring3-char plan identifier within the contract (e.g. '001'). 30 distinct values. Part of grain.
segment_idstringPlan segment ID; always '0' in this sample (1 distinct). A real PBP grain dimension (plans can have service-area segments) so kept in the canonical key even though it adds no cardinality here.
pbp_b20_bendesc_grp_numstringBenefit-description group number for the supplemental (Part C) outpatient-drug benefit. Mostly empty string ''; value '2' on 31 rows. NOT part of the grain — there is always exactly 1 row per plan×snapshot (max rows per cps×year×quarter = 1).
versiondoubleCMS dict 'Version Number' — the plan's BID submission version. A per-plan/per-contract attribute that varies across contracts within a single snapshot (in 2020-Q4: H0602=v1, H4140=v8, H5256=v5). NOT a global data vintage; do not use it to pick 'latest'.
report_yeardoubleContract/benefit year the PBP describes (2018-2026, 9 distinct). Part of grain. Equals YEAR(observed_period)=YEAR(effective_period_start).
quarterdoubleWhich quarterly PUF release (1-4) the row came from. Part of grain. The SAME report_year appears under several quarters (e.g. 2018 has Q2,Q3,Q4), which is what makes 463 rows but only 215 distinct plan-years.
bid_idstringConcatenation contract_id_plan_id_segment_id (e.g. 'H0602_001_0'). Redundant with the three ID columns; (bid_id, report_year, quarter) is an equivalent grain key.
orgtypestringCMS organization-type code: '06' (443+10 rows) and '01' (10 rows). '01' co-occurs with the all-null cost-share placeholder rows.
pbp_a_ben_covstringPart A/plan benefit-coverage indicator ('1' on 453 rows, '2' on 10). From the shared PBP Section-A plan header.
pbp_a_plan_typestringCMS plan-type code: '18' (453 rows) vs '02' (10 rows). The '02'/orgtype-'01' rows are the all-null B20 placeholder records.
pbp_b20_addl_coststringDoes the enrollee pay EXTRA (above coins/copay) for choosing a higher-priced drug when a cheaper one exists? service_category '20(NMC)'=non-Medicare-covered. 1=Yes,2=No. Entirely NULL in data.
pbp_b20_authstringFree-text authorization detail. Entirely NULL in this data.
pbp_b20_auth_ynstringIs prior authorization required for Medicare-covered outpatient (Part B) drugs? 1=Yes, 2=No (CMS YN convention). 77 plans=Yes, 288=No, 10 null.
pbp_b20_b_coins_max_pctdouble
pbp_b20_b_coins_min_pctdouble
pbp_b20_b_copay_maxdouble
pbp_b20_b_min_copaydouble
pbp_b20_bendesc_amostring
pbp_b20_bendesc_ynstring
pbp_b20_chemo_coins_max_pctdoubleMax coinsurance % for Part B Chemotherapy/Radiation drugs. Always 20.0 where present.
pbp_b20_coins_awpd_mc_pctdouble
pbp_b20_coins_awpf_mc_amtdouble
pbp_b20_coins_awpf_mc_amt_maxdouble
pbp_b20_coins_mc_covstring
pbp_b20_coins_mc_ehcstringMulti-select code for WHICH Medicare-covered drug categories carry the coinsurance. Raw concatenated yes/no bitmask string (observed '11' with 20%, '101' with 0%). CMS code legend: position1=Other Part B Drugs, position2=Part B Insulin Drugs, position3=Chemotherapy/Radiation Drugs. Treat as a code string, NOT a number.
pbp_b20_coins_mc_pctdoubleCoinsurance % for Medicare-covered Part B drugs (dict title: min coins for chemo/radiation). Only 2 distinct non-null values: 20.0 (standard Part B, 77 rows) and 0.0 (2 rows). 79 non-null total; NULL when coins_mc_yn=2.
pbp_b20_coins_mc_ynstringIs there enrollee COINSURANCE for Medicare-COVERED Part B drugs? 1=Yes,2=No. Drives whether the coins_mc_* fields are populated.
pbp_b20_coins_mcoacp_mc_amtdouble
pbp_b20_coins_prp_mc_pctdouble
pbp_b20_copay_max_mc_amtdouble
pbp_b20_copay_mc_ehcstring
pbp_b20_copay_mc_ynstring
pbp_b20_copay_min_mc_amtdouble
pbp_b20_cost_share_atteststringCost-share attestation flag. Entirely NULL in this data.
pbp_b20_ded_amtdouble
pbp_b20_ded_cdtstring
pbp_b20_ded_ynstring
pbp_b20_grp1_coins_awp_amt_maxdouble
pbp_b20_grp1_coins_awpd_pctdouble
pbp_b20_grp1_coins_awpf_amtdouble
pbp_b20_grp1_coins_covstring
pbp_b20_grp1_coins_mcoacp_amtdouble
pbp_b20_grp1_coins_pct_drpdouble
pbp_b20_grp1_coins_pct_hmodouble
pbp_b20_grp1_coins_pct_modouble
pbp_b20_grp1_coins_pct_othdouble
pbp_b20_grp1_coins_prp_pctdouble
pbp_b20_grp1_coins_ynstring
pbp_b20_grp1_copay_drp_amtdouble
pbp_b20_grp1_copay_hmo_amtdouble
pbp_b20_grp1_copay_mo_amtdouble
pbp_b20_grp1_copay_oth_amtdouble
pbp_b20_grp1_copay_ynstring
pbp_b20_grp1_drp_daysdouble
pbp_b20_grp1_drug_typesstring
pbp_b20_grp1_hmo_daysdouble
pbp_b20_grp1_labelstring
pbp_b20_grp1_maxplan_amt_1mthdouble
pbp_b20_grp1_maxplan_amt_1yrdouble
pbp_b20_grp1_maxplan_amt_3mthdouble
pbp_b20_grp1_maxplan_amt_6mthdouble
pbp_b20_grp1_maxplan_amt_othdouble
pbp_b20_grp1_maxplan_amt_presdouble
pbp_b20_grp1_maxplan_awpd_pctdouble
pbp_b20_grp1_maxplan_awpf_amtdouble
pbp_b20_grp1_maxplan_covstring
pbp_b20_grp1_maxplan_mcoac_amtdouble
pbp_b20_grp1_maxplan_perstring
pbp_b20_grp1_maxplan_per_dstring
pbp_b20_grp1_maxplan_prp_pctdouble
pbp_b20_grp1_maxplan_ynstring
pbp_b20_grp1_maxpln_awp_amt_mxdouble
pbp_b20_grp1_mo_daysdouble
pbp_b20_grp1_namestring
pbp_b20_grp1_oth_daysdouble
pbp_b20_grp1_placestring
pbp_b20_grp1_place_dstring
pbp_b20_grp2_coins_awp_amt_maxdouble
pbp_b20_grp2_coins_awpd_pctdouble
pbp_b20_grp2_coins_awpf_amtdouble
pbp_b20_grp2_coins_covstring
pbp_b20_grp2_coins_mcoacp_amtdouble
pbp_b20_grp2_coins_pct_drpdouble
pbp_b20_grp2_coins_pct_hmodouble
pbp_b20_grp2_coins_pct_modouble
pbp_b20_grp2_coins_pct_othdouble
pbp_b20_grp2_coins_prp_pctdouble
pbp_b20_grp2_coins_ynstring
pbp_b20_grp2_copay_drp_amtdouble
pbp_b20_grp2_copay_hmo_amtdouble
pbp_b20_grp2_copay_mo_amtdouble
pbp_b20_grp2_copay_oth_amtdouble
pbp_b20_grp2_copay_ynstring
pbp_b20_grp2_drp_daysdouble
pbp_b20_grp2_drug_typesstring
pbp_b20_grp2_hmo_daysdouble
pbp_b20_grp2_labelstring
pbp_b20_grp2_maxplan_amt_1mthdouble
pbp_b20_grp2_maxplan_amt_1yrdouble
pbp_b20_grp2_maxplan_amt_3mthdouble
pbp_b20_grp2_maxplan_amt_6mthdouble
pbp_b20_grp2_maxplan_amt_othdouble
pbp_b20_grp2_maxplan_amt_presdouble
pbp_b20_grp2_maxplan_awpd_pctdouble
pbp_b20_grp2_maxplan_awpf_amtdouble
pbp_b20_grp2_maxplan_covstring
pbp_b20_grp2_maxplan_mcoac_amtdouble
pbp_b20_grp2_maxplan_perstring
pbp_b20_grp2_maxplan_per_dstring
pbp_b20_grp2_maxplan_prp_pctdouble
pbp_b20_grp2_maxplan_ynstring
pbp_b20_grp2_maxpln_awp_amt_mxdouble
pbp_b20_grp2_mo_daysdouble
pbp_b20_grp2_namestring
pbp_b20_grp2_oth_daysdouble
pbp_b20_grp2_placestring
pbp_b20_grp2_place_dstring
pbp_b20_grp3_coins_awp_amt_maxdouble
pbp_b20_grp3_coins_awpd_pctdouble
pbp_b20_grp3_coins_awpf_amtdouble
pbp_b20_grp3_coins_covstring
pbp_b20_grp3_coins_mcoacp_amtdouble
pbp_b20_grp3_coins_pct_drpdouble
pbp_b20_grp3_coins_pct_hmodouble
pbp_b20_grp3_coins_pct_modouble
pbp_b20_grp3_coins_pct_othdouble
pbp_b20_grp3_coins_prp_pctdouble
pbp_b20_grp3_coins_ynstring
pbp_b20_grp3_copay_drp_amtdouble
pbp_b20_grp3_copay_hmo_amtdouble
pbp_b20_grp3_copay_mo_amtdouble
pbp_b20_grp3_copay_oth_amtdouble
pbp_b20_grp3_copay_ynstring
pbp_b20_grp3_drp_daysdouble
pbp_b20_grp3_drug_typesstring
pbp_b20_grp3_hmo_daysdouble
pbp_b20_grp3_labelstring
pbp_b20_grp3_maxplan_amt_1mthdouble
pbp_b20_grp3_maxplan_amt_1yrdouble
pbp_b20_grp3_maxplan_amt_3mthdouble
pbp_b20_grp3_maxplan_amt_6mthdouble
pbp_b20_grp3_maxplan_amt_othdouble
pbp_b20_grp3_maxplan_amt_presdouble
pbp_b20_grp3_maxplan_awpd_pctdouble
pbp_b20_grp3_maxplan_awpf_amtdouble
pbp_b20_grp3_maxplan_covstring
pbp_b20_grp3_maxplan_mcoac_amtdouble
pbp_b20_grp3_maxplan_perstring
pbp_b20_grp3_maxplan_per_dstring
pbp_b20_grp3_maxplan_prp_pctdouble
pbp_b20_grp3_maxplan_ynstring
pbp_b20_grp3_maxpln_awp_amt_mxdouble
pbp_b20_grp3_mo_daysdouble
pbp_b20_grp3_namestring
pbp_b20_grp3_oth_daysdouble
pbp_b20_grp3_placestring
pbp_b20_grp3_place_dstring
pbp_b20_grp4_coins_awp_amt_maxdouble
pbp_b20_grp4_coins_awpd_pctdouble
pbp_b20_grp4_coins_awpf_amtdouble
pbp_b20_grp4_coins_covstring
pbp_b20_grp4_coins_mcoacp_amtdouble
pbp_b20_grp4_coins_pct_drpdouble
pbp_b20_grp4_coins_pct_hmodouble
pbp_b20_grp4_coins_pct_modouble
pbp_b20_grp4_coins_pct_othdouble
pbp_b20_grp4_coins_prp_pctdouble
pbp_b20_grp4_coins_ynstring
pbp_b20_grp4_copay_drp_amtdouble
pbp_b20_grp4_copay_hmo_amtdouble
pbp_b20_grp4_copay_mo_amtdouble
pbp_b20_grp4_copay_oth_amtdouble
pbp_b20_grp4_copay_ynstring
pbp_b20_grp4_drp_daysdouble
pbp_b20_grp4_drug_typesstring
pbp_b20_grp4_hmo_daysdouble
pbp_b20_grp4_labelstring
pbp_b20_grp4_maxplan_amt_1mthdouble
pbp_b20_grp4_maxplan_amt_1yrdouble
pbp_b20_grp4_maxplan_amt_3mthdouble
pbp_b20_grp4_maxplan_amt_6mthdouble
pbp_b20_grp4_maxplan_amt_othdouble
pbp_b20_grp4_maxplan_amt_presdouble
pbp_b20_grp4_maxplan_awpd_pctdouble
pbp_b20_grp4_maxplan_awpf_amtdouble
pbp_b20_grp4_maxplan_covstring
pbp_b20_grp4_maxplan_mcoac_amtdouble
pbp_b20_grp4_maxplan_perstring
pbp_b20_grp4_maxplan_per_dstring
pbp_b20_grp4_maxplan_prp_pctdouble
pbp_b20_grp4_maxplan_ynstring
pbp_b20_grp4_maxpln_awp_amt_mxdouble
pbp_b20_grp4_mo_daysdouble
pbp_b20_grp4_namestring
pbp_b20_grp4_oth_daysdouble
pbp_b20_grp4_placestring
pbp_b20_grp4_place_dstring
pbp_b20_grp5_coins_awp_amt_maxdouble
pbp_b20_grp5_coins_awpd_pctdouble
pbp_b20_grp5_coins_awpf_amtdouble
pbp_b20_grp5_coins_covstring
pbp_b20_grp5_coins_mcoacp_amtdouble
pbp_b20_grp5_coins_pct_drpdouble
pbp_b20_grp5_coins_pct_hmodouble
pbp_b20_grp5_coins_pct_modouble
pbp_b20_grp5_coins_pct_othdouble
pbp_b20_grp5_coins_prp_pctdouble
pbp_b20_grp5_coins_ynstring
pbp_b20_grp5_copay_drp_amtdouble
pbp_b20_grp5_copay_hmo_amtdouble
pbp_b20_grp5_copay_mo_amtdouble
pbp_b20_grp5_copay_oth_amtdouble
pbp_b20_grp5_copay_ynstring
pbp_b20_grp5_drp_daysdouble
pbp_b20_grp5_drug_typesstring
pbp_b20_grp5_hmo_daysdouble
pbp_b20_grp5_labelstring
pbp_b20_grp5_maxplan_amt_1mthdouble
pbp_b20_grp5_maxplan_amt_1yrdouble
pbp_b20_grp5_maxplan_amt_3mthdouble
pbp_b20_grp5_maxplan_amt_6mthdouble
pbp_b20_grp5_maxplan_amt_othdouble
pbp_b20_grp5_maxplan_amt_presdouble
pbp_b20_grp5_maxplan_awpd_pctdouble
pbp_b20_grp5_maxplan_awpf_amtdouble
pbp_b20_grp5_maxplan_covstring
pbp_b20_grp5_maxplan_mcoac_amtdouble
pbp_b20_grp5_maxplan_perstring
pbp_b20_grp5_maxplan_per_dstring
pbp_b20_grp5_maxplan_prp_pctdouble
pbp_b20_grp5_maxplan_ynstring
pbp_b20_grp5_maxpln_awp_amt_mxdouble
pbp_b20_grp5_mo_daysdouble
pbp_b20_grp5_namestring
pbp_b20_grp5_oth_daysdouble
pbp_b20_grp5_placestring
pbp_b20_grp5_place_dstring
pbp_b20_hi_coins_pct_maxdouble
pbp_b20_hi_coins_pct_mindouble
pbp_b20_hi_coins_ynstring
pbp_b20_hi_copay_amt_maxdouble
pbp_b20_hi_copay_amt_mindouble
pbp_b20_hi_copay_ynstring
pbp_b20_hi_ynstring
pbp_b20_insulin_coins_max_pctdouble
pbp_b20_insulin_coins_min_pctdouble
pbp_b20_insulin_copay_maxdouble
pbp_b20_insulin_copay_mindouble
pbp_b20_maxenr_amtdouble
pbp_b20_maxenr_cdtstring
pbp_b20_maxenr_perstring
pbp_b20_maxenr_ynstring
pbp_b20_maxplan_amt_1mthdouble
pbp_b20_maxplan_amt_1yrdouble
pbp_b20_maxplan_amt_3mthdouble
pbp_b20_maxplan_amt_6mthdouble
pbp_b20_maxplan_amt_cdt_1mthdouble
pbp_b20_maxplan_amt_cdt_1yrdouble
pbp_b20_maxplan_amt_cdt_3mthdouble
pbp_b20_maxplan_amt_cdt_6mthdouble
pbp_b20_maxplan_amt_cdt_othdouble
pbp_b20_maxplan_amt_othdouble
pbp_b20_maxplan_awpd_cdt_pctdouble
pbp_b20_maxplan_awpf_cdt_amtdouble
pbp_b20_maxplan_cdtstring
pbp_b20_maxplan_cov_cdtstring
pbp_b20_maxplan_grp_unlm_ynstring
pbp_b20_maxplan_grp_waivedstring
pbp_b20_maxplan_mcoacp_cdt_amtdouble
pbp_b20_maxplan_net_copay_ynstring
pbp_b20_maxplan_perstring
pbp_b20_maxplan_per_cdtstring
pbp_b20_maxplan_per_cdt_dstring
pbp_b20_maxplan_per_dstring
pbp_b20_maxplan_prp_cdt_pctdouble
pbp_b20_maxplan_typesstring
pbp_b20_maxplan_unused_ynstring
pbp_b20_maxplan_ynstring
pbp_b20_maxpln_awpf_cdt_amt_mxdouble
observed_perioddateProvenance: Jan-1 of report_year (the benefit-year start). Redundant with report_year as the year-grain; equals effective_period_start here.
asserted_atdateProvenance: pipeline load/assert date (2026-05-16 or 2026-05-20). Bookkeeping only, NOT data-meaningful; do not use for recency.
effective_period_startdate
effective_period_enddate
cms_vintage_sequenceintProvenance: the Nth PUF release within the report_year (1..4, roughly tracking the quarter). The real 'which snapshot' lineage marker — pair with (report_year,quarter) to choose one snapshot per plan-year.
parse_revisionintProvenance: internal parser revision (1 or 2 here).
parser_artifact_hashstringProvenance: hash of the parser artifact that produced the row.
source_urlstringProvenance: the exact CMS PBP zip the row was extracted from (e.g. .../pbp-benefits-2019-q4.zip). Lets you trace each snapshot to its CMS release.
sha256_content_hashstringProvenance: SHA-256 of the source file content for integrity/dedup.
pbp_b20_b_coins_min_pct / pbp_b20_b_coins_max_pctMin/max coinsurance % for 'other' Medicare Part B drugs. Range 0-20%.
pbp_b20_insulin_coins_min_pct / _max_pct / pbp_b20_insulin_copay_min / _maxCost-sharing for Medicare Part B INSULIN drugs (max coinsurance % / copay $). Largely null in this slice.
pbp_b20_copay_mc_yn / pbp_b20_copay_min_mc_amt / pbp_b20_copay_max_mc_amt / pbp_b20_b_min_copay / pbp_b20_b_copay_maxCOPAY (flat-dollar) alternative to coinsurance for Medicare-covered / other Part B drugs. copay_mc_yn 1=Yes/2=No; copay amounts are 0 non-null in this slice (this data is coinsurance-based, not copay-based).
pbp_b20_ded_yn / pbp_b20_ded_amt / pbp_b20_ded_cdtEnrollee deductible for outpatient drugs: flag (1=Yes,2=No, mostly No), dollar amount (entirely NULL here), and combined-deductible-type code.
pbp_b20_maxenr_yn / pbp_b20_maxenr_amt / pbp_b20_maxenr_per / pbp_b20_maxenr_cdtMaximum enrollee out-of-pocket for Part B drugs: flag (1=Yes,2=No), amount (only 1 non-null = 0.0), period, and CDT code. Almost always 'No' in this slice.
pbp_b20_bendesc_yn / pbp_b20_bendesc_amoDoes the plan provide outpatient drugs as a SUPPLEMENTAL (non-Medicare-covered) benefit under Part C? 1=Yes,2=No. bendesc_amo (amount) entirely NULL.
pbp_b20_hi_yn / pbp_b20_hi_coins_* / pbp_b20_hi_copay_*HOME INFUSION: does the plan bundle Part D home-infusion drugs as a supplemental benefit (1=Yes,2=No), and its coinsurance %/copay $ min-max. Mostly 'No'/null.
pbp_b20_grp1..grp5_* (coins/copay/maxplan/drug_types/days/label/name/place)Up to 5 supplemental-benefit GROUPS, each a wide repeated block describing a Part-C drug benefit group's cost sharing: coinsurance % (by HMO/MO/DRP/OTH delivery channel), copay $ by channel, day limits, drug types covered, plan-maximum benefit caps (1mth/3mth/6mth/1yr/pres/oth), labels and place-of-service. Almost entirely NULL in this sample (the sampled plans use only Medicare-covered cost sharing, no supplemental drug groups).
pbp_b20_maxplan_* and pbp_b20_maxplan_*_cdt (amt_1mth/3mth/6mth/1yr/oth, per, types, cov, grp_unlm_yn, grp_waived, net_copay_yn, unused_yn, prp_pct, awpd/awpf)Plan-level maximum-benefit (benefit cap) parameters for the supplemental outpatient-drug benefit, including combined-deductible-type ('_cdt') variants and AWP-discount/MCOAC pricing fields. Almost all NULL in this slice.
effective_period_start / effective_period_endProvenance: benefit-year window, Jan-1 to Dec-31 of report_year. effective_period_start is the profiler's temporal column (annual).

Query it

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

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