Initial import
This commit is contained in:
434
application/controllers/process/Amr_limit.php
Normal file
434
application/controllers/process/Amr_limit.php
Normal file
@@ -0,0 +1,434 @@
|
||||
<?php
|
||||
class Amr_limit extends MY_Controller
|
||||
{
|
||||
function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
function corss()
|
||||
{
|
||||
global $_SERVER;
|
||||
if (isset($_SERVER["HTTP_ORIGIN"])) {
|
||||
header("Access-Control-Allow-Origin: " . $_SERVER["HTTP_ORIGIN"]);
|
||||
} else {
|
||||
header("Access-Control-Allow-Origin: */*");
|
||||
}
|
||||
header("Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS");
|
||||
header(
|
||||
"Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization"
|
||||
);
|
||||
if (
|
||||
isset($_SERVER["REQUEST_METHOD"]) &&
|
||||
$_SERVER["REQUEST_METHOD"] == "OPTIONS"
|
||||
) {
|
||||
http_response_code(200);
|
||||
echo json_encode("OK");
|
||||
exit();
|
||||
}
|
||||
}
|
||||
function update()
|
||||
{
|
||||
$this->corss();
|
||||
$userID = $this->sys_user["M_UserID"];
|
||||
if (!($userID > 0)) {
|
||||
echo json_encode([
|
||||
"status" => "ERR",
|
||||
"message" => "Invalid Token, please re-login",
|
||||
]);
|
||||
exit();
|
||||
}
|
||||
$cvID = $this->sys_input["criticalValueID"];
|
||||
$reportedTo = $this->sys_input["reportedTo"];
|
||||
$adviseNote = $this->sys_input["adviseNote"];
|
||||
$sql = "select * from critical_value where criticalValueID=?";
|
||||
$qry = $this->db->query($sql, [$cvID]);
|
||||
if (!$qry) {
|
||||
echo json_encode([
|
||||
"status" => "ERR",
|
||||
"message" => $this->db->error()["message"],
|
||||
]);
|
||||
exit();
|
||||
}
|
||||
$rows = $qry->result_array();
|
||||
if (count($rows) > 0 && $rows[0]["CriticalValueReportedTo"] != "") {
|
||||
// update advise
|
||||
$sql = "update critical_value set CriticalValueAdvisedNote =? , CriticalValueAdvicedM_UserID= ?,
|
||||
CriticalValueIsAdvised = 'Y',
|
||||
CriticalValueAdvisedDate = now() where CriticalValueID = ?";
|
||||
$qry = $this->db->query($sql, [$adviseNote, $userID, $cvID]);
|
||||
if (!$qry) {
|
||||
echo json_encode([
|
||||
"status" => "ERR",
|
||||
"message" => $this->db->error()["message"],
|
||||
]);
|
||||
exit();
|
||||
}
|
||||
} else {
|
||||
if ($reportedTo != "") {
|
||||
$sql = "update critical_value set CriticalValueReportedTo=? , CriticalValueReportedM_UserID= ?,
|
||||
CriticalValueIsReported = 'Y',
|
||||
CriticalValueReportedDate= now() where CriticalValueID = ?";
|
||||
$qry = $this->db->query($sql, [$reportedTo, $userID, $cvID]);
|
||||
if (!$qry) {
|
||||
echo json_encode([
|
||||
"status" => "ERR",
|
||||
"message" => $this->db->error()["message"],
|
||||
]);
|
||||
exit();
|
||||
}
|
||||
}
|
||||
}
|
||||
echo json_encode(["status" => "OK", "message" => "data updated"]);
|
||||
}
|
||||
function auto_get()
|
||||
{
|
||||
$sql = "select T_OrderHeaderID, T_OrderHeaderDate, T_OrderHeaderLabNumber,
|
||||
fn_get_patient_atribute(T_OrderHeaderM_PatientID) patient,
|
||||
T_TestName,critical_value.*
|
||||
from critical_value
|
||||
join t_orderdetail on
|
||||
CriticalValueIsActive='Y'
|
||||
and (
|
||||
CriticalValueIsReported = 'N'
|
||||
or
|
||||
CriticalValueIsAdvised = 'N'
|
||||
)
|
||||
and CriticalValueT_OrderDetailID = T_OrderDetailID
|
||||
and CriticalValueCreated + interval 10 day > now()
|
||||
join t_test on T_OrderDetailT_TestID = T_TestID
|
||||
join t_orderheader on CriticalValueT_OrderHeaderID = T_OrderHeaderID
|
||||
order by T_OrderDetailT_TestSasCode,CriticalValueCreated desc
|
||||
limit 0,10";
|
||||
$qry = $this->db->query($sql);
|
||||
if (!$qry) {
|
||||
echo json_encode([
|
||||
"status" => "ERR",
|
||||
"message" =>
|
||||
$this->db->error()["message"] .
|
||||
"|\n" .
|
||||
$this->db->last_query(),
|
||||
]);
|
||||
exit();
|
||||
}
|
||||
$rows = $qry->result_array();
|
||||
$result = [];
|
||||
foreach ($rows as $r) {
|
||||
$id = $r["T_OrderHeaderID"];
|
||||
$j_pat = json_decode($r["patient"], true);
|
||||
$pat_name = $j_pat["patient_fullname"];
|
||||
if (
|
||||
$r["CriticalValueIsAdvised"] == "Y" &&
|
||||
$r["CriticalValueIsReported"] == "Y"
|
||||
) {
|
||||
continue;
|
||||
}
|
||||
if (!isset($result[$id])) {
|
||||
$result[$id] = [
|
||||
"labNo" => $r["T_OrderHeaderLabNumber"],
|
||||
"date" => $r["T_OrderHeaderDate"],
|
||||
"patient" => $pat_name,
|
||||
"test" => [],
|
||||
];
|
||||
}
|
||||
$result[$id]["test"][] = [
|
||||
"px" => $r["T_TestName"],
|
||||
"note" => $r["CriticalValueDescription"],
|
||||
"IsReported" => $r["CriticalValueIsReported"],
|
||||
"IsAdvised" => $r["CriticalValueIsAdvised"],
|
||||
];
|
||||
}
|
||||
$xresult = [];
|
||||
foreach ($result as $v) {
|
||||
$xresult[] = $v;
|
||||
}
|
||||
echo json_encode(["status" => "OK", "data" => $xresult]);
|
||||
}
|
||||
function auto_update()
|
||||
{
|
||||
$s_headerID = "";
|
||||
$s_detailID = "";
|
||||
foreach ($this->sys_input["cv"] as $r) {
|
||||
if ($s_headerID != "") {
|
||||
$s_headerID .= ",";
|
||||
}
|
||||
$s_headerID .= $r["headerID"];
|
||||
foreach ($r["details"] as $d) {
|
||||
if ($s_detailID != "") {
|
||||
$s_detailID .= ",";
|
||||
}
|
||||
$s_detailID .= $d;
|
||||
}
|
||||
}
|
||||
if ($s_headerID == "" || $s_detailID == "") {
|
||||
echo json_encode(["status" => "OK", "haveUpdate" => "N"]);
|
||||
exit();
|
||||
}
|
||||
$sql = "select
|
||||
T_OrderDetailID, T_TestName, min(NatMultiruleExtraLow) ExtraLow, max(NatMultiruleExtraHigh) ExtraHigh,
|
||||
T_OrderDetailResult, T_OrderDetailT_OrderHeaderID
|
||||
from t_orderdetail
|
||||
join t_test on T_OrderDetailID in ( $s_detailID )
|
||||
and T_OrderDetailIsActive = 'Y'
|
||||
and T_OrderDetailT_TestID = T_TestID
|
||||
and T_TestIsResult = 'Y'
|
||||
and T_TestIsQuantitative='Y'
|
||||
and T_OrderDetailResult <> ''
|
||||
and T_OrderDetailID not in (
|
||||
select CriticalValueT_OrderDetailID
|
||||
from critical_value
|
||||
where CriticalValueT_OrderHeaderID in ( $s_headerID )
|
||||
)
|
||||
join nat_multirule on T_TestNat_TestID = NatMultiruleNat_TestID
|
||||
group by T_OrderDetailID";
|
||||
$this->corss();
|
||||
$qry = $this->db->query($sql);
|
||||
if (!$qry) {
|
||||
echo json_encode([
|
||||
"status" => "ERR",
|
||||
"message" =>
|
||||
$this->db->error()["message"] .
|
||||
"|\n" .
|
||||
$this->db->last_query(),
|
||||
]);
|
||||
exit();
|
||||
}
|
||||
$rows = $qry->result_array();
|
||||
foreach ($rows as $idx => $r) {
|
||||
$status = "X";
|
||||
if ($r["T_OrderDetailResult"] == "") {
|
||||
$rows[$idx]["status"] = "X";
|
||||
$rows[$idx]["note"] = "Result Empty";
|
||||
continue;
|
||||
}
|
||||
if (!is_numeric($r["T_OrderDetailResult"])) {
|
||||
$rows[$idx]["status"] = "X";
|
||||
$rows[$idx]["note"] = "Result Not Numeric";
|
||||
continue;
|
||||
}
|
||||
if (
|
||||
is_numeric($r["ExtraLow"]) &&
|
||||
floatval($r["ExtraLow"]) > floatval($r["T_OrderDetailResult"])
|
||||
) {
|
||||
$rows[$idx]["status"] = "N";
|
||||
$rows[$idx][
|
||||
"note"
|
||||
] = "Result {$r["T_OrderDetailResult"]} < Extra Low {$r["ExtraLow"]}";
|
||||
continue;
|
||||
}
|
||||
if (
|
||||
is_numeric($r["ExtraHigh"]) &&
|
||||
floatval($r["ExtraHigh"]) < floatval($r["T_OrderDetailResult"])
|
||||
) {
|
||||
$rows[$idx]["status"] = "N";
|
||||
$rows[$idx][
|
||||
"note"
|
||||
] = "Result {$r["T_OrderDetailResult"]} > Extra High {$r["ExtraHigh"]}";
|
||||
continue;
|
||||
}
|
||||
$rows[$idx]["status"] = "Y";
|
||||
$status = "";
|
||||
if (is_numeric($r["ExtraLow"]) && is_numeric($r["ExtraHigh"])) {
|
||||
$rows[$idx][
|
||||
"note"
|
||||
] = "Result dalama range ExtraLow {$r["ExtraLow"]} - Extra High {$r["ExtraHigh"]}";
|
||||
continue;
|
||||
}
|
||||
if (!is_numeric($r["ExtraLow"])) {
|
||||
$status .= $r["ExtraLow"] . " ExtraLow not numeric ";
|
||||
}
|
||||
if (!is_numeric($r["ExtraHigh"])) {
|
||||
$status .= $r["ExtraHigh"] . " ExtraHigh not numeric ";
|
||||
}
|
||||
$rows[$idx]["note"] = $status;
|
||||
}
|
||||
$result = array_filter($rows, function ($r) {
|
||||
return $r["status"] == "N";
|
||||
});
|
||||
$sql = "insert into critical_value(CriticalValueT_OrderHeaderID,CriticalValueT_OrderDetailID,CriticalValueDescription)
|
||||
values(?,?,?)
|
||||
on duplicate key update
|
||||
CriticalValueID = CriticalValueID
|
||||
";
|
||||
$this->db->trans_begin();
|
||||
$updateID = [];
|
||||
foreach ($result as $r) {
|
||||
$qry = $this->db->query($sql, [
|
||||
$r["T_OrderDetailT_OrderHeaderID"],
|
||||
$r["T_OrderDetailID"],
|
||||
$r["note"],
|
||||
]);
|
||||
if (!$qry) {
|
||||
echo json_encode([
|
||||
"status" => "ERR",
|
||||
"message" =>
|
||||
$this->db->error()["message"] .
|
||||
"|\n" .
|
||||
$this->db->last_query(),
|
||||
]);
|
||||
$this->db->trans_rollback();
|
||||
exit();
|
||||
}
|
||||
$updateID[] = $this->db->insert_id();
|
||||
}
|
||||
$this->db->trans_commit();
|
||||
echo json_encode(["status" => "OK", "haveUpdate" => "Y"]);
|
||||
}
|
||||
function get($orderHeaderID)
|
||||
{
|
||||
$sql = "select
|
||||
T_OrderDetailID, T_TestName, min(NatMultiruleExtraLow) ExtraLow, max(NatMultiruleExtraHigh) ExtraHigh,
|
||||
T_OrderDetailResult
|
||||
from t_orderdetail
|
||||
join t_test on T_OrderDetailT_OrderHeaderID = ?
|
||||
and T_OrderDetailIsActive = 'Y'
|
||||
and T_OrderDetailT_TestID = T_TestID
|
||||
and T_TestIsResult = 'Y'
|
||||
and T_TestIsQuantitative='Y'
|
||||
and T_OrderDetailResult <> ''
|
||||
and T_OrderDetailID not in (
|
||||
select CriticalValueT_OrderDetailID
|
||||
from critical_value
|
||||
where CriticalValueT_OrderHeaderID = ?
|
||||
)
|
||||
join nat_multirule on T_TestNat_TestID = NatMultiruleNat_TestID
|
||||
group by T_OrderDetailID";
|
||||
$this->corss();
|
||||
$qry = $this->db->query($sql, [$orderHeaderID, $orderHeaderID]);
|
||||
if (!$qry) {
|
||||
echo json_encode([
|
||||
"status" => "ERR",
|
||||
"message" =>
|
||||
$this->db->error()["message"] .
|
||||
"|\n" .
|
||||
$this->db->last_query(),
|
||||
]);
|
||||
exit();
|
||||
}
|
||||
$rows = $qry->result_array();
|
||||
foreach ($rows as $idx => $r) {
|
||||
$status = "X";
|
||||
if ($r["T_OrderDetailResult"] == "") {
|
||||
$rows[$idx]["status"] = "X";
|
||||
$rows[$idx]["note"] = "Result Empty";
|
||||
continue;
|
||||
}
|
||||
if (!is_numeric($r["T_OrderDetailResult"])) {
|
||||
$rows[$idx]["status"] = "X";
|
||||
$rows[$idx]["note"] = "Result Not Numeric";
|
||||
continue;
|
||||
}
|
||||
if (
|
||||
is_numeric($r["ExtraLow"]) &&
|
||||
floatval($r["ExtraLow"]) > floatval($r["T_OrderDetailResult"])
|
||||
) {
|
||||
$rows[$idx]["status"] = "N";
|
||||
$rows[$idx][
|
||||
"note"
|
||||
] = "Result {$r["T_OrderDetailResult"]} < Extra Low {$r["ExtraLow"]}";
|
||||
continue;
|
||||
}
|
||||
if (
|
||||
is_numeric($r["ExtraHigh"]) &&
|
||||
floatval($r["ExtraHigh"]) < floatval($r["T_OrderDetailResult"])
|
||||
) {
|
||||
$rows[$idx]["status"] = "N";
|
||||
$rows[$idx][
|
||||
"note"
|
||||
] = "Result {$r["T_OrderDetailResult"]} > Extra High {$r["ExtraHigh"]}";
|
||||
continue;
|
||||
}
|
||||
$rows[$idx]["status"] = "Y";
|
||||
$status = "";
|
||||
if (is_numeric($r["ExtraLow"]) && is_numeric($r["ExtraHigh"])) {
|
||||
$rows[$idx][
|
||||
"note"
|
||||
] = "Result dalama range ExtraLow {$r["ExtraLow"]} - Extra High {$r["ExtraHigh"]}";
|
||||
continue;
|
||||
}
|
||||
if (!is_numeric($r["ExtraLow"])) {
|
||||
$status .= $r["ExtraLow"] . " ExtraLow not numeric ";
|
||||
}
|
||||
if (!is_numeric($r["ExtraHigh"])) {
|
||||
$status .= $r["ExtraHigh"] . " ExtraHigh not numeric ";
|
||||
}
|
||||
$rows[$idx]["note"] = $status;
|
||||
}
|
||||
$result = array_filter($rows, function ($r) {
|
||||
return $r["status"] == "N";
|
||||
});
|
||||
$sql = "insert into critical_value(CriticalValueT_OrderHeaderID,CriticalValueT_OrderDetailID,CriticalValueDescription)
|
||||
values(?,?,?)
|
||||
on duplicate key update
|
||||
CriticalValueID = CriticalValueID
|
||||
";
|
||||
$this->db->trans_begin();
|
||||
foreach ($result as $r) {
|
||||
$qry = $this->db->query($sql, [
|
||||
$orderHeaderID,
|
||||
$r["T_OrderDetailID"],
|
||||
$r["note"],
|
||||
]);
|
||||
if (!$qry) {
|
||||
echo json_encode([
|
||||
"status" => "ERR",
|
||||
"message" =>
|
||||
$this->db->error()["message"] .
|
||||
"|\n" .
|
||||
$this->db->last_query(),
|
||||
]);
|
||||
$this->db->trans_rollback();
|
||||
exit();
|
||||
}
|
||||
}
|
||||
$this->db->trans_commit();
|
||||
$sql = "select T_TestName,critical_value.*,
|
||||
M_UserUserName ReportUserName
|
||||
from critical_value
|
||||
join t_orderdetail on
|
||||
CriticalValueT_OrderHeaderID =? and CriticalValueIsActive='Y'
|
||||
and CriticalValueT_OrderDetailID = T_OrderDetailID
|
||||
join t_test on T_OrderDetailT_TestID = T_TestID
|
||||
left join m_user on CriticalValueReportedM_UserID = M_UserID";
|
||||
|
||||
$qry = $this->db->query($sql, [$orderHeaderID]);
|
||||
if (!$qry) {
|
||||
echo json_encode([
|
||||
"status" => "ERR",
|
||||
"message" =>
|
||||
$this->db->error()["message"] .
|
||||
"|\n" .
|
||||
$this->db->last_query(),
|
||||
]);
|
||||
exit();
|
||||
}
|
||||
$rows = $qry->result_array();
|
||||
echo json_encode(["status" => "OK", "data" => $rows]);
|
||||
}
|
||||
}
|
||||
/*
|
||||
drop table if exists critical_value;
|
||||
create table critical_value(
|
||||
CriticalValueID int not null auto_increment primary key,
|
||||
CriticalValueT_OrderHeaderID int,
|
||||
CriticalValueT_OrderDetailID int,
|
||||
CriticalValueDescription text,
|
||||
CriticalValueCreated datetime default current_timestamp(),
|
||||
CriticalValueIsReported varchar(1) default 'N',
|
||||
CriticalValueReportedM_UserID int,
|
||||
CriticalValueReportedDate datetime,
|
||||
CriticalValueReportedTo varchar(50),
|
||||
CriticalValueIsAdvised varchar(1) default 'N',
|
||||
CriticalValueAdvisedDate datetime,
|
||||
CriticalValueAdvisedBy varchar(50),
|
||||
CriticalValueAdvisedNote varchar(100),
|
||||
CriticalValueAdvicedM_UserID int,
|
||||
CriticalValueIsActive varchar(1) default 'Y',
|
||||
key (CriticalValueIsActive),
|
||||
key (CriticalValueT_OrderHeaderID),
|
||||
key (CriticalValueT_OrderDetailID),
|
||||
key (CriticalValueAdvicedM_UserID),
|
||||
key (CriticalValueReportedM_UserID),
|
||||
unique(CriticalValueT_OrderDetailID,CriticalValueIsActive)
|
||||
);
|
||||
*/
|
||||
?>
|
||||
Reference in New Issue
Block a user