# MA hedis rau measures

`medicare_silver.hedis_rau_measures` · Medicare Advantage, Part D, Medicaid · status live

Tall format: one row per (contract, RAU measure, indicator, year). Reports observed vs expected counts (with variance) for risk- adjusted utilization measures (admissions, ED visits, etc.). Added to MA-HEDIS PUFs starting in 2021. Per-row c

**Grain.** One row per (MA contract × HEDIS RAU measure × measure indicator/stratum × report year). Verified: 299,901 rows = 299,901 distinct on (contract_id, measure_code, indicator_key, report_year). report_year, observed_period, effective_period_start, and effective_period_end are all 1:1 with each other (each report_year = one calendar-year period), so report_year alone completes the key — the other date columns are redundant for grain purposes.

**How to use it.** Compute a contract's risk-adjusted acute-hospital utilization index for a year: SELECT contract_id, SUM(observed_count) AS obs, SUM(expected_count) AS exp, SUM(observed_count)/SUM(expected_count) AS oe_ratio FROM hedis_rau_measures WHERE measure_code='AHU' AND report_year=2025 GROUP BY contract_id ORDER BY oe_ratio DESC. Answers 'which MA plans had higher-than-expected acute hospitalization in 2025' (O/E > 1 = members hospitalized more than the national risk-adjusted benchmark predicts). Swap measure_code to PCR for readmissions or EDU for ED utilization.

**Traps.**
- NOT a cost/price table. This is utilization & risk-adjusted quality (counts of hospital/ED events vs expected). There are no dollars, rates, or prices anywhere. Use it to characterize how intensively an MA plan's members consume high-cost care, not to price anything.
- The key looks like 5 columns but is really 4. The profiler reports (contract_id, measure_code, indicator_key, effective_period_start, observed_period) — but effective_period_start, observed_period, effective_period_end and report_year are all 1:1, so (contract_id, measure_code, indicator_key, report_year) is the true minimal grain (299,901 = 299,901). Don't join on the date columns expecting extra resolution.
- Nulls are STRUCTURAL and measure-specific, not missing data. Each measure publishes a different variable set: denominator only for HFS/PCR; non_outlier_member_count only for AHU/EDU/HPC; member_count only for AHU/HPC/PCR (and only in some years). Never write WHERE denominator IS NOT NULL expecting all measures — you'd silently drop AHU/HPC/EDU entirely. observed_count/expected_count/count_variance are the only fields populated across all 5 measures.
- indicator_key is opaque in this table. It's a CMS catalog key (e.g. 201583_20) whose human meaning (age band, O/E component) lives in the external MADictionary{YEAR}.xlsx which is NOT ingested. You cannot label strata from this table alone; you must join the (not-yet-loaded) dictionary. The '_10'/'_20' suffix is part of the dictionary code, not a generic flag.
- observed_count = 0 (36,795 rows) is a real zero (no events), totally different from NULL (suppressed cell or non-published variable). ~3,150 rows are fully suppressed (every numeric column null) — keep them out of denominators. Treat 0 and NULL distinctly.
- This is the RAU sibling, separate from medicare_silver.hedis_measures. hedis_measures holds clinical quality RATES (Lcl/Ucl/Rate) across ~all HEDIS measures; this table holds only the 5 risk-adjusted UTILIZATION measures with observed/expected COUNTS. RAU first appears in 2021 (no 2019/2020 here), and EDU/HFS first appear in 2022. cms_vintage_sequence/parse_revision are constant 1 and asserted_at is a constant load-date — none are real per-row history, so there is no is_current / snapshot semantics to worry about.

