db_onedev = $this->load->database("onedev", true); } public function search() { $prm = $this->sys_input; if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $number_limit = 10; $number_offset = ($prm['current_page'] - 1) * $number_limit ; $sql_where = ""; if($prm['search'] != '') $sql_where .= " AND ( M_PatientName LIKE CONCAT('%','{$prm['search']}','%') OR T_OrderHeaderLabNumber LIKE CONCAT('%','{$prm['search']}','%') )"; $sql = " SELECT count(*) as total FROM ( SELECT T_OrderHeaderID as orderid, T_OrderHeaderLabNumber as labnumber, CONCAT(IFNULL(M_TitleName,''),' ',M_PatientName) as patient_fullname, DATE_FORMAT(T_OrderHeaderDate,'%d-%m-%Y') as date_order, '' as tests, '' as sampletypes FROM t_orderheader JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID LEFT JOIN m_title ON M_PatientM_TitleID = M_TitleID WHERE T_OrderHeaderIsActive = 'Y' AND T_OrderHeaderM_MouID = '{$prm['mouid']}' $sql_where ) xs "; //echo $sql; $query = $this->db_onedev->query($sql); //echo $this->db->last_query(); $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 T_OrderHeaderID as orderid, T_OrderHeaderM_MouID as mouid, T_OrderHeaderLabNumber as labnumber, CONCAT(IFNULL(M_TitleName,''),' ',M_PatientName) as patient_fullname, DATE_FORMAT(T_OrderHeaderDate,'%d-%m-%Y') as date_order, '' as tests, '' as sampletypes, 0 as xtotal, 0 as xrest FROM t_orderheader JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID LEFT JOIN m_title ON M_PatientM_TitleID = M_TitleID WHERE T_OrderHeaderIsActive = 'Y' AND T_OrderHeaderM_MouID = '{$prm['mouid']}' $sql_where ORDER BY T_OrderHeaderLabNumber ASC limit $number_limit offset $number_offset"; $query = $this->db_onedev->query($sql); //echo $this->db_onedev->last_query(); $rows = $query->result_array(); if($rows){ foreach($rows as $k => $v){ $sql = "SELECT T_OrderDetailT_TestName as name FROM t_orderdetail WHERE T_OrderDetailT_OrderHeaderID = {$v['orderid']} AND T_OrderDetailIsActive = 'Y'"; //echo $sql; $rows[$k]['tests'] = $this->db_onedev->query($sql)->result(); $sql = "SELECT {$v['orderid']} as orderid, Mcu_AgreementCustomerMcu_AgreementID as agreement_id, Mcu_AgreementCustomerM_CompanyID as company_id, Mcu_AgreementCustomerM_MouID as mouid, T_TestT_SampleTypeID as sampletype_id, T_SampleTypeName as name, T_BarcodeLabBarcode as barcode, T_OrderDetailID as orderdetailid, IFNULL(Mcu_ScreeningID,0) as trx_id, IF(ISNULL(Mcu_ScreeningID), 'N', 'Y') as status, IF(ISNULL(Mcu_ScreeningID), 'N', Mcu_ScreeningIsExport) as flag_ex FROM t_orderdetail JOIN t_test ON T_OrderDetailT_TestID = T_TestID JOIN t_barcodelab ON T_BarcodeLabT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND T_BarcodeLabT_SampleTypeID = T_TestT_SampleTypeID AND T_BarcodeLabIsActive = 'Y' JOIN t_sampletype ON T_TestT_SampleTypeID = T_SampleTypeID JOIN mcu_agreement_customer ON Mcu_AgreementCustomerM_MouID = {$v['mouid']} AND Mcu_AgreementCustomerIsActive = 'Y' LEFT JOIN mcu_screening ON Mcu_ScreeningT_SampleTypeID = T_SampleTypeID AND Mcu_ScreeningIsActive = 'Y' AND T_OrderDetailT_OrderHeaderID = Mcu_ScreeningT_OrderHeaderID AND Mcu_ScreeningBarcode = T_BarcodeLabBarcode WHERE T_OrderDetailT_OrderHeaderID = {$v['orderid']} AND T_OrderDetailIsActive = 'Y' GROUP BY T_BarcodeLabID ORDER BY T_SampleTypeName ASC"; //echo $sql; $rows[$k]['sampletypes'] = $this->db_onedev->query($sql)->result(); $sql = "SELECT count( distinct T_BarcodeLabID) as total FROM t_orderdetail JOIN t_test ON T_OrderDetailT_TestID = T_TestID JOIN t_barcodelab ON T_BarcodeLabT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND T_BarcodeLabT_SampleTypeID = T_TestT_SampleTypeID AND T_BarcodeLabIsActive = 'Y' JOIN t_sampletype ON T_TestT_SampleTypeID = T_SampleTypeID JOIN mcu_agreement_customer ON Mcu_AgreementCustomerM_MouID = {$v['mouid']} AND Mcu_AgreementCustomerIsActive = 'Y' WHERE T_OrderDetailIsActive = 'Y'"; //echo $sql; $rows[$k]['xtotal'] = $this->db_onedev->query($sql)->row()->total; $sql = "SELECT count( distinct T_BarcodeLabID) as total FROM t_orderdetail JOIN t_test ON T_OrderDetailT_TestID = T_TestID JOIN t_barcodelab ON T_BarcodeLabT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND T_BarcodeLabT_SampleTypeID = T_TestT_SampleTypeID AND T_BarcodeLabIsActive = 'Y' JOIN t_sampletype ON T_TestT_SampleTypeID = T_SampleTypeID JOIN mcu_agreement_customer ON Mcu_AgreementCustomerM_MouID = {$v['mouid']} AND Mcu_AgreementCustomerIsActive = 'Y' JOIN mcu_screening ON Mcu_ScreeningT_SampleTypeID = T_SampleTypeID AND Mcu_ScreeningIsActive = 'Y' AND T_OrderDetailT_OrderHeaderID = Mcu_ScreeningT_OrderHeaderID AND Mcu_ScreeningBarcode = T_BarcodeLabBarcode WHERE T_OrderDetailIsActive = 'Y'"; //echo $sql; $rows[$k]['xrest'] = $rows[$k]['xtotal'] - $this->db_onedev->query($sql)->row()->total ; } } //$tot_count = 25; //$this->_add_address($rows); $result = array("total" => $tot_page, "records" => $rows, "sql"=> $this->db_onedev->last_query()); $this->sys_ok($result); exit; } function getinitialdatas(){ if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $rows = []; $query =" SELECT M_MouID as id, Mcu_AgreementID, Mcu_AgreementNumbering, M_CompanyName, M_MouID, M_MouName, M_MouStartDate, M_MouEndDate, CONCAT(M_CompanyName,' ( ',DATE_FORMAT(M_MouStartDate,'%d-%m-%Y'),' s.d. ',DATE_FORMAT(M_MouEndDate,'%d-%m-%Y'),' ) ') as name FROM mcu_agreement JOIN mcu_agreement_customer ON Mcu_AgreementCustomerMcu_AgreementID = Mcu_AgreementID JOIN m_company ON Mcu_AgreementCustomerM_CompanyID = M_CompanyID JOIN m_mou ON Mcu_AgreementCustomerM_MouID = M_MouID WHERE ( DATE(NOW()) BETWEEN CONCAT(M_MouStartDate,' 00:00:00') AND CONCAT(M_MouEndDate,' 23:59:59') ) AND Mcu_AgreementFlagAgree = 'Y' AND Mcu_AgreementIsActive = 'Y' "; //echo $query; $rows['mous'] = $this->db_onedev->query($query)->result_array(); $result = array( "total" => count($rows) , "records" => $rows, ); $this->sys_ok($result); exit; } function dosampled(){ if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $userid = $this->sys_user["M_UserID"]; if($prm['trx_id'] == '0' || $prm['trx_id'] == 0){ $sql = "INSERT INTO mcu_screening ( Mcu_ScreeningMcu_AgreementID, Mcu_ScreeningT_OrderHeaderID, Mcu_ScreeningT_SampleTypeID, Mcu_ScreeningBarcode, Mcu_ScreeningUserID, Mcu_ScreeningCreated ) VALUES( {$prm['agreement_id']}, {$prm['orderid']}, {$prm['sampletype_id']}, '{$prm['barcode']}', {$userid}, NOW() )"; //echo $sql; $this->db_onedev->query($sql); $msg = "Spesimen ".$prm['name']." [".$prm['barcode']."] berhasil masuk screening"; } else{ $sql =" UPDATE mcu_screening SET Mcu_ScreeningIsActive = 'N' , Mcu_ScreeningUserID = {$userid} WHERE Mcu_ScreeningID = {$prm['trx_id']}"; //echo $sql; $this->db_onedev->query($sql); $msg = "Spesimen ".$prm['name']." [".$prm['barcode']."] berhasil dibatalkan"; } $result = array( "total" => 1, "records" => $msg ); $this->sys_ok($result); exit; } function scanbarcode(){ if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $userid = $this->sys_user["M_UserID"]; $sql = "SELECT T_OrderDetailT_OrderHeaderID as orderid, Mcu_AgreementCustomerMcu_AgreementID as agreement_id, Mcu_AgreementCustomerM_CompanyID as company_id, Mcu_AgreementCustomerM_MouID as mouid, T_TestT_SampleTypeID as sampletype_id, T_SampleTypeName as name, T_BarcodeLabBarcode as barcode, T_OrderDetailID as orderdetailid, IFNULL(Mcu_ScreeningID,0) as trx_id, IF(ISNULL(Mcu_ScreeningID), 'N', 'Y') as status FROM t_orderdetail JOIN t_orderheader ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID JOIN t_test ON T_OrderDetailT_TestID = T_TestID JOIN t_barcodelab ON T_BarcodeLabT_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND T_BarcodeLabT_SampleTypeID = T_TestT_SampleTypeID AND T_BarcodeLabIsActive = 'Y' JOIN t_sampletype ON T_TestT_SampleTypeID = T_SampleTypeID JOIN mcu_agreement_customer ON Mcu_AgreementCustomerM_MouID = T_OrderHeaderM_MouID AND Mcu_AgreementCustomerIsActive = 'Y' LEFT JOIN mcu_screening ON Mcu_ScreeningT_SampleTypeID = T_SampleTypeID AND Mcu_ScreeningIsActive = 'Y' WHERE T_BarcodeLabBarcode = '{$prm['barcode']}' AND T_OrderDetailIsActive = 'Y' GROUP BY T_BarcodeLabID LIMIT 1"; //echo $sql; $row = $this->db_onedev->query($sql)->row_array(); $msg = ""; if($row){ if($row['trx_id'] == '0' || $row['trx_id'] == 0){ $sql = "INSERT INTO mcu_screening ( Mcu_ScreeningMcu_AgreementID, Mcu_ScreeningT_OrderHeaderID, Mcu_ScreeningT_SampleTypeID, Mcu_ScreeningBarcode, Mcu_ScreeningUserID, Mcu_ScreeningCreated ) VALUES( {$row['agreement_id']}, {$row['orderid']}, {$row['sampletype_id']}, '{$row['barcode']}', {$userid}, NOW() )"; //echo $sql; $this->db_onedev->query($sql); $msg = "Spesimen ".$row['name']." [".$row['barcode']."] berhasil masuk screening"; } else{ $msg = "Spesimen ".$row['name']." [".$row['barcode']."] sudah di screening"; } }else{ $msg = "Spesimen dengan barcode ".$prm['name']." [".$prm['barcode']."] tidak ditemukan"; } $result = array( "total" => 1, "records" => $msg ); $this->sys_ok($result); exit; } }