db_onedev = $this->load->database("onedev", true); } function search() { $prm = $this->sys_input; if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $search = $prm["search"]; $corporateid = isset($prm["corporateid"]) ? $prm["corporateid"] : 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_OrderHeaderLabNumber like '%{$search}%' OR M_PatientName like '%{$search}%' ) "; } $filter_company = ""; if ($corporateid != 0) { $filter_company = " AND T_OrderHeaderCorporateID = {$corporateid}"; } $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, T_OrderHeaderOldLabNumber as no_reg_old, CONCAT(M_TitleName,' ',M_PatientName) as patient_name, CorporateName as corporate_name, Mgm_McuLabel, '' as details_order, '' as details_sampling, '' as details_verifications, '' as details_process, '' as details_result_verification, '' as details_result_validation, '' as details_print FROM t_orderheader JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID JOIN corporate ON T_OrderHeaderCorporateID = CorporateID $filter_company JOIN mgm_mcu ON Mgm_McuCorporateID = CorporateID 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 UNION SELECT '' as xno, T_OrderHeaderID as xid, DATE_FORMAT(T_OrderHeaderDate,'%d-%m-%Y') as order_date, T_OrderHeaderLabNumber as no_reg, T_OrderHeaderOldLabNumber as no_reg_old, CONCAT(M_TitleName,' ',M_PatientName) as patient_name, CorporateName as corporate_name, Mgm_McuLabel, '' as details_order, '' as details_sampling, '' as details_verifications, '' as details_process, '' as details_result_verification, '' as details_result_validation, '' as details_print FROM t_orderheader JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID JOIN corporate ON T_OrderHeaderCorporateID = CorporateID $filter_company JOIN mgm_mcu ON Mgm_McuCorporateID = CorporateID 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; // exit; $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, T_OrderHeaderOldLabNumber as no_reg_old, CONCAT(M_TitleName,' ',M_PatientName) as patient_name, CorporateName as corporate_name, Mgm_McuLabel, '' as details_order, '' as details_sampling, '' as details_verifications, '' as details_process, '' as details_result_verification, '' as details_result_validation, '' as details_print FROM t_orderheader JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID JOIN corporate ON T_OrderHeaderCorporateID = CorporateID $filter_company JOIN mgm_mcu ON Mgm_McuCorporateID = CorporateID 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 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, T_OrderHeaderOldLabNumber as no_reg_old, CONCAT(M_TitleName,' ',M_PatientName) as patient_name, CorporateName as corporate_name, Mgm_McuLabel, '' as details_order, '' as details_sampling, '' as details_verifications, '' as details_process, '' as details_result_verification, '' as details_result_validation, '' as details_print FROM t_orderheader JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID JOIN corporate ON T_OrderHeaderCorporateID = CorporateID $filter_company JOIN mgm_mcu ON Mgm_McuCorporateID = CorporateID 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; // exit; $query = $this->db_onedev->query($sql); if ($query) { $rows = $query->result_array(); } else { $this->sys_error_db("select order error", $this->db_onedev); exit; } 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'] = 'Y'; // $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; // } // $details_sampling[$i]['status'] = $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) == 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']} 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 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']} GROUP BY T_OrderSampleID ) x_done"; $count_done = $this->db_onedev->query($sql); } 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 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 searchcorporate() { 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 corporate WHERE CorporateName like ? AND CorporateIsActive = '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("corporate count", $this->db_onedev); exit; } $rows = array('id' => 0, 'name' => 'Semua'); $sql = " SELECT CorporateID as id, CorporateName as name FROM corporate WHERE CorporateName like ? AND CorporateIsActive = 'Y' ORDER BY CorporateName 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("corporate 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 JOIN corporate ON T_OrderHeaderCorporateID = CorporateID JOIN mgm_mcu ON Mgm_McuCorporateID = CorporateID 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, orderLogType as type, JSON_OBJECT( 'details_before',orderLogJSONBefore, 'details_after',orderLogJSONAfter ) as data, M_UserFullName as username FROM order_log JOIN m_user ON OrderLogUserID = M_UserID WHERE OrderLogT_OrderHeaderID = {$xid} UNION SELECT DATE_FORMAT(F_PaymentCreated,'%d.%m.%Y %H:%i') as xdatetime, 'payment' as type, F_PaymentID as data, M_UserFullName as username FROM f_payment JOIN m_user ON F_PaymentM_UserID = M_UserID WHERE F_PaymentT_OrderHeaderID = {$xid} ) x ORDER BY xdatetime ASC"; //echo $sql; $datas = $this->db_onedev->query($sql); if ($datas) { $datas = $datas->result_array(); } else { $this->sys_error_db("dats erros", $this->db_onedev); exit; } foreach ($datas as $k => $v) { if ($v['type'] == 'REGISTER') { $datas[$k]['data'] = json_decode($v['data']); $datas[$k]['data']->details_before = json_decode($datas[$k]['data']->details_before); $datas[$k]['data']->details_after = json_decode($datas[$k]['data']->details_after);; // foreach ($datas[$k]['data']->details_after as $kdev => $vdev) { // $sql = "SELECT * FROM corporate WHERE CorporateID = {$vdev->T_OrderHeaderCorporateID}"; // //echo $sql; // $datas[$k]['data']->details_after[$kdev]->corporate_name = $this->db_onedev->query($sql)->row()->CorporateName; // } } 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' "; $datas = array(); $sql = "SELECT * from group_result WHERE Group_ResultID = {$prm['group_id']}"; $group_rst = $this->db_onedev->query($sql)->row_array(); // print_r($group_rst); // exit; 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_UserFullName 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_UserFullName 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; } else { $sql = "SELECT T_OrderHeaderID as order_id, T_TestID as sample_id, T_TestName as sample_name, 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_UserFullName 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_UserFullName as receive_username FROM t_orderheader 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; } $data_resume = $this->db_onedev->query($sql); if ($data_resume) { $data_resume = $data_resume->result_array(); } else { $this->sys_error_db("data sampling error", $this->db_onedev); exit; } $arr_datas = array(); if ($group_rst['Group_ResultFlagNonLab'] == 'N') { $sql = "SELECT SampleByStepID, T_BarcodeLabBarcode, T_SampleTypeName, SampleByStepDateTime, SampleByStepM_StatusSampleCode, M_UserFullName, 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_UserFullName, SampleByStepRequirementStatus, '' as 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 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_UserFullName, 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_OrderHeaderLabNumber T_BarcodeLabBarcode, T_TestName T_SampleTypeName , SampleSoByStepDateTime SampleByStepDateTime, SampleSoByStepCode SampleByStepM_StatusSampleCode, M_UserFullName, SampleSoByStepRequirementStatus SampleByStepRequirementStatus, '' as Nat_RequirementName, Group_ResultID, Group_ResultName, '' as xform, '' 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 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 WHERE SampleSoByStepT_OrderHeaderID = {$xid} AND ( {$x_status_so} ) ) x GROUP BY SampleByStepID"; // echo $sql; } $datas = $this->db_onedev->query($sql); if ($datas) { $datas = $datas->result_array(); } else { $this->sys_error_db("select sample error", $this->db_onedev); exit; } 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_UserFullName"], "group_id" => $v["group_id"], "details" => array( array( "SampleByStepID" => $v["SampleByStepID"], "T_BarcodeLabBarcode" => $v["T_BarcodeLabBarcode"], "T_SampleTypeName" => $v["T_SampleTypeName"], "M_UserFullName" => $v["M_UserFullName"], "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_UserFullName" => $v["M_UserFullName"], "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_grup = "SELECT * from group_result WHERE Group_ResultID = {$prm['group_id']}"; $group_rst = $this->db_onedev->query($sql_grup)->row_array(); if ($group_rst['Group_ResultFlagNonLab'] == 'N') { $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_OrderDetailValidation as val_status, DATE_FORMAT(api_ResultAuthorizationDate,'%d-%m-%Y %H:%i:%s') as val_date, api_ResultAuthorizationUser as val_username, 'lab' as val_action 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 api_result ON api_ResultT_OrderDetailID = T_OrderDetailID AND api_ResultIsActive = 'Y' WHERE T_OrderDetailT_OrderHeaderID = {$xid} AND T_OrderDetailIsActive = 'Y' "; } else { $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_OrderDetailValidation as val_status, DATE_FORMAT(So_REActionLogDate,'%d-%m-%Y %H:%i:%s') as val_date, val_user.M_UserFullName as val_username, So_REActionLogAction as val_action 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']} JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y' JOIN so_reactionlog ON So_REActionLogSo_ResultEntryID = So_ResultEntryID AND So_REActionLogAction = 'VALIDATION' LEFT JOIN m_user val_user ON So_REActionLogUserID = val_user.M_UserID WHERE T_OrderDetailT_OrderHeaderID = {$xid} AND T_OrderDetailIsActive = 'Y' UNION 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_OrderDetailValidation as val_status, DATE_FORMAT(So_REActionLogDate,'%d-%m-%Y %H:%i:%s') as val_date, val_user.M_UserFullName as val_username, So_REActionLogAction as val_action 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']} JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y' JOIN so_reactionlog ON So_REActionLogSo_ResultEntryID = So_ResultEntryID AND So_REActionLogAction = 'UNVALIDATION' LEFT JOIN m_user val_user ON So_REActionLogUserID = val_user.M_UserID WHERE T_OrderDetailT_OrderHeaderID = {$xid} AND T_OrderDetailIsActive = 'Y' UNION 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_OrderDetailValidation as val_status, DATE_FORMAT(So_REActionLogDate,'%d-%m-%Y %H:%i:%s') as val_date, val_user.M_UserFullName as val_username, So_REActionLogAction as val_action 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']} JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y' JOIN so_reactionlog ON So_REActionLogSo_ResultEntryID = So_ResultEntryID AND So_REActionLogAction = 'UPDATE_ACT' LEFT JOIN m_user val_user ON So_REActionLogUserID = val_user.M_UserID WHERE T_OrderDetailT_OrderHeaderID = {$xid} AND T_OrderDetailIsActive = 'Y' UNION 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_OrderDetailValidation as val_status, DATE_FORMAT(So_REActionLogDate,'%d-%m-%Y %H:%i:%s') as val_date, val_user.M_UserFullName as val_username, So_REActionLogAction as val_action 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']} JOIN so_resultentry ON So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y' JOIN so_reactionlog ON So_REActionLogSo_ResultEntryID = So_ResultEntryID AND So_REActionLogAction = 'CX_DOCTOR' LEFT JOIN m_user val_user ON So_REActionLogUserID = val_user.M_UserID WHERE T_OrderDetailT_OrderHeaderID = {$xid} AND T_OrderDetailIsActive = 'Y' "; } $arr_datas = $this->db_onedev->query($sql); if ($arr_datas) { $arr_datas = $arr_datas->result_array(); } else { $this->sys_error_db("select result valid error", $this->db_onedev); exit; } $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); if ($data_rst) { $data_rst = $data_rst->result_array(); } else { $this->sys_error_db('result process office', $this->db_onedev); exit; } 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); if ($data_delivery) { $data_delivery = $data_delivery->result_array(); } else { $this->sys_error_db("select oder", $this->db_onedev); exit; } 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; } }