db = $this->load->database("regional", true); // string database $this->db_str_doctor = 'one_doctor'; } // 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_OrderHeaderAddOnValidationDone, T_OrderHeaderAddOnReadyPrint, T_OrderHeaderAddOnT_OrderHeaderID from t_orderheaderaddon where T_OrderHeaderAddOnT_OrderHeaderID = ? AND ( T_OrderHeaderAddOnValidationDone = 'Y' OR T_OrderHeaderAddOnValidationDone = 'P' )"; $query_validation_print = $this->db->query($sql_cek_validation_print, [ $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_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_OrderHeaderAddOnValidationDone, T_OrderHeaderAddOnReadyPrint, T_OrderHeaderAddOnT_OrderHeaderID from t_orderheaderaddon where T_OrderHeaderAddOnT_OrderHeaderID = ? AND ( T_OrderHeaderAddOnValidationDone = 'Y' OR T_OrderHeaderAddOnValidationDone = 'P' )"; $query_validation_print = $this->db->query($sql_cek_validation_print, [ $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_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_OrderHeaderAddOnValidationDone, T_OrderHeaderAddOnReadyPrint, T_OrderHeaderAddOnT_OrderHeaderID from t_orderheaderaddon JOIN $this->db_str_doctor.request_upload ON T_OrderHeaderAddOnT_OrderHeaderID = RequestUploadT_OrderHeaderID AND RequestUploadIsUploaded = 'N' where T_OrderHeaderAddOnT_OrderHeaderID = ? AND ( T_OrderHeaderAddOnValidationDone = 'Y' OR T_OrderHeaderAddOnValidationDone = 'P' )"; $query_validation_print = $this->db->query($sql_cek_validation_print, [ $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_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' JOIN $this->db_str_doctor.request_upload ON T_OrderHeaderID = RequestUploadT_OrderHeaderID AND RequestUploadIsUploaded = 'N' 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; } } function get_result_patient($id) { // $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' 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); $rows_result = $this->get_result_by_t_orderheader_id($id); $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' 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) { return array( "order_patient_id" => 0, "patient" => [], "result" => [], "sample" => [] ); } else { 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 $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"; $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() { $this->db->trans_begin(); $j_param = $this->get_result(); $result = json_decode($j_param,true); // 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 = []; 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; } $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'], "sample" => $key['sample'] ]; $upload_param[] = $data_json; $this->insert_upload_log($key['order_patient_id'], $data_json ); } // 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); $url = $this->APP_DOCTOR_API . "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()]); } $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) { $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(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) ]); // 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; } } } }