Medicare Advantage, Part D, Medicaid

MA pbp section b1a inpat hosp

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

What it is

  1. 1A CMS Plan Benefit Package (PBP) Section B-1a mirror table giving the member cost-sharing design for the INPATIENT HOSPITAL (acute) benefit of every Medicare Advantage plan: copays/coinsurance/deductible by day-interval and tier, prior-auth/referral rules, and benefit limits.
  2. 2It is the authoritative source for 'what does an MA plan charge a member for an inpatient stay' and underpins MA benefit benchmarking / plan-design comparison for the cost-data catalog.

Grain

KeyGrain
bid_idreport_yearquarter
  1. 1One row per Medicare Advantage plan-segment per quarterly CMS PBP landscape release, for the inpatient-hospital (acute) benefit.
  2. 2The MINIMAL verified key is (bid_id, report_year, quarter) — 179,479 distinct = exactly the row_count, 0 duplicate rows.
  3. 3Equivalent keys: bid_id + effective_period_start + quarter, or bid_id + observed_period + quarter (report_year ≡ effective_period_start ≡ observed_period).
  4. 4`version` is NOT part of the grain (exactly one version per snapshot).
  5. 5The profiler's 25-column key is a bloated superset (it mistakenly swept the maxplan benefit columns in because their names contain 'plan').

How to read it

  1. 1To get one current-design row per plan for a plan year, pick the latest quarter per plan: e.g.
  2. 2`SELECT bid_id, pbp_a_plan_type, pbp_b1a_copay_mcs_amt_int1_t1, pbp_b1a_copay_mcs_bgnd_int1_t1, pbp_b1a_copay_mcs_endd_int1_t1 FROM medicare_silver.pbp_section_b1a_inpat_hosp WHERE report_year=2026 AND quarter=(SELECT max(quarter) FROM medicare_silver.pbp_section_b1a_inpat_hosp WHERE report_year=2026)`.
  3. 3Answers: 'what is the per-day inpatient copay (and for which days) for each MA plan in 2026?' To read a plan's day-tiered copay, walk int1->int2->int3 with their bgnd/endd day boundaries (e.g. $375/day for days 1-7, then $0).

Traps

  1. 1NO is_current / latest flag exists. The table keeps EVERY quarterly snapshot, so there are multiple rows per plan-year (179,479 rows vs only 92,166 bid x year combos vs 19,819 distinct plans). A query like `WHERE report_year=2023` returns up to 4 rows per plan and will double/quadruple-count. ALWAYS filter to one quarter (e.g. quarter=max per year, or cms_vintage_sequence=max per year).
  2. 2The grain is (bid_id, report_year, quarter) -- NOT bid_id alone, NOT bid_id+report_year, and `version` is NOT part of it. The profiler reported a 25-column superset key only because the inpatient `maxplan` benefit columns contain the substring 'plan'; those are benefit attributes, not identifiers.
  3. 3Two parallel copay encodings: a plan populates EITHER the flat per-tier copay (pbp_b1a_copay_mcs_amt_t1) when cost does not vary by day, OR the per-day-interval set (pbp_b1a_copay_mcs_amt_int1_t1 + bgnd/endd day bounds) when it does. Reading only one family misses ~half the plans (in 2026Q1: 5,108 use flat _t1, 4,046 use _int1_t1). 'mcs' = Medicare-Covered Stay; that is the inpatient field -- not _ad (additional days), _up (uncovered), _lrd (lifetime reserve), or _nmcs.
  4. 4Coinsurance (pbp_b1a_coins_mcs_pct) and deductible (pbp_b1a_ded_amt) are essentially UNUSED for MA inpatient (0 populated in 2026Q1) -- MA inpatient cost-sharing is copay-based. Empty here means 'not how this benefit is structured', not missing data.
  5. 5The `_bonly` column family (e.g. pbp_b1a_coins_pct_bonly, copay_amt_ps_bonly) is populated ONLY for the ~2% of rows that are Part-B-only plans (pbp_a_ben_cov='2'); it is always null for standard Part-A plans (ben_cov='1'). Use the non-bonly fields for normal plans.
  6. 6asserted_at (2 values), parse_revision, parser_artifact_hash, sha256_content_hash, source_url, cms_vintage_sequence are silver-layer PROVENANCE/load metadata, not business data. asserted_at is the ingest date (May 2026), not a plan date; cms_vintage_sequence resets to 1 each year (it is the quarter-rank within the year, not a global version). effective_period_start/end and observed_period are fully redundant with report_year (Jan 1 / Dec 31 / Jan 1).
  7. 7Early years (2010-2017) have ONLY a Q1 snapshot while 2018+ have several quarters, and some year/quarter combos are absent (e.g. 2020 has Q1,Q2,Q4 but no Q3; 2024 has Q1,Q3,Q4 but no Q2). Do not assume four quarters per year. Within-year benefit drift is tiny though (only 2 of 7,741 plans changed inpatient copay between 2023 Q1 and Q4), so any single quarter is a fair representation of that plan-year's design -- but you must still pick exactly one.