| column | type | meaning |
|---|---|---|
| contract_id | string | CMS Medicare Advantage contract ID. 747 distinct. Prefix H = local MA/MAPD contracts (719), R = Regional PPO contracts (28). The plan-level entity each utilization figure is reported for. No E (employer) or S (PDP-standalone) contracts here. |
| measure_code | string | The HEDIS RAU measure. Exactly 5 values, all hospital/ED utilization measures: AHU = Acute Hospital Utilization (96,579 rows, 55 indicators, all 5 yrs), HPC = Hospitalization for Potentially Preventable Complications (90,027 rows, 36 ind, 5 yrs), EDU = Emergency Department Utilization (58,247 rows, 27 ind, 4 yrs — absent 2021), PCR = Plan All-Cause Readmissions (35,544 rows, 12 ind, 5 yrs), HFS = Hospitalization Following SNF Discharge (19,504 rows, 8 ind, 4 yrs — absent 2021). |
| indicator_key | string | CMS dictionary key for the specific stratum / sub-indicator within a measure, format 'NNNNNN_20' or 'NNNNNN_10' (138 distinct overall). It is a CMS-WIDE catalog key, not contract-specific — every indicator_key appears for all reporting contracts in its measure-year (e.g. each PCR indicator spans all 747 contracts). Decodes age bands / observed-vs-expected components per the external MADictionary{YEAR}.xlsx, which is NOT ingested into this table, so the key is opaque here (you cannot get the human stratum name from this table alone). |
| denominator | int | Eligible-population denominator for the stratum. STRUCTURALLY NULL except for HFS and PCR (the index-event-based measures); always null for AHU/HPC/EDU. Range 0–326,448. A null here means CMS does not publish a denominator variable for that measure, not missing data. |
| member_count | int | Member count for the stratum. Populated only for AHU, HPC, and PCR, and only PARTIALLY within those — the same indicator_key has it in some report years but not others (CMS changed which variables it publishes per measure over time). Never populated for EDU/HFS. Range 0–1,304,625. Null carries meaning (variable not in CMS's published set for that measure/year). |
| non_outlier_member_count | int | Members excluded from outlier trimming (the in-distribution population used for the risk-adjusted O/E calc). Populated for AHU, EDU, HPC; always null for HFS and PCR. Range 0–1,934,303. This is the primary 'eligible members' field for the count-based measures. |
| outlier_member_count | int | Members flagged as statistical outliers (extreme utilizers, trimmed in the risk-adjustment). Populated for AHU, EDU, HPC, and PCR; null for HFS. Small relative to non_outlier counts (e.g. 32 vs 1,772). |
| observed_count | double | Observed number of utilization events (e.g. acute discharges, ED visits, readmissions) for the contract/stratum. Populated for ALL 5 measures (the core measured quantity). Range 0–609,571; avg ~810. 36,795 rows are a true 0 (member group had zero events) — distinct from null. |
| expected_count | double | Risk-adjusted EXPECTED number of events for the same population, predicted from the national MA model. Populated for all measures. Range 0–519,521. The observed_count / expected_count ratio is the risk-adjusted O/E utilization index (>1 = uses more high-cost care than expected, <1 = less). |
| count_variance | double | Statistical variance of the expected count, used to build confidence intervals around the O/E ratio. Populated wherever observed/expected are (all measures). |
| report_year | int | CMS HEDIS reporting year / public-file vintage, 2021–2025 (5 values). Drives row volume (2021=39,300 rising to ~65–70K in 2023–2025 as more measures/contracts were added). This is the file/publication year label; the underlying measurement period is the prior clinical year per HEDIS convention. |
| observed_period | date | Start of the measurement period as a date, always Jan-1 of report_year (2021-01-01 … 2025-01-01). 1:1 with report_year — redundant with it. 5 distinct values. |
| asserted_at | date | Ingestion/assertion date stamped by Vlada's pipeline — a constant 2026-05-15 for every row (the single load run). Pipeline metadata, not source data; do not use as a real event time. |
| effective_period_start | date | Start of the effective annual window, = Jan-1 of report_year (2021-01-01 … 2025-01-01). 1:1 with report_year. The profiler's 'time column'; periodicity is annual (avg gap 365 days). |
| effective_period_end | date | End of the effective annual window, = Dec-31 of report_year. 1:1 with report_year. Confirms each row covers one full calendar year. |
| cms_vintage_sequence | int | Sequence number for re-issues of a CMS vintage. Constant = 1 for ALL rows (no measure-year has been re-published/superseded). No snapshot-dedup needed. |
| parse_revision | int | Vlada parser revision number. Constant = 1 for all rows (single parse). Pipeline metadata. |
| parser_artifact_hash | string | SHA-256 of the parser artifact that produced the row (provenance). One hash per report_year file. |
| source_url | string | Origin CMS download URL — exactly one per report_year: https://www.cms.gov/files/zip/ma-hedis-pufs-YYYY.zip. Confirms one source ZIP per year, public CMS MA HEDIS PUF. |
| sha256_content_hash | string | SHA-256 of the source file content (provenance/integrity). One distinct hash per report_year — no byte-duplicate source files. |

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