Skip to content

Alicia089/Alpha1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Clinical Alert Fatigue Analyzer

Surfaces which EHR alerts are being systematically ignored or overridden, and recommends suppression or escalation thresholds to reduce clinician fatigue without compromising patient safety.

The Problem

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.

What It Does

  • 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

API Endpoints

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

Recommendation Logic

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

Setup

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.py

Running

uvicorn app.main:app --reload

API docs at http://localhost:8000/docs

Sample API Calls

# 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/recommendations

Sample 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."
}

SQL Queries

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.sql

Tests

pytest tests/ -v

Stack

  • Python — analysis logic, fatigue scoring, recommendation engine
  • FastAPI — REST API
  • PostgreSQL — event storage, analytical views
  • SQL — override rates, response times, suppression candidates

References

  • 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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages