Files
simrs-jatim/core/pec_service.php
2024-04-19 14:04:41 +07:00

908 lines
52 KiB
PHP

<?php
if (!session_id()) {
session_start();
}
require_once 'main.php';
require_once('SQLServerDb.php');
$db_pec = new SQLServerDb(
$_ENV['PEC_DB_USER'],
$_ENV['PEC_DB_PASS'],
$_ENV['PEC_DB_NAME'],
$_ENV['PEC_DB_HOST']
);
$post = $_REQUEST;
if (array_key_exists('list_pec', $post) && $post['list_pec'] == true) {
global $db_pec;
global $db;
$tgl = (array_key_exists('tgl_awal', $post)) ? $post['tgl_awal'] : null;
$jam_awal = (array_key_exists('jam_awal', $post)) ? $post['jam_awal'] : null;
$jam_akhir = (array_key_exists('jam_akhir', $post)) ? $post['jam_akhir'] : null;
$nomr = (array_key_exists('nomr', $post)) ? $post['nomr'] : null;
$nobill = (array_key_exists('nobill', $post)) ? $post['nobill'] : null;
$ruang = (array_key_exists('ruang', $post)) ? $post['ruang'] : null;
$where_nomr = ($nomr != null) ? ' and p.Lab_PatientID = \'' . $nomr . '\'' : null;
$where_tgl_list = ($tgl != null) ? " and convert(date,r.TestEndDate) = '$tgl' " : '';
$where_ruang = ($ruang != null) ? " and p.Location like '%$ruang' " : '';
$where_jam = ($jam_awal != null && $jam_akhir != null) ? " and convert(time,TestEndDate) between '$jam_awal' and '$jam_akhir' " : '';
$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
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 '<pre>',print_r($arr_LISREG),'</pre>';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 = '<table class="table table-bordered table-striped table-sm" id="tbl_list_item">
<thead>
<tr class="bg-green">
<th width="3%">NO</th>
<th width="5%">NO MR</th>
<th width="15%">Nama Pasien</th>
<th width="8%">Tgl Lahir</th>
<th width="10%">Tempat Layanan/ Operator</th>
<th width="5%">Jenis Pemeriksaan</th>
<th width="10%">Tgl Spesimen</th>
<th width="5%">Nilai</th>
<th width="5%">Unit</th>
</tr>
</thead>
<tbody>';
$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 .= '<tr>
<td>' . $no++ . '</td>
<td>' . $item['nomr'] . '</td>
<td>' . $nama_pasien . '</td>
<td>' . $tgl_lahir . '</td>
<td>' . $tempat[1] . '</td>
<td>' . $item['FirstName'] . ' ' . $item['LastName'] . '</td>
<td>' . $item['DN'] . '</td>
<td>' . $item['rvalue'] . '</td>
<td>' . $item['unit'] . '</td>
</tr>';
}
$html .= '</tbody></table>';
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]);
}
}