db = $this->load->database("regional", true); // string database $this->db_str_doctor = 'one_doctor'; $this->startVt = chr(0x0b); $this->stopFs = chr(0x1c); $this->cr = chr(0x0d); } public function getRegionalIPAddress() { $sql_get = "SELECT S_SystemIPAddressRegional FROM one.conf_systems WHERE S_SystemsIsActive = 'Y'"; $qry = $this->db->query($sql_get); if(!$qry){ $this->db->trans_rollback(); $this->sys_error_db("get ip regional failed", $this->db); exit; } $data = $qry->result_array(); return $data[0]['S_SystemIPAddressRegional']; } // api // get historical function get_history($id) { // cek dulu T_OrderHeaderAddOnReadyPrint harus Y $data = []; // $sql_cek_validation_print = "select T_OrderHeaderAddOnValidationDone, T_OrderHeaderAddOnReadyPrint, // T_OrderHeaderAddOnT_OrderHeaderID // from t_orderheaderaddon // where T_OrderHeaderAddOnT_OrderHeaderID = ? // AND T_OrderHeaderAddOnReadyPrint = 'Y'"; $sql_cek_validation_print = "select T_OrderHeaderAddOnT_OrderHeaderID as xid from t_orderheaderaddon where T_OrderHeaderAddOnT_OrderHeaderID = ? AND ( T_OrderHeaderAddOnValidationDone = 'Y' OR T_OrderHeaderAddOnValidationDone = 'P' ) UNION select T_OrderHeaderID as xid from t_orderheader join t_orderdetail ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND T_OrderDetailIsActive = 'Y' AND T_OrderHeaderID = ? AND T_OrderDetailValidation = 'Y'"; $query_validation_print = $this->db->query($sql_cek_validation_print, [ $id, $id ]); if(!$query_validation_print){ $this->db->trans_rollback(); $this->sys_error_db("get validation failed", $this->db); exit; } $rows_validation = $query_validation_print->result_array(); if(count($rows_validation) == 0){ // $this->db->trans_rollback(); // $this->sys_error('Tidak ada data'); // exit; return $data; } else { $sql_get_patient_doktor = "SELECT T_OrderHeaderM_PatientID, T_OrderHeaderSenderM_DoctorID FROM t_orderheader WHERE T_OrderHeaderIsActive = 'Y' AND T_OrderHeaderID = ?"; $query_patient_doktor = $this->db->query($sql_get_patient_doktor, [ $id ]); if(!$query_patient_doktor){ $this->db->trans_rollback(); $this->sys_error_db("get t_order failed", $this->db); exit; } $rows_patient_doktor = $query_patient_doktor->result_array(); if(count($rows_patient_doktor) == 0){ $this->db->trans_rollback(); $this->sys_error('Order Tidak Ketemu'); exit; } $sql_hist = " select IFNULL(T_OrderHeaderDate,'') as T_OrderHeaderDate, IFNULL(T_OrderDetailT_TestID,'') as T_OrderDetailT_TestID, IFNULL(T_OrderDetailResult,'') as T_OrderDetailResult from t_orderheader join t_orderdetail ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID WHERE T_OrderHeaderIsActive = 'Y' AND T_OrderHeaderM_PatientID = ? AND T_OrderHeaderSenderM_DoctorID = ? AND T_OrderHeaderID <= ?"; $query_hist = $this->db->query($sql_hist, [ $rows_patient_doktor[0]['T_OrderHeaderM_PatientID'], $rows_patient_doktor[0]['T_OrderHeaderSenderM_DoctorID'], $id ]); if(!$query_hist){ $this->db->trans_rollback(); $this->sys_error_db("get t_order failed", $this->db); exit; } $rows_chart = $query_hist->result_array(); if(count($rows_chart) == 0){ $this->db->trans_rollback(); $this->sys_error('History Tidak Ada'); exit; } foreach ($rows_chart as $elem) { if(!empty($elem['T_OrderDetailResult'])){ $data[$elem['T_OrderDetailT_TestID']][] = [ "date" => $elem['T_OrderHeaderDate'] , "value" => $elem['T_OrderDetailResult'] ]; } } // $data = array_values($data); // print_r($data); return $data; // echo json_encode( // array( // "status"=>"OK", // "data"=> $data, // ), // ); } } function get_historyv2($id) { // cek dulu T_OrderHeaderAddOnReadyPrint harus Y $data = []; // $sql_cek_validation_print = "select T_OrderHeaderAddOnValidationDone, T_OrderHeaderAddOnReadyPrint, // T_OrderHeaderAddOnT_OrderHeaderID // from t_orderheaderaddon // where T_OrderHeaderAddOnT_OrderHeaderID = ? // AND T_OrderHeaderAddOnReadyPrint = 'Y'"; $sql_cek_validation_print = "select T_OrderHeaderAddOnT_OrderHeaderID as xid from t_orderheaderaddon where T_OrderHeaderAddOnT_OrderHeaderID = ? AND ( T_OrderHeaderAddOnValidationDone = 'Y' OR T_OrderHeaderAddOnValidationDone = 'P' ) UNION select T_OrderHeaderID as xid from t_orderheader join t_orderdetail ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND T_OrderDetailIsActive = 'Y' AND T_OrderHeaderID = ? AND T_OrderDetailValidation = 'Y'"; $query_validation_print = $this->db->query($sql_cek_validation_print, [ $id, $id ]); if(!$query_validation_print){ $this->db->trans_rollback(); $this->sys_error_db("get validation failed", $this->db); exit; } $rows_validation = $query_validation_print->result_array(); if(count($rows_validation) == 0){ // $this->db->trans_rollback(); // $this->sys_error('Tidak ada data'); // exit; return $data; } else { $sql_get_patient_doktor = "SELECT T_OrderHeaderM_PatientID, T_OrderHeaderSenderM_DoctorID FROM t_orderheader WHERE T_OrderHeaderIsActive = 'Y' AND T_OrderHeaderID = ?"; $query_patient_doktor = $this->db->query($sql_get_patient_doktor, [ $id ]); if(!$query_patient_doktor){ $this->db->trans_rollback(); $this->sys_error_db("get t_order failed", $this->db); exit; } $rows_patient_doktor = $query_patient_doktor->result_array(); if(count($rows_patient_doktor) == 0){ $this->db->trans_rollback(); $this->sys_error('Order Tidak Ketemu'); exit; } $sql_hist = " select IFNULL(T_OrderHeaderDate,'') as T_OrderHeaderDate, IFNULL(T_OrderDetailT_TestID,'') as T_OrderDetailT_TestID, IFNULL(T_OrderDetailResult,'') as T_OrderDetailResult, T_TestNat_TestID from t_orderheader join t_orderdetail ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID join t_test ON T_OrderDetailT_TestID = T_TestID WHERE T_OrderHeaderIsActive = 'Y' AND T_OrderHeaderM_PatientID = ? AND T_OrderHeaderSenderM_DoctorID = ? AND T_OrderHeaderID <= ?"; $query_hist = $this->db->query($sql_hist, [ $rows_patient_doktor[0]['T_OrderHeaderM_PatientID'], $rows_patient_doktor[0]['T_OrderHeaderSenderM_DoctorID'], $id ]); if(!$query_hist){ $this->db->trans_rollback(); $this->sys_error_db("get t_order failed", $this->db); exit; } $rows_chart = $query_hist->result_array(); if(count($rows_chart) == 0){ $this->db->trans_rollback(); $this->sys_error('History Tidak Ada'); exit; } foreach ($rows_chart as $elem) { if(!empty($elem['T_OrderDetailResult'])){ $data[$elem['T_TestNat_TestID']][] = [ "date" => $elem['T_OrderHeaderDate'] , "value" => $elem['T_OrderDetailResult'] ]; } } // $data = array_values($data); // print_r($data); return $data; // echo json_encode( // array( // "status"=>"OK", // "data"=> $data, // ), // ); } } function get_historical_result_by_t_orderheader_id($id) { // if ( ! $this->isLogin ) { // echo json_encode( // array("status"=>"ERR", "message"=> "Invalid Token") // ); // exit; // } // lama // $sql_cek_validation_print = "select T_OrderHeaderAddOnValidationDone, T_OrderHeaderAddOnReadyPrint, // T_OrderHeaderAddOnT_OrderHeaderID // from t_orderheaderaddon // where T_OrderHeaderAddOnT_OrderHeaderID = ? // AND T_OrderHeaderAddOnReadyPrint = 'Y'"; $sql_cek_validation_print = "select T_OrderHeaderAddOnT_OrderHeaderID as xid from t_orderheaderaddon where T_OrderHeaderAddOnT_OrderHeaderID = ? AND ( T_OrderHeaderAddOnValidationDone = 'Y' OR T_OrderHeaderAddOnValidationDone = 'P' ) UNION select T_OrderHeaderID as xid from t_orderheader join t_orderdetail ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND T_OrderDetailIsActive = 'Y' AND T_OrderHeaderID = ? AND T_OrderDetailValidation = 'Y'"; $query_validation_print = $this->db->query($sql_cek_validation_print, [ $id, $id ]); if(!$query_validation_print){ $this->db->trans_rollback(); $this->sys_error_db("get validation failed", $this->db); exit; } $rows_validation = $query_validation_print->result_array(); if(count($rows_validation) == 0){ // $this->db->trans_rollback(); // $this->sys_error('Tidak ada data'); // exit; // return $data; echo json_encode( array( "status"=>"OK", "message" => "Data belum bisa ditampilkan", "data_header" => [], "data"=> [], )); } else { $sql_get_t_order = "select concat(M_TitleName, ' ', ifnull(M_PatientPrefix,' '), M_PatientName, ifnull(M_PatientSuffix,'') ) as PatientFullName, IFNULL(T_OrderHeaderLabNumberExt,'') as T_OrderHeaderLabNumberExt, IFNULL(DATE_FORMAT(T_OrderHeaderDate,'%d-%m-%Y %H:%i:%s'),'') as T_OrderHeaderDate, IFNULL(T_OrderHeaderID,'') as T_OrderHeaderID, IFNULL(T_OrderHeaderSenderM_DoctorID,'') as T_OrderHeaderSenderM_DoctorID, '' as M_BranchID, '' as M_BranchCode from t_orderheader join m_patient on T_OrderHeaderID = ? and T_OrderHeaderM_PatientID = M_PatientID join m_title on M_PatientM_TitleID = M_TitleID"; $query_t_order = $this->db->query($sql_get_t_order, [ $id ]); if(!$query_t_order){ $this->db->trans_rollback(); $this->sys_error_db("get t_order failed", $this->db); exit; } $rows = $query_t_order->result_array(); if(count($rows) == 0){ $this->db->trans_rollback(); $this->sys_error('Header Tidak Ketemu'); exit; } $r_header = $rows[0]; $sql_get_branch = " select IFNULL(M_BranchID,'') as M_BranchID, IFNULL(M_BranchCode,'') as M_BranchCode from m_branch WHERE M_BranchIsDefault='Y' AND M_BranchIsActive ='Y' "; $query_m_branch = $this->db->query($sql_get_branch, [ $id ]); if(!$query_m_branch){ $this->db->trans_rollback(); $message = $this->db->error(); $this->sys_error($message); exit; } $rows = $query_m_branch->result_array(); if(count($rows) == 0){ $this->db->trans_rollback(); $this->sys_error('Cabang Tidak Ketemu'); exit; } $branch_id = $rows[0]['M_BranchID']; $branch_code = $rows[0]['M_BranchCode']; $sql_detail_periksa = "select IFNULL(T_TestSasCode,'') as T_TestSasCode, IFNULL(Nat_SubGroupName,'') as Nat_SubGroupName, IFNULL(Nat_SubSubGroupName,'') as Nat_SubSubGroupName, IFNULL(T_TestName,'') as T_TestName, IFNULL(T_OrderDetailT_TestName,'') as T_OrderDetailT_TestName, IFNULL(T_OrderDetailResult,'') as T_OrderDetailResult, IFNULL(T_OrderDetailNat_UnitName,'') as T_OrderDetailNat_UnitName, IFNULL(T_OrderDetailNormalValueNote,'') as T_OrderDetailNormalValueNote, IFNULL(T_OrderdetailNat_MethodeName,'') as T_OrderdetailNat_MethodeName, T_OrderDetailT_TestID, T_TestSasCode, T_TestIsPrintResult, T_TestIsResult, T_OrderDetailValidation from t_orderheader join m_patient on T_OrderHeaderID = ? and T_OrderHeaderM_PatientID = M_PatientID join m_title on M_PatientM_TitleID = M_TitleID join t_orderdetail ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND T_OrderDetailIsActive = 'Y' join t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y' join nat_group ON T_TestNat_GroupID = Nat_GroupID AND Nat_GroupIsActive = 'Y' join nat_subgroup ON T_TestNat_SubgroupID = Nat_SubGroupID AND Nat_SubGroupIsActive = 'Y' join nat_subsubgroup ON T_TestNat_SubSubGroupID = Nat_SubSubGroupID AND Nat_SubSubGroupIsActive = 'Y' where T_OrderHeaderIsActive = 'Y' order by T_TestSasCode asc"; $query_detail_periksa = $this->db->query($sql_detail_periksa, [ $id ]); if(!$query_detail_periksa){ $this->db->trans_rollback(); $message = $this->db->error(); $this->sys_error($message); exit; } // $data_m_branch = $rows = $query_detail_periksa->result_array(); // print_r($rows); $prev_Nat_SubGroupName = ""; $prev_Nat_SubSubGroupName = ""; $data = []; $rows_history = $this->get_history($id); foreach($rows as $r){ $curr_Nat_SubSubGroupName = $r['Nat_SubSubGroupName']; if($prev_Nat_SubSubGroupName !== $curr_Nat_SubSubGroupName){ $data[] = [ "Nat_SubGroupName" => $r['Nat_SubGroupName'], "Nat_SubSubGroupName" => $r['Nat_SubSubGroupName'], "details" => [] ]; } $testID = $r['T_OrderDetailT_TestID']; $curr_idx = count($data) - 1; $data[$curr_idx]['details'][] = [ 'T_TestSasCode' => $r['T_TestSasCode'], 'T_TestIsPrintResult' => $r['T_TestIsPrintResult'], 'T_TestIsResult' => $r['T_TestIsResult'], 'T_TestName' => $r['T_TestName'], 'T_OrderDetailValidation' => $r['T_OrderDetailValidation'], 'T_OrderDetailResult' => $r['T_OrderDetailResult'], 'T_OrderDetailNat_UnitName' => $r['T_OrderDetailNat_UnitName'], 'T_OrderDetailNormalValueNote' => $r['T_OrderDetailNormalValueNote'], 'T_OrderdetailNat_MethodeName'=> $r['T_OrderdetailNat_MethodeName'], 'history' => [] ]; if(in_array($testID,array_keys($rows_history))){ $idx_detail = count($data[$curr_idx]['details']) - 1; $data[$curr_idx]['details'][$idx_detail]['history'] = $rows_history[$testID]; } $prev_Nat_SubSubGroupName = $curr_Nat_SubSubGroupName; } echo json_encode( array( "status"=>"OK", "data_header" => [ "PatientFullName" => $r_header['PatientFullName'], "T_OrderHeaderLabNumberExt" => $r_header['T_OrderHeaderLabNumberExt'], "T_OrderHeaderDate" => $r_header['T_OrderHeaderDate'], "T_OrderHeaderID" => $r_header['T_OrderHeaderID'], "T_OrderHeaderSenderM_DoctorID" => $r_header['T_OrderHeaderSenderM_DoctorID'], "M_BranchID" => $branch_id, "M_BranchCode" => $branch_code, ], "data"=> $data, )); } } function get_historical_result_by_t_orderheader_idv2($id) { // if ( ! $this->isLogin ) { // echo json_encode( // array("status"=>"ERR", "message"=> "Invalid Token") // ); // exit; // } // lama // $sql_cek_validation_print = "select T_OrderHeaderAddOnValidationDone, T_OrderHeaderAddOnReadyPrint, // T_OrderHeaderAddOnT_OrderHeaderID // from t_orderheaderaddon // where T_OrderHeaderAddOnT_OrderHeaderID = ? // AND T_OrderHeaderAddOnReadyPrint = 'Y'"; $sql_cek_validation_print = "select T_OrderHeaderAddOnT_OrderHeaderID as xid from t_orderheaderaddon where T_OrderHeaderAddOnT_OrderHeaderID = ? AND ( T_OrderHeaderAddOnValidationDone = 'Y' OR T_OrderHeaderAddOnValidationDone = 'P' ) UNION select T_OrderHeaderID as xid from t_orderheader join t_orderdetail ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND T_OrderDetailIsActive = 'Y' AND T_OrderHeaderID = ? AND T_OrderDetailValidation = 'Y'"; $query_validation_print = $this->db->query($sql_cek_validation_print, [ $id, $id ]); if(!$query_validation_print){ $this->db->trans_rollback(); $this->sys_error_db("get validation failed", $this->db); exit; } $rows_validation = $query_validation_print->result_array(); if(count($rows_validation) == 0){ // $this->db->trans_rollback(); // $this->sys_error('Tidak ada data'); // exit; // return $data; echo json_encode( array( "status"=>"OK", "message" => "Data belum bisa ditampilkan", "data_header" => [], "data"=> [], )); } else { $sql_get_t_order = "select concat(M_TitleName, ' ', ifnull(M_PatientPrefix,' '), M_PatientName, ifnull(M_PatientSuffix,'') ) as PatientFullName, IFNULL(T_OrderHeaderLabNumberExt,'') as T_OrderHeaderLabNumberExt, IFNULL(DATE_FORMAT(T_OrderHeaderDate,'%d-%m-%Y %H:%i:%s'),'') as T_OrderHeaderDate, IFNULL(T_OrderHeaderID,'') as T_OrderHeaderID, IFNULL(T_OrderHeaderSenderM_DoctorID,'') as T_OrderHeaderSenderM_DoctorID, '' as M_BranchID, '' as M_BranchCode from t_orderheader join m_patient on T_OrderHeaderID = ? and T_OrderHeaderM_PatientID = M_PatientID join m_title on M_PatientM_TitleID = M_TitleID"; $query_t_order = $this->db->query($sql_get_t_order, [ $id ]); if(!$query_t_order){ $this->db->trans_rollback(); $this->sys_error_db("get t_order failed", $this->db); exit; } $rows = $query_t_order->result_array(); if(count($rows) == 0){ $this->db->trans_rollback(); $this->sys_error('Header Tidak Ketemu'); exit; } $r_header = $rows[0]; $sql_get_branch = " select IFNULL(M_BranchID,'') as M_BranchID, IFNULL(M_BranchCode,'') as M_BranchCode from m_branch WHERE M_BranchIsDefault='Y' AND M_BranchIsActive ='Y' "; $query_m_branch = $this->db->query($sql_get_branch, [ $id ]); if(!$query_m_branch){ $this->db->trans_rollback(); $message = $this->db->error(); $this->sys_error($message); exit; } $rows = $query_m_branch->result_array(); if(count($rows) == 0){ $this->db->trans_rollback(); $this->sys_error('Cabang Tidak Ketemu'); exit; } $branch_id = $rows[0]['M_BranchID']; $branch_code = $rows[0]['M_BranchCode']; $sql_detail_periksa = "select IFNULL(T_TestSasCode,'') as T_TestSasCode, IFNULL(Nat_SubGroupName,'') as Nat_SubGroupName, IFNULL(Nat_SubSubGroupName,'') as Nat_SubSubGroupName, IFNULL(T_TestName,'') as T_TestName, IFNULL(T_OrderDetailT_TestName,'') as T_OrderDetailT_TestName, IFNULL(T_OrderDetailResult,'') as T_OrderDetailResult, IFNULL(T_OrderDetailNat_UnitName,'') as T_OrderDetailNat_UnitName, IFNULL(T_OrderDetailNormalValueNote,'') as T_OrderDetailNormalValueNote, IFNULL(T_OrderdetailNat_MethodeName,'') as T_OrderdetailNat_MethodeName, T_OrderDetailT_TestID, T_TestSasCode, T_TestIsPrintResult, T_TestIsResult, T_OrderDetailValidation, T_TestNat_TestID from t_orderheader join m_patient on T_OrderHeaderID = ? and T_OrderHeaderM_PatientID = M_PatientID join m_title on M_PatientM_TitleID = M_TitleID join t_orderdetail ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND T_OrderDetailIsActive = 'Y' join t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y' join nat_group ON T_TestNat_GroupID = Nat_GroupID AND Nat_GroupIsActive = 'Y' join nat_subgroup ON T_TestNat_SubgroupID = Nat_SubGroupID AND Nat_SubGroupIsActive = 'Y' join nat_subsubgroup ON T_TestNat_SubSubGroupID = Nat_SubSubGroupID AND Nat_SubSubGroupIsActive = 'Y' where T_OrderHeaderIsActive = 'Y' order by T_TestSasCode asc"; $query_detail_periksa = $this->db->query($sql_detail_periksa, [ $id ]); if(!$query_detail_periksa){ $this->db->trans_rollback(); $message = $this->db->error(); $this->sys_error($message); exit; } // $data_m_branch = $rows = $query_detail_periksa->result_array(); // print_r($rows); $prev_Nat_SubGroupName = ""; $prev_Nat_SubSubGroupName = ""; $data = []; $rows_history = $this->get_historyv2($id); foreach($rows as $r){ $curr_Nat_SubSubGroupName = $r['Nat_SubSubGroupName']; if($prev_Nat_SubSubGroupName !== $curr_Nat_SubSubGroupName){ $data[] = [ "Nat_SubGroupName" => $r['Nat_SubGroupName'], "Nat_SubSubGroupName" => $r['Nat_SubSubGroupName'], "details" => [] ]; } $testID = $r['T_OrderDetailT_TestID']; $natTestID = $r['T_TestNat_TestID']; $curr_idx = count($data) - 1; $data[$curr_idx]['details'][] = [ 'T_TestSasCode' => $r['T_TestSasCode'], 'T_TestIsPrintResult' => $r['T_TestIsPrintResult'], 'T_TestIsResult' => $r['T_TestIsResult'], 'T_TestName' => $r['T_TestName'], 'T_OrderDetailValidation' => $r['T_OrderDetailValidation'], 'T_OrderDetailResult' => $r['T_OrderDetailResult'], 'T_OrderDetailNat_UnitName' => $r['T_OrderDetailNat_UnitName'], 'T_OrderDetailNormalValueNote' => $r['T_OrderDetailNormalValueNote'], 'T_OrderdetailNat_MethodeName'=> $r['T_OrderdetailNat_MethodeName'], 'history' => [] ]; if(in_array($natTestID,array_keys($rows_history))){ $idx_detail = count($data[$curr_idx]['details']) - 1; $data[$curr_idx]['details'][$idx_detail]['history'] = $rows_history[$natTestID]; } $prev_Nat_SubSubGroupName = $curr_Nat_SubSubGroupName; } echo json_encode( array( "status"=>"OK", "data_header" => [ "PatientFullName" => $r_header['PatientFullName'], "T_OrderHeaderLabNumberExt" => $r_header['T_OrderHeaderLabNumberExt'], "T_OrderHeaderDate" => $r_header['T_OrderHeaderDate'], "T_OrderHeaderID" => $r_header['T_OrderHeaderID'], "T_OrderHeaderSenderM_DoctorID" => $r_header['T_OrderHeaderSenderM_DoctorID'], "M_BranchID" => $branch_id, "M_BranchCode" => $branch_code, ], "data"=> $data, )); } } // berdasarkan t_test function get_result_by_t_orderheader_id($id) { // if ( ! $this->isLogin ) { // echo json_encode( // array("status"=>"ERR", "message"=> "Invalid Token") // ); // exit; // } // lama // $sql_cek_validation_print = "select T_OrderHeaderAddOnValidationDone, T_OrderHeaderAddOnReadyPrint, // T_OrderHeaderAddOnT_OrderHeaderID // from t_orderheaderaddon // where T_OrderHeaderAddOnT_OrderHeaderID = ? // AND T_OrderHeaderAddOnReadyPrint = 'Y'"; $sql_cek_validation_print = "select T_OrderHeaderAddOnT_OrderHeaderID as xid from t_orderheaderaddon where T_OrderHeaderAddOnT_OrderHeaderID = ? AND ( T_OrderHeaderAddOnValidationDone = 'Y' OR T_OrderHeaderAddOnValidationDone = 'P' ) UNION select T_OrderHeaderID as xid from t_orderheader join t_orderdetail ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND T_OrderDetailIsActive = 'Y' AND T_OrderHeaderID = ? AND T_OrderDetailValidation = 'Y'"; $query_validation_print = $this->db->query($sql_cek_validation_print, [ $id, $id ]); if(!$query_validation_print){ $this->db->trans_rollback(); $this->sys_error_db("get validation failed", $this->db); exit; } $rows_validation = $query_validation_print->result_array(); if(count($rows_validation) == 0){ // $this->db->trans_rollback(); // $this->sys_error('Tidak ada data'); // exit; // return $data; echo json_encode( array( "status"=>"OK", "message" => "Data belum bisa ditampilkan", "data_header" => [], "data"=> [], )); } else { $sql_get_t_order = "select concat(M_TitleName, ' ', ifnull(M_PatientPrefix,' '), M_PatientName, ifnull(M_PatientSuffix,'') ) as PatientFullName, IFNULL(T_OrderHeaderLabNumberExt,'') as T_OrderHeaderLabNumberExt, IFNULL(DATE_FORMAT(T_OrderHeaderDate,'%d-%m-%Y %H:%i:%s'),'') as T_OrderHeaderDate, IFNULL(T_OrderHeaderID,'') as T_OrderHeaderID, IFNULL(T_OrderHeaderSenderM_DoctorID,'') as T_OrderHeaderSenderM_DoctorID, '' as M_BranchID, '' as M_BranchCode from t_orderheader join m_patient on T_OrderHeaderID = ? and T_OrderHeaderM_PatientID = M_PatientID join m_title on M_PatientM_TitleID = M_TitleID"; $query_t_order = $this->db->query($sql_get_t_order, [ $id ]); if(!$query_t_order){ $this->db->trans_rollback(); $this->sys_error_db("get t_order failed", $this->db); exit; } $rows = $query_t_order->result_array(); if(count($rows) == 0){ $this->db->trans_rollback(); $this->sys_error('Header Tidak Ketemu'); exit; } $r_header = $rows[0]; $sql_get_branch = " select IFNULL(M_BranchID,'') as M_BranchID, IFNULL(M_BranchCode,'') as M_BranchCode from m_branch WHERE M_BranchIsDefault='Y' AND M_BranchIsActive ='Y' "; $query_m_branch = $this->db->query($sql_get_branch, [ $id ]); if(!$query_m_branch){ $this->db->trans_rollback(); $message = $this->db->error(); $this->sys_error($message); exit; } $rows = $query_m_branch->result_array(); if(count($rows) == 0){ $this->db->trans_rollback(); $this->sys_error('Cabang Tidak Ketemu'); exit; } $branch_id = $rows[0]['M_BranchID']; $branch_code = $rows[0]['M_BranchCode']; // if(fn_itf_isnumber(T_OrderDetailResult) = '0', T_OrderDetailResult , fn_rpt_format_number(T_OrderDetailResult) ) as T_OrderDetailResult, // old // $sql_detail_periksa = "select // IFNULL(T_TestSasCode,'') as T_TestSasCode, // IFNULL(Nat_SubGroupName,'') as Nat_SubGroupName, // IFNULL(Nat_SubSubGroupName,'') as Nat_SubSubGroupName, // IFNULL(T_TestName,'') as T_TestName, // IFNULL(T_OrderDetailT_TestName,'') as T_OrderDetailT_TestName, // IFNULL(T_OrderDetailResult,'') as T_OrderDetailResult, // IFNULL(T_OrderDetailNat_UnitName,'') as T_OrderDetailNat_UnitName, // IFNULL(T_OrderDetailNormalValueNote,'') as T_OrderDetailNormalValueNote, // IFNULL(T_OrderdetailNat_MethodeName,'') as T_OrderdetailNat_MethodeName, // T_OrderDetailT_TestID, // IFNULL(T_TestIsPrintResult,'') as T_TestIsPrintResult, // IFNULL(T_TestIsResult,'') as T_TestIsResult, // IFNULL(T_OrderDetailValidation,'') as T_OrderDetailValidation, // T_TestID // from t_orderheader // join m_patient // on T_OrderHeaderID = ? // and T_OrderHeaderM_PatientID = M_PatientID // join m_title // on M_PatientM_TitleID = M_TitleID // join t_orderdetail // ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID // AND T_OrderDetailIsActive = 'Y' // join t_test // ON T_OrderDetailT_TestID = T_TestID // AND T_TestIsActive = 'Y' // join nat_group // ON T_TestNat_GroupID = Nat_GroupID // AND Nat_GroupIsActive = 'Y' // join nat_subgroup // ON T_TestNat_SubgroupID = Nat_SubGroupID // AND Nat_SubGroupIsActive = 'Y' // join nat_subsubgroup // ON T_TestNat_SubSubGroupID = Nat_SubSubGroupID // AND Nat_SubSubGroupIsActive = 'Y' // where T_OrderHeaderIsActive = 'Y' // order by T_TestSasCode asc"; $sql_detail_periksa = "select IFNULL(T_TestSasCode,'') as T_TestSasCode, IFNULL(Nat_SubGroupName,'') as Nat_SubGroupName, IFNULL(Nat_SubSubGroupName,'') as Nat_SubSubGroupName, IFNULL(T_TestName,'') as T_TestName, IFNULL(T_OrderDetailT_TestName,'') as T_OrderDetailT_TestName, if(fn_itf_isnumber(T_OrderDetailResult) = '0', T_OrderDetailResult , fn_rpt_format_number(T_OrderDetailResult) ) as T_OrderDetailResult, IFNULL(T_OrderDetailNat_UnitName,'') as T_OrderDetailNat_UnitName, IFNULL(T_OrderDetailNormalValueNote,'') as T_OrderDetailNormalValueNote, IFNULL(T_OrderdetailNat_MethodeName,'') as T_OrderdetailNat_MethodeName, T_OrderDetailT_TestID, IFNULL(T_TestIsPrintResult,'') as T_TestIsPrintResult, IFNULL(T_TestIsResult,'') as T_TestIsResult, IFNULL(T_OrderDetailValidation,'') as T_OrderDetailValidation, T_TestID, T_OrderDetailResultFlag from t_orderheader join m_patient on T_OrderHeaderID = ? and T_OrderHeaderM_PatientID = M_PatientID join m_title on M_PatientM_TitleID = M_TitleID join t_orderdetail ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND T_OrderDetailIsActive = 'Y' join t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y' join nat_test ON T_TestNat_TestID = Nat_TestID join nat_group ON Nat_TestNat_GroupID = Nat_GroupID AND Nat_GroupIsActive = 'Y' join nat_subgroup ON Nat_TestNat_SubgroupID = Nat_SubGroupID AND Nat_SubGroupIsActive = 'Y' join nat_subsubgroup ON Nat_TestNat_SubSubGroupID = Nat_SubSubGroupID AND Nat_SubSubGroupIsActive = 'Y' JOIN $this->db_str_doctor.request_upload ON T_OrderHeaderID = RequestUploadT_OrderHeaderID AND RequestUploadIsUploaded = 'N' AND RequestUploadIsActive = 'Y' where T_OrderHeaderIsActive = 'Y' order by T_TestSasCode asc"; $query_detail_periksa = $this->db->query($sql_detail_periksa, [ $id ]); if(!$query_detail_periksa){ $this->db->trans_rollback(); $message = $this->db->error(); $this->sys_error($message); exit; } // $data_m_branch = $rows = $query_detail_periksa->result_array(); // print_r($rows); $prev_Nat_SubGroupName = ""; $prev_Nat_SubSubGroupName = ""; $data = []; $rows_history = $this->get_history($id); foreach($rows as $r){ $curr_Nat_SubSubGroupName = $r['Nat_SubSubGroupName']; if($prev_Nat_SubSubGroupName !== $curr_Nat_SubSubGroupName){ $data[] = [ "Nat_SubGroupName" => $r['Nat_SubGroupName'], "Nat_SubSubGroupName" => $r['Nat_SubSubGroupName'], "details" => [] ]; } $testID = $r['T_OrderDetailT_TestID']; $curr_idx = count($data) - 1; $data[$curr_idx]['details'][] = [ 'T_TestSasCode' => $r['T_TestSasCode'], 'T_TestIsPrintResult' => $r['T_TestIsPrintResult'], 'T_TestIsResult' => $r['T_TestIsResult'], 'T_TestID' => $r['T_TestID'], 'T_TestName' => $r['T_TestName'], // 'T_PriceAmount' => $r['T_PriceAmount'], 'T_OrderDetailValidation' => $r['T_OrderDetailValidation'], 'T_OrderDetailResult' => $r['T_OrderDetailResult'], 'T_OrderDetailNat_UnitName' => $r['T_OrderDetailNat_UnitName'], 'T_OrderDetailNormalValueNote' => $r['T_OrderDetailNormalValueNote'], 'T_OrderdetailNat_MethodeName'=> $r['T_OrderdetailNat_MethodeName'], 'T_OrderDetailResultFlag' => $r['T_OrderDetailResultFlag'], 'history' => [] ]; if(in_array($testID,array_keys($rows_history))){ $idx_detail = count($data[$curr_idx]['details']) - 1; $data[$curr_idx]['details'][$idx_detail]['history'] = $rows_history[$testID]; } $prev_Nat_SubSubGroupName = $curr_Nat_SubSubGroupName; } // echo json_encode( // array( // "status"=>"OK", // "data_header" => [ // "PatientFullName" => $r_header['PatientFullName'], // "T_OrderHeaderLabNumberExt" => $r_header['T_OrderHeaderLabNumberExt'], // "T_OrderHeaderDate" => $r_header['T_OrderHeaderDate'], // "T_OrderHeaderID" => $r_header['T_OrderHeaderID'], // "T_OrderHeaderSenderM_DoctorID" => $r_header['T_OrderHeaderSenderM_DoctorID'], // "M_BranchID" => $branch_id, // "M_BranchCode" => $branch_code, // ], // "data"=> $data, // )); return $data; } } // berdasarkan nat_test function get_result_by_t_orderheader_idv2($id) { // if ( ! $this->isLogin ) { // echo json_encode( // array("status"=>"ERR", "message"=> "Invalid Token") // ); // exit; // } // lama // $sql_cek_validation_print = "select T_OrderHeaderAddOnValidationDone, T_OrderHeaderAddOnReadyPrint, // T_OrderHeaderAddOnT_OrderHeaderID // from t_orderheaderaddon // where T_OrderHeaderAddOnT_OrderHeaderID = ? // AND T_OrderHeaderAddOnReadyPrint = 'Y'"; $sql_cek_validation_print = "select T_OrderHeaderAddOnT_OrderHeaderID as xid from t_orderheaderaddon JOIN $this->db_str_doctor.request_upload ON T_OrderHeaderAddOnT_OrderHeaderID = RequestUploadT_OrderHeaderID AND RequestUploadIsUploaded = 'N' AND RequestUploadIsActive = 'Y' where T_OrderHeaderAddOnT_OrderHeaderID = ? AND ( T_OrderHeaderAddOnValidationDone = 'Y' OR T_OrderHeaderAddOnValidationDone = 'P' ) UNION select T_OrderHeaderID as xid from t_orderheader JOIN $this->db_str_doctor.request_upload ON T_OrderHeaderID = RequestUploadT_OrderHeaderID AND RequestUploadIsUploaded = 'N' AND RequestUploadIsActive = 'Y' join t_orderdetail ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND T_OrderDetailIsActive = 'Y' AND T_OrderHeaderID = ? AND T_OrderDetailValidation = 'Y' "; $query_validation_print = $this->db->query($sql_cek_validation_print, [ $id, $id ]); if(!$query_validation_print){ $this->db->trans_rollback(); $this->sys_error_db("get validation failed", $this->db); exit; } $rows_validation = $query_validation_print->result_array(); if(count($rows_validation) == 0){ // $this->db->trans_rollback(); // $this->sys_error('Tidak ada data'); // exit; // return $data; // AGAR TIDAK DOUBLE STATUS JSON // echo json_encode( // array( // "status"=>"OK", // "message" => "Data belum bisa ditampilkan", // "data_header" => [], // "data"=> [], // "func" => "get_result_by_t_orderheader_idv2" // )); } else { $sql_get_t_order = "select concat(M_TitleName, ' ', ifnull(M_PatientPrefix,' '), M_PatientName, ifnull(M_PatientSuffix,'') ) as PatientFullName, IFNULL(T_OrderHeaderLabNumberExt,'') as T_OrderHeaderLabNumberExt, IFNULL(DATE_FORMAT(T_OrderHeaderDate,'%d-%m-%Y %H:%i:%s'),'') as T_OrderHeaderDate, IFNULL(T_OrderHeaderID,'') as T_OrderHeaderID, IFNULL(T_OrderHeaderSenderM_DoctorID,'') as T_OrderHeaderSenderM_DoctorID, '' as M_BranchID, '' as M_BranchCode from t_orderheader join m_patient on T_OrderHeaderID = ? and T_OrderHeaderM_PatientID = M_PatientID join m_title on M_PatientM_TitleID = M_TitleID"; $query_t_order = $this->db->query($sql_get_t_order, [ $id ]); if(!$query_t_order){ $this->db->trans_rollback(); $this->sys_error_db("get t_order failed", $this->db); exit; } $rows = $query_t_order->result_array(); if(count($rows) == 0){ $this->db->trans_rollback(); $this->sys_error('Header Tidak Ketemu'); exit; } $r_header = $rows[0]; $sql_get_branch = " select IFNULL(M_BranchID,'') as M_BranchID, IFNULL(M_BranchCode,'') as M_BranchCode from m_branch WHERE M_BranchIsDefault='Y' AND M_BranchIsActive ='Y' "; $query_m_branch = $this->db->query($sql_get_branch, [ $id ]); if(!$query_m_branch){ $this->db->trans_rollback(); $message = $this->db->error(); $this->sys_error($message); exit; } $rows = $query_m_branch->result_array(); if(count($rows) == 0){ $this->db->trans_rollback(); $this->sys_error('Cabang Tidak Ketemu'); exit; } $branch_id = $rows[0]['M_BranchID']; $branch_code = $rows[0]['M_BranchCode']; // if(fn_itf_isnumber(T_OrderDetailResult) = '0', T_OrderDetailResult , fn_rpt_format_number(T_OrderDetailResult) ) as T_OrderDetailResult, // old // $sql_detail_periksa = "select // IFNULL(T_TestSasCode,'') as T_TestSasCode, // IFNULL(Nat_SubGroupName,'') as Nat_SubGroupName, // IFNULL(Nat_SubSubGroupName,'') as Nat_SubSubGroupName, // IFNULL(T_TestName,'') as T_TestName, // IFNULL(T_OrderDetailT_TestName,'') as T_OrderDetailT_TestName, // IFNULL(T_OrderDetailResult,'') as T_OrderDetailResult, // IFNULL(T_OrderDetailNat_UnitName,'') as T_OrderDetailNat_UnitName, // IFNULL(T_OrderDetailNormalValueNote,'') as T_OrderDetailNormalValueNote, // IFNULL(T_OrderdetailNat_MethodeName,'') as T_OrderdetailNat_MethodeName, // T_OrderDetailT_TestID, // IFNULL(T_TestIsPrintResult,'') as T_TestIsPrintResult, // IFNULL(T_TestIsResult,'') as T_TestIsResult, // IFNULL(T_OrderDetailValidation,'') as T_OrderDetailValidation, // T_TestID // from t_orderheader // join m_patient // on T_OrderHeaderID = ? // and T_OrderHeaderM_PatientID = M_PatientID // join m_title // on M_PatientM_TitleID = M_TitleID // join t_orderdetail // ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID // AND T_OrderDetailIsActive = 'Y' // join t_test // ON T_OrderDetailT_TestID = T_TestID // AND T_TestIsActive = 'Y' // join nat_group // ON T_TestNat_GroupID = Nat_GroupID // AND Nat_GroupIsActive = 'Y' // join nat_subgroup // ON T_TestNat_SubgroupID = Nat_SubGroupID // AND Nat_SubGroupIsActive = 'Y' // join nat_subsubgroup // ON T_TestNat_SubSubGroupID = Nat_SubSubGroupID // AND Nat_SubSubGroupIsActive = 'Y' // where T_OrderHeaderIsActive = 'Y' // order by T_TestSasCode asc"; $sql_detail_periksa = "select IFNULL(T_TestSasCode,'') as T_TestSasCode, IFNULL(Nat_SubGroupName,'') as Nat_SubGroupName, IFNULL(Nat_SubSubGroupName,'') as Nat_SubSubGroupName, IFNULL(T_TestName,'') as T_TestName, IFNULL(T_OrderDetailT_TestName,'') as T_OrderDetailT_TestName, if(fn_itf_isnumber(T_OrderDetailResult) = '0', T_OrderDetailResult , fn_rpt_format_number(T_OrderDetailResult) ) as T_OrderDetailResult, IFNULL(T_OrderDetailNat_UnitName,'') as T_OrderDetailNat_UnitName, IFNULL(T_OrderDetailNormalValueNote,'') as T_OrderDetailNormalValueNote, IFNULL(T_OrderdetailNat_MethodeName,'') as T_OrderdetailNat_MethodeName, T_OrderDetailT_TestID, IFNULL(T_TestIsPrintResult,'') as T_TestIsPrintResult, IFNULL(T_TestIsResult,'') as T_TestIsResult, IFNULL(T_OrderDetailValidation,'') as T_OrderDetailValidation, T_TestID, T_OrderDetailResultFlag, T_TestNat_TestID from t_orderheader join m_patient on T_OrderHeaderID = ? and T_OrderHeaderM_PatientID = M_PatientID join m_title on M_PatientM_TitleID = M_TitleID join t_orderdetail ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND T_OrderDetailIsActive = 'Y' join t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y' join nat_test ON T_TestNat_TestID = Nat_TestID join nat_group ON Nat_TestNat_GroupID = Nat_GroupID AND Nat_GroupIsActive = 'Y' join nat_subgroup ON Nat_TestNat_SubgroupID = Nat_SubGroupID AND Nat_SubGroupIsActive = 'Y' join nat_subsubgroup ON Nat_TestNat_SubSubGroupID = Nat_SubSubGroupID AND Nat_SubSubGroupIsActive = 'Y' JOIN $this->db_str_doctor.request_upload ON T_OrderHeaderID = RequestUploadT_OrderHeaderID AND RequestUploadIsUploaded = 'N' AND RequestUploadIsActive = 'Y' where T_OrderHeaderIsActive = 'Y' order by T_TestSasCode asc"; $query_detail_periksa = $this->db->query($sql_detail_periksa, [ $id ]); if(!$query_detail_periksa){ $this->db->trans_rollback(); $message = $this->db->error(); $this->sys_error($message); exit; } // $data_m_branch = $rows = $query_detail_periksa->result_array(); // print_r($rows); $prev_Nat_SubGroupName = ""; $prev_Nat_SubSubGroupName = ""; $data = []; $rows_history = $this->get_historyv2($id); foreach($rows as $r){ $curr_Nat_SubSubGroupName = $r['Nat_SubSubGroupName']; if($prev_Nat_SubSubGroupName !== $curr_Nat_SubSubGroupName){ $data[] = [ "Nat_SubGroupName" => $r['Nat_SubGroupName'], "Nat_SubSubGroupName" => $r['Nat_SubSubGroupName'], "details" => [] ]; } $testID = $r['T_OrderDetailT_TestID']; $natTestID = $r['T_TestNat_TestID']; $curr_idx = count($data) - 1; $data[$curr_idx]['details'][] = [ 'T_TestSasCode' => $r['T_TestSasCode'], 'T_TestIsPrintResult' => $r['T_TestIsPrintResult'], 'T_TestIsResult' => $r['T_TestIsResult'], 'T_TestID' => $r['T_TestID'], 'T_TestName' => $r['T_TestName'], // 'T_PriceAmount' => $r['T_PriceAmount'], 'T_OrderDetailValidation' => $r['T_OrderDetailValidation'], 'T_OrderDetailResult' => $r['T_OrderDetailResult'], 'T_OrderDetailNat_UnitName' => $r['T_OrderDetailNat_UnitName'], 'T_OrderDetailNormalValueNote' => $r['T_OrderDetailNormalValueNote'], 'T_OrderdetailNat_MethodeName'=> $r['T_OrderdetailNat_MethodeName'], 'T_OrderDetailResultFlag' => $r['T_OrderDetailResultFlag'], 'history' => [] ]; if(in_array($natTestID,array_keys($rows_history))){ $idx_detail = count($data[$curr_idx]['details']) - 1; $data[$curr_idx]['details'][$idx_detail]['history'] = $rows_history[$natTestID]; } $prev_Nat_SubSubGroupName = $curr_Nat_SubSubGroupName; } // echo json_encode( // array( // "status"=>"OK", // "data_header" => [ // "PatientFullName" => $r_header['PatientFullName'], // "T_OrderHeaderLabNumberExt" => $r_header['T_OrderHeaderLabNumberExt'], // "T_OrderHeaderDate" => $r_header['T_OrderHeaderDate'], // "T_OrderHeaderID" => $r_header['T_OrderHeaderID'], // "T_OrderHeaderSenderM_DoctorID" => $r_header['T_OrderHeaderSenderM_DoctorID'], // "M_BranchID" => $branch_id, // "M_BranchCode" => $branch_code, // ], // "data"=> $data, // )); return $data; } } function get_result_patient($id,$debug="") { // $sql_patient = "SELECT M_PatientID, M_PatientNoReg, // M_PatientName, M_PatientPOB, M_PatientDOB, // M_PatientHP, M_PatientIDNumber, OrderFoOrderPatientID, // M_PatientAddressDescription, // concat(M_TitleName, ' ', // ifnull(M_PatientPrefix,' '), // M_PatientName, // ifnull(M_PatientSuffix,'') // ) as PatientFullName // FROM $this->db_str_doctor.order_fo // JOIN m_patient // ON OrderFoM_PatientID = M_PatientID // AND M_PatientIsActive = 'Y' // join m_title // on M_PatientM_TitleID = M_TitleID // AND M_TitleIsActive = 'Y' // join m_patientaddress // ON M_PatientID = M_PatientAddressM_PatientID // AND M_PatientIsActive = 'Y' // WHERE OrderFoT_OrderHeaderID = ? // AND OrderFoIsActive = 'Y'"; $sql_patient = "SELECT M_PatientID, M_PatientNoReg, M_PatientName, M_PatientPOB, M_PatientDOB, M_PatientHP, M_PatientIDNumber, OrderFoOrderPatientID, M_PatientAddressDescription, concat(M_TitleName, ' ', ifnull(M_PatientPrefix,' '), M_PatientName, ifnull(M_PatientSuffix,'') ) as PatientFullName, T_OrderHeaderM_PatientAge FROM $this->db_str_doctor.order_fo JOIN m_patient ON OrderFoM_PatientID = M_PatientID AND M_PatientIsActive = 'Y' join m_title on M_PatientM_TitleID = M_TitleID AND M_TitleIsActive = 'Y' join m_patientaddress ON M_PatientID = M_PatientAddressM_PatientID AND M_PatientIsActive = 'Y' join t_orderheader ON OrderFoT_OrderHeaderID = T_OrderHeaderID AND T_OrderHeaderIsActive = 'Y' JOIN $this->db_str_doctor.request_upload ON T_OrderHeaderID = RequestUploadT_OrderHeaderID AND RequestUploadIsUploaded = 'N' AND RequestUploadIsActive = 'Y' WHERE OrderFoT_OrderHeaderID = ? AND OrderFoIsActive = 'Y'"; $query_patient = $this->db->query($sql_patient, [ $id ]); if(!$query_patient){ $this->db->trans_rollback(); $this->sys_error_db("get patient failed", $this->db); exit; } $rows_patient = $query_patient->result_array(); // print_r($rows_patient); // berdasarkan nat_test $rows_result = $this->get_result_by_t_orderheader_idv2($id); // if($debug != ""){ // echo "fungsi get_result_patient"; // print_r($rows_result); // exit; // } $sql_get_branch = " select IFNULL(M_BranchID,'') as M_BranchID, IFNULL(M_BranchCode,'') as M_BranchCode from m_branch WHERE M_BranchIsDefault='Y' AND M_BranchIsActive ='Y' "; $query_m_branch = $this->db->query($sql_get_branch, [ $id ]); if(!$query_m_branch){ $this->db->trans_rollback(); $message = $this->db->error(); $this->sys_error($message); exit; } $rows = $query_m_branch->result_array(); if(count($rows) == 0){ $this->db->trans_rollback(); $this->sys_error('Cabang Tidak Ketemu'); exit; } $branch_id = $rows[0]['M_BranchID']; $branch_code = $rows[0]['M_BranchCode']; // header $sql_header = "select concat(M_TitleName, ' ', ifnull(M_PatientPrefix,' '), M_PatientName, ifnull(M_PatientSuffix,'') ) as PatientFullName, IFNULL(T_OrderHeaderLabNumberExt,'') as T_OrderHeaderLabNumberExt, IFNULL(DATE_FORMAT(T_OrderHeaderDate,'%d-%m-%Y %H:%i:%s'),'') as T_OrderHeaderDate, IFNULL(T_OrderHeaderID,'') as T_OrderHeaderID, IFNULL(T_OrderHeaderSenderM_DoctorID,'') as T_OrderHeaderSenderM_DoctorID, '' as M_BranchID, '' as M_BranchCode from t_orderheader join m_patient on T_OrderHeaderID = ? and T_OrderHeaderM_PatientID = M_PatientID join m_title on M_PatientM_TitleID = M_TitleID"; $query_header = $this->db->query($sql_header, [ $id ]); if(!$query_header){ $this->db->trans_rollback(); $this->sys_error_db("get header failed", $this->db); exit; } $rows_header = $query_header->result_array(); if(count($rows_header) == 0){ $this->db->trans_rollback(); $this->sys_error('Header Tidak Ketemu'); exit; } $r_header = $rows_header[0]; // sample // select T_OrderSampleT_OrderHeaderID, // IFNULL(Nat_BahanName,'') as Nat_BahanName, // IFNULL(DATE_FORMAT(T_OrderSampleSamplingDate,'%d-%m-%Y %H:%i:%s'),'') // as T_OrderSampleSamplingDate, // T_OrderSampleSamplingTime // from t_ordersample // join t_sampletype // ON T_OrderSampleT_SampleTypeID = T_SampleTypeID // AND T_SampleTypeIsActive = 'Y' // join nat_bahan // ON T_SampleTypeT_BahanID = Nat_BahanID // AND Nat_BahanIsActive = 'Y' // where T_OrderSampleIsActive = 'Y' // AND T_OrderSampleT_OrderHeaderID = 131484 $sql_sample = "select T_OrderSampleT_OrderHeaderID, IFNULL(Nat_BahanName,'') as Nat_BahanName, IFNULL(DATE_FORMAT(T_OrderSampleSamplingDate,'%d-%m-%Y %H:%i:%s'),'') as T_OrderSampleSamplingDate, T_OrderSampleSamplingTime from t_ordersample join t_sampletype ON T_OrderSampleT_SampleTypeID = T_SampleTypeID AND T_SampleTypeIsActive = 'Y' join nat_bahan ON T_SampleTypeT_BahanID = Nat_BahanID AND Nat_BahanIsActive = 'Y' JOIN $this->db_str_doctor.request_upload ON T_OrderSampleT_OrderHeaderID = RequestUploadT_OrderHeaderID AND RequestUploadIsUploaded = 'N' AND RequestUploadIsActive = 'Y' where T_OrderSampleIsActive = 'Y' AND T_OrderSampleT_OrderHeaderID = ? group by T_OrderSampleT_OrderHeaderID, Nat_BahanName"; $query_sample = $this->db->query($sql_sample, [ $id ]); if(!$query_sample){ $this->db->trans_rollback(); $this->sys_error_db("get sample failed", $this->db); exit; } $rows_sample = $query_sample->result_array(); // if(count($rows_sample) == 0){ // $this->db->trans_rollback(); // $this->sys_error('sample Tidak Ketemu'); // exit; // } // $r_sample = $rows_sample[0]; if(count($rows_patient) == 0) { if($debug != ""){ echo json_encode(array( "order_patient_id" => 0, "patient" => [], "result" => [], "sample" => [] ) ); } return array( "order_patient_id" => 0, "patient" => [], "result" => [], "sample" => [] ); } else { if($debug != ""){ echo json_encode( array( "order_patient_id" => $rows_patient[0]['OrderFoOrderPatientID'], "M_BranchID" => $branch_id, "M_BranchCode" => $branch_code, "T_OrderHeaderLabNumberExt" => $r_header['T_OrderHeaderLabNumberExt'], "T_OrderHeaderDate" => $r_header['T_OrderHeaderDate'], "T_OrderHeaderID" => $r_header['T_OrderHeaderID'], "T_OrderHeaderSenderM_DoctorID" => $r_header['T_OrderHeaderSenderM_DoctorID'], "patient" => $rows_patient, "result" => $rows_result, "sample" => $rows_sample ) ); } return ( // array( // "order_patient_id" => $rows_patient[0]['OrderFoOrderPatientID'], // "M_BranchID" => $branch_id, // "M_BranchCode" => $branch_code, // "patient" => $rows_patient, // "result" => $rows_result, // ) // "T_OrderHeaderLabNumberExt" => $r_header['T_OrderHeaderLabNumberExt'], // "T_OrderHeaderDate" => $r_header['T_OrderHeaderDate'], // "T_OrderHeaderID" => $r_header['T_OrderHeaderID'], // "T_OrderHeaderSenderM_DoctorID" => $r_header['T_OrderHeaderSenderM_DoctorID'], array( "order_patient_id" => $rows_patient[0]['OrderFoOrderPatientID'], "M_BranchID" => $branch_id, "M_BranchCode" => $branch_code, "T_OrderHeaderLabNumberExt" => $r_header['T_OrderHeaderLabNumberExt'], "T_OrderHeaderDate" => $r_header['T_OrderHeaderDate'], "T_OrderHeaderID" => $r_header['T_OrderHeaderID'], "T_OrderHeaderSenderM_DoctorID" => $r_header['T_OrderHeaderSenderM_DoctorID'], "patient" => $rows_patient, "result" => $rows_result, "sample" => $rows_sample ) ); } } function get_result() { $data = []; // order_fo join t_orderheader yg print nya Y, validation Y atau P dan union // table t_orderdetail // $sql_ready_print_Y = "SELECT OrderFoT_OrderHeaderID // FROM $this->db_str_doctor.order_fo // JOIN t_orderheader // ON OrderFoT_OrderHeaderID = T_OrderHeaderID // AND OrderFoIsActive = 'Y' // AND T_OrderHeaderIsActive = 'Y' // JOIN t_orderheaderaddon // ON T_OrderHeaderID = T_OrderHeaderAddOnT_OrderHeaderID // AND // ( // T_OrderHeaderAddOnValidationDone = 'Y' // OR T_OrderHeaderAddOnValidationDone = 'P' // ) // JOIN $this->db_str_doctor.request_upload // ON T_OrderHeaderID = RequestUploadT_OrderHeaderID // AND RequestUploadIsUploaded = 'N' // limit 0,$this->max_limit"; $sql_ready_print_Y = "SELECT distinct OrderFoT_OrderHeaderID FROM ( SELECT OrderFoT_OrderHeaderID FROM one_doctor.order_fo JOIN t_orderheader ON OrderFoT_OrderHeaderID = T_OrderHeaderID AND OrderFoIsActive = 'Y' AND T_OrderHeaderIsActive = 'Y' JOIN t_orderheaderaddon ON T_OrderHeaderID = T_OrderHeaderAddOnT_OrderHeaderID AND (T_OrderHeaderAddOnValidationDone = 'Y' OR T_OrderHeaderAddOnValidationDone = 'P') JOIN one_doctor.request_upload ON T_OrderHeaderID = RequestUploadT_OrderHeaderID AND RequestUploadIsUploaded = 'N' AND RequestUploadIsActive = 'Y' UNION SELECT OrderFoT_OrderHeaderID FROM one_doctor.order_fo JOIN t_orderheader ON OrderFoT_OrderHeaderID = T_OrderHeaderID AND OrderFoIsActive = 'Y' AND T_OrderHeaderIsActive = 'Y' JOIN t_orderheaderaddon ON T_OrderHeaderID = T_OrderHeaderAddOnT_OrderHeaderID JOIN one_doctor.request_upload ON T_OrderHeaderID = RequestUploadT_OrderHeaderID AND RequestUploadIsUploaded = 'N' JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID ) AS hasilUnion limit 0,$this->max_limit"; $query_ready_print_Y = $this->db->query($sql_ready_print_Y); if(!$query_ready_print_Y){ $this->db->trans_rollback(); $this->sys_error_db("get ready print Y or request upload N failed", $this->db); exit; } $rows_result_ready_print_Y = $query_ready_print_Y->result_array(); if(count($rows_result_ready_print_Y) > 0) { foreach($rows_result_ready_print_Y as $key => $val) { $data[] = $this->get_result_patient($val['OrderFoT_OrderHeaderID']); } return json_encode( array( 'status' => 'OK', 'data' => $data ) ); } else { return json_encode ( array( 'status' => 'OK', 'message' => 'Data Tidak Ada', 'data' => $data ) ); } } // curl public function post($url, $data) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Content-Type: application/text", "Content-Length: " . strlen($data), ]); $result = curl_exec($ch); if (curl_error($ch) != "") { echo json_encode([ "status" => "ERR", "message" => "Http Error : " . curl_error($ch), ]); curl_close($ch); exit(); } curl_close($ch); return $result; } function log($msg) { // $dt = Date("Y-m-d H:i:s"); // echo "$dt $msg \n"; echo $msg; } function get_param_z() { $body_z = file_get_contents("php://input"); $body = gzuncompress($body_z); return json_decode($body, true); } function reply($resp) { echo json_encode($resp); } function reply_gz($resp) { //echo json_encode($resp); echo gzcompress(json_encode($resp)); } function upload_log_gzcompress($debug = "") { $this->db->trans_begin(); $j_param = $this->get_result(); $result = json_decode($j_param,true); // if($debug != ""){ // echo "fungsi get_result_patient"; // echo $j_param; // exit; // } // print_r($j_param); if(count($result['data']) > 0) { // check max retry $sql_cek_max_retry = "select uploadLogOrderPatientID, uploadLogJson from $this->db_str_doctor.upload_log where uploadLogIsSent = 'N' and uploadLogRetry >= 10 limit 0,$this->max_limit"; $query_max_retry = $this->db->query($sql_cek_max_retry); if(!$query_max_retry){ $this->db->trans_rollback(); $this->sys_error_db(["status" => "ERR", "message" => "select upload_log | " . $this->db->error()["message"], "debug" => $this->db->last_query()]); } $data_json = []; $rows_retry = $query_max_retry->result_array(); $data_order_patient_id_retry = []; foreach($rows_retry as $key => $val) { $data_order_patient_id_retry[] = $val['uploadLogOrderPatientID']; } $upload_param = []; // print_r(json_encode($result['data'])); // exit; // if($debug != ""){ // print_r($data_order_patient_id_retry); // exit; // } foreach($result['data'] as $key) { // print_r(json_encode($result['data'])); // buka proteksi upload lebih dari 1x if(in_array($key['order_patient_id'], $data_order_patient_id_retry)){ continue; } $result_nonlab = $this->nonlab_by_nolab($key['T_OrderHeaderID']); if($debug != ""){ print_r($result_nonlab); exit; } // if() // $json_string = json_encode($result_nonlab); // $err_result_nonlab = json_decode($json_string); // print_r($err_result_nonlab['status']); // print_r($result_nonlab); // exit; $data_json = [ "order_patient_id" => $key['order_patient_id'], "T_OrderHeaderLabNumberExt" => $key['T_OrderHeaderLabNumberExt'], "T_OrderHeaderDate" => $key['T_OrderHeaderDate'], "T_OrderHeaderID" => $key['T_OrderHeaderID'], "T_OrderHeaderSenderM_DoctorID" => $key['T_OrderHeaderSenderM_DoctorID'], "M_BranchID" => $key['M_BranchID'], "M_BranchCode" => $key['M_BranchCode'], "patient" => $key['patient'], "result" => $key['result'], "result_nonlab" => $result_nonlab, "sample" => $key['sample'] ]; $upload_param[] = $data_json; // print_r(json_encode($data_json)); // exit; $this->insert_upload_log($key['order_patient_id'], $data_json, $debug ); } // send regional for update data if(count($upload_param) == 0){ $this->db->trans_commit(); // $this->db->trans_rollback(); $this->reply([ "status" => "ERR", 'message' => "Data Tidak ada" ]); exit; } $j_param = json_encode(array( 'data' => $upload_param )); $size = round(strlen($j_param) / 1024, 2); $z_param = gzcompress($j_param, 9); $size_z = round(strlen($z_param) / 1024, 2); $getIPRegionalAddress = $this->getRegionalIPAddress(); $url = "http://$getIPRegionalAddress/one-api/app_doctor/Receiveruploadlog/r_upload_log"; // $this->log("Post to $url | size : $size k | comprezzed $size_z k"); $resp = $this->post($url, $z_param); $j_resp = json_decode($resp,true); // $j_resp_x = $this->get_param_z(); // print_r($j_resp); // print_r($resp); // print_r($j_resp_x); if ($j_resp["status"] == "OK") { // update $order_patient_id_str = implode(",",$j_resp['order_patient_id']); if($order_patient_id_str == ""){ $order_patient_id_str = "0"; } $sql_update = "UPDATE $this->db_str_doctor.upload_log set uploadLogIsSent = 'Y' WHERE uploadLogIsSent = 'N' AND uploadLogOrderPatientID IN ($order_patient_id_str)"; $query_update = $this->db->query($sql_update); // echo $this->db->last_query(); if(!$query_update) { $this->db->trans_rollback(); $this->sys_error_db(["status" => "ERR", "message" => "update upload_log | " . $this->db->error()["message"], "debug" => $this->db->last_query()]); } // update request_log from N to Y $sql_update_request_upload = "UPDATE $this->db_str_doctor.request_upload set RequestUploadIsUploaded = 'Y' WHERE RequestUploadOrderPatientID IN ($order_patient_id_str) "; $query_update_request_upload = $this->db->query($sql_update_request_upload); if(!$query_update_request_upload) { $this->db->trans_rollback(); $this->sys_error_db(["status" => "ERR", "message" => "update request_log | " . $this->db->error()["message"], "debug" => $this->db->last_query()]); exit; } $this->db->trans_commit(); // $this->db->trans_rollback(); $this->reply(["status" => "OK",'message'=>'Proses upload sudah berhasil']); } else { $this->db->trans_rollback(); // print_r($j_resp['status']); $this->reply([ "status" => "ERR", 'message' => "Gagal update", 'debug' => print_r($resp, true) ]); } } else { $this->db->trans_rollback(); // print_r($j_resp['status']); $this->reply([ "status" => "OK", 'message' => "Tidak Ada Data", 'debug' => print_r($resp, true) ]); } } function insert_upload_log($order_patient_id, $json_result, $debug = "") { $sql_check = "select * from $this->db_str_doctor.upload_log where uploadLogOrderPatientID = ? AND uploadLogIsSent = 'N'"; $qry_check = $this->db->query($sql_check,[ $order_patient_id ]); if (!$qry_check) { // print_r($this->db->last_query()); $this->db->trans_rollback(); $this->sys_error_db(["status" => "ERR", "message" => "insert upload log | " . $this->db->error()["message"], "debug" => $this->db->last_query()]); exit; } $rows_check = $qry_check->result_array(); // if($debug != ""){ // print_r($rows_check); // exit; // } if(count($rows_check) == 0){ // insert table upload_log $sql_insert_upload_log = "INSERT INTO $this->db_str_doctor.upload_log( uploadLogOrderPatientID, uploadLogJson, uploadLogRetry ) VALUES (?, ?, 0)"; $query_insert = $this->db->query($sql_insert_upload_log, [ intval($order_patient_id), json_encode($json_result) ]); // if($debug != ""){ // print_r($rows_check); // echo json_last_error_msg(); // exit; // } // echo $this->db->last_query(); if (!$query_insert) { // print_r($this->db->last_query()); $this->db->trans_rollback(); $this->sys_error_db(["status" => "ERR", "message" => "insert upload log | " . $this->db->error()["message"], "debug" => $this->db->last_query()]); exit; } }else{ // update tabel update_log $sql_update_log = "UPDATE $this->db_str_doctor.upload_log SET uploadLogRetry = uploadLogRetry + 1 WHERE uploadLogID = ?"; $query_update = $this->db->query($sql_update_log, [ $rows_check[0]['uploadLogID'] ]); // echo $this->db->last_query(); if (!$query_update) { // print_r($this->db->last_query()); $this->db->trans_rollback(); $this->sys_error_db(["status" => "ERR", "message" => "update upload log | " . $this->db->error()["message"], "debug" => $this->db->last_query()]); exit; } } } // fungsi dibawah ini adalah fungsi hasil non lab function nonlab_by_nolab($T_OrderHeaderID, $debug = "") { $sql = "select T_OrderHeaderID,T_OrderHeaderM_PatientID, T_OrderHeaderPjM_DoctorID, T_OrderHeaderSenderM_DoctorID, T_OrderHeaderDate, T_OrderHeaderLabNumberExt, min(concat(T_OrderSampleHandlingDate,' ', T_OrderSampleHandlingTime)) xtime , T_OrderHeaderAddOnReadyPrintDate, max(T_OrderDetailValDate) valDate, group_concat(distinct T_TestNat_GroupID) Nat_GroupID , '' M_CompanyNatCode from t_orderheader join t_orderheaderaddon on T_OrderHeaderID = T_OrderHeaderAddOnT_OrderHeaderID and T_OrderHeaderID = ? join m_company on T_OrderHeaderM_CompanyID = M_CompanyID left join t_ordersample on T_OrderHeaderID = T_OrderSampleT_OrderheaderID and T_OrderSampleIsActive = 'Y' join t_orderdetail on T_OrderDetailT_OrderHeaderID = T_OrderHeaderID and T_OrderDetailIsActive = 'Y' join t_test on T_OrderDetailT_TestID = T_TestID and T_TestNat_GroupID > 1 group by T_OrderHeaderID"; if ($debug != "") { $sql = "select T_OrderHeaderID,T_OrderHeaderM_PatientID, T_OrderHeaderPjM_DoctorID, T_OrderHeaderSenderM_DoctorID, T_OrderHeaderDate, T_OrderHeaderLabNumberExt, min(concat(T_OrderSampleHandlingDate,' ', T_OrderSampleHandlingTime)) xtime , T_OrderHeaderAddOnReadyPrintDate, max(T_OrderDetailValDate) valDate, group_concat(distinct T_TestNat_GroupID) Nat_GroupID , '' M_CompanyNatCode from t_orderheader join t_orderheaderaddon on T_OrderHeaderID = T_OrderHeaderAddOnT_OrderHeaderID and T_OrderHeaderID = ? join m_company on T_OrderHeaderM_CompanyID = M_CompanyID left join t_ordersample on T_OrderHeaderID = T_OrderSampleT_OrderheaderID and T_OrderSampleIsActive = 'Y' join t_orderdetail on T_OrderDetailT_OrderHeaderID = T_OrderHeaderID and T_OrderDetailIsActive = 'Y' join t_test on T_OrderDetailT_TestID = T_TestID and T_TestNat_GroupID > 1 group by T_OrderHeaderID"; } $qry = $this->db->query($sql, [$T_OrderHeaderID]); if (!$qry) { $this->reply_err( $this->db->error()["message"] . "|" . $this->db->last_query() ); } $rows = $qry->result_array(); // print_r($this->db->last_query()); // exit; if (count($rows) == 0) { // $this->reply_err("Nolab $T_OrderHeaderID not found."); $newResult = []; return $newResult; } $headerID = $rows[0]["T_OrderHeaderID"]; $labNoExt = $rows[0]["T_OrderHeaderLabNumberExt"]; $patientID = $rows[0]["T_OrderHeaderM_PatientID"]; //$companyNatCode = "--"; //$rows[0]["M_CompanyNatCode"]; $companyNatCode = $rows[0]["M_CompanyNatCode"]; $senderID = $rows[0]["T_OrderHeaderSenderM_DoctorID"]; $pjID = $rows[0]["T_OrderHeaderPjM_DoctorID"]; $readyPrintDate = $rows[0]["T_OrderHeaderAddOnReadyPrintDate"]; if ($readyPrintDate == "") { $readyPrintDate = $rows[0]["valDate"]; } //$this->is_uploaded("NON-LAB", $headerID); list($xstat, $nik) = $this->get_nik($patientID); if (!$xstat) { $this->reply_err("Nolab $T_OrderHeaderID | " . $nik); exit; } $arrGroup = explode(",", $rows[0]["Nat_GroupID"]); $param = [ "headerID" => $headerID, "T_OrderHeaderID" => $T_OrderHeaderID, "companyNatCode" => $companyNatCode, "labNoExt" => $labNoExt, "patientID" => $patientID, "senderID" => $senderID, "nik" => $nik, "pjID" => $pjID, "observationDate" => date("YmdHis", strtotime($rows[0]["xtime"])), "readyPrintDate" => date("YmdHis", strtotime($readyPrintDate)), "orderDate" => date( "YmdHis", strtotime($rows[0]["T_OrderHeaderDate"]) ), ]; $result = []; foreach ($arrGroup as $groupID) { // echo $groupID; // echo "\n"; $result[] = [ "data" => $this->get_nonlab_result($param, $groupID, $debug), "groupid" => $groupID ]; // print_r($result); } $newResult = []; $prev_judul = ""; // print_r($result); foreach($result as $r) { // print_r($r); $grupid = $r['groupid']; foreach($r['data'] as $rr){ $curr_judul = $rr['T_TestName']; if($prev_judul !== $curr_judul){ $newResult[] = [ "judul" => $rr['judul'], "T_TestName" => $rr['T_TestName'], "detailsNonLab" => [] ]; } $curr_idx = count($newResult) - 1; $newResult[$curr_idx]['detailsNonLab'][] = [ "grupid" => $grupid, "judul" => $rr['judul'], "T_TestName" => $rr['T_TestName'], "So_TemplateDetailName" => $rr['So_TemplateDetailName'], "So_ResultEntryDetailResult" => $rr['So_ResultEntryDetailResult'] ]; $prev_judul = $curr_judul; } } // print_r($newResult); return $newResult; } function get_nik($patientID) { $sql = "select M_PatientIDNumber from m_patient where M_PatientM_IdTypeID = 1 and M_PatientID = ? "; $qry = $this->db->query($sql, [$patientID]); if (!$qry) { return [false, "Error :" . $this->db->error()["message"]]; } $rows = $qry->result_array(); if (count($rows) == 0) { return [false, "Error : No NIK | " . $this->db->last_query()]; } // if (strlen(trim($rows[0]["M_PatientIDNumber"])) != 16) { if (strlen(trim($rows[0]["M_PatientIDNumber"])) < 16) { return [ false, "Error: Invalid NIK " . $rows[0]["M_PatientIDNumber"], ]; } return [true, $rows[0]["M_PatientIDNumber"]]; } function get_nonlab_result($param, $groupID, $debug = "") { $sql = "select Nat_TestCode,Nat_TestName, So_ResultEntrySo_TemplateName, So_ResultEntryID from t_orderdetail join t_test on T_OrderDetailT_OrderHeaderID=? and T_OrderDetailT_TestID = T_TestID and T_OrderDetailIsActive = 'Y' join so_resultentry on T_OrderDetailID = So_ResultEntryT_OrderDetailID and So_ResultEntryIsActive = 'Y' join nat_test on Nat_TestID = T_TestNat_TestID and Nat_TestIsResult = 'Y' and Nat_TestNat_GroupID=?"; $qry = $this->db->query($sql, [$param["headerID"], $groupID]); if (!$qry) { $this->reply_err( $this->db->error()["message"] . "|" . $this->db->last_query() ); } $rows = $qry->result_array(); if (count($rows) == 0) { return []; } $result = []; // if ($debug != "") { // echo "groupID : $groupID\n"; // //print_r($rows); // } foreach ($rows as $r) { // if ($groupID != 4) { // $result[] = [ // "code" => $r["Nat_TestCode"], // "name" => $r["Nat_TestName"], // "groupID" => $groupID, // "result" => "", // "unit" => "", // "range" => "", // "flag" => "", // ]; // $idx = count($result) - 1; // } if ($groupID == 2) { if ($debug != "") { echo $r["Nat_TestCode"] . "\n"; } if ( substr($r["Nat_TestCode"], 0, 4) == "2012" || substr($r["Nat_TestCode"], 0, 4) == "2013" || (substr($r["Nat_TestCode"], 0, 4) == "2014") || (substr($r["Nat_TestCode"], 0, 4) == "2011") ) { $sql = "call sp_rpt_t_hasil_so_elmd(?,1,'admin')"; $resp = $this->get_sp($sql, [$r["So_ResultEntryID"]]); if ($resp["status"] == -1) { $this->reply_err($resp["message"]); } if ($debug != "") { echo "GRUP ID $groupID ResultEntryID : " . $r["So_ResultEntryID"] . "\n"; // print_r($resp['data']); } $result = array_merge($result, $resp['data']); // print_r($result); // $result[] = $resp['data']; // print_r($result); // if ( // count($resp["data"]) > 0 // ) { // $result_as = ""; // $result_ad = ""; // // foreach ($resp["data"] as $ecg_d) { // // if (trim($ecg_d["So_TemplateDetailName"]) == "Kesan" || trim($ecg_d["So_TemplateDetailName"]) == "Interpretasi") { // // $result[$idx]["result"] = $ecg_d["So_ResultEntryDetailResult"]; // // $result[$idx]["templateName"] = $ecg_d["So_TemplateDetailName"]; // // } // // if (trim($ecg_d["So_TemplateDetailName"]) == "AS") { // // $result_as = $ecg_d["So_ResultEntryDetailResult"]; // // } // // if (trim($ecg_d["So_TemplateDetailName"]) == "AD") { // // $result_ad = $ecg_d["So_ResultEntryDetailResult"]; // // } // // } // // if ($debug != "") { // // echo "AS : $result_as | AD : $result_ad \n"; // // } // // if ($result_as != "") { // // $result[] = [ // // "code" => $r["Nat_TestCode"] . "-AS", // // "name" => $r["Nat_TestName"], // // "templateName" => $ecg_d["So_TemplateDetailName"], // // "groupID" => $groupID, // // "result" => $result_as, // // "unit" => "", // // "range" => "", // // "flag" => "", // // ]; // // $idx = count($result) - 1; // // } // // if ($result_ad != "") { // // $result[] = [ // // "code" => $r["Nat_TestCode"] . "-AD", // // "name" => $r["Nat_TestName"], // // "templateName" => $ecg_d["So_TemplateDetailName"], // // "groupID" => $groupID, // // "result" => $result_ad, // // "unit" => "", // // "range" => "", // // "flag" => "", // // ]; // // $idx = count($result) - 1; // // } // } } } if ($groupID == 3) { //thorax // echo $r["Nat_TestCode"]; if ( substr($r["Nat_TestCode"], 0, 4) == "3015" || substr($r["Nat_TestCode"], 0, 4) == "3021" || substr($r["Nat_TestCode"], 0, 4) == "3012" ) { // $sql = "call sp_rpt_t_hasil_so_xray(?,1,'admin')"; $sql = "call sp_rpt_t_hasil_so_xray_meshbio(?,?,1,'admin')"; $resp = $this->get_sp($sql, [$param["headerID"], $r["So_ResultEntryID"]]); if ($resp["status"] == -1) { $this->reply_err($resp["message"]); } // $xray_result = ""; // foreach ($resp["data"] as $d) { // if ($d["So_TemplateDetailName"] != "Kesan") continue; // $xray_result .= // $d["So_TemplateDetailName"] . // " : " . // str_ireplace( // "\n", // "~", // trim($d["So_ResultEntryDetailResult"]) // ) . // " "; // } // $result[$idx]["result"] = $xray_result; // $result = $resp['data']; $result = array_merge($result, $resp['data']); } elseif (substr($r["Nat_TestCode"], 0, 4) == "3061") { $sql = "call sp_rpt_t_hasil_so_usg(?,1,'admin')"; $resp = $this->get_sp($sql, [$r["So_ResultEntryID"]]); if ($resp["status"] == -1) { $this->reply_err($resp["message"]); } $xray_result = ""; // foreach ($resp["data"] as $d) { // if ($d["So_TemplateDetailName"] != "Kesan") continue; // $xray_result .= // $d["So_TemplateDetailName"] . // " : " . // str_ireplace( // "\n", // "~", // trim($d["So_ResultEntryDetailResult"]) // ) . // " "; // } // $result[$idx]["result"] = $xray_result; // $result = $resp['data']; $result = array_merge($result, $resp['data']); } else { } } if ($groupID == 4 && $r["Nat_TestCode"] == "40210100") { //Harvard if (true || tdebug != "") { $sql = "call sp_rpt_t_hasil_so_layanan(?, '1', 'admin')"; $resp = $this->get_sp($sql, [$r["So_ResultEntryID"]]); if ($resp["status"] == -1) { $this->reply_err($resp["message"]); } $hardvard_result = ""; // foreach ($resp["data"] as $d) { // if (trim($d["So_TemplateDetailName"]) == "VO2 Max") { // $hardvard_code = "-0A"; // } else { // $hardvard_code = "-0B"; // } // $hardvard_result = // $d["So_TemplateDetailName"] . // " : " . // str_ireplace( // "\n", // "~", // trim($d["So_ResultEntryDetailResult"]) // ); // $result[] = [ // "code" => $r["Nat_TestCode"] . $hardvard_code, // "name" => $r["Nat_TestName"], // "groupID" => $groupID, // "templateName" => $d["So_TemplateDetailName"], // "result" => $hardvard_result, // "unit" => "", // "range" => "", // "flag" => "", // ]; // } // $result = $resp['data']; $result = array_merge($result, $resp['data']); } else { // $result[] = [ // "code" => $r["Nat_TestCode"], // "name" => $r["Nat_TestName"], // "groupID" => $groupID, // "templateName" => $d["So_TemplateDetailName"], // "result" => "", // "unit" => "", // "range" => "", // "flag" => "", // ]; // $idx = count($result) - 1; // $sql = "call sp_rpt_t_hasil_so_layanan(?, '1', 'admin')"; // $resp = $this->get_sp($sql, [$r["So_ResultEntryID"]]); // if ($resp["status"] == -1) { // $this->reply_err($resp["message"]); // } // $hardvard_result = ""; // foreach ($resp["data"] as $d) { // $hardvard_result .= // $d["So_TemplateDetailName"] . // " : " . // str_ireplace( // "\n", // "~", // trim($d["So_ResultEntryDetailResult"]) // ) . // " "; // } // $result[$idx]["result"] = $hardvard_result; // $result = $resp['data']; $result = array_merge($result, $resp['data']); } } else if ($groupID == 4) { $arr_fisik_result = $this->get_fisik_result( $rows[0]["So_ResultEntryID"], $debug ); if ($debug != "") { print_r($arr_fisik_result); } // foreach ($arr_fisik_result as $fr) { // $fr_code = $fr["code"]; // if (in_array($fr_code, ["0601", "0600"])) { // if (strpos($fr["result"], "-OD") !== false) { // $fr_code = $fr_code . "-OD"; // } // if (strpos($fr["result"], "-OS") !== false) { // $fr_code = $fr_code . "-OS"; // } // } // $fr_parent = $fr["parent"]; // if ($fr_parent == "visus" && strtolower($fr["name"]) == "tidak diperiksa") { // $fr_code = "0602"; // $result[] = [ // "code" => $r["Nat_TestCode"] . "-" . $fr_code . "-OD", // "name" => $r["Nat_TestName"], // "sub_name" => "Visus", // "groupID" => $groupID, // "templateName" => $fr["So_TemplateDetailName"], // "result" => "Tidak diperiksa", // "unit" => "", // "range" => "", // "flag" => "", // ]; // $result[] = [ // "code" => $r["Nat_TestCode"] . "-" . $fr_code . "-OS", // "name" => $r["Nat_TestName"], // "sub_name" => "Visus", // "groupID" => $groupID, // "templateName" => $fr["So_TemplateDetailName"], // "result" => "Tidak diperiksa", // "unit" => "", // "range" => "", // "flag" => "", // ]; // } else if ($fr_code == "0203") { // BMI // $result[] = [ // "code" => $r["Nat_TestCode"] . "-" . $fr_code, // "name" => $r["Nat_TestName"], // "sub_name" => $fr["name"], // "groupID" => $groupID, // "templateName" => $fr["So_TemplateDetailName"], // "result" => trim($fr["result"]), // "unit" => "kg/m2", // "range" => "", // "flag" => "", // ]; // } else { // $result[] = [ // "code" => $r["Nat_TestCode"] . "-" . $fr_code, // "name" => $r["Nat_TestName"], // "sub_name" => $fr["name"], // "groupID" => $groupID, // "templateName" => $fr["So_TemplateDetailName"], // "result" => $fr["result"], // "unit" => "", // "range" => "", // "flag" => "", // ]; // } // } // $result = $arr_fisik_result; $result = array_merge($result, $arr_fisik_result); } $sql = "call sp_rpt_result_category_value(?,'admin')"; $resp = $this->get_sp($sql, [$r["So_ResultEntryID"]]); if ($resp["status"] == -1) { $this->reply_err($resp["message"]); } // if (count($resp["data"]) > 0) { // $xcat = ""; // if ($debug != "") { // // print_r($resp); // } // foreach ($resp["data"] as $xc) { // if ($xcat != "") $xcat .= ","; // $xcat .= $xc["Mcu_StatusResultValueName"]; // } // $r_kes = [ // "code" => $r["Nat_TestCode"] . "-cat", // "name" => $r["Nat_TestName"], // "groupID" => $groupID, // "result" => $xcat, // "unit" => "", // "range" => "", // "flag" => "", // ]; // $result[] = $r_kes; // } // $result = $resp['data']; } // // $split_result_code = [ // // "0100", "0101", "0102", "0103", "0104", "0105", // // "0200", "0201", "0202", "0203", "0204", "0205" // // ]; // foreach ($result as $xidx => $xr) { // $tmp_code = trim($xr["code"]); // $arr_tmp = explode("-", $tmp_code); // $fr_code = "x123x123"; // if (count($arr_tmp) > 1) { // $fr_code = $arr_tmp[1]; // } // if (in_array($fr_code, $split_result_code)) { // $tmp_result = trim($xr["result"]); // $tmp_arr = preg_split('/\s+/', $tmp_result); // if ($debug != "") { // echo "$fr_code : $tmp_result => $tmp_arr[0] | $tmp_arr[1] \n\n"; // } // if (count($tmp_arr) > 1) { // $result[$xidx]["result"] = trim($tmp_arr[0]); // $result[$xidx]["unit"] = trim($tmp_arr[1]); // } // } // $result_org = $result[$xidx]["result"]; // if (strpos($result_org, "\n") > 0) { // $result[$xidx]["result"] = str_ireplace("\n", "~", $result_org); // } // } return $result; // print_r($result); } function nonlab($param, $lang = "id") { list($branchID, $branchCode) = $this->get_branch(); $msh = $this->msh($branchCode, $param["orderHeaderID"]); list($senderCode, $senderName) = $this->get_doctor_name( $param["senderID"] ); list($pjCode, $pjName) = $this->get_doctor_name($param["pjID"]); list($noreg, $name, $dob, $sex) = $this->get_patient( $param["patientID"] ); //patientID patientName dob sex $pid = $this->pid( $param["nik"], $name, $dob, $sex, $param["companyNatCode"] ); //assignPatientLocation = "LAB" drPj drSender $drPj = substr("$pjCode^$pjName", 0, 60); $drSender = substr("$senderCode^$senderName", 0, 60); $pv1 = $this->pv1($branchID, $drPj, $drSender, $param["labNoExt"]); $orderDateTime = $param["orderDate"]; $resultDatetime = $param["readyPrintDate"]; $observationDateTime = $param["observationDate"]; //noLab orderdatetime resultDatetime drSender $orc = $this->orc( $param["labNoExt"], $orderDateTime, $resultDatetime, $drSender ); //nolab observationDateTime resultDateTime $obr = $this->obr( $param["labNoExt"], $observationDateTime, $resultDatetime ); // arry of code name isQuantitative result unit range flag $obx = ""; $obx_start_counter = 1; foreach ($param["result"] as $r) { if ($obx != "") { $obx .= $this->cr; } foreach ($r as $idx => $rr) { $r[$idx]["result"] = $lang . "^" . $rr["result"]; } $obx .= $this->obx($r, $obx_start_counter); } $message = $this->startVt . $msh . $this->cr . $pid . $this->cr . $pv1 . $this->cr . $orc . $this->cr . $obr . $this->cr . $obx . $this->cr . $this->stopFs; return $message; } function get_sp($sql, $param = false) { $resp = $this->get_rows($sql, $param); // echo $this->db->last_query(); $this->clean_mysqli_connection($this->db->conn_id); return $resp; } function get_rows($sql, $param = false) { if ($param) { $qry = $this->db->query($sql, $param); } else { $qry = $this->db->query($sql); } if (!$qry) { return [ "status" => -1, "message" => $this->db->last_query() . "|" . $this->db->error()["message"], ]; } return ["status" => 0, "data" => $qry->result_array()]; } function get_fisik_result($resultEntryID, $debug = "") { //Ambil kesimpulan saja $arr_sub_url = [ // "pribadi", // "keluhan_saat_ini_new", // "riwayat_phobia", // "riwayat_obat", // "riwayat_penyakit", // "riwayat_hidup", // "riwayat_keluarga", "tanda_vital", "status_gizi", "keadaan_umum", "mulut", "gigi", "visus", "kepala_wajah", "mata", "telinga", "thorax", "paru", "jantung", "integumen", "sistem", "anggota", "genitourinaria", "perut", "leher", "hidung", "persepsi_warna", ]; $code_result = []; foreach ($arr_sub_url as $sub_url) { $result = $this->get_fisik($sub_url, $resultEntryID, "fisik"); switch ($sub_url) { case "tanda_vital": foreach ($result as $rr) { $nonlab_code = $this->meshbio_nonlab_code( $sub_url, $rr["aa1"] ); $code_result[] = [ "parent" => $sub_url, "code" => $nonlab_code, "name" => $rr["aa1"], "result" => $rr["aa2"] . " " . $rr["aa3"], ]; } break; case "status_gizi": foreach ($result as $rr) { $nonlab_code = $this->meshbio_nonlab_code( $sub_url, $rr["qq1"] ); $code_result[] = [ "parent" => $sub_url, "code" => $nonlab_code, "name" => $rr["qq1"], "result" => $rr["qq2"] . " " . $rr["qq3"], ]; } break; case "keadaan_umum": $sub_code = 0; foreach ($result as $rr) { $nonlab_code = $this->meshbio_nonlab_code( $sub_url, $rr["rr1"] ); $code_result[] = [ "parent" => $sub_url, "code" => $nonlab_code, "name" => $rr["rr1"], "result" => $rr["rr2"] . " " . $rr["rr3"], ]; $sub_code++; } break; case "mulut": $sub_code = 0; foreach ($result as $rr) { $nonlab_code = $this->meshbio_nonlab_code( $sub_url, $rr["hh1"] ); $code_result[] = [ "parent" => $sub_url, "code" => $nonlab_code, "name" => $rr["hh1"], "result" => $rr["hh2"] . " " . $rr["hh3"], ]; $sub_code++; } break; case "gigi": // tidak ada if ($debug != "") { echo "GIGI: $sub_url | $resultEntryID \n"; print_r($result); } if (true || $debug != "") { $is_normal = false; foreach ($result as $rr) { if (isset($rr["header"]) && $rr["header"] == "N") { $is_normal = true; } if (isset($rr["gg3"]) && $rr["gg3"] != "") { $is_normal = false; $nonlab_code = $this->meshbio_nonlab_code( $sub_url, $this->gigi_code($rr["gg3"]) ); $code_result[] = [ "parent" => $sub_url, "code" => $nonlab_code, "name" => "Gigi", "result" => $this->gigi_code($rr["gg3"]) . ": " . $rr["gg1"], ]; } // print_r($rr); // echo "$nonlab_code \n"; // print_r($code_result); } if ($is_normal) { $nonlab_code = $this->meshbio_nonlab_code( $sub_url, "Normal" ); $code_result[] = [ "parent" => $sub_url, "code" => $nonlab_code, "name" => "Gigi", "result" => "Normal", ]; } //print_r($result); } break; case "visus": $sub_code = 0; foreach ($result as $rr) { $nonlab_code = $this->meshbio_nonlab_code( $sub_url, $rr["xx1"] ); $code_result[] = [ "parent" => $sub_url, "code" => $nonlab_code, "name" => $rr["xx1"], "result" => $rr["xx2"] . " " . $rr["xx3"], ]; $sub_code++; } break; case "kepala_wajah": $sub_code = 0; foreach ($result as $rr) { $nonlab_code = $this->meshbio_nonlab_code( $sub_url, "kepala_wajah" ); $code_result[] = [ "parent" => $sub_url, "code" => $nonlab_code, "name" => "kepala_wajah", "result" => $rr["bb1"] . " " . $rr["bb2"], ]; $sub_code++; } break; case "mata": $sub_code = 0; foreach ($result as $rr) { $nonlab_code = $this->meshbio_nonlab_code( $sub_url, "mata" ); $code_result[] = [ "parent" => $sub_url, "code" => $nonlab_code, "name" => "mata", "result" => $rr["cc1"] . " " . $rr["cc2"], ]; $sub_code++; } break; case "telinga": $sub_code = 0; foreach ($result as $rr) { $nonlab_code = $this->meshbio_nonlab_code( $sub_url, "telinga" ); $code_result[] = [ "parent" => $sub_url, "code" => $nonlab_code, "name" => "telinga", "result" => $rr["ee1"] . " " . $rr["ee2"], ]; $sub_code++; } break; case "thorax": $sub_code = 0; foreach ($result as $rr) { $nonlab_code = $this->meshbio_nonlab_code( $sub_url, "thorax" ); $code_result[] = [ "parent" => $sub_url, "code" => $nonlab_code, "name" => "thorax", "result" => $rr["jj1"] . " " . $rr["jj2"], ]; $sub_code++; } break; case "paru": $sub_code = 0; foreach ($result as $rr) { $nonlab_code = $this->meshbio_nonlab_code( $sub_url, "paru" ); $code_result[] = [ "parent" => $sub_url, "code" => $nonlab_code, "name" => "paru", "result" => $rr["kk1"] . " " . $rr["kk2"], ]; $sub_code++; } break; case "jantung": $sub_code = 0; foreach ($result as $rr) { $nonlab_code = $this->meshbio_nonlab_code( $sub_url, $rr["ll1"] ); $code_result[] = [ "parent" => $sub_url, "code" => $nonlab_code, "name" => $rr["ll1"], "result" => $rr["ll2"] . " " . $rr["ll3"], ]; $sub_code++; } break; case "integumen": $sub_code = 0; foreach ($result as $rr) { $nonlab_code = $this->meshbio_nonlab_code( $sub_url, $rr["pp1"] ); $code_result[] = [ "parent" => $sub_url, "code" => $nonlab_code, "name" => $rr["pp1"], "result" => $rr["pp2"] . " " . $rr["pp3"], ]; $sub_code++; } break; case "sistem": $sub_code = 0; foreach ($result as $rr) { $nonlab_code = $this->meshbio_nonlab_code( $sub_url, $rr["pp1"] ); $code_result[] = [ "parent" => $sub_url, "code" => $nonlab_code, "name" => $rr["pp1"], "result" => $rr["pp2"] . " " . $rr["pp3"], ]; $sub_code++; } break; case "anggota": $sub_code = 0; foreach ($result as $rr) { $nonlab_code = $this->meshbio_nonlab_code( $sub_url, $rr["oo1"] ); $code_result[] = [ "parent" => $sub_url, "code" => $nonlab_code, "name" => $rr["oo1"], "result" => $rr["oo2"] . " " . $rr["oo3"], ]; $sub_code++; } break; case "genitourinaria": $sub_code = 0; foreach ($result as $rr) { $nonlab_code = $this->meshbio_nonlab_code( $sub_url, "genitourinaria" ); $code_result[] = [ "parent" => $sub_url, "code" => $nonlab_code, "name" => "genitourinaria", "result" => $rr["nn1"] . " " . $rr["nn2"], ]; $sub_code++; } break; case "perut": $sub_code = 0; foreach ($result as $rr) { $nonlab_code = $this->meshbio_nonlab_code( $sub_url, $rr["mm1"] ); $code_result[] = [ "parent" => $sub_url, "code" => $nonlab_code, "name" => $rr["mm1"], "result" => $rr["mm2"] . " " . $rr["mm3"], ]; $sub_code++; } break; case "leher": $sub_code = 0; foreach ($result as $rr) { $nonlab_code = $this->meshbio_nonlab_code( $sub_url, "leher" ); $code_result[] = [ "parent" => $sub_url, "code" => $nonlab_code, "name" => "leher", "result" => $rr["ii1"] . " " . $rr["ii2"], ]; $sub_code++; } break; case "hidung": $sub_code = 0; foreach ($result as $rr) { $nonlab_code = $this->meshbio_nonlab_code( $sub_url, "hidung" ); $code_result[] = [ "parent" => $sub_url, "code" => $nonlab_code, "name" => "hidung", "result" => $rr["ff1"] . " " . $rr["ff2"], ]; $sub_code++; } break; case "persepsi_warna": $sub_code = 0; foreach ($result as $rr) { $nonlab_code = $this->meshbio_nonlab_code( $sub_url, "persepsi_warna" ); $code_result[] = [ "parent" => $sub_url, "code" => $nonlab_code, "name" => "persepsi_warna", "result" => $rr["dd1"] . " " . $rr["dd2"], ]; $sub_code++; } break; } } return $code_result; } function meshbio_nonlab_code($parent, $name) { $map = [ "TANDA_VITAL^DENYUT NADI" => "0100", "TANDA_VITAL^RITME DENYUT NADI" => "0101", "TANDA_VITAL^LAJU PERNAFASAN" => "0102", "TANDA_VITAL^POLA NAFAS" => "0103", "TANDA_VITAL^TEKANAN DARAH" => "0104", "TANDA_VITAL^SUHU" => "0105", "STATUS_GIZI^BERAT BADAN" => "0200", "STATUS_GIZI^TINGGI BADAN" => "0201", "STATUS_GIZI^LINGKAR PERUT" => "0202", "STATUS_GIZI^BMI" => "0203", "STATUS_GIZI^LINGKAR PINGGANG / PANGGUL" => "0204", "STATUS_GIZI^KLASIFIKASI" => "0205", "KEADAAN_UMUM^KESADARAN" => "0300", "KEADAAN_UMUM^SIKAP & TINGKAH LAKU" => "0301", "KEADAAN_UMUM^KONTAK PSIKIS / PERHATIAN" => "0302", "MULUT^MUKOSA RONGGA MULUT" => "0400", "MULUT^TENGGOROKAN" => "0401", "VISUS^TANPA KACAMATA" => "0600", "VISUS^DENGAN KACAMATA" => "0601", "KEPALA_WAJAH^KEPALA_WAJAH" => "0700", "MATA^MATA" => "0800", "TELINGA^TELINGA" => "0900", "THORAX^THORAX" => "1000", "PARU^PARU" => "1100", "JANTUNG^JVP" => "1200", "JANTUNG^APEX" => "1201", "JANTUNG^SUARA JANTUNG" => "1202", "JANTUNG^BISING JANTUNG / MURMUR" => "1203", "INTEGUMEN^KULIT" => "1300", "INTEGUMEN^KUKU" => "1301", "INTEGUMEN^RAMBUT" => "1302", "SISTEM^REFLEKS FISIOLOGIS" => "1400", "SISTEM^REFLEKS PATHOLOGIS" => "1401", "SISTEM^KESEIMBANGAN & KOORDINASI" => "1402", "SISTEM^REFLEKS NEUROLOGIS LAINNYA" => "1403", "ANGGOTA^EKSTRIMITAS ATAS" => "1500", "ANGGOTA^EKSTRIMITAS BAWAH" => "1501", "ANGGOTA^TONUS / OTOT" => "1502", "GENITOURINARIA^GENITOURINARIA" => "1600", "PERUT^ABDOMEN" => "1700", "PERUT^BISING USUS" => "1701", "PERUT^HATI" => "1702", "PERUT^LIMPA" => "1703", "PERUT^HERNIA" => "1704", "PERUT^HEMORROID" => "1705", "LEHER^LEHER" => "1800", "HIDUNG^HIDUNG" => "1900", "PERSEPSI_WARNA^PERSEPSI_WARNA" => "2000", "GIGI^TAMBALAN" => "3000", "GIGI^BERLUBANG" => "3001", "GIGI^TANGGAL" => "3002", "GIGI^SISA AKAR" => "3003", "GIGI^GIGI PALSU" => "3004", "GIGI^KARANG GIGI" => "3005", "GIGI^BERLUBANG" => "3006", "GIGI^NORMAL" => "3007", ]; $idx = strtoupper($parent . "^" . $name); if (in_array($idx, array_keys($map))) { return $map[$idx]; } return "XXXX"; } function get($url, $timeout = 60, $c_timeout = 5) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $c_timeout); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); $err_msg = curl_error($ch); if ($err_msg != "") { return json_encode(["status" => "ERR", "message" => $err_msg]); } return $result; } function reply_err($message) { echo json_encode(["status" => "ERR", "data" => $message]); exit(); } }