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

123 lines
4.5 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);
}
}
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'];
$search = '%' . $prm['search'] . '%';
$ROW_PER_PAGE = 20;
$start_offset = 0;
// print_r($prm);
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
WHERE T_OrderHeaderMgm_McuID = ?
AND DATE(T_OrderHeaderDate) BETWEEN ? AND ?
AND (T_OrderHeaderLabNumber LIKE ? OR M_PatientName LIKE ?)
AND T_OrderHeaderIsActive = 'Y'
";
$qry = $this->db_onedev->query($sql, [$setup, $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,
CONCAT(IFNULL(M_TitleName, ''), IF(M_TitleName IS NULL, '', '. '), M_PatientName) AS patientName
FROM t_orderheader
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
LEFT JOIN m_title ON M_PatientM_TitleID = M_TitleID
WHERE T_OrderHeaderMgm_McuID = ?
AND DATE(T_OrderHeaderDate) BETWEEN ? AND ?
AND (T_OrderHeaderLabNumber LIKE ? OR M_PatientName LIKE ?)
AND T_OrderHeaderIsActive = 'Y'
LIMIT ? OFFSET ? ";
$qry = $this->db_onedev->query($sql, [$setup, $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);
}
}