Files
BE_IBL/application/controllers/mockup/fo/ibl_registration/Order copy.php
2026-04-15 15:24:34 +07:00

1375 lines
47 KiB
PHP

<?php
class Order extends MY_Controller
{
var $db_smartone;
public function index()
{
echo "ORDER API";
}
public function __construct()
{
parent::__construct();
$this->db_smartone = $this->load->database("onedev", true);
}
function get_time_start(){
$rows = date("Y-m-d H:i:s");
$this->sys_ok(["records"=>$rows, "total"=>1, "q"=>$this->db_smartone->last_query()]);
}
function check_exist_details($details,$detail){
$rst = false;
foreach ($details as $key => $value) {
if($value['t_id'] == $detail['t_id'])
$rst = true;
}
return $rst;
}
function convert_to_normal_text($text) {
$normal_characters = "a-zA-Z0-9\s`~!@#$%^&*()_+-={}|:;<>?,.\/\"\'\\\[\]";
$normal_text = preg_replace("/[^$normal_characters]/", '', $text);
return $normal_text;
}
function save()
{
$prm = $this->sys_input;
$preid = $prm['preid'];
$hdr = $prm['header'];
$req = $prm['req'];
$details_now = array();
foreach ($prm['detail'] as $k_det => $v_det) {
if(!$this->check_exist_details($details_now,$v_det))
array_push($details_now,$v_det);
}
$prm['detail'] = $details_now;
$tests = $prm['tests'];
$userid = $this->sys_user["M_UserID"];
$this->db_smartone->trans_begin();
$sqlheader = "INSERT INTO t_orderheader
(T_OrderHeaderM_StatusCode,
T_OrderHeaderM_BranchID,
T_OrderHeaderDate,
T_OrderHeaderLabNumber,
T_OrderHeaderM_PatientID,
T_OrderHeaderCorporateID,
T_OrderHeaderMgm_McuID,
T_OrderHeaderM_PatientAge,
T_OrderHeaderPjM_DoctorID,
T_OrderHeaderDiagnose,
T_OrderHeaderFoNote,
T_OrderHeaderSamplingNote,
T_OrderHeaderResultNote,
T_OrderHeaderFoNoteM_UserID,
T_OrderHeaderSamplingNoteM_UserID,
T_OrderHeaderResultNoteM_UserID,
T_OrderHeaderCreated,
T_OrderHeaderLastUpdated,
T_OrderHeaderCreatedUserID,
T_OrderHeaderLastUpdatedUserID)
VALUES(
'RG',
'{$hdr['branch_id']}',
now(),
fn_numbering('T'),
'{$hdr['patient_id']}',
'{$hdr['company_id']}',
'{$prm['mcuid']}',
'{$hdr['age']}',
'{$hdr['sender_doctor_id']}',
'{$hdr['diagnose']}',
'{$hdr['fo_note']}',
'',
'',
$userid,
0,
0,
now(),
now(),
$userid,
$userid)";
$queryheader = $this->db_smartone->query($sqlheader);
if($queryheader)
{
$header_id = $this->db_smartone->insert_id();
$sqlheaderlang = "INSERT INTO t_orderheaderlang
(T_OrderHeaderLangT_OrderHeaderID,
T_OrderHeaderLangM_LangID,
T_OrderHeaderLangCreated,
T_OrderHeaderLangCreatedUserID,
T_OrderHeaderLangLastUpdated,
T_OrderHeaderLangLastUpdatedUserID)
VALUES(
'{$header_id}',
1,
now(),
$userid,
now(),
$userid)";
$queryheaderlang = $this->db_smartone->query($sqlheaderlang);
if(!$queryheaderlang){
$this->db_smartone->trans_rollback();
$this->sys_error_db(["status" => "ERR", "message" => "insert t_orderheaderlang | " .
$this->db_smartone->error()["message"], "debug" => $this->db_smartone->last_query()]);
exit;
}
$this->db_smartone->trans_commit();
foreach($tests as $k => $v){
if($v['is_packet'] == 'Y'){
$sqlt_orderdetailorder = "INSERT INTO t_orderdetailorder(
T_OrderDetailOrderT_OrderHeaderID,
T_OrderDetailOrderT_TestID,
T_OrderDetailOrderT_TestName,
T_OrderDetailOrderIsPacket,
T_OrderDetailOrderPacketType,
T_OrderDetailOrderT_PacketID,
T_OrderDetailOrderT_PacketName,
T_OrderDetailOrderCreated,
T_OrderDetailOrderCreatedUserID,
T_OrderDetailOrderLastUpdated,
T_OrderDetailOrderLastUpdatedUserID,
T_OrderDetailOrderJsonChildren)
VALUES(
$header_id,
0,
'',
'{$v['is_packet']}',
'{$v['px_type']}',
'{$v['packet_id']}',
'{$v['T_TestName']}',
now(),
$userid,
now(),
now(),
'')";
//echo $sqlorder;
$queryt_orderdetailorder = $this->db_smartone->query($sqlt_orderdetailorder);
if(!$queryt_orderdetailorder){
$this->db_smartone->trans_rollback();
$this->sys_error_db(["status" => "ERR", "message" => "insert t_orderdetailorder | " .
$this->db_smartone->error()["message"], "debug" => $this->db_smartone->last_query()]);
exit;
}
$this->db_smartone->trans_commit();
$detail_id = $this->db_smartone->insert_id();
}else{
$sqlt_orderdetailorder = "INSERT INTO t_orderdetailorder(
T_OrderDetailOrderT_OrderHeaderID,
T_OrderDetailOrderT_TestID,
T_OrderDetailOrderT_TestName,
T_OrderDetailOrderIsPacket,
T_OrderDetailOrderPacketType,
T_OrderDetailOrderT_PacketID,
T_OrderDetailOrderT_PacketName,
T_OrderDetailOrderCreated,
T_OrderDetailOrderCreatedUserID,
T_OrderDetailOrderLastUpdated,
T_OrderDetailOrderLastUpdatedUserID,
T_OrderDetailOrderJsonChildren)
VALUES(
$header_id,
'{$v['T_TestID']}',
'{$v['T_TestName']}',
'{$v['is_packet']}',
'',
0,
'',
now(),
$userid,
now(),
now(),
'')";
//echo $sqlorder;
$queryt_orderdetailorder = $this->db_smartone->query($sqlt_orderdetailorder);
if(!$queryt_orderdetailorder){
$this->db_smartone->trans_rollback();
$this->sys_error_db(["status" => "ERR", "message" => "insert t_orderdetailorder | " .
$this->db_smartone->error()["message"], "debug" => $this->db_smartone->last_query()]);
exit;
}
$this->db_smartone->trans_commit();
$detail_id = $this->db_smartone->insert_id();
}
if($v['px_type'] == 'PX'){
$sql = $this->db_smartone->query("SELECT T_TestIsParent as isparent FROM t_test WHERE T_TestID = '{$v['T_TestID']}'")->row();
$isparent = $sql->isparent;
//echo $isparent;
$sqlt_orderdetail = "INSERT INTO t_orderdetail(
T_OrderDetailT_OrderHeaderID,
T_OrderDetailT_OrderDetailOrderID,
T_OrderDetailT_TestID,
T_OrderDetailT_TestCode,
T_OrderDetailT_TestSasCode,
T_OrderDetailT_TestName,
T_OrderDetailT_TestIsResult,
T_OrderDetailT_TestIsPanel,
T_OrderDetailT_TestIsPanelChildren,
T_OrderDetailT_TestIsPanelChildrenPrintNota,
T_OrderDetailT_TestIsPrice,
T_OrderDetailIsCito,
T_OrderDetailPrice,
T_OrderDetailPriceForDisc,
T_OrderDetailDisc,
T_OrderDetailDiscAmount,
T_OrderDetailDiscTotal,
T_OrderDetailTotal,
T_OrderDetailReq,
T_OrderDetailReqNote,
T_OrderDetailUserID,
T_OrderDetailCreated,
T_OrderDetailLastUpdated)
SELECT
$header_id,
$detail_id,
'{$v['T_TestID']}',
T_TestCode,
T_TestSasCode,
'{$v['T_TestName']}',
T_TestIsResult,
'N',
'N',
'N',
T_TestIsPrice,
'N',
IF(T_TestIsPrice = 'N',0,'{$v['T_PriceAmount']}'),
IF(T_TestIsPrice = 'N',0,'{$v['T_PriceAmount']}'),
IF(T_TestIsPrice = 'N',0,'{$v['T_PriceDisc']}'),
IF(T_TestIsPrice = 'N',0,'{$v['T_PriceDiscRp']}'),
IF(T_TestIsPrice = 'N',0,'{$v['T_PriceSubTotal']}'),
IF(T_TestIsPrice = 'N',0,'{$v['T_PriceTotal']}'),
'N',
'',
$userid,
now(),
now()
from t_test
where T_TestID = '{$v['T_TestID']}' AND '{$v['is_packet']}' = 'N'
";
$queryt_orderdetail = $this->db_smartone->query($sqlt_orderdetail);
//echo $this->db_smartone->last_query();
if(!$queryt_orderdetail){
$this->db_smartone->trans_rollback();
$this->sys_error_db(["status" => "ERR", "message" => "insert t_orderdetailorder | " .
$this->db_smartone->error()["message"], "debug" => $this->db_smartone->last_query()]);
exit;
}
$this->db_smartone->trans_commit();
if($isparent == 'Y')
{
$sqlt_orderdetail = "INSERT INTO t_orderdetail(
T_OrderDetailT_OrderHeaderID,
T_OrderDetailT_OrderDetailOrderID,
T_OrderDetailT_TestID,
T_OrderDetailT_TestCode,
T_OrderDetailT_TestSasCode,
T_OrderDetailT_TestName,
T_OrderDetailT_TestIsResult,
T_OrderDetailT_TestIsPanel,
T_OrderDetailT_TestIsPanelChildren,
T_OrderDetailT_TestIsPanelChildrenPrintNota,
T_OrderDetailT_TestIsPrice,
T_OrderDetailIsCito,
T_OrderDetailPrice,
T_OrderDetailPriceForDisc,
T_OrderDetailDisc,
T_OrderDetailDiscAmount,
T_OrderDetailDiscTotal,
T_OrderDetailTotal,
T_OrderDetailReq,
T_OrderDetailReqNote,
T_OrderDetailUserID,
T_OrderDetailCreated,
T_OrderDetailLastUpdated)
SELECT
$header_id,
$detail_id,
T_TestID,
T_TestCode,
T_TestSasCode,
T_TestName,
T_TestIsResult,
'N',
'N',
'N',
T_TestIsPrice,
'N',
0,
0,
0,
0,
0,
0,
'N',
'',
$userid,
now(),
now()
FROM
(SELECT * FROM t_test WHERE T_TestIsActive = 'Y' ORDER BY T_TestParentT_TestID, T_TestID ASC) as a,
(SELECT @pv := '{$v['T_TestID']}') initialisation
WHERE find_in_set(T_TestParentT_TestID, @pv) > 0 AND @pv := CONCAT(@pv, ',', T_TestID)";
$queryt_orderdetail = $this->db_smartone->query($sqlt_orderdetail);
//echo $this->db_smartone->last_query();
if(!$queryt_orderdetail){
$this->db_smartone->trans_rollback();
$this->sys_error_db(["status" => "ERR", "message" => "insert t_orderdetailorder | " .
$this->db_smartone->error()["message"], "debug" => $this->db_smartone->last_query()]);
exit;
}
$this->db_smartone->trans_commit();
}
}else{
foreach($v['child_test'] as $k => $p){
$sql = $this->db_smartone->query("SELECT T_TestIsParent as isparent FROM t_test WHERE T_TestID = '{$p['T_TestID']}'")->row();
$isparent = $sql->isparent;
//echo $isparent;
$sqlt_orderdetail = "INSERT INTO t_orderdetail(
T_OrderDetailT_OrderHeaderID,
T_OrderDetailT_OrderDetailOrderID,
T_OrderDetailT_TestID,
T_OrderDetailT_TestCode,
T_OrderDetailT_TestSasCode,
T_OrderDetailT_TestName,
T_OrderDetailT_TestIsResult,
T_OrderDetailT_TestIsPanel,
T_OrderDetailT_TestIsPanelChildren,
T_OrderDetailT_TestIsPanelChildrenPrintNota,
T_OrderDetailT_TestIsPrice,
T_OrderDetailIsCito,
T_OrderDetailPrice,
T_OrderDetailPriceForDisc,
T_OrderDetailDisc,
T_OrderDetailDiscAmount,
T_OrderDetailDiscTotal,
T_OrderDetailTotal,
T_OrderDetailReq,
T_OrderDetailReqNote,
T_OrderDetailUserID,
T_OrderDetailCreated,
T_OrderDetailLastUpdated)
SELECT
$header_id,
$detail_id,
'{$p['T_TestID']}',
T_TestCode,
'{$p['T_TestSasCode']}',
'{$p['T_TestName']}',
T_TestIsResult,
'N',
'N',
'N',
T_TestIsPrice,
'N',
IF(T_TestIsPrice = 'N',0,'{$p['T_PriceAmount']}'),
IF(T_TestIsPrice = 'N',0,'{$p['T_PriceAmount']}'),
IF(T_TestIsPrice = 'N',0,'{$p['T_PriceDisc']}'),
IF(T_TestIsPrice = 'N',0,'{$p['T_PriceDiscRp']}'),
IF(T_TestIsPrice = 'N',0,'{$p['T_PriceSubTotal']}'),
IF(T_TestIsPrice = 'N',0,'{$p['T_PriceTotal']}'),
'N',
'',
$userid,
now(),
now()
from t_test
where T_TestID = '{$p['T_TestID']}' AND '{$p['is_packet']}' = 'N'
";
$queryt_orderdetail = $this->db_smartone->query($sqlt_orderdetail);
//echo $this->db_smartone->last_query();
if(!$queryt_orderdetail){
$this->db_smartone->trans_rollback();
$this->sys_error_db(["status" => "ERR", "message" => "insert t_orderdetailorder | " .
$this->db_smartone->error()["message"], "debug" => $this->db_smartone->last_query()]);
exit;
}
$this->db_smartone->trans_commit();
if($isparent == 'Y')
{
$sqlt_orderdetail = "INSERT INTO t_orderdetail(
T_OrderDetailT_OrderHeaderID,
T_OrderDetailT_OrderDetailOrderID,
T_OrderDetailT_TestID,
T_OrderDetailT_TestCode,
T_OrderDetailT_TestSasCode,
T_OrderDetailT_TestName,
T_OrderDetailT_TestIsResult,
T_OrderDetailT_TestIsPanel,
T_OrderDetailT_TestIsPanelChildren,
T_OrderDetailT_TestIsPanelChildrenPrintNota,
T_OrderDetailT_TestIsPrice,
T_OrderDetailIsCito,
T_OrderDetailPrice,
T_OrderDetailPriceForDisc,
T_OrderDetailDisc,
T_OrderDetailDiscAmount,
T_OrderDetailDiscTotal,
T_OrderDetailTotal,
T_OrderDetailReq,
T_OrderDetailReqNote,
T_OrderDetailUserID,
T_OrderDetailCreated,
T_OrderDetailLastUpdated)
SELECT
$header_id,
$detail_id,
T_TestID,
T_TestCode,
T_TestSasCode,
T_TestName,
T_TestIsResult,
'N',
'N',
'N',
T_TestIsPrice,
'N',
IF(T_TestIsPrice = 'N',0,'{$p['T_PriceAmount']}'),
IF(T_TestIsPrice = 'N',0,'{$p['T_PriceAmount']}'),
IF(T_TestIsPrice = 'N',0,'{$p['T_PriceDisc']}'),
IF(T_TestIsPrice = 'N',0,'{$p['T_PriceDiscRp']}'),
IF(T_TestIsPrice = 'N',0,'{$p['T_PriceSubTotal']}'),
IF(T_TestIsPrice = 'N',0,'{$p['T_PriceTotal']}'),
'N',
'',
$userid,
now(),
now()
FROM
(SELECT * FROM t_test WHERE T_TestIsActive = 'Y' ORDER BY T_TestParentT_TestID, T_TestID ASC) as a,
(SELECT @pv := '{$p['T_TestID']}') initialisation
WHERE find_in_set(T_TestParentT_TestID, @pv) > 0 AND @pv := CONCAT(@pv, ',', T_TestID)";
$queryt_orderdetail = $this->db_smartone->query($sqlt_orderdetail);
//echo $this->db_smartone->last_query();
if(!$queryt_orderdetail){
$this->db_smartone->trans_rollback();
$this->sys_error_db(["status" => "ERR", "message" => "insert t_orderdetailorder | " .
$this->db_smartone->error()["message"], "debug" => $this->db_smartone->last_query()]);
exit;
}
$this->db_smartone->trans_commit();
}
}
}
}
$query_generate_sample = $this->generate_sample($header_id);
$query_generate_location = $this->generate_location($header_id);
$query_generate_req = $this->generate_req($header_id,$req);
$sqlpreregister = "UPDATE mcu_preregister_patients
SET Mcu_PreregisterPatientsIsRegistered = 'Y',
Mcu_PreregisterPatientsT_OrderHeaderID = '{$header_id}'
WHERE
Mcu_PreregisterPatientsID = {$preid}";
$querypreregister = $this->db_smartone->query($sqlpreregister);
if(!$querypreregister){
$this->db_smartone->trans_rollback();
$this->sys_error_db(["status" => "ERR", "message" => "update mcu_preregister_patients | " .
$this->db_smartone->error()["message"], "debug" => $this->db_smartone->last_query()]);
exit;
}
$this->db_smartone->trans_commit();
//$query_generate_log = $this->generate_log($header_id);
$sql = "SELECT *
FROM t_orderheader
JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID
WHERE
T_OrderHeaderID = {$header_id}";
$x_data = $this->db_smartone->query($sql)->result_array();
$x_data = json_encode($x_data);
$sqllog= "INSERT INTO order_log(
orderLogType,
orderLogT_OrderHeaderID,
orderLogJSONBefore,
orderLogJSONAfter,
orderLogCreated,
orderLogUserID)
VALUES ('REGISTER','{$header_id}','','{$x_data}',now(),'{$userid}')";
$querylog= $this->db_smartone->query($sqllog);
if(!$querylog){
$this->db_smartone->trans_rollback();
$this->sys_error_db(["status" => "ERR", "message" => "update mcu_preregister_patients | " .
$this->db_smartone->error()["message"], "debug" => $this->db_smartone->last_query()]);
exit;
}
$this->db_smartone->trans_commit();
$r = $this->db_smartone->where('T_OrderHeaderID', $header_id)
->get('t_orderheader')
->row();
$nomorreg = $r->T_OrderHeaderLabNumber;
$url = "https://devcpone.aplikasi.web.id/one-api/v1/su/test/genqrcode/".$nomorreg."/".$header_id;
$post_rst = $this->post($url);
// echo "to $url \nresponse : $post_rst\n";
$j_rst = json_decode($post_rst,true);
$urlpat = "https://devcpone.aplikasi.web.id/one-api/v1/su/test/genpatientqrcode/".$nomorreg;
$post_rstpat = $this->post($urlpat);
// echo "to $urlpat \nresponse : $post_rstpat\n";
$j_rstpat = json_decode($post_rstpat,true);
$rst->data = array("id" => $header_id, 'noreg'=>$r->T_OrderHeaderLabNumber);
$this->broadcast("fo-register");
echo json_encode($rst);
}else
{
$this->db_smartone->trans_rollback();
$this->sys_error_db(["status" => "ERR", "message" => "save | " .
$this->db_smartone->error()["message"], "debug" => $this->db_smartone->last_query()]);
exit;
}
$this->db_smartone->trans_commit();
}
function generate_sample($id){
$userid = $this->sys_user["M_UserID"];
$counter_barcode = 1;
$sql = "SELECT T_OrderHeaderLabNumber, T_TestID, T_SampleTypeID , T_SampleTypeSuffix, T_SampleStationIsNonLab, T_SampleStationID
from t_orderheader
JOIN t_orderdetail ON t_orderheaderid = t_orderdetailt_orderheaderid AND t_orderdetailIsActive = 'Y'
JOIN t_test ON t_orderdetailt_testid = t_testid AND T_TestIsResult = 'Y'
JOIN t_sampletype ON T_TestT_SampleTypeID = T_SampleTypeID
JOIN t_bahan ON T_SampleTypeT_BahanID = T_BahanID
JOIN t_samplestation ON T_BahanT_SampleStationID = T_SampleStationID
where T_OrderHeaderID = '{$id}'
group by T_SampleTypeID";
$qry = $this->db_smartone->query($sql);
if (!$qry) {
$this->db_smartone->trans_rollback();
$this->sys_error_db(["status" => "ERR", "message" => "select barcode | " .
$this->db_smartone->error()["message"], "debug" => $this->db_smartone->last_query()]);
exit;
}
$data_samples = $qry->result_array();
foreach ($data_samples as $k => $v) {
$lab_no = $v['T_OrderHeaderLabNumber'];
$test_id = $v['T_TestID'];
$sample_id = $v['T_SampleTypeID'];
$sample_code = $v['T_SampleTypeSuffix'];
$barcode = $lab_no.$sample_code;
$isnonlab = $v['T_SampleStationIsNonLab'];
$samplestation_id = $v['T_SampleStationID'];
if( $counter_barcode == 1){
$barcode = $barcode.$counter_barcode;
$sql = "INSERT INTO t_barcodelab(
T_BarcodeLabT_OrderHeaderID,
T_BarcodeLabBarcode,
T_BarcodeLabT_SampleTypeID,
T_BarcodeLabCounter)
VALUES ('{$id}','{$barcode}','{$sample_id}','{$counter_barcode}')";
$qry = $this->db_smartone->query($sql);
//echo $this->db_smartone->last_query();
if (!$qry) {
$this->db_smartone->trans_rollback();
$this->sys_error_db(["status" => "ERR", "message" => "insert t_barcodelab | " .
$this->db_smartone->error()["message"], "debug" => $this->db_smartone->last_query()]);
exit;
}
$last_id_barcode = $this->db_smartone->insert_id();
if($isnonlab == ""){
$sql = "INSERT INTO t_ordersample(
T_OrderSampleT_OrderHeaderID,
T_OrderSampleT_SampleTypeID,
T_OrderSampleT_BarcodeLabID,
T_OrderSampleBarcode,
T_OrderSampleT_SampleStationID)
VALUES ('{$id}','{$sample_id}','{$last_id_barcode}','{$barcode}','{$samplestation_id}')";
$qry = $this->db_smartone->query($sql);
if (!$qry) {
$this->db_smartone->trans_rollback();
$this->sys_error_db(["status" => "ERR", "message" => "insert t_ordersample | " .
$this->db_smartone->error()["message"], "debug" => $this->db_smartone->last_query()]);
exit;
}
}
}
$sql = "SELECT MAX(T_BarcodeLabCounter) as ctr
FROM t_barcodelab
WHERE T_BarcodeLabT_OrderHeaderID = '{$v['T_OrderHeaderID']}' AND T_BarcodeLabBarcode LIKE CONCAT('{$barcode}', '%')
AND T_BarcodeLabIsActive = 'Y'";
$qry = $this->db_smartone->query($sql);
if($qry){
$ctr = $qry->row()->ctr;
$counter_barcode = $ctr + 1;
}else{
$this->db_smartone->trans_rollback();
$this->sys_error_db(["status" => "ERR", "message" => "conter barcode | " .
$this->db_smartone->error()["message"], "debug" => $this->db_smartone->last_query()]);
exit;
}
}
}
function generate_location($id){
$userid = $this->sys_user["M_UserID"];
$sql = "SELECT T_SampleStationID,T_SampleStationName
FROM t_orderdetail
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y'
JOIN t_sampletype ON T_TestT_SampleTypeID = T_SampleTypeID
JOIN t_bahan ON T_SampleTypeT_BahanID = T_BahanID
JOIN t_samplestation ON T_BahanT_SampleStationID = T_SampleStationID
WHERE
T_OrderDetailT_OrderHeaderID = {$id}
GROUP BY T_SampleStationID ";
$qry = $this->db_smartone->query($sql);
$data_samples = $qry->result_array();
foreach ($data_samples as $k => $v) {
$sample_id = $v['T_SampleStationID'];
$sql = $this->db_smartone->query("SELECT M_LocationID as loc_id FROM m_location
WHERE M_LocationT_SampleStationID = $sample_id
ORDER BY M_LocationPriority DESC, M_LocationID ASC
LIMIT 1")->row();
$loc_id = $sql->loc_id;
$sql = "INSERT INTO t_order_location(
T_OrderLocationT_OrderHeaderID,
T_OrderLocationM_LocationID,
T_OrderLocationT_SampleStationID,
T_OrderLocationCreated,
T_OrderLocationLastUpdated,
T_OrderLocationUserID)
VALUES ('{$id}','{$loc_id}','{$sample_id}',now(),now(),$userid)";
$qry = $this->db_smartone->query($sql);
}
if (!$qry) {
$this->db_smartone->trans_rollback();
$this->sys_error_db(["status" => "ERR", "message" => "insert t_order_location | " .
$this->db_smartone->error()["message"], "debug" => $this->db_smartone->last_query()]);
exit;
}
}
function generate_req($id,$req){
$userid = $this->sys_user["M_UserID"];
$sql = $this->db_smartone->query("SELECT Nat_PositionID as req_id FROM nat_position WHERE Nat_PositionCode = 'FO'")->row();
$req_id = $sql->req_id;
$req_status = $req['status'];
$req_tmp = "0";
foreach ($req['reqs'] as $value) {
$req_tmp .= "," . $value;
}
$reqid = "[" . $req_tmp . "]";
$sql = "INSERT INTO t_orderreq(
T_OrderReqT_OrderHeaderID,
T_OrderReqNat_PositionID,
T_OrderReqStatus,
T_OrderReqT_TestID,
T_OrderReqs)
VALUES ('{$id}','{$req_id}','{$req_status}','[]','{$reqid}')";
$qry = $this->db_smartone->query($sql);
if (!$qry) {
$this->db_smartone->trans_rollback();
$this->sys_error_db(["status" => "ERR", "message" => "insert t_orderreq | " .
$this->db_smartone->error()["message"], "debug" => $this->db_smartone->last_query()]);
exit;
}
}
function endshowtime()
{
$prm = $this->sys_input;
$userid = $this->sys_user["M_UserID"];
$sql = "INSERT INTO log_action(
LogActionType,
LogActionT_OrderHeaderID,
LogActionCreated,
LogActionUserID)
VALUES ('FO_START','{$prm['order_id']}','{$prm['time_start']}','{$userid}')";
$qry = $this->db_smartone->query($sql);
if (!$qry) {
$this->db_smartone->trans_rollback();
$this->sys_error_db(["status" => "ERR", "message" => "insert log_action start| " .
$this->db_smartone->error()["message"], "debug" => $this->db_smartone->last_query()]);
exit;
}
$sql = "INSERT INTO log_action(
LogActionType,
LogActionT_OrderHeaderID,
LogActionCreated,
LogActionUserID)
VALUES ('FO_END','{$prm['order_id']}',now(),'{$userid}')";
$qry = $this->db_smartone->query($sql);
if ($qry)
{
$result = array(
"total" => 1,
"records" => array()
);
$this->sys_ok($result);
exit;
}
else
{
$this->db_smartone->trans_rollback();
$this->sys_error_db(["status" => "ERR", "message" => "insert log_action end| " .
$this->db_smartone->error()["message"], "debug" => $this->db_smartone->last_query()]);
exit;
}
}
function get_header($id){
$sql = "
SELECT T_OrderHeaderID as order_id,
T_OrderHeaderLabNumber as order_no,
T_OrderHeaderDate as order_date,
T_OrderHeaderSubTotal as order_subtotal,
T_OrderHeaderRounding as order_rounding,
T_OrderHeaderTotal as order_total,
concat(if(M_TitleID is null, '', concat(M_TitleName, ' ')),IFNULL(M_PatientPrefix,''),' ',M_PatientName,' ',IFNULL(M_PatientSuffix,'')) as patient_name,
M_PatientNoReg as patient_mr,
M_MouName as order_mou,
CorporateName as order_company,
fn_global_doctor_name(da.M_DoctorID) doctor_sender,
fn_global_doctor_name(db.M_DoctorID) doctor_pj,
fn_global_doctor_address(aa.M_DoctorAddressID, 1) doctor_sender_address,
M_MouIsBill CorporateIsBill, M_MouMinDP CorporateMinDP,
M_MouIsAgingOnHold CorporateIsAgingOnHold, M_MouIsAgingOnHoldNote CorporateIsAgingOnHoldNote
from t_orderheader
join m_patient on T_OrderHeaderM_PatientID = M_PatientID
join corporate on T_OrderHeaderCorporateID = CorporateID
join m_mou on T_OrderHeaderM_MouID = M_MouID
join m_doctor da on T_OrderHeaderSenderM_DoctorID = da.M_DoctorID
join m_doctoraddress aa on T_OrderHeaderSenderM_DoctorAddressID = aa.M_DoctorAddressID
join m_doctor db on T_OrderHeaderSenderM_DoctorID = db.M_DoctorID
left join m_title on m_patientm_titleid = m_titleid
where T_OrderHeaderID = {$id}";
//echo $sql;
$query = $this->db_smartone->query($sql);
$rows = $query->row();
//echo $this->db_smartone->last_query();
return $rows;
}
function get_delivery($id){
$sql = "CALL sp_fo_payment_get_delivery('{$id}')";
$rows = $this->db_smartone->query($sql)->row();
$this->clean_mysqli_connection($this->db_smartone->conn_id);
return json_decode($rows->delivery);
}
function get_details($id){
$sql = "
select T_OrderDetailID as d_id,
T_OrderDetailT_TestID as t_id,
IFNULL(T_OrderDetailT_TestName, T_PacketName) as t_name,
T_OrderDetailPrice as t_price,
T_OrderDetailDiscTotal as t_disctotal,
T_OrderDetailTotal as t_total
from t_orderdetail
join t_orderdetailaddon on T_OrderDetailAddOnT_OrderDetailID = T_OrderDetailID
left join t_test on t_orderdetailt_testid = t_testid
left join t_packet on t_orderdetailaddonispacket = 'Y' and t_orderdetailaddont_packetid = t_packetid
where T_OrderDetailT_OrderHeaderID = {$id}
and T_ORderDetailIsActive = 'Y'
and ((T_ORderDetailAddOnIsPacket = 'N' AND T_TestIsPrintNota = 'Y' AND T_OrderDetailT_TestIsPanelChildren = 'N')
OR (T_OrderDetailT_TestIsPanelChildren = 'Y' AND T_OrderDetailT_TestIsPanelChildrenPrintNota = 'Y')
OR (T_ORderDetailAddOnIsPacket = 'Y' AND T_PacketIsNOta = 'Y'))";
$query = $this->db_smartone->query($sql);
//echo $this->db_smartone->last_query();
$rows = $query->result_array();
return $rows;
}
function load_from_clinic()
{
$prm = $this->sys_input;
$sql = "CALL sp_fo_clinic_load('{$prm['queue']}');";
$query = $this->db_smartone->query($sql);
if ($query)
{
$rst = $query->row();
if ($rst->status == "OK")
{
$rst->data = json_decode($rst->data);
$rst->data->doctor->address = $rst->data->doctor_address;
unset($rst->data->doctor_address);
$rst->data->company->mou = [$rst->data->mou];
unset($rst->data->mou);
}
else
{
$this->sys_error("Tidak ada order");
exit;
}
echo json_encode($rst);
}
else
{
$this->sys_error_db("save order", $this->db_smartone);
exit;
}
}
function load()
{
$prm = $this->sys_input;
$sql = "CALL sp_fo_register_load('{$prm['id']}');";
$query = $this->db_smartone->query($sql);
if ($query)
{
$rst = $query->row();
if ($rst->status == "OK")
{
$rst->data = json_decode($rst->data);
$rst->data->doctor->address = $rst->data->doctor_address;
unset($rst->data->doctor_address);
$rst->data->company->mou = [$rst->data->mou];
unset($rst->data->mou);
}
else
{
$this->sys_error("Tidak ada order");
exit;
}
echo json_encode($rst);
}
else
{
$this->sys_error_db("save order", $this->db_smartone);
exit;
}
}
function search_deliveries($prm)
{
$type = $prm['type'];
$id = $prm['id'];
if($type == 'patient'){
$sql = "
SELECT 0 as kelurahan,
0 as address_id,
M_DeliveryM_DeliveryTypeID as delivery_type,
M_DeliveryID as delivery_id,
M_DeliveryName as delivery_name,
'' as description,
'N' as chex,
'' as note,
'origin' as typeform,
'{$type}' as type,
M_DeliveryTypeCode as delivery_code
FROM m_delivery
JOIN m_deliverytype ON M_DeliveryTypeCode = 'PICKUP' AND M_DeliveryM_DeliveryTypeID = M_DeliveryTypeID
WHERE
M_DeliverySource = '{$type}' AND M_DeliveryIsActive = 'Y'
UNION
SELECT M_PatientAddressM_KelurahanID as kelurahan,
M_PatientAddressID as address_id,
M_DeliveryM_DeliveryTypeID as delivery_type,
M_DeliveryID as delivery_id,
M_DeliveryName as delivery_name,
CONCAT(M_PatientAddressDescription,' ',M_KelurahanName,', ',M_DistrictName,', ',M_CityName) as description,
'N' as chex,
'' as note,
'origin' as typeform,
'{$type}' as type,
M_DeliveryTypeCode as delivery_code
FROM m_patient
JOIN m_patientaddress ON M_PatientAddressM_PatientID = M_PatientID AND M_PatientAddressIsActive = 'Y'
JOIN m_kelurahan ON M_PatientAddressM_KelurahanID = M_KelurahanID
JOIN m_district ON M_KelurahanM_DistrictID = M_DistrictID
JOIN m_city ON M_DistrictM_CityID = M_CityID
JOIN m_delivery ON M_DeliverySource = '{$type}' AND M_DeliveryIsActive = 'Y'
JOIN m_deliverytype ON M_DeliveryTypeCode = 'ADDRESS' AND M_DeliveryM_DeliveryTypeID = M_DeliveryTypeID
WHERE
M_PatientID = {$id}
GROUP BY M_PatientAddressID
UNION
SELECT 0 as kelurahan,
0 as address_id,
M_DeliveryM_DeliveryTypeID as delivery_type,
M_DeliveryID as delivery_id,
M_DeliveryName as delivery_name,
IFNULL(M_PatientEmail,'Belum ada email pasien') as description,
'N' as chex,
'' as note,
'origin' as typeform,
'{$type}' as type,
M_DeliveryTypeCode as delivery_code
FROM m_patient
JOIN m_delivery ON M_DeliverySource = '{$type}' AND M_DeliveryIsActive = 'Y'
JOIN m_deliverytype ON M_DeliveryTypeCode = 'EMAIL' AND M_DeliveryM_DeliveryTypeID = M_DeliveryTypeID
WHERE
M_PatientID = {$id}
UNION
SELECT 0 as kelurahan,
0 as address_id,
M_DeliveryM_DeliveryTypeID as delivery_type,
M_DeliveryID as delivery_id,
M_DeliveryName as delivery_name,
IFNULL(M_PatientEmail,'Belum ada email pasien') as description,
'N' as chex,
'' as note,
'origin' as typeform,
'{$type}' as type,
M_DeliveryTypeCode as delivery_code
FROM m_patient
JOIN m_delivery ON M_DeliverySource = '{$type}' AND M_DeliveryIsActive = 'Y'
JOIN m_deliverytype ON M_DeliveryTypeCode = 'EMAIL' AND M_DeliveryM_DeliveryTypeID = M_DeliveryTypeID
WHERE
M_PatientID = {$id}
UNION
SELECT 0 as kelurahan,
0 as address_id,
M_DeliveryM_DeliveryTypeID as delivery_type,
M_DeliveryID as delivery_id,
M_DeliveryName as delivery_name,
IFNULL(M_PatientHP,'Belum ada WA pasien') as description,
'N' as chex,
'' as note,
'origin' as typeform,
'{$type}' as type,
M_DeliveryTypeCode as delivery_code
FROM m_patient
JOIN m_delivery ON M_DeliverySource = '{$type}' AND M_DeliveryIsActive = 'Y'
JOIN m_deliverytype ON M_DeliveryTypeCode = 'WHATSAPP' AND M_DeliveryM_DeliveryTypeID = M_DeliveryTypeID
WHERE
M_PatientID = {$id}
UNION
SELECT 0 as kelurahan,
0 as address_id,
M_DeliveryM_DeliveryTypeID as delivery_type,
M_DeliveryID as delivery_id,
M_DeliveryName as delivery_name,
IFNULL(M_PatientHP,'Belum ada telegram pasien') as description,
'N' as chex,
'' as note,
'origin' as typeform,
'{$type}' as type,
M_DeliveryTypeCode as delivery_code
FROM m_patient
JOIN m_delivery ON M_DeliverySource = '{$type}' AND M_DeliveryIsActive = 'Y'
JOIN m_deliverytype ON M_DeliveryTypeCode = 'TELEGRAM' AND M_DeliveryM_DeliveryTypeID = M_DeliveryTypeID
WHERE
M_PatientID = {$id}";
}
if($type == 'mou'){
//echo $id;
$sql = "SELECT * FROM m_mou WHERE M_MouID = {$id}";
//echo $sql;
$data_mou = $this->db_smartone->query($sql)->row_array();
//print_r($data_mou);
$sql = "
SELECT CorporateM_KelurahanID as kelurahan,
CorporateID as address_id,
M_DeliveryM_DeliveryTypeID as delivery_type,
M_DeliveryID as delivery_id,
M_DeliveryName as delivery_name,
CONCAT(CorporateAddress,' ',M_KelurahanName,', ',M_DistrictName,', ',M_CityName) as description,
'N' as chex,
'' as note,
'origin' as typeform,
'{$type}' as type,
M_DeliveryTypeCode as delivery_code
FROM corporate
JOIN m_delivery ON M_DeliverySource = 'COMPANY' AND M_DeliveryIsActive = 'Y'
JOIN m_deliverytype ON M_DeliveryTypeCode = 'ADDRESS' AND M_DeliveryM_DeliveryTypeID = M_DeliveryTypeID
JOIN m_kelurahan ON CorporateM_KelurahanID = M_KelurahanID
JOIN m_district ON M_KelurahanM_DistrictID = M_DistrictID
JOIN m_city ON M_DistrictM_CityID = M_CityID
WHERE
CorporateID = {$data_mou['M_MouCorporateID']}
UNION
SELECT 0 as kelurahan,
0 as address_id,
M_DeliveryM_DeliveryTypeID as delivery_type,
M_DeliveryID as delivery_id,
M_DeliveryName as delivery_name,
IFNULL(M_MouEmail,'Belum ada email agreement') as description,
IFNULL(M_MouEmailIsDefault,'N') as chex,
'' as note,
'origin' as typeform,
'{$type}' as type,
M_DeliveryTypeCode as delivery_code
FROM m_mou
JOIN m_delivery ON M_DeliverySource = '{$type}' AND M_DeliveryIsActive = 'Y'
JOIN m_deliverytype ON M_DeliveryTypeCode = 'EMAIL' AND M_DeliveryM_DeliveryTypeID = M_DeliveryTypeID
WHERE
M_MouID = {$id}";
//echo $sql;
}
if($type == 'doctor'){
$sql = "
SELECT M_DoctorAddressM_KelurahanID as kelurahan,
M_DoctorAddressID as address_id,
M_DeliveryM_DeliveryTypeID as delivery_type,
M_DeliveryID as delivery_id,
M_DeliveryName as delivery_name,
CONCAT(M_DoctorAddressDescription,' ',M_KelurahanName,', ',M_DistrictName,', ',M_CityName) as description,
M_DoctorAddressDeliveryDefault as chex,
'' as note,
'origin' as typeform,
'{$type}' as type,
M_DeliveryTypeCode as delivery_code
FROM m_doctor
JOIN m_doctoraddress ON M_DoctorAddressM_DoctorID = M_DoctorID AND M_DoctorAddressIsActive = 'Y'
JOIN m_kelurahan ON M_DoctorAddressM_KelurahanID = M_KelurahanID
JOIN m_district ON M_KelurahanM_DistrictID = M_DistrictID
JOIN m_city ON M_DistrictM_CityID = M_CityID
JOIN m_delivery ON M_DeliverySource = '{$type}' AND M_DeliveryIsActive = 'Y'
JOIN m_deliverytype ON M_DeliveryTypeCode = 'ADDRESS' AND M_DeliveryM_DeliveryTypeID = M_DeliveryTypeID
WHERE
M_DoctorID = {$id}
GROUP BY M_DoctorAddressID
UNION
SELECT 0 as kelurahan,
0 as address_id,
M_DeliveryM_DeliveryTypeID as delivery_type,
M_DeliveryID as delivery_id,
M_DeliveryName as delivery_name,
IF(ISNULL(M_DoctorEmail) OR M_DoctorEmail = '','Belum ada email pengirim',M_DoctorEmail) as description,
IF(M_DoctorEmailIsDefault = '','N',IFNULL(M_DoctorEmailIsDefault,'N')) as chex,
'' as note,
'origin' as typeform,
'{$type}' as type,
M_DeliveryTypeCode as delivery_code
FROM m_doctor
JOIN m_delivery ON M_DeliverySource = '{$type}' AND M_DeliveryIsActive = 'Y'
JOIN m_deliverytype ON M_DeliveryTypeCode = 'EMAIL' AND M_DeliveryM_DeliveryTypeID = M_DeliveryTypeID
WHERE
M_DoctorID = {$id}
UNION
SELECT 0 as kelurahan,
0 as address_id,
M_DeliveryM_DeliveryTypeID as delivery_type,
M_DeliveryID as delivery_id,
M_DeliveryName as delivery_name,
IF(ISNULL(M_DoctorHP) OR M_DoctorHP = '','Belum ada WA pengirim',M_DoctorHP) as description,
IF(M_DoctorEmailIsDefault = '','N',IFNULL(M_DoctorEmailIsDefault,'N')) as chex,
'' as note,
'origin' as typeform,
'{$type}' as type,
M_DeliveryTypeCode as delivery_code
FROM m_doctor
JOIN m_delivery ON M_DeliverySource = '{$type}' AND M_DeliveryIsActive = 'Y'
JOIN m_deliverytype ON M_DeliveryTypeCode = 'WHATSAPP' AND M_DeliveryM_DeliveryTypeID = M_DeliveryTypeID
WHERE
M_DoctorID = {$id}
UNION
SELECT 0 as kelurahan,
0 as address_id,
M_DeliveryM_DeliveryTypeID as delivery_type,
M_DeliveryID as delivery_id,
M_DeliveryName as delivery_name,
IF(ISNULL(M_DoctorHP) OR M_DoctorHP = '','Belum ada telegram pengirim',M_DoctorHP) as description,
IF(M_DoctorEmailIsDefault = '','N',IFNULL(M_DoctorEmailIsDefault,'N')) as chex,
'' as note,
'origin' as typeform,
'{$type}' as type,
M_DeliveryTypeCode as delivery_code
FROM m_doctor
JOIN m_delivery ON M_DeliverySource = '{$type}' AND M_DeliveryIsActive = 'Y'
JOIN m_deliverytype ON M_DeliveryTypeCode = 'TELEGRAM' AND M_DeliveryM_DeliveryTypeID = M_DeliveryTypeID
WHERE
M_DoctorID = {$id}";
}
//echo $sql;
$query = $this->db_smartone->query($sql);
if ($query) {
$rows= $query->result_array();
//$data = json_decode($rows->x);
if($rows){
foreach($rows as $k => $v){
$xval = $v['chex'] === 'N'?false:true;
//$rows[$k]['chex'] = $xval;
}
}
return $rows;
} else {
return array();
}
}
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 load_preregister(){
if (! $this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
//$tests = $row_header['Mcu_PreregisterPatientsTests'];
if($prm['id'] != -1){
$sql = "SELECT *
FROM mcu_preregister_patients
JOIN mgm_mcu ON Mgm_McuID = Mcu_PreregisterPatientsMgm_McuID
WHERE
Mcu_PreregisterPatientsID = {$prm['id']}";
}
$row_header = $this->db_smartone->query($sql)->row_array();
$patient = array();
$sql = "SELECT 'N' divider,M_PatientID, M_PatientNoReg,M_PatientEmail,M_PatientPrefix,M_PatientSuffix,
concat(IFNULL(M_TitleName,''),' ',IFNULL(M_PatientPrefix,''),' ',M_PatientName,' ',IFNULL(M_PatientSuffix,'')) M_PatientName,
M_PatientName M_PatientRealName, M_TitleID, M_TitleName, 0 M_SexID, '{$row_header['Mcu_PreregisterPatientsGender']}' M_SexName,
M_PatientHP, '' M_PatientPOB, M_PatientDOB, DATE_FORMAT(M_PatientDOB,'%d-%m-%Y') as dob_ina,
M_PatientAddress,
M_PatientAddress M_PatientAddressDescription, 0 M_PatientM_IdTypeID, M_PatientIdentifierValue M_PatientIDNumber,
'' M_PatientNote, M_PatientPhoto, M_PatientHp hp,
'' info,
M_PatientAddressRegionalCd, M_PatientAddressCity, M_PatientAddressRT, M_PatientAddressRW, M_PatientAddressVillage,
M_PatientAddressDistrict, M_PatientAddressState, M_PatientAddressCountry,
0 M_KelurahanID, 0 M_DistrictID, 0 M_CityID, 0 M_ProvinceID, 0 M_PatientM_ReligionID,
M_PatientReligionCode M_ReligionName,
'{$row_header['Mgm_McuM_BranchID']}' branch_id, M_BranchName branch_name
from
m_patient
left join m_title on M_PatientM_TitleID = M_TitleID
left join m_branch on M_BranchID = '{$row_header['Mgm_McuM_BranchID']}'
where M_PatientID = {$row_header['Mcu_PreregisterPatientsM_PatientID']}
group by M_PatientID";
//echo $sql;
$query = $this->db_smartone->query($sql);
if ($query && $prm['id'] != -1) {
$patient = $query->row_array();
$patient['M_PatientName'] = stripslashes($patient['M_PatientName']);
$rst['patient'] = $patient ;
}
else{
$rst['patient'] = array() ;
}
/*data doctor*/
$sql = "SELECT M_DoctorID,
'N' M_DoctorIsPJ,
CONCAT('[ ',M_DoctorCode,' ] ',M_DoctorPrefix, M_DoctorPrefix2,' ',M_DoctorName,' ',M_DoctorSuffix,M_DoctorSuffix2) as M_DoctorName,
'' as delivery_email_code,
IFNULL(M_DoctorEmail,'') email_default,
M_DoctorAddress as address,
'' M_DoctorNote
FROM m_doctorpj
JOIN m_doctor ON M_DoctorPjM_DoctorID = M_DoctorID AND M_DoctorIsActive = 'Y'
WHERE
M_DoctorPjIsActive = 'Y'
ORDER BY M_DoctorPjID DESC
LIMIT 1";
//echo $sql;
$row_doctor = $this->db_smartone->query($sql)->row_array();
$rst['selected_doctor'] = $row_doctor;
// $new_delivery = array();
/*data company mou*/
$sql = "SELECT corporate.*, '' mou
FROM corporate
WHERE
CorporateID = {$row_header['Mgm_McuCorporateID']}";
$row_company = $this->db_smartone->query($sql)->row_array();
//print_r($row_company);
$rst['selected_company'] = $row_company;
$rst['companies'] = array();
array_push($rst['companies'],$rst['selected_company']);
/* $new_delivery = array();
//echo $rst['selected_mou']['M_MouID'];
$new_delivery = $this->search_deliveries(array('id'=>$row_mou['M_MouID'],'type'=>'mou'));
if(count($new_delivery) > 0){
foreach($new_delivery as $knd => $vnd){
array_push($rst['data_deliveries'],$vnd);
}
}
//echo 'dsada';
foreach($rst['data_deliveries'] as $k_ordev => $v_ordev){
//echo $row_header['McuOfflinePrepareDeliveries'];
$check_centang_dev = $this->checked_delivery($row_header['McuOfflinePrepareDeliveries'],$v_ordev);
if($check_centang_dev){
$rst['data_deliveries'][$k_ordev] = $check_centang_dev ;
}
}
*/
$tests = $row_header['Mcu_PreregisterPatientsOrders'];
$rst['tests'] = array();
$explode_tests = explode(',',$row_header['Mcu_PreregisterPatientsOrders']);
if(!empty($explode_tests)){
//print_r($explode_tests);
foreach($explode_tests as $ktest => $vtest){
$r_test = $this->search_test_by_code(trim($vtest),$row_header['Mgm_McuT_PriceHeaderID']);
if($r_test){
array_push($rst['tests'],$r_test);
}
}
}
$xrst = array('status'=>$status,'data'=>$rst);
$result = array("records" => $rst);
$this->sys_ok($result);
exit;
}
function checked_delivery($prepare_deliveries,$delivery){
$rtn = false;
//print_r($delivery);
//print_r($prepare_deliveries);
$prepare_deliveries = preg_replace("/\\n/", "___n___", $prepare_deliveries);
$deliveries = json_decode($prepare_deliveries);
//print_r($deliveries);
foreach($deliveries as $k => $v){
if((intval($v->kelurahan) == intval($delivery['kelurahan'])) && (intval($v->address_id) == intval($delivery['address_id'])) && ($v->delivery_type == $delivery['delivery_type']) && (intval($v->delivery_id) == intval($delivery['delivery_id'])) && $v->chex == 'Y' ){
$rtn = $v;
}
}
return $rtn;
}
function search_test_by_code($xcode,$mcuid)
{
$is_packet = 'N';
$px_type = 'PX';
$pxtype = '';
if(substr($xcode, 0, 2) == 'PN' || substr($xcode, 0, 2) == 'PR'){
$is_packet = 'Y';
$px_type = substr($xcode, 0, 2);
$sql = "SELECT T_PacketID as T_TestID FROM t_packet WHERE T_PacketSasCode = '{$xcode}' AND T_PacketIsActive = 'Y'";
$pxtype = "px_type = '{$px_type}' AND";
}
else{
$sql = "SELECT T_TestID FROM t_test WHERE T_TestSasCode = '{$xcode}' AND T_TestIsActive = 'Y'";
}
//echo $sql;
$xrow_test = $this->db_smartone->query($sql)->row_array();
$sql = "SELECT * FROM ";
$sql = "select *
from
ss_price_mou
where
T_PriceT_PriceHeaderID = {$mcuid} AND
T_TestID = {$xrow_test['T_TestID']} AND
$pxtype
is_packet = '{$is_packet}' AND
T_PriceIsCito <> 'Y';";
//echo $sql;
$query = $this->db_smartone->query($sql);
if ($query)
{
$row = $query->row_array();
$id_to_remove = [];
// var_dump($rows);
$row['requirement'] = [];
if($row['px_type'] == "PX"){
$x = $this->db_smartone->query("SELECT fn_fo_requirement_get('{$row['T_TestID']}') x")
->row();
if ($x->x != null)
$row['requirement'] = json_decode($x->x);
}
//print_r($row);
// Janji Hasil per PX
//$x = $this->db_smartone->query("SELECT fn_fo_find_promise_by_one_px('{$row['T_TestID']}') x")->row();
if($row['is_packet'] == 'N'){
$tests = $row['T_PriceT_TestID'];
$panels = '';
}
else{
$tests = '';
$panels = $row['T_PriceT_TestID'];
}
$sql_param = array($tests, $panels);
// $sql = "select fn_fo_find_promise_by_px(?, ?) as x";
// $x = $this->db_smartone->query($sql, $sql_param)->row();
// if ($x->x != null)
// $row['promise'] = $x->x;
$row['nat_test'] = json_decode($row['nat_test']);
$row['child_test'] = json_decode($row['child_test']);
// IF PROFILE
if ($row['px_type'] == "PR" || $row['px_type'] == "PXR") {
foreach ($row['child_test'] as $l => $w) {
$row['child_test'][$l]->requirement = [];
$row['child_test'][$l]->nat_test = json_decode($w->nat_test);
$row['child_test'][$l]->promise = null;
//echo "SELECT fn_fo_requirement_get('{$w->T_TestID}')";
$x = $this->db_smartone->query("SELECT fn_fo_requirement_get('{$w->T_TestID}') x")->row();
if ($x->x != null)
$row['child_test'][$l]->requirement = json_decode($x->x);
// Janji Hasil per PX
//$x = $this->db_smartone->query("SELECT fn_fo_find_promise_by_one_px('{$w->T_TestID}') x")
// ->row();
//if ($x->x != null)
$row['child_test'][$l]->promise = null;
}
}
return $row;
}
}
}