928 lines
34 KiB
PHP
928 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_rujukan_eksternal.t_order
|
|
JOIN one_rujukan_eksternal.t_orderdetail ON T_OrderDetailOrderID = T_OrderID
|
|
JOIN one_rujukan_eksternal.m_patient ON M_PatientID = T_OrderM_PatientID
|
|
JOIN one_rujukan_eksternal.t_orderdetaildelivery ON T_OrderDetailDeliveryT_OrderID = T_OrderID
|
|
JOIN one_rujukan_eksternal.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_rujukan_eksternal.t_order
|
|
JOIN one_rujukan_eksternal.t_orderdetail ON T_OrderDetailOrderID = T_OrderID
|
|
JOIN one_rujukan_eksternal.m_patient ON M_PatientID = T_OrderM_PatientID
|
|
JOIN one_rujukan_eksternal.t_orderdetaildelivery ON T_OrderDetailDeliveryT_OrderID = T_OrderID
|
|
JOIN one_rujukan_eksternal.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_rujukan_eksternal.t_order
|
|
JOIN one_rujukan_eksternal.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_rujukan_eksternal.t_order
|
|
JOIN one_rujukan_eksternal.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_rujukan_eksternal.t_order
|
|
JOIN one_rujukan_eksternal.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_rujukan_eksternal.t_order
|
|
JOIN one_rujukan_eksternal.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_rujukan_eksternal.t_order
|
|
JOIN one_rujukan_eksternal.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"];
|
|
//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_rujukan_eksternal.t_order
|
|
JOIN one_rujukan_eksternal.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_rujukan_eksternal.t_order
|
|
JOIN one_rujukan_eksternal.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_rujukan_eksternal.t_orderdetaildelivery
|
|
JOIN one_rujukan_eksternal.t_order ON T_OrderID = T_OrderDetailDeliveryT_OrderID
|
|
-- AND T_OrderStatus = 'R'
|
|
JOIN one_rujukan_eksternal.t_orderdetail ON T_OrderDetailOrderID = T_OrderID AND T_OrderDetailIsActive = 'Y'
|
|
JOIN one_rujukan_eksternal.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"];
|
|
$new_lab_number= $data["number"];
|
|
|
|
|
|
$sql = "UPDATE t_orderheader SET T_OrderHeaderLabNumber = ?WHERE T_OrderHeaderID = ?";
|
|
$query = $this->db_onedev->query($sql,array($new_lab_number,$new_oh_id));
|
|
|
|
//echo "2. $new_oh_id : $lab_number => $new_lab_number \n";
|
|
//update incoming_ref
|
|
$sql = "update one_rujukan_eksternal.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));
|
|
echo $this->db_onedev->last_query();
|
|
}
|
|
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_rujukan_eksternal.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_rujukan_eksternal.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;
|
|
}
|
|
|
|
|
|
}
|