Files
2026-04-27 10:26:26 +07:00

838 lines
41 KiB
PHP

<?php
class Tatmcu extends MY_Controller
{
var $db;
public function index()
{
echo "TAT API";
}
public function __construct()
{
parent::__construct();
// $this->db = $this->load->database("regional", true);
}
function insert_data($orderheaderid)
{
$this->db->trans_begin();
$prm = $this->sys_input;
// $orderheaderid = $prm['orderheaderid'];
// LAB result
$sql_lab_result = "SELECT
CorporateID,
CorporateName,
Mgm_McuID,
Mgm_McuLabel,
CONCAT(T_OrderSampleSamplingDate,' ',T_OrderSampleSamplingTime) as checkIn,
T_OrderSampleSamplingUserID as checkInUserID,
CONCAT(T_OrderSampleReceiveDate,' ',T_OrderSampleReceiveTime) as checkOut,
T_OrderSampleReceiveUserID as checkOutUserID,
T_OrderHeaderID,
T_OrderHeaderDate,
T_OrderHeaderLabNumber,
M_PatientID,
M_PatientNoReg,
M_PatientName,
T_TestID,
T_TestCode,
GROUP_CONCAT(IFNULL(CONCAT(T_TestName), '')) AS T_TestName,
T_SampleTypeName,
T_BahanID,
T_BahanCode,
T_BahanName,
'' as authorisasiDate,
'' as authorisasiUserID,
MIN(api_ResultDate) as resultDate,
'' as resultUserID,
Mcu_ResumeValidationDateTime,
Mcu_ResumeValidationUserID,
'result' as action
FROM t_orderheader
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID AND T_OrderDetailIsActive = 'Y'
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y'
JOIN t_sampletype ON T_TestT_SampleTypeID = T_SampleTypeID AND T_SampleTypeIsActive = 'Y'
JOIN t_bahan ON T_SampleTypeT_BahanID = T_BahanID AND T_BahanIsActive = 'Y'
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID AND Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultFlagNonLab = 'N'
JOIN corporate ON T_OrderHeaderCorporateID = CorporateID AND CorporateIsActive = 'Y'
JOIN mgm_mcu ON T_OrderHeaderMgm_McuID = Mgm_McuID AND Mgm_McuIsActive = 'Y'
LEFT JOIN api_result ON api_ResultT_OrderDetailID = T_OrderDetailID AND api_ResultIsActive = 'Y'
LEFT JOIN mcu_resume ON Mcu_ResumeT_OrderHeaderID = T_OrderHeaderID AND Mcu_ResumeIsActive = 'Y'
LEFT JOIN t_ordersample ON T_OrderSampleT_SampleTypeID = T_SampleTypeID AND T_OrderSampleT_OrderHeaderID = T_OrderHeaderID AND T_OrderSampleIsActive = 'Y'
WHERE T_OrderHeaderID = ?
AND T_OrderHeaderIsActive = 'Y'
GROUP BY T_BahanID";
$qry_lab_result = $this->db->query($sql_lab_result, [$orderheaderid]);
if ($qry_lab_result) {
$rows_lab_result = $qry_lab_result->result_array();
} else {
$this->sys_error_db("select lab error", $this->db);
exit;
}
// LAB validation
$sql_lab_validation = "SELECT
CorporateID,
CorporateName,
Mgm_McuID,
Mgm_McuLabel,
CONCAT(T_OrderSampleSamplingDate,' ',T_OrderSampleSamplingTime) as checkIn,
T_OrderSampleSamplingUserID as checkInUserID,
CONCAT(T_OrderSampleReceiveDate,' ',T_OrderSampleReceiveTime) as checkOut,
T_OrderSampleReceiveUserID as checkOutUserID,
T_OrderHeaderID,
T_OrderHeaderDate,
T_OrderHeaderLabNumber,
M_PatientID,
M_PatientNoReg,
M_PatientName,
T_TestID,
T_TestCode,
GROUP_CONCAT(IFNULL(CONCAT(T_TestName), '')) AS T_TestName,
T_SampleTypeName,
T_BahanID,
T_BahanCode,
T_BahanName,
MAX(api_ResultAuthorizationDate) as authorisasiDate,
'' as authorisasiUserID,
'' as resultDate,
'' as resultUserID,
Mcu_ResumeValidationDateTime,
Mcu_ResumeValidationUserID,
'validation' as action
FROM t_orderheader
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID AND T_OrderDetailIsActive = 'Y'
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y'
JOIN t_sampletype ON T_TestT_SampleTypeID = T_SampleTypeID AND T_SampleTypeIsActive = 'Y'
JOIN t_bahan ON T_SampleTypeT_BahanID = T_BahanID AND T_BahanIsActive = 'Y'
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID AND Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultFlagNonLab = 'N'
JOIN corporate ON T_OrderHeaderCorporateID = CorporateID AND CorporateIsActive = 'Y'
JOIN mgm_mcu ON T_OrderHeaderMgm_McuID = Mgm_McuID AND Mgm_McuIsActive = 'Y'
LEFT JOIN api_result ON api_ResultT_OrderDetailID = T_OrderDetailID AND api_ResultIsActive = 'Y'
LEFT JOIN mcu_resume ON Mcu_ResumeT_OrderHeaderID = T_OrderHeaderID AND Mcu_ResumeIsActive = 'Y'
LEFT JOIN t_ordersample ON T_OrderSampleT_SampleTypeID = T_SampleTypeID AND T_OrderSampleT_OrderHeaderID = T_OrderHeaderID AND T_OrderSampleIsActive = 'Y'
WHERE T_OrderHeaderID = ?
AND T_OrderHeaderIsActive = 'Y'
GROUP BY T_BahanID";
$qry_lab_validation = $this->db->query($sql_lab_validation, [$orderheaderid]);
if ($qry_lab_validation) {
$rows_lab_validation = $qry_lab_validation->result_array();
} else {
$this->sys_error_db("select lab error", $this->db);
exit;
}
// result
// NONLAB minmal
$sql_nonlab_resault = "SELECT
CorporateID,
CorporateName,
Mgm_McuID,
Mgm_McuLabel,
CONCAT(T_SamplingSoProcessDate,' ',T_SamplingSoProcessTime) as checkIn,
T_SamplingSoProcessUserID as checkInUserID,
CONCAT(T_SamplingSoDoneDate,' ',T_SamplingSoDoneTime) as checkOut,
T_SamplingSoDoneUserID as checkOutUserID,
T_OrderHeaderID,
T_OrderHeaderDate,
T_OrderHeaderLabNumber,
M_PatientID,
M_PatientNoReg,
M_PatientName,
T_TestID,
T_TestCode,
GROUP_CONCAT(IFNULL(CONCAT(T_TestName), '')) AS T_TestName,
T_SampleTypeName,
T_BahanID,
T_BahanCode,
T_BahanName,
'' as authorisasiDate,
'' as authorisasiUserID,
MIN(So_REActionLogDate) as resultDate,
So_REActionLogUserID as resultUserID,
Mcu_ResumeValidationDateTime,
Mcu_ResumeValidationUserID,
'result' as action
FROM t_orderheader
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID AND T_OrderDetailIsActive = 'Y'
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y'
JOIN t_sampletype ON T_TestT_SampleTypeID = T_SampleTypeID AND T_SampleTypeIsActive = 'Y'
JOIN t_bahan ON T_SampleTypeT_BahanID = T_BahanID AND T_BahanIsActive = 'Y'
JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y'
JOIN so_reactionlog ON So_REActionLogSo_ResultEntryID = So_ResultEntryID AND So_ResultEntryIsActive = 'Y'
AND So_REActionLogAction = 'UPDATE_ACT'
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID AND Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultFlagNonLab = 'Y'
JOIN corporate ON T_OrderHeaderCorporateID = CorporateID AND CorporateIsActive = 'Y'
JOIN mgm_mcu ON T_OrderHeaderMgm_McuID = Mgm_McuID AND Mgm_McuIsActive = 'Y'
LEFT JOIN mcu_resume ON Mcu_ResumeT_OrderHeaderID = T_OrderHeaderID AND Mcu_ResumeIsActive = 'Y'
LEFT JOIN t_samplingso ON T_SamplingSoT_TestID = T_TestID AND T_SamplingSoT_OrderHeaderID = T_OrderHeaderID AND T_SamplingSoIsActive= 'Y'
WHERE T_OrderHeaderID = ?
AND T_OrderHeaderIsActive = 'Y'
GROUP BY T_TestID
";
$qry_nonlab_result = $this->db->query($sql_nonlab_resault, [$orderheaderid]);
if ($qry_nonlab_result) {
$rows_nonlab_result = $qry_nonlab_result->result_array();
} else {
$this->sys_error_db("select nonlab error", $this->db);
exit;
}
// validation
// NONLAB max
$sql_nonlab_validation = "SELECT
CorporateID,
CorporateName,
Mgm_McuID,
Mgm_McuLabel,
CONCAT(T_SamplingSoProcessDate,' ',T_SamplingSoProcessTime) as checkIn,
T_SamplingSoProcessUserID as checkInUserID,
CONCAT(T_SamplingSoDoneDate,' ',T_SamplingSoDoneTime) as checkOut,
T_SamplingSoDoneUserID as checkOutUserID,
T_OrderHeaderID,
T_OrderHeaderDate,
T_OrderHeaderLabNumber,
M_PatientID,
M_PatientNoReg,
M_PatientName,
T_TestID,
T_TestCode,
GROUP_CONCAT(IFNULL(CONCAT(T_TestName), '')) AS T_TestName,
T_SampleTypeName,
T_BahanID,
T_BahanCode,
T_BahanName,
MAX(So_REActionLogDate) as authorisasiDate,
So_REActionLogUserID as authorisasiUserID,
'' as resultDate,
'' as resultUserID,
Mcu_ResumeValidationDateTime,
Mcu_ResumeValidationUserID,
'validation' as action
FROM t_orderheader
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID AND T_OrderDetailIsActive = 'Y'
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y'
JOIN t_sampletype ON T_TestT_SampleTypeID = T_SampleTypeID AND T_SampleTypeIsActive = 'Y'
JOIN t_bahan ON T_SampleTypeT_BahanID = T_BahanID AND T_BahanIsActive = 'Y'
JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y'
JOIN so_reactionlog ON So_REActionLogSo_ResultEntryID = So_ResultEntryID AND So_ResultEntryIsActive = 'Y'
AND So_REActionLogAction = 'VALIDATION'
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID AND Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultFlagNonLab = 'Y'
JOIN corporate ON T_OrderHeaderCorporateID = CorporateID AND CorporateIsActive = 'Y'
JOIN mgm_mcu ON T_OrderHeaderMgm_McuID = Mgm_McuID AND Mgm_McuIsActive = 'Y'
LEFT JOIN mcu_resume ON Mcu_ResumeT_OrderHeaderID = T_OrderHeaderID AND Mcu_ResumeIsActive = 'Y'
LEFT JOIN t_samplingso ON T_SamplingSoT_TestID = T_TestID AND T_SamplingSoT_OrderHeaderID = T_OrderHeaderID AND T_SamplingSoIsActive= 'Y'
WHERE T_OrderHeaderID = ?
AND T_OrderHeaderIsActive = 'Y'
GROUP BY T_TestID";
$qry_nonlab_validation = $this->db->query($sql_nonlab_validation, [$orderheaderid]);
if ($qry_nonlab_validation) {
$rows_nonlab_validation = $qry_nonlab_validation->result_array();
} else {
$this->sys_error_db("select nonlab max error", $this->db);
exit;
}
// echo $this->db->last_query();
// exit;
// result
// VISUS
$sql_visus_result = "SELECT
CorporateID,
CorporateName,
Mgm_McuID,
Mgm_McuLabel,
CONCAT(T_SamplingSoProcessDate,' ',T_SamplingSoProcessTime) as checkIn,
T_SamplingSoProcessUserID,
CONCAT(T_SamplingSoDoneDate,' ',T_SamplingSoDoneTime) as checkOut,
T_SamplingSoDoneUserID,
T_OrderHeaderID,
T_OrderHeaderDate,
T_OrderHeaderLabNumber,
M_PatientID,
M_PatientNoReg,
M_PatientName,
T_TestID,
T_TestCode,
GROUP_CONCAT(IFNULL(CONCAT(T_TestName), '')) AS T_TestName,
T_SampleTypeName,
T_BahanID,
T_BahanCode,
T_BahanName,
'' as authorisasiDate,
'' as authorisasiUserID,
'' as resultDate,
'' as resultUserID,
Mcu_ResumeValidationDateTime,
Mcu_ResumeValidationUserID,
'result' as action
FROM t_orderheader
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID AND T_OrderDetailIsActive = 'Y'
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y'
JOIN t_sampletype ON T_TestT_SampleTypeID = T_SampleTypeID AND T_SampleTypeIsActive = 'Y'
JOIN t_bahan ON T_SampleTypeT_BahanID = T_BahanID AND T_BahanIsActive = 'Y'
JOIN corporate ON T_OrderHeaderCorporateID = CorporateID AND CorporateIsActive = 'Y'
JOIN mgm_mcu ON T_OrderHeaderMgm_McuID = Mgm_McuID AND Mgm_McuIsActive = 'Y'
LEFT JOIN mcu_resume ON Mcu_ResumeT_OrderHeaderID = T_OrderHeaderID AND Mcu_ResumeIsActive = 'Y'
LEFT JOIN t_samplingso ON T_SamplingSoT_TestID = T_TestID AND T_SamplingSoT_OrderHeaderID = T_OrderHeaderID AND T_SamplingSoIsActive= 'Y'
WHERE T_OrderHeaderID = ?
AND T_OrderHeaderIsActive = 'Y' AND T_TestID IN (2571, 2573, 3450)
GROUP BY T_TestID";
$qry_visus_result = $this->db->query($sql_visus_result, [$orderheaderid]);
if ($qry_visus_result) {
$rows_visus_result = $qry_visus_result->result_array();
} else {
$this->sys_error_db("select visus error", $this->db);
exit;
}
if ($rows_visus_result) {
$sql_v = "SELECT T_SamplingAdditionalFisikVisusID,
MIN(T_SamplingAdditionalFisikVisusCreated) as T_SamplingAdditionalFisikVisusCreated,
T_SamplingAdditionalFisikVisusCreatedUserID
FROM t_samplingso_additional_fisik_visus
WHERE T_SamplingAdditionalFisikVisusT_OrderHeaderID = ?
LIMIT 1";
$qry_v = $this->db->query($sql_v, ($orderheaderid));
if ($qry_v) {
$row_v = $qry_v->row_array();
} else {
$this->sys_error_db('select t_samplingso_additional_fisik_visus', $this->db);
exit;
}
$sql_bw = "SELECT T_SamplingAdditionalFisikBWID,
MIN(T_SamplingAdditionalFisikBWCreated) as T_SamplingAdditionalFisikBWCreated,
T_SamplingAdditionalFisikBWCreatedUserID
FROM t_samplingso_additional_fisik_bw
WHERE T_SamplingAdditionalFisikBWT_OrderHeaderID = ?
LIMIT 1";
$qry_bw = $this->db->query($sql_bw, ($orderheaderid));
if ($qry_bw) {
$row_bw = $qry_bw->row_array();
} else {
$this->sys_error_db('select t_samplingso_additional_fisik_bw', $this->db);
exit;
}
$sql_bbtb = "SELECT T_SamplingAdditionalFisikBBTBID,
MIN(T_SamplingAdditionalFisikBBTBCreated) as T_SamplingAdditionalFisikBBTBCreated,
T_SamplingAdditionalFisikBBTBCreatedUserID
FROM t_samplingso_additional_fisik_bbtb
WHERE T_SamplingAdditionalFisikBBTBT_OrderHeaderID = ?
LIMIT 1";
$qry_bbtb = $this->db->query($sql_bbtb, ($orderheaderid));
if ($qry_bbtb) {
$row_bbtb = $qry_bbtb->row_array();
} else {
$this->sys_error_db('select t_samplingso_additional_fisik_bbtb', $this->db);
exit;
}
// print_r($row_v);
// exit;
foreach ($rows_visus_result as $key => $value) {
// print_r($value);
if ($value['T_TestID'] == 2571) {
$rows_visus_result[$key]['resultDate'] = $row_v['T_SamplingAdditionalFisikVisusCreated'];
$rows_visus_result[$key]['resultUserID'] = $row_v['T_SamplingAdditionalFisikVisusCreatedUserID'];
}
if ($value['T_TestID'] == 2573) {
$rows_visus_result[$key]['resultDate'] = $row_bw['T_SamplingAdditionalFisikBWCreated'];
$rows_visus_result[$key]['resultUserID'] = $row_bw['T_SamplingAdditionalFisikBWCreatedUserID'];
}
if ($value['T_TestID'] == 3450) {
$rows_visus_result[$key]['resultDate'] = $row_bbtb['T_SamplingAdditionalFisikBBTBCreated'];
$rows_visus_result[$key]['resultUserID'] = $row_bbtb['T_SamplingAdditionalFisikBBTBCreatedUserID'];
}
}
}
// print_r($rows_visus_result);
// exit;
// validation
// VISUS
$sql_visus_validation = "SELECT
CorporateID,
CorporateName,
Mgm_McuID,
Mgm_McuLabel,
CONCAT(T_SamplingSoProcessDate,' ',T_SamplingSoProcessTime) as checkIn,
T_SamplingSoProcessUserID,
CONCAT(T_SamplingSoDoneDate,' ',T_SamplingSoDoneTime) as checkOut,
T_SamplingSoDoneUserID,
T_OrderHeaderID,
T_OrderHeaderDate,
T_OrderHeaderLabNumber,
M_PatientID,
M_PatientNoReg,
M_PatientName,
T_TestID,
T_TestCode,
GROUP_CONCAT(IFNULL(CONCAT(T_TestName), '')) AS T_TestName,
T_SampleTypeName,
T_BahanID,
T_BahanCode,
T_BahanName,
'' as authorisasiDate,
'' as authorisasiUserID,
'' as resultDate,
'' as resultUserID,
Mcu_ResumeValidationDateTime,
Mcu_ResumeValidationUserID,
'validation' as action
FROM t_orderheader
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID AND T_OrderDetailIsActive = 'Y'
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y'
JOIN t_sampletype ON T_TestT_SampleTypeID = T_SampleTypeID AND T_SampleTypeIsActive = 'Y'
JOIN t_bahan ON T_SampleTypeT_BahanID = T_BahanID AND T_BahanIsActive = 'Y'
JOIN corporate ON T_OrderHeaderCorporateID = CorporateID AND CorporateIsActive = 'Y'
JOIN mgm_mcu ON T_OrderHeaderMgm_McuID = Mgm_McuID AND Mgm_McuIsActive = 'Y'
LEFT JOIN mcu_resume ON Mcu_ResumeT_OrderHeaderID = T_OrderHeaderID AND Mcu_ResumeIsActive = 'Y'
LEFT JOIN t_samplingso ON T_SamplingSoT_TestID = T_TestID AND T_SamplingSoT_OrderHeaderID = T_OrderHeaderID AND T_SamplingSoIsActive= 'Y'
WHERE T_OrderHeaderID = ?
AND T_OrderHeaderIsActive = 'Y' AND T_TestID IN (2571, 2573, 3450)
GROUP BY T_TestID";
$qry_visus_validation = $this->db->query($sql_visus_validation, [$orderheaderid]);
if ($qry_visus_validation) {
$rows_visus_validation = $qry_visus_validation->result_array();
} else {
$this->sys_error_db("select visus error", $this->db);
exit;
}
if ($rows_visus_validation) {
$sql_v = "SELECT T_SamplingAdditionalFisikVisusID,
MAX(T_SamplingAdditionalFisikVisusCreated) as T_SamplingAdditionalFisikVisusCreated,
T_SamplingAdditionalFisikVisusCreatedUserID
FROM t_samplingso_additional_fisik_visus
WHERE T_SamplingAdditionalFisikVisusT_OrderHeaderID = ?
LIMIT 1";
$qry_v = $this->db->query($sql_v, ($orderheaderid));
if ($qry_v) {
$row_v = $qry_v->row_array();
} else {
$this->sys_error_db('select t_samplingso_additional_fisik_visus', $this->db);
exit;
}
$sql_bw = "SELECT T_SamplingAdditionalFisikBWID,
MAX(T_SamplingAdditionalFisikBWCreated) as T_SamplingAdditionalFisikBWCreated,
T_SamplingAdditionalFisikBWCreatedUserID
FROM t_samplingso_additional_fisik_bw
WHERE T_SamplingAdditionalFisikBWT_OrderHeaderID = ?
LIMIT 1";
$qry_bw = $this->db->query($sql_bw, ($orderheaderid));
if ($qry_bw) {
$row_bw = $qry_bw->row_array();
} else {
$this->sys_error_db('select t_samplingso_additional_fisik_bw', $this->db);
exit;
}
$sql_bbtb = "SELECT T_SamplingAdditionalFisikBBTBID,
MAX(T_SamplingAdditionalFisikBBTBCreated) as T_SamplingAdditionalFisikBBTBCreated,
T_SamplingAdditionalFisikBBTBCreatedUserID
FROM t_samplingso_additional_fisik_bbtb
WHERE T_SamplingAdditionalFisikBBTBT_OrderHeaderID = ?
LIMIT 1";
$qry_bbtb = $this->db->query($sql_bbtb, ($orderheaderid));
if ($qry_bbtb) {
$row_bbtb = $qry_bbtb->row_array();
} else {
$this->sys_error_db('select t_samplingso_additional_fisik_bbtb', $this->db);
exit;
}
// print_r($row_v);
foreach ($rows_visus_validation as $key => $value) {
// print_r($value);
if ($value['T_TestID'] == 2571) {
$rows_visus_validation[$key]['authorisasiDate'] = $row_v['T_SamplingAdditionalFisikVisusCreated'];
$rows_visus_validation[$key]['authorisasiUserID'] = $row_v['T_SamplingAdditionalFisikVisusCreatedUserID'];
}
if ($value['T_TestID'] == 2573) {
$rows_visus_validation[$key]['authorisasiDate'] = $row_bw['T_SamplingAdditionalFisikBWCreated'];
$rows_visus_validation[$key]['authorisasiUserID'] = $row_bw['T_SamplingAdditionalFisikBWCreatedUserID'];
}
if ($value['T_TestID'] == 3450) {
$rows_visus_validation[$key]['authorisasiDate'] = $row_bbtb['T_SamplingAdditionalFisikBBTBCreated'];
$rows_visus_validation[$key]['authorisasiUserID'] = $row_bbtb['T_SamplingAdditionalFisikBBTBCreatedUserID'];
}
}
}
// result
// lapang pandang, body fit, tonometri
$sql_lp_result = "SELECT
CorporateID,
CorporateName,
Mgm_McuID,
Mgm_McuLabel,
CONCAT(T_SamplingSoProcessDate,' ', T_SamplingSoProcessTime) as checkIn,
T_SamplingSoProcessUserID,
CONCAT(T_SamplingSoDoneDate,' ', T_SamplingSoDoneTime) as checkOut,
T_SamplingSoDoneUserID,
T_OrderHeaderID,
T_OrderHeaderDate,
T_OrderHeaderLabNumber,
M_PatientID,
M_PatientNoReg,
M_PatientName,
T_TestID,
T_TestCode,
GROUP_CONCAT(IFNULL(CONCAT(T_TestName), '')) AS T_TestName,
T_SampleTypeName,
T_BahanID,
T_BahanCode,
T_BahanName,
'' as authorisasiDate,
'' as authorisasiUserID,
MIN(So_REActionLogDate) as resultDate,
So_REActionLogUserID as resultUserID,
Mcu_ResumeValidationDateTime,
Mcu_ResumeValidationUserID,
'result' as action
FROM t_orderheader
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID AND T_OrderDetailIsActive = 'Y'
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y'
JOIN t_sampletype ON T_TestT_SampleTypeID = T_SampleTypeID AND T_SampleTypeIsActive = 'Y'
JOIN t_bahan ON T_SampleTypeT_BahanID = T_BahanID AND T_BahanIsActive = 'Y'
JOIN corporate ON T_OrderHeaderCorporateID = CorporateID AND CorporateIsActive = 'Y'
JOIN mgm_mcu ON T_OrderHeaderMgm_McuID = Mgm_McuID AND Mgm_McuIsActive = 'Y'
LEFT JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y' AND So_ResultEntryNonlab_TemplateID = 27
LEFT JOIN so_reactionlog ON So_REActionLogSo_ResultEntryID = So_ResultEntryID AND So_ResultEntryIsActive = 'Y'
LEFT JOIN mcu_resume ON Mcu_ResumeT_OrderHeaderID = T_OrderHeaderID AND Mcu_ResumeIsActive = 'Y'
LEFT JOIN t_samplingso ON T_SamplingSoT_TestID = T_TestID AND T_SamplingSoT_OrderHeaderID = T_OrderHeaderID AND T_SamplingSoIsActive= 'Y'
WHERE T_OrderHeaderID = ?
AND T_OrderHeaderIsActive = 'Y' AND T_TestID IN (2614, 3466, 2580)
GROUP BY T_TestID";
$qry_lp_result = $this->db->query($sql_lp_result, [$orderheaderid]);
if ($qry_lp_result) {
$rows_lp_result = $qry_lp_result->result_array();
} else {
$this->sys_error_db("select lapangpandang, body fit, tonometri", $this->db);
exit;
}
// validation
// lapang pandang, body fit, tonometri
$sql_lp_validation = "SELECT
CorporateID,
CorporateName,
Mgm_McuID,
Mgm_McuLabel,
CONCAT(T_SamplingSoProcessDate,' ', T_SamplingSoProcessTime) as checkIn,
T_SamplingSoProcessUserID,
CONCAT(T_SamplingSoDoneDate,' ', T_SamplingSoDoneTime) as checkOut,
T_SamplingSoDoneUserID,
T_OrderHeaderID,
T_OrderHeaderDate,
T_OrderHeaderLabNumber,
M_PatientID,
M_PatientNoReg,
M_PatientName,
T_TestID,
T_TestCode,
GROUP_CONCAT(IFNULL(CONCAT(T_TestName), '')) AS T_TestName,
T_SampleTypeName,
T_BahanID,
T_BahanCode,
T_BahanName,
MAX(So_REActionLogDate) as authorisasiDate,
So_REActionLogUserID as authorisasiUserID,
'' as resultDate,
'' as resultUserID,
Mcu_ResumeValidationDateTime,
Mcu_ResumeValidationUserID
FROM t_orderheader
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y'
JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID AND T_OrderDetailIsActive = 'Y'
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y'
JOIN t_sampletype ON T_TestT_SampleTypeID = T_SampleTypeID AND T_SampleTypeIsActive = 'Y'
JOIN t_bahan ON T_SampleTypeT_BahanID = T_BahanID AND T_BahanIsActive = 'Y'
JOIN corporate ON T_OrderHeaderCorporateID = CorporateID AND CorporateIsActive = 'Y'
JOIN mgm_mcu ON T_OrderHeaderMgm_McuID = Mgm_McuID AND Mgm_McuIsActive = 'Y'
LEFT JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y' AND So_ResultEntryNonlab_TemplateID = 27
LEFT JOIN so_reactionlog ON So_REActionLogSo_ResultEntryID = So_ResultEntryID AND So_ResultEntryIsActive = 'Y'
LEFT JOIN mcu_resume ON Mcu_ResumeT_OrderHeaderID = T_OrderHeaderID AND Mcu_ResumeIsActive = 'Y'
LEFT JOIN t_samplingso ON T_SamplingSoT_TestID = T_TestID AND T_SamplingSoT_OrderHeaderID = T_OrderHeaderID AND T_SamplingSoIsActive= 'Y'
WHERE T_OrderHeaderID = ?
AND T_OrderHeaderIsActive = 'Y' AND T_TestID IN (2614, 3466, 2580)
GROUP BY T_TestID";
$qry_lp_validation = $this->db->query($sql_lp_validation, [$orderheaderid]);
if ($qry_lp_validation) {
$rows_lp_validation = $qry_lp_validation->result_array();
} else {
$this->sys_error_db("select lapangpandang, body fit, tonometri", $this->db);
exit;
}
$mergeDataArray = array_merge(
$rows_lab_result,
$rows_lab_validation,
$rows_nonlab_result,
$rows_nonlab_validation,
$rows_visus_result,
$rows_visus_validation,
$rows_lp_result,
$rows_lp_validation
);
// $mergeDataArray = array_merge($rows_nonlab, $rows_nonlab_max);
// print_r($mergeDataArray);
// exit;
// print_r(count($mergeDataArray));
if (count($mergeDataArray) > 0) {
$sql_delete = "DELETE FROM tat_mcu WHERE
Tat_McuT_OrderHeaderID = {$orderheaderid}";
$qry_delete = $this->db->query($sql_delete);
if (!$qry_delete) {
$this->db->trans_rollback();
$this->sys_error_db("delete tat mcu error", $this->db);
exit;
}
foreach ($mergeDataArray as $k => $v) {
// print_r($v['action']);
// exit;
if ($v['action'] == 'result') {
$sql_insert = "INSERT INTO tat_mcu(
Tat_McuCorporateID,
Tat_McuCorporateName,
Tat_McuMgm_McuID,
Tat_McuMgm_McuLabel,
Tat_McuT_OrderHeaderID,
Tat_McuT_OrderHeaderDate,
Tat_McuT_OrderHeaderLabNumber,
Tat_McuM_PatientID,
Tat_McuM_PatientName,
Tat_McuT_BahanID,
Tat_McuT_BahanName,
Tat_McuCheckInDate,
Tat_McuCheckInUserID,
Tat_McuCheckOutDate,
Tat_McuCheckOutUserID,
Tat_McuResultDate,
Tat_McuResultUserID,
Tat_McuAuthorisasiDate,
Tat_McuAuthorisasiUserID,
Tat_McuKesimpulandanSaranDate,
Tat_McuKesimpulandanSaranUserID,
Tat_McuAuthorisasiDoctorDate,
Tat_McuAuthorisasiDoctorUserID,
Tat_McuCreated
) VALUES(
'{$v['CorporateID']}',
'{$v['CorporateName']}',
'{$v['Mgm_McuID']}',
'{$v['Mgm_McuLabel']}',
'{$v['T_OrderHeaderID']}',
'{$v['T_OrderHeaderDate']}',
'{$v['T_OrderHeaderLabNumber']}',
'{$v['M_PatientID']}',
'{$v['M_PatientName']}',
'{$v['T_BahanID']}',
'{$v['T_BahanName']}',
'{$v['checkIn']}',
'{$v['checkInUserID']}',
'{$v['checkOut']}',
'{$v['checkOutUserID']}',
'{$v['resultDate']}',
'{$v['resultUserID']}',
'{$v['authorisasiDate']}',
'{$v['authorisasiUserID']}',
'{$v['Mcu_ResumeValidationDateTime']}',
'{$v['Mcu_ResumeValidationUserID']}',
'{$v['Mcu_ResumeValidationDateTime']}',
'{$v['Mcu_ResumeValidationUserID']}',
NOW()
)";
$qry_insert = $this->db->query($sql_insert);
// echo $this->db->last_query();
// exit;
if (!$qry_insert) {
$this->db->trans_rollback();
$this->sys_error_db("insert tat mcu error", $this->db);
exit;
}
} else {
$sql_insert = "UPDATE tat_mcu SET
Tat_McuAuthorisasiDate = '{$v['authorisasiDate']}',
Tat_McuAuthorisasiUserID = '{$v['authorisasiUserID']}',
Tat_McuLastUpdated = NOW()
WHERE Tat_McuT_OrderHeaderID = '{$v['T_OrderHeaderID']}' AND Tat_McuT_BahanID = '{$v['T_BahanID']}'";
$qry_insert = $this->db->query($sql_insert);
// echo $this->db->last_query();
// exit;
if (!$qry_insert) {
$this->db->trans_rollback();
$this->sys_error_db("update tat mcu error", $this->db);
exit;
}
}
}
$this->db->trans_commit();
echo json_encode(
array(
'status' => 'OK',
'message' => 'Berhasil Insert Data'
)
);
} else {
echo json_encode(
array(
'status' => 'OK',
'message' => 'Data Tidak Ada',
'data' => $mergeDataArray
)
);
}
}
function insert_tat_mcu(
$corporateID,
$corporateName,
$mgmmcuID,
$mgmmcuLabel,
$orderheaderID,
$orderheaderDate,
$patientID,
$patientName,
$bahanID,
$bahanName,
$checkIn,
$checkInUserID,
$checkOut,
$checkOutUserID,
$resultDate,
$resultUserID,
$authorisasiDate,
$authorisasiUserID,
$resumeValidationKSDate,
$resumeValidationKSUserID,
$resumeValidationDoctorDate,
$resumeValidationDoctorUserID
) {
$this->db->trans_begin();
// $sql_cek = "SELECT Tat_McuID,
// Tat_McuCorporateID,
// Tat_McuT_OrderHeaderID
// FROM tat_mcu
// WHERE Tat_McuCorporateID = ?
// AND Tat_McuT_OrderHeaderID = ?";
// $qry_cek = $this->db->query($sql_cek, [
// $corporateID,
// $orderheaderID
// ]);
// if (!$qry_cek) {
// $this->sys_error_db("select tat mcu error", $this->db);
// exit;
// }
// $rows_cek = $qry_cek->result_array();
// foreach ($rows_cek as $k => $v) {
// }
$sql_delete = "DELETE FROM tat_mcu WHERE Tat_McuCorporateID = ?
AND Tat_McuT_OrderHeaderID = ?";
$qry_delete = $this->db->query($sql_delete, [
$corporateID,
$orderheaderID
]);
if (!$qry_delete) {
$this->db->trans_rollback();
$this->sys_error_db("delete tat mcu error", $this->db);
exit;
}
$sql_insert = "INSERT INTO tat_mcu(
Tat_McuCorporateID,
Tat_McuCorporateName,
Tat_McuMgm_McuID,
Tat_McuMgm_McuLabel,
Tat_McuT_OrderHeaderID,
Tat_McuT_OrderHeaderDate,
Tat_McuM_PatientID,
Tat_McuM_PatientName,
Tat_McuT_BahanID,
Tat_McuT_BahanName,
Tat_McuCheckInDate,
Tat_McuCheckInUserID,
Tat_McuCheckOutDate,
Tat_McuCheckOutUserID,
Tat_McuResultDate,
Tat_McuResultUserID,
Tat_McuAuthorisasiDate,
Tat_McuAuthorisasiUserID,
Tat_McuKesimpulandanSaranDate,
Tat_McuKesimpulandanSaranUserID,
Tat_McuAuthorisasiDoctorDate,
Tat_McuAuthorisasiDoctorUserID,
Tat_McuCreated
) VALUES(
'{$corporateID}',
'{$corporateName}',
'{$mgmmcuID}',
'{$mgmmcuLabel}',
'{$orderheaderID}',
'{$orderheaderDate}',
'{$patientID}',
'{$patientName}',
'{$bahanID}',
'{$bahanName}',
'{$checkIn}',
'{$checkInUserID}',
'{$checkOut}',
'{$checkOutUserID}',
'{$resultDate}',
'{$resultUserID}',
'{$authorisasiDate}',
'{$authorisasiUserID}',
'{$resumeValidationKSDate}',
'{$resumeValidationKSUserID}',
'{$resumeValidationDoctorDate}',
'{$resumeValidationDoctorUserID}',
NOW()
)";
$qry_insert = $this->db->query($sql_insert);
// echo $this->db->last_query();
// exit;
if (!$qry_insert) {
$this->db->trans_rollback();
$this->sys_error_db("insert tat mcu error", $this->db);
exit;
}
$this->db->trans_commit();
echo json_encode(
array(
'status' => 'OK',
'message' => 'Berhasil Insert Data'
)
);
}
}