db_smartone = $this->load->database("onedev", true); $this->db_lab = $this->load->database('one_lab_log', TRUE); } public function mr_state() { $prm = $this->sys_input; $id = $prm["order_id"]; $data = ["image"=>"http://blog.aylien.com/wp-content/uploads/2016/07/Screen-Shot-2016-07-21-at-18.46.42.png", "note"=>"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", "title"=>"Multi Rule"]; $this->sys_ok($data); } public function confirm() { if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $data = json_decode($prm["data"]); if (sizeof($data) < 1) { $this->sys_error_db("RE Validation Confirmation", $this->db_smartone); exit; } else { $ids = []; foreach ($data as $k => $v) { $mr_state = "X"; if (isset($v->mr_state[0])) $mr_state = $v->mr_state[0]; $qry = $this->db_smartone->set('T_OrderDetailValMRState', $mr_state) ->set('T_OrderDetailValidation', $v->validation) ->set('T_OrderDetailValDate', $v->validation == "Y" ? date('Y-m-d H:i:s') : null) ->set('T_OrderDetailValUserID', $this->sys_user['M_UserID']) ->where('T_OrderDetailID', $v->id) ->update('t_orderdetail'); if (!$qry) { print_r($this->db_smartone->error()); } $ids[] = $v->id; $sql = "select * from t_orderdetail where T_OrderDetailID = ?"; $qry = $this->db_smartone->query($sql, [$v->id]); $order = $qry->row(); $dt_orderdetail = json_encode($order); $result = $order->T_OrderDetailResult; $sql = "INSERT INTO log_orderdetail ( Log_OrderDetailStatus, Log_OrderDetailT_OrderDetailID, Log_OrderDetailResult, Log_OrderDetailJSON, Log_OrderDetailCreated, Log_OrderDetailUserID ) VALUES (?,?, ?, ?, NOW(), ?)"; $this->db_lab->query($sql, ['VALIDATION', $v->id, $result, $dt_orderdetail, $this->sys_user['M_UserID']]); } // LOG Process $order = $this->db_smartone->select('T_OrderDetailT_OrderHeaderID id, T_OrderHeaderLabNumber lab_number', false) ->join('t_orderheader', 'T_OrderHeaderID = T_OrderDetailT_OrderHeaderID') ->where('T_OrderDetailID', $data[0]->id) ->get('t_orderdetail') ->row(); $dblog = $this->load->database("onelog", true); $dblog->set('Log_ProcessCode', 'PROCESS.Result.Validation') ->set('Log_ProcessOrderID', $order->id) ->set('Log_ProcessOrderNumber', $order->lab_number) ->set('Log_ProcessJson', json_encode($data)) ->set('Log_ProcessUserID', $this->sys_user['M_UserID']) ->insert('log_process'); // END OF Log Process //update validation multi $this->load->library("Txbranchstatus"); $this->txbranchstatus->update_multi("VALIDATION",$ids,$this->sys_user['M_StaffName']); $this->sys_ok($ids); } } // public function validate() // { // $prm = $this->sys_input; // $data = json_decode($prm["data"]); // if (sizeof($data) < 1) // { // $this->sys_error_db("RE Validation Confirmation", $this->db_smartone); // exit; // } // else // { // $ids = []; // foreach ($data as $k => $v) // { // $this->db_smartone->set('T_OrderDetailValMRState', $v->mr_state) // ->set('T_OrderDetailValidation', $v->validation) // ->set('T_OrderDetailValDate', $v->validation == "Y" ? date('Y-m-d H:i:s') : null) // ->set('T_OrderDetailValUserID', $this->sys_user['M_UserID']) // ->where('T_OrderDetailID', $v->id) // ->update('t_orderdetail'); // $ids[] = $v->id; // } // // LOG Process // $order = $this->db_smartone->select('T_OrderDetailT_OrderHeaderID id, T_OrderHeaderLabNumber lab_number', false) // ->join('t_orderheader', 'T_OrderHeaderID = T_OrderDetailT_OrderHeaderID') // ->where('T_OrderDetailID', $data[0]->id) // ->get('t_orderdetail') // ->row(); // $dblog = $this->load->database("onelog", true); // $dblog->set('Log_ProcessCode', 'PROCESS.Result.Validation') // ->set('Log_ProcessOrderID', $order->id) // ->set('Log_ProcessOrderNumber', $order->lab_number) // ->set('Log_ProcessJson', json_encode($data)) // ->set('Log_ProcessUserID', $this->sys_user['M_UserID']) // ->insert('log_process'); // // END OF Log Process // $this->sys_ok($ids); // } // } function print_count() { if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $this->firstprint(); $prm = $this->sys_input; $sql = "UPDATE t_orderdetail SET T_OrderDetailPrintCount = T_OrderDetailPrintCount + 1 WHERE T_OrderDetailT_OrderHeaderID = ? AND T_OrderDetailValidation = 'Y' AND T_OrderDetailIsActive = 'Y'"; $query = $this->db_smartone->query($sql, [$prm['order_id']]); if ($query) { $this->sys_ok($this->db_smartone->last_query()); } else $this->sys_error_db("Print Count", $this->db_smartone); } public function reject() { if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; // QUERY TOTAL $sql = "CALL sp_process_result_validation_reject(?, ?)"; $query = $this->db_smartone->query($sql, [$prm['id'], $prm['action']]); if ($query) { $row = $query->row(); $this->sys_ok($row); } else { $this->sys_error_db("REJECT VALIDATION", $this->db_smartone); } } public function unvalidate() { if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $order_id = $prm["order_id"]; $this->db_smartone->set('T_OrderDetailValidation', "N") ->set('T_OrderDetailValDate', null) ->set('T_OrderDetailValUserID', 0) ->where('T_OrderDetailT_OrderHeaderID', $prm['order_id']) ->where('T_OrderDetailIsActive', 'Y') ->where('T_OrderDetailValidation', 'Y') ->update('t_orderdetail'); $q = $this->db_smartone->last_query(); // LOG Process $order = $this->db_smartone->select('T_OrderDetailT_OrderHeaderID id, T_OrderHeaderLabNumber lab_number', false) ->join('t_orderheader', 'T_OrderHeaderID = T_OrderDetailT_OrderHeaderID') ->where('T_OrderDetailT_OrderHeaderID', $prm['order_id']) ->get('t_orderdetail') ->row(); $dblog = $this->load->database("onelog", true); $dblog->set('Log_ProcessCode', 'PROCESS.Result.Unvalidation') ->set('Log_ProcessOrderID', $order->id) ->set('Log_ProcessOrderNumber', $order->lab_number) ->set('Log_ProcessJson', '{}') ->set('Log_ProcessUserID', $this->sys_user['M_UserID']) ->insert('log_process'); // END OF Log Process $this->sys_ok($q); } function getpatologianatomyresult() { $prm = $this->sys_input; $id = $prm["id"]; $sql = " SELECT Other_PatologiAnatomyID as xid, Other_PatologiAnatomyT_OrderDetailID as orderdetail_id, Other_PatologiAnatomyNoSediaan as no_sediaan, Other_PatologiAnatomyDiagnosaKlinis as diagnosa, Other_PatologiAnatomyKeteranganKlinis as klinis, Other_PatologiAnatomyLokasiOrgan as lokasi, Other_PatologiAnatomyMakroskopik as makroskopik, Other_PatologiAnatomyMikroskopik as mikroskopik, Other_PatologiAnatomyKesimpulan as kesimpulan, IFNULL(Other_PatologiAnatomyM_DoctorID,0) as doctor_id, IF(ISNULL(Other_PatologiAnatomyM_DoctorID) OR Other_PatologiAnatomyM_DoctorID = 0 ,'0', CONCAT(M_DoctorPrefix,M_DoctorPrefix2,M_DoctorName,M_DoctorSufix,M_DoctorSufix2,M_DoctorSufix3)) as doctor_name FROM other_patologi_anatomy LEFT JOIN m_doctor ON Other_PatologiAnatomyM_DoctorID = M_DoctorID AND M_DoctorIsActive = 'Y' WHERE Other_PatologiAnatomyT_OrderDetailID = {$id} AND Other_PatologiAnatomyIsActive = 'Y' GROUP BY Other_PatologiAnatomyID ORDER BY Other_PatologiAnatomyID ASC LIMIT 1"; $query = $this->db_smartone->query($sql); if ($query) { $rows = $query->row_array(); $sql = " SELECT '0' as id, 'Belum memilih dokter' as name UNION SELECT M_DoctorID as id, CONCAT(M_DoctorPrefix,M_DoctorPrefix2,M_DoctorName,M_DoctorSufix,M_DoctorSufix2,M_DoctorSufix3) as name FROM m_doctorso JOIN m_doctor ON M_DoctorSOM_DoctorID = M_DoctorID AND M_DoctorIsActive = 'Y' WHERE M_DoctorSONat_SubGroupID = 9 AND M_DoctorSOIsActive = 'Y' ORDER BY name ASC"; //echo $sql; $doctors = $this->db_smartone->query($sql)->result_array(); $rst = array('doctors'=>$doctors,'result'=>$rows); $this->sys_ok(["records"=>$rst]); } else { $this->sys_error_db("Rerun rows", $this->db_smartone); exit; } } // Copas Fajri function firstprint() { if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $userid = $this->sys_user["M_UserID"]; $prm['T_OrderHeaderID'] = $prm['order_id']; $datarows = []; $query = " SELECT T_OrderDetailID,T_TestName FROM t_orderdetail JOIN t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsResult = 'Y' JOIN documentation_group_detail ON DocumentationGroupDetailNat_SubGroupID = T_TestNat_SubGroupID JOIN documentation_group ON DocumentationGroupDetailDocumentationGroupID = DocumentationGroupID AND DocumentationGroupName = 'lab' WHERE T_OrderDetailT_OrderHeaderID = {$prm['T_OrderHeaderID']} AND T_OrderDetailValidation = 'Y' AND T_OrderDetailPrintCount = 0 AND T_OrderDetailT_OrderPromiseID <> 0 AND ( T_OrderDetailResult <> '' OR T_OrderDetailResult IS NOT NULL ) AND T_OrderDetailIsActive = 'Y' GROUP BY T_OrderDetailID"; //echo $query; $datarows = $this->db_smartone->query($query)->result_array(); $ids = array(); $testname = array(); if($datarows) { foreach($datarows as $k => $v) { $sql = "UPDATE t_orderdetail SET T_OrderDetailPrintCount = 1 WHERE T_OrderDetailID = {$v['T_OrderDetailID']}"; $this->db_smartone->query($sql); array_push($ids,$v['T_OrderDetailID']); array_push($testname,$v['T_TestName']); } } $join_ids = "[".join(",",$ids)."]"; $join_testname = "[".join(",",$testname)."]"; $sql = "SELECT t_orderdelivery.*, M_DeliveryTypeCode as code FROM t_orderdelivery JOIN m_deliverytype ON T_OrderDeliveryM_DeliveryTypeID = M_DeliveryTypeID WHERE T_OrderDeliveryT_OrderHeaderID = {$prm['T_OrderHeaderID']} AND T_OrderDeliveryIsActive = 'Y' GROUP BY T_OrderDeliveryID "; //echo $sql; $result_delivery = $this->db_smartone->query($sql)->result_array(); $arr_deliveryid = array(); foreach($result_delivery as $i => $j){ array_push($arr_deliveryid,$j["T_OrderDeliveryM_DeliveryID"]); } foreach($result_delivery as $k => $v){ if($v['code'] == 'PICKUP'){ $sql = "INSERT INTO result_frontoffice( Result_FrontOfficeT_OrderHeaderID, Result_FrontOfficeIds, Result_FrontOfficeStatus, Result_FrontOfficeType, Result_FrontOfficeTestName, Result_FrontOfficeCreated, Result_FrontOfficeUserID ) VALUES( {$prm['T_OrderHeaderID']}, '{$join_ids}', 'P', 'lab', 'Pemeriksaan Laboratorium', NOW(), {$userid} ) ON DUPLICATE KEY UPDATE Result_FrontOfficeStatus = 'P', Result_FrontOfficeUserID = {$userid} "; $this->db_smartone->query($sql); $sql = "SELECT * FROM result_frontoffice WHERE Result_FrontOfficeT_OrderHeaderID = {$prm['T_OrderHeaderID']} AND Result_FrontOfficeIds = '{$join_ids}' AND Result_FrontOfficeType = 'lab'"; $rst_log = $this->db_smartone->query($sql)->result_array(); $dt_log = json_encode($rst_log); $sql = "INSERT INTO one_log.log_result_front_office( Log_ResultFrontOfficeDateTime, Log_ResultFrontOfficeJson, Log_ResultFrontOfficeUserID ) VALUES( NOW(), '{$dt_log}', {$userid} )"; $this->db_smartone->query($sql); } if($v['code'] == 'EMAIL'){ $type = "MANUAL"; if(in_array(1,$arr_deliveryid) && (in_array(3,$arr_deliveryid) || in_array(5,$arr_deliveryid) || in_array(11,$arr_deliveryid))){ $type = "FO"; } $sql = "INSERT INTO result_sendemail( Result_SendEmailT_OrderHeaderID, Result_SendEmailActionBy, Result_SendEmailIds, Result_SendEmailT_OrderDeliveryID, Result_SendEmailStatus, Result_SendEmailType, Result_SendEmailT_TestName, Result_SendEmailCreated, Result_SendEmailUserID ) VALUES( {$prm['T_OrderHeaderID']}, '{$type}', '{$join_ids}', {$v['T_OrderDeliveryID']}, 'P', 'lab', 'Pemeriksaan Laboratorium', NOW(), {$userid} ) ON DUPLICATE KEY UPDATE Result_SendEmailStatus = 'P', Result_SendEmailUserID = {$userid} "; $this->db_smartone->query($sql); $sql = "SELECT * FROM result_sendemail WHERE Result_SendEmailT_OrderHeaderID = {$prm['T_OrderHeaderID']} AND Result_SendEmailIds = '{$join_ids}' AND Result_SendEmailT_OrderDeliveryID = {$v['T_OrderDeliveryID']} AND Result_SendEmailType = 'lab' LIMIT 1"; $dt_log = json_encode($this->db_smartone->query($sql)->row_array()); $sql = "INSERT INTO one_log.log_resultsendemail ( Log_ResultSendEmailDatetime, Log_ResultSendEmailJson, Log_ResultSendEmailUserID ) VALUES( NOW(), '{$dt_log}', {$userid} )"; $this->db_smartone->query($sql); } if($v['code'] == 'ADDRESS'){ $sql = "INSERT INTO result_sendcourier( Result_SendCourierT_OrderHeaderID, Result_SendCourierIds, Result_SendCourierT_OrderDeliveryID, Result_SendCourierStatus, Result_SendCourierType, Result_SendCourierT_TestName, Result_SendCourierCreated, Result_SendCourierUserID ) VALUES( {$prm['T_OrderHeaderID']}, '{$join_ids}', {$v['T_OrderDeliveryID']}, 'P', 'lab', 'Pemeriksaan Laboratorium', NOW(), {$userid} ) ON DUPLICATE KEY UPDATE Result_SendCourierStatus = 'P', Result_SendCourierUserID = {$userid} "; $this->db_smartone->query($sql); $sql = "SELECT * FROM result_sendcourier WHERE Result_SendCourierT_OrderHeaderID = {$prm['T_OrderHeaderID']} AND Result_SendCourierIds = '{$join_ids}' AND Result_SendCourierT_OrderDeliveryID = {$v['T_OrderDeliveryID']} AND Result_SendCourierType = 'lab' LIMIT 1"; $dt_log = json_encode($this->db_smartone->query($sql)->row_array()); $sql = "INSERT INTO one_log.log_resultsendcourier ( Log_ResultSendCourierDateTime, Log_ResultSendCourierJson, Log_ResultSendCourierUserID ) VALUES( NOW(), '{$dt_log}', {$userid} )"; $this->db_smartone->query($sql); } //echo $sql; } return; // $result = array( // "total" => count($datarows) , // "records" => $datarows, // ); // $this->sys_ok($result); // exit; } }