Power BI page: Hospital Operations ·
Data views: vw_transfer_analysis + vw_procedure_analysis ·
Verified against CSV exports in data/databricks_output/exports/
The Hospital Operations page combines patient movement and clinical procedure data — tracking transfers between care units, event types (admit, transfer, discharge, ED), transfer durations, and procedure volumes by age and ICD code.
vw_transfer_analysis — 1,190 rows from hosp/transfers joined to admissions and patients. One row per transfer event with care unit, event type, and duration.
vw_procedure_analysis — 722 rows from hosp/procedures_icd joined to admissions and patients. One row per ICD procedure code on an admission.
Five headline metrics across the top — three from transfers, two from procedures. All recomputed from CSV exports; exact match with the live dashboard (Power BI rounds 1,190 transfers to 1K).
| Card | Value | Source View | DAX |
|---|---|---|---|
| Total Transfers | 1,190 | vw_transfer_analysis | COUNTROWS(vw_transfer_analysis) |
| Transferred Patients | 100 | vw_transfer_analysis | DISTINCTCOUNT(patient_id) |
| Avg Transfer Duration | 51.22 hrs | vw_transfer_analysis | AVERAGE(transfer_duration_hours) |
| Total Procedures | 722 | vw_procedure_analysis | COUNTROWS(vw_procedure_analysis) |
| Procedure Patients | 92 | vw_procedure_analysis | DISTINCTCOUNT(patient_id) |
Derived: 4.3 transfer events per admission (1,190 ÷ 275). 8 patients have no procedure records. 187 admissions (68%) have at least one procedure; average 3.9 procedures per procedural admission.
Three visuals powered by vw_transfer_analysis.
| Care Unit | Transfers | Share |
|---|---|---|
| (Blank) | 275 | 23.1% |
| EMERGENCY DEPARTMENT | 236 | 19.8% |
| MEDICINE | 77 | 6.5% |
| MED/SURG | 48 | 4.0% |
| NEUROLOGY | 46 | 3.9% |
| MEDICINE/CARDIOLOGY | 43 | 3.6% |
| CARDIAC SURGERY | 39 | 3.3% |
| TRANSPLANT | 39 | 3.3% |
| MEDICAL INTENSIVE CARE UNIT (MICU) | 36 | 3.0% |
| DISCHARGE LOUNGE | 36 | 3.0% |
Only rows with a non-null duration and named care unit. Sorted by highest average stay.
| Care Unit | Avg Duration (hrs) | ~Days |
|---|---|---|
| MEDICINE/CARDIOLOGY INTERMEDIATE | 332.21 | ~13.8 |
| PSYCHIATRY | 195.85 | ~8.2 |
| HEMATOLOGY/ONCOLOGY | 126.45 | ~5.3 |
| VASCULAR | 105.09 | ~4.4 |
| CORONARY CARE UNIT (CCU) | 96.00 | ~4.0 |
| TRANSPLANT | 95.70 | ~4.0 |
| HEMATOLOGY/ONCOLOGY INTERMEDIATE | 89.03 | ~3.7 |
| MEDICAL/SURGICAL ICU (MICU/SICU) | 84.69 | ~3.5 |
| MEDICAL INTENSIVE CARE UNIT (MICU) | 83.09 | ~3.5 |
| TRAUMA SICU (TSICU) | 80.10 | ~3.3 |
| Event Type | Count | Share |
|---|---|---|
| TRANSFER | 404 | 33.95% |
| DISCHARGE | 275 | 23.11% |
| ADMIT | 275 | 23.11% |
| ED | 236 | 19.83% |
Two visuals powered by vw_procedure_analysis.
| Age Group | Procedures | Share |
|---|---|---|
| 50–64 | 286 | 39.6% |
| 65–79 | 208 | 28.8% |
| 35–49 | 130 | 18.0% |
| 80+ | 62 | 8.6% |
| 18–34 | 36 | 5.0% |
| Procedure Code | Count | ICD |
|---|---|---|
| 02HV33Z | 23 | ICD-10 |
| 3897 | 22 | ICD-9 |
| 966 | 18 | ICD-9 |
| 9671 | 15 | ICD-9 |
| 3893 | 13 | ICD-9 |
| 3961 | 13 | ICD-9 |
| 5491 | 12 | ICD-9 |
| 9604 | 11 | ICD-9 |
| 3891 | 10 | ICD-9 |
| 3E0G76Z | 10 | ICD-10 |
| Admission Type | Transfer Events | Share |
|---|---|---|
| EW EMER. | 477 | 40.1% |
| OBSERVATION ADMIT | 182 | 15.3% |
| URGENT | 166 | 13.9% |
| EU OBSERVATION | 97 | 8.2% |
| SURGICAL SAME DAY ADMISSION | 80 | 6.7% |
All 100 patients appear in transfer data. Only 92 patients (92%) have procedure records — 8 patients had admissions with no coded procedures in this subset.
The transfer event lifecycle per admission: ADMIT (275) → intra-hospital TRANSFERs (404 total, ~1.5 per admission) → DISCHARGE (275), with ED visits (236) representing a parallel emergency pathway. High TRANSFER count relative to admissions indicates active bed management and specialty unit routing.
Five measures on this page (two views). Full reference: powerbi/mimic_powerbi_dax_measures.md
Total Transfers = COUNTROWS(vw_transfer_analysis)
Transferred Patients =
DISTINCTCOUNT(vw_transfer_analysis[patient_id])
Avg Transfer Duration =
AVERAGE(vw_transfer_analysis[transfer_duration_hours])
Total Procedures = COUNTROWS(vw_procedure_analysis)
Procedure Patients =
DISTINCTCOUNT(vw_procedure_analysis[patient_id])
import pandas as pd
tx = pd.read_csv("data/databricks_output/exports/vw_transfer_analysis.csv")
pr = pd.read_csv("data/databricks_output/exports/vw_procedure_analysis.csv")
assert len(tx) == 1190
assert tx["patient_id"].nunique() == 100
assert round(tx["transfer_duration_hours"].mean(), 2) == 51.22
assert len(pr) == 722
assert pr["patient_id"].nunique() == 92
Output: data/databricks_output/exports/hospital_operations_analysis.json