← Back to portfolio

Case Study - Public Health Policy Data

What the Readmissions Program Cannot See


CMS Hospital Readmissions Reduction Program, FY2026 release. 18,330 hospital-measure records across 3,055 hospitals.

The dataset


Medicare's Hospital Readmissions Reduction Program penalizes hospitals whose 30 day readmission rates exceed what CMS predicts for their patient mix. It covers six conditions and it moves real money: penalties reach up to three percent of a hospital's Medicare inpatient payments.

CMS publishes the hospital level results. This analysis uses the FY2026 file, covering discharges from 07/01/2021 through 06/30/2024. That is the last three year performance window before CMS shortens the period to two years.

The obvious question, which hospitals score worst, is already answered by the file and is not worth asking. The interesting questions are about the measurement itself.

36.1%
Of records have no score
21.2%
Scored on all six conditions
222
Hospitals scored on none
~48%
Above expected, by construction

One: a third of the program is invisible


A hospital needs at least 25 eligible discharges in a condition before CMS will score it. Below that, the measure is suppressed. That rule is defensible, since a rate computed on eight patients is noise. But the scale of what it removes is not obvious until you count it.

6,610 of 18,330 hospital-measure records, 36.1 percent, carry no excess readmission ratio at all.

Pneumonia 11.1% (340 of 3,055) Heart failure 14.2% (434 of 3,055) COPD 24.0% (732 of 3,055) Heart attack 43.2% (1,319 of 3,055) Hip & knee 52.6% (1,608 of 3,055) Bypass surgery 71.3% (2,177 of 3,055)
Share of hospital-measure records with no published ratio, by condition. Bypass surgery is suppressed for nearly three quarters of hospitals.
ConditionRecordsScoredSuppressedSuppressed
Pneumonia3,0552,71534011.1%
Heart failure3,0552,62143414.2%
COPD3,0552,32373224.0%
Heart attack3,0551,7361,31943.2%
Hip & knee3,0551,4471,60852.6%
Bypass surgery3,0558782,17771.3%

Pneumonia and heart failure are common enough that most hospitals clear the threshold. Bypass surgery is not: only 21.2 percent of hospitals are scored on all six conditions, and 222 hospitals, 7.3 percent of the file, receive no score on any condition at all.

Conditions scoredHospitalsShare
02227.3%
12026.6%
22397.8%
348415.8%
459919.6%
566221.7%
664721.2%

Two: the blindness is systematic


Missing data matters differently depending on whether it is random. Here it is not. Group hospitals by total reported discharges and the pattern is monotone.

0 3 6 2.51 under 200 n=444 3.83 200 to 499 n=636 4.86 500 to 1499 n=1,014 5.7 1500 and up n=475
Average number of the six conditions a hospital is scored on, by total reported discharges. Computed only over hospitals with at least one reported discharge count, which means the very smallest hospitals are underrepresented even here.

The smallest hospitals are scored on 2.51 of six conditions on average. The largest are scored on 5.70. A program built to improve care quality has, by the mechanics of its own minimum, close to no visibility into small and rural hospitals.

Three: roughly half must lose, and that is arithmetic


The excess readmission ratio is predicted performance divided by expected performance, where expected comes from a model fitted across hospitals. It is relative. Its center is 1.0 by construction.

1.0 = as expected 0.71 1.00 1.36
Distribution of the heart failure excess readmission ratio across all scored hospitals. Blue is at or below expected, red is above. The distribution is centered on 1.0 because the measure is defined relative to other hospitals.
ConditionScoredMeanSDMinMaxAbove 1.0
Heart attack1,7361.00180.06680.68391.263949.7%
Bypass surgery8781.00180.09660.74341.423749.9%
COPD2,3231.00110.0460.86811.254547.2%
Heart failure2,6211.00140.0650.71371.360648.9%
Hip & knee1,4471.0040.15570.46981.629747.9%
Pneumonia2,7151.00150.06630.79671.425546.8%

