// -------------------------------------------------- // Clinical Metrics // -------------------------------------------------- // 1. Occupancy Rate (last 6 months) $occRows = fetchAll($conn, <<= DATEADD(month, -5, GETDATE()) GROUP BY FORMAT(RecordDate,'yyyy-MM') ORDER BY month SQL ); $occLabels = array_column($occRows, 'month'); $occValues = array_column($occRows, 'occupancy_rate'); // 2. Census Trend (last 30 days) $censusRows = fetchAll($conn, <<= DATEADD(day, -29, GETDATE()) ORDER BY RecordDate SQL ); $censusLabels = array_column($censusRows, 'date'); $censusValues = array_column($censusRows, 'OccupiedBeds'); // 3. Admissions vs Discharges (last 6 months) $admDiscRows = fetchAll($conn, <<= DATEADD(month, -5, GETDATE()) GROUP BY FORMAT(AdmissionDate,'yyyy-MM') ), d AS ( SELECT FORMAT(DischargeDate,'yyyy-MM') AS month, COUNT(*) AS discharges FROM view_ods_patient_stay WHERE DischargeDate >= DATEADD(month, -5, GETDATE()) GROUP BY FORMAT(DischargeDate,'yyyy-MM') ) SELECT COALESCE(a.month, d.month) AS month, ISNULL(a.admissions,0) AS admissions, ISNULL(d.discharges,0) AS discharges FROM a FULL OUTER JOIN d ON a.month = d.month ORDER BY month SQL ); $admDiscLabels = []; $admDiscAdms = []; $admDiscDscs = []; foreach ($admDiscRows as $r) { $admDiscLabels[] = $r['month']; $admDiscAdms[] = (int)$r['admissions']; $admDiscDscs[] = (int)$r['discharges']; } // 4. Average LOS (last 6 months) $losRows = fetchAll($conn, <<= DATEADD(month, -5, GETDATE()) GROUP BY FORMAT(AdmissionDate,'yyyy-MM') ORDER BY month SQL ); $losLabels = array_column($losRows, 'month'); $losValues = array_column($losRows, 'avg_los'); // 5. Readmission Rate (30-day) $readRows = fetchAll($conn, <<= DATEADD(month,-5,GETDATE()) GROUP BY FORMAT(DischargeDate,'yyyy-MM') ORDER BY month SQL ); $readLabels = array_column($readRows,'month'); $readValues = array_column($readRows,'readmit_rate'); // 6. Assessment Completion On Time $assRows = fetchAll($conn, <<= DATEADD(month,-5,GETDATE()) GROUP BY FORMAT(ScheduledDate,'yyyy-MM') ORDER BY month SQL ); $assLabels = array_column($assRows,'month'); $assValues = array_column($assRows,'completion_rate'); // 7. PDPM Case-Mix Index $pdpmRows = fetchAll($conn, <<= DATEADD(month,-5,GETDATE()) GROUP BY FORMAT(AssessmentDate,'yyyy-MM') ORDER BY month SQL ); $pdpmLabels = array_column($pdpmRows,'month'); $pdpmValues = array_column($pdpmRows,'avg_cmi'); // 8. Incident Rate per 1000 Resident-Days $incRows = fetchAll($conn, <<= DATEADD(month,-5,GETDATE()) GROUP BY FORMAT(RecordDate,'yyyy-MM') ) dc ON FORMAT(inc.IncidentDate,'yyyy-MM')=dc.month WHERE inc.IncidentDate >= DATEADD(month,-5,GETDATE()) GROUP BY dc.month,dc.res_days ORDER BY dc.month SQL ); $incLabels = array_column($incRows,'month'); $incValues = array_column($incRows,'rate'); // 9. Incident Follow-up Lag $fupRows = fetchAll($conn, <<= DATEADD(month,-5,GETDATE()) GROUP BY FORMAT(inc.IncidentDate,'yyyy-MM') ORDER BY month SQL ); $fupLabels = array_column($fupRows,'month'); $fupValues = array_column($fupRows,'avg_lag'); // 10. Therapy Minutes per Week (last 12 weeks) $thRows = fetchAll($conn, <<= DATEADD(week,-12,GETDATE()) GROUP BY FORMAT(ServiceDate,'yyyy-ww') ORDER BY week SQL ); $thLabels = array_column($thRows,'week'); $thValues = array_column($thRows,'total_minutes'); // 11. Therapy Efficiency $etRows = fetchAll($conn, <<= DATEADD(week,-12,GETDATE()) ) sub GROUP BY week ORDER BY week SQL ); $etLabels = array_column($etRows,'week'); $etValues = array_column($etRows,'efficiency'); // 12. Pathway Adherence $paRows = fetchAll($conn, <<= DATEADD(month,-5,GETDATE()) GROUP BY FORMAT(TriggerDate,'yyyy-MM') ORDER BY month SQL ); $paLabels = array_column($paRows,'month'); $paValues = array_column($paRows,'adherence'); // 13. Program Initiation Lag $pilRows = fetchAll($conn, <<= DATEADD(month,-5,GETDATE()) GROUP BY FORMAT(EventDate,'yyyy-MM') ORDER BY month SQL ); $pilLabels = array_column($pilRows,'month'); $pilValues = array_column($pilRows,'avg_lag'); // 14. Daily Census by Building $buildRows = fetchAll($conn, <<=DATEADD(month,-5,GETDATE()) GROUP BY FORMAT(InvoiceDate,'yyyy-MM') ORDER BY month SQL ); $dsoLabels = array_column($dsoRows,'month'); $dsoValues = array_column($dsoRows,'avg_dso'); // Payer Mix $pmRows = fetchAll($conn, "SELECT PayerType, SUM(Amount) AS total FROM view_ods_ar_payertype_budget GROUP BY PayerType"); $pmLabels = array_column($pmRows,'PayerType'); $pmValues = array_column($pmRows,'total'); // Denial Rates $drRows = fetchAll($conn, <<