Files
2026-04-27 10:31:17 +07:00

281 lines
11 KiB
PHP

<?php
class Patient extends MY_Controller
{
var $db_onedev;
var $load;
public function index()
{
echo "Patient API";
}
public function __construct()
{
parent::__construct();
$this->db_onedev = $this->load->database("onedev", true);
}
public function getsetup()
{
try {
// if (!$this->isLogin) {
// $this->sys_error("Invalid Token");
// exit;
// }
$sql = "SELECT * FROM mgm_mcu WHERE Mgm_McuIsActive = 'Y'";
$qry = $this->db_onedev->query($sql, []);
$last_qry = $this->db_onedev->last_query();
if (!$qry) {
$message = $this->db_onedev->error();
$message['last_qry'] = $last_qry;
$this->sys_error($message);
exit;
}
$data = $qry->result_array();
$result = [
"records" => $data,
];
$this->sys_ok($result);
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
public function getCorporate()
{
try {
// if (!$this->isLogin) {
// $this->sys_error("Invalid Token");
// exit;
// }
$prm = $this->sys_input;
$search = '%' . $prm['search'] . '%';
$sql = "SELECT
CorporateID,
CONCAT(CorporateCode, '-','CorporateName') as CorporateName
FROM corporate WHERE CorporateIsActive = 'Y' AND (CONCAT(CorporateCode, '-',CorporateName) LIKE ?) ";
$qry = $this->db_onedev->query($sql, [$search]);
$last_qry = $this->db_onedev->last_query();
if (!$qry) {
$message = $this->db_onedev->error();
$message['last_qry'] = $last_qry;
$this->sys_error($message);
exit;
}
$data = $qry->result_array();
$result = [
"records" => $data,
];
$this->sys_ok($result);
} catch (Exception $exc) {
$message = $exc->getMessage();
$this->sys_error($message);
}
}
function search()
{
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$prm = $this->sys_input;
$page = $prm["page"];
$setup = $prm['setup'];
$startDate = $prm['startDate'];
$endDate = $prm['endDate'];
$status = $prm['status'];
$search = '%' . $prm['search'] . '%';
$ROW_PER_PAGE = 20;
$start_offset = 0;
// print_r($prm);
$sqlStatus = "";
if ($status == 'Aktif') {
$sqlStatus = "AND (CASE
WHEN Void_OrderID IS NULL THEN 'N'
WHEN Void_OrderID IS NOT NULL THEN 'Y'
END) = 'N'";
}
if ($status == 'Void') {
$sqlStatus = "AND (CASE
WHEN Void_OrderID IS NULL THEN 'N'
WHEN Void_OrderID IS NOT NULL THEN 'Y'
END) = 'Y'";
}
if (isset($prm["page"])) {
if (
is_numeric($prm["page"]) && $prm["page"] > 0
) {
$start_offset = ($page - 1) * $ROW_PER_PAGE;
}
}
$sql = "SELECT * FROM `s_menu` WHERE `S_MenuName` = 'nonlab upload document' AND `S_MenuIsActive` = 'Y'
";
$qry = $this->db_onedev->query($sql, []);
if (!$qry) {
$last_qry = $this->db_onedev->last_query();
$message = $this->db_onedev->error();
$message['last_qry'] = $last_qry;
$this->sys_error("Error get url ");
exit;
}
$url = $qry->row_array()['S_MenuUrl'];
$sql = "SELECT
COUNT(T_OrderHeaderID) as total
FROM t_orderheader
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
LEFT JOIN m_title ON M_PatientM_TitleID = M_TitleID
JOIN corporate ON T_OrderHeaderCorporateID = CorporateID
LEFT JOIN mgm_mcu ON T_OrderHeaderMgm_McuID = Mgm_McuID
LEFT JOIN m_user ud ON T_OrderHeaderCreatedUserID = ud.M_UserID
LEFT JOIN m_staff sd ON ud.M_UserM_StaffID = sd.M_StaffID
LEFT JOIN void_order
ON T_OrderHeaderID = Void_OrderT_OrderHeaderID
LEFT JOIN m_user vd ON Void_OrderUserID = vd.M_UserID
LEFT JOIN m_staff sv ON vd.M_UserM_StaffID = sv.M_StaffID
WHERE DATE(T_OrderHeaderDate) BETWEEN ? AND ?
AND (T_OrderHeaderLabNumber LIKE ? OR M_PatientName LIKE ?)
{$sqlStatus}
-- AND T_OrderHeaderIsActive = 'Y'
";
$qry = $this->db_onedev->query($sql, [$startDate, $endDate, $search, $search]);
if (!$qry) {
$last_qry = $this->db_onedev->last_query();
$message = $this->db_onedev->error();
$message['last_qry'] = $last_qry;
$this->sys_error("Error search total");
exit;
}
$total = $qry->row_array()['total'];
$sql = "SELECT
T_OrderHeaderID as orderID,
T_OrderHeaderLabNumber as labNumber,
DATE_FORMAT(T_OrderHeaderDate, '%d-%m-%Y %H:%i') as orderDate,
sd.M_StaffName as staffName,
CorporateName,
CONCAT(IFNULL(M_TitleName, ''), IF(M_TitleName IS NULL, '', '. '), M_PatientName) AS patientName,
Void_OrderReason as reason,
sv.M_StaffName as voidUser,
Void_OrderUserID,
DATE_FORMAT(Void_OrderCreated, '%d-%m-%Y %H:%i') as voidDate,
Void_OrderID ,
CASE
WHEN Void_OrderID IS NULL THEN 'N'
WHEN Void_OrderID IS NOT NULL THEN 'Y'
END as status
FROM t_orderheader
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
LEFT JOIN m_title ON M_PatientM_TitleID = M_TitleID
JOIN corporate ON T_OrderHeaderCorporateID = CorporateID
LEFT JOIN mgm_mcu ON T_OrderHeaderMgm_McuID = Mgm_McuID
LEFT JOIN m_user ud ON T_OrderHeaderCreatedUserID = ud.M_UserID
LEFT JOIN m_staff sd ON ud.M_UserM_StaffID = sd.M_StaffID
LEFT JOIN void_order
ON T_OrderHeaderID = Void_OrderT_OrderHeaderID
LEFT JOIN m_user vd ON Void_OrderUserID = vd.M_UserID
LEFT JOIN m_staff sv ON vd.M_UserM_StaffID = sv.M_StaffID
WHERE DATE(T_OrderHeaderDate) BETWEEN ? AND ?
AND (T_OrderHeaderLabNumber LIKE ? OR M_PatientName LIKE ?)
{$sqlStatus}
-- AND T_OrderHeaderIsActive = 'Y'
LIMIT ? OFFSET ? ";
$qry = $this->db_onedev->query($sql, [$startDate, $endDate, $search, $search, $ROW_PER_PAGE, $start_offset]);
if (!$qry) {
$last_qry = $this->db_onedev->last_query();
$message = $this->db_onedev->error();
$message['last_qry'] = $last_qry;
$this->sys_error("Error search");
exit;
}
$result = [
"total" => ceil($total / $ROW_PER_PAGE),
"records" => $qry->result_array(),
"url" => $url,
"qry" => $this->db_onedev->last_query()
];
$this->sys_ok($result);
}
function voidOrder()
{
// $this->db_onedev->trans_begin();
// $this->db_onedev->trans_rollback();
// $this->db_onedev->trans_commit();
if (!$this->isLogin) {
$this->sys_error("Invalid Token");
exit;
}
$this->db_onedev->trans_begin();
$prm = $this->sys_input;
$id = $prm['id'];
$reason = $prm['reason'];
if (trim($prm['reason']) == "" || $prm['reason'] == null) {
$this->sys_error("alasan harus diisi");
exit;
}
$userID = $this->sys_user['M_UserID'];
$sql = "UPDATE t_orderheader
SET T_OrderHeaderIsActive = 'N',
T_OrderHeaderDeleted = NOW(),
T_OrderHeaderDeletedUserID = ?
WHERE T_OrderHeaderID = ?";
$qry = $this->db_onedev->query($sql, [$userID, $id]);
if (!$qry) {
$last_qry = $this->db_onedev->last_query();
$message = $this->db_onedev->error();
$message['last_qry'] = $last_qry;
$this->sys_error("Error delete order");
$this->db_onedev->trans_rollback();
exit;
}
$sql = "UPDATE t_orderdetail
SET T_OrderDetailIsActive = 'N',
T_OrderDetailDeletedUserID = ?,
T_OrderDetailDeleted = NOW()
WHERE T_OrderDetailT_OrderHeaderID = ?";
$qry = $this->db_onedev->query($sql, [$userID, $id]);
if (!$qry) {
$last_qry = $this->db_onedev->last_query();
$message = $this->db_onedev->error();
$message['last_qry'] = $last_qry;
$this->sys_error("Error delete order detail");
$this->db_onedev->trans_rollback();
exit;
}
$sql = "INSERT INTO void_order(
Void_OrderT_OrderHeaderID,
Void_OrderReason,
Void_OrderUserID,
Void_OrderCreatedUserID,
Void_OrderCreated)
VALUES(?,?,?,?,NOW())";
$qry = $this->db_onedev->query($sql, [$id, $reason, $userID, $userID]);
if (!$qry) {
$last_qry = $this->db_onedev->last_query();
$message = $this->db_onedev->error();
$message['last_qry'] = $last_qry;
$this->sys_error("Error delete order detail");
$this->db_onedev->trans_rollback();
exit;
}
$sql = "UPDATE mcu_preregister_patients
SET Mcu_PreregisterPatientsT_OrderHeaderID = 0,
Mcu_PreregisterPatientsIsRegistered = 'N',
Mcu_PreregisterPatientsLastUpdated = NOW()
WHERE Mcu_PreregisterPatientsT_OrderHeaderID = ?";
$qry = $this->db_onedev->query($sql, [$id]);
if (!$qry) {
$last_qry = $this->db_onedev->last_query();
$message = $this->db_onedev->error();
$message['last_qry'] = $last_qry;
$this->sys_error("Error update preregister");
$this->db_onedev->trans_rollback();
exit;
}
$this->db_onedev->trans_commit();
$this->sys_ok("OK");
}
}