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