db_smartone = $CI->load->database("default", true); $this->db_smartone = $CI->load->database("default", true); } function clean_mysqli_connection($dbc) { while (mysqli_more_results($dbc)) { if (mysqli_next_result($dbc)) { $result = mysqli_use_result($dbc); if (get_class($result) == 'mysqli_stmt') { mysqli_stmt_free_result($result); } else { unset($result); } } } } function dynamic_comparison($varleft, $op, $varright) { switch ($op) { case "=": return $varleft == $varright; case "!=": return $varleft != $varright; case ">=": return $varleft >= $varright; case "<=": return $varleft <= $varright; case ">": return $varleft > $varright; case "<": return $varleft < $varright; default: return true; } } function generate_kelainan_lab($orderid = 0, $orderdetailID = 0, $userID = 0) { $errors = []; if ($orderid != 0) { $filterOrderID = " AND T_OrderHeaderID = {$orderid}"; } else { $filterOrderID = ""; } if ($orderdetailID != 0) { $filterDetailID = " AND T_OrderDetailID = {$orderdetailID}"; } else { $filterDetailID = ""; } $sql = "SELECT T_OrderHeaderID,T_OrderHeaderLabNumber, T_TestName, T_OrderDetailID, T_OrderDetailResult, T_OrderDetailNat_MethodeID, T_OrderDetailNat_MethodeID, T_OrderDetailNat_MethodeName, T_OrderDetailMinValue, T_OrderDetailMaxValue, T_OrderDetailMinValueInclusive, T_OrderDetailMaxValueInclusive, Mcu_SummaryLabID, Mcu_SummaryLabValue, Mcu_SummaryLabNat_MethodeID, Mcu_SummaryLabWithMethode, Mcu_SummaryLabType, Mcu_SummaryLabIsNormalValue, Mcu_SummaryLabIsRange, Mcu_SummaryLabMinInclusive, Mcu_SummaryLabMinValue, Mcu_SummaryLabMaxInclusive, Mcu_SummaryLabMaxValue, Mcu_KelainanID, Mcu_KelainanName, Mcu_KelainanClasification, Nat_TestID, Nat_TestCode, mcu_kelainangroup.* from t_orderdetail join t_orderheader on T_OrderHeaderID = T_OrderDetailT_OrderHeaderID {$filterOrderID} {$filterDetailID} and T_OrderHeaderID = T_OrderDetailT_OrderHeaderID and T_OrderDetailIsActive = 'Y' JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID JOIN m_sex ON M_PatientM_SexID = M_SexID join t_test on T_OrderDetailT_TestID = T_TestID join nat_test ON T_TestNat_TestID = Nat_TestID join mcu_summarylab on T_TestNat_TestID = Mcu_SummaryLabNat_TestID AND Mcu_SummaryLabIsActive = 'Y' AND (Mcu_SummaryLabGender = 'A' OR (Mcu_SummaryLabGender <> 'A' AND Mcu_SummaryLabGender = CASE WHEN LOWER(M_SexNameLang) = 'male' THEN 'M' WHEN LOWER(M_SexNameLang) = 'female' THEN 'F' else '' END)) join mcu_kelainan on Mcu_SummaryLabMcu_KelainanID = Mcu_KelainanID join mcu_kelainangroup on Mcu_KelainanMcu_KelainanGroupID = Mcu_KelainanGroupID"; //echo $sql; $qry = $this->db_smartone->query($sql); if (!$qry) { $prm_log = ['SELECT_T_ORDERDETAIL_KELAINAN_LAB_1', 'kelainanlab/generate_kelainan_lab']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode($errors)); $errors[] = "SELECT_T_ORDERDETAIL_KELAINAN_LAB_1"; } $rows = $qry->result_array(); $results = []; foreach ($rows as $r) { $result_value = $r['T_OrderDetailResult']; $value_comparison = 0; //echo $r['Mcu_SummaryLabIsNormalValue']; $kelainan = []; $notavailable = []; if (trim($result_value) == 'NA') { $notavailable = $r; } elseif ($r['Mcu_SummaryLabIsNormalValue'] == 'Y') { if ($r['Mcu_SummaryLabType'] == '<' || $r['Mcu_SummaryLabType'] == '<=') { $value_comparison = $r['T_OrderDetailMinValue']; } if ($r['Mcu_SummaryLabType'] == '>' || $r['Mcu_SummaryLabType'] == '>=') { $value_comparison = $r['T_OrderDetailMaxValue']; } //echo "Y"; if ($r['Mcu_SummaryLabWithMethode'] == 'N' && $this->dynamic_comparison($result_value, $r['Mcu_SummaryLabType'], $value_comparison)) { //echo $r['T_TestName']." : ".$r['Mcu_KelainanName'].", "; $kelainan = $r; $results[] = array('test' => $r['T_TestName'], 'nat_test' => $r['Nat_TestCode'], 'kelainan' => $r['Mcu_KelainanName'], 'orderdetailID' => $r['T_OrderDetailID'], 'orderheaderID' => $r['T_OrderHeaderID'], 'nat_testID' => $r['Nat_TestID'], 'mcu_summarylabID' => $r['Mcu_SummaryLabID']); } } else if ($r['Mcu_SummaryLabIsRange'] == 'Y') { // Mcu_SummaryLabIsNormalValue, // Mcu_SummaryLabIsRange, // Mcu_SummaryLabMinInclusive, // Mcu_SummaryLabMinValue, // Mcu_SummaryLabMaxInclusive, // Mcu_SummaryLabMaxValue, $isWithinMin = $r['Mcu_SummaryLabMinInclusive'] === 'Y' ? floatval($result_value) >= floatval($r['Mcu_SummaryLabMinValue']) : floatval($result_value) > floatval($r['Mcu_SummaryLabMinValue']); $isWithinMax = $r['Mcu_SummaryLabMaxInclusive'] === 'Y' ? floatval($result_value) <= floatval($r['Mcu_SummaryLabMaxValue']) : floatval($result_value) < floatval($r['Mcu_SummaryLabMaxValue']); if ($isWithinMax && $isWithinMin) { $kelainan = $r; $results[] = array('test' => $r['T_TestName'], 'nat_test' => $r['Nat_TestCode'], 'kelainan' => $r['Mcu_KelainanName'], 'orderdetailID' => $r['T_OrderDetailID'], 'orderheaderID' => $r['T_OrderHeaderID'], 'nat_testID' => $r['Nat_TestID'], 'mcu_summarylabID' => $r['Mcu_SummaryLabID']); } } else { $value_comparison = $r['Mcu_SummaryLabValue']; if ($r['Mcu_SummaryLabType'] == '!=' || $r['Mcu_SummaryLabType'] == '==') { if ($this->dynamic_comparison($result_value, $r['Mcu_SummaryLabType'], $value_comparison)) { //echo $r['T_TestName']." : ".$r['Mcu_KelainanName'].", "; $kelainan = $r; $results[] = array('test' => $r['T_TestName'], 'nat_test' => $r['Nat_TestCode'], 'kelainan' => $r['Mcu_KelainanName'], 'orderdetailID' => $r['T_OrderDetailID'], 'orderheaderID' => $r['T_OrderHeaderID'], 'nat_testID' => $r['Nat_TestID'], 'mcu_summarylabID' => $r['Mcu_SummaryLabID']); } } else { if (is_numeric($result_value) && $this->dynamic_comparison($result_value, $r['Mcu_SummaryLabType'], $value_comparison)) { //echo $r['T_TestName']." : ".$r['Mcu_KelainanName'].", "; $kelainan = $r; $results[] = array('test' => $r['T_TestName'], 'nat_test' => $r['Nat_TestCode'], 'kelainan' => $r['Mcu_KelainanName'], 'orderdetailID' => $r['T_OrderDetailID'], 'orderheaderID' => $r['T_OrderHeaderID'], 'nat_testID' => $r['Nat_TestID'], 'mcu_summarylabID' => $r['Mcu_SummaryLabID']); } } } if (count($results) > 0) { $sql_update_kel = ""; if ($orderdetailID != 0) { $sql_update_kel = "UPDATE t_kelainan_lab SET T_KelainanLabIsActive = 'N' WHERE T_KelainanLabT_OrderDetailID = {$orderdetailID}"; } else { $sql_update_kel = "UPDATE t_kelainan_lab SET T_KelainanLabIsActive = 'N' WHERE T_KelainanLabT_OrderHeaderID = {$orderid}"; } $qry_update_kel = $this->db_smartone->query($sql_update_kel); if (!$qry_update_kel) { $prm_log = ['UPDATE_T_KELAINAN_LAB_N', 'kelainanlab/generate_kelainan_lab']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['orderid' => $orderid, 'orderdetailID' => $orderdetailID])); $errors[] = "UPDATE_T_KELAINAN_LAB_N"; } foreach ($results as $v_result) { $sql_kel_lab = "SELECT * FROM t_kelainan_lab WHERE T_KelainanLabT_OrderDetailID = ? GROUP BY T_KelainanLabT_OrderDetailID"; $qry_kel_lab = $this->db_smartone->query($sql_kel_lab, array($v_result['orderdetailID'])); if ($qry_kel_lab) { $rows_kel = $qry_kel_lab->result_array(); } else { $prm_log = ['SELECT_T_KELAINAN_LAB', 'kelainanlab/generate_kelainan_lab']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode($v_result)); $errors[] = "SELECT_T_KELAINAN_LAB"; } if (count($rows_kel) > 0) { // print_r($v_result['orderdetailID']); // exit; $sql_update_kel = "UPDATE t_kelainan_lab SET T_KelainanLabT_OrderDetailID = {$v_result['orderdetailID']}, T_KelainanLabT_OrderHeaderID = {$v_result['orderheaderID']}, T_KelainanLabNat_TestID = {$v_result['nat_testID']}, T_KelainanLabMcu_SummaryLabID = {$v_result['mcu_summarylabID']}, T_KelainanLabCreatedUserID = {$userID}, T_KelainanLabIsActive = 'Y', T_KelainanLabCreated = NOW() WHERE T_KelainanLabID = {$rows_kel[0]['T_KelainanLabID']}"; $qry_update_kel = $this->db_smartone->query($sql_update_kel); if (!$qry_update_kel) { $prm_log = ['UPDATE_T_KELAINAN_LAB', 'kelainanlab/generate_kelainan_lab']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode($v_result)); $errors[] = "UPDATE_T_KELAINAN_LAB"; } } else { // print_r('insert'); // exit; $sql_insert_lab = "INSERT INTO t_kelainan_lab( T_KelainanLabT_OrderDetailID, T_KelainanLabT_OrderHeaderID, T_KelainanLabNat_TestID, T_KelainanLabMcu_SummaryLabID, T_KelainanLabCreatedUserID, T_KelainanLabCreated) VALUES( '{$v_result['orderdetailID']}', '{$v_result['orderheaderID']}', '{$v_result['nat_testID']}', '{$v_result['mcu_summarylabID']}', {$userID}, NOW())"; $qry_insert_lab = $this->db_smartone->query($sql_insert_lab); if (!$qry_insert_lab) { $prm_log = ['INSERT_T_KELAINAN_LAB', 'kelainanlab/generate_kelainan_lab']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode($v_result)); $errors[] = "INSERT_T_KELAINAN_LAB"; } } } } } return $errors; } function generate_kelainan_nonlab($orderID = 0, $so_resultentryID = 0, $userID = 0) { $errors = []; if ($orderID != 0) { $filterOrderID = " AND T_OrderHeaderID = {$orderID}"; } else { $filterOrderID = ""; } if ($so_resultentryID != 0) { $filterSoResultEntryID = " AND So_ResultEntryID = {$so_resultentryID}"; } else { $filterSoResultEntryID = ""; } $sql = "SELECT So_ResultEntryID, T_OrderHeaderID, T_TestNat_TestID, Mcu_SummaryNonlabID, Mcu_SummaryNonlabMcu_KelainanID, Mcu_SummaryNonlabID FROM so_resultentry_category_result JOIN so_resultentry ON So_ResultEntryCategoryResultSo_ResultEntryID = So_ResultEntryID AND So_ResultEntryStatus <> 'NEW' AND So_ResultEntryIsActive = 'Y' {$filterSoResultEntryID} JOIN t_orderheader ON So_ResultEntryT_OrderHeaderID = T_OrderHeaderID AND T_OrderHeaderIsActive = 'Y' {$filterOrderID} JOIN t_orderdetail ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND T_OrderDetailIsActive = 'Y' JOIN t_test ON T_OrderDetailT_TestID = T_TestID JOIN mcu_summarynonlab ON Mcu_SummaryNonlabNat_TestID = T_TestNat_TestID AND Mcu_SummaryNonlabIsActive = 'Y' AND So_ResultEntryCategoryNonlabConclusionDetailID IN (Mcu_SummaryNonlabConclusionDetailIDs) WHERE So_ResultEntryCategoryResultIsActive = 'Y'"; $qry = $this->db_smartone->query($sql, array($orderID)); if (!$qry) { $prm_log = ['SELECT_T_KELAINAN_NONLAB_1', 'genkelainan/generate_kelainan_nonlab']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['orderID' => $orderID, 'so_resultentryID' => $so_resultentryID])); $errors[] = "SELECT_T_KELAINAN_NONLAB_1"; } $rows = $qry->result_array(); if ($orderID != 0) { $sql = "UPDATE t_kelainan_nonlab SET T_KelainanNonLabIsActive = 'N' WHERE T_KelainanNonLabT_OrderHeaderID = {$orderID} AND T_KelainanNonLabIsActive = 'Y' "; } else { $sql = "UPDATE t_kelainan_nonlab SET T_KelainanNonLabIsActive = 'N' WHERE T_KelainanNonLabSo_ResultEntryID = {$so_resultentryID} AND T_KelainanNonLabIsActive = 'Y' "; } $qry = $this->db_smartone->query($sql); if (!$qry) { $prm_log = ['UPDATE_T_KELAINAN_NONLAB_N', 'genkelainan/generate_kelainan_nonlab']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['orderID' => $orderID, 'so_resultentryID' => $so_resultentryID])); $errors[] = "UPDATE_T_KELAINAN_NONLAB_N"; } foreach ($rows as $key => $value) { $sql = "INSERT INTO t_kelainan_nonlab ( T_KelainanNonLabSo_ResultEntryID, T_KelainanNonLabT_OrderHeaderID, T_KelainanNonLabNat_TestID, T_KelainanNonLabMcu_SummaryNonlabID, T_KelainanNonLabCreatedUserID, T_KelainanLabNonCreated ) VALUES(?,?,?,?,?,NOW())"; $qry = $this->db_smartone->query($sql, [ $value['So_ResultEntryID'], $value['T_OrderHeaderID'], $value['T_TestNat_TestID'], $value['Mcu_SummaryNonlabID'], $userID ]); if (!$qry) { $prm_log = ['INSERT_T_KELAINAN_NONLAB', 'genkelainan/generate_kelainan_nonlab']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode($value)); $errors[] = "INSERT_T_KELAINAN_NONLAB"; } } return $errors; } function generate_all_fisik($orderID, $userid) { $errors = []; $errors = array_merge($errors, $this->status_gizi($orderID, $userid)); $errors = array_merge($errors, $this->persepsi_warna($orderID, $userid)); $errors = array_merge($errors, $this->visus($orderID, $userid)); $errors = array_merge($errors, $this->keluhan($orderID, $userid)); $errors = array_merge($errors, $this->riwayat_penyakit($orderID, $userid)); $errors = array_merge($errors, $this->penyakit_keluarga($orderID, $userid)); $errors = array_merge($errors, $this->kebiasaan_hidup($orderID, $userid)); $errors = array_merge($errors, $this->fisik_konsumsiobatteratur($orderID, $userid)); $errors = array_merge($errors, $this->imunasi($orderID, $userid)); $errors = array_merge($errors, $this->vital_sign($orderID, $userid)); $errors = array_merge($errors, $this->keadaan_umum($orderID, $userid)); $errors = array_merge($errors, $this->kepala_wajah($orderID, $userid)); $errors = array_merge($errors, $this->mata($orderID, $userid)); $errors = array_merge($errors, $this->lapang_pandang($orderID, $userid)); $errors = array_merge($errors, $this->telinga($orderID, $userid)); $errors = array_merge($errors, $this->hidung($orderID, $userid)); $errors = array_merge($errors, $this->gigi($orderID, $userid)); $errors = array_merge($errors, $this->mulut($orderID, $userid)); $errors = array_merge($errors, $this->leher($orderID, $userid)); $errors = array_merge($errors, $this->thorax($orderID, $userid)); $errors = array_merge($errors, $this->paru($orderID, $userid)); $errors = array_merge($errors, $this->jantung($orderID, $userid)); $errors = array_merge($errors, $this->perut($orderID, $userid)); $errors = array_merge($errors, $this->sistem_integumen($orderID, $userid)); $errors = array_merge($errors, $this->genitourinaria($orderID, $userid)); $errors = array_merge($errors, $this->anggota_gerak($orderID, $userid)); $errors = array_merge($errors, $this->sistem_persyarafan($orderID, $userid)); $errors = array_merge($errors, $this->smell_test($orderID, $userid)); $errors = array_merge($errors, $this->low_back_pain_screening_test($orderID, $userid)); $errors = array_merge($errors, $this->loop_k3($orderID, $userid)); $this->generate_summaries($orderID, $userid); return $errors; } function status_gizi($id, $userid) { $errors = []; $sql = "SELECT * FROM t_samplingso_additional_fisik_bbtb WHERE T_SamplingAdditionalFisikBBTBT_OrderHeaderID = ? AND T_SamplingAdditionalFisikBBTBIsActive = 'Y' LIMIT 1"; $qry = $this->db_smartone->query($sql, array($id)); if (!$qry) { $prm_log = ['SELECT_T_SAMPLINGSO_ADDITIONAL_FISIK_BBTB', 'genkelainan/status_gizi']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id])); $errors[] = "SELECT_T_SAMPLINGSO_ADDITIONAL_FISIK_BBTB"; } //echo $this->db_smartone->last_query(); $row_results = $qry->result_array(); //print_r($row_result); if (count($row_results) > 0) { $row_result = $row_results[0]; $status_gizi = array(); $bb = $row_result["T_SamplingAdditionalFisikBBTBValueBB"]; $tb = $row_result["T_SamplingAdditionalFisikBBTBValueTB"]; $standart_bmi = $row_result["T_SamplingAdditionalFisikBBTBStandart"]; $get_bmi = $this->hitung_bmi($bb, $tb, $standart_bmi); $bmi = $get_bmi['bmi']; $classification = $get_bmi['class']; //echo $classification; $data_insert_tb = array( 'code' => 'tb', 'label' => $tb, 'note' => $tb, 'segment' => 'status_gizi', 'category' => '', 'order_id' => $id ); $errors = array_merge($errors, $this->insert_data_etl($data_insert_tb, $userid)); //$this->insert_code('tb',$tb); $data_insert_bb = array( 'code' => 'bb', 'label' => $bb, 'note' => $bb, 'segment' => 'status_gizi', 'category' => '', 'order_id' => $id ); $errors = array_merge($errors, $this->insert_data_etl($data_insert_bb, $userid)); //$this->insert_code('bb',$bb); $data_insert_bmi = array( 'code' => 'bmi', 'label' => $bmi, 'note' => $bmi, 'segment' => 'status_gizi', 'category' => $standart_bmi, 'order_id' => $id ); $errors = array_merge($errors, $this->insert_data_etl($data_insert_bmi, $userid)); //$this->insert_code('bmi',$bmi); $data_insert_bmi_class = array( 'code' => 'bmi_classification_' . $standart_bmi, 'label' => $classification, 'note' => $classification, 'segment' => 'status_gizi', 'category' => $standart_bmi, 'order_id' => $id ); //print_r($data_insert_bmi_class); $errors = array_merge($errors, $this->insert_data_etl($data_insert_bmi_class, $userid)); //$this->insert_code('bmi_classification_'.$standart_bmi,$classification); } return $errors; } function persepsi_warna($id, $userid) { $errors = []; $sql = "SELECT IFNULL(T_SamplingAdditionalFisikBWPWValue,'Z') as result, IFNULL(T_SamplingAdditionalFisikBWPWVAngka,'') as angka FROM t_samplingso_additional_fisik_bw WHERE T_SamplingAdditionalFisikBWT_OrderHeaderID = ? LIMIT 1"; $qry = $this->db_smartone->query($sql, array($id)); if (!$qry) { $prm_log = ['SELECT_T_SAMPLINGSO_ADDITIONAL_FISIK_BWPW', 'genkelainan/persepsi_warna']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id])); $errors[] = "SELECT_T_SAMPLINGSO_ADDITIONAL_FISIK_BWPW"; } $row_results = $qry->result_array(); if (count($row_results) > 0) { $row_result = $row_results[0]; $hasil = 'Bahan belum'; if ($row_result['result'] == 'BW') { $hasil = 'Red Green Deficiency'; } if ($row_result['result'] == 'N') { $hasil = 'Normal'; } if ($row_result['result'] == 'X') { $hasil = 'Tidak dilakukan'; } $data_insert_bw = array( 'code' => 'bw', 'label' => $row_result['result'], 'note' => $hasil, 'segment' => 'mata', 'category' => '', 'order_id' => $id ); $errors = array_merge($errors, $this->insert_data_etl($data_insert_bw, $userid)); //$this->insert_code('bw',$row_result['result']); $data_insert_bwv = array( 'code' => 'bw_value', 'label' => $row_result['angka'], 'note' => $row_result['angka'], 'segment' => 'mata', 'category' => '', 'order_id' => $id ); $errors = array_merge($errors, $this->insert_data_etl($data_insert_bwv, $userid)); //$this->insert_code('bw_value',$row_result['angka']); } return $errors; } function hitung_bmi($bb, $tb, $standart_bmi) { $tb = $tb / 100; $bmi = ''; $classs = ""; $bmi_valuex = 0; if (intval($bb) != 0 && intval($tb) != 0) { $bmi = $bb / ($tb * $tb); $bmi_valuex = number_format($bmi, 2); if ($standart_bmi === 'asia_pacific') { if ($bmi_valuex < 18.5) $classs = 'Underweight'; if ($bmi_valuex >= 18.5 && $bmi_valuex < 23) $classs = 'Normal'; if ($bmi_valuex >= 23 && $bmi_valuex < 25) $classs = 'Overweight'; if ($bmi_valuex >= 25 && $bmi_valuex < 30) $classs = 'Obese I'; if ($bmi_valuex >= 30) $classs = 'Obese II'; } if ($standart_bmi === 'who') { if ($bmi_valuex < 18.5) $classs = 'Underweight'; if ($bmi_valuex >= 18.5 && $bmi_valuex < 25) { $classs = 'Normal'; } if ($bmi_valuex >= 25 && $bmi_valuex < 30) { $classs = 'Overweight'; } if ($bmi_valuex >= 30) $classs = 'Obese'; } if ($standart_bmi === 'kemenkes') { if ($bmi_valuex < 18.5) $classs = 'Underweight'; if ($bmi_valuex >= 18.5 && $bmi_valuex < 25.1) $classs = 'Normal'; if ($bmi_valuex >= 25.1 && $bmi_valuex < 27) $classs = 'Overweight'; if ($bmi_valuex >= 27) $classs = 'Obese'; } } return array( 'bmi' => $bmi_valuex, 'class' => $classs ); } function visus($orderID, $userid) { $errors = []; $ret_array = []; $sql = " SELECT * , T_SamplingAdditionalFisikVisusID as visus_id FROM t_samplingso_additional_fisik_visus WHERE T_SamplingAdditionalFisikVisusT_OrderHeaderID = ? LIMIT 1"; $qry = $this->db_smartone->query($sql, array($orderID)); if (!$qry) { $prm_log = ['SELECT_T_SAMPLINGSO_ADDITIONAL_FISIK_VISUS', 'genkelainan/visus']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['orderID' => $orderID])); $errors[] = "SELECT_T_SAMPLINGSO_ADDITIONAL_FISIK_VISUS"; } $row_result = $qry->row_array(); //echo $this->db_smartone->last_query(); if ($row_result && intval($row_result['visus_id']) > 0) { $visus = array(); $visus_kiri = ""; $visus_kanan = ""; $visus_kesimpulan = ""; $normal = array("20/20", "20/25", "6/6", "6/7.5", "6/7,5"); $miopia_od = false; $miopia_os = false; $miopia_od_value = ''; $miopia_os_value = ''; $astigmatismus_od = false; $astigmatismus_os = false; $astigmatismus_od_value = ''; $astigmatismus_os_value = ''; $presbiopia_ods = false; $presbiopia_ods_value = ''; $x_od = false; $x_os = false; $x_od_value = ""; $x_os_value = ""; $od_visus = "20/20"; $os_visus = "20/20"; if ($row_result['T_SamplingAdditionalFisikVisusTKODV'] == '6/7,5' || $row_result['T_SamplingAdditionalFisikVisusTKODV'] == '6/6' || $row_result['T_SamplingAdditionalFisikVisusTKODV'] == '6/7.5') $od_visus = $row_result['T_SamplingAdditionalFisikVisusTKODV']; if ($row_result['T_SamplingAdditionalFisikVisusTKOSV'] == '6/7,5' || $row_result['T_SamplingAdditionalFisikVisusTKOSV'] == '6/6' || $row_result['T_SamplingAdditionalFisikVisusTKOSV'] == '6/7.5') $os_visus = $row_result['T_SamplingAdditionalFisikVisusTKOSV']; if ((strtolower($row_result['T_SamplingAdditionalFisikVisusTKODV']) != "normal" && $row_result['T_SamplingAdditionalFisikVisusTKODV'] != "" && $row_result['T_SamplingAdditionalFisikVisusTKODV'] != "-") && ($row_result['T_SamplingAdditionalFisikVisusTKOSV'] != "" && $row_result['T_SamplingAdditionalFisikVisusTKOSV'] != "-" && strtolower($row_result['T_SamplingAdditionalFisikVisusTKODV']) != "normal" && strtolower($row_result['T_SamplingAdditionalFisikVisusTKOSV']) != "normal")) { $visus[] = array( "xx1" => "Tanpa Kacamata", "xx2" => "OD : ", "xx3" => $row_result['T_SamplingAdditionalFisikVisusTKODV'] ); $visus[] = array( "xx1" => "Tanpa Kacamata", "xx2" => "OS", "xx3" => $row_result['T_SamplingAdditionalFisikVisusTKOSV'] ); $rst['kelainan'] = "Kelainan refraksi (tanpa kacamata)"; if (!in_array($row_result['T_SamplingAdditionalFisikVisusTKODV'], $normal)) { $value_koreksi_od = ""; $od_sph = $row_result['T_SamplingAdditionalFisikVisusODSPH']; if ($od_sph != "" && $od_sph != "-" && $od_sph != "--" && $od_sph != "/-" && $od_sph != "/" && $od_sph != "-/" && strtolower(trim($od_sph)) != 'plano') { if ($visus_kanan != "") $visus_kanan .= ", "; $visus_kanan .= $od_sph . " (Miopia)"; $miopia_od = true; $miopia_od_value = $od_sph; } $od_cyl = $row_result['T_SamplingAdditionalFisikVisusODCYL']; //$od_cyl = $row_result['T_SamplingAdditionalFisikVisusODCYL']; if ($od_cyl != "" && $od_cyl != "-" && $od_cyl != "--" && $od_cyl != "/-" && $od_cyl != "/" && $od_cyl != "-/") { if ($visus_kanan != "") $visus_kanan .= ", "; $visus_kanan .= "Cyl " . $od_cyl; $astigmatismus_od = true; $astigmatismus_od_value = $od_cyl; } $od_x = $row_result['T_SamplingAdditionalFisikVisusODX']; //echo $od_x; if ($od_x != "" && $od_x != "-" && $od_x != "--" && $od_x != "/-" && $od_x != "/" && $od_x != "-/") { $visus_kanan .= " axis " . $od_x . " (Astigmatismus)"; $x_od = true; $x_od = $od_x; } else { if ($od_cyl != "" && $od_cyl != "-" && $od_cyl != "--" && $od_cyl != "/-" && $od_cyl != "/" && $od_cyl != "-/") $visus_kanan .= " (Astigmatismus)"; } //$value_koreksi_od .= "X (".$od_x.") "; } if (!in_array($row_result['T_SamplingAdditionalFisikVisusTKOSV'], $normal)) { $value_koreksi_os = ""; $os_sph = $row_result['T_SamplingAdditionalFisikVisusOSSPH']; if (strtolower(trim($os_sph)) != "tidak terkoreksi" && strtolower(trim($os_sph)) != "tidak dapat dinilai" && $os_sph != "" && $os_sph != "-" && $os_sph != "--" && $os_sph != "/-" && $os_sph != "/" && $os_sph != "-/" && strtolower(trim($os_sph)) != 'plano') { if ($visus_kiri != "") $visus_kiri .= ", "; $visus_kiri .= $os_sph . " (Miopia)"; $miopia_os = true; $miopia_os_value = $os_sph; } $os_cyl = $row_result['T_SamplingAdditionalFisikVisusOSCYL']; if (strtolower(trim($os_cyl)) != "tidak terkoreksi" && strtolower(trim($os_cyl)) != "tidak dapat dinilai" && $os_cyl != "" && $os_cyl != "-" && $os_cyl != "--" && $os_cyl != "/-" && $os_cyl != "/" && $os_cyl != "-/") { if ($visus_kiri != "") $visus_kiri .= ", "; $visus_kiri .= "Cyl " . $os_cyl; $astigmatismus_os = true; $astigmatismus_os_value = $os_cyl; } $os_x = $row_result['T_SamplingAdditionalFisikVisusOSX']; if (strtolower(trim($os_x)) != "tidak terkoreksi" && strtolower(trim($os_x)) != "tidak dapat dinilai" && $os_x != "" && $os_x != "-" && $os_x != "--" && $os_x != "/-" && $os_x != "/" && $os_x != "-/") { //if ($visus_kiri != "") $visus_kiri .= ", "; $visus_kiri .= " axis " . $os_x . " (Astigmatismus)"; $x_os = true; $x_os = $os_x; } else { if ($os_cyl != "" && $os_cyl != "-") $visus_kiri .= " (Astigmatismus)"; } } } if ((strtolower($row_result['T_SamplingAdditionalFisikVisusDKODV']) != "normal" && $row_result['T_SamplingAdditionalFisikVisusDKODV'] != "" && $row_result['T_SamplingAdditionalFisikVisusDKODV'] != "-") && ($row_result['T_SamplingAdditionalFisikVisusDKOSV'] != "" && $row_result['T_SamplingAdditionalFisikVisusDKOSV'] != "-" && strtolower($row_result['T_SamplingAdditionalFisikVisusDKODV']) != "normal" && strtolower($row_result['T_SamplingAdditionalFisikVisusDKOSV']) != "normal")) { $visus[] = array( "xx1" => "Dengan Kacamata", "xx2" => "OD : ", "xx3" => $row_result['T_SamplingAdditionalFisikVisusDKODV'] ); $visus[] = array( "xx1" => "Dengan Kacamata", "xx2" => "OS", "xx3" => $row_result['T_SamplingAdditionalFisikVisusDKOSV'] ); $rst['kelainan'] = "Kelainan refraksi (dengan kacamata)"; $od_visus = $row_result['T_SamplingAdditionalFisikVisusDKODV']; $os_visus = $row_result['T_SamplingAdditionalFisikVisusDKOSV']; $value_koreksi_od = ""; $od_sph = $row_result['T_SamplingAdditionalFisikVisusODSPH']; if (strtolower(trim($od_sph)) != "tidak terkoreksi" && strtolower(trim($od_sph)) != "tidak dapat dinilai" && $od_sph != "" && $od_sph != "-" && $od_sph != "--" && $od_sph != "/-" && $od_sph != "/" && $od_sph != "-/" && strtolower(trim($od_sph)) != 'plano') { if ($visus_kanan != "") $visus_kanan .= ", "; $visus_kanan .= $od_sph . " (Miopia)"; $miopia_od = true; $miopia_od_value = $od_sph; } $od_cyl = $row_result['T_SamplingAdditionalFisikVisusODCYL']; if (strtolower(trim($od_cyl)) != "tidak terkoreksi" && strtolower(trim($od_cyl)) != "tidak dapat dinilai" && $od_cyl != "" && $od_cyl != "-" && $od_cyl != "--" && $od_cyl != "/-" && $od_cyl != "/" && $od_cyl != "-/") { if ($visus_kanan != "") $visus_kanan .= ", "; $visus_kanan .= "Cyl " . $od_cyl; $astigmatismus_od = true; $astigmatismus_od_value = $od_cyl; } $od_x = $row_result['T_SamplingAdditionalFisikVisusODX']; if (strtolower(trim($od_x)) != "tidak terkoreksi" && strtolower(trim($od_x)) != "tidak dapat dinilai" && $od_x != "" && $od_x != "-" && $od_x != "--" && $od_x != "/-" && $od_x != "/" && $od_x != "-/") { //if ($visus_kanan != "") $visus_kanan .= ", "; $visus_kanan .= " axis " . $od_x . " (Astigmatismus)"; $x_od = true; $x_od = $od_x; } else { if ($od_cyl != "" && $od_cyl != "-" && $od_cyl != "--" && $od_cyl != "/-" && $od_cyl != "/" && $od_cyl != "-/") $visus_kanan .= " (Astigmatismus)"; } //$value_koreksi_od .= "X (".$od_x.") "; $value_koreksi_os = ""; $os_sph = $row_result['T_SamplingAdditionalFisikVisusOSSPH']; if (strtolower(trim($os_sph)) != "tidak terkoreksi" && strtolower(trim($os_sph)) != "tidak dapat dinilai" && $os_sph != "" && $os_sph != "-" && $os_sph != "--" && $os_sph != "/-" && $os_sph != "/" && $os_sph != "-/" && strtolower(trim($os_sph)) != 'plano') { if ($visus_kiri != "") $visus_kiri .= ", "; $visus_kiri .= $os_sph . " (Miopia)"; $miopia_os = true; $miopia_os_value = $os_sph; } $os_cyl = $row_result['T_SamplingAdditionalFisikVisusOSCYL']; if (strtolower(trim($os_cyl)) != "tidak terkoreksi" && strtolower(trim($os_cyl)) != "tidak dapat dinilai" && $os_cyl != "" && $os_cyl != "-" && $os_cyl != "--" && $os_cyl != "/-" && $os_cyl != "/" && $os_cyl != "-/") { if ($visus_kiri != "") $visus_kiri .= ", "; $visus_kiri .= "Cyl " . $os_cyl; $astigmatismus_os = true; $astigmatismus_os_value = $os_cyl; } $os_x = $row_result['T_SamplingAdditionalFisikVisusOSX']; if (strtolower(trim($os_x)) != "tidak terkoreksi" && strtolower(trim($os_x)) != "tidak dapat dinilai" && $os_x != "" && $os_x != "-" && $os_x != "--" && $os_x != "/-" && $os_x != "/" && $os_x != "-/") { $visus_kiri .= " axis " . $os_x . " (Astigmatismus)"; $x_os = true; $x_os = $os_x; } else { if ($os_cyl != "" && $os_cyl != "-" && $os_cyl != "--" && $os_cyl != "/-" && $os_cyl != "/" && $os_cyl != "-/") $visus_kiri .= " (Astigmatismus)"; } //$value_koreksi_os .= "X (".$os_x.") "; } if (($row_result['T_SamplingAdditionalFisikVisusTKODV'] != "" && $row_result['T_SamplingAdditionalFisikVisusTKODV'] != "-") && ($row_result['T_SamplingAdditionalFisikVisusTKOSV'] != "" && $row_result['T_SamplingAdditionalFisikVisusTKOSV'] != "-")) { if (!in_array($row_result['T_SamplingAdditionalFisikVisusTKODV'], $normal) && $visus_kanan == '') { $visus_kanan = "Miopia"; $miopia_od = true; $miopia_od_value = ""; } if (!in_array($row_result['T_SamplingAdditionalFisikVisusTKOSV'], $normal) && $visus_kiri == '') { $visus_kiri = "Miopia"; $miopia_os = true; $miopia_os_value = ""; } } if (($row_result['T_SamplingAdditionalFisikVisusDKODV'] != "" && $row_result['T_SamplingAdditionalFisikVisusDKODV'] != "-") && ($row_result['T_SamplingAdditionalFisikVisusDKOSV'] != "" && $row_result['T_SamplingAdditionalFisikVisusDKOSV'] != "-")) { if (!in_array($row_result['T_SamplingAdditionalFisikVisusDKODV'], $normal) && $visus_kanan == '') { $visus_kanan = "Miopia"; $miopia_od = true; $miopia_od_value = ""; } if (!in_array($row_result['T_SamplingAdditionalFisikVisusDKOSV'], $normal) && $visus_kiri == '') { $visus_kiri = "Miopia"; $miopia_os = true; $miopia_os_value = ""; } } $od_add = $row_result['T_SamplingAdditionalFisikVisusADD']; if ($od_add != "" && $od_add != "-" && $od_add != "--" && $od_add != "/-" && $od_add != "/" && $od_add != "-/") { if ($visus_kanan != "") $visus_kanan .= ", "; $visus_kanan .= $od_add . " (Presbiopia)"; if ($visus_kiri != "") $visus_kiri .= ", "; $visus_kiri .= $od_add . " (Presbiopia)"; $presbiopia_ods = true; $presbiopia_ods_value = $od_add; } } $data_insert = array( 'code' => 'visus', 'label' => 'visus', 'note' => $rst['kelainan'], 'segment' => 'visus', 'category' => 'mata', 'order_id' => $orderID ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); //$this->insert_code('visus','visus'); if ($miopia_od) { $data_insert = array( 'code' => 'visus_miopia_od', 'label' => 'visus Miopia OD', 'note' => $miopia_od_value, 'segment' => 'visus', 'category' => 'mata', 'order_id' => $orderID ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); //$this->insert_code('visus_miopia_od','visus Miopia OD'); } if ($miopia_os) { $data_insert = array( 'code' => 'visus_miopia_os', 'label' => 'visus Miopia OS', 'note' => $miopia_os_value, 'segment' => 'visus', 'category' => 'mata', 'order_id' => $orderID ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); //$this->insert_code('visus_miopia_os','visus Miopia OS'); } if ($miopia_od) { $in_value = ["20/30", "20/40"]; $exp_value_od = explode("/", $od_visus); if (isset($exp_value_od[1]) && intval($exp_value_od[1]) < 50) { $data_insert = array( 'code' => 'visus_miopia_od_30_40', 'label' => 'visus Miopia OD 20/30 20/40', 'note' => $miopia_od_value, 'segment' => 'visus', 'category' => 'mata', 'order_id' => $orderID ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); //$this->insert_code('visus_miopia_od_30_40','visus Miopia OD 20/30 20/40'); } if (isset($exp_value_od[1]) && intval($exp_value_od[1]) > 50) { $data_insert = array( 'code' => 'visus_miopia_od_over_50', 'label' => 'visus Miopia OD > 20/50', 'note' => $miopia_od_value, 'segment' => 'visus', 'category' => 'mata', 'order_id' => $orderID ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); //$this->insert_code('visus_miopia_ods_over_50','visus Miopia ODS > 20/50'); } } if ($miopia_os) { $in_value = ["20/30", "20/40"]; $exp_value_os = explode("/", $os_visus); //print_r($exp_value_os); if (isset($exp_value_os[1]) && intval($exp_value_os[1]) < 50) { $data_insert = array( 'code' => 'visus_miopia_os_30_40', 'label' => 'visus Miopia OS 20/30 20/40', 'note' => $miopia_os_value, 'segment' => 'visus', 'category' => 'mata', 'order_id' => $orderID ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); //$this->insert_code('visus_miopia_od_30_40','visus Miopia OD 20/30 20/40'); } if (isset($exp_value_os[1]) && intval($exp_value_os[1]) > 50) { $data_insert = array( 'code' => 'visus_miopia_os_over_50', 'label' => 'visus Miopia OS > 20/50', 'note' => $miopia_os_value, 'segment' => 'visus', 'category' => 'mata', 'order_id' => $orderID ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); //$this->insert_code('visus_miopia_ods_over_50','visus Miopia ODS > 20/50'); } } if ($astigmatismus_od) { $data_insert = array( 'code' => 'visus_astigmatismus_od', 'label' => 'visus Astigmatismus OD', 'note' => $astigmatismus_od_value, 'segment' => 'visus', 'category' => 'mata', 'order_id' => $orderID ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); //$this->insert_code('visus_astigmatismus_od','visus Astigmatismus OD'); } if ($astigmatismus_os) { $data_insert = array( 'code' => 'visus_astigmatismus_os', 'label' => 'visus Astigmatismus OS', 'note' => $astigmatismus_os_value, 'segment' => 'visus', 'category' => 'mata', 'order_id' => $orderID ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); //$this->insert_code('visus_astigmatismus_os','visus Astigmatismus OS'); } if ($astigmatismus_od && $astigmatismus_os) { $data_insert = array( 'code' => 'visus_astigmatismus_ods', 'label' => 'visus Astigmatismus ODS', 'note' => $astigmatismus_os_value, 'segment' => 'visus', 'category' => 'mata', 'order_id' => $orderID ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); //$this->insert_code('visus_astigmatismus_ods','visus Astigmatismus ODS'); } if ($x_od) { $data_insert = array( 'code' => 'visus_x_od', 'label' => 'visus X OD', 'note' => $x_od_value, 'segment' => 'visus', 'category' => 'mata', 'order_id' => $orderID ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); //$this->insert_code('visus_x_od','visus X OD'); } if ($x_os) { $data_insert = array( 'code' => 'visus_x_os', 'label' => 'visus X OS', 'note' => $x_od_value, 'segment' => 'visus', 'category' => 'mata', 'order_id' => $orderID ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); //$this->insert_code('visus_x_os','visus X OS'); } if ($presbiopia_ods) { $data_insert = array( 'code' => 'visus_presbiopia_ods', 'label' => 'visus Presbiopia ODS', 'note' => $presbiopia_ods_value, 'segment' => 'visus', 'category' => 'mata', 'order_id' => $orderID ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); //$this->insert_code('visus_presbiopia_ods','visus Presbiopia ODS'); } return $errors; } function keluhan($id, $userid) { $errors = []; $rst = []; $sql = "SELECT * FROM fisik_template JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y' WHERE FisikTemplateIsActive = 'Y' AND FisikTemplateTableName = 'fisik_keluhan' ORDER BY FisikTemplateCode ASC LIMIT 1 "; $qry = $this->db_smartone->query($sql, array($id)); if (!$qry) { $prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/keluhan']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id])); $errors[] = "SELECT_FISIK_TEMPLATE"; } // echo $this->db_smartone->last_query(); $datas = $qry->result_array(); if ($datas && count($datas) > 0) { $order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID']; $valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true); $details = $valdata['details']; foreach ($details as $key => $value) { if ($value['chx'] == '1') { $data_insert = array( 'order_id' => $order_header_id, 'code' => $value['id_code'], 'label' => $value['label'], 'note' => $value['value'], 'segment' => 'fisik_keluhan', 'category' => '' ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); $rst[] = $data_insert; } //$this->insert_code($value['id_code'],$value['label']); } } return $errors; } function riwayat_penyakit($id, $userid) { $errors = []; $rst = []; $sql = "SELECT * FROM fisik_template JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y' WHERE FisikTemplateIsActive = 'Y' AND FisikTemplateTableName = 'fisik_penyakit' ORDER BY FisikTemplateCode ASC LIMIT 1 "; $qry = $this->db_smartone->query($sql, array($id)); if (!$qry) { $prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/riwayat_penyakit']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id])); $errors[] = "SELECT_FISIK_TEMPLATE"; } // echo $this->db_smartone->last_query(); $datas = $qry->result_array(); if ($datas && count($datas) > 0) { $order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID']; $valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true); $header_details = $valdata['details']; foreach ($header_details as $k => $v) { $details = $v['details']; foreach ($details as $key => $value) { if ($value['chx'] == '1') { $data_insert = array( 'order_id' => $order_header_id, 'code' => $value['id_code'], 'label' => $value['label'], 'note' => $value['value'], 'segment' => $value['segment_name'], 'category' => $value['table_name'] ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); $rst[] = $data_insert; } //$this->insert_code($value['id_code'],$value['label']." | ".$value['segment_name']); } } } return $errors; } function penyakit_keluarga($id, $userid) { $errors = []; $rst = []; $sql = "SELECT * FROM fisik_template JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y' WHERE FisikTemplateIsActive = 'Y' AND FisikTemplateTableName = 'fisik_penyakitkeluarga' ORDER BY FisikTemplateCode ASC LIMIT 1 "; $qry = $this->db_smartone->query($sql, array($id)); if (!$qry) { $prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/penyakit_keluarga']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id])); $errors[] = "SELECT_FISIK_TEMPLATE"; } // echo $this->db_smartone->last_query(); $datas = $qry->result_array(); if ($datas && count($datas) > 0) { $order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID']; $valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true); $details = $valdata['details']; foreach ($details as $key => $value) { $results = []; $options = $value['options']; foreach ($options as $ko => $vo) { if ($vo['selected'] == '1') $results[] = $vo['label']; } if (count($results) > 0) { $data_insert = array( 'order_id' => $order_header_id, 'code' => $value['id_code'], 'label' => $value['label'], 'note' => join(", ", $results), 'segment' => $value['table_name'], 'category' => $value['table_name'], ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); $rst[] = $data_insert; } //$this->insert_code($value['id_code'],$value['label']); } } return $errors; } function kebiasaan_hidup($id, $userid) { $errors = []; $rst = []; $sql = "SELECT * FROM fisik_template JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y' WHERE FisikTemplateIsActive = 'Y' AND FisikTemplateTableName = 'fisik_kebiasaanhidup' ORDER BY FisikTemplateCode ASC LIMIT 1 "; $qry = $this->db_smartone->query($sql, array($id)); // echo $this->db_smartone->last_query(); $datas = $qry->result_array(); if ($datas && count($datas) > 0) { $order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID']; $valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true); $header_details = $valdata['details']; foreach ($header_details as $k => $v) { $details = $v['details']; foreach ($details as $key => $value) { if ($value['chx'] == '1') { $data_insert = array( 'order_id' => $order_header_id, 'code' => $value['id_code'], 'label' => $value['label'], 'note' => $value['value'], 'segment' => $value['segment_name'], 'category' => $value['table_name'] ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); $rst[] = $data_insert; } //$this->insert_code($value['id_code'],$value['label']." | ".$value['segment_name']); } } } return $errors; } function fisik_konsumsiobatteratur($id, $userid) { $rst = []; $sql = "SELECT * FROM fisik_template JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y' WHERE FisikTemplateIsActive = 'Y' AND FisikTemplateTableName = 'fisik_konsumsiobatteratur' ORDER BY FisikTemplateCode ASC LIMIT 1 "; $qry = $this->db_smartone->query($sql, array($id)); if (!$qry) { $prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/fisik_konsumsiobatteratur']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id])); $errors[] = "SELECT_FISIK_TEMPLATE"; } // echo $this->db_smartone->last_query(); $datas = $qry->result_array(); if ($datas && count($datas) > 0) { $order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID']; $valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true); $details = $valdata['details']; foreach ($details as $key => $value) { if ($value['chx'] == '1') { $data_insert = array( 'order_id' => $order_header_id, 'code' => $value['id_code'], 'label' => $value['label'], 'note' => $value['value'], 'segment' => $value['table_name'], 'category' => $value['table_name'] ); $this->insert_data_etl($data_insert, $userid); $rst[] = $data_insert; } //$this->insert_code($value['id_code'],$value['label']); } } return $errors; } function imunasi($id, $userid) { $errors = []; $rst = []; $sql = "SELECT * FROM fisik_template JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y' WHERE FisikTemplateIsActive = 'Y' AND FisikTemplateTableName = 'fisik_riwayatimunisasi' ORDER BY FisikTemplateCode ASC LIMIT 1 "; $qry = $this->db_smartone->query($sql, array($id)); if (!$qry) { $prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/imunasi']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id])); $errors[] = "SELECT_FISIK_TEMPLATE"; } // echo $this->db_smartone->last_query(); $datas = $qry->result_array(); if ($datas && count($datas) > 0) { $order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID']; $valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true); $header_details = $valdata['details']; foreach ($header_details as $k => $v) { $details = $v['details']; foreach ($details as $key => $value) { if ($value['chx'] == '1') { $data_insert = array( 'order_id' => $order_header_id, 'code' => $value['id_code'], 'label' => $value['label'], 'note' => $value['value'], 'segment' => $value['segment_name'], 'category' => $value['table_name'] ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); $rst[] = $data_insert; } //$this->insert_code($value['id_code'],$value['label']." | ".$value['segment_name']); } } } return $errors; } function vital_sign($id, $userid) { $errors = []; $rst = []; $sql = "SELECT * FROM fisik_template JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y' WHERE FisikTemplateIsActive = 'Y' AND FisikTemplateTableName = 'tanda_vital' ORDER BY FisikTemplateCode ASC LIMIT 1 "; $qry = $this->db_smartone->query($sql, array($id)); if (!$qry) { $prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/vital_sign']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id])); $errors[] = "SELECT_FISIK_TEMPLATE"; } // echo $this->db_smartone->last_query(); $datas = $qry->result_array(); //return $datas; //exit; if ($datas && count($datas) > 0) { $order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID']; $valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true); $details = $valdata['details']; foreach ($details as $key => $value) { if ($value['id_code'] == 'tanda_vital_5') { $data_insert = array( 'order_id' => $order_header_id, 'code' => $value['id_code'] . '_1', 'label' => $value['label_x'], 'note' => $value['value_x'], 'segment' => 'tekanan_darah', 'category' => $value['table_name'] ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); //$this->insert_code($value['id_code'].'_1',$value['label_x']); $rst[] = $data_insert; $data_insert = array( 'order_id' => $order_header_id, 'code' => $value['id_code'] . '_2', 'label' => $value['label_y'], 'note' => $value['value_y'], 'segment' => 'tekanan_darah', 'category' => $value['table_name'] ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); //$this->insert_code($value['id_code'].'_2',$value['label_y']); $rst[] = $data_insert; $data_insert = array( 'order_id' => $order_header_id, 'code' => 'tekanan_darah_conclusion', 'label' => $value['standart'], 'note' => $value['value'], 'segment' => 'tekanan_darah', 'category' => $value['table_name'] ); //echo 'tekanan_darah_conclusion: '.$value['value']; //exit; $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); //$this->insert_code('tekanan_darah_conclusion',$value['label_y']); $rst[] = $data_insert; } if ($value['id_code'] == 'tanda_vital_6') { $data_insert = array( 'order_id' => $order_header_id, 'code' => $value['id_code'], 'label' => $value['chx_y'] == '1' ? $value['label_y'] : $value['label_x'], 'note' => $value['value'], 'segment' => 'suhu', 'category' => $value['table_name'] ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); //$this->insert_code($value['id_code'],'Suhu'); $rst[] = $data_insert; } if ($value['id_code'] == 'tanda_vital_1') { $data_insert = array( 'order_id' => $order_header_id, 'code' => $value['id_code'], 'label' => $value['label'], 'note' => $value['value'], 'segment' => 'denyut_nadi', 'category' => $value['table_name'] ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); //$this->insert_code($value['id_code'],$value['label']); $rst[] = $data_insert; } if ($value['id_code'] == 'tanda_vital_2') { $data_insert = array( 'order_id' => $order_header_id, 'code' => $value['id_code'], 'label' => $value['chx_y'] == '1' ? $value['label_y'] : $value['label_x'], 'note' => $value['value'], 'segment' => 'ritme_denyut_nadi', 'category' => $value['table_name'] ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); //$this->insert_code($value['id_code'],'Denyut Nadi'); $rst[] = $data_insert; } if ($value['id_code'] == 'tanda_vital_3') { $data_insert = array( 'order_id' => $order_header_id, 'code' => $value['id_code'], 'label' => $value['label'], 'note' => $value['value'], 'segment' => 'laju_pernafasan', 'category' => $value['table_name'] ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); //$this->insert_code($value['id_code'],$value['label']); $rst[] = $data_insert; } if ($value['id_code'] == 'tanda_vital_4') { $data_insert = array( 'order_id' => $order_header_id, 'code' => $value['id_code'], 'label' => $value['chx_y'] == '1' ? $value['label_y'] : $value['label_x'], 'note' => $value['value'], 'segment' => 'pola_nafas', 'category' => $value['table_name'] ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); //$this->insert_code($value['id_code'],'Pola Nafas'); $rst[] = $data_insert; } } } return $errors; } function keadaan_umum($id, $userid) { $errors = []; $rst = []; $sql = "SELECT * FROM fisik_template JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y' WHERE FisikTemplateIsActive = 'Y' AND FisikTemplateTableName = 'keadaan_umum' ORDER BY FisikTemplateCode ASC LIMIT 1 "; $qry = $this->db_smartone->query($sql, array($id)); if (!$qry) { $prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/keadaan_umum']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id])); $errors[] = "SELECT_FISIK_TEMPLATE"; } // echo $this->db_smartone->last_query(); $datas = $qry->result_array(); if ($datas && count($datas) > 0) { $order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID']; $valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true); $details = $valdata['details']; foreach ($details as $key => $value) { if ($value['chx_x'] == '1') { $data_insert = array( 'order_id' => $order_header_id, 'code' => $value['id_code'] + '_x', 'label' => $value['label_x'], 'note' => $value['value'], 'segment' => $value['table_name'], 'category' => $value['table_name'] ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); } if ($value['chx_y'] == '1') { $data_insert = array( 'order_id' => $order_header_id, 'code' => $value['id_code'] . '_y', 'label' => $value['label_y'], 'note' => $value['value'], 'segment' => $value['table_name'], 'category' => $value['table_name'] ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); } ////$this->insert_code($value['id_code'],'Keadaan Umum'); $rst[] = $data_insert; } } return $errors; } function kepala_wajah($id, $userid) { $errors = []; $rst = []; $sql = "SELECT * FROM fisik_template JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y' WHERE FisikTemplateIsActive = 'Y' AND FisikTemplateTableName = 'kepala_wajah' ORDER BY FisikTemplateCode ASC LIMIT 1 "; $qry = $this->db_smartone->query($sql, array($id)); if (!$qry) { $prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/kepala_wajah']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id])); $errors[] = "SELECT_FISIK_TEMPLATE"; } // echo $this->db_smartone->last_query(); $datas = $qry->result_array(); if ($datas && count($datas) > 0) { $order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID']; $valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true); $details = $valdata['details']; foreach ($details as $key => $value) { if ($value['chx'] == '1' && $value['is_normal'] == 'N') { $data_insert = array( 'order_id' => $order_header_id, 'code' => $value['id_code'], 'label' => $value['label'], 'note' => $value['value'], 'segment' => $value['table_name'], 'category' => $value['table_name'] ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); $rst[] = $data_insert; } //$this->insert_code($value['id_code'],$value['label'].' | '.$value['table_name']); } } return $errors; } function mata($id, $userid) { $errors = []; $rst = []; $sql = "SELECT * FROM fisik_template JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y' WHERE FisikTemplateIsActive = 'Y' AND FisikTemplateTableName = 'mata' ORDER BY FisikTemplateCode ASC LIMIT 1 "; $qry = $this->db_smartone->query($sql, array($id)); if (!$qry) { $prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/mata']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id])); $errors[] = "SELECT_FISIK_TEMPLATE"; } // echo $this->db_smartone->last_query(); $datas = $qry->result_array(); if ($datas && count($datas) > 0) { $order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID']; $valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true); $details = $valdata['details']; foreach ($details as $key => $value) { if ($value['chx'] == '1') { $data_insert = array( 'order_id' => $order_header_id, 'code' => $value['id_code'], 'label' => $value['label'], 'note' => $value['value'], 'segment' => 'mata', 'category' => 'mata' ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); $rst[] = $data_insert; } //$this->insert_code($value['id_code'],$value['label']." | Mata"); } } return $errors; } function lapang_pandang($id, $userid) { $errors = []; $rst = []; $sql = "SELECT * FROM fisik_template JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y' WHERE FisikTemplateIsActive = 'Y' AND FisikTemplateTableName = 'lapang_pandang' ORDER BY FisikTemplateCode ASC LIMIT 1 "; $qry = $this->db_smartone->query($sql, array($id)); if (!$qry) { $prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/lapang_pandang']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id])); $errors[] = "SELECT_FISIK_TEMPLATE"; } // echo $this->db_smartone->last_query(); $datas = $qry->result_array(); if ($datas && count($datas) > 0) { $order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID']; $valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true); $details = $valdata['details']; $value_data = $details[0]; if ($value_data['chx_x'] == '1') { $data_insert = array( 'order_id' => $order_header_id, 'code' => 'lapang_pandang_x', 'label' => $value_data['label_x'], 'note' => $value_data['value'], 'segment' => 'lapang_pandang', 'category' => 'lapang_pandang' ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); $rst[] = $data_insert; } if ($value_data['chx_y'] == '1') { $data_insert = array( 'order_id' => $order_header_id, 'code' => 'lapang_pandang_y', 'label' => $value_data['label_y'], 'note' => $value_data['value'], 'segment' => 'lapang_pandang', 'category' => 'lapang_pandang' ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); $rst[] = $data_insert; } //$this->insert_code('lapang_pandang_x','Lapang Pandang Tidak Normal'); //$this->insert_code('lapang_pandang_y','Lapang Pandang Normal'); } return $errors; } function telinga($id, $userid) { $errors = []; $rst = []; $sql = "SELECT * FROM fisik_template JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y' WHERE FisikTemplateIsActive = 'Y' AND FisikTemplateTableName = 'telinga' ORDER BY FisikTemplateCode ASC LIMIT 1 "; $qry = $this->db_smartone->query($sql, array($id)); if (!$qry) { $prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/telinga']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id])); $errors[] = "SELECT_FISIK_TEMPLATE"; } // echo $this->db_smartone->last_query(); $datas = $qry->result_array(); if ($datas && count($datas) > 0) { $order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID']; $valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true); $details = $valdata['details']; foreach ($details as $key => $value) { if ($value['chx'] == '1') { $data_insert = array( 'order_id' => $order_header_id, 'code' => $value['id_code'], 'label' => $value['label'], 'note' => $value['value'], 'segment' => 'telinga', 'category' => 'telinga' ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); $rst[] = $data_insert; } //$this->insert_code($value['id_code'],$value['label'].' | Telinga'); } } return $errors; } function hidung($id, $userid) { $errors = []; $rst = []; $sql = "SELECT * FROM fisik_template JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y' WHERE FisikTemplateIsActive = 'Y' AND FisikTemplateTableName = 'hidung' ORDER BY FisikTemplateCode ASC LIMIT 1 "; $qry = $this->db_smartone->query($sql, array($id)); if (!$qry) { $prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/hidung']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id])); $errors[] = "SELECT_FISIK_TEMPLATE"; } // echo $this->db_smartone->last_query(); $datas = $qry->result_array(); if ($datas && count($datas) > 0) { $order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID']; $valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true); $details = $valdata['details']; foreach ($details as $key => $value) { if ($value['chx'] == '1') { $data_insert = array( 'order_id' => $order_header_id, 'code' => $value['id_code'], 'label' => $value['label'], 'note' => $value['value'], 'segment' => 'hidung', 'category' => 'hidung' ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); $rst[] = $data_insert; } //$this->insert_code($value['id_code'],$value['label'].' | Hidung'); } } return $errors; } function gigi($id, $userid) { $errors = []; $rst = []; $sql = "SELECT * FROM fisik_template JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y' WHERE FisikTemplateIsActive = 'Y' AND FisikTemplateTableName = 'gigi' ORDER BY FisikTemplateCode ASC LIMIT 1 "; $qry = $this->db_smartone->query($sql, array($id)); if (!$qry) { $prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/gigi']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id])); $errors[] = "SELECT_FISIK_TEMPLATE"; } // echo $this->db_smartone->last_query(); $datas = $qry->result_array(); if ($datas && count($datas) > 0) { $order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID']; $valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true); $details = $valdata['details']; foreach ($details as $key => $value) { if ($value['chx'] == '1') { $data_insert = array( 'order_id' => $order_header_id, 'code' => $value['id_code'], 'label' => $value['label'], 'note' => $value['value'], 'segment' => 'gigi', 'category' => 'gigi' ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); $rst[] = $data_insert; } //$this->insert_code($value['id_code'],$value['label'].' | Gigi'); } } return $errors; } function mulut($id, $userid) { $errors = []; $rst = []; $sql = "SELECT * FROM fisik_template JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y' WHERE FisikTemplateIsActive = 'Y' AND FisikTemplateTableName = 'mukosa_rongga_mulut' ORDER BY FisikTemplateCode ASC LIMIT 1 "; $qry = $this->db_smartone->query($sql, array($id)); if (!$qry) { $prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/mulut']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id])); $errors[] = "SELECT_FISIK_TEMPLATE"; } //echo $this->db_smartone->last_query(); $datas = $qry->result_array(); if ($datas && count($datas) > 0) { $order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID']; $valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true); $header_details = $valdata['details']; //print_r($header_details); foreach ($header_details as $k => $v) { $details = $v['details']; foreach ($details as $key => $value) { $segment = strtolower(str_replace(" ", "_", $value['segment_name'])); if ($value['chx'] == '1') { $data_insert = array( 'order_id' => $order_header_id, 'code' => $value['id_code'], 'label' => $value['label'], 'note' => $value['value'], 'segment' => $segment, 'category' => $value['table_name'] ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); $rst[] = $data_insert; } //$this->insert_code($value['id_code'],$value['label']." | ".$segment); } } } return $errors; } function leher($id, $userid) { $errors = []; $rst = []; $sql = "SELECT * FROM fisik_template JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y' WHERE FisikTemplateIsActive = 'Y' AND FisikTemplateTableName = 'leher' ORDER BY FisikTemplateCode ASC LIMIT 1 "; $qry = $this->db_smartone->query($sql, array($id)); if (!$qry) { $prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/leher']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id])); $errors[] = "SELECT_FISIK_TEMPLATE"; } // echo $this->db_smartone->last_query(); $datas = $qry->result_array(); if ($datas && count($datas) > 0) { $order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID']; $valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true); $details = $valdata['details']; foreach ($details as $key => $value) { if ($value['chx'] == '1') { $data_insert = array( 'order_id' => $order_header_id, 'code' => $value['id_code'], 'label' => $value['label'], 'note' => $value['value'], 'segment' => 'leher', 'category' => 'leher' ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); $rst[] = $data_insert; } //$this->insert_code($value['id_code'],$value['label'].' | Leher'); } } return $errors; } function thorax($id, $userid) { $errors = []; $rst = []; $sql = "SELECT * FROM fisik_template JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y' WHERE FisikTemplateIsActive = 'Y' AND FisikTemplateTableName = 'thorax' ORDER BY FisikTemplateCode ASC LIMIT 1 "; $qry = $this->db_smartone->query($sql, array($id)); if (!$qry) { $prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/thorax']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id])); $errors[] = "SELECT_FISIK_TEMPLATE"; } // echo $this->db_smartone->last_query(); $datas = $qry->result_array(); if ($datas && count($datas) > 0) { $order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID']; $valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true); $details = $valdata['details']; foreach ($details as $key => $value) { if ($value['chx'] == '1') { $data_insert = array( 'order_id' => $order_header_id, 'code' => $value['id_code'], 'label' => $value['label'], 'note' => $value['value'], 'segment' => 'thorax', 'category' => 'thorax' ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); $rst[] = $data_insert; } //$this->insert_code($value['id_code'],$value['label'].' | Thorax'); } } return $errors; } function paru($id, $userid) { $errors = []; $rst = []; $sql = "SELECT * FROM fisik_template JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y' WHERE FisikTemplateIsActive = 'Y' AND FisikTemplateTableName = 'paru' ORDER BY FisikTemplateCode ASC LIMIT 1 "; $qry = $this->db_smartone->query($sql, array($id)); if (!$qry) { $prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/paru']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id])); $errors[] = "SELECT_FISIK_TEMPLATE"; } // echo $this->db_smartone->last_query(); $datas = $qry->result_array(); if ($datas && count($datas) > 0) { $order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID']; $valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true); $details = $valdata['details']; foreach ($details as $key => $value) { if ($value['chx'] == '1') { $data_insert = array( 'order_id' => $order_header_id, 'code' => $value['id_code'], 'label' => $value['label'], 'note' => $value['value'], 'segment' => 'paru', 'category' => 'paru' ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); $rst[] = $data_insert; } //$this->insert_code($value['id_code'],$value['label'].' | Paru'); } } return $errors; } function jantung($id, $userid) { $errors = []; $rst = []; $sql = "SELECT * FROM fisik_template JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y' WHERE FisikTemplateIsActive = 'Y' AND FisikTemplateTableName = 'jantung' ORDER BY FisikTemplateCode ASC LIMIT 1 "; $qry = $this->db_smartone->query($sql, array($id)); if (!$qry) { $prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/jantung']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id])); $errors[] = "SELECT_FISIK_TEMPLATE"; } //echo $this->db_smartone->last_query(); $datas = $qry->result_array(); if ($datas && count($datas) > 0) { $order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID']; $valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true); $header_details = $valdata['details']; //print_r($header_details); foreach ($header_details as $k => $v) { $details = $v['details']; foreach ($details as $key => $value) { $segment = strtolower(str_replace(" ", "_", str_replace("/", "", $value['segment_name']))); if ($value['chx'] == '1') { $data_insert = array( 'order_id' => $order_header_id, 'code' => $value['id_code'], 'label' => $value['label'], 'note' => $value['value'], 'segment' => $segment, 'category' => $value['table_name'] ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); $rst[] = $data_insert; } //$this->insert_code($value['id_code'],$value['label']." | ".$segment); } } } return $errors; } function perut($id, $userid) { $errors = []; $rst = []; $sql = "SELECT * FROM fisik_template JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y' WHERE FisikTemplateIsActive = 'Y' AND FisikTemplateTableName = 'perut' ORDER BY FisikTemplateCode ASC LIMIT 1 "; $qry = $this->db_smartone->query($sql, array($id)); if (!$qry) { $prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/perut']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id])); $errors[] = "SELECT_FISIK_TEMPLATE"; } //echo $this->db_smartone->last_query(); $datas = $qry->result_array(); if ($datas && count($datas) > 0) { $order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID']; $valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true); $header_details = $valdata['details']; //print_r($header_details); foreach ($header_details as $k => $v) { if ($v['name'] != 'Hernia' && $v['name'] != 'Pengukuran') { $details = $v['details']; foreach ($details as $key => $value) { $segment = strtolower(str_replace(" ", "_", $v['name'])); if ($value['chx'] == '1') { $data_insert = array( 'order_id' => $order_header_id, 'code' => $value['id_code'], 'label' => $value['label'], 'note' => $value['value'], 'segment' => $segment, 'category' => $value['table_name'] ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); $rst[] = $data_insert; } //$this->insert_code($value['id_code'],$value['label']." | ".$segment); } } if ($v['name'] == 'Hernia') { $details = $v['details']; foreach ($details as $key => $value) { if ($value['id_code'] == 'perut_13') { if ($value['chx'] == '1') { $segment = strtolower(str_replace(" ", "_", $v['name'])); $data_insert = array( 'order_id' => $order_header_id, 'code' => $value['id_code'], 'label' => $value['label'], 'note' => $value['value'], 'segment' => $segment, 'category' => $value['table_name'] ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); $rst[] = $data_insert; } //$this->insert_code($value['id_code'],$value['label'].' | Hernia '.$segment); } if ($value['id_code'] == 'perut_14') { $segment = strtolower(str_replace(" ", "_", $v['name'])); if ($value['chx'] == '1') { $child_details = $value['details']; foreach ($child_details as $kx => $vx) { if ($vx['id_code'] == 'perut_14_1') { if ($vx['chx_value'] == '1') { $data_insert = array( 'order_id' => $order_header_id, 'code' => $vx['id_code'], 'label' => $vx['label'], 'note' => '', 'segment' => $segment, 'category' => $value['table_name'] ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); $rst[] = $data_insert; } //$this->insert_code($value['id_code'],$value['label'].' | Hernia '.$segment); } if ($vx['id_code'] != 'perut_14_1') { if ($vx['chx_a_value'] == '1') { $data_insert = array( 'order_id' => $order_header_id, 'code' => $vx['id_code'] . '_' . $vx['chx_a_label'], 'label' => $vx['label'], 'note' => $vx['chx_a_label'], 'segment' => $segment, 'category' => $value['table_name'] ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); $rst[] = $data_insert; } if ($vx['chx_b_value'] == '1') { $data_insert = array( 'order_id' => $order_header_id, 'code' => $vx['id_code'] . '_' . $vx['chx_b_label'], 'label' => $vx['label'], 'note' => $vx['chx_b_label'], 'segment' => $segment, 'category' => $value['table_name'] ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); $rst[] = $data_insert; } //$this->insert_code($vx['id_code'].'_'.$vx['chx_a_label'],$value['label'].' | Hernia '.$segment); //$this->insert_code($vx['id_code'].'_'.$vx['chx_b_label'],$value['label'].' | Hernia '.$segment); } } } //$this->insert_code($value['id_code'],$value['label']); } } } if ($v['name'] == 'Hernia') { $details = $v['details']; } } } return $errors; } function sistem_integumen($id, $userid) { $errors = []; $rst = []; $sql = "SELECT * FROM fisik_template JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y' WHERE FisikTemplateIsActive = 'Y' AND FisikTemplateTableName = 'sistem_integumen' ORDER BY FisikTemplateCode ASC LIMIT 1 "; $qry = $this->db_smartone->query($sql, array($id)); if (!$qry) { $prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/sistem_integumen']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id])); $errors[] = "SELECT_FISIK_TEMPLATE"; } //echo $this->db_smartone->last_query(); $datas = $qry->result_array(); if ($datas && count($datas) > 0) { $order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID']; $valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true); $header_details = $valdata['details']; //print_r($header_details); foreach ($header_details as $k => $v) { $details = $v['details']; foreach ($details as $key => $value) { $segment = strtolower(str_replace(" ", "_", $value['segment_name'])); if ($value['chx'] == '1') { $data_insert = array( 'order_id' => $order_header_id, 'code' => $value['id_code'], 'label' => $value['label'], 'note' => $value['value'], 'segment' => $segment, 'category' => $value['table_name'] ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); $rst[] = $data_insert; } //$this->insert_code($value['id_code'],$value['label']." | ".$segment); } } } return $errors; } function genitourinaria($id, $userid) { $errors = []; $rst = []; $sql = "SELECT * FROM fisik_template JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y' WHERE FisikTemplateIsActive = 'Y' AND FisikTemplateTableName = 'genitourinaria' ORDER BY FisikTemplateCode ASC LIMIT 1 "; $qry = $this->db_smartone->query($sql, array($id)); if (!$qry) { $prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/genitourinaria']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id])); $errors[] = "SELECT_FISIK_TEMPLATE"; } // echo $this->db_smartone->last_query(); $datas = $qry->result_array(); if ($datas && count($datas) > 0) { $order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID']; $valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true); $details = $valdata['details']; foreach ($details as $key => $value) { if ($value['chx'] == '1') { $data_insert = array( 'order_id' => $order_header_id, 'code' => $value['id_code'], 'label' => $value['label'], 'note' => $value['value'], 'segment' => 'genitourinaria', 'category' => 'genitourinaria' ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); $rst[] = $data_insert; } //$this->insert_code($value['id_code'],$value['label'].' Genitourinaria'); } } return $errors; } function anggota_gerak($id, $userid) { $errors = []; $rst = []; $sql = "SELECT * FROM fisik_template JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y' WHERE FisikTemplateIsActive = 'Y' AND FisikTemplateTableName = 'anggota_gerak' ORDER BY FisikTemplateCode ASC LIMIT 1 "; $qry = $this->db_smartone->query($sql, array($id)); if (!$qry) { $prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/anggota_gerak']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id])); $errors[] = "SELECT_FISIK_TEMPLATE"; } //echo $this->db_smartone->last_query(); $datas = $qry->result_array(); if ($datas && count($datas) > 0) { $order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID']; $valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true); $header_details = $valdata['details']; //print_r($header_details); foreach ($header_details as $k => $v) { $details = $v['details']; foreach ($details as $key => $value) { if ($value['chx'] == '1') { $segment = strtolower(str_replace(" ", "_", str_replace("/", "", $value['segment_name']))); $data_insert = array( 'order_id' => $order_header_id, 'code' => $value['id_code'], 'label' => $value['label'], 'note' => $value['value'], 'segment' => $segment, 'category' => $value['table_name'] ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); $rst[] = $data_insert; } //$this->insert_code($value['id_code'],$value['label']." | ".$segment); } } } return $errors; } function sistem_persyarafan($id, $userid) { $errors = []; $rst = []; $sql = "SELECT * FROM fisik_template JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y' WHERE FisikTemplateIsActive = 'Y' AND FisikTemplateTableName = 'sistem_persyarafan' ORDER BY FisikTemplateCode ASC LIMIT 1 "; $qry = $this->db_smartone->query($sql, array($id)); if (!$qry) { $prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/sistem_persyarafan']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id])); $errors[] = "SELECT_FISIK_TEMPLATE"; } //echo $this->db_smartone->last_query(); $datas = $qry->result_array(); if ($datas && count($datas) > 0) { $order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID']; $valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true); $header_details = $valdata['details']; //print_r($header_details); foreach ($header_details as $k => $v) { $details = $v['details']; foreach ($details as $key => $value) { if ($value['chx'] == '1') { $segment = strtolower(str_replace(" ", "_", str_replace("&", "", $value['segment_name']))); $data_insert = array( 'order_id' => $order_header_id, 'code' => $value['id_code'], 'label' => $value['label'], 'note' => $value['value'], 'segment' => $segment, 'category' => $value['table_name'] ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); $rst[] = $data_insert; } //$this->insert_code($value['id_code'],$value['label']." | ".$segment); } } } return $errors; } function smell_test($id, $userid) { $errors = []; $rst = []; $sql = "SELECT * FROM fisik_template JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y' WHERE FisikTemplateIsActive = 'Y' AND FisikTemplateTableName = 'smell_test' ORDER BY FisikTemplateCode ASC LIMIT 1 "; $qry = $this->db_smartone->query($sql, array($id)); if (!$qry) { $prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/smell_test']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id])); $errors[] = "SELECT_FISIK_TEMPLATE"; } //echo $this->db_smartone->last_query(); $datas = $qry->result_array(); if ($datas && count($datas) > 0) { $order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID']; $valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true); $header_details = $valdata['details']; //print_r($header_details); foreach ($header_details as $k => $v) { $details = $v['details']; foreach ($details as $key => $value) { if ($value['chx'] == '1') { $segment = strtolower(str_replace(" ", "_", $value['segment_name'])); $data_insert = array( 'order_id' => $order_header_id, 'code' => $value['id_code'], 'label' => $value['label'], 'note' => $value['value'], 'segment' => $segment, 'category' => $value['table_name'] ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); $rst[] = $data_insert; } //$this->insert_code($value['id_code'],$value['label']." | ".$segment); } } } return $errors; } function low_back_pain_screening_test($id, $userid) { $errors = []; $rst = []; $sql = "SELECT * FROM fisik_template JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y' WHERE FisikTemplateIsActive = 'Y' AND FisikTemplateTableName = 'low_back_pain_screening_test' ORDER BY FisikTemplateCode ASC LIMIT 1 "; $qry = $this->db_smartone->query($sql, array($id)); if (!$qry) { $prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/low_back_pain_screening_test']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id])); $errors[] = "SELECT_FISIK_TEMPLATE"; } //echo $this->db_smartone->last_query(); $datas = $qry->result_array(); if ($datas && count($datas) > 0) { $order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID']; $valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true); $header_details = $valdata['details']; //print_r($header_details); foreach ($header_details as $k => $v) { $details = $v['details']; foreach ($details as $key => $value) { if ($value['chx'] == '1') { $segment = strtolower(str_replace(" ", "_", $value['segment_name'])); $data_insert = array( 'order_id' => $order_header_id, 'code' => $value['id_code'], 'label' => $value['label'], 'note' => $value['value'], 'segment' => $segment, 'category' => $value['table_name'] ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); $rst[] = $data_insert; } //$this->insert_code($value['id_code'],$value['label']." | ".$segment); } } } return $errors; } function k3($type, $id, $userid) { $errors = []; $rst = []; $sql = "SELECT * FROM fisik_template JOIN so_resultentry_fisik_umum ON So_ResultEntryFisikUmumFisikTemplateID = FisikTemplateID AND So_ResultEntryFisikUmumT_OrderHeaderID = ? AND So_ResultEntryFisikUmumIsActive = 'Y' WHERE FisikTemplateIsActive = 'Y' AND `FisikTemplateType` = 'k3' AND FisikTemplateTableName = ? ORDER BY FisikTemplateCode ASC LIMIT 1 "; $qry = $this->db_smartone->query($sql, array($id, $type)); if (!$qry) { $prm_log = ['SELECT_FISIK_TEMPLATE', 'genkelainan/k3']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['id' => $id])); $errors[] = "SELECT_FISIK_TEMPLATE"; } // echo $this->db_smartone->last_query(); $datas = $qry->result_array(); if ($datas && count($datas) > 0) { $order_header_id = $datas[0]['So_ResultEntryFisikUmumT_OrderHeaderID']; $valdata = json_decode($datas[0]['So_ResultEntryFisikUmumDetails'], true); $details = $valdata['details']; foreach ($details as $key => $value) { if ($value['chx'] == '1') { $data_insert = array( 'order_id' => $order_header_id, 'code' => $value['id_code'], 'label' => $value['label'], 'note' => '', 'segment' => $type, 'category' => $type ); $errors = array_merge($errors, $this->insert_data_etl($data_insert, $userid)); $rst[] = $data_insert; } //$this->insert_code($value['id_code'],$value['label'].' | '.$type); } } return $errors; } function loop_k3($id, $userid) { $errors = []; $rspn = []; $arr = ['faktor_fisik', 'faktor_kimia', 'faktor_biologi', 'faktor_ergonomi', 'faktor_psikologi']; foreach ($arr as $key => $value) { $rtn = $this->k3($value, $id, $userid); if (count($rtn) > 0) $errors = array_merge($errors, $rtn); } return $errors; } function generate_summaries($orderID, $userID, $debugID = 0) { $errors = []; $sql = "UPDATE t_kelainan_fisik SET T_KelainanFiskIsActive = 'N', T_KelainanFiskDeletedUserID = ? , T_KelainanFiskDeleted = NOW() WHERE T_KelainanFiskT_OrderHeaderID = ? AND T_KelainanFiskIsActive = 'Y'"; $query = $this->db_smartone->query($sql, [ $userID, $orderID ]); if (!$query) { $prm_log = ['UPDATE_T_KELAINAN_FISIK', 'genkelainan/generate_summaries']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['orderID' => $orderID])); $errors[] = "UPDATE_T_KELAINAN_FISIK"; } $kelainanrst = []; $sql = "SELECT * FROM mcu_fisiksummary JOIN mcu_kelainan ON Mcu_kelainanID = Mcu_FisikSummaryMcu_KelainanID WHERE Mcu_FisikSummaryIsActive = 'Y'"; $query = $this->db_smartone->query($sql); if (!$query) { $prm_log = ['SELECT_MCU_FISIKSUMMARY', 'genkelainan/generate_summaries']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['orderID' => $orderID])); $errors[] = "SELECT_MCU_FISIKSUMMARY"; } $rumus_summaries = $query->result_array(); foreach ($rumus_summaries as $key => $value) { $results = []; $sql = "SELECT * FROM mcu_fisiksummarydetail WHERE Mcu_FisikSummaryDetailMcu_FisikSummaryID = ? AND Mcu_FisikSummaryDetailIsActive = 'Y'"; $query = $this->db_smartone->query($sql, [$value['Mcu_FisikSummaryID']]); if (!$query) { $prm_log = ['SELECT_MCU_FISIKSUMMARYDETAIL', 'genkelainan/generate_summaries']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['orderID' => $orderID])); $errors[] = "SELECT_MCU_FISIKSUMMARYDETAIL"; } $details = $query->result_array(); foreach ($details as $k => $v) { if ($v['Mcu_FisikSummaryDetailType'] == 'VK') { $sql = "SELECT * FROM mcu_fisikvalue WHERE Mcu_FisikValueT_OrderHeaderID = ? AND Mcu_FisikValueIsActive = 'Y' AND Mcu_FisikValueCode = ? AND Mcu_FisikValueNote = ?"; $query = $this->db_smartone->query($sql, [$orderID, $v['Mcu_FisikSummaryDetailCode'], $value['Mcu_KelainanName']]); if (!$query) { $prm_log = ['SELECT_MCU_FISIKVALUE', 'genkelainan/generate_summaries']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['orderID' => $orderID])); $errors[] = "SELECT_MCU_FISIKVALUE"; } $exist_rows = $query->result_array(); $return_x = false; if (count($exist_rows) > 0) { $return_x = true; } $results[] = $return_x; } if ($v['Mcu_FisikSummaryDetailType'] == 'V') { $sql = "SELECT * FROM mcu_fisikvalue JOIN mcu_fisiksummarydetail ON Mcu_FisikSummaryDetailIsActive = 'Y' AND Mcu_FisikSummaryDetailCode = Mcu_FisikValueCode AND Mcu_FisikValueCode = ? AND Mcu_FisikSummaryDetailType = 'V' JOIN mcu_fisiksummary ON Mcu_FisikSummaryDetailMcu_FisikSummaryID = Mcu_FisikSummaryID AND Mcu_FisikSummaryMcu_KelainanID = ? WHERE Mcu_FisikValueT_OrderHeaderID = ? AND Mcu_FisikValueIsActive = 'Y' AND Mcu_FisikSummaryDetailValue REGEXP CONCAT('(^|, )', TRIM(Mcu_FisikValueNote), '(,|$)')"; $query = $this->db_smartone->query($sql, [$v['Mcu_FisikSummaryDetailCode'], $value['Mcu_KelainanID'], $orderID]); if (!$query) { $prm_log = ['SELECT_MCU_FISIKVALUE', 'genkelainan/generate_summaries']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['orderID' => $orderID])); $errors[] = "SELECT_MCU_FISIKVALUE"; } if ($value['Mcu_FisikSummaryID'] == $debugID) { echo $this->db_smartone->last_query(); } $exist_rows = $query->result_array(); $return_x = false; if (count($exist_rows) > 0) { $return_x = true; } $results[] = $return_x; } if ($v['Mcu_FisikSummaryDetailType'] == 'C') { $sql = "SELECT * FROM mcu_fisikvalue WHERE Mcu_FisikValueT_OrderHeaderID = ? AND Mcu_FisikValueIsActive = 'Y' AND Mcu_FisikValueCode = ?"; $query = $this->db_smartone->query($sql, [$orderID, $v['Mcu_FisikSummaryDetailCode']]); if (!$query) { $prm_log = ['SELECT_MCU_FISIKVALUE', 'genkelainan/generate_summaries']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['orderID' => $orderID])); $errors[] = "SELECT_MCU_FISIKVALUE"; } if ($value['Mcu_FisikSummaryID'] == $debugID) { echo $this->db_smartone->last_query(); } $exist_rows = $query->result_array(); $return_x = false; if (count($exist_rows) > 0) { $return_x = true; } $results[] = $return_x; } } $is_kelainan = false; if ($value['Mcu_FisikSummaryType'] == "AND") { if (!in_array(false, $results)) $is_kelainan = true; } if ($value['Mcu_FisikSummaryType'] == "OR") { if (in_array(true, $results)) $is_kelainan = true; } if ($is_kelainan) { $sql = "INSERT INTO t_kelainan_fisik( T_KelainanFiskT_OrderHeaderID, T_KelainanFiskMcu_KelainanID, T_KelainanFiskMcu_FisikSummaryID, T_KelainanFiskCreatedUserID, T_KelainanFiskCreated ) VALUES(?,?,?,?,NOW())"; $query = $this->db_smartone->query($sql, [ $orderID, $value['Mcu_FisikSummaryMcu_KelainanID'], $value['Mcu_FisikSummaryID'], $userID ]); if (!$query) { $prm_log = ['INSERT_T_KELAINAN_FISIK', 'genkelainan/generate_summaries']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['orderID' => $orderID])); $errors[] = "INSERT_T_KELAINAN_FISIK"; } $kelainanrst[] = array( 'id' => $value['Mcu_FisikSummaryMcu_KelainanID'], 'name' => $value['Mcu_KelainanName'] ); } } } function generateKesimpulanSaran($id, $debug = 'N') { //get kelainan nonlab $sql = "SELECT T_KelainanNonLabID AS kelainanNonlabID, T_KelainanNonLabT_OrderHeaderID as orderID, Mcu_KelainanID as kelainanID, T_KelainanNonLabMcu_SummaryNonlabID As summaryID, Mcu_KelainanName as kelainanName, fn_get_translate_word_separator_comma(Mcu_KelainanName,2) as kelainanNameEng, 'NONLAB' as type FROM t_kelainan_nonlab JOIN mcu_summarynonlab ON T_KelainanNonLabMcu_SummaryNonlabID = Mcu_SummaryNonlabID AND T_KelainanNonLabT_OrderHeaderID = ? AND T_KelainanNonLabIsActive = 'Y' JOIN mcu_kelainan ON Mcu_SummaryNonlabMcu_KelainanID = Mcu_KelainanID AND Mcu_KelainanIsActive = 'Y' GROUP BY Mcu_KelainanID "; $query = $this->db_smartone->query($sql, [$id]); if (!$query) { $prm_log = ['SELECT_T_KELAINAN_NONLAB', 'genkelainan/generate_summaries']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['orderID' => $orderID])); $errors[] = "SELECT_T_KELAINAN_NONLAB"; } $kelainanNonlab = $query->result_array(); //get kelainan lab $sql = "SELECT T_KelainanLabID as kelainanLabID, T_KelainanLabT_OrderHeaderID as orderID, Mcu_KelainanID as kelainanID, Mcu_SummaryLabID as summaryID, Mcu_KelainanName as kelainanName, fn_get_translate_word_separator_comma(Mcu_KelainanName,2) as kelainanNameEng, 'LAB' as type FROM t_kelainan_lab JOIN mcu_summarylab ON T_KelainanLabMcu_SummaryLabID = Mcu_SummaryLabID AND Mcu_SummaryLabIsActive = 'Y' AND T_KelainanLabT_OrderHeaderID = ? JOIN mcu_kelainan ON Mcu_summaryLabMcu_KelainanID = Mcu_KelainanID AND Mcu_KelainanIsActive = 'Y' AND T_KelainanLabIsActive = 'Y' GROUP BY Mcu_KelainanID "; $query = $this->db_smartone->query($sql, [$id]); if (!$query) { $prm_log = ['SELECT_T_KELAINAN_LAB', 'genkelainan/generate_summaries']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['orderID' => $orderID])); $errors[] = "SELECT_T_KELAINAN_LAB"; } $kelainanLab = $query->result_array(); //get kelainan fisik $sql = "SELECT T_KelainanFiskID as kelainanFisikID, T_KelainanFiskT_OrderHeaderID orderID, Mcu_FisikSummaryID summaryID, Mcu_KelainanID as kelainanID , Mcu_KelainanName as kelainanName, fn_get_translate_word_separator_comma(Mcu_KelainanName,2) as kelainanNameEng, 'FISIK' as type FROM t_kelainan_fisik JOIN mcu_fisiksummary ON T_KelainanFiskMcu_FisikSummaryID = Mcu_FisikSummaryID AND Mcu_FisikSummaryIsActive = 'Y' AND T_KelainanFiskT_OrderHeaderID = ? AND T_KelainanFiskIsActive = 'Y' JOIN mcu_kelainan ON Mcu_FisikSummaryMcu_KelainanID = Mcu_KelainanID AND Mcu_KelainanIsActive = 'Y' GROUP BY Mcu_KelainanID "; $query = $this->db_smartone->query($sql, [$id]); if (!$query) { $prm_log = ['SELECT_T_KELAINAN_FISIK', 'genkelainan/generate_summaries']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['orderID' => $orderID])); $errors[] = "SELECT_T_KELAINAN_FISIK"; } $kelainanFisik = $query->result_array(); $arrMcuKelainanID = array(); $arrMcuKelainanIDEng = array(); $kesimpulan = ""; $counterKesimpulan = 1; $conclusion = ""; $counterConclusion = 1; for ($i = 0; $i < count($kelainanNonlab); $i++) { $kesimpulan .= "- " . $kelainanNonlab[$i]['kelainanName'] . "\n"; $counterKesimpulan += 1; array_push($arrMcuKelainanID, $kelainanNonlab[$i]['kelainanID']); $conclusion .= "- " . $kelainanNonlab[$i]['kelainanNameEng'] . "\n"; $counterConclusion += 1; array_push($arrMcuKelainanIDEng, $kelainanNonlab[$i]['kelainanNameEng']); } for ($i = 0; $i < count($kelainanLab); $i++) { $kesimpulan .= "- " . $kelainanLab[$i]['kelainanName'] . "\n"; $counterKesimpulan += 1; array_push($arrMcuKelainanID, $kelainanLab[$i]['kelainanID']); $conclusion .= "- " . $kelainanLab[$i]['kelainanNameEng'] . "\n"; $counterConclusion += 1; array_push($arrMcuKelainanIDEng, $kelainanLab[$i]['kelainanNameEng']); } for ($i = 0; $i < count($kelainanFisik); $i++) { $kesimpulan .= "- " . $kelainanFisik[$i]['kelainanName'] . "\n"; $counterKesimpulan += 1; array_push($arrMcuKelainanID, $kelainanFisik[$i]['kelainanID']); $conclusion .= "- " . $kelainanFisik[$i]['kelainanNameEng'] . "\n"; $counterConclusion += 1; array_push($arrMcuKelainanIDEng, $kelainanFisik[$i]['kelainanNameEng']); } //get kelainan saran nonlab $sql = "SELECT Nat_AdvicekelainanID adviceID, Nat_AdvicekelainanMcu_KelainanID mcuKelainanID, Nat_AdviceIna saranIna, IF(Nat_AdviceEng = '',Nat_AdviceIna, Nat_AdviceEng) saranEng, fn_get_translate_word_separator_comma(Nat_AdviceIna,2) as translate_eng FROM nat_advice_kelainan JOIN nat_advice ON Nat_AdvicekelainanNat_AdviceID = Nat_AdviceID AND Nat_AdvicekelainanMcu_KelainanID IN ? AND Nat_AdviceIsActive = 'Y' AND Nat_AdvicekelainanIsActive = 'Y' group by Nat_AdviceIna "; $query = $this->db_smartone->query($sql, [$arrMcuKelainanID]); //echo $this->db_smartone->last_query(); if (!$query) { $prm_log = ['SELECT_NAT_ADVICE_KELAINAN', 'genkelainan/generate_summaries']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode(['orderID' => $orderID])); $errors[] = "SELECT_NAT_ADVICE_KELAINAN"; } $arrSaran = $query->result_array(); if (count($arrSaran) > 0) { foreach ($arrSaran as $key => $value) { $adv = $value['saranEng']; if (trim($adv) == '' || $adv == $value['saranIna']) { $adv = $value['translate_eng']; } $arrSaran[$key]['saranEng'] = $adv; } } $saran = ""; $counterSaran = 1; $advice = ""; $counterAdvice = 1; for ($i = 0; $i < count($arrSaran); $i++) { $saran .= "- " . $arrSaran[$i]['saranIna'] . "\n"; $counterSaran += 1; $advice .= "- " . $arrSaran[$i]['saranEng'] . "\n"; $counterAdvice += 1; } if ($debug == 'Y') { $this->sys_ok(array( "kesimpulan" => $kesimpulan, "saran" => $saran, "advice" => $advice, "conclusion" => $conclusion, )); } else { return array( "kesimpulan" => $kesimpulan, "saran" => $saran, "advice" => $advice, "conclusion" => $conclusion, ); } } function generate_fitness_category($orderID) { $sql = " SELECT 'lab' as type, T_KelainanLabID, Mcu_KelainanName, fn_get_translate_word_separator_comma(Mcu_KelainanName,2) as Mcu_KelainanNameEng, Mcu_FitnessCategoryID, Mcu_FitnessCategoryName, Mcu_FitnessCategoryEng, Mcu_FitnessCategoryLevel, Nat_TestName FROM t_kelainan_lab JOIN mcu_summarylab ON T_KelainanLabMcu_SummaryLabID = Mcu_SummaryLabID JOIN mcu_kelainan ON Mcu_summaryLabMcu_KelainanID = Mcu_KelainanID JOIN mcu_fitness_category ON Mcu_SummaryLabMcu_FitnessCategoryID = Mcu_FitnessCategoryID JOIN nat_test ON Mcu_SummaryLabNat_TestID = Nat_TestID WHERE T_KelainanLabT_OrderHeaderID = ? AND T_KelainanLabIsActive= 'Y' UNION SELECT 'nonlab' as type, T_KelainanNonLabID, Mcu_KelainanName, fn_get_translate_word_separator_comma(Mcu_KelainanName,2) as Mcu_KelainanNameEng, Mcu_FitnessCategoryID, Mcu_FitnessCategoryName, Mcu_FitnessCategoryEng, Mcu_FitnessCategoryLevel, Nat_TestName FROM t_kelainan_nonlab JOIN mcu_summarynonlab ON T_KelainanNonLabMcu_SummaryNonlabID = Mcu_SummaryNonlabID JOIN mcu_kelainan ON Mcu_SummaryNonlabMcu_KelainanID = Mcu_KelainanID JOIN mcu_fitness_category ON Mcu_SummaryNonlabMcu_FitnessCategoryID = Mcu_FitnessCategoryID JOIN nat_test ON Mcu_SummaryNonlabNat_TestID = Nat_TestID WHERE T_KelainanNonLabT_OrderHeaderID = ? AND T_KelainanNonLabIsActive= 'Y' UNION SELECT 'fisik' as type, T_KelainanFiskID, Mcu_KelainanName, fn_get_translate_word_separator_comma(Mcu_KelainanName,2) as Mcu_KelainanNameEng, Mcu_FitnessCategoryID, Mcu_FitnessCategoryName, Mcu_FitnessCategoryEng, Mcu_FitnessCategoryLevel, GROUP_CONCAT(CONCAT(Mcu_FisikValueLabel,'|',Mcu_FisikValueSegment,'|',Mcu_FisikValueCategory)) as Nat_TestName FROM t_kelainan_fisik JOIN mcu_fisiksummary ON T_KelainanFiskMcu_FisikSummaryID = Mcu_FisikSummaryID JOIN mcu_kelainan ON Mcu_FisikSummaryMcu_KelainanID = Mcu_KelainanID JOIN mcu_fitness_category ON Mcu_FisikSummaryMcu_FitnessCategoryID = Mcu_FitnessCategoryID JOIN mcu_fisiksummarydetail ON Mcu_FisikSummaryDetailMcu_FisikSummaryID = Mcu_FisikSummaryID AND Mcu_FisikSummaryDetailIsActive = 'Y' JOIN mcu_fisikvalue ON Mcu_FisikValueT_OrderHeaderID = T_KelainanFiskT_OrderHeaderID AND Mcu_FisikSummaryDetailCode = Mcu_FisikValueCode AND Mcu_FisikValueIsActive = 'Y' WHERE T_KelainanFiskT_OrderHeaderID = ? AND T_KelainanFiskIsActive = 'Y' GROUP BY T_KelainanFiskID"; $query = $this->db_smartone->query($sql, array($orderID, $orderID, $orderID)); //echo $this->db_smartone->last_query(); $rtn = $query->result_array(); $status = array("id" => "1", "name" => "BAIK", "name_eng" => "FIT FOR WORK", "level" => "1"); if (count($rtn) > 0) { $max = 0; foreach ($rtn as $key => $value) { if (intval($value['Mcu_FitnessCategoryLevel']) > $max) { $max = intval($value['Mcu_FitnessCategoryLevel']); $status = array("id" => $value['Mcu_FitnessCategoryID'], "name" => $value['Mcu_FitnessCategoryName'], "name_eng" => $value['Mcu_FitnessCategoryEng'], "level" => $value['Mcu_FitnessCategoryLevel']); } } } return array("status" => $status, "data" => $rtn); } function translate_word($word, $langid = 1) { if ($langid == 1) { return $word; } else { $sql = "SELECT * FROM translate_word WHERE Translate_WordIsActive = 'Y' AND Translate_WordFrom = '{$word}'"; //echo $sql; $qry = $this->db_smartone->query($sql); if (!$qry) { return $word; } $rows = $qry->result_array(); if (count($rows) > 0) { return $rows[0]["Translate_WordTo"]; } else { return $word; } } } function translate_multiline_text($text, $langid = 1) { // Split the text into lines $lines = explode("\n", $text); // Translate each line $translated_lines = array_map(function ($line) use ($langid) { // Remove the leading "- " and translate the rest $trimmed_line = ltrim($line, "- "); return "- " . $this->translate_sentence($trimmed_line, $langid); }, $lines); // Join the translated lines back into a multiline string return implode("\n", $translated_lines); } function translate_sentence($sentence, $langid = 1) { // Split the sentence into words $words = preg_split('/[\s-]+/', $sentence); // Translate each word $translated_words = array_map(function ($word) use ($langid) { return $this->translate_word($word, $langid); }, $words); // Join the translated words back into a sentence return implode(' ', $translated_words); } function insert_data_etl($data, $userid) { $errors = []; if ($data) { /*$sql = "UPDATE mcu_fisikvalue SET Mcu_FisikValueIsActive = 'N', Mcu_FisikValueLastUpdated = NOW() , Mcu_FisikValueLastUpdatedUserID = ? WHERE Mcu_FisikValueT_OrderHeaderID = ? AND Mcu_FisikValueCode = ? AND Mcu_FisikValueIsActive = 'Y'"; $qry = $this->db_smartone->query($sql,array($userid,$data['order_id'],$data['code'])); if (! $qry) { return false; }*/ $sql = "SELECT COUNT(*) as xcount, Mcu_FisikValueID as id FROM mcu_fisikvalue WHERE Mcu_FisikValueT_OrderHeaderID = ? AND Mcu_FisikValueCode = ? LIMIT 1 "; $qry = $this->db_smartone->query($sql, array($data['order_id'], $data['code'])); if (!$qry) { $prm_log = ['SELECT_MCU_FISIKVALUE', 'genkelainan/insert_data_etl']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode($data)); $errors[] = "SELECT_MCU_FISIKVALUE"; } //echo $this->db_smartone->last_query(); //print_r($data); //echo $data['code']; /*if($data['code'] == 'bmi_classification_asia_pacific'){ echo $this->db_smartone->last_query(); }*/ $exist_dt = $qry->row_array(); /*if($data['code'] == 'bmi_classification_asia_pacific'){ print_r($exist_dt); }*/ if ($exist_dt['xcount'] > 0) { $sql = "UPDATE mcu_fisikvalue SET Mcu_FisikValueIsActive = 'Y', Mcu_FisikValueLastUpdated = NOW() , Mcu_FisikValueLastUpdatedUserID = ?, Mcu_FisikValueLabel = ?, Mcu_FisikValueNote = ?, Mcu_FisikValueSegment = ?, Mcu_FisikValueCategory = ? WHERE Mcu_FisikValueID = ? "; $qry = $this->db_smartone->query($sql, array($userid, $data['label'], $data['note'], $data['segment'], $data['category'], $exist_dt['id'])); if (!$qry) { $prm_log = ['UPDATE_MCU_FISIKVALUE', 'genkelainan/insert_data_etl']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode($data)); $errors[] = "UPDATE_MCU_FISIKVALUE"; } } else { $sql = "INSERT INTO mcu_fisikvalue ( `Mcu_FisikValueT_OrderHeaderID`, `Mcu_FisikValueCode`, `Mcu_FisikValueLabel`, `Mcu_FisikValueNote`, `Mcu_FisikValueSegment`, `Mcu_FisikValueCategory`, `Mcu_FisikValueCreated`, `Mcu_FisikValueCreatedUserID` ) VALUES(?,?,?,?,?,?,NOW(),?)"; $qry = $this->db_smartone->query($sql, array( $data['order_id'], $data['code'], $data['label'], $data['note'], $data['segment'], $data['category'], $userid )); if (!$qry) { $prm_log = ['INSERT_MCU_FISIKVALUE', 'genkelainan/insert_data_etl']; $xsql = $this->db_smartone->last_query(); $log_error = $this->insert_log_error($xsql, $prm_log, json_encode($data)); $errors[] = "INSERT_MCU_FISIKVALUE"; } } } return $errors; } function insert_log_error($log_sql, $params, $data = '') { // Membersihkan SQL dari \r\n dan whitespace berlebih //$clean_log_sql = trim(str_replace(["\r\n", "\r", "\n"], ' ', $log_sql)); $sql = "INSERT INTO one_lab_log.error_log( ErrorLogCode, ErrorLogName, ErrorLogDescription, ErrorLogData, ErrorLogOrderCreated ) VALUES( ?,?,?,?,NOW() )"; $query = $this->db_smartone->query($sql, [$params[0], $params[1], $log_sql, json_encode($data)]); // echo $this->db_log->last_query(); if (!$query) { return false; } return true; } }