Align target deadlines in early warning and reports

This commit is contained in:
Dwi Swandhana
2026-04-29 09:55:00 +07:00
parent bb680d41d3
commit d8c6ab7b55
10 changed files with 237 additions and 6909 deletions
@@ -323,6 +323,23 @@ class ReportController extends Controller
'Amphotericin B',
'Flucytosine'
];
private function resolveTatTargetDays($modaliti2) {
return (!empty($modaliti2) && is_numeric($modaliti2) && intval($modaliti2) > 0)
? intval($modaliti2)
: 1;
}
private function getTatDeadlineDate($mulai, $targetDays) {
return Carbon::parse($mulai)->addDays(intval($targetDays))->toDateString();
}
private function getTatElapsedDays($mulai, $verifikasi) {
return Carbon::parse($mulai)->startOfDay()->diffInDays(Carbon::parse($verifikasi)->startOfDay());
}
private function resolveTatStatus($mulai, $verifikasi, $targetDays) {
$deadlineDate = $this->getTatDeadlineDate($mulai, $targetDays);
return Carbon::parse($verifikasi)->toDateString() <= $deadlineDate
? 'MEMENUHI TARGET'
: 'TIDAK MEMENUHI TARGET';
}
public function report(Request $request) {
$bulan = $request->input('bulan');
$tahun = $request->input('tahun');
@@ -455,15 +472,13 @@ class ReportController extends Controller
$p = $poli[$row->poli_id] ?? null;
$row->subpoli = $p->subpoli ?? null;
$row->modaliti2 = $p->modaliti2 ?? '1';
$row->modaliti2 = $this->resolveTatTargetDays($p->modaliti2 ?? '1');
// Hitung status target
if (!empty($row->verifikasi)) {
$selisih = Carbon::parse($row->mulai)->diffInDays($row->verifikasi);
$selisih = $this->getTatElapsedDays($row->mulai, $row->verifikasi);
$row->selisih_hari = $selisih;
$row->status_target = ($selisih <= intval($row->modaliti2))
? "MEMENUHI TARGET"
: "TIDAK MEMENUHI TARGET";
$row->status_target = $this->resolveTatStatus($row->mulai, $row->verifikasi, $row->modaliti2);
} else {
$row->selisih_hari = null;
$row->status_target = "TIDAK ADA HASIL";