281 lines
11 KiB
PHP
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");
|
|
}
|
|
}
|