Files
BE_IBL/application/controllers/mockup/mitra/Generateorder.php
2026-04-15 15:24:12 +07:00

956 lines
34 KiB
PHP

<?php
class Generateorder extends MY_Controller
{
var $db_onedev;
public function index()
{
echo "CONTROL API";
}
public function __construct()
{
parent::__construct();
$this->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;
}
}