Readmission Effectiveness Report

Hospital leaders, doctors, nurses, and quality teams could use a readmission report like this one to lower financial penalties, improve patient care quality, and spot gaps in recovery plans.

About this report

This report demos a 30-day readmission effectiveness dashboard modeled on CMS HRRP's structure (all-cause and condition-specific readmission rates, time-to-readmission, descriptive index-stay correlates, a rolling trend view), computed from a synthetic EHR dataset generated by Synthea (https://github.com/synthetichealth/synthea).

Data covers index discharges from 2025-02-01 through 2026-06-01.

Raw rate vs. CMS SRR — read this before citing any number below

Every rate in this report is an unadjusted, observed 30-day all-cause or condition-specific readmission rate computed directly from index-stay and readmission counts. It does not perform CMS's Hospital Readmissions Reduction Program (HRRP) hierarchical risk-adjustment methodology, which accounts for patient case mix, comorbidities, and planned readmissions using claims history this dataset does not contain. This report should not be presented as a substitute for the official CMS Standardized Readmission Ratio (SRR) or Hospital Compare figures for any real facility.

This dataset also cannot support: boarding time, ICU transfer delay, or LWBS (left without being seen) rate - none of these are calculable from Synthea's native output, which has no ADT/transfer-event granularity. Discharge disposition (home / SNF / home-health) is also not a field Synthea's native export produces, so it is not available in the index-stay correlates below. A hip/knee replacement cohort is out of scope for this dataset - the underlying population was generated from three condition modules (CHF, COPD, AMI) and does not include an orthopedic-surgery module. Pneumonia and Diabetes cohorts are likewise out of scope, both confirmed empirically rather than assumed: Synthea has no standalone pneumonia disease-progression module to generate it from at a usable population size, and its diabetes module never itself triggers a hospital admission (0 diabetes-reason-coded inpatient stays out of 608 in a 2,000-patient test generation) - see README-readmissions.md for detail.

5.0%
All-cause 30-day readmission rate (raw)
420
Index inpatient stays analyzed
19.0%
Readmissions within 7 days (early bounce-backs)
12.9
Avg. days to readmission

Monthly readmission-rate trend

All-cause raw 30-day readmission rate by month of index discharge, most recent 12 months of data.

Cohort comparison

Condition-specific rates, computed separately per cohort since CMS penalizes at the condition level, not the hospital-wide level. Cohorts with fewer than 20 qualifying index stays are marked low-confidence rather than flagged.

CohortnReadmit rateTargetAvg. days to readmit
CHF 232 7.3% 22.0% 14.1
AMI 185 2.2% 17.0% 7.6
COPD small n 3 0.0% 20.0% 0.0

Time-to-readmission distribution

Readmissions within 7 days often reflect care-transition failures; later readmissions may reflect disease progression. Descriptive only - this report does not attribute a cause to either bucket.

Index-stay characteristics

Descriptive only, not causal. These are simple averages compared between readmitted and non-readmitted index stays - not a controlled or risk-adjusted comparison. A synthetic dataset with no true confounding structure can show patterns that would not hold in real data, so no clinical explanation should be inferred from this comparison.

nAvg. length of stay (days)Avg. meds at dischargeDischarge disposition
Readmitted within 30 days 21 4.3 8.2 Not available from source data
Not readmitted within 30 days 399 3.6 8.0 Not available from source data

What changed

The all-cause 30-day readmission rate held steady from 0.0% in 2026-03 to 0.0% in 2026-06 (+0.0% percentage points, n=3). The largest cohort-level shift was CHF, which held steady from 0.0% to 0.0% (n=2). This summary reports only the direction and size of the change in the underlying numbers - it does not attempt to explain the clinical cause, which this dataset cannot support (see the scope caveat below).

Metric definitions

All-cause 30-day readmission rate (raw)
Share of inpatient index stays followed by another inpatient encounter for the same patient within 30 days of discharge. "Raw" means unadjusted for case mix or comorbidities - see the scope-caveat panel above.
Condition-specific rate
The same calculation, restricted to index stays whose admitting diagnosis falls in one of the three tracked cohorts (CHF, COPD, AMI - see the scope-caveat panel above for why Pneumonia, Diabetes, and hip/knee replacement aren't tracked in this dataset). Matches how CMS HRRP penalizes hospitals at the condition level rather than hospital-wide.
Early bounce-back
A readmission within the configured early-readmission threshold (default 7 days) of discharge - often associated with care-transition failures rather than new disease progression.
Censored index stay
An index stay discharged too close to the end of the available data for a 30-day readmission window to have fully elapsed. Excluded from every rate on this page so the most recent period isn't under-counted.
Length of stay
Days between index-stay admission and discharge.

Development notes

This application consists of a data generator, metrics/analytics engine, and this live web app. It was built as a deliberately gated, three-phase build (data import → metrics/analytics engine → web app).

Data generator: two offline stages

  1. Stage A - Synthea generation. Synthea is restricted to three modules - congestive_heart_failure, copd, myocardial_infarction - and an age range of 40-95 (CHF/COPD/AMI are diseases of older adulthood; an unrestricted age range mostly generates patients who never trigger a hospitalization). Two conditions from the original five-cohort plan are not generated, both confirmed by actually running Synthea and inspecting its output rather than assumed - see "Raw rate vs. CMS SRR" above for detail: Pneumonia (no standalone Synthea module exists for it) and Diabetes (Synthea's diabetes module never itself triggers a hospital admission).
  2. Stage B - reshape into EMR tables. Read Synthea's native CSV export (patients.csv, encounters.csv, conditions.csv, medications.csv) and load it into the EMR-style schema, then derive readmission_events - one row per qualifying inpatient index stay, with its 30-day outcome already resolved.
  3. This report shows raw/observed rates, not CMS's risk-standardized measure - see the "Raw rate vs. CMS SRR" panel above for the full documentation of constraints.

Tech stack

Like the Restaurant Report, this project uses Python 3, Flask, SQLite, Jinja2, Chart.js, python-dotenv, gunicorn, and pytest. The one addition here is generation-time only: a local JRE and a Synthea checkout, used to build the synthetic EHR dataset offline.