Columns (492)

ColumnTypeMeaning
contract_idstringCMS 5-char MA/MA-PD contract ID (e.g. 'H0028'). 1,680 distinct. First component of bid_id. Joins to other Medicare contract-level tables.
plan_idstring3-char Plan Benefit Package ID within the contract (e.g. '001'). 656 distinct values reused across contracts; NOT unique alone.
segment_idstringPlan segment number as string ('0'..'15'). 92% are '0' (single-segment); >0 means a service-area segment of a regional/PPO plan that varies benefits by sub-area.
versiondoubleCMS bid submission version of this PBP record (1..27; double). The plan's bid can be refiled many times in a year. Exactly ONE version per (bid,year,quarter) snapshot (verified), so it is a carried attribute, NOT part of the grain. Lower mass at high versions.
report_yeardoublePlan/contract year the benefit design applies to (double, 2010..2026). Equivalent to year(effective_period_start) and year(observed_period) (verified identical). Part of the grain.
quarterdoubleWhich quarterly CMS PBP landscape re-release within the plan year (1..4, double). Part of the grain. Early years (2010-2017) have only Q1; 2018+ have multiple quarters. The reason there are ~2.5x more rows than plan-years.
bid_idstringThe plan-segment identifier = contract_id||'_'||plan_id||'_'||segment_id EXACTLY (verified 0 mismatches), e.g. 'H0028_001_0'. 19,819 distinct plans. This is THE plan key; combine with report_year+quarter for the row grain.
orgtypestringCMS contract organization-type code (string): '01'=Local CCP (HMO/PPO, ~90% of rows), '04'=PFFS, '02','05','06','08','11','14'=other org types. Plan-level attribute repeated each snapshot.
pbp_a_ben_covstringPart A/B coverage indicator: '1'=plan covers Part A+B (97.7%), '2'=Part B only (2.1%, has no standard inpatient stay -> uses the _bonly fields), null (288 rows). Gates which cost-share family is populated.
pbp_a_plan_typestringMA plan-type code (string): '01'=HMO (50%), '04'=Local/Regional PPO (29%), '02'=HMO-POS, '20','31','18','09','48' etc. Describes the plan product type.
pbp_b1a_ad_cost_vary_low_tierstring
pbp_b1a_ad_cost_vary_tier_numstring
pbp_b1a_ad_cost_vary_tiers_ynstring
pbp_b1a_authstring
pbp_b1a_auth_bonlystring
pbp_b1a_auth_ynstring
pbp_b1a_auth_yn_bonlystring
pbp_b1a_bendesc_ad_up_nmcsstring
pbp_b1a_bendesc_amo_adstring
pbp_b1a_bendesc_amo_iact_bonlystring
pbp_b1a_bendesc_amo_nmcsstring
pbp_b1a_bendesc_amo_upstring
pbp_b1a_bendesc_amt_addouble
pbp_b1a_bendesc_amt_days_bonlydouble
pbp_b1a_bendesc_lim_adstring
pbp_b1a_bendesc_per_bonlystring
pbp_b1a_bendesc_per_bonly_dstring
pbp_b1a_bendesc_ulim_bonlystring
pbp_b1a_bendesc_ynstring
pbp_b1a_bendesc_yn_bonlystring
pbp_b1a_coins_ad_bgnd_int1_t1double
pbp_b1a_coins_ad_bgnd_int1_t2double
pbp_b1a_coins_ad_bgnd_int1_t3double
pbp_b1a_coins_ad_bgnd_int2_t1double
pbp_b1a_coins_ad_bgnd_int2_t2double
pbp_b1a_coins_ad_bgnd_int2_t3double
pbp_b1a_coins_ad_bgnd_int3_t1double
pbp_b1a_coins_ad_bgnd_int3_t2double
pbp_b1a_coins_ad_bgnd_int3_t3double
pbp_b1a_coins_ad_bgnd_intrvl1double
pbp_b1a_coins_ad_bgnd_intrvl2double
pbp_b1a_coins_ad_bgnd_intrvl3double
pbp_b1a_coins_ad_endd_int1_t1double
pbp_b1a_coins_ad_endd_int1_t2double
pbp_b1a_coins_ad_endd_int1_t3double
pbp_b1a_coins_ad_endd_int2_t1double
pbp_b1a_coins_ad_endd_int2_t2double
pbp_b1a_coins_ad_endd_int2_t3double
pbp_b1a_coins_ad_endd_int3_t1double
pbp_b1a_coins_ad_endd_int3_t2double
pbp_b1a_coins_ad_endd_int3_t3double
pbp_b1a_coins_ad_endd_intrvl1double
pbp_b1a_coins_ad_endd_intrvl2double
pbp_b1a_coins_ad_endd_intrvl3double
pbp_b1a_coins_ad_intrvl_numstring
pbp_b1a_coins_ad_intrvl_num_t1string
pbp_b1a_coins_ad_intrvl_num_t2string
pbp_b1a_coins_ad_intrvl_num_t3string
pbp_b1a_coins_ad_pct_int1_t1double
pbp_b1a_coins_ad_pct_int1_t2double
pbp_b1a_coins_ad_pct_int1_t3double
pbp_b1a_coins_ad_pct_int2_t1double
pbp_b1a_coins_ad_pct_int2_t2double
pbp_b1a_coins_ad_pct_int2_t3double
pbp_b1a_coins_ad_pct_int3_t1double
pbp_b1a_coins_ad_pct_int3_t2double
pbp_b1a_coins_ad_pct_int3_t3double
pbp_b1a_coins_ad_pct_intrvl1double
pbp_b1a_coins_ad_pct_intrvl2double
pbp_b1a_coins_ad_pct_intrvl3double
pbp_b1a_coins_cov_adstring
pbp_b1a_coins_cov_bonlystring
pbp_b1a_coins_cov_lrdstring
pbp_b1a_coins_cov_mcsstring
pbp_b1a_coins_cov_nmcsstring
pbp_b1a_coins_cov_upstring
pbp_b1a_coins_lrd_bgnd_int1_t1double
pbp_b1a_coins_lrd_bgnd_int1_t2double
pbp_b1a_coins_lrd_bgnd_int1_t3double
pbp_b1a_coins_lrd_bgnd_int2_t1double
pbp_b1a_coins_lrd_bgnd_int2_t2double
pbp_b1a_coins_lrd_bgnd_int2_t3double
pbp_b1a_coins_lrd_bgnd_int3_t1double
pbp_b1a_coins_lrd_bgnd_int3_t2double
pbp_b1a_coins_lrd_bgnd_int3_t3double
pbp_b1a_coins_lrd_bgnd_intrvl1double
pbp_b1a_coins_lrd_bgnd_intrvl2double
pbp_b1a_coins_lrd_bgnd_intrvl3double
pbp_b1a_coins_lrd_endd_int1_t1double
pbp_b1a_coins_lrd_endd_int1_t2double
pbp_b1a_coins_lrd_endd_int1_t3double
pbp_b1a_coins_lrd_endd_int2_t1double
pbp_b1a_coins_lrd_endd_int2_t2double
pbp_b1a_coins_lrd_endd_int2_t3double
pbp_b1a_coins_lrd_endd_int3_t1double
pbp_b1a_coins_lrd_endd_int3_t2double
pbp_b1a_coins_lrd_endd_int3_t3double
pbp_b1a_coins_lrd_endd_intrvl1double
pbp_b1a_coins_lrd_endd_intrvl2double
pbp_b1a_coins_lrd_endd_intrvl3double
pbp_b1a_coins_lrd_int_num_t1string
pbp_b1a_coins_lrd_int_num_t2string
pbp_b1a_coins_lrd_int_num_t3string
pbp_b1a_coins_lrd_intrvl_numstring
pbp_b1a_coins_lrd_pct_int1_t1double
pbp_b1a_coins_lrd_pct_int1_t2double
pbp_b1a_coins_lrd_pct_int1_t3double
pbp_b1a_coins_lrd_pct_int2_t1double
pbp_b1a_coins_lrd_pct_int2_t2double
pbp_b1a_coins_lrd_pct_int2_t3double
pbp_b1a_coins_lrd_pct_int3_t1double
pbp_b1a_coins_lrd_pct_int3_t2double
pbp_b1a_coins_lrd_pct_int3_t3double
pbp_b1a_coins_lrd_pct_intrvl1double
pbp_b1a_coins_lrd_pct_intrvl2double
pbp_b1a_coins_lrd_pct_intrvl3double
pbp_b1a_coins_mcs_bgnd_int1_t1double
pbp_b1a_coins_mcs_bgnd_int1_t2double
pbp_b1a_coins_mcs_bgnd_int1_t3double
pbp_b1a_coins_mcs_bgnd_int2_t1double
pbp_b1a_coins_mcs_bgnd_int2_t2double
pbp_b1a_coins_mcs_bgnd_int2_t3double
pbp_b1a_coins_mcs_bgnd_int3_t1double
pbp_b1a_coins_mcs_bgnd_int3_t2double
pbp_b1a_coins_mcs_bgnd_int3_t3double
pbp_b1a_coins_mcs_bgnd_intrvl1double
pbp_b1a_coins_mcs_bgnd_intrvl2double
pbp_b1a_coins_mcs_bgnd_intrvl3double
pbp_b1a_coins_mcs_endd_int1_t1double
pbp_b1a_coins_mcs_endd_int1_t2double
pbp_b1a_coins_mcs_endd_int1_t3double
pbp_b1a_coins_mcs_endd_int2_t1double
pbp_b1a_coins_mcs_endd_int2_t2double
pbp_b1a_coins_mcs_endd_int2_t3double
pbp_b1a_coins_mcs_endd_int3_t1double
pbp_b1a_coins_mcs_endd_int3_t2double
pbp_b1a_coins_mcs_endd_int3_t3double
pbp_b1a_coins_mcs_endd_intrvl1double
pbp_b1a_coins_mcs_endd_intrvl2double
pbp_b1a_coins_mcs_endd_intrvl3double
pbp_b1a_coins_mcs_int_num_t1string
pbp_b1a_coins_mcs_int_num_t2string
pbp_b1a_coins_mcs_int_num_t3string
pbp_b1a_coins_mcs_intrvl_numstring
pbp_b1a_coins_mcs_pctdouble
pbp_b1a_coins_mcs_pct_int1_t1double
pbp_b1a_coins_mcs_pct_int1_t2double
pbp_b1a_coins_mcs_pct_int1_t3double
pbp_b1a_coins_mcs_pct_int2_t1double
pbp_b1a_coins_mcs_pct_int2_t2double
pbp_b1a_coins_mcs_pct_int2_t3double
pbp_b1a_coins_mcs_pct_int3_t1double
pbp_b1a_coins_mcs_pct_int3_t2double
pbp_b1a_coins_mcs_pct_int3_t3double
pbp_b1a_coins_mcs_pct_intrvl1double
pbp_b1a_coins_mcs_pct_intrvl2double
pbp_b1a_coins_mcs_pct_intrvl3double
pbp_b1a_coins_mcs_pct_t1double
pbp_b1a_coins_mcs_pct_t2double
pbp_b1a_coins_mcs_pct_t3double
pbp_b1a_coins_nmcs_bgnd_ntrvl1double
pbp_b1a_coins_nmcs_bgnd_ntrvl2double
pbp_b1a_coins_nmcs_bgnd_ntrvl3double
pbp_b1a_coins_nmcs_endd_ntrvl1double
pbp_b1a_coins_nmcs_endd_ntrvl2double
pbp_b1a_coins_nmcs_endd_ntrvl3double
pbp_b1a_coins_nmcs_intrvl_numstring
pbp_b1a_coins_nmcs_pctdouble
pbp_b1a_coins_nmcs_pct_intrvl1double
pbp_b1a_coins_nmcs_pct_intrvl2double
pbp_b1a_coins_nmcs_pct_intrvl3double
pbp_b1a_coins_nmcs_struc_ynstring
pbp_b1a_coins_pct_bonlydouble
pbp_b1a_coins_pct_updouble
pbp_b1a_coins_ps_bgnd1_bonlydouble
pbp_b1a_coins_ps_bgnd2_bonlydouble
pbp_b1a_coins_ps_bgnd3_bonlydouble
pbp_b1a_coins_ps_endd1_bonlydouble
pbp_b1a_coins_ps_endd2_bonlydouble
pbp_b1a_coins_ps_endd3_bonlydouble
pbp_b1a_coins_ps_num_bonlystring
pbp_b1a_coins_ps_pct1_bonlydouble
pbp_b1a_coins_ps_pct2_bonlydouble
pbp_b1a_coins_ps_pct3_bonlydouble
pbp_b1a_coins_up_cstshr_ynstring
pbp_b1a_coins_ynstring
pbp_b1a_coins_yn_bonlystring
pbp_b1a_copay_ad_amt_int1_t1double
pbp_b1a_copay_ad_amt_int1_t2double
pbp_b1a_copay_ad_amt_int1_t3double
pbp_b1a_copay_ad_amt_int2_t1double
pbp_b1a_copay_ad_amt_int2_t2double
pbp_b1a_copay_ad_amt_int2_t3double
pbp_b1a_copay_ad_amt_int3_t1double
pbp_b1a_copay_ad_amt_int3_t2double
pbp_b1a_copay_ad_amt_int3_t3double
pbp_b1a_copay_ad_amt_intrvl1double
pbp_b1a_copay_ad_amt_intrvl2double
pbp_b1a_copay_ad_amt_intrvl3double
pbp_b1a_copay_ad_bgnd_int1_t1double
pbp_b1a_copay_ad_bgnd_int1_t2double
pbp_b1a_copay_ad_bgnd_int1_t3double
pbp_b1a_copay_ad_bgnd_int2_t1double
pbp_b1a_copay_ad_bgnd_int2_t2double
pbp_b1a_copay_ad_bgnd_int2_t3double
pbp_b1a_copay_ad_bgnd_int3_t1double
pbp_b1a_copay_ad_bgnd_int3_t2double
pbp_b1a_copay_ad_bgnd_int3_t3double
pbp_b1a_copay_ad_bgnd_intrvl1double
pbp_b1a_copay_ad_bgnd_intrvl2double
pbp_b1a_copay_ad_bgnd_intrvl3double
pbp_b1a_copay_ad_endd_int1_t1double
pbp_b1a_copay_ad_endd_int1_t2double
pbp_b1a_copay_ad_endd_int1_t3double
pbp_b1a_copay_ad_endd_int2_t1double
pbp_b1a_copay_ad_endd_int2_t2double
pbp_b1a_copay_ad_endd_int2_t3double
pbp_b1a_copay_ad_endd_int3_t1double
pbp_b1a_copay_ad_endd_int3_t2double
pbp_b1a_copay_ad_endd_int3_t3double
pbp_b1a_copay_ad_endd_intrvl1double
pbp_b1a_copay_ad_endd_intrvl2double
pbp_b1a_copay_ad_endd_intrvl3double
pbp_b1a_copay_ad_intrvl_numstring
pbp_b1a_copay_ad_intrvl_num_t1string
pbp_b1a_copay_ad_intrvl_num_t2string
pbp_b1a_copay_ad_intrvl_num_t3string
pbp_b1a_copay_amt_ps_bonlydouble
pbp_b1a_copay_lrd_amt_int1_t1double
pbp_b1a_copay_lrd_amt_int1_t2double
pbp_b1a_copay_lrd_amt_int1_t3double
pbp_b1a_copay_lrd_amt_int2_t1double
pbp_b1a_copay_lrd_amt_int2_t2double
pbp_b1a_copay_lrd_amt_int2_t3double
pbp_b1a_copay_lrd_amt_int3_t1double
pbp_b1a_copay_lrd_amt_int3_t2double
pbp_b1a_copay_lrd_amt_int3_t3double
pbp_b1a_copay_lrd_amt_intrvl1double
pbp_b1a_copay_lrd_amt_intrvl2double
pbp_b1a_copay_lrd_amt_intrvl3double
pbp_b1a_copay_lrd_bgnd_int1_t1double
pbp_b1a_copay_lrd_bgnd_int1_t2double
pbp_b1a_copay_lrd_bgnd_int1_t3double
pbp_b1a_copay_lrd_bgnd_int2_t1double
pbp_b1a_copay_lrd_bgnd_int2_t2double
pbp_b1a_copay_lrd_bgnd_int2_t3double
pbp_b1a_copay_lrd_bgnd_int3_t1double
pbp_b1a_copay_lrd_bgnd_int3_t2double
pbp_b1a_copay_lrd_bgnd_int3_t3double
pbp_b1a_copay_lrd_bgnd_intrvl1double
pbp_b1a_copay_lrd_bgnd_intrvl2double
pbp_b1a_copay_lrd_bgnd_intrvl3double
pbp_b1a_copay_lrd_endd_int1_t1double
pbp_b1a_copay_lrd_endd_int1_t2double
pbp_b1a_copay_lrd_endd_int1_t3double
pbp_b1a_copay_lrd_endd_int2_t1double
pbp_b1a_copay_lrd_endd_int2_t2double
pbp_b1a_copay_lrd_endd_int2_t3double
pbp_b1a_copay_lrd_endd_int3_t1double
pbp_b1a_copay_lrd_endd_int3_t2double
pbp_b1a_copay_lrd_endd_int3_t3double
pbp_b1a_copay_lrd_endd_intrvl1double
pbp_b1a_copay_lrd_endd_intrvl2double
pbp_b1a_copay_lrd_endd_intrvl3double
pbp_b1a_copay_lrd_int_num_t1string
pbp_b1a_copay_lrd_int_num_t2string
pbp_b1a_copay_lrd_int_num_t3string
pbp_b1a_copay_lrd_intrvl_numstring
pbp_b1a_copay_mcs_amtdouble
pbp_b1a_copay_mcs_amt_int1_t1double
pbp_b1a_copay_mcs_amt_int1_t2double
pbp_b1a_copay_mcs_amt_int1_t3double
pbp_b1a_copay_mcs_amt_int2_t1double
pbp_b1a_copay_mcs_amt_int2_t2double
pbp_b1a_copay_mcs_amt_int2_t3double
pbp_b1a_copay_mcs_amt_int3_t1double
pbp_b1a_copay_mcs_amt_int3_t2double
pbp_b1a_copay_mcs_amt_int3_t3double
pbp_b1a_copay_mcs_amt_intrvl1double
pbp_b1a_copay_mcs_amt_intrvl2double
pbp_b1a_copay_mcs_amt_intrvl3double
pbp_b1a_copay_mcs_amt_t1double
pbp_b1a_copay_mcs_amt_t2double
pbp_b1a_copay_mcs_amt_t3double
pbp_b1a_copay_mcs_bgnd_int1_t1double
pbp_b1a_copay_mcs_bgnd_int1_t2double
pbp_b1a_copay_mcs_bgnd_int1_t3double
pbp_b1a_copay_mcs_bgnd_int2_t1double
pbp_b1a_copay_mcs_bgnd_int2_t2double
pbp_b1a_copay_mcs_bgnd_int2_t3double
pbp_b1a_copay_mcs_bgnd_int3_t1double
pbp_b1a_copay_mcs_bgnd_int3_t2double
pbp_b1a_copay_mcs_bgnd_int3_t3double
pbp_b1a_copay_mcs_bgnd_intrvl1double
pbp_b1a_copay_mcs_bgnd_intrvl2double
pbp_b1a_copay_mcs_bgnd_intrvl3double
pbp_b1a_copay_mcs_endd_int1_t1double
pbp_b1a_copay_mcs_endd_int1_t2double
pbp_b1a_copay_mcs_endd_int1_t3double
pbp_b1a_copay_mcs_endd_int2_t1double
pbp_b1a_copay_mcs_endd_int2_t2double
pbp_b1a_copay_mcs_endd_int2_t3double
pbp_b1a_copay_mcs_endd_int3_t1double
pbp_b1a_copay_mcs_endd_int3_t2double
pbp_b1a_copay_mcs_endd_int3_t3double
pbp_b1a_copay_mcs_endd_intrvl1double
pbp_b1a_copay_mcs_endd_intrvl2double
pbp_b1a_copay_mcs_endd_intrvl3double
pbp_b1a_copay_mcs_int_num_t1string
pbp_b1a_copay_mcs_int_num_t2string
pbp_b1a_copay_mcs_int_num_t3string
pbp_b1a_copay_mcs_intrvl_numstring
pbp_b1a_copay_nmcs_amtdouble
pbp_b1a_copay_nmcs_amt_intrvl1double
pbp_b1a_copay_nmcs_amt_intrvl2double
pbp_b1a_copay_nmcs_amt_intrvl3double
pbp_b1a_copay_nmcs_bgnd_ntrvl1double
pbp_b1a_copay_nmcs_bgnd_ntrvl2double
pbp_b1a_copay_nmcs_bgnd_ntrvl3double
pbp_b1a_copay_nmcs_endd_ntrvl1double
pbp_b1a_copay_nmcs_endd_ntrvl2double
pbp_b1a_copay_nmcs_endd_ntrvl3double
pbp_b1a_copay_nmcs_intrvl_numstring
pbp_b1a_copay_nmcs_struc_ynstring
pbp_b1a_copay_ps_amt1_bonlydouble
pbp_b1a_copay_ps_amt2_bonlydouble
pbp_b1a_copay_ps_amt3_bonlydouble
pbp_b1a_copay_ps_bgnd1_bonlydouble
pbp_b1a_copay_ps_bgnd2_bonlydouble
pbp_b1a_copay_ps_bgnd3_bonlydouble
pbp_b1a_copay_ps_endd1_bonlydouble
pbp_b1a_copay_ps_endd2_bonlydouble
pbp_b1a_copay_ps_endd3_bonlydouble
pbp_b1a_copay_ps_num_bonlystring
pbp_b1a_copay_up_amt_daydouble
pbp_b1a_copay_up_amt_staydouble
pbp_b1a_copay_up_cstshr_ynstring
pbp_b1a_copay_ynstring
pbp_b1a_copay_yn_bonlystring
pbp_b1a_cost_discharge_ynstring
pbp_b1a_cost_share_vary_ynstring
pbp_b1a_cost_vary_low_tierstring
pbp_b1a_cost_vary_tier_numstring
pbp_b1a_cost_vary_tiers_ynstring
pbp_b1a_ded_amtdouble
pbp_b1a_ded_amt_bonlydouble
pbp_b1a_ded_amt_t1double
pbp_b1a_ded_amt_t2double
pbp_b1a_ded_amt_t3double
pbp_b1a_ded_ynstring
pbp_b1a_ded_yn_bonlystring
pbp_b1a_discharge_yn_bonlystring
pbp_b1a_esrd_copay_amtdouble
pbp_b1a_esrd_maxenr_amtdouble
pbp_b1a_hosp_ben_periodstring
pbp_b1a_hosp_ben_period_othstring
pbp_b1a_maxenr_amtdouble
pbp_b1a_maxenr_amt_bonlydouble
pbp_b1a_maxenr_perstring
pbp_b1a_maxenr_per_bonlystring
pbp_b1a_maxenr_per_bonly_dstring
pbp_b1a_maxenr_per_dstring
pbp_b1a_maxenr_ynstring
pbp_b1a_maxenr_yn_bonlystring
pbp_b1a_maxplan_amt_bonlydouble
pbp_b1a_maxplan_cov_bonlystring
pbp_b1a_maxplan_per_bonlystring
pbp_b1a_maxplan_per_bonly_dstring
pbp_b1a_maxplan_yn_bonlystring
pbp_b1a_mc_coins_cstshr_yn_t1string
pbp_b1a_mc_coins_cstshr_yn_t2string
pbp_b1a_mc_coins_cstshr_yn_t3string
pbp_b1a_mc_copay_cstshr_yn_t1string
pbp_b1a_mc_copay_cstshr_yn_t2string
pbp_b1a_mc_copay_cstshr_yn_t3string
pbp_b1a_mdcr_coins_cstshrs_ynstring
pbp_b1a_mdcr_copay_cstshrs_ynstring
pbp_b1a_pffs_copay_amtdouble
pbp_b1a_pffs_maxenr_amtdouble
pbp_b1a_refer_ynstring
pbp_b1a_refer_yn_bonlystring
observed_perioddateDate the snapshot represents = Jan 1 of report_year (date); identical to effective_period_start (verified). Silver-layer snapshot anchor.
asserted_atdateSilver-layer LOAD date -- when Vlada asserted these facts (only 2 values: 2026-05-16, 2026-05-20). Pipeline metadata, NOT a business/CMS date. Do not use for plan-year logic.
effective_period_startdatePlan year start = Jan 1 of report_year (date). Silver-layer temporal column; redundant with report_year. Profiler's primary time column (2010-01-01 .. 2026-01-01).
effective_period_enddatePlan year end = Dec 31 of report_year (verified, 0 mismatch). Fully redundant with report_year. 17 distinct values.
cms_vintage_sequenceintOrdinal of the snapshot WITHIN its report_year (int): 1=Q1, 2=Q2, 3=Q3, 4=Q4 -- it resets each year, it is NOT a global sequence. max(cms_vintage_sequence) per (bid,year) = the latest within-year release.
parse_revisionintParser version that produced the row (int, 1 or 2). Pipeline provenance metadata.
parser_artifact_hashstringHash of the parser artifact used (string). Provenance/lineage metadata.
source_urlstringURL of the CMS PBP landscape source file (string). Exactly 31 distinct = one per (report_year, quarter) snapshot. The provenance link for every row in a snapshot.
sha256_content_hashstringSHA-256 content hash of the source record (string). Provenance/dedup integrity column.
pbp_b1a_auth_posstring
pbp_b1a_auth_pos_bonlystring
pbp_b1a_bendec_yesno_bonlystring
pbp_b1a_bendes_per_bonlystring
pbp_b1a_coins_cov_posstring
pbp_b1a_coins_cov_pos_bonlystring
pbp_b1a_coins_yesnostring
pbp_b1a_coins_yesno_bonlystring
pbp_b1a_coins_yesno_posstring
pbp_b1a_coins_yesno_pos_bonlystring
pbp_b1a_copay_yesno_bonlystring
pbp_b1a_copay_yesno_posstring
pbp_b1a_copay_yesno_pos_bonlystring
pbp_b1a_ded_yesno_posstring
pbp_b1a_ded_yesno_pos_bonlystring
pbp_b1a_maxenr_yesno_bonlystring
pbp_b1a_maxenr_yesno_posstring
pbp_b1a_maxenr_yn_pos_bonlystring
pbp_b1a_maxplan_yesno_bonlystring
pbp_b1a_maxplan_yesno_posstring
pbp_b1a_maxplan_yesno_pos_bstring
pbp_b1a_maxpln_cov_posstring
pbp_b1a_maxpln_cov_pos_bonlystring
pbp_b1a_maxpln_per_posstring
pbp_b1a_maxpln_per_pos_bonlystring
pbp_b1b_auth_bonlystring
pbp_b1b_auth_posstring
pbp_b1b_auth_pos_bonlystring
pbp_b1b_bendec_yesno_bonlystring
pbp_b1b_bendes_per_bonlystring
pbp_b1b_bendesc_amo_bonlystring
pbp_b1b_bendesc_lim_bonlystring
pbp_b1b_coins_cov_posstring
pbp_b1b_coins_cov_pos_bonlystring
pbp_b1b_coins_yesnostring
pbp_b1b_coins_yesno_bonlystring
pbp_b1b_coins_yesno_posstring
pbp_b1b_coins_yesno_pos_bonlystring
pbp_b1b_copay_yesno_bonlystring
pbp_b1b_copay_yesno_posstring
pbp_b1b_copay_yesno_pos_bonlystring
pbp_b1b_ded_yesno_bonlystring
pbp_b1b_ded_yesno_posstring
pbp_b1b_ded_yesno_pos_bonlystring
pbp_b1b_maxenr__cov_yn_posstring
pbp_b1b_maxenr_cov_yn_pos_bstring
pbp_b1b_maxenr_per_bonlystring
pbp_b1b_maxenr_type_bonlystring
pbp_b1b_maxenr_yesno_bonlystring
pbp_b1b_maxenr_yesno_posstring
pbp_b1b_maxenr_yesno_pos_bonlystring
pbp_b1b_maxplan_cov_bonlystring
pbp_b1b_maxplan_cov_posstring
pbp_b1b_maxplan_cov_pos_bonlystring
pbp_b1b_maxplan_per_bonlystring
pbp_b1b_maxplan_type_bonlystring
pbp_b1b_maxplan_type_posstring
pbp_b1b_maxplan_type_pos_bonlystring
pbp_b1b_maxplan_yesno_bonlystring
pbp_b1b_maxplan_yesno_posstring
pbp_b1b_maxplan_yesno_pos_bstring
pbp_b1b_maxpln_per_posstring
pbp_b1b_maxpln_per_pos_bonlystring
pbp_b_1a_authstring
pbp_b_1a_auth_bonlystring
pbp_b_1a_bendec_ad_upstring
pbp_b_1a_bendec_yesnostring
pbp_b_1a_bendesc_amo_adstring
pbp_b_1a_bendesc_amo_upstring
pbp_b_1a_bendesc_lim_adstring
pbp_b_1a_coins_cov_adstring
pbp_b_1a_coins_cov_mcstring
pbp_b_1a_coins_cov_upstring
pbp_b_1a_copay_yesnostring
pbp_b_1a_ded_yesnostring
pbp_b_1a_ded_yesno_bonlystring
pbp_b_1a_maxenr_perstring
pbp_b_1a_maxenr_yesnostring
pbp_b_1b_authstring
pbp_b_1b_bendec_adstring
pbp_b_1b_bendec_yesnostring
pbp_b_1b_bendesc_amo_adstring
pbp_b_1b_bendesc_lim_adstring
pbp_b_1b_coins_cov_adstring
pbp_b_1b_coins_cov_bonlystring
pbp_b_1b_coins_cov_mcstring
pbp_b_1b_copay_yesnostring
pbp_b_1b_ded_yesnostring
pbp_b_1b_maxenr_perstring
pbp_b_1b_maxenr_typestring
pbp_b_1b_maxenr_yesnostring
pbp_b1a_copay_mcs_amt_int{1,2,3}_t{1,2,3} (+ _intrvl1..3)Inpatient copay DOLLAR amount for a Medicare-Covered Stay (MCS=Medicare-covered stay), per day-interval (int1/2/3) and cost tier (t1/2/3). The headline cost field. Populated ~4,046/7,420 in 2026Q1. e.g. $375 for interval 1. The dominant inpatient cost-share mechanism (coinsurance/deductible are near-zero).
pbp_b1a_copay_mcs_bgnd_int{n}_t{m} / _endd_int{n}_t{m}Begin-day (bgnd) and end-day (endd) of each copay day-interval, e.g. days 1-7 then 8+. Defines the 'pay $X/day for days 1..N then $0' structure. Pairs with the copay_mcs_amt fields.
pbp_b1a_copay_mcs_amt_t{1,2,3}Flat (non-interval) MCS copay per tier, used when copay does NOT vary by day. ALTERNATIVE encoding to the _int* fields (~5,108 populated in 2026Q1). A plan populates EITHER the flat _t* OR the per-interval _int*_t* set, not both -> a real trap when reading copays.
pbp_b1a_coins_mcs_pct (+ _pct_int*_t*, _pct_t*)Inpatient coinsurance PERCENTAGE for a Medicare-covered stay, per interval/tier. Near-zero population for MA (0 in 2026Q1) -- MA inpatient is copay-based, not coinsurance. The _ad (additional days), _up (uncovered/non-Medicare), _lrd (lifetime reserve days), _nmcs (non-MCS) variants exist for special day categories.
pbp_b1a_ded_amt (+ _t1..t3, _yn)Inpatient deductible dollar amount and yes/no flags. ~0 populated for MA inpatient in 2026 (MA plans rarely use a Part-A-style deductible). Mostly null.
pbp_b1a_maxenr_amt / _per / _ynMaximum enrollee out-of-pocket for THIS inpatient benefit, the period it applies over (_per), and yes/no flags. Sparse (~101/7,420 in 2026Q1).
pbp_b1a_maxplan_* and pbp_b1b_maxplan_*Plan-side benefit maximums (amount/coverage/period/yesno) for B-1a and the related B-1b psychiatric section. Mostly null. NOTE: the profiler wrongly swept these into the grain key because their names contain 'plan'; they are benefit attributes, NOT keys.
pbp_b1a_*_bonly (e.g. coins_pct_bonly, copay_amt_ps_bonly, bendesc_*_bonly)Parallel cost-share encoding used ONLY for Part-B-only plans (pbp_a_ben_cov='2'): populated for 274 rows, all under ben_cov='2', zero under '1'. Ignore for standard Part-A plans.
pbp_b1a_auth / _yn / _refer / _refer_yn (+ _bonly, _pos)Prior-authorization and referral requirement codes/flags for inpatient hospital (e.g. auth='00001'). String coded fields describing utilization-management rules, not dollars.
pbp_b1a_bendesc_* (yn, amo, amt, lim, per, ulim)Benefit-description fields: whether a benefit description exists (yn), amount/limit/period of any plan-defined day limit (e.g. amt_days_bonly), unlimited flag. Describe coverage limits on the inpatient benefit.
pbp_b1a_ad_cost_vary_* / cost_vary_tiers_yn / tier_numFlags indicating whether additional-day (ad) cost-sharing varies, the number of cost tiers, and the lowest tier. Govern how to interpret the t1/t2/t3 tier suffixes.

Query it

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

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