db_onedev = $this->load->database("onedev", true); $this->load->library('Mcudashboard'); // $this->load->library("SsPriceMou"); } private function sync_resume_status_dashboard($resumeID) { $resumeID = intval($resumeID); if ($resumeID <= 0) { return; } $this->mcudashboard->upsert_patient_resume_status($resumeID); } private function upsert_published_dashboard_on_new_to_val($orderID, $oldStatus, $newStatus, $userID) { $orderID = intval($orderID); $userID = intval($userID); $oldStatus = strtoupper(trim((string)$oldStatus)); $newStatus = strtoupper(trim((string)$newStatus)); if ($orderID <= 0 || !($oldStatus === 'NEW' && $newStatus === 'VAL')) { return; } $sql = "INSERT INTO published_mcu_dashboard ( Published_McuDasboardT_OrderHeaderID, Published_McuDasboardStatus, Published_McuDasboardIsActive, Published_McuDasboardCreated, Published_McuDasboardCreatedUserID, Published_McuDasboardLastUpdated, Published_McuDasboardLastUpdatedUserID ) VALUES (?, 'N', 'Y', NOW(), ?, NOW(), ?) ON DUPLICATE KEY UPDATE Published_McuDasboardStatus = 'N', Published_McuDasboardIsActive = 'Y', Published_McuDasboardLastUpdated = NOW(), Published_McuDasboardLastUpdatedUserID = VALUES(Published_McuDasboardLastUpdatedUserID)"; $this->db_onedev->query($sql, array($orderID, $userID, $userID)); } 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, []); if (!$qry) { $message = $this->db_onedev->error(); $last_qry = $this->db_onedev->last_query(); $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 get_report_mcu() { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $mgmMcuID = 0; if (isset($prm['Mgm_McuID'])) { $mgmMcuID = intval($prm['Mgm_McuID']); } else if (isset($prm['setupID'])) { $mgmMcuID = intval($prm['setupID']); } if ($mgmMcuID <= 0) { $this->sys_error("Mgm_McuID is required"); exit; } $sql = "SELECT t.Mcu_ReportUrlTemplateID AS id, t.Mcu_ReportUrlTemplateName AS reportName, t.Mcu_ReportUrlTemplateType AS reportType, t.Mcu_ReportUrlTemplateUrl AS reportUrl, t.Mcu_ReportUrlTemplateParams AS reportParams, IF(mr.Mgm_McuReportMcu_ReportUrlTemplateID = t.Mcu_ReportUrlTemplateID, 'Y', 'N') AS selected FROM mcu_report_url_template t LEFT JOIN mgm_mcureport mr ON mr.Mgm_McuReportMcu_ReportUrlTemplateID = t.Mcu_ReportUrlTemplateID AND mr.Mgm_McuReportMgm_McuID = ? AND mr.Mgm_McuReportIsActive = 'Y' WHERE t.Mcu_ReportUrlTemplateIsActive = 'Y' ORDER BY t.Mcu_ReportUrlTemplateName ASC"; $query = $this->db_onedev->query($sql, array($mgmMcuID)); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } $rows = $query->result_array(); $selected = null; foreach ($rows as $row) { if ($row['selected'] === 'Y') { $selected = $row; break; } } $result = array( "total" => count($rows), "records" => $rows, "selected" => $selected ); $this->sys_ok($result); exit; } function search() { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $search = '%' . $prm['search'] . '%'; $page = $prm["page"]; $startDate = $prm["startDate"]; $endDate = $prm["endDate"]; $setupID = $prm["setupID"]; $ROW_PER_PAGE = 20; $start_offset = 0; // print_r($prm); if (isset($prm["page"])) { if ( is_numeric($prm["page"]) && $prm["page"] > 0 ) { $start_offset = ($page - 1) * $ROW_PER_PAGE; } } $sql = "SELECT COUNT(T_OrderHeaderID) AS total FROM t_orderheader JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID 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 WHERE (DATE_FORMAT(T_OrderHeaderDate, '%Y-%m-%d') BETWEEN ? AND ?) AND (M_PatientName LIKE ? OR T_OrderHeaderLabNumber LIKE ?) AND T_OrderHeaderMgm_McuID = ? AND T_OrderHeaderIsActive = 'Y' ORDER BY T_OrderHeaderLabNumber "; $query = $this->db_onedev->query($sql, [$startDate, $endDate, $search, $search, $setupID]); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } $totalPage = $query->row_array()['total']; $sql = "SELECT T_OrderHeaderID AS orderID, IFNULL(reFisik.So_ResultEntryID, 0) AS reIDHaji, 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, IF(M_BackgroundReportCode IS NULL OR M_BackgroundReportCode = '', 'DFLT', M_BackgroundReportCode) AS bg_code, IF(M_BackgroundReportPrm IS NULL OR M_BackgroundReportPrm = '', '', M_BackgroundReportPrm) AS bg_prm, UPPER(T_OrderHeaderM_PatientAge) AS patientAge, DATE_FORMAT(M_PatientDOB, '%d-%m-%Y') AS patientDOB, 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 JOIN corporate ON T_OrderHeaderCorporateID = CorporateID JOIN m_branch ON T_OrderHeaderM_BranchID = M_BranchID LEFT JOIN mgm_background_report ON T_OrderHeaderMgm_McuID = Mgm_BackgroundReportMgm_McuID AND Mgm_BackgroundReportIsActive = 'Y' LEFT JOIN m_background_report ON Mgm_BackgroundReportM_BackgroundReportCode = M_BackgroundReportCode AND M_BackgroindReportIsActive = 'Y' LEFT JOIN m_title ON M_PatientM_TitleID = M_TitleID LEFT JOIN mcu_resume ON T_OrderHeaderID = Mcu_ResumeT_OrderHeaderID AND Mcu_ResumeIsActive = 'Y' LEFT JOIN so_resultentry reFisik ON T_OrderHeaderID = reFisik.So_ResultEntryT_OrderHeaderID AND reFisik.So_ResultEntryIsActive = 'Y' AND reFisik.So_ResultEntryNonlab_TemplateID = '27' WHERE (DATE_FORMAT(T_OrderHeaderDate, '%Y-%m-%d') BETWEEN ? AND ?) AND (M_PatientName LIKE ? OR T_OrderHeaderLabNumber LIKE ?) AND T_OrderHeaderMgm_McuID = ? AND T_OrderHeaderIsActive = 'Y' ORDER BY T_OrderHeaderLabNumber LIMIT ? OFFSET ? "; $query = $this->db_onedev->query($sql, [$startDate, $endDate, $search, $search, $setupID, $ROW_PER_PAGE, $start_offset]); $sql_search = $this->db_onedev->last_query(); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } // echo $this->db_onedev->last_query(); $result = [ "total" => ceil($totalPage / $ROW_PER_PAGE), "records" => $query->result_array(), "sql" => $sql_search ]; $this->sys_ok($result); } function getdetail() { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $orderid = $prm['orderid']; $sql = "SELECT Mcu_ResumeID as resumeID, Mcu_ResumeM_DoctorID as resumeDoctorID, Mcu_ResumeT_OrderHeaderID as orderID, Mcu_ResumeStatus as status, Mcu_ResumeVerification as verivication, Mcu_ResumeValidation as validation, Mcu_ResumeKesimpulan as kesimpulan, IFNULL(Mcu_ResumeEngConlusion, '') as conclusion, Mcu_ResumeRekomendasi as rekomendasi, IFNULL(Mcu_ResumeEngRecomendation, '') as recomendation, Mcu_ResumeSaran as saran, IFNULL(Mcu_ResumeEngAdvice, '') as advice, IFNULL(Mcu_ResumeEngAdvice, '') as saran_eng, IFNULL(Mcu_ResumeMcu_FitnessCategoryID, 0) as fitnessCategory, CONCAT(M_DoctorPrefix,' ',M_DoctorPrefix2, ' ', M_DoctorName, ' ',M_DoctorSuffix,' ', M_DoctorSuffix2, ' ') doctorName FROM mcu_resume LEFT JOIN mcu_resume_eng ON Mcu_ResumeEngMcu_ResumeID = Mcu_ResumeID AND Mcu_ResumeEngIsActive = 'Y' LEFT JOIN m_doctor ON Mcu_ResumeM_DoctorID = M_DoctorID WHERE Mcu_ResumeT_OrderHeaderID = ? AND Mcu_ResumeIsActive = 'Y'"; $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; } // echo $this->db_onedev->last_query(); $getHeader = $query->result_array(); $dataHeader = array(); if (count($getHeader) == 0) { $dataHeader = array( "resumeID" => 0, "resumeDoctorID" => 0, "orderID" => $orderid, "status" => 'NEW', "verivication" => 'N', "validation" => 'N', "kesimpulan" => '', "rekomendasi" => '', "saran" => '', "conclusion" => '', "recomendation" => '', "advice" => '', "fitnessCategory" => 0, "doctorName" => "", "puasaStatus" => null, "puasaLabel" => "" ); } else { $dataHeader = $getHeader[0]; $dataHeader['puasaStatus'] = null; $dataHeader['puasaLabel'] = ""; } $sqlPuasa = "SELECT OrderPhlebotomyStatus FROM order_phlebotomy WHERE OrderPhlebotomyT_OrderHeaderID = ? AND OrderPhlebotomyRequirement = 'puasa_tp' AND OrderPhlebotomyIsActive = 'Y' ORDER BY OrderPhlebotomyID DESC LIMIT 1"; $queryPuasa = $this->db_onedev->query($sqlPuasa, [$orderid]); if (!$queryPuasa) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } $puasaRow = $queryPuasa->row_array(); if (!empty($puasaRow)) { $statusPuasa = strtoupper(trim($puasaRow['OrderPhlebotomyStatus'])); $labelPuasa = ""; if ($statusPuasa === 'P') { $labelPuasa = "Puasa"; } else if ($statusPuasa === 'T') { $labelPuasa = "Tidak Puasa"; } $dataHeader['puasaStatus'] = $statusPuasa; $dataHeader['puasaLabel'] = $labelPuasa; } $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, IFNULL(Mcu_ResumeEngAdvice, '') AS resumeAdvice, IFNULL(Mcu_ResumeEngRecomendation, '') AS resumeRecomendation, IFNULL(Mcu_ResumeEngConlusion, '') AS resumeConclusion, 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 T_OrderDetailIsActive = 'Y' AND So_ResultEntryValidation1 = 'Y' 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 AND Mcu_ResumeIsActive = 'Y' LEFT JOIN mcu_resume_eng ON Mcu_ResumeEngMcu_ResumeID = Mcu_ResumeID AND Mcu_ResumeEngIsActive = 'Y' 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' WHERE T_OrderDetailT_OrderHeaderID = ? GROUP BY T_OrderDetailT_TestID UNION (SELECT T_OrderDetailID AS detailOrderID, 'ADDITIONAL' AS groupResultName, So_ResultEntryID AS resultID, So_ResultEntryValidation1 AS resultValidation, So_ResultEntryStatus AS resultStatus, T_OrderDetailT_TestID AS testID, 'ADDITIONAL' 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, IFNULL(Mcu_ResumeEngAdvice, '') AS resumeAdvice, IFNULL(Mcu_ResumeEngRecomendation, '') AS resumeRecomendation, IFNULL(Mcu_ResumeEngConlusion, '') AS resumeConclusion, Mcu_ResumeDetailsResult resumeDetailResult, 'Terlampir' AS resumeEntryResult, 'ADDITIONAL' AS category, '' 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, 'Terlampir' 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 T_OrderDetailIsActive = 'Y' JOIN t_test ON T_OrderDetailT_TestID= T_TestID AND T_TestIsActive = 'Y' JOIN so_resultentrydetail ON So_ResultEntryID = So_ResultEntryDetailSo_ResultEntryID AND So_ResultEntryDetailIsActive = 'Y' AND T_OrderDetailIsActive = 'Y' LEFT JOIN mcu_resume ON T_OrderDetailT_OrderHeaderID = Mcu_ResumeT_OrderHeaderID AND Mcu_ResumeIsActive = 'Y' LEFT JOIN mcu_resume_eng ON Mcu_ResumeEngMcu_ResumeID = Mcu_ResumeID AND Mcu_ResumeEngIsActive = 'Y' 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' WHERE T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailT_TestID IN (2571,2573,2573,3450,2572) GROUP BY T_OrderDetailT_TestID LIMIT 1) ) x ORDER BY category"; $queryGetDetail = ""; $query = $this->db_onedev->query($sql, [$orderid, $orderid]); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } $queryGetDetail = $this->db_onedev->last_query(); // echo $this->db_onedev->last_query(); $data = $query->result_array(); if(count($data) == 0){ $data = []; } $this->load->library("Kesimpulanfisik"); //getlab // { // "detailOrderID": "1632088", // "groupResultName": "Pemeriksaan Fisik", // "resultID": "97", // "resultValidation": "Y", // "resultStatus": "NEW", // "testID": "2562", // "testName": "Pemeriksaan Fisik", // "resumeDetailsID": "3", // "resumeID": "2", // "resumeKesimpulan": "Pada saat ini didapatkan kelainan berupa :
Takhikardi ( 120 x/menit ), Laju pernafasan ( 15 x/menit ), Tekanan Darah 120/80 mmHg ( Prehipertensi ), Suhu Febri, Overweight ( BMI : 24.09 )
Hernia : Umbilikus (D), Inguinal (D, S) edit", // "resumeRekomendasi": null, // "resumeSaran": null, // "resumeDetailResult": "Pada saat ini didapatkan kelainan berupa :
Takhikardi ( 120 x/menit ), Laju pernafasan ( 15 x/menit ), Tekanan Darah 120/80 mmHg ( Prehipertensi ), Suhu Febri, Overweight ( BMI : 24.09 )
Hernia : Umbilikus (D), Inguinal (D, S)", // "resumeEntryResult": null, // "category": "FISIK", // "isNormal": 1, // "doctorName": null, // "doctorID": "0", // "status": "NEW", // "result": "Pada saat ini didapatkan kelainan berupa :
Takhikardi ( 120 x/menit ), Laju pernafasan ( 15 x/menit ), Tekanan Darah 120/80 mmHg ( Prehipertensi ), Suhu Febri, Overweight ( BMI : 24.09 )
Hernia : Umbilikus (D), Inguinal (D, S)" // } $lab = $this->getlab($orderid, 'N'); $labArr = []; for ($i = 0; $i < count($lab); $i++) { $isNormal = 0; if ($lab[$i]['resultIsNormal'] == "N") { $isNormal = 1; } $data[] = [ "detailOrderID" => $lab[$i]['orderDetailID'], "groupResultName" => $lab[$i]['groupName'], "resultID" => $lab[$i]['resultID'], "resultValidation" => $lab[$i]['resultValidation'], "resultStatus" => $lab[$i]['resultStatus'], "testID" => $lab[$i]['testID'], "subGroupID" => $lab[$i]['subGroupID'], "testName" => $lab[$i]['groupName'], "resumeDetailsID" => $lab[$i]['resumeDetailsID'], "resumeID" => $lab[$i]['resumeID'], "resumeKesimpulan" => $lab[$i]['resumeKesimpulan'], "resumeRekomendasi" => $lab[$i]['resumeRekomendasi'], "resumeSaran" => $lab[$i]['saran'], "resumeAdvice" => $lab[$i]['resumeAdvice'], "resumeRecomendation" => $lab[$i]['resumeRecomendation'], "resumeConclusion" => $lab[$i]['resumeConclusion'], "saranso" => $lab[$i]['saran'], "resumeDetailResult" => $lab[$i]['resumeDetailResult'], "resumeEntryResult" => $lab[$i]['kelainan'], "generateKelainan" => $lab[$i]['generateKelainan'], "category" => "LAB", "isNormal" => $isNormal, "doctorName" => '', "doctorID" => '', "status" => $lab[$i]['resultStatus'], "result" => $lab[$i]['kelainan'] ]; } // $kesimpulanFisik = // $kesimpulanFisik = $this->kesimpulanfisik->kesimpulan('97'); for ($i = 0; $i < count($data); $i++) { if ($data[$i]['category'] == 'FISIK') { $kesimpulanFisik = $this->kesimpulanfisik->kesimpulan($data[$i]['resultID']); $data[$i]['result'] = $kesimpulanFisik; if ($kesimpulanFisik != 'Tidak ditemukan kelainan.') { $data[$i]['isNormal'] = 1; } else { $data[$i]['isNormal'] = 0; } } } $kesimpulanarr = []; $saranArr = []; for ($i = 0; $i < count($data); $i++) { if (trim($data[0]['resumeKesimpulan']) == '' || $data[0]['resumeKesimpulan'] == null) { if (intval($data[$i]['isNormal']) > 0) { if (trim($data[$i]['result']) != '') { # code .. $kesimpulanarr[] = $data[$i]['result']; } } } if (trim($data[0]['resumeSaran']) == '' || $data[0]['resumeSaran'] == null) { if (intval($data[$i]['isNormal']) > 0) { if (trim($data[$i]['saranso']) != '') { $explodeSaran = explode("@", $data[$i]['saranso']); if (count($explodeSaran) > 0) { array_push($saranArr, ...$explodeSaran); } } } } } // if (count($kesimpulanarr) > 0) { // $kesimpulan = implode(", ", $kesimpulanarr); // $saran = (implode(", ", array_unique($saranArr))); // $dataHeader['kesimpulan'] = $kesimpulan; // $dataHeader['saran'] = $saran; // for ($i = 0; $i < count($data); $i++) { // $data[$i]['resumeKesimpulan'] = $kesimpulan; // $data[$i]['resumeSaran'] = $saran; // } // } // if (trim($kesimpulan) != '') { // if ($kesimpulanFisik != 'Tidak ditemukan kelainan.') { // $kesimpulan = $kesimpulan . ", \n" . $kesimpulanFisik; // } // } else { // if ($kesimpulanFisik != 'Tidak ditemukan kelainan.') { // $kesimpulan = $kesimpulanFisik; // } // } $dataHeader['detail'] = $data; $result = [ "header" => $dataHeader, "records" => $data, "qry" => $queryGetDetail ]; $this->sys_ok($result); } function getdoctor() { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $search = $prm['search']; $query = " SELECT M_DoctorID, M_DoctorID doctorID, M_DoctorPrefix, M_DoctorPrefix2, M_DoctorName, M_DoctorSuffix, M_DoctorSuffix2, M_DoctorCode , CONCAT(M_DoctorPrefix,' ',M_DoctorPrefix2, ' ', M_DoctorName, ' ',M_DoctorSuffix,' ', M_DoctorSuffix2, ' ') doctorName FROM m_doctor WHERE M_DoctorIsActive = 'Y' AND CONCAT(M_DoctorPrefix,' ',M_DoctorPrefix2, ' ', M_DoctorName, ' ',M_DoctorSuffix,' ', M_DoctorSuffix2, ' ') LIKE '%$search%' "; //echo $query; $rows = $this->db_onedev->query($query)->result_array(); $result = array( "total" => count($rows), "records" => $rows, "query" => $this->db_onedev->last_query() ); $this->sys_ok($result); exit; } function getFitnessCategory() { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $query = "SELECT Mcu_FitnessCategoryID id, CONCAT(Mcu_FitnessCategoryName, ' (',Mcu_FitnessCategoryEng,')' ) as name, Mcu_FitnessCategoryEng as nameEng, Mcu_FitnessCategoryLevel as level FROM `mcu_fitness_category` WHERE `Mcu_FitnessCategoryIsActive` = 'Y'; "; //echo $query; $rows = $this->db_onedev->query($query)->result_array(); $result = array( "total" => count($rows), "records" => $rows, "query" => $this->db_onedev->last_query() ); $this->sys_ok($result); exit; } function save() { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $act = $prm['data']['act']; $data = $prm['data']; $userid = $this->sys_user["M_UserID"]; if ($act == 'VAL') { if ( $data['fitnessCategory'] == '' || intval($data['fitnessCategory']) == 0 || $data['fitnessCategory'] == null ) { $this->sys_error("Pilih kategori fitness atau generate terlebih dahulu"); exit; } $sql = "SELECT IFNULL(GROUP_CONCAT(DISTINCT So_ResultEntryValidation1), 'Y') as val FROM t_orderdetail JOIN so_resultentry ON T_OrderDetailT_OrderHeaderID = So_ResultEntryT_OrderHeaderID AND T_OrderDetailID = So_ResultEntryT_OrderDetailID AND So_ResultEntryIsActive = 'Y' AND T_OrderDetailIsActive = 'Y' AND So_ResultEntryT_OrderHeaderID = ? JOIN group_resultdetail ON T_OrderDetailT_TestID = Group_ResultDetailT_TestID AND T_OrderDetailT_TestID NOT IN (2571,2573,2573,3450,2572) AND Group_ResultDetailIsActive ='Y' JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND Group_ResultID <> 35 AND Group_ResultResumeMcu IN ('NONLAB', 'FISIK') AND Group_ResultIsActive ='Y' AND T_OrderDetailIsActive = 'Y'"; $query = $this->db_onedev->query($sql, [$data['orderID']]); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error_db("Error cek validasi " . $this->db_onedev->last_query()); exit; } $cekValidation = $query->row_array(); $expdCek = explode(',', $cekValidation['val']); if (in_array('N', $expdCek) && $cekValidation['val'] != null && trim($cekValidation['val']) != '' && count($expdCek) > 0) { $this->sys_error("Hasil Nonlab atau fisik belum di validasi ....."); exit; } } $status = 'NEW'; $statusLog = $act; $val = 'N'; $dt = '0000-00-00 00:00:00'; $statusBefore = 'NEW'; if ($act == 'VAL') { $status = 'VAL'; $val = 'Y'; $dt = date("Y-m-d h:i:s"); } else if ($act == 'UNVAL') { $val = 'N'; $status = 'NEW'; $dt = date("Y-m-d h:i:s"); } $jsonBefore = ""; $jsonAfter = ""; //insert mcu_resume $resumeID = 0; $sql = "SELECT * FROM mcu_resume WHERE Mcu_ResumeT_OrderHeaderID = ? AND Mcu_ResumeIsActive = 'Y'"; $query = $this->db_onedev->query($sql, [$data['orderID']]); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } $dataCek = $query->result_array(); if (count($dataCek) > 0 && isset($dataCek[0]['Mcu_ResumeStatus'])) { $statusBefore = $dataCek[0]['Mcu_ResumeStatus']; } if (count($dataCek) == 0) { $sql = "INSERT INTO mcu_resume (Mcu_ResumeT_OrderHeaderID, Mcu_ResumeStatus, Mcu_ResumeValidation, Mcu_ResumeValidationDateTime, Mcu_ResumeValidationUserID, Mcu_ResumeKesimpulan, Mcu_ResumeRekomendasi, Mcu_ResumeSaran, Mcu_ResumeMcu_FitnessCategoryID) VALUES(?,?,?,?,?,?,?,?,?)"; $query = $this->db_onedev->query($sql, [ $data['orderID'], $status, $val, $dt, $userid, $data['header']['kesimpulan'], $data['header']['rekomendasi'], $data['header']['saran'], $data['fitnessCategory'], ]); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } $resumeID = $this->db_onedev->insert_id(); $sql = "INSERT INTO mcu_resume_eng( Mcu_ResumeEngMcu_ResumeID, Mcu_ResumeEngAdvice, Mcu_ResumeEngConlusion, Mcu_ResumeEngRecomendation, Mcu_ResumeEngCreated, Mcu_ResumeEngCreatedUserID) VALUES(?,?,?,?,NOW(),?)"; $query = $this->db_onedev->query($sql, [ $resumeID, $data['header']['advice'], $data['header']['conclusion'], $data['header']['recomendation'], $userid ]); } else { if ($act != 'VAL' && $act != 'UNVAL') { $statusLog = "UPDATE"; } // if ($act == 'VAL') { // // $this->generate_kelainan_lab($data['orderID']); // } $jsonBefore = $dataCek[0]; $resumeID = $dataCek[0]['Mcu_ResumeID']; //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; } $detail = $query->result_array(); $jsonBefore['detail'] = $detail; $sql = "UPDATE mcu_resume SET Mcu_ResumeStatus = ?, Mcu_ResumeValidation = ?, Mcu_ResumeValidationDateTime = ?, Mcu_ResumeValidationUserID = ?, Mcu_ResumeKesimpulan = ?, Mcu_ResumeRekomendasi = ?, Mcu_ResumeSaran = ?, Mcu_ResumeMcu_FitnessCategoryID = ? WHERE Mcu_ResumeID = ?"; $query = $this->db_onedev->query($sql, [ $status, $val, $dt, $userid, $data['header']['kesimpulan'], $data['header']['rekomendasi'], $data['header']['saran'], $data['fitnessCategory'], $resumeID, ]); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } $sql = "SELECT * FROM mcu_resume_eng WHERE Mcu_ResumeEngMcu_ResumeID = ? AND Mcu_ResumeEngIsActive = 'Y'"; $query = $this->db_onedev->query($sql, [ $resumeID, ]); $cekEng = $query->result_array(); if (empty($cekEng)) { $sql = "INSERT INTO mcu_resume_eng( Mcu_ResumeEngMcu_ResumeID, Mcu_ResumeEngAdvice, Mcu_ResumeEngConlusion, Mcu_ResumeEngRecomendation, Mcu_ResumeEngCreated, Mcu_ResumeEngCreatedUserID) VALUES(?,?,?,?,NOW(),?)"; $query = $this->db_onedev->query($sql, [ $resumeID, $data['header']['advice'], $data['header']['conclusion'], $data['header']['recomendation'], $userid ]); } else { $sql = "UPDATE mcu_resume_eng SET Mcu_ResumeEngAdvice = ?, Mcu_ResumeEngConlusion = ?, Mcu_ResumeEngRecomendation = ? WHERE Mcu_ResumeEngMcu_ResumeID = ? AND Mcu_ResumeEngIsActive = 'Y'"; $query = $this->db_onedev->query($sql, [ $data['header']['advice'], $data['header']['conclusion'], $data['header']['recomendation'], $resumeID, ]); } } for ($i = 0; $i < count($data['detail']); $i++) { $detail = $data['detail'][$i]; $result = $detail['result']; if ($result == null) { $result = ''; } if ($detail['category'] == 'LAB') { $sql = "SELECT Mcu_ResumeDetailsID FROM mcu_resumedetails WHERE Mcu_ResumeDetailsNat_SubSubGroupID = ? AND Mcu_ResumeDetailsMcu_ResumeID = ? AND Mcu_ResumeDetailsIsActive = 'Y'"; $query = $this->db_onedev->query($sql, [$detail['subGroupID'], $resumeID,]); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } $cekDetail = $query->result_array(); // print_r($cekDetail); if (count($cekDetail) == 0) { $sql = "INSERT INTO mcu_resumedetails( Mcu_ResumeDetailsMcu_ResumeID, Mcu_ResumeDetailsCategory, Mcu_ResumeDetailsNat_SubSubGroupID, Mcu_ResumeDetailsResult, Mcu_ResumeDetailsCreated, Mcu_ResumeDetailsUserID) VALUES(?,?,?,?,NOW(),?)"; $query = $this->db_onedev->query($sql, [ $resumeID, $detail['category'], $detail['subGroupID'], $result, $userid, ]); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } } else { $sql = "UPDATE mcu_resumedetails SET Mcu_ResumeDetailsResult = ?, Mcu_ResumeDetailsLastUpdated = NOW(), Mcu_ResumeDetailsUserID = ? WHERE Mcu_ResumeDetailsID = ?"; $query = $this->db_onedev->query($sql, [ $result, $userid, $cekDetail[0]['Mcu_ResumeDetailsID'] ]); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } } } else { $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, [ $detail['detailOrderID'], $detail['testID'], $detail['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) { $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, $detail['category'], $detail['detailOrderID'], $detail['testID'], $result, $userid, ]); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } } else { $sql = "UPDATE mcu_resumedetails SET Mcu_ResumeDetailsResult = ?, Mcu_ResumeDetailsLastUpdated = NOW(), Mcu_ResumeDetailsUserID = ? WHERE Mcu_ResumeDetailsID = ?"; $query = $this->db_onedev->query($sql, [ $result, $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; } $detail = $query->result_array(); $jsonAfter['detail'] = $detail; $sql = "INSERT INTO cpone_log.log_mcu_resume (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), $statusLog, $userid ]); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } $this->upsert_published_dashboard_on_new_to_val($data['orderID'], $statusBefore, $status, $userid); $this->sync_resume_status_dashboard($resumeID); $this->sys_ok('ok'); } function getlab($id, $isApi) { $prm = $this->sys_input; // Mcu_KelainanName AS kelainanName, // Mcu_KelainanGroupName AS kelainanGroupName, // LEFT JOIN t_kelainan_lab // ON T_OrderDetailT_OrderHeaderID = T_KelainanLabT_OrderHeaderID // AND T_OrderDetailID = T_KelainanLabT_OrderDetailID // AND T_TestNat_TestID = T_KelainanLabNat_TestID // AND T_KelainanLabIsActive = 'Y' // LEFT JOIN mcu_summarylab // ON T_KelainanLabMcu_SummaryLabID = Mcu_SummaryLabID // AND T_TestNat_TestID = Mcu_SummaryLabNat_TestID // AND Mcu_SummaryLabIsActive = 'Y' // LEFT join mcu_kelainan on Mcu_SummaryLabMcu_KelainanID = Mcu_KelainanID // AND Mcu_KelainanIsActive = 'Y' // LEFT join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID // AND Mcu_KelainanGroupIsActive = 'Y' $sql = "SELECT T_OrderDetailID, '' AS smLabID, '' AS natTestID, '' AS value, '' AS kelainanID, '' AS smLabType, '' AS isNormal, '' AS methode, '' AS methodeID, '' AS kelainanSaran, T_OrderDetailT_OrderHeaderID AS orderID, T_OrderDetailID AS orderDetailID, T_OrderDetailT_TestID AS testID, T_OrderDetailT_TestCode AS testCode, T_OrderDetailT_TestSasCode AS testSasCode, T_OrderDetailT_TestName AS testName, T_OrderDetailResult AS result, Nat_SubSubGroupID AS subGroupID, T_OrderDetailMinValue AS minValues, T_OrderDetailMaxValue AS maxValues, Nat_SubSubGroupName AS groupName, T_TestNat_TestID AS natTestID, T_TestIsQuantitative as isKuantitatif, CASE WHEN T_OrderDetailResultFlag IS NULL THEN 'Y' WHEN T_OrderDetailResultFlag = '' THEN 'Y' ELSE 'N' END testNormal, T_OrderDetailResultFlag, null AS resultID, 'N' AS resultValidation, 'NEW' AS resultStatus, Mcu_ResumeDetailsID AS resumeDetailsID, CASE WHEN Mcu_ResumeDetailsMcu_ResumeID IS NULL THEN 'N' WHEN Mcu_ResumeDetailsMcu_ResumeID IS NOT NULL THEN 'Y' END as hasResult, Mcu_ResumeID AS resumeID , Mcu_ResumeKesimpulan AS resumeKesimpulan , Mcu_ResumeRekomendasi AS resumeRekomendasi , Mcu_ResumeSaran AS resumeSaran , Mcu_ResumeDetailsResult AS resumeDetailResult , Mcu_ResumeDetailsResult AS resumeEntryResult FROM t_orderdetail 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 ('LAB') JOIN t_test ON T_OrderDetailT_TestID = T_TestID JOIN nat_test ON T_TestNat_TestID = Nat_TestID JOIN nat_subsubgroup ON T_TestNat_SubSubGroupID = Nat_SubSubGroupID LEFT JOIN mcu_resume ON T_OrderDetailT_OrderHeaderID = Mcu_ResumeT_OrderHeaderID AND Mcu_ResumeIsActive = 'Y' LEFT JOIN mcu_resumedetails -- ON T_OrderDetailID = Mcu_ResumeDetailsT_OrderDetailID ON Mcu_ResumeDetailsMcu_ResumeID = Mcu_ResumeID AND T_TestNat_SubSubGroupID = Mcu_ResumeDetailsNat_SubSubGroupID AND Mcu_ResumeDetailsIsActive = 'Y' WHERE T_OrderDetailT_OrderHeaderID = {$id} AND T_OrderDetailIsActive = 'Y' AND Nat_TestIsResult = 'Y'"; // echo $sql; $query = $this->db_onedev->query($sql, []); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } $test = $query->result_array(); for ($i = 0; $i < count($test); $i++) { $e = $test[$i]; $kelainan = ''; $saran = ''; $rstNormal = 'Y'; if ($e['hasResult'] == 'Y' && ($e['resumeDetailResult'] != null || trim($e['resumeDetailResult']) != "")) { $kelainan = $e['resumeDetailResult']; if (trim($e['resumeDetailResult']) !== 'Dalam batas normal') { $rstNormal = 'N'; } } else { if ($e['result'] !== null) { # code... if ($e['testNormal'] == 'N' && is_numeric($e['result'])) { if (floatval($e['result']) >= floatval($e['maxValues'])) { $kelainan = $e['testName'] . " meningkat ({$e['result']})"; } if (floatval($e['result']) < floatval($e['minValues'])) { $kelainan = $e['testName'] . " menurun ({$e['result']})"; } $rstNormal = 'N'; } if ($e['testNormal'] == 'N' && !is_numeric($e['result'])) { $kelainan = $e['testName'] . " ({$e['result']})"; $rstNormal = 'N'; } if ($e['testNormal'] == 'Y') { $kelainan = "Dalam batas normal"; $rstNormal = 'Y'; } } } $test[$i]['kelainan'] = $kelainan; $test[$i]['generateKelainan'] = $this->generatekelainancek($e); $test[$i]['resultIsNormal'] = $rstNormal; $test[$i]['saran'] = $saran; } $newGab = []; $group = []; //penggabungan test for ($i = 0; $i < count($test); $i++) { $e = $test[$i]; if (!in_array($e['groupName'], $group)) { $group[] = $e['groupName']; if ($e['resultIsNormal'] == 'Y') { $e['kelainan'] = ''; $e['generateKelainan'] = ''; } $newGab[] = $e; } else { for ($k = 0; $k < count($newGab); $k++) { $nv = $newGab[$k]; if ($e['groupName'] == $nv['groupName']) { if ($test[$i]['resultIsNormal'] == 'N') { # code... if (trim($newGab[$k]['kelainan']) == "") { $newGab[$k]['kelainan'] = $test[$i]['kelainan']; } else { if ($newGab[$k]['kelainan'] != $test[$i]['kelainan']) { $newGab[$k]['kelainan'] = $newGab[$k]['kelainan'] . ', ' . $test[$i]['kelainan']; } } if (trim($newGab[$k]['saran']) == "" && trim($test[$i]['saran']) != '') { $newGab[$k]['saran'] = $test[$i]['saran']; $newGab[$k]['saranArr'][] = $test[$i]['saran']; } else { if (trim($test[$i]['saran']) != '') { $newGab[$k]['saran'] = $newGab[$k]['saran'] . '@' . $test[$i]['saran']; } } if ($newGab[$k]['testIDKelainan'] == '' && !isset($newGab[$k]['testIDKelainan'])) { # code... $newGab[$k]['testIDKelainan'] = $test[$i]['testID']; } else { $newGab[$k]['testIDKelainan'] = $newGab[$k]['testIDKelainan'] . ',' . $test[$i]['testID']; } } if (trim($newGab[$k]['generateKelainan']) == "") { $newGab[$k]['generateKelainan'] = $test[$i]['generateKelainan']; } else { if ($newGab[$k]['generateKelainan'] != $test[$i]['generateKelainan']) { $newGab[$k]['generateKelainan'] = $newGab[$k]['generateKelainan'] . ', ' . $test[$i]['generateKelainan']; } } $newGab[$k]['testID'] = $newGab[$k]['testID'] . ', ' . $test[$i]['testID']; // $newGab[$k]['generateKelainan'] = $newGab[$k]['generateKelainan'] . ', ' . $test[$i]['generateKelainan']; } } } } for ($i = 0; $i < count($newGab); $i++) { $newGab[$i]['normalValue'] = ''; if (trim(str_replace(',', '', $newGab[$i]['kelainan'])) != '') { $newGab[$i]['resultIsNormal'] = 'N'; } else { $newGab[$i]['resultIsNormal'] = 'Y'; $newGab[$i]['kelainan'] = 'Dalam batas normal'; } //saran unique $expldSaran = explode('@', $newGab[$i]['saran']); $expldSaranUnique = array_unique($expldSaran); $newGab[$i]['saran'] = implode('@', $expldSaranUnique); $expldTestIdKelainan = explode('@', $newGab[$i]['testIDKelainan']); $expldTestIdKelainanUnique = array_unique($expldTestIdKelainan); $newGab[$i]['testIDKelainan'] = implode(',', $expldTestIdKelainanUnique); } if ($isApi == 'Y') { $this->sys_ok([ "test" => $test, 'gab' => $newGab ]); } else { return $newGab; } } function generatekelainancek($e) { $kelainan = ""; $rstNormal = ""; if ($e['result'] !== null) { if ($e['testNormal'] == 'N' && is_numeric($e['result'])) { if (floatval($e['result']) >= floatval($e['maxValues'])) { $kelainan = $e['testName'] . " meningkat ({$e['result']})"; } if (floatval($e['result']) < floatval($e['minValues'])) { $kelainan = $e['testName'] . " menurun ({$e['result']})"; } $rstNormal = 'N'; } if ($e['testNormal'] == 'N' && !is_numeric($e['result'])) { $kelainan = $e['testName'] . " ({$e['result']})"; $rstNormal = 'N'; } if ($e['testNormal'] == 'Y') { $kelainan = $e['testName'] . " ({$e['result']}) " . "dalam batas normal"; $rstNormal = 'Y'; } } else { $kelainan = "" . $e['testName'] . " belum ada hasil" . ""; $rstNormal = 'Y'; } return $kelainan; } function getlabtest($id, $isApi) { $prm = $this->sys_input; $this->generate_kelainan_lab($id); // Mcu_KelainanName AS kelainanName, // Mcu_KelainanGroupName AS kelainanGroupName, // LEFT JOIN t_kelainan_lab // ON T_OrderDetailT_OrderHeaderID = T_KelainanLabT_OrderHeaderID // AND T_OrderDetailID = T_KelainanLabT_OrderDetailID // AND T_TestNat_TestID = T_KelainanLabNat_TestID // AND T_KelainanLabIsActive = 'Y' // LEFT JOIN mcu_summarylab // ON T_KelainanLabMcu_SummaryLabID = Mcu_SummaryLabID // AND T_TestNat_TestID = Mcu_SummaryLabNat_TestID // AND Mcu_SummaryLabIsActive = 'Y' // LEFT join mcu_kelainan on Mcu_SummaryLabMcu_KelainanID = Mcu_KelainanID // AND Mcu_KelainanIsActive = 'Y' // LEFT join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID // AND Mcu_KelainanGroupIsActive = 'Y' $sql = "SELECT T_OrderDetailID, '' AS smLabID, '' AS natTestID, '' AS value, '' AS kelainanID, '' AS smLabType, '' AS isNormal, '' AS methode, '' AS methodeID, '' AS kelainanSaran, T_OrderDetailT_OrderHeaderID AS orderID, T_OrderDetailID AS orderDetailID, T_OrderDetailT_TestID AS testID, T_OrderDetailT_TestCode AS testCode, T_OrderDetailT_TestSasCode AS testSasCode, T_OrderDetailT_TestName AS testName, T_OrderDetailResult AS result, Nat_SubSubGroupID AS subGroupID, T_OrderDetailMinValue AS minValues, T_OrderDetailMaxValue AS maxValues, Nat_SubSubGroupName AS groupName, T_TestNat_TestID AS natTestID, T_TestIsQuantitative as isKuantitatif, CASE WHEN T_OrderDetailResultFlag IS NULL THEN 'Y' WHEN T_OrderDetailResultFlag = '' THEN 'Y' ELSE 'N' END testNormal, T_OrderDetailResultFlag, null AS resultID, 'N' AS resultValidation, 'NEW' AS resultStatus, Mcu_ResumeDetailsID AS resumeDetailsID, CASE WHEN Mcu_ResumeDetailsMcu_ResumeID IS NULL THEN 'N' WHEN Mcu_ResumeDetailsMcu_ResumeID IS NOT NULL THEN 'Y' END as hasResult, Mcu_ResumeID AS resumeID , Mcu_ResumeKesimpulan AS resumeKesimpulan , Mcu_ResumeRekomendasi AS resumeRekomendasi , Mcu_ResumeSaran AS resumeSaran , Mcu_ResumeDetailsResult AS resumeDetailResult , Mcu_ResumeDetailsResult AS resumeEntryResult FROM t_orderdetail 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 ('LAB') JOIN t_test ON T_OrderDetailT_TestID = T_TestID JOIN nat_test ON T_TestNat_TestID = Nat_TestID JOIN nat_subsubgroup ON T_TestNat_SubSubGroupID=Nat_SubSubGroupID LEFT JOIN mcu_resume ON T_OrderDetailT_OrderHeaderID = Mcu_ResumeT_OrderHeaderID AND Mcu_ResumeIsActive = 'Y' LEFT JOIN mcu_resumedetails -- ON T_OrderDetailID = Mcu_ResumeDetailsT_OrderDetailID ON Mcu_ResumeDetailsMcu_ResumeID = Mcu_ResumeID AND T_TestNat_SubSubGroupID = Mcu_ResumeDetailsNat_SubSubGroupID AND Mcu_ResumeDetailsIsActive = 'Y' WHERE T_OrderDetailT_OrderHeaderID = {$id} AND T_OrderDetailIsActive = 'Y' AND Nat_TestIsResult = 'Y'"; // echo $sql; $query = $this->db_onedev->query($sql, []); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } $test = $query->result_array(); for ($i = 0; $i < count($test); $i++) { $e = $test[$i]; $kelainan = ''; $saran = ''; $rstNormal = 'Y'; // if ($e['hasResult'] == 'Y') { // $kelainan = $e['resumeDetailResult']; // if (trim($e['resumeDetailResult']) !== 'Dalam batas normal') { // $rstNormal = 'N'; // } // } else if (true) { if ($e['result'] !== null) { # code... if ($e['testNormal'] == 'N' && is_numeric($e['result'])) { if (floatval($e['result']) >= floatval($e['maxValues'])) { $kelainan = $e['testName'] . " meningkat ({$e['result']})"; } if (floatval($e['result']) < floatval($e['minValues'])) { $kelainan = $e['testName'] . " menurun ({$e['result']})"; } $rstNormal = 'N'; } if ($e['testNormal'] == 'N' && !is_numeric($e['result'])) { $kelainan = $e['testName'] . " ({$e['result']})"; $rstNormal = 'N'; } if ($e['testNormal'] == 'Y') { $kelainan = "Dalam batas normal"; $rstNormal = 'Y'; } } // if ($e['smLabID'] != null) { // // print_r("masuk else"); // if ($e['testNormal'] == 'Y') { // if ($e['smLabType'] == '<' || $e['smLabType'] == '<=') { // $ket = 'menurun'; // $value_comparison = $e['minValues']; // } // if ($e['smLabType'] == '>' || $e['smLabType'] == '>=') { // $ket = 'meningkat'; // $value_comparison = $e['maxValues']; // } // //echo "Y"; // // if ($e['methode'] == 'N' && $this->dynamic_comparison($e['value'], $e['smLabType'], $value_comparison)) { // if ($e['smLabType'] == '<' || $e['smLabType'] == '<=') { // $ket = 'menurun'; // } // if ($e['smLabType'] == '>' || $e['smLabType'] == '>=') { // $ket = 'meningkat'; // } // $kelainan = ""; // // $kelainan = $e['testName'] . " " . $ket . "({$e['result']})"; // if ($e['kelainanSaran'] != null) { // # code... // $saran = $e['kelainanSaran']; // } // $rstNormal = 'Y'; // // } // } else { // $value_comparison = $e['value']; // if ($e['smLabType'] == '!=' || $e['smLabType'] == '==') { // // if ($this->dynamic_comparison($e['value'], $e['smLabType'], $value_comparison)) { // //echo $r['T_TestName']." : ".$r['Mcu_KelainanName'].", "; // //langsung hasil // // $kelainan = $e; // $kelainan = $e['testName'] . " " . "{$e['result']}"; // if ($e['kelainanSaran'] != null) { // # code... // $saran = $e['kelainanSaran']; // } // $rstNormal = 'N'; // // } // } else { // // if (is_numeric($e['value']) && $this->dynamic_comparison($e['value'], $e['smLabType'], $value_comparison)) { // if ($e['smLabType'] == '<' || $e['smLabType'] == '<=') { // $ket = 'menurun'; // } // if ($e['smLabType'] == '>' || $e['smLabType'] == '>=') { // $ket = 'meningkat'; // } // // $kelainan = $e; // $kelainan = $e['testName'] . " " . $ket . "({$e['result']})"; // if ($e['kelainanSaran'] != null) { // # code... // $saran = $e['kelainanSaran']; // } // $rstNormal = 'N'; // // } // } // } // } // $sql = "SELECT // Mcu_SummaryLabID AS smLabID, // Mcu_SummaryLabNat_TestID AS natTestID, // Mcu_SummaryLabValue AS value, // Mcu_summaryLabMcu_KelainanID AS kelainanID, // Mcu_SummaryLabType AS smLabType, // Mcu_SummaryLabIsNormalValue AS isNormal, // Mcu_SummaryLabWithMethode AS methode, // Mcu_SummaryLabNat_MethodeID AS methodeID, // Mcu_KelainanName AS kelainanName, // Mcu_KelainanGroupName AS kelainanGroupName, // `fn_getadvicebykelainanid`(Mcu_summaryLabMcu_KelainanID) AS kelainanSaran // FROM mcu_summarylab // join mcu_kelainan on Mcu_SummaryLabMcu_KelainanID = Mcu_KelainanID // join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID // WHERE Mcu_SummaryLabNat_TestID = '{$e['natTestID']}' // AND Mcu_SummaryLabIsActive = 'Y'"; // $query = $this->db_onedev->query($sql, []); // // echo $this->db_onedev->last_query(); // // exit; // if (!$query) { // $message = $this->db_onedev->error(); // $message['qry'] = $this->db_onedev->last_query(); // $this->sys_error($message); // exit; // } // $normalValue = $query->result_array(); // // echo $normalValue; // // exit; // $test[$i]['normalValue'] = $normalValue; // // $test[$i]['test'] = $normalValue; // for ($k = 0; $k < count($normalValue); $k++) { // $ket = ''; // $nv = $normalValue[$k]; // // if ($e['value'] != null && trim($e['value']) != '') { // if ($nv['isNormal'] == 'Y') { // if ($nv['smLabType'] == '<' || $nv['smLabType'] == '<=') { // $ket = 'menurun'; // $value_comparison = $e['minValues']; // } // if ($nv['smLabType'] == '>' || $nv['smLabType'] == '>=') { // $ket = 'meningkat'; // $value_comparison = $e['maxValues']; // } // //echo "Y"; // if ($nv['methode'] == 'N' && $this->dynamic_comparison($e['value'], $nv['smLabType'], $value_comparison)) { // if ($nv['smLabType'] == '<' || $nv['smLabType'] == '<=') { // $ket = 'menurun'; // } // if ($nv['smLabType'] == '>' || $nv['smLabType'] == '>=') { // $ket = 'meningkat'; // } // $kelainan = $e['testName'] . " " . $ket . "({$e['result']})"; // $saran = $nv['kelainanSaran']; // $rstNormal = 'N'; // } // } else { // $value_comparison = $nv['value']; // if ($nv['smLabType'] == '!=' || $nv['smLabType'] == '==') { // if ($this->dynamic_comparison($e['value'], $nv['smLabType'], $value_comparison)) { // //echo $r['T_TestName']." : ".$r['Mcu_KelainanName'].", "; // //langsung hasil // // $kelainan = $nv; // $kelainan = $e['testName'] . " " . "{$e['result']}"; // $saran = $nv['kelainanSaran']; // $rstNormal = 'N'; // } // } else { // if (is_numeric($e['value']) && $this->dynamic_comparison($e['value'], $nv['smLabType'], $value_comparison)) { // if ($nv['smLabType'] == '<' || $nv['smLabType'] == '<=') { // $ket = 'menurun'; // } // if ($nv['smLabType'] == '>' || $nv['smLabType'] == '>=') { // $ket = 'meningkat'; // } // // $kelainan = $nv; // $kelainan = $e['testName'] . " " . $ket . "({$e['result']})"; // $saran = $nv['kelainanSaran']; // $rstNormal = 'N'; // } // } // } // // } // } } $test[$i]['kelainan'] = $kelainan; $test[$i]['resultIsNormal'] = $rstNormal; $test[$i]['saran'] = $saran; } $newGab = []; $group = []; //penggabungan test for ($i = 0; $i < count($test); $i++) { $e = $test[$i]; if (!in_array($e['groupName'], $group)) { $group[] = $e['groupName']; if ($e['resultIsNormal'] == 'Y') { $e['kelainan'] = ''; } $newGab[] = $e; } else { for ($k = 0; $k < count($newGab); $k++) { $nv = $newGab[$k]; if ($e['groupName'] == $nv['groupName']) { if ($test[$i]['resultIsNormal'] == 'N') { # code... if (trim($newGab[$k]['kelainan']) == "") { $newGab[$k]['kelainan'] = $test[$i]['kelainan']; } else { if ($newGab[$k]['kelainan'] != $test[$i]['kelainan']) { $newGab[$k]['kelainan'] = $newGab[$k]['kelainan'] . ', ' . $test[$i]['kelainan']; } } if (trim($newGab[$k]['saran']) == "" && trim($test[$i]['saran']) != '') { $newGab[$k]['saran'] = $test[$i]['saran']; $newGab[$k]['saranArr'][] = $test[$i]['saran']; } else { if (trim($test[$i]['saran']) != '') { $newGab[$k]['saran'] = $newGab[$k]['saran'] . '@' . $test[$i]['saran']; } } if ($newGab[$k]['testIDKelainan'] == '' && !isset($newGab[$k]['testIDKelainan'])) { # code... $newGab[$k]['testIDKelainan'] = $test[$i]['testID']; } else { $newGab[$k]['testIDKelainan'] = $newGab[$k]['testIDKelainan'] . ',' . $test[$i]['testID']; } } $newGab[$k]['testID'] = $newGab[$k]['testID'] . ', ' . $test[$i]['testID']; } } } } for ($i = 0; $i < count($newGab); $i++) { $newGab[$i]['normalValue'] = ''; if (trim(str_replace(',', '', $newGab[$i]['kelainan'])) != '') { $newGab[$i]['resultIsNormal'] = 'N'; } else { $newGab[$i]['resultIsNormal'] = 'Y'; $newGab[$i]['kelainan'] = 'Dalam batas normal'; } //saran unique $expldSaran = explode('@', $newGab[$i]['saran']); $expldSaranUnique = array_unique($expldSaran); $newGab[$i]['saran'] = implode('@', $expldSaranUnique); $expldTestIdKelainan = explode('@', $newGab[$i]['testIDKelainan']); $expldTestIdKelainanUnique = array_unique($expldTestIdKelainan); $newGab[$i]['testIDKelainan'] = implode(',', $expldTestIdKelainanUnique); } if ($isApi == 'Y') { $this->sys_ok([ "test" => $test, 'gab' => $newGab ]); } else { return $newGab; } } 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($orderid) { $sql = "SELECT T_OrderHeaderID,T_OrderHeaderLabNumber, T_TestName, T_OrderDetailID, T_OrderDetailResult, T_OrderDetailNat_MethodeID, T_OrderDetailNat_MethodeID, T_OrderDetailNat_MethodeName, T_OrderDetailMinValue, T_OrderDetailMaxValue, T_OrderDetailMinValueInclusive, T_OrderDetailMaxValueInclusive, Mcu_SummaryLabID, Mcu_SummaryLabValue, Mcu_SummaryLabNat_MethodeID, Mcu_SummaryLabWithMethode, Mcu_SummaryLabType, Mcu_SummaryLabIsNormalValue, Mcu_SummaryLabIsRange, Mcu_SummaryLabMinInclusive, Mcu_SummaryLabMinValue, Mcu_SummaryLabMaxInclusive, Mcu_SummaryLabMaxValue, Mcu_KelainanID, Mcu_KelainanName, Mcu_KelainanClasification, Nat_TestID, Nat_TestCode, mcu_kelainangroup.* from t_orderdetail join t_orderheader on T_OrderHeaderID = {$orderid} and T_OrderHeaderID = T_OrderDetailT_OrderHeaderID and T_OrderDetailIsActive = 'Y' JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID 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' AND (Mcu_SummaryLabGender = 'A' OR (Mcu_SummaryLabGender <> 'A' AND Mcu_SummaryLabGender = CASE WHEN LOWER(M_PatientGender) = 'male' THEN 'M' WHEN LOWER(M_PatientGender) = 'female' THEN 'F' else '' END)) join mcu_kelainan on Mcu_SummaryLabMcu_KelainanID = Mcu_KelainanID join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID"; //echo $sql; $qry = $this->db_onedev->query($sql); if (!$qry) { echo $this->db_onedev->last_query(); echo json_encode([ "status" => "ERR", "message" => "Error get order | " . $this->db_onedev->error()["message"] ]); exit; } $rows = $qry->result_array(); $results = []; foreach ($rows as $r) { $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'], 'orderdetailID' => $r['T_OrderDetailID'], 'orderheaderID' => $r['T_OrderHeaderID'], 'nat_testID' => $r['Nat_TestID'], 'mcu_summarylabID' => $r['Mcu_SummaryLabID']); } } else if ($r['Mcu_SummaryLabIsRange'] == 'Y') { // Mcu_SummaryLabIsNormalValue, // Mcu_SummaryLabIsRange, // Mcu_SummaryLabMinInclusive, // Mcu_SummaryLabMinValue, // Mcu_SummaryLabMaxInclusive, // Mcu_SummaryLabMaxValue, $isWithinMin = $r['Mcu_SummaryLabMinInclusive'] === 'Y' ? floatval($result_value) >= floatval($r['Mcu_SummaryLabMinValue']) : floatval($result_value) > floatval($r['Mcu_SummaryLabMinValue']); $isWithinMax = $r['Mcu_SummaryLabMaxInclusive'] === 'Y' ? floatval($result_value) <= floatval($r['Mcu_SummaryLabMaxValue']) : floatval($result_value) < floatval($r['Mcu_SummaryLabMaxValue']); if ($isWithinMax && $isWithinMin) { $kelainan = $r; $results[] = array('test' => $r['T_TestName'], 'nat_test' => $r['Nat_TestCode'], 'kelainan' => $r['Mcu_KelainanName'], 'orderdetailID' => $r['T_OrderDetailID'], 'orderheaderID' => $r['T_OrderHeaderID'], 'nat_testID' => $r['Nat_TestID'], 'mcu_summarylabID' => $r['Mcu_SummaryLabID']); } } 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'], 'orderdetailID' => $r['T_OrderDetailID'], 'orderheaderID' => $r['T_OrderHeaderID'], 'nat_testID' => $r['Nat_TestID'], 'mcu_summarylabID' => $r['Mcu_SummaryLabID']); } } 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'], 'orderdetailID' => $r['T_OrderDetailID'], 'orderheaderID' => $r['T_OrderHeaderID'], 'nat_testID' => $r['Nat_TestID'], 'mcu_summarylabID' => $r['Mcu_SummaryLabID']); } } } if (count($results) > 0) { $sql = "UPDATE t_kelainan_lab SET T_KelainanLabIsActive = 'N' WHERE T_KelainanLabT_OrderHeaderID = {$orderid}"; $this->db_onedev->query($sql); foreach ($results as $v_result) { $sql_kel_lab = "SELECT * FROM t_kelainan_lab WHERE T_KelainanLabT_OrderDetailID = ? GROUP BY T_KelainanLabT_OrderDetailID"; $qry_kel_lab = $this->db_onedev->query($sql_kel_lab, array($v_result['orderdetailID'])); if ($qry_kel_lab) { $rows_kel = $qry_kel_lab->result_array(); } else { $this->sys_error_db("select kelainan lab", $this->db_onedev); exit; } if (count($rows_kel) > 0) { // print_r($v_result['orderdetailID']); // exit; $sql_update_kel = "UPDATE t_kelainan_lab SET T_KelainanLabT_OrderDetailID = {$v_result['orderdetailID']}, T_KelainanLabT_OrderHeaderID = {$v_result['orderheaderID']}, T_KelainanLabNat_TestID = {$v_result['nat_testID']}, T_KelainanLabMcu_SummaryLabID = {$v_result['mcu_summarylabID']}, T_KelainanLabCreatedUserID = 1, T_KelainanLabIsActive = 'Y', T_KelainanLabCreated = NOW() WHERE T_KelainanLabID = {$rows_kel[0]['T_KelainanLabID']}"; $qry_update_kel = $this->db_onedev->query($sql_update_kel); if (!$qry_update_kel) { echo $this->db_onedev->last_query(); //$this->db_onedev->trans_rollback(); $this->sys_error_db('error', 'Error update lab: ' . $this->db_onedev); exit; } } else { // print_r('insert'); // exit; $sql_insert_lab = "INSERT INTO t_kelainan_lab( T_KelainanLabT_OrderDetailID, T_KelainanLabT_OrderHeaderID, T_KelainanLabNat_TestID, T_KelainanLabMcu_SummaryLabID, T_KelainanLabCreatedUserID, T_KelainanLabCreated) VALUES( '{$v_result['orderdetailID']}', '{$v_result['orderheaderID']}', '{$v_result['nat_testID']}', '{$v_result['mcu_summarylabID']}', 1, NOW())"; $qry_insert_lab = $this->db_onedev->query($sql_insert_lab); if (!$qry_insert_lab) { //$this->db_onedev->trans_rollback(); echo $this->db_onedev->last_query(); $this->sys_error_db('error', 'Error insert kelainan lab: ' . $this->db_onedev); exit; } } } } } } function savedoctor() { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $id = $prm['id']; $doctorid = $prm['doctorid']; $userid = $this->sys_user["M_UserID"]; //insert mcu_resume $resumeID = 0; $jsonBefore = ""; $jsonAfter = ""; $status = 'NEW DOCTOR'; $sql = "SELECT * FROM mcu_resume WHERE Mcu_ResumeT_OrderHeaderID = ? AND Mcu_ResumeIsActive = 'Y'"; $query = $this->db_onedev->query($sql, [$id]); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } $dataCek = $query->result_array(); $jsonBefore = $dataCek; if (count($dataCek) == 0) { $sql = "INSERT INTO mcu_resume (Mcu_ResumeT_OrderHeaderID, Mcu_ResumeStatus, Mcu_ResumeM_DoctorID, Mcu_ResumeCreated, Mcu_ResumeUserID ) VALUES(?,'NEW',?,NOW(),?)"; $query = $this->db_onedev->query($sql, [ $id, $doctorid, $userid, ]); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } $resumeID = $this->db_onedev->insert_id(); } else { $status = 'UPDATE DOCTOR'; $resumeID = $dataCek[0]['Mcu_ResumeID']; $sql = "UPDATE mcu_resume SET Mcu_ResumeM_DoctorID = ?, Mcu_ResumeUserID = ? WHERE Mcu_ResumeID = ?"; $query = $this->db_onedev->query($sql, [ $doctorid, $userid, $resumeID, ]); 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_ResumeT_OrderHeaderID = ? AND Mcu_ResumeIsActive = 'Y'"; $query = $this->db_onedev->query($sql, [$id]); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } $dataCek = $query->result_array(); $jsonAfter = $dataCek; $sql = "INSERT INTO cpone_log.log_mcu_resume (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), $status, $userid ]); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } $this->sync_resume_status_dashboard($resumeID); $this->sys_ok('OK'); exit; } function cobaGenerate($orderID, $userID) { $this->load->library('Etlfisik'); $rtn = $this->etlfisik->generate_kelainan_by_order($orderID, $userID); echo json_encode($rtn); } function generateKesimpulanSaran($id, $debug = 'N') { //get kelainan nonlab $sql = "SELECT T_KelainanNonLabID AS kelainanNonlabID, T_KelainanNonLabT_OrderHeaderID as orderID, Mcu_KelainanID as kelainanID, T_KelainanNonLabMcu_SummaryNonlabID As summaryID, Mcu_KelainanName as kelainanName, fn_get_translate_word_separator_comma(Mcu_KelainanName,2) as kelainanNameEng, 'NONLAB' as type FROM t_kelainan_nonlab JOIN mcu_summarynonlab ON T_KelainanNonLabMcu_SummaryNonlabID = Mcu_SummaryNonlabID AND T_KelainanNonLabT_OrderHeaderID = ? AND T_KelainanNonLabIsActive = 'Y' JOIN mcu_kelainan ON Mcu_SummaryNonlabMcu_KelainanID = Mcu_KelainanID AND Mcu_KelainanIsActive = 'Y' GROUP BY Mcu_KelainanID "; $query = $this->db_onedev->query($sql, [$id]); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error_db("Error get kelainan nonlab"); exit; } $kelainanNonlab = $query->result_array(); //get kelainan lab $sql = "SELECT T_KelainanLabID as kelainanLabID, T_KelainanLabT_OrderHeaderID as orderID, Mcu_KelainanID as kelainanID, Mcu_SummaryLabID as summaryID, Mcu_KelainanName as kelainanName, fn_get_translate_word_separator_comma(Mcu_KelainanName,2) as kelainanNameEng, 'LAB' as type FROM t_kelainan_lab JOIN mcu_summarylab ON T_KelainanLabMcu_SummaryLabID = Mcu_SummaryLabID AND Mcu_SummaryLabIsActive = 'Y' AND T_KelainanLabT_OrderHeaderID = ? JOIN mcu_kelainan ON Mcu_summaryLabMcu_KelainanID = Mcu_KelainanID AND Mcu_KelainanIsActive = 'Y' AND T_KelainanLabIsActive = 'Y' GROUP BY Mcu_KelainanID "; $query = $this->db_onedev->query($sql, [$id]); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error_db("Error get kelainan lab"); exit; } $kelainanLab = $query->result_array(); //get kelainan fisik $sql = "SELECT T_KelainanFiskID as kelainanFisikID, T_KelainanFiskT_OrderHeaderID orderID, Mcu_FisikSummaryID summaryID, Mcu_KelainanID as kelainanID , Mcu_KelainanName as kelainanName, fn_get_translate_word_separator_comma(Mcu_KelainanName,2) as kelainanNameEng, 'FISIK' as type FROM t_kelainan_fisik JOIN mcu_fisiksummary ON T_KelainanFiskMcu_FisikSummaryID = Mcu_FisikSummaryID AND Mcu_FisikSummaryIsActive = 'Y' AND T_KelainanFiskT_OrderHeaderID = ? AND T_KelainanFiskIsActive = 'Y' JOIN mcu_kelainan ON Mcu_FisikSummaryMcu_KelainanID = Mcu_KelainanID AND Mcu_KelainanIsActive = 'Y' GROUP BY Mcu_KelainanID "; $query = $this->db_onedev->query($sql, [$id]); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error_db("Error get kelainan fisik"); exit; } $kelainanFisik = $query->result_array(); $arrMcuKelainanID = array(); $arrMcuKelainanIDEng = array(); $kesimpulan = ""; $counterKesimpulan = 1; $conclusion = ""; $counterConclusion = 1; for ($i = 0; $i < count($kelainanNonlab); $i++) { $kesimpulan .= "- " . $kelainanNonlab[$i]['kelainanName'] . "\n"; $counterKesimpulan += 1; array_push($arrMcuKelainanID, $kelainanNonlab[$i]['kelainanID']); $conclusion .= "- " . $kelainanNonlab[$i]['kelainanNameEng'] . "\n"; $counterConclusion += 1; array_push($arrMcuKelainanIDEng, $kelainanNonlab[$i]['kelainanNameEng']); } for ($i = 0; $i < count($kelainanLab); $i++) { $kesimpulan .= "- " . $kelainanLab[$i]['kelainanName'] . "\n"; $counterKesimpulan += 1; array_push($arrMcuKelainanID, $kelainanLab[$i]['kelainanID']); $conclusion .= "- " . $kelainanLab[$i]['kelainanNameEng'] . "\n"; $counterConclusion += 1; array_push($arrMcuKelainanIDEng, $kelainanLab[$i]['kelainanNameEng']); } for ($i = 0; $i < count($kelainanFisik); $i++) { $kesimpulan .= "- " . $kelainanFisik[$i]['kelainanName'] . "\n"; $counterKesimpulan += 1; array_push($arrMcuKelainanID, $kelainanFisik[$i]['kelainanID']); $conclusion .= "- " . $kelainanFisik[$i]['kelainanNameEng'] . "\n"; $counterConclusion += 1; array_push($arrMcuKelainanIDEng, $kelainanFisik[$i]['kelainanNameEng']); } //get kelainan saran nonlab if(count($arrMcuKelainanID) > 0){ $sql = "SELECT Nat_AdvicekelainanID adviceID, Nat_AdvicekelainanMcu_KelainanID mcuKelainanID, Nat_AdviceIna saranIna, IF(Nat_AdviceEng = '',Nat_AdviceIna, Nat_AdviceEng) saranEng, fn_get_translate_word_separator_comma(Nat_AdviceIna,2) as translate_eng FROM nat_advice_kelainan JOIN nat_advice ON Nat_AdvicekelainanNat_AdviceID = Nat_AdviceID AND Nat_AdvicekelainanMcu_KelainanID IN ? AND Nat_AdviceIsActive = 'Y' AND Nat_AdvicekelainanIsActive = 'Y' group by Nat_AdviceIna "; $query = $this->db_onedev->query($sql, [$arrMcuKelainanID]); //echo $this->db_onedev->last_query(); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error_db("Error cek validasi 3 " . $this->db_onedev->last_query()); exit; } $arrSaran = $query->result_array(); if (count($arrSaran) > 0) { foreach ($arrSaran as $key => $value) { $adv = $value['saranEng']; if (trim($adv) == '' || $adv == $value['saranIna']) { $adv = $value['translate_eng']; } $arrSaran[$key]['saranEng'] = $adv; } } } $saran = ""; $counterSaran = 1; $advice = ""; $counterAdvice = 1; for ($i = 0; $i < count($arrSaran); $i++) { $saran .= "- " . $arrSaran[$i]['saranIna'] . "\n"; $counterSaran += 1; $advice .= "- " . $arrSaran[$i]['saranEng'] . "\n"; $counterAdvice += 1; } if ($debug == 'Y') { $this->sys_ok(array( "kesimpulan" => $kesimpulan, "saran" => $saran, "advice" => $advice, "conclusion" => $conclusion, )); } else { return array( "kesimpulan" => $kesimpulan, "saran" => $saran, "advice" => $advice, "conclusion" => $conclusion, ); } } function generateFitnessCategory() { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $id = $prm['orderid']; $kesimpulanPrm = $prm['kesimpulan']; $saranPrm = $prm['saran']; $rekomendasiPrm = $prm['rekomendasi']; $conclusionPrm = $prm['conclusion']; $advicePrm = $prm['advice']; $recomendationPrm = $prm['recomendation']; $userid = $this->sys_user["M_UserID"]; $sql = "SELECT IFNULL(GROUP_CONCAT(DISTINCT So_ResultEntryValidation1), 'Y') as val FROM t_orderdetail JOIN so_resultentry ON T_OrderDetailT_OrderHeaderID = So_ResultEntryT_OrderHeaderID AND T_OrderDetailID = So_ResultEntryT_OrderDetailID AND So_ResultEntryIsActive = 'Y' AND T_OrderDetailIsActive = 'Y' AND So_ResultEntryT_OrderHeaderID = ? JOIN group_resultdetail ON T_OrderDetailT_TestID = Group_ResultDetailT_TestID AND T_OrderDetailT_TestID NOT IN (2571,2573,2573,3450,2572) AND Group_ResultDetailIsActive ='Y' JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND Group_ResultID <> 35 AND Group_ResultResumeMcu IN ('NONLAB', 'FISIK') AND Group_ResultIsActive ='Y'"; $query = $this->db_onedev->query($sql, [$id]); // echo $this->db_onedev->last_query(); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error_db("Error cek validasi 2" . $this->db_onedev->last_query()); exit; } $cekValidation = $query->row_array(); $expdCek = explode(',', $cekValidation['val']); if (in_array('N', $expdCek) && $cekValidation['val'] != null && trim($cekValidation['val']) != '' && count($expdCek) > 0) { $this->sys_error("Hasil Nonlab atau fisik belum di validasi ....."); exit; } //insert mcu_resume $resumeID = 0; $jsonBefore = ""; $jsonAfter = ""; $status = 'FITNESS NEW'; $sql = "SELECT * FROM mcu_resume WHERE Mcu_ResumeT_OrderHeaderID = ? AND Mcu_ResumeIsActive = 'Y'"; $query = $this->db_onedev->query($sql, [$id]); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } $dataCek = $query->result_array(); $jsonBefore = $dataCek; $this->load->library('Etlfisik'); $rtn = $this->etlfisik->generate_kelainan_by_order($id, $userid); $rtnStatus = $rtn['status']; $rtnGenerateResult = $rtn['data']; $fitnessID = $rtn['status']['id'] ?? '0'; $rekomendasi = $rtn['status']['name']; $recomendation = $rtn['status']['name_eng']; if (trim($rekomendasiPrm) == '') { $rekomendasi = $rtn['status']['name']; } else { $rekomendasi = $rekomendasiPrm; } if (trim($recomendationPrm) == '') { $recomendation = $rtn['status']['name_eng']; } else { $recomendation = $recomendationPrm; } $kesimpulan = ''; $saran = ''; $advice = ''; $conclusion = ''; if (count($dataCek) == 0) { $generateKesimpulanSaran = $this->generateKesimpulanSaran($id); $kesimpulan = $generateKesimpulanSaran['kesimpulan']; $saran = $generateKesimpulanSaran['saran']; $advice = $generateKesimpulanSaran['advice']; $conclusion = $generateKesimpulanSaran['conclusion']; $sql = "INSERT INTO mcu_resume (Mcu_ResumeT_OrderHeaderID, Mcu_ResumeStatus, Mcu_ResumeMcu_FitnessCategoryID, Mcu_ResumeCreated, Mcu_ResumeUserID, Mcu_ResumeKesimpulan, Mcu_ResumeRekomendasi, Mcu_ResumeSaran, ) VALUES(?,'NEW',?,NOW(),?,?,?,?)"; $query = $this->db_onedev->query($sql, [ $id, $fitnessID, $userid, $kesimpulan, $rekomendasi, $saran ]); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } $resumeID = $this->db_onedev->insert_id(); $sql = "INSERT INTO mcu_resume_eng (Mcu_ResumeEngMcu_ResumeID, Mcu_ResumeEngConlusion, Mcu_ResumeEngRecomendation, Mcu_ResumeEngAdvice, Mcu_ResumeEngCreated, Mcu_ResumeEngCreatedUserID ) VALUES(?,?,?,?,NOW(),?)"; $query = $this->db_onedev->query($sql, [ $resumeID, $conclusion, $recomendation, $advice, $userid ]); } else { if (trim($kesimpulanPrm) == "" || trim($saranPrm == '')) { $generateKesimpulanSaran = $this->generateKesimpulanSaran($id); if (trim($kesimpulanPrm) == '') { $kesimpulan = $generateKesimpulanSaran['kesimpulan']; $conclusion = $generateKesimpulanSaran['conclusion']; } else { $kesimpulan = $kesimpulanPrm; } if (trim($saranPrm) == '') { $saran = $generateKesimpulanSaran['saran']; $advice = $generateKesimpulanSaran['advice']; } else { $saran = $saranPrm; } } else { $kesimpulan = $kesimpulanPrm; $saran = $saranPrm; $advice = $advicePrm; $conclusion = $conclusionPrm; $recomendation = $recomendationPrm; } $status = 'FITNESS UPDATE'; $resumeID = $dataCek[0]['Mcu_ResumeID']; $sql = "UPDATE mcu_resume SET Mcu_ResumeMcu_FitnessCategoryID = ?, Mcu_ResumeUserID = ?, Mcu_ResumeKesimpulan = ?, Mcu_ResumeRekomendasi = ?, Mcu_ResumeSaran = ? WHERE Mcu_ResumeID = ?"; $query = $this->db_onedev->query($sql, [ $fitnessID, $userid, $kesimpulan, $rekomendasi, $saran, $resumeID, ]); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } $sql = "SELECT * FROM mcu_resume_eng WHERE Mcu_ResumeEngMcu_ResumeID = ? AND Mcu_ResumeEngIsActive = '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; } $dataCekEng = $query->result_array(); if (count($dataCekEng) == 0) { $sql = "INSERT INTO mcu_resume_eng (Mcu_ResumeEngMcu_ResumeID, Mcu_ResumeEngConlusion, Mcu_ResumeEngRecomendation, Mcu_ResumeEngAdvice, Mcu_ResumeEngCreated, Mcu_ResumeEngCreatedUserID ) VALUES(?,?,?,?,NOW(),?)"; $query = $this->db_onedev->query($sql, [ $resumeID, $conclusion, $recomendation, $advice, $userid ]); } else { $sql = "UPDATE mcu_resume_eng SET Mcu_ResumeEngConlusion = ?, Mcu_ResumeEngRecomendation = ?, Mcu_ResumeEngAdvice = ? WHERE Mcu_ResumeEngMcu_ResumeID = ? AND Mcu_ResumeEngIsActive = 'Y'"; $query = $this->db_onedev->query($sql, [ $conclusion, $recomendation, $advice, $resumeID, ]); } } //insert log $sql = "SELECT * FROM mcu_resume LEFT JOIN mcu_resume_eng ON Mcu_ResumeEngMcu_ResumeID = Mcu_ResumeID AND Mcu_ResumeEngIsActive = 'Y' WHERE Mcu_ResumeT_OrderHeaderID = ? AND Mcu_ResumeIsActive = 'Y'"; $query = $this->db_onedev->query($sql, [$id]); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } $dataCek = $query->result_array(); $jsonAfter = $dataCek; $sql = "INSERT INTO cpone_log.log_mcu_resume (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), $status, $userid ]); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } $this->sync_resume_status_dashboard($resumeID); for ($i = 0; $i < count($rtn['data']); $i++) { $rtn['data'][$i]['Nat_TestName'] = str_replace("|", ", ", $rtn['data'][$i]['Nat_TestName']); } $this->sys_ok($rtn); exit; } }