prepare($query);
$stmt->execute($params);
$patients = $stmt->fetchAll();
ob_start();
if (empty($patients)): ?>
()
$html]);
exit;
}
// Fetch Stats
$total_patients = $db->query("SELECT COUNT(*) FROM patients")->fetchColumn();
$today_appointments_count = $db->query("SELECT COUNT(*) FROM appointments WHERE DATE(start_time) = CURDATE()")->fetchColumn();
$total_visits = $db->query("SELECT COUNT(*) FROM visits")->fetchColumn();
$total_revenue = $db->query("SELECT SUM(total_amount) FROM bills WHERE status = 'Paid'")->fetchColumn() ?: 0;
$pending_revenue = $db->query("SELECT SUM(total_amount) FROM bills WHERE status = 'Pending'")->fetchColumn() ?: 0;
$total_xrays = $db->query("SELECT COUNT(*) FROM xray_inquiries")->fetchColumn();
$total_labs = $db->query("SELECT COUNT(*) FROM laboratory_inquiries")->fetchColumn();
// Fetch Running Visits (Not Completed/Cancelled)
$running_visits_sql = "
SELECT v.*, p.name as patient_name, d.name_$lang as doctor_name, n.name_$lang as nurse_name
FROM visits v
JOIN patients p ON v.patient_id = p.id
LEFT JOIN doctors d ON v.doctor_id = d.id
LEFT JOIN nurses n ON v.nurse_id = n.id
WHERE v.status IN ('CheckIn', 'In Progress')
ORDER BY v.visit_date ASC";
$running_visits = $db->query($running_visits_sql)->fetchAll();
// Initial Patients Load
$patients_sql = "
SELECT p.*, ic.name_$lang as insurance_name
FROM patients p
LEFT JOIN insurance_companies ic ON p.insurance_company_id = ic.id
ORDER BY p.id DESC LIMIT 5";
$patients = $db->query($patients_sql)->fetchAll();
// Today's Appointments
$appointments_sql = "
SELECT a.*, p.name as patient_name, d.name_$lang as doctor_name, n.name_$lang as nurse_name
FROM appointments a
JOIN patients p ON a.patient_id = p.id
LEFT JOIN doctors d ON a.doctor_id = d.id
LEFT JOIN nurses n ON a.nurse_id = n.id
WHERE DATE(a.start_time) = CURDATE()
ORDER BY a.start_time ASC";
$appointments = $db->query($appointments_sql)->fetchAll();
?>