diff --git a/includes/pages/reports.php b/includes/pages/reports.php index 2249471..957a1cb 100644 --- a/includes/pages/reports.php +++ b/includes/pages/reports.php @@ -89,6 +89,32 @@ $stmt->execute([$start_date, $end_date]); $doctor_revenue = $stmt->fetchAll(PDO::FETCH_ASSOC); + +// 10. Patient Nationality Distribution (Omani vs Non-Omani) +$stmt = $db->prepare(" + SELECT + CASE + WHEN nationality = 'Oman' THEN 'omani' + WHEN nationality IS NULL OR nationality = '' THEN 'unknown_nationality' + ELSE 'non_omani' + END as nat_group, + COUNT(*) as count + FROM patients + WHERE DATE(created_at) BETWEEN ? AND ? + GROUP BY nat_group +"); +$stmt->execute([$start_date, $end_date]); +$patients_by_nationality_raw = $stmt->fetchAll(PDO::FETCH_KEY_PAIR); + +// Translate labels +$patients_by_nationality = []; +foreach ($patients_by_nationality_raw as $key => $val) { + $patients_by_nationality[__($key)] = $val; +} + +$chart_nationality_labels = array_keys($patients_by_nationality); +$chart_nationality_data = array_values($patients_by_nationality); + // --- PREPARE DATA FOR JS --- $chart_dept_revenue_labels = array_column($dept_revenue, 'name'); $chart_dept_revenue_data = array_column($dept_revenue, 'revenue'); @@ -317,6 +343,23 @@ $chart_gender_data = array_values($patients_by_gender); + + +
+
+
+
+
+
+
+
+ +
+
+
+
+
+
@@ -527,5 +570,27 @@ document.addEventListener('DOMContentLoaded', function() { } } }); + + // 5. Nationality (Pie) + const ctxNationality = document.getElementById('nationalityChart').getContext('2d'); + new Chart(ctxNationality, { + type: 'doughnut', + data: { + labels: , + datasets: [{ + data: , + backgroundColor: [colors.teal, colors.warning, colors.secondary], + borderWidth: 0 + }] + }, + options: { + responsive: true, + maintainAspectRatio: false, + plugins: { + legend: { position: 'bottom' } + } + } + }); + }); \ No newline at end of file diff --git a/lang.php b/lang.php index 7f1a074..0100efe 100644 --- a/lang.php +++ b/lang.php @@ -1,7 +1,14 @@ - array ( + array + + 'nationality' => 'Nationality', + 'omani' => 'Omani', + 'non_omani' => 'Non-Omani', + 'unknown_nationality' => 'Unknown Nationality', + 'patients_by_nationality' => 'Patients by Nationality', +( 'sick_leave_report' => 'Patient Sick Leave', 'date_issued' => 'Date Issued', 'number_of_days' => 'Number of Days', @@ -531,7 +538,14 @@ $translations = array ( 'confirm_delete_request' => 'Are you sure you want to delete this request?' ), 'ar' => - array ( + array + + 'nationality' => 'الجنسية', + 'omani' => 'عماني', + 'non_omani' => 'غير عماني', + 'unknown_nationality' => 'جنسية غير معروفة', + 'patients_by_nationality' => 'المرضى حسب الجنسية', +( 'sick_leave_report' => 'إجازات المرضى', 'date_issued' => 'تاريخ الإصدار', 'number_of_days' => 'عدد الأيام',