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.
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.
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.
All-cause raw 30-day readmission rate by month of index discharge, most recent 12 months of data.
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.
| Cohort | n | Readmit rate | Target | Avg. 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 |
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.
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.
| n | Avg. length of stay (days) | Avg. meds at discharge | Discharge 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 |
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).
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).
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).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.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.