1935 lines
81 KiB
PHP
1935 lines
81 KiB
PHP
<?php
|
|
class Patientstatusday extends MY_Controller
|
|
{
|
|
var $db_onedev;
|
|
public function index()
|
|
{
|
|
echo "Patientstatusday API";
|
|
}
|
|
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
$this->db_onedev = $this->load->database("onedev", true);
|
|
}
|
|
|
|
function bckp_search()
|
|
{
|
|
$prm = $this->sys_input;
|
|
if (! $this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
|
|
$search = $prm["search"];
|
|
$companyid = isset($prm["companyid"])?$prm["companyid"]:0;
|
|
if(!isset($prm['current_page']))
|
|
$prm['current_page'] = 1;
|
|
|
|
$number_limit = 15;
|
|
|
|
$number_offset = ($prm['current_page'] - 1) * $number_limit ;
|
|
$sql_where = "";
|
|
if ($search != "") {
|
|
$prm['current_page'] = 1;
|
|
$sql_where = " AND ( T_OrderHeaderLabNumberExt like '%{$search}%' OR T_OrderHeaderLabNumber like '%{$search}%' OR M_PatientName like '%{$search}%' ) ";
|
|
}
|
|
$filter_company = "";
|
|
if($companyid != 0 ){
|
|
$filter_company = " AND T_OrderHeaderM_CompanyID = {$companyid}";
|
|
}
|
|
|
|
$sql = " SELECT COUNT(*) as total FROM (
|
|
SELECT '' as xno,
|
|
T_OrderHeaderID as xid,
|
|
DATE_FORMAT(T_OrderHeaderDate,'%d-%m-%Y') as order_date,
|
|
T_OrderHeaderLabNumber as no_reg,
|
|
CONCAT(M_TitleName,' ',M_PatientName) as patient_name,
|
|
M_CompanyName as company_name,
|
|
M_MouName as mou_name,
|
|
T_OrderHeaderIsCito as status_cito,
|
|
GROUP_CONCAT(DISTINCT DATE_FORMAT(T_OrderPromiseDateTime, '%d-%m-%Y %H:%m') ORDER BY T_OrderPromiseDateTime ASC) as order_promise,
|
|
'' as details_order,
|
|
'' as details_sampling,
|
|
'' as details_verifications,
|
|
'' as details_process,
|
|
'' as details_result_verification,
|
|
'' as details_result_validation,
|
|
'' as details_print,
|
|
T_OrderHeaderLabNumberExt as no_reg_ext
|
|
FROM t_orderheader
|
|
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
|
|
JOIN m_company ON T_OrderHeaderM_CompanyID = M_CompanyID $filter_company
|
|
JOIN m_mou ON T_OrderHeaderM_MouID = M_MouID
|
|
JOIN t_orderpromise ON T_OrderHeaderID = T_OrderPromiseT_OrderHeaderID AND T_OrderPromiseIsActive = 'Y'
|
|
LEFT JOIN m_title ON M_PatientM_TitleID = M_TitleID
|
|
WHERE
|
|
T_OrderHeaderIsActive = 'Y' AND DATE(T_OrderPromiseDateTime) = '{$prm['xdate']}' $sql_where
|
|
GROUP BY T_OrderHeaderID
|
|
UNION
|
|
SELECT '' as xno,
|
|
T_OrderHeaderID as xid,
|
|
DATE_FORMAT(T_OrderHeaderDate,'%d-%m-%Y') as order_date,
|
|
T_OrderHeaderLabNumber as no_reg,
|
|
CONCAT(M_TitleName,' ',M_PatientName) as patient_name,
|
|
M_CompanyName as company_name,
|
|
M_MouName as mou_name,
|
|
T_OrderHeaderIsCito as status_cito,
|
|
GROUP_CONCAT(DISTINCT DATE_FORMAT(T_OrderPromiseDateTime, '%d-%m-%Y %H:%m') ORDER BY T_OrderPromiseDateTime ASC) as order_promise,
|
|
'' as details_order,
|
|
'' as details_sampling,
|
|
'' as details_verifications,
|
|
'' as details_process,
|
|
'' as details_result_verification,
|
|
'' as details_result_validation,
|
|
'' as details_print,
|
|
T_OrderHeaderLabNumberExt as no_reg_ext
|
|
FROM t_orderheader
|
|
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
|
|
JOIN m_company ON T_OrderHeaderM_CompanyID = M_CompanyID $filter_company
|
|
JOIN m_mou ON T_OrderHeaderM_MouID = M_MouID
|
|
LEFT JOIN t_orderpromise ON T_OrderHeaderID = T_OrderPromiseT_OrderHeaderID AND T_OrderPromiseIsActive = 'Y'
|
|
LEFT JOIN m_title ON M_PatientM_TitleID = M_TitleID
|
|
WHERE
|
|
T_OrderHeaderIsActive = 'Y' AND DATE(T_OrderHeaderDate) = '{$prm['xdate']}' $sql_where
|
|
GROUP BY T_OrderHeaderID
|
|
)x
|
|
";
|
|
//echo $sql;
|
|
$query = $this->db_onedev->query($sql);
|
|
|
|
$tot_count = 0;
|
|
$tot_page = 0;
|
|
if ($query) {
|
|
$tot_count = $query->result_array()[0]["total"];
|
|
$tot_page = ceil($tot_count/$number_limit);
|
|
} else {
|
|
$this->sys_error_db("t_samplestorageout count", $this->db_onedev);
|
|
exit;
|
|
}
|
|
|
|
|
|
$sql = "
|
|
SELECT * FROM (
|
|
SELECT '' as xno,
|
|
T_OrderHeaderID as xid,
|
|
DATE_FORMAT(T_OrderHeaderDate,'%d-%m-%Y %H:%i') as order_date,
|
|
T_OrderHeaderLabNumber as no_reg,
|
|
CONCAT(M_TitleName,' ',M_PatientName) as patient_name,
|
|
M_CompanyName as company_name,
|
|
M_MouName as mou_name,
|
|
T_OrderHeaderIsCito as status_cito,
|
|
GROUP_CONCAT(DISTINCT DATE_FORMAT(T_OrderPromiseDateTime, '%d-%m-%Y %H:%i') ORDER BY T_OrderPromiseDateTime ASC) as order_promise,
|
|
'' as details_order,
|
|
'' as details_sampling,
|
|
'' as details_verifications,
|
|
'' as details_process,
|
|
'' as details_result_verification,
|
|
'' as details_result_validation,
|
|
'' as details_print,
|
|
T_OrderHeaderLabNumberExt as no_reg_ext
|
|
FROM t_orderheader
|
|
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
|
|
JOIN m_company ON T_OrderHeaderM_CompanyID = M_CompanyID $filter_company
|
|
JOIN m_mou ON T_OrderHeaderM_MouID = M_MouID
|
|
JOIN t_orderpromise ON T_OrderHeaderID = T_OrderPromiseT_OrderHeaderID AND T_OrderPromiseIsActive = 'Y'
|
|
LEFT JOIN m_title ON M_PatientM_TitleID = M_TitleID
|
|
WHERE
|
|
T_OrderHeaderIsActive = 'Y' AND DATE(T_OrderPromiseDateTime) = '{$prm['xdate']}' $sql_where
|
|
GROUP BY T_OrderHeaderID
|
|
UNION
|
|
SELECT '' as xno,
|
|
T_OrderHeaderID as xid,
|
|
DATE_FORMAT(T_OrderHeaderDate,'%d-%m-%Y %H:%i') as order_date,
|
|
T_OrderHeaderLabNumber as no_reg,
|
|
CONCAT(M_TitleName,' ',M_PatientName) as patient_name,
|
|
M_CompanyName as company_name,
|
|
M_MouName as mou_name,
|
|
T_OrderHeaderIsCito as status_cito,
|
|
GROUP_CONCAT(DISTINCT DATE_FORMAT(T_OrderPromiseDateTime, '%d-%m-%Y %H:%i') ORDER BY T_OrderPromiseDateTime ASC) as order_promise,
|
|
'' as details_order,
|
|
'' as details_sampling,
|
|
'' as details_verifications,
|
|
'' as details_process,
|
|
'' as details_result_verification,
|
|
'' as details_result_validation,
|
|
'' as details_print,
|
|
T_OrderHeaderLabNumberExt as no_reg_ext
|
|
FROM t_orderheader
|
|
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
|
|
JOIN m_company ON T_OrderHeaderM_CompanyID = M_CompanyID $filter_company
|
|
JOIN m_mou ON T_OrderHeaderM_MouID = M_MouID
|
|
LEFT JOIN t_orderpromise ON T_OrderHeaderID = T_OrderPromiseT_OrderHeaderID AND T_OrderPromiseIsActive = 'Y'
|
|
LEFT JOIN m_title ON M_PatientM_TitleID = M_TitleID
|
|
WHERE
|
|
T_OrderHeaderIsActive = 'Y' AND DATE(T_OrderHeaderDate) = '{$prm['xdate']}' $sql_where
|
|
GROUP BY T_OrderHeaderID
|
|
)x
|
|
ORDER BY xid ASC
|
|
limit $number_limit offset $number_offset
|
|
";
|
|
|
|
//echo $sql;
|
|
$query = $this->db_onedev->query($sql);
|
|
$rows = $query->result_array();
|
|
if($rows){
|
|
$no = 1;
|
|
foreach($rows as $k => $v){
|
|
$xno = ($k + 1) + $number_offset;
|
|
$rows[$k]['xno'] = $xno;
|
|
|
|
//print_r($v);
|
|
$sql = "SELECT GROUP_CONCAT(DISTINCT T_OrderDetailID SEPARATOR ',') as ids,
|
|
Group_ResultName as group_name,
|
|
Group_ResultID as group_id,
|
|
Group_ResultFlagNonLab as flag_nonlab,
|
|
'' as status
|
|
FROM t_orderdetail
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
|
|
Group_ResultDetailIsActive = 'Y'
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
|
|
Group_ResultFlagPerTest = 'N'
|
|
WHERE
|
|
T_OrderDetailT_OrderHeaderID = {$v['xid']} AND T_OrderDetailIsActive = 'Y'
|
|
GROUP BY Group_ResultID
|
|
UNION
|
|
SELECT T_OrderDetailID as xid,
|
|
T_TestName as group_name,
|
|
Group_ResultID as group_id,
|
|
Group_ResultFlagNonLab as flag_nonlab,
|
|
'' as status
|
|
FROM t_orderdetail
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
|
|
Group_ResultDetailIsActive = 'Y'
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
|
|
Group_ResultFlagPerTest = 'Y'
|
|
WHERE
|
|
T_OrderDetailT_OrderHeaderID = {$v['xid']} AND T_OrderDetailIsActive = 'Y'
|
|
GROUP BY T_OrderDetailT_TestID;
|
|
";
|
|
//echo $sql;
|
|
$details = $this->db_onedev->query($sql)->result_array();
|
|
$details_order = $details;
|
|
foreach($details_order as $i => $j){
|
|
$details_order[$i]['status'] = 'N';
|
|
$sql = "SELECT fn_patient_status_order({$v['xid']}) as status";
|
|
$query = $this->db_onedev->query($sql)->row();
|
|
//echo $this->db_onedev->last_query();
|
|
if($query){
|
|
$details_order[$i]['status'] = $query->status;
|
|
}
|
|
|
|
}
|
|
$rows[$k]['details_order'] = $details_order;
|
|
|
|
$details_sampling = $details;
|
|
foreach($details_sampling as $i => $j){
|
|
$details_sampling[$i]['status'] = 'N';
|
|
$status_fo_ver = $details_order[0]['status'];
|
|
if($status_fo_ver == 'Y'){
|
|
if($j['flag_nonlab'] == 'N'){
|
|
$sql = "SELECT fn_patient_status_get_sampling_lab({$v['xid']},'{$j['ids']}') as status";
|
|
}
|
|
else{
|
|
$sql = "SELECT fn_patient_status_get_sampling_non_lab({$v['xid']},'{$j['ids']}') as status";
|
|
}
|
|
$query = $this->db_onedev->query($sql)->row();
|
|
//echo $this->db_onedev->last_query();
|
|
if($query){
|
|
$details_sampling[$i]['status'] = $query->status;
|
|
}
|
|
}
|
|
else{
|
|
$details_sampling[$i]['status'] = 'N';
|
|
}
|
|
|
|
}
|
|
$rows[$k]['details_sampling'] = $details_sampling;
|
|
|
|
$details_verifications = $details;
|
|
foreach($details_verifications as $i => $j){
|
|
$details_verifications[$i]['status'] = 'N';
|
|
$status_fo_ver = $details_order[0]['status'];
|
|
if($status_fo_ver == 'Y'){
|
|
if($j['flag_nonlab'] == 'N'){
|
|
$sql = "SELECT fn_patient_status_get_sample_verification_lab({$v['xid']},'{$j['ids']}') as status";
|
|
//echo $sql;
|
|
}
|
|
else{
|
|
$sql = "SELECT fn_patient_status_get_sample_verification_non_lab({$v['xid']},'{$j['ids']}') as status";
|
|
}
|
|
$query = $this->db_onedev->query($sql)->row();
|
|
//echo $this->db_onedev->last_query();
|
|
if($query){
|
|
$details_verifications[$i]['status'] = $query->status;
|
|
}
|
|
}
|
|
else{
|
|
$details_verifications[$i]['status'] = 'N';
|
|
}
|
|
|
|
}
|
|
$rows[$k]['details_verifications'] = $details_verifications;
|
|
|
|
$details_process = $details;
|
|
foreach($details_process as $i => $j){
|
|
$details_process[$i]['status'] = 'N';
|
|
$status_fo_ver = $details_order[0]['status'];
|
|
if($status_fo_ver == 'Y'){
|
|
if($j['flag_nonlab'] == 'N'){
|
|
$sql = "SELECT fn_patient_status_get_process_lab({$v['xid']},'{$j['ids']}') as status";
|
|
}
|
|
else{
|
|
$sql = "SELECT fn_patient_status_get_process_non_lab({$v['xid']},'{$j['ids']}') as status";
|
|
}
|
|
$query = $this->db_onedev->query($sql)->row();
|
|
//echo $this->db_onedev->last_query();
|
|
if($query){
|
|
$details_process[$i]['status'] = $query->status;
|
|
}
|
|
}
|
|
else{
|
|
$details_process[$i]['status'] = 'N';
|
|
}
|
|
|
|
}
|
|
$rows[$k]['details_process'] = $details_process;
|
|
|
|
$details_result_verification = $details;
|
|
foreach($details_result_verification as $i => $j){
|
|
$details_result_verification[$i]['status'] = 'N';
|
|
$status_fo_ver = $details_order[0]['status'];
|
|
if($status_fo_ver == 'Y'){
|
|
$sql = "SELECT fn_patient_status_get_result_verification({$v['xid']},'{$j['ids']}') as status";
|
|
$query = $this->db_onedev->query($sql)->row();
|
|
//echo $this->db_onedev->last_query();
|
|
if($query){
|
|
$details_result_verification[$i]['status'] = $query->status;
|
|
}
|
|
}
|
|
else{
|
|
$details_result_verification[$i]['status'] = 'N';
|
|
}
|
|
|
|
}
|
|
$rows[$k]['details_result_verification'] = $details_result_verification;
|
|
|
|
$details_result_validation = $details;
|
|
foreach($details_result_validation as $i => $j){
|
|
$details_result_validation[$i]['status'] = 'N';
|
|
$status_fo_ver = $details_order[0]['status'];
|
|
if($status_fo_ver == 'Y'){
|
|
$sql = "SELECT fn_patient_status_get_result_validation({$v['xid']},'{$j['ids']}') as status";
|
|
$query = $this->db_onedev->query($sql)->row();
|
|
//echo $this->db_onedev->last_query();
|
|
if($query){
|
|
$details_result_validation[$i]['status'] = $query->status;
|
|
}
|
|
}
|
|
else{
|
|
$details_result_validation[$i]['status'] = 'N';
|
|
}
|
|
|
|
}
|
|
$rows[$k]['details_result_validation'] = $details_result_validation;
|
|
|
|
$details_print = $details;
|
|
foreach($details_print as $i => $j){
|
|
$details_print[$i]['status'] = 'N';
|
|
$status_fo_ver = $details_order[0]['status'];
|
|
if($status_fo_ver == 'Y'){
|
|
$sql = "SELECT fn_patient_status_get_result_print({$v['xid']},'{$j['ids']}') as status";
|
|
$query = $this->db_onedev->query($sql)->row();
|
|
//echo $this->db_onedev->last_query();
|
|
if($query){
|
|
$details_print[$i]['status'] = $query->status;
|
|
}
|
|
}
|
|
else{
|
|
$details_print[$i]['status'] = 'N';
|
|
}
|
|
|
|
}
|
|
$rows[$k]['details_print'] = $details_print;
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
$result = array("total" => $tot_page,"total_all"=>$tot_count, "records" => $rows, "sql"=> '');
|
|
$this->sys_ok($result);
|
|
exit;
|
|
}
|
|
|
|
function search()
|
|
{
|
|
$prm = $this->sys_input;
|
|
if (! $this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
|
|
$search = $prm["search"];
|
|
$companyid = isset($prm["companyid"])?$prm["companyid"]:0;
|
|
if(!isset($prm['current_page']))
|
|
$prm['current_page'] = 1;
|
|
|
|
$number_limit = 15;
|
|
|
|
$number_offset = ($prm['current_page'] - 1) * $number_limit ;
|
|
$sql_where = "";
|
|
if ($search != "") {
|
|
$prm['current_page'] = 1;
|
|
$sql_where = " AND ( T_OrderHeaderLabNumberExt like '%{$search}%' OR T_OrderHeaderLabNumber like '%{$search}%' OR M_PatientName like '%{$search}%' ) ";
|
|
}
|
|
$filter_company = "";
|
|
if($companyid != 0 ){
|
|
$filter_company = " AND T_OrderHeaderM_CompanyID = {$companyid}";
|
|
}
|
|
|
|
$sql = " SELECT COUNT(*) as total FROM (
|
|
SELECT '' as xno,
|
|
T_OrderHeaderID as xid,
|
|
DATE_FORMAT(T_OrderHeaderDate,'%d-%m-%Y') as order_date,
|
|
T_OrderHeaderLabNumber as no_reg,
|
|
CONCAT(M_TitleName,' ',M_PatientName) as patient_name,
|
|
M_CompanyName as company_name,
|
|
M_MouName as mou_name,
|
|
T_OrderHeaderIsCito as status_cito,
|
|
GROUP_CONCAT(DISTINCT DATE_FORMAT(T_OrderPromiseDateTime, '%d-%m-%Y %H:%m') ORDER BY T_OrderPromiseDateTime ASC) as order_promise,
|
|
'' as details_order,
|
|
'' as details_sampling,
|
|
'' as details_verifications,
|
|
'' as details_process,
|
|
'' as details_result_verification,
|
|
'' as details_result_validation,
|
|
'' as details_print,
|
|
T_OrderHeaderLabNumberExt as no_reg_ext
|
|
FROM t_orderheader
|
|
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
|
|
JOIN m_company ON T_OrderHeaderM_CompanyID = M_CompanyID $filter_company
|
|
JOIN m_mou ON T_OrderHeaderM_MouID = M_MouID
|
|
JOIN t_orderpromise ON T_OrderHeaderID = T_OrderPromiseT_OrderHeaderID AND T_OrderPromiseIsActive = 'Y'
|
|
LEFT JOIN m_title ON M_PatientM_TitleID = M_TitleID
|
|
WHERE
|
|
T_OrderHeaderIsActive = 'Y' AND DATE(T_OrderPromiseDateTime) = '{$prm['xdate']}' $sql_where
|
|
GROUP BY T_OrderHeaderID
|
|
UNION
|
|
SELECT '' as xno,
|
|
T_OrderHeaderID as xid,
|
|
DATE_FORMAT(T_OrderHeaderDate,'%d-%m-%Y') as order_date,
|
|
T_OrderHeaderLabNumber as no_reg,
|
|
CONCAT(M_TitleName,' ',M_PatientName) as patient_name,
|
|
M_CompanyName as company_name,
|
|
M_MouName as mou_name,
|
|
T_OrderHeaderIsCito as status_cito,
|
|
GROUP_CONCAT(DISTINCT DATE_FORMAT(T_OrderPromiseDateTime, '%d-%m-%Y %H:%m') ORDER BY T_OrderPromiseDateTime ASC) as order_promise,
|
|
'' as details_order,
|
|
'' as details_sampling,
|
|
'' as details_verifications,
|
|
'' as details_process,
|
|
'' as details_result_verification,
|
|
'' as details_result_validation,
|
|
'' as details_print,
|
|
T_OrderHeaderLabNumberExt as no_reg_ext
|
|
FROM t_orderheader
|
|
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
|
|
JOIN m_company ON T_OrderHeaderM_CompanyID = M_CompanyID $filter_company
|
|
JOIN m_mou ON T_OrderHeaderM_MouID = M_MouID
|
|
LEFT JOIN t_orderpromise ON T_OrderHeaderID = T_OrderPromiseT_OrderHeaderID AND T_OrderPromiseIsActive = 'Y'
|
|
LEFT JOIN m_title ON M_PatientM_TitleID = M_TitleID
|
|
WHERE
|
|
T_OrderHeaderIsActive = 'Y' AND DATE(T_OrderHeaderDate) = '{$prm['xdate']}' $sql_where
|
|
GROUP BY T_OrderHeaderID
|
|
)x
|
|
";
|
|
//echo $sql;
|
|
$query = $this->db_onedev->query($sql);
|
|
|
|
$tot_count = 0;
|
|
$tot_page = 0;
|
|
if ($query) {
|
|
$tot_count = $query->result_array()[0]["total"];
|
|
$tot_page = ceil($tot_count/$number_limit);
|
|
} else {
|
|
$this->sys_error_db("t_samplestorageout count", $this->db_onedev);
|
|
exit;
|
|
}
|
|
|
|
|
|
$sql = "
|
|
SELECT * FROM (
|
|
SELECT '' as xno,
|
|
T_OrderHeaderID as xid,
|
|
DATE_FORMAT(T_OrderHeaderDate,'%d-%m-%Y %H:%i') as order_date,
|
|
T_OrderHeaderLabNumber as no_reg,
|
|
CONCAT(M_TitleName,' ',M_PatientName) as patient_name,
|
|
M_CompanyName as company_name,
|
|
M_MouName as mou_name,
|
|
T_OrderHeaderIsCito as status_cito,
|
|
GROUP_CONCAT(DISTINCT DATE_FORMAT(T_OrderPromiseDateTime, '%d-%m-%Y %H:%i') ORDER BY T_OrderPromiseDateTime ASC) as order_promise,
|
|
'' as details_order,
|
|
'' as details_sampling,
|
|
'' as details_verifications,
|
|
'' as details_process,
|
|
'' as details_result_verification,
|
|
'' as details_result_validation,
|
|
'' as details_print,
|
|
T_OrderHeaderLabNumberExt as no_reg_ext
|
|
FROM t_orderheader
|
|
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
|
|
JOIN m_company ON T_OrderHeaderM_CompanyID = M_CompanyID $filter_company
|
|
JOIN m_mou ON T_OrderHeaderM_MouID = M_MouID
|
|
JOIN t_orderpromise ON T_OrderHeaderID = T_OrderPromiseT_OrderHeaderID AND T_OrderPromiseIsActive = 'Y'
|
|
LEFT JOIN m_title ON M_PatientM_TitleID = M_TitleID
|
|
WHERE
|
|
T_OrderHeaderIsActive = 'Y' AND DATE(T_OrderPromiseDateTime) = '{$prm['xdate']}' $sql_where
|
|
GROUP BY T_OrderHeaderID
|
|
UNION
|
|
SELECT '' as xno,
|
|
T_OrderHeaderID as xid,
|
|
DATE_FORMAT(T_OrderHeaderDate,'%d-%m-%Y %H:%i') as order_date,
|
|
T_OrderHeaderLabNumber as no_reg,
|
|
CONCAT(M_TitleName,' ',M_PatientName) as patient_name,
|
|
M_CompanyName as company_name,
|
|
M_MouName as mou_name,
|
|
T_OrderHeaderIsCito as status_cito,
|
|
GROUP_CONCAT(DISTINCT DATE_FORMAT(T_OrderPromiseDateTime, '%d-%m-%Y %H:%i') ORDER BY T_OrderPromiseDateTime ASC) as order_promise,
|
|
'' as details_order,
|
|
'' as details_sampling,
|
|
'' as details_verifications,
|
|
'' as details_process,
|
|
'' as details_result_verification,
|
|
'' as details_result_validation,
|
|
'' as details_print,
|
|
T_OrderHeaderLabNumberExt as no_reg_ext
|
|
FROM t_orderheader
|
|
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
|
|
JOIN m_company ON T_OrderHeaderM_CompanyID = M_CompanyID $filter_company
|
|
JOIN m_mou ON T_OrderHeaderM_MouID = M_MouID
|
|
LEFT JOIN t_orderpromise ON T_OrderHeaderID = T_OrderPromiseT_OrderHeaderID AND T_OrderPromiseIsActive = 'Y'
|
|
LEFT JOIN m_title ON M_PatientM_TitleID = M_TitleID
|
|
WHERE
|
|
T_OrderHeaderIsActive = 'Y' AND DATE(T_OrderHeaderDate) = '{$prm['xdate']}' $sql_where
|
|
GROUP BY T_OrderHeaderID
|
|
)x
|
|
ORDER BY xid ASC
|
|
limit $number_limit offset $number_offset
|
|
";
|
|
|
|
//echo $sql;
|
|
$query = $this->db_onedev->query($sql);
|
|
$rows = $query->result_array();
|
|
if($rows){
|
|
$no = 1;
|
|
foreach($rows as $k => $v){
|
|
$xno = ($k + 1) + $number_offset;
|
|
$rows[$k]['xno'] = $xno;
|
|
|
|
//print_r($v);
|
|
$sql = "SELECT GROUP_CONCAT(DISTINCT T_OrderDetailID SEPARATOR ',') as ids,
|
|
Group_ResultName as group_name,
|
|
Group_ResultID as group_id,
|
|
Group_ResultFlagNonLab as flag_nonlab,
|
|
'' as status
|
|
FROM t_orderdetail
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
|
|
Group_ResultDetailIsActive = 'Y'
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
|
|
Group_ResultFlagPerTest = 'N'
|
|
WHERE
|
|
T_OrderDetailT_OrderHeaderID = {$v['xid']} AND T_OrderDetailIsActive = 'Y'
|
|
GROUP BY Group_ResultID
|
|
UNION
|
|
SELECT T_OrderDetailID as xid,
|
|
T_TestName as group_name,
|
|
Group_ResultID as group_id,
|
|
Group_ResultFlagNonLab as flag_nonlab,
|
|
'' as status
|
|
FROM t_orderdetail
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
|
|
Group_ResultDetailIsActive = 'Y'
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
|
|
Group_ResultFlagPerTest = 'Y'
|
|
WHERE
|
|
T_OrderDetailT_OrderHeaderID = {$v['xid']} AND T_OrderDetailIsActive = 'Y'
|
|
GROUP BY T_OrderDetailT_TestID;
|
|
";
|
|
//echo $sql;
|
|
$details = $this->db_onedev->query($sql)->result_array();
|
|
$details_order = $details;
|
|
foreach($details_order as $i => $j){
|
|
$details_order[$i]['status'] = 'N';
|
|
$sql = "SELECT fn_patient_status_order({$v['xid']}) as status";
|
|
$query = $this->db_onedev->query($sql)->row();
|
|
//echo $this->db_onedev->last_query();
|
|
if($query){
|
|
$details_order[$i]['status'] = $query->status;
|
|
}
|
|
|
|
}
|
|
$rows[$k]['details_order'] = $details_order;
|
|
|
|
$details_sampling = $details;
|
|
foreach($details_sampling as $i => $j){
|
|
$details_sampling[$i]['status'] = 'N';
|
|
$status_fo_ver = $details_order[0]['status'];
|
|
if($status_fo_ver == 'Y'){
|
|
$count_all = 0;
|
|
$count_done = 0;
|
|
if($j['flag_nonlab'] == 'N'){
|
|
//$sql = "SELECT fn_patient_status_get_sampling_lab({$v['xid']},'{$j['ids']}') as status";
|
|
$sql = "SELECT COUNT(*) as xcount
|
|
FROM (
|
|
SELECT T_OrderSampleID
|
|
FROM t_ordersample
|
|
JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderSampleT_OrderHeaderID
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
|
|
JOIN t_barcodelab ON T_BarcodeLabT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
|
|
T_OrderSampleT_BarcodeLabID = T_BarcodeLabID
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
|
|
Group_ResultDetailIsActive = 'Y'
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
|
|
Group_ResultFlagPerTest = 'N' AND Group_ResultID = {$j['group_id']}
|
|
WHERE
|
|
T_OrderSampleT_OrderHeaderID = {$v['xid']}
|
|
GROUP BY T_OrderSampleID
|
|
) x_all";
|
|
$count_all = $this->db_onedev->query($sql)->row()->xcount;
|
|
$sql = "SELECT COUNT(*) as xcount
|
|
FROM (
|
|
SELECT T_OrderSampleID
|
|
FROM t_ordersample
|
|
JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderSampleT_OrderHeaderID
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
|
|
JOIN t_barcodelab ON T_BarcodeLabT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
|
|
T_OrderSampleT_BarcodeLabID = T_BarcodeLabID
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
|
|
Group_ResultDetailIsActive = 'Y'
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
|
|
Group_ResultFlagPerTest = 'N' AND Group_ResultID = {$j['group_id']}
|
|
WHERE
|
|
T_OrderSampleT_OrderHeaderID = {$v['xid']} AND T_OrderSampleReceive = 'Y'
|
|
GROUP BY T_OrderSampleID
|
|
) x_done";
|
|
$count_done = $this->db_onedev->query($sql)->row()->xcount;
|
|
}
|
|
else{
|
|
//$sql = "SELECT fn_patient_status_get_sampling_non_lab({$v['xid']},'{$j['ids']}') as status";
|
|
$sql = "SELECT COUNT(*) as xcount
|
|
FROM (
|
|
SELECT T_OrderDetailID
|
|
FROM t_orderdetail
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
|
|
Group_ResultDetailIsActive = 'Y'
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
|
|
Group_ResultFlagPerTest = 'N' AND Group_ResultID = {$j['group_id']}
|
|
WHERE
|
|
T_OrderDetailT_OrderHeaderID = {$v['xid']}
|
|
GROUP BY T_OrderDetailID
|
|
) x_all";
|
|
$count_all = $this->db_onedev->query($sql)->row()->xcount;
|
|
$sql = "SELECT COUNT(*) as xcount
|
|
FROM (
|
|
SELECT T_OrderDetailID
|
|
FROM t_orderdetail
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
|
|
Group_ResultDetailIsActive = 'Y'
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
|
|
Group_ResultFlagPerTest = 'N' AND Group_ResultID = {$j['group_id']}
|
|
JOIN t_samplingso ON T_OrderDetailT_OrderHeaderID = T_SamplingSoT_OrderHeaderID AND
|
|
T_SamplingSoT_TestID = T_OrderDetailT_TestID AND T_SamplingSoDoneDate IS NOT NULL
|
|
WHERE
|
|
T_OrderDetailT_OrderHeaderID = {$v['xid']}
|
|
GROUP BY T_OrderDetailID
|
|
) x_done";
|
|
$count_done = $this->db_onedev->query($sql)->row()->xcount;
|
|
}
|
|
//$query = $this->db_onedev->query($sql)->row();
|
|
//echo $this->db_onedev->last_query();
|
|
|
|
$status = 'N';
|
|
if(intval($count_all) > 0 && intval($count_all) == intval($count_done))
|
|
$status = 'Y';
|
|
else if(intval($count_all) > intval($count_done) && intval($count_done) > 0)
|
|
$status = 'P';
|
|
|
|
$details_sampling[$i]['status'] = $status ;
|
|
|
|
}
|
|
else{
|
|
$details_sampling[$i]['status'] = 'N';
|
|
}
|
|
|
|
}
|
|
$rows[$k]['details_sampling'] = $details_sampling;
|
|
|
|
$details_verifications = $details;
|
|
foreach($details_verifications as $i => $j){
|
|
$details_verifications[$i]['status'] = 'N';
|
|
$status_fo_ver = $details_order[0]['status'];
|
|
if($status_fo_ver == 'Y'){
|
|
if($j['flag_nonlab'] == 'N'){
|
|
//$sql = "SELECT fn_patient_status_get_sampling_lab({$v['xid']},'{$j['ids']}') as status";
|
|
$sql = "SELECT COUNT(*) as xcount
|
|
FROM (
|
|
SELECT T_OrderSampleID
|
|
FROM t_ordersample
|
|
JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderSampleT_OrderHeaderID
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
|
|
JOIN t_barcodelab ON T_BarcodeLabT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
|
|
T_OrderSampleT_BarcodeLabID = T_BarcodeLabID
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
|
|
Group_ResultDetailIsActive = 'Y'
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
|
|
Group_ResultFlagPerTest = 'N' AND Group_ResultID = {$j['group_id']}
|
|
WHERE
|
|
T_OrderSampleT_OrderHeaderID = {$v['xid']}
|
|
GROUP BY T_OrderSampleID
|
|
) x_all";
|
|
$count_all = $this->db_onedev->query($sql)->row()->xcount;
|
|
$sql = "SELECT COUNT(*) as xcount
|
|
FROM (
|
|
SELECT T_OrderSampleID
|
|
FROM t_ordersample
|
|
JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderSampleT_OrderHeaderID
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
|
|
JOIN t_barcodelab ON T_BarcodeLabT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
|
|
T_OrderSampleT_BarcodeLabID = T_BarcodeLabID
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
|
|
Group_ResultDetailIsActive = 'Y'
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
|
|
Group_ResultFlagPerTest = 'N' AND Group_ResultID = {$j['group_id']}
|
|
WHERE
|
|
T_OrderSampleT_OrderHeaderID = {$v['xid']} AND T_OrderSampleVerification = 'Y'
|
|
GROUP BY T_OrderSampleID
|
|
) x_done";
|
|
$count_done = $this->db_onedev->query($sql)->row()->xcount;
|
|
}
|
|
else{
|
|
//$sql = "SELECT fn_patient_status_get_sampling_non_lab({$v['xid']},'{$j['ids']}') as status";
|
|
$sql = "SELECT COUNT(*) as xcount
|
|
FROM (
|
|
SELECT T_OrderDetailID
|
|
FROM t_orderdetail
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
|
|
Group_ResultDetailIsActive = 'Y'
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
|
|
Group_ResultFlagPerTest = 'N' AND Group_ResultID = {$j['group_id']}
|
|
WHERE
|
|
T_OrderDetailT_OrderHeaderID = {$v['xid']}
|
|
GROUP BY T_OrderDetailID
|
|
) x_all";
|
|
$count_all = $this->db_onedev->query($sql)->row()->xcount;
|
|
$sql = "SELECT COUNT(*) as xcount
|
|
FROM (
|
|
SELECT T_OrderDetailID
|
|
FROM t_orderdetail
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
|
|
Group_ResultDetailIsActive = 'Y'
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
|
|
Group_ResultFlagPerTest = 'N' AND Group_ResultID = {$j['group_id']}
|
|
JOIN t_samplingso ON T_OrderDetailT_OrderHeaderID = T_SamplingSoT_OrderHeaderID AND
|
|
T_SamplingSoT_TestID = T_OrderDetailT_TestID AND T_SamplingSoVerifyDate IS NOT NULL
|
|
WHERE
|
|
T_OrderDetailT_OrderHeaderID = {$v['xid']}
|
|
GROUP BY T_OrderDetailID
|
|
) x_done";
|
|
$count_done = $this->db_onedev->query($sql)->row()->xcount;
|
|
}
|
|
//$query = $this->db_onedev->query($sql)->row();
|
|
//echo $this->db_onedev->last_query();
|
|
|
|
$status = 'N';
|
|
if(intval($count_all) == intval($count_done))
|
|
$status = 'Y';
|
|
else if(intval($count_all) > intval($count_done) && intval($count_done) > 0)
|
|
$status = 'P';
|
|
|
|
$details_verifications[$i]['status'] = $status;
|
|
}
|
|
else{
|
|
$details_verifications[$i]['status'] = 'N';
|
|
}
|
|
|
|
}
|
|
$rows[$k]['details_verifications'] = $details_verifications;
|
|
|
|
$details_process = $details;
|
|
foreach($details_process as $i => $j){
|
|
$details_process[$i]['status'] = 'N';
|
|
$status_fo_ver = $details_order[0]['status'];
|
|
if($status_fo_ver == 'Y'){
|
|
if($j['flag_nonlab'] == 'N'){
|
|
//$sql = "SELECT fn_patient_status_get_sampling_lab({$v['xid']},'{$j['ids']}') as status";
|
|
$sql = "SELECT COUNT(*) as xcount
|
|
FROM (
|
|
SELECT T_OrderSampleID
|
|
FROM t_ordersample
|
|
JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderSampleT_OrderHeaderID
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
|
|
JOIN t_barcodelab ON T_BarcodeLabT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
|
|
T_OrderSampleT_BarcodeLabID = T_BarcodeLabID
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
|
|
Group_ResultDetailIsActive = 'Y'
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
|
|
Group_ResultFlagPerTest = 'N' AND Group_ResultID = {$j['group_id']}
|
|
WHERE
|
|
T_OrderSampleT_OrderHeaderID = {$v['xid']}
|
|
GROUP BY T_OrderSampleID
|
|
) x_all";
|
|
$count_all = $this->db_onedev->query($sql)->row()->xcount;
|
|
$sql = "SELECT COUNT(*) as xcount
|
|
FROM (
|
|
SELECT T_OrderSampleID
|
|
FROM t_ordersample
|
|
JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderSampleT_OrderHeaderID
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
|
|
JOIN t_barcodelab ON T_BarcodeLabT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND
|
|
T_OrderSampleT_BarcodeLabID = T_BarcodeLabID
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
|
|
Group_ResultDetailIsActive = 'Y'
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
|
|
Group_ResultFlagPerTest = 'N' AND Group_ResultID = {$j['group_id']}
|
|
WHERE
|
|
T_OrderSampleT_OrderHeaderID = {$v['xid']} AND T_OrderSampleHandling = 'Y'
|
|
GROUP BY T_OrderSampleID
|
|
) x_done";
|
|
$count_done = $this->db_onedev->query($sql)->row()->xcount;
|
|
}
|
|
else{
|
|
//$sql = "SELECT fn_patient_status_get_sampling_non_lab({$v['xid']},'{$j['ids']}') as status";
|
|
$sql = "SELECT COUNT(*) as xcount
|
|
FROM (
|
|
SELECT T_OrderDetailID
|
|
FROM t_orderdetail
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
|
|
Group_ResultDetailIsActive = 'Y'
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
|
|
Group_ResultFlagPerTest = 'N' AND Group_ResultID = {$j['group_id']}
|
|
WHERE
|
|
T_OrderDetailT_OrderHeaderID = {$v['xid']}
|
|
GROUP BY T_OrderDetailID
|
|
) x_all";
|
|
$count_all = $this->db_onedev->query($sql)->row()->xcount;
|
|
$sql = "SELECT COUNT(*) as xcount
|
|
FROM (
|
|
SELECT T_OrderDetailID
|
|
FROM t_orderdetail
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
|
|
Group_ResultDetailIsActive = 'Y'
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
|
|
Group_ResultFlagPerTest = 'N' AND Group_ResultID = {$j['group_id']}
|
|
JOIN t_samplingso ON T_OrderDetailT_OrderHeaderID = T_SamplingSoT_OrderHeaderID AND
|
|
T_SamplingSoT_TestID = T_OrderDetailT_TestID AND T_SamplingSoM_DoctorID <> 0 AND T_SamplingSoReceiveAdmDate IS NOT NULL
|
|
WHERE
|
|
T_OrderDetailT_OrderHeaderID = {$v['xid']}
|
|
GROUP BY T_OrderDetailID
|
|
) x_done";
|
|
$count_done = $this->db_onedev->query($sql)->row()->xcount;
|
|
}
|
|
//$query = $this->db_onedev->query($sql)->row();
|
|
//echo $this->db_onedev->last_query();
|
|
|
|
$status = 'N';
|
|
if(intval($count_all) == intval($count_done))
|
|
$status = 'Y';
|
|
else if(intval($count_all) > intval($count_done) && intval($count_done) > 0)
|
|
$status = 'P';
|
|
|
|
$details_process[$i]['status'] = $status;
|
|
}
|
|
else{
|
|
$details_process[$i]['status'] = 'N';
|
|
}
|
|
|
|
}
|
|
$rows[$k]['details_process'] = $details_process;
|
|
|
|
$details_result_verification = $details;
|
|
foreach($details_result_verification as $i => $j){
|
|
$details_result_verification[$i]['status'] = 'N';
|
|
$status_fo_ver = $details_order[0]['status'];
|
|
if($status_fo_ver == 'Y'){
|
|
|
|
$sql = "SELECT COUNT(*) as xcount
|
|
FROM (
|
|
SELECT T_OrderDetailID
|
|
FROM t_orderdetail
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
|
|
Group_ResultDetailIsActive = 'Y'
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
|
|
Group_ResultFlagPerTest = 'N' AND Group_ResultID = {$j['group_id']}
|
|
WHERE
|
|
T_OrderDetailT_OrderHeaderID = {$v['xid']}
|
|
GROUP BY T_OrderDetailID
|
|
) x_all";
|
|
$count_all = $this->db_onedev->query($sql)->row()->xcount;
|
|
$sql = "SELECT COUNT(*) as xcount
|
|
FROM (
|
|
SELECT T_OrderDetailID
|
|
FROM t_orderdetail
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
|
|
Group_ResultDetailIsActive = 'Y'
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
|
|
Group_ResultFlagPerTest = 'N' AND Group_ResultID = {$j['group_id']}
|
|
WHERE
|
|
T_OrderDetailT_OrderHeaderID = {$v['xid']} AND T_OrderDetailVerification = 'Y'
|
|
GROUP BY T_OrderDetailID
|
|
) x_done";
|
|
$count_done = $this->db_onedev->query($sql)->row()->xcount;
|
|
|
|
$status = 'N';
|
|
if(intval($count_all) == intval($count_done))
|
|
$status = 'Y';
|
|
else if(intval($count_all) > intval($count_done) && intval($count_done) > 0)
|
|
$status = 'P';
|
|
|
|
$details_result_verification[$i]['status'] = $status;
|
|
|
|
}
|
|
else{
|
|
$details_result_verification[$i]['status'] = 'N';
|
|
}
|
|
|
|
}
|
|
$rows[$k]['details_result_verification'] = $details_result_verification;
|
|
|
|
$details_result_validation = $details;
|
|
foreach($details_result_validation as $i => $j){
|
|
$details_result_validation[$i]['status'] = 'N';
|
|
$status_fo_ver = $details_order[0]['status'];
|
|
if($status_fo_ver == 'Y'){
|
|
$sql = "SELECT COUNT(*) as xcount
|
|
FROM (
|
|
SELECT T_OrderDetailID
|
|
FROM t_orderdetail
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
|
|
Group_ResultDetailIsActive = 'Y'
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
|
|
Group_ResultFlagPerTest = 'N' AND Group_ResultID = {$j['group_id']}
|
|
WHERE
|
|
T_OrderDetailT_OrderHeaderID = {$v['xid']}
|
|
GROUP BY T_OrderDetailID
|
|
) x_all";
|
|
$count_all = $this->db_onedev->query($sql)->row()->xcount;
|
|
$sql = "SELECT COUNT(*) as xcount
|
|
FROM (
|
|
SELECT T_OrderDetailID
|
|
FROM t_orderdetail
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
|
|
Group_ResultDetailIsActive = 'Y'
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
|
|
Group_ResultFlagPerTest = 'N' AND Group_ResultID = {$j['group_id']}
|
|
WHERE
|
|
T_OrderDetailT_OrderHeaderID = {$v['xid']} AND T_OrderDetailValidation = 'Y'
|
|
GROUP BY T_OrderDetailID
|
|
) x_done";
|
|
$count_done = $this->db_onedev->query($sql)->row()->xcount;
|
|
|
|
$status = 'N';
|
|
if(intval($count_all) == intval($count_done))
|
|
$status = 'Y';
|
|
else if(intval($count_all) > intval($count_done) && intval($count_done) > 0)
|
|
$status = 'P';
|
|
|
|
$details_result_validation[$i]['status'] = $status;
|
|
}
|
|
else{
|
|
$details_result_validation[$i]['status'] = 'N';
|
|
}
|
|
|
|
}
|
|
$rows[$k]['details_result_validation'] = $details_result_validation;
|
|
|
|
$details_print = $details;
|
|
foreach($details_print as $i => $j){
|
|
$details_print[$i]['status'] = 'N';
|
|
$status_fo_ver = $details_order[0]['status'];
|
|
if($status_fo_ver == 'Y'){
|
|
$sql = "SELECT COUNT(*) as xcount
|
|
FROM (
|
|
SELECT T_OrderDetailID
|
|
FROM t_orderdetail
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
|
|
Group_ResultDetailIsActive = 'Y'
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
|
|
Group_ResultFlagPerTest = 'N' AND Group_ResultID = {$j['group_id']}
|
|
WHERE
|
|
T_OrderDetailT_OrderHeaderID = {$v['xid']}
|
|
GROUP BY T_OrderDetailID
|
|
) x_all";
|
|
$count_all = $this->db_onedev->query($sql)->row()->xcount;
|
|
$sql = "SELECT COUNT(*) as xcount
|
|
FROM (
|
|
SELECT T_OrderDetailID
|
|
FROM t_orderdetail
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND
|
|
Group_ResultDetailIsActive = 'Y'
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND
|
|
Group_ResultFlagPerTest = 'N' AND Group_ResultID = {$j['group_id']}
|
|
WHERE
|
|
T_OrderDetailT_OrderHeaderID = {$v['xid']} AND T_OrderDetailPrintCount > 0
|
|
GROUP BY T_OrderDetailID
|
|
) x_done";
|
|
$count_done = $this->db_onedev->query($sql)->row()->xcount;
|
|
|
|
$status = 'N';
|
|
if(intval($count_all) == intval($count_done))
|
|
$status = 'Y';
|
|
else if(intval($count_all) > intval($count_done) && intval($count_done) > 0)
|
|
$status = 'P';
|
|
|
|
$details_print[$i]['status'] = $status;
|
|
}
|
|
else{
|
|
$details_print[$i]['status'] = 'N';
|
|
}
|
|
|
|
}
|
|
$rows[$k]['details_print'] = $details_print;
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
$result = array("total" => $tot_page,"total_all"=>$tot_count, "records" => $rows, "sql"=> '');
|
|
$this->sys_ok($result);
|
|
exit;
|
|
}
|
|
|
|
function searchcompany(){
|
|
if (! $this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
$prm = $this->sys_input;
|
|
|
|
$max_rst = 12;
|
|
$tot_count =0;
|
|
|
|
$q = [
|
|
'search' => '%'
|
|
];
|
|
|
|
if ($prm['search'] != '')
|
|
{
|
|
$q['search'] = "%{$prm['search']}%";
|
|
}
|
|
|
|
// QUERY TOTAL
|
|
$sql = "SELECT count(*) as total
|
|
FROM m_company
|
|
WHERE
|
|
M_CompanyName like ?
|
|
AND M_CompanyIsActive = 'Y'";
|
|
$query = $this->db_onedev->query($sql,$q['search']);
|
|
//echo $query;
|
|
if ($query) {
|
|
$tot_count = $query->result_array()[0]["total"];
|
|
}
|
|
else {
|
|
$this->sys_error_db("m_city count",$this->db_onedev);
|
|
exit;
|
|
}
|
|
$rows = array('id'=>0,'name'=>'Semua');
|
|
$sql = "
|
|
SELECT M_CompanyID as id, M_CompanyName as name
|
|
FROM m_company
|
|
WHERE
|
|
M_CompanyName like ?
|
|
AND M_CompanyIsActive = 'Y'
|
|
ORDER BY M_CompanyName DESC
|
|
";
|
|
$query = $this->db_onedev->query($sql, array($q['search']));
|
|
|
|
if ($query) {
|
|
$rows = $query->result_array();
|
|
array_push($rows,array('id'=>0,'name'=>'Semua'));
|
|
//echo $this->db_onedev->last_query();
|
|
$result = array("total" => $tot_count, "records" => $rows, "total_display" => sizeof($rows));
|
|
$this->sys_ok($result);
|
|
}
|
|
else {
|
|
$this->sys_error_db("m_company rows",$this->db_onedev);
|
|
exit;
|
|
}
|
|
}
|
|
|
|
function getdata_order(){
|
|
if (! $this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
|
|
$prm = $this->sys_input;
|
|
$xid = $prm["xid"];
|
|
|
|
$sql = "SELECT *
|
|
FROM t_orderheader
|
|
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
|
|
WHERE
|
|
T_OrderHeaderID = {$xid}";
|
|
$data_header = $this->db_onedev->query($sql)->row_array();
|
|
|
|
$datas = array();
|
|
$sql = "
|
|
SELECT * FROM (
|
|
SELECT DATE_FORMAT(OrderLogCreated,'%d.%m.%Y %H:%i') as xdatetime,
|
|
'order' as type,
|
|
JSON_OBJECT(
|
|
'company_name',M_CompanyName,
|
|
'mou_name', M_MouName,
|
|
'doctor_name',CONCAT(M_DoctorPrefix,M_DoctorPrefix2,' ',M_DoctorName,' ',M_DoctorSufix,M_DoctorSufix2,M_DoctorSufix3),
|
|
'doctor_address',M_DoctorAddressDescription,
|
|
'alias_doctor',orderLogT_OrderHeaderAddOnAliasDoctorName,
|
|
'alias_doctor_name',orderLogT_OrderHeaderAddOnAliasDoctorAddress,
|
|
'age',OrderLogAge,
|
|
'fo_note',IFNULL(OrderLogFoNote,'-'),
|
|
'subtotal',OrderLogSubtotal,
|
|
'total',OrderLogTotal,
|
|
'details',OrderLogDetails,
|
|
'deliveries',OrderLogDeliveries,
|
|
'promises',OrderLogPromises
|
|
) as data,
|
|
M_UserUsername as username
|
|
FROM order_log
|
|
JOIN m_user ON OrderLogUserID = M_UserID
|
|
JOIN m_doctor ON OrderLogM_DoctorSenderID = M_DoctorID
|
|
JOIN m_company ON OrderLogM_CompanyID = M_CompanyID
|
|
JOIN m_mou ON OrderLogM_MouID = M_MouID
|
|
JOIN m_doctoraddress ON OrderLogM_DoctorSenderAddressID = M_DoctorAddressID
|
|
WHERE
|
|
OrderLogT_OrderHeaderID = {$xid}
|
|
UNION
|
|
SELECT DATE_FORMAT(orderAttrCreated,'%d.%m.%Y %H:%i') as xdatetime,
|
|
orderAttrType as type,
|
|
orderAttrJson as data,
|
|
M_UserUsername as username
|
|
FROM order_attr
|
|
JOIN m_user ON orderAttrUserID = M_UserID
|
|
WHERE
|
|
orderAttrT_OrderHeaderID = {$xid} AND
|
|
( orderAttrType = 'req_change_dob' OR orderAttrType = 'change_dob' )
|
|
UNION
|
|
SELECT DATE_FORMAT(orderAttrCreated,'%d.%m.%Y %H:%i') as xdatetime,
|
|
orderAttrType as type,
|
|
orderAttrJson as data,
|
|
M_UserUsername as username
|
|
FROM order_attr
|
|
JOIN m_user ON orderAttrUserID = M_UserID
|
|
WHERE
|
|
orderAttrT_OrderHeaderID = {$xid} AND
|
|
orderAttrType = 'spv_order_doctor'
|
|
UNION
|
|
SELECT DATE_FORMAT(orderAttrCreated,'%d.%m.%Y %H:%i') as xdatetime,
|
|
orderAttrType as type,
|
|
orderAttrJson as data,
|
|
M_UserUsername as username
|
|
FROM order_attr
|
|
JOIN m_user ON orderAttrUserID = M_UserID
|
|
WHERE
|
|
orderAttrT_OrderHeaderID = {$xid} AND
|
|
orderAttrType = 'spv_order_company'
|
|
UNION
|
|
SELECT DATE_FORMAT(OrderPxCreated,'%d.%m.%Y %H:%i') as xdatetime,
|
|
OrderPxType as type,
|
|
OrderPxJson as data,
|
|
M_UserUsername as username
|
|
FROM order_px
|
|
JOIN m_user ON OrderPxUserID = M_UserID
|
|
WHERE
|
|
OrderPxT_OrderHeaderID = {$xid} AND
|
|
OrderPxType = 'spv_test'
|
|
UNION
|
|
SELECT DATE_FORMAT(OrderPxCreated,'%d.%m.%Y %H:%i') as xdatetime,
|
|
OrderPxType as type,
|
|
JSON_OBJECT('mou',OrderPxMou,'data',OrderPxJson) as data,
|
|
M_UserUsername as username
|
|
FROM order_px
|
|
JOIN m_user ON OrderPxUserID = M_UserID
|
|
WHERE
|
|
OrderPxT_OrderHeaderID = {$xid} AND
|
|
OrderPxType = 'update_mou'
|
|
UNION
|
|
SELECT DATE_FORMAT(Order_DeliveryCreated,'%d.%m.%Y %H:%i') as xdatetime,
|
|
'order_delivery' as type,
|
|
Order_DeliveryJson as data,
|
|
M_UserUsername as username
|
|
FROM order_delivery
|
|
JOIN m_user ON Order_DeliveryUserID = M_UserID
|
|
WHERE
|
|
Order_DeliveryT_OrdeheaderID = {$xid}
|
|
UNION
|
|
SELECT DATE_FORMAT(F_PaymentCreated,'%d.%m.%Y %H:%i') as xdatetime,
|
|
'payment' as type,
|
|
F_PaymentID as data,
|
|
M_UserUsername as username
|
|
FROM f_payment
|
|
JOIN m_user ON F_PaymentM_UserID = M_UserID
|
|
WHERE
|
|
F_PaymentT_OrderHeaderID = {$xid}
|
|
UNION
|
|
SELECT DATE_FORMAT(Fo_StatusDate,'%d.%m.%Y %H:%i') as xdatetime,
|
|
'fo_verification' as type,
|
|
Fo_StatusID as data,
|
|
M_UserUsername as username
|
|
FROM fo_status
|
|
JOIN m_user ON Fo_StatusM_UserID = M_UserID
|
|
WHERE
|
|
Fo_StatusT_OrderHeaderID = {$xid} AND
|
|
Fo_StatusM_StatusID IN (3,4)
|
|
UNION
|
|
SELECT DATE_FORMAT(orderAttrCreated,'%d.%m.%Y %H:%i') as xdatetime,
|
|
'change_promise' as type,
|
|
orderAttrJson as data,
|
|
M_UserUsername as username
|
|
FROM order_attr
|
|
JOIN m_user ON orderAttrUserID = M_UserID
|
|
WHERE
|
|
orderAttrT_OrderHeaderID = {$xid} AND
|
|
( orderAttrType = 'spv_promise' OR orderAttrType = 'patlist_promise' )
|
|
) x ORDER BY xdatetime ASC";
|
|
//echo $sql;
|
|
$datas = $this->db_onedev->query($sql)->result_array();
|
|
foreach($datas as $k => $v){
|
|
if($v['type'] == 'order'){
|
|
$datas[$k]['data'] = json_decode($v['data']);
|
|
$datas[$k]['data']->details = json_decode($datas[$k]['data']->details);
|
|
$datas[$k]['data']->deliveries = json_decode($datas[$k]['data']->deliveries);
|
|
$datas[$k]['data']->promises = json_decode($datas[$k]['data']->promises);
|
|
foreach($datas[$k]['data']->deliveries as $kdev => $vdev){
|
|
$sql = "SELECT * FROM m_delivery WHERE M_DeliveryID = {$vdev->delivery_id}";
|
|
//echo $sql;
|
|
$datas[$k]['data']->deliveries[$kdev]->delivery_code = $this->db_onedev->query($sql)->row()->M_DeliveryName;
|
|
}
|
|
}
|
|
else if($v['type'] == 'fo_verification'){
|
|
$sql = "SELECT *
|
|
FROM fo_verificationsvalue
|
|
JOIN fo_verificationslabel ON Fo_VerificationsValueFo_VerificationsLabelID = Fo_VerificationsLabelID
|
|
WHERE
|
|
Fo_VerificationsValueT_OrderHeaderID = {$xid}
|
|
ORDER BY Fo_VerificationsLabelOrder ASC";
|
|
$datas[$k]['data'] = $this->db_onedev->query($sql)->result_array();
|
|
}
|
|
else if($v['type'] == 'update_mou'){
|
|
$xdt = json_decode($v['data']);
|
|
$xdt->mou = json_decode($xdt->mou);
|
|
$xdt->data = json_decode($xdt->data);
|
|
$datas[$k]['data'] = $xdt;
|
|
}
|
|
else if($v['type'] == 'payment'){
|
|
$sql = "SELECT *
|
|
FROM f_payment
|
|
WHERE
|
|
F_PaymentID = {$v['data']}";
|
|
$payment_header = $this->db_onedev->query($sql)->row_array();
|
|
$sql = "SELECT f_paymentdetail.*,
|
|
M_PaymentTypeCode,
|
|
CASE
|
|
WHEN M_PaymentTypeCode = 'CASH' THEN M_PaymentTypeName
|
|
WHEN M_PaymentTypeCode = 'DEBIT' THEN CONCAT(M_PaymentTypeName,' : ',card_bank.Nat_BankName,'+',bank.Nat_BankName,' [ ',M_BankAccountNo,' ]')
|
|
WHEN M_PaymentTypeCode = 'CREDIT' THEN CONCAT(M_PaymentTypeName,' : ',card_bank.Nat_BankName,'+',bank.Nat_BankName,' [ ',M_BankAccountNo,' ]')
|
|
WHEN M_PaymentTypeCode = 'TRANSFER' THEN CONCAT(M_PaymentTypeName,'+',bank.Nat_BankName,' [ ',M_BankAccountNo,' ]')
|
|
ELSE CONCAT(M_PaymentTypeName,' [ ',F_PaymentDetailNote,' ]')
|
|
END as name
|
|
FROM f_paymentdetail
|
|
JOIN m_paymenttype ON F_PaymentDetailM_PaymentTypeID = M_PaymentTypeID
|
|
LEFT JOIN nat_bank card_bank ON F_PaymentDetailCardNat_BankID = card_bank.Nat_BankID
|
|
LEFT JOIN m_bank_account ON F_PaymentDetailM_BankAccountID = M_BankAccountID
|
|
LEFT JOIN nat_bank bank ON M_BankAccountNat_BankID = bank.Nat_BankID
|
|
WHERE
|
|
F_PaymentDetailF_PaymentID = '{$v['data']}' AND F_PaymentDetailIsActive = 'Y'";
|
|
//echo $sql;
|
|
$payment_details = $this->db_onedev->query($sql)->result_array();
|
|
$datas[$k]['data'] = array('header'=>$payment_header,'details'=>$payment_details);
|
|
}
|
|
else{
|
|
$datas[$k]['data'] = json_decode($v['data']);
|
|
}
|
|
}
|
|
|
|
$result = array("header"=>$data_header,"records" => $datas);
|
|
$this->sys_ok($result);
|
|
|
|
}
|
|
|
|
function getdata_sampling(){
|
|
if (! $this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
|
|
$prm = $this->sys_input;
|
|
$xid = $prm["xid"];
|
|
|
|
$sql = "SELECT *,'{$prm['group_name']}' as group_name
|
|
FROM t_orderheader
|
|
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
|
|
WHERE
|
|
T_OrderHeaderID = {$xid}";
|
|
$data_header = $this->db_onedev->query($sql)->row_array();
|
|
$x_status = " SampleByStepM_StatusSampleCode = 'SAMPLING.Sampling.Unsampled' OR
|
|
SampleByStepM_StatusSampleCode = 'SAMPLING.Sampling.Sampled' OR
|
|
SampleByStepM_StatusSampleCode = 'SAMPLING.Sampling.Received' ";
|
|
$x_status_so = " SampleSoByStepCode = 'SAMPLING.Sampling.Unsampled' OR
|
|
SampleSoByStepCode = 'SAMPLING.Sampling.Sampled' OR
|
|
SampleSoByStepCode = 'SAMPLING.Sampling.Received' ";
|
|
if($prm['action'] == 'verif'){
|
|
$x_status = " SampleByStepM_StatusSampleCode = 'SAMPLING.Verification.Verify' ";
|
|
$x_status_so = " SampleSoByStepCode = 'SAMPLING.Verification.Verify' ";
|
|
}
|
|
|
|
if($prm['action'] == 'process'){
|
|
$x_status = " SampleByStepM_StatusSampleCode = 'SAMPLING.Handling.Process' ";
|
|
$x_status_so = " SampleSoByStepCode = 'SAMPLING.Handling.Process' ";
|
|
}
|
|
|
|
$datas = array();
|
|
$sql = "SELECT * from group_result WHERE Group_ResultID = {$prm['group_id']}";
|
|
$group_rst = $this->db_onedev->query($sql)->row_array();
|
|
if($group_rst['Group_ResultFlagNonLab'] == 'N'){
|
|
$sql = "SELECT T_OrderSampleT_OrderHeaderID as order_id,
|
|
T_OrderSampleT_SampleTypeID as sample_id,
|
|
T_SampleTypeName as sample_name,
|
|
T_OrderSampleT_SampleStationID as station_id,
|
|
T_BarcodeLabBarcode as barcode,
|
|
T_OrderSampleSampling as sampling_status,
|
|
DATE_FORMAT(T_OrderSampleSamplingDate,'%d-%m-%Y') as sampling_date,
|
|
DATE_FORMAT(T_OrderSampleSamplingTime,'%H:%i') as sampling_time,
|
|
T_OrderSampleSamplingUserID as sampling_user_id,
|
|
sampling_user.M_UserUsername as sampling_username,
|
|
T_OrderSampleReceive as reveice_status,
|
|
DATE_FORMAT(T_OrderSampleReceiveDate,'%d-%m-%Y') as receive_date,
|
|
DATE_FORMAT(T_OrderSampleReceiveTime,'%H:%i') as receive_time,
|
|
T_OrderSampleReceiveUserID as receive_user_id,
|
|
receive_user.M_UserUsername as receive_username
|
|
FROM t_barcodelab
|
|
JOIN t_sampletype ON T_BarcodeLabT_SampleTypeID = T_SampleTypeID
|
|
LEFT JOIN t_ordersample ON T_OrderSampleT_BarcodeLabID = T_BarcodeLabID
|
|
LEFT JOIN m_user sampling_user ON T_OrderSampleSamplingUserID = sampling_user.M_UserID
|
|
LEFT JOIN m_user receive_user ON T_OrderSampleSamplingUserID = receive_user.M_UserID
|
|
WHERE
|
|
T_OrderSampleT_OrderHeaderID = {$xid}";
|
|
//echo $sql;
|
|
if($prm['action'] == 'verif'){
|
|
$sql = "SELECT T_OrderSampleT_OrderHeaderID as order_id,
|
|
T_OrderSampleT_SampleTypeID as sample_id,
|
|
T_SampleTypeName as sample_name,
|
|
T_OrderSampleT_SampleStationID as station_id,
|
|
T_BarcodeLabBarcode as barcode,
|
|
T_OrderSampleSampling as sampling_status,
|
|
DATE_FORMAT(T_OrderSampleSamplingDate,'%d-%m-%Y') as sampling_date,
|
|
DATE_FORMAT(T_OrderSampleSamplingTime,'%H:%i') as sampling_time,
|
|
T_OrderSampleSamplingUserID as sampling_user_id,
|
|
sampling_user.M_UserUsername as sampling_username,
|
|
T_OrderSampleVerification as reveice_status,
|
|
DATE_FORMAT(T_OrderSampleVerificationDate,'%d-%m-%Y') as receive_date,
|
|
DATE_FORMAT(T_OrderSampleVerificationTime,'%H:%i') as receive_time,
|
|
T_OrderSampleVerificationUserID as receive_user_id,
|
|
receive_user.M_UserUsername as receive_username
|
|
FROM t_barcodelab
|
|
JOIN t_sampletype ON T_BarcodeLabT_SampleTypeID = T_SampleTypeID
|
|
LEFT JOIN t_ordersample ON T_OrderSampleT_BarcodeLabID = T_BarcodeLabID
|
|
LEFT JOIN m_user sampling_user ON T_OrderSampleSamplingUserID = sampling_user.M_UserID
|
|
LEFT JOIN m_user receive_user ON T_OrderSampleVerificationUserID = receive_user.M_UserID
|
|
WHERE
|
|
T_OrderSampleT_OrderHeaderID = {$xid}";
|
|
}
|
|
if($prm['action'] == 'process'){
|
|
$sql = "SELECT T_OrderSampleT_OrderHeaderID as order_id,
|
|
T_OrderSampleT_SampleTypeID as sample_id,
|
|
T_SampleTypeName as sample_name,
|
|
T_OrderSampleT_SampleStationID as station_id,
|
|
T_BarcodeLabBarcode as barcode,
|
|
T_OrderSampleSampling as sampling_status,
|
|
DATE_FORMAT(T_OrderSampleSamplingDate,'%d-%m-%Y') as sampling_date,
|
|
DATE_FORMAT(T_OrderSampleSamplingTime,'%H:%i') as sampling_time,
|
|
T_OrderSampleSamplingUserID as sampling_user_id,
|
|
sampling_user.M_UserUsername as sampling_username,
|
|
T_OrderSampleHandling as reveice_status,
|
|
DATE_FORMAT(T_OrderSampleHandlingDate,'%d-%m-%Y') as receive_date,
|
|
DATE_FORMAT(T_OrderSampleHandlingTime,'%H:%i') as receive_time,
|
|
T_OrderSampleHandlingUserID as receive_user_id,
|
|
receive_user.M_UserUsername as receive_username
|
|
FROM t_barcodelab
|
|
JOIN t_sampletype ON T_BarcodeLabT_SampleTypeID = T_SampleTypeID
|
|
LEFT JOIN t_ordersample ON T_OrderSampleT_BarcodeLabID = T_BarcodeLabID
|
|
LEFT JOIN m_user sampling_user ON T_OrderSampleSamplingUserID = sampling_user.M_UserID
|
|
LEFT JOIN m_user receive_user ON T_OrderSampleHandlingUserID = receive_user.M_UserID
|
|
WHERE
|
|
T_OrderSampleT_OrderHeaderID = {$xid}";
|
|
//echo $sql;
|
|
}
|
|
}
|
|
else{
|
|
$sql = "SELECT T_OrderHeaderID as order_id,
|
|
T_TestID as sample_id,
|
|
T_TestName as sample_name,
|
|
T_OrderHeaderLabNumberExt as barcode,
|
|
IF(ISNULL(T_SamplingSoProcessDate),'N','Y') as sampling_status,
|
|
DATE_FORMAT(T_SamplingSoProcessDate,'%d-%m-%Y') as sampling_date,
|
|
DATE_FORMAT(T_SamplingSoProcessTime,'%H:%i') as sampling_time,
|
|
sampling_user.M_UserUsername as sampling_username,
|
|
IF(ISNULL(T_SamplingSoDoneDate),'N','Y') as reveice_status,
|
|
DATE_FORMAT(T_SamplingSoDoneDate,'%d-%m-%Y') as receive_date,
|
|
DATE_FORMAT(T_SamplingSoDoneTime,'%H:%i') as receive_time,
|
|
T_SamplingSoDoneUserID as receive_user_id,
|
|
receive_user.M_UserUsername as receive_username
|
|
FROM t_orderheader
|
|
JOIN t_orderheaderaddon ON T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID AND T_OrderHeaderAddOnIsActive = 'Y'
|
|
JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID AND T_OrderDetailIsActive = 'Y'
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
|
|
JOIN t_sampletype ON T_TestT_SampleTypeID = T_SampleTypeID
|
|
JOIN t_bahan ON T_SampleTypeT_BahanID = T_BahanID
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND Group_ResultDetailIsActive = 'Y'
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultID = {$prm['group_id']}
|
|
LEFT JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = T_OrderHeaderID AND T_SamplingSoT_TestID = T_TestID AND
|
|
T_SamplingSoIsActive = 'Y'
|
|
LEFT JOIN m_user sampling_user ON T_SamplingSoProcessUserID = sampling_user.M_UserID
|
|
LEFT JOIN m_user receive_user ON T_SamplingSoDoneUserID = receive_user.M_UserID
|
|
WHERE
|
|
T_OrderHeaderID = {$xid} AND T_OrderHeaderIsActive = 'Y'
|
|
GROUP BY T_OrderDetailID";
|
|
//echo $sql;
|
|
if($prm['action'] == 'verif'){
|
|
$sql = "SELECT T_OrderHeaderID as order_id,
|
|
T_TestID as sample_id,
|
|
T_TestName as sample_name,
|
|
T_OrderHeaderLabNumberExt as barcode,
|
|
IF(ISNULL(T_SamplingSoProcessDate),'N','Y') as sampling_status,
|
|
DATE_FORMAT(T_SamplingSoProcessDate,'%d-%m-%Y') as sampling_date,
|
|
DATE_FORMAT(T_SamplingSoProcessTime,'%H:%i') as sampling_time,
|
|
sampling_user.M_UserUsername as sampling_username,
|
|
IF(ISNULL(T_SamplingSoVerifyDate),'N','Y') as reveice_status,
|
|
DATE_FORMAT(T_SamplingSoVerifyDate,'%d-%m-%Y') as receive_date,
|
|
DATE_FORMAT(T_SamplingSoVerifyTime,'%H:%i') as receive_time,
|
|
T_SamplingSoVerifyUserID as receive_user_id,
|
|
receive_user.M_UserUsername as receive_username
|
|
FROM t_orderheader
|
|
JOIN t_orderheaderaddon ON T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID AND T_OrderHeaderAddOnIsActive = 'Y'
|
|
JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID AND T_OrderDetailIsActive = 'Y'
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
|
|
JOIN t_sampletype ON T_TestT_SampleTypeID = T_SampleTypeID
|
|
JOIN t_bahan ON T_SampleTypeT_BahanID = T_BahanID
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND Group_ResultDetailIsActive = 'Y'
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultID = {$prm['group_id']}
|
|
LEFT JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = T_OrderHeaderID AND T_SamplingSoT_TestID = T_TestID AND
|
|
T_SamplingSoIsActive = 'Y'
|
|
LEFT JOIN m_user sampling_user ON T_SamplingSoProcessUserID = sampling_user.M_UserID
|
|
LEFT JOIN m_user receive_user ON T_SamplingSoVerifyUserID = receive_user.M_UserID
|
|
WHERE
|
|
T_OrderHeaderID = {$xid} AND T_OrderHeaderIsActive = 'Y'
|
|
GROUP BY T_OrderDetailID";
|
|
}
|
|
if($prm['action'] == 'process'){
|
|
$sql = "SELECT T_OrderHeaderID as order_id,
|
|
T_TestID as sample_id,
|
|
T_TestName as sample_name,
|
|
T_OrderHeaderLabNumberExt as barcode,
|
|
IF(ISNULL(T_SamplingSoProcessDate),'N','Y') as sampling_status,
|
|
DATE_FORMAT(T_SamplingSoProcessDate,'%d-%m-%Y') as sampling_date,
|
|
DATE_FORMAT(T_SamplingSoProcessTime,'%H:%i') as sampling_time,
|
|
sampling_user.M_UserUsername as sampling_username,
|
|
IF(ISNULL(T_SamplingSoReceiveAdmDate),'N','Y') as reveice_status,
|
|
DATE_FORMAT(T_SamplingSoReceiveAdmDate,'%d-%m-%Y') as receive_date,
|
|
DATE_FORMAT(T_SamplingSoReceiveAdmTime,'%H:%i') as receive_time,
|
|
T_SamplingSoReceiveAdmUserID as receive_user_id,
|
|
receive_user.M_UserUsername as receive_username
|
|
FROM t_orderheader
|
|
JOIN t_orderheaderaddon ON T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID AND T_OrderHeaderAddOnIsActive = 'Y'
|
|
JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID AND T_OrderDetailIsActive = 'Y'
|
|
JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y'
|
|
JOIN t_sampletype ON T_TestT_SampleTypeID = T_SampleTypeID
|
|
JOIN t_bahan ON T_SampleTypeT_BahanID = T_BahanID
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND Group_ResultDetailIsActive = 'Y'
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultID = {$prm['group_id']}
|
|
LEFT JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = T_OrderHeaderID AND T_SamplingSoT_TestID = T_TestID AND
|
|
T_SamplingSoIsActive = 'Y'
|
|
LEFT JOIN m_user sampling_user ON T_SamplingSoProcessUserID = sampling_user.M_UserID
|
|
LEFT JOIN m_user receive_user ON T_SamplingSoReceiveAdmUserID = receive_user.M_UserID
|
|
WHERE
|
|
T_OrderHeaderID = {$xid} AND T_OrderHeaderIsActive = 'Y'
|
|
GROUP BY T_OrderDetailID";
|
|
}
|
|
}
|
|
$data_resume = $this->db_onedev->query($sql)->result_array();
|
|
|
|
$arr_datas = array();
|
|
if($group_rst['Group_ResultFlagNonLab'] == 'N'){
|
|
$sql = "SELECT SampleByStepID,
|
|
T_BarcodeLabBarcode,
|
|
T_SampleTypeName,
|
|
SampleByStepDateTime,
|
|
SampleByStepM_StatusSampleCode,
|
|
M_UserUsername,
|
|
SampleByStepRequirementStatus,
|
|
GROUP_CONCAT(Nat_RequirementName separator ', ') as requirements,
|
|
1 as group_id,
|
|
'LAB' as group_name,
|
|
NULL xform, NULL xfilm
|
|
FROM (
|
|
SELECT SampleByStepID,
|
|
T_BarcodeLabBarcode,
|
|
T_SampleTypeName,
|
|
SampleByStepDateTime,
|
|
SampleByStepM_StatusSampleCode,
|
|
M_UserUsername,
|
|
SampleByStepRequirementStatus,
|
|
Nat_RequirementName
|
|
FROM sample_by_step
|
|
JOIN t_barcodelab ON SampleByStepT_BarcodeLabID = T_BarcodeLabID
|
|
JOIN t_sampletype ON T_BarcodeLabT_SampleTypeID = T_SampleTypeID
|
|
LEFT JOIN m_user ON SampleByStepUserID = M_UserID
|
|
LEFT JOIN nat_requirement ON json_contains(SampleByStepRequirements, Nat_RequirementID)
|
|
WHERE
|
|
SampleByStepT_OrderHeaderID = {$xid} AND
|
|
(
|
|
{$x_status}
|
|
|
|
)
|
|
) x
|
|
GROUP BY SampleByStepID";
|
|
//echo $sql;
|
|
}
|
|
else {
|
|
|
|
$sql = "SELECT SampleByStepID,
|
|
T_BarcodeLabBarcode,
|
|
T_SampleTypeName,
|
|
SampleByStepDateTime,
|
|
SampleByStepM_StatusSampleCode,
|
|
M_UserUsername,
|
|
SampleByStepRequirementStatus,
|
|
GROUP_CONCAT(Nat_RequirementName separator ', ') as requirements,
|
|
Group_ResultID as group_id,
|
|
Group_ResultName as group_name,
|
|
xform, xfilm
|
|
FROM (
|
|
SELECT SampleSoByStepID SampleByStepID,
|
|
T_OrderHeaderLabNumberExt T_BarcodeLabBarcode,
|
|
T_TestName T_SampleTypeName ,
|
|
SampleSoByStepDateTime SampleByStepDateTime,
|
|
SampleSoByStepCode SampleByStepM_StatusSampleCode,
|
|
M_UserUsername,
|
|
SampleSoByStepRequirementStatus SampleByStepRequirementStatus,
|
|
Nat_RequirementName,
|
|
Group_ResultID,
|
|
Group_ResultName,
|
|
CONCAT(T_SamplingSoFormKv,'^',T_SamplingSoFormMa,'^',T_SamplingSoFormSecond,'^',T_SamplingSoFormExpose) as xform,
|
|
CONCAT(T_SamplingSoFilmType,'^',T_SamplingSoFilmAmount) as xfilm
|
|
FROM sample_so_by_step
|
|
JOIN t_test ON SampleSoByStepT_TestID = T_TestID
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = SampleSoByStepT_TestID AND Group_ResultDetailIsActive = 'Y'
|
|
LEFT JOIN t_samplingso ON T_SamplingSoT_OrderHeaderID = SampleSoByStepT_OrderHeaderID AND T_SamplingSoT_TestID = SampleSoByStepT_TestID
|
|
LEFT JOIN t_samplingso_form ON T_SamplingSoFormT_SamplingSOID = T_SamplingSoID
|
|
LEFT JOIN t_samplingso_film ON T_SamplingSoFilmT_SamplingSoID = T_SamplingSoID
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultID = {$prm['group_id']}
|
|
JOIN t_orderheader ON SampleSoByStepT_OrderHeaderID = T_OrderHeaderID
|
|
LEFT JOIN m_user ON SampleSoByStepUserID = M_UserID
|
|
LEFT JOIN nat_requirement ON json_contains(SampleSoByStepReuirements, Nat_RequirementID)
|
|
WHERE
|
|
SampleSoByStepT_OrderHeaderID = {$xid} AND
|
|
(
|
|
{$x_status_so}
|
|
|
|
)
|
|
) x
|
|
GROUP BY SampleByStepID";
|
|
//echo $sql;
|
|
}
|
|
$datas = $this->db_onedev->query($sql)->result_array();
|
|
foreach($datas as $k => $v){
|
|
$found = $this->search_exist($arr_datas,$v['SampleByStepDateTime'],$v['SampleByStepM_StatusSampleCode']);
|
|
if ($found == -1) {
|
|
$xv = array(
|
|
"datetime" => $v['SampleByStepDateTime'],
|
|
"status" => $v['SampleByStepM_StatusSampleCode'],
|
|
"user" => $v["M_UserUsername"],
|
|
"group_id" => $v["group_id"],
|
|
"details" => array(
|
|
array(
|
|
"SampleByStepID" => $v["SampleByStepID"],
|
|
"T_BarcodeLabBarcode" => $v["T_BarcodeLabBarcode"],
|
|
"T_SampleTypeName" => $v["T_SampleTypeName"],
|
|
"M_UserUsername" => $v["M_UserUsername"],
|
|
"SampleByStepRequirementStatus" => $v["SampleByStepRequirementStatus"],
|
|
"requirements" => $v["requirements"],
|
|
"group_id" => $v["group_id"],
|
|
"xform" => $v["xform"],
|
|
"xfilm" => $v["xfilm"]
|
|
)
|
|
)
|
|
);
|
|
array_push($arr_datas,$xv);
|
|
}
|
|
else{
|
|
$xarr = $arr_datas[$found]['details'];
|
|
//print_r($xarr);
|
|
array_push(
|
|
$xarr,
|
|
array(
|
|
"SampleByStepID" => $v["SampleByStepID"],
|
|
"T_BarcodeLabBarcode" => $v["T_BarcodeLabBarcode"],
|
|
"T_SampleTypeName" => $v["T_SampleTypeName"],
|
|
"M_UserUsername" => $v["M_UserUsername"],
|
|
"SampleByStepRequirementStatus" => $v["SampleByStepRequirementStatus"],
|
|
"requirements" => $v["requirements"],
|
|
"group_id" => $v["group_id"],
|
|
"xform" => $v["xform"],
|
|
"xfilm" => $v["xfilm"]
|
|
)
|
|
);
|
|
$arr_datas[$found]['details'] = $xarr;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
$result = array("header"=>$data_header,"resume"=>$data_resume,"records" => $arr_datas);
|
|
$this->sys_ok($result);
|
|
|
|
}
|
|
|
|
function getdata_result(){
|
|
if (! $this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
|
|
$prm = $this->sys_input;
|
|
$xid = $prm["xid"];
|
|
|
|
$sql = "SELECT *,'{$prm['group_name']}' as group_name, '{$prm['action']}' as action
|
|
FROM t_orderheader
|
|
JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID
|
|
WHERE
|
|
T_OrderHeaderID = {$xid}";
|
|
$data_header = $this->db_onedev->query($sql)->row_array();
|
|
|
|
$datas = array();
|
|
$sql = "
|
|
SELECT
|
|
T_OrderDetailT_TestSasCode as sascode,
|
|
T_OrderDetailResult as result,
|
|
T_OrderDetailT_TestIsResult as is_result,
|
|
T_OrderDetailT_TestIsPrice as is_price,
|
|
T_OrderDetailT_TestName as test_name,
|
|
T_OrderDetailVerification as ver_status,
|
|
DATE_FORMAT(T_OrderDetailVerDate,'%d-%m-%Y %H:%i') as ver_date,
|
|
ver_user.M_UserUsername as ver_username,
|
|
T_OrderDetailValidation as val_status,
|
|
DATE_FORMAT(T_OrderDetailValDate,'%d-%m-%Y %H:%i') as val_date,
|
|
val_user.M_UserUsername as val_username,
|
|
IF(T_OrderDetailPrintCount > 0,'Y','N') as print_status,
|
|
DATE_FORMAT(T_OrderDetailPrintTime,'%d-%m-%Y %H:%i') as print_date,
|
|
print_user.M_UserUsername as print_username
|
|
FROM t_orderdetail
|
|
JOIN group_resultdetail ON Group_ResultDetailT_TestID = T_OrderDetailT_TestID AND Group_ResultDetailIsActive = 'Y'
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID AND Group_ResultID = {$prm['group_id']}
|
|
LEFT JOIN m_user ver_user ON T_OrderDetailVerUserID = ver_user.M_UserID
|
|
LEFT JOIN m_user val_user ON T_OrderDetailValUserID = val_user.M_UserID
|
|
LEFT JOIN m_user print_user ON T_OrderDetailPrintBy = print_user.M_UserID
|
|
WHERE
|
|
T_OrderDetailT_OrderHeaderID = {$xid} AND T_OrderDetailIsActive = 'Y'
|
|
";
|
|
// echo $sql;
|
|
$arr_datas = $this->db_onedev->query($sql)->result_array();
|
|
|
|
|
|
|
|
$result = array("header"=>$data_header,"records" => $arr_datas);
|
|
$this->sys_ok($result);
|
|
|
|
}
|
|
|
|
function getdata_print(){
|
|
if (! $this->isLogin) {
|
|
$this->sys_error("Invalid Token");
|
|
exit;
|
|
}
|
|
|
|
$prm = $this->sys_input;
|
|
$xid = $prm["xid"];
|
|
|
|
$arr_datas = array('group_name' => $prm['group_name'],'patient_name' => $prm['patient_name'],'no_reg' => $prm['no_reg'], 'no_reg_ext' => $prm['no_reg_ext'],'data_internal' => array(),'data_external' => array());
|
|
$sql = "SELECT
|
|
result_processtooffice.*,
|
|
Group_ResultName as group_name,
|
|
sender.M_UserUsername as sender_name,
|
|
receiver.M_UserUsername as receiver_name,
|
|
DATE_FORMAT(Result_ProcessToOfficeSendTime,'%d-%m-%Y %H:%i') as sent_time,
|
|
DATE_FORMAT(Result_ProcessToOfficeReceiveTime,'%d-%m-%Y %H:%i') as received_time,
|
|
Result_ProcessToOfficeStatus as status,
|
|
M_DeliveryTypeCode as delivery_type,
|
|
DATE_FORMAT(T_OrderPromiseDateTime,'%d-%m-%Y %H:%i') as promise_time
|
|
FROM result_processtooffice
|
|
JOIN t_orderpromise ON Result_ProcessToOfficeT_OrderPromiseID = T_OrderPromiseID
|
|
JOIN group_result ON Result_ProcessToOfficeGroup_ResultID = Group_ResultID
|
|
JOIN m_delivery ON Result_ProcessToOfficeT_OrderDeliveryM_DeliveryID = M_DeliveryID
|
|
JOIN m_deliverytype ON Result_ProcessToOfficeT_OrderDeliveryM_DeliveryTypeID = M_DeliveryTypeID
|
|
JOIN m_user sender ON Result_ProcessToOfficeSendBy = sender.M_UserID
|
|
LEFT JOIN m_user receiver ON Result_ProcessToOfficeReceivedBy = receiver.M_UserID
|
|
WHERE
|
|
Result_ProcessToOfficeIsActive = 'Y' AND Result_ProcessToOfficeT_OrderHeaderID = {$prm['xid']}
|
|
UNION
|
|
SELECT
|
|
result_processtooffice.*,
|
|
Group_ResultName as group_name,
|
|
sender.M_UserUsername as sender_name,
|
|
receiver.M_UserUsername as receiver_name,
|
|
DATE_FORMAT(Result_ProcessToOfficeSendTime,'%d-%m-%Y %H:%i') as sent_time,
|
|
DATE_FORMAT(Result_ProcessToOfficeReceiveTime,'%d-%m-%Y %H:%i') as received_time,
|
|
Result_ProcessToOfficeStatus as status,
|
|
M_DeliveryTypeCode as delivery_type,
|
|
DATE_FORMAT(T_OrderPromiseDateTime,'%d-%m-%Y %H:%i') as promise_time
|
|
FROM result_processtooffice
|
|
JOIN t_orderpromise ON Result_ProcessToOfficeT_OrderPromiseID = T_OrderPromiseID
|
|
JOIN group_resultdetail ON Result_ProcessToOfficeGroup_ResultID = Group_ResultDetailT_TestID
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID
|
|
JOIN m_delivery ON Result_ProcessToOfficeT_OrderDeliveryM_DeliveryID = M_DeliveryID
|
|
JOIN m_deliverytype ON Result_ProcessToOfficeT_OrderDeliveryM_DeliveryTypeID = M_DeliveryTypeID
|
|
JOIN m_user sender ON Result_ProcessToOfficeSendBy = sender.M_UserID
|
|
LEFT JOIN m_user receiver ON Result_ProcessToOfficeReceivedBy = receiver.M_UserID
|
|
WHERE
|
|
Result_ProcessToOfficeIsActive = 'Y' AND Result_ProcessToOfficeT_OrderHeaderID = {$prm['xid']}";
|
|
//echo $sql;
|
|
$data_rst = $this->db_onedev->query($sql)->result_array();
|
|
if($data_rst){
|
|
$arr_datas['data_internal'] = $data_rst;
|
|
}
|
|
|
|
$sql = "SELECT
|
|
T_OrderDeliveryID as id,
|
|
M_DeliveryName as delivery_name,
|
|
T_OrderDeliveryDestination as destinastion,
|
|
M_DeliveryTypeCode as delivery_type,
|
|
'Y' as xshow,
|
|
'' as details
|
|
FROM t_orderdelivery
|
|
JOIN m_delivery ON T_OrderDeliveryM_DeliveryID = M_DeliveryID
|
|
JOIN m_deliverytype ON T_OrderDeliveryM_DeliveryTypeID = M_DeliveryTypeID
|
|
WHERE
|
|
T_OrderDeliveryT_OrderHeaderID = {$prm['xid']} AND T_OrderDeliveryIsActive = 'Y'";
|
|
$data_delivery = $this->db_onedev->query($sql)->result_array();
|
|
if($data_delivery){
|
|
foreach($data_delivery as $k => $v){
|
|
if($v['delivery_type'] == 'PICKUP'){
|
|
$sql = "SELECT
|
|
M_UserUsername as sender_name,
|
|
DATE_FORMAT(Result_HandOverPatientDateTime,'%d-%m-%Y %H:%i') as sent_time,
|
|
Result_HandOverPatientReceiverName as receiver_name,
|
|
IFNULL(Result_HandOverPatientReceiverHp,'') as receiver_hp,
|
|
IFNULL(Result_HandOverPatientReceiverInfo,'') as receiver_info,
|
|
DATE_FORMAT(T_OrderPromiseDateTime,'%d-%m-%Y %H:%i') as promise_time
|
|
FROM result_handoverpatient
|
|
LEFT JOIN m_user ON Result_HandOverPatientOfficer = M_UserID
|
|
JOIN t_orderpromise ON Result_HandOverPatientT_OrderPromiseID = T_OrderPromiseID
|
|
WHERE
|
|
Result_HandOverPatientT_OrderHeaderID = {$prm['xid']} AND Result_HandOverPatientIsActive = 'Y'";
|
|
$data_details = $this->db_onedev->query($sql)->result_array();
|
|
if($data_details){
|
|
$data_delivery[$k]['details'] = $data_details;
|
|
}
|
|
}
|
|
if($v['delivery_type'] == 'EMAIL'){
|
|
$sql = "SELECT
|
|
M_UserUsername as sender_name,
|
|
DATE_FORMAT(Result_HandOverEmailSendDateTime,'%d-%m-%Y %H:%i') as sent_time,
|
|
DATE_FORMAT(Result_HandOverEmailReceivedDateTime,'%d-%m-%Y %H:%i') as received_time,
|
|
DATE_FORMAT(T_OrderPromiseDateTime,'%d-%m-%Y %H:%i') as promise_time,
|
|
Result_HandOverEmailStatus as status
|
|
FROM result_handoveremail
|
|
LEFT JOIN m_user ON Result_HandOverEmailOfficer = M_UserID
|
|
JOIN t_orderpromise ON Result_HandOverEmailT_OrderPromiseID = T_OrderPromiseID
|
|
WHERE
|
|
Result_HandOverEmailT_OrderHeaderID = {$prm['xid']} AND
|
|
Result_HandOverEmailIsActive = 'Y' AND
|
|
Result_HandOverEmailT_OrderDeliveryID = {$v['id']}";
|
|
$data_details = $this->db_onedev->query($sql)->result_array();
|
|
if($data_details){
|
|
$data_delivery[$k]['details'] = $data_details;
|
|
}
|
|
}
|
|
|
|
if($v['delivery_type'] == 'WHATSAPP'){
|
|
|
|
$sql = "
|
|
|
|
SELECT Tx_WhatsappDetailID as xid,
|
|
Group_ResultName as group_name,
|
|
Tx_WhatsappDestination as destination,
|
|
Tx_WhatsappDetailUuid as uuid,
|
|
DATE_FORMAT(Tx_WhatsappDetailSend,'%d-%m-%Y %H:%i') as send_time,
|
|
DATE_FORMAT(Tx_WhatsappDetailReceive,'%d-%m-%Y %H:%i') as received_time,
|
|
DATE_FORMAT(Tx_WhatsappDetailRead,'%d-%m-%Y %H:%i') as read_time,
|
|
Tx_WhatsappDetailIsSend as isSend,
|
|
Tx_WhatsappDetailIsReceive as isReceive,
|
|
Tx_WhatsappDetailIsRead as isRead
|
|
FROM tx_whatsappdetail
|
|
JOIN tx_whatsapp ON Tx_WhatsappDetailTx_WhatsappID = Tx_WhatsappID AND Tx_WhatsappT_OrderHeaderID = {$prm['xid']}
|
|
JOIN group_result ON Tx_WhatsappGroup_ResultID = Group_ResultID
|
|
WHERE
|
|
Tx_WhatsappIsActive = 'Y'
|
|
UNION
|
|
SELECT Tx_WhatsappDetailID as xid,
|
|
Group_ResultName as group_name,
|
|
Tx_WhatsappDestination as destination,
|
|
Tx_WhatsappDetailUuid as uuid,
|
|
DATE_FORMAT(Tx_WhatsappDetailSend,'%d-%m-%Y %H:%i') as send_time,
|
|
DATE_FORMAT(Tx_WhatsappDetailReceive,'%d-%m-%Y %H:%i') as received_time,
|
|
DATE_FORMAT(Tx_WhatsappDetailRead,'%d-%m-%Y %H:%i') as read_time,
|
|
Tx_WhatsappDetailIsSend as isSend,
|
|
Tx_WhatsappDetailIsReceive as isReceive,
|
|
Tx_WhatsappDetailIsRead as isRead
|
|
FROM tx_whatsappdetail
|
|
JOIN tx_whatsapp ON Tx_WhatsappDetailTx_WhatsappID = Tx_WhatsappID AND Tx_WhatsappT_OrderHeaderID = {$prm['xid']}
|
|
JOIN group_resultdetail ON Tx_WhatsappGroup_ResultID = Group_ResultDetailT_TestID
|
|
JOIN group_result ON Group_ResultDetailGroup_ResultID = Group_ResultID
|
|
WHERE
|
|
Tx_WhatsappIsActive = 'Y'
|
|
|
|
";
|
|
//echo $sql;
|
|
$data_details = $this->db_onedev->query($sql)->result_array();
|
|
if($data_details){
|
|
$data_delivery[$k]['details'] = $data_details;
|
|
}
|
|
}
|
|
|
|
if($v['delivery_type'] == 'ADDRESS'){
|
|
$sql = "
|
|
SELECT * FROM (
|
|
SELECT CONCAT('dibuat spk : ',Result_CourierSPKNumbering) as status,
|
|
DATE_FORMAT(Result_CourierDetailStepByStepLastUpdated,'%d.%m.%Y %H:%i') as xtime,
|
|
M_UserUsername as username,
|
|
'' as xperson,
|
|
'' as xnote,
|
|
Result_CourierSPKDetailID as xid,
|
|
Result_CourierDetailStepByStepID as stepid
|
|
FROM result_courierspk_detail_step_by_step
|
|
JOIN result_courierspk_detail ON Result_CourierDetailStepByStepResult_CourierSPKDetailID = Result_CourierSPKDetailID
|
|
JOIN result_courierspk ON Result_CourierSPKDetailResult_CourierSPKID = Result_CourierSPKID
|
|
JOIN m_user ON Result_CourierDetailStepByStepUserID = M_UserID
|
|
WHERE
|
|
Result_CourierSPKDetailT_OrderDeliveryID = {$v['id']} AND
|
|
Result_CourierDetailStepByStepStatus = 'N'
|
|
UNION
|
|
SELECT CONCAT('dikonfirmasi spv : ',Result_CourierSPKNumbering) as status,
|
|
DATE_FORMAT(Result_CourierDetailStepByStepLastUpdated,'%d.%m.%Y %H:%i') as xtime,
|
|
M_UserUsername as username,
|
|
'' as xperson,
|
|
'' as xnote,
|
|
Result_CourierSPKDetailID as xid,
|
|
Result_CourierDetailStepByStepID as stepid
|
|
FROM result_courierspk_detail_step_by_step
|
|
JOIN result_courierspk_detail ON Result_CourierDetailStepByStepResult_CourierSPKDetailID = Result_CourierSPKDetailID
|
|
JOIN result_courierspk ON Result_CourierSPKDetailResult_CourierSPKID = Result_CourierSPKID
|
|
JOIN m_user ON Result_CourierDetailStepByStepUserID = M_UserID
|
|
WHERE
|
|
Result_CourierSPKDetailT_OrderDeliveryID = {$v['id']} AND
|
|
Result_CourierDetailStepByStepStatus = 'O'
|
|
UNION
|
|
SELECT 'dikonfirmasi spv' as status,
|
|
DATE_FORMAT(Result_CourierDetailStepByStepLastUpdated,'%d.%m.%Y %H%i') as xtime,
|
|
M_UserUsername as username,
|
|
'' as xperson,
|
|
'' as xnote,
|
|
Result_CourierSPKDetailID as xid,
|
|
Result_CourierDetailStepByStepID as stepid
|
|
FROM result_courierspk_detail_step_by_step
|
|
JOIN result_courierspk_detail ON Result_CourierDetailStepByStepResult_CourierSPKDetailID = Result_CourierSPKDetailID
|
|
JOIN result_courierspk ON Result_CourierSPKDetailResult_CourierSPKID = Result_CourierSPKID
|
|
JOIN m_user ON Result_CourierDetailStepByStepUserID = M_UserID
|
|
WHERE
|
|
Result_CourierSPKDetailT_OrderDeliveryID = {$v['id']} AND
|
|
Result_CourierDetailStepByStepStatus = 'X'
|
|
UNION
|
|
SELECT CONCAT('diserahkan ke kurir : ',Result_CourierSPKNumbering) as status,
|
|
DATE_FORMAT(Result_CourierDetailStepByStepLastUpdated,'%d.%m.%Y %H:%i') as xtime,
|
|
M_UserUsername as username,
|
|
'' as xperson,
|
|
'' as xnote,
|
|
Result_CourierSPKDetailID as xid,
|
|
Result_CourierDetailStepByStepID as stepid
|
|
FROM result_courierspk_detail_step_by_step
|
|
JOIN result_courierspk_detail ON Result_CourierDetailStepByStepResult_CourierSPKDetailID = Result_CourierSPKDetailID
|
|
JOIN result_courierspk ON Result_CourierSPKDetailResult_CourierSPKID = Result_CourierSPKID
|
|
JOIN m_user ON Result_CourierDetailStepByStepUserID = M_UserID
|
|
WHERE
|
|
Result_CourierSPKDetailT_OrderDeliveryID = {$v['id']} AND
|
|
Result_CourierDetailStepByStepStatus = 'S'
|
|
UNION
|
|
SELECT CONCAT('selesai : ',Result_CourierSPKNumbering) as status,
|
|
DATE_FORMAT(Result_CourierDetailStepByStepLastUpdated,'%d.%m.%Y %H:%i') as xtime,
|
|
M_UserUsername as username,
|
|
Result_CourierComingHomeDetailsReceiver as xperson,
|
|
UPPER(M_CourierStatusReceiveName) as xnote,
|
|
Result_CourierSPKDetailID as xid,
|
|
Result_CourierDetailStepByStepID as stepid
|
|
FROM result_courierspk_detail_step_by_step
|
|
JOIN result_courierspk_detail ON Result_CourierDetailStepByStepResult_CourierSPKDetailID = Result_CourierSPKDetailID
|
|
JOIN result_courierspk ON Result_CourierSPKDetailResult_CourierSPKID = Result_CourierSPKID
|
|
JOIN result_couriercominghome_details ON Result_CourierComingHomeDetailsResult_CourierSPKDetailID = Result_CourierSPKDetailID
|
|
JOIN m_user ON Result_CourierDetailStepByStepUserID = M_UserID
|
|
JOIN m_courierstatusreceive ON Result_CourierComingHomeDetailsM_CourierStatusReceiveID = M_CourierStatusReceiveID
|
|
WHERE
|
|
Result_CourierSPKDetailT_OrderDeliveryID = {$v['id']} AND
|
|
Result_CourierDetailStepByStepStatus = 'D'
|
|
) x
|
|
GROUP BY xid,status
|
|
ORDER BY stepid ASC
|
|
|
|
";
|
|
//echo $sql;
|
|
$data_details = $this->db_onedev->query($sql)->result_array();
|
|
if($data_details){
|
|
$data_delivery[$k]['details'] = $data_details;
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
$arr_datas['data_external'] = $data_delivery;
|
|
|
|
|
|
$result = $arr_datas;
|
|
$this->sys_ok($result);
|
|
|
|
}
|
|
|
|
function search_exist($datas,$xtime,$status){
|
|
$rtn = -1;
|
|
foreach($datas as $k => $v){
|
|
if($v['datetime'] == $xtime && $v['status'] == $status){
|
|
$rtn = $k;
|
|
}
|
|
}
|
|
return $rtn;
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|