Autosave: 20260330-021657
This commit is contained in:
parent
9a0a41e1cd
commit
c26368f032
@ -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>
|
||||
18
lang.php
18
lang.php
@ -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' => 'عدد الأيام',
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user