This commit is contained in:
Dwi Swandhana
2026-05-17 04:11:19 +07:00
parent 45b4f41e57
commit 03090cbe74
5 changed files with 213 additions and 425 deletions
@@ -1055,6 +1055,53 @@ class ReportController extends Controller
return $response;
}
private function getZnReportKomponenList() {
return [
'id_pewarnaanziehlnielsen',
'id_pewarnaanziehlnielsensewaktu',
'lsg_pewarnaanziehlnielsen',
'lsg_pewarnaanziehlnielsensewaktu',
'hasilpemeriksaantbbiakan_pagi',
'hasilpemeriksaantbbiakan_sewaktu',
'hasilpemeriksaantmikroskopis_hasilpagi',
'hasilpemeriksaantmikroskopis_hasilsewaktu',
];
}
private function normalizeZnReportValue($value) {
$value = trim(strip_tags((string) $value));
$value = preg_replace('/\s+/', ' ', $value);
$upperValue = strtoupper($value);
if ($upperValue === 'NEG') {
return 'Tidak ditemukan Bakteri Tahan Asam (BTA)';
}
if ($upperValue === '1-9') {
return 'Ditemukan Bakteri Tahan Asam 0-9 BTA (scanty)';
}
if ($value === '+') {
return 'Ditemukan Bakteri Tahan Asam (BTA) 1+';
}
if ($value === '++') {
return 'Ditemukan Bakteri Tahan Asam (BTA) 2+';
}
if ($value === '+++') {
return 'Ditemukan Bakteri Tahan Asam (BTA) 3+';
}
return $value;
}
private function periksaHasZnReportValue($periksa, $nilai, $komponenList) {
return $periksa->komponen
->whereIn('komponen', $komponenList)
->filter(function ($komponen) use ($nilai) {
return $this->normalizeZnReportValue($komponen->isidata) === $nilai;
})
->count() > 0;
}
public function genZNreport(Request $request) {
$data = [];
$bulan = $request->input('bulan');
@@ -1068,12 +1115,7 @@ class ReportController extends Controller
}
// komponen Ziehl yang mau dianalisa
$komponenList = [
'id_pewarnaanziehlnielsen',
'id_pewarnaanziehlnielsensewaktu',
'lsg_pewarnaanziehlnielsen',
'lsg_pewarnaanziehlnielsensewaktu'
];
$komponenList = $this->getZnReportKomponenList();
// Nilai Ziehl yang ingin dihitung
$nilaiList = Organisms::where('kelompok', 'Pewarnaan Ziehl Nielsen')->pluck('name')->toArray();
@@ -1111,10 +1153,7 @@ class ReportController extends Controller
->where('kd_spesimen', $spesimen)
->where('jkpasien', 'L')
->filter(function($px) use ($nilai, $komponenList){
return $px->komponen
->whereIn('komponen', $komponenList)
->where('isidata', $nilai)
->count() > 0;
return $this->periksaHasZnReportValue($px, $nilai, $komponenList);
})->count();
// hitung perempuan
@@ -1122,10 +1161,7 @@ class ReportController extends Controller
->where('kd_spesimen', $spesimen)
->where('jkpasien', 'P')
->filter(function($px) use ($nilai, $komponenList){
return $px->komponen
->whereIn('komponen', $komponenList)
->where('isidata', $nilai)
->count() > 0;
return $this->periksaHasZnReportValue($px, $nilai, $komponenList);
})->count();
}
}