2489 lines
114 KiB
PHP
2489 lines
114 KiB
PHP
<?php
|
|
class Transaction extends MY_Controller
|
|
{
|
|
|
|
var $db_onedev;
|
|
public function index()
|
|
{
|
|
echo "Transaction API";
|
|
}
|
|
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
$this->db_onedev = $this->load->database("onedev", true);
|
|
$this->db_log = $this->load->database("log", true);
|
|
$this->load->helper(array('form', 'url'));
|
|
}
|
|
|
|
public function error_log($data,$userid=999)
|
|
{
|
|
|
|
$sql = "INSERT INTO ais_error_log (
|
|
AisErrorLogFnName,
|
|
AisErrorLogMessage,
|
|
AisErrorLogQuery,
|
|
AisErrorLogJson,
|
|
AisErrorLogUserID,
|
|
AisErrorLogCreated
|
|
)
|
|
VALUES(
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
NOW()
|
|
)";
|
|
$qry = $this->db_log->query($sql, array($data['fn_name'],$data['message'],$data['query'],$data['json'],$userid));
|
|
//echo $this->db_log->last_query();
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Generic POST request function
|
|
* @param string $url API endpoint URL
|
|
* @param array $data Request payload
|
|
* @param array $headers Custom headers (optional)
|
|
* @return array Response from API
|
|
*/
|
|
public function post_request($url, $data = array(), $headers = array())
|
|
{
|
|
// Default headers
|
|
$default_headers = array(
|
|
'Content-Type: application/json'
|
|
);
|
|
|
|
// Merge custom headers with default headers
|
|
$final_headers = array_merge($default_headers, $headers);
|
|
|
|
// Initialize cURL
|
|
$ch = curl_init();
|
|
|
|
// Set cURL options
|
|
curl_setopt($ch, CURLOPT_URL, $url);
|
|
curl_setopt($ch, CURLOPT_POST, true);
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, $final_headers);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
|
|
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
|
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
|
|
|
|
// Execute cURL request
|
|
$response = curl_exec($ch);
|
|
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
|
$error = curl_error($ch);
|
|
|
|
// Close cURL
|
|
curl_close($ch);
|
|
|
|
// Prepare result
|
|
$result = array(
|
|
'success' => false,
|
|
'http_code' => $http_code,
|
|
'response' => null,
|
|
'error' => null
|
|
);
|
|
|
|
if ($error) {
|
|
$result['error'] = $error;
|
|
} else {
|
|
$result = json_decode($response, true);
|
|
$result['success'] = true;
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
/**
|
|
* Generic PUT request function
|
|
* @param string $url API endpoint URL
|
|
* @param array $data Request payload
|
|
* @param array $headers Custom headers (optional)
|
|
* @return array Response from API
|
|
*/
|
|
public function put_request($url, $data = array(), $headers = array())
|
|
{
|
|
// Default headers
|
|
$default_headers = array(
|
|
'Content-Type: application/json'
|
|
);
|
|
|
|
// Merge custom headers with default headers
|
|
$final_headers = array_merge($default_headers, $headers);
|
|
|
|
// Initialize cURL
|
|
$ch = curl_init();
|
|
|
|
// Set cURL options
|
|
curl_setopt($ch, CURLOPT_URL, $url);
|
|
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, $final_headers);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
|
|
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
|
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
|
|
|
|
// Execute cURL request
|
|
$response = curl_exec($ch);
|
|
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
|
$error = curl_error($ch);
|
|
|
|
// Close cURL
|
|
curl_close($ch);
|
|
|
|
// Prepare result
|
|
$result = array(
|
|
'success' => false,
|
|
'http_code' => $http_code,
|
|
'response' => null,
|
|
'error' => null
|
|
);
|
|
|
|
if ($error) {
|
|
$result['error'] = $error;
|
|
} else {
|
|
$result = json_decode($response, true);
|
|
$result['success'] = true;
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
public function get_request($url, $headers = array())
|
|
{
|
|
// Retrieve configuration
|
|
$config = $this->get_config();
|
|
$token = $config['AisConfigAuthToken'] ?? 'default-token';
|
|
$header_token = $config['AisConfigHeaderToken'];
|
|
|
|
// Default headers based on the curl command
|
|
$default_headers = array(
|
|
'Header-Token: ' . $header_token,
|
|
'Authorization: Bearer ' . $token
|
|
);
|
|
|
|
// Merge custom headers with default headers
|
|
$final_headers = array_merge($default_headers, $headers);
|
|
|
|
// Initialize cURL
|
|
$ch = curl_init();
|
|
|
|
// Set cURL options
|
|
curl_setopt($ch, CURLOPT_URL, $url);
|
|
curl_setopt($ch, CURLOPT_HTTPGET, true);
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, $final_headers);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
|
|
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
|
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
|
|
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
|
|
|
|
// Execute cURL request
|
|
$response = curl_exec($ch);
|
|
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
|
$error = curl_error($ch);
|
|
|
|
// Close cURL
|
|
curl_close($ch);
|
|
|
|
// Prepare result
|
|
$result = array(
|
|
'success' => false,
|
|
'http_code' => $http_code,
|
|
'response' => null,
|
|
'error' => null
|
|
);
|
|
|
|
if ($error) {
|
|
$result['error'] = $error;
|
|
} else {
|
|
$decoded = json_decode($response, true);
|
|
$result['response'] = $decoded;
|
|
// Check if response is successful based on http code
|
|
if ($http_code === 200) {
|
|
$result['success'] = true;
|
|
}
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
function get_config()
|
|
{
|
|
$sql = "SELECT * FROM ais_config LIMIT 1";
|
|
$qry = $this->db_onedev->query($sql);
|
|
$dt_config = $qry->row_array();
|
|
return $dt_config;
|
|
}
|
|
|
|
/**
|
|
* POST request to auth API
|
|
* @param string $username Username for authentication
|
|
* @param string $password Password for authentication
|
|
* @return array Response from API
|
|
*/
|
|
public function post_auth()
|
|
{
|
|
$dt_config = $this->get_config();
|
|
$baseUrl = $dt_config['AisConfigBaseUrl'];
|
|
$url = $baseUrl.'/api/auth/auth.php';
|
|
$headers = array(
|
|
'Header-Token: '.$dt_config['AisConfigHeaderToken']
|
|
);
|
|
|
|
$username = $dt_config['AisConfigUsername'];
|
|
$password = $dt_config['AisConfigPassword'];
|
|
|
|
$data = array(
|
|
'username' => $username,
|
|
'password' => $password
|
|
);
|
|
|
|
$result = $this->post_request($url, $data, $headers);
|
|
$sql = "INSERT INTO ais_login_log(
|
|
AisLoginLogUsername,
|
|
AisLoginLogPassword,
|
|
AisLoginLogHeaderToken,
|
|
AisLoginLogResult,
|
|
AisLoginLogCreated
|
|
)
|
|
VALUES(
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
NOW()
|
|
)";
|
|
$qry = $this->db_log->query($sql, array($username,$password,$dt_config['AisConfigHeaderToken'],json_encode($result)));
|
|
|
|
|
|
if(!$qry){
|
|
$this->error_log(array('fn_name'=>'post_auth','message'=>'ais_login_log insert','query'=>$sql,'json'=>json_encode($result)),999);
|
|
exit;
|
|
}
|
|
//print_r($result);
|
|
//exit;
|
|
// Check if success
|
|
if(!$result['success']){
|
|
$this->error_log(array('fn_name'=>'post_auth','message'=>'failed auth','query'=>'','json'=>json_encode($result)),999);
|
|
$errors = array('status' => 'error','message' => 'Gagal Login');
|
|
return $errors;
|
|
|
|
}else{
|
|
// Update token
|
|
$token = $result['data']['token'];;
|
|
$sql = "UPDATE ais_config SET AisConfigAuthToken = ? WHERE AisConfigID = 1";
|
|
$qry = $this->db_onedev->query($sql, array($token));
|
|
//echo $this->db_onedev->last_query();
|
|
//exit;
|
|
if(!$qry){
|
|
$this->error_log(array('fn_name'=>'post_auth','message'=>'ais_config update','query'=>$sql,'json'=>''),999);
|
|
$errors = array('status' => 'error','message' => 'Gagal Update Token');
|
|
return $errors;
|
|
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
}
|
|
|
|
function post_transaction_by_labnumber()
|
|
{
|
|
$prm = $this->sys_input;
|
|
$labnum = $prm['labnumber'];
|
|
// Auth Login
|
|
$login = $this->post_auth();
|
|
if (!$login['success']) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 'failed auth', 'query' => '', 'json' => json_encode($login)), 555);
|
|
$errors = array('status' => 'error', 'message' => 'Gagal Login');
|
|
echo json_encode($errors);
|
|
exit;
|
|
}
|
|
// Get config
|
|
$dt_config = $this->get_config();
|
|
$baseUrl = $dt_config['AisConfigBaseUrl'];
|
|
$url = $baseUrl . '/api/transaction_full/transaksi.php';
|
|
|
|
$headers = array(
|
|
'Header-Token: ' . $dt_config['AisConfigHeaderToken'],
|
|
'Authorization: Bearer ' . $dt_config['AisConfigAuthToken']
|
|
);
|
|
|
|
|
|
// Get data
|
|
$sql = "SELECT T_OrderHeaderID,
|
|
T_OrderHeaderTotal as Total,
|
|
T_OrderHeaderLabNumber as RegID,
|
|
Mgm_McuM_BranchID as mgm_mcu_m_branch_id,
|
|
M_PatientNoReg as MEDRECID,
|
|
T_OrderHeaderDate as Tanggal,
|
|
T_OrderHeaderDate as PulangTanggal,
|
|
CorporateCode,
|
|
IF(CorporateCode = 'C25040059' OR CorporateCode = 'C25060181','',CorporateCode) as PerusahaanID,
|
|
IF(CorporateCode = 'C25040059' OR CorporateCode = 'C25060181','',CorporateCode) as AsuransiID,
|
|
T_PriceHeaderCode as GroupTarifID,
|
|
M_PatientName as Nama,
|
|
M_PatientIdentifierValue as NIK,
|
|
DATE_FORMAT(M_PatientDOB, '%Y-%m-%d %H:%i:%s') as TglLahir,
|
|
IF(M_PatientGender = 'male','L','P') as JnsKelamin,
|
|
'' as NomorPolis,
|
|
'' as NomerJaminan,
|
|
'2' as JenisRegID,
|
|
IF(CorporateCode = 'C25040059' OR CorporateCode = 'C25060181',0,1) as JenisPasienID,
|
|
'LAB-WESTERINDO-01' as DepartemenID,
|
|
'Y' as Pulang,
|
|
'Y' as BolehPulang,
|
|
'' as Catatan,
|
|
'Y' as Verified,
|
|
'LABKLINIK' as KelasID,
|
|
M_UserEmail as LoginBuat,
|
|
T_OrderHeaderCreated as TanggalBuat,
|
|
branch_order.M_BranchAis_branch_code as BranchCode,
|
|
CorporateTypeais_pillar_code as PillarCode,
|
|
'4569' as SiteCenterCode,
|
|
M_UserEmail as VerifiedBy,
|
|
T_OrderHeaderCreated as VerifiedDate,
|
|
'' as TrxLayanan,
|
|
'' as TrxItem,
|
|
'' as TrxItemReturn,
|
|
'' as RegpasNominal,
|
|
'' as Trxtt,
|
|
'' as TrxBayar,
|
|
'' as TrxLain,
|
|
'' as PaketDispenser
|
|
FROM t_orderheader
|
|
JOIN m_branch branch_order ON branch_order.M_BranchID = T_OrderHeaderM_BranchID AND
|
|
T_OrderHeaderLabNumber = ?
|
|
JOIN m_patient ON M_PatientID = T_OrderHeaderM_PatientID
|
|
JOIN corporate ON CorporateID = T_OrderHeaderCorporateID
|
|
JOIN corporate_type ON CorporateCorporateTypeID = CorporateTypeID
|
|
JOIN mgm_mcu ON T_OrderHeaderMgm_McuID = Mgm_McuID
|
|
JOIN t_priceheader ON Mgm_McuT_PriceHeaderID = T_PriceHeaderID
|
|
JOIN m_user ON T_OrderHeaderCreatedUserID = M_UserID
|
|
WHERE T_OrderHeaderIsActive = 'Y'
|
|
";
|
|
$qry = $this->db_onedev->query($sql, array($labnum));
|
|
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 't_orderheader select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
$raw_data = $qry->result_array();
|
|
if(count($raw_data) == 0){
|
|
$errors = array('status' => 'error', 'message' => 'Data tidak ditemukan');
|
|
echo json_encode($errors);
|
|
exit;
|
|
}
|
|
|
|
$data = array();
|
|
foreach ($raw_data as $key => $row) {
|
|
|
|
$row['TrxLayanan'] = [];
|
|
$row['TrxItem'] = [];
|
|
$row['TrxItemReturn'] = [];
|
|
$row['RegpasNominal'] = [];
|
|
$row['Trxtt'] = null;
|
|
$row['TrxBayar'] = [];
|
|
$row['TrxLain'] = null;
|
|
$row['PaketDispenser'] = null;
|
|
|
|
$layanan = [];
|
|
$sql = "SELECT * FROM (
|
|
SELECT T_OrderDetailID as TrxLayananID,
|
|
case
|
|
when Nat_GroupID = 1 then '1100'
|
|
when Nat_GroupID = 2 then '1200'
|
|
when Nat_GroupID = 3 then '1200'
|
|
when Nat_GroupID = 4 then '1303'
|
|
end as ProfitCostCenterCode,
|
|
'' as TrxDepartemenID,
|
|
T_OrderDetailCreated as TanggalBuat,
|
|
T_OrderDetailT_TestSasCode as LayananID,
|
|
T_OrderDetailT_TestName as LayananName,
|
|
doctorlab.M_DoctorCode as DokterID,
|
|
0 as ShareRS,
|
|
0 as ShareDokter,
|
|
0 as ShareExternal,
|
|
0 as ShareLain2,
|
|
'' as PihakExternal,
|
|
'' as PihakLain2,
|
|
'Percentage' as ShareTipe,
|
|
T_OrderDetailPrice as Harga,
|
|
1 as Jumlah,
|
|
1 as Rate,
|
|
'N' as FOC,
|
|
T_OrderDetailDiscTotal as Diskon,
|
|
'Absolute' as TipeDiskon,
|
|
'' as DepartemenID,
|
|
IF(CorporateCode = 'C25040059' OR CorporateCode = 'C25060181',T_OrderDetailTotal,0) as DitanggungPasien,
|
|
IF(CorporateCode = 'C25040059' OR CorporateCode = 'C25060181',0,T_OrderDetailTotal) as DitanggungPenjamin,
|
|
0 as MarkUpCito,
|
|
'N' as Cito,
|
|
T_PacketSasCode as PaketID,
|
|
'LABKLINIK' as KelasID,
|
|
'' as TrxLayananDetail,
|
|
'Y' as Tagihkan
|
|
FROM t_orderdetail
|
|
JOIN t_test ON T_TestID = T_OrderDetailT_TestID AND T_TestIsActive = 'Y'
|
|
JOIN nat_test ON T_TestNat_TestID = Nat_TestID AND Nat_TestIsActive = 'Y'
|
|
JOIN nat_group ON Nat_GroupID = Nat_TestNat_GroupID AND Nat_GroupIsActive = 'Y'
|
|
JOIN t_orderdetailorder ON T_OrderDetailT_OrderDetailOrderID = T_OrderDetailOrderID AND
|
|
T_OrderDetailOrderIsPacket = 'Y' AND T_OrderDetailOrderIsActive = 'Y'
|
|
JOIN t_packet ON T_OrderDetailOrderT_PacketID = T_PacketID
|
|
JOIN t_packetdetail ON T_PacketDetailT_PacketID = T_PacketID AND T_PacketDetailT_TestID = T_OrderDetailT_TestID AND
|
|
T_PacketDetailIsActive = 'Y'
|
|
JOIN t_orderheader ON T_OrderHeaderID = T_OrderDetailOrderT_OrderHeaderID
|
|
JOIN corporate ON CorporateID = T_OrderHeaderCorporateID
|
|
JOIN mgm_mcu ON T_OrderHeaderMgm_McuID = Mgm_McuID
|
|
JOIN m_doctor doctorlab ON T_OrderHeaderPjM_DoctorID = M_DoctorID
|
|
LEFT JOIN f_payment ON T_OrderHeaderID = F_PaymentT_OrderHeaderID AND F_PaymentIsActive = 'Y'
|
|
WHERE
|
|
T_OrderDetailT_OrderHeaderID = ? AND
|
|
T_OrderDetailIsActive = 'Y'
|
|
UNION
|
|
SELECT T_OrderDetailID as TrxLayananID,
|
|
Nat_GroupID as ProfitCostCenterCode,
|
|
'' as TrxDepartemenID,
|
|
T_OrderDetailCreated as TanggalBuat,
|
|
T_OrderDetailT_TestSasCode as LayananID,
|
|
T_OrderDetailT_TestName as LayananName,
|
|
doctorlab.M_DoctorCode as DokterID,
|
|
0 as ShareRS,
|
|
0 as ShareDokter,
|
|
0 as ShareExternal,
|
|
0 as ShareLain2,
|
|
'' as PihakExternal,
|
|
'' as PihakLain2,
|
|
'Percentage' as ShareTipe,
|
|
T_OrderDetailPrice as Harga,
|
|
1 as Jumlah,
|
|
1 as Rate,
|
|
'N' as FOC,
|
|
T_OrderDetailDiscTotal as Diskon,
|
|
'Absolute' as TipeDiskon,
|
|
'' as DepartemenID,
|
|
IF(CorporateCode = 'C25040059' OR CorporateCode = 'C25060181',T_OrderDetailTotal,0) as DitanggungPasien,
|
|
IF(CorporateCode = 'C25040059' OR CorporateCode = 'C25060181',0,T_OrderDetailTotal) as DitanggungPenjamin,
|
|
0 as MarkUpCito,
|
|
'N' as Cito,
|
|
'' as PaketID,
|
|
'LABKLINIK' as KelasID,
|
|
NULL as TrxLayananDetail,
|
|
'Y' as Tagihkan
|
|
FROM `t_orderdetailorder`
|
|
JOIN t_orderdetail ON T_OrderdetailT_OrderHeaderID = T_OrderDetailOrderT_OrderHeaderID AND
|
|
T_OrderDetailIsActive = 'Y' AND T_OrderDetailT_OrderDetailOrderID = T_OrderDetailOrderID
|
|
JOIN t_test ON T_TestID = T_OrderDetailT_TestID AND T_TestIsActive = 'Y'
|
|
JOIN nat_test ON T_TestNat_TestID = Nat_TestID AND Nat_TestIsActive = 'Y'
|
|
JOIN nat_group ON Nat_GroupID = Nat_TestNat_GroupID AND Nat_GroupIsActive = 'Y'
|
|
JOIN corporate ON CorporateID = T_OrderHeaderCorporateID
|
|
JOIN t_orderheader ON T_OrderHeaderID = T_OrderDetailOrderT_OrderHeaderID
|
|
JOIN mgm_mcu ON T_OrderHeaderMgm_McuID = Mgm_McuID
|
|
JOIN m_doctor doctorlab ON T_OrderHeaderPjM_DoctorID = M_DoctorID
|
|
LEFT JOIN f_payment ON T_OrderHeaderID = F_PaymentT_OrderHeaderID AND F_PaymentIsActive = 'Y'
|
|
WHERE `T_OrderDetailOrderT_OrderHeaderID` = ? AND `T_OrderDetailOrderIsPacket` = 'N' AND
|
|
T_OrderDetailOrderIsActive = 'Y'
|
|
) AS t_orderdetailorder";
|
|
$qry = $this->db_onedev->query($sql, array($row['T_OrderHeaderID'],$row['T_OrderHeaderID']));
|
|
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 't_orderdetail select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
$total_layanan_debug = 0;
|
|
$layanan = $qry->result_array();
|
|
$raw_data[$key]['TrxLayanan'] = [];
|
|
if(count($layanan) > 0){
|
|
foreach($layanan as $key_layanan => $row_layanan){
|
|
$total_layanan_debug += $row_layanan['Harga'];
|
|
$layanan[$key_layanan]['TrxLayananDetail'] = [];
|
|
$sql = "SELECT M_DoctorCode, M_DoctorID
|
|
FROM `so_resultentry`
|
|
JOIN t_orderdetail ON ? = So_ResultEntryT_OrderDetailID AND T_OrderDetailIsActive = 'Y'
|
|
JOIN m_doctor ON M_DoctorID = So_ResultEntryM_DoctorID AND M_DoctorIsActive = 'Y'
|
|
WHERE `So_ResultEntryT_OrderHeaderID` = ? AND
|
|
`So_ResultEntryIsActive` = 'Y' AND `So_ResultEntryM_DoctorID` > '0'
|
|
LIMIT 1
|
|
";
|
|
$qry = $this->db_onedev->query($sql, array($row_layanan['TrxLayananID'],$row['T_OrderHeaderID']));
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 'so_resultentry select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
$get_resultentry = $qry->result_array();
|
|
if (count($get_resultentry) > 0) {
|
|
$row_layanan['DokterID'] = $get_resultentry[0]['M_DoctorCode'];
|
|
}
|
|
$raw_data[$key]['TrxLayanan'][] = $row_layanan;
|
|
}
|
|
}
|
|
|
|
$regpasnominal = [];
|
|
$jumlah_layanan_lab = 0;
|
|
$sql = "SELECT IFNULL(SUM(T_OrderDetailTotal),0) as total_layanan_lab
|
|
FROM t_orderdetail
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y'
|
|
JOIN nat_test ON T_TestNat_TestID = Nat_TestID AND Nat_TestIsActive = 'Y'
|
|
JOIN nat_group ON Nat_GroupID = Nat_TestNat_GroupID AND Nat_GroupIsActive = 'Y' AND
|
|
Nat_GroupID = 1
|
|
WHERE T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailIsActive = 'Y'
|
|
";
|
|
$qry = $this->db_onedev->query($sql, array($row['T_OrderHeaderID']));
|
|
//echo $this->db_onedev->last_query();
|
|
//exit;
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 't_orderdetail lab select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
|
|
$get_layanan_lab = $qry->row_array();
|
|
$jumlah_layanan_lab = $get_layanan_lab['total_layanan_lab'];
|
|
|
|
$jumlah_layanan_radiologi = 0;
|
|
$sql = "SELECT IFNULL(SUM(T_OrderDetailTotal),0) as total_layanan_radiologi
|
|
FROM t_orderdetail
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y'
|
|
JOIN nat_test ON T_TestNat_TestID = Nat_TestID AND Nat_TestIsActive = 'Y'
|
|
JOIN nat_group ON Nat_GroupID = Nat_TestNat_GroupID AND Nat_GroupIsActive = 'Y' AND
|
|
Nat_GroupID = 3
|
|
WHERE T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailIsActive = 'Y'
|
|
";
|
|
$qry = $this->db_onedev->query($sql, array($row['T_OrderHeaderID']));
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 't_orderdetail radiologi select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
$get_layanan_radiologi = $qry->row_array();
|
|
$jumlah_layanan_radiologi = $get_layanan_radiologi['total_layanan_radiologi'];
|
|
|
|
$jumlah_layanan_lain = 0;
|
|
$sql = "SELECT IFNULL(SUM(T_OrderDetailTotal),0) as total_layanan_lain
|
|
FROM t_orderdetail
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y'
|
|
JOIN nat_test ON T_TestNat_TestID = Nat_TestID AND Nat_TestIsActive = 'Y'
|
|
JOIN nat_group ON Nat_GroupID = Nat_TestNat_GroupID AND Nat_GroupIsActive = 'Y' AND
|
|
Nat_GroupID IN (2,4)
|
|
WHERE T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailIsActive = 'Y'
|
|
";
|
|
$qry = $this->db_onedev->query($sql, array($row['T_OrderHeaderID']));
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 't_orderdetail lain select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
|
|
|
|
$get_layanan_lain = $qry->row_array();
|
|
$jumlah_layanan_lain = $get_layanan_lain['total_layanan_lain'];
|
|
|
|
$total_layanan = 0;
|
|
$sql = "SELECT SUM(T_OrderDetailTotal) as total_layanan, Mgm_McuM_BranchID as BranchID
|
|
FROM t_orderdetail
|
|
JOIN t_orderheader ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID
|
|
JOIN mgm_mcu ON T_OrderHeaderMgm_McuID = Mgm_McuID
|
|
WHERE T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailIsActive = 'Y'
|
|
";
|
|
$qry = $this->db_onedev->query($sql, array($row['T_OrderHeaderID']));
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 't_orderdetail total layanan select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
$total_layanan = $qry->row_array();
|
|
$total_layanan = $total_layanan['total_layanan'];
|
|
|
|
|
|
$total_bayar = 0;
|
|
$sql = "SELECT F_PaymentTotal as total
|
|
FROM f_payment
|
|
WHERE F_PaymentT_OrderHeaderID = ? AND F_PaymentIsActive = 'Y'
|
|
";
|
|
$qry = $this->db_onedev->query($sql, array($row['T_OrderHeaderID']));
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 'f_payment select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
|
|
$get_total_bayar = $qry->result_array();
|
|
if (count($get_total_bayar) > 0) {
|
|
foreach($get_total_bayar as $key_total_bayar => $row_total_bayar){
|
|
$total_bayar += $row_total_bayar['total'];
|
|
}
|
|
}
|
|
|
|
|
|
|
|
$mgm_mcu_m_branch_id = $row['mgm_mcu_m_branch_id'];
|
|
$corporate_code = $row['CorporateCode'];
|
|
|
|
$total_ditanggung_pasien = $corporate_code == 'C25040059' || $corporate_code == 'C25060181' ? $total_layanan : 0;
|
|
$total_ditanggung_penjamin = $corporate_code == 'C25040059' || $corporate_code == 'C25060181' ? 0 : $total_layanan;
|
|
|
|
$regpasnominal = array(
|
|
"BiayaParamedik" => "0.00",
|
|
"ParamedikDitanggungPasien" => "0.00",
|
|
"ParamedikDitanggungPenjamin" => "0.00",
|
|
"BiayaAdministrasi" => "0",
|
|
"AdmDitanggungPasien" => "0.00",
|
|
"AdmDitanggungPenjamin" => "0.00",
|
|
"BiayaMaterai" => "0.00",
|
|
"BiayaMateraiDitanggungPasien" => "0.00",
|
|
"BiayaMateraiDitanggungPenjamin" => "0.00",
|
|
"JumlahLayanan" => $jumlah_layanan_lain,
|
|
"JumlahLayananRadiologi" => $jumlah_layanan_radiologi,
|
|
"JumlahLayananLaboratorium" => $jumlah_layanan_lab,
|
|
"JumlahItem" => 0,
|
|
"JumlahItemRetur" => 0,
|
|
"JumlahTT" => "0.00",
|
|
"JumlahBiayaLain" => "0.00",
|
|
"JumlahBayar" => $total_bayar,
|
|
"TipeDiskonGlobal" => "Absolute",
|
|
"DiskonGlobal" => "0.00",
|
|
"TotalDitanggungPasien" => $total_ditanggung_pasien,
|
|
"TotalDitanggungPenjamin" => $total_ditanggung_penjamin
|
|
);
|
|
|
|
$raw_data[$key]['RegpasNominal'] = array(
|
|
$regpasnominal
|
|
);
|
|
|
|
//echo $total_bayar;
|
|
$raw_data[$key]['TrxBayar'] = null;
|
|
if($total_bayar > 0){
|
|
$sql = "SELECT M_PatientNoReg as MEDRECID,
|
|
F_PaymentDetailID as BayarID,
|
|
IFNULL(F_PaymentDetailAmount,0) as Jumlah,
|
|
F_PaymentDetailCreated as Tanggal,
|
|
'Pelunasan' as JenisBayarID,
|
|
CONCAT(F_PaymentNumber,'.',F_PaymentDetailID) as KwitansiID,
|
|
CONCAT(F_PaymentDetailM_PaymentTypeID,F_PaymentDetailM_BankAccountID) as TipeBayarID,
|
|
'N' as Dibatalkan
|
|
FROM f_paymentdetail
|
|
JOIN f_payment ON F_PaymentDetailF_PaymentID = F_PaymentID AND F_PaymentIsActive = 'Y'
|
|
JOIN t_orderheader ON F_PaymentT_OrderHeaderID = T_OrderHeaderID
|
|
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
|
|
WHERE
|
|
F_PaymentT_OrderHeaderID = ? AND F_PaymentDetailIsActive = 'Y'
|
|
GROUP BY F_PaymentDetailID";
|
|
$qry = $this->db_onedev->query($sql, array($row['T_OrderHeaderID']));
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 'f_payment select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
//echo $this->db_onedev->last_query();
|
|
//exit;
|
|
$bayar = $qry->result_array();
|
|
|
|
$raw_data[$key]['TrxBayar'] = $bayar;
|
|
}
|
|
|
|
$raw_data[$key]['Trxtt'] = null;
|
|
$raw_data[$key]['TrxLain'] = null;
|
|
$raw_data[$key]['PaketDispenser'] = null;
|
|
$errors = [];
|
|
|
|
//echo json_encode($raw_data[$key]);
|
|
//exit;
|
|
$result = $this->post_request($url, $raw_data[$key], $headers);
|
|
|
|
|
|
if ($result['status'] == '400') {
|
|
$sql = "INSERT INTO ais_transaction(
|
|
Ais_TransactionOrderHeaderLabNumber,
|
|
Ais_TransactionJson,
|
|
Ais_TransactionStatus,
|
|
Ais_TransactionResponse,
|
|
Ais_TransactionUrl,
|
|
Ais_TransactionUserID,
|
|
Ais_TransactionCreated
|
|
)
|
|
VALUES(
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
NOW()
|
|
)";
|
|
$qry = $this->db_log->query($sql, array(
|
|
$row['RegID'],
|
|
json_encode($raw_data[$key]),
|
|
'error',
|
|
json_encode($result),
|
|
$url,
|
|
555
|
|
));
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 'ais_transaction insert', 'query' => $this->db_log->last_query(), 'json' => json_encode($result)), 999);
|
|
exit;
|
|
}
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 'transaction insert', 'query' => $this->db_onedev->last_query(), 'json' => json_encode($result)), 999);
|
|
|
|
$errors[] = array('RegID' => $row['RegID'], 'error' => $result['message']);
|
|
|
|
|
|
}else{
|
|
//echo 'insert ais_transaction';
|
|
$sql = "INSERT INTO ais_transaction(
|
|
Ais_TransactionOrderHeaderLabNumber,
|
|
Ais_TransactionJson,
|
|
Ais_TransactionStatus,
|
|
Ais_TransactionResponse,
|
|
Ais_TransactionUrl,
|
|
Ais_TransactionUserID,
|
|
Ais_TransactionCreated
|
|
)
|
|
VALUES(
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
NOW()
|
|
)";
|
|
$qry = $this->db_log->query($sql, array(
|
|
$row['RegID'],
|
|
json_encode($raw_data[$key]),
|
|
'success',
|
|
json_encode($result),
|
|
$url,
|
|
555
|
|
));
|
|
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 'ais_transaction insert', 'query' => $this->db_log->last_query(), 'json' => json_encode($result)), 999);
|
|
exit;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
if(count($errors) > 0){
|
|
$success = array('status' => 'error', 'message' => 'Gagal Post Transaction', 'errors' => $errors);
|
|
echo json_encode($success);
|
|
exit;
|
|
}else{
|
|
$success = array('status' => 'success', 'message' => 'Berhasil Post Transaction');
|
|
echo json_encode($success);
|
|
exit;
|
|
}
|
|
|
|
}
|
|
|
|
function repost_transakstion_by_nolab_date($labnum=null,$xdate=null){
|
|
if($labnum != null){
|
|
$sql = "SELECT T_OrderHeaderID,
|
|
T_OrderHeaderLabNumber as RegID
|
|
FROM t_orderheader
|
|
WHERE T_OrderHeaderIsActive = 'Y' AND T_OrderHeaderLabNumber = ?
|
|
LIMIT 1
|
|
";
|
|
$qry = $this->db_onedev->query($sql, array($labnum));
|
|
}else{
|
|
$sql = "SELECT T_OrderHeaderID,
|
|
T_OrderHeaderLabNumber as RegID
|
|
FROM t_orderheader
|
|
WHERE DATE(T_OrderHeaderDate) = ? AND T_OrderHeaderIsActive = 'Y'
|
|
LIMIT 1
|
|
";
|
|
$qry = $this->db_onedev->query($sql, array($xdate));
|
|
}
|
|
//echo $this->db_onedev->last_query();
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 't_orderheader select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
$raw_data = $qry->result_array();
|
|
if(count($raw_data) == 0){
|
|
$errors = array('status' => 'error', 'message' => 'Data tidak ditemukan');
|
|
echo json_encode($errors);
|
|
exit;
|
|
}
|
|
|
|
foreach($raw_data as $key => $row){
|
|
|
|
$getdata = $this->get_transaction_direct($row['RegID']);
|
|
if($getdata['status'] == 'success' && count($getdata['data']) > 0 && $getdata['data'] != null){
|
|
$this->re_post_transaction($row['RegID']);
|
|
}else{
|
|
$this->post_transaction($row['RegID']);
|
|
}
|
|
}
|
|
}
|
|
|
|
function re_post_transaction($labnum=null)
|
|
{
|
|
//$prm = $this->sys_input;
|
|
//$labnum = $prm['labnumber'];
|
|
// Auth Login
|
|
$login = $this->post_auth();
|
|
if (!$login['success']) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 'failed auth', 'query' => '', 'json' => json_encode($login)), 555);
|
|
$errors = array('status' => 'error', 'message' => 'Gagal Login');
|
|
echo json_encode($errors);
|
|
exit;
|
|
}
|
|
// Get config
|
|
$dt_config = $this->get_config();
|
|
$baseUrl = $dt_config['AisConfigBaseUrl'];
|
|
$url = $baseUrl . '/api/transaction_full/transaksi.php';
|
|
|
|
$headers = array(
|
|
'Header-Token: ' . $dt_config['AisConfigHeaderToken'],
|
|
'Authorization: Bearer ' . $dt_config['AisConfigAuthToken']
|
|
);
|
|
|
|
|
|
// Get data
|
|
$sql = "SELECT T_OrderHeaderID,
|
|
T_OrderHeaderTotal as Total,
|
|
T_OrderHeaderLabNumber as RegID,
|
|
Mgm_McuM_BranchID as mgm_mcu_m_branch_id,
|
|
M_PatientNoReg as MEDRECID,
|
|
T_OrderHeaderDate as Tanggal,
|
|
T_OrderHeaderDate as PulangTanggal,
|
|
CorporateCode,
|
|
IF(CorporateCode = 'C25040059' OR CorporateCode = 'C25060181','',CorporateCode) as PerusahaanID,
|
|
IF(CorporateCode = 'C25040059' OR CorporateCode = 'C25060181','',CorporateCode) as AsuransiID,
|
|
T_PriceHeaderCode as GroupTarifID,
|
|
M_PatientName as Nama,
|
|
M_PatientIdentifierValue as NIK,
|
|
DATE_FORMAT(M_PatientDOB, '%Y-%m-%d %H:%i:%s') as TglLahir,
|
|
IF(M_PatientGender = 'male','L','P') as JnsKelamin,
|
|
'' as NomorPolis,
|
|
'' as NomerJaminan,
|
|
'2' as JenisRegID,
|
|
IF(CorporateCode = 'C25040059' OR CorporateCode = 'C25060181',0,1) as JenisPasienID,
|
|
'LAB-WESTERINDO-01' as DepartemenID,
|
|
'Y' as Pulang,
|
|
'Y' as BolehPulang,
|
|
'' as Catatan,
|
|
'Y' as Verified,
|
|
'LABKLINIK' as KelasID,
|
|
M_UserEmail as LoginBuat,
|
|
T_OrderHeaderCreated as TanggalBuat,
|
|
branch_order.M_BranchAis_branch_code as BranchCode,
|
|
CorporateTypeais_pillar_code as PillarCode,
|
|
'4569' as SiteCenterCode,
|
|
M_UserEmail as VerifiedBy,
|
|
T_OrderHeaderCreated as VerifiedDate,
|
|
'' as TrxLayanan,
|
|
'' as TrxItem,
|
|
'' as TrxItemReturn,
|
|
'' as RegpasNominal,
|
|
'' as Trxtt,
|
|
'' as TrxBayar,
|
|
'' as TrxLain,
|
|
'' as PaketDispenser
|
|
FROM t_orderheader
|
|
JOIN m_branch branch_order ON branch_order.M_BranchID = T_OrderHeaderM_BranchID AND
|
|
T_OrderHeaderLabNumber = ?
|
|
JOIN m_patient ON M_PatientID = T_OrderHeaderM_PatientID
|
|
JOIN corporate ON CorporateID = T_OrderHeaderCorporateID
|
|
JOIN corporate_type ON CorporateCorporateTypeID = CorporateTypeID
|
|
JOIN mgm_mcu ON T_OrderHeaderMgm_McuID = Mgm_McuID
|
|
JOIN t_priceheader ON Mgm_McuT_PriceHeaderID = T_PriceHeaderID
|
|
JOIN m_user ON T_OrderHeaderCreatedUserID = M_UserID
|
|
WHERE T_OrderHeaderIsActive = 'Y'
|
|
";
|
|
$qry = $this->db_onedev->query($sql, array($labnum));
|
|
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 't_orderheader select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
$raw_data = $qry->result_array();
|
|
if(count($raw_data) == 0){
|
|
$errors = array('status' => 'error', 'message' => 'Data tidak ditemukan');
|
|
echo json_encode($errors);
|
|
exit;
|
|
}
|
|
|
|
$data = array();
|
|
foreach ($raw_data as $key => $row) {
|
|
|
|
$row['TrxLayanan'] = [];
|
|
$row['TrxItem'] = [];
|
|
$row['TrxItemReturn'] = [];
|
|
$row['RegpasNominal'] = [];
|
|
$row['Trxtt'] = null;
|
|
$row['TrxBayar'] = [];
|
|
$row['TrxLain'] = null;
|
|
$row['PaketDispenser'] = null;
|
|
|
|
$layanan = [];
|
|
$sql = "SELECT * FROM (
|
|
SELECT T_OrderDetailID as TrxLayananID,
|
|
case
|
|
when Nat_GroupID = 1 then '1100'
|
|
when Nat_GroupID = 2 then '1200'
|
|
when Nat_GroupID = 3 then '1200'
|
|
when Nat_GroupID = 4 then '1303'
|
|
end as ProfitCostCenterCode,
|
|
'' as TrxDepartemenID,
|
|
T_OrderDetailCreated as TanggalBuat,
|
|
T_OrderDetailT_TestSasCode as LayananID,
|
|
T_OrderDetailT_TestName as LayananName,
|
|
doctorlab.M_DoctorCode as DokterID,
|
|
0 as ShareRS,
|
|
0 as ShareDokter,
|
|
0 as ShareExternal,
|
|
0 as ShareLain2,
|
|
'' as PihakExternal,
|
|
'' as PihakLain2,
|
|
'Percentage' as ShareTipe,
|
|
T_OrderDetailPrice as Harga,
|
|
1 as Jumlah,
|
|
1 as Rate,
|
|
'N' as FOC,
|
|
T_OrderDetailDiscTotal as Diskon,
|
|
'Absolute' as TipeDiskon,
|
|
'' as DepartemenID,
|
|
IF(CorporateCode = 'C25040059' OR CorporateCode = 'C25060181',T_OrderDetailTotal,0) as DitanggungPasien,
|
|
IF(CorporateCode = 'C25040059' OR CorporateCode = 'C25060181',0,T_OrderDetailTotal) as DitanggungPenjamin,
|
|
0 as MarkUpCito,
|
|
'N' as Cito,
|
|
T_PacketSasCode as PaketID,
|
|
'LABKLINIK' as KelasID,
|
|
'' as TrxLayananDetail,
|
|
'Y' as Tagihkan
|
|
FROM t_orderdetail
|
|
JOIN t_test ON T_TestID = T_OrderDetailT_TestID AND T_TestIsActive = 'Y'
|
|
JOIN nat_test ON T_TestNat_TestID = Nat_TestID AND Nat_TestIsActive = 'Y'
|
|
JOIN nat_group ON Nat_GroupID = Nat_TestNat_GroupID AND Nat_GroupIsActive = 'Y'
|
|
JOIN t_orderdetailorder ON T_OrderDetailT_OrderDetailOrderID = T_OrderDetailOrderID AND
|
|
T_OrderDetailOrderIsPacket = 'Y' AND T_OrderDetailOrderIsActive = 'Y'
|
|
JOIN t_packet ON T_OrderDetailOrderT_PacketID = T_PacketID
|
|
JOIN t_packetdetail ON T_PacketDetailT_PacketID = T_PacketID AND T_PacketDetailT_TestID = T_OrderDetailT_TestID AND
|
|
T_PacketDetailIsActive = 'Y'
|
|
JOIN t_orderheader ON T_OrderHeaderID = T_OrderDetailOrderT_OrderHeaderID
|
|
JOIN corporate ON CorporateID = T_OrderHeaderCorporateID
|
|
JOIN mgm_mcu ON T_OrderHeaderMgm_McuID = Mgm_McuID
|
|
JOIN m_doctor doctorlab ON T_OrderHeaderPjM_DoctorID = M_DoctorID
|
|
LEFT JOIN f_payment ON T_OrderHeaderID = F_PaymentT_OrderHeaderID AND F_PaymentIsActive = 'Y'
|
|
WHERE
|
|
T_OrderDetailT_OrderHeaderID = ? AND
|
|
T_OrderDetailIsActive = 'Y'
|
|
UNION
|
|
SELECT T_OrderDetailID as TrxLayananID,
|
|
Nat_GroupID as ProfitCostCenterCode,
|
|
'' as TrxDepartemenID,
|
|
T_OrderDetailCreated as TanggalBuat,
|
|
T_OrderDetailT_TestSasCode as LayananID,
|
|
T_OrderDetailT_TestName as LayananName,
|
|
doctorlab.M_DoctorCode as DokterID,
|
|
0 as ShareRS,
|
|
0 as ShareDokter,
|
|
0 as ShareExternal,
|
|
0 as ShareLain2,
|
|
'' as PihakExternal,
|
|
'' as PihakLain2,
|
|
'Percentage' as ShareTipe,
|
|
T_OrderDetailPrice as Harga,
|
|
1 as Jumlah,
|
|
1 as Rate,
|
|
'N' as FOC,
|
|
T_OrderDetailDiscTotal as Diskon,
|
|
'Absolute' as TipeDiskon,
|
|
'' as DepartemenID,
|
|
IF(CorporateCode = 'C25040059' OR CorporateCode = 'C25060181',T_OrderDetailTotal,0) as DitanggungPasien,
|
|
IF(CorporateCode = 'C25040059' OR CorporateCode = 'C25060181',0,T_OrderDetailTotal) as DitanggungPenjamin,
|
|
0 as MarkUpCito,
|
|
'N' as Cito,
|
|
'' as PaketID,
|
|
'LABKLINIK' as KelasID,
|
|
NULL as TrxLayananDetail,
|
|
'Y' as Tagihkan
|
|
FROM `t_orderdetailorder`
|
|
JOIN t_orderdetail ON T_OrderdetailT_OrderHeaderID = T_OrderDetailOrderT_OrderHeaderID AND
|
|
T_OrderDetailIsActive = 'Y' AND T_OrderDetailT_OrderDetailOrderID = T_OrderDetailOrderID
|
|
JOIN t_test ON T_TestID = T_OrderDetailT_TestID AND T_TestIsActive = 'Y'
|
|
JOIN nat_test ON T_TestNat_TestID = Nat_TestID AND Nat_TestIsActive = 'Y'
|
|
JOIN nat_group ON Nat_GroupID = Nat_TestNat_GroupID AND Nat_GroupIsActive = 'Y'
|
|
JOIN t_orderheader ON T_OrderHeaderID = T_OrderDetailOrderT_OrderHeaderID
|
|
JOIN corporate ON CorporateID = T_OrderHeaderCorporateID
|
|
JOIN mgm_mcu ON T_OrderHeaderMgm_McuID = Mgm_McuID
|
|
JOIN m_doctor doctorlab ON T_OrderHeaderPjM_DoctorID = M_DoctorID
|
|
LEFT JOIN f_payment ON T_OrderHeaderID = F_PaymentT_OrderHeaderID AND F_PaymentIsActive = 'Y'
|
|
WHERE `T_OrderDetailOrderT_OrderHeaderID` = ? AND `T_OrderDetailOrderIsPacket` = 'N' AND
|
|
T_OrderDetailOrderIsActive = 'Y'
|
|
) AS t_orderdetailorder";
|
|
$qry = $this->db_onedev->query($sql, array($row['T_OrderHeaderID'],$row['T_OrderHeaderID']));
|
|
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 't_orderdetail select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
$total_layanan_debug = 0;
|
|
$layanan = $qry->result_array();
|
|
$raw_data[$key]['TrxLayanan'] = [];
|
|
if(count($layanan) > 0){
|
|
foreach($layanan as $key_layanan => $row_layanan){
|
|
$total_layanan_debug += $row_layanan['Harga'];
|
|
$layanan[$key_layanan]['TrxLayananDetail'] = [];
|
|
$sql = "SELECT M_DoctorCode, M_DoctorID
|
|
FROM `so_resultentry`
|
|
JOIN t_orderdetail ON ? = So_ResultEntryT_OrderDetailID AND T_OrderDetailIsActive = 'Y'
|
|
JOIN m_doctor ON M_DoctorID = So_ResultEntryM_DoctorID AND M_DoctorIsActive = 'Y'
|
|
WHERE `So_ResultEntryT_OrderHeaderID` = ? AND
|
|
`So_ResultEntryIsActive` = 'Y' AND `So_ResultEntryM_DoctorID` > '0'
|
|
LIMIT 1
|
|
";
|
|
$qry = $this->db_onedev->query($sql, array($row_layanan['TrxLayananID'],$row['T_OrderHeaderID']));
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 'so_resultentry select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
$get_resultentry = $qry->result_array();
|
|
if (count($get_resultentry) > 0) {
|
|
$row_layanan['DokterID'] = $get_resultentry[0]['M_DoctorCode'];
|
|
}
|
|
$raw_data[$key]['TrxLayanan'][] = $row_layanan;
|
|
}
|
|
}
|
|
|
|
$regpasnominal = [];
|
|
$jumlah_layanan_lab = 0;
|
|
$sql = "SELECT IFNULL(SUM(T_OrderDetailTotal),0) as total_layanan_lab
|
|
FROM t_orderdetail
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y'
|
|
JOIN nat_test ON T_TestNat_TestID = Nat_TestID AND Nat_TestIsActive = 'Y'
|
|
JOIN nat_group ON Nat_GroupID = Nat_TestNat_GroupID AND Nat_GroupIsActive = 'Y' AND
|
|
Nat_GroupID = 1
|
|
WHERE T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailIsActive = 'Y'
|
|
";
|
|
$qry = $this->db_onedev->query($sql, array($row['T_OrderHeaderID']));
|
|
//echo $this->db_onedev->last_query();
|
|
//exit;
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 't_orderdetail lab select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
|
|
$get_layanan_lab = $qry->row_array();
|
|
$jumlah_layanan_lab = $get_layanan_lab['total_layanan_lab'];
|
|
|
|
$jumlah_layanan_radiologi = 0;
|
|
$sql = "SELECT IFNULL(SUM(T_OrderDetailTotal),0) as total_layanan_radiologi
|
|
FROM t_orderdetail
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y'
|
|
JOIN nat_test ON T_TestNat_TestID = Nat_TestID AND Nat_TestIsActive = 'Y'
|
|
JOIN nat_group ON Nat_GroupID = Nat_TestNat_GroupID AND Nat_GroupIsActive = 'Y' AND
|
|
Nat_GroupID = 3
|
|
WHERE T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailIsActive = 'Y'
|
|
";
|
|
$qry = $this->db_onedev->query($sql, array($row['T_OrderHeaderID']));
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 't_orderdetail radiologi select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
$get_layanan_radiologi = $qry->row_array();
|
|
$jumlah_layanan_radiologi = $get_layanan_radiologi['total_layanan_radiologi'];
|
|
|
|
$jumlah_layanan_lain = 0;
|
|
$sql = "SELECT IFNULL(SUM(T_OrderDetailTotal),0) as total_layanan_lain
|
|
FROM t_orderdetail
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y'
|
|
JOIN nat_test ON T_TestNat_TestID = Nat_TestID AND Nat_TestIsActive = 'Y'
|
|
JOIN nat_group ON Nat_GroupID = Nat_TestNat_GroupID AND Nat_GroupIsActive = 'Y' AND
|
|
Nat_GroupID IN (2,4)
|
|
WHERE T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailIsActive = 'Y'
|
|
";
|
|
$qry = $this->db_onedev->query($sql, array($row['T_OrderHeaderID']));
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 't_orderdetail lain select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
|
|
|
|
$get_layanan_lain = $qry->row_array();
|
|
$jumlah_layanan_lain = $get_layanan_lain['total_layanan_lain'];
|
|
|
|
$total_layanan = 0;
|
|
$sql = "SELECT SUM(T_OrderDetailTotal) as total_layanan, Mgm_McuM_BranchID as BranchID
|
|
FROM t_orderdetail
|
|
JOIN t_orderheader ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID
|
|
JOIN mgm_mcu ON T_OrderHeaderMgm_McuID = Mgm_McuID
|
|
WHERE T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailIsActive = 'Y'
|
|
";
|
|
$qry = $this->db_onedev->query($sql, array($row['T_OrderHeaderID']));
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 't_orderdetail total layanan select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
$total_layanan = $qry->row_array();
|
|
$total_layanan = $total_layanan['total_layanan'];
|
|
|
|
|
|
$total_bayar = 0;
|
|
$sql = "SELECT F_PaymentTotal as total
|
|
FROM f_payment
|
|
WHERE F_PaymentT_OrderHeaderID = ? AND F_PaymentIsActive = 'Y'
|
|
";
|
|
$qry = $this->db_onedev->query($sql, array($row['T_OrderHeaderID']));
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 'f_payment select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
|
|
$get_total_bayar = $qry->result_array();
|
|
if (count($get_total_bayar) > 0) {
|
|
foreach($get_total_bayar as $key_total_bayar => $row_total_bayar){
|
|
$total_bayar += $row_total_bayar['total'];
|
|
}
|
|
}
|
|
|
|
|
|
|
|
$mgm_mcu_m_branch_id = $row['mgm_mcu_m_branch_id'];
|
|
$corporate_code = $row['CorporateCode'];
|
|
|
|
$total_ditanggung_pasien = $corporate_code == 'C25040059' || $corporate_code == 'C25060181' ? $total_layanan : 0;
|
|
$total_ditanggung_penjamin = $corporate_code == 'C25040059' || $corporate_code == 'C25060181' ? 0 : $total_layanan;
|
|
|
|
$regpasnominal = array(
|
|
"BiayaParamedik" => "0.00",
|
|
"ParamedikDitanggungPasien" => "0.00",
|
|
"ParamedikDitanggungPenjamin" => "0.00",
|
|
"BiayaAdministrasi" => "0",
|
|
"AdmDitanggungPasien" => "0.00",
|
|
"AdmDitanggungPenjamin" => "0.00",
|
|
"BiayaMaterai" => "0.00",
|
|
"BiayaMateraiDitanggungPasien" => "0.00",
|
|
"BiayaMateraiDitanggungPenjamin" => "0.00",
|
|
"JumlahLayanan" => $jumlah_layanan_lain,
|
|
"JumlahLayananRadiologi" => $jumlah_layanan_radiologi,
|
|
"JumlahLayananLaboratorium" => $jumlah_layanan_lab,
|
|
"JumlahItem" => 0,
|
|
"JumlahItemRetur" => 0,
|
|
"JumlahTT" => "0.00",
|
|
"JumlahBiayaLain" => "0.00",
|
|
"JumlahBayar" => $total_bayar,
|
|
"TipeDiskonGlobal" => "Absolute",
|
|
"DiskonGlobal" => "0.00",
|
|
"TotalDitanggungPasien" => $total_ditanggung_pasien,
|
|
"TotalDitanggungPenjamin" => $total_ditanggung_penjamin
|
|
);
|
|
|
|
$raw_data[$key]['RegpasNominal'] = array(
|
|
$regpasnominal
|
|
);
|
|
|
|
//echo $total_bayar;
|
|
$raw_data[$key]['TrxBayar'] = null;
|
|
if($total_bayar > 0){
|
|
$sql = "SELECT M_PatientNoReg as MEDRECID,
|
|
F_PaymentDetailID as BayarID,
|
|
IFNULL(F_PaymentDetailAmount,0) as Jumlah,
|
|
F_PaymentDetailCreated as Tanggal,
|
|
'Pelunasan' as JenisBayarID,
|
|
CONCAT(F_PaymentNumber,'.',F_PaymentDetailID) as KwitansiID,
|
|
CONCAT(F_PaymentDetailM_PaymentTypeID,F_PaymentDetailM_BankAccountID) as TipeBayarID,
|
|
'N' as Dibatalkan
|
|
FROM f_paymentdetail
|
|
JOIN f_payment ON F_PaymentDetailF_PaymentID = F_PaymentID AND F_PaymentIsActive = 'Y'
|
|
JOIN t_orderheader ON F_PaymentT_OrderHeaderID = T_OrderHeaderID
|
|
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
|
|
WHERE
|
|
F_PaymentT_OrderHeaderID = ? AND F_PaymentDetailIsActive = 'Y'
|
|
GROUP BY F_PaymentDetailID";
|
|
$qry = $this->db_onedev->query($sql, array($row['T_OrderHeaderID']));
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 'f_payment select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
//echo $this->db_onedev->last_query();
|
|
//exit;
|
|
$bayar = $qry->result_array();
|
|
|
|
$raw_data[$key]['TrxBayar'] = $bayar;
|
|
}
|
|
|
|
$raw_data[$key]['Trxtt'] = null;
|
|
$raw_data[$key]['TrxLain'] = null;
|
|
$raw_data[$key]['PaketDispenser'] = null;
|
|
$errors = [];
|
|
|
|
//echo json_encode($raw_data[$key]);
|
|
//exit;
|
|
$result = $this->put_request($url, $raw_data[$key], $headers);
|
|
|
|
|
|
if ($result['status'] == '400') {
|
|
$sql = "INSERT INTO ais_transaction(
|
|
Ais_TransactionOrderHeaderLabNumber,
|
|
Ais_TransactionJson,
|
|
Ais_TransactionStatus,
|
|
Ais_TransactionResponse,
|
|
Ais_TransactionUrl,
|
|
Ais_TransactionUserID,
|
|
Ais_TransactionCreated
|
|
)
|
|
VALUES(
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
NOW()
|
|
)";
|
|
$qry = $this->db_log->query($sql, array(
|
|
$row['RegID'],
|
|
json_encode($raw_data[$key]),
|
|
'error',
|
|
json_encode($result),
|
|
$url,
|
|
555
|
|
));
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 'ais_transaction insert', 'query' => $this->db_log->last_query(), 'json' => json_encode($result)), 999);
|
|
exit;
|
|
}
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 'transaction insert', 'query' => $this->db_onedev->last_query(), 'json' => json_encode($result)), 999);
|
|
|
|
$errors[] = array('RegID' => $row['RegID'], 'error' => $result['message']);
|
|
|
|
|
|
}else{
|
|
//echo 'insert ais_transaction';
|
|
$sql = "INSERT INTO ais_transaction(
|
|
Ais_TransactionOrderHeaderLabNumber,
|
|
Ais_TransactionJson,
|
|
Ais_TransactionStatus,
|
|
Ais_TransactionResponse,
|
|
Ais_TransactionUrl,
|
|
Ais_TransactionUserID,
|
|
Ais_TransactionCreated
|
|
)
|
|
VALUES(
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
NOW()
|
|
)";
|
|
$qry = $this->db_log->query($sql, array(
|
|
$row['RegID'],
|
|
json_encode($raw_data[$key]),
|
|
'success',
|
|
json_encode($result),
|
|
$url,
|
|
555
|
|
));
|
|
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 'ais_transaction insert', 'query' => $this->db_log->last_query(), 'json' => json_encode($result)), 999);
|
|
exit;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
if(count($errors) > 0){
|
|
$success = array('status' => 'error', 'message' => 'Gagal Post Transaction', 'errors' => $errors);
|
|
echo json_encode($success);
|
|
exit;
|
|
}else{
|
|
$success = array('status' => 'success', 'message' => 'Berhasil Post Transaction');
|
|
echo json_encode($success);
|
|
exit;
|
|
}
|
|
|
|
}
|
|
|
|
function re_post_transaction_by_labnumber()
|
|
{
|
|
$prm = $this->sys_input;
|
|
$labnum = $prm['labnumber'];
|
|
// Auth Login
|
|
$login = $this->post_auth();
|
|
if (!$login['success']) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 'failed auth', 'query' => '', 'json' => json_encode($login)), 555);
|
|
$errors = array('status' => 'error', 'message' => 'Gagal Login');
|
|
echo json_encode($errors);
|
|
exit;
|
|
}
|
|
// Get config
|
|
$dt_config = $this->get_config();
|
|
$baseUrl = $dt_config['AisConfigBaseUrl'];
|
|
$url = $baseUrl . '/api/transaction_full/transaksi.php';
|
|
|
|
$headers = array(
|
|
'Header-Token: ' . $dt_config['AisConfigHeaderToken'],
|
|
'Authorization: Bearer ' . $dt_config['AisConfigAuthToken']
|
|
);
|
|
|
|
|
|
// Get data
|
|
$sql = "SELECT T_OrderHeaderID,
|
|
T_OrderHeaderTotal as Total,
|
|
T_OrderHeaderLabNumber as RegID,
|
|
Mgm_McuM_BranchID as mgm_mcu_m_branch_id,
|
|
M_PatientNoReg as MEDRECID,
|
|
T_OrderHeaderDate as Tanggal,
|
|
T_OrderHeaderDate as PulangTanggal,
|
|
CorporateCode,
|
|
IF(CorporateCode = 'C25040059' OR CorporateCode = 'C25060181','',CorporateCode) as PerusahaanID,
|
|
IF(CorporateCode = 'C25040059' OR CorporateCode = 'C25060181','',CorporateCode) as AsuransiID,
|
|
T_PriceHeaderCode as GroupTarifID,
|
|
M_PatientName as Nama,
|
|
M_PatientIdentifierValue as NIK,
|
|
DATE_FORMAT(M_PatientDOB, '%Y-%m-%d %H:%i:%s') as TglLahir,
|
|
IF(M_PatientGender = 'male','L','P') as JnsKelamin,
|
|
'' as NomorPolis,
|
|
'' as NomerJaminan,
|
|
'2' as JenisRegID,
|
|
IF(CorporateCode = 'C25040059' OR CorporateCode = 'C25060181',0,1) as JenisPasienID,
|
|
'LAB-WESTERINDO-01' as DepartemenID,
|
|
'Y' as Pulang,
|
|
'Y' as BolehPulang,
|
|
'' as Catatan,
|
|
'Y' as Verified,
|
|
'LABKLINIK' as KelasID,
|
|
M_UserEmail as LoginBuat,
|
|
T_OrderHeaderCreated as TanggalBuat,
|
|
branch_order.M_BranchAis_branch_code as BranchCode,
|
|
CorporateTypeais_pillar_code as PillarCode,
|
|
'4569' as SiteCenterCode,
|
|
M_UserEmail as VerifiedBy,
|
|
T_OrderHeaderCreated as VerifiedDate,
|
|
'' as TrxLayanan,
|
|
'' as TrxItem,
|
|
'' as TrxItemReturn,
|
|
'' as RegpasNominal,
|
|
'' as Trxtt,
|
|
'' as TrxBayar,
|
|
'' as TrxLain,
|
|
'' as PaketDispenser
|
|
FROM t_orderheader
|
|
JOIN m_branch branch_order ON branch_order.M_BranchID = T_OrderHeaderM_BranchID AND
|
|
T_OrderHeaderLabNumber = ?
|
|
JOIN m_patient ON M_PatientID = T_OrderHeaderM_PatientID
|
|
JOIN corporate ON CorporateID = T_OrderHeaderCorporateID
|
|
JOIN corporate_type ON CorporateCorporateTypeID = CorporateTypeID
|
|
JOIN mgm_mcu ON T_OrderHeaderMgm_McuID = Mgm_McuID
|
|
JOIN t_priceheader ON Mgm_McuT_PriceHeaderID = T_PriceHeaderID
|
|
JOIN m_user ON T_OrderHeaderCreatedUserID = M_UserID
|
|
WHERE T_OrderHeaderIsActive = 'Y'
|
|
";
|
|
$qry = $this->db_onedev->query($sql, array($labnum));
|
|
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 't_orderheader select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
$raw_data = $qry->result_array();
|
|
if(count($raw_data) == 0){
|
|
$errors = array('status' => 'error', 'message' => 'Data tidak ditemukan');
|
|
echo json_encode($errors);
|
|
exit;
|
|
}
|
|
|
|
$data = array();
|
|
foreach ($raw_data as $key => $row) {
|
|
|
|
$row['TrxLayanan'] = [];
|
|
$row['TrxItem'] = [];
|
|
$row['TrxItemReturn'] = [];
|
|
$row['RegpasNominal'] = [];
|
|
$row['Trxtt'] = null;
|
|
$row['TrxBayar'] = [];
|
|
$row['TrxLain'] = null;
|
|
$row['PaketDispenser'] = null;
|
|
|
|
$layanan = [];
|
|
$sql = "SELECT * FROM (
|
|
SELECT T_OrderDetailID as TrxLayananID,
|
|
case
|
|
when Nat_GroupID = 1 then '1100'
|
|
when Nat_GroupID = 2 then '1200'
|
|
when Nat_GroupID = 3 then '1200'
|
|
when Nat_GroupID = 4 then '1303'
|
|
end as ProfitCostCenterCode,
|
|
'' as TrxDepartemenID,
|
|
T_OrderDetailCreated as TanggalBuat,
|
|
T_OrderDetailT_TestSasCode as LayananID,
|
|
T_OrderDetailT_TestName as LayananName,
|
|
doctorlab.M_DoctorCode as DokterID,
|
|
0 as ShareRS,
|
|
0 as ShareDokter,
|
|
0 as ShareExternal,
|
|
0 as ShareLain2,
|
|
'' as PihakExternal,
|
|
'' as PihakLain2,
|
|
'Percentage' as ShareTipe,
|
|
T_OrderDetailPrice as Harga,
|
|
1 as Jumlah,
|
|
1 as Rate,
|
|
'N' as FOC,
|
|
T_OrderDetailDiscTotal as Diskon,
|
|
'Absolute' as TipeDiskon,
|
|
'' as DepartemenID,
|
|
IF(CorporateCode = 'C25040059' OR CorporateCode = 'C25060181',T_OrderDetailTotal,0) as DitanggungPasien,
|
|
IF(CorporateCode = 'C25040059' OR CorporateCode = 'C25060181',0,T_OrderDetailTotal) as DitanggungPenjamin,
|
|
0 as MarkUpCito,
|
|
'N' as Cito,
|
|
T_PacketSasCode as PaketID,
|
|
'LABKLINIK' as KelasID,
|
|
'' as TrxLayananDetail,
|
|
'Y' as Tagihkan
|
|
FROM t_orderdetail
|
|
JOIN t_test ON T_TestID = T_OrderDetailT_TestID AND T_TestIsActive = 'Y'
|
|
JOIN nat_test ON T_TestNat_TestID = Nat_TestID AND Nat_TestIsActive = 'Y'
|
|
JOIN nat_group ON Nat_GroupID = Nat_TestNat_GroupID AND Nat_GroupIsActive = 'Y'
|
|
JOIN t_orderdetailorder ON T_OrderDetailT_OrderDetailOrderID = T_OrderDetailOrderID AND
|
|
T_OrderDetailOrderIsPacket = 'Y' AND T_OrderDetailOrderIsActive = 'Y'
|
|
JOIN t_packet ON T_OrderDetailOrderT_PacketID = T_PacketID
|
|
JOIN t_packetdetail ON T_PacketDetailT_PacketID = T_PacketID AND T_PacketDetailT_TestID = T_OrderDetailT_TestID AND
|
|
T_PacketDetailIsActive = 'Y'
|
|
JOIN t_orderheader ON T_OrderHeaderID = T_OrderDetailOrderT_OrderHeaderID
|
|
JOIN corporate ON CorporateID = T_OrderHeaderCorporateID
|
|
JOIN mgm_mcu ON T_OrderHeaderMgm_McuID = Mgm_McuID
|
|
JOIN m_doctor doctorlab ON T_OrderHeaderPjM_DoctorID = M_DoctorID
|
|
LEFT JOIN f_payment ON T_OrderHeaderID = F_PaymentT_OrderHeaderID AND F_PaymentIsActive = 'Y'
|
|
WHERE
|
|
T_OrderDetailT_OrderHeaderID = ? AND
|
|
T_OrderDetailIsActive = 'Y'
|
|
UNION
|
|
SELECT T_OrderDetailID as TrxLayananID,
|
|
Nat_GroupID as ProfitCostCenterCode,
|
|
'' as TrxDepartemenID,
|
|
T_OrderDetailCreated as TanggalBuat,
|
|
T_OrderDetailT_TestSasCode as LayananID,
|
|
T_OrderDetailT_TestName as LayananName,
|
|
doctorlab.M_DoctorCode as DokterID,
|
|
0 as ShareRS,
|
|
0 as ShareDokter,
|
|
0 as ShareExternal,
|
|
0 as ShareLain2,
|
|
'' as PihakExternal,
|
|
'' as PihakLain2,
|
|
'Percentage' as ShareTipe,
|
|
T_OrderDetailPrice as Harga,
|
|
1 as Jumlah,
|
|
1 as Rate,
|
|
'N' as FOC,
|
|
T_OrderDetailDiscTotal as Diskon,
|
|
'Absolute' as TipeDiskon,
|
|
'' as DepartemenID,
|
|
IF(CorporateCode = 'C25040059' OR CorporateCode = 'C25060181',T_OrderDetailTotal,0) as DitanggungPasien,
|
|
IF(CorporateCode = 'C25040059' OR CorporateCode = 'C25060181',0,T_OrderDetailTotal) as DitanggungPenjamin,
|
|
0 as MarkUpCito,
|
|
'N' as Cito,
|
|
'' as PaketID,
|
|
'LABKLINIK' as KelasID,
|
|
NULL as TrxLayananDetail,
|
|
'Y' as Tagihkan
|
|
FROM `t_orderdetailorder`
|
|
JOIN t_orderdetail ON T_OrderdetailT_OrderHeaderID = T_OrderDetailOrderT_OrderHeaderID AND
|
|
T_OrderDetailIsActive = 'Y' AND T_OrderDetailT_OrderDetailOrderID = T_OrderDetailOrderID
|
|
JOIN t_test ON T_TestID = T_OrderDetailT_TestID AND T_TestIsActive = 'Y'
|
|
JOIN nat_test ON T_TestNat_TestID = Nat_TestID AND Nat_TestIsActive = 'Y'
|
|
JOIN nat_group ON Nat_GroupID = Nat_TestNat_GroupID AND Nat_GroupIsActive = 'Y'
|
|
JOIN t_orderheader ON T_OrderHeaderID = T_OrderDetailOrderT_OrderHeaderID
|
|
JOIN corporate ON CorporateID = T_OrderHeaderCorporateID
|
|
JOIN mgm_mcu ON T_OrderHeaderMgm_McuID = Mgm_McuID
|
|
JOIN m_doctor doctorlab ON T_OrderHeaderPjM_DoctorID = M_DoctorID
|
|
LEFT JOIN f_payment ON T_OrderHeaderID = F_PaymentT_OrderHeaderID AND F_PaymentIsActive = 'Y'
|
|
WHERE `T_OrderDetailOrderT_OrderHeaderID` = ? AND `T_OrderDetailOrderIsPacket` = 'N' AND
|
|
T_OrderDetailOrderIsActive = 'Y'
|
|
) AS t_orderdetailorder";
|
|
$qry = $this->db_onedev->query($sql, array($row['T_OrderHeaderID'],$row['T_OrderHeaderID']));
|
|
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 't_orderdetail select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
$total_layanan_debug = 0;
|
|
$layanan = $qry->result_array();
|
|
$raw_data[$key]['TrxLayanan'] = [];
|
|
if(count($layanan) > 0){
|
|
foreach($layanan as $key_layanan => $row_layanan){
|
|
$total_layanan_debug += $row_layanan['Harga'];
|
|
$layanan[$key_layanan]['TrxLayananDetail'] = [];
|
|
$sql = "SELECT M_DoctorCode, M_DoctorID
|
|
FROM `so_resultentry`
|
|
JOIN t_orderdetail ON ? = So_ResultEntryT_OrderDetailID AND T_OrderDetailIsActive = 'Y'
|
|
JOIN m_doctor ON M_DoctorID = So_ResultEntryM_DoctorID AND M_DoctorIsActive = 'Y'
|
|
WHERE `So_ResultEntryT_OrderHeaderID` = ? AND
|
|
`So_ResultEntryIsActive` = 'Y' AND `So_ResultEntryM_DoctorID` > '0'
|
|
LIMIT 1
|
|
";
|
|
$qry = $this->db_onedev->query($sql, array($row_layanan['TrxLayananID'],$row['T_OrderHeaderID']));
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 'so_resultentry select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
$get_resultentry = $qry->result_array();
|
|
if (count($get_resultentry) > 0) {
|
|
$row_layanan['DokterID'] = $get_resultentry[0]['M_DoctorCode'];
|
|
}
|
|
$raw_data[$key]['TrxLayanan'][] = $row_layanan;
|
|
}
|
|
}
|
|
|
|
$regpasnominal = [];
|
|
$jumlah_layanan_lab = 0;
|
|
$sql = "SELECT IFNULL(SUM(T_OrderDetailTotal),0) as total_layanan_lab
|
|
FROM t_orderdetail
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y'
|
|
JOIN nat_test ON T_TestNat_TestID = Nat_TestID AND Nat_TestIsActive = 'Y'
|
|
JOIN nat_group ON Nat_GroupID = Nat_TestNat_GroupID AND Nat_GroupIsActive = 'Y' AND
|
|
Nat_GroupID = 1
|
|
WHERE T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailIsActive = 'Y'
|
|
";
|
|
$qry = $this->db_onedev->query($sql, array($row['T_OrderHeaderID']));
|
|
//echo $this->db_onedev->last_query();
|
|
//exit;
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 't_orderdetail lab select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
|
|
$get_layanan_lab = $qry->row_array();
|
|
$jumlah_layanan_lab = $get_layanan_lab['total_layanan_lab'];
|
|
|
|
$jumlah_layanan_radiologi = 0;
|
|
$sql = "SELECT IFNULL(SUM(T_OrderDetailTotal),0) as total_layanan_radiologi
|
|
FROM t_orderdetail
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y'
|
|
JOIN nat_test ON T_TestNat_TestID = Nat_TestID AND Nat_TestIsActive = 'Y'
|
|
JOIN nat_group ON Nat_GroupID = Nat_TestNat_GroupID AND Nat_GroupIsActive = 'Y' AND
|
|
Nat_GroupID = 3
|
|
WHERE T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailIsActive = 'Y'
|
|
";
|
|
$qry = $this->db_onedev->query($sql, array($row['T_OrderHeaderID']));
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 't_orderdetail radiologi select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
$get_layanan_radiologi = $qry->row_array();
|
|
$jumlah_layanan_radiologi = $get_layanan_radiologi['total_layanan_radiologi'];
|
|
|
|
$jumlah_layanan_lain = 0;
|
|
$sql = "SELECT IFNULL(SUM(T_OrderDetailTotal),0) as total_layanan_lain
|
|
FROM t_orderdetail
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y'
|
|
JOIN nat_test ON T_TestNat_TestID = Nat_TestID AND Nat_TestIsActive = 'Y'
|
|
JOIN nat_group ON Nat_GroupID = Nat_TestNat_GroupID AND Nat_GroupIsActive = 'Y' AND
|
|
Nat_GroupID IN (2,4)
|
|
WHERE T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailIsActive = 'Y'
|
|
";
|
|
$qry = $this->db_onedev->query($sql, array($row['T_OrderHeaderID']));
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 't_orderdetail lain select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
|
|
|
|
$get_layanan_lain = $qry->row_array();
|
|
$jumlah_layanan_lain = $get_layanan_lain['total_layanan_lain'];
|
|
|
|
$total_layanan = 0;
|
|
$sql = "SELECT SUM(T_OrderDetailTotal) as total_layanan, Mgm_McuM_BranchID as BranchID
|
|
FROM t_orderdetail
|
|
JOIN t_orderheader ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID
|
|
JOIN mgm_mcu ON T_OrderHeaderMgm_McuID = Mgm_McuID
|
|
WHERE T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailIsActive = 'Y'
|
|
";
|
|
$qry = $this->db_onedev->query($sql, array($row['T_OrderHeaderID']));
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 't_orderdetail total layanan select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
$total_layanan = $qry->row_array();
|
|
$total_layanan = $total_layanan['total_layanan'];
|
|
|
|
|
|
$total_bayar = 0;
|
|
$sql = "SELECT F_PaymentTotal as total
|
|
FROM f_payment
|
|
WHERE F_PaymentT_OrderHeaderID = ? AND F_PaymentIsActive = 'Y'
|
|
";
|
|
$qry = $this->db_onedev->query($sql, array($row['T_OrderHeaderID']));
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 'f_payment select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
|
|
$get_total_bayar = $qry->result_array();
|
|
if (count($get_total_bayar) > 0) {
|
|
foreach($get_total_bayar as $key_total_bayar => $row_total_bayar){
|
|
$total_bayar += $row_total_bayar['total'];
|
|
}
|
|
}
|
|
|
|
|
|
|
|
$mgm_mcu_m_branch_id = $row['mgm_mcu_m_branch_id'];
|
|
$corporate_code = $row['CorporateCode'];
|
|
|
|
$total_ditanggung_pasien = $corporate_code == 'C25040059' || $corporate_code == 'C25060181' ? $total_layanan : 0;
|
|
$total_ditanggung_penjamin = $corporate_code == 'C25040059' || $corporate_code == 'C25060181' ? 0 : $total_layanan;
|
|
|
|
$regpasnominal = array(
|
|
"BiayaParamedik" => "0.00",
|
|
"ParamedikDitanggungPasien" => "0.00",
|
|
"ParamedikDitanggungPenjamin" => "0.00",
|
|
"BiayaAdministrasi" => "0",
|
|
"AdmDitanggungPasien" => "0.00",
|
|
"AdmDitanggungPenjamin" => "0.00",
|
|
"BiayaMaterai" => "0.00",
|
|
"BiayaMateraiDitanggungPasien" => "0.00",
|
|
"BiayaMateraiDitanggungPenjamin" => "0.00",
|
|
"JumlahLayanan" => $jumlah_layanan_lain,
|
|
"JumlahLayananRadiologi" => $jumlah_layanan_radiologi,
|
|
"JumlahLayananLaboratorium" => $jumlah_layanan_lab,
|
|
"JumlahItem" => 0,
|
|
"JumlahItemRetur" => 0,
|
|
"JumlahTT" => "0.00",
|
|
"JumlahBiayaLain" => "0.00",
|
|
"JumlahBayar" => $total_bayar,
|
|
"TipeDiskonGlobal" => "Absolute",
|
|
"DiskonGlobal" => "0.00",
|
|
"TotalDitanggungPasien" => $total_ditanggung_pasien,
|
|
"TotalDitanggungPenjamin" => $total_ditanggung_penjamin
|
|
);
|
|
|
|
$raw_data[$key]['RegpasNominal'] = array(
|
|
$regpasnominal
|
|
);
|
|
|
|
//echo $total_bayar;
|
|
$raw_data[$key]['TrxBayar'] = null;
|
|
if($total_bayar > 0){
|
|
$sql = "SELECT M_PatientNoReg as MEDRECID,
|
|
F_PaymentDetailID as BayarID,
|
|
IFNULL(F_PaymentDetailAmount,0) as Jumlah,
|
|
F_PaymentDetailCreated as Tanggal,
|
|
'Pelunasan' as JenisBayarID,
|
|
CONCAT(F_PaymentNumber,'.',F_PaymentDetailID) as KwitansiID,
|
|
CONCAT(F_PaymentDetailM_PaymentTypeID,F_PaymentDetailM_BankAccountID) as TipeBayarID,
|
|
'N' as Dibatalkan
|
|
FROM f_paymentdetail
|
|
JOIN f_payment ON F_PaymentDetailF_PaymentID = F_PaymentID AND F_PaymentIsActive = 'Y'
|
|
JOIN t_orderheader ON F_PaymentT_OrderHeaderID = T_OrderHeaderID
|
|
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
|
|
WHERE
|
|
F_PaymentT_OrderHeaderID = ? AND F_PaymentDetailIsActive = 'Y'
|
|
GROUP BY F_PaymentDetailID";
|
|
$qry = $this->db_onedev->query($sql, array($row['T_OrderHeaderID']));
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 'f_payment select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
//echo $this->db_onedev->last_query();
|
|
//exit;
|
|
$bayar = $qry->result_array();
|
|
|
|
$raw_data[$key]['TrxBayar'] = $bayar;
|
|
}
|
|
|
|
$raw_data[$key]['Trxtt'] = null;
|
|
$raw_data[$key]['TrxLain'] = null;
|
|
$raw_data[$key]['PaketDispenser'] = null;
|
|
$errors = [];
|
|
|
|
//echo json_encode($raw_data[$key]);
|
|
//exit;
|
|
$result = $this->put_request($url, $raw_data[$key], $headers);
|
|
|
|
|
|
if ($result['status'] == '400') {
|
|
$sql = "INSERT INTO ais_transaction(
|
|
Ais_TransactionOrderHeaderLabNumber,
|
|
Ais_TransactionJson,
|
|
Ais_TransactionStatus,
|
|
Ais_TransactionResponse,
|
|
Ais_TransactionUrl,
|
|
Ais_TransactionUserID,
|
|
Ais_TransactionCreated
|
|
)
|
|
VALUES(
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
NOW()
|
|
)";
|
|
$qry = $this->db_log->query($sql, array(
|
|
$row['RegID'],
|
|
json_encode($raw_data[$key]),
|
|
'error',
|
|
json_encode($result),
|
|
$url,
|
|
555
|
|
));
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 'ais_transaction insert', 'query' => $this->db_log->last_query(), 'json' => json_encode($result)), 999);
|
|
exit;
|
|
}
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 'transaction insert', 'query' => $this->db_onedev->last_query(), 'json' => json_encode($result)), 999);
|
|
|
|
$errors[] = array('RegID' => $row['RegID'], 'error' => $result['message']);
|
|
|
|
|
|
}else{
|
|
//echo 'insert ais_transaction';
|
|
$sql = "INSERT INTO ais_transaction(
|
|
Ais_TransactionOrderHeaderLabNumber,
|
|
Ais_TransactionJson,
|
|
Ais_TransactionStatus,
|
|
Ais_TransactionResponse,
|
|
Ais_TransactionUrl,
|
|
Ais_TransactionUserID,
|
|
Ais_TransactionCreated
|
|
)
|
|
VALUES(
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
NOW()
|
|
)";
|
|
$qry = $this->db_log->query($sql, array(
|
|
$row['RegID'],
|
|
json_encode($raw_data[$key]),
|
|
'success',
|
|
json_encode($result),
|
|
$url,
|
|
555
|
|
));
|
|
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 'ais_transaction insert', 'query' => $this->db_log->last_query(), 'json' => json_encode($result)), 999);
|
|
exit;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
if(count($errors) > 0){
|
|
$success = array('status' => 'error', 'message' => 'Gagal Post Transaction', 'errors' => $errors);
|
|
echo json_encode($success);
|
|
exit;
|
|
}else{
|
|
$success = array('status' => 'success', 'message' => 'Berhasil Post Transaction');
|
|
echo json_encode($success);
|
|
exit;
|
|
}
|
|
|
|
}
|
|
|
|
function post_transaction($labnum='',$xdate=null)
|
|
{
|
|
// Auth Login
|
|
$login = $this->post_auth();
|
|
if (!$login['success']) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 'failed auth', 'query' => '', 'json' => json_encode($login)), 555);
|
|
$errors = array('status' => 'error', 'message' => 'Gagal Login');
|
|
echo json_encode($errors);
|
|
exit;
|
|
}
|
|
// Get config
|
|
$dt_config = $this->get_config();
|
|
$baseUrl = $dt_config['AisConfigBaseUrl'];
|
|
$url = $baseUrl . '/api/transaction_full/transaksi.php';
|
|
|
|
$headers = array(
|
|
'Header-Token: ' . $dt_config['AisConfigHeaderToken'],
|
|
'Authorization: Bearer ' . $dt_config['AisConfigAuthToken']
|
|
);
|
|
|
|
|
|
|
|
if($labnum == ''){
|
|
$xdate = $xdate == null ? date('Y-m-d') : $xdate;
|
|
}
|
|
// Get data
|
|
$sql = "SELECT T_OrderHeaderID,
|
|
T_OrderHeaderTotal as Total,
|
|
T_OrderHeaderLabNumber as RegID,
|
|
Mgm_McuM_BranchID as mgm_mcu_m_branch_id,
|
|
M_PatientNoReg as MEDRECID,
|
|
T_OrderHeaderDate as Tanggal,
|
|
T_OrderHeaderDate as PulangTanggal,
|
|
CorporateCode,
|
|
IF(CorporateCode = 'C25040059' OR CorporateCode = 'C25060181','',CorporateCode) as PerusahaanID,
|
|
IF(CorporateCode = 'C25040059' OR CorporateCode = 'C25060181','',CorporateCode) as AsuransiID,
|
|
T_PriceHeaderCode as GroupTarifID,
|
|
M_PatientName as Nama,
|
|
M_PatientIdentifierValue as NIK,
|
|
DATE_FORMAT(M_PatientDOB, '%Y-%m-%d %H:%i:%s') as TglLahir,
|
|
IF(M_PatientGender = 'male','L','P') as JnsKelamin,
|
|
'' as NomorPolis,
|
|
'' as NomerJaminan,
|
|
'2' as JenisRegID,
|
|
IF(CorporateCode = 'C25040059' OR CorporateCode = 'C25060181',0,1) as JenisPasienID,
|
|
'LAB-WESTERINDO-01' as DepartemenID,
|
|
'Y' as Pulang,
|
|
'Y' as BolehPulang,
|
|
'' as Catatan,
|
|
'Y' as Verified,
|
|
'LABKLINIK' as KelasID,
|
|
M_UserEmail as LoginBuat,
|
|
T_OrderHeaderCreated as TanggalBuat,
|
|
branch_order.M_BranchAis_branch_code as BranchCode,
|
|
CorporateTypeais_pillar_code as PillarCode,
|
|
'4569' as SiteCenterCode,
|
|
M_UserEmail as VerifiedBy,
|
|
T_OrderHeaderCreated as VerifiedDate,
|
|
'' as TrxLayanan,
|
|
'' as TrxItem,
|
|
'' as TrxItemReturn,
|
|
'' as RegpasNominal,
|
|
'' as Trxtt,
|
|
'' as TrxBayar,
|
|
'' as TrxLain,
|
|
'' as PaketDispenser
|
|
FROM t_orderheader
|
|
JOIN m_branch branch_order ON branch_order.M_BranchID = T_OrderHeaderM_BranchID
|
|
JOIN m_patient ON M_PatientID = T_OrderHeaderM_PatientID
|
|
JOIN corporate ON CorporateID = T_OrderHeaderCorporateID
|
|
JOIN corporate_type ON CorporateCorporateTypeID = CorporateTypeID
|
|
JOIN mgm_mcu ON T_OrderHeaderMgm_McuID = Mgm_McuID -- AND Mgm_McuID = 1566
|
|
JOIN t_priceheader ON Mgm_McuT_PriceHeaderID = T_PriceHeaderID
|
|
JOIN m_user ON T_OrderHeaderCreatedUserID = M_UserID
|
|
LEFT JOIN cpone_log.ais_transaction ON Ais_TransactionOrderHeaderLabNumber = T_OrderHeaderLabNumber AND
|
|
Ais_TransactionStatus = 'success'
|
|
WHERE T_OrderHeaderIsActive = 'Y' AND
|
|
T_OrderHeaderLabNumber = ? AND
|
|
Ais_TransactionID IS NULL
|
|
GROUP BY T_OrderHeaderID
|
|
LIMIT 100";
|
|
$qry = $this->db_onedev->query($sql, array($labnum));
|
|
//echo $this->db_onedev->last_query();
|
|
//exit;
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 't_orderheader select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
$raw_data = $qry->result_array();
|
|
|
|
$data = array();
|
|
foreach ($raw_data as $key => $row) {
|
|
|
|
$row['TrxLayanan'] = [];
|
|
$row['TrxItem'] = [];
|
|
$row['TrxItemReturn'] = [];
|
|
$row['RegpasNominal'] = [];
|
|
$row['Trxtt'] = null;
|
|
$row['TrxBayar'] = [];
|
|
$row['TrxLain'] = null;
|
|
$row['PaketDispenser'] = null;
|
|
|
|
$layanan = [];
|
|
$sql = "SELECT * FROM (
|
|
SELECT T_OrderDetailID as TrxLayananID,
|
|
case
|
|
when Nat_GroupID = 1 then '1100'
|
|
when Nat_GroupID = 2 then '1200'
|
|
when Nat_GroupID = 3 then '1200'
|
|
when Nat_GroupID = 4 then '1303'
|
|
end as ProfitCostCenterCode,
|
|
'' as TrxDepartemenID,
|
|
T_OrderDetailCreated as TanggalBuat,
|
|
T_OrderDetailT_TestSasCode as LayananID,
|
|
T_OrderDetailT_TestName as LayananName,
|
|
doctorlab.M_DoctorCode as DokterID,
|
|
0 as ShareRS,
|
|
0 as ShareDokter,
|
|
0 as ShareExternal,
|
|
0 as ShareLain2,
|
|
'' as PihakExternal,
|
|
'' as PihakLain2,
|
|
'Percentage' as ShareTipe,
|
|
T_OrderDetailPrice as Harga,
|
|
1 as Jumlah,
|
|
1 as Rate,
|
|
'N' as FOC,
|
|
T_OrderDetailDiscTotal as Diskon,
|
|
'Absolute' as TipeDiskon,
|
|
'' as DepartemenID,
|
|
IF(CorporateCode = 'C25040059' OR CorporateCode = 'C25060181',T_OrderDetailTotal,0) as DitanggungPasien,
|
|
IF(CorporateCode = 'C25040059' OR CorporateCode = 'C25060181',0,T_OrderDetailTotal) as DitanggungPenjamin,
|
|
0 as MarkUpCito,
|
|
'N' as Cito,
|
|
T_PacketSasCode as PaketID,
|
|
'LABKLINIK' as KelasID,
|
|
'' as TrxLayananDetail,
|
|
'Y' as Tagihkan
|
|
FROM t_orderdetail
|
|
JOIN t_test ON T_TestID = T_OrderDetailT_TestID AND T_TestIsActive = 'Y'
|
|
JOIN nat_test ON T_TestNat_TestID = Nat_TestID AND Nat_TestIsActive = 'Y'
|
|
JOIN nat_group ON Nat_GroupID = Nat_TestNat_GroupID AND Nat_GroupIsActive = 'Y'
|
|
JOIN t_orderdetailorder ON T_OrderDetailT_OrderDetailOrderID = T_OrderDetailOrderID AND
|
|
T_OrderDetailOrderIsPacket = 'Y' AND T_OrderDetailOrderIsActive = 'Y'
|
|
JOIN t_packet ON T_OrderDetailOrderT_PacketID = T_PacketID
|
|
JOIN t_packetdetail ON T_PacketDetailT_PacketID = T_PacketID AND T_PacketDetailT_TestID = T_OrderDetailT_TestID AND
|
|
T_PacketDetailIsActive = 'Y'
|
|
JOIN t_orderheader ON T_OrderHeaderID = T_OrderDetailOrderT_OrderHeaderID
|
|
JOIN corporate ON CorporateID = T_OrderHeaderCorporateID
|
|
JOIN mgm_mcu ON T_OrderHeaderMgm_McuID = Mgm_McuID
|
|
JOIN m_doctor doctorlab ON T_OrderHeaderPjM_DoctorID = M_DoctorID
|
|
LEFT JOIN f_payment ON T_OrderHeaderID = F_PaymentT_OrderHeaderID AND F_PaymentIsActive = 'Y'
|
|
WHERE
|
|
T_OrderDetailT_OrderHeaderID = ? AND
|
|
T_OrderDetailIsActive = 'Y'
|
|
UNION
|
|
SELECT T_OrderDetailID as TrxLayananID,
|
|
Nat_GroupID as ProfitCostCenterCode,
|
|
'' as TrxDepartemenID,
|
|
T_OrderDetailCreated as TanggalBuat,
|
|
T_OrderDetailT_TestSasCode as LayananID,
|
|
T_OrderDetailT_TestName as LayananName,
|
|
doctorlab.M_DoctorCode as DokterID,
|
|
0 as ShareRS,
|
|
0 as ShareDokter,
|
|
0 as ShareExternal,
|
|
0 as ShareLain2,
|
|
'' as PihakExternal,
|
|
'' as PihakLain2,
|
|
'Percentage' as ShareTipe,
|
|
T_OrderDetailPrice as Harga,
|
|
1 as Jumlah,
|
|
1 as Rate,
|
|
'N' as FOC,
|
|
T_OrderDetailDiscTotal as Diskon,
|
|
'Absolute' as TipeDiskon,
|
|
'' as DepartemenID,
|
|
IF(CorporateCode = 'C25040059' OR CorporateCode = 'C25060181',T_OrderDetailTotal,0) as DitanggungPasien,
|
|
IF(CorporateCode = 'C25040059' OR CorporateCode = 'C25060181',0,T_OrderDetailTotal) as DitanggungPenjamin,
|
|
0 as MarkUpCito,
|
|
'N' as Cito,
|
|
'' as PaketID,
|
|
'LABKLINIK' as KelasID,
|
|
NULL as TrxLayananDetail,
|
|
'Y' as Tagihkan
|
|
FROM `t_orderdetailorder`
|
|
JOIN t_orderdetail ON T_OrderdetailT_OrderHeaderID = T_OrderDetailOrderT_OrderHeaderID AND
|
|
T_OrderDetailIsActive = 'Y' AND T_OrderDetailT_OrderDetailOrderID = T_OrderDetailOrderID
|
|
JOIN t_test ON T_TestID = T_OrderDetailT_TestID AND T_TestIsActive = 'Y'
|
|
JOIN nat_test ON T_TestNat_TestID = Nat_TestID AND Nat_TestIsActive = 'Y'
|
|
JOIN nat_group ON Nat_GroupID = Nat_TestNat_GroupID AND Nat_GroupIsActive = 'Y'
|
|
JOIN t_orderheader ON T_OrderHeaderID = T_OrderDetailOrderT_OrderHeaderID
|
|
JOIN corporate ON CorporateID = T_OrderHeaderCorporateID
|
|
JOIN mgm_mcu ON T_OrderHeaderMgm_McuID = Mgm_McuID
|
|
JOIN m_doctor doctorlab ON T_OrderHeaderPjM_DoctorID = M_DoctorID
|
|
LEFT JOIN f_payment ON T_OrderHeaderID = F_PaymentT_OrderHeaderID AND F_PaymentIsActive = 'Y'
|
|
WHERE `T_OrderDetailOrderT_OrderHeaderID` = ? AND `T_OrderDetailOrderIsPacket` = 'N' AND
|
|
T_OrderDetailOrderIsActive = 'Y'
|
|
) AS t_orderdetailorder";
|
|
$qry = $this->db_onedev->query($sql, array($row['T_OrderHeaderID'],$row['T_OrderHeaderID']));
|
|
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 't_orderdetail select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
$total_layanan_debug = 0;
|
|
$layanan = $qry->result_array();
|
|
$raw_data[$key]['TrxLayanan'] = [];
|
|
if(count($layanan) > 0){
|
|
foreach($layanan as $key_layanan => $row_layanan){
|
|
$total_layanan_debug += $row_layanan['Harga'];
|
|
$layanan[$key_layanan]['TrxLayananDetail'] = [];
|
|
$sql = "SELECT M_DoctorCode, M_DoctorID
|
|
FROM `so_resultentry`
|
|
JOIN t_orderdetail ON ? = So_ResultEntryT_OrderDetailID AND T_OrderDetailIsActive = 'Y'
|
|
JOIN m_doctor ON M_DoctorID = So_ResultEntryM_DoctorID AND M_DoctorIsActive = 'Y'
|
|
WHERE `So_ResultEntryT_OrderHeaderID` = ? AND
|
|
`So_ResultEntryIsActive` = 'Y' AND `So_ResultEntryM_DoctorID` > '0'
|
|
LIMIT 1
|
|
";
|
|
$qry = $this->db_onedev->query($sql, array($row_layanan['TrxLayananID'],$row['T_OrderHeaderID']));
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 'so_resultentry select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
$get_resultentry = $qry->result_array();
|
|
if (count($get_resultentry) > 0) {
|
|
$row_layanan['DokterID'] = $get_resultentry[0]['M_DoctorCode'];
|
|
}
|
|
$raw_data[$key]['TrxLayanan'][] = $row_layanan;
|
|
}
|
|
}
|
|
|
|
$regpasnominal = [];
|
|
$jumlah_layanan_lab = 0;
|
|
$sql = "SELECT IFNULL(SUM(T_OrderDetailTotal),0) as total_layanan_lab
|
|
FROM t_orderdetail
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y'
|
|
JOIN nat_test ON T_TestNat_TestID = Nat_TestID AND Nat_TestIsActive = 'Y'
|
|
JOIN nat_group ON Nat_GroupID = Nat_TestNat_GroupID AND Nat_GroupIsActive = 'Y' AND
|
|
Nat_GroupID = 1
|
|
WHERE T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailIsActive = 'Y'
|
|
";
|
|
$qry = $this->db_onedev->query($sql, array($row['T_OrderHeaderID']));
|
|
//echo $this->db_onedev->last_query();
|
|
//exit;
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 't_orderdetail lab select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
|
|
$get_layanan_lab = $qry->row_array();
|
|
$jumlah_layanan_lab = $get_layanan_lab['total_layanan_lab'];
|
|
|
|
$jumlah_layanan_radiologi = 0;
|
|
$sql = "SELECT IFNULL(SUM(T_OrderDetailTotal),0) as total_layanan_radiologi
|
|
FROM t_orderdetail
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y'
|
|
JOIN nat_test ON T_TestNat_TestID = Nat_TestID AND Nat_TestIsActive = 'Y'
|
|
JOIN nat_group ON Nat_GroupID = Nat_TestNat_GroupID AND Nat_GroupIsActive = 'Y' AND
|
|
Nat_GroupID = 3
|
|
WHERE T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailIsActive = 'Y'
|
|
";
|
|
$qry = $this->db_onedev->query($sql, array($row['T_OrderHeaderID']));
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 't_orderdetail radiologi select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
$get_layanan_radiologi = $qry->row_array();
|
|
$jumlah_layanan_radiologi = $get_layanan_radiologi['total_layanan_radiologi'];
|
|
|
|
$jumlah_layanan_lain = 0;
|
|
$sql = "SELECT IFNULL(SUM(T_OrderDetailTotal),0) as total_layanan_lain
|
|
FROM t_orderdetail
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y'
|
|
JOIN nat_test ON T_TestNat_TestID = Nat_TestID AND Nat_TestIsActive = 'Y'
|
|
JOIN nat_group ON Nat_GroupID = Nat_TestNat_GroupID AND Nat_GroupIsActive = 'Y' AND
|
|
Nat_GroupID IN (2,4)
|
|
WHERE T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailIsActive = 'Y'
|
|
";
|
|
$qry = $this->db_onedev->query($sql, array($row['T_OrderHeaderID']));
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 't_orderdetail lain select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
|
|
|
|
$get_layanan_lain = $qry->row_array();
|
|
$jumlah_layanan_lain = $get_layanan_lain['total_layanan_lain'];
|
|
|
|
$total_layanan = 0;
|
|
$sql = "SELECT SUM(T_OrderDetailTotal) as total_layanan, Mgm_McuM_BranchID as BranchID
|
|
FROM t_orderdetail
|
|
JOIN t_orderheader ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID
|
|
JOIN mgm_mcu ON T_OrderHeaderMgm_McuID = Mgm_McuID
|
|
WHERE T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailIsActive = 'Y'
|
|
";
|
|
$qry = $this->db_onedev->query($sql, array($row['T_OrderHeaderID']));
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 't_orderdetail total layanan select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
$total_layanan = $qry->row_array();
|
|
$total_layanan = $total_layanan['total_layanan'];
|
|
|
|
|
|
$total_bayar = 0;
|
|
$sql = "SELECT F_PaymentTotal as total
|
|
FROM f_payment
|
|
WHERE F_PaymentT_OrderHeaderID = ? AND F_PaymentIsActive = 'Y'
|
|
";
|
|
$qry = $this->db_onedev->query($sql, array($row['T_OrderHeaderID']));
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 'f_payment select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
|
|
$get_total_bayar = $qry->result_array();
|
|
if (count($get_total_bayar) > 0) {
|
|
foreach($get_total_bayar as $key_total_bayar => $row_total_bayar){
|
|
$total_bayar += $row_total_bayar['total'];
|
|
}
|
|
}
|
|
|
|
|
|
|
|
$mgm_mcu_m_branch_id = $row['mgm_mcu_m_branch_id'];
|
|
$corporate_code = $row['CorporateCode'];
|
|
|
|
$total_ditanggung_pasien = $corporate_code == 'C25040059' || $corporate_code == 'C25060181' ? $total_layanan : 0;
|
|
$total_ditanggung_penjamin = $corporate_code == 'C25040059' || $corporate_code == 'C25060181' ? 0 : $total_layanan;
|
|
|
|
$regpasnominal = array(
|
|
"BiayaParamedik" => "0.00",
|
|
"ParamedikDitanggungPasien" => "0.00",
|
|
"ParamedikDitanggungPenjamin" => "0.00",
|
|
"BiayaAdministrasi" => "0",
|
|
"AdmDitanggungPasien" => "0.00",
|
|
"AdmDitanggungPenjamin" => "0.00",
|
|
"BiayaMaterai" => "0.00",
|
|
"BiayaMateraiDitanggungPasien" => "0.00",
|
|
"BiayaMateraiDitanggungPenjamin" => "0.00",
|
|
"JumlahLayanan" => $jumlah_layanan_lain,
|
|
"JumlahLayananRadiologi" => $jumlah_layanan_radiologi,
|
|
"JumlahLayananLaboratorium" => $jumlah_layanan_lab,
|
|
"JumlahItem" => 0,
|
|
"JumlahItemRetur" => 0,
|
|
"JumlahTT" => "0.00",
|
|
"JumlahBiayaLain" => "0.00",
|
|
"JumlahBayar" => $total_bayar,
|
|
"TipeDiskonGlobal" => "Absolute",
|
|
"DiskonGlobal" => "0.00",
|
|
"TotalDitanggungPasien" => $total_ditanggung_pasien,
|
|
"TotalDitanggungPenjamin" => $total_ditanggung_penjamin
|
|
);
|
|
|
|
$raw_data[$key]['RegpasNominal'] = array(
|
|
$regpasnominal
|
|
);
|
|
|
|
//echo $total_bayar;
|
|
$raw_data[$key]['TrxBayar'] = null;
|
|
if($total_bayar > 0){
|
|
$sql = "SELECT M_PatientNoReg as MEDRECID,
|
|
F_PaymentDetailID as BayarID,
|
|
IFNULL(F_PaymentDetailAmount,0) as Jumlah,
|
|
F_PaymentDetailCreated as Tanggal,
|
|
'Pelunasan' as JenisBayarID,
|
|
CONCAT(F_PaymentNumber,'.',F_PaymentDetailID) as KwitansiID,
|
|
CONCAT(F_PaymentDetailM_PaymentTypeID,F_PaymentDetailM_BankAccountID) as TipeBayarID,
|
|
'N' as Dibatalkan
|
|
FROM f_paymentdetail
|
|
JOIN f_payment ON F_PaymentDetailF_PaymentID = F_PaymentID AND F_PaymentIsActive = 'Y'
|
|
JOIN t_orderheader ON F_PaymentT_OrderHeaderID = T_OrderHeaderID
|
|
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
|
|
WHERE
|
|
F_PaymentT_OrderHeaderID = ? AND F_PaymentDetailIsActive = 'Y'
|
|
GROUP BY F_PaymentDetailID";
|
|
$qry = $this->db_onedev->query($sql, array($row['T_OrderHeaderID']));
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 'f_payment select', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
exit;
|
|
}
|
|
//echo $this->db_onedev->last_query();
|
|
//exit;
|
|
$bayar = $qry->result_array();
|
|
|
|
$raw_data[$key]['TrxBayar'] = $bayar;
|
|
}
|
|
|
|
$raw_data[$key]['Trxtt'] = null;
|
|
$raw_data[$key]['TrxLain'] = null;
|
|
$raw_data[$key]['PaketDispenser'] = null;
|
|
$errors = [];
|
|
|
|
//echo json_encode($raw_data[$key]);
|
|
//exit;
|
|
$result = $this->post_request($url, $raw_data[$key], $headers);
|
|
|
|
|
|
if ($result['status'] == '400') {
|
|
$sql = "INSERT INTO ais_transaction(
|
|
Ais_TransactionOrderHeaderLabNumber,
|
|
Ais_TransactionJson,
|
|
Ais_TransactionStatus,
|
|
Ais_TransactionResponse,
|
|
Ais_TransactionUrl,
|
|
Ais_TransactionUserID,
|
|
Ais_TransactionCreated
|
|
)
|
|
VALUES(
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
NOW()
|
|
)";
|
|
$qry = $this->db_log->query($sql, array(
|
|
$row['RegID'],
|
|
json_encode($raw_data[$key]),
|
|
'error',
|
|
json_encode($result),
|
|
$url,
|
|
555
|
|
));
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 'ais_transaction insert', 'query' => $this->db_log->last_query(), 'json' => json_encode($result)), 999);
|
|
exit;
|
|
}
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 'transaction insert', 'query' => $this->db_onedev->last_query(), 'json' => json_encode($result)), 999);
|
|
|
|
$errors[] = array('RegID' => $row['RegID'], 'error' => $result['message']);
|
|
|
|
|
|
}else{
|
|
//echo 'insert ais_transaction';
|
|
$sql = "INSERT INTO ais_transaction(
|
|
Ais_TransactionOrderHeaderLabNumber,
|
|
Ais_TransactionJson,
|
|
Ais_TransactionStatus,
|
|
Ais_TransactionResponse,
|
|
Ais_TransactionUrl,
|
|
Ais_TransactionUserID,
|
|
Ais_TransactionCreated
|
|
)
|
|
VALUES(
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
?,
|
|
NOW()
|
|
)";
|
|
$qry = $this->db_log->query($sql, array(
|
|
$row['RegID'],
|
|
json_encode($raw_data[$key]),
|
|
'success',
|
|
json_encode($result),
|
|
$url,
|
|
555
|
|
));
|
|
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'post_transaction', 'message' => 'ais_transaction insert', 'query' => $this->db_log->last_query(), 'json' => json_encode($result)), 999);
|
|
exit;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
if(count($errors) > 0){
|
|
$success = array('status' => 'error', 'message' => 'Gagal Post Transaction', 'errors' => $errors);
|
|
echo json_encode($success);
|
|
exit;
|
|
}else{
|
|
$success = array('status' => 'success', 'message' => 'Berhasil Post Transaction');
|
|
echo json_encode($success);
|
|
exit;
|
|
}
|
|
|
|
}
|
|
|
|
function get_transaction()
|
|
{
|
|
// Get id from query parameter
|
|
$id = $this->input->get('id');
|
|
|
|
if (empty($id)) {
|
|
$errors = array('status' => 'error', 'message' => 'ID parameter is required');
|
|
echo json_encode($errors);
|
|
exit;
|
|
}
|
|
|
|
$login = $this->post_auth();
|
|
if (!$login['success']) {
|
|
$this->error_log(array('fn_name' => 'get_transaction_auth', 'message' => 'failed auth', 'query' => '', 'json' => json_encode($login)), 999);
|
|
$errors = array('status' => 'error', 'message' => 'Gagal Login');
|
|
echo json_encode($errors);
|
|
exit;
|
|
}
|
|
|
|
$dt_config = $this->get_config();
|
|
$baseUrl = $dt_config['AisConfigBaseUrl'];
|
|
$url = $baseUrl . '/api/transaksi?id=' . $id;
|
|
|
|
|
|
$result = $this->get_request($url);
|
|
//print_r($result);
|
|
if (!$result['success']) {
|
|
$this->error_log(array('fn_name' => 'get_transaction', 'message' => 'failed get transaction', 'query' => '', 'json' => json_encode($result)), 999);
|
|
$errors = array('status' => 'error', 'message' => 'Gagal Get Transaction');
|
|
echo json_encode($errors);
|
|
exit;
|
|
}
|
|
|
|
$data = $result['response']['data'] ?? null;
|
|
// $data = json_encode($data);
|
|
$success = array('status' => 'success', 'message' => 'Berhasil Get Transaction', 'data' => $data);
|
|
echo json_encode($success);
|
|
exit;
|
|
|
|
}
|
|
|
|
function get_transaction_direct($id)
|
|
{
|
|
// Get id from query parameter
|
|
//$id = $this->input->get('id');
|
|
|
|
if (empty($id)) {
|
|
$errors = array('status' => 'error', 'message' => 'ID parameter is required');
|
|
echo json_encode($errors);
|
|
exit;
|
|
}
|
|
|
|
$login = $this->post_auth();
|
|
if (!$login['success']) {
|
|
$this->error_log(array('fn_name' => 'get_transaction_auth', 'message' => 'failed auth', 'query' => '', 'json' => json_encode($login)), 999);
|
|
$errors = array('status' => 'error', 'message' => 'Gagal Login');
|
|
echo json_encode($errors);
|
|
exit;
|
|
}
|
|
|
|
$dt_config = $this->get_config();
|
|
$baseUrl = $dt_config['AisConfigBaseUrl'];
|
|
$url = $baseUrl . '/api/transaksi?id=' . $id;
|
|
|
|
|
|
$result = $this->get_request($url);
|
|
|
|
|
|
$data = $result['response']['data'] ?? null;
|
|
if($data == null){
|
|
$success = array('status' => 'error', 'message' => 'Gagal Get Transaction', 'data' => null);
|
|
echo json_encode($success);
|
|
return $success;
|
|
}
|
|
return array('status' => 'success', 'message' => 'Berhasil Get Transaction', 'data' => $data);
|
|
|
|
}
|
|
|
|
|
|
function monitoring_transaction()
|
|
{
|
|
|
|
$sql = "SELECT
|
|
oh.T_OrderHeaderM_PatientID AS patient_id,
|
|
p.M_PatientName AS patient_name,
|
|
oh.T_OrderHeaderLabNumber AS lab_number,
|
|
b.M_BranchCode AS branch_code,
|
|
oh.T_OrderHeaderTotal AS total,
|
|
at.Ais_TransactionStatus,
|
|
c.CorporateID AS corporate_id,
|
|
IF(at.Ais_TransactionID IS NULL, 'N', 'Y') AS ais_status
|
|
FROM t_orderheader oh
|
|
JOIN m_patient p ON p.M_PatientID = oh.T_OrderHeaderM_PatientID
|
|
JOIN m_branch b ON b.M_BranchID = oh.T_OrderHeaderM_BranchID
|
|
LEFT JOIN corporate c ON c.CorporateID = oh.T_OrderHeaderCorporateID
|
|
LEFT JOIN " . $this->db_log->database . ".ais_transaction at ON at.Ais_TransactionOrderHeaderLabNumber = oh.T_OrderHeaderLabNumber
|
|
";
|
|
|
|
// Ambil start_date dan end_date dari query parameter
|
|
$start_date = $this->input->get('start_date');
|
|
$end_date = $this->input->get('end_date');
|
|
$ais_status = $this->input->get('ais_status');
|
|
$corporate_id = $this->input->get('corporate_id');
|
|
$lab_number = $this->input->get('lab_number');
|
|
$patient_name = $this->input->get('patient_name');
|
|
$params = [];
|
|
$where_clauses = [];
|
|
|
|
if ($start_date && $end_date) {
|
|
$where_clauses[] = "DATE(oh.T_OrderHeaderDate) BETWEEN ? AND ?";
|
|
$params = [$start_date, $end_date];
|
|
} else {
|
|
// Gunakan default jika tidak ada input tanggal
|
|
$where_clauses[] = "date(oh.T_OrderHeaderDate) BETWEEN '2024-08-01' AND '2024-08-03'";
|
|
}
|
|
|
|
if ($ais_status === 'Y') {
|
|
$where_clauses[] = "at.Ais_TransactionID IS NOT NULL";
|
|
} elseif ($ais_status === 'N') {
|
|
$where_clauses[] = "at.Ais_TransactionID IS NULL";
|
|
}
|
|
|
|
if ($corporate_id) {
|
|
$where_clauses[] = "oh.T_OrderHeaderCorporateID = ?";
|
|
$params[] = $corporate_id;
|
|
}
|
|
|
|
if ($lab_number) {
|
|
$where_clauses[] = "oh.T_OrderHeaderLabNumber LIKE ?";
|
|
$params[] = '%' . $lab_number . '%';
|
|
}
|
|
|
|
if ($patient_name){
|
|
$where_clauses[] = "p.M_PatientName LIKE ?";
|
|
$params[] = '%' . $patient_name . '%';
|
|
}
|
|
|
|
if (!empty($where_clauses)) {
|
|
$sql .= " WHERE " . implode(" AND ", $where_clauses);
|
|
}
|
|
|
|
$qry = $this->db_onedev->query($sql, $params);
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'monitoring_transaction', 'message' => 'select monitoring data failed', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
echo json_encode(array('status' => 'error', 'message' => 'Gagal mengambil data monitoring.'));
|
|
exit;
|
|
}
|
|
|
|
$data = $qry->result_array();
|
|
echo json_encode(array('status' => 'success', 'message' => 'Berhasil mengambil data monitoring.', 'data' => $data));
|
|
exit;
|
|
}
|
|
|
|
function get_corporate()
|
|
{
|
|
$sql = "SELECT CorporateID, CorporateName, CorporateCode FROM corporate";
|
|
$qry = $this->db_onedev->query($sql);
|
|
|
|
if (!$qry) {
|
|
$this->error_log(array('fn_name' => 'get_corporate', 'message' => 'select corporate data failed', 'query' => $this->db_onedev->last_query(), 'json' => ''), 999);
|
|
$this->output
|
|
->set_status_header(500)
|
|
->set_content_type('application/json')
|
|
->set_output(json_encode(['status' => 'error', 'message' => 'Failed to retrieve corporate data.']));
|
|
return;
|
|
}
|
|
|
|
$data = $qry->result_array();
|
|
echo json_encode(['status' => 'success', 'message' => 'Successfully retrieved corporate data.', 'data' => $data]);
|
|
exit;
|
|
}
|
|
|
|
function get_json_response()
|
|
{
|
|
// Get lab_number from the query parameter
|
|
$lab_number = $this->input->get('lab_number');
|
|
|
|
if (empty($lab_number)) {
|
|
$this->output
|
|
->set_status_header(400)
|
|
->set_content_type('application/json')
|
|
->set_output(json_encode(['status' => 'error', 'message' => 'lab_number parameter is required']));
|
|
return;
|
|
}
|
|
|
|
$sql = "SELECT
|
|
Ais_TransactionOrderHeaderLabNumber AS lab_number,
|
|
Ais_TransactionCreated AS transaction_created,
|
|
Ais_TransactionJson AS transaction_json,
|
|
Ais_TransactionResponse AS transaction_response
|
|
FROM ais_transaction
|
|
WHERE Ais_TransactionOrderHeaderLabNumber = ?";
|
|
|
|
$qry = $this->db_log->query($sql, array($lab_number));
|
|
|
|
$results = $qry->row_array();
|
|
$results = $qry->result_array();
|
|
|
|
if ($results) {
|
|
// Loop through each result to decode JSON
|
|
foreach ($results as &$result) {
|
|
$result['transaction_json'] = json_decode($result['transaction_json']);
|
|
$result['transaction_response'] = json_decode($result['transaction_response']);
|
|
}
|
|
unset($result); // Unset reference to avoid side effects
|
|
|
|
echo json_encode(['status' => 'success', 'data' => $results]);
|
|
} else {
|
|
echo json_encode(['status' => 'error', 'message' => 'Data not found for the given lab number.']);
|
|
}
|
|
exit;
|
|
}
|
|
}
|