db_onedev = $this->load->database("onedev", true); } public function getsetup() { try { // if (!$this->isLogin) { // $this->sys_error("Invalid Token"); // exit; // } $sql = "SELECT * FROM mgm_mcu WHERE Mgm_McuIsActive = 'Y'"; $qry = $this->db_onedev->query($sql, []); $last_qry = $this->db_onedev->last_query(); if (!$qry) { $message = $this->db_onedev->error(); $message['last_qry'] = $last_qry; $this->sys_error($message); exit; } $data = $qry->result_array(); $result = [ "records" => $data, ]; $this->sys_ok($result); } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } public function getCorporate() { try { // if (!$this->isLogin) { // $this->sys_error("Invalid Token"); // exit; // } $prm = $this->sys_input; $search = '%' . $prm['search'] . '%'; $sql = "SELECT CorporateID, CONCAT(CorporateCode, '-','CorporateName') as CorporateName FROM corporate WHERE CorporateIsActive = 'Y' AND (CONCAT(CorporateCode, '-',CorporateName) LIKE ?) "; $qry = $this->db_onedev->query($sql, [$search]); $last_qry = $this->db_onedev->last_query(); if (!$qry) { $message = $this->db_onedev->error(); $message['last_qry'] = $last_qry; $this->sys_error($message); exit; } $data = $qry->result_array(); $result = [ "records" => $data, ]; $this->sys_ok($result); } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function search() { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $page = $prm["page"]; $setup = $prm['setup']; $startDate = $prm['startDate']; $endDate = $prm['endDate']; $status = $prm['status']; $search = '%' . $prm['search'] . '%'; $ROW_PER_PAGE = 20; $start_offset = 0; // print_r($prm); $sqlStatus = ""; if ($status == 'Aktif') { $sqlStatus = "AND (CASE WHEN Void_OrderID IS NULL THEN 'N' WHEN Void_OrderID IS NOT NULL THEN 'Y' END) = 'N'"; } if ($status == 'Void') { $sqlStatus = "AND (CASE WHEN Void_OrderID IS NULL THEN 'N' WHEN Void_OrderID IS NOT NULL THEN 'Y' END) = 'Y'"; } if (isset($prm["page"])) { if ( is_numeric($prm["page"]) && $prm["page"] > 0 ) { $start_offset = ($page - 1) * $ROW_PER_PAGE; } } $sql = "SELECT * FROM `s_menu` WHERE `S_MenuName` = 'nonlab upload document' AND `S_MenuIsActive` = 'Y' "; $qry = $this->db_onedev->query($sql, []); if (!$qry) { $last_qry = $this->db_onedev->last_query(); $message = $this->db_onedev->error(); $message['last_qry'] = $last_qry; $this->sys_error("Error get url "); exit; } $url = $qry->row_array()['S_MenuUrl']; $sql = "SELECT COUNT(T_OrderHeaderID) as total FROM t_orderheader JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID LEFT JOIN m_title ON M_PatientM_TitleID = M_TitleID JOIN corporate ON T_OrderHeaderCorporateID = CorporateID LEFT JOIN mgm_mcu ON T_OrderHeaderMgm_McuID = Mgm_McuID LEFT JOIN m_user ud ON T_OrderHeaderCreatedUserID = ud.M_UserID LEFT JOIN m_staff sd ON ud.M_UserM_StaffID = sd.M_StaffID LEFT JOIN void_order ON T_OrderHeaderID = Void_OrderT_OrderHeaderID LEFT JOIN m_user vd ON Void_OrderUserID = vd.M_UserID LEFT JOIN m_staff sv ON vd.M_UserM_StaffID = sv.M_StaffID WHERE DATE(T_OrderHeaderDate) BETWEEN ? AND ? AND (T_OrderHeaderLabNumber LIKE ? OR M_PatientName LIKE ?) {$sqlStatus} -- AND T_OrderHeaderIsActive = 'Y' "; $qry = $this->db_onedev->query($sql, [$startDate, $endDate, $search, $search]); if (!$qry) { $last_qry = $this->db_onedev->last_query(); $message = $this->db_onedev->error(); $message['last_qry'] = $last_qry; $this->sys_error("Error search total"); exit; } $total = $qry->row_array()['total']; $sql = "SELECT T_OrderHeaderID as orderID, T_OrderHeaderLabNumber as labNumber, DATE_FORMAT(T_OrderHeaderDate, '%d-%m-%Y %H:%i') as orderDate, sd.M_StaffName as staffName, CorporateName, CONCAT(IFNULL(M_TitleName, ''), IF(M_TitleName IS NULL, '', '. '), M_PatientName) AS patientName, Void_OrderReason as reason, sv.M_StaffName as voidUser, Void_OrderUserID, DATE_FORMAT(Void_OrderCreated, '%d-%m-%Y %H:%i') as voidDate, Void_OrderID , CASE WHEN Void_OrderID IS NULL THEN 'N' WHEN Void_OrderID IS NOT NULL THEN 'Y' END as status FROM t_orderheader JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID LEFT JOIN m_title ON M_PatientM_TitleID = M_TitleID JOIN corporate ON T_OrderHeaderCorporateID = CorporateID LEFT JOIN mgm_mcu ON T_OrderHeaderMgm_McuID = Mgm_McuID LEFT JOIN m_user ud ON T_OrderHeaderCreatedUserID = ud.M_UserID LEFT JOIN m_staff sd ON ud.M_UserM_StaffID = sd.M_StaffID LEFT JOIN void_order ON T_OrderHeaderID = Void_OrderT_OrderHeaderID LEFT JOIN m_user vd ON Void_OrderUserID = vd.M_UserID LEFT JOIN m_staff sv ON vd.M_UserM_StaffID = sv.M_StaffID WHERE DATE(T_OrderHeaderDate) BETWEEN ? AND ? AND (T_OrderHeaderLabNumber LIKE ? OR M_PatientName LIKE ?) {$sqlStatus} -- AND T_OrderHeaderIsActive = 'Y' LIMIT ? OFFSET ? "; $qry = $this->db_onedev->query($sql, [$startDate, $endDate, $search, $search, $ROW_PER_PAGE, $start_offset]); if (!$qry) { $last_qry = $this->db_onedev->last_query(); $message = $this->db_onedev->error(); $message['last_qry'] = $last_qry; $this->sys_error("Error search"); exit; } $result = [ "total" => ceil($total / $ROW_PER_PAGE), "records" => $qry->result_array(), "url" => $url, "qry" => $this->db_onedev->last_query() ]; $this->sys_ok($result); } function voidOrder() { // $this->db_onedev->trans_begin(); // $this->db_onedev->trans_rollback(); // $this->db_onedev->trans_commit(); if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $this->db_onedev->trans_begin(); $prm = $this->sys_input; $id = $prm['id']; $reason = $prm['reason']; if (trim($prm['reason']) == "" || $prm['reason'] == null) { $this->sys_error("alasan harus diisi"); exit; } $userID = $this->sys_user['M_UserID']; $sql = "UPDATE t_orderheader SET T_OrderHeaderIsActive = 'N', T_OrderHeaderDeleted = NOW(), T_OrderHeaderDeletedUserID = ? WHERE T_OrderHeaderID = ?"; $qry = $this->db_onedev->query($sql, [$userID, $id]); if (!$qry) { $last_qry = $this->db_onedev->last_query(); $message = $this->db_onedev->error(); $message['last_qry'] = $last_qry; $this->sys_error("Error delete order"); $this->db_onedev->trans_rollback(); exit; } $sql = "UPDATE t_orderdetail SET T_OrderDetailIsActive = 'N', T_OrderDetailDeletedUserID = ?, T_OrderDetailDeleted = NOW() WHERE T_OrderDetailT_OrderHeaderID = ?"; $qry = $this->db_onedev->query($sql, [$userID, $id]); if (!$qry) { $last_qry = $this->db_onedev->last_query(); $message = $this->db_onedev->error(); $message['last_qry'] = $last_qry; $this->sys_error("Error delete order detail"); $this->db_onedev->trans_rollback(); exit; } $sql = "INSERT INTO void_order( Void_OrderT_OrderHeaderID, Void_OrderReason, Void_OrderUserID, Void_OrderCreatedUserID, Void_OrderCreated) VALUES(?,?,?,?,NOW())"; $qry = $this->db_onedev->query($sql, [$id, $reason, $userID, $userID]); if (!$qry) { $last_qry = $this->db_onedev->last_query(); $message = $this->db_onedev->error(); $message['last_qry'] = $last_qry; $this->sys_error("Error delete order detail"); $this->db_onedev->trans_rollback(); exit; } $sql = "UPDATE mcu_preregister_patients SET Mcu_PreregisterPatientsT_OrderHeaderID = 0, Mcu_PreregisterPatientsIsRegistered = 'N', Mcu_PreregisterPatientsLastUpdated = NOW() WHERE Mcu_PreregisterPatientsT_OrderHeaderID = ?"; $qry = $this->db_onedev->query($sql, [$id]); if (!$qry) { $last_qry = $this->db_onedev->last_query(); $message = $this->db_onedev->error(); $message['last_qry'] = $last_qry; $this->sys_error("Error update preregister"); $this->db_onedev->trans_rollback(); exit; } $this->db_onedev->trans_commit(); $this->sys_ok("OK"); } }