Medicare Advantage, Part D, Medicaid
MA pbp section b1b inpat hosp psych
medicare_silver.pbp_section_b1b_inpat_hosp_psych·partial·silver·annual (benefit year), published in CMS quarterly snapshots (the `quarter` column); 2002-2017 typically single-quarter, 2018+ multi-quarter·Medicare Advantage Plan Benefit Packages (PBP)Rows
N/A
Columns
392
History
2002 (report_year 2002, Q1) to 2026 (report_year 2026, Q1). 25 distinct report_years; 39 distinct year x quarter release snapshots. effective_period_start spans 2002-01-01 to 2026-01-01.
Card
yesgrain, traps, filters
Typed tools
1
What it is
- 1CMS Medicare Advantage Plan Benefit Package (PBP) Section B-1b: the member cost-sharing design (copays, coinsurance, deductible, prior-auth, day-based intervals, OOP caps) that each MA plan files for INPATIENT HOSPITAL - PSYCHIATRIC services.
- 2It is the benefit-design / cost-share-rules source for MA inpatient psych, used to compare what plans charge enrollees for a psychiatric hospital stay year over year.
Grain
| Key | Grain |
|---|---|
contract_idplan_idsegment_idreport_yearquarter |
|
How to read it
- 1Get one row per plan-year (de-duplicating the quarterly snapshots) and read the primary Medicare-covered-stay inpatient-psych copay: SELECT contract_id, plan_id, segment_id, pbp_b1b_copay_mcs_amt_int1_t1 AS copay_days1to5, pbp_b1b_copay_mcs_bgnd_int1_t1 AS begin_day, pbp_b1b_copay_mcs_endd_int1_t1 AS end_day, pbp_b1b_auth_yn FROM pbp_section_b1b_inpat_hosp_psych WHERE report_year=2026 AND quarter=1 AND pbp_a_ben_cov='1'.
- 2Answers: 'for plan H#### in 2026, what does a member pay per day for the first days of a psychiatric inpatient stay, and is prior authorization required?' (median first-interval copay ~$333/day for days 1-5, then $0 days 6-90; auth required for ~87% of plans).
Traps
- 1MINIMAL GRAIN is 5 columns: contract_id + plan_id + segment_id + report_year + quarter = 200,746 distinct = exactly the row count. The profiler's 14-column key is a SUPERSET — it needlessly pads with bid_id and six pbp_b1b_maxplan_* columns. Do NOT add bid_id (NULL in 7,574 old rows) or version to the key.
- 2`quarter` is the killer trap. It is the CMS WITHIN-YEAR release snapshot, not a benefit attribute. 2002-2017 have only Q1, but 2018+ carry Q1-Q4 (e.g. 2023 = 4 near-identical copies, ~7,750 rows each). Counting plans across years WITHOUT pinning quarter inflates recent years up to 4x. There are 39 distinct year x quarter snapshots vs only 25 report_years. To get one row per plan-year, filter to one quarter (e.g. MAX(quarter) per year) or GROUP BY year only.
- 3No `is_current` column and no snapshot fan-out: the table is already deduped to ONE physical row per logical key (max rows/key=1; exactly 1 cms_vintage_sequence / asserted_at / parse_revision / sha256 per key). It is a 'best-vintage' silver snapshot, NOT SCD-2 history — there is no current-flag to filter and no de-dup step needed beyond picking a quarter.
- 4Cost-share columns are SPARSE and split into day-phase FAMILIES, so naive 'pick the copay column' fails. The populated family for inpatient psych is `mcs` (Medicare-Covered Stay): use pbp_b1b_copay_mcs_amt_int{1,2,3}_t1 (~4,034 plans in 2026) with paired bgnd/endd day boundaries. The `ad` (additional-days) and `lrd` (lifetime-reserve-days) families are tiny (73 / 210 plans). Verified day structure: int1 = days 1-5 (~$333/day copay), int2 = days 6-90 ($0). pct_* columns hold % coinsurance instead of $.
- 5Y/N flags use CMS encoding 1=Yes, 2=No (NOT 1/0, NOT true/false), and NULL means 'not applicable / benefit not covered'. E.g. ded_yn=2 for ~all plans (no separate psych deductible); auth_yn=1 for the vast majority (prior auth required). Also observed_period == effective_period_start == Jan 1 of report_year for every row (redundant), and `version` (PBP software version) varies plan-to-plan within a single year and is NOT a time/dedup key.
- 6Sibling table: pbp_section_b1a_inpat_hosp is ACUTE inpatient hospital; this b1b table is the PSYCHIATRIC inpatient sub-section (Medicare's psych benefit has the unique 190-day lifetime limit and its own day-interval cost-sharing). Don't confuse the two; join both for total inpatient cost-share. All `*_bonly` (Part-B-only-enrollee) columns are effectively empty in modern data.
Columns (392)
| Column | Type | Meaning |
|---|---|---|
contract_id | string | CMS Medicare Advantage contract ID (e.g. 'H0104', 'H0150'). 1,932 distinct all-time, 914 in 2026. Part 1 of the plan identity. The 'H/R/S/E' prefix encodes contract type. |
plan_id | string | Plan benefit package (PBP) number within the contract (e.g. '001','002','801'). 656 distinct values reused across contracts (NOT unique on its own). Part 2 of plan identity. |
segment_id | string | Plan segment, mostly '000' (non-segmented) with real segment numbers for segmented/regional plans; 27 distinct. Empty-string '' in 4,332 old rows (pre-segment era). Part 3 of plan identity — DO NOT drop it; needed for the unique grain. |
version | double | CMS PBP-authoring software version for that plan filing (double; 27 distinct overall, up to ~22 distinct WITHIN a single year). NOT a snapshot/dedup key, NOT part of the grain — it varies plan-to-plan within one year×quarter. |
report_year | double | CMS contract/benefit year the PBP describes (double: 2002.0 .. 2026.0; 25 distinct). One of the two true time keys. year(observed_period)=report_year for every row. |
quarter | double | CMS within-year RELEASE snapshot (1-4). THE non-obvious grain key. Older years (2002-2017) have only Q1; 2018+ carry multiple quarters (e.g. 2023 has Q1-Q4 ~7,750 rows each). Same plan-year is repeated once per released quarter. |
bid_id | string | CMS bid identifier; NULL for 7,574 oldest rows (pre-bid-id era). Redundant given contract+plan+segment+year — the profiler wrongly included it in the key. Informational only. |
orgtype | string | Organization type code (string; 9 distinct). 2026: 01=Local CCP (6,860), 08=Regional CCP/PPO (396), 11=PFFS, 06, 04, 02. Standard CMS PBP org-type enum. |
pbp_a_ben_cov | string | Carried-down Section-A flag: does the plan cover this benefit. 1=Yes (7,276 in 2026), 2=No (125), NULL (19). Gate: when 2/NULL the b1b cost fields are typically empty. |
pbp_a_plan_type | string | Carried-down plan type code (string; 30 distinct). 2026: 01=HMO (3,056), 04=Local PPO (2,502), 02=HMOPOS (1,302), 20=Regional PPO (396), 31, 18, 09, 07. Standard CMS enum. |
pbp_b1b_ad_cost_vary_low_tier | string | |
pbp_b1b_ad_cost_vary_tier_num | string | |
pbp_b1b_ad_cost_vary_tiers_yn | string | |
pbp_b1b_auth | string | |
pbp_b1b_auth_bonly | string | |
pbp_b1b_auth_yn | string | |
pbp_b1b_auth_yn_bonly | string | |
pbp_b1b_bendesc_ad_nmcs | string | |
pbp_b1b_bendesc_amo_ad | string | |
pbp_b1b_bendesc_amo_bonly | string | |
pbp_b1b_bendesc_amo_nmcs | string | |
pbp_b1b_bendesc_amt_ad | double | |
pbp_b1b_bendesc_amt_bonly | double | |
pbp_b1b_bendesc_lim_ad | string | |
pbp_b1b_bendesc_lim_bonly | string | |
pbp_b1b_bendesc_per_bonly | string | |
pbp_b1b_bendesc_per_bonly_d | string | |
pbp_b1b_bendesc_yn | string | |
pbp_b1b_bendesc_yn_bonly | string | |
pbp_b1b_coins_ad_bgnd_int1_t1 | double | |
pbp_b1b_coins_ad_bgnd_int1_t2 | double | |
pbp_b1b_coins_ad_bgnd_int1_t3 | double | |
pbp_b1b_coins_ad_bgnd_int2_t1 | double | |
pbp_b1b_coins_ad_bgnd_int2_t2 | double | |
pbp_b1b_coins_ad_bgnd_int2_t3 | double | |
pbp_b1b_coins_ad_bgnd_int3_t1 | double | |
pbp_b1b_coins_ad_bgnd_int3_t2 | double | |
pbp_b1b_coins_ad_bgnd_int3_t3 | double | |
pbp_b1b_coins_ad_bgnd_intrvl1 | double | |
pbp_b1b_coins_ad_bgnd_intrvl2 | double | |
pbp_b1b_coins_ad_bgnd_intrvl3 | double | |
pbp_b1b_coins_ad_endd_int1_t1 | double | |
pbp_b1b_coins_ad_endd_int1_t2 | double | |
pbp_b1b_coins_ad_endd_int1_t3 | double | |
pbp_b1b_coins_ad_endd_int2_t1 | double | |
pbp_b1b_coins_ad_endd_int2_t2 | double | |
pbp_b1b_coins_ad_endd_int2_t3 | double | |
pbp_b1b_coins_ad_endd_int3_t1 | double | |
pbp_b1b_coins_ad_endd_int3_t2 | double | |
pbp_b1b_coins_ad_endd_int3_t3 | double | |
pbp_b1b_coins_ad_endd_intrvl1 | double | |
pbp_b1b_coins_ad_endd_intrvl2 | double | |
pbp_b1b_coins_ad_endd_intrvl3 | double | |
pbp_b1b_coins_ad_intrvl_num | string | |
pbp_b1b_coins_ad_intrvl_num_t1 | string | |
pbp_b1b_coins_ad_intrvl_num_t2 | string | |
pbp_b1b_coins_ad_intrvl_num_t3 | string | |
pbp_b1b_coins_ad_pct_int1_t1 | double | |
pbp_b1b_coins_ad_pct_int1_t2 | double | |
pbp_b1b_coins_ad_pct_int1_t3 | double | |
pbp_b1b_coins_ad_pct_int2_t1 | double | |
pbp_b1b_coins_ad_pct_int2_t2 | double | |
pbp_b1b_coins_ad_pct_int2_t3 | double | |
pbp_b1b_coins_ad_pct_int3_t1 | double | |
pbp_b1b_coins_ad_pct_int3_t2 | double | |
pbp_b1b_coins_ad_pct_int3_t3 | double | |
pbp_b1b_coins_ad_pct_intrvl1 | double | |
pbp_b1b_coins_ad_pct_intrvl2 | double | |
pbp_b1b_coins_ad_pct_intrvl3 | double | |
pbp_b1b_coins_cov_ad | string | |
pbp_b1b_coins_cov_bonly | string | |
pbp_b1b_coins_cov_lrd | string | |
pbp_b1b_coins_cov_mcs | string | |
pbp_b1b_coins_cov_nmcs | string | |
pbp_b1b_coins_lrd_bgnd_int1_t1 | double | |
pbp_b1b_coins_lrd_bgnd_int1_t2 | double | |
pbp_b1b_coins_lrd_bgnd_int1_t3 | double | |
pbp_b1b_coins_lrd_bgnd_int2_t1 | double | |
pbp_b1b_coins_lrd_bgnd_int2_t2 | double | |
pbp_b1b_coins_lrd_bgnd_int2_t3 | double | |
pbp_b1b_coins_lrd_bgnd_int3_t1 | double | |
pbp_b1b_coins_lrd_bgnd_int3_t2 | double | |
pbp_b1b_coins_lrd_bgnd_int3_t3 | double | |
pbp_b1b_coins_lrd_bgnd_intrvl1 | double | |
pbp_b1b_coins_lrd_bgnd_intrvl2 | double | |
pbp_b1b_coins_lrd_bgnd_intrvl3 | double | |
pbp_b1b_coins_lrd_endd_int1_t1 | double | |
pbp_b1b_coins_lrd_endd_int1_t2 | double | |
pbp_b1b_coins_lrd_endd_int1_t3 | double | |
pbp_b1b_coins_lrd_endd_int2_t1 | double | |
pbp_b1b_coins_lrd_endd_int2_t2 | double | |
pbp_b1b_coins_lrd_endd_int2_t3 | double | |
pbp_b1b_coins_lrd_endd_int3_t1 | double | |
pbp_b1b_coins_lrd_endd_int3_t2 | double | |
pbp_b1b_coins_lrd_endd_int3_t3 | double | |
pbp_b1b_coins_lrd_endd_intrvl1 | double | |
pbp_b1b_coins_lrd_endd_intrvl2 | double | |
pbp_b1b_coins_lrd_endd_intrvl3 | double | |
pbp_b1b_coins_lrd_int_num_t1 | string | |
pbp_b1b_coins_lrd_int_num_t2 | string | |
pbp_b1b_coins_lrd_int_num_t3 | string | |
pbp_b1b_coins_lrd_intrvl_num | string | |
pbp_b1b_coins_lrd_pct_int1_t1 | double | |
pbp_b1b_coins_lrd_pct_int1_t2 | double | |
pbp_b1b_coins_lrd_pct_int1_t3 | double | |
pbp_b1b_coins_lrd_pct_int2_t1 | double | |
pbp_b1b_coins_lrd_pct_int2_t2 | double | |
pbp_b1b_coins_lrd_pct_int2_t3 | double | |
pbp_b1b_coins_lrd_pct_int3_t1 | double | |
pbp_b1b_coins_lrd_pct_int3_t2 | double | |
pbp_b1b_coins_lrd_pct_int3_t3 | double | |
pbp_b1b_coins_lrd_pct_intrvl1 | double | |
pbp_b1b_coins_lrd_pct_intrvl2 | double | |
pbp_b1b_coins_lrd_pct_intrvl3 | double | |
pbp_b1b_coins_mcs_bgnd_int1_t1 | double | |
pbp_b1b_coins_mcs_bgnd_int1_t2 | double | |
pbp_b1b_coins_mcs_bgnd_int1_t3 | double | |
pbp_b1b_coins_mcs_bgnd_int2_t1 | double | |
pbp_b1b_coins_mcs_bgnd_int2_t2 | double | |
pbp_b1b_coins_mcs_bgnd_int2_t3 | double | |
pbp_b1b_coins_mcs_bgnd_int3_t1 | double | |
pbp_b1b_coins_mcs_bgnd_int3_t2 | double | |
pbp_b1b_coins_mcs_bgnd_int3_t3 | double | |
pbp_b1b_coins_mcs_bgnd_intrvl1 | double | |
pbp_b1b_coins_mcs_bgnd_intrvl2 | double | |
pbp_b1b_coins_mcs_bgnd_intrvl3 | double | |
pbp_b1b_coins_mcs_endd_int1_t1 | double | |
pbp_b1b_coins_mcs_endd_int1_t2 | double | |
pbp_b1b_coins_mcs_endd_int1_t3 | double | |
pbp_b1b_coins_mcs_endd_int2_t1 | double | |
pbp_b1b_coins_mcs_endd_int2_t2 | double | |
pbp_b1b_coins_mcs_endd_int2_t3 | double | |
pbp_b1b_coins_mcs_endd_int3_t1 | double | |
pbp_b1b_coins_mcs_endd_int3_t2 | double | |
pbp_b1b_coins_mcs_endd_int3_t3 | double | |
pbp_b1b_coins_mcs_endd_intrvl1 | double | |
pbp_b1b_coins_mcs_endd_intrvl2 | double | |
pbp_b1b_coins_mcs_endd_intrvl3 | double | |
pbp_b1b_coins_mcs_int_num_t1 | string | |
pbp_b1b_coins_mcs_int_num_t2 | string | |
pbp_b1b_coins_mcs_int_num_t3 | string | |
pbp_b1b_coins_mcs_intrvl_num | string | |
pbp_b1b_coins_mcs_pct_int1_t1 | double | |
pbp_b1b_coins_mcs_pct_int1_t2 | double | |
pbp_b1b_coins_mcs_pct_int1_t3 | double | |
pbp_b1b_coins_mcs_pct_int2_t1 | double | |
pbp_b1b_coins_mcs_pct_int2_t2 | double | |
pbp_b1b_coins_mcs_pct_int2_t3 | double | |
pbp_b1b_coins_mcs_pct_int3_t1 | double | |
pbp_b1b_coins_mcs_pct_int3_t2 | double | |
pbp_b1b_coins_mcs_pct_int3_t3 | double | |
pbp_b1b_coins_mcs_pct_intrvl1 | double | |
pbp_b1b_coins_mcs_pct_intrvl2 | double | |
pbp_b1b_coins_mcs_pct_intrvl3 | double | |
pbp_b1b_coins_mcs_pct_t1 | double | |
pbp_b1b_coins_mcs_pct_t2 | double | |
pbp_b1b_coins_mcs_pct_t3 | double | |
pbp_b1b_coins_nmcs_bgnd_ntrvl1 | double | |
pbp_b1b_coins_nmcs_bgnd_ntrvl2 | double | |
pbp_b1b_coins_nmcs_bgnd_ntrvl3 | double | |
pbp_b1b_coins_nmcs_endd_ntrvl1 | double | |
pbp_b1b_coins_nmcs_endd_ntrvl2 | double | |
pbp_b1b_coins_nmcs_endd_ntrvl3 | double | |
pbp_b1b_coins_nmcs_intrvl_num | string | |
pbp_b1b_coins_nmcs_pct_intrvl1 | double | |
pbp_b1b_coins_nmcs_pct_intrvl2 | double | |
pbp_b1b_coins_nmcs_pct_intrvl3 | double | |
pbp_b1b_coins_nmcs_struc_yn | string | |
pbp_b1b_coins_pct_bonly | double | |
pbp_b1b_coins_pct_mcs | double | |
pbp_b1b_coins_pct_nmcs | double | |
pbp_b1b_coins_ps_bgnd1_bonly | double | |
pbp_b1b_coins_ps_bgnd2_bonly | double | |
pbp_b1b_coins_ps_bgnd3_bonly | double | |
pbp_b1b_coins_ps_endd1_bonly | double | |
pbp_b1b_coins_ps_endd2_bonly | double | |
pbp_b1b_coins_ps_endd3_bonly | double | |
pbp_b1b_coins_ps_num_bonly | string | |
pbp_b1b_coins_ps_pct1_bonly | double | |
pbp_b1b_coins_ps_pct2_bonly | double | |
pbp_b1b_coins_ps_pct3_bonly | double | |
pbp_b1b_coins_yn | string | |
pbp_b1b_coins_yn_bonly | string | |
pbp_b1b_copay_ad_amt_int1_t1 | double | |
pbp_b1b_copay_ad_amt_int1_t2 | double | |
pbp_b1b_copay_ad_amt_int1_t3 | double | |
pbp_b1b_copay_ad_amt_int2_t1 | double | |
pbp_b1b_copay_ad_amt_int2_t2 | double | |
pbp_b1b_copay_ad_amt_int2_t3 | double | |
pbp_b1b_copay_ad_amt_int3_t1 | double | |
pbp_b1b_copay_ad_amt_int3_t2 | double | |
pbp_b1b_copay_ad_amt_int3_t3 | double | |
pbp_b1b_copay_ad_amt_intrvl1 | double | |
pbp_b1b_copay_ad_amt_intrvl2 | double | |
pbp_b1b_copay_ad_amt_intrvl3 | double | |
pbp_b1b_copay_ad_bgnd_int1_t1 | double | |
pbp_b1b_copay_ad_bgnd_int1_t2 | double | |
pbp_b1b_copay_ad_bgnd_int1_t3 | double | |
pbp_b1b_copay_ad_bgnd_int2_t1 | double | |
pbp_b1b_copay_ad_bgnd_int2_t2 | double | |
pbp_b1b_copay_ad_bgnd_int2_t3 | double | |
pbp_b1b_copay_ad_bgnd_int3_t1 | double | |
pbp_b1b_copay_ad_bgnd_int3_t2 | double | |
pbp_b1b_copay_ad_bgnd_int3_t3 | double | |
pbp_b1b_copay_ad_bgnd_intrvl1 | double | |
pbp_b1b_copay_ad_bgnd_intrvl2 | double | |
pbp_b1b_copay_ad_bgnd_intrvl3 | double | |
pbp_b1b_copay_ad_endd_int1_t1 | double | |
pbp_b1b_copay_ad_endd_int1_t2 | double | |
pbp_b1b_copay_ad_endd_int1_t3 | double | |
pbp_b1b_copay_ad_endd_int2_t1 | double | |
pbp_b1b_copay_ad_endd_int2_t2 | double | |
pbp_b1b_copay_ad_endd_int2_t3 | double | |
pbp_b1b_copay_ad_endd_int3_t1 | double | |
pbp_b1b_copay_ad_endd_int3_t2 | double | |
pbp_b1b_copay_ad_endd_int3_t3 | double | |
pbp_b1b_copay_ad_endd_intrvl1 | double | |
pbp_b1b_copay_ad_endd_intrvl2 | double | |
pbp_b1b_copay_ad_endd_intrvl3 | double | |
pbp_b1b_copay_ad_intrvl_num | string | |
pbp_b1b_copay_ad_intrvl_num_t1 | string | |
pbp_b1b_copay_ad_intrvl_num_t2 | string | |
pbp_b1b_copay_ad_intrvl_num_t3 | string | |
pbp_b1b_copay_amt_ps_bonly | double | |
pbp_b1b_copay_lrd_amt_int1_t1 | double | |
pbp_b1b_copay_lrd_amt_int1_t2 | double | |
pbp_b1b_copay_lrd_amt_int1_t3 | double | |
pbp_b1b_copay_lrd_amt_int2_t1 | double | |
pbp_b1b_copay_lrd_amt_int2_t2 | double | |
pbp_b1b_copay_lrd_amt_int2_t3 | double | |
pbp_b1b_copay_lrd_amt_int3_t1 | double | |
pbp_b1b_copay_lrd_amt_int3_t2 | double | |
pbp_b1b_copay_lrd_amt_int3_t3 | double | |
pbp_b1b_copay_lrd_amt_intrvl1 | double | |
pbp_b1b_copay_lrd_amt_intrvl2 | double | |
pbp_b1b_copay_lrd_amt_intrvl3 | double | |
pbp_b1b_copay_lrd_bgnd_int1_t1 | double | |
pbp_b1b_copay_lrd_bgnd_int1_t2 | double | |
pbp_b1b_copay_lrd_bgnd_int1_t3 | double | |
pbp_b1b_copay_lrd_bgnd_int2_t1 | double | |
pbp_b1b_copay_lrd_bgnd_int2_t2 | double | |
pbp_b1b_copay_lrd_bgnd_int2_t3 | double | |
pbp_b1b_copay_lrd_bgnd_int3_t1 | double | |
pbp_b1b_copay_lrd_bgnd_int3_t2 | double | |
pbp_b1b_copay_lrd_bgnd_int3_t3 | double | |
pbp_b1b_copay_lrd_bgnd_intrvl1 | double | |
pbp_b1b_copay_lrd_bgnd_intrvl2 | double | |
pbp_b1b_copay_lrd_bgnd_intrvl3 | double | |
pbp_b1b_copay_lrd_endd_int1_t1 | double | |
pbp_b1b_copay_lrd_endd_int1_t2 | double | |
pbp_b1b_copay_lrd_endd_int1_t3 | double | |
pbp_b1b_copay_lrd_endd_int2_t1 | double | |
pbp_b1b_copay_lrd_endd_int2_t2 | double | |
pbp_b1b_copay_lrd_endd_int2_t3 | double | |
pbp_b1b_copay_lrd_endd_int3_t1 | double | |
pbp_b1b_copay_lrd_endd_int3_t2 | double | |
pbp_b1b_copay_lrd_endd_int3_t3 | double | |
pbp_b1b_copay_lrd_endd_intrvl1 | double | |
pbp_b1b_copay_lrd_endd_intrvl2 | double | |
pbp_b1b_copay_lrd_endd_intrvl3 | double | |
pbp_b1b_copay_lrd_int_num_t1 | string | |
pbp_b1b_copay_lrd_int_num_t2 | string | |
pbp_b1b_copay_lrd_int_num_t3 | string | |
pbp_b1b_copay_lrd_intrvl_num | string | |
pbp_b1b_copay_mcs_amt | double | |
pbp_b1b_copay_mcs_amt_int1_t1 | double | |
pbp_b1b_copay_mcs_amt_int1_t2 | double | |
pbp_b1b_copay_mcs_amt_int1_t3 | double | |
pbp_b1b_copay_mcs_amt_int2_t1 | double | |
pbp_b1b_copay_mcs_amt_int2_t2 | double | |
pbp_b1b_copay_mcs_amt_int2_t3 | double | |
pbp_b1b_copay_mcs_amt_int3_t1 | double | |
pbp_b1b_copay_mcs_amt_int3_t2 | double | |
pbp_b1b_copay_mcs_amt_int3_t3 | double | |
pbp_b1b_copay_mcs_amt_intrvl1 | double | |
pbp_b1b_copay_mcs_amt_intrvl2 | double | |
pbp_b1b_copay_mcs_amt_intrvl3 | double | |
pbp_b1b_copay_mcs_amt_t1 | double | |
pbp_b1b_copay_mcs_amt_t2 | double | |
pbp_b1b_copay_mcs_amt_t3 | double | |
pbp_b1b_copay_mcs_bgnd_int1_t1 | double | |
pbp_b1b_copay_mcs_bgnd_int1_t2 | double | |
pbp_b1b_copay_mcs_bgnd_int1_t3 | double | |
pbp_b1b_copay_mcs_bgnd_int2_t1 | double | |
pbp_b1b_copay_mcs_bgnd_int2_t2 | double | |
pbp_b1b_copay_mcs_bgnd_int2_t3 | double | |
pbp_b1b_copay_mcs_bgnd_int3_t1 | double | |
pbp_b1b_copay_mcs_bgnd_int3_t2 | double | |
pbp_b1b_copay_mcs_bgnd_int3_t3 | double | |
pbp_b1b_copay_mcs_bgnd_intrvl1 | double | |
pbp_b1b_copay_mcs_bgnd_intrvl2 | double | |
pbp_b1b_copay_mcs_bgnd_intrvl3 | double | |
pbp_b1b_copay_mcs_endd_int1_t1 | double | |
pbp_b1b_copay_mcs_endd_int1_t2 | double | |
pbp_b1b_copay_mcs_endd_int1_t3 | double | |
pbp_b1b_copay_mcs_endd_int2_t1 | double | |
pbp_b1b_copay_mcs_endd_int2_t2 | double | |
pbp_b1b_copay_mcs_endd_int2_t3 | double | |
pbp_b1b_copay_mcs_endd_int3_t1 | double | |
pbp_b1b_copay_mcs_endd_int3_t2 | double | |
pbp_b1b_copay_mcs_endd_int3_t3 | double | |
pbp_b1b_copay_mcs_endd_intrvl1 | double | |
pbp_b1b_copay_mcs_endd_intrvl2 | double | |
pbp_b1b_copay_mcs_endd_intrvl3 | double | |
pbp_b1b_copay_mcs_int_num_t1 | string | |
pbp_b1b_copay_mcs_int_num_t2 | string | |
pbp_b1b_copay_mcs_int_num_t3 | string | |
pbp_b1b_copay_mcs_intrvl_num | string | |
pbp_b1b_copay_nmcs_amt | double | |
pbp_b1b_copay_nmcs_amt_intrvl1 | double | |
pbp_b1b_copay_nmcs_amt_intrvl2 | double | |
pbp_b1b_copay_nmcs_amt_intrvl3 | double | |
pbp_b1b_copay_nmcs_bgnd_ntrvl1 | double | |
pbp_b1b_copay_nmcs_bgnd_ntrvl2 | double | |
pbp_b1b_copay_nmcs_bgnd_ntrvl3 | double | |
pbp_b1b_copay_nmcs_endd_ntrvl1 | double | |
pbp_b1b_copay_nmcs_endd_ntrvl2 | double | |
pbp_b1b_copay_nmcs_endd_ntrvl3 | double | |
pbp_b1b_copay_nmcs_intrvl_num | string | |
pbp_b1b_copay_nmcs_struc_yn | string | |
pbp_b1b_copay_ps_amt1_bonly | double | |
pbp_b1b_copay_ps_amt2_bonly | double | |
pbp_b1b_copay_ps_amt3_bonly | double | |
pbp_b1b_copay_ps_bgnd1_bonly | double | |
pbp_b1b_copay_ps_bgnd2_bonly | double | |
pbp_b1b_copay_ps_bgnd3_bonly | double | |
pbp_b1b_copay_ps_endd1_bonly | double | |
pbp_b1b_copay_ps_endd2_bonly | double | |
pbp_b1b_copay_ps_endd3_bonly | double | |
pbp_b1b_copay_ps_num_bonly | string | |
pbp_b1b_copay_yn | string | |
pbp_b1b_copay_yn_bonly | string | |
pbp_b1b_cost_discharge_yn | string | |
pbp_b1b_cost_share_vary_yn | string | |
pbp_b1b_cost_vary_low_tier | string | |
pbp_b1b_cost_vary_tier_num | string | |
pbp_b1b_cost_vary_tiers_yn | string | |
pbp_b1b_ded_amt | double | Per-stay/per-benefit-period inpatient-psych deductible in $ (double). RARELY set (0 non-null in 2026; ded_yn=2 for nearly all). All-time median ~$952, max $2,000 (near the Part A inpatient deductible). Most MA plans use copays, not a separate psych deductible. |
pbp_b1b_ded_amt_bonly | double | |
pbp_b1b_ded_amt_t1 | double | |
pbp_b1b_ded_amt_t2 | double | |
pbp_b1b_ded_amt_t3 | double | |
pbp_b1b_ded_yn | string | |
pbp_b1b_ded_yn_bonly | string | |
pbp_b1b_discharge_yn_bonly | string | |
pbp_b1b_esrd_copay_amt | double | |
pbp_b1b_esrd_maxenr_amt | double | |
pbp_b1b_hosp_ben_period | string | Cost-sharing accumulation basis (string). 2026: 3=per benefit period (4,684), 1=per stay (2,105), 2=per day (86), 4 (rare), NULL (543). Determines whether the copay/coins applies per-stay vs per-period. |
pbp_b1b_hosp_ben_period_oth | string | |
pbp_b1b_maxenr_amt | double | |
pbp_b1b_maxenr_amt_bonly | double | |
pbp_b1b_maxenr_per | string | |
pbp_b1b_maxenr_per_bonly | string | |
pbp_b1b_maxenr_per_bonly_d | string | |
pbp_b1b_maxenr_per_d | string | |
pbp_b1b_maxenr_type | string | |
pbp_b1b_maxenr_type_bonly | string | |
pbp_b1b_maxenr_yn | string | |
pbp_b1b_maxenr_yn_bonly | string | |
pbp_b1b_maxplan_amt_bonly | double | |
pbp_b1b_maxplan_cov_bonly | string | |
pbp_b1b_maxplan_per_bonly | string | |
pbp_b1b_maxplan_per_bonly_d | string | |
pbp_b1b_maxplan_type_bonly | string | |
pbp_b1b_maxplan_yn_bonly | string | |
pbp_b1b_mc_coins_cstshr_yn_t1 | string | |
pbp_b1b_mc_coins_cstshr_yn_t2 | string | |
pbp_b1b_mc_coins_cstshr_yn_t3 | string | |
pbp_b1b_mc_copay_cstshr_yn_t1 | string | |
pbp_b1b_mc_copay_cstshr_yn_t2 | string | |
pbp_b1b_mc_copay_cstshr_yn_t3 | string | |
pbp_b1b_mdcr_coins_cstshrs_yn | string | |
pbp_b1b_mdcr_copay_cstshrs_yn | string | |
pbp_b1b_pffs_copay_amt | double | |
pbp_b1b_pffs_maxenr_amt | double | |
pbp_b1b_refer_yn | string | |
pbp_b1b_refer_yn_bonly | string | |
observed_period | date | Date = Jan 1 of report_year; EQUALS effective_period_start for 100% of rows and is redundant with report_year. Annual granularity — does NOT distinguish quarters. |
asserted_at | date | Provenance: date this record/vintage was asserted into the silver table (e.g. '2026-05-16'). Single-valued per logical key. |
effective_period_start | date | |
effective_period_end | date | |
cms_vintage_sequence | int | Provenance: which CMS re-publication vintage was selected (int; 4 distinct overall, but exactly 1 per logical key — confirming dedup to best vintage). |
parse_revision | int | Provenance: parser revision used (int; 2 distinct overall, 1 per key). parser_artifact_hash = hash of the parser build. |
parser_artifact_hash | string | |
source_url | string | |
sha256_content_hash | string | |
pbp_b1b_* (367 benefit columns) | The Section B-1b 'Inpatient Hospital - Psychiatric' cost-share matrix. Grouped families: ded (7) deductible; copay (149) and coins (154) cost-sharing; auth (4) prior-auth flags; refer (2) referral; maxenr/maxplan/maxplan_bonly OOP caps; esrd/pffs/mc/mdcr special-population variants; hosp_ben_period accumulation basis; bendesc benefit-description. See gotchas for the day-phase encoding. | |
pbp_b1b cost-share SUB-STRUCTURE | Each copay/coins amount is indexed by day-phase family x interval x tier: family prefix mcs=Medicare-Covered Stay (the populated one, ~4-5k plans), lrd=Lifetime Reserve Days, ad=Additional Days (beyond Medicare), nmcs=Non-Medicare-Covered; intN=day-interval (int1/int2/int3); tN=cost tier (t1/t2/t3); bgnd/endd=begin/end DAY of the interval; amt=$ copay, pct=% coinsurance. Verified 2026: mcs int1=days 1-5 (~$333/day), int2=days 6-90 ($0). | |
pbp_b1b_*_yn flags | Boolean drivers, CMS encoding 1=Yes / 2=No (NOT 1/0). 2026: copay_yn 1=5,345/2=1,532; coins_yn 1=1,450/2=5,427 (most plans copay not coins); ded_yn mostly 2 (only 42 charge a psych deductible); auth_yn 1=6,485 (prior auth near-universal). mc_*_cstshr_yn_t1/2/3 = per-tier Medicare-covered cost-share flags. | |
pbp_b1b_*_bonly columns | 'Part-B-only enrollee' cost-share variant (separate copay/coins/ded/maxplan set). Essentially UNUSED in modern data (copay_yn_bonly populated for only 1 of 7,420 rows in 2026). Treat as near-empty. | |
effective_period_start / effective_period_end | Validity window of the plan-year: Jan 1 .. Dec 31 of report_year (dates). effective_period_start is the profiler's declared time_column; both are derivable from report_year. | |
source_url / sha256_content_hash | Provenance: source MRF/PBP file URL and SHA-256 of the source content for lineage/reproducibility. sha256 is single-valued per logical key. |
Query it
describe_data_source(source_fqn="medicare_silver.pbp_section_b1b_inpat_hosp_psych") # the card, live query_substrate(sql="SELECT * FROM medicare_silver.pbp_section_b1b_inpat_hosp_psych WHERE contract_id = '<value>' AND plan_id = '<value>' AND segment_id = '<value>' AND report_year = '<value>' AND quarter = '<value>' LIMIT 100")
| Item | Value |
|---|---|
| Typed tools that read it | get_pbp_benefit |
| Identity key | contract_id |
| Join | how_to_join(source_fqn="medicare_silver.pbp_section_b1b_inpat_hosp_psych") |
| Raw door | Athena (read-only via query_substrate): medicare_silver.pbp_section_b1b_inpat_hosp_psych |
| Note | Grain-governed; live in Glue / query_substrate. Source family pbp_benefits. |
This page as markdown: /docs-md/data/medicare_silver_pbp_section_b1b_inpat_hosp_psych.md · every page in one file: /llms-full.txt