Medicare Advantage, Part D, Medicaid

MA hedis rau measures

medicare_silver.hedis_rau_measures·live·silver·annual·Medicare Advantage HEDIS Quality
Rows
N/A
Columns
20
History
2021 to 2025
Card
yesgrain, traps, filters
Typed tools
0

What it is

  1. 1CMS Medicare Advantage HEDIS Risk-Adjusted Utilization (RAU) public-use file: per-MA-contract observed-vs-expected utilization counts for 5 hospital/ED utilization measures (acute hospital stays, ED visits, readmissions, etc.), risk-adjusted against a national MA benchmark.
  2. 2It is a utilization/quality benchmark dataset, NOT a price/cost dataset — useful for assessing how heavily an MA plan's members use high-cost inpatient/ED care relative to expected.

Grain

KeyGrain
contract_idmeasure_codeindicator_keyreport_year
  1. 1One row per (MA contract × HEDIS RAU measure × measure indicator/stratum × report year).
  2. 2Verified: 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 read it

  1. 1Compute 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.
  2. 2Answers 'which MA plans had higher-than-expected acute hospitalization in 2025' (O/E > 1 = members hospitalized more than the national risk-adjusted benchmark predicts).
  3. 3Swap measure_code to PCR for readmissions or EDU for ED utilization.

Traps

  1. 1NOT 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.
  2. 2The 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.
  3. 3Nulls 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.
  4. 4indicator_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.
  5. 5observed_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.
  6. 6This 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.

Columns (20)

ColumnTypeMeaning
contract_idstringCMS 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_codestringThe 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_keystringCMS 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).
denominatorintEligible-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_countintMember 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_countintMembers 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_countintMembers 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_countdoubleObserved 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_countdoubleRisk-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_variancedoubleStatistical variance of the expected count, used to build confidence intervals around the O/E ratio. Populated wherever observed/expected are (all measures).
report_yearintCMS 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_perioddateStart 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_atdateIngestion/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_startdateStart 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_enddateEnd 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_sequenceintSequence 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_revisionintVlada parser revision number. Constant = 1 for all rows (single parse). Pipeline metadata.
parser_artifact_hashstringSHA-256 of the parser artifact that produced the row (provenance). One hash per report_year file.
source_urlstringOrigin 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_hashstringSHA-256 of the source file content (provenance/integrity). One distinct hash per report_year — no byte-duplicate source files.

Query it

describe_data_source(source_fqn="medicare_silver.hedis_rau_measures")     # the card, live
query_substrate(sql="SELECT * FROM medicare_silver.hedis_rau_measures WHERE contract_id = '<value>' AND measure_code = '<value>' AND indicator_key = '<value>' AND report_year = '<value>' LIMIT 100")
ItemValue
Typed tools that read itnone; raw SQL
Identity keycontract_id
Joinhow_to_join(source_fqn="medicare_silver.hedis_rau_measures")
Raw doorAthena (read-only via query_substrate): medicare_silver.hedis_rau_measures
NoteGrain-governed; live in Glue / query_substrate. Source family ma_hedis_annual.

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