# MA pbp mrx tier

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

Part D Rx tier detail from mrx_tier.txt, keyed by both CMS-native tier identifiers so legacy repeated rows remain distinct.

**Grain.** One row per (Medicare plan benefit segment) x (formulary tier) x (coverage phase) within a single CMS quarterly release. Concretely: contract_id x plan_id x segment_id x mrx_tier_id x mrx_tier_type_id, scoped to one report_year + quarter snapshot. Verified: the 7-tuple (contract_id, plan_id, segment_id, mrx_tier_id, mrx_tier_type_id, report_year, quarter) yields exactly 792,027 distinct = the full row_count (unique). Within a single snapshot (2023 Q4 = 34,169 rows) the 5-tuple contract_id+plan_id+segment_id+mrx_tier_id+mrx_tier_type_id is already unique; bid_id can substitute for contract+plan+segment because bid_id = contract_id_plan_id_segment_id.

**How to use it.** To get the current member copay for each formulary tier of a Medicare drug plan, filter to one snapshot and the initial-coverage phase, then read the retail-standard 30-day cost column. Example: SELECT mrx_tier_id, mrx_tier_label_list, mrx_tier_rstd_copay_1m AS copay_30d, mrx_tier_rstd_coins_1m AS coins_30d_pct FROM medicare_silver.pbp_mrx_tier WHERE report_year=2024 AND quarter=4 AND mrx_tier_type_id='1' AND bid_id='H0028_014_0' ORDER BY cast(mrx_tier_id AS int). Returns one row per tier (Preferred Generic $0, Generic $0, Preferred Brand $47, Non-Preferred $99, Specialty 33% coinsurance) - the patient's out-of-pocket drug cost ladder for that plan. Switch mrx_tier_type_id to '3' to see the coverage-gap (donut-hole) cost-sharing for the same tiers.

**Traps.**
- mrx_tier_id (the tier number 1-7) is NOT a unique key for a plan: each tier appears up to twice, split by mrx_tier_type_id = '1' INITIAL-coverage vs '3' COVERAGE-GAP cost-sharing. You MUST include mrx_tier_type_id, or filter to one phase (mrx_tier_type_id='1' for the normal/initial-coverage copay), or you double-count. Verified: all 116,195 type-3 rows carry mrx_tier_gap_cost_share; zero type-1 rows do.
- This table keeps MULTIPLE CMS quarterly releases per contract year and there is NO is_current flag. The 7-key includes both report_year AND quarter. For a single clean per-plan-per-tier view you must pick one snapshot, e.g. WHERE report_year=2024 AND quarter=4 (the latest available quarter for that year). Quarters retained per year are uneven: 2010-2017/2021/2025/2026 have only 1 quarter, 2018/2019/2023 have 4, 2020/2024 have 3, 2022 has 2 - so raw row counts per year are NOT comparable.
- The cost lives in ~200 sparse columns (channel x days-supply x copay/coinsurance). Any single row has only a few non-null cost fields and copay is mutually exclusive with coinsurance on the same row (verified: retail-std-30d copay_only=165k, coins_only=63k, both=49). The everyday number most users want is mrx_tier_rstd_copay_1m (retail-standard 30-day copay) OR mrx_tier_rstd_coins_1m (coinsurance %). A NULL copay does not mean free - check the coinsurance column and the right channel family.
- Identifier hygiene: plan_id zero-padding is inconsistent across vintages (unpadded in 2020, 3-digit padded elsewhere) - join/group on bid_id (= contract_id_plan_id_segment_id, canonical padded) rather than raw plan_id. effective_period_start/observed_period are just Jan-1 of report_year (annual), and asserted_at/cms_vintage_sequence are ETL provenance (2026-05 load dates), NOT data recency or a reliable quarter proxy.
- mrx_tier_label_list is the friendly tier name but is NULL for all of 2010 and sometimes a bare numeric code in early years; mrx_tier_cstshr_struct_type does NOT cleanly map to copay-vs-coinsurance (observed struct='2' rows carrying copays) - infer copay vs coinsurance from which value column is populated, not from the struct code.

