db_onedev = $this->load->database("onedev", true); // $this->load->library("SsPriceMou"); } public function index() { echo "CPONE RESUME INDIVIDU API"; } public function getpatient($setupID, $startDate, $endDate, $debug = 'N') { $sql = "SELECT T_OrderHeaderID AS orderID, IFNULL(Mcu_ResumeStatus, 'NEW') as status, T_OrderHeaderM_BranchID AS branchID, DATE_FORMAT(T_OrderHeaderDate, '%d-%m-%Y') AS orderDate, T_OrderHeaderLabNumber AS labNumber, T_OrderHeaderM_PatientID AS patientID, T_OrderHeaderCorporateID AS corporateID, T_OrderHeaderMgm_McuID AS setupID, UPPER(T_OrderHeaderM_PatientAge) AS patientAge, M_PatientNoReg AS patientReg, M_PatientName AS patientName, UPPER(CONCAT(IF(ISNULL(M_TitleName),'',CONCAT(M_TitleName,'.')), ' ', IFNULL(M_PatientPrefix,''), ' ', M_PatientName, ' ', IFNULL(M_PatientSuffix,''))) AS patientFullname, CASE WHEN LOWER(M_PatientGender) = 'male' THEN 'LAKI-LAKI' WHEN LOWER(M_PatientGender) = 'female' THEN 'PEREMPUAN' END patientGender, M_PatientPhoto AS patientFoto, M_PatientPhotoThumb AS patientFotoThumb, CorporateCode AS corporateCode, UPPER(CorporateName) AS corporateName, M_BranchCode AS branchID, M_BranchName AS branchName FROM t_orderheader JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND (DATE_FORMAT(T_OrderHeaderDate, '%Y-%m-%d') BETWEEN ? AND ?) AND T_OrderHeaderMgm_McuID = ? AND T_OrderHeaderIsActive = 'Y' JOIN corporate ON T_OrderHeaderCorporateID = CorporateID JOIN m_branch ON T_OrderHeaderM_BranchID = M_BranchID LEFT JOIN m_title ON M_PatientM_TitleID = M_TitleID LEFT JOIN mcu_resume ON T_OrderHeaderID = Mcu_ResumeT_OrderHeaderID AND Mcu_ResumeIsActive = 'Y' ORDER BY T_OrderHeaderLabNumber "; $query = $this->db_onedev->query($sql, [$startDate, $endDate, $setupID]); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } $result = $query->result_array(); if ($debug == "N") { return $result; } else { $this->sys_ok($result); } } public function getDetail($orderID, $debug = 'N') { //get detail yang belum ada di resume_detail $sql = "SELECT * FROM ( SELECT T_OrderDetailID AS detailOrderID, Group_ResultName AS groupResultName, So_ResultEntryID AS resultID, So_ResultEntryValidation1 AS resultValidation, So_ResultEntryStatus AS resultStatus, T_OrderDetailT_TestID AS testID, T_TestName AS testName, IFNULL(Mcu_ResumeDetailsID, 0) AS resumeDetailsID, IFNULL(Mcu_ResumeID, 0) AS resumeID, Mcu_ResumeKesimpulan AS resumeKesimpulan, Mcu_ResumeRekomendasi AS resumeRekomendasi, Mcu_ResumeSaran AS resumeSaran, Mcu_ResumeDetailsResult resumeDetailResult, So_ResultEntryDetailResult AS resumeEntryResult, Group_ResultResumeMcu AS category, CASE WHEN Group_ResultResumeMcu = 'NONLAB' THEN CASE WHEN Mcu_ResumeSaran IS NOT NULL AND TRIM(Mcu_ResumeSaran) <> '' THEN Mcu_ResumeSaran WHEN Mcu_ResumeSaran IS NULL OR TRIM(Mcu_ResumeSaran) <> '' THEN fn_getadvicenonlab(So_ResultEntryID) ELSE Mcu_ResumeSaran END WHEN Group_ResultResumeMcu = 'FISIK' THEN CASE WHEN Mcu_ResumeSaran IS NOT NULL AND TRIM(Mcu_ResumeSaran) <> '' THEN Mcu_ResumeSaran WHEN Mcu_ResumeSaran IS NULL OR TRIM(Mcu_ResumeSaran) <> '' THEN fn_getadvicefisik(So_ResultEntryID) ELSE Mcu_ResumeSaran END ELSE Mcu_ResumeSaran END AS saranso, fn_countabnormal(So_ResultEntryID) AS isNormal, TRIM(CONCAT(M_DoctorPrefix,' ',M_DoctorPrefix2, ' ', M_DoctorName, ' ',M_DoctorSuffix,' ', M_DoctorSuffix2, ' ')) doctorName, Mcu_ResumeM_DoctorID AS doctorID, IFNULL(Mcu_ResumeStatus,'NEW') AS status, CASE WHEN Mcu_ResumeDetailsResult IS NULL OR TRIM(Mcu_ResumeDetailsResult) = '' THEN So_ResultEntryDetailResult WHEN Mcu_ResumeDetailsResult IS NOT NULL OR TRIM(Mcu_ResumeDetailsResult) <> '' THEN Mcu_ResumeDetailsResult END AS result FROM t_orderdetail JOIN so_resultentry ON T_OrderDetailT_OrderHeaderID = So_ResultEntryT_OrderHeaderID AND T_OrderDetailID = So_ResultEntryT_OrderDetailID AND So_ResultEntryIsActive = 'Y' AND So_ResultEntryValidation1 = 'Y' AND T_OrderDetailT_OrderHeaderID = ? JOIN group_resultdetail ON T_OrderDetailT_TestID = Group_ResultDetailT_TestID AND Group_ResultDetailIsActive ='Y' JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND Group_ResultResumeMcu IN ('NONLAB', 'FISIK') AND Group_ResultIsActive ='Y' JOIN t_test ON T_OrderDetailT_TestID= T_TestID AND T_TestIsActive = 'Y' LEFT JOIN nonlab_template_mcu ON T_TestNat_TestID = NonlabTemplateMcuT_TestID AND NonlabTemplateMcuM_LangID = 1 AND NonlabTemplateMcuIsActive = 'Y' LEFT JOIN so_resultentrydetail ON So_ResultEntryID = So_ResultEntryDetailSo_ResultEntryID AND NonlabTemplateMcuNonlabTemplateDetailID = So_ResultEntryDetailNonlab_TemplateDetailID AND So_ResultEntryDetailIsActive = 'Y' AND T_OrderDetailIsActive = 'Y' LEFT JOIN mcu_resume ON T_OrderDetailT_OrderHeaderID = Mcu_ResumeT_OrderHeaderID LEFT JOIN mcu_resumedetails ON T_OrderDetailID = Mcu_ResumeDetailsT_OrderDetailID AND Mcu_ResumeDetailsIsActive = 'Y' AND Mcu_ResumeID = Mcu_ResumeDetailsMcu_ResumeID LEFT JOIN m_doctor ON Mcu_ResumeM_DoctorID = M_DoctorID AND M_DoctorIsActive = 'Y' LEFT JOIN so_resultentry_category_result ON So_ResultEntryCategoryResultSo_ResultEntryID = So_ResultEntryID AND So_ResultEntryCategoryResultIsActive = 'Y' GROUP BY T_OrderDetailT_TestID ) x WHERE resumeDetailsID = 0 OR resumeDetailResult IS NULL OR resumeDetailResult = '' ORDER BY category"; $query = $this->db_onedev->query($sql, [$orderID]); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } $result = $query->result_array(); $this->load->library("Kesimpulanfisik"); for ($i = 0; $i < count($result); $i++) { if ($result[$i]['category'] == 'FISIK') { $kesimpulanFisik = $this->kesimpulanfisik->kesimpulan($result[$i]['resultID']); $result[$i]['result'] = $kesimpulanFisik; $result[$i]['resumeEntryResult'] = $kesimpulanFisik; if ($kesimpulanFisik != 'Tidak ditemukan kelainan.') { $result[$i]['isNormal'] = 1; } else { $result[$i]['isNormal'] = 0; } } } if ($debug == "N") { return $result; } else { $this->sys_ok($result); } } public function inject($setupID, $startDate, $endDate) { $order = $this->getpatient($setupID, $startDate, $endDate); for ($i = 0; $i < count($order); $i++) { $ord = $order[$i]; $detail = $this->getDetail($ord['orderID']); $order[$i]['dtl'] = $detail; } $this->sys_ok($order); } public function injectV2() { $jsonBefore = ""; $jsonAfter = ""; $prm = $this->sys_input; $action = 'INJECT DETAIL BELUM INPUT'; $data = $prm['data']; $resumeID = $data['resumeID']; $userid = '9999'; $sql = "SELECT * FROM mcu_resume WHERE Mcu_ResumeID = ? AND Mcu_ResumeIsActive = 'Y'"; $query = $this->db_onedev->query($sql, [$resumeID]); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } $resumeBefore = $query->result_array()[0]; $jsonBefore = $resumeBefore; //get detail for log $sql = "SELECT * FROM mcu_resumedetails WHERE Mcu_ResumeDetailsMcu_ResumeID = ? AND Mcu_ResumeDetailsIsActive = 'Y'"; $query = $this->db_onedev->query($sql, [$resumeID]); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } $detailResume = $query->result_array(); $jsonBefore['detail'] = $detailResume; $sql = "SELECT Mcu_ResumeDetailsID FROM mcu_resumedetails WHERE Mcu_ResumeDetailsT_OrderDetailID = ? AND Mcu_ResumeDetailsT_TestID = ? AND Mcu_ResumeDetailsCategory = ? AND Mcu_ResumeDetailsIsActive = 'Y'"; $query = $this->db_onedev->query($sql, [ $data['detailOrderID'], $data['testID'], $data['category'], ]); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } $cekDetail = $query->result_array(); if (count($cekDetail) == 0) { $action = 'INJECT DETAIL BELUM INPUT'; $sql = "INSERT INTO mcu_resumedetails( Mcu_ResumeDetailsMcu_ResumeID, Mcu_ResumeDetailsCategory, Mcu_ResumeDetailsT_OrderDetailID, Mcu_ResumeDetailsT_TestID, Mcu_ResumeDetailsResult, Mcu_ResumeDetailsCreated, Mcu_ResumeDetailsUserID) VALUES(?,?,?,?,?,NOW(),?)"; $query = $this->db_onedev->query($sql, [ $resumeID, $data['category'], $data['detailOrderID'], $data['testID'], $data['resumeEntryResult'], $userid, ]); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } } else { $action = 'UPDATE DETAIL INPUT KOSONG'; $sql = "UPDATE mcu_resumedetails SET Mcu_ResumeDetailsResult = ?, Mcu_ResumeDetailsLastUpdated = NOW(), Mcu_ResumeDetailsUserID = ? WHERE Mcu_ResumeDetailsID = ?"; $query = $this->db_onedev->query($sql, [ $data['resumeEntryResult'], $userid, $cekDetail[0]['Mcu_ResumeDetailsID'] ]); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } } $sql = "SELECT * FROM mcu_resume WHERE Mcu_ResumeID = ? AND Mcu_ResumeIsActive = 'Y'"; $query = $this->db_onedev->query($sql, [$resumeID]); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } $jsonAfter = $query->result_array()[0]; //get detail for log $sql = "SELECT * FROM mcu_resumedetails WHERE Mcu_ResumeDetailsMcu_ResumeID = ? AND Mcu_ResumeDetailsIsActive = 'Y'"; $query = $this->db_onedev->query($sql, [$resumeID,]); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } $detailAfter = $query->result_array(); $jsonAfter['detail'] = $detailAfter; $sql = "INSERT INTO cpone_log.log_mcu_resume_inject (log_Mcu_ResumeMcu_ResumeID, log_Mcu_ResumeJsonBefore, log_Mcu_ResumeJsonAfter, log_Mcu_ResumeJsonPrm, log_Mcu_ResumeType, log_Mcu_ResumeUserID, log_Mcu_ResumeCreated) VALUES(?,?,?,?,?,?,NOW())"; $query = $this->db_onedev->query($sql, [ $resumeID, json_encode($jsonBefore), json_encode($jsonAfter), json_encode($prm), $action, $userid ]); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } $this->sys_ok('ok'); } }