db_onedev = $this->load->database("onedev", true); // $this->load->library("SsPriceMou"); } public function getsetup() { try { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $user = $this->sys_user; $branchID = $user['M_BranchID']; $sql = "SELECT * FROM mgm_mcu WHERE Mgm_McuIsActive = 'Y' AND Mgm_McuM_BranchID IN ({$branchID}, 100)"; $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 search() { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $user = $this->sys_user; $branchID = $user['M_BranchID']; $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 AND T_OrderHeaderM_BranchID = {$branchID} 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(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 T_OrderHeaderM_BranchID = {$branchID} 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' 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]); 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() ]; $this->sys_ok($result); } public function getDetail() { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $orderid = $prm['orderid']; $lang = $prm['lang']; // GET NONLAB & FISIK $sql = "SELECT T_OrderDetailT_OrderHeaderID AS orderID, T_OrderDetailID AS orderDetailID, T_OrderDetailT_TestID AS testID, T_OrderDetailT_TestCode AS testCode, T_OrderDetailT_TestSasCode AS testSasCode, Group_ResultResumeMcu , T_OrderDetailT_TestName AS testName, T_TestNat_TestID AS natTestID, So_ResultEntryID as resultEntryID, So_ResultEntryStatus as resultEntryStatus, So_ResultEntryNonlab_TemplateID as templateID, So_ResultEntryNonlab_TemplateName as templateName, T_OrderHeaderM_PatientID as patientID, M_PatientOldPID as patientOldID FROM t_orderdetail JOIN group_resultdetail ON T_OrderDetailT_TestID = Group_ResultDetailT_TestID AND Group_ResultDetailIsActive ='Y' AND T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailIsActive = 'Y' AND T_OrderDetailT_TestIsResult = 'Y' JOIN group_result ON Group_ResultID = Group_ResultDetailGroup_ResultID AND Group_ResultResumeMcu = 'FISIK' JOIN t_test ON T_OrderDetailT_TestID = T_TestID JOIN so_resultentry ON T_OrderDetailT_OrderHeaderID = So_ResultEntryT_OrderHeaderID AND T_OrderDetailID =So_ResultEntryT_OrderDetailID -- AND So_ResultEntryStatus = 'VAL1' AND So_ResultEntryIsActive = 'Y' JOIN t_orderheader ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID JOIN m_patient on T_OrderHeaderM_PatientID = M_PatientID GROUP BY T_TestID;"; $query = $this->db_onedev->query($sql, [$orderid]); if (!$query) { echo $this->db_onedev->last_query(); $this->sys_error_db("Error get detail nonlab"); exit; } $rstNonlab = $query->result_array(); //pecah nonlab dan fisik $fisik = array(); for ($i = 0; $i < count($rstNonlab); $i++) { $data = $rstNonlab[$i]; if ( $data['templateName'] == "Fisik Umum" || $data['templateName'] == "Fisik Umum K3" || $data['templateName'] == "Fisik Umum Konsul" ) { $rst = $this->getFisikUmum($data['resultEntryID'], 'N', $lang); $data['detail'] = $rst['finalResult']; array_push($fisik, $data); } } //Data Pasien OLD $sql = "SELECT REG_NO, PATIENT_ID, PATIENT_NAME FROM t_orderheader JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND T_OrderHeaderID = ? JOIN x_adm_rekap_patient ON M_PatientOldPID = PATIENT_ID "; $query = $this->db_onedev->query($sql, [$orderid]); if (!$query) { // echo $this->db_onedev->last_query(); $this->sys_error_db("Error get detail fisik old organ"); exit; } $dataPatientOld = $query->row_array(); //FISIK ORGAN $sql = "SELECT T_OrderHeaderID, M_PatientID, M_PatientOldPID , M_PatientName, a.REG_NO, b.REG_NO, b.telinga, b.hidung, b.tenggorokan, b.rongga_mulut_gigi, b.jantung, b.paru, b.abdomen, b.ginjal, b.hernia, b.kulit, b.anogenital, b.extremitas, b.tulang_belakang, b.refleks_fisiologis, b.refleks_patologis, b.suhu, b.stage, CASE WHEN c.REG_NO IS NOT NULL THEN c.Telinga WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word(b.Telinga, $lang), '') ELSE 'xels' END AS telinga_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.Hidung WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word(b.Hidung, $lang), '') ELSE 'xels' END AS hidung_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.Tenggorokan WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word(b.Tenggorokan, $lang), '') ELSE 'xels' END AS tenggorokan_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.Rongga_Mulut_Gigi WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word(b.Rongga_Mulut_Gigi, $lang), '') ELSE 'xels' END AS rongga_mulut_gigi_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.Jantung WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word(b.Jantung, $lang), '') ELSE 'xels' END AS jantung_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.Paru WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word(b.Paru, $lang), '') ELSE 'xels' END AS paru_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.Abdomen WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word(b.Abdomen, $lang), '') ELSE 'xels' END AS abdomen_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.Ginjal WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word(b.Ginjal, $lang), '') ELSE 'xels' END AS ginjal_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.Hernia WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word(b.Hernia, $lang), '') ELSE 'xels' END AS hernia_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.Kulit WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word(b.Kulit, $lang), '') ELSE 'xels' END AS kulit_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.Anogenital WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word(b.Anogenital, $lang), '') ELSE 'xels' END AS anogenital_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.Extremitas WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word(b.Extremitas, $lang), '') ELSE 'xels' END AS extremitas_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.Tulang_belakang WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word(b.Tulang_belakang, $lang), '') ELSE 'xels' END AS tulang_belakang_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.Refleks_Fisiologis WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word(b.Refleks_Fisiologis, $lang), '') ELSE 'xels' END AS refleks_fisiologis_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.Refleks_Patologis WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word(b.Refleks_Patologis, $lang), '') ELSE 'xels' END AS refleks_patologis_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.Suhu WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word(b.Suhu, $lang), '') ELSE 'xels' END AS suhu_eng FROM t_orderheader JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND T_OrderHeaderID = ? JOIN x_adm_rekap_patient a ON M_PatientOldPID = PATIENT_ID JOIN x_adm_rekap_fisik_organ b ON a.REG_NO = b.REG_NO LEFT JOIN x_adm_rekap_fisik_organ_translate c ON a.REG_NO = c.REG_NO "; $query = $this->db_onedev->query($sql, [$orderid]); if (!$query) { $this->sys_error_db("Error get detail fisik old organ"); exit; } // echo $this->db_onedev->last_query(); $rstFisikOrgan = $query->row_array(); // Initialize result array $resultFisikOrgan = []; // List of base field names (without _eng suffix) $baseFields = [ 'telinga', 'hidung', 'tenggorokan', 'rongga_mulut_gigi', 'jantung', 'paru', 'abdomen', 'ginjal', 'hernia', 'kulit', 'anogenital', 'extremitas', 'tulang_belakang', 'refleks_fisiologis', 'refleks_patologis', 'suhu', ]; // Create paired arrays foreach ($baseFields as $field) { $engField = $field . '_eng'; if (isset($rstFisikOrgan[$field]) || isset($rstFisikOrgan[$engField])) { $resultFisikOrgan[] = [ "name" => ucfirst(str_replace('_', ' ', $field)), // Menghilangkan underscore di name "field" => $field, 'result' => $rstFisikOrgan[$field] ?? '', 'resultEng' => $rstFisikOrgan[$engField] ?? '' ]; } } $sql = "SELECT T_OrderHeaderID, M_PatientID, M_PatientOldPID , M_PatientName, a.REG_NO, b.REG_NO, b.`Hepar (USG ABDOMEN)` as hepar, b.`V. Fellea ( USG ABDOMEN)` as fellea, b.`Pancreas (USG ABDOMEN)` as pancreas, b.`Lien (USG ABDOMEN)` as lien, b.`Right Kidney (USG ABDOMEN)` as right_Kidney, b.`Left Kidney (USG ABDOMEN)` as left_Kidney, b.`Buli-Buli (USG ABDOMEN)` as builiBuli, b.`Prostat (USG ABDOMEN)` as prostat, b.`Uterus dan Adnexa (USG ABDOMEN)` as uterus, b.`Kesan (USG ABDOMEN)` as kesan, b.`SARAN (USG ABDOMEN)` as saran, b.`Appendix (USG ABDOMEN)` as appendix, CASE WHEN c.REG_NO IS NOT NULL THEN c.`Hepar (USG ABDOMEN)` WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word_separator_comma( b.`Hepar (USG ABDOMEN)`, $lang), '') ELSE 'xels' END hepar_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.`V. Fellea ( USG ABDOMEN)` WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word_separator_comma(b.`V. Fellea ( USG ABDOMEN)`, $lang), '') END as fellea_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.`Pancreas (USG ABDOMEN)` WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word_separator_comma(b.`Pancreas (USG ABDOMEN)`, $lang), '') END as pancreas_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.`Lien (USG ABDOMEN)` WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word_separator_comma(b.`Lien (USG ABDOMEN)`, $lang), '') END as lien_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.`Right Kidney (USG ABDOMEN)` WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word_separator_comma(b.`Right Kidney (USG ABDOMEN)`, $lang), '') END as right_Kidney_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.`Left Kidney (USG ABDOMEN)` WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word_separator_comma(b.`Left Kidney (USG ABDOMEN)`, $lang), '') END as left_Kidney_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.`Buli-Buli (USG ABDOMEN)` WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word_separator_comma(b.`Buli-Buli (USG ABDOMEN)`, $lang), '') END as builiBuli_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.`Prostat (USG ABDOMEN)` WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word_separator_comma(b.`Prostat (USG ABDOMEN)`, $lang), '') END as prostat_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.`Uterus dan Adnexa (USG ABDOMEN)` WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word_separator_comma(b.`Uterus dan Adnexa (USG ABDOMEN)`, $lang), '') END as uterus_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.`Kesan (USG ABDOMEN)` WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word_separator_comma(b.`Kesan (USG ABDOMEN)`, $lang), '') END as kesan_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.`SARAN (USG ABDOMEN)` WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word_separator_comma(b.`SARAN (USG ABDOMEN)`, $lang), '') END as saran_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.`Appendix (USG ABDOMEN)` WHEN c.REG_NO IS NULL THEN IFNULL(fn_get_translate_word_separator_comma(b.`Appendix (USG ABDOMEN)`, $lang), '') END as appendix_eng FROM t_orderheader JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND T_OrderHeaderID = ? JOIN x_adm_rekap_patient a ON M_PatientOldPID = PATIENT_ID JOIN x_adm_rekap_fisik_usg b ON a.REG_NO = b.REG_NO LEFT JOIN x_adm_rekap_fisik_usg_translate c ON a.REG_NO = c.REG_NO"; $query = $this->db_onedev->query($sql, [$orderid]); if (!$query) { echo $this->db_onedev->last_query(); $this->sys_error_db("Error get detail fisik old usg"); exit; } $rstFisikUsg = $query->row_array(); // List of base field names (without _eng suffix) $baseFieldsUsg = [ "hepar", "fellea", "pancreas", "lien", "right_Kidney", "left_Kidney", "builiBuli", "prostat", "uterus", "kesan", "saran", "appendix", ]; $resultFisikUsg = []; foreach ($baseFieldsUsg as $field) { $engField = $field . '_eng'; if (isset($rstFisikUsg[$field]) || isset($rstFisikUsg[$engField])) { $resultFisikUsg[] = [ "name" => ucfirst(str_replace('_', ' ', $field)), // Menghilangkan underscore di name "field" => $field, 'result' => $rstFisikUsg[$field] ?? '', 'resultEng' => $rstFisikUsg[$engField] ?? '' ]; } } $sql = "SELECT T_OrderHeaderID, M_PatientID, M_PatientOldPID , M_PatientName, a.REG_NO, b.REG_NO, b.tb, b.bb, b.bmi, b.sistolik, b.diastolik, b.nadi, b.frekuensi, b.visus_kanan, b.visus_kiri, b.kenal_warna, b.lapang_pandang, b.konjuktiva_sklera, b.suhu, b.stage, CASE WHEN c.REG_NO IS NOT NULL THEN c.TB WHEN c.REG_NO IS NULL THEN b.TB ELSE 'xels' END tb_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.BB WHEN c.REG_NO IS NULL THEN b.BB ELSE 'xels' END AS bb_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.BMI WHEN c.REG_NO IS NULL THEN b.BMI ELSE 'xels' END AS bmi_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.Sistolik WHEN c.REG_NO IS NULL THEN b.Sistolik ELSE 'xels' END AS sistolik_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.Diastolik WHEN c.REG_NO IS NULL THEN b.Diastolik ELSE 'xels' END AS diastolik_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.Nadi WHEN c.REG_NO IS NULL THEN b.Nadi ELSE 'xels' END AS nadi_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.Frekuensi WHEN c.REG_NO IS NULL THEN b.Frekuensi ELSE 'xels' END AS frekuensi_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.Visus_Kanan WHEN c.REG_NO IS NULL THEN b.Visus_Kanan ELSE 'xels' END AS visus_kanan_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.Visus_Kiri WHEN c.REG_NO IS NULL THEN b.Visus_Kiri ELSE 'xels' END AS visus_kiri_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.Kenal_Warna WHEN c.REG_NO IS NULL THEN b.Kenal_Warna ELSE 'xels' END AS kenal_warna_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.Lapang_Pandang WHEN c.REG_NO IS NULL THEN b.Lapang_Pandang ELSE 'xels' END AS lapang_pandang_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.Konjuktiva_Sklera WHEN c.REG_NO IS NULL THEN b.Konjuktiva_Sklera ELSE 'xels' END AS konjuktiva_sklera_eng, CASE WHEN c.REG_NO IS NOT NULL THEN c.Suhu WHEN c.REG_NO IS NULL THEN b.Suhu ELSE 'xels' END AS suhu_eng FROM t_orderheader JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND T_OrderHeaderID = ? JOIN x_adm_rekap_patient a ON M_PatientOldPID = PATIENT_ID JOIN x_adm_rekap_fisik_vital b ON a.REG_NO = b.REG_NO LEFT JOIN x_adm_rekap_fisik_vital_translate c ON a.REG_NO = c.REG_NO"; $query = $this->db_onedev->query($sql, [$orderid]); if (!$query) { echo $this->db_onedev->last_query(); $this->sys_error_db("Error get detail fisik old usg"); exit; } $rstFisikVital = $query->row_array(); // List of base field names (without _eng suffix) $baseFieldsVital = [ "tb", "bb", "bmi", "sistolik", "diastolik", "nadi", "frekuensi", "visus_kanan", "visus_kiri", "kenal_warna", "lapang_pandang", "konjuktiva_sklera", "suhu", ]; $resultFisikVital = []; foreach ($baseFieldsVital as $field) { $engField = $field . '_eng'; if (isset($rstFisikVital[$field]) || isset($rstFisikVital[$engField])) { $resultFisikVital[] = [ "name" => ucfirst(str_replace('_', ' ', $field)), // Menghilangkan underscore di name "field" => $field, 'result' => $rstFisikVital[$field] ?? '', 'resultEng' => $rstFisikVital[$engField] ?? '' ]; } } $saran = array(); $sql = "SELECT T_OrderHeaderID, M_PatientID, M_PatientOldPID , M_PatientName, a.REG_NO, b.REG_NO, b.saran, CASE WHEN c.REG_NO IS NOT NULL THEN c.saran WHEN c.REG_NO IS NULL THEN '' ELSE '' END saran_eng FROM t_orderheader JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND T_OrderHeaderID = ? JOIN x_adm_rekap_patient a ON M_PatientOldPID = PATIENT_ID JOIN x_adm_rekap_fisik_saran b ON a.REG_NO = b.REG_NO LEFT JOIN x_adm_rekap_fisik_saran_translate c ON a.REG_NO = c.REG_NO"; $query = $this->db_onedev->query($sql, [$orderid]); if (!$query) { echo $this->db_onedev->last_query(); $this->sys_error_db("Error get detail fisik old saran"); exit; } $saran = $query->row_array(); $result = array( 'lab' => [], 'nonlab' => [], 'fisik' => $fisik, 'rstNonlab' => $rstNonlab, 'fisikOrgan' => $resultFisikOrgan, 'fisikUsg' => $resultFisikUsg, 'fisikVital' => $resultFisikVital, 'fisikSaran' => $saran, 'dataPatientOld' => $dataPatientOld, ); $this->sys_ok($result); } function getFisikUmum($reID, $debug = 'N', $lang = '1') { $rst = []; $riwayats = []; $fisiks = []; $k3s = []; $sql = "SELECT * FROM so_resultentry_fisik_umum JOIN fisik_template ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID WHERE So_ResultEntryFisikUmumSo_ResultEntryID = {$reID} AND So_ResultEntryFisikUmumIsActive = 'Y' ORDER BY FisikTemplateCode ASC"; $rows_data = $this->db_onedev->query($sql)->result_array(); // print_r($rows_data); // echo $sql; if ($rows_data) { foreach ($rows_data as $key => $value) { $data = json_decode($value['So_ResultEntryFisikUmumDetails'], TRUE); $data['reFisikUmumID'] = $value['So_ResultEntryFisikUmumID']; if ($value['FisikTemplateType'] == 'Riwayat') $riwayats[] = $data; if ($value['FisikTemplateType'] == 'Fisik') $fisiks[] = $data; if ($value['FisikTemplateType'] == 'K3') $k3s[] = $data; } } // $reFisikUmumID = $rows_data['So_ResultEntryFisikUmumID']; $finalResult = []; foreach ($riwayats as $key => $data) { if ($data['type_form'] == 'XV') { foreach ($data['details'] as $key1 => $detail) { if ($detail['value'] != '') { $detail['reFisikUmumID'] = $data['reFisikUmumID']; $detail['title'] = $data['title']; $finalResult[] = $detail; } } } if ($data['type_form'] == 'XO') { foreach ($data['details'] as $key2 => $detail) { if ($detail['value'] != '') { $detail['reFisikUmumID'] = $data['reFisikUmumID']; $detail['title'] = $data['title']; $finalResult[] = $detail; } } } if ($data['type_form'] == 'XVS') { foreach ($data['details'] as $key3 => $detail) { foreach ($detail['details'] as $key4 => $detailData) { if ($detailData['value'] != '') { $detailData['reFisikUmumID'] = $data['reFisikUmumID']; $detailData['title'] = $data['title']; $finalResult[] = $detailData; } } } } if ($data['type_form'] == 'XD') { foreach ($data['details'] as $key5 => $detail) { foreach ($detail['details'] as $key6 => $detailData) { if ($detailData['value'] != '') { $detailData['reFisikUmumID'] = $data['reFisikUmumID']; $detailData['title'] = $data['title']; $finalResult[] = $detailData; } } } } } foreach ($fisiks as $key => $data) { if ($data['type_form'] == 'VXX+') { foreach ($data['details'] as $key => $detail) { if ($detail['value'] != '') { $detail['reFisikUmumID'] = $data['reFisikUmumID']; $detail['title'] = $data['title']; $finalResult[] = $detail; } } } if ($data['type_form'] == 'XXV') { foreach ($data['details'] as $key => $detail) { if ($detail['value'] != '') { $detail['reFisikUmumID'] = $data['reFisikUmumID']; $detail['title'] = $data['title']; $finalResult[] = $detail; } } } if ($data['type_form'] == 'XV') { foreach ($data['details'] as $key => $detail) { if ($detail['value'] != '') { $detail['reFisikUmumID'] = $data['reFisikUmumID']; $detail['title'] = $data['title']; $finalResult[] = $detail; } } } if ($data['type_form'] == 'XXVWL') { foreach ($data['details'] as $key => $detail) { if ($detail['value'] != '') { $detail['reFisikUmumID'] = $data['reFisikUmumID']; $detail['title'] = $data['title']; $finalResult[] = $detail; } } } if ($data['type_form'] == 'XVS') { foreach ($data['details'] as $key => $detail) { foreach ($detail['details'] as $key => $detailData) { if ($detailData['value'] != '') { $detailData['reFisikUmumID'] = $data['reFisikUmumID']; $detailData['title'] = $data['title']; $finalResult[] = $detailData; } } } } if ($data['type_form'] == 'XVS3R') { foreach ($data['details'] as $key => $detail) { foreach ($detail['details'] as $key => $detailData) { if ($detailData['value'] != '') { $detailData['reFisikUmumID'] = $data['reFisikUmumID']; $detailData['title'] = $data['title']; $finalResult[] = $detailData; } } } } } foreach ($k3s as $key => $data) { if ($data['type_form'] == 'XVV') { foreach ($data['details'] as $key => $detail) { if ($detail['value_sumber'] != '' || $detail['value_sumber'] != '') { $dtl = $detail; $dtl['reFisikUmumID'] = $data['reFisikUmumID']; $dtl['value'] = $detail['value_sumber'] . '|' . $detail['value_sumber']; $dtl['title'] = $data['title']; $finalResult[] = $dtl; } } } if ($data['type_form'] == 'XXV') { foreach ($data['details'] as $key => $detail) { if ($detail['value'] != '') { $detail['reFisikUmumID'] = $data['reFisikUmumID']; $detail['title'] = $data['title']; $finalResult[] = $detail; } } } if ($data['type_form'] == 'XV') { foreach ($data['details'] as $key => $detail) { if ($detail['value'] != '') { $detail['reFisikUmumID'] = $data['reFisikUmumID']; $detail['title'] = $data['title']; $finalResult[] = $detail; } } } if ($data['type_form'] == 'XXVWL') { foreach ($data['details'] as $key => $detail) { if ($detail['value'] != '') { $detail['reFisikUmumID'] = $data['reFisikUmumID']; $detail['title'] = $data['title']; $finalResult[] = $detail; } } } if ($data['type_form'] == 'XVS') { foreach ($data['details'] as $key => $detail) { foreach ($detail['details'] as $key => $detailData) { if ($detailData['value'] != '') { $detailData['reFisikUmumID'] = $data['reFisikUmumID']; $detailData['title'] = $data['title']; $finalResult[] = $detailData; } } } } if ($data['type_form'] == 'XVS3R') { foreach ($data['details'] as $key => $detail) { foreach ($detail['details'] as $key => $detailData) { if ($detailData['value'] != '') { $detailData['reFisikUmumID'] = $data['reFisikUmumID']; $detailData['title'] = $data['title']; $finalResult[] = $detailData; } } } } } foreach ($finalResult as $key => $value) { if (property_exists($value, 'segment_name')) { $sql = "SELECT So_ResultEntryFisikUmumAiID AS aiTranslateID, So_ResultEntryFisikUmumAiTranslate AS aiResult, So_ResultEntryFisikUmumAiConfidence AS aiConfidence FROM so_resultentry_fisik_umum_ai WHERE So_ResultEntryFisikUmumAiSo_ResultEntryFisikUmumID = ? AND So_ResultEntryFisikUmumAiLangID = ? AND So_ResultEntryFisikUmumAiTableName = ? AND So_ResultEntryFisikUmumAiSegment = ? AND So_ResultEntryFisikUmumAiCode = ? AND So_ResultEntryFisikUmumAiIsActive = 'Y'"; $query = $this->db_onedev->query($sql, [ $value['reFisikUmumID'], $lang, $value['table_name'], $value['segment_name'], $value['id_code'], ]); if (!$query) { // echo $this->db_onedev->last_query(); $this->sys_error_db("Error get ai fisik umum"); exit; } $aiTranslationID = ""; $aiResult = ""; $aiConfidence = ""; $rst = $query->result_array(); if (count($rst) != 0) { $aiTranslationID = $rst[0]['aiTranslateID']; $aiResult = $rst[0]['aiResult']; $aiConfidence = $rst[0]['aiConfidence']; } $sql = "SELECT So_ResultEntryFisikUmumOtherID AS resultTranslateID, So_ResultEntryFisikUmumOtherTranslate AS displayResult FROM so_resultentry_fisik_umum_other WHERE So_ResultEntryFisikUmumOtherSo_ResultEntryFisikUmumID = ? AND So_ResultEntryFisikUmumOtherLangID = ? AND So_ResultEntryFisikUmumOtherTableName = ? AND So_ResultEntryFisikUmumOtherSegment = ? AND So_ResultEntryFisikUmumOtherCode = ? AND So_ResultEntryFisikUmumOtherIsActive = 'Y'"; $query = $this->db_onedev->query($sql, [ $value['reFisikUmumID'], $lang, $value['table_name'], $value['segment_name'], $value['id_code'], ]); if (!$query) { // echo $this->db_onedev->last_query(); $this->sys_error_db("Error get ai fisik umum"); exit; } $resultTranslationID = ""; $displayResult = ""; $status = 'Y'; $rst = $query->result_array(); if (count($rst) != 0) { $resultTranslationID = $rst[0]['resultTranslateID']; $displayResult = $rst[0]['displayResult']; } if ($displayResult == '') { $displayResult = $aiResult; $status = 'N'; } $finalResult[$key]['resultTranslateID'] = $resultTranslationID; $finalResult[$key]['displayResult'] = $displayResult; $finalResult[$key]['aiTranslateID'] = $aiTranslationID; $finalResult[$key]['aiResult'] = $aiResult; $finalResult[$key]['aiConfidence'] = $aiConfidence; $finalResult[$key]['status'] = $status; } else { $sql = "SELECT So_ResultEntryFisikUmumAiID AS aiTranslateID, So_ResultEntryFisikUmumAiTranslate AS aiResult, So_ResultEntryFisikUmumAiConfidence AS aiConfidence FROM so_resultentry_fisik_umum_ai WHERE So_ResultEntryFisikUmumAiSo_ResultEntryFisikUmumID = ? AND So_ResultEntryFisikUmumAiLangID = ? AND So_ResultEntryFisikUmumAiTableName = ? AND So_ResultEntryFisikUmumAiCode = ? AND So_ResultEntryFisikUmumAiIsActive = 'Y'"; $query = $this->db_onedev->query($sql, [ $value['reFisikUmumID'], $lang, $value['table_name'], $value['id_code'], ]); if (!$query) { // echo $this->db_onedev->last_query(); $this->sys_error_db("Error get translate resuly fisik umum"); exit; } $aiTranslationID = ""; $aiResult = ""; $aiConfidence = ""; $rst = $query->result_array(); if (count($rst) != 0) { $aiTranslationID = $rst[0]['aiTranslateID']; $aiResult = $rst[0]['aiResult']; $aiConfidence = $rst[0]['aiConfidence']; } $sql = "SELECT So_ResultEntryFisikUmumOtherID AS resultTranslateID, So_ResultEntryFisikUmumOtherTranslate AS displayResult FROM so_resultentry_fisik_umum_other WHERE So_ResultEntryFisikUmumOtherSo_ResultEntryFisikUmumID = ? AND So_ResultEntryFisikUmumOtherLangID = ? AND So_ResultEntryFisikUmumOtherTableName = ? AND So_ResultEntryFisikUmumOtherCode = ? AND So_ResultEntryFisikUmumOtherIsActive = 'Y'"; $query = $this->db_onedev->query($sql, [ $value['reFisikUmumID'], $lang, $value['table_name'], $value['id_code'], ]); if (!$query) { // echo $this->db_onedev->last_query(); $this->sys_error_db("Error get ai fisik umum"); exit; } $resultTranslationID = ""; $displayResult = ""; $status = 'Y'; $rst = $query->result_array(); if (count($rst) != 0) { $resultTranslationID = $rst[0]['resultTranslateID']; $displayResult = $rst[0]['displayResult']; } if ($displayResult == '') { $displayResult = $aiResult; $status = 'N'; } $finalResult[$key]['resultTranslateID'] = $resultTranslationID; $finalResult[$key]['displayResult'] = $displayResult; $finalResult[$key]['aiTranslateID'] = $aiTranslationID; $finalResult[$key]['aiResult'] = $aiResult; $finalResult[$key]['aiConfidence'] = $aiConfidence; $finalResult[$key]['status'] = $status; } } $rst['riwayats'] = $riwayats; $rst['fisiks'] = $fisiks; $rst['k3s'] = $k3s; $rst['finalResult'] = $finalResult; if ($debug == 'Y') { $this->sys_ok($rst); } else { return $rst; } } public function save() { $userid = $this->sys_user["M_UserID"]; if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $orderid = $prm['orderid']; $userid = $this->sys_user["M_UserID"]; $lang = $prm['lang']; $lab = $prm['lab']; $sql = "SELECT * FROM `m_lang` WHERE `M_LangID` = ? LIMIT 1"; $query = $this->db_onedev->query($sql, [$lang]); if (!$query) { $this->sys_error_db("Error get language"); exit; } $language = $query->result_array(); if (count($language) == 0) { $this->sys_error_db("Bahasa tidak ditemukan"); exit; } $dataLang = $language[0]; $logType = ""; $jsonBefore = ""; $sql = "SELECT * FROM t_orderdetaillang WHERE T_OrderDetailLangT_OrderHeaderID = ? AND T_OrderDetailLangNat_LangID = ?"; $query = $this->db_onedev->query($sql, [$orderid, $lang]); if (!$query) { $this->sys_error_db("Error log data before"); exit; } $rstJsonBefore = $query->result_array(); if (count($rstJsonBefore) == 0) { $logType = "ADD"; } else { $logType = "UPDATE"; } $jsonBefore = json_encode($rstJsonBefore); for ($i = 0; $i < count($lab); $i++) { $data = $lab[$i]; $newNormalValue = ''; if ($data['normalValueLangNote'] != '' || $data['normalValueLangNote'] != null) { $newNormalValue = $data['normalValueLangNote']; } else if (($data['normalValueNote'] != '' || $data['normalValueLangNote'] != null)) { $newNormalValue = $data['normalValueNote']; } else { $newNormalValue = NULL; } $sql = "SELECT * FROM `nat_testlang` WHERE `Nat_TestLangNat_TestID` = ? AND `Nat_testLangIsActive` = 'Y' AND Nat_TestLangLangID = ? LIMIT 1"; $query = $this->db_onedev->query($sql, [$data['natTestID'], $lang]); if (!$query) { $this->sys_error_db("Error get language"); exit; } $natTestLang = $query->row_array(); $sql = "SELECT * FROM `nat_unitlang` WHERE `Nat_UnitLangNat_UnitID` = ? AND `Nat_UnitLangIsActive` = 'Y' AND `Nat_UnitLangNat_LangID` = ? LIMIT 1"; $query = $this->db_onedev->query($sql, [$data['natUnitID'], $lang]); if (!$query) { $this->sys_error_db("Error get lang unit"); exit; } $natUnitLang = $query->row_array(); $unitID = ''; $unitName = ''; if ($data['natUnitID'] != '' && $data['natUnitID'] != null) { $unitID = $natUnitLang['Nat_UnitLangID']; $unitName = $natUnitLang['Nat_UnitLangName']; } // $sql = "SELECT * // FROM `nat_unitlang` // WHERE `Nat_UnitLangNat_UnitID` = ? // AND `Nat_UnitLangIsActive` = 'Y' // AND `Nat_UnitLangNat_LangID` = ? // LIMIT 1"; // $query = $this->db_onedev->query($sql, [$data['natUnitID'], $lang]); // if (!$query) { // $this->sys_error_db("Error get lang unit"); // exit; // } // $natUnitLang = $query->row_array(); // $unitID = ''; // $unitName = ''; // if ($data['natUnitID'] != '' && $data['natUnitID'] != null) { // $unitID = $natUnitLang['Nat_UnitLangID']; // $unitName = $natUnitLang['Nat_UnitLangName']; // } $isEdited = 'N'; if (trim($data['displayResult']) != trim($data['aiResult'])) { $isEdited = 'Y'; } $sqlCek = "SELECT * FROM t_orderdetaillang WHERE T_OrderDetailLangT_OrderDetailID = ? AND T_OrderDetailLangT_OrderHeaderID = ? AND T_OrderDetailLangNat_LangID = ? AND T_OrderDetailLangIsActive = 'Y';"; $queryCek = $this->db_onedev->query($sqlCek, [$data['orderDetailID'], $data['orderID'], $lang]); if (!$queryCek) { $this->sys_error_db("Error cek data"); exit; } $dataCek = $queryCek->result_array(); // print_r($data); if (count($dataCek) == 1) { //UPDATE $sql = "UPDATE t_orderdetaillang SET T_OrderDetailLangIsSI = 'N', T_OrderDetailLangNat_TestLangID = ?, T_OrderDetailLangNat_TestLangName = ?, T_OrderDetailLangNat_UnitLangID = ?, T_OrderDetailLangNat_UnitLangName = ?, T_OrderDetailLangResult = ?, T_OrderDetailLangIsEdited = ?, T_OrderDetailLangNote = ?, T_OrderDetailLangFlag = ?, T_OrderDetailLangNat_NormalValueLangID = ?, T_OrderDetailLangNat_NormalValueLangNote = ?, T_OrderDetailLangLastUpdated = CURRENT_TIMESTAMP, T_OrderDetailLangUserID = ?, T_OrderDetailLangResultBefore = ?, T_OrderDetailLangNormalValueDescription = ? WHERE T_OrderDetailLangT_OrderDetailID = ? AND T_OrderDetailLangT_OrderHeaderID = ? AND T_OrderDetailLangNat_LangID = ?;"; $query = $this->db_onedev->query($sql, [ $natTestLang['Nat_TestLangID'], $natTestLang['Nat_TestLangName'], $unitID, $unitName, $data['displayResult'], $isEdited, $data['resultNote'], $data['resultFlag'], $data['natNormalvalueID'], $newNormalValue, // $data['normalValueNote'] || $data['normalValueLangNote'], $userid, $data['resultBefore'], $data['valDesc'], $data['orderDetailID'], $data['orderID'], $lang, ]); if (!$query) { $this->sys_error_db("Error update data"); exit; } } else { $sql = "INSERT INTO t_orderdetaillang ( T_OrderDetailLangT_OrderHeaderID, T_OrderDetailLangT_OrderDetailID, T_OrderDetailLangNat_LangID, T_OrderDetailLangIsSI, T_OrderDetailLangNat_TestLangID, T_OrderDetailLangNat_TestLangName, T_OrderDetailLangNat_UnitLangID, T_OrderDetailLangNat_UnitLangName, T_OrderDetailLangResult, T_OrderDetailLangIsEdited, T_OrderDetailLangNote, T_OrderDetailLangNat_NormalValueLangID, T_OrderDetailLangNat_NormalValueLangNote, T_OrderDetailLangFlag, T_OrderDetailLangUserID, T_OrderDetailLangResultBefore, T_OrderDetailLangNormalValueDescription ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )"; $query = $this->db_onedev->query($sql, [ $data['orderID'], $data['orderDetailID'], $lang, 'N', $natTestLang['Nat_TestLangID'], $natTestLang['Nat_TestLangName'], $unitID, $unitName, $data['displayResult'], $isEdited, $data['resultNote'], $data['natNormalvalueID'], $newNormalValue, // $data['normalValueNote'] || $data['normalValueLangNote'], $data['resultFlag'], $userid, $data['resultBefore'], $data['valDesc'], ]); if (!$query) { // echo $this->db_onedev->last_query(); $this->sys_error_db("Error insert data"); exit; } } } $jsonAfter = ""; $sql = "SELECT * FROM t_orderdetaillang WHERE T_OrderDetailLangT_OrderHeaderID = ? AND T_OrderDetailLangNat_LangID = ?"; $query = $this->db_onedev->query($sql, [$orderid, $lang]); if (!$query) { $this->sys_error_db("Error log data After"); exit; } $rstJsonAfter = $query->result_array(); $jsonAfter = json_encode($rstJsonAfter); $sql = "INSERT INTO cpone_log.log_t_orderdetaillang ( Log_T_OrderDetailLangType, Log_T_OrderDetailLangT_OrderHeaderID, Log_T_OrderDetailLangLangID, Log_T_OrderDetailLangPrm, Log_T_OrderDetailLangJsonBefore, Log_T_OrderDetailLangJsonAfter, Log_T_OrderDetailLangUserID, Log_T_OrderDetailLangCreated ) VALUES ( ?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP );"; $query = $this->db_onedev->query($sql, [ $logType, $orderid, $lang, json_encode($prm), $jsonBefore, $jsonAfter, $userid ]); if (!$query) { // echo $this->db_onedev->last_query(); $this->sys_error_db("Error insert log "); exit; } $this->sys_ok("Success"); } public function saveNonlab() { $userid = $this->sys_user["M_UserID"]; if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $orderid = $prm['orderid']; $userid = $this->sys_user["M_UserID"]; $lang = $prm['lang']; $nonlab = $prm['nonlab']; $sql = "SELECT * FROM `m_lang` WHERE `M_LangID` = ? LIMIT 1"; $query = $this->db_onedev->query($sql, [$lang]); if (!$query) { $this->sys_error_db("Error get language"); exit; } $language = $query->result_array(); if (count($language) == 0) { $this->sys_error_db("Bahasa tidak ditemukan"); exit; } // for ($i = 0; $i < count($nonlab); $i++) { // $data = $nonlab[$i]; // # code... // } $jsonBefore = ''; $sql = "SELECT * FROM `so_resultentrydetail_other` WHERE `So_ResultEntryDetailOtherSo_ResultEntryID` = ? AND `So_ResultEntryDetailOtherM_LangID` = ? "; $query = $this->db_onedev->query($sql, [$nonlab['resultEntryID'], $lang]); if (!$query) { $this->sys_error_db("Error log data before"); exit; } $rstJsonBefore = $query->result_array(); if (count($rstJsonBefore) == 0) { $logType = "ADD"; } else { $logType = "UPDATE"; } $jsonBefore = json_encode($rstJsonBefore); for ($i = 0; $i < count($nonlab['detail']); $i++) { $detail = $nonlab['detail'][$i]; $isEdited = 'N'; if (trim($detail['displayResult']) != trim($detail['aiResult'])) { $isEdited = 'Y'; } $sqlCek = "SELECT * FROM so_resultentrydetail_other WHERE So_ResultEntryDetailOtherSo_ResultEntryID = ? AND So_ResultEntryDetailOtherSo_TemplateDetailID = ? AND So_ResultEntryDetailOtherM_LangID = ? AND So_ResultEntryDetailOtherIsActive = 'Y';"; $queryCek = $this->db_onedev->query($sqlCek, [$detail['resultEntryID'], $detail['templateDetailLangID'], $lang]); if (!$queryCek) { $this->sys_error_db("Error cek data"); exit; } $dataCek = $queryCek->result_array(); if (count($dataCek) == 0) { $sql = "INSERT INTO so_resultentrydetail_other( So_ResultEntryDetailOtherM_LangID, So_ResultEntryDetailOtherSo_ResultEntryID, So_ResultEntryDetailOtherSo_TemplateDetailID, So_ResultEntryDetailOtherSo_TemplateDetailName, So_ResultEntryDetailOtherSo_TemplateDetailCode, So_ResultEntryDetailOtherIsEdited, So_ResultEntryDetailOtherResult, So_ResultEntryDetailOtherResultBefore, So_ResultEntryDetailOtherUserID, So_ResultEntryDetailOtherCreated) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, NOW())"; $query = $this->db_onedev->query($sql, [ $lang, $detail['resultEntryID'], $detail['templateDetailLangID'], $detail['templateDetailLangName'], $detail['templateDetailCode'], $isEdited, $detail['displayResult'], $detail['resultBeforeTranslate'], $userid ]); if (!$query) { // echo $this->db_onedev->last_query(); $this->sys_error_db("Error insert data "); exit; } } else { $sql = "UPDATE so_resultentrydetail_other SET So_ResultEntryDetailOtherResult = ?, So_ResultEntryDetailOtherResultBefore = ?, So_ResultEntryDetailOtherIsEdited = ?, So_ResultEntryDetailOtherLastUpdated = NOW(), So_ResultEntryDetailOtherUserID = ? WHERE So_ResultEntryDetailOtherSo_ResultEntryID = ? AND So_ResultEntryDetailOtherSo_TemplateDetailID = ? AND So_ResultEntryDetailOtherM_LangID = ?"; $query = $this->db_onedev->query($sql, [ $detail['displayResult'], $detail['resultBeforeTranslate'], $isEdited, $userid, $detail['resultEntryID'], $detail['templateDetailLangID'], $lang ]); if (!$query) { echo $this->db_onedev->last_query(); $this->sys_error_db("Error update data "); exit; } } } $jsonAfter = ''; $sql = "SELECT * FROM `so_resultentrydetail_other` WHERE `So_ResultEntryDetailOtherSo_ResultEntryID` = ? AND `So_ResultEntryDetailOtherM_LangID` = ? "; $query = $this->db_onedev->query($sql, [$nonlab['resultEntryID'], $lang]); if (!$query) { $this->sys_error_db("Error log data After"); exit; } $rstJsonAfter = $query->result_array(); $jsonAfter = json_encode($rstJsonAfter); $sql = "INSERT INTO cpone_log.log_resultentrylang ( Log_ResultEntryLangSo_ResultEntryID, Log_ResultEntryLangType, Log_ResultEntryLangLangID, Log_ResultEntryLangPrm, Log_ResultEntryLangJsonBefore, Log_ResultEntryLangJsonAfter, Log_ResultEntryLangUserID, Log_ResultEntryLangCreated ) VALUES ( ?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP );"; $query = $this->db_onedev->query($sql, [ $nonlab['resultEntryID'], $logType, $lang, json_encode($prm), $jsonBefore, $jsonAfter, $userid ]); if (!$query) { $this->sys_error_db("Error insert log data"); exit; } $this->sys_ok('Success'); } public function saveFisikUmum() { $userid = $this->sys_user["M_UserID"]; if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $orderid = $prm['orderid']; $userid = $this->sys_user["M_UserID"]; $lang = $prm['lang']; $fisik = $prm['fisik']; $fisikOrgan = $prm['fisikOrgan']; $fisikVital = $prm['fisikVital']; $fisikUsg = $prm['fisikUsg']; $fisikSaran = $prm['fisikSaran']; $dataPatientOld = $prm['dataPatientOld']; $sql = "SELECT * FROM `m_lang` WHERE `M_LangID` = ? LIMIT 1"; $query = $this->db_onedev->query($sql, [$lang]); if (!$query) { $this->sys_error_db("Error get language"); exit; } $language = $query->result_array(); $sql = "SELECT So_ResultEntryFisikUmumID, so_resultentry_fisik_umum_other.* FROM so_resultentry_fisik_umum JOIN so_resultentry_fisik_umum_other ON So_ResultEntryFisikUmumID = So_ResultEntryFisikUmumOtherSo_ResultEntryFisikUmumID AND So_ResultEntryFisikUmumOtherIsActive = 'Y' WHERE So_ResultEntryFisikUmumSo_ResultEntryID = ? AND So_ResultEntryFisikUmumOtherLangID = ?"; $query = $this->db_onedev->query($sql, [ $fisik['resultEntryID'], $lang ]); if (!$query) { $this->sys_error_db("Error get data log before"); exit; } $jsonBefore = $query->result_array(); if (count($jsonBefore) == 0) { $logType = "ADD"; } else { $logType = "UPDATE"; } foreach ($fisik['detail'] as $key => $value) { $segmentName = $value['segment_name'] ?? ''; // echo $value['segment_name']; // if (property_exists($value, 'segment_name')) { // $segmentName = $value['segment_name']; // } $sql = "SELECT * FROM so_resultentry_fisik_umum_other WHERE So_ResultEntryFisikUmumOtherSo_ResultEntryFisikUmumID = ? AND So_ResultEntryFisikUmumOtherLangID = ? AND So_ResultEntryFisikUmumOtherTableName = ? AND So_ResultEntryFisikUmumOtherSegment = ? AND So_ResultEntryFisikUmumOtherCode = ? AND So_ResultEntryFisikUmumOtherIsActive = 'Y'"; $query = $this->db_onedev->query($sql, [ $value['reFisikUmumID'], $lang, $value['table_name'], $segmentName, $value['id_code'], ]); if (!$query) { // echo $this->db_onedev->last_query(); $this->sys_error_db("Error cek result translate"); exit; } $cek = $query->result_array(); if (count($cek) > 0) { $sql = "UPDATE so_resultentry_fisik_umum_other SET So_ResultEntryFisikUmumOtherTranslate = ?, -- Update teks terjemahan So_ResultEntryFisikUmumOtherLastUpdated = NOW(), -- Update waktu terakhir diperbarui So_ResultEntryFisikUmumOtherLastUpdatedUserID = $userid -- Update ID pengguna yang terakhir memperbarui WHERE So_ResultEntryFisikUmumOtherID = ?; "; $query = $this->db_onedev->query($sql, [ $value['displayResult'], $cek[0]['So_ResultEntryFisikUmumOtherID'] ]); if (!$query) { // echo $this->db_onedev->last_query(); $this->sys_error_db("Error update translate fisik"); exit; } } else { $sql = "INSERT INTO so_resultentry_fisik_umum_other ( So_ResultEntryFisikUmumOtherSo_ResultEntryFisikUmumID, So_ResultEntryFisikUmumOtherLangID, So_ResultEntryFisikUmumOtherTableName, So_ResultEntryFisikUmumOtherSegment, So_ResultEntryFisikUmumOtherLabel, So_ResultEntryFisikUmumOtherCode, So_ResultEntryFisikUmumOtherTranslate, So_ResultEntryFisikUmumOtherCreated, So_ResultEntryFisikUmumOtherCreatedUserID ) VALUES ( ?, -- So_ResultEntryFisikUmumOtherSo_ResultEntryFisikUmumID ?, -- So_ResultEntryFisikUmumOtherLangID ?, -- So_ResultEntryFisikUmumOtherTableName ?, -- So_ResultEntryFisikUmumOtherSegment ?, -- So_ResultEntryFisikUmumOtherLabel ?, -- So_ResultEntryFisikUmumOtherCode ?, -- So_ResultEntryFisikUmumOtherTranslate NOW(), $userid );"; $query = $this->db_onedev->query($sql, [ $value['reFisikUmumID'], $lang, $value['table_name'], $segmentName, $value['label'], $value['id_code'], $value['displayResult'], ]); if (!$query) { // echo $this->db_onedev->last_query(); $this->sys_error_db("Error insert translate fisik"); exit; } } } if (count($fisikOrgan) > 0) { $this->saveFisikOrgan($fisikOrgan, $dataPatientOld['REG_NO'], $userid, $lang); } if (count($fisikUsg) > 0) { $this->saveFisikUsg($fisikUsg, $dataPatientOld['REG_NO'], $userid, $lang); } if (count($fisikVital) > 0) { $this->saveFisikVital($fisikVital, $dataPatientOld['REG_NO'], $userid, $lang); } if (!empty($fisikSaran)) { $this->saveFisikSaran($fisikSaran, $dataPatientOld['REG_NO'], $userid, $lang); } $sql = "SELECT So_ResultEntryFisikUmumID, so_resultentry_fisik_umum_other.* FROM so_resultentry_fisik_umum JOIN so_resultentry_fisik_umum_other ON So_ResultEntryFisikUmumID = So_ResultEntryFisikUmumOtherSo_ResultEntryFisikUmumID AND So_ResultEntryFisikUmumOtherIsActive = 'Y' WHERE So_ResultEntryFisikUmumSo_ResultEntryID = ? AND So_ResultEntryFisikUmumOtherLangID = ?"; $query = $this->db_onedev->query($sql, [ $fisik['resultEntryID'], $lang ]); if (!$query) { $this->sys_error_db("Error get data log after"); exit; } $jsonAfter = $query->result_array(); $sql = "INSERT INTO cpone_log.log_resultentrylang ( Log_ResultEntryLangSo_ResultEntryID, Log_ResultEntryLangType, Log_ResultEntryLangLangID, Log_ResultEntryLangPrm, Log_ResultEntryLangJsonBefore, Log_ResultEntryLangJsonAfter, Log_ResultEntryLangUserID, Log_ResultEntryLangCreated ) VALUES ( ?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP );"; $query = $this->db_onedev->query($sql, [ $fisik['resultEntryID'], $logType, $lang, json_encode($prm), json_encode($jsonBefore), json_encode($jsonAfter), $userid ]); if (!$query) { $this->sys_error_db("Error insert log data"); exit; } $this->sys_ok("OK"); } function saveFisikOrgan($data, $regNo, $userID, $lang) { // if (count($data) > 0) { // return; // } // Initialize result array // $prm = $this->sys_input; // $data = $prm['data']; // $regNo = $prm['reg_no']; // $userID = $prm['userID']; // $lang = 2; // echo json_encode($prm); // exit; $dataArray = []; // Transform data foreach ($data as $item) { $dataArray[$item['field']] = $item['resultEng']; } $dataArray['langID'] = $lang; $dataArray['REG_NO'] = $regNo; $dataArray['userID'] = $userID; $dataArray['updated'] = date('Y-m-d H:i:s'); $sql = "SELECT * FROM x_adm_rekap_fisik_organ_translate WHERE REG_NO = ? AND langID = ?"; $query = $this->db_onedev->query($sql, [ $regNo, $lang ]); if (!$query) { $this->sys_error_db("Error insert log data"); exit; } $dataCek = $query->result_array(); // echo (json_encode($dataArray)); // exit; if (count($dataCek) == 0) { $dataArray['created'] = date('Y-m-d H:i:s'); # code... $qry = $this->db_onedev->insert('x_adm_rekap_fisik_organ_translate', $dataArray); if (!$qry) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } } else { $this->db_onedev->where('REG_NO', $regNo); $qry = $this->db_onedev->update('x_adm_rekap_fisik_organ_translate', $dataArray); if (!$qry) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } } // echo ($this->db_onedev->last_query()); // exit; // // Print result (for demonstration) // echo (json_encode($dataArray)); } function saveFisikUsg($data, $regNo, $userID, $lang) { // if (count($data) > 0) { // return; // } // Initialize result array // $prm = $this->sys_input; // $data = $prm['data']; // $regNo = $prm['reg_no']; // $userID = $prm['userID']; // $lang = 2; // echo json_encode($prm); // exit; $dataArray = []; // Transform data foreach ($data as $item) { // `Hepar (USG ABDOMEN)` as hepar, // `V. Fellea ( USG ABDOMEN)` as fellea, // `Pancreas (USG ABDOMEN)` as pancreas, // `Lien (USG ABDOMEN)` as lien, // `Right Kidney (USG ABDOMEN)` as right_Kidney, // `Left Kidney (USG ABDOMEN)` as left_Kidney, // `Buli-Buli (USG ABDOMEN)` as builiBuli, // `Prostat (USG ABDOMEN)` as prostat, // `Uterus dan Adnexa (USG ABDOMEN)` as uterus, // `Kesan (USG ABDOMEN)` as kesan, // `SARAN (USG ABDOMEN)` as saran, // `Appendix (USG ABDOMEN)` as appendix, if ($item['field'] == "hepar") { $dataArray['`Hepar (USG ABDOMEN)`'] = $item['resultEng']; } if ($item['field'] == "fellea") { $dataArray['`V. Fellea ( USG ABDOMEN)`'] = $item['resultEng']; } if ($item['field'] == "pancreas") { $dataArray['`Pancreas (USG ABDOMEN)`'] = $item['resultEng']; } if ($item['field'] == "lien") { $dataArray['`Lien (USG ABDOMEN)`'] = $item['resultEng']; } if ($item['field'] == "right_Kidney") { $dataArray['`Right Kidney (USG ABDOMEN)`'] = $item['resultEng']; } if ($item['field'] == "left_Kidney") { $dataArray['`Left Kidney (USG ABDOMEN)`'] = $item['resultEng']; } if ($item['field'] == "builiBuli") { $dataArray['`Buli-Buli (USG ABDOMEN)`'] = $item['resultEng']; } if ($item['field'] == "prostat") { $dataArray['`Prostat (USG ABDOMEN)`'] = $item['resultEng']; } if ($item['field'] == "uterus") { $dataArray['`Uterus dan Adnexa (USG ABDOMEN)`'] = $item['resultEng']; } if ($item['field'] == "kesan") { $dataArray['`Kesan (USG ABDOMEN)`'] = $item['resultEng']; } if ($item['field'] == "saran") { $dataArray['`SARAN (USG ABDOMEN)`'] = $item['resultEng']; } if ($item['field'] == "appendix") { $dataArray['`Appendix (USG ABDOMEN)`'] = $item['resultEng']; } } $dataArray['langID'] = $lang; $dataArray['REG_NO'] = $regNo; $dataArray['userID'] = $userID; // echo json_encode($dataArray); // exit; $dataArray['updated'] = date('Y-m-d H:i:s'); $sql = "SELECT * FROM x_adm_rekap_fisik_usg_translate WHERE REG_NO = ? AND langID = ?"; $query = $this->db_onedev->query($sql, [ $regNo, $lang ]); if (!$query) { $this->sys_error_db("Error insert log data"); exit; } $dataCek = $query->result_array(); if (count($dataCek) == 0) { $dataArray['created'] = date('Y-m-d H:i:s'); # code... $qry = $this->db_onedev->insert('x_adm_rekap_fisik_usg_translate', $dataArray); if (!$qry) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } } else { $this->db_onedev->where('REG_NO', $regNo); $qry = $this->db_onedev->update('x_adm_rekap_fisik_usg_translate', $dataArray); if (!$qry) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } } // // Print result (for demonstration) // echo (json_encode($dataArray)); } function saveFisikVital($data, $regNo, $userID, $lang) { // if (count($data) > 0) { // return; // } // Initialize result array // $prm = $this->sys_input; // $data = $prm['data']; // $regNo = $prm['reg_no']; // $userID = $prm['userID']; // $lang = 2; // echo json_encode($prm); // exit; $dataArray = []; // Transform data foreach ($data as $item) { $dataArray[$item['field']] = $item['resultEng']; } $dataArray['langID'] = $lang; $dataArray['REG_NO'] = $regNo; $dataArray['userID'] = $userID; $dataArray['updated'] = date('Y-m-d H:i:s'); $sql = "SELECT * FROM x_adm_rekap_fisik_vital_translate WHERE REG_NO = ? AND langID = ?"; $query = $this->db_onedev->query($sql, [ $regNo, $lang ]); if (!$query) { $this->sys_error_db("Error insert log data"); exit; } $dataCek = $query->result_array(); if (count($dataCek) == 0) { $dataArray['created'] = date('Y-m-d H:i:s'); # code... $qry = $this->db_onedev->insert('x_adm_rekap_fisik_vital_translate', $dataArray); if (!$qry) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } } else { $this->db_onedev->where('REG_NO', $regNo); $qry = $this->db_onedev->update('x_adm_rekap_fisik_vital_translate', $dataArray); if (!$qry) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } } // // Print result (for demonstration) // echo (json_encode($dataArray)); } function saveFisikSaran($data, $regNo, $userID, $lang) { // if (count($data) > 0) { // return; // } // Initialize result array // $prm = $this->sys_input; // $data = $prm['data']; // $regNo = $prm['reg_no']; // $userID = $prm['userID']; // $lang = 2; // echo json_encode($prm); // exit; // REG_NO varchar(50) // langID int // Saran text // userID int [0] // created datetime // updated datetime $dataInsert = array( "REG_NO" => $regNo, "langID" => $lang, "Saran" => $data['saran_eng'], "userID" => $userID, "updated" => date('Y-m-d H:i:s'), ); $sql = "SELECT * FROM x_adm_rekap_fisik_saran_translate WHERE REG_NO = ? AND langID = ?"; $query = $this->db_onedev->query($sql, [ $regNo, $lang ]); if (!$query) { $this->sys_error_db("Error insert log data"); exit; } $dataCek = $query->result_array(); if (count($dataCek) == 0) { $dataInsert['created'] = date('Y-m-d H:i:s'); # code... $qry = $this->db_onedev->insert('x_adm_rekap_fisik_saran_translate', $dataInsert); if (!$qry) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } } else { $this->db_onedev->where('REG_NO', $regNo); $qry = $this->db_onedev->update('x_adm_rekap_fisik_saran_translate', $dataInsert); if (!$qry) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } } // // Print result (for demonstration) // echo (json_encode($dataArray)); } }