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' => 'عدد الأيام',