Files
BE_CPONE/application/controllers/mockup/status_timeline/Patientstatusday.php
2026-04-27 10:31:17 +07:00

1435 lines
60 KiB
PHP

<?php
class Patientstatusday extends MY_Controller
{
var $db_onedev;
public function index()
{
echo "Patientstatusday API";
}
public function __construct()
{
parent::__construct();
$this->db_onedev = $this->load->database("onedev", true);
}
function search()
{
$prm = $this->sys_input;
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$search = $prm["search"];
$corporateid = isset($prm["corporateid"]) ? $prm["corporateid"] : 0;
if (!isset($prm['current_page']))
$prm['current_page'] = 1;
$number_limit = 15;
$number_offset = ($prm['current_page'] - 1) * $number_limit;
$sql_where = "";
if ($search != "") {
$prm['current_page'] = 1;
$sql_where = " AND ( T_OrderHeaderLabNumber like '%{$search}%' OR M_PatientName like '%{$search}%' ) ";
}
$filter_company = "";
if ($corporateid != 0) {
$filter_company = " AND T_OrderHeaderCorporateID = {$corporateid}";
}
$sql = " SELECT COUNT(*) as total FROM (
SELECT '' as xno,
T_OrderHeaderID as xid,
DATE_FORMAT(T_OrderHeaderDate,'%d-%m-%Y') as order_date,
T_OrderHeaderLabNumber as no_reg,
T_OrderHeaderOldLabNumber as no_reg_old,
CONCAT(M_TitleName,' ',M_PatientName) as patient_name,
CorporateName as corporate_name,
Mgm_McuLabel,
'' as details_order,
'' as details_sampling,
'' as details_verifications,
'' as details_process,
'' as details_result_verification,
'' as details_result_validation,
'' as details_print
FROM t_orderheader
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
JOIN corporate ON T_OrderHeaderCorporateID = CorporateID $filter_company
JOIN mgm_mcu ON Mgm_McuCorporateID = CorporateID
LEFT JOIN m_title ON M_PatientM_TitleID = M_TitleID
WHERE
T_OrderHeaderIsActive = 'Y' AND DATE(T_OrderHeaderDate) = '{$prm['xdate']}' $sql_where
GROUP BY T_OrderHeaderID
UNION
SELECT '' as xno,
T_OrderHeaderID as xid,
DATE_FORMAT(T_OrderHeaderDate,'%d-%m-%Y') as order_date,
T_OrderHeaderLabNumber as no_reg,
T_OrderHeaderOldLabNumber as no_reg_old,
CONCAT(M_TitleName,' ',M_PatientName) as patient_name,
CorporateName as corporate_name,
Mgm_McuLabel,
'' as details_order,
'' as details_sampling,
'' as details_verifications,
'' as details_process,
'' as details_result_verification,
'' as details_result_validation,
'' as details_print
FROM t_orderheader
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
JOIN corporate ON T_OrderHeaderCorporateID = CorporateID $filter_company
JOIN mgm_mcu ON Mgm_McuCorporateID = CorporateID
LEFT JOIN m_title ON M_PatientM_TitleID = M_TitleID
WHERE
T_OrderHeaderIsActive = 'Y' AND DATE(T_OrderHeaderDate) = '{$prm['xdate']}' $sql_where
GROUP BY T_OrderHeaderID
)x
";
// echo $sql;
// exit;
$query = $this->db_onedev->query($sql);
$tot_count = 0;
$tot_page = 0;
if ($query) {
$tot_count = $query->result_array()[0]["total"];
$tot_page = ceil($tot_count / $number_limit);
} else {
$this->sys_error_db("t_samplestorageout count", $this->db_onedev);
exit;
}
$sql = "
SELECT * FROM (
SELECT '' as xno,
T_OrderHeaderID as xid,
DATE_FORMAT(T_OrderHeaderDate,'%d-%m-%Y %H:%i') as order_date,
T_OrderHeaderLabNumber as no_reg,
T_OrderHeaderOldLabNumber as no_reg_old,
CONCAT(M_TitleName,' ',M_PatientName) as patient_name,
CorporateName as corporate_name,
Mgm_McuLabel,
'' as details_order,
'' as details_sampling,
'' as details_verifications,
'' as details_process,
'' as details_result_verification,
'' as details_result_validation,
'' as details_print
FROM t_orderheader
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
JOIN corporate ON T_OrderHeaderCorporateID = CorporateID $filter_company
JOIN mgm_mcu ON Mgm_McuCorporateID = CorporateID
LEFT JOIN m_title ON M_PatientM_TitleID = M_TitleID
WHERE
T_OrderHeaderIsActive = 'Y' AND DATE(T_OrderHeaderDate) = '{$prm['xdate']}' $sql_where
GROUP BY T_OrderHeaderID
UNION
SELECT '' as xno,
T_OrderHeaderID as xid,
DATE_FORMAT(T_OrderHeaderDate,'%d-%m-%Y %H:%i') as order_date,
T_OrderHeaderLabNumber as no_reg,
T_OrderHeaderOldLabNumber as no_reg_old,
CONCAT(M_TitleName,' ',M_PatientName) as patient_name,
CorporateName as corporate_name,
Mgm_McuLabel,
'' as details_order,
'' as details_sampling,
'' as details_verifications,
'' as details_process,
'' as details_result_verification,
'' as details_result_validation,
'' as details_print
FROM t_orderheader
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
JOIN corporate ON T_OrderHeaderCorporateID = CorporateID $filter_company
JOIN mgm_mcu ON Mgm_McuCorporateID = CorporateID
LEFT JOIN m_title ON M_PatientM_TitleID = M_TitleID
WHERE
T_OrderHeaderIsActive = 'Y' AND DATE(T_OrderHeaderDate) = '{$prm['xdate']}' $sql_where
GROUP BY T_OrderHeaderID
)x
ORDER BY xid ASC
limit $number_limit offset $number_offset
";
// echo $sql;
// exit;
$query = $this->db_onedev->query($sql);
if ($query) {
$rows = $query->result_array();
} else {
$this->sys_error_db("select order error", $this->db_onedev);
exit;
}
if ($rows) {
$no = 1;
foreach ($rows as $k => $v) {
$xno = ($k + 1) + $number_offset;
$rows[$k]['xno'] = $xno;
//print_r($v);
$sql = "SELECT GROUP_CONCAT(DISTINCT T_OrderDetailID SEPARATOR ',') as ids,
Group_ResultName as group_name,
Group_ResultID as group_id,
Group_ResultFlagNonLab as flag_nonlab,
'' as status
FROM t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
Group_ResultFlagPerTest = 'N'
WHERE
T_OrderDetailT_OrderHeaderID = {$v['xid']} AND T_OrderDetailIsActive = 'Y'
GROUP BY Group_ResultID
UNION
SELECT T_OrderDetailID as xid,
T_TestName as group_name,
Group_ResultID as group_id,
Group_ResultFlagNonLab as flag_nonlab,
'' as status
FROM t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
Group_ResultFlagPerTest = 'Y'
WHERE
T_OrderDetailT_OrderHeaderID = {$v['xid']} AND T_OrderDetailIsActive = 'Y'
GROUP BY T_OrderDetailT_TestID;
";
//echo $sql;
$details = $this->db_onedev->query($sql)->result_array();
$details_order = $details;
foreach ($details_order as $i => $j) {
$details_order[$i]['status'] = 'Y';
// $sql = "SELECT fn_patient_status_order({$v['xid']}) as status";
// $query = $this->db_onedev->query($sql)->row();
// //echo $this->db_onedev->last_query();
// if ($query) {
// $details_order[$i]['status'] = $query->status;
// }
// $details_sampling[$i]['status'] = $status;
}
$rows[$k]['details_order'] = $details_order;
$details_sampling = $details;
foreach ($details_sampling as $i => $j) {
$details_sampling[$i]['status'] = 'N';
// $status_fo_ver = $details_order[0]['status'];
// if ($status_fo_ver == 'Y') {
$count_all = 0;
$count_done = 0;
if ($j['flag_nonlab'] == 'N') {
//$sql = "SELECT fn_patient_status_get_sampling_lab({$v['xid']},'{$j['ids']}') as status";
$sql = "SELECT COUNT(*) as xcount
FROM (
SELECT T_OrderSampleID
FROM t_ordersample
JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderSampleT_OrderHeaderID
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
JOIN t_barcodelab ON T_BarcodeLabT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
T_OrderSampleT_BarcodeLabID = T_BarcodeLabID
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
Group_ResultFlagPerTest = 'N' AND Group_ResultID = {$j['group_id']}
WHERE
T_OrderSampleT_OrderHeaderID = {$v['xid']}
GROUP BY T_OrderSampleID
) x_all";
$count_all = $this->db_onedev->query($sql)->row()->xcount;
$sql = "SELECT COUNT(*) as xcount
FROM (
SELECT T_OrderSampleID
FROM t_ordersample
JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderSampleT_OrderHeaderID
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
JOIN t_barcodelab ON T_BarcodeLabT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
T_OrderSampleT_BarcodeLabID = T_BarcodeLabID
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
Group_ResultFlagPerTest = 'N' AND Group_ResultID = {$j['group_id']}
WHERE
T_OrderSampleT_OrderHeaderID = {$v['xid']} AND T_OrderSampleReceive = 'Y'
GROUP BY T_OrderSampleID
) x_done";
$count_done = $this->db_onedev->query($sql)->row()->xcount;
} else {
//$sql = "SELECT fn_patient_status_get_sampling_non_lab({$v['xid']},'{$j['ids']}') as status";
$sql = "SELECT COUNT(*) as xcount
FROM (
SELECT T_OrderDetailID
FROM t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
Group_ResultFlagPerTest = 'N' AND Group_ResultID = {$j['group_id']}
WHERE
T_OrderDetailT_OrderHeaderID = {$v['xid']}
GROUP BY T_OrderDetailID
) x_all";
$count_all = $this->db_onedev->query($sql)->row()->xcount;
$sql = "SELECT COUNT(*) as xcount
FROM (
SELECT T_OrderDetailID
FROM t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
Group_ResultFlagPerTest = 'N' AND Group_ResultID = {$j['group_id']}
JOIN t_samplingso ON T_OrderDetailT_OrderHeaderID = T_SamplingSoT_OrderHeaderID AND
T_SamplingSoT_TestID = T_OrderDetailT_TestID AND T_SamplingSoDoneDate IS NOT NULL
WHERE
T_OrderDetailT_OrderHeaderID = {$v['xid']}
GROUP BY T_OrderDetailID
) x_done";
$count_done = $this->db_onedev->query($sql)->row()->xcount;
}
//$query = $this->db_onedev->query($sql)->row();
//echo $this->db_onedev->last_query();
$status = 'N';
if (intval($count_all) == intval($count_done))
$status = 'Y';
else if (intval($count_all) > intval($count_done) && intval($count_done) > 0)
$status = 'P';
$details_sampling[$i]['status'] = $status;
// } else {
// $details_sampling[$i]['status'] = 'N';
// }
}
$rows[$k]['details_sampling'] = $details_sampling;
$details_verifications = $details;
foreach ($details_verifications as $i => $j) {
$details_verifications[$i]['status'] = 'N';
// $status_fo_ver = $details_order[0]['status'];
// if ($status_fo_ver == 'Y') {
if ($j['flag_nonlab'] == 'N') {
//$sql = "SELECT fn_patient_status_get_sampling_lab({$v['xid']},'{$j['ids']}') as status";
$sql = "SELECT COUNT(*) as xcount
FROM (
SELECT T_OrderSampleID
FROM t_ordersample
JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderSampleT_OrderHeaderID
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
JOIN t_barcodelab ON T_BarcodeLabT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
T_OrderSampleT_BarcodeLabID = T_BarcodeLabID
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
Group_ResultFlagPerTest = 'N' AND Group_ResultID = {$j['group_id']}
WHERE
T_OrderSampleT_OrderHeaderID = {$v['xid']}
GROUP BY T_OrderSampleID
) x_all";
$count_all = $this->db_onedev->query($sql)->row()->xcount;
$sql = "SELECT COUNT(*) as xcount
FROM (
SELECT T_OrderSampleID
FROM t_ordersample
JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderSampleT_OrderHeaderID
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
JOIN t_barcodelab ON T_BarcodeLabT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
T_OrderSampleT_BarcodeLabID = T_BarcodeLabID
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
Group_ResultFlagPerTest = 'N' AND Group_ResultID = {$j['group_id']}
WHERE
T_OrderSampleT_OrderHeaderID = {$v['xid']}
GROUP BY T_OrderSampleID
) x_done";
$count_done = $this->db_onedev->query($sql)->row()->xcount;
} else {
//$sql = "SELECT fn_patient_status_get_sampling_non_lab({$v['xid']},'{$j['ids']}') as status";
$sql = "SELECT COUNT(*) as xcount
FROM (
SELECT T_OrderDetailID
FROM t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
Group_ResultFlagPerTest = 'N' AND Group_ResultID = {$j['group_id']}
WHERE
T_OrderDetailT_OrderHeaderID = {$v['xid']}
GROUP BY T_OrderDetailID
) x_all";
$count_all = $this->db_onedev->query($sql)->row()->xcount;
$sql = "SELECT COUNT(*) as xcount
FROM (
SELECT T_OrderDetailID
FROM t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
Group_ResultFlagPerTest = 'N' AND Group_ResultID = {$j['group_id']}
JOIN t_samplingso ON T_OrderDetailT_OrderHeaderID = T_SamplingSoT_OrderHeaderID AND
T_SamplingSoT_TestID = T_OrderDetailT_TestID
WHERE
T_OrderDetailT_OrderHeaderID = {$v['xid']}
GROUP BY T_OrderDetailID
) x_done";
$count_done = $this->db_onedev->query($sql)->row()->xcount;
}
//$query = $this->db_onedev->query($sql)->row();
//echo $this->db_onedev->last_query();
$status = 'N';
if (intval($count_all) == intval($count_done))
$status = 'Y';
else if (intval($count_all) > intval($count_done) && intval($count_done) > 0)
$status = 'P';
$details_verifications[$i]['status'] = $status;
// } else {
// $details_verifications[$i]['status'] = 'N';
// }
}
$rows[$k]['details_verifications'] = $details_verifications;
$details_process = $details;
foreach ($details_process as $i => $j) {
$details_process[$i]['status'] = 'N';
// $status_fo_ver = $details_order[0]['status'];
// if ($status_fo_ver == 'Y') {
if ($j['flag_nonlab'] == 'N') {
//$sql = "SELECT fn_patient_status_get_sampling_lab({$v['xid']},'{$j['ids']}') as status";
$sql = "SELECT COUNT(*) as xcount
FROM (
SELECT T_OrderSampleID
FROM t_ordersample
JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderSampleT_OrderHeaderID
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
JOIN t_barcodelab ON T_BarcodeLabT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
T_OrderSampleT_BarcodeLabID = T_BarcodeLabID
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
Group_ResultFlagPerTest = 'N' AND Group_ResultID = {$j['group_id']}
WHERE
T_OrderSampleT_OrderHeaderID = {$v['xid']}
GROUP BY T_OrderSampleID
) x_all";
$count_all = $this->db_onedev->query($sql)->row()->xcount;
$sql = "SELECT COUNT(*) as xcount
FROM (
SELECT T_OrderSampleID
FROM t_ordersample
JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderSampleT_OrderHeaderID
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
JOIN t_barcodelab ON T_BarcodeLabT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
T_OrderSampleT_BarcodeLabID = T_BarcodeLabID
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
Group_ResultFlagPerTest = 'N' AND Group_ResultID = {$j['group_id']}
WHERE
T_OrderSampleT_OrderHeaderID = {$v['xid']}
GROUP BY T_OrderSampleID
) x_done";
$count_done = $this->db_onedev->query($sql);
} else {
//$sql = "SELECT fn_patient_status_get_sampling_non_lab({$v['xid']},'{$j['ids']}') as status";
$sql = "SELECT COUNT(*) as xcount
FROM (
SELECT T_OrderDetailID
FROM t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
Group_ResultFlagPerTest = 'N' AND Group_ResultID = {$j['group_id']}
WHERE
T_OrderDetailT_OrderHeaderID = {$v['xid']}
GROUP BY T_OrderDetailID
) x_all";
$count_all = $this->db_onedev->query($sql)->row()->xcount;
$sql = "SELECT COUNT(*) as xcount
FROM (
SELECT T_OrderDetailID
FROM t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
Group_ResultFlagPerTest = 'N' AND Group_ResultID = {$j['group_id']}
JOIN t_samplingso ON T_OrderDetailT_OrderHeaderID = T_SamplingSoT_OrderHeaderID AND
T_SamplingSoT_TestID = T_OrderDetailT_TestID
WHERE
T_OrderDetailT_OrderHeaderID = {$v['xid']}
GROUP BY T_OrderDetailID
) x_done";
$count_done = $this->db_onedev->query($sql)->row()->xcount;
}
//$query = $this->db_onedev->query($sql)->row();
//echo $this->db_onedev->last_query();
$status = 'N';
if (intval($count_all) == intval($count_done))
$status = 'Y';
else if (intval($count_all) > intval($count_done) && intval($count_done) > 0)
$status = 'P';
$details_process[$i]['status'] = $status;
// } else {
// $details_process[$i]['status'] = 'N';
// }
}
$rows[$k]['details_process'] = $details_process;
$details_result_verification = $details;
foreach ($details_result_verification as $i => $j) {
$details_result_verification[$i]['status'] = 'N';
// $status_fo_ver = $details_order[0]['status'];
// if ($status_fo_ver == 'Y') {
$sql = "SELECT COUNT(*) as xcount
FROM (
SELECT T_OrderDetailID
FROM t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
Group_ResultFlagPerTest = 'N' AND Group_ResultID = {$j['group_id']}
WHERE
T_OrderDetailT_OrderHeaderID = {$v['xid']}
GROUP BY T_OrderDetailID
) x_all";
$count_all = $this->db_onedev->query($sql)->row()->xcount;
$sql = "SELECT COUNT(*) as xcount
FROM (
SELECT T_OrderDetailID
FROM t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
Group_ResultFlagPerTest = 'N' AND Group_ResultID = {$j['group_id']}
WHERE
T_OrderDetailT_OrderHeaderID = {$v['xid']} AND T_OrderDetailVerification = 'Y'
GROUP BY T_OrderDetailID
) x_done";
$count_done = $this->db_onedev->query($sql)->row()->xcount;
$status = 'N';
if (intval($count_all) == intval($count_done))
$status = 'Y';
else if (intval($count_all) > intval($count_done) && intval($count_done) > 0)
$status = 'P';
$details_result_verification[$i]['status'] = $status;
// } else {
// $details_result_verification[$i]['status'] = 'N';
// }
}
$rows[$k]['details_result_verification'] = $details_result_verification;
$details_result_validation = $details;
foreach ($details_result_validation as $i => $j) {
$details_result_validation[$i]['status'] = 'N';
// $status_fo_ver = $details_order[0]['status'];
// if ($status_fo_ver == 'Y') {
$sql = "SELECT COUNT(*) as xcount
FROM (
SELECT T_OrderDetailID
FROM t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
Group_ResultFlagPerTest = 'N' AND Group_ResultID = {$j['group_id']}
WHERE
T_OrderDetailT_OrderHeaderID = {$v['xid']}
GROUP BY T_OrderDetailID
) x_all";
$count_all = $this->db_onedev->query($sql)->row()->xcount;
$sql = "SELECT COUNT(*) as xcount
FROM (
SELECT T_OrderDetailID
FROM t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
Group_ResultFlagPerTest = 'N' AND Group_ResultID = {$j['group_id']}
WHERE
T_OrderDetailT_OrderHeaderID = {$v['xid']} AND T_OrderDetailValidation = 'Y'
GROUP BY T_OrderDetailID
) x_done";
$count_done = $this->db_onedev->query($sql)->row()->xcount;
$status = 'N';
if (intval($count_all) == intval($count_done))
$status = 'Y';
else if (intval($count_all) > intval($count_done) && intval($count_done) > 0)
$status = 'P';
$details_result_validation[$i]['status'] = $status;
// } else {
// $details_result_validation[$i]['status'] = 'N';
// }
}
$rows[$k]['details_result_validation'] = $details_result_validation;
$details_print = $details;
foreach ($details_print as $i => $j) {
$details_print[$i]['status'] = 'N';
// $status_fo_ver = $details_order[0]['status'];
// if ($status_fo_ver == 'Y') {
$sql = "SELECT COUNT(*) as xcount
FROM (
SELECT T_OrderDetailID
FROM t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
Group_ResultFlagPerTest = 'N' AND Group_ResultID = {$j['group_id']}
WHERE
T_OrderDetailT_OrderHeaderID = {$v['xid']}
GROUP BY T_OrderDetailID
) x_all";
$count_all = $this->db_onedev->query($sql)->row()->xcount;
$sql = "SELECT COUNT(*) as xcount
FROM (
SELECT T_OrderDetailID
FROM t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
Group_ResultFlagPerTest = 'N' AND Group_ResultID = {$j['group_id']}
WHERE
T_OrderDetailT_OrderHeaderID = {$v['xid']} AND T_OrderDetailPrintCount > 0
GROUP BY T_OrderDetailID
) x_done";
$count_done = $this->db_onedev->query($sql)->row()->xcount;
$status = 'N';
if (intval($count_all) == intval($count_done))
$status = 'Y';
else if (intval($count_all) > intval($count_done) && intval($count_done) > 0)
$status = 'P';
$details_print[$i]['status'] = $status;
// } else {
// $details_print[$i]['status'] = 'N';
// }
}
$rows[$k]['details_print'] = $details_print;
}
}
$result = array("total" => $tot_page, "total_all" => $tot_count, "records" => $rows, "sql" => '');
$this->sys_ok($result);
exit;
}
function searchcorporate()
{
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$max_rst = 12;
$tot_count = 0;
$q = [
'search' => '%'
];
if ($prm['search'] != '') {
$q['search'] = "%{$prm['search']}%";
}
// QUERY TOTAL
$sql = "SELECT count(*) as total
FROM corporate
WHERE
CorporateName like ?
AND CorporateIsActive = 'Y'";
$query = $this->db_onedev->query($sql, $q['search']);
//echo $query;
if ($query) {
$tot_count = $query->result_array()[0]["total"];
} else {
$this->sys_error_db("corporate count", $this->db_onedev);
exit;
}
$rows = array('id' => 0, 'name' => 'Semua');
$sql = "
SELECT CorporateID as id, CorporateName as name
FROM corporate
WHERE
CorporateName like ?
AND CorporateIsActive = 'Y'
ORDER BY CorporateName DESC
";
$query = $this->db_onedev->query($sql, array($q['search']));
if ($query) {
$rows = $query->result_array();
array_push($rows, array('id' => 0, 'name' => 'Semua'));
//echo $this->db_onedev->last_query();
$result = array("total" => $tot_count, "records" => $rows, "total_display" => sizeof($rows));
$this->sys_ok($result);
} else {
$this->sys_error_db("corporate rows", $this->db_onedev);
exit;
}
}
function getdata_order()
{
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$xid = $prm["xid"];
$sql = "SELECT *
FROM t_orderheader
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
JOIN corporate ON T_OrderHeaderCorporateID = CorporateID
JOIN mgm_mcu ON Mgm_McuCorporateID = CorporateID
WHERE
T_OrderHeaderID = {$xid}";
$data_header = $this->db_onedev->query($sql)->row_array();
$datas = array();
$sql = "
SELECT * FROM (
SELECT DATE_FORMAT(OrderLogCreated,'%d.%m.%Y %H:%i') as xdatetime,
orderLogType as type,
JSON_OBJECT(
'details_before',orderLogJSONBefore,
'details_after',orderLogJSONAfter
) as data,
M_UserFullName as username
FROM order_log
JOIN m_user ON OrderLogUserID = M_UserID
WHERE
OrderLogT_OrderHeaderID = {$xid}
UNION
SELECT DATE_FORMAT(F_PaymentCreated,'%d.%m.%Y %H:%i') as xdatetime,
'payment' as type,
F_PaymentID as data,
M_UserFullName as username
FROM f_payment
JOIN m_user ON F_PaymentM_UserID = M_UserID
WHERE
F_PaymentT_OrderHeaderID = {$xid}
) x ORDER BY xdatetime ASC";
//echo $sql;
$datas = $this->db_onedev->query($sql);
if ($datas) {
$datas = $datas->result_array();
} else {
$this->sys_error_db("dats erros", $this->db_onedev);
exit;
}
foreach ($datas as $k => $v) {
if ($v['type'] == 'REGISTER') {
$datas[$k]['data'] = json_decode($v['data']);
$datas[$k]['data']->details_before = json_decode($datas[$k]['data']->details_before);
$datas[$k]['data']->details_after = json_decode($datas[$k]['data']->details_after);;
// foreach ($datas[$k]['data']->details_after as $kdev => $vdev) {
// $sql = "SELECT * FROM corporate WHERE CorporateID = {$vdev->T_OrderHeaderCorporateID}";
// //echo $sql;
// $datas[$k]['data']->details_after[$kdev]->corporate_name = $this->db_onedev->query($sql)->row()->CorporateName;
// }
} else if ($v['type'] == 'payment') {
$sql = "SELECT *
FROM f_payment
WHERE
F_PaymentID = {$v['data']}";
$payment_header = $this->db_onedev->query($sql)->row_array();
$sql = "SELECT f_paymentdetail.*,
M_PaymentTypeCode,
CASE
WHEN M_PaymentTypeCode = 'CASH' THEN M_PaymentTypeName
WHEN M_PaymentTypeCode = 'DEBIT' THEN CONCAT(M_PaymentTypeName,' : ',card_bank.Nat_BankName,'+',bank.Nat_BankName,' [ ',M_BankAccountNo,' ]')
WHEN M_PaymentTypeCode = 'CREDIT' THEN CONCAT(M_PaymentTypeName,' : ',card_bank.Nat_BankName,'+',bank.Nat_BankName,' [ ',M_BankAccountNo,' ]')
WHEN M_PaymentTypeCode = 'TRANSFER' THEN CONCAT(M_PaymentTypeName,'+',bank.Nat_BankName,' [ ',M_BankAccountNo,' ]')
ELSE CONCAT(M_PaymentTypeName,' [ ',F_PaymentDetailNote,' ]')
END as name
FROM f_paymentdetail
JOIN m_paymenttype ON F_PaymentDetailM_PaymentTypeID = M_PaymentTypeID
LEFT JOIN nat_bank card_bank ON F_PaymentDetailCardNat_BankID = card_bank.Nat_BankID
LEFT JOIN m_bank_account ON F_PaymentDetailM_BankAccountID = M_BankAccountID
LEFT JOIN nat_bank bank ON M_BankAccountNat_BankID = bank.Nat_BankID
WHERE
F_PaymentDetailF_PaymentID = '{$v['data']}' AND F_PaymentDetailIsActive = 'Y'";
//echo $sql;
$payment_details = $this->db_onedev->query($sql)->result_array();
$datas[$k]['data'] = array('header' => $payment_header, 'details' => $payment_details);
} else {
$datas[$k]['data'] = json_decode($v['data']);
}
}
$result = array("header" => $data_header, "records" => $datas);
$this->sys_ok($result);
}
function getdata_sampling()
{
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$xid = $prm["xid"];
$sql = "SELECT *,'{$prm['group_name']}' as group_name
FROM t_orderheader
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
WHERE
T_OrderHeaderID = {$xid}";
$data_header = $this->db_onedev->query($sql)->row_array();
$x_status = " SampleByStepM_StatusSampleCode = 'SAMPLING.Sampling.Unsampled' OR
SampleByStepM_StatusSampleCode = 'SAMPLING.Sampling.Sampled' OR
SampleByStepM_StatusSampleCode = 'SAMPLING.Sampling.Received' ";
$x_status_so = " SampleSoByStepCode = 'SAMPLING.Sampling.Unsampled' OR
SampleSoByStepCode = 'SAMPLING.Sampling.Sampled' OR
SampleSoByStepCode = 'SAMPLING.Sampling.Received' ";
$datas = array();
$sql = "SELECT * from group_result WHERE Group_ResultID = {$prm['group_id']}";
$group_rst = $this->db_onedev->query($sql)->row_array();
// print_r($group_rst);
// exit;
if ($group_rst['Group_ResultFlagNonLab'] == 'N') {
$sql = "SELECT T_OrderSampleT_OrderHeaderID as order_id,
T_OrderSampleT_SampleTypeID as sample_id,
T_SampleTypeName as sample_name,
T_OrderSampleT_SampleStationID as station_id,
T_BarcodeLabBarcode as barcode,
T_OrderSampleSampling as sampling_status,
DATE_FORMAT(T_OrderSampleSamplingDate,'%d-%m-%Y') as sampling_date,
DATE_FORMAT(T_OrderSampleSamplingTime,'%H:%i') as sampling_time,
T_OrderSampleSamplingUserID as sampling_user_id,
sampling_user.M_UserFullName as sampling_username,
T_OrderSampleReceive as reveice_status,
DATE_FORMAT(T_OrderSampleReceiveDate,'%d-%m-%Y') as receive_date,
DATE_FORMAT(T_OrderSampleReceiveTime,'%H:%i') as receive_time,
T_OrderSampleReceiveUserID as receive_user_id,
receive_user.M_UserFullName as receive_username
FROM t_barcodelab
JOIN t_sampletype ON T_BarcodeLabT_SampleTypeID = T_SampleTypeID
LEFT JOIN t_ordersample ON T_OrderSampleT_BarcodeLabID = T_BarcodeLabID
LEFT JOIN m_user sampling_user ON T_OrderSampleSamplingUserID = sampling_user.M_UserID
LEFT JOIN m_user receive_user ON T_OrderSampleSamplingUserID = receive_user.M_UserID
WHERE
T_OrderSampleT_OrderHeaderID = {$xid}";
//echo $sql;
} else {
$sql = "SELECT T_OrderHeaderID as order_id,
T_TestID as sample_id,
T_TestName as sample_name,
IF(ISNULL(T_SamplingSoProcessDate),'N','Y') as sampling_status,
DATE_FORMAT(T_SamplingSoProcessDate,'%d-%m-%Y') as sampling_date,
DATE_FORMAT(T_SamplingSoProcessTime,'%H:%i') as sampling_time,
sampling_user.M_UserFullName as sampling_username,
IF(ISNULL(T_SamplingSoDoneDate),'N','Y') as reveice_status,
DATE_FORMAT(T_SamplingSoDoneDate,'%d-%m-%Y') as receive_date,
DATE_FORMAT(T_SamplingSoDoneTime,'%H:%i') as receive_time,
T_SamplingSoDoneUserID as receive_user_id,
receive_user.M_UserFullName as receive_username
FROM t_orderheader
JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID AND T_OrderDetailIsActive = 'Y'
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
JOIN t_sampletype ON T_TestT_SampleTypeID = T_SampleTypeID
JOIN t_bahan ON T_SampleTypeT_BahanID = T_BahanID
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultID = {$prm['group_id']}
LEFT JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = T_OrderHeaderID AND T_SamplingSoT_TestID = T_TestID AND
T_SamplingSoIsActive = 'Y'
LEFT JOIN m_user sampling_user ON T_SamplingSoProcessUserID = sampling_user.M_UserID
LEFT JOIN m_user receive_user ON T_SamplingSoDoneUserID = receive_user.M_UserID
WHERE
T_OrderHeaderID = {$xid} AND T_OrderHeaderIsActive = 'Y'
GROUP BY T_OrderDetailID";
// echo $sql;
}
$data_resume = $this->db_onedev->query($sql);
if ($data_resume) {
$data_resume = $data_resume->result_array();
} else {
$this->sys_error_db("data sampling error", $this->db_onedev);
exit;
}
$arr_datas = array();
if ($group_rst['Group_ResultFlagNonLab'] == 'N') {
$sql = "SELECT SampleByStepID,
T_BarcodeLabBarcode,
T_SampleTypeName,
SampleByStepDateTime,
SampleByStepM_StatusSampleCode,
M_UserFullName,
SampleByStepRequirementStatus,
GROUP_CONCAT(Nat_RequirementName separator ', ') as requirements,
1 as group_id,
'LAB' as group_name,
NULL xform, NULL xfilm
FROM (
SELECT SampleByStepID,
T_BarcodeLabBarcode,
T_SampleTypeName,
SampleByStepDateTime,
SampleByStepM_StatusSampleCode,
M_UserFullName,
SampleByStepRequirementStatus,
'' as Nat_RequirementName
FROM sample_by_step
JOIN t_barcodelab ON SampleByStepT_BarcodeLabID = T_BarcodeLabID
JOIN t_sampletype ON T_BarcodeLabT_SampleTypeID = T_SampleTypeID
LEFT JOIN m_user ON SampleByStepUserID = M_UserID
WHERE
SampleByStepT_OrderHeaderID = {$xid} AND
(
{$x_status}
)
) x
GROUP BY SampleByStepID";
//echo $sql;
} else {
$sql = "SELECT SampleByStepID,
T_BarcodeLabBarcode,
T_SampleTypeName,
SampleByStepDateTime,
SampleByStepM_StatusSampleCode,
M_UserFullName,
SampleByStepRequirementStatus,
GROUP_CONCAT(Nat_RequirementName separator ', ') as requirements,
Group_ResultID as group_id,
Group_ResultName as group_name,
xform, xfilm
FROM (
SELECT SampleSoByStepID SampleByStepID,
T_OrderHeaderLabNumber T_BarcodeLabBarcode,
T_TestName T_SampleTypeName ,
SampleSoByStepDateTime SampleByStepDateTime,
SampleSoByStepCode SampleByStepM_StatusSampleCode,
M_UserFullName,
SampleSoByStepRequirementStatus SampleByStepRequirementStatus,
'' as Nat_RequirementName,
Group_ResultID,
Group_ResultName,
'' as xform,
'' as xfilm
FROM sample_so_by_step
JOIN t_test ON SampleSoByStepT_TestID = T_TestID
JOIN group_resultdetail ON Group_ResultDetailT_TestID = SampleSoByStepT_TestID AND Group_ResultDetailIsActive = 'Y'
LEFT JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = SampleSoByStepT_OrderHeaderID AND T_SamplingSoT_TestID = SampleSoByStepT_TestID
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultID = {$prm['group_id']}
JOIN t_orderheader ON SampleSoByStepT_OrderHeaderID = T_OrderHeaderID
LEFT JOIN m_user ON SampleSoByStepUserID = M_UserID
WHERE
SampleSoByStepT_OrderHeaderID = {$xid} AND
(
{$x_status_so}
)
) x
GROUP BY SampleByStepID";
// echo $sql;
}
$datas = $this->db_onedev->query($sql);
if ($datas) {
$datas = $datas->result_array();
} else {
$this->sys_error_db("select sample error", $this->db_onedev);
exit;
}
foreach ($datas as $k => $v) {
$found = $this->search_exist($arr_datas, $v['SampleByStepDateTime'], $v['SampleByStepM_StatusSampleCode']);
if ($found == -1) {
$xv = array(
"datetime" => $v['SampleByStepDateTime'],
"status" => $v['SampleByStepM_StatusSampleCode'],
"user" => $v["M_UserFullName"],
"group_id" => $v["group_id"],
"details" => array(
array(
"SampleByStepID" => $v["SampleByStepID"],
"T_BarcodeLabBarcode" => $v["T_BarcodeLabBarcode"],
"T_SampleTypeName" => $v["T_SampleTypeName"],
"M_UserFullName" => $v["M_UserFullName"],
"SampleByStepRequirementStatus" => $v["SampleByStepRequirementStatus"],
"requirements" => $v["requirements"],
"group_id" => $v["group_id"],
"xform" => $v["xform"],
"xfilm" => $v["xfilm"]
)
)
);
array_push($arr_datas, $xv);
} else {
$xarr = $arr_datas[$found]['details'];
//print_r($xarr);
array_push(
$xarr,
array(
"SampleByStepID" => $v["SampleByStepID"],
"T_BarcodeLabBarcode" => $v["T_BarcodeLabBarcode"],
"T_SampleTypeName" => $v["T_SampleTypeName"],
"M_UserFullName" => $v["M_UserFullName"],
"SampleByStepRequirementStatus" => $v["SampleByStepRequirementStatus"],
"requirements" => $v["requirements"],
"group_id" => $v["group_id"],
"xform" => $v["xform"],
"xfilm" => $v["xfilm"]
)
);
$arr_datas[$found]['details'] = $xarr;
}
}
$result = array("header" => $data_header, "resume" => $data_resume, "records" => $arr_datas);
$this->sys_ok($result);
}
function getdata_result()
{
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$xid = $prm["xid"];
$sql = "SELECT *,'{$prm['group_name']}' as group_name, '{$prm['action']}' as action
FROM t_orderheader
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
WHERE
T_OrderHeaderID = {$xid}";
$data_header = $this->db_onedev->query($sql)->row_array();
$datas = array();
$sql_grup = "SELECT * from group_result WHERE Group_ResultID = {$prm['group_id']}";
$group_rst = $this->db_onedev->query($sql_grup)->row_array();
if ($group_rst['Group_ResultFlagNonLab'] == 'N') {
$sql = "
SELECT
T_OrderDetailT_TestSasCode as sascode,
T_OrderDetailResult as result,
T_OrderDetailT_TestIsResult as is_result,
T_OrderDetailT_TestIsPrice as is_price,
T_OrderDetailT_TestName as test_name,
T_OrderDetailValidation as val_status,
DATE_FORMAT(api_ResultAuthorizationDate,'%d-%m-%Y %H:%i:%s') as val_date,
api_ResultAuthorizationUser as val_username,
'lab' as val_action
FROM t_orderdetail
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultID = {$prm['group_id']}
LEFT JOIN api_result ON api_ResultT_OrderDetailID = T_OrderDetailID AND api_ResultIsActive = 'Y'
WHERE
T_OrderDetailT_OrderHeaderID = {$xid} AND T_OrderDetailIsActive = 'Y'
";
} else {
$sql = "
SELECT
T_OrderDetailT_TestSasCode as sascode,
T_OrderDetailResult as result,
T_OrderDetailT_TestIsResult as is_result,
T_OrderDetailT_TestIsPrice as is_price,
T_OrderDetailT_TestName as test_name,
T_OrderDetailValidation as val_status,
DATE_FORMAT(So_REActionLogDate,'%d-%m-%Y %H:%i:%s') as val_date,
val_user.M_UserFullName as val_username,
So_REActionLogAction as val_action
FROM t_orderdetail
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultID = {$prm['group_id']}
JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y'
JOIN so_reactionlog ON So_REActionLogSo_ResultEntryID = So_ResultEntryID AND So_REActionLogAction = 'VALIDATION'
LEFT JOIN m_user val_user ON So_REActionLogUserID = val_user.M_UserID
WHERE
T_OrderDetailT_OrderHeaderID = {$xid} AND T_OrderDetailIsActive = 'Y'
UNION
SELECT
T_OrderDetailT_TestSasCode as sascode,
T_OrderDetailResult as result,
T_OrderDetailT_TestIsResult as is_result,
T_OrderDetailT_TestIsPrice as is_price,
T_OrderDetailT_TestName as test_name,
T_OrderDetailValidation as val_status,
DATE_FORMAT(So_REActionLogDate,'%d-%m-%Y %H:%i:%s') as val_date,
val_user.M_UserFullName as val_username,
So_REActionLogAction as val_action
FROM t_orderdetail
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultID = {$prm['group_id']}
JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y'
JOIN so_reactionlog ON So_REActionLogSo_ResultEntryID = So_ResultEntryID AND So_REActionLogAction = 'UNVALIDATION'
LEFT JOIN m_user val_user ON So_REActionLogUserID = val_user.M_UserID
WHERE
T_OrderDetailT_OrderHeaderID = {$xid} AND T_OrderDetailIsActive = 'Y'
UNION
SELECT
T_OrderDetailT_TestSasCode as sascode,
T_OrderDetailResult as result,
T_OrderDetailT_TestIsResult as is_result,
T_OrderDetailT_TestIsPrice as is_price,
T_OrderDetailT_TestName as test_name,
T_OrderDetailValidation as val_status,
DATE_FORMAT(So_REActionLogDate,'%d-%m-%Y %H:%i:%s') as val_date,
val_user.M_UserFullName as val_username,
So_REActionLogAction as val_action
FROM t_orderdetail
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultID = {$prm['group_id']}
JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y'
JOIN so_reactionlog ON So_REActionLogSo_ResultEntryID = So_ResultEntryID AND So_REActionLogAction = 'UPDATE_ACT'
LEFT JOIN m_user val_user ON So_REActionLogUserID = val_user.M_UserID
WHERE
T_OrderDetailT_OrderHeaderID = {$xid} AND T_OrderDetailIsActive = 'Y'
UNION
SELECT
T_OrderDetailT_TestSasCode as sascode,
T_OrderDetailResult as result,
T_OrderDetailT_TestIsResult as is_result,
T_OrderDetailT_TestIsPrice as is_price,
T_OrderDetailT_TestName as test_name,
T_OrderDetailValidation as val_status,
DATE_FORMAT(So_REActionLogDate,'%d-%m-%Y %H:%i:%s') as val_date,
val_user.M_UserFullName as val_username,
So_REActionLogAction as val_action
FROM t_orderdetail
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND Group_ResultDetailIsActive = 'Y'
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultID = {$prm['group_id']}
JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y'
JOIN so_reactionlog ON So_REActionLogSo_ResultEntryID = So_ResultEntryID AND So_REActionLogAction = 'CX_DOCTOR'
LEFT JOIN m_user val_user ON So_REActionLogUserID = val_user.M_UserID
WHERE
T_OrderDetailT_OrderHeaderID = {$xid} AND T_OrderDetailIsActive = 'Y'
";
}
$arr_datas = $this->db_onedev->query($sql);
if ($arr_datas) {
$arr_datas = $arr_datas->result_array();
} else {
$this->sys_error_db("select result valid error", $this->db_onedev);
exit;
}
$result = array("header" => $data_header, "records" => $arr_datas);
$this->sys_ok($result);
}
function getdata_print()
{
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$xid = $prm["xid"];
$arr_datas = array('group_name' => $prm['group_name'], 'patient_name' => $prm['patient_name'], 'no_reg' => $prm['no_reg'], 'no_reg_ext' => $prm['no_reg_ext'], 'data_internal' => array(), 'data_external' => array());
$sql = "SELECT
result_processtooffice.*,
Group_ResultName as group_name,
sender.M_UserUsername as sender_name,
receiver.M_UserUsername as receiver_name,
DATE_FORMAT(Result_ProcessToOfficeSendTime,'%d-%m-%Y %H:%i') as sent_time,
DATE_FORMAT(Result_ProcessToOfficeReceiveTime,'%d-%m-%Y %H:%i') as received_time,
Result_ProcessToOfficeStatus as status,
M_DeliveryTypeCode as delivery_type,
DATE_FORMAT(T_OrderPromiseDateTime,'%d-%m-%Y %H:%i') as promise_time
FROM result_processtooffice
JOIN t_orderpromise ON Result_ProcessToOfficeT_OrderPromiseID = T_OrderPromiseID
JOIN group_result ON Result_ProcessToOfficeGroup_ResultID = Group_ResultID
JOIN m_delivery ON Result_ProcessToOfficeT_OrderDeliveryM_DeliveryID = M_DeliveryID
JOIN m_deliverytype ON Result_ProcessToOfficeT_OrderDeliveryM_DeliveryTypeID = M_DeliveryTypeID
JOIN m_user sender ON Result_ProcessToOfficeSendBy = sender.M_UserID
LEFT JOIN m_user receiver ON Result_ProcessToOfficeReceivedBy = receiver.M_UserID
WHERE
Result_ProcessToOfficeIsActive = 'Y' AND Result_ProcessToOfficeT_OrderHeaderID = {$prm['xid']}
UNION
SELECT
result_processtooffice.*,
Group_ResultName as group_name,
sender.M_UserUsername as sender_name,
receiver.M_UserUsername as receiver_name,
DATE_FORMAT(Result_ProcessToOfficeSendTime,'%d-%m-%Y %H:%i') as sent_time,
DATE_FORMAT(Result_ProcessToOfficeReceiveTime,'%d-%m-%Y %H:%i') as received_time,
Result_ProcessToOfficeStatus as status,
M_DeliveryTypeCode as delivery_type,
DATE_FORMAT(T_OrderPromiseDateTime,'%d-%m-%Y %H:%i') as promise_time
FROM result_processtooffice
JOIN t_orderpromise ON Result_ProcessToOfficeT_OrderPromiseID = T_OrderPromiseID
JOIN group_resultdetail ON Result_ProcessToOfficeGroup_ResultID = Group_ResultDetailT_TestID
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID
JOIN m_delivery ON Result_ProcessToOfficeT_OrderDeliveryM_DeliveryID = M_DeliveryID
JOIN m_deliverytype ON Result_ProcessToOfficeT_OrderDeliveryM_DeliveryTypeID = M_DeliveryTypeID
JOIN m_user sender ON Result_ProcessToOfficeSendBy = sender.M_UserID
LEFT JOIN m_user receiver ON Result_ProcessToOfficeReceivedBy = receiver.M_UserID
WHERE
Result_ProcessToOfficeIsActive = 'Y' AND Result_ProcessToOfficeT_OrderHeaderID = {$prm['xid']}";
//echo $sql;
$data_rst = $this->db_onedev->query($sql);
if ($data_rst) {
$data_rst = $data_rst->result_array();
} else {
$this->sys_error_db('result process office', $this->db_onedev);
exit;
}
if ($data_rst) {
$arr_datas['data_internal'] = $data_rst;
}
$sql = "SELECT
T_OrderDeliveryID as id,
M_DeliveryName as delivery_name,
T_OrderDeliveryDestination as destinastion,
M_DeliveryTypeCode as delivery_type,
'Y' as xshow,
'' as details
FROM t_orderdelivery
JOIN m_delivery ON T_OrderDeliveryM_DeliveryID = M_DeliveryID
JOIN m_deliverytype ON T_OrderDeliveryM_DeliveryTypeID = M_DeliveryTypeID
WHERE
T_OrderDeliveryT_OrderHeaderID = {$prm['xid']} AND T_OrderDeliveryIsActive = 'Y'";
$data_delivery = $this->db_onedev->query($sql);
if ($data_delivery) {
$data_delivery = $data_delivery->result_array();
} else {
$this->sys_error_db("select oder", $this->db_onedev);
exit;
}
if ($data_delivery) {
foreach ($data_delivery as $k => $v) {
if ($v['delivery_type'] == 'PICKUP') {
$sql = "SELECT
M_UserUsername as sender_name,
DATE_FORMAT(Result_HandOverPatientDateTime,'%d-%m-%Y %H:%i') as sent_time,
Result_HandOverPatientReceiverName as receiver_name,
IFNULL(Result_HandOverPatientReceiverHp,'') as receiver_hp,
IFNULL(Result_HandOverPatientReceiverInfo,'') as receiver_info,
DATE_FORMAT(T_OrderPromiseDateTime,'%d-%m-%Y %H:%i') as promise_time
FROM result_handoverpatient
LEFT JOIN m_user ON Result_HandOverPatientOfficer = M_UserID
JOIN t_orderpromise ON Result_HandOverPatientT_OrderPromiseID = T_OrderPromiseID
WHERE
Result_HandOverPatientT_OrderHeaderID = {$prm['xid']} AND Result_HandOverPatientIsActive = 'Y'";
$data_details = $this->db_onedev->query($sql)->result_array();
if ($data_details) {
$data_delivery[$k]['details'] = $data_details;
}
}
if ($v['delivery_type'] == 'EMAIL') {
$sql = "SELECT
M_UserUsername as sender_name,
DATE_FORMAT(Result_HandOverEmailSendDateTime,'%d-%m-%Y %H:%i') as sent_time,
DATE_FORMAT(Result_HandOverEmailReceivedDateTime,'%d-%m-%Y %H:%i') as received_time,
DATE_FORMAT(T_OrderPromiseDateTime,'%d-%m-%Y %H:%i') as promise_time,
Result_HandOverEmailStatus as status
FROM result_handoveremail
LEFT JOIN m_user ON Result_HandOverEmailOfficer = M_UserID
JOIN t_orderpromise ON Result_HandOverEmailT_OrderPromiseID = T_OrderPromiseID
WHERE
Result_HandOverEmailT_OrderHeaderID = {$prm['xid']} AND
Result_HandOverEmailIsActive = 'Y' AND
Result_HandOverEmailT_OrderDeliveryID = {$v['id']}";
$data_details = $this->db_onedev->query($sql)->result_array();
if ($data_details) {
$data_delivery[$k]['details'] = $data_details;
}
}
if ($v['delivery_type'] == 'WHATSAPP') {
$sql = "
SELECT Tx_WhatsappDetailID as xid,
Group_ResultName as group_name,
Tx_WhatsappDestination as destination,
Tx_WhatsappDetailUuid as uuid,
DATE_FORMAT(Tx_WhatsappDetailSend,'%d-%m-%Y %H:%i') as send_time,
DATE_FORMAT(Tx_WhatsappDetailReceive,'%d-%m-%Y %H:%i') as received_time,
DATE_FORMAT(Tx_WhatsappDetailRead,'%d-%m-%Y %H:%i') as read_time,
Tx_WhatsappDetailIsSend as isSend,
Tx_WhatsappDetailIsReceive as isReceive,
Tx_WhatsappDetailIsRead as isRead
FROM tx_whatsappdetail
JOIN tx_whatsapp ON Tx_WhatsappDetailTx_WhatsappID = Tx_WhatsappID AND Tx_WhatsappT_OrderHeaderID = {$prm['xid']}
JOIN group_result ON Tx_WhatsappGroup_ResultID = Group_ResultID
WHERE
Tx_WhatsappIsActive = 'Y'
UNION
SELECT Tx_WhatsappDetailID as xid,
Group_ResultName as group_name,
Tx_WhatsappDestination as destination,
Tx_WhatsappDetailUuid as uuid,
DATE_FORMAT(Tx_WhatsappDetailSend,'%d-%m-%Y %H:%i') as send_time,
DATE_FORMAT(Tx_WhatsappDetailReceive,'%d-%m-%Y %H:%i') as received_time,
DATE_FORMAT(Tx_WhatsappDetailRead,'%d-%m-%Y %H:%i') as read_time,
Tx_WhatsappDetailIsSend as isSend,
Tx_WhatsappDetailIsReceive as isReceive,
Tx_WhatsappDetailIsRead as isRead
FROM tx_whatsappdetail
JOIN tx_whatsapp ON Tx_WhatsappDetailTx_WhatsappID = Tx_WhatsappID AND Tx_WhatsappT_OrderHeaderID = {$prm['xid']}
JOIN group_resultdetail ON Tx_WhatsappGroup_ResultID = Group_ResultDetailT_TestID
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID
WHERE
Tx_WhatsappIsActive = 'Y'
";
//echo $sql;
$data_details = $this->db_onedev->query($sql)->result_array();
if ($data_details) {
$data_delivery[$k]['details'] = $data_details;
}
}
if ($v['delivery_type'] == 'ADDRESS') {
$sql = "
SELECT * FROM (
SELECT CONCAT('dibuat spk : ',Result_CourierSPKNumbering) as status,
DATE_FORMAT(Result_CourierDetailStepByStepLastUpdated,'%d.%m.%Y %H:%i') as xtime,
M_UserUsername as username,
'' as xperson,
'' as xnote,
Result_CourierSPKDetailID as xid,
Result_CourierDetailStepByStepID as stepid
FROM result_courierspk_detail_step_by_step
JOIN result_courierspk_detail ON Result_CourierDetailStepByStepResult_CourierSPKDetailID = Result_CourierSPKDetailID
JOIN result_courierspk ON Result_CourierSPKDetailResult_CourierSPKID = Result_CourierSPKID
JOIN m_user ON Result_CourierDetailStepByStepUserID = M_UserID
WHERE
Result_CourierSPKDetailT_OrderDeliveryID = {$v['id']} AND
Result_CourierDetailStepByStepStatus = 'N'
UNION
SELECT CONCAT('dikonfirmasi spv : ',Result_CourierSPKNumbering) as status,
DATE_FORMAT(Result_CourierDetailStepByStepLastUpdated,'%d.%m.%Y %H:%i') as xtime,
M_UserUsername as username,
'' as xperson,
'' as xnote,
Result_CourierSPKDetailID as xid,
Result_CourierDetailStepByStepID as stepid
FROM result_courierspk_detail_step_by_step
JOIN result_courierspk_detail ON Result_CourierDetailStepByStepResult_CourierSPKDetailID = Result_CourierSPKDetailID
JOIN result_courierspk ON Result_CourierSPKDetailResult_CourierSPKID = Result_CourierSPKID
JOIN m_user ON Result_CourierDetailStepByStepUserID = M_UserID
WHERE
Result_CourierSPKDetailT_OrderDeliveryID = {$v['id']} AND
Result_CourierDetailStepByStepStatus = 'O'
UNION
SELECT 'dikonfirmasi spv' as status,
DATE_FORMAT(Result_CourierDetailStepByStepLastUpdated,'%d.%m.%Y %H%i') as xtime,
M_UserUsername as username,
'' as xperson,
'' as xnote,
Result_CourierSPKDetailID as xid,
Result_CourierDetailStepByStepID as stepid
FROM result_courierspk_detail_step_by_step
JOIN result_courierspk_detail ON Result_CourierDetailStepByStepResult_CourierSPKDetailID = Result_CourierSPKDetailID
JOIN result_courierspk ON Result_CourierSPKDetailResult_CourierSPKID = Result_CourierSPKID
JOIN m_user ON Result_CourierDetailStepByStepUserID = M_UserID
WHERE
Result_CourierSPKDetailT_OrderDeliveryID = {$v['id']} AND
Result_CourierDetailStepByStepStatus = 'X'
UNION
SELECT CONCAT('diserahkan ke kurir : ',Result_CourierSPKNumbering) as status,
DATE_FORMAT(Result_CourierDetailStepByStepLastUpdated,'%d.%m.%Y %H:%i') as xtime,
M_UserUsername as username,
'' as xperson,
'' as xnote,
Result_CourierSPKDetailID as xid,
Result_CourierDetailStepByStepID as stepid
FROM result_courierspk_detail_step_by_step
JOIN result_courierspk_detail ON Result_CourierDetailStepByStepResult_CourierSPKDetailID = Result_CourierSPKDetailID
JOIN result_courierspk ON Result_CourierSPKDetailResult_CourierSPKID = Result_CourierSPKID
JOIN m_user ON Result_CourierDetailStepByStepUserID = M_UserID
WHERE
Result_CourierSPKDetailT_OrderDeliveryID = {$v['id']} AND
Result_CourierDetailStepByStepStatus = 'S'
UNION
SELECT CONCAT('selesai : ',Result_CourierSPKNumbering) as status,
DATE_FORMAT(Result_CourierDetailStepByStepLastUpdated,'%d.%m.%Y %H:%i') as xtime,
M_UserUsername as username,
Result_CourierComingHomeDetailsReceiver as xperson,
UPPER(M_CourierStatusReceiveName) as xnote,
Result_CourierSPKDetailID as xid,
Result_CourierDetailStepByStepID as stepid
FROM result_courierspk_detail_step_by_step
JOIN result_courierspk_detail ON Result_CourierDetailStepByStepResult_CourierSPKDetailID = Result_CourierSPKDetailID
JOIN result_courierspk ON Result_CourierSPKDetailResult_CourierSPKID = Result_CourierSPKID
JOIN result_couriercominghome_details ON Result_CourierComingHomeDetailsResult_CourierSPKDetailID = Result_CourierSPKDetailID
JOIN m_user ON Result_CourierDetailStepByStepUserID = M_UserID
JOIN m_courierstatusreceive ON Result_CourierComingHomeDetailsM_CourierStatusReceiveID = M_CourierStatusReceiveID
WHERE
Result_CourierSPKDetailT_OrderDeliveryID = {$v['id']} AND
Result_CourierDetailStepByStepStatus = 'D'
) x
GROUP BY xid,status
ORDER BY stepid ASC
";
//echo $sql;
$data_details = $this->db_onedev->query($sql)->result_array();
if ($data_details) {
$data_delivery[$k]['details'] = $data_details;
}
}
}
}
$arr_datas['data_external'] = $data_delivery;
$result = $arr_datas;
$this->sys_ok($result);
}
function search_exist($datas, $xtime, $status)
{
$rtn = -1;
foreach ($datas as $k => $v) {
if ($v['datetime'] == $xtime && $v['status'] == $status) {
$rtn = $k;
}
}
return $rtn;
}
}