diff --git a/htdocs/app/Http/Controllers/DokterController.php b/htdocs/app/Http/Controllers/DokterController.php index 821d1ef3..2798c8ad 100644 --- a/htdocs/app/Http/Controllers/DokterController.php +++ b/htdocs/app/Http/Controllers/DokterController.php @@ -739,59 +739,64 @@ class DokterController extends Controller } $cekdatanmaddendum = Periksa::where('nofoto', $nofoto)->first(); $tgldaftarpasangan = $cekdatanmaddendum->daftar ?? ''; + $nmadendum = $cekdatanmaddendum->nmadendum ?? ''; /* - $getdatapasangannya = Periksa::whereNotNull('nmadendum')->where('dlp', '!=', $ruangan)->where('daftar', $tgldaftarpasangan)->where('nofoto', '!=', $nofoto)->get(); - foreach ($getdatapasangannya as $item){ - $datayangperludicloning = KomponenJawaban::where('accnumber', $item->nofoto)->get(); - foreach ($datayangperludicloning as $rclone){ - $ceksudahcloning = KomponenJawaban::where('accnumber', $nofoto) - ->where('komponen', $rclone->komponen) - ->where('template', $ruangan)->count(); - if ($ceksudahcloning == 0){ - $komponen = ''; - if ($rclone->komponen == 'lsg_selepitel'){ - $komponen = 'id_selepitel'; + sudah OK tinggal di uncoment saja klo perlu cloning data dari pasangan + if ($nmadendum != ''){ + $getdatapasangannya = Periksa::where('nmadendum', $nmadendum)->where('nm_spesimen', 'SPUTUM')->where('nofoto', '!=', $nofoto)->get(); + foreach ($getdatapasangannya as $item){ + $datayangperludicloning = KomponenJawaban::where('accnumber', $item->nofoto)->get(); + foreach ($datayangperludicloning as $rclone){ + $ceksudahcloning = KomponenJawaban::where('accnumber', $nofoto) + ->where('komponen', $rclone->komponen) + ->where('template', $ruangan)->count(); + if ($ceksudahcloning == 0){ + $komponen = ''; + if ($rclone->komponen == 'lsg_selepitel'){ + $komponen = 'id_selepitel'; + } + if ($rclone->komponen == 'id_selepitel'){ + $komponen = 'lsg_selepitel'; + } + if ($rclone->komponen == 'lsg_selradang'){ + $komponen = 'id_selradang'; + } + if ($rclone->komponen == 'id_selradang'){ + $komponen = 'lsg_selradang'; + } + if ($rclone->komponen == 'lsg_mikroorganisme'){ + $komponen = 'id_mikroorganisme'; + } + if ($rclone->komponen == 'id_mikroorganisme'){ + $komponen = 'lsg_mikroorganisme'; + } + if ($rclone->komponen == 'lsg_mikroorganismeoptional'){ + $komponen = 'id_mikroorganismeoptional'; + } + if ($rclone->komponen == 'id_mikroorganismeoptional'){ + $komponen = 'lsg_mikroorganismeoptional'; + } + if ($rclone->komponen == 'lsg_mikroorganismeoptional'){ + $komponen = 'id_mikroorganismeoptional'; + } + if ($rclone->komponen == 'id_mikroorganismeoptional'){ + $komponen = 'lsg_mikroorganismeoptional'; + } + if ($komponen != ''){ + KomponenJawaban::create([ + 'accnumber' => $nofoto, + 'template' => $ruangan, + 'komponen' => $komponen, + 'isidata' => $rclone->isidata, + 'created_by' => Session('nama') + ]); + } + } - if ($rclone->komponen == 'id_selepitel'){ - $komponen = 'lsg_selepitel'; - } - if ($rclone->komponen == 'lsg_selradang'){ - $komponen = 'id_selradang'; - } - if ($rclone->komponen == 'id_selradang'){ - $komponen = 'lsg_selradang'; - } - if ($rclone->komponen == 'lsg_mikroorganisme'){ - $komponen = 'id_mikroorganisme'; - } - if ($rclone->komponen == 'id_mikroorganisme'){ - $komponen = 'lsg_mikroorganisme'; - } - if ($rclone->komponen == 'lsg_mikroorganismeoptional'){ - $komponen = 'id_mikroorganismeoptional'; - } - if ($rclone->komponen == 'id_mikroorganismeoptional'){ - $komponen = 'lsg_mikroorganismeoptional'; - } - if ($rclone->komponen == 'lsg_mikroorganismeoptional'){ - $komponen = 'id_mikroorganismeoptional'; - } - if ($rclone->komponen == 'id_mikroorganismeoptional'){ - $komponen = 'lsg_mikroorganismeoptional'; - } - if ($komponen != ''){ - KomponenJawaban::create([ - 'accnumber' => $nofoto, - 'template' => $ruangan, - 'komponen' => $komponen, - 'isidata' => $rclone->isidata, - 'created_by' => Session('nama') - ]); - } - } } } + */ KomponenJawaban::where('accnumber', $nofoto)->where('komponen', 'bakteri')->update([ 'template' => $ruangan, @@ -1016,10 +1021,44 @@ class DokterController extends Controller } return $pesan; } else if ($worklist == 'arsipkan'){ + $isi = $request->input('isi'); + if ($isi == ''){ + $pesan = 'Rentang tanggal tidak boleh kosong'; + return $pesan; + } try { - Periksa::where('created_at', 'LIKE', $request->input('isi').'%')->update([ - 'status'=> 'Arsip' + Periksa::where('created_at', '<', $request->input('isi').'%')->where('status', '!=', 'Selesai')->update([ + 'status'=> 'Dibatalkan (Arsip)' ]); + /* + $getperiksa = Periksa::where('created_at', 'LIKE', $request->input('isi').'%')->get(); + foreach ($getperiksa as $item){ + $cekriwayat = Riwayat::where('nofoto', $item->nofoto)->where('keterangan', 'Expertise')->where('verifikasi', 'Accepted')->count(); + if ($cekriwayat > 0){ + Periksa::where('id', $item->id)->update([ + 'status'=> 'Selesai' + ]); + } else { + $getlastriwayat = Riwayat::where('nofoto', $item->nofoto)->orderBy('id', 'DESC')->first(); + if (isset($getlastriwayat->id)){ + Periksa::where('id', $item->id)->update([ + 'status'=> 'Proses Analisis Sampel' + ]); + } else { + $cekdataraw = ResultSample::where('accession_number',$item->nofoto)->first(); + if (!isset($cekdataraw->id)){ + Periksa::where('id', $item->id)->update([ + 'status'=> 'Data Vitek di Terima' + ]); + } else { + Periksa::where('id', $item->id)->update([ + 'status'=> null + ]); + } + } + } + } + */ $pesan = 'Sejumlah data di rentang '.$request->input('isi').' Berhasil di arsipkan'; } catch (Exception $e) { $pesan = $e->getMessage(); @@ -1207,9 +1246,7 @@ class DokterController extends Controller return response()->json(['icon' => 'success', 'warna' => '#1dcbbd', 'status' => 'Success', 'message' => 'Data Kuman Manual Dihapus']); } else { $jumlah = 0; - $cekdulu = RekapAntibiotik::where('orderid', $idperiksa)->where('kuman', $kuman)->count(); - if ($cekdulu == 0){ - $jsonantibiotikmanual = array( + $jsonantibiotikmanual = array( 'Amoxycillin', 'Amoxycillin and Clavulanic Acid', 'Ampicillin', @@ -1252,15 +1289,14 @@ class DokterController extends Controller 'Amphothericin B', 'Caspofungin', 'Flucytosine' - ); - foreach($jsonantibiotikmanual as $antibiotic_name){ - RekapAntibiotik::updateOrCreate( - [ + ); + foreach($jsonantibiotikmanual as $antibiotic_name){ + $ceksudah = RekapAntibiotik::where('orderid', $idperiksa)->where('kuman', $kuman)->where('antibiotic', $antibiotic_name)->count(); + if ($ceksudah == 0){ + RekapAntibiotik::create([ 'orderid' => $idperiksa, 'kuman' => $kuman, 'antibiotic' => $antibiotic_name, - ], - [ 'resistance' => null, 'value' => null, 'interpretation' => null, @@ -1274,6 +1310,15 @@ class DokterController extends Controller $jumlah++; } } + if ($jumlah != 0){ + $update = Riwayat::create([ + 'nofoto' => $nofoto, + 'jawaban' => $kuman, + 'inputor' => Session('nama'), + 'keterangan'=> 'Input Kuman Manual ('.$kuman.') dengan '.$jumlah.' Antibiotik', + 'verifikasi'=> '', + ]); + } return response()->json(['icon' => 'success', 'warna' => '#1dcbbd', 'status' => 'Success', 'message' => 'Data Kuman Manual Disimpan dengan '.$jumlah.' Antibiotik']); } } catch (Exception $e) { @@ -1671,6 +1716,13 @@ class DokterController extends Controller $setnilai = $request->input('setnilai'); $getdataawal = Periksa::where('nofoto', $nofoto)->first(); $orderid = $getdataawal->id ?? 0; + $kuman = ''; + $cekada = ResultSample::where('accession_number', 'LIKE', $nofoto.'%')->get(); + if (!empty($cekada)){ + foreach($cekada as $rows){ + $kuman = $rows->organism; + } + } $getdata = SiraB::where('id', $idtabel)->first(); if (isset($getdata->id)){ $batasatas = $getdata->batasatas; @@ -1694,6 +1746,7 @@ class DokterController extends Controller [ 'orderid' => $orderid, 'antibiotic' => $antibiotik, + 'kuman' => $kuman, ], [ 'resistance' => $getdata->diskcontent, diff --git a/htdocs/app/Http/Controllers/JsonTransferController.php b/htdocs/app/Http/Controllers/JsonTransferController.php index c7a16f48..8839dc18 100644 --- a/htdocs/app/Http/Controllers/JsonTransferController.php +++ b/htdocs/app/Http/Controllers/JsonTransferController.php @@ -35,30 +35,47 @@ class JsonTransferController extends Controller public function generate() { - //POSTGRESS - - $tables = DB::select("SELECT tablename FROM pg_tables WHERE schemaname = 'public'"); + $exportPath = base_path($this->exportPath); + if (!is_dir($exportPath)) { + mkdir($exportPath, 0777, true); + } + + $tables = DB::select("SELECT tablename FROM pg_tables WHERE schemaname = 'public'"); $tableNames = array_map(fn($t) => $t->tablename, $tables); - //MYSQL - //$tables = DB::select('SHOW TABLES'); - //$tableNames = array_map('current', $tables); - foreach ($tableNames as $table) { try { - $data = DB::table($table)->get(); - $json = json_encode($data, JSON_PRETTY_PRINT); - file_put_contents(base_path($this->exportPath . $table . '.json'), $json); + $filePath = $exportPath . $table . '.json'; + $handle = fopen($filePath, 'w'); + + fwrite($handle, "[\n"); + + $first = true; + + foreach (DB::table($table)->cursor() as $row) { + $jsonRow = json_encode($row, JSON_UNESCAPED_UNICODE); + + if (!$first) { + fwrite($handle, ",\n"); + } else { + $first = false; + } + + fwrite($handle, $jsonRow); + } + + fwrite($handle, "\n]"); + fclose($handle); } catch (\Exception $e) { - // Bisa log error-nya atau skip tabel ini \Log::warning("Gagal ekspor tabel $table: " . $e->getMessage()); continue; } } - return redirect()->back()->with('success', 'Semua tabel berhasil diekspor.'); + return redirect()->back()->with('success', 'Semua tabel berhasil diekspor tanpa kehabisan memori.'); } + public function downloadTable($table) { $file = base_path($this->exportPath . $table . '.json'); @@ -89,30 +106,21 @@ class JsonTransferController extends Controller public function importTable($table) { $path = base_path($this->exportPath . $table . '.json'); - if (!file_exists($path)) { return redirect()->back()->with('error', "File JSON untuk tabel $table tidak ditemukan."); } - $json = file_get_contents($path); $data = json_decode($json, true); - if (!is_array($data)) { return redirect()->back()->with('error', "File JSON untuk tabel $table tidak valid."); } - try { DB::beginTransaction(); - - // Kosongkan tabel sebelum import (opsional, hati-hati!) DB::table($table)->truncate(); - - $chunks = array_chunk($data, 200); // ubah 1000 sesuai kemampuan server - + $chunks = array_chunk($data, 200); foreach ($chunks as $chunk) { DB::table($table)->insert($chunk); } - DB::commit(); return redirect()->back()->with('success', "Data untuk tabel $table berhasil di-import."); } catch (\Exception $e) { diff --git a/htdocs/app/Http/Controllers/ListController.php b/htdocs/app/Http/Controllers/ListController.php index c46e7e90..a7babe57 100644 --- a/htdocs/app/Http/Controllers/ListController.php +++ b/htdocs/app/Http/Controllers/ListController.php @@ -264,6 +264,7 @@ class ListController extends Controller DB::raw("CASE WHEN status IS NULL THEN 'NEW' + WHEN status = '' THEN 'NEW' WHEN status LIKE '%Dibatalkan%' THEN 'Batal' WHEN status LIKE '%Pemeriksaan Sampel%' THEN 'Pemeriksaan Sampel' WHEN status LIKE '%Proses Analisis Sampel%' THEN 'Diperiksa' @@ -273,8 +274,7 @@ class ListController extends Controller WHEN status LIKE '%Selesai%' THEN 'Selesai' WHEN status LIKE '%Arsip%' THEN 'Arsip' WHEN status LIKE '%Data Vitek di Terima%' THEN 'Data Vitek di Terima' - WHEN status LIKE '%Data BD di Terima%' THEN 'Data BD di Terima' - ELSE CONCAT('', status::text, '') + ELSE CONCAT('', status::text, '') END AS tlsstatus"), DB::raw("CASE diff --git a/htdocs/app/Services/AstmMessageService.php b/htdocs/app/Services/AstmMessageService.php index a20dfa27..88aec128 100644 --- a/htdocs/app/Services/AstmMessageService.php +++ b/htdocs/app/Services/AstmMessageService.php @@ -661,7 +661,7 @@ class AstmMessageService 'processed' => 1 ]); Periksa::where('nofoto', $data->no_id)->update([ - 'status' => 'Data BD di Terima', + 'status' => 'Data BD di Terima ('.$data->organisme.')', ]); Log::info("Data ASTM BD ", $resultSample->toArray()); PendaftaranOnListiner::where('rnoreg', $data->no_id)->update([ diff --git a/htdocs/resources/views/backup.blade.php b/htdocs/resources/views/backup.blade.php index 256563aa..66c9f825 100644 --- a/htdocs/resources/views/backup.blade.php +++ b/htdocs/resources/views/backup.blade.php @@ -24,7 +24,7 @@
- +
diff --git a/htdocs/resources/views/dokter/pemeriksaan.blade.php b/htdocs/resources/views/dokter/pemeriksaan.blade.php index 8e0a9921..103e007a 100644 --- a/htdocs/resources/views/dokter/pemeriksaan.blade.php +++ b/htdocs/resources/views/dokter/pemeriksaan.blade.php @@ -142,7 +142,7 @@
- @foreach($allanalis as $ranalis) @if($ranalis->id == Session('id')) @@ -155,7 +155,7 @@
- @foreach($allppds as $rppds) @if($rppds->id == Session('id')) @@ -168,7 +168,7 @@
- @foreach($dokters as $dokter) @if($dokter->id == Session('id')) @@ -2848,6 +2848,7 @@ { name: 'kesimpulan', type: 'text'}, { name: 'idruangan', type: 'text'}, { name: 'iddokter', type: 'text'}, + { name: 'dokter_id', type: 'text'}, { name: 'ppdssenior', type: 'text'}, { name: 'middleppds', type: 'text'}, { name: 'ppdsjunior', type: 'text'}, @@ -3019,10 +3020,10 @@ $("#tlppasien").html(dataRecord.tlppasien); $("#periksa_id").val(dataRecord.id); $("#ruangan").val(dataRecord.idruangan); - if (dataRecord.iddokter == '0' || dataRecord.iddokter == null || dataRecord.iddokter == ''){ + if (dataRecord.dokter_id == '0' || dataRecord.dokter_id == null || dataRecord.dokter_id == ''){ $("#dokter").val(masteru).select2().trigger('change'); } else { - $("#dokter").val(dataRecord.iddokter).select2().trigger('change'); + $("#dokter").val(dataRecord.dokter_id).select2().trigger('change'); } if (dataRecord.analis == '0' || dataRecord.analis == null || dataRecord.analis == ''){ $("#analis").val(masteru).select2().trigger('change'); @@ -3169,7 +3170,7 @@ contentType : false, processData : false, success : function (response) { - $("#tblvitek").DataTable().ajax.reload(); + btncreateantibiotikvitek(); }, error: function (xhr, status, error) { var response = xhr.responseJSON || {}; @@ -3200,7 +3201,7 @@ contentType : false, processData : false, success : function (response) { - $("#tblvitek").DataTable().ajax.reload(); + btncreateantibiotikvitek(); }, error: function (xhr, status, error) { var response = xhr.responseJSON || {}; @@ -3231,7 +3232,7 @@ contentType : false, processData : false, success : function (response) { - $("#tblvitek").DataTable().ajax.reload(); + btncreateantibiotikvitek(); }, error: function (xhr, status, error) { var response = xhr.responseJSON || {}; diff --git a/htdocs/resources/views/dokter/ppds.blade.php b/htdocs/resources/views/dokter/ppds.blade.php index 26f13528..6b6f586f 100644 --- a/htdocs/resources/views/dokter/ppds.blade.php +++ b/htdocs/resources/views/dokter/ppds.blade.php @@ -198,7 +198,7 @@
- @foreach($allanalis as $ranalis) @if($ranalis->id == Session('id')) @@ -211,7 +211,7 @@
- @foreach($allppds as $rppds) @if($rppds->id == Session('id')) @@ -224,7 +224,7 @@
- @foreach($dokters as $dokter) @if($dokter->id == Session('id')) @@ -2753,6 +2753,7 @@ { name: 'kesimpulan', type: 'text'}, { name: 'idruangan', type: 'text'}, { name: 'iddokter', type: 'text'}, + { name: 'dokter_id', type: 'text'}, { name: 'ppdssenior', type: 'text'}, { name: 'middleppds', type: 'text'}, { name: 'ppdsjunior', type: 'text'}, @@ -2944,10 +2945,10 @@ $("#tlppasien").html(dataRecord.tlppasien); $("#periksa_id").val(dataRecord.id); $("#ruangan").val(dataRecord.idruangan); - if (dataRecord.iddokter == '0' || dataRecord.iddokter == null || dataRecord.iddokter == ''){ + if (dataRecord.dokter_id == '0' || dataRecord.dokter_id == null || dataRecord.dokter_id == ''){ $("#dokter").val(masteru).select2().trigger('change'); } else { - $("#dokter").val(dataRecord.iddokter).select2().trigger('change'); + $("#dokter").val(dataRecord.dokter_id).select2().trigger('change'); } if (dataRecord.analis == '0' || dataRecord.analis == null || dataRecord.analis == ''){ $("#analis").val(masteru).select2().trigger('change'); @@ -3094,7 +3095,7 @@ contentType : false, processData : false, success : function (response) { - $("#tblvitek").DataTable().ajax.reload(); + btncreateantibiotikvitek(); }, error: function (xhr, status, error) { var response = xhr.responseJSON || {}; @@ -3125,7 +3126,7 @@ contentType : false, processData : false, success : function (response) { - $("#tblvitek").DataTable().ajax.reload(); + btncreateantibiotikvitek(); }, error: function (xhr, status, error) { var response = xhr.responseJSON || {}; @@ -3156,7 +3157,7 @@ contentType : false, processData : false, success : function (response) { - $("#tblvitek").DataTable().ajax.reload(); + btncreateantibiotikvitek(); }, error: function (xhr, status, error) { var response = xhr.responseJSON || {}; diff --git a/htdocs/resources/views/dokter/ppdsdeveloper.blade.php b/htdocs/resources/views/dokter/ppdsdeveloper.blade.php index e6eca901..4fd364f5 100644 --- a/htdocs/resources/views/dokter/ppdsdeveloper.blade.php +++ b/htdocs/resources/views/dokter/ppdsdeveloper.blade.php @@ -43,7 +43,7 @@
-
Search by Date Range
+
Khusus Developer

@@ -198,7 +198,7 @@
- @foreach($allanalis as $ranalis) @if($ranalis->id == Session('id')) @@ -211,7 +211,7 @@
- @foreach($allppds as $rppds) @if($rppds->id == Session('id')) @@ -224,7 +224,7 @@
- @foreach($dokters as $dokter) @if($dokter->id == Session('id')) @@ -2772,6 +2772,7 @@ { name: 'nmanalis', type: 'text'}, { name: 'modality', type: 'text'}, { name: 'dokter', type: 'text'}, + { name: 'dokter_id', type: 'text'}, { name: 'ppds1', type: 'text'}, { name: 'ppds2', type: 'text'}, { name: 'updated_at', type: 'date'}, @@ -2944,10 +2945,10 @@ $("#tlppasien").html(dataRecord.tlppasien); $("#periksa_id").val(dataRecord.id); $("#ruangan").val(dataRecord.idruangan); - if (dataRecord.iddokter == '0' || dataRecord.iddokter == null || dataRecord.iddokter == ''){ + if (dataRecord.dokter_id == '0' || dataRecord.dokter_id == null || dataRecord.dokter_id == ''){ $("#dokter").val(masteru).select2().trigger('change'); } else { - $("#dokter").val(dataRecord.iddokter).select2().trigger('change'); + $("#dokter").val(dataRecord.dokter_id).select2().trigger('change'); } if (dataRecord.analis == '0' || dataRecord.analis == null || dataRecord.analis == ''){ $("#analis").val(masteru).select2().trigger('change'); @@ -3094,7 +3095,7 @@ contentType : false, processData : false, success : function (response) { - $("#tblvitek").DataTable().ajax.reload(); + btncreateantibiotikvitek(); }, error: function (xhr, status, error) { var response = xhr.responseJSON || {}; @@ -3125,7 +3126,7 @@ contentType : false, processData : false, success : function (response) { - $("#tblvitek").DataTable().ajax.reload(); + btncreateantibiotikvitek(); }, error: function (xhr, status, error) { var response = xhr.responseJSON || {}; @@ -3156,7 +3157,7 @@ contentType : false, processData : false, success : function (response) { - $("#tblvitek").DataTable().ajax.reload(); + btncreateantibiotikvitek(); }, error: function (xhr, status, error) { var response = xhr.responseJSON || {};