247 lines
8.4 KiB
PHP
Executable File
247 lines
8.4 KiB
PHP
Executable File
<?php
|
|
class Patient extends MY_Controller
|
|
{
|
|
var $db_onedev;
|
|
public function index()
|
|
{
|
|
echo "Patient API";
|
|
}
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
$this->db_onedev = $this->load->database("onedev", true);
|
|
}
|
|
|
|
public function add_notes_bckp($orderid){
|
|
$rst = array();
|
|
$sql = "SELECT Fo_VerificationTypeLabelCorrection as label,
|
|
Fo_VerificationReason as reason,
|
|
Fo_VerificationTypeGroup as xgroup,
|
|
Fo_VerificationTypeName as xname,
|
|
'N' as chex
|
|
FROM fo_verification
|
|
JOIN fo_verificationtype ON Fo_VerificationFo_VericationTypeID = Fo_VericationTypeID
|
|
WHERE
|
|
Fo_VerificationIsOK = 'N' AND Fo_VerificationT_OrderHeaderID = {$orderid}";
|
|
$other = $this->db_onedev->query($sql)->result_array();
|
|
if($other){
|
|
foreach($other as $k => $v){
|
|
array_push($rst,$v);
|
|
}
|
|
}
|
|
$sql = "
|
|
SELECT
|
|
IF(SUM(label) > 0, 'Perubahan pemeriksaan','') as label,
|
|
GROUP_CONCAT(reason separator ',') as reason,
|
|
'TEST' as xgroup,
|
|
'ORDER.TEST' as xname,
|
|
'N' as chex
|
|
FROM (
|
|
SELECT COUNT(*) as label,
|
|
GROUP_CONCAT(CONCAT(T_OrderDetailT_TestName,'(-)') separator ',') as reason,
|
|
Fo_VerificationTestT_OrderHeaderID as orderid
|
|
FROM fo_verification_test
|
|
JOIN t_orderdetail ON Fo_VerificationTestT_OrderDetailID = T_OrderDetailID
|
|
WHERE
|
|
Fo_VerificationTestT_OrderHeaderID = {$orderid} AND Fo_VerificationTestIsOK = 'N'
|
|
GROUP BY Fo_VerificationTestT_OrderHeaderID
|
|
UNION
|
|
SELECT COUNT(*) as label,
|
|
GROUP_CONCAT(CONCAT(T_TestName,'(+)') separator ',') as reason,
|
|
Fo_VerificationTestAddT_OrderHeaderID as orderid
|
|
FROM fo_verification_test_add
|
|
JOIN t_test ON Fo_VerificationTestAddT_TestID = T_TestID
|
|
WHERE
|
|
Fo_VerificationTestAddT_OrderHeaderID = {$orderid} AND Fo_VerificationTestAddIsActive = 'Y'
|
|
GROUP BY Fo_VerificationTestAddT_OrderHeaderID
|
|
) a GROUP BY orderid
|
|
";
|
|
$tests = $this->db_onedev->query($sql)->result_array();
|
|
if($tests){
|
|
foreach($tests as $k => $v){
|
|
array_push($rst,$v);
|
|
}
|
|
}
|
|
|
|
$sql = "SELECT COUNT(*) as xc
|
|
FROM fo_verification_delivery_add
|
|
WHERE
|
|
Fo_VerificationDeliveryAddIsActive = 'Y' AND Fo_VerificationDeliveryAddT_OrderHeaderID = {$orderid} ";
|
|
$delivery = $this->db_onedev->query($sql)->row();
|
|
if($delivery->xc > 0){
|
|
$xv = array('label'=>'Perubahan pengiriman hasil','reason'=>'Silahkan check perubahan pengiriman hasil','xgroup'=>'DELIVERY','xname'=>'ORDER.DELIVERY','chex'=>'N');
|
|
array_push($rst,$xv);
|
|
}
|
|
|
|
return $rst;
|
|
}
|
|
|
|
public function add_notes($orderid){
|
|
$rst = array();
|
|
$sql = "SELECT Fo_VerificationsLabelName as label,
|
|
Fo_VerificationsValueNote as reason,
|
|
Fo_VerificationsLabelButton as button
|
|
FROM fo_verificationsvalue
|
|
JOIN fo_verificationslabel ON Fo_VerificationsValueFo_VerificationsLabelID = Fo_VerificationsLabelID
|
|
WHERE
|
|
Fo_VerificationsValueCheck = 'N' AND Fo_VerificationsValueT_OrderHeaderID = {$orderid}";
|
|
$other = $this->db_onedev->query($sql)->result_array();
|
|
if($other){
|
|
foreach($other as $k => $v){
|
|
array_push($rst,$v);
|
|
}
|
|
}
|
|
return $rst;
|
|
}
|
|
|
|
public function search()
|
|
{
|
|
//# cek token valid
|
|
if (! $this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
|
|
$prm = $this->sys_input;
|
|
$search = $prm["search"];
|
|
$status = $prm["status"];
|
|
|
|
|
|
if($status == 'N'){
|
|
$sql = "SELECT count(*) as total
|
|
FROM t_orderheader
|
|
JOIN t_ordermessage ON T_OrderMessageT_OrderHeaderID = T_OrderHeaderID
|
|
WHERE
|
|
( T_OrderHeaderLabNumber LIKE '%{$search}%' ) AND
|
|
T_OrderMessageDone <> 'Y' AND T_OrderMessageIsActive = 'Y'
|
|
ORDER BY T_OrderHeaderID ASC";
|
|
}else if($status == 'Y'){
|
|
$sql = "SELECT count(*) as total
|
|
FROM t_orderheader
|
|
JOIN t_ordermessage ON T_OrderMessageT_OrderHeaderID = T_OrderHeaderID AND T_OrderMessageIsActive = 'Y'
|
|
WHERE
|
|
( T_OrderHeaderLabNumber LIKE '%{$search}%' ) AND
|
|
T_OrderMessageDone = 'Y'
|
|
ORDER BY T_OrderHeaderID DESC LIMIT 100";
|
|
}else{
|
|
$sql = "SELECT count(*) as total
|
|
FROM t_orderheader
|
|
WHERE
|
|
( T_OrderHeaderLabNumber LIKE '%{$search}%' )";
|
|
}
|
|
//echo $sql;
|
|
$query = $this->db_onedev->query($sql);
|
|
|
|
$tot_count = 0;
|
|
if ($query) {
|
|
$tot_count = $query->result_array()[0]["total"];
|
|
} else {
|
|
$this->sys_error_db("m_patient count", $this->db_onedev);
|
|
exit;
|
|
}
|
|
|
|
if($status == 'N'){
|
|
$sql = "SELECT T_OrderMessageID as xid,
|
|
T_OrderHeaderID as orderid,
|
|
T_OrderHeaderID as orderdate,
|
|
T_OrderHeaderLabNumber as labnumber,
|
|
M_PatientNoReg as patient_noreg,
|
|
T_OrderMessageType as message_type,
|
|
T_OrderMessageMessage as message,
|
|
T_OrderMessageID as message_id,
|
|
fn_fo_supervisor_delivery_verification_done(T_OrderHeaderID) as donedelivery,
|
|
CONCAT(M_TitleName,' ',M_PatientName) as patientname,
|
|
CASE
|
|
WHEN T_OrderMessageType = 'FO.VERIFICATION.REJECT' THEN 'Fo Verification'
|
|
WHEN T_OrderMessageType = 'FO.Supervisor.Sampling' THEN 'Sampling'
|
|
ELSE 'Other'
|
|
END as type,
|
|
CASE
|
|
WHEN T_OrderMessageRead = 'N' AND T_OrderMessageDone = 'N' THEN 'Baru'
|
|
WHEN T_OrderMessageRead = 'Y' AND T_OrderMessageDone = 'N' THEN 'Telah dibaca'
|
|
WHEN T_OrderMessageRead = 'Y' AND T_OrderMessageDone = 'P' THEN 'Sedang dikerjakan'
|
|
END as status
|
|
FROM t_orderheader
|
|
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
|
|
JOIN m_title ON M_PatientM_TitleID = M_TitleID
|
|
JOIN t_ordermessage ON T_OrderMessageT_OrderHeaderID = T_OrderHeaderID
|
|
WHERE
|
|
( T_OrderHeaderLabNumber LIKE '%{$search}%' ) AND
|
|
T_OrderMessageType = 'FO.VERIFICATION.REJECT' AND
|
|
T_OrderMessageDone <> 'Y' AND T_OrderMessageIsActive = 'Y'
|
|
AND T_OrderHeaderIsActive = 'Y'
|
|
ORDER BY T_OrderHeaderID ASC";
|
|
}else if($status == 'Y'){
|
|
$sql = "SELECT T_OrderMessageID as xid,
|
|
T_OrderHeaderID as orderid,
|
|
T_OrderHeaderID as orderdate,
|
|
T_OrderHeaderLabNumber as labnumber,
|
|
M_PatientNoReg as patient_noreg,
|
|
T_OrderMessageType as message_type,
|
|
T_OrderMessageMessage as message,
|
|
T_OrderMessageID as message_id,
|
|
fn_fo_supervisor_delivery_verification_done(T_OrderHeaderID) as donedelivery,
|
|
CONCAT(M_TitleName,' ',M_PatientName) as patientname,
|
|
CASE
|
|
WHEN T_OrderMessageType = 'FO.VERIFICATION.REJECT' THEN 'Fo Verification'
|
|
WHEN T_OrderMessageType = 'FO.Supervisor.Sampling' THEN 'Sampling'
|
|
ELSE 'Other'
|
|
END as type,
|
|
'Selesai' as status
|
|
FROM t_orderheader
|
|
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
|
|
JOIN m_title ON M_PatientM_TitleID = M_TitleID
|
|
JOIN t_ordermessage ON T_OrderMessageT_OrderHeaderID = T_OrderHeaderID AND T_OrderMessageIsActive = 'Y'
|
|
WHERE
|
|
( T_OrderHeaderLabNumber LIKE '%{$search}%' ) AND
|
|
T_OrderMessageType = 'FO.VERIFICATION.REJECT' AND
|
|
T_OrderMessageDone = 'Y'
|
|
AND T_OrderHeaderIsActive = 'Y'
|
|
ORDER BY T_OrderHeaderID DESC LIMIT 20";
|
|
}else{
|
|
$sql = "SELECT -1 as xid,
|
|
T_OrderHeaderID as orderid,
|
|
T_OrderHeaderID as orderdate,
|
|
T_OrderHeaderLabNumber as labnumber,
|
|
M_PatientNoReg as patient_noreg,
|
|
fn_fo_get_laststatus(T_OrderHeaderID) as status_fo,
|
|
'adhoc' as message_type,
|
|
'' as message,
|
|
0 as message_id,
|
|
fn_fo_supervisor_delivery_verification_done(T_OrderHeaderID) as donedelivery,
|
|
CONCAT(M_TitleName,' ',M_PatientName) as patientname,
|
|
'adhoc' as type,
|
|
T_OrderHeaderAddOnPatientMcu as patient_mcu
|
|
FROM t_orderheader
|
|
LEFT JOIN t_orderheaderaddon ON T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID
|
|
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
|
|
JOIN m_title ON M_PatientM_TitleID = M_TitleID
|
|
WHERE
|
|
( T_OrderHeaderLabNumber LIKE '%{$search}%' ) AND T_OrderHeaderIsActive = 'Y'
|
|
ORDER BY T_OrderHeaderID DESC LIMIT 20";
|
|
}
|
|
|
|
//echo $sql;
|
|
$query = $this->db_onedev->query($sql);
|
|
$rows = $query->result_array();
|
|
if($rows){
|
|
foreach($rows as $k => $v){
|
|
if($status == 'N' || $status == 'Y'){
|
|
$rows[$k]['notes'] = $this->add_notes($v['orderid']);
|
|
}
|
|
else{
|
|
$rows[$k]['notes'] = array();
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
$result = array("total" => $tot_count, "records" => $rows, "sql"=> $this->db_onedev->last_query());
|
|
$this->sys_ok($result);
|
|
exit;
|
|
}
|
|
|
|
|
|
}
|