Flatten mockup repo
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
|
||||
class Company extends MY_Controller
|
||||
{
|
||||
var $db_smartone;
|
||||
|
||||
public function index()
|
||||
{
|
||||
echo "RE Company API";
|
||||
}
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->db_smartone = $this->load->database("onedev", true);
|
||||
}
|
||||
|
||||
public function search()
|
||||
{
|
||||
$prm = $this->sys_input;
|
||||
|
||||
$qry = "%" . $prm["qry"] . '%';
|
||||
|
||||
$sql = "Select M_CompanyID, M_CompanyName
|
||||
from m_company
|
||||
where M_CompanyName like ?
|
||||
and M_CompanyIsActive = 'Y'
|
||||
limit 0,30";
|
||||
$query = $this->db_smartone->query($sql, array($qry) );
|
||||
if ($query) {
|
||||
$rows = $query->result_array();
|
||||
$rows[] = array("M_CompanyID" => 0, "M_CompanyName" => "Semua");
|
||||
$result = array("data" => $rows );
|
||||
$this->sys_ok($result);
|
||||
}
|
||||
else {
|
||||
$this->sys_error_db("", $this->db_smartone);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,188 @@
|
||||
<?php
|
||||
class History extends MY_Controller
|
||||
{
|
||||
var $db_smartone;
|
||||
|
||||
public function index()
|
||||
{
|
||||
echo "History API";
|
||||
}
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->db_smartone = $this->load->database("onedev", true);
|
||||
}
|
||||
|
||||
public function search_v2()
|
||||
{
|
||||
$prm = $this->sys_input;
|
||||
$orderID = $prm["order_id"];
|
||||
$sql = "select T_OrderHeaderM_PatientID from t_orderheader where T_OrderHeaderID=?";
|
||||
$query = $this->db_smartone->query($sql, array($orderID) );
|
||||
if (!$query) {
|
||||
$this->sys_error_db("Err : Patient", $this->db_smartone);
|
||||
exit;
|
||||
}
|
||||
$rows = $query->result_array();
|
||||
if (count($rows) == 0 ) {
|
||||
$this->sys_error_db("No Patient", $this->db_smartone);
|
||||
exit;
|
||||
}
|
||||
$patientID = $rows[0]["T_OrderHeaderM_PatientID"];
|
||||
|
||||
$maxOrder = 5;
|
||||
$sql = "select min(T_OrderHeaderID) minID
|
||||
from t_orderheader
|
||||
where T_OrderHeaderM_PatientID = ?
|
||||
and T_OrderHeaderID < ?
|
||||
and T_OrderHeaderIsActive = 'Y'
|
||||
order by T_OrderHeaderID desc
|
||||
limit 0, $maxOrder";
|
||||
$query = $this->db_smartone->query($sql, array($patientID, $orderID) );
|
||||
if (!$query) {
|
||||
$this->sys_error_db("Err : Patient", $this->db_smartone);
|
||||
exit;
|
||||
}
|
||||
$rows = $query->result_array();
|
||||
if (count($rows) == 0 ) {
|
||||
$this->sys_error_db("No Patient", $this->db_smartone);
|
||||
exit;
|
||||
}
|
||||
$minOrderID = $rows[0]["minID"];
|
||||
|
||||
$sql = "select date(T_OrderHeaderDate) T_OrderHeaderDate, T_OrderHeaderLabNumber,T_OrderHeaderID,
|
||||
T_TestID,
|
||||
T_TestShortName , T_OrderDetailResult, T_TestIsResult, T_OrderDetailResultFlag,
|
||||
(length(T_TestSasCode) - 6 ) / 2 Level, T_TestSasCode, Nat_UnitName
|
||||
from t_orderheader
|
||||
join t_orderdetail on T_OrderHeaderM_PatientID = ?
|
||||
and T_OrderHeaderIsActive = 'Y' and T_OrderDetailIsActive = 'Y'
|
||||
and T_OrderHeaderID = T_OrderDetailT_OrderHeaderID
|
||||
and T_OrderHeaderID < ?
|
||||
and T_OrderHeaderID >= ?
|
||||
join t_test on T_OrderDetailT_TestID = T_TestID
|
||||
join nat_unit on T_OrderDetailNat_UnitID = Nat_UnitID
|
||||
join group_resultdetail on T_TestID = Group_ResultDetailT_TestID
|
||||
and Group_ResultDetailGroup_ResultID = 1
|
||||
order by T_TestSasCode";
|
||||
|
||||
$query = $this->db_smartone->query($sql, array($patientID, $orderID, $minOrderID ) );
|
||||
if (!$query) {
|
||||
$this->sys_error_db("Err : History ", $this->db_smartone);
|
||||
exit;
|
||||
}
|
||||
$rows = $query->result_array();
|
||||
$arr_result = array();
|
||||
$prev_date = "";
|
||||
$cur_idx = 0;
|
||||
$prev_id = 0;
|
||||
$arr_px = array();
|
||||
|
||||
$arr_date = array();
|
||||
$index_px = 0;
|
||||
$arr_test = array();
|
||||
|
||||
foreach($rows as $r) {
|
||||
$is_result = $r["T_TestIsResult"];
|
||||
if ($is_result == "N" ) continue;
|
||||
$order_id = $r["T_OrderHeaderID"];
|
||||
|
||||
$date = $r["T_OrderHeaderDate"];
|
||||
$px_name = $r["T_TestShortName"] ;
|
||||
|
||||
$result = $r["T_OrderDetailResult"] ;
|
||||
if (is_numeric($result) ) {
|
||||
$dec = strlen(substr(strrchr($str, "."), 1));
|
||||
$result = number_format($result,$dec,".",",");
|
||||
}
|
||||
$result .= " ". $r["T_OrderDetailResultFlag"];
|
||||
|
||||
if(! isset($arr_px[$px_name]) ) {
|
||||
$arr_result[] = array(
|
||||
"px_name" => $px_name,
|
||||
"code" => $r["T_TestSasCode"],
|
||||
"unit" => $r["Nat_UnitName"],
|
||||
"result" => array()
|
||||
);
|
||||
$arr_px[$px_name] = array("code" => $r["T_TestSasCode"], "name" => $px_name);
|
||||
$arr_test[] = array("code" => $r["T_TestSasCode"], "name" => $px_name);
|
||||
$index_px = count($arr_result) - 1;
|
||||
}
|
||||
if (! in_array($date, $arr_date) ) $arr_date[] = $date;
|
||||
$arr_result[$index_px]["result"][$date] = $result;
|
||||
$prev_id = $order_id;
|
||||
}
|
||||
foreach($arr_result as $idx => $v ) {
|
||||
foreach($arr_date as $date) {
|
||||
if (! isset($v["result"][$date] ) ) {
|
||||
$arr_result[$idx]["result"][$date] = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
sort($arr_date);
|
||||
|
||||
$result = array("pxs" => $arr_test, "result" => $arr_result, "dates" => $arr_date);
|
||||
$this->sys_ok($result);
|
||||
}
|
||||
|
||||
public function search()
|
||||
{
|
||||
$prm = $this->sys_input;
|
||||
$orderID = $prm["order_id"];
|
||||
$sql = "select T_OrderHeaderM_PatientID from t_orderheader where T_OrderHeaderID=?";
|
||||
$query = $this->db_smartone->query($sql, array($orderID) );
|
||||
if (!$query) {
|
||||
$this->sys_error_db("Err : Patient", $this->db_smartone);
|
||||
exit;
|
||||
}
|
||||
$rows = $query->result_array();
|
||||
if (count($rows) == 0 ) {
|
||||
$this->sys_error_db("No Patient", $this->db_smartone);
|
||||
exit;
|
||||
}
|
||||
$patientID = $rows[0]["T_OrderHeaderM_PatientID"];
|
||||
$sql = "select T_OrderHeaderDate, T_OrderHeaderLabNumber,T_OrderHeaderID,
|
||||
T_TestShortName , T_OrderDetailResult, T_TestIsResult, T_OrderDetailResultFlag,
|
||||
(length(T_TestSasCode) - 6 ) / 2 Level
|
||||
from t_orderheader
|
||||
join t_orderdetail on T_OrderHeaderM_PatientID = ?
|
||||
and T_OrderHeaderIsActive = 'Y' and T_OrderDetailIsActive = 'Y'
|
||||
and T_OrderHeaderID = T_OrderDetailT_OrderHeaderID
|
||||
and T_OrderHeaderID < ?
|
||||
join t_test on T_OrderDetailT_TestID = T_TestID
|
||||
join group_resultdetail on T_TestID = Group_ResultDetailT_TestID
|
||||
and Group_ResultDetailGroup_ResultID = 1
|
||||
order by T_OrderHeaderID, T_TestSasCode";
|
||||
|
||||
$query = $this->db_smartone->query($sql, array($patientID, $orderID) );
|
||||
if (!$query) {
|
||||
$this->sys_error_db("Err : History ", $this->db_smartone);
|
||||
exit;
|
||||
}
|
||||
$rows = $query->result_array();
|
||||
$result = array();
|
||||
$prev_date = "";
|
||||
$cur_idx = 0;
|
||||
$max_hist = 4;
|
||||
foreach($rows as $r) {
|
||||
$date = $r["T_OrderHeaderDate"];
|
||||
if ($prev_date != $date ) {
|
||||
if ($cur_idx == $max_hist ) break;
|
||||
$result[]["date"] = $date;
|
||||
$cur_idx = count($result) - 1;
|
||||
$result[$cur_idx]["data"] = array();
|
||||
$result[$cur_idx]["id"] = $r["T_OrderHeaderID"];
|
||||
}
|
||||
$result[$cur_idx]["data"][] = array(
|
||||
"px_name" => $r["T_TestShortName"],
|
||||
"is_result" => $r["T_TestIsResult"],
|
||||
"result" => $r["T_OrderDetailResult"],
|
||||
"flag" => $r["T_OrderDetailResultFlag"],
|
||||
"level" => $r["Level"]
|
||||
);
|
||||
$prev_date = $date ;
|
||||
}
|
||||
$this->sys_ok($result);
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,411 @@
|
||||
<?php
|
||||
class Rv_patient extends MY_Controller
|
||||
{
|
||||
var $db_smartone;
|
||||
|
||||
public function index()
|
||||
{
|
||||
echo "RE Patient API";
|
||||
}
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->db_smartone = $this->load->database("onedev", true);
|
||||
}
|
||||
public function save_note() {
|
||||
$prm = $this->sys_input;
|
||||
if ( ! $this->isLogin ) {
|
||||
echo json_encode(
|
||||
array("status"=>"ERR", "message"=> "Invalid Token")
|
||||
);
|
||||
exit;
|
||||
}
|
||||
$userID = $this->sys_user["M_UserID"];
|
||||
$order_id = $prm["order_id"];
|
||||
$note = $prm["note"];
|
||||
$int_note = $prm["int_note"];
|
||||
$sql ="update t_orderheaderaddon set T_OrderHeaderAddOnValidationNote = ? ,
|
||||
T_OrderHeaderAddOnValidationNoteM_UserID= ?,
|
||||
T_OrderHeaderAddOnValidationInternal = ?,
|
||||
T_OrderHeaderAddOnValidationInternalM_UserID = ?
|
||||
where T_OrderHeaderAddOnT_OrderHeaderID = ?";
|
||||
$qry = $this->db_smartone->query($sql,array($note,$userID, $int_note, $userID, $order_id));
|
||||
if (! $qry) {
|
||||
print_r($this->db_smartone->error());
|
||||
}
|
||||
echo $this->sys_ok( array("status" => "OK"));
|
||||
}
|
||||
public function send_to_adm() {
|
||||
$prm = $this->sys_input;
|
||||
if ( ! $this->isLogin ) {
|
||||
echo json_encode(
|
||||
array("status"=>"ERR", "message"=> "Invalid Token")
|
||||
);
|
||||
exit;
|
||||
}
|
||||
$userID = $this->sys_user["M_UserID"];
|
||||
|
||||
$order_id = $prm["order_id"];
|
||||
$sql ="update t_orderheaderaddon set T_OrderHeaderAddOnReadyPrint = 'Y' ,
|
||||
T_OrderHeaderAddOnReadyPrintDate = now()
|
||||
where T_OrderHeaderAddOnT_OrderHeaderID = ?";
|
||||
$this->db_smartone->query($sql,array($order_id));
|
||||
$sql ="select * from t_orderdetail where T_OrderDetailValidation = 'Y'
|
||||
and T_OrderDetailT_OrderHeaderID = ?";
|
||||
$qry = $this->db_smartone->query($sql,array($order_id));
|
||||
$rows = [];
|
||||
if ($qry) {
|
||||
$rows = $qry->result_array();
|
||||
}
|
||||
$j_data = json_encode($rows);
|
||||
//insert into log
|
||||
$sql = "insert into one_log.log_printlab(Log_PrintLabT_OrderHeaderID,
|
||||
Log_PrintLabCode,
|
||||
Log_PrintLabDatetime, Log_PrintLabJson, Log_PrintLabUserID)
|
||||
values(?,'SEND.TO.ADM',now(),?,$userID)";
|
||||
$this->db_smartone->query($sql,array($order_id,$j_data));
|
||||
echo $this->sys_ok( array("status" => "OK"));
|
||||
}
|
||||
|
||||
public function search()
|
||||
{
|
||||
$prm = $this->sys_input;
|
||||
$max_rst = 10;
|
||||
|
||||
$sdate = $prm["start_date"] . '%';
|
||||
$search = '%' . $prm["search"] . '%';
|
||||
$page = $prm['page'];
|
||||
|
||||
if ($page == null)
|
||||
$page = 1;
|
||||
|
||||
$offset = ($page - 1) * $max_rst;
|
||||
|
||||
// OVERRIDE
|
||||
$max_rst = 9999;
|
||||
$offset = 0;
|
||||
$q_company = "";
|
||||
$company_id = 0;
|
||||
if (isset($prm["company_id"])) $company_id = $prm["company_id"];
|
||||
if ($company_id > 0 ) $q_company = " and T_OrderHeaderM_CompanyID = $company_id ";
|
||||
// janji hasil hari ini
|
||||
$sql = "select T_OrderPromiseT_OrderHeaderID
|
||||
from t_orderpromise
|
||||
where T_OrderPromiseIsActive = 'Y' and date(T_OrderPromiseDateTime) = ?";
|
||||
$qry = $this->db_smartone->query($sql, array($sdate));
|
||||
$promise_ids = "0";
|
||||
if ($qry) {
|
||||
$xrows = $qry->result_array();
|
||||
if ( count($xrows) > 0 ) {
|
||||
$xids = array();
|
||||
foreach($xrows as $r) $xids[] = $r["T_OrderPromiseT_OrderHeaderID"];
|
||||
$promise_ids = join(",",$xids);
|
||||
}
|
||||
}
|
||||
// -- la.Nat_LangID M_LangID, la.Nat_LangCode M_LangCode, la.Nat_LangName M_LangName,
|
||||
// -- lb.Nat_LangID SecondM_LangID, lb.Nat_LangCode SecondM_LangCode, lb.Nat_LangName SecondM_LangName,
|
||||
$sql = " select
|
||||
x.*,
|
||||
la.Nat_LangID M_LangID, la.Nat_LangCode M_LangCode, la.Nat_LangName M_LangName,
|
||||
lb.Nat_LangID SecondM_LangID, lb.Nat_LangCode SecondM_LangCode, lb.Nat_LangName SecondM_LangName
|
||||
from
|
||||
(
|
||||
SELECT
|
||||
T_OrderHeaderM_LangID, T_OrderHeaderAddOnSecondM_LangID,
|
||||
T_OrderHeaderID, T_OrderHeaderLabNumber, T_OrderHeaderDate,
|
||||
M_PatientID, M_PatientNoReg, fn_global_patient_name(M_PatientID) M_PatientName,
|
||||
M_PatientDOB, T_OrderHeaderM_PatientAge, M_PatientHP, M_SexName,
|
||||
da.M_DoctorID doctor_pj_id, fn_global_doctor_name(da.M_DoctorID) doctor_pj_name,
|
||||
db.M_DoctorID doctor_sender_id, fn_global_doctor_name(db.M_DoctorID) doctor_sender_name,
|
||||
M_MouID, M_MouName, M_CompanyID, M_CompanyName,
|
||||
T_OrderHeaderFoNote, T_OrderHeaderSamplingNote, T_OrderHeaderResultNote, T_OrderHeaderLangIsSI,
|
||||
T_OrderHeaderAddOnSecondLangIsSI,
|
||||
T_OrderHeaderIsCito, fn_global_delivery_items(T_OrderHeaderID) as deliveries,
|
||||
T_OrderPromiseDateTime, fn_process_history(T_OrderHeaderID) is_history,
|
||||
if(T_OrderHeaderAddOnLabNumberOrigin is not null, T_OrderHeaderAddOnLabNumberOrigin,
|
||||
T_OrderHeaderLabNumberExt) T_OrderHeaderLabNumberExt,
|
||||
T_OrderHeaderAddOnVerificationDone,
|
||||
T_OrderHeaderAddOnValidationDone,
|
||||
T_OrderHeaderAddOnReadyPrint,
|
||||
CONCAT('[', GROUP_CONCAT(DISTINCT CONCAT('\"', T_OrderPromiseDateTime, '\"') SEPARATOR ','), ']') order_promise
|
||||
from t_orderheader
|
||||
JOIN t_orderheaderaddon ON T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID
|
||||
{$q_company}
|
||||
JOIN t_orderdetail ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID
|
||||
AND T_OrderDetailIsActive= 'Y'
|
||||
-- AND T_OrderDetailVerification = 'Y'
|
||||
JOIN t_orderpromise ON T_OrderDetailT_OrderPromiseID = T_OrderPromiseID
|
||||
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
|
||||
JOIN documentation_group_detail ON DocumentationGroupDetailNat_SubGroupID = T_TestNat_SubGroupID
|
||||
AND DocumentationGroupDetailIsActive = 'Y'
|
||||
JOIN documentation_group ON DocumentationGroupDetailDocumentationGroupID = DocumentationGroupID
|
||||
AND DocumentationGroupName = 'lab'
|
||||
join m_patient on T_OrderHeaderM_PatientID = M_PatientID
|
||||
left join m_doctor da on T_OrderHeaderPJM_DoctorID = da.M_DoctorID
|
||||
join m_doctor db on T_OrderHeaderSenderM_DoctorID = db.M_DoctorID
|
||||
JOIN m_company on T_OrderHeaderM_CompanyID = M_CompanyID
|
||||
JOIN m_mou on T_OrderHeaderM_MouID = M_MouID
|
||||
JOIN m_sex on M_PatientM_SexID = M_SexID
|
||||
where T_OrderHeaderIsActive = 'Y'
|
||||
and (T_OrderHeaderDate LIKE ? )
|
||||
and
|
||||
( M_PatientName LIKE ?
|
||||
or T_OrderHeaderLabNumber like ?
|
||||
or T_OrderHeaderAddOnLabNumberOrigin like ?
|
||||
or T_OrderHeaderLabNumberExt like ?
|
||||
)
|
||||
AND T_OrderHeaderAddOnFOVerification = 'Y'
|
||||
GROUP BY T_OrderHeaderID
|
||||
|
||||
union
|
||||
|
||||
SELECT
|
||||
T_OrderHeaderM_LangID, T_OrderHeaderAddOnSecondM_LangID,
|
||||
T_OrderHeaderID, T_OrderHeaderLabNumber, T_OrderHeaderDate,
|
||||
M_PatientID, M_PatientNoReg, fn_global_patient_name(M_PatientID) M_PatientName,
|
||||
M_PatientDOB, T_OrderHeaderM_PatientAge, M_PatientHP, M_SexName,
|
||||
da.M_DoctorID doctor_pj_id, fn_global_doctor_name(da.M_DoctorID) doctor_pj_name,
|
||||
db.M_DoctorID doctor_sender_id, fn_global_doctor_name(db.M_DoctorID) doctor_sender_name,
|
||||
M_MouID, M_MouName, M_CompanyID, M_CompanyName,
|
||||
T_OrderHeaderFoNote, T_OrderHeaderSamplingNote, T_OrderHeaderResultNote, T_OrderHeaderLangIsSI,
|
||||
T_OrderHeaderAddOnSecondLangIsSI,
|
||||
T_OrderHeaderIsCito, fn_global_delivery_items(T_OrderHeaderID) as deliveries,
|
||||
T_OrderPromiseDateTime, fn_process_history(T_OrderHeaderID) is_history,
|
||||
if(T_OrderHeaderAddOnLabNumberOrigin is not null, T_OrderHeaderAddOnLabNumberOrigin,
|
||||
T_OrderHeaderLabNumberExt) T_OrderHeaderLabNumberExt,
|
||||
T_OrderHeaderAddOnVerificationDone,
|
||||
T_OrderHeaderAddOnValidationDone,
|
||||
T_OrderHeaderAddOnReadyPrint,
|
||||
CONCAT('[', GROUP_CONCAT(DISTINCT CONCAT('\"', T_OrderPromiseDateTime, '\"') SEPARATOR ','), ']') order_promise
|
||||
from t_orderheader
|
||||
JOIN t_orderheaderaddon ON T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID
|
||||
{$q_company}
|
||||
JOIN t_orderdetail ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID
|
||||
AND T_OrderDetailIsActive= 'Y'
|
||||
-- AND T_OrderDetailVerification = 'Y'
|
||||
JOIN t_orderpromise ON T_OrderDetailT_OrderPromiseID = T_OrderPromiseID
|
||||
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
|
||||
JOIN documentation_group_detail ON DocumentationGroupDetailNat_SubGroupID = T_TestNat_SubGroupID
|
||||
AND DocumentationGroupDetailIsActive = 'Y'
|
||||
JOIN documentation_group ON DocumentationGroupDetailDocumentationGroupID = DocumentationGroupID
|
||||
AND DocumentationGroupName = 'lab'
|
||||
join m_patient on T_OrderHeaderM_PatientID = M_PatientID
|
||||
left join m_doctor da on T_OrderHeaderPJM_DoctorID = da.M_DoctorID
|
||||
join m_doctor db on T_OrderHeaderSenderM_DoctorID = db.M_DoctorID
|
||||
JOIN m_company on T_OrderHeaderM_CompanyID = M_CompanyID
|
||||
JOIN m_mou on T_OrderHeaderM_MouID = M_MouID
|
||||
JOIN m_sex on M_PatientM_SexID = M_SexID
|
||||
where T_OrderHeaderIsActive = 'Y'
|
||||
and T_OrderHeaderID in ( $promise_ids)
|
||||
and
|
||||
( M_PatientName LIKE ?
|
||||
or T_OrderHeaderLabNumber like ?
|
||||
or T_OrderHeaderAddOnLabNumberOrigin like ?
|
||||
or T_OrderHeaderLabNumberExt like ?
|
||||
)
|
||||
AND T_OrderHeaderAddOnFOVerification = 'Y'
|
||||
order by FIELD(T_OrderHeaderIsCito, 'Y', 'N') ASC, T_OrderPromiseDateTime
|
||||
) x
|
||||
JOIN nat_lang la ON T_OrderHeaderM_LangID = la.Nat_LangID
|
||||
LEFT JOIN nat_lang lb ON T_OrderHeaderAddOnSecondM_LangID = lb.Nat_LangID
|
||||
";
|
||||
$query = $this->db_smartone->query($sql, [$sdate, $search, $search, $search,$search,
|
||||
$search, $search, $search,$search ]);
|
||||
///$query = $this->db_smartone->query($sql, [$sdate, $sdate, $search, $search, $search,$search ]);
|
||||
//echo $this->db_smartone->last_query();
|
||||
if ($query) {
|
||||
$rows = $query->result_array();
|
||||
foreach ($rows as $k => $v) {
|
||||
$rows[$k]['data'] = json_decode($v['data']);
|
||||
|
||||
$rows[$k]['delivery'] = [];
|
||||
$r = $this->db_smartone->query("CALL sp_fo_payment_get_delivery('{$v['T_OrderHeaderID']}')");
|
||||
$this->clean_mysqli_connection($this->db_smartone->conn_id);
|
||||
if ($r) {
|
||||
$d = $r->row();
|
||||
$rows[$k]['delivery'] = json_decode($d->delivery);
|
||||
}
|
||||
|
||||
$rows[$k]['deliveries'] = JSON_DECODE($v['deliveries']);
|
||||
$rows[$k]['order_promise'] = JSON_DECODE($v['order_promise']);
|
||||
foreach($rows[$k]['order_promise'] as $l => $w)
|
||||
$rows[$k]['order_promise'][$l] = date('d-m-Y H:i', strtotime($w));
|
||||
}
|
||||
|
||||
$result = array("total" => $tot_count, "total_page" => ceil($tot_count/$max_rst), "cur_page" => $page, "records" => $rows, "total_display" => sizeof($rows), "q" => $this->db_smartone->last_query());
|
||||
$this->sys_ok($result);
|
||||
}
|
||||
else {
|
||||
$this->sys_error_db("worklist rows", $this->db_smartone);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
public function old_search()
|
||||
{
|
||||
$prm = $this->sys_input;
|
||||
$max_rst = 10;
|
||||
|
||||
$sdate = $prm["start_date"] . '%';
|
||||
$search = '%' . $prm["search"] . '%';
|
||||
$page = $prm['page'];
|
||||
|
||||
if ($page == null)
|
||||
$page = 1;
|
||||
|
||||
$offset = ($page - 1) * $max_rst;
|
||||
|
||||
// OVERRIDE
|
||||
$max_rst = 9999;
|
||||
$offset = 0;
|
||||
$q_company = "";
|
||||
$company_id = 0;
|
||||
if (isset($prm["company_id"])) $company_id = $prm["company_id"];
|
||||
if ($company_id > 0 ) $q_company = " and T_OrderHeaderM_CompanyID = $company_id ";
|
||||
|
||||
|
||||
$sql = "SELECT *,
|
||||
CONCAT('[', GROUP_CONCAT(DISTINCT CONCAT('\"', T_OrderPromiseDateTime, '\"') SEPARATOR ','), ']') order_promise FROM (
|
||||
SELECT T_OrderHeaderID, T_OrderHeaderLabNumber, T_OrderHeaderDate,
|
||||
M_PatientID, M_PatientNoReg, fn_global_patient_name(M_PatientID) M_PatientName,
|
||||
M_PatientDOB, T_OrderHeaderM_PatientAge, M_PatientHP, M_SexName,
|
||||
da.M_DoctorID doctor_pj_id, fn_global_doctor_name(da.M_DoctorID) doctor_pj_name,
|
||||
db.M_DoctorID doctor_sender_id, fn_global_doctor_name(db.M_DoctorID) doctor_sender_name,
|
||||
M_MouID, M_MouName, M_CompanyID, M_CompanyName,
|
||||
T_OrderHeaderFoNote, T_OrderHeaderSamplingNote, T_OrderHeaderResultNote,
|
||||
la.Nat_LangID M_LangID, la.Nat_LangCode M_LangCode, la.Nat_LangName M_LangName, T_OrderHeaderLangIsSI,
|
||||
lb.Nat_LangID SecondM_LangID, lb.Nat_LangCode SecondM_LangCode, lb.Nat_LangName SecondM_LangName,
|
||||
T_OrderHeaderAddOnSecondLangIsSI,
|
||||
T_OrderHeaderIsCito, fn_global_delivery_items(T_OrderHeaderID) as deliveries,
|
||||
T_OrderPromiseDateTime, fn_process_history(T_OrderHeaderID) is_history,
|
||||
if(T_OrderHeaderAddOnLabNumberOrigin is not null, T_OrderHeaderAddOnLabNumberOrigin,
|
||||
T_OrderHeaderLabNumberExt) T_OrderHeaderLabNumberExt,
|
||||
T_OrderHeaderAddOnVerificationDone,
|
||||
T_OrderHeaderAddOnValidationDone,
|
||||
T_OrderHeaderAddOnReadyPrint
|
||||
from t_orderheader
|
||||
JOIN t_orderheaderaddon ON T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID
|
||||
{$q_company}
|
||||
JOIN t_orderdetail ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID
|
||||
AND T_OrderDetailIsActive= 'Y'
|
||||
-- AND T_OrderDetailVerification = 'Y'
|
||||
JOIN t_orderpromise ON T_OrderDetailT_OrderPromiseID = T_OrderPromiseID
|
||||
JOIN t_test ON T_OrderDetailT_TestID = T_TestID
|
||||
JOIN documentation_group_detail ON DocumentationGroupDetailNat_SubGroupID = T_TestNat_SubGroupID
|
||||
AND DocumentationGroupDetailIsActive = 'Y'
|
||||
JOIN documentation_group ON DocumentationGroupDetailDocumentationGroupID = DocumentationGroupID
|
||||
AND DocumentationGroupName = 'lab'
|
||||
join m_patient on T_OrderHeaderM_PatientID = M_PatientID
|
||||
left join m_doctor da on T_OrderHeaderPJM_DoctorID = da.M_DoctorID
|
||||
join m_doctor db on T_OrderHeaderSenderM_DoctorID = db.M_DoctorID
|
||||
JOIN m_company on T_OrderHeaderM_CompanyID = M_CompanyID
|
||||
JOIN m_mou on T_OrderHeaderM_MouID = M_MouID
|
||||
JOIN m_sex on M_PatientM_SexID = M_SexID
|
||||
JOIN nat_lang la ON T_OrderHeaderM_LangID = la.Nat_LangID
|
||||
LEFT JOIN nat_lang lb ON T_OrderHeaderAddOnSecondM_LangID = lb.Nat_LangID
|
||||
where T_OrderHeaderIsActive = 'Y'
|
||||
and (T_OrderHeaderDate LIKE ? OR
|
||||
T_OrderHeaderID in (
|
||||
select T_OrderPromiseT_OrderHeaderID
|
||||
from t_orderpromise
|
||||
where T_OrderPromiseIsActive = 'Y'
|
||||
and T_OrderPromiseDateTime LIKE ?)
|
||||
)
|
||||
and
|
||||
( M_PatientName LIKE ?
|
||||
or T_OrderHeaderLabNumber like ?
|
||||
or T_OrderHeaderAddOnLabNumberOrigin like ?
|
||||
or T_OrderHeaderLabNumberExt like ?
|
||||
)
|
||||
AND T_OrderHeaderAddOnFOVerification = 'Y'
|
||||
order by FIELD(T_OrderHeaderIsCito, 'Y', 'N') ASC, T_OrderPromiseDateTime
|
||||
) x
|
||||
GROUP BY T_OrderHeaderID
|
||||
order by FIELD(T_OrderHeaderIsCito, 'Y', 'N') ASC, T_OrderPromiseDateTime
|
||||
limit {$offset}, {$max_rst}";
|
||||
$query = $this->db_smartone->query($sql, [$sdate, $sdate, $search, $search, $search,$search ]);
|
||||
|
||||
if ($query) {
|
||||
$rows = $query->result_array();
|
||||
foreach ($rows as $k => $v) {
|
||||
$rows[$k]['data'] = json_decode($v['data']);
|
||||
|
||||
$rows[$k]['delivery'] = [];
|
||||
$r = $this->db_smartone->query("CALL sp_fo_payment_get_delivery('{$v['T_OrderHeaderID']}')");
|
||||
$this->clean_mysqli_connection($this->db_smartone->conn_id);
|
||||
if ($r) {
|
||||
$d = $r->row();
|
||||
$rows[$k]['delivery'] = json_decode($d->delivery);
|
||||
}
|
||||
|
||||
$rows[$k]['deliveries'] = JSON_DECODE($v['deliveries']);
|
||||
$rows[$k]['order_promise'] = JSON_DECODE($v['order_promise']);
|
||||
foreach($rows[$k]['order_promise'] as $l => $w)
|
||||
$rows[$k]['order_promise'][$l] = date('d-m-Y H:i', strtotime($w));
|
||||
}
|
||||
|
||||
$result = array("total" => $tot_count, "total_page" => ceil($tot_count/$max_rst), "cur_page" => $page, "records" => $rows, "total_display" => sizeof($rows), "q" => $this->db_smartone->last_query());
|
||||
$this->sys_ok($result);
|
||||
}
|
||||
else {
|
||||
$this->sys_error_db("worklist rows", $this->db_smartone);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
public function info_req()
|
||||
{
|
||||
$prm = $this->sys_input;
|
||||
$sql = "CALL sp_process_result_reqs(?)";
|
||||
$query = $this->db_smartone->query($sql, [$prm['order_id']]);
|
||||
if ($query)
|
||||
{
|
||||
$row = $query->row();
|
||||
$this->clean_mysqli_connection($this->db_smartone->conn_id);
|
||||
$sql = "select
|
||||
T_OrderHeaderAddOnValidationNote,T_OrderHeaderAddOnValidationInternal,
|
||||
fn_get_staff(T_OrderHeaderFoNoteM_UserID) FoUser,
|
||||
fn_get_staff(T_OrderHeaderVerificationNoteM_UserID) ScreeningUser,
|
||||
fn_get_staff(T_OrderHeaderSamplingNoteM_UserID) SamplingUser,
|
||||
fn_get_staff(T_OrderHeaderResultNoteM_UserID) ResultUser
|
||||
from t_orderheaderaddon
|
||||
join t_orderheader on T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID
|
||||
where T_OrderHeaderAddOnT_OrderHeaderID = ?";
|
||||
$qry = $this->db_smartone->query($sql, array($prm["order_id"]));
|
||||
$validationNote = "";
|
||||
$validationInternal = "";
|
||||
$foUser = "";
|
||||
$screeningUser = "";
|
||||
$samplingUser = "";
|
||||
$resultUser = "";
|
||||
if ($qry) {
|
||||
$rows = $qry->result_array();
|
||||
if (count($rows) > 0) {
|
||||
$validationNote = $rows[0]["T_OrderHeaderAddOnValidationNote"];
|
||||
$validationInternal= $rows[0]["T_OrderHeaderAddOnValidationInternal"];
|
||||
$foUser= $rows[0]["FoUser"];
|
||||
$screeningUser= $rows[0]["ScreeningUser"];
|
||||
$samplingUser= $rows[0]["SamplingUser"];
|
||||
$resultUser= $rows[0]["ResultUser"];
|
||||
}
|
||||
} else {
|
||||
print_r($this->db->error());
|
||||
}
|
||||
$s_data = $row->data;
|
||||
$s_data = str_replace("\n"," ",$s_data);
|
||||
$rst = json_decode($s_data,true);
|
||||
$rst["validation_note"] = $validationNote;
|
||||
$rst["validation_internal"] = $validationInternal;
|
||||
$rst["foUser"] = $foUser;
|
||||
$rst["screeningUser"] = $screeningUser;
|
||||
$rst["samplingUser"] = $samplingUser;
|
||||
$rst["resultUser"] = $resultUser;
|
||||
|
||||
$this->sys_ok($rst);
|
||||
exit;
|
||||
}
|
||||
|
||||
$this->sys_error_db("RESULT REQ", $this->db_smartone);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,291 @@
|
||||
<?php
|
||||
|
||||
|
||||
class Rv_px extends MY_Controller
|
||||
{
|
||||
var $db_smartone;
|
||||
|
||||
public function index()
|
||||
{
|
||||
echo "RE Px API";
|
||||
}
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->db_smartone = $this->load->database("onedev", true);
|
||||
}
|
||||
|
||||
public function single_validation() {
|
||||
$prm = $this->sys_input;
|
||||
$od_id = $prm["order_id"];
|
||||
$validation = $prm["validation"];
|
||||
$userID = $this->sys_user["M_UserID"];
|
||||
if ( ! $this->isLogin ) {
|
||||
echo json_encode(
|
||||
array("status"=>"ERR", "message"=> "Invalid Token")
|
||||
);
|
||||
exit;
|
||||
}
|
||||
if ($validation == "Y") {
|
||||
$sql = "update t_orderdetail
|
||||
set T_OrderDetailValidation = 'Y'
|
||||
, T_OrderDetailValUserID = ?
|
||||
, T_OrderDetailValDate = now()
|
||||
where T_OrderDetailID = ?";
|
||||
} else {
|
||||
$sql = "update t_orderdetail
|
||||
set T_OrderDetailValidation = 'N'
|
||||
, T_OrderDetailValUserID = ?
|
||||
, T_OrderDetailValDate = now()
|
||||
where T_OrderDetailID = ?";
|
||||
}
|
||||
$this->db_smartone->query($sql, array($userID,$od_id));
|
||||
$this->db_smartone->query("call sp_valid_parent(?)", array($od_id));
|
||||
$this->clean_mysqli_connection($this->db_smartone->conn_id);
|
||||
|
||||
//log
|
||||
$order = $this->db_smartone->select('T_OrderDetailT_OrderHeaderID id, T_OrderHeaderLabNumber lab_number,
|
||||
T_OrderDetailT_TestName, T_OrderDetailID, T_OrderDetailResult', false)
|
||||
->join('t_orderheader', 'T_OrderHeaderID = T_OrderDetailT_OrderHeaderID')
|
||||
->where('T_OrderDetailID', $od_id)
|
||||
->get('t_orderdetail')
|
||||
->row();
|
||||
$dblog = $this->load->database("onelog", true);
|
||||
if ($validation == "Y") {
|
||||
$dblog->set('Log_ProcessCode', 'PROCESS.Result.Validation')
|
||||
->set('Log_ProcessOrderID', $order->id)
|
||||
->set('Log_ProcessOrderNumber', $order->lab_number)
|
||||
->set('Log_ProcessJson', json_encode($data))
|
||||
->set('Log_ProcessUserID', $this->sys_user['M_UserID'])
|
||||
->insert('log_process');
|
||||
} else {
|
||||
$dblog->set('Log_ProcessCode', 'PROCESS.Result.Unvalidation')
|
||||
->set('Log_ProcessOrderID', $order->id)
|
||||
->set('Log_ProcessOrderNumber', $order->lab_number)
|
||||
->set('Log_ProcessJson', json_encode($data))
|
||||
->set('Log_ProcessUserID', $this->sys_user['M_UserID'])
|
||||
->insert('log_process');
|
||||
}
|
||||
if ($validation == "Y") {
|
||||
$this->load->library("Txbranchstatus");
|
||||
$this->txbranchstatus->update("VALIDATION",$od_id,$this->sys_user['M_StaffName']);
|
||||
}
|
||||
|
||||
$result = array("status"=>"OK","message" => "");
|
||||
$this->sys_ok($result);
|
||||
}
|
||||
|
||||
public function search()
|
||||
{
|
||||
$prm = $this->sys_input;
|
||||
$max_rst = 99;
|
||||
|
||||
$id = $prm["order_id"];
|
||||
$lang = $this->lang_default_code;
|
||||
$lang_id = isset($prm['lang_id']) ? $prm['lang_id'] : '0';
|
||||
|
||||
if ($lang_id != 0)
|
||||
{
|
||||
$l = $this->db_smartone->where("Nat_LangID", $lang_id)->get("nat_lang")->row();
|
||||
$lang = $l->Nat_LangCode;
|
||||
}
|
||||
|
||||
$tot_count = 0;
|
||||
|
||||
// if ($lang == $this->lang_default_code)
|
||||
// {
|
||||
$sql = "SELECT a1.*, cOUNT(a2.T_OrderDetailID) level
|
||||
FROM (
|
||||
SELECT x.T_OrderDetailVerification verification,
|
||||
IFNULL(y.T_OrderDetailT_TestID, x.T_OrderDetailT_TestID) t_testid,
|
||||
IFNULL(y.T_OrderDetailT_TestName, y.T_OrderDetailT_TestName) t_testname,
|
||||
y.T_OrderDetailResult result, y.T_OrderDetailResult result_old,
|
||||
y.T_OrderDetailNote note, y.T_OrderDetailNote note_old, x.T_OrderDetailID id,
|
||||
x.T_OrderDetailT_TestIsResult is_result, a.T_TestIsQuantitative is_quantitative,
|
||||
x.T_OrderDetailResultFlag result_flag,
|
||||
x.T_OrderDetailValMRState mr_state,
|
||||
x.T_OrderDetailValidation validation,
|
||||
x.T_OrderDetailValidation validation_old,
|
||||
y.T_OrderDetailReqStatus sample_handling_perfect,
|
||||
y.T_OrderDetailNat_NormalValueID normal_id,
|
||||
y.T_OrderDetailNormalValueNote normal_note, y.T_OrderDetailNat_UnitName unit_name,
|
||||
y.T_OrderdetailNat_MethodeID methode_id, y.T_OrderdetailNat_MethodeName methode_name,
|
||||
a.T_TestNat_TestID nattest_id, a.T_TestID tx_id, count(T_ResultInstrumentID) as result_instrument_n,
|
||||
x.T_OrderDetailVerification, T_OrderSampleReceive sample_receive,
|
||||
T_OrderSampleProcessing sample_processing, T_OrderSampleWorklistReceive sample_worklist_receive,
|
||||
PreAnalyticID pre_analytic,
|
||||
T_OrderHeaderID order_id, y.T_OrderDetailT_TestSasCode test_sas_code,
|
||||
tx.T_TestSasCode,
|
||||
T_OrderDetailAddOnResample `resample`, T_OrderDetailAddOnResampleStatus resample_status,
|
||||
T_OrderDetailAddOnRef ref,
|
||||
fn_process_group_result(x.T_OrderDetailT_TestID) ResultGroupName
|
||||
FROM t_orderdetail x
|
||||
|
||||
JOIN t_test tx ON x.T_OrderDetailT_TestID = T_TestID
|
||||
JOIN documentation_group_detail ON DocumentationGroupDetailNat_SubGroupID = tx.T_TestNat_SubGroupID
|
||||
AND DocumentationGroupDetailIsActive = 'Y'
|
||||
JOIN documentation_group ON DocumentationGroupDetailDocumentationGroupID = DocumentationGroupID
|
||||
AND DocumentationGroupName = 'lab'
|
||||
|
||||
LEFT JOIN t_orderdetail y ON x.T_OrderDetailT_TestSasCode LIKE CONCAT(y.T_OrderDetailT_TestSasCode, '%')
|
||||
AND x.T_OrderDetailT_OrderHeaderID = y.T_OrderDetailT_OrderHeaderID
|
||||
AND y.T_OrderDetailIsActive = 'Y'
|
||||
|
||||
LEFT JOIN t_orderdetailaddon ON x.T_OrderDetailID = T_OrderDetailAddOnT_OrderDetailID
|
||||
|
||||
JOIN t_orderheader ON y.T_OrderDetailT_OrderHeaderID = T_OrderHeaderID
|
||||
LEFT JOIN t_test a ON y.T_OrderDetailT_TestID = a.T_TestID
|
||||
AND a.T_TestIsNonLab = ''
|
||||
LEFT JOIN (SELECT T_OrderSampleT_SampleTypeID, T_OrderSampleReceive, T_OrderSampleProcessing, T_OrderSampleWorklistReceive
|
||||
FROM t_ordersample WHERE T_OrderSampleT_OrderHeaderID = ?
|
||||
AND T_OrderSampleIsactive = 'Y'
|
||||
GROUP BY T_OrderSampleT_SampleTypeID) os ON a.T_TestT_SampleTypeID = os.T_OrderSampleT_SampleTypeID
|
||||
|
||||
LEFT JOIN t_resultinstrument ON T_ResultInstrumentT_OrderDetailID = x.T_OrderDetailID
|
||||
|
||||
LEFT JOIN pre_analytic ON PreAnalyticNat_TestID = a.T_TestNat_TestID AND PreAnalyticDate = date(now()) and PreAnalyticIsActive = 'Y'
|
||||
WHERE x.T_OrderDetailT_OrderHeaderID = ?
|
||||
AND x.T_OrderDetailIsActive = 'Y'
|
||||
GROUP BY y.T_OrderDetailT_TestID
|
||||
ORDER BY y.T_OrderDetailT_TestSasCode ASC
|
||||
) a1
|
||||
|
||||
LEFT JOIN t_orderdetail a2 ON a2.T_OrderDetailT_OrderHeaderID = a1.order_id
|
||||
AND a2.T_OrderDetailIsActive = 'Y'
|
||||
AND a1.test_sas_code LIKE CONCAT(a2.T_OrderDetailT_testSasCode, '%')
|
||||
|
||||
GROUP BY a1.t_testid
|
||||
order by a1.T_TestSasCode
|
||||
";
|
||||
$query = $this->db_smartone->query($sql, [$id, $id]);
|
||||
|
||||
|
||||
if ($query) {
|
||||
$rst = [];
|
||||
$rows = $query->result_array();
|
||||
|
||||
// echo json_encode($rows); return;
|
||||
// echo $this->db_smartone->last_query(); return;
|
||||
foreach($rows as $k => $v)
|
||||
{
|
||||
if ($v['is_result'] == "Y" && $v['is_quantitative'] == "N")
|
||||
{
|
||||
$v['template'] = [];
|
||||
$x = $this->db_smartone->query("CALL sp_master_resulttemplate_get('{$v['t_testid']}')");
|
||||
$this->clean_mysqli_connection($this->db_smartone->conn_id);
|
||||
if ($x)
|
||||
$v['template'] = $x->result_array();
|
||||
}
|
||||
|
||||
if ($v['mr_state'] == "X")
|
||||
{
|
||||
$tmp = $this->db_smartone->query("SELECT fn_process_rv_mrstate('{$v['id']}') x")
|
||||
->row();
|
||||
$v['mr_state'] = $tmp->x;
|
||||
}
|
||||
|
||||
// Sample Handling & Verification Perfect
|
||||
if ($v['sample_handling_perfect'] == 'X')
|
||||
{
|
||||
$y = $this->db_smartone->query("SELECT fn_process_sample_handling_perfect('{$id}', '{$v['t_testid']}') c")
|
||||
->row();
|
||||
$v['sample_handling_perfect'] = $y->c;
|
||||
}
|
||||
|
||||
// Override
|
||||
if ($y->c == "N")
|
||||
{
|
||||
$v['mr_state'] = "N";
|
||||
}
|
||||
|
||||
//auto suggestion disabled
|
||||
//if ($v['sample_handling_perfect']== 'Y' && $v['mr_state'] == 'Y' && $v['verification'] == 'Y')
|
||||
// $v['validation'] = 'Y';
|
||||
|
||||
// IF Rujukan, by pas Pre Analytik
|
||||
if ($v['ref'] == 'Y')
|
||||
$v['pre_analytic'] = 'Y';
|
||||
|
||||
$rst[] = $v;
|
||||
}
|
||||
|
||||
$result = array("total" => $tot_count, "records" => $rst, "total_display" => sizeof($rows), "q" => $this->db_smartone->last_query());
|
||||
$this->sys_ok($result);
|
||||
}
|
||||
else {
|
||||
$this->sys_error_db("RE Px rows", $this->db_smartone);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
public function confirm()
|
||||
{
|
||||
$prm = $this->sys_input;
|
||||
$data = json_decode($prm["id"]);
|
||||
|
||||
if (sizeof($data) < 1)
|
||||
{
|
||||
$this->sys_error_db("RE Verification Confirmation", $this->db_smartone);
|
||||
exit;
|
||||
}
|
||||
else
|
||||
{
|
||||
$ids = [];
|
||||
foreach ($data as $k => $v)
|
||||
{
|
||||
$this->db_smartone->set('T_OrderDetailVerDeltaCheck', $v->delta)
|
||||
->set('T_OrderDetailVerTrendAnalysis', $v->trend)
|
||||
->set('T_OrderDetailVerification', $v->verification)
|
||||
->set('T_OrderDetailVerDate', date('Y-m-d H:i:s'))
|
||||
->set('T_OrderDetailVerUserID', $this->sys_user->M_UserID)
|
||||
->where('T_OrderDetailID', $v->id)
|
||||
->update('t_orderdetail');
|
||||
$ids[] = $v->id;
|
||||
}
|
||||
|
||||
$this->sys_ok($ids);
|
||||
}
|
||||
}
|
||||
|
||||
public function search_group()
|
||||
{
|
||||
$prm = $this->sys_input;
|
||||
$max_rst = 12;
|
||||
|
||||
// QUERY TOTAL
|
||||
$sql = "select count(*) total
|
||||
from t_worklist
|
||||
where T_WorklistIsActive = 'Y'
|
||||
order by T_WorklistName ASC";
|
||||
$query = $this->db_smartone->query($sql);
|
||||
|
||||
if ($query) {
|
||||
$tot_count = $query->result_array()[0]["total"];
|
||||
}
|
||||
else {
|
||||
$this->sys_error_db("worklist count", $this->db_smartone);
|
||||
exit;
|
||||
}
|
||||
|
||||
$sql = "select T_WorklistID group_id, T_WorklistName group_name
|
||||
from t_worklist
|
||||
where T_WorklistIsActive = 'Y'
|
||||
order by T_WorklistName ASC
|
||||
limit 0, {$max_rst}";
|
||||
$query = $this->db_smartone->query($sql);
|
||||
|
||||
if ($query) {
|
||||
$rows = $query->result_array();
|
||||
foreach ($rows as $k => $v)
|
||||
$rows[$k]['data'] = json_decode($v['data']);
|
||||
$result = array("total" => $tot_count, "records" => $rows, "total_display" => sizeof($rows), "q" => $this->db_smartone->last_query());
|
||||
$this->sys_ok($result);
|
||||
}
|
||||
else {
|
||||
$this->sys_error_db("worklist rows", $this->db_smartone);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,409 @@
|
||||
<?php
|
||||
|
||||
|
||||
class Rv_validation extends MY_Controller
|
||||
{
|
||||
var $db_smartone;
|
||||
|
||||
public function index()
|
||||
{
|
||||
echo "Result Validation API";
|
||||
}
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->db_smartone = $this->load->database("onedev", true);
|
||||
}
|
||||
|
||||
public function mr_state()
|
||||
{
|
||||
$prm = $this->sys_input;
|
||||
$id = $prm["order_id"];
|
||||
|
||||
$data = ["image"=>"http://blog.aylien.com/wp-content/uploads/2016/07/Screen-Shot-2016-07-21-at-18.46.42.png",
|
||||
"note"=>"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
|
||||
"title"=>"Multi Rule"];
|
||||
$this->sys_ok($data);
|
||||
}
|
||||
|
||||
public function confirm()
|
||||
{
|
||||
$prm = $this->sys_input;
|
||||
$data = json_decode($prm["data"]);
|
||||
|
||||
if (sizeof($data) < 1)
|
||||
{
|
||||
$this->sys_error_db("RE Validation Confirmation", $this->db_smartone);
|
||||
exit;
|
||||
}
|
||||
else
|
||||
{
|
||||
$ids = [];
|
||||
foreach ($data as $k => $v)
|
||||
{
|
||||
$this->db_smartone->set('T_OrderDetailValMRState', $v->mr_state)
|
||||
->set('T_OrderDetailValidation', $v->validation)
|
||||
->set('T_OrderDetailValDate', $v->validation == "Y" ? date('Y-m-d H:i:s') : null)
|
||||
->set('T_OrderDetailValUserID', $this->sys_user['M_UserID'])
|
||||
->where('T_OrderDetailID', $v->id)
|
||||
->update('t_orderdetail');
|
||||
$ids[] = $v->id;
|
||||
}
|
||||
|
||||
// LOG Process
|
||||
$order = $this->db_smartone->select('T_OrderDetailT_OrderHeaderID id, T_OrderHeaderLabNumber lab_number', false)
|
||||
->join('t_orderheader', 'T_OrderHeaderID = T_OrderDetailT_OrderHeaderID')
|
||||
->where('T_OrderDetailID', $data[0]->id)
|
||||
->get('t_orderdetail')
|
||||
->row();
|
||||
|
||||
$dblog = $this->load->database("onelog", true);
|
||||
$dblog->set('Log_ProcessCode', 'PROCESS.Result.Validation')
|
||||
->set('Log_ProcessOrderID', $order->id)
|
||||
->set('Log_ProcessOrderNumber', $order->lab_number)
|
||||
->set('Log_ProcessJson', json_encode($data))
|
||||
->set('Log_ProcessUserID', $this->sys_user['M_UserID'])
|
||||
->insert('log_process');
|
||||
// END OF Log Process
|
||||
//update validation multi
|
||||
$this->load->library("Txbranchstatus");
|
||||
$this->txbranchstatus->update_multi("VALIDATION",$ids,$this->sys_user['M_StaffName']);
|
||||
$this->sys_ok($ids);
|
||||
}
|
||||
}
|
||||
|
||||
// public function validate()
|
||||
// {
|
||||
// $prm = $this->sys_input;
|
||||
// $data = json_decode($prm["data"]);
|
||||
|
||||
// if (sizeof($data) < 1)
|
||||
// {
|
||||
// $this->sys_error_db("RE Validation Confirmation", $this->db_smartone);
|
||||
// exit;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// $ids = [];
|
||||
// foreach ($data as $k => $v)
|
||||
// {
|
||||
// $this->db_smartone->set('T_OrderDetailValMRState', $v->mr_state)
|
||||
// ->set('T_OrderDetailValidation', $v->validation)
|
||||
// ->set('T_OrderDetailValDate', $v->validation == "Y" ? date('Y-m-d H:i:s') : null)
|
||||
// ->set('T_OrderDetailValUserID', $this->sys_user['M_UserID'])
|
||||
// ->where('T_OrderDetailID', $v->id)
|
||||
// ->update('t_orderdetail');
|
||||
// $ids[] = $v->id;
|
||||
// }
|
||||
|
||||
// // LOG Process
|
||||
// $order = $this->db_smartone->select('T_OrderDetailT_OrderHeaderID id, T_OrderHeaderLabNumber lab_number', false)
|
||||
// ->join('t_orderheader', 'T_OrderHeaderID = T_OrderDetailT_OrderHeaderID')
|
||||
// ->where('T_OrderDetailID', $data[0]->id)
|
||||
// ->get('t_orderdetail')
|
||||
// ->row();
|
||||
|
||||
// $dblog = $this->load->database("onelog", true);
|
||||
// $dblog->set('Log_ProcessCode', 'PROCESS.Result.Validation')
|
||||
// ->set('Log_ProcessOrderID', $order->id)
|
||||
// ->set('Log_ProcessOrderNumber', $order->lab_number)
|
||||
// ->set('Log_ProcessJson', json_encode($data))
|
||||
// ->set('Log_ProcessUserID', $this->sys_user['M_UserID'])
|
||||
// ->insert('log_process');
|
||||
// // END OF Log Process
|
||||
|
||||
// $this->sys_ok($ids);
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
|
||||
function print_count()
|
||||
{
|
||||
$this->firstprint();
|
||||
|
||||
$prm = $this->sys_input;
|
||||
|
||||
$sql = "UPDATE t_orderdetail SET T_OrderDetailPrintCount = T_OrderDetailPrintCount + 1
|
||||
WHERE T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailValidation = 'Y'
|
||||
AND T_OrderDetailIsActive = 'Y'";
|
||||
$query = $this->db_smartone->query($sql, [$prm['order_id']]);
|
||||
if ($query)
|
||||
{
|
||||
$this->sys_ok($this->db_smartone->last_query());
|
||||
}
|
||||
else
|
||||
$this->sys_error_db("Print Count", $this->db_smartone);
|
||||
}
|
||||
|
||||
public function reject()
|
||||
{
|
||||
$prm = $this->sys_input;
|
||||
|
||||
// QUERY TOTAL
|
||||
$sql = "CALL sp_process_result_validation_reject(?, ?)";
|
||||
$query = $this->db_smartone->query($sql, [$prm['id'], $prm['action']]);
|
||||
|
||||
if ($query) {
|
||||
$row = $query->row();
|
||||
$this->sys_ok($row);
|
||||
}
|
||||
else {
|
||||
$this->sys_error_db("REJECT VALIDATION", $this->db_smartone);
|
||||
}
|
||||
}
|
||||
|
||||
public function unvalidate()
|
||||
{
|
||||
$prm = $this->sys_input;
|
||||
$order_id = $prm["order_id"];
|
||||
|
||||
$this->db_smartone->set('T_OrderDetailValidation', "N")
|
||||
->set('T_OrderDetailValDate', null)
|
||||
->set('T_OrderDetailValUserID', 0)
|
||||
->where('T_OrderDetailT_OrderHeaderID', $prm['order_id'])
|
||||
->where('T_OrderDetailIsActive', 'Y')
|
||||
->where('T_OrderDetailValidation', 'Y')
|
||||
->update('t_orderdetail');
|
||||
|
||||
$q = $this->db_smartone->last_query();
|
||||
|
||||
// LOG Process
|
||||
$order = $this->db_smartone->select('T_OrderDetailT_OrderHeaderID id, T_OrderHeaderLabNumber lab_number', false)
|
||||
->join('t_orderheader', 'T_OrderHeaderID = T_OrderDetailT_OrderHeaderID')
|
||||
->where('T_OrderDetailT_OrderHeaderID', $prm['order_id'])
|
||||
->get('t_orderdetail')
|
||||
->row();
|
||||
|
||||
$dblog = $this->load->database("onelog", true);
|
||||
$dblog->set('Log_ProcessCode', 'PROCESS.Result.Unvalidation')
|
||||
->set('Log_ProcessOrderID', $order->id)
|
||||
->set('Log_ProcessOrderNumber', $order->lab_number)
|
||||
->set('Log_ProcessJson', '{}')
|
||||
->set('Log_ProcessUserID', $this->sys_user['M_UserID'])
|
||||
->insert('log_process');
|
||||
// END OF Log Process
|
||||
|
||||
$this->sys_ok($q);
|
||||
|
||||
}
|
||||
|
||||
// Copas Fajri
|
||||
function firstprint()
|
||||
{
|
||||
if (! $this->isLogin) {
|
||||
$this->sys_error("Invalid Token");
|
||||
exit;
|
||||
}
|
||||
$prm = $this->sys_input;
|
||||
$userid = $this->sys_user["M_UserID"];
|
||||
$prm['T_OrderHeaderID'] = $prm['order_id'];
|
||||
$datarows = [];
|
||||
$query = " SELECT T_OrderDetailID,T_TestName
|
||||
FROM t_orderdetail
|
||||
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
|
||||
JOIN documentation_group_detail ON DocumentationGroupDetailNat_SubGroupID = T_TestNat_SubGroupID
|
||||
JOIN documentation_group ON DocumentationGroupDetailDocumentationGroupID = DocumentationGroupID AND DocumentationGroupName = 'lab'
|
||||
WHERE
|
||||
T_OrderDetailT_OrderHeaderID = {$prm['T_OrderHeaderID']} AND
|
||||
T_OrderDetailValidation = 'Y' AND
|
||||
T_OrderDetailPrintCount = 0 AND
|
||||
T_OrderDetailT_OrderPromiseID <> 0 AND
|
||||
( T_OrderDetailResult <> '' OR T_OrderDetailResult IS NOT NULL ) AND
|
||||
T_OrderDetailIsActive = 'Y'
|
||||
GROUP BY T_OrderDetailID";
|
||||
//echo $query;
|
||||
$datarows = $this->db_smartone->query($query)->result_array();
|
||||
$ids = array();
|
||||
$testname = array();
|
||||
if($datarows) {
|
||||
foreach($datarows as $k => $v) {
|
||||
$sql = "UPDATE t_orderdetail SET T_OrderDetailPrintCount = 1 WHERE T_OrderDetailID = {$v['T_OrderDetailID']}";
|
||||
$this->db_smartone->query($sql);
|
||||
array_push($ids,$v['T_OrderDetailID']);
|
||||
array_push($testname,$v['T_TestName']);
|
||||
}
|
||||
}
|
||||
$join_ids = "[".join(",",$ids)."]";
|
||||
$join_testname = "[".join(",",$testname)."]";
|
||||
|
||||
$sql = "SELECT t_orderdelivery.*, M_DeliveryTypeCode as code
|
||||
FROM t_orderdelivery
|
||||
JOIN m_deliverytype ON T_OrderDeliveryM_DeliveryTypeID = M_DeliveryTypeID
|
||||
WHERE
|
||||
T_OrderDeliveryT_OrderHeaderID = {$prm['T_OrderHeaderID']} AND
|
||||
T_OrderDeliveryIsActive = 'Y'
|
||||
GROUP BY T_OrderDeliveryID
|
||||
";
|
||||
//echo $sql;
|
||||
$result_delivery = $this->db_smartone->query($sql)->result_array();
|
||||
$arr_deliveryid = array();
|
||||
foreach($result_delivery as $i => $j){
|
||||
array_push($arr_deliveryid,$j["T_OrderDeliveryM_DeliveryID"]);
|
||||
}
|
||||
|
||||
foreach($result_delivery as $k => $v){
|
||||
|
||||
if($v['code'] == 'PICKUP'){
|
||||
$sql = "INSERT INTO result_frontoffice(
|
||||
Result_FrontOfficeT_OrderHeaderID,
|
||||
Result_FrontOfficeIds,
|
||||
Result_FrontOfficeStatus,
|
||||
Result_FrontOfficeType,
|
||||
Result_FrontOfficeTestName,
|
||||
Result_FrontOfficeCreated,
|
||||
Result_FrontOfficeUserID
|
||||
)
|
||||
VALUES(
|
||||
{$prm['T_OrderHeaderID']},
|
||||
'{$join_ids}',
|
||||
'P',
|
||||
'lab',
|
||||
'Pemeriksaan Laboratorium',
|
||||
NOW(),
|
||||
{$userid}
|
||||
) ON DUPLICATE KEY UPDATE
|
||||
Result_FrontOfficeStatus = 'P',
|
||||
Result_FrontOfficeUserID = {$userid}
|
||||
";
|
||||
|
||||
$this->db_smartone->query($sql);
|
||||
|
||||
$sql = "SELECT * FROM result_frontoffice
|
||||
WHERE Result_FrontOfficeT_OrderHeaderID = {$prm['T_OrderHeaderID']} AND
|
||||
Result_FrontOfficeIds = '{$join_ids}' AND
|
||||
Result_FrontOfficeType = 'lab'";
|
||||
$rst_log = $this->db_smartone->query($sql)->result_array();
|
||||
$dt_log = json_encode($rst_log);
|
||||
$sql = "INSERT INTO one_log.log_result_front_office(
|
||||
Log_ResultFrontOfficeDateTime,
|
||||
Log_ResultFrontOfficeJson,
|
||||
Log_ResultFrontOfficeUserID
|
||||
)
|
||||
VALUES(
|
||||
NOW(),
|
||||
'{$dt_log}',
|
||||
{$userid}
|
||||
)";
|
||||
$this->db_smartone->query($sql);
|
||||
}
|
||||
|
||||
if($v['code'] == 'EMAIL'){
|
||||
$type = "MANUAL";
|
||||
if(in_array(1,$arr_deliveryid) && (in_array(3,$arr_deliveryid) || in_array(5,$arr_deliveryid) || in_array(11,$arr_deliveryid))){
|
||||
$type = "FO";
|
||||
}
|
||||
$sql = "INSERT INTO result_sendemail(
|
||||
Result_SendEmailT_OrderHeaderID,
|
||||
Result_SendEmailActionBy,
|
||||
Result_SendEmailIds,
|
||||
Result_SendEmailT_OrderDeliveryID,
|
||||
Result_SendEmailStatus,
|
||||
Result_SendEmailType,
|
||||
Result_SendEmailT_TestName,
|
||||
Result_SendEmailCreated,
|
||||
Result_SendEmailUserID
|
||||
)
|
||||
VALUES(
|
||||
{$prm['T_OrderHeaderID']},
|
||||
'{$type}',
|
||||
'{$join_ids}',
|
||||
{$v['T_OrderDeliveryID']},
|
||||
'P',
|
||||
'lab',
|
||||
'Pemeriksaan Laboratorium',
|
||||
NOW(),
|
||||
{$userid}
|
||||
) ON DUPLICATE KEY UPDATE
|
||||
Result_SendEmailStatus = 'P',
|
||||
Result_SendEmailUserID = {$userid}
|
||||
";
|
||||
$this->db_smartone->query($sql);
|
||||
|
||||
$sql = "SELECT * FROM result_sendemail
|
||||
WHERE
|
||||
Result_SendEmailT_OrderHeaderID = {$prm['T_OrderHeaderID']} AND
|
||||
Result_SendEmailIds = '{$join_ids}' AND
|
||||
Result_SendEmailT_OrderDeliveryID = {$v['T_OrderDeliveryID']} AND
|
||||
Result_SendEmailType = 'lab' LIMIT 1";
|
||||
$dt_log = json_encode($this->db_smartone->query($sql)->row_array());
|
||||
$sql = "INSERT INTO one_log.log_resultsendemail (
|
||||
Log_ResultSendEmailDatetime,
|
||||
Log_ResultSendEmailJson,
|
||||
Log_ResultSendEmailUserID
|
||||
)
|
||||
VALUES(
|
||||
NOW(),
|
||||
'{$dt_log}',
|
||||
{$userid}
|
||||
)";
|
||||
$this->db_smartone->query($sql);
|
||||
|
||||
}
|
||||
|
||||
if($v['code'] == 'ADDRESS'){
|
||||
$sql = "INSERT INTO result_sendcourier(
|
||||
Result_SendCourierT_OrderHeaderID,
|
||||
Result_SendCourierIds,
|
||||
Result_SendCourierT_OrderDeliveryID,
|
||||
Result_SendCourierStatus,
|
||||
Result_SendCourierType,
|
||||
Result_SendCourierT_TestName,
|
||||
Result_SendCourierCreated,
|
||||
Result_SendCourierUserID
|
||||
)
|
||||
VALUES(
|
||||
{$prm['T_OrderHeaderID']},
|
||||
'{$join_ids}',
|
||||
{$v['T_OrderDeliveryID']},
|
||||
'P',
|
||||
'lab',
|
||||
'Pemeriksaan Laboratorium',
|
||||
NOW(),
|
||||
{$userid}
|
||||
) ON DUPLICATE KEY UPDATE
|
||||
Result_SendCourierStatus = 'P',
|
||||
Result_SendCourierUserID = {$userid}
|
||||
";
|
||||
$this->db_smartone->query($sql);
|
||||
|
||||
$sql = "SELECT * FROM result_sendcourier
|
||||
WHERE
|
||||
Result_SendCourierT_OrderHeaderID = {$prm['T_OrderHeaderID']} AND
|
||||
Result_SendCourierIds = '{$join_ids}' AND
|
||||
Result_SendCourierT_OrderDeliveryID = {$v['T_OrderDeliveryID']} AND
|
||||
Result_SendCourierType = 'lab' LIMIT 1";
|
||||
$dt_log = json_encode($this->db_smartone->query($sql)->row_array());
|
||||
$sql = "INSERT INTO one_log.log_resultsendcourier (
|
||||
Log_ResultSendCourierDateTime,
|
||||
Log_ResultSendCourierJson,
|
||||
Log_ResultSendCourierUserID
|
||||
)
|
||||
VALUES(
|
||||
NOW(),
|
||||
'{$dt_log}',
|
||||
{$userid}
|
||||
)";
|
||||
$this->db_smartone->query($sql);
|
||||
|
||||
}
|
||||
|
||||
|
||||
//echo $sql;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
return;
|
||||
// $result = array(
|
||||
// "total" => count($datarows) ,
|
||||
// "records" => $datarows,
|
||||
// );
|
||||
// $this->sys_ok($result);
|
||||
// exit;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
|
||||
|
||||
class Rv_verification extends MY_Controller
|
||||
{
|
||||
var $db_smartone;
|
||||
|
||||
public function index()
|
||||
{
|
||||
echo "Result Validation API";
|
||||
}
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->db_smartone = $this->load->database("onedev", true);
|
||||
}
|
||||
|
||||
public function mr()
|
||||
{
|
||||
$prm = $this->sys_input;
|
||||
$id = $prm["order_id"];
|
||||
|
||||
$data = ["image"=>"http://blog.aylien.com/wp-content/uploads/2016/07/Screen-Shot-2016-07-21-at-18.46.42.png",
|
||||
"note"=>"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
|
||||
"title"=>"Multi Rule"];
|
||||
$this->sys_ok($data);
|
||||
}
|
||||
|
||||
public function confirm()
|
||||
{
|
||||
$prm = $this->sys_input;
|
||||
$data = json_decode($prm["data"]);
|
||||
|
||||
if (sizeof($data) < 1)
|
||||
{
|
||||
$this->sys_error_db("RE Validation Confirmation", $this->db_smartone);
|
||||
exit;
|
||||
}
|
||||
else
|
||||
{
|
||||
$ids = [];
|
||||
foreach ($data as $k => $v)
|
||||
{
|
||||
$this->db_smartone->set('T_OrderDetailValMRState', $v->mr_state)
|
||||
->set('T_OrderDetailValidation', $v->validation)
|
||||
->set('T_OrderDetailValDate', $v->validation == "Y" ? date('Y-m-d H:i:s') : null)
|
||||
->set('T_OrderDetailValUserID', $this->sys_user['M_UserID'])
|
||||
->where('T_OrderDetailID', $v->id)
|
||||
->update('t_orderdetail');
|
||||
$ids[] = $v->id;
|
||||
}
|
||||
|
||||
$this->sys_ok($ids);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user