Every one of the six conditions puts between 46.8 and 49.9 percent of scored hospitals above 1.0. That is not a finding about hospital quality. It is a property of the definition. If every hospital in the country cut readmissions by a third tomorrow, roughly half would still sit above expected, and the penalty pool would not empty.

Worth being careful here: this is a criticism of what the ratio can express, not a claim that the program fails. A relative measure is a reasonable way to allocate a fixed penalty pool. But it cannot answer "did readmissions improve nationally," and it is regularly read as though it can.

Four: the six conditions are not one signal


The program treats a hospital's performance as a single thing to be penalized. If that were right, a hospital good at heart failure should be good at pneumonia. Among the 647 hospitals scored on all six conditions, it mostly is not.

1.00 0.32 0.23 0.34 0.14 0.31 Heart attack 0.32 1.00 0.09 0.19 0.17 0.17 Bypass surgery 0.23 0.09 1.00 0.30 0.14 0.25 COPD 0.34 0.19 0.30 1.00 0.14 0.41 Heart failure 0.14 0.17 0.14 0.14 1.00 0.07 Hip and knee 0.31 0.17 0.25 0.41 0.07 1.00 Pneumonia Heart Bypass COPD Heart Hip Pneumonia
Pearson correlation between excess readmission ratios across conditions, computed only over the 647 hospitals scored on all six, so every cell is measured on the same population.

Heart failure and pneumonia track each other at 0.41, the strongest pair in the matrix, and that is still weak. Hip and knee replacement against pneumonia is 0.07, effectively nothing. The average hospital's spread across its own six conditions is 0.2138, roughly three times the standard deviation of most individual measures.

A hospital penalized on one condition is only slightly more likely to be penalized on another. Whatever the ratio captures, it is closer to condition-specific performance than to an institution-wide property.

Five: state variation, with a caveat


Averaging across scored measures, states separate by about eight points between the extremes. States with fewer than 60 scored records are excluded, because ranking a state on a handful of hospitals is exactly the error this analysis is about.

BestMean ratioRecordsWorstMean ratioRecords
UT0.955999MA1.0344240
OR0.9599131NJ1.0277272
WA0.9636207FL1.0229771
KS0.9662157IL1.0194491
CO0.9674183MS1.0141185

This is the weakest finding here and it should be treated that way. State means are unweighted across hospitals of very different size, and the coverage bias above means small-hospital states are represented by their larger hospitals. It is a place to start looking, not a conclusion.

What this analysis does not establish

Nothing here is causal. This is a cross-sectional file covering one performance window, so it can describe how the measurement behaves and cannot say what drives a hospital's readmissions.

The suppression rule also cuts both ways in the analysis itself. Discharge counts are suppressed for the same low-volume records, so the volume analysis is computed on hospitals that reported at least one count. The hospitals most affected by the coverage gap are partly missing from the evidence for the coverage gap.

CMS also suppressed the pneumonia measure for FY2023 and excluded discharges from December 2019 through June 2020 from several performance periods because of COVID. This file is not affected, since its window starts in July 2021, but any comparison across program years must account for it.

Method


Aggregation in SQL through DuckDB, correlation and reshaping in pandas. The two numeric columns arrive as text, because CMS writes N/A and Too Few to Report into numeric fields, so both are read with TRY_CAST: a suppressed value becomes null rather than throwing, which is correct, since suppressed means unknown and not zero.

The load is followed by a reconciliation assert. Every record must be either scored or suppressed, never both and never neither.

SELECT
    count(*)              AS rows_total,
    count(err)            AS scored,
    count(*) - count(err) AS suppressed
FROM hrrp
-- 11,720 scored + 6,610 suppressed = 18,330 rows

That check exists because a silent cast failure would have made every rate on this page wrong in the same direction, and nothing downstream would have looked odd. The full analysis script is in the repository.

What I would want next