| column | type | meaning |
|---|---|---|
| contract_id | string | CMS Medicare contract ID (e.g. H0022, H0028). First part of the plan identity. 1,427 distinct. |
| plan_id | string | Plan ID within the contract (e.g. 001, 014). 645 distinct. GOTCHA: zero-padding is inconsistent across years - stored unpadded ('1','14') in the 2020 vintage but 3-digit padded elsewhere; use bid_id for the canonical padded form. |
| segment_id | string | Plan benefit segment (regional/employer service-area split within a contract+plan). Almost always '0' (716k rows); '1'-'5'+ are segmented plans. Part of the grain. |
| version | double | CMS PBP software version (e.g. 3.0). Format/vintage marker, not a row version. |
| mrx_tier_id | string | Formulary tier NUMBER, 1-7 (1 typically Preferred Generic/lowest, 5-6 Specialty, 7 rare=119 rows). NOT unique by itself - see mrx_tier_type_id. |
| report_year | double | CMS contract/benefit year (double 2010.0-2026.0). Equals year of effective_period_start. Part of the grain (a given plan+tier recurs every year). |
| quarter | double | CMS quarterly RELEASE within the report_year (1-4). NOT a sub-annual benefit period - it identifies WHICH quarterly PBP publication the row came from. The table retains multiple quarterly releases per year, so quarter is REQUIRED for grain uniqueness. |
| bid_id | string | Derived plan key = contract_id // '_' // plan_id(padded) // '_' // segment_id (e.g. H0028_014_0). Canonical zero-padded plan identifier; equivalent to contract+plan+segment for grain purposes. |
| mrx_tier_alt_gap_covg_excl_yn | string |  |
| mrx_tier_benefit_type | string | Benefit-type code: '4' (705k, standard cost-share tier), '2' (45k), '3' (42k). |
| mrx_tier_copay_amt_inp_mmpmax | double |  |
| mrx_tier_copay_amt_inp_mmpmin | double |  |
| mrx_tier_copay_amt_ltc_mmpmax | double |  |
| mrx_tier_copay_amt_ltc_mmpmin | double |  |
| mrx_tier_copay_amt_mo_mmpmax | double |  |
| mrx_tier_copay_amt_mo_mmpmin | double |  |
| mrx_tier_copay_amt_mstd_mmpmax | double |  |
| mrx_tier_copay_amt_mstd_mmpmin | double |  |
| mrx_tier_copay_amt_oon_mmpmax | double |  |
| mrx_tier_copay_amt_oon_mmpmin | double |  |
| mrx_tier_copay_amt_rstd_mmpmax | double |  |
| mrx_tier_copay_amt_rstd_mmpmin | double |  |
| mrx_tier_cstshr_struct_type | string | Cost-share structure type code: '2' (583k), '1' (202k), rare '3'/'4', NULL for ~6.7k. Indicates the tier's cost-sharing structure; do not assume a clean 1=copay/2=coinsurance mapping (observed plans with struct='2' carrying copays). |
| mrx_tier_drug_type | string | Drug-category code the tier covers. Mixed encodings across years: short ('01','10','11','1') and 6-digit bitmask forms ('010010','001000') flagging Generic/Brand/Non-Medicare-OTC etc. Decode per the CMS PBP data dictionary; not a clean stable enum. |
| mrx_tier_excep_yn | string |  |
| mrx_tier_extd_days_yn | string |  |
| mrx_tier_extd_first_fill | string |  |
| mrx_tier_form_model_desc | string | The plan's full tier-structure description (comma-joined list of all tier labels for that plan), e.g. 'Preferred Generic, Generic, Preferred Brand, Non-Preferred Drug, Specialty Tier'. Repeats on every tier row of the plan. |
| mrx_tier_gap_all_drug_yn | string |  |
| mrx_tier_gap_cost_share | string | Coverage-gap cost-share indicator. Populated ONLY on type_id='3' (gap) rows - the discriminator proving type 3 = gap phase. |
| mrx_tier_gap_drug_type_lmtd | string |  |
| mrx_tier_gap_excluded_only_yn | string |  |
| mrx_tier_gap_part_drugs | string |  |
| mrx_tier_gap_part_includes | string |  |
| mrx_tier_includes | string |  |
| mrx_tier_includes_mmp | string |  |
| mrx_tier_inject_yn | string |  |
| mrx_tier_innpp_1m_num | double |  |
| mrx_tier_innpp_2m_num | double |  |
| mrx_tier_innpp_3m_num | double |  |
| mrx_tier_innpp_coins_1m | double |  |
| mrx_tier_innpp_coins_2m | double |  |
| mrx_tier_innpp_coins_3m | double |  |
| mrx_tier_innpp_coins_avg_1m | double |  |
| mrx_tier_innpp_coins_othnum | double |  |
| mrx_tier_innpp_copay_1m | double |  |
| mrx_tier_innpp_copay_2m | double |  |
| mrx_tier_innpp_copay_3m | double |  |
| mrx_tier_innpp_copay_daily | double |  |
| mrx_tier_innpp_copay_othnum | double |  |
| mrx_tier_innpp_othnum | double |  |
| mrx_tier_inp_1m_num | double |  |
| mrx_tier_inp_2m_num | double |  |
| mrx_tier_inp_3m_num | double |  |
| mrx_tier_inp_coins_1m | double |  |
| mrx_tier_inp_coins_2m | double |  |
| mrx_tier_inp_coins_3m | double |  |
| mrx_tier_inp_coins_avg_1m | double |  |
| mrx_tier_inp_coins_othnum | double |  |
| mrx_tier_inp_copay_1m | double |  |
| mrx_tier_inp_copay_2m | double |  |
| mrx_tier_inp_copay_3m | double |  |
| mrx_tier_inp_copay_daily | double |  |
| mrx_tier_inp_copay_othnum | double |  |
| mrx_tier_inp_othnum | double |  |
| mrx_tier_inpp_1m_num | double |  |
| mrx_tier_inpp_2m_num | double |  |
| mrx_tier_inpp_3m_num | double |  |
| mrx_tier_inpp_coins_1m | double |  |
| mrx_tier_inpp_coins_2m | double |  |
| mrx_tier_inpp_coins_3m | double |  |
| mrx_tier_inpp_coins_avg_1m | double |  |
| mrx_tier_inpp_coins_othnum | double |  |
| mrx_tier_inpp_copay_1m | double |  |
| mrx_tier_inpp_copay_2m | double |  |
| mrx_tier_inpp_copay_3m | double |  |
| mrx_tier_inpp_copay_daily | double |  |
| mrx_tier_inpp_copay_othnum | double |  |
| mrx_tier_inpp_othnum | double |  |
| mrx_tier_ira_ltcp_coins_1m | double |  |
| mrx_tier_ira_ltcp_copay_1m | double |  |
| mrx_tier_ira_mopfd_coins_1m | double |  |
| mrx_tier_ira_mopfd_coins_2m | double |  |
| mrx_tier_ira_mopfd_coins_3m | double |  |
| mrx_tier_ira_mopfd_copay_1m | double |  |
| mrx_tier_ira_mopfd_copay_2m | double |  |
| mrx_tier_ira_mopfd_copay_3m | double |  |
| mrx_tier_ira_mostd_coins_1m | double |  |
| mrx_tier_ira_mostd_coins_2m | double |  |
| mrx_tier_ira_mostd_coins_3m | double |  |
| mrx_tier_ira_mostd_copay_1m | double |  |
| mrx_tier_ira_mostd_copay_2m | double |  |
| mrx_tier_ira_mostd_copay_3m | double |  |
| mrx_tier_ira_oonp_coins_1m | double |  |
| mrx_tier_ira_oonp_coins_othnum | double |  |
| mrx_tier_ira_oonp_copay_1m | double |  |
| mrx_tier_ira_oonp_copay_othnum | double |  |
| mrx_tier_ira_rspfd_coins_1m | double |  |
| mrx_tier_ira_rspfd_coins_2m | double |  |
| mrx_tier_ira_rspfd_coins_3m | double |  |
| mrx_tier_ira_rspfd_copay_1m | double |  |
| mrx_tier_ira_rspfd_copay_2m | double |  |
| mrx_tier_ira_rspfd_copay_3m | double |  |
| mrx_tier_ira_rstd_coins_1m | double |  |
| mrx_tier_ira_rstd_coins_2m | double |  |
| mrx_tier_ira_rstd_coins_3m | double |  |
| mrx_tier_ira_rstd_copay_1m | double |  |
| mrx_tier_ira_rstd_copay_2m | double |  |
| mrx_tier_ira_rstd_copay_3m | double |  |
| mrx_tier_label_list | string | Human-readable tier name: Preferred Generic, Generic, Preferred Brand, Specialty Tier, Non-Preferred Drug, Non-Preferred Brand, Select Care Drugs, Vaccines, etc. GOTCHA: NULL for all 2010 rows (21,330) and some early years store a bare numeric code ('26','16','8') instead of a name. |
| mrx_tier_lbl | string |  |
| mrx_tier_lbl_2 | string |  |
| mrx_tier_lbl_4 | string |  |
| mrx_tier_lbl_5 | string |  |
| mrx_tier_lbl_6 | string |  |
| mrx_tier_locat | string |  |
| mrx_tier_locat_coins | string |  |
| mrx_tier_locat_copay | string |  |
| mrx_tier_locat_in | string |  |
| mrx_tier_locat_inp | string |  |
| mrx_tier_locat_ltc | string |  |
| mrx_tier_locat_mo | string |  |
| mrx_tier_locat_mop | string |  |
| mrx_tier_locat_mosplt | string |  |
| mrx_tier_locat_mostd | string |  |
| mrx_tier_locat_oon | string |  |
| mrx_tier_locat_rsplt | string |  |
| mrx_tier_locat_rstd | string |  |
| mrx_tier_ltcp_1m | double |  |
| mrx_tier_ltcp_b_1m | double |  |
| mrx_tier_ltcp_b_os | double |  |
| mrx_tier_ltcp_coins_1m | double |  |
| mrx_tier_ltcp_coins_b_1m | double |  |
| mrx_tier_ltcp_coins_g_1m | double |  |
| mrx_tier_ltcp_copay_1m | double |  |
| mrx_tier_ltcp_copay_b_1m | double |  |
| mrx_tier_ltcp_copay_b_daily | double |  |
| mrx_tier_ltcp_copay_daily | double |  |
| mrx_tier_ltcp_copay_g_1m | double |  |
| mrx_tier_ltcp_copay_g_daily | double |  |
| mrx_tier_ltcp_g_1m | double |  |
| mrx_tier_ltcp_g_os | double |  |
| mrx_tier_mo_1m_num | double |  |
| mrx_tier_mo_2m_num | double |  |
| mrx_tier_mo_3m_num | double |  |
| mrx_tier_mo_coins_1m | double |  |
| mrx_tier_mo_coins_2m | double |  |
| mrx_tier_mo_coins_3m | double |  |
| mrx_tier_mo_coins_othnum | double |  |
| mrx_tier_mo_copay_1m | double |  |
| mrx_tier_mo_copay_2m | double |  |
| mrx_tier_mo_copay_3m | double |  |
| mrx_tier_mo_copay_daily | double |  |
| mrx_tier_mo_copay_othnum | double |  |
| mrx_tier_mo_othnum | double |  |
| mrx_tier_monpp_1m_num | double |  |
| mrx_tier_monpp_2m_num | double |  |
| mrx_tier_monpp_3m_num | double |  |
| mrx_tier_monpp_coins_1m | double |  |
| mrx_tier_monpp_coins_2m | double |  |
| mrx_tier_monpp_coins_3m | double |  |
| mrx_tier_monpp_coins_othnum | double |  |
| mrx_tier_monpp_copay_1m | double |  |
| mrx_tier_monpp_copay_2m | double |  |
| mrx_tier_monpp_copay_3m | double |  |
| mrx_tier_monpp_copay_daily | double |  |
| mrx_tier_monpp_copay_othnum | double |  |
| mrx_tier_monpp_othnum | double |  |
| mrx_tier_mopp_1m_num | double |  |
| mrx_tier_mopp_2m_num | double |  |
| mrx_tier_mopp_3m_num | double |  |
| mrx_tier_mopp_coins_1m | double |  |
| mrx_tier_mopp_coins_2m | double |  |
| mrx_tier_mopp_coins_3m | double |  |
| mrx_tier_mopp_coins_othnum | double |  |
| mrx_tier_mopp_copay_1m | double |  |
| mrx_tier_mopp_copay_2m | double |  |
| mrx_tier_mopp_copay_3m | double |  |
| mrx_tier_mopp_copay_daily | double |  |
| mrx_tier_mopp_copay_othnum | double |  |
| mrx_tier_mopp_othnum | double |  |
| mrx_tier_mospfd_coins_1m | double |  |
| mrx_tier_mospfd_coins_2m | double |  |
| mrx_tier_mospfd_coins_3m | double |  |
| mrx_tier_mospfd_copay_1m | double |  |
| mrx_tier_mospfd_copay_2m | double |  |
| mrx_tier_mospfd_copay_3m | double |  |
| mrx_tier_mospfd_copay_daily | double |  |
| mrx_tier_mosplt_1m_num | double |  |
| mrx_tier_mosplt_2m_num | double |  |
| mrx_tier_mosplt_3m_num | double |  |
| mrx_tier_mosstd_coins_1m | double |  |
| mrx_tier_mosstd_coins_2m | double |  |
| mrx_tier_mosstd_coins_3m | double |  |
| mrx_tier_mosstd_copay_1m | double |  |
| mrx_tier_mosstd_copay_2m | double |  |
| mrx_tier_mosstd_copay_3m | double |  |
| mrx_tier_mosstd_copay_daily | double |  |
| mrx_tier_mostd_1m_num | double |  |
| mrx_tier_mostd_2m_num | double |  |
| mrx_tier_mostd_3m_num | double |  |
| mrx_tier_mostd_coins_1m | double |  |
| mrx_tier_mostd_coins_2m | double |  |
| mrx_tier_mostd_coins_3m | double |  |
| mrx_tier_mostd_copay_1m | double |  |
| mrx_tier_mostd_copay_2m | double |  |
| mrx_tier_mostd_copay_3m | double |  |
| mrx_tier_mostd_copay_daily | double |  |
| mrx_tier_nds_includes | string |  |
| mrx_tier_nds_includes_mmp | string |  |
| mrx_tier_oonp_1m_num | double |  |
| mrx_tier_oonp_3m_num | double |  |
| mrx_tier_oonp_coins_1m | double |  |
| mrx_tier_oonp_coins_3m | double |  |
| mrx_tier_oonp_coins_othnum | double |  |
| mrx_tier_oonp_copay_1m | double |  |
| mrx_tier_oonp_copay_3m | double |  |
| mrx_tier_oonp_copay_othnum | double |  |
| mrx_tier_oonp_othnumn | double |  |
| mrx_tier_ref_price_yn | string |  |
| mrx_tier_rspfd_coins_1m | double |  |
| mrx_tier_rspfd_coins_2m | double |  |
| mrx_tier_rspfd_coins_3m | double |  |
| mrx_tier_rspfd_coins_avg_1m | double |  |
| mrx_tier_rspfd_copay_1m | double |  |
| mrx_tier_rspfd_copay_2m | double |  |
| mrx_tier_rspfd_copay_3m | double |  |
| mrx_tier_rspfd_copay_daily | double |  |
| mrx_tier_rsplt_1m_num | double |  |
| mrx_tier_rsplt_2m_num | double |  |
| mrx_tier_rsplt_3m_num | double |  |
| mrx_tier_rsstd_coins_1m | double |  |
| mrx_tier_rsstd_coins_2m | double |  |
| mrx_tier_rsstd_coins_3m | double |  |
| mrx_tier_rsstd_coins_avg_1m | double |  |
| mrx_tier_rsstd_copay_1m | double |  |
| mrx_tier_rsstd_copay_2m | double |  |
| mrx_tier_rsstd_copay_3m | double |  |
| mrx_tier_rsstd_copay_daily | double |  |
| mrx_tier_rstd_1m_num | double |  |
| mrx_tier_rstd_2m_num | double |  |
| mrx_tier_rstd_3m_num | double |  |
| mrx_tier_rstd_coins_1m | double |  |
| mrx_tier_rstd_coins_2m | double |  |
| mrx_tier_rstd_coins_3m | double |  |
| mrx_tier_rstd_coins_avg_1m | double |  |
| mrx_tier_rstd_copay_1m | double |  |
| mrx_tier_rstd_copay_2m | double |  |
| mrx_tier_rstd_copay_3m | double |  |
| mrx_tier_rstd_copay_daily | double |  |
| mrx_tier_spec_yn | string | Specialty-tier flag: mostly NULL (739k, not asked/not applicable), '2'=11k, '1'=41k. Y/N-style coded field for whether the tier is a specialty tier. |
| mrx_tier_type_id | string | Coverage-phase variant of the tier: '1' = INITIAL-coverage cost-sharing (675,832 rows, the default), '3' = COVERAGE-GAP (donut-hole) cost-sharing (116,195 rows). The same tier appears as up to two rows, one per phase. VERIFIED: all type-3 rows have mrx_tier_gap_cost_share populated, zero type-1 rows do. This is the column that makes mrx_tier_id non-unique. |
| orgtype | string |  |
| part_d_enhncd_cvrg_demo | string |  |
| part_d_model_demo | string |  |
| pbp_a_ben_cov | string |  |
| pbp_a_plan_type | string |  |
| observed_period | date | Provenance: the period the data was observed for = Jan 1 of report_year (date). Equals effective_period_start; redundant with report_year. |
| asserted_at | date | Provenance: silver-load assertion date. Only two values: 2026-05-16 (the parse_revision=1 snapshots) and 2026-05-20 (parse_revision=2). It is the ETL load date, NOT when CMS published - do not use as data recency. |
| effective_period_start | date |  |
| effective_period_end | date |  |
| cms_vintage_sequence | int | CMS vintage ordinal (int 1-4). Roughly tracks release order within a year but NOT 1:1 with quarter (2021 Q1 = vintage 4; 2022 Q1 = vintage 2). Do not equate to quarter. |
| parse_revision | int | Parser revision (int): 1 or 2. Tracks the extractor version, pairs with asserted_at (rev1->2026-05-16, rev2->2026-05-20). |
| parser_artifact_hash | string |  |
| source_url | string |  |
| sha256_content_hash | string |  |
| source_row_ordinal | double |  |
| mrx_tier_bal_ltcp_copay_1m | double |  |
| mrx_tier_bal_ltcp_copay_day | double |  |
| mrx_tier_bal_mopfd_copay_1m | double |  |
| mrx_tier_bal_mopfd_copay_2m | double |  |
| mrx_tier_bal_mopfd_copay_3m | double |  |
| mrx_tier_bal_mopfd_copay_day | double |  |
| mrx_tier_bal_mostd_copay_1m | double |  |
| mrx_tier_bal_mostd_copay_2m | double |  |
| mrx_tier_bal_mostd_copay_3m | double |  |
| mrx_tier_bal_mostd_copay_day | double |  |
| mrx_tier_bal_oonp_copay_1m | double |  |
| mrx_tier_bal_rspfd_copay_1m | double |  |
| mrx_tier_bal_rspfd_copay_2m | double |  |
| mrx_tier_bal_rspfd_copay_3m | double |  |
| mrx_tier_bal_rspfd_copay_day | double |  |
| mrx_tier_bal_rstd_copay_1m | double |  |
| mrx_tier_bal_rstd_copay_2m | double |  |
| mrx_tier_bal_rstd_copay_3m | double |  |
| mrx_tier_bal_rstd_copay_day | double |  |
| mrx_tier_rstd_copay_1m / _2m / _3m |  | RETAIL-STANDARD pharmacy COPAY (flat dollar) for 1-/2-/3-month (30/60/90-day) supply. The headline retail out-of-pocket. Mutually exclusive with the coins counterpart on the same row (copay XOR coinsurance). Example: 2024Q4 H0028/014 Tier3 Preferred Brand = $47 (30-day). |
| mrx_tier_rstd_coins_1m / _2m / _3m |  | RETAIL-STANDARD pharmacy COINSURANCE (percent) for 1-/2-/3-month supply. Used instead of copay for percentage-cost tiers (e.g. Specialty 33%). 0-50 range. |
| mrx_tier_rspfd_copay_* / mrx_tier_rspfd_coins_* |  | RETAIL-PREFERRED pharmacy copay/coinsurance by days supply (lower cost-share preferred-network variant of rstd). |
| mrx_tier_mostd_copay_* / mrx_tier_mostd_coins_* |  | MAIL-ORDER-STANDARD copay/coinsurance by days supply (1m/2m/3m). Mail channel equivalent of rstd. |
| mrx_tier_mospfd_* / mrx_tier_mosstd_* / mrx_tier_mosplt_* |  | Mail-order PREFERRED / mail-order-standard-split / mail-order-split cost-share families - additional mail pharmacy channel/structure variants by days supply. |
| mrx_tier_ltcp_* (and _b_/_g_ variants) |  | LONG-TERM-CARE pharmacy cost-share family (copay/coinsurance, brand '_b_' vs generic '_g_', daily and 1-month). LTC channel pricing. |
| mrx_tier_oonp_*  |  | OUT-OF-NETWORK pharmacy cost-share family (copay/coinsurance, 1m/3m/othnum). What the member pays at a non-network pharmacy. |
| mrx_tier_inp_* / mrx_tier_innpp_* / mrx_tier_inpp_* |  | IN-NETWORK / in-network-preferred / in-network-pharmacy cost-share families (copay/coinsurance/avg by days supply). Network-channel pricing variants. |
| mrx_tier_mo_* / mrx_tier_monpp_* / mrx_tier_mopp_* |  | MAIL-ORDER (mo), mail-order-non-preferred (monpp), mail-order-preferred (mopp) cost-share families by days supply. |
| mrx_tier_copay_amt_*_mmpmin / _mmpmax |  | MMP (Medicare-Medicaid Plan / dual) min and max copay bounds per channel (inp, ltc, mo, mstd, oon, rstd). Channel-specific copay floor/ceiling for dual-eligible cost-sharing. |
| mrx_tier_ira_* |  | Inflation-Reduction-Act-era cost-share fields (mopfd/mostd/rspfd/rstd/ltcp/oonp copay & coins by days supply). Populate in recent years reflecting IRA Part D redesign; mostly NULL in older vintages. |
| mrx_tier_*_1m_num / _2m_num / _3m_num / _othnum |  | Days-supply quantity/count fields paired with the cost-share columns of each channel family (the 'number' of the supply band the copay/coins applies to). |
| mrx_tier_locat / mrx_tier_locat_*  |  | Location/pharmacy-placement codes per channel (in, inp, ltc, mo, mop, mostd, oon, rstd, coins, copay). Coded fields describing where/how the tier cost-share applies. |
| mrx_tier_includes / _includes_mmp / mrx_tier_nds_includes / _nds_includes_mmp |  | Codes for what the tier includes (and the MMP/non-defined-supplemental 'includes' variants). Coded references. |
| mrx_tier_extd_days_yn / mrx_tier_extd_first_fill |  | Extended-days-supply flag and extended first-fill code (Y/N-style coded). |
| mrx_tier_excep_yn / mrx_tier_inject_yn / mrx_tier_ref_price_yn / mrx_tier_alt_gap_covg_excl_yn |  | Y/N-style flags: exception applies, injectable, reference-pricing used, alternative gap-coverage excluded. |
| mrx_tier_gap_all_drug_yn / _gap_drug_type_lmtd / _gap_excluded_only_yn / _gap_part_drugs / _gap_part_includes |  | Coverage-gap scoping flags/codes (all drugs in gap, drug-type-limited, excluded-only, Part-D drugs, gap includes). Relevant to type_id='3' gap rows. |
| mrx_tier_lbl / _lbl_2 / _lbl_4 / _lbl_5 / _lbl_6 |  | Additional tier label slots (mostly NULL); supplementary naming used in some plan layouts. |
| mrx_tier_type_id (note) and orgtype |  | orgtype = CMS organization-type code (e.g. '05','01') describing the plan org (MA-PD, PDP, cost plan, etc.). |
| pbp_a_plan_type / pbp_a_ben_cov |  | Plan-level PBP attributes: pbp_a_plan_type = CMS plan-type code (e.g. '48','01'); pbp_a_ben_cov = benefit-coverage flag. Functionally dependent on the plan (not needed for grain). |
| part_d_model_demo / part_d_enhncd_cvrg_demo |  | Part D demonstration flags: model demo participation and enhanced-coverage demo ('Y'). Mostly NULL. |
| effective_period_start / effective_period_end |  | Benefit-year start/end dates (Jan 1 -> Dec 31 of report_year). GOTCHA: effective_period_start is Jan-1 of the year for ALL quarterly releases of that year, which is why profiler periodicity reads 'annual' (17 distinct year-starts) despite quarterly publication. |
| parser_artifact_hash / source_url / sha256_content_hash |  | Provenance: parser build hash, the CMS source ZIP URL (e.g. https://www.cms.gov/files/zip/pbp-benefits-2023-quarter-4.zip - confirms the quarterly-release origin), and content hash of the source file. |

Tools that read it: get_pbp_benefit

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