db = $this->load->database("onedev", true); } function get_nonlab($type, $xid) { //mikro if ($type == "mikro") { $sql = "select * from other_mikro where Other_MikroID=? "; $qry = $this->db->query($sql, array($xid)); $result = array(); if ($qry) { $result["type"] = "mikro"; $rows = $qry->result_array(); if (count($rows) > 0) { $result["header"] = $rows[0]; } else { return array(); } $sql = "select * from other_mikrodetails where Other_MikroDetailsOther_MikroID=? and Other_MikroDetailsIsActive = 'Y' "; $qry = $this->db->query($sql, array($xid)); if ($qry) { $result["detail"] = $qry->result_array(); } } return $result; } //cytologi if ($type == "cytologi") { $sql = "select * from other_cytologi where Other_CytologiID=? "; $qry = $this->db->query($sql, array($xid)); $result = array(); if ($qry) { $result["type"] = "cytologi"; $rows = $qry->result_array(); if (count($rows) > 0) { $result["header"] = $rows[0]; } else { return array(); } $sql = "select * from other_cytologidetails where Other_CytologiDetailsOther_CytologiID=? and Other_CytologiDetailsIsActive = 'Y' "; $qry = $this->db->query($sql, array($xid)); if ($qry) { $result["detail"] = $qry->result_array(); } } return $result; } //fna if ($type == "fna") { $sql = "select * from other_fna where Other_FnaID=? "; $qry = $this->db->query($sql, array($xid)); $result = array(); if ($qry) { $result["type"] = "fna"; $rows = $qry->result_array(); if (count($rows) > 0) { $result["header"] = $rows[0]; } else { return array(); } $sql = "select * from other_fnadetails where Other_FnaDetailsOther_FnaID=? and Other_FnaDetailsIsActive = 'Y' "; $qry = $this->db->query($sql, array($xid)); if ($qry) { $result["detail"] = $qry->result_array(); } } return $result; } //papsmear // if ($type == "papsmear") { $sql = "select * from other_papsmear where Other_PapSmearID=? "; $qry = $this->db->query($sql, array($xid)); $result = array(); if ($qry) { $result["type"] = "papsmear"; $rows = $qry->result_array(); if (count($rows) > 0) { $result["header"] = $rows[0]; } else { return array(); } $result["detail"] = array(); //bahan $sql = "select * from other_papsmearbahan where Other_PapSmearBahanOther_PapSmearID = ? and Other_PapSmearBahanIsActive='Y'"; $qry = $this->db->query($sql, array($xid)); if ($qry) { $result["detail"]["bahan"] = $qry->result_array(); } //category $sql = "select * from other_papsmearcategory where Other_PapsmearCategoryOther_PapSmearID = ? and Other_PapsmearCategoryIsActive='Y'"; $qry = $this->db->query($sql, array($xid)); if ($qry) { $result["detail"]["category"] = $qry->result_array(); } // check $sql = "select * from other_papsmearcheck where Other_PapSmearCheckOther_PapSmearID= ? and Other_PapSmearCheckIsActive='Y'"; $qry = $this->db->query($sql, array($xid)); if ($qry) { $result["detail"]["check"] = $qry->result_array(); } // details $sql = "select * from other_papsmeardetails where Other_PapSmearDetailsOther_PapSmearID= ? and Other_PapSmearDetailsIsActive='Y'"; $qry = $this->db->query($sql, array($xid)); if ($qry) { $result["detail"]["details"] = $qry->result_array(); } // maturasi $sql = "select * from other_papsmearmaturasi where Other_PapSmearMaturasiOther_PapSmearID = ? and Other_PapSmearMaturasiIsActive='Y'"; $qry = $this->db->query($sql, array($xid)); if ($qry) { $result["detail"]["maturasi"] = $qry->result_array(); } } return $result; } //lcprep // if ($type == "lcprep") { $sql = "select * from other_lcprep where Other_LcprepID=? "; $qry = $this->db->query($sql, array($xid)); $result = array(); if ($qry) { $result["type"] = "lcprep"; $rows = $qry->result_array(); if (count($rows) > 0) { $result["header"] = $rows[0]; } else { return array(); } $result["detail"] = array(); //adekuasi $sql = "select * from other_lcprepadekuasi where Other_LcprepAdekuasiOther_LcprepID = ? and Other_LcprepAdekuasiIsActive='Y'"; $qry = $this->db->query($sql, array($xid)); if ($qry) { $result["detail"]["adekuasi"] = $qry->result_array(); } //interpretasi $sql = "select * from other_lcprepinterpretasi where Other_PapsmearInterpretasiOther_LcprepID = ? and Other_PapsmearInterpretasiIsActive='Y'"; $qry = $this->db->query($sql, array($xid)); if ($qry) { $result["detail"]["interpretasi"] = $qry->result_array(); } // details $sql = "select * from other_lcprepdetails where Other_LcprepDetailsOther_LcprepID= ? and Other_LcprepDetailsIsActive='Y'"; $qry = $this->db->query($sql, array($xid)); if ($qry) { $result["detail"]["details"] = $qry->result_array(); } // kategoriumum $sql = "select * from other_lcprepkategoriumum where Other_LcprepKategoriUmumOther_LcprepID = ? and Other_LcprepKategoriUmumIsActive='Y'"; $qry = $this->db->query($sql, array($xid)); if ($qry) { $result["detail"]["kategoriumum"] = $qry->result_array(); } } return $result; } return array(); } function process_nonlab($incomingRefDetailID) { //mikro $sql = "select ifnull(Other_MikroID,0) mikroID from incoming_ref_detail join t_orderdetail on T_OrderDetailT_OrderHeaderID = incomingRefDetailNewT_OrderHeaderID and T_OrderDetailT_TestID = incomingRefDetailT_TestID and T_OrderDetailIsActive = 'Y' left join other_mikro on T_OrderDetailID = Other_MikroT_OrderDetailID and Other_MikroIsActive = 'Y' where incomingRefDetailID = ? "; $qry = $this->db->query($sql, array($incomingRefDetailID)); if (! $qry) { echo "ERR : process_nonlab : $incomingRefDetailID : " . print_r($this->db->error(), true) . "\n"; return ""; } $rows = $qry->result_array(); if (count($rows) > 0) { $mikroID = $rows[0]["mikroID"]; $nl = ""; if ($mikroID > 0) { $nl = $this->get_nonlab("mikro", $mikroID); return $nl; } } //papsmear $sql = "select ifnull(Other_PapSmearID,0) papsmearID from incoming_ref_detail join t_orderdetail on T_OrderDetailT_OrderHeaderID = incomingRefDetailNewT_OrderHeaderID and T_OrderDetailT_TestID = incomingRefDetailT_TestID and T_OrderDetailIsActive = 'Y' left join other_papsmear on T_OrderDetailID = Other_PapSmearT_OrderDetailID and Other_PapSmearIsActive = 'Y' where incomingRefDetailID = ? "; $qry = $this->db->query($sql, array($incomingRefDetailID)); if (! $qry) { echo "ERR : process_nonlab : $incomingRefDetailID : " . print_r($this->db->error(), true) . "\n"; return ""; } $rows = $qry->result_array(); if (count($rows) > 0) { $papsmearID = $rows[0]["papsmearID"]; $nl = ""; if ($papsmear > 0) { $nl = $this->get_nonlab("papsmear", $papsmearID); return $nl; } } //lcprep $sql = "select ifnull(Other_LcprepID,0) lcprepID from incoming_ref_detail join t_orderdetail on T_OrderDetailT_OrderHeaderID = incomingRefDetailNewT_OrderHeaderID and T_OrderDetailT_TestID = incomingRefDetailT_TestID and T_OrderDetailIsActive = 'Y' left join other_lcprep on T_OrderDetailID = Other_LcprepT_OrderDetailID and Other_LcprepIsActive = 'Y' where incomingRefDetailID = ? "; $qry = $this->db->query($sql, array($incomingRefDetailID)); if (! $qry) { echo "ERR : process_nonlab : $incomingRefDetailID : " . print_r($this->db->error(), true) . "\n"; return ""; } $rows = $qry->result_array(); if (count($rows) > 0) { $lcprepID = $rows[0]["lcprepID"]; $nl = ""; if ($lcprepID > 0) { $nl = $this->get_nonlab("lcprep", $lcprepID); return $nl; } } //fna $sql = "select ifnull(Other_FnaID,0) fnaID from incoming_ref_detail join t_orderdetail on T_OrderDetailT_OrderHeaderID = incomingRefDetailNewT_OrderHeaderID and T_OrderDetailT_TestID = incomingRefDetailT_TestID and T_OrderDetailIsActive = 'Y' left join other_fna on T_OrderDetailID = Other_FnaT_OrderDetailID and Other_FnaIsActive = 'Y' where incomingRefDetailID = ? "; $qry = $this->db->query($sql, array($incomingRefDetailID)); if (! $qry) { echo "ERR : process_nonlab : $incomingRefDetailID : " . print_r($this->db->error(), true) . "\n"; return ""; } $rows = $qry->result_array(); if (count($rows) > 0) { $fnaID = $rows[0]["fnaID"]; $nl = ""; if ($fnaID > 0) { $nl = $this->get_nonlab("fna", $fnaID); return $nl; } } // //cytology $sql = "select ifnull(Other_CytologiID,0) cytologiID from incoming_ref_detail join t_orderdetail on T_OrderDetailT_OrderHeaderID = incomingRefDetailNewT_OrderHeaderID and T_OrderDetailT_TestID = incomingRefDetailT_TestID and T_OrderDetailIsActive = 'Y' left join other_cytologi on T_OrderDetailID = Other_CytologiT_OrderDetailID and Other_CytologiIsActive = 'Y' where incomingRefDetailID = ? "; $qry = $this->db->query($sql, array($incomingRefDetailID)); if (! $qry) { echo "ERR : process_nonlab : $incomingRefDetailID : " . print_r($this->db->error(), true) . "\n"; return ""; } $rows = $qry->result_array(); if (count($rows) > 0) { $cytologiID = $rows[0]["cytologiID"]; $nl = ""; if ($cytologiID > 0) { $nl = $this->get_nonlab("cytologi", $cytologiID); return $nl; } } } function cek() { $sql = "select tx_branch_status.*, M_BranchName from tx_branch_status join m_branch on TxBranchStatusM_BranchID = M_BranchID where TxBranchStatusIsSent = 'N' and TxBranchStatusRetry < 20 order by TxBranchStatusRetry, TxBranchStatusID limit 0,30"; $qry = $this->db->query($sql); $sql_update = "update tx_branch_status set TxBranchStatusIsSent=?, TxBranchStatusRetry = TxBranchStatusRetry + 1 where TxBranchStatusID = ?"; if ($qry) { $rows = $qry->result_array(); print_r($rows); } } function process() { $sql = "select tx_branch_status.*, M_BranchName from tx_branch_status join m_branch on TxBranchStatusM_BranchID = M_BranchID where TxBranchStatusIsSent = 'N' and TxBranchStatusRetry < 20 order by TxBranchStatusRetry, TxBranchStatusID limit 0,30"; // $sql = "select tx_branch_status.*, M_BranchName // from tx_branch_status // join m_branch on TxBranchStatusM_BranchID = M_BranchID // where TxBranchStatusID = 234623 // order by TxBranchStatusRetry, TxBranchStatusID // limit 0,30"; $qry = $this->db->query($sql); $sql_update = "update tx_branch_status set TxBranchStatusIsSent=?, TxBranchStatusRetry = TxBranchStatusRetry + 1 where TxBranchStatusID = ?"; if ($qry) { $rows = $qry->result_array(); foreach ($rows as $r) { $param = $r["TxBranchStatusJson"]; $stage = $r["TxBranchStatusStage"]; $ipAddress = $r["TxBranchStatusM_BranchIP"]; $branchName = $r["M_BranchName"]; $txID = $r["TxBranchStatusID"]; if ($stage == "VALIDATION") { //cek nonlab $j_param = json_decode($param, true); foreach ($j_param as $idx => $j) { if (isset($j["incomingRefDetailID"])) { $nonlab_result = $this->process_nonlab($j["incomingRefDetailID"]); if ($nonlab_result != array()) { $j_param[$idx]["nonlab_result"] = $nonlab_result; $param = json_encode($j_param); } } } } $url = "http://$ipAddress/one-api-lab/tools/xstatusbranch_v4/update"; $rst = $this->post($url, $param); if ($rst["status"] == "OK") { $this->xlog("Update status $stage to $branchName @ $ipAddress [OK]"); $this->db->query($sql_update, array('Y', $txID)); } else { $err_msg = print_r($rst, true); $this->xlog("Update status $stage to $branchName @ $ipAddress [ERR] : $err_msg"); $this->db->query($sql_update, array('N', $txID)); } } } else { $this->xlog("Err: " . print_r($this->db->error(), true)); } } function xlog($message) { $dt = date("Y-m-d H:i:s"); echo "$dt $message\n"; } function post($url, $data) { $zdata = gzdeflate($data, 9); $ch = curl_init($url); $this->xlog("Post to : " . $url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $zdata); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); curl_setopt($ch, CURLOPT_TIMEOUT, 60); curl_setopt( $ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($zdata) ) ); $result = curl_exec($ch); $curl_error = curl_error($ch); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if ($result === false) { return array( "status" => "ERR", "message" => $curl_error, "http_code" => $http_code ); } $rst = json_decode($result, true); return $rst; } }