db_onedev = $this->load->database("onedev", true); } public function add_notes_bckp($orderid){ $rst = array(); $sql = "SELECT Fo_VerificationTypeLabelCorrection as label, Fo_VerificationReason as reason, Fo_VerificationTypeGroup as xgroup, Fo_VerificationTypeName as xname, 'N' as chex FROM fo_verification JOIN fo_verificationtype ON Fo_VerificationFo_VericationTypeID = Fo_VericationTypeID WHERE Fo_VerificationIsOK = 'N' AND Fo_VerificationT_OrderHeaderID = {$orderid}"; $other = $this->db_onedev->query($sql)->result_array(); if($other){ foreach($other as $k => $v){ array_push($rst,$v); } } $sql = " SELECT IF(SUM(label) > 0, 'Perubahan pemeriksaan','') as label, GROUP_CONCAT(reason separator ',') as reason, 'TEST' as xgroup, 'ORDER.TEST' as xname, 'N' as chex FROM ( SELECT COUNT(*) as label, GROUP_CONCAT(CONCAT(T_OrderDetailT_TestName,'(-)') separator ',') as reason, Fo_VerificationTestT_OrderHeaderID as orderid FROM fo_verification_test JOIN t_orderdetail ON Fo_VerificationTestT_OrderDetailID = T_OrderDetailID WHERE Fo_VerificationTestT_OrderHeaderID = {$orderid} AND Fo_VerificationTestIsOK = 'N' GROUP BY Fo_VerificationTestT_OrderHeaderID UNION SELECT COUNT(*) as label, GROUP_CONCAT(CONCAT(T_TestName,'(+)') separator ',') as reason, Fo_VerificationTestAddT_OrderHeaderID as orderid FROM fo_verification_test_add JOIN t_test ON Fo_VerificationTestAddT_TestID = T_TestID WHERE Fo_VerificationTestAddT_OrderHeaderID = {$orderid} AND Fo_VerificationTestAddIsActive = 'Y' GROUP BY Fo_VerificationTestAddT_OrderHeaderID ) a GROUP BY orderid "; $tests = $this->db_onedev->query($sql)->result_array(); if($tests){ foreach($tests as $k => $v){ array_push($rst,$v); } } $sql = "SELECT COUNT(*) as xc FROM fo_verification_delivery_add WHERE Fo_VerificationDeliveryAddIsActive = 'Y' AND Fo_VerificationDeliveryAddT_OrderHeaderID = {$orderid} "; $delivery = $this->db_onedev->query($sql)->row(); if($delivery->xc > 0){ $xv = array('label'=>'Perubahan pengiriman hasil','reason'=>'Silahkan check perubahan pengiriman hasil','xgroup'=>'DELIVERY','xname'=>'ORDER.DELIVERY','chex'=>'N'); array_push($rst,$xv); } return $rst; } public function add_notes($orderid){ $rst = array(); $sql = "SELECT Fo_VerificationsLabelName as label, Fo_VerificationsValueNote as reason, Fo_VerificationsLabelButton as button FROM fo_verificationsvalue JOIN fo_verificationslabel ON Fo_VerificationsValueFo_VerificationsLabelID = Fo_VerificationsLabelID WHERE Fo_VerificationsValueCheck = 'N' AND Fo_VerificationsValueT_OrderHeaderID = {$orderid}"; $other = $this->db_onedev->query($sql)->result_array(); if($other){ foreach($other as $k => $v){ array_push($rst,$v); } } return $rst; } public function search() { //# cek token valid if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $search = $prm["search"]; $status = $prm["status"]; if($status == 'N'){ $sql = "SELECT count(*) as total FROM t_orderheader JOIN t_ordermessage ON T_OrderMessageT_OrderHeaderID = T_OrderHeaderID WHERE ( T_OrderHeaderLabNumber LIKE '%{$search}%' ) AND T_OrderMessageDone <> 'Y' AND T_OrderMessageIsActive = 'Y' ORDER BY T_OrderHeaderID ASC"; }else if($status == 'Y'){ $sql = "SELECT count(*) as total FROM t_orderheader JOIN t_ordermessage ON T_OrderMessageT_OrderHeaderID = T_OrderHeaderID AND T_OrderMessageIsActive = 'Y' WHERE ( T_OrderHeaderLabNumber LIKE '%{$search}%' ) AND T_OrderMessageDone = 'Y' ORDER BY T_OrderHeaderID DESC LIMIT 100"; }else{ $sql = "SELECT count(*) as total FROM t_orderheader WHERE ( T_OrderHeaderLabNumber LIKE '%{$search}%' )"; } //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("m_patient count", $this->db_onedev); exit; } if($status == 'N'){ $sql = "SELECT T_OrderMessageID as xid, T_OrderHeaderID as orderid, T_OrderHeaderID as orderdate, T_OrderHeaderLabNumber as labnumber, M_PatientNoReg as patient_noreg, T_OrderMessageType as message_type, T_OrderMessageMessage as message, T_OrderMessageID as message_id, fn_fo_supervisor_delivery_verification_done(T_OrderHeaderID) as donedelivery, CONCAT(M_TitleName,' ',M_PatientName) as patientname, CASE WHEN T_OrderMessageType = 'FO.VERIFICATION.REJECT' THEN 'Fo Verification' WHEN T_OrderMessageType = 'FO.Supervisor.Sampling' THEN 'Sampling' ELSE 'Other' END as type, CASE WHEN T_OrderMessageRead = 'N' AND T_OrderMessageDone = 'N' THEN 'Baru' WHEN T_OrderMessageRead = 'Y' AND T_OrderMessageDone = 'N' THEN 'Telah dibaca' WHEN T_OrderMessageRead = 'Y' AND T_OrderMessageDone = 'P' THEN 'Sedang dikerjakan' END as status FROM t_orderheader JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID JOIN m_title ON M_PatientM_TitleID = M_TitleID JOIN t_ordermessage ON T_OrderMessageT_OrderHeaderID = T_OrderHeaderID WHERE ( T_OrderHeaderLabNumber LIKE '%{$search}%' ) AND T_OrderMessageType = 'FO.VERIFICATION.REJECT' AND T_OrderMessageDone <> 'Y' AND T_OrderMessageIsActive = 'Y' AND T_OrderHeaderIsActive = 'Y' ORDER BY T_OrderHeaderID ASC"; }else if($status == 'Y'){ $sql = "SELECT T_OrderMessageID as xid, T_OrderHeaderID as orderid, T_OrderHeaderID as orderdate, T_OrderHeaderLabNumber as labnumber, M_PatientNoReg as patient_noreg, T_OrderMessageType as message_type, T_OrderMessageMessage as message, T_OrderMessageID as message_id, fn_fo_supervisor_delivery_verification_done(T_OrderHeaderID) as donedelivery, CONCAT(M_TitleName,' ',M_PatientName) as patientname, CASE WHEN T_OrderMessageType = 'FO.VERIFICATION.REJECT' THEN 'Fo Verification' WHEN T_OrderMessageType = 'FO.Supervisor.Sampling' THEN 'Sampling' ELSE 'Other' END as type, 'Selesai' as status FROM t_orderheader JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID JOIN m_title ON M_PatientM_TitleID = M_TitleID JOIN t_ordermessage ON T_OrderMessageT_OrderHeaderID = T_OrderHeaderID AND T_OrderMessageIsActive = 'Y' WHERE ( T_OrderHeaderLabNumber LIKE '%{$search}%' ) AND T_OrderMessageType = 'FO.VERIFICATION.REJECT' AND T_OrderMessageDone = 'Y' AND T_OrderHeaderIsActive = 'Y' ORDER BY T_OrderHeaderID DESC LIMIT 20"; }else{ $sql = "SELECT -1 as xid, T_OrderHeaderID as orderid, T_OrderHeaderID as orderdate, T_OrderHeaderLabNumber as labnumber, M_PatientNoReg as patient_noreg, fn_fo_get_laststatus(T_OrderHeaderID) as status_fo, 'adhoc' as message_type, '' as message, 0 as message_id, fn_fo_supervisor_delivery_verification_done(T_OrderHeaderID) as donedelivery, CONCAT(M_TitleName,' ',M_PatientName) as patientname, 'adhoc' as type, T_OrderHeaderAddOnPatientMcu as patient_mcu FROM t_orderheader LEFT JOIN t_orderheaderaddon ON T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID JOIN m_title ON M_PatientM_TitleID = M_TitleID WHERE ( T_OrderHeaderLabNumber LIKE '%{$search}%' ) AND T_OrderHeaderIsActive = 'Y' ORDER BY T_OrderHeaderID DESC LIMIT 20"; } //echo $sql; $query = $this->db_onedev->query($sql); $rows = $query->result_array(); if($rows){ foreach($rows as $k => $v){ if($status == 'N' || $status == 'Y'){ $rows[$k]['notes'] = $this->add_notes($v['orderid']); } else{ $rows[$k]['notes'] = array(); } } } $result = array("total" => $tot_count, "records" => $rows, "sql"=> $this->db_onedev->last_query()); $this->sys_ok($result); exit; } }