get_results("SELECT p.ID as p_id,p.Lab_PatientID as nomr,p.Location as ruang,r.ID as r_id,r.UnivTestName as DN,r.RValue as rvalue,r.Unit as unit,r.ANormalFlag as normalflah,convert(varchar, r.TestEndDate, 20) as specimen_dttm,op.FirstName,op.LastName from Patient as p left join Result as r on p.ID = r._PID left join Operator as op on r.OperatiorID = op.OperatorID where r.RValue <> '' $where_tgl_list $where_nomr $where_ruang $where_jam order by r.TestEndDate desc", 'array'); if (!empty($tmp_list_trans)) { // get list t_poct berdasarkan tanggl $where_cek_poct = ($tgl != null) ? "and substring(date_trunc('day',tgl_spesimen::timestamp)::varchar from 1 for 10) = '$tgl'" : ''; $tmp_poct = $db->query("SELECT p_id,r_id from t_poct where st_aktif = 1 $where_cek_poct "); $arr_poct_validated = []; if ($tmp_poct->numRows() > 0) { foreach ($tmp_poct->fetchAll() as $row) { $arr_poct_validated[] = $row['p_id'] . '|' . $row['r_id']; } } $arr_pasien = []; $arr_tempat = ['' => 'Semua Ruang']; $no = 1; foreach ($tmp_list_trans as $k => $list) { // get nobill list($ruang, $nama_ruang) = explode('^', $list['ruang']); $arr_tempat[$nama_ruang] = $nama_ruang; if (preg_match("/IRD|IGD/", $nama_ruang)) { $get_nobill = $db->query("SELECT nobill from t_billrajal where nomr = '{$list['nomr']}' order by idxbill desc limit 1"); } else { $get_nobill = $db->query("SELECT nobill from t_billranap where nomr = '{$list['nomr']}' order by idxbill desc limit 1"); } $get_nobill = ($get_nobill->numRows() > 0) ? $get_nobill->fetchFirst()['nobill'] : ''; // lewati jika sudah tersimpan di tabel t_poct if ( in_array($list['p_id'] . '|' . $list['r_id'], $arr_poct_validated) == true || ($nobill != '' && $get_nobill != $nobill) ) { continue; } unset($tmp_list_trans[$k][0]); unset($tmp_list_trans[$k][1]); unset($tmp_list_trans[$k][2]); unset($tmp_list_trans[$k][3]); unset($tmp_list_trans[$k][4]); unset($tmp_list_trans[$k][5]); unset($tmp_list_trans[$k][6]); unset($tmp_list_trans[$k][7]); unset($tmp_list_trans[$k][8]); unset($list[0]); unset($list[1]); unset($list[2]); unset($list[3]); unset($list[4]); unset($list[5]); unset($list[6]); unset($list[7]); unset($list[8]); $arr_pasien[$k] = $list; // get pasien $tmp_pasien = $db->query("SELECT nama,tgllahir from m_pasien where nomr = '{$list['nomr']}'"); if ($tmp_pasien->numRows() > 0) { $dt_pasien = $tmp_pasien->fetchFirst(); $arr_pasien[$k]['nama_pasien'] = $dt_pasien['nama']; $arr_pasien[$k]['tgllahir'] = $dt_pasien['tgllahir']; } else { $arr_pasien[$k]['nama_pasien'] = ''; $arr_pasien[$k]['tgllahir'] = ''; } $arr_pasien[$k]['no'] = $no; $arr_pasien[$k]['nobill'] = $get_nobill; $no++; } $form_filter_ruang = form_dropdown("ruang", $arr_tempat, '', 'class="form-control"'); echo json_encode(['pasien' => $arr_pasien, 'ruang' => $form_filter_ruang]); } else { echo json_encode(['error' => true, 'msg' => 'Data tidak ditemukan']); } exit; } elseif (array_key_exists('validasi', $post) && $post['validasi'] == true) { $form_data = $post['input']; $ip = getRealIpAddr(); $arr_data = []; foreach ($form_data as $input) { if ($input['nobill'] != '') { $arr_data[] = $input; } } if (!empty($arr_data)) { $arr_error = []; foreach ($arr_data as $row) { $arr_insert = $row; $arr_insert['p_id'] = ['value' => $row['p_id'], 'type' => 'number']; $arr_insert['r_id'] = ['value' => $row['r_id'], 'type' => 'number']; $arr_insert['nobill'] = ['value' => $row['nobill'], 'type' => 'number']; $arr_insert['st_aktif'] = ['value' => 1, 'type' => 'number']; $arr_insert['petugas'] = $_SESSION['NIP']; $arr_insert['tgl_entri'] = date('Y-m-d H:i:s'); $cek_nobill = $db->query("SELECT distinct nobill,brn.nomr,0 as st_rajal,r.no as kd_tl, r.idx_ruang,brn.idxdaftar,brn.carabayar from t_billranap brn join t_admission a on brn.idxdaftar = a.id_admission join m_ruang r on brn.kdpoly = a.noruang where nobill = {$row['nobill']} UNION SELECT distinct nobill,brj.nomr,1 as st_rajal,r.no as kd_tl,r.idx_ruang,brj.idxdaftar,brj.carabayar from t_billrajal brj join t_pendaftaran p on brj.idxdaftar = p.idxdaftar and brj.nomr = p.nomr join m_ruang r on brj.kdpoly = p.kdpoly where nobill = {$row['nobill']}"); if ($cek_nobill->numRows() > 0) { $dt_bill = $cek_nobill->fetchFirst(); if (preg_match("/glu/i", $row['jenis_pemeriksaan'])) { $kode_tindakan = 'R.LPK.113'; } else { $kode_tindakan = 'R.LPK.113'; } $query = "INSERT into t_poct " . bind_sql($arr_insert); $save_poct = execute($query); if ($save_poct) { $get_tarif = getTarif($kode_tindakan); $jasa_sarana = ($get_tarif['jasa_sarana'] != '') ? $get_tarif['jasa_sarana'] : 0; $jasa_pelayanan = ($get_tarif['jasa_pelayanan'] != '') ? $get_tarif['jasa_pelayanan'] : 0; $jasa_anastesi = ($get_tarif['jasa_anastesi'] != '') ? $get_tarif['jasa_anastesi'] : 0; // tambah billing $save = "INSERT into tmp_cartbayar " . bind_sql([ 'kodetarif' => $kode_tindakan, 'ip' => $ip, 'qty' => ['value' => 1, 'type' => 'number'], 'poly' => ['value' => $dt_bill['kd_tl'], 'type' => 'number'], 'unit' => ['value' => $_SESSION['KDUNIT'], 'type' => 'number'], 'tarif' => ['value' => $get_tarif['jumlah'], 'type' => 'number'], 'discount' => ['value' => 0, 'type' => 'number'], 'tottarif' => ['value' => $get_tarif['jumlah'], 'type' => 'number'], 'jasa_sarana' => ['value' => $jasa_sarana, 'type' => 'number'], 'jasa_pelayanan' => ['value' => $jasa_pelayanan, 'type' => 'number'], 'jasa_anastesi' => ['value' => $jasa_anastesi, 'type' => 'number'], 'kddokter' => ['value' => 'null', 'type' => 'number'] ]); $result_tmp = execute($save . " RETURNING idxbayar"); $idxbayar = $result_tmp->fetchFirst()['idxbayar']; if ($dt_bill['st_rajal'] == 1) { $bill_lab = new Billing('irja', $row['nomr'], $dt_bill['idxdaftar'], date('Y-m-d'), 0, 0, $dt_bill['carabayar'], $dt_bill['kd_tl'], 0, $_SESSION['KDUNIT']); $nota_bill = $bill_lab->simpanBill(); } else { $bill_lab = new Billing('irna', $row['nomr'], $dt_bill['idxdaftar'], date('Y-m-d'), 0, 0, $dt_bill['carabayar'], $dt_bill['kd_tl'], 0, $_SESSION['KDUNIT']); $nota_bill = $bill_lab->simpanBill(); } if ($nota_bill != false) { // $msg = 'Simpan pemeriksaan lab berhasil'; // $type = 'success'; // update nonota $query_lab = "UPDATE t_poct set nonota = '$nota_bill' where r_id = {$row['r_id']} and p_id = {$row['p_id']} and nobill = {$row['nobill']} "; $save_bill = execute($query_lab); if ($save_bill) { $qry_daftar = ''; $arr_daftar = []; $lab_code = $_SESSION['kd_unit_lab_pk']; $nourut = last_nolab($lab_code); //check no lab $tmp_cek = $db->query("SELECT distinct nolab FROM t_orderlabpk_main WHERE NOLAB LIKE '" . $lab_code . date('ym') . "%' ORDER BY NOLAB DESC LIMIT 1"); if ($tmp_cek->numRows() > 0) { $data = $tmp_cek->fetchAll()[0]; if ($data['nolab'] == $nourut) { $nourut = last_nolab($lab_code); } } $sql_main = "INSERT INTO t_orderlabpk_main(nolab,idxdaftar,nomr,waktu_pengambilan,ket_pemeriksaan,cito,jenis_form,rajal,aps,tglorder,kdpoly,st_periksa) VALUES ('$nourut','{$dt_bill['idxdaftar']}','{$row['nomr']}','{$arr_insert['tgl_spesimen']}','{$arr_insert['jenis_pemeriksaan']}',0,'BIASA',{$dt_bill['st_rajal']},0,'{$arr_insert['tgl_entri']}',{$dt_bill['kd_tl']},1)"; $tambah_main_order = execute($sql_main); /* $sql = "SELECT distinct OrderNumber FROM t_lis_registration WHERE OrderNumber LIKE '".$lab_code.date('ym')."%' ORDER BY OrderNumber DESC LIMIT 1"; $sql = $db->query($sql); $PRE_NO = $LASTNOLAB = $xLASTNOLAB = null; $PRE_NO = $lab_code.date('ym'); if($sql->numRows() > 0){ $row = $sql->fetchFirst(); $LASTNOLAB = $row['OrderNumber']; if(substr($LASTNOLAB, 6) == '999999') { $xLASTNOLAB = '1'.str_pad('0', 6, '0', STR_PAD_LEFT); } else { if(strlen(substr($LASTNOLAB,6)) < 6) { $xLASTNOLAB = str_pad( (substr($LASTNOLAB,6)+1), 6, '0', STR_PAD_LEFT); } else { $xLASTNOLAB = str_pad( (substr($LASTNOLAB,6)+1), strlen(substr($LASTNOLAB,6)), '0', STR_PAD_LEFT); } } $nourut = $PRE_NO.$xLASTNOLAB; } else { $nourut = $PRE_NO.'000001'; } */ // Reference Bridging if ($dt_bill['st_rajal']) { $qry_daftar = "SELECT kelas_daftar,k.kelas as nama_kelas, diagnosa_utama,jenis_penyakit,kdcarabayar,c.nama as carabayar,d.kddokter,d.namadokter,a.kdpoly,p.nama as namapoly,null as noruang, null as namaruang, null as nott,(select distinct nobill from t_billrajal where idxdaftar = a.idxdaftar limit 1) as nobill from t_pendaftaran a LEFT JOIN icd on icd.icd_code = a.diagnosa_utama JOIN m_carabayar c on a.kdcarabayar = c.kode JOIN m_tarifkelas k on a.kelas_daftar = k.kokel JOIN m_dokter d on a.kddokter = d.kddokter JOIN m_ruang p on a.kdpoly = p.no WHERE idxdaftar = {$dt_bill['idxdaftar']} AND nomr = '{$row['nomr']}'"; } else { $qry_daftar = "SELECT k.kokel as kelas_daftar,r.kelas as nama_kelas,a.icd_masuk as diagnosa_utama,jenis_penyakit,statusbayar as kdcarabayar,c.nama as carabayar,d.kddokter,d.namadokter,null as kdpoly,null as namapoly,noruang,r.nama as namaruang,nott,(select distinct nobill from t_billranap where idxdaftar = a.id_admission limit 1) as nobill FROM t_admission a LEFT JOIN icd on icd.icd_code = a.icd_masuk JOIN m_carabayar c on a.statusbayar = c.kode JOIN m_dokter d on a.dokter_penanggungjawab = d.KDDOKTER JOIN m_ruang r on a.noruang = r.no JOIN m_tarifkelas k on r.kelas = k.kelas WHERE id_admission = {$dt_bill['idxdaftar']} AND nomr = '{$row['nomr']}'"; } $tmp_daftar = $db->query($qry_daftar); $arr_daftar = $tmp_daftar->fetchFirst(); // Data Bridging $DiagnoseID = (!empty($arr_daftar)) ? $arr_daftar['diagnosa_utama'] : ''; $DiagnoseName = (!empty($arr_daftar)) ? preg_replace("/\'/", "`", $arr_daftar['jenis_penyakit']) : ''; $ClassID = (!empty($arr_daftar)) ? $arr_daftar['kelas_daftar'] : 0; $ClassName = (!empty($arr_daftar)) ? $arr_daftar['nama_kelas'] : ''; $DoctorID = (!empty($arr_daftar)) ? $arr_daftar['kddokter'] : 0; $DoctorName = (!empty($arr_daftar)) ? $arr_daftar['namadokter'] : ''; $AgreementID = (!empty($arr_daftar)) ? $arr_daftar['kdcarabayar'] : 0; $AgreementName = (!empty($arr_daftar)) ? $arr_daftar['carabayar'] : ''; if ($dt_bill['st_rajal']) { $WardID = $arr_daftar['kdpoly']; $WardName = $arr_daftar['namapoly']; $ServiceUnitID = 2; $ServiceUnitName = 'Rawat Jalan'; $RoomID = 0; $RoomName = ''; $BedID = 0; $BedName = ''; $AgreementID = $arr_daftar['kdcarabayar']; $AgreementName = $arr_daftar['carabayar']; $GuarantorID = 2; $GuarantorName = 'RAWAT JALAN'; $category_id = 3; $category_name = 'POCT'; } else { $WardID = 0; $WardName = ''; $ServiceUnitID = 1; $ServiceUnitName = 'Rawat Inap'; $RoomID = $arr_daftar['noruang']; $RoomName = $arr_daftar['namaruang']; $BedID = $arr_daftar['nott']; $BedName = $arr_daftar['nott']; $AgreementID = $arr_daftar['kdcarabayar']; $AgreementName = $arr_daftar['carabayar']; $GuarantorID = 1; $GuarantorName = 'RAWAT INAP'; $category_id = 3; $category_name = 'POCT'; } if (_DBTYPE_ == 'postgre') { $cito = '0::bit'; } $arr_LISREG = [ 'NoMR' => $row['nomr'], 'VisitNumber' => (($arr_daftar['nobill'] != '') ? $arr_daftar['nobill'] : $dt_bill['idxdaftar']), 'OrderNumber' => $nourut, 'DiagnoseID' => $DiagnoseID, 'DiagnoseName' => $DiagnoseName, 'CITO' => $cito, 'ServiceUnitID' => $ServiceUnitID, // 1 Ranap, 2 Rajal 'ServiceUnitName' => $ServiceUnitName, // Rawat Inap, Rawat Jalan 'GuarantorID' => $GuarantorID, // Penjamin 'GuarantorName' => $GuarantorName, 'AgreementID' => $AgreementID, 'AgreementName' => $AgreementName, 'DoctorID' => $DoctorID, 'DoctorName' => $DoctorName, 'ClassID' => $ClassID, 'ClassName' => $ClassName, 'WardID' => $WardID, 'WardName' => $WardName, 'RoomID' => $RoomID, 'RoomName' => $RoomName, 'BedID' => $BedID, 'BedName' => $BedName, 'RegUserID' => $_SESSION['NIP'], 'RegUserName' => $_SESSION['NAMA_PEGAWAI'], 'OrderDateTime' => date('Y-m-d H:i:s'), 'category_id' => $category_id, 'category_name' => $category_name ]; // echo '
',print_r($arr_LISREG),'
';exit; $arr_set = array(); foreach ($arr_LISREG as $key => $value) { if (in_array($key, array('CITO', 'ServiceUnitID', 'GuarantorID', 'AgreementID', 'DoctorID', 'ClassID', 'WardID', 'RoomID', 'BedID'))) { $value = ($value == '') ? 0 : $value; $arr_set[$key] = ['value' => $value, 'type' => 'number']; } else { $arr_set[$key] = $value; } } $insert_data = "INSERT INTO t_lis_registration " . bind_sql($arr_set); $save_lis = execute($insert_data); if ($save_lis) { if (preg_match("/LSP/", $kode_tindakan)) { $kode_periksa_lis = $kode_tindakan; } else { $ex_kode = explode('.', $kode_tindakan); $kode_periksa_lis = $ex_kode[1]; } // add item lis $arr_LISREGITEM = []; $arr_LISREGITEM = [ 'OrderNumber' => $nourut, 'OrderItemID' => $kode_tindakan, 'OrderItemName' => preg_replace("/\'/", '`', $get_tarif['uraian_tarif']), 'OrderItemDateTime' => date('Y-m-d H:i:s') ]; $insert_lis_item = "INSERT INTO t_lis_regorderitem " . bind_sql($arr_LISREGITEM); execute($insert_lis_item); } } } else { // $msg = 'Simpan pemeriksaan lab gagal'; // $type = 'error'; } //$db->query('DELETE from tmp_cartbayar_detil where idxbayar in (select idxbayar from tmp_cartbayar where IP = \'' . $ip . '\')'); //$db->query('DELETE from tmp_cartbayar where IP = \'' . $ip . '\''); } else { $arr_error[] = $row['nobill']; } } else { $arr_error[] = $row['nobill']; } } if (!empty($arr_error)) { $msg = 'Validasi POCT gagal pada beberapa nobill'; $type = 'error'; } else { $msg = 'Validasi POCT berhasil'; $type = 'success'; } } else { $msg = 'Tidak terdapat nobill yang diproses'; $type = 'error'; } echo json_encode(['message' => $msg, 'type' => $type]); exit; } elseif (array_key_exists('hist_pec', $post) && $post['hist_pec'] == true) { $arr_validasi_poct = $db_pec->get_results("SELECT p.ID as p_id,p.Lab_PatientID as nomr,p.Location as ruang,r.ID as r_id,r.UnivTestName as DN,r.RValue as rvalue,r.Unit as unit, r.ANormalFlag as normalflah,convert(varchar, r.TestEndDate, 20) as specimen_dttm,op.FirstName,op.LastName from Patient as p left join Result as r on p.ID = r._PID left join Operator as op on r.OperatiorID = op.OperatorID where r.RValue <> '' and p.Lab_PatientID = '{$post['nomr']}' order by r.TestEndDate desc ", 'array'); $html = ''; $no = 1; foreach ($arr_validasi_poct as $ind => $item) { $tempat = explode('^', $item['ruang']); $tempat_layanana = (preg_match('/IRD|IGD/', $tempat[1])) ? 'rajal' : 'ranap'; $tmp_pasien = $db->query("SELECT nama,tgllahir from m_pasien where nomr = '{$item['nomr']}'"); $nama_pasien = $tgl_lahir = ''; if ($tmp_pasien->numRows() > 0) { $dt_pasien = $tmp_pasien->fetchFirst(); $nama_pasien = $dt_pasien['nama']; $tgl_lahir = $dt_pasien['tgllahir']; } $html .= ''; } $html .= '
NO NO MR Nama Pasien Tgl Lahir Tempat Layanan/ Operator Jenis Pemeriksaan Tgl Spesimen Nilai Unit
' . $no++ . ' ' . $item['nomr'] . ' ' . $nama_pasien . ' ' . $tgl_lahir . ' ' . $tempat[1] . ' ' . $item['FirstName'] . ' ' . $item['LastName'] . ' ' . $item['DN'] . ' ' . $item['rvalue'] . ' ' . $item['unit'] . '
'; echo $html; exit; } elseif (array_key_exists('validate_pec', $post) && $post['validate_pec'] == true) { global $db_pec; global $db; $no_pemeriksaan = !empty($post['norm']) ? " and SUBSTRING(p.Lab_PatientID, 1,8) = '{$post['norm']}'" : ''; $tmp_list_trans = $db_pec->get_results("SELECT p.ID as p_id,p.Lab_PatientID as nomr,p.Location as ruang,r.ID as r_id,r.UnivTestName as DN,r.RValue as rvalue, r.Unit as unit,r.ANormalFlag as normalflah,convert(varchar, r.TestEndDate, 20) as specimen_dttm,op.FirstName,op.LastName, convert(varchar, p.lastUpdDatetime, 20) as lastUpdDatetime from Patient as p left join Result as r on p.ID = r._PID left join Operator as op on r.OperatiorID = op.OperatorID where r.RValue <> '' and convert(date,r.TestEndDate) = '" . $post['tanggal_order'] . "' $no_pemeriksaan and LEN(p.Lab_PatientID) >= 10 order by r.TestEndDate, p.Lab_PatientID desc", 'array'); $arr_tempat = ['' => 'Semua Ruang']; $arr_pasien = []; if (!empty($tmp_list_trans)) { $no = 1; foreach ($tmp_list_trans as $k => $list) { //Cari NORM pasien sesuai nomer pemeriksaan if (strlen($list['nomr']) == 20) { $order_poct_sql = $db->query("SELECT order_poct.*,m_pasien.nama as nama_pasien, m_ruang.nama as ruangan, m_ruang.no as kode_ruangan, m_perawat.nama as operator, m_pasien.tgllahir as tgl_lahir from order_poct join m_pasien on m_pasien.nomr = order_poct.norm join m_ruang on m_ruang.no = order_poct.ruang_id join m_perawat on m_perawat.idperawat = order_poct.operator_id where no_pemeriksaan = '{$list['nomr']}' and to_char(tanggal, 'YYYY-mm-dd') = '{$post['tanggal_order']}' and (is_valid = 2 or is_valid = 0 or is_valid is null) "); } else { $order_poct_sql = $db->query("SELECT order_poct.*,m_pasien.nama as nama_pasien, m_ruang.nama as ruangan, m_ruang.no as kode_ruangan, m_perawat.nama as operator, m_pasien.tgllahir as tgl_lahir from order_poct join m_pasien on m_pasien.nomr = order_poct.norm join m_ruang on m_ruang.no = order_poct.ruang_id join m_perawat on m_perawat.idperawat = order_poct.operator_id where upper(order_number) = '{$list['nomr']}' and to_char(tanggal, 'YYYY-mm-dd') = '{$post['tanggal_order']}' and (is_valid = 2 or is_valid = 0 or is_valid is null) "); } $order_poct = $order_poct_sql->fetchAll()[0]; if (!empty($order_poct)) { if (empty($order_poct['no_nota'])) { $arr_pasien[$k]['no'] = $no++; $arr_pasien[$k]['nama_pasien'] = $order_poct['nama_pasien']; $arr_pasien[$k]['norm'] = $order_poct['norm']; $arr_pasien[$k]['no_pemeriksaan'] = $order_poct['no_pemeriksaan']; $arr_pasien[$k]['order_number'] = $order_poct['order_number']; $arr_pasien[$k]['tgl_lahir'] = $order_poct['tgl_lahir']; $arr_pasien[$k]['ruangan'] = $order_poct['ruangan']; $arr_pasien[$k]['kode_ruangan'] = $order_poct['kode_ruangan']; $arr_pasien[$k]['operator'] = $order_poct['operator']; $arr_pasien[$k]['jenis'] = $list['DN']; $arr_pasien[$k]['tgl_spesimen'] = $list['specimen_dttm']; $arr_pasien[$k]['nilai'] = $list['rvalue']; $arr_pasien[$k]['unit'] = $list['unit']; $arr_pasien[$k]['p_id'] = $list['p_id']; $arr_pasien[$k]['no_billing'] = $order_poct['no_billing']; $arr_pasien[$k]['flag'] = $order_poct['flag']; $arr_pasien[$k]['idxdaftar'] = $order_poct['idxdaftar']; $arr_pasien[$k]['created_at'] = $order_poct['created_at']; $arr_pasien[$k]['order_id'] = $order_poct['id']; $arr_pasien[$k]['lastUpdDatetime'] = $list['lastUpdDatetime']; } } } echo json_encode(['pasien' => $arr_pasien, 'ruang' => '']); } } elseif (array_key_exists('validasi_poct', $post) && $post['validasi_poct'] == true) { $arr_post = $post['input']; $ip = getRealIpAddr(); $arr_insert['tgl_entri'] = date('Y-m-d H:i:s'); $msg = 'Validasi Berhasil'; $type = 'success'; $arr_validasi_poct = []; foreach ($arr_post as $ind => $item) { $arr_validasi_poct[$item['norm']]['norm'] = $item['norm']; $arr_validasi_poct[$item['norm']]['order_id'] = $item['order_id']; $arr_validasi_poct[$item['norm']]['detail'][$item['no_pemeriksaan']]['norm'] = $item['norm']; $arr_validasi_poct[$item['norm']]['detail'][$item['no_pemeriksaan']]['idxdaftar'] = $item['idxdaftar']; $arr_validasi_poct[$item['norm']]['detail'][$item['no_pemeriksaan']]['no_pemeriksaan'] = $item['no_pemeriksaan']; $arr_validasi_poct[$item['norm']]['detail'][$item['no_pemeriksaan']]['order_number'] = $item['order_number']; $arr_validasi_poct[$item['norm']]['detail'][$item['no_pemeriksaan']]['nama_pasien'] = $item['nama_pasien']; $arr_validasi_poct[$item['norm']]['detail'][$item['no_pemeriksaan']]['tgl_lahir'] = $item['tgl_lahir']; $arr_validasi_poct[$item['norm']]['detail'][$item['no_pemeriksaan']]['kode_ruangan'] = $item['kode_ruangan']; $arr_validasi_poct[$item['norm']]['detail'][$item['no_pemeriksaan']]['ruangan'] = $item['ruangan']; $arr_validasi_poct[$item['norm']]['detail'][$item['no_pemeriksaan']]['operator'] = $item['operator']; $arr_validasi_poct[$item['norm']]['detail'][$item['no_pemeriksaan']]['jenis'] = $item['jenis']; $arr_validasi_poct[$item['norm']]['detail'][$item['no_pemeriksaan']]['tgl_spesimen'] = $item['tgl_spesimen']; $arr_validasi_poct[$item['norm']]['detail'][$item['no_pemeriksaan']]['nilai'] = $item['nilai']; $arr_validasi_poct[$item['norm']]['detail'][$item['no_pemeriksaan']]['unit'] = $item['unit']; $arr_validasi_poct[$item['norm']]['detail'][$item['no_pemeriksaan']]['no_billing'] = $item['no_billing']; $arr_validasi_poct[$item['norm']]['detail'][$item['no_pemeriksaan']]['p_id'] = $item['p_id']; $arr_validasi_poct[$item['norm']]['detail'][$item['no_pemeriksaan']]['is_valid'] = $item['is_valid']; $arr_validasi_poct[$item['norm']]['detail'][$item['no_pemeriksaan']]['flag'] = $item['flag']; $arr_validasi_poct[$item['norm']]['detail'][$item['no_pemeriksaan']]['created_at'] = $item['created_at']; $arr_validasi_poct[$item['norm']]['detail'][$item['no_pemeriksaan']]['order_id'] = $item['order_id']; $arr_validasi_poct[$item['norm']]['detail'][$item['no_pemeriksaan']]['is_proses'] = $item['is_proses']; $arr_validasi_poct[$item['norm']]['detail'][$item['no_pemeriksaan']]['lastUpdDatetime'] = $item['lastUpdDatetime']; } $xx = ''; foreach ($arr_validasi_poct as $ind => $validasi) { $norm_ind = ''; $is_nobill = ''; foreach ($validasi['detail'] as $x => $item) { if ($item['is_proses'] == 1) { if ($item['is_valid'] == 1) { //cek apakah ada pendingan order atasnya ? $query_poct = $db->query("select * from order_poct where created_at < '{$item['created_at']}' and idxdaftar = '{$item['idxdaftar']}' and norm = '{$item['norm']}' and is_valid is null"); if ($query_poct->numRows() > 0) { $orders = $query_poct->fetchAll(); foreach ($orders as $order) { $query_order = "UPDATE order_poct set is_valid = '3' where no_pemeriksaan = '{$order['no_pemeriksaan']}' and norm = '{$order['norm']}' "; $save_order = execute($query_order); } } //Cari Kode Tarif $sql_poct = $db->query("select opd.tarif_rs_id ,opd.kode_tarif_rs, op.carabayar_id from order_poct op join order_poct_detail opd on op.id = opd.order_poct_id where no_pemeriksaan = '{$item['no_pemeriksaan']}'"); $kode_tindakan = ''; if ($sql_poct->numRows() > 0) { $poct = $sql_poct->fetchAll()[0]; //foreach ($data_poct as $poct) { $kode_tindakan = $poct['kode_tarif_rs']; $get_tarif = getTarif($kode_tindakan); $jasa_sarana = ($get_tarif['jasa_sarana'] != '') ? $get_tarif['jasa_sarana'] : 0; $jasa_pelayanan = ($get_tarif['jasa_pelayanan'] != '') ? $get_tarif['jasa_pelayanan'] : 0; $jasa_anastesi = ($get_tarif['jasa_anastesi'] != '') ? $get_tarif['jasa_anastesi'] : 0; $dokter_mod = ($post['dokter_mod'] != '') ? $post['dokter_mod'] : ''; $save = "INSERT into tmp_cartbayar " . bind_sql([ 'kodetarif' => $kode_tindakan, 'ip' => $ip, 'qty' => ['value' => 1, 'type' => 'number'], 'poly' => ['value' => $item['kode_ruangan'], 'type' => 'number'], 'unit' => ['value' => $_SESSION['KDUNIT'], 'type' => 'number'], 'tarif' => ['value' => $get_tarif['jumlah'], 'type' => 'number'], 'discount' => ['value' => 0, 'type' => 'number'], 'tottarif' => ['value' => $get_tarif['jumlah'], 'type' => 'number'], 'jasa_sarana' => ['value' => $jasa_sarana, 'type' => 'number'], 'jasa_pelayanan' => ['value' => $jasa_pelayanan, 'type' => 'number'], 'jasa_anastesi' => ['value' => $jasa_anastesi, 'type' => 'number'], 'kddokter' => ['value' => $dokter_mod, 'type' => 'number'] ]); $result_tmp = execute($save . " RETURNING idxbayar"); $idxbayar = $result_tmp->fetchFirst()['idxbayar']; //ranap if ($item['flag'] == 1) { $is_lanjut = true; $xx .= $item['norm'] . ' - '; //if($x == '11571099202309070003'){ // var_dump($norm_ind != $item['norm']); die(); //} //if($norm_ind != $item['norm']){ $bill_lab = new Billing('irna', $item['norm'], $item['idxdaftar'], date('Y-m-d'), 0, 0, $poct['carabayar_id'], $item['kode_ruangan'], 0, $_SESSION['KDUNIT']); $nota_bill = $bill_lab->simpanBill(); if ($nota_bill != false) { $is_nobill = $nota_bill; $query_order = "UPDATE order_poct set no_nota = '$is_nobill' where no_pemeriksaan = '{$item['no_pemeriksaan']}' and norm = '{$item['norm']}' "; $save_order = execute($query_order); $is_lanjut = true; } else { $is_lanjut = false; } //}else{ //if($x == '11567981202309070001'){ // print_r($nota_bill); die(); //} // $bill_lab = new Billing('irna', $item['norm'], $item['idxdaftar'], date('Y-m-d'), 0, 0, $poct['carabayar_id'], $item['kode_ruangan'], 0, $_SESSION['KDUNIT']); // $nota_bill = $bill_lab->simpanBill($is_nobill); // $query_order = "UPDATE order_poct set no_nota = '$is_nobill' where no_pemeriksaan = '{$item['no_pemeriksaan']}' and norm = '{$item['norm']}' "; // $save_order = execute($query_order); //} } if ($is_lanjut == true) { $query_lab = "UPDATE order_poct set is_valid = '{$item['is_valid']}' where no_pemeriksaan = '{$item['no_pemeriksaan']}' and norm = '{$item['norm']}' "; $save_bill = execute($query_lab); if ($save_bill) { $lab_code = $_SESSION['kd_unit_lab_pk']; $nourut = $item['no_pemeriksaan']; $tmp_cek = $db->query("SELECT distinct nolab FROM t_orderlabpk_main WHERE NOLAB LIKE '" . $lab_code . date('ym') . "%' ORDER BY NOLAB DESC LIMIT 1"); if ($tmp_cek->numRows() > 0) { $data = $tmp_cek->fetchAll()[0]; if ($data['nolab'] == $nourut) { $nourut = $item['no_pemeriksaan']; } } $sql_main = "INSERT INTO t_orderlabpk_main(nolab,idxdaftar,nomr,waktu_pengambilan,ket_pemeriksaan,cito,jenis_form,rajal,aps,tglorder,kdpoly,st_periksa) VALUES ('$nourut','{$item['no_billing']}','{$item['norm']}','{$item['tgl_spesimen']}','{$item['jenis']}',0,'BIASA', {$item['flag']},0,'{$arr_insert['tgl_entri']}',{$item['kode_ruangan']},1)"; $tambah_main_order = execute($sql_main); // Reference Bridging //$item['flag'] == 1 -> ranap if ($item['flag'] == 1) { $qry_daftar = "SELECT k.kokel as kelas_daftar,r.kelas as nama_kelas,a.icd_masuk as diagnosa_utama,jenis_penyakit,statusbayar as kdcarabayar,c.nama as carabayar,d.kddokter,d.namadokter,null as kdpoly,null as namapoly,noruang,r.nama as namaruang,nott,(select distinct nobill from t_billranap where idxdaftar = a.id_admission limit 1) as nobill FROM t_admission a LEFT JOIN icd on icd.icd_code = a.icd_masuk JOIN m_carabayar c on a.statusbayar = c.kode JOIN m_dokter d on a.dokter_penanggungjawab = d.KDDOKTER JOIN m_ruang r on a.noruang = r.no JOIN m_tarifkelas k on r.kelas = k.kelas WHERE id_admission = '{$item['idxdaftar']}' AND nomr = '{$item['norm']}'"; } $sql_dokter = $db->query("SELECT kddokter,namadokter FROM m_dokter WHERE kddokter = '" . $dokter_mod . "' and aktif = 1"); $dokter_mod = $sql_dokter->fetchAll()[0]; $dokter_mod_id = ''; $dokter_mode_name = ''; if (!empty($dokter_mod)) { $dokter_mod_id = $dokter_mod['kddokter']; $dokter_mode_name = $dokter_mod['namadokter']; } $tmp_daftar = $db->query($qry_daftar); $arr_daftar = $tmp_daftar->fetchFirst(); $DiagnoseID = (!empty($arr_daftar)) ? $arr_daftar['diagnosa_utama'] : ''; $DiagnoseName = (!empty($arr_daftar)) ? preg_replace("/\'/", "`", $arr_daftar['jenis_penyakit']) : ''; $ClassID = (!empty($arr_daftar)) ? $arr_daftar['kelas_daftar'] : 0; $ClassName = (!empty($arr_daftar)) ? $arr_daftar['nama_kelas'] : ''; $DoctorID = (!empty($arr_daftar)) ? $arr_daftar['kddokter'] : 0; $DoctorName = (!empty($arr_daftar)) ? $arr_daftar['namadokter'] : ''; $AgreementID = (!empty($arr_daftar)) ? $arr_daftar['kdcarabayar'] : 0; $AgreementName = (!empty($arr_daftar)) ? $arr_daftar['carabayar'] : ''; if ($item['flag'] == 1) { $WardID = 0; $WardName = ''; $ServiceUnitID = 1; $ServiceUnitName = 'Rawat Inap'; $RoomID = $arr_daftar['noruang']; $RoomName = $arr_daftar['namaruang']; $BedID = $arr_daftar['nott']; $BedName = $arr_daftar['nott']; $AgreementID = $arr_daftar['kdcarabayar']; $AgreementName = $arr_daftar['carabayar']; $GuarantorID = 1; $GuarantorName = 'RAWAT INAP'; $category_id = 3; $category_name = 'POCT'; $dokter_id = $dokter_mod_id; $dokter_name = $dokter_mode_name; } if (_DBTYPE_ == 'postgre') { $cito = '0::bit'; } $arr_LISREG = [ 'NoMR' => $item['norm'], 'VisitNumber' => $item['no_billing'], 'OrderNumber' => $item['no_pemeriksaan'], 'DiagnoseID' => $DiagnoseID, 'DiagnoseName' => $DiagnoseName, 'CITO' => $cito, 'ServiceUnitID' => $ServiceUnitID, // 1 Ranap, 2 Rajal 'ServiceUnitName' => $ServiceUnitName, // Rawat Inap, Rawat Jalan 'GuarantorID' => $GuarantorID, // Penjamin 'GuarantorName' => $GuarantorName, 'AgreementID' => $AgreementID, 'AgreementName' => $AgreementName, 'DoctorID' => $DoctorID, 'DoctorName' => $DoctorName, 'ClassID' => $ClassID, 'ClassName' => $ClassName, 'WardID' => $WardID, 'WardName' => $WardName, 'RoomID' => $RoomID, 'RoomName' => $RoomName, 'BedID' => $BedID, 'BedName' => $BedName, 'RegUserID' => $_SESSION['NIP'], 'RegUserName' => $_SESSION['NAMA_PEGAWAI'], 'OrderDateTime' => $item['lastUpdDatetime'], 'category_id' => $category_id, 'category_name' => $category_name, 'dokter_id' => $dokter_id, 'dokter_name' => $dokter_name ]; $arr_set = array(); foreach ($arr_LISREG as $key => $value) { if (in_array($key, array('CITO', 'ServiceUnitID', 'GuarantorID', 'AgreementID', 'DoctorID', 'ClassID', 'WardID', 'RoomID', 'BedID'))) { $value = ($value == '') ? 0 : $value; $arr_set[$key] = ['value' => $value, 'type' => 'number']; } else { $arr_set[$key] = $value; } } $insert_data = "INSERT INTO t_lis_registration " . bind_sql($arr_set); $save_lis = execute($insert_data); if ($save_lis) { if (preg_match("/LSP/", $kode_tindakan)) { $kode_periksa_lis = $kode_tindakan; } else { $ex_kode = explode('.', $kode_tindakan); $kode_periksa_lis = $ex_kode[1]; } // add item lis $arr_LISREGITEM = []; $arr_LISREGITEM = [ 'OrderNumber' => $item['no_pemeriksaan'], 'OrderItemID' => $kode_tindakan, 'OrderItemName' => preg_replace("/\'/", '`', $get_tarif['uraian_tarif']), 'OrderItemDateTime' => $item['lastUpdDatetime'], 'hasil' => $item['nilai'] ]; $insert_lis_item = "INSERT INTO t_lis_regorderitem " . bind_sql($arr_LISREGITEM); execute($insert_lis_item); } } else { $msg = 'Validasi POCT gagal, gagal update no nota!'; $type = 'error'; } } else { $msg = 'Validasi POCT gagal, gagal create Billing!'; $type = 'error'; } //} } else { $msg = 'Validasi POCT gagal, No Pemeriksaan POCT tidak ditemukan!'; $type = 'error'; } } else { $query_lab = "UPDATE order_poct set is_valid = '{$item['is_valid']}' where no_pemeriksaan = '{$item['no_pemeriksaan']}' and norm = '{$item['norm']}' "; $save_bill = execute($query_lab); } $norm_ind = $item['norm']; $is_nobill = $nota_bill; } else { $query_lab = "UPDATE order_poct set is_valid = '3' where no_pemeriksaan = '{$item['no_pemeriksaan']}' and norm = '{$item['norm']}' "; $save_bill = execute($query_lab); } } $sql_order_poct = $db->query("select * from order_poct where id = '{$validasi['order_id']}'"); $data_poct = $sql_order_poct->fetchAll()[0]; foreach ($validasi['detail'] as $is => $data) { $sql_poct = $db->query("select * from order_poct where id = '{$data['order_id']}'"); $poct = $sql_poct->fetchAll()[0]; if (!empty($poct['no_nota'])) { $sql_bill = $db->query("select * from t_billranap where nonota = '{$poct['no_nota']}'"); $bill = $sql_bill->fetchAll()[0]; $query_poct = "UPDATE order_poct set no_nota = '{$data_poct['no_nota']}' where id = '{$poct['id']}' and norm = '{$item['norm']}' "; $save_poct = execute($query_poct); $query_bill = "UPDATE t_billranap set nonota = '{$data_poct['no_nota']}' where idxbill = '{$bill['idxbill']}' and nomr = '{$bill['nomr']}' "; $save_bill = execute($query_bill); } } } echo json_encode(['message' => $msg, 'type' => $type]); exit; } elseif (array_key_exists('rekap_poct', $post) && $post['rekap_poct'] == true) { global $db_pec; global $db; $is_time = false; if (!empty($post['time_order_start']) && !empty($post['time_order_end'])) { $date_start = date_create($post['tanggal_order_start'] . ' ' . $post['time_order_start']); $date_start = date_format($date_start, "Y-m-d H:i:s"); $date_end = date_create($post['tanggal_order_start'] . ' ' . $post['time_order_end']); $date_end = date_format($date_end, "Y-m-d H:i:s"); $is_time = true; } if ($is_time) { $tmp_list_trans = $db_pec->get_results("SELECT p.ID as p_id,p.Lab_PatientID as nomr,p.Location as ruang,r.ID as r_id,r.UnivTestName as DN,r.RValue as rvalue, r.Unit as unit,r.ANormalFlag as normalflah,convert(varchar, r.TestEndDate, 20) as specimen_dttm,op.FirstName,op.LastName, convert(varchar, p.lastUpdDatetime, 20) as lastUpdDatetime, r.InstrSectionID from Patient as p left join Result as r on p.ID = r._PID left join Operator as op on r.OperatiorID = op.OperatorID where r.RValue <> '' and convert(datetime,r.TestEndDate) between CONVERT(datetime, '" . $date_start . "' ) and CONVERT(datetime, '" . $date_end . "') order by r.TestEndDate, p.Lab_PatientID desc", 'array'); } else { $tmp_list_trans = $db_pec->get_results("SELECT p.ID as p_id,p.Lab_PatientID as nomr,p.Location as ruang,r.ID as r_id,r.UnivTestName as DN,r.RValue as rvalue, r.Unit as unit,r.ANormalFlag as normalflah,convert(varchar, r.TestEndDate, 20) as specimen_dttm,op.FirstName,op.LastName, convert(varchar, p.lastUpdDatetime, 20) as lastUpdDatetime, r.InstrSectionID from Patient as p left join Result as r on p.ID = r._PID left join Operator as op on r.OperatiorID = op.OperatorID where r.RValue <> '' and convert(date,r.TestEndDate) = '" . $date_start . "' order by r.TestEndDate, p.Lab_PatientID desc", 'array'); } $arr_pasien = []; if (count($tmp_list_trans) > 0) { $no = 1; foreach ($tmp_list_trans as $ind => $list) { $is_data = false; $data_poct = ''; if (strlen($list['nomr']) > 10) { if (strlen($list['nomr']) == 20) { $order_poct_sql = $db->query("SELECT order_poct.*,m_pasien.nama as nama_pasien, m_ruang.nama as ruangan, m_ruang.no as kode_ruangan, m_perawat.nama as operator, m_pasien.tgllahir as tgl_lahir from order_poct join m_pasien on m_pasien.nomr = order_poct.norm join m_ruang on m_ruang.no = order_poct.ruang_id join m_perawat on m_perawat.idperawat = order_poct.operator_id where no_pemeriksaan = '{$list['nomr']}' and to_char(tanggal, 'YYYY-mm-dd') = '{$post['tanggal_order_start']}' and (is_valid = 2 or is_valid = 0 or is_valid is null) "); } else { $order_poct_sql = $db->query("SELECT order_poct.*,m_pasien.nama as nama_pasien, m_ruang.nama as ruangan, m_ruang.no as kode_ruangan, m_perawat.nama as operator, m_pasien.tgllahir as tgl_lahir from order_poct join m_pasien on m_pasien.nomr = order_poct.norm join m_ruang on m_ruang.no = order_poct.ruang_id join m_perawat on m_perawat.idperawat = order_poct.operator_id where upper(order_number) = '{$list['nomr']}' and to_char(tanggal, 'YYYY-mm-dd') = '{$post['tanggal_order_start']}' and (is_valid = 2 or is_valid = 0 or is_valid is null) "); } $order_poct = $order_poct_sql->fetchAll()[0]; if (!empty($order_poct)) { $is_data = true; $data_poct = $order_poct; } } $arr_pasien[$ind]['no'] = $no++; $arr_pasien[$ind]['nomr'] = ($is_data) ? $data_poct['norm'] : $list['nomr']; $arr_pasien[$ind]['nama_pasien'] = ($is_data) ? $data_poct['nama_pasien'] : $list['FirstName'] . ' ' . $list['LastName']; $arr_pasien[$ind]['no_billing'] = ($is_data) ? $data_poct['no_billing'] : ''; $arr_pasien[$ind]['date'] = $list['specimen_dttm']; $arr_pasien[$ind]['InstrSectionID'] = $list['InstrSectionID']; $arr_pasien[$ind]['ruang'] = $list['ruang']; $arr_pasien[$ind]['hasil'] = $list['rvalue']; $arr_pasien[$ind]['unit'] = $list['unit']; $arr_pasien[$ind]['data_order'] = ($is_data) ? "ADA" : "TIDAK"; } echo json_encode(['pasien' => $arr_pasien]); } }