From b107ab9ba7857f1528d0feda3754c264e46d6b50 Mon Sep 17 00:00:00 2001 From: Duidev Software House Date: Tue, 23 Sep 2025 14:33:23 +0700 Subject: [PATCH] Update --- .../app/Http/Controllers/DokterController.php | 11 ++ .../app/Http/Controllers/ReportController.php | 81 ++++++++----- ...09_03_072125_create_db_komponenjawaban.php | 5 + htdocs/resources/views/admin/report.blade.php | 110 +++++++++++++++++- 4 files changed, 174 insertions(+), 33 deletions(-) diff --git a/htdocs/app/Http/Controllers/DokterController.php b/htdocs/app/Http/Controllers/DokterController.php index 05c06fa0..9540d0e0 100644 --- a/htdocs/app/Http/Controllers/DokterController.php +++ b/htdocs/app/Http/Controllers/DokterController.php @@ -1228,6 +1228,17 @@ class DokterController extends Controller if ($organism != ''){ $isidata = 'Organisme yang ditemukan '.$organism.'
'.$isidata; + KomponenJawaban::updateOrCreate( + [ + 'accnumber' => $nofoto, + 'template' => $request->input('jenis'), + 'komponen' => 'bakteri', + ], + [ + 'isidata' => $organism, + 'created_by' => Session('nama') + ] + ); } } if ($isidata == '' OR is_null($isidata)){ diff --git a/htdocs/app/Http/Controllers/ReportController.php b/htdocs/app/Http/Controllers/ReportController.php index b87c0f87..cc5b9b3d 100644 --- a/htdocs/app/Http/Controllers/ReportController.php +++ b/htdocs/app/Http/Controllers/ReportController.php @@ -265,47 +265,66 @@ class ReportController extends Controller public function report(Request $request) { $bulan = $request->input('bulan'); $tahun = $request->input('tahun'); + $jenisreport = $request->input('jenisreport'); $homebase = url("/"); $arraylist = []; $limit = $request->input('limit') ?? 500; $page = $request->input('pagenum') ?? 1; $order = $request->input('order') ?? 'id desc'; $filterscount = $request->input('filterscount') ?? 0; - if ($bulan === 'pertanggal' || $bulan === 'terjadwal') { - $results = DB::table($bulan === 'terjadwal' ? 'jadwalperiksan' : 'periksa')->when($bulan === 'terjadwal', function ($query) use ($tahun) { - return $query->whereNull('jadwalperiksan.status') - ->where('jadwalperiksan.daftar', 'LIKE', "%$tahun%"); - }, function ($query) use ($tahun) { - return $query->where('periksa.daftar', 'LIKE', "$tahun%"); - })->get(); - $totals = ['m' => 0, 'f' => 0, 'jkn' => 0, 'umum' => 0, 'tag' => 0, 'gcu' => 0, 'bill' => 0, 'swasta' => 0, 'electiv' => 0, 'cito' => 0]; - foreach ($results as $result) { - $asuransi = $result->asuransi; - $urgensi = $result->urgensi; - $totals = self::updateTotals($totals, $asuransi, $urgensi, $result->jkpasien); - $arraylist[] = self::mapResultToArray($result); - } - if ($bulan === 'pertanggal') { - $arraylist[] = self::getTotalRow($totals); - } - echo json_encode($arraylist); - } else { - if ($bulan == 'ALL' || $bulan == 'Pick Month') { - $results = DB::table('periksa')->where('daftar', 'LIKE', $tahun.'%')->get(); + if ($jenisreport == 'biorepository'){ + if ($bulan == 'ALL'){ + $lists = DB::table('db_komponenjawaban') + ->select('db_komponenjawaban.*', 'periksa.nofoto', 'periksa.noregister', 'db_komponenjawaban.nmpasien', 'db_komponenjawaban.usia', 'db_komponenjawaban.dlp', 'db_komponenjawaban.nm_spesimen', 'db_komponenjawaban.kd_spesimen') + ->leftJoin('periksa', 'db_komponenjawaban.accnumber', 'periksa.nofoto') + ->whereIn('db_komponenjawaban.komponen', ['id_bakteri01', 'id_bakteri02', 'bakteri']) + ->where('periksa.daftar', 'LIKE', $tahun.'-%')->orderBy('periksa.id', 'DESC')->get(); } else { - $tglcari = $tahun.'-'.$bulan; - $results = DB::table('periksa')->where('daftar', 'LIKE', $tglcari.'%')->get(); + $lists = DB::table('db_komponenjawaban') + ->select('db_komponenjawaban.*', 'periksa.nofoto', 'periksa.noregister', 'db_komponenjawaban.nmpasien', 'db_komponenjawaban.usia', 'db_komponenjawaban.dlp', 'db_komponenjawaban.nm_spesimen', 'db_komponenjawaban.kd_spesimen') + ->leftJoin('periksa', 'db_komponenjawaban.accnumber', 'periksa.nofoto') + ->whereIn('db_komponenjawaban.komponen', ['id_bakteri01', 'id_bakteri02', 'bakteri']) + ->where('periksa.daftar', 'LIKE', $tahun.'-'.$bulan.'-%')->orderBy('periksa.id', 'DESC')->get(); } - $totals = ['m' => 0, 'f' => 0, 'jkn' => 0, 'umum' => 0, 'tag' => 0, 'gcu' => 0, 'bill' => 0, 'swasta' => 0, 'electiv' => 0, 'cito' => 0]; - foreach ($results as $result) { - $asuransi = $result->asuransi; - $urgensi = $result->urgensi; - $totals = self::updateTotals($totals, $asuransi, $urgensi, $result->jkpasien); - $arraylist[] = self::mapResultToArray($result); + echo json_encode($lists); + } else { + if ($bulan === 'pertanggal' || $bulan === 'terjadwal') { + $results = DB::table($bulan === 'terjadwal' ? 'jadwalperiksan' : 'periksa')->when($bulan === 'terjadwal', function ($query) use ($tahun) { + return $query->whereNull('jadwalperiksan.status') + ->where('jadwalperiksan.daftar', 'LIKE', "%$tahun%"); + }, function ($query) use ($tahun) { + return $query->where('periksa.daftar', 'LIKE', "$tahun%"); + })->get(); + $totals = ['m' => 0, 'f' => 0, 'jkn' => 0, 'umum' => 0, 'tag' => 0, 'gcu' => 0, 'bill' => 0, 'swasta' => 0, 'electiv' => 0, 'cito' => 0]; + foreach ($results as $result) { + $asuransi = $result->asuransi; + $urgensi = $result->urgensi; + $totals = self::updateTotals($totals, $asuransi, $urgensi, $result->jkpasien); + $arraylist[] = self::mapResultToArray($result); + } + if ($bulan === 'pertanggal') { + $arraylist[] = self::getTotalRow($totals); + } + echo json_encode($arraylist); + } else { + if ($bulan == 'ALL' || $bulan == 'Pick Month') { + $results = DB::table('periksa')->where('daftar', 'LIKE', $tahun.'%')->get(); + } else { + $tglcari = $tahun.'-'.$bulan; + $results = DB::table('periksa')->where('daftar', 'LIKE', $tglcari.'%')->get(); + } + $totals = ['m' => 0, 'f' => 0, 'jkn' => 0, 'umum' => 0, 'tag' => 0, 'gcu' => 0, 'bill' => 0, 'swasta' => 0, 'electiv' => 0, 'cito' => 0]; + foreach ($results as $result) { + $asuransi = $result->asuransi; + $urgensi = $result->urgensi; + $totals = self::updateTotals($totals, $asuransi, $urgensi, $result->jkpasien); + $arraylist[] = self::mapResultToArray($result); + } + $arraylist[] = self::getTotalRow($totals); + echo json_encode($arraylist); } - $arraylist[] = self::getTotalRow($totals); - echo json_encode($arraylist); } + } public function genRekapAntibiotik(Request $request) { $data = []; diff --git a/htdocs/database/migrations/2025_09_03_072125_create_db_komponenjawaban.php b/htdocs/database/migrations/2025_09_03_072125_create_db_komponenjawaban.php index 67c7ba10..bcdbee67 100644 --- a/htdocs/database/migrations/2025_09_03_072125_create_db_komponenjawaban.php +++ b/htdocs/database/migrations/2025_09_03_072125_create_db_komponenjawaban.php @@ -17,6 +17,11 @@ return new class extends Migration $table->string('template', 100)->nullable(); $table->string('komponen', 100)->nullable(); $table->text('isidata')->nullable(); + $table->string('nobiorepository', 100)->nullable(); + $table->string('strain', 255)->nullable(); + $table->string('atcc', 255)->nullable(); + $table->string('sample', 255)->nullable(); + $table->date('tglpenyimpanan', 100)->nullable(); $table->string('created_by', 255)->nullable(); $table->timestamp('created_at')->useCurrent(); $table->timestamp('updated_at')->useCurrent(); diff --git a/htdocs/resources/views/admin/report.blade.php b/htdocs/resources/views/admin/report.blade.php index 5edc6f74..abdc2cde 100644 --- a/htdocs/resources/views/admin/report.blade.php +++ b/htdocs/resources/views/admin/report.blade.php @@ -33,11 +33,20 @@
+
+
+
+
+
+
+
+ +
@@ -156,7 +165,7 @@ $(document).ready(function () { ], updaterow : function (rowid, rowdata, commit) {commit(true);}, type : 'POST', - data : {bulan: bulan, tahun: tahun, _token: token }, + data : {bulan: bulan, tahun: tahun, jenisreport: '', _token: token }, url : '{{ route("reportPeriksa") }}', }; var dataAdapter = new $.jqx.dataAdapter(source); @@ -219,6 +228,103 @@ $(document).ready(function () { { text: 'Insurance', align: 'center', name: 'asuransi' } ] }); + }); + $('#btnrekapbiorepo').click(function () { + var bulan = document.getElementById('bulan').value; + var tahun = document.getElementById('tahun').value; + if (bulan == '' || tahun == ''){ + swal({ + title : 'Mohon diLengkapi', + text : 'Data Dasar Bulan dan Tahun Wajib di Isi', + type : 'error', + }); + } else { + var token = document.getElementById('token').value; + var source = { + datatype: "json", + datafields: [ + { name: 'id',type: 'text'}, + { name: 'nofoto',type: 'text'}, + { name: 'noregister',type: 'text'}, + { name: 'nmpasien',type: 'text'}, + { name: 'usia',type: 'text'}, + { name: 'dlp',type: 'text'}, + { name: 'nm_spesimen',type: 'text'}, + { name: 'kd_spesimen',type: 'text'}, + { name: 'reques', type: 'text'}, + { name: 'nobiorepository', type: 'text'}, + { name: 'strain', type: 'text'}, + { name: 'atcc', type: 'text'}, + { name: 'sample', type: 'text'}, + { name: 'tglpenyimpanan', type: 'text'}, + { name: 'created_by', type: 'text'}, + ], + updaterow : function (rowid, rowdata, commit) {commit(true);}, + type : 'POST', + data : {bulan: bulan, tahun: tahun, jenisreport: 'biorepository', _token: token }, + url : '{{ route("reportPeriksa") }}', + }; + var dataAdapter = new $.jqx.dataAdapter(source); + $('#divlaporan').show(); + $('#divlaporanharian').hide(); + $("#result").jqxGrid({ + width : '100%', + enablebrowserselection : true, + filterable : true, + autoheight : true, + showfilterrow : true, + altrows : true, + source : dataAdapter, + pageable : true, + theme : "energyblue", + columnsresize : true, + selectionmode : 'multiplecellsextended', + columns : [ + { text: 'File Report', editable: false, sortable: false, filterable: false, datafield: 'filefoto', width: 80, cellsalign: 'left', align: 'center' }, + { text: 'No.Loket', datafield: 'noloket', width: 80, cellsalign: 'left', align: 'center' }, + { text: 'No.RM', datafield: 'noregister', width: 70, align: 'center', cellsalign: 'left'}, + { text: 'Nama', datafield: 'nmpasien', width: 160, cellsalign: 'left', align: 'center' }, + { text: 'No.HP', datafield: 'tlppasien', width: 100, cellsalign: 'left', align: 'center' }, + { text: 'Umur', datafield: 'usia', width: 70, cellsalign: 'left', align: 'center' }, + { text: 'M', editable: false, sortable: false, filterable: false, datafield: 'l', width: 20, cellsalign: 'left', align: 'center' }, + { text: 'F', editable: false, sortable: false, filterable: false, datafield: 'p', width: 20, cellsalign: 'left', align: 'center' }, + { text: 'Order', editable: false, sortable: false, filterable: false, datafield: 'jenis', width: 80, cellsalign: 'left', align: 'center' }, + { text: 'JKN', editable: false, sortable: false, filterable: false, columngroup: 'asuransi', datafield: 'jkn', width: 40, cellsalign: 'left', align: 'center' }, + { text: 'UMM', editable: false, sortable: false, filterable: false, columngroup: 'asuransi', datafield: 'umm', width: 40, cellsalign: 'left', align: 'center' }, + { text: 'TAG', editable: false, sortable: false, filterable: false, columngroup: 'asuransi', datafield: 'tag', width: 40, cellsalign: 'left', align: 'center' }, + { text: 'GCU', editable: false, sortable: false, filterable: false, columngroup: 'asuransi', datafield: 'gcu', width: 40, cellsalign: 'left', align: 'center' }, + { text: 'Billing', editable: false, sortable: false, filterable: false, columngroup: 'asuransi', datafield: 'billing', width: 40, cellsalign: 'left', align: 'center' }, + { text: 'SWASTA', editable: false, sortable: false, filterable: false, columngroup: 'asuransi', datafield: 'swasta', width: 40, cellsalign: 'left', align: 'center' }, + { text: 'Elective', editable: false, sortable: false, filterable: false, columngroup: 'urgensi', datafield: 'ele', width: 40, cellsalign: 'left', align: 'center' }, + { text: 'CITO', editable: false, sortable: false, filterable: false, columngroup: 'urgensi', datafield: 'cito', width: 40, cellsalign: 'left', align: 'center' }, + { text: 'Sample Masuk', columngroup: 'waktu', datafield: 'daftar', width: 160, cellsalign: 'left', align: 'center' }, + { text: 'Draft By', columngroup: 'waktu', datafield: 'nmdrafter', width: 150, cellsalign: 'left', align: 'center' }, + { text: 'Tgl. Draft', columngroup: 'waktu', datafield: 'tgldraft', width: 80, cellsalign: 'left', align: 'center' }, + { text: 'Expertise By', columngroup: 'waktu', datafield: 'nmpembaca', width: 150, cellsalign: 'left', align: 'center' }, + { text: 'Supervisor', columngroup: 'waktu', datafield: 'nmdokter', width: 150, cellsalign: 'left', align: 'center' }, + { text: 'Verifikasi', columngroup: 'waktu', datafield: 'verifikasi', width: 80, cellsalign: 'left', align: 'center' }, + { text: 'Cetak', columngroup: 'waktu', datafield: 'export', width: 80, cellsalign: 'left', align: 'center' }, + { text: 'Asal Pasien', datafield: 'asalpasien', width: 100, cellsalign: 'left', align: 'center'}, + { text: 'Asal RS', datafield: 'nmrs', width: 100, cellsalign: 'left', align: 'center'}, + { text: 'Klinisi', datafield: 'klinisi', width: 150, cellsalign: 'left', align: 'center'}, + { text: 'Klinis', datafield: 'klinis', width: 150, cellsalign: 'left', align: 'center'}, + { text: 'Analis', datafield: 'nmanalis', width: 150, cellsalign: 'left', align: 'center'}, + { text: 'PPDS', datafield: 'nmppdssenior', width: 150, cellsalign: 'left', align: 'center'}, + { text: 'Device', datafield: 'modality', width: 150, cellsalign: 'left', align: 'center'}, + { text: 'Code', datafield: 'kd_spesimen', width: 150, cellsalign: 'left', align: 'center'}, + { text: 'Speciment', datafield: 'nm_spesimen', width: 150, cellsalign: 'left', align: 'center'}, + { text: 'Template', datafield: 'dlp', width: 150, cellsalign: 'left', align: 'center'}, + { text: 'Jenis', datafield: 'diagnosa2', width: 150, cellsalign: 'left', align: 'center'}, + { text: 'Duration', editable: false, sortable: false, filterable: false, datafield: 'durasi', width: 100, cellsalign: 'left', align: 'center'}, + ], + columngroups: + [ + { text: 'Riwayat Tindakan', align: 'center', name: 'waktu' }, + { text: 'Urgensi', align: 'center', name: 'urgensi' }, + { text: 'Insurance', align: 'center', name: 'asuransi' } + ] + }); + } }); $('#btnrekap').click(function () { var bulan = document.getElementById('bulan').value; @@ -302,7 +408,7 @@ $(document).ready(function () { ], updaterow : function (rowid, rowdata, commit) {commit(true);}, type : 'POST', - data : {bulan: bulan, tahun: tahun, _token: token }, + data : {bulan: bulan, tahun: tahun, jenisreport: '', _token: token }, url : '{{ route("reportPeriksa") }}', };