db = $this->load->database("regional", true); // string database } // 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 get_result_patient($id) { // $rows_result = $this->get_result_by_t_orderheader_id($id); // header $sql_header = "select concat(M_TitleName, ' ', ifnull(M_PatientPrefix,' '), M_PatientName, ifnull(M_PatientSuffix,'') ) as PatientFullName, M_PatientM_SexID, IFNULL(DATE_FORMAT(M_PatientDOB,'%Y%m%d'),'') as M_PatientDOB, fn_get_doctor_fullname(M_DoctorID) as M_DoctorFullName, M_DoctorCode, IFNULL(T_OrderHeaderLabNumberExt,'') as T_OrderHeaderLabNumberExt, IFNULL(T_OrderHeaderLabNumber,'') as T_OrderHeaderLabNumber, 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 join m_doctor ON T_OrderHeaderSenderM_DoctorID = M_DoctorID AND M_DoctorIsActive = 'Y'"; $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]; // pemeriksaan atau test // query detail periksa $sql_detail_periksa = "select T_OrderHeaderID, T_TestT_SampleTypeID, IFNULL(T_TestSasCode,'') as test_cd, IFNULL(T_TestName,'') as test_nm, '' as data_type, IFNULL(T_OrderDetailResult,'') as result_value, IFNULL(T_OrderDetailNat_UnitName,'') as unit, IFNULL(T_OrderDetailResultFlag,'') as flag, IFNULL(T_OrderDetailNormalValueNote,'') as ref_range, '' as status, '' as test_comment, '' as order_testid, '' as order_testnm, IFNULL(Nat_SubGroupName,'') as test_group, '' as item_parent, 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' 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; } $rows = $query_detail_periksa->result_array(); // sample // $sql_sample = "select // T_OrderSampleT_OrderHeaderID, // T_SampleTypeID, // '' as code, // IFNULL(Nat_BahanName,'') as name, // T_OrderSampleSamplingUserID as user_id, // M_UserUsername as user_name, // IFNULL(DATE_FORMAT(T_OrderSampleSamplingDate,'%d-%m-%Y %H:%i:%s'),'') as date // 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 m_user // ON T_OrderSampleSamplingUserID = M_UserID // AND M_UserIsActive = '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; // } $rows_sample = $this->get_sample($id); $data_detail = []; foreach($rows as $key => $r) { $xid = $r['T_OrderHeaderID']."-".$r['T_TestT_SampleTypeID']; // if(in_array()) $data_detail[] = [ 'test_cd' => $r['T_TestSasCode'], 'test_nm' => $r['T_TestName'], 'data_type' => $r['data_type'], 'result_value' => $r['T_OrderDetailResult'], 'unit' => $r['T_OrderDetailNat_UnitName'], 'flag' => $r['T_OrderDetailResultFlag'], 'ref_range' => $r['T_OrderDetailNormalValueNote'], 'status' => $r['status'], 'test_comment' => $r['test_comment'], "disp_seq"=> '', "order_testid"=> "", "order_testnm"=> "", "test_group"=> $r['Nat_SubGroupName'], "item_parent"=> null, "spesimen" => [] ]; if(in_array($xid,array_keys($rows_sample))){ $data_detail['spesimen'] = $rows_sample[$xid]; } } // $r_sample = $rows_sample[0]; if(count($rows_header) == 0) { echo json_encode( array( "order_patient_id" => 0, "patient" => [], "result" => [], "sample" => [] )); } else { echo json_encode ( array( "reglab" => $r_header['T_OrderHeaderLabNumber'], "medrec"=>"", "name"=>$rows_header[0]['PatientFullName'], "birt_dt"=>$rows_header[0]['M_PatientDOB'], "sex"=>$rows_header[0]['M_PatientM_SexID'], "source"=> [ "code"=> "", "name"=> "", "room_no"=> "" ], "clinican" => [ "code"=> $rows_header[0]['M_DoctorCode'], "name" => $rows_header[0]['M_DoctorFullName'] ], "comment"=>"", // "patient" => $rows_header, "detail" => $data_detail, // "sample" => $rows_sample ) ); } } function get_his_terima_hasil() { $prm = $this->sys_input; $no_lab = isset($prm['no_lab'])&&$prm['no_lab'] != ''?$prm['no_lab']:''; $sql_t_orderheader = "SELECT T_OrderHeaderID FROM t_orderheader WHERE T_OrderHeaderLabNumber = ?"; $qry_t_orderheader = $this->db->query($sql_t_orderheader,[ $no_lab ]); if(!$qry_t_orderheader){ $this->db->trans_rollback(); $this->sys_error_db(["status" => "ERR", "message" => "select m_patient info | " . $this->db->error()["message"], "debug" => $this->db->last_query()]); exit; } $data_t_orderheader = $qry_t_orderheader->result_array(); if(count($data_t_orderheader) == 0){ $this->db->trans_rollback(); $this->sys_error('Header Tidak Ketemu'); exit; } $T_OrderHeaderID = $data_t_orderheader[0]['T_OrderHeaderID']; $data_patient = $this->get_result_patient($T_OrderHeaderID); } function get_sample($T_OrderHeaderID) { // sample $sql_sample = "select T_OrderSampleT_OrderHeaderID, T_SampleTypeID, T_OrderSampleT_SampleTypeID, IFNULL(T_SampleTypeCode,'') as T_SampleTypeCode, IFNULL(T_SampleTypeName,'') as T_SampleTypeName, IFNULL(DATE_FORMAT(T_OrderSampleSamplingDate,'%Y%m%d'),'') as T_OrderSampleSamplingDate, T_OrderSampleSamplingTime, T_OrderSampleSamplingUserID, M_UserUsername 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 m_user ON T_OrderSampleSamplingUserID = M_UserID AND M_UserIsActive = 'Y' where T_OrderSampleIsActive = 'Y' AND T_OrderSampleT_OrderHeaderID = $T_OrderHeaderID ORDER BY T_OrderSampleT_OrderHeaderID, T_SampleTypeID, T_OrderSampleSamplingDate, T_OrderSampleSamplingTime desc"; $qry_sample = $this->db->query($sql_sample); if(!$qry_sample){ $this->db->trans_rollback(); $message = $this->db->error(); $this->sys_error($message); exit; } $rows = $qry_sample->result_array(); $arr_spesimen = []; foreach ($rows as $r) { if(!empty($r['T_OrderSampleT_OrderHeaderID'])){ // $xid = $r['T_OrderSampleT_OrderHeaderID']."-".$r['T_OrderSampleT_SampleTypeID']; // $xid = $r['T_SampleTypeCode']; // $arr_spesimen[$xid][] = // [ // "code" => $r['T_SampleTypeCode'], // "name" => $r['T_SampleTypeName'], // "user_id" => $r['T_OrderSampleSamplingUserID'], // "user_name" => $r['M_UserUsername'], // "date" => $r['T_OrderSampleSamplingDate'] // ]; // if (in_array($r['T_SampleTypeCode'], array_keys($arr_spesimen))){ // continue; // } $arr_spesimen[] = [ "code" => $r['T_SampleTypeCode'], "name" => $r['T_SampleTypeName'], "user_id" => $r['T_OrderSampleSamplingUserID'], "user_name" => $r['M_UserUsername'], "date" => $r['T_OrderSampleSamplingDate'].str_replace(":","",$r['T_OrderSampleSamplingTime']) ]; } } $output = []; $keys = []; foreach ($arr_spesimen as $item) { $key = $item['code'] . $item['date']; if (!in_array($key, $keys)) { array_push($output, $item); array_push($keys, $key); } } echo json_encode($output); // return $arr_spesimen; } function spesimen_data($T_OrderHeaderID) { // detail periksa $sql_detail_periksa = "select T_OrderHeaderID, T_TestT_SampleTypeID, IFNULL(T_TestSasCode,'') as test_cd, IFNULL(T_TestName,'') as test_nm, '' as data_type, IFNULL(T_OrderDetailResult,'') as result_value, IFNULL(T_OrderDetailNat_UnitName,'') as unit, IFNULL(T_OrderDetailResultFlag,'') as flag, IFNULL(T_OrderDetailNormalValueNote,'') as ref_range, '' as status, '' as test_comment, '' as order_testid, '' as order_testnm, IFNULL(Nat_SubGroupName,'') as test_group, '' as item_parent, 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' where T_OrderHeaderIsActive = 'Y' order by T_TestSasCode asc"; $query_detail_periksa = $this->db->query($sql_detail_periksa, [ $T_OrderHeaderID ]); if(!$query_detail_periksa){ $this->db->trans_rollback(); $message = $this->db->error(); $this->sys_error($message); exit; } $rowsx = $query_detail_periksa->result_array(); $rows_sample = $this->get_sample($T_OrderHeaderID); $arr_spesimen = []; foreach($rows as $r) { $xid = $r['T_OrderSampleT_OrderHeaderID']."-".$r['T_OrderSampleT_SampleTypeID']; // $xid = $r['T_OrderSampleT_OrderHeaderID']; if(in_array($xid,array_keys($rows_sample))){ $arr_spesimen[$xid]['details'][$idx_detail]['history'] = $rows_history[$testID]; } $arr_spesimen[$xid] = [ "T_OrderSampleT_OrderHeaderID" => $r['T_OrderSampleT_OrderHeaderID'], "T_SampleTypeID" => $r['T_SampleTypeID'] ]; } print_r("1"); // echo json_encode($arr_spesimen); } }