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

479 lines
18 KiB
PHP

<?php
session_start();
include '../core/main.php';
ini_set('memory_limit', '-1');
$page = $_REQUEST['page'];
if($page == 'cari')
{
$nobill = preg_replace("/\./", '', $_REQUEST['input']['nobill']);
preg_match("/\d{8}/",$nobill,$match_nobill);
$nobill = $match_nobill[0];
if($nobill != '') {
$tmp_identitas = $db->query("SELECT a.nobill,a.nomr,a.idxdaftar,b.kdpoly as kode_tempat,c.nama,c.alamat,c.notelp,d.nama as tempat_layanan,1 as st_rajal,dok.namadokter as dpjp,0 as st_aps,b.keluarpoly as keluarrs,sk.keterangan as keterangan_pulang from
t_billrajal a
JOIN t_pendaftaran b on a.idxdaftar = b.idxdaftar
join m_pasien c on a.nomr = c.nomr
join m_ruang d on b.kdpoly = d.no
left join m_dokter dok on b.kddokter = dok.kddokter
left join m_statuskeluar sk on sk.status = b.status
where a.nobill = '$nobill' and a.status <> 'BATAL'
UNION
SELECT a.nobill,a.nomr,a.idxdaftar,a.kdpoly as kode_tempat,c.nama,c.alamat,c.notelp,d.nama as tempat_layanan,1 as st_rajal,dok.namadokter as dpjp,1 as st_aps,null as keluarrs,null as keterangan_pulang from
t_billrajal a
JOIN t_pendaftaran_aps b on a.idxdaftar = b.idxdaftar
join m_pasien_aps c on a.nomr = c.nomr
left join m_ruang d on b.kdpoly = d.no
left join m_dokter dok on b.kddokter = dok.kddokter
where a.nobill = '$nobill' and a.status <> 'BATAL' and a.aps = 1
UNION
SELECT a.nobill,a.nomr,a.idxdaftar,b.noruang as kode_tempat,c.nama,c.alamat,c.notelp,d.nama as tempat_layanan,0 as st_rajal, dok.namadokter as dpjp,0 as st_aps,b.keluarrs,sk.keterangan as keterangan_pulang from
t_billranap a
JOIN t_admission b on a.idxdaftar = b.id_admission
join m_pasien c on a.nomr = c.nomr
join m_ruang d on b.noruang = d.no
left join m_dokter dok on b.dokter_penanggungjawab = dok.kddokter
left join t_resumepulang rp on rp.idadmission = b.id_admission
left join m_statuskeluar sk on rp.statuspulang = sk.status
where a.nobill = '$nobill' and b.keluarrs is null and a.status <> 'BATAL'
");
if($tmp_identitas->numRows() > 0)
{
$data_pasien = $tmp_identitas->fetchFirst();
$db_igd = $db->query("SELECT no,nama FROM m_ruang where kelompok = 'IGD' and st_aktif = 1");
$arr_igd = $arr_nama_igd = [];
foreach($db_igd->fetchAll() as $igd)
{
$arr_igd[] = $igd['no'];
$arr_nama_igd[$igd['no']] = $igd['nama'];
}
if($data_pasien['keterangan_pulang'] != null && in_array($data_pasien['kode_tempat'],$arr_igd))
{
echo json_encode(['message'=>'No Billing sudah ditutup dengan status '.$data_pasien['keterangan_pulang'],'type'=>'error']);
exit;
}
echo json_encode($data_pasien);
exit;
}
else {
echo json_encode(['message'=>'No Billing tidak ditemukan','type'=>'error']);
exit;
}
}
else {
echo json_encode(['message'=>'No Billing tidak ditemukan','type'=>'error']);
exit;
}
}
if($page == 'cari_nonreg')
{
$nobill = preg_replace("/\./", '', $_REQUEST['input']['nobill']);
$tmp_identitas = $db->query("SELECT a.nobill,a.no_nonreg as nomr,a.idx_nonreg as idxdaftar,a.ruang as kode_tempat,c.nama,c.alamat,c.no_telepon as notelp,d.nama as tempat_layanan,'nonreg' as st_rajal,dok.namadokter as dpjp,0 as st_aps from
t_billnonreg a
join m_nonreg c on a.idx_nonreg = c.idx_nonreg
join m_ruang d on a.ruang = d.no
left join m_dokter dok on a.kddokter = dok.kddokter
where a.nobill = '$nobill' and a.status <> 'BATAL'
");
if($tmp_identitas->numRows() > 0)
{
$data_pasien = $tmp_identitas->fetchFirst();
echo json_encode($data_pasien);
exit;
}
else {
echo json_encode(['message'=>'No Billing tidak ditemukan','type'=>'error']);
exit;
}
}
else if($page == 'cari_tarif')
{
$kode_tarif = $_REQUEST['kode_tarif'];
$tmp_tarif = $db->query("SELECT id_tarif,kode_tarif,uraian_tarif,jumlah,(select nilai from m_tarifdetil where komponen like '%SARANA%' and kode_tarif = m_tarif_rs.kode_tarif) as jasa_sarana,(select nilai from m_tarifdetil where komponen like '%LAYANAN%' and kode_tarif = m_tarif_rs.kode_tarif) as jasa_pelayanan,(select nilai from m_tarifdetil where komponen like '%ANASTESI%' and kode_tarif = m_tarif_rs.kode_tarif) as jasa_anastesi,st_paket from m_tarif_rs where kode_tarif = '$kode_tarif'");
if($tmp_tarif->numRows() > 0)
{
$data_tarif = $tmp_tarif->fetchFirst();
$tmp_dokter = $db->query("SELECT * FROM m_dokter and aktif = 1");
$arr_dokter = $arr_dokter_anastesi = [];
if($tmp_dokter->numRows() > 0){
foreach($tmp_dokter->fetchAll() as $d){
$tgl_SIP = new Datetime($d['tgl_akhir_sip']);
$tgl_sekarang = new Datetime(date('Y-m-d'));
if($d['tgl_akhir_sip'] > '0000-00-00' || $d['tgl_akhir_sip'] > '0001-01-01'){
if($tgl_sekarang <= $tgl_SIP) {
if(trim($d['kdsmf']) == 'ANESTHESI') {
$arr_dokter_anastesi[$d['kddokter']] = $d['namadokter'];
}
// else {
$arr_dokter[$d['kdsmf']][$d['kddokter']] = $d['namadokter'];
// }
}
}
}
}
$format_dpjp = false;
if($data_tarif['jasa_pelayanan'] > 0)
{
$format_dpjp = '<div class="form-group row">
<label class="col-sm-4">Jasa Pelayanan</label>
<div class="col-sm-8">
'.form_dropdown('dpjp_pelayanan',$arr_dokter,'','class="form-control dpjp_tarif"').'<input type="hidden" name="komponen" value="Jasa Pelayanan">
</div>
</div>';
if($data_tarif['jasa_anastesi'] > 0) {
$format_dpjp .= '<div class="form-group row">
<label class="col-sm-4">Jasa Anastesi</label>
<div class="col-sm-8">
'.form_dropdown('dpjp_anastesi',$arr_dokter_anastesi,'','class="form-control dpjp_tarif"').'<input type="hidden" name="komponen" value="Jasa Anastesi">
</div>
</div>';
}
}
echo json_encode(['tarif'=>$data_tarif,'dpjp'=>$format_dpjp]);
exit;
}
else {
echo json_encode(['message'=>'Kode Tarif tidak ditemukan','type'=>'error']);
exit;
}
}
else if($page == 'load_kode_tarif')
{
$kode_tarif = $_REQUEST['kode'];
if(strlen($kode_tarif) >= 2) {
$tmp_tarif = $db->query("SELECT id_tarif,kode_tarif,uraian_tarif,jumlah,(select nilai from m_tarifdetil where komponen like '%SARANA%' and kode_tarif = m_tarif_rs.kode_tarif) as jasa_sarana,(select nilai from m_tarifdetil where komponen like '%LAYANAN%' and kode_tarif = m_tarif_rs.kode_tarif) as jasa_pelayanan,(select nilai from m_tarifdetil where komponen like '%ANASTESI%' and kode_tarif = m_tarif_rs.kode_tarif) as jasa_anastesi,st_paket from m_tarif_rs where (kode_tarif ilike '%{$kode_tarif}%' or uraian_tarif ilike '%{$kode_tarif}%') and is_not_hidden = 1 limit 200");
if($tmp_tarif->numRows() > 0)
{
$data_tarif = $tmp_tarif->fetchAll();
$tmp_dokter = $db->query("SELECT * FROM m_dokter where aktif = 1");
$arr_dokter = $arr_dokter_anastesi = [''=>'Pilih Dokter DPJP'];
if($tmp_dokter->numRows() > 0){
foreach($tmp_dokter->fetchAll() as $d){
$tgl_SIP = new Datetime($d['tgl_akhir_sip']);
$tgl_sekarang = new Datetime(date('Y-m-d'));
if($d['tgl_akhir_sip'] > '0000-00-00' || $d['tgl_akhir_sip'] > '0001-01-01'){
if($tgl_sekarang <= $tgl_SIP) {
if(trim($d['kdsmf']) == 'ANESTHESI') {
$arr_dokter_anastesi[$d['kddokter']] = $d['namadokter'];
}
// else {
$arr_dokter[$d['kdsmf']][$d['kddokter']] = $d['namadokter'];
// }
}
}
}
}
$format_dpjp = false;
foreach($data_tarif as $row) {
if($row['jasa_pelayanan'] > 0)
{
$format_dpjp = '<div class="form-group row">
<label class="col-sm-4">Dokter Tind. Pelayanan</label>
<div class="col-sm-8">
'.form_dropdown('dpjp_pelayanan',$arr_dokter,'','class="form-control dpjp_tarif" id="dpjp_pelayanan"').'<input type="hidden" name="komponen" value="Jasa Pelayanan">
</div>
</div>';
if($row['jasa_anastesi'] > 0) {
$format_dpjp .= '<div class="form-group row">
<label class="col-sm-4">Dokter Anastesi</label>
<div class="col-sm-8">
'.form_dropdown('dpjp_anastesi',$arr_dokter_anastesi,'','class="form-control dpjp_tarif" id="dpjp_anastesi"').'<input type="hidden" name="komponen" value="Jasa Anastesi">
</div>
</div>';
}
}
$row['text'] = $row['kode_tarif'].' - '.$row['uraian_tarif'];
$option[] = (object) array_merge($row,['dpjp'=>$format_dpjp]);
}
echo json_encode($option);
exit;
}
else {
echo json_encode([['text'=>'Kode tarif tidak ditemukan']]);
exit;
}
}
else {
echo json_encode([['text'=>'Kode tarif terlalu pendek']]);
exit;
}
}
else if($page == 'cari_form_tarif')
{
$kode_tarif = $_REQUEST['kode_tarif'];
$tmp_tarif = $db->query("SELECT id_tarif,kode_tarif,uraian_tarif,jumlah,(select nilai from m_tarifdetil where komponen like '%SARANA%' and kode_tarif = m_tarif_rs.kode_tarif) as jasa_sarana,(select nilai from m_tarifdetil where komponen like '%LAYANAN%' and kode_tarif = m_tarif_rs.kode_tarif) as jasa_pelayanan,(select nilai from m_tarifdetil where komponen like '%ANASTESI%' and kode_tarif = m_tarif_rs.kode_tarif) as jasa_anastesi,st_paket from m_tarif_rs where kode_tarif = '$kode_tarif'");
if($tmp_tarif->numRows() > 0)
{
$data_tarif = $tmp_tarif->fetchFirst();
echo json_encode(['tarif'=>$data_tarif]);
exit;
}
else {
echo json_encode(['message'=>'Kode Tarif tidak ditemukan','type'=>'error']);
exit;
}
}
else if($page == 'add_item')
{
$id_tarif = $_REQUEST['id_tarif'];
$kode_tarif = $_REQUEST['kode_tarif'];
$uraian_tarif = $_REQUEST['uraian_tarif'];
$jumlah = $_REQUEST['jumlah_tagihan'];
$jasa_sarana = $_REQUEST['jasa_sarana'];
$jasa_pelayanan = $_REQUEST['jasa_pelayanan'];
$jasa_anastesi = $_REQUEST['jasa_anastesi'];
$tempat_layanan = (array_key_exists('tempat_layanan_tarif', $_REQUEST)) ? $_REQUEST['tempat_layanan_tarif'] : $_SESSION['KDUNIT'];
if(preg_match("/-/", $kode_tarif)) {
list($kode_tarif,$uraian_tarif) = explode(" - ", $kode_tarif);
}
$tarif = preg_replace("/\./", "", $jumlah);
$no = $_REQUEST['noitem'];
$button_rem = '<button type="button" class="btn btn-danger" onclick="remItem(this)" data-kode_tarif="'.$kode_tarif.'" data-noitem="'.$no.'"><i class="fa fa-trash"></i></button>';
$input_hidden = '<input type="hidden" name="detil['.$no.'][id_tarif]" value="'.$id_tarif.'">
<input type="hidden" name="detil['.$no.'][unit]" value="'.$tempat_layanan.'">
<input type="hidden" name="detil['.$no.'][petugas]" value="'.$_REQUEST['petugas'].'">
<input type="hidden" name="detil['.$no.'][kode_tarif]" value="'.$kode_tarif.'">
<input type="hidden" name="detil['.$no.'][tarif]" class="nominal_tarif" value="'.$tarif.'">
<input type="hidden" name="detil['.$no.'][jasa_sarana]" value="'.$jasa_sarana.'">
<input type="hidden" name="detil['.$no.'][jasa_pelayanan]" value="'.$jasa_pelayanan.'">
<input type="hidden" name="detil['.$no.'][jasa_anastesi]" value="'.$jasa_anastesi.'">';
if($jasa_pelayanan > 0) {
$input_hidden .= '<input type="hidden" name="dpjp['.$no.'][0][kddokter]" value="'.$_REQUEST['dpjp_pelayanan'].'">
<input type="hidden" name="dpjp['.$no.'][0][komponen]" value="Jasa Pelayanan">
<input type="hidden" name="dpjp['.$no.'][0][nilai]" value="'.$jasa_pelayanan.'">';
}
if($jasa_anastesi > 0) {
$input_hidden .= '<input type="hidden" name="dpjp['.$no.'][1][kddokter]" value="'.$_REQUEST['dpjp_anastesi'].'">
<input type="hidden" name="dpjp['.$no.'][1][komponen]" value="Jasa Anastesi">
<input type="hidden" name="dpjp['.$no.'][1][nilai]" value="'.$jasa_anastesi.'">';
}
$format = '<tr id="row'.$no.'"><td>'.$no.'</td><td>'.$kode_tarif.'</td><td>'.$uraian_tarif.'</td><td>'.$jumlah.$input_hidden.'</td><td>'.$button_rem.'</td></tr>';
echo json_encode(['kode_tarif'=>$kode_tarif,'rowitem'=>$format]);
exit;
}
else if($page == 'billing') {
$db->query('DELETE from tmp_cartbayar_detil where idxbayar in (select idxbayar from tmp_cartbayar where IP = \''.getRealIpAddr().'\')');
$db->query('DELETE from tmp_cartbayar where IP = \''.getRealIpAddr().'\'');
$idxdaftar = $_REQUEST['idxdaftar'];
$tempat = $_REQUEST['tempat'];
$st_aps = ($_REQUEST['st_aps'] == '') ? 0 : $_REQUEST['st_aps'];
$st_rajal = $_REQUEST['st_rajal'];
$identitas = $_REQUEST['input'];
$detil = $_REQUEST['detil'];
$dpjp = $_REQUEST['dpjp'];
if($st_rajal == 1) {
$tmp_carabayar = $db->query("SELECT kdcarabayar from t_pendaftaran where idxdaftar = $idxdaftar");
$carabayar = $tmp_carabayar->fetchFirst()['kdcarabayar'];
}
else {
$tmp_carabayar = $db->query("SELECT statusbayar from t_admission where id_admission = $idxdaftar");
$carabayar = $tmp_carabayar->fetchFirst()['statusbayar'];
}
$arr_error = []; $unit = $petugas = '';
foreach($detil as $kd => $data) {
$petugas = $data['petugas'];
$kddokter = 0;
$i = 0;
if(is_array($dpjp) && array_key_exists($kd, $dpjp)) {
foreach($dpjp[$kd] as $key => $val) {
if($i == 0) {
$kddokter = $val['kddokter'];
}
$i++;
}
}
$jasa_pelayanan = ($data['jasa_pelayanan'] != '') ? $data['jasa_pelayanan'] : 0;
$jasa_sarana = ($data['jasa_sarana'] != '') ? $data['jasa_sarana'] : 0;
// $unit = ($_SESSION['KDUNIT']) ? $_SESSION['KDUNIT'] : $_REQUEST['unit'];
$unit = (array_key_exists('unit', $data) && $data['unit'] != '') ? $data['unit'] : $_REQUEST['unit'];
$tarif = str_replace(",",".",$data['tarif']);
if(preg_match("/OBT/i", $data['kode_tarif'])){
$jasa_sarana = bulat_puluhan($jasa_sarana,true);
$tarif = bulat_puluhan($tarif,true);
}
$save = "INSERT into tmp_cartbayar ".bind_sql([
'kodetarif' => $data['kode_tarif'],
'ip' => getRealIpAddr(),
'id' => $data['id_tarif'],
'qty' => ['value'=>1,'type'=>'number'],
'poly' => ['value'=>0,'type'=>'number'],
'unit' => ['value'=>$unit,'type'=>'number'],
'tarif' => ['value'=>$tarif,'type'=>'number'],
'discount'=>['value'=>0,'type'=>'number'],
'tottarif' => ['value'=>$tarif,'type'=>'number'],
'jasa_sarana' => ['value'=>$jasa_sarana,'type'=>'number'],
'jasa_pelayanan' => ['value'=>$jasa_pelayanan,'type'=>'number'],
'jasa_anastesi' => ['value'=>0,'type'=>'number'],
'jenis' => '',
'kddokter'=>['value'=>$kddokter,'type'=>'number']]
);
if(_DBTYPE_ == 'mysqli') {
$result_tmp = execute($save);
$idxbayar = $result_tmp->insertid;
}
else {
$result_tmp = execute($save." RETURNING idxbayar");
$idxbayar = $result_tmp->fetchFirst()['idxbayar'];
}
if(is_array($dpjp) && array_key_exists($kd, $dpjp)) {
foreach($dpjp[$kd] as $key => $data_detil) {
if(array_key_exists('kddokter', $data_detil)) {
$input = [];
$input['idxbayar'] = $idxbayar;
$input['kode_tarif'] = $data['kode_tarif'];
$input = array_merge($input, $data_detil);
$detil = "INSERT INTO tmp_cartbayar_detil ".bind_sql($input);
execute($detil);
}
}
}
if(!$result_tmp) {
$arr_error[] = $kd;
}
}
$last_nonota = null;
if(!empty($detil) && empty($arr_error)) {
$billing_sys = ($st_rajal == 1) ? 'irja' : 'irna';
$new_bill = new Billing($billing_sys,$identitas['nomr'],$idxdaftar,date("Y-m-d"),0,0,$carabayar,$tempat,$st_aps,$unit,$petugas);
$last_nonota = $new_bill->simpanBill();
}
if($last_nonota != null) {
$msg = 'Tagihan telah berhasil disimpan';
$type = 'success';
}
else {
$msg = 'Tagihan gagal disimpan';
$type = 'error';
}
echo json_encode(['message'=>$msg, 'type'=>$type, 'nonota' => $last_nonota]);
exit;
}
else if($page == 'billing_nonreg') {
$db->query('DELETE from tmp_cartbayar_detil where idxbayar in (select idxbayar from tmp_cartbayar where IP = \''.getRealIpAddr().'\')');
$db->query('DELETE from tmp_cartbayar where IP = \''.getRealIpAddr().'\'');
$idxdaftar = $_REQUEST['idxdaftar'];
$tempat = $_REQUEST['tempat'];
$st_aps = ($_REQUEST['st_aps'] == '') ? 0 : $_REQUEST['st_aps'];
$st_rajal = $_REQUEST['st_rajal'];
$identitas = $_REQUEST['input'];
$detil = $_REQUEST['detil'];
$dpjp = $_REQUEST['dpjp'];
$tanggal = (null !== $_REQUEST['tanggal'] ) ? $_REQUEST['tanggal'] : date('Y-m-d');
$tempat_layanan = ($_REQUEST['unit'] != '') ? $_REQUEST['unit'] : null;
$carabayar = $_REQUEST['jenis_bayar'];
$arr_error = []; $unit = $petugas = '';
foreach($detil as $kd => $data) {
$petugas = $data['petugas'];
$kddokter = 0;
$i = 0;
if(is_array($dpjp) && array_key_exists($kd, $dpjp)) {
foreach($dpjp[$kd] as $key => $val) {
if($i == 0) {
$kddokter = $val['kddokter'];
}
$i++;
}
}
$jasa_pelayanan = ($data['jasa_pelayanan'] != '') ? $data['jasa_pelayanan'] : 0;
$jasa_sarana = ($data['jasa_sarana'] != '') ? $data['jasa_sarana'] : 0;
$tarif = str_replace(",",".",$data['tarif']);
$save = "INSERT into tmp_cartbayar ".bind_sql([
'kodetarif' => $data['kode_tarif'],
'ip' => getRealIpAddr(),
'id' => $data['id_tarif'],
'qty' => ['value'=>1,'type'=>'number'],
'poly' => ['value'=>$tempat,'type'=>'number'],
'unit' => ['value'=>$tempat_layanan,'type'=>'number'],
'tarif' => ['value'=>$tarif,'type'=>'number'],
'discount'=>['value'=>0,'type'=>'number'],
'tottarif' => ['value'=>$tarif,'type'=>'number'],
'jasa_sarana' => ['value'=>$jasa_sarana,'type'=>'number'],
'jasa_pelayanan' => ['value'=>$jasa_pelayanan,'type'=>'number'],
'jasa_anastesi' => ['value'=>0,'type'=>'number'],
'jenis' => '',
'kddokter'=>['value'=>$kddokter,'type'=>'number']]
);
if(_DBTYPE_ == 'mysqli') {
$result_tmp = execute($save);
$idxbayar = $result_tmp->insertid;
}
else {
$result_tmp = execute($save." RETURNING idxbayar");
$idxbayar = $result_tmp->fetchFirst()['idxbayar'];
}
if(is_array($dpjp) && array_key_exists($kd, $dpjp)) {
foreach($dpjp[$kd] as $key => $data_detil) {
if(array_key_exists('kddokter', $data_detil)) {
$input = [];
$input['idxbayar'] = $idxbayar;
$input['kode_tarif'] = $data['kode_tarif'];
$input = array_merge($input, $data_detil);
$detil = "INSERT INTO tmp_cartbayar_detil ".bind_sql($input);
execute($detil);
}
}
}
if(!$result_tmp) {
$arr_error[] = $kd;
}
}
$last_nonota = null;
if(!empty($detil) && empty($arr_error)) {
$new_bill = new Billing('nonregister',$identitas['nomr'],$idxdaftar,$tanggal,0,0,$carabayar,$tempat,0,$tempat_layanan,$petugas);
$last_nonota = $new_bill->simpanBill();
}
if($last_nonota != null) {
$msg = 'Tagihan telah berhasil disimpan';
$type = 'success';
}
else {
$msg = 'Tagihan gagal disimpan';
$type = 'error';
}
echo json_encode(['message'=>$msg, 'type'=>$type, 'nonota' => $last_nonota]);
exit;
}
?>