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); } function translate_wordsss($word, $langid = 1) { if ($langid == 1) { return $word; } else { $sql = "SELECT * FROM translate_word WHERE Translate_WordIsActive = 'Y' AND Translate_WordFrom = '{$word}'"; //echo $word; $qry = $this->db_smartone->query($sql); //echo $this->db_smartone->last_query(); if (! $qry) { return $word; } $rows = $qry->result_array(); if (count($rows) > 0) { return $rows[0]["Translate_WordTo"]; } else { return $word; } } } function translate_word($word, $langid = 1) { $finalResult = $word; $word = $this->clean_string($word); $sql = "SELECT * FROM translate_word WHERE Translate_WordIsActive = 'Y' AND Translate_WordFrom = ? AND Translate_WordNat_LangID = 2"; $qry = $this->db_onedev->query($sql, [$word]); if (!$qry) { echo $this->db_onedev->last_query(); exit; } $rows = $qry->result_array(); if (count($rows) > 0) { $finalResult = $rows[0]["Translate_WordTo"]; } return $finalResult; } public function getDetail() { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $orderid = $prm['orderid']; $lang = $prm['lang']; //GET LAB $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, T_OrderDetailNat_UnitID AS natUnitID, T_OrderDetailT_TestName AS testName, T_OrderDetailResult AS result, IFNULL(T_OrderDetailLangResult, '') AS langResult, IFNULL(T_OrderDetailLangAiResult, '') AS aiResult, IFNULL(T_OrderDetailLangAiConfidence, '') AS aiConfidence, fn_get_translate_word(T_OrderDetailResult, 2) as resultTranslate, Nat_SubSubGroupID AS subGroupID, Nat_SubSubGroupName AS groupName, T_TestNat_TestID AS natTestID, T_OrderDetailNat_NormalValueID AS natNormalvalueID, COALESCE(T_OrderDetailLangNat_NormalValueLangNote, T_OrderDetailNormalValueNote) AS normalValueLangNote, -- T_OrderDetailLangNat_NormalValueLangNote AS normalValueLangNote, T_OrderDetailNormalValueNote as normalValueNote, fn_get_translate_word(T_OrderDetailNormalValueNote, 2) as normalValueNoteTranslate, T_OrderDetailResultFlag AS resultFlag, T_OrderDetailNote as resultNote, TestResult, COALESCE(T_OrderDetailLangResultBefore, TestResult) AS resultBefore, T_OrderDetailLangNormalValueDescription AS valDesc, T_OrderDetailLangNote as valNote, IFNULL(T_OrderDetailLangNat_UnitLangName, '') AS displayUnitName, T_OrderDetailNat_UnitName AS unitName, CASE WHEN T_OrderDetailLangID IS NULL THEN 'N' WHEN T_OrderDetailLangID IS NOT NULL AND (T_OrderDetailLangResult IS NULL OR T_OrderDetailLangResult = '') THEN 'N' WHEN T_OrderDetailLangID IS NOT NULL AND T_OrderDetailLangResult <> '' THEN 'Y' ELSE 'N' END as status, IFNULL(T_OrderDetailLangIsEdited, 'N') as isEdited, CASE WHEN T_OrderDetailLangID IS NULL THEN T_OrderDetailLangAiResult WHEN T_OrderDetailLangID IS NOT NULL AND (T_OrderDetailLangResult IS NULL OR T_OrderDetailLangResult = '') THEN T_OrderDetailLangAiResult WHEN T_OrderDetailLangID IS NOT NULL AND T_OrderDetailLangResult <> '' THEN T_OrderDetailLangResult ELSE T_OrderDetailLangAiResult END as displayResult 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 IN ('LAB') JOIN t_test ON T_OrderDetailT_TestID = T_TestID JOIN nat_test ON T_TestNat_TestID = Nat_TestID LEFT JOIN nat_subsubgroup ON T_TestNat_SubSubGroupID=Nat_SubSubGroupID LEFT JOIN t_orderdetaillang ON T_OrderDetailID = T_OrderDetailLangT_OrderDetailID AND T_OrderDetailLangIsActive = 'Y' AND T_OrderDetailLangNat_LangID = ? LEFT JOIN t_orderdetaillang_ai ON T_OrderDetailID = T_OrderDetailLangAiT_OrderDetailID AND T_OrderDetailLangAiNat_LangID = ? AND T_OrderDetailLangAiIsActive = 'Y' JOIN t_orderheader ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID AND T_OrderHeaderIsActive ='Y' JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive ='Y' LEFT JOIN x_adm_rekap_patient ON M_PatientOldPID = PATIENT_ID LEFT JOIN x_adm_rekap_laboratorium ON x_adm_rekap_patient.REG_NO = x_adm_rekap_laboratorium.REG_NO AND Nat_TestCode = x_adm_rekap_laboratorium.TestCode ORDER BY T_TestSasCode, T_TestSequence"; $query = $this->db_onedev->query($sql, [$orderid, $lang, $lang]); if (!$query) { $this->sys_error_db("Error get detail"); exit; } // echo $this->db_onedev->last_query(); $lab = $query->result_array(); if (count($lab) > 0) { foreach ($lab as $key => $value) { if ($value['displayResult'] == '' || $value['displayResult'] == null) { $lab[$key]['displayResult'] = $this->translate_word($value['result'], 2); } if ($value['normalValueLangNote'] == $value['normalValueNote']) { $lab[$key]['normalValueLangNote'] = $this->translate_word($value['normalValueNote'], 2); } } } // 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 IN ('NONLAB','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 $nonlab = array(); $fisik = array(); for ($i = 0; $i < count($rstNonlab); $i++) { $data = $rstNonlab[$i]; if ($data['Group_ResultResumeMcu'] == 'NONLAB') { $sql = "SELECT So_ResultEntryDetailID AS resultEntryDetailID, So_ResultEntryDetailSo_ResultEntryID as resultEntryID, So_ResultEntryDetailNonlab_TemplateDetailID as templateDetailID, CONCAT(So_ResultEntryDetailNonlab_TemplateDetailName, ' / ', NonlabTemplateDetailLangName) as templateDetailName, NonlabTemplateDetailLangID as templateDetailLangID, IFNULL(NonlabTemplateDetailLangName, So_ResultEntryDetailNonlab_TemplateDetailName) as templateDetailLangName, NonlabTemplateDetailCode as templateDetailCode, NonlabTemplateDetailIsResult as templateDetailIsResult, So_ResultEntryDetailResult as result, IFNULL(So_ResultEntryDetailOtherResult, '') as langResult, IFNULL(So_ResultEntryDetailOtherAiResult,'') as aiResult, IFNULL(So_ResultEntryDetailOtherAiConfidence, '') as aiConfidence, CASE WHEN So_ResultEntryDetailOtherResult IS NULL OR So_ResultEntryDetailOtherResult = '' THEN IFNULL(So_ResultEntryDetailOtherAiResult,'') WHEN So_ResultEntryDetailOtherResult IS NOT NULL OR So_ResultEntryDetailOtherResult <> '' THEN IFNULL(So_ResultEntryDetailOtherResult,'') ELSE IFNULL(So_ResultEntryDetailOtherAiResult,'') END as displayResult, fn_get_translate_word_separator_comma(So_ResultEntryDetailResult, 2) as resultTranslate, CASE WHEN So_ResultEntryDetailOtherResult IS NULL OR So_ResultEntryDetailOtherResult = '' THEN 'N' WHEN So_ResultEntryDetailOtherResult IS NOT NULL OR So_ResultEntryDetailOtherResult <> '' THEN 'Y' ELSE 'N' END as status, So_ResultEntryDetailOtherResultBefore AS resultBeforeTranslate, CASE WHEN NonlabTemplateDetailNonlabTemplateID = 48 THEN fn_get_old_result_spiro('{$data['patientOldID']}', So_ResultEntryDetailNonlab_TemplateDetailID) WHEN NonlabTemplateDetailNonlabTemplateID = 47 THEN fn_get_old_result_audiometri('{$data['patientOldID']}', So_ResultEntryDetailNonlab_TemplateDetailID) WHEN NonlabTemplateDetailNonlabTemplateID = 50 THEN fn_get_old_result_elektromedis('{$data['patientOldID']}', So_ResultEntryDetailNonlab_TemplateDetailID) WHEN NonlabTemplateDetailNonlabTemplateID = 51 THEN fn_get_old_result_usg('{$data['patientOldID']}', So_ResultEntryDetailNonlab_TemplateDetailID) WHEN NonlabTemplateDetailNonlabTemplateID = 49 THEN fn_get_old_result_thorax('{$data['patientOldID']}', So_ResultEntryDetailNonlab_TemplateDetailID) WHEN NonlabTemplateDetailNonlabTemplateID = 1 AND {$data['testID']} = 1651 THEN fn_get_old_result_treadmill('{$data['patientOldID']}', So_ResultEntryDetailNonlab_TemplateDetailID) ELSE '' END as resultBefore FROM so_resultentrydetail JOIN nonlab_template_detail ON So_ResultEntryDetailNonlab_TemplateDetailID = NonlabTemplateDetailID AND So_ResultEntryDetailSo_ResultEntryID = ? LEFT JOIN nonlab_template_detail_lang ON So_ResultEntryDetailNonlab_TemplateDetailID = NonlabTemplateDetailLangNonlabTemplateDetailID AND NonlabTemplateDetailLangM_LangID = ? LEFT JOIN so_resultentrydetail_other ON So_ResultEntryDetailSo_ResultEntryID = So_ResultEntryDetailOtherSo_ResultEntryID AND NonlabTemplateDetailLangID = So_ResultEntryDetailOtherSo_TemplateDetailID AND So_ResultEntryDetailOtherM_LangID = ? AND So_ResultEntryDetailOtherIsActive = 'Y' LEFT JOIN so_resultentrydetail_other_ai ON So_ResultEntryDetailSo_ResultEntryID = So_ResultEntryDetailOtherAiSo_ResultEntryID AND So_ResultEntryDetailNonlab_TemplateDetailID = So_ResultEntryDetailOtherAiNonlab_TemplateDetailID AND So_ResultEntryDetailOtherAiIsActive = 'Y' AND So_ResultEntryDetailOtherM_LangAiID = ? ORDER BY NonlabTemplateDetailCode "; $query = $this->db_onedev->query($sql, [$data['resultEntryID'], $lang, $lang, $lang]); if (!$query) { // echo $this->db_onedev->last_query(); $this->sys_error_db("Error get result nonlab", $this->db_onedev); exit; } // echo $this->db_onedev->last_query(); // echo "\n"; $resultEntry = $query->result_array(); if (count($resultEntry) > 0) { foreach ($resultEntry as $key => $value) { if ($value['displayResult'] == '' || $value['displayResult'] == null) { $result = $value['result'] ? $value['result'] : ''; $resultEng = ''; $rst_xplode = explode(',', $result); if (count($rst_xplode) > 0) { foreach ($rst_xplode as $key1 => $value1) { $value1 = $this->clean_string(trim($value1)); $sql = "SELECT * FROM translate_word WHERE Translate_WordIsActive = 'Y' AND Translate_WordFrom = ? AND Translate_WordNat_LangID = 2"; $qry = $this->db_onedev->query($sql, [$value1]); if (!$qry) { echo $this->db_onedev->last_query(); exit; } $rows = $qry->result_array(); if (count($rows) > 0) { if ($resultEng != '') { $resultEng .= ', '; } $resultEng .= $rows[0]["Translate_WordTo"]; } else { $resultEng .= $value1; } } } $resultEntry[$key]['displayResult'] = $resultEng; } } } //SPIROMETRI if ($data['natTestID'] == '5321') { // $sql = "SELECT // M_PatientID, // M_PatientName, // b.* // FROM m_patient // JOIN x_adm_rekap_patient a // ON M_PatientOldPID = a.PATIENT_ID // JOIN x_adm_rekap_spirometri b // ON a.REG_NO = b.REG_NO // WHERE M_PatientID = ?"; // $query = $this->db_onedev->query($sql, [$data['patientID']]); // if (!$query) { // $this->sys_error_db("Error get result old spirometri"); // exit; // } // $resultEntry = $query->result_array(); // foreach ($resultEntry as $key => $v) { // } } $data['detail'] = $resultEntry; array_push($nonlab, $data); } else if ($data['Group_ResultResumeMcu'] == 'FISIK') { 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); } } } $result = array( 'lab' => $lab, 'nonlab' => $nonlab, 'fisik' => $fisik, 'rstNonlab' => $rstNonlab ); $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; } $r_nattestlang = $query->result_array(); if (count($r_nattestlang) > 0) { $natTestLang = $r_nattestlang[0]; } else { $natTestLang = array('Nat_TestLangID' => '0', 'Nat_TestLangName' => $data['testName']); } $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 $data['natTestID']; 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 = ?, So_ResultEntryDetailOtherSo_TemplateDetailName = ? 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['templateDetailLangName'], $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']; $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; } } } $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; } $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 clean_string($string) { // Remove invisible characters and control characters $string = preg_replace('/[\x00-\x1F\x7F]/u', '', $string); // Remove non-breaking spaces and other special spaces $string = str_replace(["\xC2\xA0", "\xE2\x80\x8B", "\xE2\x80\x8C", "\xE2\x80\x8D"], ' ', $string); // Normalize spaces (replace multiple spaces with single space) $string = preg_replace('/\s+/', ' ', $string); // Trim whitespace from beginning and end $string = trim($string); return $string; } }