db_onedev = $this->load->database("onedev", true); } function lookuptransaction(){ try { //# cek token valid if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $search = $prm['search']; $all = $prm['all']; $sdate = $prm['sdate']; $limit = ''; if($all == 'N'){ $limit = ' LIMIT 10'; } $number_limit = 10; $number_offset = ($prm['current_page'] - 1) * $number_limit ; $sql = "SELECT COUNT(*) as total FROM(SELECT T_OrderID from one_mitra.t_order JOIN one_mitra.t_orderdetail ON T_OrderDetailOrderID = T_OrderID JOIN one_mitra.m_patient ON M_PatientID = T_OrderM_PatientID JOIN one_mitra.t_orderdetaildelivery ON T_OrderDetailDeliveryT_OrderID = T_OrderID JOIN one_mitra.t_orderdelivery ON T_OrderDeliveryID = T_OrderDetailDeliveryT_OrderDeliveryID JOIN m_company ON M_CompanyID = T_OrderDeliveryM_CompanyID where T_OrderIsActive = 'Y' AND T_OrderStatus IN('T','R') AND (T_OrderDeliveryNumber LIKE CONCAT('%','{$search}','%') OR T_OrderNumber LIKE CONCAT('%','{$search}','%') OR M_CompanyName LIKE CONCAT('%','{$search}','%')) AND T_OrderT_OrderHeaderID IS NULL GROUP BY T_OrderID) a"; // $total = $this->db_onedev->query($sql,$sql_param)->row()->total; $query = $this->db_onedev->query($sql); //echo $this->db_onedev->last_query(); $tot_count = 0; $tot_page = 0; if ($query) { $tot_count = $query->result_array()[0]["total"]; $tot_page = ceil($tot_count/$number_limit); } else { $this->sys_error_db("t_order count", $this->db_onedev); exit; } $sql = "SELECT T_OrderID as id, DATE_FORMAT(T_OrderDeliveryDate,'%d-%m-%Y') as tanggal, t_order.*, T_OrderDeliveryID, T_OrderDeliveryNumber, M_CompanyName, M_PatientName, M_PatientIsNIK, M_PatientNIK, '' as T_TestName, '' as samples, '' as bahans, 'N' as ishide from one_mitra.t_order JOIN one_mitra.t_orderdetail ON T_OrderDetailOrderID = T_OrderID JOIN one_mitra.m_patient ON M_PatientID = T_OrderM_PatientID JOIN one_mitra.t_orderdetaildelivery ON T_OrderDetailDeliveryT_OrderID = T_OrderID JOIN one_mitra.t_orderdelivery ON T_OrderDeliveryID = T_OrderDetailDeliveryT_OrderDeliveryID JOIN m_company ON M_CompanyID = T_OrderDeliveryM_CompanyID where T_OrderIsActive = 'Y' AND T_OrderStatus IN('T','R') AND (T_OrderDeliveryNumber LIKE CONCAT('%','{$search}','%') OR T_OrderNumber LIKE CONCAT('%','{$search}','%') OR M_CompanyName LIKE CONCAT('%','{$search}','%')) AND T_OrderT_OrderHeaderID IS NULL GROUP BY T_OrderID ORDER BY T_OrderID DESC limit $number_limit offset $number_offset"; $sql_param = array($search); $query = $this->db_onedev->query($sql); //echo $this->db_onedev->last_query(); if ($query) { $rows = $query->result_array(); foreach($rows as $k => $v){ $incomingRefID = $v['T_OrderID']; $sampletypeid = 0; $sql = "SELECT GROUP_CONCAT(DISTINCT id SEPARATOR ',') as sampletypeid FROM (SELECT T_OrderDetailSampleNat_SampleTypeID as id from one_mitra.t_order JOIN one_mitra.t_orderdetailsample ON T_OrderDetailSampleT_OrderID = T_OrderID AND T_OrderDetailSampleIsActive = 'Y' AND T_OrderDetailSampleStatus = 'Y' where T_OrderID = '{$incomingRefID}' UNION SELECT Nat_SampleTypeID as id from one_mitra.t_order JOIN one_mitra.t_orderdetailbahan ON T_OrderDetailBahanT_OrderID = T_OrderID AND T_OrderDetailBahanIsActive = 'Y' AND T_OrderDetailBahanStatus = 'Y' JOIN nat_sampletype ON Nat_SampleTypeNat_BahanID = T_OrderDetailBahanNat_BahanID AND Nat_SampleTypeIsActive = 'Y' where T_OrderID = '{$incomingRefID}') a"; $query_sampletype = $this->db_onedev->query($sql)->row(); $sampletypeid = $query_sampletype->sampletypeid; $sql = "SELECT GROUP_CONCAT(DISTINCT T_OrderDetailTestName SEPARATOR ',') as test FROM one_mitra.t_order JOIN one_mitra.t_orderdetail ON T_OrderDetailOrderID = T_OrderID AND T_OrderDetailIsActive = 'Y' JOIN t_test ON T_TestID = T_OrderDetailTestID JOIN nat_test ON Nat_TestID = T_TestNat_TestID AND fn_worklist_get_sampletype(T_TestID) IN ($sampletypeid) where T_OrderID = $incomingRefID"; $query_test = $this->db_onedev->query($sql)->row(); $test = $query_test->test; $rows[$k]['T_TestName'] = $test; $sql = "SELECT GROUP_CONCAT(T_OrderDetailSampleName SEPARATOR ',') as name from one_mitra.t_order JOIN one_mitra.t_orderdetailsample ON T_OrderDetailSampleT_OrderID = T_OrderID AND T_OrderDetailSampleIsActive = 'Y' AND T_OrderDetailSampleStatus = 'Y' where T_OrderID = '{$incomingRefID}'"; $query_samples = $this->db_onedev->query($sql)->row(); $samples = $query_samples->name; $rows[$k]['samples'] = $samples; $sql = "SELECT GROUP_CONCAT(T_OrderDetailBahanName SEPARATOR ',') as name from one_mitra.t_order JOIN one_mitra.t_orderdetailbahan ON T_OrderDetailBahanT_OrderID = T_OrderID AND T_OrderDetailBahanIsActive = 'Y' AND T_OrderDetailBahanStatus = 'Y' where T_OrderID = '{$incomingRefID}'"; $query_bahans = $this->db_onedev->query($sql)->row(); $bahans = $query_bahans->name; $rows[$k]['bahans'] = $bahans; } } else { $this->sys_error_db("future_order select"); exit; } $result = array ("total" => $tot_page, "total_filter"=>count($rows),"records" => $rows); $this->sys_ok($result); } catch(Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } public function fix() { try { //# cek token valid if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $incomingRefID = $prm["id"]; $doctorid = $prm["doctorid"]; $doctoraddressid = $prm["doctoraddressid"]; $sql = "CALL `sp_pre_analytic_add`();"; $r = $this->db_onedev->query($sql); $this->clean_mysqli_connection($this->db_onedev->conn_id); //generate order $rst = $this->ref_order($incomingRefID,$doctorid,$doctoraddressid); if ($rst["status"] != "OK" ) { $this->sys_error($rst["message"]); exit; } $this->sys_ok($rst["message"]); exit; } catch(Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function ref_order($incomingRefID,$doctorID,$doctorAddressID) { //$adminUserID = 3; $adminUserID = $this->sys_user["M_UserID"] ; //create order yg di confirm saja $sampletypeid = 0; $sql = "SELECT GROUP_CONCAT(DISTINCT id SEPARATOR ',') as sampletypeid FROM (SELECT T_OrderDetailSampleNat_SampleTypeID as id from one_mitra.t_order JOIN one_mitra.t_orderdetailsample ON T_OrderDetailSampleT_OrderID = T_OrderID AND T_OrderDetailSampleIsActive = 'Y' AND T_OrderDetailSampleStatus = 'Y' where T_OrderID = '{$incomingRefID}' UNION SELECT Nat_SampleTypeID as id from one_mitra.t_order JOIN one_mitra.t_orderdetailbahan ON T_OrderDetailBahanT_OrderID = T_OrderID AND T_OrderDetailBahanIsActive = 'Y' AND T_OrderDetailBahanStatus = 'Y' JOIN nat_sampletype ON Nat_SampleTypeNat_BahanID = T_OrderDetailBahanNat_BahanID AND Nat_SampleTypeIsActive = 'Y' where T_OrderID = '{$incomingRefID}') a"; $query_sampletype = $this->db_onedev->query($sql)->row(); if($query_sampletype) $sampletypeid = $query_sampletype->sampletypeid; $sql = "select * from one_mitra.t_orderdetaildelivery JOIN one_mitra.t_order ON T_OrderID = T_OrderDetailDeliveryT_OrderID -- AND T_OrderStatus = 'R' JOIN one_mitra.t_orderdetail ON T_OrderDetailOrderID = T_OrderID AND T_OrderDetailIsActive = 'Y' JOIN one_mitra.m_patient ON M_PatientID = T_OrderM_PatientID JOIN t_test ON T_TestID = T_OrderDetailTestID JOIN nat_test ON Nat_TestID = T_TestNat_TestID AND fn_worklist_get_sampletype(T_TestID) IN ($sampletypeid) where T_OrderDetailDeliveryT_OrderID = ? order by T_OrderID ASC, T_OrderDetailID ASC"; $qry = $this->db_onedev->query($sql, array($incomingRefID) ); $orders = array(); $ax_test = array(); $a_promise = array(); $a_barcode = array(); $a_ref_detail = array(); if ($qry) { $rows = $qry->result_array(); $prev_oh_id = 0; foreach($rows as $r) { $mouID = $r["T_OrderM_MouID"]; $companyID = $r["T_OrderM_CompanyID"]; $oh_id = $r["T_OrderDetailDeliveryT_OrderID"]; $incomingRefDetailFoNote = $r["T_OrderNote"]; $incomingRefDetailVefificationNote = $r["T_OrderDiagnosis"]; if ( ! isset($orders[$oh_id]) ) { $orders[$oh_id]["patient"] = $r["T_OrderM_PatientID"]; $orders[$oh_id]["isnik"] = $r["M_PatientIsNIK"]; $orders[$oh_id]["nik"] = $r["M_PatientNIK"]; $orders[$oh_id]["foNote"] = $incomingRefDetailFoNote; $orders[$oh_id]["verificationNote"] = $incomingRefDetailVefificationNote; $orders[$oh_id]["samplingNote"] = ''; $orders[$oh_id]["LabNumber"] = ''; $orders[$oh_id]["test"] = array(); } $orders[$oh_id]["test"][] = array ( "T_TestID" => $r["T_OrderDetailTestID"], "Promise" => '', "T_OrderDetailID" => '', "T_BarcodeLabBarcode" => '', "Requirements" => '' ); $ax_test[] = $r["T_OrderDetailTestID"]; $a_promise[$oh_id][$r["T_OrderDetailTestID"]] = ''; $a_barcode[$oh_id][$r["T_OrderDetailTestID"]] = ''; $a_ref_detail[] = $r["T_OrderDetailID"]; } } $s_test = "0," . join(",",$ax_test); $sql = "select * from ss_price_mou where Ss_PriceMouM_MouID = ? and T_TestID in ( $s_test ) "; $qry = $this->db_onedev->query($sql, array($mouID) ); //test primer sama dengan T_TestID $a_test = array(); if ($qry ) { $rows = $qry->result_array(); foreach($rows as $r) { $testID = $r["T_TestID"]; $a_test[$testID] = array( "T_PriceAmount" => $r["T_PriceAmount"], "T_PriceDiscRp" => $r["T_PriceDiscRp"], "T_PriceDisc" => $r["T_PriceDisc"] ); } } //test sekunder dari Nat_Test $a_test_v2 = array(); $sql = "select ss_price_mou.* from ss_price_mou where Ss_PriceMouM_MouID = ? and ss_price_mou.T_TestID in ( select s.T_TestID from t_test s join t_test p on s.T_TestNat_TestID = p.T_TestNat_TestID and p.T_TestID in ( $s_test ) ) "; $qry = $this->db_onedev->query($sql, array($mouID) ); //test primer sama dengan T_TestID if ($qry ) { $rows = $qry->result_array(); foreach($rows as $r) { $testID = $r["T_TestID"]; $a_test_v2[$testID] = array( "T_PriceAmount" => $r["T_PriceAmount"], "T_PriceDiscRp" => $r["T_PriceDiscRp"], "T_PriceDisc" => $r["T_PriceDisc"] ); } } $message = ""; foreach($orders as $oh_id => $o){ $patientID = $this->create_patient($orders[$oh_id]["patient"],$orders[$oh_id]["isnik"],$orders[$oh_id]["nik"],$companyID,$adminUserID); if ($patientID == 0 ) { if ($message != "" ) $message .= ","; $message .= "[ $lab_number, gagal buat pasien $noreg ]"; continue; } $sql = "select fn_global_age_count(M_PatientDOB,now()) age from m_patient where M_PatientID = ? "; $qry = $this->db_onedev->query($sql, array($patientID) ); $patientAge = ""; if ($qry) { $rows = $qry->result_array(); if (count($rows) > 0 ) { $patientAge = $rows[0]["age"]; } } //echo "1. $lab_number : $patientID \n"; //register order $xheader = array( 'patient_id' => $patientID, 'age' => $patientAge, 'sender_doctor_id' => $doctorID, 'sender_address_id' => $doctorAddressID, 'company_id' => $companyID, 'mou_id' => $mouID, 'lang_id' => '1', 'lang_si' => 'N', 'doctor_note' => '', 'fo_note' => $orders[$oh_id]["foNote"], 'queue' => '', 'received_sample' => 'Y', 'lang_id_2' => '2', 'lang_si_2' => 'N', ); $sql = "select M_CompanyAddress, M_CompanyM_KelurahanID from m_company where M_CompanyID = ?"; $qry = $this->db->query($sql, array($companyID)); $rows = $qry->result_array(); $xdel = array( array( 'address_id' => $companyID, 'delivery_id' => '10', 'delivery_type_id' => '2', 'senderdoctorid' => $doctorID, 'senderaddressid' => $doctorAddressID, 'note' => $rows[0]['M_CompanyAddress'], 'kelurahan' => $rows[0]['M_CompanyM_KelurahanID'] )); $xdet = array(); $reqs = array(); foreach($orders[$oh_id]["test"] as $t ) { if ( isset($a_test[$t["T_TestID"]]) ) { $v=$a_test[$t["T_TestID"]]; $xdet[] = array( 't_id' => $t['T_TestID'], 't_cito' => 'N', 't_price' => $v['T_PriceAmount'], 't_disc' => $v['T_PriceDisc'], 't_discrp' => $v['T_PriceDiscRp'], 't_req' => 'Y', 't_reqnote' => '', 't_ispacket' => "N", 't_packettype' => "PX", 't_packetid' => '0' ); } elseif ( isset($a_test_v2["T_TestID"] ) ) { $v=$a_test_v2[$t["T_TestID"]]; $xdet[] = array( 't_id' => $t['T_TestID'], 't_cito' => 'N', 't_price' => $v['T_PriceAmount'], 't_disc' => $v['T_PriceDisc'], 't_discrp' => $v['T_PriceDiscRp'], 't_req' => 'Y', 't_reqnote' => '', 't_ispacket' => "N", 't_packettype' => "PX", 't_packetid' => '0' ); } else { $xdet[] = array( 't_id' => $t['T_TestID'], 't_cito' => 'N', 't_price' => 0, 't_disc' => 0, 't_discrp' => 0, 't_req' => 'Y', 't_reqnote' => '', 't_ispacket' => "N", 't_packettype' => "PX", 't_packetid' => '0' ); } if (count($t["Requirements"]) > 0 ) { $reqs = array_merge($reqs, $t["Requirements"]); } } //requirements $xreq = array( 'status' => 'Y', 'reqs' => '[]' ); $header_json = addslashes(str_replace('\n', '\\\n', json_encode($xheader))); $delivery_json = addslashes(str_replace('\n', '\\\n', json_encode($xdel))); $detail_json = addslashes(str_replace('\n', '\\\n', json_encode($xdet))); $req_json = json_encode($xreq); $sql = "CALL `sp_fo_register_save_v5`( 0, '{$header_json}', '{$delivery_json}', '{$detail_json}', '{$req_json}', '{$adminUserID}' );"; $r = $this->db_onedev->query($sql)->row(); //echo $this->db_onedev->last_query(); $this->clean_mysqli_connection($this->db_onedev->conn_id); if ($r->status != "OK" ) { if ($message != "" ) $message .= ","; $xmsg = print_r($r, true); $message .= "[ $lab_number, gagal sp_fo_register_save_v5 : $xmsg ]"; $g_date = date("Y-m-d H:i:s"); file_put_contents("/xtmp/gagal-order.log","$g_date $message\n", FILE_APPEND); continue; } $data = json_decode($r->data,true); $new_oh_id = $data["id"]; $bnr = ''; $labnumber = ''; if ($prm['barcode'] && $prm['barcode'] != '') { $bnr = ", T_OrderHeaderAddOnBNR = '{$prm['barcode']}'"; $labnumber = $prm['barcode']; }else{ $kd_cbg = '#'; $sql = "SELECT M_BranchCode as kode from m_branch where M_BranchIsActive = 'Y' and M_BranchIsDefault = 'Y' limit 0,1"; //echo $sql; $query_branch = $this->db_onedev->query($sql)->row(); if($query_branch) $kd_cbg = $query_branch->kode; $sql = "SELECT CONCAT(`fn_numbering`('LAB'),'{$kd_cbg}') as xnumber"; //echo $sql; $query_labnumber = $this->db_onedev->query($sql)->row(); if($query_labnumber) $labnumber = $query_labnumber->xnumber; //echo $labnumber; if($kd_cbg == '#'){ $this->sys_error_db("gagal simpan order", $this->db_onedev); exit; } } $sql = "UPDATE t_orderheader SET T_OrderHeaderLabNumber = ?, T_OrderHeaderLabNumberExt = ? WHERE T_OrderHeaderID = ?"; $query = $this->db_onedev->query($sql,array($labnumber,$labnumber,$new_oh_id)); $new_lab_number= $labnumber; //echo "2. $new_oh_id : $lab_number => $new_lab_number \n"; //update incoming_ref $sql = "update one_mitra.t_order set T_OrderT_OrderHeaderID=?, T_OrderM_PatientNewID = ? , T_OrderStatus = 'P' where T_OrderID=?"; $this->db_onedev->query($sql,array($new_oh_id, $patientID, $incomingRefID)); /* $sql = "update t_orderheaderaddon set T_OrderHeaderAddOnLabNumberOrigin=? where T_OrderHeaderAddOnT_OrderHeaderID = ?"; $this->db_onedev->query($sql,array($lab_number,$new_oh_id)); */ //update promise $a_promise_test = array(); $a_promise_date= array(); $a_promise_id= array(); /* foreach($a_promise[$oh_id] as $testID => $promise ) { if(!isset($a_promise_date[$promise])) { $sql = "insert into t_orderpromise(T_OrderPromiseT_OrderHeaderID, T_OrderPromiseDateTime) values(?,?)"; $this->db_onedev->query($sql, array($new_oh_id,$promise)); $promise_id = $this->db_onedev->insert_id(); $a_promise_test[$testID] = $promise_id; $a_promise_date["$promise"] = $promise_id; } else { $a_promise_test[$testID] = $a_promise_date["$promise"]; } } if ( count($a_promise_test) > 0 ) { $s_test = join(",", array_keys($a_promise_test)); $sql = "update t_orderpromise,t_orderdetail set T_OrderPromiseIsActive = 'N' where T_OrderPromiseID = T_OrderDetailT_OrderPromiseID and T_OrderDetailT_OrderHeaderID = ? and T_OrderDetailT_TestID in ($s_test) "; $this->db_onedev->query($sql, array($new_oh_id)); } foreach($a_promise_test as $testID => $promiseID ) { $sql = "update t_orderdetail set T_OrderDetailT_OrderPromiseID= ? where T_OrderDetailT_OrderHeaderID = ? and T_OrderDetailT_TestID = ? "; $this->db_onedev->query($sql, array($promiseID , $new_oh_id, $testID) ); } */ //insert requirements foreach($reqs as $r) { $sql ="insert into t_orderreq(T_OrderReqT_OrderHeaderID,T_OrderReqNat_PositionID, T_OrderReqStatus, T_OrderReqT_TestID, T_OrderReqs) values(?,?, ?,?,?)"; $this->db_onedev->query($sql, array($new_oh_id, $r["T_OrderReqNat_PositionID"], $r["T_OrderReqStatus"], $r["T_OrderReqT_TestID"], $r["T_OrderReqs"] )); } //update note $sql = "update t_orderheader set T_OrderHeaderFoNote = ? , T_OrderHeaderFoNoteM_UserID = ?, T_OrderHeaderSamplingNote = ?, T_OrderHeaderSamplingNoteM_UserID = ?, T_OrderHeaderVerificationNote = ?, T_OrderHeaderVerificationNoteM_UserID = ? where T_OrderHeaderID = ? "; $this->db_onedev->query($sql, array( $o["foNote"],$adminUserID, $o["samplingNote"], $adminUserID, $o["verificationNote"], $adminUserID, $new_oh_id)); $result = $this->fo_verify($new_oh_id,$adminUserID); $samplingtime = date("Y-m-d H:i:s"); $this->load->library("Autosamplingverif"); $result = $this->autosamplingverif->doaction($new_oh_id,$samplingtime,$adminUserID); /* //update t_barcodelab foreach($a_barcode[$oh_id] as $testID => $barcode) { $sql = "update t_barcodelab,t_test set T_BarcodeLabBarcodeOrigin =? where T_BarcodeLabT_OrderHeaderID = ? and T_TestID = ? and T_TestIsActive = 'Y' and T_BarcodeLabT_SampleTypeID = T_TestT_SampleTypeID"; $this->db_onedev->query($sql, array($barcode, $new_oh_id, $testID)); } //fix t_barcodelab foreach($a_ref_detail as $rd) { $this->fix_barcodelab($rd); //echo 'fix barcodelab' . $rd; } // update nilai normal $sql = "select distinct T_OrderDetailT_OrderHeaderID id, T_TestT_SampleTypeID sid from t_orderdetail join t_test on T_OrderDetailT_OrderHeaderID = ? and T_OrderDetailIsActive = 'Y' and T_OrderDetailT_TestID = T_TestID and T_TestIsActive = 'Y' "; $qry = $this->db_onedev->query($sql, array($new_oh_id)); if ($qry) { $rows = $qry->result_array(); foreach($rows as $r) { $sql = "call sp_sampling_set_normal(?,?)"; $this->db_onedev->query($sql,array($r["id"],$r["sid"])); } } */ if ($message != "" ) $message .= ","; $message .= "[ $new_lab_number Fo Verify : $result ]"; } return array( "status" => "OK", "message" => $message ); } function create_patient($pat_id,$isnik,$nik,$com_id, $userID) { if($isnik == 'N'){ $sql = "select * from one_mitra.m_patient where M_PatientID = ?"; $qry = $this->db->query($sql, array($pat_id)); $rows = $qry->result_array(); $p_name = stripslashes($rows[0]['M_PatientName']); $p_name2 = stripslashes($p_name); $patient_name = str_replace("'", "\\'", $p_name2); $pnote = ''; $pdob = date('Y-m-d',strtotime($rows[0]['M_PatientDOB'])); $pob = str_replace("'", "", $rows[0]['M_PatientPOB']); $hp = str_replace("'", "",$rows[0]['M_PatientHP']); $query ="INSERT INTO m_patient ( M_PatientM_TitleID, M_PatientName, M_PatientDOB, M_PatientM_SexID, M_PatientM_ReligionID, M_PatientEmail, M_PatientPOB, M_PatientHP, M_PatientPhone, M_PatientM_IdTypeID, M_PatientIDNumber, M_PatientNote, M_PatientUserID ) VALUES( '{$rows[0]['M_PatientTitleID']}', '{$patient_name}', '{$pdob}', '{$rows[0]['M_PatientM_SexID']}', '0', '0', '{$pob}', '{$hp}', '', '1', '{$rows[0]['M_PatientNIK']}', '{$pnote}', $userID )"; $qry = $this->db_onedev->query($query); $patientID = 0; if ($qry ) { $patientID = $this->db_onedev->insert_id(); } // echo $this->db_onedev->last_query(); // $sql = "select M_CompanyAddress, M_CompanyM_KelurahanID from m_company where M_CompanyID = ?"; $qry = $this->db->query($sql, array($com_id)); $rows = $qry->result_array(); $sql = "insert into m_patientaddress(M_PatientAddressM_PatientID, M_PatientAddressNote, M_PatientAddressDescription,M_PatientAddressLocation,M_PatientAddressM_KelurahanID) values(?,?, ?,?,?) "; $this->db_onedev->query($sql,array($patientID,'KANTOR',$rows[0]['M_CompanyAddress'],$rows[0]['M_CompanyAddress'], $rows[0]['M_CompanyM_KelurahanID'])); }else{ $sql = "select * from m_patient where M_PatientM_IdTypeID = 1 AND M_PatientIDNumber = ? AND M_PatientIsActive = 'Y'"; $qry = $this->db->query($sql, array($nik)); $rows = $qry->result_array(); if(count($rows) == 0){ $sql = "select * from one_mitra.m_patient where M_PatientID = ?"; $qry = $this->db->query($sql, array($pat_id)); $xrows = $qry->result_array(); $p_name = stripslashes($xrows[0]['M_PatientName']); $p_name2 = stripslashes($p_name); $patient_name = str_replace("'", "\\'", $p_name2); $pnote = ''; $pdob = date('Y-m-d',strtotime($xrows[0]['M_PatientDOB'])); $pob = str_replace("'", "", $xrows[0]['M_PatientPOB']); $hp = str_replace("'", "",$xrows[0]['M_PatientHP']); $query ="INSERT INTO m_patient ( M_PatientM_TitleID, M_PatientName, M_PatientDOB, M_PatientM_SexID, M_PatientM_ReligionID, M_PatientEmail, M_PatientPOB, M_PatientHP, M_PatientPhone, M_PatientM_IdTypeID, M_PatientIDNumber, M_PatientNote, M_PatientUserID ) VALUES( '{$xrows[0]['M_PatientTitleID']}', '{$patient_name}', '{$pdob}', '{$xrows[0]['M_PatientM_SexID']}', '0', '0', '{$pob}', '{$hp}', '', '1', '{$xrows[0]['M_PatientNIK']}', '{$pnote}', $userID )"; $qry = $this->db_onedev->query($query); $patientID = 0; if ($qry ) { $patientID = $this->db_onedev->insert_id(); } // echo $this->db_onedev->last_query(); // $sql = "select M_CompanyAddress, M_CompanyM_KelurahanID from m_company where M_CompanyID = ?"; $qry = $this->db->query($sql, array($com_id)); $rows = $qry->result_array(); $sql = "insert into m_patientaddress(M_PatientAddressM_PatientID, M_PatientAddressNote, M_PatientAddressDescription,M_PatientAddressLocation,M_PatientAddressM_KelurahanID) values(?,?, ?,?,?) "; $this->db_onedev->query($sql,array($patientID,'KANTOR',$rows[0]['M_CompanyAddress'],$rows[0]['M_CompanyAddress'], $rows[0]['M_CompanyM_KelurahanID'])); }else{ $patientID = $rows[0]['M_PatientID']; } } return $patientID; } function fo_verify($orderID,$userID) { $sql="INSERT INTO fo_verificationsvalue ( Fo_VerificationsValueT_OrderHeaderID, Fo_VerificationsValueFo_VerificationsLabelID, Fo_VerificationsValueCheck, Fo_VerificationsValueNote, Fo_VerificationsValueUserID, Fo_VerificationsValueCreated ) SELECT {$orderID}, Fo_VerificationsLabelID, 'Y', '', {$userID}, NOW() FROM fo_verificationslabel WHERE Fo_VerificationsLabelIsActive = 'Y' "; $this->db_onedev->query($sql); $sql = "call sp_fo_barcode_generate({$orderID})"; $this->db_onedev->query($sql); $fostatusid = 3; $fologcode = 'FO.VERIFICATION.CONFIRM'; $sql = "insert into fo_status( Fo_StatusDate, Fo_StatusT_OrderHeaderID, Fo_StatusM_StatusID, Fo_StatusM_UserID, Fo_StatusCreated, Fo_StatusUpdated) values( now(), ?, ?, ?, now(),now())"; $query = $this->db_onedev->query($sql, array( $orderID, $fostatusid, $userID ) ); if (!$query) { return "Error Fo Status"; } $sql = "SELECT * FROM fo_verificationsvalue WHERE Fo_VerificationsValueT_OrderHeaderID = {$orderID}"; $data_log = array(); $data_log['orderid'] = $orderID; $data_log['values'] = $this->db_onedev->query($sql)->result_array(); $data_log['note'] = ''; $json_dt_log = json_encode($data_log); $sql = "insert into one_log.log_fo( Log_FoDate, Log_FoCode, Log_FoJson, Log_FoUserID) values( now(), ?, ?, ?)"; $query = $this->db_onedev->query($sql, array( $fologcode, $json_dt_log, $userID ) ); if (!$query) { return "Error Fo Log"; } /* T_OrderSample $adminUserID = $userID; $sql = "update t_ordersample set T_OrderSampleSampling='Y', T_OrderSampleSamplingDate = now(), T_OrderSampleSamplingTime = now(),T_OrderSampleSamplingUserID = $adminUserID, T_OrderSampleReceive='Y', T_OrderSampleReceiveDate = now() , T_OrderSampleReceiveTime = now(), T_OrderSampleReceiveUserID = $adminUserID, T_OrderSampleVerification='Y', T_OrderSampleVerificationDate=now(), T_OrderSampleVerificationTime=now(), T_OrderSampleVerificationUserID = $adminUserID, T_OrderSampleSendHandling = 'Y', T_OrderSampleSendHandlingDate =now(), T_OrderSampleSendHandlingTime=now(), T_OrderSampleSendHandlingUserID = $adminUserID, T_OrderSampleReceiveHandling = 'Y', T_OrderSampleReceiveHandlingDate=now(), T_OrderSampleReceiveHandlingTime=now(), T_OrderSampleReceiveHandlingUserID=$adminUserID, T_OrderSampleHandling='Y', T_OrderSampleHandlingDate=now(), T_OrderSampleHandlingTime=now(), T_OrderSampleHandlingUserID=$adminUserID, T_OrderSampleProcessing='Y', T_OrderSampleReadyToProcessDateTime=now(), T_OrderSampleProcessingDate=now(), T_OrderSampleProcessingTime=now(), T_OrderSampleProcessingUserID=$adminUserID, T_OrderSampleUserID=$adminUserID where T_OrderSampleT_OrderHeaderID = ?"; $qry = $this->db_onedev->query($sql, array($orderID) ); if (!$qry) { return "Error T_OrderSample : " . $this->db_onedev->last_query(); } */ return "OK"; } function searchdoctor(){ if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $max_rst = 12; $tot_count =0; $q = [ 'search' => '%' ]; if ($prm['search'] != '') { $q['search'] = "%{$prm['search']}%"; } // QUERY TOTAL $sql = "SELECT count(*) as total FROM(SELECT M_DoctorID, CONCAT(M_DoctorPrefix, ' ',M_DoctorName) as M_DoctorName FROM m_doctor WHERE M_DoctorIsActive = 'Y') a WHERE M_DoctorName like ?"; $query = $this->db_onedev->query($sql,$q['search']); //echo $query; if ($query) { $tot_count = $query->result_array()[0]["total"]; } else { $this->sys_error_db("m_doctor count",$this->db_onedev); exit; } $sql = "SELECT * FROM(SELECT M_DoctorID, CONCAT(M_DoctorPrefix, ' ',M_DoctorName) as M_DoctorName FROM m_doctor WHERE M_DoctorIsActive = 'Y') a WHERE M_DoctorName like ? GROUP BY M_DoctorID ORDER BY M_DoctorName ASC"; $query = $this->db_onedev->query($sql, array($q['search'])); if ($query) { $rows = $query->result_array(); //echo $this->db_onedev->last_query(); $result = array("total" => $tot_count, "records" => $rows, "total_display" => sizeof($rows)); $this->sys_ok($result); } else { $this->sys_error_db("m_doctor rows",$this->db_onedev); exit; } } function selectaddressdoctor(){ try { //# cek token valid if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $id = $prm['id']; $rows = []; $query ="SELECT M_DoctorAddressID, CONCAT(M_DoctorAddressNote, ': ',M_DoctorAddressDescription) as M_DoctorAddressNote FROM m_doctoraddress WHERE M_DoctorAddressIsActive = 'Y' AND M_DoctorAddressM_DoctorID = '{$id}'"; //echo $query; $rows['addressdoctors'] = $this->db_onedev->query($query)->result_array(); $result = array( "total" => count($rows) , "records" => $rows, ); $this->sys_ok($result); } catch(Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function post($url) { //$data = $data; $ch = curl_init($url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); //echo "RST : $result "; return $result; } function postold($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_TIMEOUT, 12); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($data)) ); $result = curl_exec($ch); if (curl_errno($ch)){ return json_encode( array("status" => "ERR", "message" => curl_error($ch)) ); } curl_close($ch); return $result; } }