Surfaces which EHR alerts are being systematically ignored or overridden, and recommends suppression or escalation thresholds to reduce clinician fatigue without compromising patient safety.
Alert fatigue is a documented patient safety crisis. Peer-reviewed research shows:
- Drug-allergy alert override rates reach 98.9% at academic medical centers (Nanji et al., 2018 — JAMIA)
- Only 7.3% of EHR alerts are clinically appropriate (van der Sijs et al.)
- ICU monitors generate 187 alert warnings per patient per day (Drew et al., 2014)
- Override rates for critical drug-drug interaction alerts dropped from 100% acceptance to 8.4% after EHR system changes, suggesting clinicians stopped reading them entirely (Slight et al., 2018 — Journal of General Internal Medicine)
- A 2025 systematic review in JMIR classifies alert fatigue as a chronic issue with direct consequences for care quality, GP burnout, and medicolegal risk
When clinicians reflexively dismiss alerts — including critical ones — because the volume of noise is too high, patients are at risk. This system helps identify which alerts are generating noise and which are generating signal.
- Ingests alert events from any EHR or clinical decision support system
- Calculates override rate, ignore rate, and clinician response time per alert type
- Scores each clinician with a composite fatigue score (override rate + ignore rate + response time)
- Recommends suppression, downgrade, or escalation review for alerts crossing the noise threshold
- Protects high/critical severity alerts from auto-suppression — flags them for clinical review instead
| Method | Endpoint | Description |
|---|---|---|
POST |
/alerts |
Ingest a single alert event |
GET |
/analysis/overview |
High-level metrics across all alerts |
GET |
/analysis/alert-types |
Override/ignore rates per alert type |
GET |
/analysis/clinicians |
Per-clinician fatigue scores |
GET |
/analysis/recommendations |
Suppression/escalation recommendations |
| Noise Rate | Severity | Recommendation |
|---|---|---|
| ≥ 90% | low / moderate | Suppress — remove or convert to passive display |
| 80–89% | low / moderate | Downgrade — raise trigger threshold or make non-interruptive |
| ≥ 80% | high / critical | Escalate review — clinical sign-off required before any change |
pip install -r requirements.txt
cp .env.example .env
# Edit .env with your PostgreSQL credentials
# Apply schema
psql -U postgres -d alpha1 -f schema/schema.sql
# Seed 90 days of realistic alert data (mirrors published override rate patterns)
python seeds/seed_alert_data.pyuvicorn app.main:app --reloadAPI docs at http://localhost:8000/docs
# Overview
curl http://localhost:8000/analysis/overview
# Alert types sorted by override rate
curl "http://localhost:8000/analysis/alert-types?severity=high"
# Clinician fatigue scores (physicians only)
curl "http://localhost:8000/analysis/clinicians?role=physician"
# Suppression recommendations
curl http://localhost:8000/analysis/recommendationsSample recommendation response:
{
"alert_type": "drug_allergy",
"severity": "high",
"total_fired": 3847,
"noise_rate_pct": 98.1,
"recommendation": "escalate_review",
"rationale": "98% noise rate on a high severity alert. Clinical review required before suppression — missed firings carry patient safety risk."
}Pre-built queries in /queries:
-- Which alerts have the highest noise?
\i queries/override_rates.sql
-- Response time by severity (critical alerts with long times = danger signal)
\i queries/response_times.sql
-- Clinician fatigue leaderboard
\i queries/fatigue_by_clinician.sqlpytest tests/ -v- Python — analysis logic, fatigue scoring, recommendation engine
- FastAPI — REST API
- PostgreSQL — event storage, analytical views
- SQL — override rates, response times, suppression candidates
- Nanji et al. (2018). Evaluation of perioperative medication errors and adverse drug events. Anesthesiology. — 98.9% drug-allergy override rate
- Drew et al. (2014). Insights into the problem of alarm fatigue with physiologic monitor devices. PLOS ONE. — 187 alarms/patient/day in ICU
- Slight et al. (2018). Reduced effectiveness of interruptive DDI alerts after EHR conversion. Journal of General Internal Medicine.
- AHRQ PSNet. Alert Fatigue. https://psnet.ahrq.gov/primer/alert-fatigue
- JMIR (2025). Understanding alert fatigue in primary care. https://www.jmir.org/2025/1/e62763