db_onedev = $this->load->database("onedev", true); $this->load->helper(array('form', 'url')); $this->load->library('Nonlabtemplate'); $this->load->library('Kesimpulanfisik'); $this->load->library("Soresultlog"); } public function getformtemplate() { try { // Retrieve Template Form Body $prm = $this->sys_input; $formCode = $prm['formCode']; $sql = "SELECT * FROM x_form_template_fisik_umum WHERE X_Form_Fisik_FormCode = '{$formCode}'"; $query = $this->db_onedev->query($sql); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); throw new Exception(json_encode($message)); } $result = $query->result_array(); $formBody = json_decode($result[0]['X_Form_Fisik_Body']); $resp = [ "status" => "OK", "data" => $formBody ]; header('Content-Type: application/json'); echo json_encode($resp, JSON_PRETTY_PRINT); } catch (\Throwable $th) { $errorDetails = json_decode($th->getMessage(), true); if (!$errorDetails) { // If decoding fails, fallback to generic error $errorDetails = ['message' => $th->getMessage()]; } $this->sys_error($errorDetails); } } public function getpatientinfo() { try { // Get Patient Info by NoReg. Hit by form $prm = $this->sys_input; $no_reg = $prm['noreg']; $mcu_num = $prm['mcu_num']; $sql = "SELECT M_PatientID as PatientID, M_PatientName as PatientName, M_PatientDOB as PatientDoB, M_PatientHp as PatientHp, M_PatientNoReg as PatientNoReg FROM m_patient WHERE M_PatientNoReg = '{$no_reg}'"; $query = $this->db_onedev->query($sql); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); throw new Exception(json_encode($message)); } $pat = $query->row_array(); // Get MCU Label by MCUNum $sql = "SELECT Mgm_McuLabel as McuLabel, Mgm_McuID as McuID, Mgm_McuNumber as McuNum FROM mgm_mcu WHERE Mgm_McuNumber = '{$mcu_num}'"; $query = $this->db_onedev->query($sql); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); throw new Exception(json_encode($message)); } $mcu = $query->row_array(); $pat = $pat ?? []; $mcu = $mcu ?? [ "McuLabel" => "" ]; // ! Beware : Kalau salah satu array NULL, array_merge akan menghasilkan NULL $result = array_merge($pat, $mcu); $this->sys_ok($result); } catch (\Throwable $th) { $errorDetails = json_decode($th->getMessage(), true); if (!$errorDetails) { $errorDetails = ['message' => $th->getMessage()]; } $this->sys_error($errorDetails); } } public function hasfilledform() { try { $no_reg = $this->sys_input['noreg']; $mcu_num = $this->sys_input['mcu_num']; $sql = "SELECT count(*) as xcount FROM x_form_resultentry_fisik_umum WHERE X_FormRE_Fisik_MPatientNoReg = '{$no_reg}' OR X_FormRE_Fisik_MgmMcuNumber = '{$mcu_num}'"; $query = $this->db_onedev->query($sql); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); throw new Exception(json_encode($message)); } $xcount = $query->row()->xcount; if ($xcount > 0) { $this->sys_ok(True); } else { $this->sys_ok(False); } } catch (\Throwable $th) { $this->sys_error($th->getMessage()); } } public function saveform() { try { $pload = $this->sys_input; $patientID = $pload['form_meta']['PatientID']; $patientName = $pload['form_meta']['PatientName']; $patientNoReg = $pload['form_meta']['PatientNoReg']; $mcuID = $pload['form_meta']['McuID']; $mcuNumber = $pload['form_meta']['McuNum']; $formData = $pload['form_data']; // Validation if (empty($patientID) || empty($patientName) || empty($patientNoReg) || empty($mcuID) || empty($mcuNumber)) { $message = "Patient ID, Name, NoReg, MCU ID, and MCU Number cannot be empty"; $this->sys_error($message); exit; } // Cek sudah atau belum. Kalau sudah tolak $sql = "SELECT count(*) as xcount FROM x_form_resultentry_fisik_umum WHERE X_FormRE_Fisik_MPatientNoReg = '{$patientNoReg}' AND X_FormRE_Fisik_MgmMcuNumber = '{$mcuNumber}'"; $query = $this->db_onedev->query($sql); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); throw new Exception(json_encode($message)); } $xcount = $query->row()->xcount; if ($xcount > 0) { $this->sys_error("Data sudah ada"); exit; } // Encode the $formData array into a JSON string $formDataJson = json_encode($formData); // Escape the JSON string for safe insertion into the SQL query $escapedFormDataJson = $this->db_onedev->escape($formDataJson); $sql = "INSERT INTO x_form_resultentry_fisik_umum ( X_FormRE_Fisik_MPatientID, X_FormRE_Fisik_MPatientName, X_FormRE_Fisik_MPatientNoReg, X_FormRE_Fisik_MgmMcuID, X_FormRE_Fisik_MgmMcuNumber, X_FormRE_Fisik_Data, X_FormRE_Fisik_CreatedAt ) VALUES ( '{$patientID}', '{$patientName}', '{$patientNoReg}', '{$mcuID}', '{$mcuNumber}', {$escapedFormDataJson}, NOW() )"; $query = $this->db_onedev->query($sql); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); throw new Exception(json_encode($message)); } $resp = [ "msg" => "Data saved successfully", "patientID" => $patientID, "patientName" => $patientName, "patientNoReg" => $patientNoReg, "mcuID" => $mcuID ]; $this->sys_ok($resp); } catch (\Throwable $th) { $this->sys_error($th->getMessage()); exit; } } public function getmcubynoreg($no_reg) { try { // Get PatientID by noreg $sql = "SELECT M_PatientID as pid FROM m_patient WHERE M_PatientNoReg = '{$no_reg}'"; $query = $this->db_onedev->query($sql); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); throw new Exception("Error fetching patient ID: " . $message); } $pid = $query->row()->pid; // Get MCU_ID byt patientID in t_orderheader $sql = "SELECT T_OrderHeaderMgm_McuID as mcu_id FROM t_orderheader WHERE T_OrderHeaderM_PatientID = '{$pid}'"; $query = $this->db_onedev->query($sql); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); throw new Exception("Error fetching mcu ID: " . $message); } $mcu_id = $query->row()->mcu_id; // Get MCU Number by MCU_ID in mgm_mcu $sql = "SELECT Mgm_McuNumber as mcu_number FROM mgm_mcu WHERE Mgm_McuID = '{$mcu_id}'"; $query = $this->db_onedev->query($sql); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); throw new Exception("Error fetching mcu number: " . $message); } $mcu_number = $query->row()->mcu_number; $result = [ "M_PatientNoReg" => $no_reg, "M_PatientID" => $pid, "Mgm_McuID" => $mcu_id, "Mgm_McuNumber" => $mcu_number ]; $resp = [ "status" => "OK", "data" => $result ]; // Define the return content type to be application/json header('Content-Type: application/json'); echo json_encode($resp, JSON_PRETTY_PRINT); } catch (\Throwable $th) { $this->sys_error($th->getMessage()); exit; } } public function getunlistedidcode() { try { $formCode = $this->sys_input['formCode']; $sql = "SELECT X_Form_Fisik_Unlisted FROM x_form_template_fisik_umum WHERE X_Form_Fisik_FormCode = '{$formCode}'"; $query = $this->db_onedev->query($sql); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); throw new Exception(json_encode($message)); } // Fetch the data from the database $unlistedString = $query->row()->X_Form_Fisik_Unlisted; // Decode the JSON-like string into a PHP array $unlistedArray = json_decode($unlistedString, true); // Check if json_decode was successful if (json_last_error() !== JSON_ERROR_NONE) { throw new Exception('Failed to decode JSON: ' . json_last_error_msg()); } // Return the array $this->sys_ok($unlistedArray); } catch (\Throwable $th) { $errorDetails = json_decode($th->getMessage(), true); if (!$errorDetails) { $errorDetails = ['message' => $th->getMessage()]; } $this->sys_error($errorDetails); } } public function getfilledbydoctor() { try { // Retrieve Template Form Body $prm = $this->sys_input; $formCode = $prm['formCode']; $sql = "SELECT * FROM x_form_template_fisik_umum WHERE X_Form_Fisik_FormCode = '{$formCode}'"; $query = $this->db_onedev->query($sql); if (!$query) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); throw new Exception(json_encode($message)); } $unlisted = []; $result = $query->result_array(); $formBody = json_decode($result[0]['X_Form_Fisik_Body'], true); foreach ($formBody as $key => $value) { foreach ($value as $item) { if ($item['type_form'] == 'XVS') { foreach ($item['details'] as $detail) { foreach ($detail['details'] as $subdetail) { if (isset($subdetail['color']) && $subdetail['color'] == 'red') { $unlisted[] = $subdetail['id_code']; } } } } else if ($item['type_form'] == 'XV') { foreach ($item['details'] as $detail) { if (isset($detail['color']) && $detail['color'] == 'red') { $unlisted[] = $detail['id_code']; } } } else { continue; } } } $resp = [ "status" => "OK", "data" => $unlisted ]; header('Content-Type: application/json'); echo json_encode($resp, JSON_PRETTY_PRINT); } catch (\Throwable $th) { $errorDetails = json_decode($th->getMessage(), true); if (!$errorDetails) { // If decoding fails, fallback to generic error $errorDetails = ['message' => $th->getMessage()]; } $this->sys_error($errorDetails); } } public function getformtemplate_old() { try { // Getdetails dengan param re_id dan T_SamplingSoID // untuk dapat template_name, orderid // $re_id = 867; // $T_SamplingSOID = 1947; $prm = $this->sys_input; $re_id = $prm['re_id']; $T_SamplingSOID = $prm['T_SamplingSOID']; $prm_dtl = [ 're_id' => $re_id, 'T_SamplingSOID' => $T_SamplingSOID ]; $getdetail[] = $this->get_details($prm_dtl); // Get Umum untuk dapat template form based on pasien // Atau tidak usah jika body template dari tabel $template_name = $getdetail['template_name']; $order_id = $getdetail['orderid']; $prm_umum = [ 're_id' => $re_id, 'template_name' => $template_name, 'orderid' => $order_id ]; $getumum = $this->getumumlocal($prm_umum); // echo json_encode($getumum); // exit; $this->sys_ok($getumum); // Dari template_name query ke tabel template_form // Dapat bentuk form } catch (\Throwable $th) { // throw $th; $this->sys_error($th->getMessage()); } } function getumumlocal($prm) { $rst = array(); $rst['riwayats'] = array(); $rst['fisiks'] = array(); $rst['umum_saran'] = ''; $rst['k3s'] = array(); $rst['konsul'] = array(); $rows = array(); //$prm = $this->sys_input; $sql = "SELECT count(*) as xcount FROM so_resultentry_fisik_umum WHERE So_ResultEntryFisikUmumSo_ResultEntryID = {$prm['re_id']} AND So_ResultEntryFisikUmumIsActive = 'Y' ORDER BY So_ResultEntryFisikUmumID ASC "; $x_exist = $this->db_onedev->query($sql)->row()->xcount; if ($x_exist == 0) { if ($prm['template_name'] == 'Fisik Umum' || $prm['template_name'] == 'Fisik Umum K3') { $sql = "INSERT INTO so_resultentry_fisik_umum ( So_ResultEntryFisikUmumSo_ResultEntryID, So_ResultEntryFisikUmumFisikTemplateID, So_ResultEntryFisikUmumDetails, So_ResultEntryFisikUmumCreated, So_ResultEntryFisikUmumCreatedUserID ) SELECT {$prm['re_id']}, FisikTemplateID, FisikTemplateJSON, NOW(), {$userid} FROM fisik_template JOIN t_orderheader ON T_OrderHeaderID = {$prm['orderid']} JOIN mgm_mcutemplate ON Mgm_McuTemplateMgm_McuID = T_OrderHeaderMgm_McuID JOIN fisik_template_mapping ON Mgm_McuTemplateFisikTemplateMappingID = FisikTemplateMappingID JOIN fisik_template_mapping_detail ON FisikTemplateMappingDetailFisikTemplateMappingID = FisikTemplateMappingID AND FisikTemplateMappingDetailFisikTemplateID = FisikTemplateID AND FisikTemplateMappingDetailIsActive = 'Y' WHERE FisikTemplateIsActive = 'Y' GROUP BY FisikTemplateID ORDER BY FisikTemplateCode ASC"; $this->db_onedev->query($sql); } } $riwayats = []; $fisiks = []; $k3s = []; $sql = "SELECT * FROM so_resultentry_fisik_umum JOIN fisik_template ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID WHERE So_ResultEntryFisikUmumSo_ResultEntryID = {$prm['re_id']} AND So_ResultEntryFisikUmumIsActive = 'Y' ORDER BY FisikTemplateCode ASC"; $rows_data = $this->db_onedev->query($sql)->result_array(); if ($rows_data) { foreach ($rows_data as $key => $value) { if ($value['FisikTemplateType'] == 'Riwayat') $riwayats[] = json_decode($value['So_ResultEntryFisikUmumDetails'], TRUE); if ($value['FisikTemplateType'] == 'Fisik') $fisiks[] = json_decode($value['So_ResultEntryFisikUmumDetails'], TRUE); if ($value['FisikTemplateType'] == 'K3') $k3s[] = json_decode($value['So_ResultEntryFisikUmumDetails'], TRUE); } } $rst['riwayats'] = $riwayats; $rst['fisiks'] = $fisiks; $rst['k3s'] = $k3s; $sql = "SELECT * FROM translate_word WHERE Translate_WordIsActive = 'Y'"; $translate_word = $this->db_onedev->query($sql)->result_array(); $status = 1; $sql = "SELECT COUNT(*) as xcount, So_ResultEntryFisikUmumAdditionalValue as xvalue FROM so_resultentry_fisik_umum_additional WHERE So_ResultEntryFisikUmumAdditionalSo_ResultEntryID = {$prm['re_id']} AND So_ResultEntryFisikUmumAdditionalType = 'saran' AND So_ResultEntryFisikUmumAdditionalIsActive = 'Y'"; $row_saran = $this->db_onedev->query($sql)->row_array(); if ($row_saran['xcount'] > 0) $rst['umum_saran'] = $row_saran['xvalue']; return $rst; } function getumum() { $prm = $this->sys_input; $userid = $this->sys_user["M_UserID"]; $rst = array(); $rst['riwayats'] = array(); $rst['fisiks'] = array(); $rst['umum_saran'] = ''; $rst['k3s'] = array(); $rst['konsul'] = array(); $rows = array(); //$prm = $this->sys_input; $sql = "SELECT count(*) as xcount FROM so_resultentry_fisik_umum WHERE So_ResultEntryFisikUmumSo_ResultEntryID = {$prm['re_id']} AND So_ResultEntryFisikUmumIsActive = 'Y' ORDER BY So_ResultEntryFisikUmumID ASC "; $x_exist = $this->db_onedev->query($sql)->row()->xcount; if ($x_exist == 0) { if ($prm['template_name'] == 'Fisik Umum' || $prm['template_name'] == 'Fisik Umum K3') { $sql = "INSERT INTO so_resultentry_fisik_umum ( So_ResultEntryFisikUmumSo_ResultEntryID, So_ResultEntryFisikUmumFisikTemplateID, So_ResultEntryFisikUmumDetails, So_ResultEntryFisikUmumCreated, So_ResultEntryFisikUmumCreatedUserID ) SELECT {$prm['re_id']}, FisikTemplateID, FisikTemplateJSON, NOW(), {$userid} FROM fisik_template JOIN t_orderheader ON T_OrderHeaderID = {$prm['orderid']} JOIN mgm_mcutemplate ON Mgm_McuTemplateMgm_McuID = T_OrderHeaderMgm_McuID JOIN fisik_template_mapping ON Mgm_McuTemplateFisikTemplateMappingID = FisikTemplateMappingID JOIN fisik_template_mapping_detail ON FisikTemplateMappingDetailFisikTemplateMappingID = FisikTemplateMappingID AND FisikTemplateMappingDetailFisikTemplateID = FisikTemplateID AND FisikTemplateMappingDetailIsActive = 'Y' WHERE FisikTemplateIsActive = 'Y' GROUP BY FisikTemplateID ORDER BY FisikTemplateCode ASC"; $this->db_onedev->query($sql); } } $riwayats = []; $fisiks = []; $k3s = []; $sql = "SELECT * FROM so_resultentry_fisik_umum JOIN fisik_template ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID WHERE So_ResultEntryFisikUmumSo_ResultEntryID = {$prm['re_id']} AND So_ResultEntryFisikUmumIsActive = 'Y' ORDER BY FisikTemplateCode ASC"; $rows_data = $this->db_onedev->query($sql)->result_array(); if ($rows_data) { foreach ($rows_data as $key => $value) { if ($value['FisikTemplateType'] == 'Riwayat') $riwayats[] = json_decode($value['So_ResultEntryFisikUmumDetails'], TRUE); if ($value['FisikTemplateType'] == 'Fisik') $fisiks[] = json_decode($value['So_ResultEntryFisikUmumDetails'], TRUE); if ($value['FisikTemplateType'] == 'K3') $k3s[] = json_decode($value['So_ResultEntryFisikUmumDetails'], TRUE); } } $rst['riwayats'] = $riwayats; $rst['fisiks'] = $fisiks; $rst['k3s'] = $k3s; $sql = "SELECT * FROM translate_word WHERE Translate_WordIsActive = 'Y'"; $translate_word = $this->db_onedev->query($sql)->result_array(); $status = 1; $sql = "SELECT COUNT(*) as xcount, So_ResultEntryFisikUmumAdditionalValue as xvalue FROM so_resultentry_fisik_umum_additional WHERE So_ResultEntryFisikUmumAdditionalSo_ResultEntryID = {$prm['re_id']} AND So_ResultEntryFisikUmumAdditionalType = 'saran' AND So_ResultEntryFisikUmumAdditionalIsActive = 'Y'"; $row_saran = $this->db_onedev->query($sql)->row_array(); if ($row_saran['xcount'] > 0) $rst['umum_saran'] = $row_saran['xvalue']; $result = array( "total" => $status, "records" => $rst, "translate" => $translate_word ); $this->sys_ok($result); exit; } function savefisik() { $prm = $this->sys_input; // $this->sys_ok($prm); // exit; $userid = $this->sys_user["M_UserID"]; $rst = array(); if ($prm['action'] === 'unval1') { $sql = "SELECT IFNULL(Mcu_ResumeValidation, 'N') as status, COUNT(Mcu_ResumeID) FROM mcu_resume WHERE Mcu_ResumeT_OrderHeaderID = {$prm['trx']['orderid']} AND Mcu_ResumeIsActive = 'Y'"; $qry = $this->db_onedev->query($sql); if (!$qry) { $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error("Error cek resume individu"); exit; } $cek = $qry->row_array(); if ($cek['status'] == 'Y') { $this->sys_error("Resume individu sudah di validasi, unvalidasi resume individu terlebih dahulu ...."); exit; } } if ($prm['action'] != 'unval1') { $data_json = []; if ($prm['act'] == 'Fisik Umum' || $prm['act'] == 'Fisik Umum K3' || $prm['act'] == 'Fisik Umum Konsul') { if ($prm["riwayats"] && count($prm["riwayats"]) > 0) { foreach ($prm["riwayats"] as $v_riwayat) { $data_riwayat = json_encode($v_riwayat); $sql = "UPDATE so_resultentry_fisik_umum JOIN fisik_template ON FisikTemplateTitle = '{$v_riwayat['title']}' AND FisikTemplateIsActive = 'Y' AND FisikTemplateType = 'Riwayat' SET So_ResultEntryFisikUmumDetails = '{$data_riwayat}', So_ResultEntryFisikUmumLastUpdated = NOW(), So_ResultEntryFisikUmumLastUpdatedUserID = {$userid} WHERE So_ResultEntryFisikUmumSo_ResultEntryID = {$prm['trx']['re_id']} AND So_ResultEntryFisikUmumIsActive = 'Y' AND So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID "; $rst = $this->db_onedev->query($sql); //if($v_riwayat['title'] == 'KELUHAN') //echo $sql; } $data_json['riwayat'] = $prm["riwayats"]; } if ($prm["fisiks"] && count($prm["fisiks"]) > 0) { foreach ($prm["fisiks"] as $v_fisik) { $data_fisik = json_encode($v_fisik); $sql = "UPDATE so_resultentry_fisik_umum JOIN fisik_template ON FisikTemplateTitle = '{$v_fisik['title']}' AND FisikTemplateIsActive = 'Y' AND FisikTemplateType = 'Fisik' SET So_ResultEntryFisikUmumDetails = '{$data_fisik}', So_ResultEntryFisikUmumLastUpdated = NOW(), So_ResultEntryFisikUmumLastUpdatedUserID = {$userid} WHERE So_ResultEntryFisikUmumSo_ResultEntryID = {$prm['trx']['re_id']} AND So_ResultEntryFisikUmumIsActive = 'Y' AND So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID "; $rst = $this->db_onedev->query($sql); } $data_json['fisik'] = $prm["fisiks"]; } //echo $sql; $umum_saran = $prm['umum_saran']; if ($umum_saran && $umum_saran != '') { $sql = "SELECT COUNT(*) as xcount, So_ResultEntryFisikUmumAdditionalID as id FROM so_resultentry_fisik_umum_additional WHERE So_ResultEntryFisikUmumAdditionalSo_ResultEntryID = {$prm['trx']['re_id']} AND So_ResultEntryFisikUmumAdditionalType = 'saran' AND So_ResultEntryFisikUmumAdditionalIsActive = 'Y'"; $rst_exist_saran = $this->db_onedev->query($sql)->row_array(); if ($rst_exist_saran['xcount'] == 0) { $sql = "INSERT INTO so_resultentry_fisik_umum_additional ( So_ResultEntryFisikUmumAdditionalSo_ResultEntryID, So_ResultEntryFisikUmumAdditionalType, So_ResultEntryFisikUmumAdditionalValue, So_ResultEntryFisikUmumAdditionalCreatedUserID, So_ResultEntryFisikUmumAdditionalCreated ) VALUES( {$prm['trx']['re_id']}, 'saran', '{$umum_saran}', { }, NOW() ) "; //echo $sql; $rst = $this->db_onedev->query($sql); } else { $sql = "UPDATE so_resultentry_fisik_umum_additional SET So_ResultEntryFisikUmumAdditionalValue = '{$umum_saran}', So_ResultEntryFisikUmumAdditionalLastUpdated = NOW(), So_ResultEntryFisikUmumAdditionalLastUpdatedUserID = {$userid} WHERE So_ResultEntryFisikUmumAdditionalID = {$rst_exist_saran['id']}"; $this->db_onedev->query($sql); } } } if ($prm['act'] == 'Fisik Umum K3') { if ($prm["k3s"] && count($prm["k3s"]) > 0) { foreach ($prm["k3s"] as $v_k3) { $data_k3s = json_encode($v_k3); $sql = "UPDATE so_resultentry_fisik_umum JOIN fisik_template ON FisikTemplateTitle = '{$v_k3['title']}' AND FisikTemplateIsActive = 'Y' AND FisikTemplateType = 'K3' SET So_ResultEntryFisikUmumDetails = '{$data_k3s}', So_ResultEntryFisikUmumLastUpdated = NOW(), So_ResultEntryFisikUmumLastUpdatedUserID = {$userid} WHERE So_ResultEntryFisikUmumSo_ResultEntryID = {$prm['trx']['re_id']} AND So_ResultEntryFisikUmumIsActive = 'Y' AND So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID "; $rst = $this->db_onedev->query($sql); } $data_json['k3s'] = $prm["k3s"]; } } //print_r($data_json); if ($data_json && count($data_json) > 0) { $this->soresultlog->log_result(json_encode($data_json), $prm['trx']['re_id'], $userid); } } if ($prm['action'] === 'val1') { $sql = "UPDATE so_resultentry SET So_ResultEntryValidation1 = 'Y', So_ResultEntryStatus = 'VAL1', So_ResultEntryLastUpdated = NOW(), So_ResultEntryLastUpdatedUserID = {$userid} WHERE So_ResultEntryID = {$prm['trx']['re_id']}"; $this->db_onedev->query($sql); } if ($prm['action'] === 'unval1') { $sql = "UPDATE so_resultentry SET So_ResultEntryValidation1 = 'N', So_ResultEntryStatus = 'NEW', So_ResultEntryLastUpdated = NOW(), So_ResultEntryLastUpdatedUserID = {$userid} WHERE So_ResultEntryID = {$prm['trx']['re_id']}"; $this->db_onedev->query($sql); } $act = "UPDATE_ACT"; if ($prm['action'] === 'unval1') $act = "UNVALIDATION"; if ($prm['action'] === 'val1') $act = "VALIDATION"; $this->soresultlog->step_action($act, $prm['trx']['re_id'], $userid); $result = array( "total" => 1, "records" => $rst ); $this->sys_ok($result); exit; } function get_details($prm) { try { $userid = $this->sys_user["M_UserID"]; $group_results = array(); $sql = " SELECT * FROM group_result_entry WHERE GroupResultEntryCode = '04' AND GroupResultEntryIsActive = 'Y'"; $xgresult = $this->db_onedev->query($sql)->result_array(); if ($xgresult) { foreach ($xgresult as $kgr => $vgr) { array_push($group_results, $vgr['GroupResultEntryGroup_ResultID']); } } $group_results = join(",", $group_results); $v = $prm; $arr_status = array(); //echo $v['re_id'] ; if (intval($v['re_id']) == 0) { //echo 'IN'; $insert_so = $this->nonlabtemplate->generate($v['T_SamplingSOID']); //print_r($insert_so); if ($insert_so) { $sql = "SELECT IFNULL(M_DoctorID,0) as M_DoctorID FROM m_staff JOIN m_user ON M_UserM_StaffID = M_StaffID AND M_UserID = {$userid} LEFT JOIN m_doctor ON M_StaffM_DoctorID = M_DoctorID WHERE M_StaffIsActive = 'Y' LIMIT 1"; $row_doctor_staff = $this->db_onedev->query($sql)->row_array(); if (intval($row_doctor_staff['M_DoctorID']) > 0) { $sql = "UPDATE so_resultentry SET So_ResultEntryM_DoctorID = {$row_doctor_staff['M_DoctorID']} WHERE So_ResultEntryID = {$v['re_id']} "; $this->db_onedev->query($sql); } $v['re_id'] = $insert_so['So_ResultEntryID']; //$v['re_id'] = $v['re_id']; $v['status_name'] = 'BARU'; //$rows[$k]['status_name'] = $v['status_name']; } } $sql = "SELECT IFNULL(So_ResultEntryID,0) as trx_id, IFNULL(So_ResultEntryID,0) as re_id, T_SamplingSoT_OrderHeaderID as orderid, T_TestT_SampleTypeID as sampletypeid, T_SamplingSoID, UPPER(T_TestName) as test_name, Group_ResultName as group_name, Group_ResultResumeMcu as group_resume_mcu, T_TestID as test_id, T_TestNat_TestID as nat_testid, 0 as language_id, So_ResultEntryNonlab_TemplateID as template_id, So_ResultEntryNonlab_TemplateName as template_name, NonlabTemplateFlagOther as template_flag_other, '' as status_result, '' as status_result_arr, CASE WHEN So_ResultEntryStatus = 'NEW' THEN 'BARU' WHEN So_ResultEntryStatus = 'VAL1' THEN 'VALIDASI 1' WHEN So_ResultEntryStatus = 'VAL2' THEN 'VALIDASI 2' WHEN So_ResultEntryStatus IS NULL THEN 'NO TEMPLATE' END as status_name, '' as note, So_ResultEntryStatus as status, 'Bahasa Indonesia' as language_name, '' as doctors, IFNULL(M_DoctorID,0) as doctor_id, IF(ISNULL(M_DoctorID),'-',CONCAT(M_DoctorPrefix,M_DoctorPrefix2,' ',M_DoctorName,M_DoctorSuffix,M_DoctorSuffix)) as doctor_fullname, '' as details, '' as langs, '' as photos FROM t_samplingso JOIN t_test ON T_SamplingSoT_TestID = T_TestID AND T_SamplingSoID = {$v['T_SamplingSOID']} AND T_SamplingSoIsActive = 'Y' JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID AND Group_ResultDetailIsActive = 'Y' JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultID IN ({$group_results}) LEFT JOIN so_resultentry ON T_SamplingSoT_OrderHeaderID = So_ResultEntryT_OrderHeaderID AND So_ResultEntryID = {$v['re_id']} LEFT JOIN nonlab_template ON So_ResultEntryNonlab_TemplateID = NonlabTemplateID AND NonlabTemplateIsActive = 'Y' LEFT JOIN m_doctor ON So_ResultEntryM_DoctorID = M_DoctorID GROUP BY orderid, test_id"; //echo $sql; //print_r($v); $rst_details = $this->db_onedev->query($sql)->result_array(); foreach ($rst_details as $ki => $vi) { array_push($arr_status, $vi['status_header']); $xstatus_result = array(); $sql = "SELECT NonlabConclusionDetailID as id, NonlabConclusionDetailName as name, NonlabConclusionDetailIsNormal AS isNormal FROM so_resultentry_category_result JOIN nonlab_conclusion_detail ON So_ResultEntryCategoryNonlabConclusionDetailID = NonlabConclusionDetailID AND NonlabConclusionDetailIsActive = 'Y' WHERE So_ResultEntryCategoryResultSo_ResultEntryID = {$vi['trx_id']} AND So_ResultEntryCategoryResultIsActive = 'Y' "; $get_status_result = $this->db_onedev->query($sql)->result_array(); if ($get_status_result) { $xstatus_result = $get_status_result; } $rst_details[$ki]['status_result'] = $xstatus_result; $sql = "SELECT NonlabConclusionDetailID AS id, NonlabConclusionDetailName as name, NonlabConclusionDetailIsNormal AS isNormal FROM nonlab_conclusion_detail d1 JOIN (SELECT * FROM nonlab_conclusion WHERE NonlabConclusionIsActive = 'Y' LIMIT 1) d2 ON d1.NonlabConclusionDetailNonlabConclusionID = d2.NonlabConclusionID"; $data_status_result_array = $this->db_onedev->query($sql)->result_array(); $sql = "SELECT NonlabConclusionDetailID AS id , NonlabConclusionDetailName as name, NonlabConclusionDetailIsNormal AS isNormal FROM nonlab_conclusion_mapping JOIN nonlab_conclusion_detail ON NonlabConclusionMappingNonlabConclusionID = NonlabConclusionDetailNonlabConclusionID AND NonlabConclusionDetailIsActive ='Y' JOIN nonlab_conclusion ON NonlabConclusionMappingNonlabConclusionID = NonlabConclusionID AND NonlabConclusionIsActive = 'Y' WHERE NonlabConclusionMappingNat_TestID = {$vi['nat_testid']}"; $data_status_result_array_other = $this->db_onedev->query($sql)->result_array(); if ($data_status_result_array_other) { $data_status_result_array = $data_status_result_array_other; } $rst_details[$ki]['status_result_arr'] = $data_status_result_array; $rst_details[$ki]['status_result'] = $xstatus_result; $sql = "SELECT So_ResultEntryDetailID as trx_id, So_ResultEntryDetailNonlab_TemplateDetailID as template_detail_id, So_ResultEntryDetailNonlab_TemplateDetailName as result_label, So_ResultEntryDetailResult as result_value, 'N' as flag_print, So_ResultEntryDetailResult as result_value_before FROM so_resultentrydetail WHERE So_ResultEntryDetailSo_ResultEntryID = {$vi['trx_id']} AND So_ResultEntryDetailisActive = 'Y'"; $rst_details[$ki]['details'] = $this->db_onedev->query($sql)->result_array(); $rst_details[$ki]['photos'] = $this->getphotos($vi['orderid'], $vi['sampletypeid']); } return $rst_details; // $result = array("records" => $rst_details); // $this->sys_ok($result); // return $result; } catch (\Throwable $th) { throw $th; } } function get_details_api() { if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $userid = $this->sys_user["M_UserID"]; $group_results = array(); $sql = " SELECT * FROM group_result_entry WHERE GroupResultEntryCode = '04' AND GroupResultEntryIsActive = 'Y'"; $xgresult = $this->db_onedev->query($sql)->result_array(); if ($xgresult) { foreach ($xgresult as $kgr => $vgr) { array_push($group_results, $vgr['GroupResultEntryGroup_ResultID']); } } $group_results = join(",", $group_results); $v = $prm; $arr_status = array(); //echo $v['re_id'] ; if (intval($v['re_id']) == 0) { //echo 'IN'; $insert_so = $this->nonlabtemplate->generate($v['T_SamplingSOID']); //print_r($insert_so); if ($insert_so) { $sql = "SELECT IFNULL(M_DoctorID,0) as M_DoctorID FROM m_staff JOIN m_user ON M_UserM_StaffID = M_StaffID AND M_UserID = {$userid} LEFT JOIN m_doctor ON M_StaffM_DoctorID = M_DoctorID WHERE M_StaffIsActive = 'Y' LIMIT 1"; $row_doctor_staff = $this->db_onedev->query($sql)->row_array(); if (intval($row_doctor_staff['M_DoctorID']) > 0) { $sql = "UPDATE so_resultentry SET So_ResultEntryM_DoctorID = {$row_doctor_staff['M_DoctorID']} WHERE So_ResultEntryID = {$v['re_id']} "; $this->db_onedev->query($sql); } $v['re_id'] = $insert_so['So_ResultEntryID']; //$v['re_id'] = $v['re_id']; $v['status_name'] = 'BARU'; //$rows[$k]['status_name'] = $v['status_name']; } } //if ($v['image_signature'] != '') { // $rows[$k]['image_signature'] = $v['image_signature'] . "?=" . date("YmdHis"); //} $sql = "SELECT IFNULL(So_ResultEntryID,0) as trx_id, IFNULL(So_ResultEntryID,0) as re_id, T_SamplingSoT_OrderHeaderID as orderid, T_TestT_SampleTypeID as sampletypeid, T_SamplingSoID, UPPER(T_TestName) as test_name, Group_ResultName as group_name, Group_ResultResumeMcu as group_resume_mcu, T_TestID as test_id, T_TestNat_TestID as nat_testid, 0 as language_id, So_ResultEntryNonlab_TemplateID as template_id, So_ResultEntryNonlab_TemplateName as template_name, NonlabTemplateFlagOther as template_flag_other, '' as status_result, '' as status_result_arr, CASE WHEN So_ResultEntryStatus = 'NEW' THEN 'BARU' WHEN So_ResultEntryStatus = 'VAL1' THEN 'VALIDASI 1' WHEN So_ResultEntryStatus = 'VAL2' THEN 'VALIDASI 2' WHEN So_ResultEntryStatus IS NULL THEN 'NO TEMPLATE' END as status_name, '' as note, So_ResultEntryStatus as status, 'Bahasa Indonesia' as language_name, '' as doctors, IFNULL(M_DoctorID,0) as doctor_id, IF(ISNULL(M_DoctorID),'-',CONCAT(M_DoctorPrefix,M_DoctorPrefix2,' ',M_DoctorName,M_DoctorSuffix,M_DoctorSuffix)) as doctor_fullname, '' as details, '' as langs, '' as photos FROM t_samplingso JOIN t_test ON T_SamplingSoT_TestID = T_TestID AND T_SamplingSoID = {$v['T_SamplingSOID']} AND T_SamplingSoIsActive = 'Y' JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_TestID AND Group_ResultDetailIsActive = 'Y' JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultID IN ({$group_results}) LEFT JOIN so_resultentry ON T_SamplingSoT_OrderHeaderID = So_ResultEntryT_OrderHeaderID AND So_ResultEntryID = {$v['re_id']} LEFT JOIN nonlab_template ON So_ResultEntryNonlab_TemplateID = NonlabTemplateID AND NonlabTemplateIsActive = 'Y' LEFT JOIN m_doctor ON So_ResultEntryM_DoctorID = M_DoctorID GROUP BY orderid, test_id"; //echo $sql; //print_r($v); $rst_details = $this->db_onedev->query($sql)->result_array(); foreach ($rst_details as $ki => $vi) { array_push($arr_status, $vi['status_header']); $xstatus_result = array(); $sql = "SELECT NonlabConclusionDetailID as id, NonlabConclusionDetailName as name, NonlabConclusionDetailIsNormal AS isNormal FROM so_resultentry_category_result JOIN nonlab_conclusion_detail ON So_ResultEntryCategoryNonlabConclusionDetailID = NonlabConclusionDetailID AND NonlabConclusionDetailIsActive = 'Y' WHERE So_ResultEntryCategoryResultSo_ResultEntryID = {$vi['trx_id']} AND So_ResultEntryCategoryResultIsActive = 'Y' "; $get_status_result = $this->db_onedev->query($sql)->result_array(); if ($get_status_result) { $xstatus_result = $get_status_result; } $rst_details[$ki]['status_result'] = $xstatus_result; $sql = "SELECT NonlabConclusionDetailID AS id, NonlabConclusionDetailName as name, NonlabConclusionDetailIsNormal AS isNormal FROM nonlab_conclusion_detail d1 JOIN (SELECT * FROM nonlab_conclusion WHERE NonlabConclusionIsActive = 'Y' LIMIT 1) d2 ON d1.NonlabConclusionDetailNonlabConclusionID = d2.NonlabConclusionID"; $data_status_result_array = $this->db_onedev->query($sql)->result_array(); $sql = "SELECT NonlabConclusionDetailID AS id , NonlabConclusionDetailName as name, NonlabConclusionDetailIsNormal AS isNormal FROM nonlab_conclusion_mapping JOIN nonlab_conclusion_detail ON NonlabConclusionMappingNonlabConclusionID = NonlabConclusionDetailNonlabConclusionID AND NonlabConclusionDetailIsActive ='Y' JOIN nonlab_conclusion ON NonlabConclusionMappingNonlabConclusionID = NonlabConclusionID AND NonlabConclusionIsActive = 'Y' WHERE NonlabConclusionMappingNat_TestID = {$vi['nat_testid']}"; $data_status_result_array_other = $this->db_onedev->query($sql)->result_array(); if ($data_status_result_array_other) { $data_status_result_array = $data_status_result_array_other; } $rst_details[$ki]['status_result_arr'] = $data_status_result_array; $rst_details[$ki]['status_result'] = $xstatus_result; $sql = "SELECT So_ResultEntryDetailID as trx_id, So_ResultEntryDetailNonlab_TemplateDetailID as template_detail_id, So_ResultEntryDetailNonlab_TemplateDetailName as result_label, So_ResultEntryDetailResult as result_value, 'N' as flag_print, So_ResultEntryDetailResult as result_value_before FROM so_resultentrydetail WHERE So_ResultEntryDetailSo_ResultEntryID = {$vi['trx_id']} AND So_ResultEntryDetailisActive = 'Y'"; //echo $sql; $rst_details[$ki]['details'] = $this->db_onedev->query($sql)->result_array(); //$rst_details[$ki]['langs'] = $this->getlangs($vi['orderid']); $rst_details[$ki]['photos'] = $this->getphotos($vi['orderid'], $vi['sampletypeid']); //$rst_details[$ki]['doctors'] = $this->getdoctors($vi['sampletypeid']); } //$rows[$k]['details'] = $rst_details; //$rows[$k]['deliveries'] = $this->getdeliveries($v['trx_id'],$v['re_id']); $result = array("records" => $rst_details); $this->sys_ok($result); exit; } function getphotos($orderid, $sampletypeid) { $rows = []; //print_r($_SERVER); $urlbase = 'http://' . $_SERVER['SERVER_NAME'] . "/one-media/one-image-nonlab/"; $sql = "SELECT So_ImageUploadID as id, So_ImageUploadOldName as oldname, CONCAT('{$urlbase}',So_ImageUploadNewName) as newname FROM so_imageupload WHERE So_ImageUploadT_OrderHeaderID = {$orderid} AND So_ImageUploadT_SampleTypeID = {$sampletypeid} AND So_ImageUploadIsActive = 'Y'"; //echo $sql; $rows = $this->db_onedev->query($sql)->result_array(); return $rows; } }