Hospital Quality Dashboard

API DISABLED
Notice: Live API and full export are disabled for cost efficiency. They can be re-enabled by starting the Azure Function App.
CMS
Total Hospitals
50 States + DC
AVG
Avg Overall Rating
Scale 1–5
SNAPSHOT
Emergency Services
Have ER capability
SNAPSHOT
Quality Metrics
Unplanned visit records
Hospitals by State (Top 20)
Overall Rating Distribution
Hospital Types
National Quality Comparison
ETL Run History
DISABLED
Run IDStartedStatus HospitalsMetricsDuration
Data Export
All Hospitals
5,433 hospitals · 12 columns including address, phone, GPS coordinates
FacilityID · FacilityName · Address · City · State · ZipCode · Phone · HospitalType · EmergencyServices · OverallRating · Latitude · Longitude
Quality Metrics
67,088 records · hospital-level clinical quality measures
FacilityID · FacilityName · State · HospitalType · MeasureID · MeasureName · Score · ComparedToNational · NumberOfPatients · PeriodStart · PeriodEnd
State Summary
51 states/territories · aggregate hospital stats per state
State · TotalHospitals · AvgRating · WithEmergency · TopRatedCount
ETL Run Log
Last 8 ETL runs · pipeline execution history
LogID · RunStart · Status · HospitalsLoaded · MetricsLoaded · DurationSec
About This Project

An end-to-end data pipeline that pulls US hospital quality data from the CMS (Centers for Medicare & Medicaid Services) public API, loads it into Azure SQL Database via automated ETL, and serves it through a REST API and this interactive dashboard.

Built to demonstrate DBA fundamentals — schema design, index tuning, backup & recovery — alongside cloud data engineering with Azure managed services.

The CMS datasets are publicly available and fully de-identified under HIPAA Safe Harbor (45 CFR §164.514(b)). No Protected Health Information is involved.
Tech Stack
Python 3.11 Azure Functions Azure SQL Key Vault App Insights Bicep (IaC) Chart.js GitHub Actions
Data Sources (CMS Public API)
Hospital General Information ~5,400 records · Quarterly
Unplanned Hospital Visits ~67,000 metrics · Quarterly
How It Works
CMS Public API
HTTP GET, no auth
Quarterly data updates
Azure Function App
Timer Trigger (CRON)
ETL runs twice daily
Azure SQL Database
Serverless tier, 3 tables
MERGE upsert, no duplicates
REST API + Dashboard
5 API endpoints
Chart.js + CSV export
ETL Schedule UTC 00:00 & 12:00 daily
Upsert Strategy SQL MERGE on FacilityID — idempotent, no duplicates
Secret Management Azure Key Vault + Managed Identity
Monitoring Application Insights + Azure Monitor alerts