db_onedev = $this->load->database("onedev", true); } public function search() { $prm = $this->sys_input; if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $date = $prm["nama"]; //echo $companyid; $sql_where = "WHERE T_OrderHeaderIsActive = 'Y' AND date(T_OrderHeaderDate) = '{$date}'"; //if ($sql_where != "") $sql_where .= " and "; // Order masih dalam status registrasi //$sql_where .= " M_PatientIsActive = 'Y' "; /* $sql = " SELECT count(*) as total FROM t_orderheader JOIN t_orderdetail ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND T_OrderDetailIsActive = 'Y' JOIN t_test ON T_OrderDetailT_TestID = T_TestID JOIN nat_test ON T_TestNat_TestID = Nat_TestID JOIN t_worklistdetailv2 ON Nat_TestID = T_WorklistDetailNat_TestID JOIN t_worklist ON T_WorklistDetailT_WorklistID = T_WorklistID AND T_WorklistIsRujukan = 'Y' LEFT JOIN t_worklist_ref_confirmdetail ON T_OrderHeaderID = T_WorklistRefConfirmDetailT_OrderHeaderID AND T_TestID = T_WorklistRefConfirmDetailT_TestID $sql_where"; //echo $sql; $query = $this->db_onedev->query($sql); $tot_count = 0; if ($query) { $tot_count = $query->result_array()[0]["total"]; } else { $this->sys_error_db("t_worklist count", $this->db_onedev); exit; } */ $sql = "SELECT T_TestID,T_WorklistID,T_TestName, T_WorklistName, GROUP_CONCAT(DISTINCT nosample SEPARATOR ', ') as nosample,labs FROM ( SELECT T_OrderHeaderID,isreceive,T_OrderDetailID,T_WorklistID,T_TestID,T_TestName, T_WorklistName,GROUP_CONCAT(DISTINCT nosample SEPARATOR ', ') as nosample,labs FROM ( SELECT IFNULL(T_OrderHeaderID,0) as T_OrderHeaderID, T_WorklistID, T_WorklistName, T_WorklistDetailNat_TestID, T_TestID, T_TestName, T_TestCode, T_OrderDetailID, fn_confirmworklist_receive(T_OrderHeaderID, T_TestID) as isreceive, 'xxx' as labs, LEFT(T_BarcodeLabBarcode,12) as nosample FROM t_orderheader JOIN t_orderdetail ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND T_OrderDetailIsActive = 'Y' JOIN t_test ON T_OrderDetailT_TestID = T_TestID JOIN nat_test ON T_TestNat_TestID = Nat_TestID LEFT JOIN t_worklistdetailv2 ON Nat_TestID = T_WorklistDetailNat_TestID AND T_WorklistDetailIsActive = 'Y' JOIN t_worklist ON T_WorklistDetailT_WorklistID = T_WorklistID AND T_WorklistIsRujukan = 'Y' AND T_WorklistIsActive = 'Y' LEFT JOIN t_worklist_ref_confirmdetail ON T_OrderHeaderID = T_WorklistRefConfirmDetailT_OrderHeaderID AND T_OrderDetailID = T_WorklistRefConfirmDetailT_OrderDetailID AND T_TestID = T_WorklistRefConfirmDetailT_TestID AND T_WorklistRefConfirmDetailIsActive = 'Y' AND T_WorklistRefConfirmDetailPatientName IS NOT NULL join t_barcodelab ON T_OrderHeaderID = T_BarcodeLabT_OrderHeaderID AND T_BarcodeLabT_SampleTypeID = IF(fn_sampletype_from_local(Nat_TestID ) <> 0 ,fn_sampletype_from_local(Nat_TestID),fn_worklist_get_sampletype(T_TestID)) WHERE T_OrderHeaderIsActive = 'Y' AND date(T_OrderHeaderDate) = '{$date}' AND T_WorklistRefConfirmDetailID IS NULL UNION SELECT IFNULL(T_OrderHeaderID,0) as T_OrderHeaderID, T_WorklistID, T_WorklistName, T_WorklistDetailNat_TestID, T_TestID, T_TestName, T_TestCode, T_OrderDetailID, 'Y' as isreceive, 'xxx' as labs, LEFT(T_WorklistRefConfirmDetailT_BarcodeLabBarcode,12) as nosample FROM t_orderheader JOIN t_orderdetail ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND T_OrderDetailIsActive = 'Y' JOIN t_test ON T_OrderDetailT_TestID = T_TestID JOIN nat_test ON T_TestNat_TestID = Nat_TestID LEFT JOIN t_worklistdetailv2 ON Nat_TestID = T_WorklistDetailNat_TestID AND T_WorklistDetailIsActive = 'Y' JOIN t_worklist ON T_WorklistDetailT_WorklistID = T_WorklistID AND T_WorklistIsRujukan = 'Y' AND T_WorklistIsActive = 'Y' LEFT JOIN t_worklist_ref_confirmdetail ON T_OrderHeaderID = T_WorklistRefConfirmDetailT_OrderHeaderID AND T_OrderDetailID = T_WorklistRefConfirmDetailT_OrderDetailID AND T_TestID = T_WorklistRefConfirmDetailT_TestID AND T_WorklistRefConfirmDetailIsActive = 'Y' AND T_WorklistRefConfirmDetailPatientName IS NOT NULL WHERE T_OrderHeaderIsActive = 'Y' AND date(T_OrderHeaderDate) = '{$date}' AND T_WorklistRefConfirmDetailIsDeliveryOrder = 'X' ) a WHERE T_OrderHeaderID > 0 AND isreceive = 'Y' GROUP BY T_OrderDetailID,T_WorklistID) b GROUP BY T_TestID, T_WorklistID ORDER BY T_WorklistID ASC "; //echo $sql; $query = $this->db_onedev->query($sql, $sql_param); $rows = $query->result_array(); if($rows){ foreach($rows as $k => $v){ $rows[$k]['labs'] = $this->add_labs($v['T_TestID'],$v['T_WorklistID'],$date); } } //$this->_add_address($rows); $result = array("total" => 1, "records" => $rows, "sql"=> $this->db_onedev->last_query()); $this->sys_ok($result); exit; } public function search_px_v3() { $prm = $this->sys_input; $max_rst = 50; $wkl = $prm["worklist_id"]; $sdate = date('Y-m-d', strtotime($prm['sdate'])); $edate = date('Y-m-d', strtotime($prm['edate'])); $sql ="call sp_process_worklist_requirement_v5(?,?)"; $query = $this->db_onedev->query($sql,array($wkl, $sdate)); if ($query) { $rows = $query->result_array(); $result = array(); $prev_test_id = ""; $last_idx = 0; foreach($rows as $r) { $test_id = $r["T_MappingRackID"]; if ($prev_test_id != $test_id ) { $result[] = array( "T_MappingRackID" => $test_id, "T_MappingRackID" => $test_id, "T_MappingRackType" => $r["T_MappingRackType"], "T_MappingRackNo" => $r["T_MappingRackNo"], "T_WorklistID" => $wkl, "patients" => array() ); $last_idx = sizeof($result) - 1; } if ($r["T_MappingRackDetailName"] != "" ) { $lab_number = $r["T_MappingRackDetailName"]; $worklistInfo = json_decode($r["WorklistInfo"],true); $result[$last_idx]["patients"][] = array( "number" => $lab_number ); } $prev_test_id = $test_id; } $tot_count = sizeof($result); $result = array("total" => $tot_count, "records" => $result, "total_display" => $tot_count, "q" => $this->db_onedev->last_query()); $this->sys_ok($result); } else { $this->sys_error_db("worklist err", $this->db_onedev); exit; } } function add_labs($testid,$worklistid,$date){ $query ="SELECT T_OrderHeaderID, ischoose, labnumber, T_OrderDetailID, T_BarcodeLabBarcode, T_TestID, T_OrderDetailResult, M_StatusDetailName, T_OrderPromiseDateTime, nosample, reconfirm, T_WorklistRefConfirmDetailID, T_WorklistRefConfirmDetailPatientName, T_WorklistRefConfirmDetailT_WorklistID, isreceive FROM (SELECT IFNULL(T_OrderHeaderID,0) as T_OrderHeaderID, 'N' as ischoose, CONCAT( LEFT(T_BarcodeLabBarcode,12),' | ', JSON_UNQUOTE(JSON_EXTRACT(fn_get_patient_atribute(T_OrderHeaderM_PatientID), '$.patient_fullname'))) as labnumber, T_OrderDetailID, T_BarcodeLabBarcode, T_TestID, T_OrderDetailResult, M_StatusDetailName, IFNULL(T_OrderPromiseDateTime,IF(T_TestIsResult = 'N','-','')) as T_OrderPromiseDateTime, LEFT(T_BarcodeLabBarcode,12) as nosample, 'N' as reconfirm, 0 as T_WorklistRefConfirmDetailID, JSON_UNQUOTE(JSON_EXTRACT(fn_get_patient_atribute(T_OrderHeaderM_PatientID), '$.patient_fullname')) as T_WorklistRefConfirmDetailPatientName, $worklistid as T_WorklistRefConfirmDetailT_WorklistID, fn_confirmworklist_receive(T_OrderHeaderID, T_TestID) as isreceive FROM t_orderheader JOIN t_orderdetail ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND T_OrderDetailIsActive = 'Y' JOIN m_statusdetail ON T_OrderDetailM_StatusDetailID = M_StatusDetailID LEFT JOIN t_orderpromise ON T_OrderDetailT_OrderPromiseID = T_OrderPromiseID AND T_OrderPromiseIsActive = 'Y' JOIN t_test ON T_OrderDetailT_TestID = T_TestID JOIN nat_test ON T_TestNat_TestID = Nat_TestID LEFT JOIN t_worklistdetailv2 ON Nat_TestID = T_WorklistDetailNat_TestID AND T_WorklistDetailIsActive = 'Y' JOIN t_worklist ON T_WorklistDetailT_WorklistID = T_WorklistID AND T_WorklistIsRujukan = 'Y' AND T_WorklistIsActive = 'Y' LEFT JOIN t_worklist_ref_confirmdetail ON T_OrderHeaderID = T_WorklistRefConfirmDetailT_OrderHeaderID AND T_OrderDetailID = T_WorklistRefConfirmDetailT_OrderDetailID AND T_TestID = T_WorklistRefConfirmDetailT_TestID AND T_WorklistRefConfirmDetailIsActive = 'Y' AND T_WorklistRefConfirmDetailPatientName IS NOT NULL join t_barcodelab ON T_OrderHeaderID = T_BarcodeLabT_OrderHeaderID AND T_BarcodeLabT_SampleTypeID = IF(fn_sampletype_from_local(Nat_TestID ) <> 0 ,fn_sampletype_from_local(Nat_TestID),fn_worklist_get_sampletype(T_TestID)) WHERE T_TestID = '{$testid}' AND T_WorklistID = '{$worklistid}' AND T_OrderHeaderIsActive = 'Y' AND date(T_OrderHeaderDate) = '{$date}' AND T_WorklistRefConfirmDetailID IS NULL UNION SELECT T_WorklistRefConfirmDetailT_OrderHeaderID as T_OrderHeaderID, 'N' as ischoose, CONCAT( LEFT(T_WorklistRefConfirmDetailT_BarcodeLabBarcode,12),' | ', T_WorklistRefConfirmDetailPatientName) as labnumber, T_WorklistRefConfirmDetailT_OrderDetailID as T_OrderDetailID, T_WorklistRefConfirmDetailT_BarcodeLabBarcode as T_BarcodeLabBarcode, T_WorklistRefConfirmDetailT_TestID as T_TestID, T_WorklistRefConfirmDetailResult as T_OrderDetailResult, T_WorklistRefConfirmDetailStatus as M_StatusDetailName, T_WorklistRefConfirmDetailPromise as T_OrderPromiseDateTime, LEFT(T_WorklistRefConfirmDetailT_BarcodeLabBarcode,12) as nosample, 'Y' as reconfirm, T_WorklistRefConfirmDetailID, T_WorklistRefConfirmDetailPatientName, T_WorklistRefConfirmDetailT_WorklistID, 'Y' as isreceive FROM t_worklist_ref_confirmdetail JOIN t_orderheader ON T_WorklistRefConfirmDetailT_OrderHeaderID = T_OrderHeaderID WHERE T_WorklistRefConfirmDetailT_TestID = '{$testid}' AND T_WorklistRefConfirmDetailT_WorklistID = '{$worklistid}' AND T_WorklistRefConfirmDetailIsActive = 'Y' AND date(T_OrderHeaderDate) = '{$date}' AND T_WorklistRefConfirmDetailIsDeliveryOrder = 'X' ) a WHERE T_OrderHeaderID > 0 AND isreceive = 'Y' GROUP BY T_OrderDetailID"; //echo $query; $rows = $this->db_onedev->query($query)->result_array(); //if(!$rows) // $rows = array(); if($rows){ foreach($rows as $k => $v){ $labnumber = stripslashes($rows[$k]['labnumber']); $rows[$k]['labnumber'] = stripslashes($labnumber); $T_WorklistRefConfirmDetailPatientName = stripslashes($rows[$k]['T_WorklistRefConfirmDetailPatientName']); $rows[$k]['T_WorklistRefConfirmDetailPatientName'] = stripslashes($T_WorklistRefConfirmDetailPatientName); } } return $rows; } public function searchbybarcode() { $prm = $this->sys_input; if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $date = $prm["nama"]; $barcode = $prm["barcode"]; //echo $companyid; $sql_where = "WHERE T_OrderHeaderIsActive = 'Y' AND date(T_OrderHeaderDate) = '{$date}'"; //if ($sql_where != "") $sql_where .= " and "; // Order masih dalam status registrasi //$sql_where .= " M_PatientIsActive = 'Y' "; /* $sql = " SELECT count(*) as total FROM t_orderheader JOIN t_orderdetail ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND T_OrderDetailIsActive = 'Y' JOIN t_test ON T_OrderDetailT_TestID = T_TestID JOIN nat_test ON T_TestNat_TestID = Nat_TestID JOIN t_worklistdetailv2 ON Nat_TestID = T_WorklistDetailNat_TestID JOIN t_worklist ON T_WorklistDetailT_WorklistID = T_WorklistID AND T_WorklistIsRujukan = 'Y' LEFT JOIN t_worklist_ref_confirmdetail ON T_OrderHeaderID = T_WorklistRefConfirmDetailT_OrderHeaderID AND T_TestID = T_WorklistRefConfirmDetailT_TestID $sql_where "; //echo $sql; $query = $this->db_onedev->query($sql); $tot_count = 0; if ($query) { $tot_count = $query->result_array()[0]["total"]; } else { $this->sys_error_db("t_worklist count", $this->db_onedev); exit; } */ $sql = "SELECT *, '{$barcode}' as nosample FROM ( SELECT * FROM ( SELECT IFNULL(T_OrderHeaderID,0) as T_OrderHeaderID, T_WorklistID, T_WorklistName, T_WorklistDetailNat_TestID, T_TestID, T_TestName, T_TestCode, T_OrderDetailID, 'xxx' as labs FROM t_orderheader JOIN t_orderdetail ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND T_OrderDetailIsActive = 'Y' JOIN t_test ON T_OrderDetailT_TestID = T_TestID JOIN nat_test ON T_TestNat_TestID = Nat_TestID LEFT JOIN t_worklistdetailv2 ON Nat_TestID = T_WorklistDetailNat_TestID AND T_WorklistDetailIsActive = 'Y' JOIN t_worklist ON T_WorklistDetailT_WorklistID = T_WorklistID AND T_WorklistIsRujukan = 'Y' AND T_WorklistIsActive = 'Y' LEFT JOIN t_worklist_ref_confirmdetail ON T_OrderHeaderID = T_WorklistRefConfirmDetailT_OrderHeaderID AND T_OrderDetailID = T_WorklistRefConfirmDetailT_OrderDetailID AND T_TestID = T_WorklistRefConfirmDetailT_TestID AND T_WorklistRefConfirmDetailIsActive = 'Y' WHERE T_OrderHeaderIsActive = 'Y' AND date(T_OrderHeaderDate) = '{$date}' AND T_WorklistRefConfirmDetailID IS NULL UNION SELECT IFNULL(T_OrderHeaderID,0) as T_OrderHeaderID, T_WorklistID, T_WorklistName, T_WorklistDetailNat_TestID, T_TestID, T_TestName, T_TestCode, T_OrderDetailID, 'xxx' as labs FROM t_orderheader JOIN t_orderdetail ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND T_OrderDetailIsActive = 'Y' JOIN t_test ON T_OrderDetailT_TestID = T_TestID JOIN nat_test ON T_TestNat_TestID = Nat_TestID LEFT JOIN t_worklistdetailv2 ON Nat_TestID = T_WorklistDetailNat_TestID AND T_WorklistDetailIsActive = 'Y' JOIN t_worklist ON T_WorklistDetailT_WorklistID = T_WorklistID AND T_WorklistIsRujukan = 'Y' AND T_WorklistIsActive = 'Y' LEFT JOIN t_worklist_ref_confirmdetail ON T_OrderHeaderID = T_WorklistRefConfirmDetailT_OrderHeaderID AND T_OrderDetailID = T_WorklistRefConfirmDetailT_OrderDetailID AND T_TestID = T_WorklistRefConfirmDetailT_TestID WHERE T_OrderHeaderIsActive = 'Y' AND date(T_OrderHeaderDate) = '{$date}' AND T_WorklistRefConfirmDetailIsDeliveryOrder = 'X' ) a WHERE T_OrderHeaderID > 0 GROUP BY T_OrderDetailID,T_WorklistID) b GROUP BY T_TestID, T_WorklistID ORDER BY T_WorklistID ASC "; //echo $sql; $query = $this->db_onedev->query($sql, $sql_param); $rows = $query->result_array(); if($rows){ foreach($rows as $k => $v){ $rows[$k]['labs'] = $this->add_labsbybarcode($v['T_TestID'],$v['T_WorklistID'],$date,$barcode); } } //$this->_add_address($rows); $result = array("total" => $tot_count, "records" => $rows, "sql"=> $this->db_onedev->last_query()); $this->sys_ok($result); exit; } function add_labsbybarcode($testid,$worklistid,$date,$barcode){ $query ="SELECT * FROM (SELECT IFNULL(T_OrderHeaderID,0) as T_OrderHeaderID, 'N' as ischoose, CONCAT( LEFT(T_BarcodeLabBarcode,12),' | ', JSON_UNQUOTE(JSON_EXTRACT(fn_get_patient_atribute(T_OrderHeaderM_PatientID), '$.patient_fullname'))) as labnumber, T_OrderDetailID, T_BarcodeLabBarcode, T_TestID, T_OrderDetailResult, M_StatusDetailName, IFNULL(T_OrderPromiseDateTime,IF(T_TestIsResult = 'N','-','')) as T_OrderPromiseDateTime, LEFT(T_BarcodeLabBarcode,12) as nosample, 'N' as reconfirm, 0 as T_WorklistRefConfirmDetailID, JSON_UNQUOTE(JSON_EXTRACT(fn_get_patient_atribute(T_OrderHeaderM_PatientID), '$.patient_fullname')) as T_WorklistRefConfirmDetailPatientName, $worklistid as T_WorklistRefConfirmDetailT_WorklistID, fn_confirmworklist_receive(T_OrderHeaderID, T_TestID) as isreceive FROM t_orderheader JOIN t_orderdetail ON T_OrderHeaderID = T_OrderDetailT_OrderHeaderID AND T_OrderDetailIsActive = 'Y' JOIN m_statusdetail ON T_OrderDetailM_StatusDetailID = M_StatusDetailID LEFT JOIN t_orderpromise ON T_OrderDetailT_OrderPromiseID = T_OrderPromiseID AND T_OrderPromiseIsActive = 'Y' JOIN t_test ON T_OrderDetailT_TestID = T_TestID JOIN nat_test ON T_TestNat_TestID = Nat_TestID LEFT JOIN t_worklistdetailv2 ON Nat_TestID = T_WorklistDetailNat_TestID AND T_WorklistDetailIsActive = 'Y' JOIN t_worklist ON T_WorklistDetailT_WorklistID = T_WorklistID AND T_WorklistIsRujukan = 'Y' AND T_WorklistIsActive = 'Y' JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID JOIN m_title ON M_PatientM_TitleID = M_TitleID LEFT JOIN t_worklist_ref_confirmdetail ON T_OrderHeaderID = T_WorklistRefConfirmDetailT_OrderHeaderID AND T_OrderDetailID = T_WorklistRefConfirmDetailT_OrderDetailID AND T_TestID = T_WorklistRefConfirmDetailT_TestID AND T_WorklistRefConfirmDetailIsActive = 'Y' join t_barcodelab ON T_OrderHeaderID = T_BarcodeLabT_OrderHeaderID AND T_BarcodeLabT_SampleTypeID = IF(fn_sampletype_from_local(Nat_TestID ) <> 0 ,fn_sampletype_from_local(Nat_TestID),fn_worklist_get_sampletype(T_TestID)) WHERE T_TestID = '{$testid}' AND T_WorklistID = '{$worklistid}' AND T_OrderHeaderIsActive = 'Y' AND date(T_OrderHeaderDate) = '{$date}' AND T_WorklistRefConfirmDetailID IS NULL AND LEFT(T_BarcodeLabBarcode,12) = '{$barcode}' UNION SELECT T_WorklistRefConfirmDetailT_OrderHeaderID as T_OrderHeaderID, 'N' as ischoose, CONCAT( LEFT(T_WorklistRefConfirmDetailT_BarcodeLabBarcode,12),' | ', T_WorklistRefConfirmDetailPatientName) as labnumber, T_WorklistRefConfirmDetailT_OrderDetailID as T_OrderDetailID, T_WorklistRefConfirmDetailT_BarcodeLabBarcode as T_BarcodeLabBarcode, T_WorklistRefConfirmDetailT_TestID as T_TestID, T_WorklistRefConfirmDetailResult as T_OrderDetailResult, T_WorklistRefConfirmDetailStatus as M_StatusDetailName, T_WorklistRefConfirmDetailPromise as T_OrderPromiseDateTime, LEFT(T_WorklistRefConfirmDetailT_BarcodeLabBarcode,12) as nosample, 'Y' as reconfirm, T_WorklistRefConfirmDetailID, T_WorklistRefConfirmDetailPatientName, T_WorklistRefConfirmDetailT_WorklistID, 'Y' as isreceive FROM t_worklist_ref_confirmdetail WHERE T_WorklistRefConfirmDetailT_TestID = '{$testid}' AND T_WorklistRefConfirmDetailT_WorklistID = '{$worklistid}' AND T_WorklistRefConfirmDetailIsActive = 'Y' AND date(T_WorklistRefConfirmDetailCreated) = '{$date}' AND T_WorklistRefConfirmDetailIsDeliveryOrder = 'X' AND LEFT(T_BarcodeLabBarcode,12) = '{$barcode}' ) a WHERE T_OrderHeaderID > 0 AND isreceive = 'Y' GROUP BY T_OrderDetailID"; //echo $query; $rows = $this->db_onedev->query($query)->result_array(); if($rows){ foreach($rows as $k => $v){ $labnumber = stripslashes($rows[$k]['labnumber']); $rows[$k]['labnumber'] = stripslashes($labnumber); $T_WorklistRefConfirmDetailPatientName = stripslashes($rows[$k]['T_WorklistRefConfirmDetailPatientName']); $rows[$k]['T_WorklistRefConfirmDetailPatientName'] = stripslashes($T_WorklistRefConfirmDetailPatientName); } } return $rows; } function getsexreg(){ if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $sexid = $prm['sexid']; $rows = []; $query =" SELECT * FROM m_title JOIN m_sex ON M_TitleM_SexID = M_SexID WHERE M_TitleIsActive = 'Y' "; //echo $query; $rows['titles'] = $this->db_onedev->query($query)->result_array(); $query =" SELECT * FROM nat_sex WHERE Nat_SexIsActive = 'Y' "; //echo $query; $rows['sexes'] = $this->db_onedev->query($query)->result_array(); $query =" SELECT * FROM t_worklist WHERE T_WorklistIsActive = 'Y' "; //echo $query; $rows['xworklists'] = $this->db_onedev->query($query)->result_array(); $result = array( "total" => count($rows) , "records" => $rows, ); $this->sys_ok($result); exit; } function getdetail(){ if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $query =" SELECT t_worklist_detail.*, T_TestID, T_TestName, '' as tes, 'xxx' as tests, '' as action FROM t_worklist LEFT JOIN t_worklist_detail ON T_WorklistID = T_WorklistDetailT_WorklistID AND T_WorklistDetailIsActive = 'Y' JOIN t_test ON T_WorklistDetailNat_TestID = T_TestID WHERE T_WorklistIsActive = 'Y' AND T_WorklistID = ? "; //echo $query; $rows = $this->db_onedev->query($query,array($prm['id']))->result_array(); if($rows){ foreach($rows as $k => $v){ $rows[$k]['tests'] = $this->add_test($v['T_WorklistDetailT_WorklistID']); } } $result = array( "total" => count($rows) , "records" => $rows ); $this->sys_ok($result); exit; } function add_test($orderid){ $query =" SELECT t_worklist_detail.*, 'Y' as editable, T_WorklistDetailID as xid, T_TestID, CONCAT('[',T_WorklistDetailCode,'] ',T_TestName) as T_TestName FROM t_worklist_detail JOIN t_test ON T_WorklistDetailNat_TestID = T_TestID WHERE T_WorklistDetailT_WorklistID = {$orderid} AND T_WorklistDetailIsActive = 'Y' GROUP BY T_WorklistDetailID"; //echo $query; $rows = $this->db_onedev->query($query)->result_array(); if(!$rows) $rows = array(); return $rows; } public function getnumber() { $prm = $this->sys_input; if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $testid = $prm['T_TestID']; $testname = $prm['T_TestName']; $numbering = $this->db_onedev->query("SELECT fn_numbering('CALC') as numbering")->row()->numbering; $sql = $this->db_onedev->query("SELECT CASE WHEN S_NumberingCounter = 1 THEN 'AA' WHEN S_NumberingCounter = 2 THEN 'AB' WHEN S_NumberingCounter = 3 THEN 'AC' WHEN S_NumberingCounter = 4 THEN 'AD' WHEN S_NumberingCounter = 5 THEN 'AE' WHEN S_NumberingCounter = 6 THEN 'AF' WHEN S_NumberingCounter = 7 THEN 'AG' WHEN S_NumberingCounter = 8 THEN 'AH' WHEN S_NumberingCounter = 9 THEN 'AI' WHEN S_NumberingCounter = 10 THEN 'AJ' WHEN S_NumberingCounter = 11 THEN 'AK' WHEN S_NumberingCounter = 12 THEN 'AL' WHEN S_NumberingCounter = 13 THEN 'AM' WHEN S_NumberingCounter = 14 THEN 'AN' WHEN S_NumberingCounter = 15 THEN 'AO' WHEN S_NumberingCounter = 16 THEN 'AP' WHEN S_NumberingCounter = 17 THEN 'AQ' WHEN S_NumberingCounter = 18 THEN 'AR' WHEN S_NumberingCounter = 19 THEN 'AS' WHEN S_NumberingCounter = 20 THEN 'AT' WHEN S_NumberingCounter = 21 THEN 'AU' WHEN S_NumberingCounter = 22 THEN 'AV' WHEN S_NumberingCounter = 23 THEN 'AW' WHEN S_NumberingCounter = 24 THEN 'AX' WHEN S_NumberingCounter = 25 THEN 'AY' WHEN S_NumberingCounter = 26 THEN 'AZ' WHEN S_NumberingCounter = 27 THEN 'BA' WHEN S_NumberingCounter = 28 THEN 'BB' WHEN S_NumberingCounter = 29 THEN 'BC' WHEN S_NumberingCounter = 30 THEN 'BD' WHEN S_NumberingCounter = 31 THEN 'BE' WHEN S_NumberingCounter = 32 THEN 'BF' WHEN S_NumberingCounter = 33 THEN 'BG' WHEN S_NumberingCounter = 34 THEN 'BH' WHEN S_NumberingCounter = 35 THEN 'BI' WHEN S_NumberingCounter = 36 THEN 'BJ' WHEN S_NumberingCounter = 37 THEN 'BK' WHEN S_NumberingCounter = 38 THEN 'BL' WHEN S_NumberingCounter = 39 THEN 'BM' WHEN S_NumberingCounter = 40 THEN 'BN' WHEN S_NumberingCounter = 41 THEN 'BO' WHEN S_NumberingCounter = 42 THEN 'BP' WHEN S_NumberingCounter = 43 THEN 'BQ' WHEN S_NumberingCounter = 44 THEN 'BR' WHEN S_NumberingCounter = 45 THEN 'BS' WHEN S_NumberingCounter = 46 THEN 'BT' WHEN S_NumberingCounter = 47 THEN 'BU' WHEN S_NumberingCounter = 48 THEN 'BV' WHEN S_NumberingCounter = 49 THEN 'BW' WHEN S_NumberingCounter = 50 THEN 'BX' WHEN S_NumberingCounter = 51 THEN 'BY' WHEN S_NumberingCounter = 52 THEN 'BZ' ELSE 'CA' END as getnumbering FROM s_numbering WHERE S_NumberingType = 'CALC'")->row(); $getnumbering = $sql->getnumbering; $query ="SELECT *, CONCAT('[',T_WorklistDetailCode,'] ','{$testname}') as T_TestName, T_WorklistDetailCode FROM (SELECT 'Y' as editable, '{$testid}' as T_TestID, '{$testname}' as T_TestName, CASE WHEN S_NumberingCounter = 1 THEN 'AA' WHEN S_NumberingCounter = 2 THEN 'AB' WHEN S_NumberingCounter = 3 THEN 'AC' WHEN S_NumberingCounter = 4 THEN 'AD' WHEN S_NumberingCounter = 5 THEN 'AE' WHEN S_NumberingCounter = 6 THEN 'AF' WHEN S_NumberingCounter = 7 THEN 'AG' WHEN S_NumberingCounter = 8 THEN 'AH' WHEN S_NumberingCounter = 9 THEN 'AI' WHEN S_NumberingCounter = 10 THEN 'AJ' WHEN S_NumberingCounter = 11 THEN 'AK' WHEN S_NumberingCounter = 12 THEN 'AL' WHEN S_NumberingCounter = 13 THEN 'AM' WHEN S_NumberingCounter = 14 THEN 'AN' WHEN S_NumberingCounter = 15 THEN 'AO' WHEN S_NumberingCounter = 16 THEN 'AP' WHEN S_NumberingCounter = 17 THEN 'AQ' WHEN S_NumberingCounter = 18 THEN 'AR' WHEN S_NumberingCounter = 19 THEN 'AS' WHEN S_NumberingCounter = 20 THEN 'AT' WHEN S_NumberingCounter = 21 THEN 'AU' WHEN S_NumberingCounter = 22 THEN 'AV' WHEN S_NumberingCounter = 23 THEN 'AW' WHEN S_NumberingCounter = 24 THEN 'AX' WHEN S_NumberingCounter = 25 THEN 'AX' WHEN S_NumberingCounter = 26 THEN 'AZ' WHEN S_NumberingCounter = 27 THEN 'BA' WHEN S_NumberingCounter = 28 THEN 'BB' WHEN S_NumberingCounter = 29 THEN 'BC' WHEN S_NumberingCounter = 30 THEN 'BD' WHEN S_NumberingCounter = 31 THEN 'BE' WHEN S_NumberingCounter = 32 THEN 'BF' WHEN S_NumberingCounter = 33 THEN 'BG' WHEN S_NumberingCounter = 34 THEN 'BH' WHEN S_NumberingCounter = 35 THEN 'BI' WHEN S_NumberingCounter = 36 THEN 'BJ' WHEN S_NumberingCounter = 37 THEN 'BK' WHEN S_NumberingCounter = 38 THEN 'BL' WHEN S_NumberingCounter = 39 THEN 'BM' WHEN S_NumberingCounter = 40 THEN 'BN' WHEN S_NumberingCounter = 41 THEN 'BO' WHEN S_NumberingCounter = 42 THEN 'BP' WHEN S_NumberingCounter = 43 THEN 'BQ' WHEN S_NumberingCounter = 44 THEN 'BR' WHEN S_NumberingCounter = 45 THEN 'BS' WHEN S_NumberingCounter = 46 THEN 'BT' WHEN S_NumberingCounter = 47 THEN 'BU' WHEN S_NumberingCounter = 48 THEN 'BV' WHEN S_NumberingCounter = 49 THEN 'BW' WHEN S_NumberingCounter = 50 THEN 'BX' WHEN S_NumberingCounter = 51 THEN 'BY' WHEN S_NumberingCounter = 52 THEN 'BZ' ELSE 'CA' END as T_WorklistDetailCode FROM s_numbering WHERE S_NumberingType = 'CALC') a "; //echo $query; $rows = $this->db_onedev->query($query)->result_array(); //$this->_add_address($rows); $result = array("records" => $rows,"number" => $getnumbering); $this->sys_ok($result); exit; } function deletenumber(){ if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $userid = $this->sys_user["M_UserID"]; $query ="UPDATE s_numbering SET S_NumberingCounter = S_NumberingCounter - 1 WHERE S_NumberingType = 'CALC' "; //echo $query; $rows = $this->db_onedev->query($query); $result = array( "total" => 1 , "records" => array('status'=>'OK') ); $this->sys_ok($result); exit; } public function save() { try { //# cek token valid if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $datas = $prm['datas']; $userid = $this->sys_user["M_UserID"]; $numbering = $this->db_onedev->query("SELECT fn_numbering('WRKC') as numbering")->row()->numbering; $sql = "INSERT INTO t_worklist_ref_confirm ( T_WorklistRefConfirmDate, T_WorklistRefConfirmNumber, T_WorklistRefConfirmUserID, T_WorklistRefConfirmCreated, T_WorklistRefConfirmLastUpdated ) VALUES( now(), '{$numbering}', $userid, NOW(), now() )"; //echo $sql; $this->db_onedev->query($sql); $last_id = $this->db_onedev->insert_id(); foreach ($datas as $k => $v){ foreach ($v['labs'] as $kx => $vx){ if($vx['ischoose'] == 'Y'){ $sql = $this->db_onedev->query("SELECT IF(T_WorklistRefConfirmDetailID IS NULL,'N','Y') as isavailable FROM t_worklist_ref_confirmdetail WHERE T_WorklistRefConfirmDetailT_OrderHeaderID = '{$vx['T_OrderHeaderID']}' AND T_WorklistRefConfirmDetailT_OrderDetailID = '{$vx['T_OrderDetailID']}' AND T_WorklistRefConfirmDetailT_TestID = '{$vx['T_TestID']}' AND T_WorklistRefConfirmDetailT_WorklistID = '{$vx['T_WorklistRefConfirmDetailT_WorklistID']}' AND (T_WorklistRefConfirmDetailIsActive = 'Y' AND T_WorklistRefConfirmDetailIsDeliveryOrder <> 'X'); ")->row(); // echo $this->db_onedev->last_query(); $isavailable = $sql->isavailable; if (is_null($isavailable)){ $patient_name = str_replace("'", "\\'", $vx['T_WorklistRefConfirmDetailPatientName']); $sql = "INSERT INTO t_worklist_ref_confirmdetail ( T_WorklistRefConfirmDetailT_WorklistRefConfirmID, T_WorklistRefConfirmDetailT_OrderHeaderID, T_WorklistRefConfirmDetailT_OrderDetailID, T_WorklistRefConfirmDetailT_TestID, T_WorklistRefConfirmDetailResult, T_WorklistRefConfirmDetailStatus, T_WorklistRefConfirmDetailPromise, T_WorklistRefConfirmDetailT_BarcodeLabBarcode, T_WorklistRefConfirmDetailT_WorklistID, T_WorklistRefConfirmDetailPatientName, T_WorklistRefConfirmDetailUserID, T_WorklistRefConfirmDetailCreated, T_WorklistRefConfirmDetailLastUpdated ) VALUES( $last_id, {$vx['T_OrderHeaderID']}, {$vx['T_OrderDetailID']}, {$vx['T_TestID']}, '{$vx['T_OrderDetailResult']}', '{$vx['M_StatusDetailName']}', '{$vx['T_OrderPromiseDateTime']}', '{$vx['T_BarcodeLabBarcode']}', '{$vx['T_WorklistRefConfirmDetailT_WorklistID']}', '{$patient_name}', $userid, now(), NOW() )"; //echo $sql; $this->db_onedev->query($sql); //echo $this->db_onedev->last_query(); if($vx['reconfirm'] == 'Y'){ $sqlx = "UPDATE t_worklist_ref_confirmdetail SET T_WorklistRefConfirmDetailIsDeliveryOrder = 'R', T_WorklistRefConfirmDetailUserID = $userid, T_WorklistRefConfirmDetailLastUpdated = now(), T_WorklistRefConfirmDetailIsActive = 'N' WHERE T_WorklistRefConfirmDetailID = {$vx['T_WorklistRefConfirmDetailID']}"; // echo $sql; $this->db_onedev->query($sqlx); } } } } } $result = array ("total"=>1,"records" => array()); $this->sys_ok($result); } catch(Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function savenewdetail(){ if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $userid = $this->sys_user["M_UserID"]; $query ="INSERT INTO t_worklist( T_WorklistName, T_WorklistDetailNat_TestID, T_WorklistFormula, T_WorklistNat_SexID, T_WorklistUserID, T_WorklistCreatedDateTime, T_WorklistLastUpdated ) VALUES( '{$prm['T_WorklistName']}', '{$prm['T_WorklistDetailNat_TestID']}', '{$prm['T_WorklistFormula']}', '{$prm['T_WorklistNat_SexID']}', '{$userid}', NOW(), NOW() ) "; //echo $query; $rows = $this->db_onedev->query($query); $orderdetail_id = $this->db_onedev->insert_id(); foreach($prm['ordertests'] as $k=>$v){ $query = "INSERT INTO t_worklist_detail ( T_WorklistDetailT_WorklistID, T_WorklistDetailNat_TestID, T_WorklistDetailCode, T_WorklistDetailUserID, T_WorklistDetailCreatedDateTime, T_WorklistDetailLastUpdated ) VALUE( ?,?,?,?,now(),now() )"; $insert_new_test = $this->db_onedev->query($query,array( $orderdetail_id, $v['T_TestID'], $v['T_WorklistDetailCode'], $userid )); } $result = array( "total" => 1 , "records" => array('status'=>'OK'), "id" => $orderdetail_id ); $this->sys_ok($result); exit; } function saveeditdetail(){ if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $order_id = $prm['T_WorklistID']; $userid = $this->sys_user["M_UserID"]; $query ="UPDATE t_worklist SET T_WorklistName = '{$prm['T_WorklistName']}', T_WorklistDetailNat_TestID = '{$prm['T_WorklistDetailNat_TestID']}', T_WorklistFormula = '{$prm['T_WorklistFormula']}', T_WorklistNat_SexID = '{$prm['T_WorklistNat_SexID']}', T_WorklistUserID = '{$userid}' WHERE T_WorklistID = '{$prm['T_WorklistID']}' "; //echo $query; $rows = $this->db_onedev->query($query); foreach($prm['ordertests'] as $k=>$v){ if($v['xid'] == 0 || $v['xid'] == '0'){ $query = "INSERT INTO t_worklist_detail ( T_WorklistDetailT_WorklistID, T_WorklistDetailNat_TestID, T_WorklistDetailCode, T_WorklistDetailUserID, T_WorklistDetailCreatedDateTime, T_WorklistDetailLastUpdated ) VALUE( ?,?,?,?,now(),now() )"; $insert_new_test = $this->db_onedev->query($query,array( $order_id, $v['T_TestID'], $v['T_WorklistDetailCode'], $userid )); } } if(isset($prm['deleted_ordertests'])){ foreach($prm['deleted_ordertests'] as $i=>$del){ $query = "UPDATE t_worklist_detail SET T_WorklistDetailIsActive = 'N', T_WorklistDetailUserID = '{$userid}', T_WorklistDetailLastUpdated = now() WHERE T_WorklistDetailID = ? "; $delete_exist_test = $this->db_onedev->query($query,array($del['T_WorklistDetailID'],)); } } $result = array( "total" => 1 , "records" => array('status'=>'OK') ); $this->sys_ok($result); exit; } function delete(){ if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $userid = $this->sys_user["M_UserID"]; $query ="UPDATE t_worklist SET T_WorklistIsActive = 'N', T_WorklistUserID = '{$userid}' WHERE T_WorklistID = '{$prm['T_WorklistID']}' "; //echo $query; $rows = $this->db_onedev->query($query); $query ="UPDATE t_worklist_detail SET T_WorklistDetailIsActive = 'N', T_WorklistDetailUserID = '{$userid}' WHERE T_WorklistDetailT_WorklistID = '{$prm['T_WorklistID']}' "; //echo $query; $rows = $this->db_onedev->query($query); //echo $query; $rows = $this->db_onedev->query($query); $result = array( "total" => 1 , "records" => array('status'=>'OK') ); $this->sys_ok($result); exit; } function deletedetail(){ if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $userid = $this->sys_user["M_UserID"]; $query ="UPDATE t_worklist SET T_WorklistIsActive = 'N', T_WorklistUserID = '{$userid}' WHERE T_WorklistID = '{$prm['T_WorklistID']}' "; //echo $query; $rows = $this->db_onedev->query($query); $query ="UPDATE t_worklist_detail SET T_WorklistDetailIsActive = 'N', T_WorklistDetailUserID = '{$userid}' WHERE T_WorklistDetailT_WorklistID = '{$prm['T_WorklistID']}' AND T_WorklistDetailIsActive = 'Y' "; //echo $query; $rows = $this->db_onedev->query($query); $result = array( "total" => 1 , "records" => array('status'=>'OK') ); $this->sys_ok($result); exit; } function searchtestheader(){ $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 t_test WHERE T_TestName like ? AND T_TestIsActive = 'Y' AND T_TestIsResult = 'Y' ORDER BY T_TestName ASC"; $query = $this->db_onedev->query($sql,$q['search']); //echo $query; if ($query) { $tot_count = $query->result_array()[0]["total"]; } else { $this->sys_error_db("test count",$this->db_onedev); exit; } $sql = "SELECT T_TestID, T_TestName FROM t_test WHERE T_TestName like ? AND T_TestIsActive = 'Y' AND T_TestIsResult = 'Y' ORDER BY T_TestName ASC "; $query = $this->db_onedev->query($sql, array($q['search'])); if ($query) { $rows = $query->result_array(); //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("test rows",$this->db_onedev); exit; } } function searchtest(){ $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 t_test WHERE T_TestName like ? AND T_TestIsActive = 'Y' AND T_TestIsResult = 'Y' ORDER BY T_TestName ASC"; $query = $this->db_onedev->query($sql,$q['search']); //echo $query; if ($query) { $tot_count = $query->result_array()[0]["total"]; } else { $this->sys_error_db("test count",$this->db_onedev); exit; } $sql = "SELECT 'Y' as editable, 0 as xid, T_TestID, T_TestName FROM t_test WHERE T_TestName like ? AND T_TestIsActive = 'Y' AND T_TestIsResult = 'Y' ORDER BY T_TestName ASC "; $query = $this->db_onedev->query($sql, array($q['search'])); if ($query) { $rows = $query->result_array(); //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("test rows",$this->db_onedev); exit; } } function searchtestfavorit(){ $prm = $this->sys_input; $max_rst = 12; $tot_count = 0; $mou_id = $prm['mouid']; // QUERY TOTAL $sql = "SELECT count(*) as total FROM t_test JOIN t_price ON T_PriceT_TestID = T_TestID AND T_PriceIsCito = 'N' AND T_PriceM_MouID = '{$mou_id}' JOIN t_favorite ON T_TestID = T_FavoriteT_TestID AND T_FavoriteIsActive = 'Y' WHERE T_TestIsActive = 'Y' ORDER BY T_TestName ASC"; $query = $this->db_onedev->query($sql); //echo $query; if ($query) { $tot_count = $query->result_array()[0]["total"]; } else { $this->sys_error_db("test count",$this->db_onedev); exit; } $sql = " SELECT 'Y' as editable, 0 as xid, T_TestID, T_TestCode, T_TestName, T_PriceAmount, T_PriceDisc, T_PriceDiscRp, T_PriceAmount - ((T_PriceDisc/100) * T_PriceAmount) - T_PriceDiscRp as total, T_TestID,'N' as T_TestIsBill, 0 as T_TestMinDP FROM one.t_test JOIN one.t_price ON T_PriceT_TestID = T_TestID AND T_PriceIsCito = 'N' AND T_PriceM_MouID = '{$mou_id}' JOIN one.m_mou ON M_MouID = '{$mou_id}' JOIN one.t_test ON M_MouT_TestID = T_TestID JOIN t_favorite ON T_TestID = T_FavoriteT_TestID AND T_FavoriteIsActive = 'Y' WHERE T_TestIsActive = 'Y' ORDER BY T_TestName ASC LIMIT 0,20 "; $query = $this->db_onedev->query($sql); if ($query) { $rows = $query->result_array(); //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("test rows",$this->db_onedev); exit; } } }