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; } }