Autosave: 20260330-021657

This commit is contained in:
Flatlogic Bot 2026-03-30 02:16:58 +00:00
parent 9a0a41e1cd
commit c26368f032
2 changed files with 81 additions and 2 deletions

View File

@ -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);
</div>
</div>
<!-- Charts Row 3 -->
<div class="row g-4 mb-5 page-break">
<div class="col-md-6 offset-md-3">
<div class="card border-0 shadow-sm h-100">
<div class="card-header bg-white border-bottom-0 pt-4 px-4">
<h5 class="fw-bold text-dark mb-0"><?php echo __('patients_by_nationality'); ?></h5>
</div>
<div class="card-body d-flex justify-content-center align-items-center" style="min-height: 350px;">
<div style="position: relative; width: 300px; height: 300px;">
<canvas id="nationalityChart"></canvas>
</div>
</div>
</div>
</div>
</div>
<!-- Detailed Tables -->
<div class="row g-4 mb-4 page-break">
<!-- Department Revenue -->
@ -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: <?php echo json_encode($chart_nationality_labels); ?>,
datasets: [{
data: <?php echo json_encode($chart_nationality_data); ?>,
backgroundColor: [colors.teal, colors.warning, colors.secondary],
borderWidth: 0
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
plugins: {
legend: { position: 'bottom' }
}
}
});
});
</script>

View File

@ -1,7 +1,14 @@
<?php
$translations = array (
'en' =>
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' => 'عدد الأيام',