Files
2026-04-15 15:23:57 +07:00

569 lines
20 KiB
PHP

<?php
class Biodataconfirm extends MY_Controller
{
public function __construct()
{
parent::__construct();
// db wilayah contoh surabaya
// $this->db = $this->load->database("regional", true);
}
public function index()
{
echo "request upload biodata";
}
// search dibawah ini dengan proteksi lunas
// pas di listing ketambahan WHERE
// (F_OrderheaderLunas = Y
// OR M_MouIsBill = Y)
// AND T_OrderHeaderID ada di tabel result_processtooffice
// update code tanggal 20-07-2023
public function search()
{
try {
# cek token valid
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$search = $prm["search"];
$mouID = $prm["mou_id"];
$where_company = "";
$companyid = $prm['companyid'];
if ($companyid != "" || $companyid != 0 || $companyid != "0") {
$companyid = $prm['companyid'];
$where_company = "AND M_MouM_CompanyID = $companyid";
}
if (isset($prm['mou_id'])) {
# code...
if (
$mouID != "" || $mouID != 0 || $mouID != "0"
) {
$mouID = $prm['mou_id'];
$where_company .= " AND M_MouID = $mouID";
}
}
$where = "";
$startdate = $prm['startdate'];
$enddate = $prm['enddate'];
$filter_date = " DATE(T_OrderHeaderDate) BETWEEN '{$startdate}' AND '{$enddate}'";
if ($startdate != '' && $enddate != '') {
$where = "$filter_date ";
}
if ($search != '') {
$where .= " AND ( M_PatientName LIKE '%{$search}%' OR T_OrderHeaderLabNumber LIKE '%{$search}%' OR T_OrderHeaderLabNumberExt LIKE '%{$search}%' ) ";
}
$sortBy = $prm['sortBy'];
// $sortStatus = $prm['sortStatus'];
$q_sort = '';
$limit = '';
if ($sortBy) {
$q_sort = "ORDER BY " . $sortBy;
}
if ($all == 'N') {
$limit = ' LIMIT 10';
}
$number_limit = 20;
// $number_offset = ($prm['current_page'] - 1) * $number_limit ;
$number_offset = 0;
if ($prm['current_page'] > 0) {
$number_offset = ($prm['current_page'] - 1) * $number_limit;
}
$sql_filter = "select count(*) as total
from (
select
BiodataConfirmID,
BiodataConfirmRetry,
BiodataConfirmStatus,
DATE_FORMAT(BiodataConfirmCreated, '%d-%m-%Y %H:%i:%s') AS BiodataConfirmCreated,
DATE_FORMAT(BiodataConfirmLastUpdated, '%d-%m-%Y %H:%i:%s') AS BiodataConfirmLastUpdated,
T_OrderHeaderID,
T_OrderHeaderLabNumber as no_reg,
T_OrderHeaderDate,
concat(M_TitleName, ' ',
ifnull(M_PatientPrefix,' '),
M_PatientName,
ifnull(M_PatientSuffix,'')
) as nama_pasien,
M_PatientIDNumber,
M_PatientHP,
'' as test,
M_MouName
from t_orderheader
join t_orderdetail
ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID
AND T_OrderDetailIsActive = 'Y'
AND T_OrderHeaderIsActive = 'Y'
join m_mou
ON T_OrderHeaderM_MouID = M_MouID
AND M_MouIsActive = 'Y'
AND M_MouIsReleased = 'Y'
$where_company
AND M_MouIsBill = 'Y'
left join biodata_confirm
ON T_OrderHeaderID = BiodataConfirmT_OrderHeaderID
AND BiodataConfirmIsActive = 'Y'
join m_patient
ON T_OrderHeaderM_PatientID = M_PatientID
join m_title
on M_PatientM_TitleID = M_TitleID
join t_orderdelivery
ON T_OrderHeaderID = T_OrderDeliveryT_OrderHeaderID
join m_deliverytype
ON T_OrderDeliveryM_DeliveryTypeID = M_DeliveryTypeID
AND M_DeliveryTypeCode = 'ERESULT'
where $where
group by T_OrderHeaderID
UNION
select
BiodataConfirmID,
BiodataConfirmRetry,
BiodataConfirmStatus,
DATE_FORMAT(BiodataConfirmCreated, '%d-%m-%Y %H:%i:%s') AS BiodataConfirmCreated,
DATE_FORMAT(BiodataConfirmLastUpdated, '%d-%m-%Y %H:%i:%s') AS BiodataConfirmLastUpdated,
T_OrderHeaderID,
T_OrderHeaderLabNumber as no_reg,
T_OrderHeaderDate,
concat(M_TitleName, ' ',
ifnull(M_PatientPrefix,' '),
M_PatientName,
ifnull(M_PatientSuffix,'')
) as nama_pasien,
M_PatientIDNumber,
M_PatientHP,
'' as test,
M_MouName
from t_orderheader
join t_orderdetail
ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID
AND T_OrderDetailIsActive = 'Y'
AND T_OrderHeaderIsActive = 'Y'
join m_mou
ON T_OrderHeaderM_MouID = M_MouID
AND M_MouIsActive = 'Y'
AND M_MouIsReleased = 'Y'
$where_company
left join biodata_confirm
ON T_OrderHeaderID = BiodataConfirmT_OrderHeaderID
AND BiodataConfirmIsActive = 'Y'
join m_patient
ON T_OrderHeaderM_PatientID = M_PatientID
join m_title
on M_PatientM_TitleID = M_TitleID
join t_orderdelivery
ON T_OrderHeaderID = T_OrderDeliveryT_OrderHeaderID
join m_deliverytype
ON T_OrderDeliveryM_DeliveryTypeID = M_DeliveryTypeID
AND M_DeliveryTypeCode = 'ERESULT'
join f_payment
ON t_orderheader.T_OrderHeaderID = F_PaymentT_OrderHeaderID
AND F_PaymentIsActive = 'Y'
join f_payment_orderheader
ON F_PaymentID = F_Payment_OrderHeaderF_PaymentID
AND F_Payment_OrderHeaderIsLunas = 'Y'
where $where
group by T_OrderHeaderID
) x";
$query_filter = $this->db->query($sql_filter);
// $last_qry = $this->db->last_query();
// print_r($last_qry);
// exit;
$tot_count = 0;
$tot_page = 0;
if ($query_filter) {
$tot_count = $query_filter->result_array()[0]["total"];
$tot_page = ceil($tot_count / $number_limit);
} else {
$this->db->trans_rollback();
$this->sys_error_db("request upload biodata count", $this->db);
exit;
}
$sql_data = "
select
BiodataConfirmID,
BiodataConfirmRetry,
BiodataConfirmStatus,
DATE_FORMAT(BiodataConfirmCreated, '%d-%m-%Y %H:%i:%s') AS BiodataConfirmCreated,
DATE_FORMAT(BiodataConfirmLastUpdated, '%d-%m-%Y %H:%i:%s') AS BiodataConfirmLastUpdated,
T_OrderHeaderID,
T_OrderHeaderLabNumber as no_reg,
T_OrderHeaderDate,
concat(M_TitleName, ' ',
ifnull(M_PatientPrefix,' '),
M_PatientName,
ifnull(M_PatientSuffix,'')
) as nama_pasien,
M_PatientIDNumber,
M_PatientHP,
'' as test,
M_MouName
from t_orderheader
join t_orderdetail
ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID
AND T_OrderDetailIsActive = 'Y'
AND T_OrderHeaderIsActive = 'Y'
join m_mou
ON T_OrderHeaderM_MouID = M_MouID
AND M_MouIsActive = 'Y'
AND M_MouIsReleased = 'Y'
$where_company
AND M_MouIsBill = 'Y'
left join biodata_confirm
ON T_OrderHeaderID = BiodataConfirmT_OrderHeaderID
AND BiodataConfirmIsActive = 'Y'
join m_patient
ON T_OrderHeaderM_PatientID = M_PatientID
join m_title
on M_PatientM_TitleID = M_TitleID
join t_orderdelivery
ON T_OrderHeaderID = T_OrderDeliveryT_OrderHeaderID
join m_deliverytype
ON T_OrderDeliveryM_DeliveryTypeID = M_DeliveryTypeID
AND M_DeliveryTypeCode = 'ERESULT'
where $where
group by T_OrderHeaderID
UNION
select
BiodataConfirmID,
BiodataConfirmRetry,
BiodataConfirmStatus,
DATE_FORMAT(BiodataConfirmCreated, '%d-%m-%Y %H:%i:%s') AS BiodataConfirmCreated,
DATE_FORMAT(BiodataConfirmLastUpdated, '%d-%m-%Y %H:%i:%s') AS BiodataConfirmLastUpdated,
T_OrderHeaderID,
T_OrderHeaderLabNumber as no_reg,
T_OrderHeaderDate,
concat(M_TitleName, ' ',
ifnull(M_PatientPrefix,' '),
M_PatientName,
ifnull(M_PatientSuffix,'')
) as nama_pasien,
M_PatientIDNumber,
M_PatientHP,
'' as test,
M_MouName
from t_orderheader
join t_orderdetail
ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID
AND T_OrderDetailIsActive = 'Y'
AND T_OrderHeaderIsActive = 'Y'
join m_mou
ON T_OrderHeaderM_MouID = M_MouID
AND M_MouIsActive = 'Y'
AND M_MouIsReleased = 'Y'
$where_company
left join biodata_confirm
ON T_OrderHeaderID = BiodataConfirmT_OrderHeaderID
AND BiodataConfirmIsActive = 'Y'
join m_patient
ON T_OrderHeaderM_PatientID = M_PatientID
join m_title
on M_PatientM_TitleID = M_TitleID
join t_orderdelivery
ON T_OrderHeaderID = T_OrderDeliveryT_OrderHeaderID
join m_deliverytype
ON T_OrderDeliveryM_DeliveryTypeID = M_DeliveryTypeID
AND M_DeliveryTypeCode = 'ERESULT'
join f_payment
ON t_orderheader.T_OrderHeaderID = F_PaymentT_OrderHeaderID
AND F_PaymentIsActive = 'Y'
join f_payment_orderheader
ON F_PaymentID = F_Payment_OrderHeaderF_PaymentID
AND F_Payment_OrderHeaderIsLunas = 'Y'
where $where
group by T_OrderHeaderID
limit $number_limit offset $number_offset";
// $sql_param = array($search);
$query_data = $this->db->query($sql_data);
//echo $this->db->last_query();
if ($query_data) {
$rows = $query_data->result_array();
if (count($rows) > 0) {
$sql_dt = "";
foreach ($rows as $k => $v) {
$order_id = $v['T_OrderHeaderID'];
$dt_test = [];
$sql_dt = "SELECT T_OrderDetailT_TestName as x_test
from t_orderdetail
join t_test
ON T_OrderDetailT_TestID = T_TestID
AND T_TestIsActive = 'Y'
WHERE
T_OrderDetailT_OrderHeaderID = $order_id
AND T_OrderDetailIsActive = 'Y'
AND T_TestIsPrice = 'Y'
";
// echo $sql_dt;
$xdt_test = $this->db->query($sql_dt);
// print_r($xdt_test);
if (!$xdt_test) {
$this->db->trans_rollback();
$this->sys_error_db("order detail");
exit;
} else {
$testArr = $xdt_test->result_array();
$rows[$k]['test'] = $testArr;
$xno = ($k + 1) + $number_offset;
$rows[$k]['rownumber'] = $xno;
}
}
}
} else {
$this->db->trans_rollback();
$this->sys_error_db("request upload biodata select");
exit;
}
$result = array(
"total" => $tot_page,
"total_all" => $tot_count,
"total_filter" => count($rows),
"records" => $rows,
"sql" => $this->db->last_query(),
"sql_data" => ($sql_data),
"sql_filter" => ($sql_filter)
);
$this->sys_ok($result);
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
// proses insert log
public function proses_insert_one_result_log($OneResultConfirmStatus, $OneResultLogOneResultConfirmID)
{
try {
# cek token valid
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$userID = $this->sys_user['M_UserID'];
$sql_insert = "INSERT INTO one_result_log(
OneResultLogAction,
OneResultLogM_UserID,
OneResultLogDate,
OneResultLogOneResultConfirmID
) values (
?,
?,
NOW(),
?
)";
$qry = $this->db->query(
$sql_insert,
[
$OneResultConfirmStatus,
$userID,
$OneResultLogOneResultConfirmID
]
);
if (!$qry) {
$this->db->trans_rollback();
$this->sys_error_db(["status" => "ERR", "message" => "insert one_result_log | " .
$this->db->error()["message"], "debug" => $this->db->last_query()]);
exit;
}
} catch (Exception $exc) {
$message = $exc->getMessage();
return $this->sys_error($message);
}
}
// proses confirm
public function process_confirm()
{
try {
# cek token valid
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$userID = $this->sys_user['M_UserID'];
$OneResultConfirmT_OrderHeaderID = $prm['OneResultConfirmT_OrderHeaderID'];
$sql_insert = "INSERT INTO one_result_confirm(
OneResultConfirmT_OrderHeaderID,
OneResultConfirmStatus,
OneResultConfirmM_UserID,
OneResultConfirmCreated
) values (
?,
?,
?,
NOW()
)";
$qry = $this->db->query(
$sql_insert,
[
$OneResultConfirmT_OrderHeaderID,
"C",
$userID
]
);
if (!$qry) {
$this->sys_error_db(["status" => "ERR", "message" => "insert one_result_confirm | " .
$this->db->error()["message"], "debug" => $this->db->last_query()]);
exit;
}
$OneResultLogOneResultConfirmID = $this->db->insert_id();
// Confirmed
$OneResultConfirmStatus = "C";
$this->proses_insert_one_result_log($OneResultConfirmStatus, $OneResultLogOneResultConfirmID);
$result = array(
"total" => 1,
"records" => $prm
);
$this->sys_ok($result);
exit;
// $result = array(
// "total" => 1 ,
// "records" => $prm
// );
// $this->sys_ok($result);
// exit;
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
// proses reupload
public function process_reupload()
{
try {
# cek token valid
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$BiodataConfirmID = $prm['BiodataConfirmID'];
$sql_update = "UPDATE biodata_confirm
SET
BiodataConfirmStatus = ?,
BiodataConfirmRetry = ?,
BiodataConfirmLastUpdated = NOW()
WHERE BiodataConfirmID = ?";
$qry = $this->db->query(
$sql_update,
[
"R",
"0",
$BiodataConfirmID,
]
);
if (!$qry) {
$this->sys_error_db(["status" => "ERR", "message" => "update biodata_confirm | " .
$this->db->error()["message"], "debug" => $this->db->last_query()]);
exit;
}
$result = array(
"total" => 1,
"records" => $prm
);
$this->sys_ok($result);
exit;
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
// autocomplete M_CompanyID
public function search_company()
{
$prm = $this->sys_input;
$qry = "%" . $prm["qry"] . '%';
$sql = "Select M_CompanyID, M_CompanyName
from m_company
where M_CompanyName like ?
and M_CompanyIsActive = 'Y'
ORDER BY M_CompanyName DESC";
$query = $this->db->query($sql, array($qry));
if (!$query) {
$this->sys_error_db("", $this->db);
exit;
} else {
$rows = $query->result_array();
$rows[] = array("M_CompanyID" => 0, "M_CompanyName" => "Semua");
$result = array("data" => $rows);
$this->sys_ok($result);
}
}
public function search_mou()
{
$prm = $this->sys_input;
$qry = "%" . $prm["qry"] . '%';
$companyID = $prm["company_id"];
$sql = "SELECT
M_MouID,
M_MouName,
M_MouM_CompanyID
FROM m_mou
WHERE
M_MouM_CompanyID = ?
AND M_MouName LIKE ?
AND M_MouIsActive = 'Y'";
$query = $this->db->query($sql, array($companyID, $qry));
if (!$query) {
$this->sys_error_db("", $this->db);
exit;
} else {
$rows = $query->result_array();
$rows[] = array("M_MouID" => 0, "M_MouName" => "Semua", "M_MouM_CompanyID" => 0);
$result = array("data" => $rows);
$this->sys_ok($result);
}
}
}