# MA pbp section b1b inpat hosp psych

`medicare_silver.pbp_section_b1b_inpat_hosp_psych` · Medicare Advantage, Part D, Medicaid · status partial

Section B1b: Inpatient hospital psych cost-share. Split from b1a in 2010. Coverage: 2010-present.

**Grain.** One row per Medicare Advantage plan-segment per benefit year per CMS quarterly release snapshot. The MINIMAL verified-unique key is contract_id + plan_id + segment_id + report_year + quarter, which yields exactly 200,746 distinct combinations = the full row_count (verified one-to-one). 'quarter' is the within-year CMS publication snapshot, so a single plan-year can appear up to 4 times (once per released quarter in 2018+).

**How to use it.** Get 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'. Answers: '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.**
- MINIMAL 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.
- `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.
- No `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.
- Cost-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 $.
- Y/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.
- Sibling 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.

| 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. |

Tools that read it: get_pbp_benefit

Query it: `query_substrate` with `SELECT ... FROM medicare_silver.pbp_section_b1b_inpat_hosp_psych WHERE ... LIMIT 100`; read `describe_data_source("medicare_silver.pbp_section_b1b_inpat_hosp_psych")` first.
