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

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;
}
}