This commit is contained in:
2026-07-01 14:48:45 +07:00
parent d201b53442
commit 5d2c055912
12 changed files with 412 additions and 497 deletions

View File

@@ -234,27 +234,6 @@ class DashboardController extends Controller
}
/*
|--------------------------------------------------------------------------
| Sentinel Map
|--------------------------------------------------------------------------
*/
// public function sentinelMap(Request $request)
// {
// $range = $this->getEpiRange($request);
// if (!$range) {
// return response()->json(['error' => 'Missing epiweek range'], 400);
// }
// return response()->json($data);
// }
public function fetchSourceData()
{
try {

View File

@@ -28,9 +28,6 @@ class DashboardService
public function summaryCards()
{
$programs = Surveillance::orderBy('id')->get();
$results = [];
$today = date('Y-m-d');
$currentFrom = date('Y-m-d', strtotime('-6 days'));
@@ -39,15 +36,23 @@ class DashboardService
$prevFrom = date('Y-m-d', strtotime('-13 days'));
$prevTo = date('Y-m-d', strtotime('-7 days'));
$results = [];
$programs = Surveillance::where('id', '!=', 6)
->orderBy('id')
->get();
foreach ($programs as $program) {
$current = SurveillanceCase::where('surveillance_id', $program->id)
->whereBetween('case_date', [$currentFrom, $currentTo])
->count();
->distinct('lab_code')
->count('lab_code');
$previous = SurveillanceCase::where('surveillance_id', $program->id)
->whereBetween('case_date', [$prevFrom, $prevTo])
->count();
->distinct('lab_code')
->count('lab_code');
$percentChange = $previous > 0
? round((($current - $previous) / $previous) * 100, 1)
@@ -62,6 +67,44 @@ class DashboardService
];
}
/*
|--------------------------------------------------------------------------
| A/H5N1 Summary Card
|--------------------------------------------------------------------------
*/
$h5n1Current = SurveillanceCase::join('case_lab_results', function ($join) {
$join->on('surveillance_cases.lab_code', '=', 'case_lab_results.lab_code')
->on('surveillance_cases.surveillance_id', '=', 'case_lab_results.surveillance_id');
})
->whereBetween('surveillance_cases.case_date', [$currentFrom, $currentTo])
->where('case_lab_results.subtype', 'A/H5N1')
->where('surveillance_cases.surveillance_id', '!=', 6)
->distinct('surveillance_cases.lab_code')
->count('surveillance_cases.lab_code');
$h5n1Previous = SurveillanceCase::join('case_lab_results', function ($join) {
$join->on('surveillance_cases.lab_code', '=', 'case_lab_results.lab_code')
->on('surveillance_cases.surveillance_id', '=', 'case_lab_results.surveillance_id');
})
->whereBetween('surveillance_cases.case_date', [$prevFrom, $prevTo])
->where('case_lab_results.subtype', 'A/H5N1')
->where('surveillance_cases.surveillance_id', '!=', 6)
->distinct('surveillance_cases.lab_code')
->count('surveillance_cases.lab_code');
$h5n1Percent = $h5n1Previous > 0
? round((($h5n1Current - $h5n1Previous) / $h5n1Previous) * 100, 1)
: ($h5n1Current > 0 ? 100 : 0);
$results[] = [
'surveillance_id' => null,
'code' => 'H5N1',
'current_total' => $h5n1Current,
'previous_total' => $h5n1Previous,
'percent_change' => $h5n1Percent
];
return $results;
}
@@ -101,8 +144,8 @@ class DashboardService
AND week_data >= ?
)
)",
[$startYear, $startYear, $startWeek]
)
[$startYear, $startYear, $startWeek]
)
->whereRaw(
"(year_data < ?