From a1ac1f888b2addfca9e89cabd85d0b025f1ca4c2 Mon Sep 17 00:00:00 2001 From: Dwi Swandhana Date: Sun, 8 Mar 2026 18:35:58 +0700 Subject: [PATCH] update --- .../app/Http/Controllers/ReportController.php | 33 +++++++-- htdocs/resources/views/admin/report.blade.php | 68 ++++++++++++++++++- 2 files changed, 94 insertions(+), 7 deletions(-) diff --git a/htdocs/app/Http/Controllers/ReportController.php b/htdocs/app/Http/Controllers/ReportController.php index 8ebe9a89..739b6791 100644 --- a/htdocs/app/Http/Controllers/ReportController.php +++ b/htdocs/app/Http/Controllers/ReportController.php @@ -25,7 +25,18 @@ class ReportController extends Controller if (Session::get('previlage') == ''){ return redirect('/login'); } else { - return view('admin.report'); + $dokterOptions = Periksa::select('dokter_id', 'nmdokter') + ->whereNotNull('dokter_id') + ->where('dokter_id', '<>', 0) + ->whereNotNull('nmdokter') + ->where('nmdokter', '<>', '') + ->groupBy('dokter_id', 'nmdokter') + ->orderBy('nmdokter', 'ASC') + ->get(); + + return view('admin.report', [ + 'dokterOptions' => $dokterOptions + ]); } } public function rekapPeriksa(Request $request) { @@ -316,6 +327,7 @@ class ReportController extends Controller $bulan = $request->input('bulan'); $tahun = $request->input('tahun'); $jenisreport = $request->input('jenisreport'); + $dokterId = $request->input('dokter_id'); $homebase = url("/"); $arraylist = []; $limit = $request->input('limit') ?? 500; @@ -324,7 +336,7 @@ class ReportController extends Controller $filterscount = $request->input('filterscount') ?? 0; if ($jenisreport == 'biorepository'){ if ($bulan == 'ALL'){ - $lists = DB::table('db_komponenjawaban') + $queryBiorepo = DB::table('db_komponenjawaban') ->select('db_komponenjawaban.*', 'periksa.nofoto', 'periksa.noregister', @@ -338,9 +350,13 @@ class ReportController extends Controller ->leftJoin('periksa', 'db_komponenjawaban.accnumber', 'periksa.nofoto') ->whereIn('db_komponenjawaban.komponen', ['id_bakteri01', 'id_bakteri02', 'bakteri']) ->where('db_komponenjawaban.isidata', '!=', '') - ->where('periksa.daftar', 'LIKE', $tahun.'-%')->orderBy('periksa.id', 'DESC')->get(); + ->where('periksa.daftar', 'LIKE', $tahun.'-%'); + if (!empty($dokterId) && $dokterId != 'ALL' && $dokterId != '0') { + $queryBiorepo->where('periksa.dokter_id', $dokterId); + } + $lists = $queryBiorepo->orderBy('periksa.id', 'DESC')->get(); } else { - $lists = DB::table('db_komponenjawaban') + $queryBiorepo = DB::table('db_komponenjawaban') ->select('db_komponenjawaban.*', 'periksa.nofoto', 'periksa.noregister', @@ -354,7 +370,11 @@ class ReportController extends Controller ->leftJoin('periksa', 'db_komponenjawaban.accnumber', 'periksa.nofoto') ->whereIn('db_komponenjawaban.komponen', ['id_bakteri01', 'id_bakteri02', 'bakteri']) ->where('db_komponenjawaban.isidata', '!=', '') - ->where('periksa.daftar', 'LIKE', $tahun.'-'.$bulan.'-%')->orderBy('periksa.id', 'DESC')->get(); + ->where('periksa.daftar', 'LIKE', $tahun.'-'.$bulan.'-%'); + if (!empty($dokterId) && $dokterId != 'ALL' && $dokterId != '0') { + $queryBiorepo->where('periksa.dokter_id', $dokterId); + } + $lists = $queryBiorepo->orderBy('periksa.id', 'DESC')->get(); } echo json_encode($lists); } else { @@ -363,6 +383,9 @@ class ReportController extends Controller if ($bulan !== 'ALL') { $query->whereMonth('mulai', $bulan); } + if (!empty($dokterId) && $dokterId != 'ALL' && $dokterId != '0') { + $query->where('dokter_id', $dokterId); + } /** * CURSOR → Streaming data, tidak boros memori diff --git a/htdocs/resources/views/admin/report.blade.php b/htdocs/resources/views/admin/report.blade.php index ad15f856..af18cf0e 100644 --- a/htdocs/resources/views/admin/report.blade.php +++ b/htdocs/resources/views/admin/report.blade.php @@ -4,7 +4,7 @@
-
+
Pick Report Range

@@ -29,9 +29,22 @@
+
+ +
+
+ +
@@ -221,6 +234,7 @@ $(document).ready(function () { $('#btnReport').click(function () { var bulan = document.getElementById('bulan').value; var tahun = document.getElementById('tahun').value; + var dokterId= document.getElementById('dokter_id').value; var token = document.getElementById('token').value; if (bulan == '' || tahun == ''){ swal({ @@ -229,7 +243,7 @@ $(document).ready(function () { type : 'error', }); } else { - $.post('{{ route("reportPeriksa") }}', { bulan: bulan, tahun: tahun, jenisreport: '', _token: token }, + $.post('{{ route("reportPeriksa") }}', { bulan: bulan, tahun: tahun, dokter_id: dokterId, jenisreport: '', _token: token }, function(data){ var sourceawal = { datatype: "json", @@ -367,6 +381,56 @@ $(document).ready(function () { }); } }); + $('#btnExportDokter').click(function () { + var bulan = document.getElementById('bulan').value; + var tahun = document.getElementById('tahun').value; + var dokterId = document.getElementById('dokter_id').value; + var dokterText = $('#dokter_id option:selected').text(); + var token = document.getElementById('token').value; + + if (bulan == '' || tahun == '' || dokterId == '' || dokterId == 'ALL') { + swal({ + title : 'Mohon diLengkapi', + text : 'Bulan, Tahun, dan Dokter wajib dipilih untuk export ini.', + type : 'error', + }); + return; + } + + $.post('{{ route("reportPeriksa") }}', { bulan: bulan, tahun: tahun, dokter_id: dokterId, jenisreport: '', _token: token }, function(data) { + if (!Array.isArray(data) || data.length === 0) { + swal({ + title : 'Info', + text : 'Data report tidak ditemukan untuk filter yang dipilih.', + type : 'warning', + }); + return; + } + + var exportRows = data.map(function(row) { + return { + 'No.Sample': row.nofoto || '', + 'No.RM': row.noregister || '', + 'Nama': row.nmpasien || '', + 'Dokter': row.nmdokter || '', + 'Order': row.reques || '', + 'Asal Pasien': row.asalpasien || '', + 'Status': row.status || '', + 'Tgl Sample': row.mulai || '', + 'Tgl Verifikasi': row.verifikasi || '', + 'Target': row.modaliti2 || '', + 'Durasi': row.selisih_hari || '', + 'Keterangan': row.status_target || '' + }; + }); + + var ws = XLSX.utils.json_to_sheet(exportRows); + var wb = XLSX.utils.book_new(); + XLSX.utils.book_append_sheet(wb, ws, 'ReportDokter'); + var dokterSafe = (dokterText || 'Dokter').replace(/[^a-zA-Z0-9]+/g, '_'); + XLSX.writeFile(wb, 'Report_' + bulan + '_' + tahun + '_' + dokterSafe + '.xlsx'); + }); + }); $('#btnrekapbiorepo').click(function () { var bulan = document.getElementById('bulan').value; var tahun = document.getElementById('tahun').value;