935 lines
34 KiB
PHP
935 lines
34 KiB
PHP
<?php
|
|
class Mgmmcu extends MY_Controller
|
|
{
|
|
var $base_url;
|
|
function __construct()
|
|
{
|
|
parent::__construct();
|
|
$this->base_url = "/one-api/etl/mgmmcu";
|
|
$this->db->query("use one_etl");
|
|
}
|
|
|
|
//me non active kan yang existing
|
|
function non_active_exist($orderHeaderID, $mgmMcuID, $type)
|
|
{
|
|
$sql = "UPDATE mgm_header SET Mgm_HeaderIsActive = 'N' WHERE Mgm_HeaderType = ? AND Mgm_HeaderMgm_McuID = ? AND Mgm_HeaderT_OrderHeaderID = ?";
|
|
$qry = $this->db->query($sql, [$type, $mgmMcuID, $orderHeaderID]);
|
|
//echo $this->db->last_query();
|
|
$sql = "UPDATE mgm_detail
|
|
JOIN mgm_header ON Mgm_DetailMgm_HeaderID = Mgm_HeaderID AND
|
|
Mgm_HeaderMgm_McuID = ? AND
|
|
Mgm_HeaderT_OrderHeaderID = ? AND
|
|
Mgm_HeaderIsActive = 'N'
|
|
SET Mgm_DetailIsActive = 'N'
|
|
WHERE
|
|
Mgm_DetailIsActive = 'Y'";
|
|
$qry = $this->db->query($sql, [$mgmMcuID, $orderHeaderID]);
|
|
//echo $this->db->last_query();
|
|
if (!$qry) {
|
|
echo json_encode([
|
|
"status" => "ERR",
|
|
"message" => "Error is active N | " . $this->db->error()["message"]
|
|
]);
|
|
exit;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
function lab_kelainan_xold($orderHeaderID, $mgmMcuID)
|
|
{
|
|
$this->non_active_exist($orderHeaderID, $mgmMcuID, 'L');
|
|
$sql = "select
|
|
T_OrderHeaderID,T_OrderHeaderLabNumber,
|
|
T_TestName, T_OrderDetailResult, T_OrderDetailNat_MethodeID,
|
|
T_OrderDetailNat_MethodeID, T_OrderDetailNat_MethodeName,
|
|
T_OrderDetailMinValue, T_OrderDetailMaxValue, T_OrderDetailMinValueInclusive,
|
|
T_OrderDetailMaxValueInclusive,
|
|
Mcu_SummaryLabValue,
|
|
Mcu_SummaryLabNat_MethodeID,
|
|
Mcu_SummaryLabWithMethode,
|
|
Mcu_SummaryLabType,
|
|
Mcu_SummaryLabIsNormalValue,
|
|
Mcu_KelainanID, Mcu_KelainanName, Mcu_KelainanClasification,
|
|
Nat_TestCode,
|
|
mcu_kelainangroup.*
|
|
from t_orderdetail
|
|
join t_orderheader on T_OrderHeaderID = ?
|
|
and T_OrderHeaderID = T_OrderDetailT_OrderHeaderID
|
|
and T_OrderDetailIsActive = 'Y'
|
|
join t_test
|
|
on T_OrderDetailT_TestID = T_TestID
|
|
join nat_test ON T_TestNat_TestID = Nat_TestID
|
|
join mcu_summarylab on T_TestNat_TestID = Mcu_SummaryLabNat_TestID AND Mcu_SummaryLabIsActive = 'Y'
|
|
join mcu_kelainan on Mcu_SummaryLabMcu_KelainanID = Mcu_KelainanID
|
|
join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID";
|
|
|
|
$qry = $this->db->query($sql, [$orderHeaderID]);
|
|
//echo $this->db->last_query();
|
|
if (!$qry) {
|
|
echo json_encode([
|
|
"status" => "ERR",
|
|
"message" => "Error get order | " . $this->db->error()["message"]
|
|
]);
|
|
exit;
|
|
}
|
|
$rows = $qry->result_array();
|
|
$results = [];
|
|
foreach ($rows as $r) {
|
|
//loop dan cari kelainan
|
|
//Nat_TestID, WithMethode, terhadap NormalValue atau AdHoc Value
|
|
//rule penentuan
|
|
// print_r($r);
|
|
$sql = "SELECT COUNT(*) as cnt, Mgm_HeaderID
|
|
FROM mgm_header
|
|
WHERE
|
|
Mgm_HeaderMgm_McuID = ? AND
|
|
Mgm_HeaderT_OrderHeaderID = ? AND
|
|
Mgm_HeaderNat_TestCode = ? AND
|
|
Mgm_HeaderType = 'L' AND
|
|
Mgm_HeaderIsActive = 'Y'";
|
|
$query = $this->db->query($sql, array($mgmMcuID, $orderHeaderID, $r['Nat_TestCode']));
|
|
//echo $this->db->last_query();
|
|
$row_header_exist = $query->row_array();
|
|
$header_id = 0;
|
|
|
|
if ($row_header_exist['cnt'] == 0) {
|
|
|
|
$data_header = array(
|
|
'Mgm_HeaderMgm_McuID' => $mgmMcuID,
|
|
'Mgm_HeaderT_OrderHeaderID' => $orderHeaderID,
|
|
'Mgm_HeaderNat_TestCode' => $r['Nat_TestCode'],
|
|
'Mgm_HeaderType' => 'L',
|
|
'Mgm_HeaderCreated' => date("Y-m-d H:i:s", time())
|
|
);
|
|
|
|
$this->db->insert('mgm_header', $data_header);
|
|
//echo $this->db->last_query();
|
|
$header_id = $this->db->insert_id();
|
|
}
|
|
|
|
$result_value = $r['T_OrderDetailResult'];
|
|
|
|
$value_comparison = 0;
|
|
//echo $r['Mcu_SummaryLabIsNormalValue'];
|
|
$kelainan = [];
|
|
$notavailable = [];
|
|
if (trim($result_value) == 'NA') {
|
|
$notavailable = $r;
|
|
} elseif ($r['Mcu_SummaryLabIsNormalValue'] == 'Y') {
|
|
if ($r['Mcu_SummaryLabType'] == '<' || $r['Mcu_SummaryLabType'] == '<=') {
|
|
$value_comparison = $r['T_OrderDetailMinValue'];
|
|
}
|
|
if ($r['Mcu_SummaryLabType'] == '>' || $r['Mcu_SummaryLabType'] == '>=') {
|
|
$value_comparison = $r['T_OrderDetailMaxValue'];
|
|
}
|
|
//echo "Y";
|
|
if ($r['Mcu_SummaryLabWithMethode'] == 'N' && $this->dynamic_comparison($result_value, $r['Mcu_SummaryLabType'], $value_comparison)) {
|
|
//echo $r['T_TestName']." : ".$r['Mcu_KelainanName'].", ";
|
|
$kelainan = $r;
|
|
$results[] = array('test' => $r['T_TestName'], 'nat_test' => $r['Nat_TestCode'], 'kelainan' => $r['Mcu_KelainanName']);
|
|
}
|
|
} else {
|
|
$value_comparison = $r['Mcu_SummaryLabValue'];
|
|
if ($r['Mcu_SummaryLabType'] == '!=' || $r['Mcu_SummaryLabType'] == '==') {
|
|
if ($this->dynamic_comparison($result_value, $r['Mcu_SummaryLabType'], $value_comparison)) {
|
|
//echo $r['T_TestName']." : ".$r['Mcu_KelainanName'].", ";
|
|
$kelainan = $r;
|
|
$results[] = array('test' => $r['T_TestName'], 'nat_test' => $r['Nat_TestCode'], 'kelainan' => $r['Mcu_KelainanName']);
|
|
}
|
|
} else {
|
|
if (is_numeric($result_value) && $this->dynamic_comparison($result_value, $r['Mcu_SummaryLabType'], $value_comparison)) {
|
|
//echo $r['T_TestName']." : ".$r['Mcu_KelainanName'].", ";
|
|
$kelainan = $r;
|
|
$results[] = array('test' => $r['T_TestName'], 'nat_test' => $r['Nat_TestCode'], 'kelainan' => $r['Mcu_KelainanName']);
|
|
}
|
|
}
|
|
}
|
|
|
|
$kelainan_id = 0;
|
|
$group_kelainan_id = 0;
|
|
if (count($notavailable) > 0) {
|
|
$kelainan_id = -1;
|
|
} elseif (count($kelainan) > 0) {
|
|
$kelainan_id = $r['Mcu_KelainanID'];
|
|
$group_kelainan_id = $r['Mcu_KelainanGroupID'];
|
|
}
|
|
|
|
if ($kelainan_id > 0) {
|
|
$sql = "UPDATE mgm_header SET Mgm_HeaderIsNormal = 'N' WHERE Mgm_HeaderID = ?";
|
|
$query = $this->db->query($sql, array($header_id));
|
|
|
|
$sql = "SELECT COUNT(*) as cnt, Mgm_DetailID
|
|
FROM mgm_detail
|
|
WHERE
|
|
Mgm_DetailMgm_HeaderID = ? AND
|
|
Mgm_DetailMcu_KelainanID = ? AND
|
|
Mgm_DetailIsActive = 'Y'";
|
|
$query = $this->db->query($sql, array($header_id, $kelainan_id));
|
|
//echo $this->db->last_query();
|
|
$row_exist = $query->row_array();
|
|
if ($row_exist['cnt'] == 0) {
|
|
$data = array(
|
|
'Mgm_DetailMgm_HeaderID' => $header_id,
|
|
'Mgm_DetailMcu_KelainanID' => $kelainan_id,
|
|
'Mgm_DetailMcu_KelainanGroupID' => $group_kelainan_id,
|
|
'Mgm_DetailCreated' => date("Y-m-d H:i:s", time())
|
|
);
|
|
|
|
$this->db->insert('mgm_detail', $data);
|
|
//echo $this->db->last_query();
|
|
} else {
|
|
$data = array(
|
|
'Mgm_DetailMgm_HeaderID' => $header_id,
|
|
'Mgm_DetailMcu_KelainanID' => $kelainan_id,
|
|
'Mgm_DetailMcu_KelainanGroupID' => $group_kelainan_id,
|
|
'Mgm_DetailIsActive' => 'Y',
|
|
'Mgm_DetailLastUpdated' => date("Y-m-d H:i:s", time())
|
|
);
|
|
$this->db->where('Mgm_DetailID', $row_exist['Mgm_DetailID']);
|
|
$this->db->update('mgm_detail', $data);
|
|
}
|
|
} else {
|
|
if ($kelainan_id == -1) {
|
|
$sql = "UPDATE mgm_header SET Mgm_HeaderIsNormal = 'X' WHERE Mgm_HeaderID = ?";
|
|
$query = $this->db->query($sql, array($header_id));
|
|
}
|
|
}
|
|
}
|
|
|
|
$sql = "UPDATE mcu_order SET Mcu_OrderStatus = 'D' WHERE Mcu_OrderMgm_McuID = ? AND Mcu_OrderT_OrderHeaderID = ?";
|
|
$qry = $this->db->query($sql, [$mgmMcuID, $orderHeaderID]);
|
|
|
|
//echo json_encode($results);
|
|
return $results;
|
|
}
|
|
|
|
|
|
function lab_kelainan($orderHeaderID, $mgmMcuID)
|
|
{
|
|
$this->non_active_exist($orderHeaderID, $mgmMcuID, 'L');
|
|
$sql = "select T_OrderDetailID,
|
|
T_OrderHeaderID,T_OrderHeaderLabNumber,
|
|
T_TestName, T_OrderDetailResult, T_OrderDetailNat_MethodeID,
|
|
T_OrderDetailNat_MethodeID, T_OrderDetailNat_MethodeName,
|
|
T_OrderDetailMinValue, T_OrderDetailMaxValue, T_OrderDetailMinValueInclusive,
|
|
T_OrderDetailMaxValueInclusive,
|
|
Mcu_SummaryLabValue,
|
|
Mcu_SummaryLabNat_MethodeID,
|
|
Mcu_SummaryLabWithMethode,
|
|
Mcu_SummaryLabType,
|
|
Mcu_SummaryLabIsNormalValue,
|
|
Mcu_KelainanID, Mcu_KelainanName, Mcu_KelainanClasification,
|
|
Nat_TestCode,
|
|
mcu_kelainangroup.*
|
|
from t_orderdetail
|
|
join t_orderheader on T_OrderHeaderID = ?
|
|
and T_OrderHeaderID = T_OrderDetailT_OrderHeaderID
|
|
and T_OrderDetailIsActive = 'Y'
|
|
join t_test
|
|
on T_OrderDetailT_TestID = T_TestID
|
|
join nat_test ON T_TestNat_TestID = Nat_TestID
|
|
join mcu_summarylab on T_TestNat_TestID = Mcu_SummaryLabNat_TestID AND Mcu_SummaryLabIsActive = 'Y'
|
|
join mcu_kelainan on Mcu_SummaryLabMcu_KelainanID = Mcu_KelainanID
|
|
join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID";
|
|
|
|
$qry = $this->db->query($sql, [$orderHeaderID]);
|
|
//echo $this->db->last_query();
|
|
if (!$qry) {
|
|
echo json_encode([
|
|
"status" => "ERR",
|
|
"message" => "Error get order | " . $this->db->error()["message"]
|
|
]);
|
|
exit;
|
|
}
|
|
$rows = $qry->result_array();
|
|
$results = [];
|
|
foreach ($rows as $r) {
|
|
//loop dan cari kelainan
|
|
//Nat_TestID, WithMethode, terhadap NormalValue atau AdHoc Value
|
|
//rule penentuan
|
|
// print_r($r);
|
|
$sql = "SELECT COUNT(*) as cnt, Mgm_HeaderID
|
|
FROM mgm_header
|
|
WHERE
|
|
Mgm_HeaderMgm_McuID = ? AND
|
|
Mgm_HeaderT_OrderHeaderID = ? AND
|
|
Mgm_HeaderNat_TestCode = ? AND
|
|
Mgm_HeaderType = 'L' AND
|
|
Mgm_HeaderIsActive = 'Y'";
|
|
$query = $this->db->query($sql, array($mgmMcuID, $orderHeaderID, $r['Nat_TestCode']));
|
|
//echo $this->db->last_query();
|
|
$row_header_exist = $query->row_array();
|
|
$header_id = 0;
|
|
|
|
if ($row_header_exist['cnt'] == 0) {
|
|
|
|
$data_header = array(
|
|
'Mgm_HeaderMgm_McuID' => $mgmMcuID,
|
|
'Mgm_HeaderT_OrderHeaderID' => $orderHeaderID,
|
|
'Mgm_HeaderNat_TestCode' => $r['Nat_TestCode'],
|
|
'Mgm_HeaderType' => 'L',
|
|
'Mgm_HeaderCreated' => date("Y-m-d H:i:s", time())
|
|
);
|
|
|
|
$this->db->insert('mgm_header', $data_header);
|
|
//echo $this->db->last_query();
|
|
$header_id = $this->db->insert_id();
|
|
|
|
}
|
|
|
|
|
|
//jika belum disampling
|
|
//$isnormal = 'X';
|
|
//jika tidak ada kelainan dan sudah disampling
|
|
$isnormal = 'Y';
|
|
|
|
$sql = "SELECT Mcu_KelainanMcu_KelainanGroupID as xgroup_id, Mcu_KelainanID as xid
|
|
FROM t_kelainan_lab
|
|
JOIN mcu_summarylab ON T_KelainanLabMcu_SummaryLabID = Mcu_SummaryLabID
|
|
JOIN mcu_kelainan ON Mcu_summaryLabMcu_KelainanID = Mcu_KelainanID
|
|
WHERE
|
|
T_KelainanLabT_OrderDetailID = {$r['T_OrderDetailID']} AND
|
|
T_KelainanLabIsActive = 'Y'";
|
|
$query = $this->db->query($sql);
|
|
if(!$query){
|
|
echo "Gagal query ambil t_kelainan_lab";
|
|
}
|
|
|
|
$kelainans = $query->result_array();
|
|
|
|
//jika ada kelainan dan sudah disampling
|
|
if(count($kelainans) > 0){
|
|
$isnormal = 'N';
|
|
$sql = "UPDATE mgm_header SET Mgm_HeaderIsNormal = '{$isnormal}' WHERE Mgm_HeaderID = ?";
|
|
$query = $this->db->query($sql, array($header_id));
|
|
|
|
foreach ($kelainans as $key => $value) {
|
|
$group_kelainan_id = $value['xgroup_id'];
|
|
$kelainan_id = $value['xid'];
|
|
//insert ke detail jika ada kelainan
|
|
$sql = "SELECT COUNT(*) as cnt, Mgm_DetailID
|
|
FROM mgm_detail
|
|
WHERE
|
|
Mgm_DetailMgm_HeaderID = ? AND
|
|
Mgm_DetailMcu_KelainanID = ? AND
|
|
Mgm_DetailIsActive = 'Y'";
|
|
$query = $this->db->query($sql, array($header_id, $kelainan_id));
|
|
//echo $this->db->last_query();
|
|
$row_exist = $query->row_array();
|
|
if ($row_exist['cnt'] == 0) {
|
|
$data = array(
|
|
'Mgm_DetailMgm_HeaderID' => $header_id,
|
|
'Mgm_DetailMcu_KelainanID' => $kelainan_id,
|
|
'Mgm_DetailMcu_KelainanGroupID' => $group_kelainan_id,
|
|
'Mgm_DetailCreated' => date("Y-m-d H:i:s", time())
|
|
);
|
|
|
|
$this->db->insert('mgm_detail', $data);
|
|
//echo $this->db->last_query();
|
|
} else {
|
|
$data = array(
|
|
'Mgm_DetailMgm_HeaderID' => $header_id,
|
|
'Mgm_DetailMcu_KelainanID' => $kelainan_id,
|
|
'Mgm_DetailMcu_KelainanGroupID' => $group_kelainan_id,
|
|
'Mgm_DetailIsActive' => 'Y',
|
|
'Mgm_DetailLastUpdated' => date("Y-m-d H:i:s", time())
|
|
);
|
|
$this->db->where('Mgm_DetailID', $row_exist['Mgm_DetailID']);
|
|
$this->db->update('mgm_detail', $data);
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
$sql = "UPDATE mcu_order SET Mcu_OrderStatus = 'D' WHERE Mcu_OrderMgm_McuID = ? AND Mcu_OrderT_OrderHeaderID = ?";
|
|
$qry = $this->db->query($sql, [$mgmMcuID, $orderHeaderID]);
|
|
|
|
//echo json_encode($results);
|
|
return $results;
|
|
}
|
|
|
|
function nonlab_kelainan($orderHeaderID, $mgmMcuID)
|
|
{
|
|
$this->non_active_exist($orderHeaderID, $mgmMcuID, 'NL');
|
|
|
|
|
|
$sql = "SELECT Nat_TestID,
|
|
Nat_TestCode,
|
|
T_TestName,
|
|
IFNULL(So_ResultEntryID,0) as resultentry_id,
|
|
IFNULL(T_SamplingSoID,0) as sampling_id,
|
|
So_ResultEntryT_OrderHeaderID as orderheader_id
|
|
FROM t_orderdetail
|
|
JOIN t_test ON T_TestID = T_OrderDetailT_TestID
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultResumeMcu = 'NONLAB'
|
|
JOIN nat_test ON T_TestNat_TestID = Nat_TestID
|
|
LEFT JOIN so_resultentry ON SO_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y'
|
|
LEFT JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = So_ResultEntryT_OrderHeaderID AND T_SamplingSoT_TestID = T_TestID AND
|
|
T_SamplingSoFlag = 'D'
|
|
|
|
WHERE
|
|
T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailIsActive = 'Y'
|
|
GROUP BY So_ResultEntryID";
|
|
|
|
$query = $this->db->query($sql, array($orderHeaderID));
|
|
|
|
if (!$query) {
|
|
echo json_encode(
|
|
[
|
|
"status" => "ERR",
|
|
"messge" => $this->db->error(),
|
|
"sql" => $this->db->last_query()
|
|
]
|
|
);
|
|
}
|
|
// echo $this->db->last_query();
|
|
$datas = $query->result_array();
|
|
//print_r($datas);
|
|
$header_id = 0;
|
|
foreach ($datas as $key => $value) {
|
|
$sql = "SELECT COUNT(*) as cnt, Mgm_HeaderID
|
|
FROM mgm_header
|
|
WHERE
|
|
Mgm_HeaderT_OrderHeaderID = ? AND
|
|
Mgm_HeaderMgm_McuID = ? AND
|
|
Mgm_HeaderNat_TestCode = ? AND
|
|
Mgm_HeaderIsActive = 'Y'";
|
|
$query = $this->db->query($sql, array($orderHeaderID, $mgmMcuID, $value['Nat_TestCode']));
|
|
$exist_data = $query->row_array();
|
|
//print_r($exist_data);
|
|
if ($exist_data['cnt'] == 0) {
|
|
$data_header = array(
|
|
'Mgm_HeaderMgm_McuID' => $mgmMcuID,
|
|
'Mgm_HeaderT_OrderHeaderID' => $orderHeaderID,
|
|
'Mgm_HeaderNat_TestCode' => $value['Nat_TestCode'],
|
|
'Mgm_HeaderType' => 'NL',
|
|
'Mgm_HeaderCreated' => date("Y-m-d H:i:s", time())
|
|
);
|
|
|
|
$this->db->insert('mgm_header', $data_header);
|
|
// echo $this->db->last_query();
|
|
$header_id = $this->db->insert_id();
|
|
} else {
|
|
$header_id = $exist_data['Mgm_HeaderID'];
|
|
}
|
|
|
|
$isnormal = "Y";
|
|
if(intval($value['resultentry_id']) == 0){
|
|
$isnormal = "X";
|
|
}
|
|
|
|
$sql = "SELECT Mcu_KelainanMcu_KelainanGroupID as xgroup_id, Mcu_KelainanID as xid
|
|
FROM t_kelainan_nonlab
|
|
JOIN mcu_summarynonlab ON Mcu_SummaryNonlabNat_TestID = T_KelainanNonLabNat_TestID
|
|
JOIN mcu_kelainan ON Mcu_SummaryNonlabMcu_KelainanID = Mcu_KelainanID
|
|
WHERE
|
|
T_KelainanNonLabSo_ResultEntryID = {$value['resultentry_id']} AND
|
|
T_KelainanNonLabIsActive = 'Y'";
|
|
// echo $sql;
|
|
$query = $this->db->query($sql);
|
|
if(!$query){
|
|
echo "Gagal query ambil t_kelainan_nonlab";
|
|
}
|
|
|
|
$kelainans = $query->result_array();
|
|
if(count($kelainans) > 0){
|
|
$isnormal = "N";
|
|
foreach ($kelainans as $k => $v) {
|
|
$group_kelainan_id = $v['xgroup_id'];
|
|
$kelainan_id = $v['xid'];
|
|
|
|
$sql = "SELECT COUNT(*) as cnt, Mgm_DetailID
|
|
FROM mgm_detail
|
|
WHERE
|
|
Mgm_DetailMgm_HeaderID = ? AND
|
|
Mgm_DetailMcu_KelainanID = ? AND
|
|
Mgm_DetailIsActive = 'Y'";
|
|
$query = $this->db->query($sql, array($header_id, $kelainan_id));
|
|
//echo $this->db->last_query();
|
|
$row_exist = $query->row_array();
|
|
if ($row_exist['cnt'] == 0) {
|
|
$data = array(
|
|
'Mgm_DetailMgm_HeaderID' => $header_id,
|
|
'Mgm_DetailMcu_KelainanID' => $kelainan_id,
|
|
'Mgm_DetailMcu_KelainanGroupID' => $group_kelainan_id,
|
|
'Mgm_DetailCreated' => date("Y-m-d H:i:s", time())
|
|
);
|
|
|
|
$this->db->insert('mgm_detail', $data);
|
|
//echo $this->db->last_query();
|
|
} else {
|
|
$data = array(
|
|
'Mgm_DetailMgm_HeaderID' => $header_id,
|
|
'Mgm_DetailMcu_KelainanID' => $kelainan_id,
|
|
'Mgm_DetailMcu_KelainanGroupID' => $group_kelainan_id,
|
|
'Mgm_DetailIsActive' => 'Y',
|
|
'Mgm_DetailLastUpdated' => date("Y-m-d H:i:s", time())
|
|
);
|
|
$this->db->where('Mgm_DetailID', $row_exist['Mgm_DetailID']);
|
|
$this->db->update('mgm_detail', $data);
|
|
}
|
|
}
|
|
}
|
|
|
|
$sql = "UPDATE mgm_header SET Mgm_HeaderIsNormal = ? WHERE Mgm_HeaderID = ?";
|
|
$query = $this->db->query($sql, array($isnormal,$header_id));
|
|
}
|
|
|
|
|
|
$sql = "UPDATE mcu_order SET Mcu_OrderStatus = 'F' WHERE Mcu_OrderMgm_McuID = ? AND Mcu_OrderT_OrderHeaderID = ?";
|
|
$qry = $this->db->query($sql, [$mgmMcuID, $orderHeaderID]);
|
|
|
|
//echo json_encode($datas);
|
|
return $datas;
|
|
}
|
|
|
|
function fisik_kelainan($orderHeaderID, $mgmMcuID)
|
|
{
|
|
$this->non_active_exist($orderHeaderID, $mgmMcuID, 'F');
|
|
|
|
|
|
$sql = "SELECT FisikTemplateID as Nat_TestID,
|
|
FisikTemplateCode as Nat_TestCode,
|
|
FisikTemplateTitle as T_TestName,
|
|
IFNULL(So_ResultEntryID,0) as resultentry_id,
|
|
IFNULL(T_SamplingSoID,0) as sampling_id,
|
|
So_ResultEntryT_OrderHeaderID as orderheader_id,
|
|
FisikTemplateMappingDetailFisikTemplateID as fisiktemplate_id
|
|
FROM t_orderdetail
|
|
JOIN t_orderheader ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID
|
|
JOIN mgm_mcutemplate ON Mgm_McuTemplateMgm_McuID = T_OrderHeaderMgm_McuID
|
|
JOIN fisik_template_mapping ON Mgm_McuTemplateFisikTemplateMappingID = FisikTemplateMappingID
|
|
JOIN fisik_template_mapping_detail ON FisikTemplateMappingDetailFisikTemplateMappingID = FisikTemplateMappingID
|
|
JOIN fisik_template ON FisikTemplateMappingDetailFisikTemplateID = FisikTemplateID AND FisikTemplateIsActive = 'Y' AND
|
|
FisikTemplateType = 'Fisik'
|
|
JOIN t_test ON T_TestID = T_OrderDetailT_TestID
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultResumeMcu = 'Fisik'
|
|
JOIN nat_test ON T_TestNat_TestID = Nat_TestID
|
|
LEFT JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND T_SamplingSoT_TestID = T_TestID AND
|
|
T_SamplingSoFlag = 'D'
|
|
LEFT JOIN so_resultentry ON SO_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y'
|
|
WHERE
|
|
T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailIsActive = 'Y'
|
|
GROUP BY FisikTemplateMappingDetailFisikTemplateID
|
|
ORDER BY FisikTemplateCode ";
|
|
|
|
$query = $this->db->query($sql, array($orderHeaderID));
|
|
|
|
if (!$query) {
|
|
echo json_encode(
|
|
[
|
|
"status" => "ERR",
|
|
"messge" => $this->db->error(),
|
|
"sql" => $this->db->last_query()
|
|
]
|
|
);
|
|
}
|
|
// echo $this->db->last_query();
|
|
$datas = $query->result_array();
|
|
//print_r($datas);
|
|
$header_id = 0;
|
|
foreach ($datas as $key => $value) {
|
|
$sql = "SELECT COUNT(*) as cnt, Mgm_HeaderID
|
|
FROM mgm_header
|
|
WHERE
|
|
Mgm_HeaderT_OrderHeaderID = ? AND
|
|
Mgm_HeaderMgm_McuID = ? AND
|
|
Mgm_HeaderNat_TestCode = ? AND
|
|
Mgm_HeaderIsActive = 'Y'";
|
|
$query = $this->db->query($sql, array($orderHeaderID, $mgmMcuID, $value['Nat_TestCode']));
|
|
$exist_data = $query->row_array();
|
|
//print_r($exist_data);
|
|
if ($exist_data['cnt'] == 0) {
|
|
$data_header = array(
|
|
'Mgm_HeaderMgm_McuID' => $mgmMcuID,
|
|
'Mgm_HeaderT_OrderHeaderID' => $orderHeaderID,
|
|
'Mgm_HeaderNat_TestCode' => $value['Nat_TestCode'],
|
|
'Mgm_HeaderType' => 'F',
|
|
'Mgm_HeaderCreated' => date("Y-m-d H:i:s", time())
|
|
);
|
|
|
|
$this->db->insert('mgm_header', $data_header);
|
|
// echo $this->db->last_query();
|
|
$header_id = $this->db->insert_id();
|
|
} else {
|
|
$header_id = $exist_data['Mgm_HeaderID'];
|
|
}
|
|
|
|
$isnormal = "Y";
|
|
if(intval($value['resultentry_id']) == 0){
|
|
$isnormal = "X";
|
|
}
|
|
|
|
$sql = "SELECT Mcu_KelainanMcu_KelainanGroupID as xgroup_id, Mcu_KelainanID as xid
|
|
FROM t_kelainan_fisik
|
|
JOIN mcu_summaryfisik ON Mcu_SummaryFisikID = T_KelainanFiskMcu_SummaryFisikID
|
|
JOIN mcu_kelainan ON Mcu_SummaryFisikMcu_KelainanID = Mcu_KelainanID
|
|
JOIN fisik_template ON Mcu_SummaryFisikFisikTemplateID = FisikTemplateID AND FisikTemplateID = ?
|
|
WHERE
|
|
T_KelainanFiskSo_ResultEntryID = ? AND
|
|
T_KelainanFiskIsActive = 'Y'";
|
|
$query = $this->db->query($sql,array($value['fisiktemplate_id'], $value['resultentry_id']));
|
|
if(!$query){
|
|
echo "Gagal query ambil t_kelainan_fisik";
|
|
}
|
|
|
|
$kelainans = $query->result_array();
|
|
if(count($kelainans) > 0){
|
|
$isnormal = "N";
|
|
foreach ($kelainans as $k => $v) {
|
|
$group_kelainan_id = $v['xgroup_id'];
|
|
$kelainan_id = $v['xid'];
|
|
|
|
$sql = "SELECT COUNT(*) as cnt, Mgm_DetailID
|
|
FROM mgm_detail
|
|
WHERE
|
|
Mgm_DetailMgm_HeaderID = ? AND
|
|
Mgm_DetailMcu_KelainanID = ? AND
|
|
Mgm_DetailIsActive = 'Y'";
|
|
$query = $this->db->query($sql, array($header_id, $kelainan_id));
|
|
//echo $this->db->last_query();
|
|
$row_exist = $query->row_array();
|
|
if ($row_exist['cnt'] == 0) {
|
|
$data = array(
|
|
'Mgm_DetailMgm_HeaderID' => $header_id,
|
|
'Mgm_DetailMcu_KelainanID' => $kelainan_id,
|
|
'Mgm_DetailMcu_KelainanGroupID' => $group_kelainan_id,
|
|
'Mgm_DetailCreated' => date("Y-m-d H:i:s", time())
|
|
);
|
|
|
|
$this->db->insert('mgm_detail', $data);
|
|
//echo $this->db->last_query();
|
|
} else {
|
|
$data = array(
|
|
'Mgm_DetailMgm_HeaderID' => $header_id,
|
|
'Mgm_DetailMcu_KelainanID' => $kelainan_id,
|
|
'Mgm_DetailMcu_KelainanGroupID' => $group_kelainan_id,
|
|
'Mgm_DetailIsActive' => 'Y',
|
|
'Mgm_DetailLastUpdated' => date("Y-m-d H:i:s", time())
|
|
);
|
|
$this->db->where('Mgm_DetailID', $row_exist['Mgm_DetailID']);
|
|
$this->db->update('mgm_detail', $data);
|
|
}
|
|
}
|
|
}
|
|
|
|
$sql = "UPDATE mgm_header SET Mgm_HeaderIsNormal = ? WHERE Mgm_HeaderID = ?";
|
|
$query = $this->db->query($sql, array($isnormal,$header_id));
|
|
}
|
|
|
|
|
|
$sql = "UPDATE mcu_order SET Mcu_OrderStatus = 'A' WHERE Mcu_OrderMgm_McuID = ? AND Mcu_OrderT_OrderHeaderID = ?";
|
|
$qry = $this->db->query($sql, [$mgmMcuID, $orderHeaderID]);
|
|
|
|
//echo json_encode($datas);
|
|
return $datas;
|
|
}
|
|
|
|
function nonlab_kelainan_old_x($orderHeaderID, $mgmMcuID)
|
|
{
|
|
$this->non_active_exist($orderHeaderID, $mgmMcuID, 'NL');
|
|
|
|
|
|
$sql = "SELECT Nat_TestID,
|
|
Nat_TestCode,
|
|
T_TestName,
|
|
-- So_ResultEntryCategoryResultValue,
|
|
IFNULL(Mcu_SummaryNonlabMcu_KelainanID,0) as Mcu_SummaryNonlabMcu_KelainanID,
|
|
IFNULL(Mcu_KelainanGroupID,0) as Mcu_KelainanGroupID
|
|
FROM so_resultentry_category_result
|
|
JOIN so_resultentry ON So_ResultEntryCategoryResultSo_ResultEntryID = So_ResultEntryID AND
|
|
So_ResultEntryT_OrderHeaderID = ?
|
|
JOIN t_orderdetail ON T_OrderDetailID = SO_ResultENtryT_OrderDetailID AND T_OrderDetailIsActive = 'Y'
|
|
JOIN t_test ON T_TestID = T_OrderDetailT_TestID
|
|
JOIN nat_test ON T_TestNat_TestID = Nat_TestID
|
|
JOIN mcu_summarynonlab ON Mcu_SummaryNonlabNat_TestID = Nat_TestID AND
|
|
FIND_IN_SET(So_ResultEntryCategoryNonlabConclusionDetailID,Mcu_SummaryNonlabConclusionDetailIDs) <> 0
|
|
LEFT JOIN mcu_kelainan ON Mcu_SummaryNonlabMcu_KelainanID = Mcu_KelainanID
|
|
LEFT JOIN mcu_kelainangroup ON Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID
|
|
WHERE
|
|
So_ResultEntryCategoryResultIsActive = 'Y'
|
|
GROUP BY So_ResultEntryCategoryResultID";
|
|
|
|
$query = $this->db->query($sql, array($orderHeaderID));
|
|
|
|
if (!$query) {
|
|
echo json_encode(
|
|
[
|
|
"status" => "ERR",
|
|
"messge" => $this->db->error(),
|
|
"sql" => $this->db->last_query()
|
|
]
|
|
);
|
|
}
|
|
// echo $this->db->last_query();
|
|
$datas = $query->result_array();
|
|
print_r($datas);
|
|
$header_id = 0;
|
|
foreach ($datas as $key => $value) {
|
|
$sql = "SELECT COUNT(*) as cnt, Mgm_HeaderID
|
|
FROM mgm_header
|
|
WHERE
|
|
Mgm_HeaderT_OrderHeaderID = ? AND
|
|
Mgm_HeaderMgm_McuID = ? AND
|
|
Mgm_HeaderNat_TestCode = ? AND
|
|
Mgm_HeaderIsActive = 'Y'";
|
|
$query = $this->db->query($sql, array($orderHeaderID, $mgmMcuID, $value['Nat_TestCode']));
|
|
$exist_data = $query->row_array();
|
|
//print_r($exist_data);
|
|
if ($exist_data['cnt'] == 0) {
|
|
$data_header = array(
|
|
'Mgm_HeaderMgm_McuID' => $mgmMcuID,
|
|
'Mgm_HeaderT_OrderHeaderID' => $orderHeaderID,
|
|
'Mgm_HeaderNat_TestCode' => $value['Nat_TestCode'],
|
|
'Mgm_HeaderType' => 'NL',
|
|
'Mgm_HeaderCreated' => date("Y-m-d H:i:s", time())
|
|
);
|
|
|
|
$this->db->insert('mgm_header', $data_header);
|
|
// echo $this->db->last_query();
|
|
$header_id = $this->db->insert_id();
|
|
} else {
|
|
$header_id = $exist_data['Mgm_HeaderID'];
|
|
}
|
|
|
|
$kelainan_id = $value['Mcu_SummaryNonlabMcu_KelainanID'];
|
|
//echo $kelainan_id;
|
|
if ($kelainan_id > 0) {
|
|
$sql = "SELECT COUNT(*) as cnt, Mgm_DetailID
|
|
FROM mgm_detail
|
|
WHERE
|
|
Mgm_DetailMgm_HeaderID = ? AND
|
|
Mgm_DetailMcu_KelainanID = ? AND
|
|
Mgm_DetailIsActive = 'Y'";
|
|
$query = $this->db->query($sql, array($header_id, $kelainan_id));
|
|
//echo $this->db->last_query();
|
|
$row_exist = $query->row_array();
|
|
//print_r($row_exist);
|
|
if ($row_exist['cnt'] == 0) {
|
|
$data = array(
|
|
'Mgm_DetailMgm_HeaderID' => $header_id,
|
|
'Mgm_DetailMcu_KelainanID' => $kelainan_id,
|
|
'Mgm_DetailMcu_KelainanGroupID' => $value['Mcu_KelainanGroupID'],
|
|
'Mgm_DetailCreated' => date("Y-m-d H:i:s", time())
|
|
);
|
|
|
|
$this->db->insert('mgm_detail', $data);
|
|
//echo $this->db->last_query();
|
|
} else {
|
|
$data = array(
|
|
'Mgm_DetailMgm_HeaderID' => $header_id,
|
|
'Mgm_DetailMcu_KelainanID' => $kelainan_id,
|
|
'Mgm_DetailMcu_KelainanGroupID' => $value['Mcu_KelainanGroupID'],
|
|
'Mgm_DetailIsActive' => 'Y',
|
|
'Mgm_DetailLastUpdated' => date("Y-m-d H:i:s", time())
|
|
);
|
|
$this->db->where('Mgm_DetailID', $row_exist['Mgm_DetailID']);
|
|
$this->db->update('mgm_detail', $data);
|
|
}
|
|
|
|
$sql = "UPDATE mgm_header SET Mgm_HeaderIsNormal = 'N' WHERE Mgm_HeaderID = ?";
|
|
$query = $this->db->query($sql, array($header_id));
|
|
}
|
|
}
|
|
|
|
$sql = "UPDATE mcu_order SET Mcu_OrderStatus = 'F' WHERE Mcu_OrderMgm_McuID = ? AND Mcu_OrderT_OrderHeaderID = ?";
|
|
$qry = $this->db->query($sql, [$mgmMcuID, $orderHeaderID]);
|
|
|
|
//echo json_encode($datas);
|
|
return $datas;
|
|
}
|
|
|
|
function dynamic_comparison($varleft, $op, $varright)
|
|
{
|
|
|
|
switch ($op) {
|
|
case "=":
|
|
return $varleft == $varright;
|
|
case "!=":
|
|
return $varleft != $varright;
|
|
case ">=":
|
|
return $varleft >= $varright;
|
|
case "<=":
|
|
return $varleft <= $varright;
|
|
case ">":
|
|
return $varleft > $varright;
|
|
case "<":
|
|
return $varleft < $varright;
|
|
default:
|
|
return true;
|
|
}
|
|
}
|
|
|
|
function generate_kelainan_lab($Mgm_McuID, $limit)
|
|
{
|
|
$sql = "SELECT *
|
|
FROM mcu_order
|
|
WHERE
|
|
Mcu_OrderStatus = 'C' AND
|
|
Mcu_OrderMgm_McuID = ?
|
|
LIMIT ?";
|
|
$qry = $this->db->query($sql, [$Mgm_McuID, intval($limit)]);
|
|
//echo $this->db->last_query();
|
|
if (!$qry) {
|
|
echo json_encode([
|
|
"status" => "ERR",
|
|
"message" => "Error proces mgm_mcu $Mgm_McuID | " . $this->db->error()["message"]
|
|
]);
|
|
exit;
|
|
}
|
|
|
|
$rows = $qry->result_array();
|
|
if (count($rows) == 0) {
|
|
echo "No Pending Lab Order";
|
|
}
|
|
foreach ($rows as $key => $value) {
|
|
$this->lab_kelainan($value['Mcu_OrderT_OrderHeaderID'], $Mgm_McuID);
|
|
}
|
|
echo "success lab";
|
|
}
|
|
|
|
|
|
function generate_kelainan_nonlab($Mgm_McuID, $limit)
|
|
{
|
|
$sql = "SELECT *
|
|
FROM mcu_order
|
|
WHERE
|
|
Mcu_OrderStatus = 'D' AND
|
|
Mcu_OrderMgm_McuID = ?
|
|
LIMIT ?";
|
|
$qry = $this->db->query($sql, [$Mgm_McuID, intval($limit)]);
|
|
if (!$qry) {
|
|
echo json_encode([
|
|
"status" => "ERR",
|
|
"message" => "Error proces mgm_mcu $Mgm_McuID | " . $this->db->error()["message"]
|
|
]);
|
|
exit;
|
|
}
|
|
|
|
$rows = $qry->result_array();
|
|
foreach ($rows as $key => $value) {
|
|
$this->nonlab_kelainan($value['Mcu_OrderT_OrderHeaderID'], $Mgm_McuID);
|
|
}
|
|
echo "success non lab";
|
|
}
|
|
|
|
|
|
function generate_kelainan_fisik($Mgm_McuID, $limit)
|
|
{
|
|
$sql = "SELECT *
|
|
FROM mcu_order
|
|
WHERE
|
|
Mcu_OrderStatus = 'D' AND
|
|
Mcu_OrderMgm_McuID = ?
|
|
LIMIT ?";
|
|
$qry = $this->db->query($sql, [$Mgm_McuID, intval($limit)]);
|
|
if (!$qry) {
|
|
echo json_encode([
|
|
"status" => "ERR",
|
|
"message" => "Error proces mgm_mcu $Mgm_McuID | " . $this->db->error()["message"]
|
|
]);
|
|
exit;
|
|
}
|
|
|
|
$rows = $qry->result_array();
|
|
foreach ($rows as $key => $value) {
|
|
$this->fisik_kelainan($value['Mcu_OrderT_OrderHeaderID'], $Mgm_McuID);
|
|
}
|
|
echo "success non lab";
|
|
}
|
|
|
|
|
|
function populate_order($mgmMouID)
|
|
{
|
|
// $sql = "select Mgm_McuStartDate,Mgm_McuEndDate
|
|
// from mgm_mcu
|
|
// where Mgm_McuID = ?";
|
|
$sql = "
|
|
select Mgm_McuID Mcu_OrderMgm_McuID,
|
|
T_OrderHeaderID Mcu_OrderT_OrderHeaderID
|
|
from mgm_mcu
|
|
join t_orderheader on
|
|
Mgm_McuID = ?
|
|
and Mgm_McuIsActive = 'Y'
|
|
and T_OrderHeaderMgm_McuID = Mgm_McuID
|
|
and T_OrderHeaderDate >= Mgm_McuStartDate
|
|
and T_OrderHeaderDate <= Mgm_McuEndDate
|
|
and T_OrderHeaderIsActive = 'Y'
|
|
and T_OrderHeaderID not in (
|
|
select Mcu_OrderT_OrderHeaderID
|
|
from mcu_order
|
|
where Mcu_OrderMgm_McuID = ?
|
|
)";
|
|
$qry = $this->db->query($sql, [$mgmMouID, $mgmMouID]);
|
|
if (!$qry) {
|
|
echo json_encode([
|
|
"status" => "ERR",
|
|
"message" => "Error get mgm_mcu $mgmMouID | " . $this->db->error()["message"]
|
|
]);
|
|
exit;
|
|
}
|
|
$rows = $qry->result_array();
|
|
if (count($rows) == 0) {
|
|
echo json_encode([
|
|
"status" => "OK", "message" => "No Pending Order",
|
|
]);
|
|
exit;
|
|
}
|
|
$this->db->trans_begin();
|
|
$qry = $this->db->insert_batch("mcu_order", $rows);
|
|
if (!$qry) {
|
|
echo json_encode([
|
|
"status" => "ERR",
|
|
"message" => "Error batch insert | " . $this->db->error()["message"]
|
|
]);
|
|
$this->db->trans_rollback();
|
|
exit;
|
|
}
|
|
$this->db->trans_commit();
|
|
echo json_encode(["status" => "OK", "message" => count($rows) . " inserted. "]);
|
|
}
|
|
|
|
// helper function
|
|
// post
|
|
// get
|
|
// insert_or_update
|
|
function post($service, $data)
|
|
{
|
|
$xbase_url = $this->base_url;
|
|
$url = $xbase_url . "$service";
|
|
$ch = curl_init($url);
|
|
$payload = json_encode($data);
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
|
|
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
$result = curl_exec($ch);
|
|
curl_close($ch);
|
|
$data_rst = json_decode($result);
|
|
return $data_rst;
|
|
}
|
|
function get($service, $debug = "")
|
|
{
|
|
$xbase_url = $this->base_url;
|
|
$url = $xbase_url . "$service";
|
|
$ch = curl_init($url);
|
|
|
|
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
$result = curl_exec($ch);
|
|
curl_close($ch);
|
|
if ($debug != "") {
|
|
echo "url : $url \n";
|
|
print_r($result);
|
|
}
|
|
$data_rst = json_decode($result);
|
|
return $data_rst;
|
|
}
|
|
}
|