sys_input; $xtype = $param['type']; //$user['ip'] = $_SERVER['REMOTE_ADDR']; //$user['agent'] = $_SERVER['HTTP_USER_AGENT']; if ($xtype) { $code = $this->generate_string($permitted_chars, 10); $token = str_shuffle(MD5(microtime())); try { $sql = "update token_mcu_api SET TokenMcuApiIsActive = 'N' WHERE TokenMcuApiType = ?"; $this->db->query($sql, array($xtype)); $sql = "insert into token_mcu_api(TokenMcuApiType,TokenMcuApiToken,TokenMcuApiCreated) values(?,?,NOW())"; $this->db->query($sql, array($xtype, $token)); echo json_encode( array("status" => "OK", "data" => $token, "message" => "") ); } catch (exception $e) { echo json_encode( array("status" => "ERR", "id" => 0, "message" => $e . message()) ); } } else { echo json_encode( array("status" => "ERR", "data" => '', "message" => "Belum ada parameter type") ); } } function check() { $param = $this->sys_input; $no_reg = $param['no_reg']; $patient = []; $test = []; $status_ready = "N"; $sql = " SELECT * FROM t_orderheader JOIN m_patient ON T_OrderHeaderM_PatientID = M_PatientID WHERE T_OrderHeaderIsActive = 'Y' AND T_OrderHeaderLabNumberExt = '{$no_reg}' LIMIT 1 "; $get_nolab = $this->db->query($sql)->row_array(); if ($get_nolab) { $patient['noreg'] = $get_nolab['T_OrderHeaderLabNumber']; $patient['noreg_ext'] = $get_nolab['T_OrderHeaderLabNumberExt']; $patient['name'] = $get_nolab['M_PatientName']; $sql = " SELECT T_OrderDetailT_TestSasCode as test_code, T_OrderDetailT_TestName as test_name, IF(ISNULL(So_ResultEntryID),'N','Y') as status_ready FROM t_orderheader JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID AND T_OrderDetailT_TestID IN (2562,2566,2563,2584,2564,3327,2565,2567,2568,2598,3340,3342) AND T_OrderDetailIsActive = 'Y' JOIN so_resultentry ON So_ResultEntryT_OrderHeaderID = So_ResultEntryT_OrderHeaderID AND So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y' WHERE T_OrderHeaderLabNumber = '{$patient['noreg']}' AND T_OrderHeaderIsActive = 'Y' LIMIT 1"; $check_ready = $this->db->query($sql)->result_array(); if ($check_ready) { $status_ready = "Y"; } $sql = " SELECT T_OrderDetailT_TestSasCode as test_code, T_OrderDetailT_TestName as test_name FROM t_orderheader JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID AND T_OrderDetailT_TestID IN (2562,2566,2563,2584,2564,3327,2565,2567,2568,2598,3340,3342) AND T_OrderDetailIsActive = 'Y' WHERE T_OrderHeaderLabNumber = '{$patient['noreg']}' AND T_OrderHeaderIsActive = 'Y' GROUP BY T_OrderDetailID"; $get_test = $this->db->query($sql)->result_array(); if ($get_test) { $test = $get_test; } echo json_encode( array("status" => "OK", "ready" => $status_ready, "patient" => $patient, "test" => $test, "message" => "") ); } else { echo json_encode( array("status" => "OK", "ready" => $status_ready, "patient" => $patient, "test" => $test, "message" => "Belum melakukan registrasi") ); } } function generate_string($input, $strength = 4) { $input_length = strlen($input); $random_string = ''; for ($i = 0; $i < $strength; $i++) { $random_character = $input[mt_rand(0, $input_length - 1)]; $random_string .= $random_character; } return $random_string; } // fungsi is_validate untuk check VAL1 dan VAL2 di so_resultentry function is_validate($So_ResultEntryID_prm) { try { // Cek token valid // if (!$this->isLogin) { // $this->sys_error("Invalid Token"); // exit; // } $prm = $this->sys_input; $userid = $this->sys_user["M_UserID"]; $So_ResultEntryID_x = 0; // if (empty($So_ResultEntryID_prm) || $So_ResultEntryID_prm != 0) { // $So_ResultEntryID_x = $So_ResultEntryID_prm; // } if (empty($So_ResultEntryID_prm)) { $this->sys_error("So_ResultEntryID is empty"); exit; } else { $So_ResultEntryID_x = $So_ResultEntryID_prm; } $sql_find = "SELECT * FROM so_resultentry WHERE So_ResultEntryID = $So_ResultEntryID_x AND ( So_ResultEntryStatus = 'VAL1' OR So_ResultEntryStatus = 'VAL2' )"; $qry_find = $this->db->query($sql_find); if (!$qry_find) { $this->sys_error_db("error: so_resultentry count", $this->db); exit; } $row_find = $qry_find->result_array(); if (count($row_find) > 0) { $So_ResultEntryStatus = $row_find[0]['So_ResultEntryStatus']; $message = "So_ResultEntryID : {$So_ResultEntryID_x}, Already Validated with So_ResultEntryStatus value : [{$So_ResultEntryStatus}]"; echo json_encode(["status" => "ERR", "code" => "E01", "message" => $message]); exit; } else { // $this->sys_ok('OK'); /* echo json_encode([ 'status' => 'OK', 'message' => 'OK' ]); exit; */ } } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function save() { $prm = $this->sys_input; $userid = -1; $rst = array(); $sql = "SELECT * FROM token_mcu_api WHERE TokenMcuApiType = 'FISIK' AND TokenMcuApiToken = '{$prm['token']}' AND TokenMcuApiIsActive = 'Y'"; //echo $sql; $check_token = $this->db->query($sql)->row_array(); if ($check_token) { $sql = " SELECT * FROM t_orderheader JOIN t_orderdetail ON T_OrderDetailT_OrderHeaderID = T_OrderHeaderID AND T_OrderDetailT_TestID IN (2562,2566,2563,2584,2564,3327,2565,2567,2568,2598,3340,3342) AND T_OrderDetailIsActive = 'Y' JOIN so_resultentry ON So_ResultEntryT_OrderHeaderID = So_ResultEntryT_OrderHeaderID AND So_ResultEntryT_OrderDetailID = T_OrderDetailID AND So_ResultEntryIsActive = 'Y' WHERE T_OrderHeaderLabNumberExt = '{$prm['trx_numbering']}' LIMIT 1 "; $data_row = $this->db->query($sql)->row_array(); //Add if no so result entry if (count($data_row) == 0) { echo json_encode(["status" => "ERR", "code" => "E02", "message" => "So_ResultEntryID not exists."]); exit; } if (!in_array($prm["template"], ["UMUM", "UMUM_K3", "UMUM_KONSUL"])) { echo json_encode(["status" => "ERR", "code" => "E03", "message" => "template {$prm["template"]} unknown"]); exit; } if ($prm['template'] == 'UMUM' || $prm['template'] == 'UMUM_K3' || $prm['template'] == 'UMUM_KONSUL') { // CHECK So_ResultEntryStatus $So_ResultEntryID = $data_row['So_ResultEntryID']; $this->is_validate($So_ResultEntryID); $riwayats = str_replace('\'', '\\\'', json_encode($prm["riwayats"], JSON_UNESCAPED_UNICODE | JSON_HEX_APOS | JSON_HEX_QUOT)); if (json_last_error() != JSON_ERROR_NONE) { echo json_encode(["status" => "ERR", "code" => "E04", "message" => "Json encode error riwayat", "info" => json_last_error_msg()]); exit; } $riwayats = addslashes(str_replace('\"', '\\\"', $riwayats)); // harus ada parameter $prm["riwayats_last_updated"] // get_last_update(So_ResultEntryID, Typ, table) => last_updated // // hanya akan di update jika riwayat_last_updted > di table // $sql = "INSERT INTO so_resultentry_fisik_umum ( So_ResultEntryFisikUmumSo_ResultEntryID, So_ResultEntryFisikUmumM_LangID, So_ResultEntryFisikUmumType, So_ResultEntryFisikUmumDetails, So_ResultEntryFisikUmumUserID, So_ResultEntryFisikUmumCreated ) VALUES( {$data_row['So_ResultEntryID']}, {$prm['language_id']}, 'riwayat', '{$riwayats}', {$userid}, NOW() ) ON DUPLICATE KEY UPDATE So_ResultEntryFisikUmumDetails = '{$riwayats}', So_ResultEntryFisikUmumUserID = {$userid} "; $rst = $this->db->query($sql); if (!$rst) { echo json_encode([ "status" => "ERR", "message" => "Error query " . $this->db->error()["message"], "sql" => $this->db->last_query() ]); exit; } // echo $sql; $fisiks = str_replace('\'', '\\\'', json_encode($prm["fisiks"], JSON_UNESCAPED_UNICODE | JSON_HEX_APOS | JSON_HEX_QUOT)); $fisiks = addslashes(str_replace('\"', '\\\"', $fisiks)); if (json_last_error() != JSON_ERROR_NONE) { echo json_encode(["status" => "ERR", "code" => "E04", "message" => "Json encode error fisik", "info" => json_last_error_msg()]); exit; } $sql = "INSERT INTO so_resultentry_fisik_umum ( So_ResultEntryFisikUmumSo_ResultEntryID, So_ResultEntryFisikUmumM_LangID, So_ResultEntryFisikUmumType, So_ResultEntryFisikUmumDetails, So_ResultEntryFisikUmumUserID, So_ResultEntryFisikUmumCreated ) VALUES( {$data_row['So_ResultEntryID']}, {$prm['language_id']}, 'fisik', '{$fisiks}', {$userid}, NOW() ) ON DUPLICATE KEY UPDATE So_ResultEntryFisikUmumDetails = '{$fisiks}', So_ResultEntryFisikUmumUserID = {$userid} "; $rst = $this->db->query($sql); if (!$rst) { echo json_encode([ "status" => "ERR", "message" => "Error query " . $this->db->error()["message"] ]); exit; } //echo $sql; $umum_saran = $prm['umum_saran']; $sql = "INSERT INTO so_resultentry_fisik_umum ( So_ResultEntryFisikUmumSo_ResultEntryID, So_ResultEntryFisikUmumM_LangID, So_ResultEntryFisikUmumType, So_ResultEntryFisikUmumDetails, So_ResultEntryFisikUmumUserID, So_ResultEntryFisikUmumCreated ) VALUES( {$data_row['So_ResultEntryID']}, {$prm['language_id']}, 'saran', '{$umum_saran}', {$userid}, NOW() ) ON DUPLICATE KEY UPDATE So_ResultEntryFisikUmumDetails = '{$umum_saran}', So_ResultEntryFisikUmumUserID = {$userid} "; //echo $sql; $rst = $this->db->query($sql); if (!$rst) { echo json_encode([ "status" => "ERR", "message" => "Error query " . $this->db->error()["message"] ]); } } if ($prm['template'] == 'UMUM_K3') { // CHECK So_ResultEntryStatus $So_ResultEntryID = $data_row['So_ResultEntryID']; $this->is_validate($So_ResultEntryID); $k3s = str_replace('\'', '\\\'', json_encode($prm["k3s"], JSON_UNESCAPED_UNICODE | JSON_HEX_APOS | JSON_HEX_QUOT)); $k3s = addslashes(str_replace('\"', '\\\"', $k3s)); if (json_last_error() != JSON_ERROR_NONE) { echo json_encode(["status" => "ERR", "code" => "E04", "message" => "Json encode error k3s", "info" => json_last_error_msg()]); exit; } $sql = "INSERT INTO so_resultentry_fisik_umum ( So_ResultEntryFisikUmumSo_ResultEntryID, So_ResultEntryFisikUmumM_LangID, So_ResultEntryFisikUmumType, So_ResultEntryFisikUmumDetails, So_ResultEntryFisikUmumUserID, So_ResultEntryFisikUmumCreated ) VALUES( {$data_row['So_ResultEntryID']}, {$prm['language_id']}, 'k3', '{$k3s}', {$userid}, NOW() ) ON DUPLICATE KEY UPDATE So_ResultEntryFisikUmumDetails = '{$k3s}', So_ResultEntryFisikUmumUserID = {$userid} "; $rst = $this->db->query($sql); if (!$rst) { echo json_encode([ "status" => "ERR", "message" => "Error query " . $this->db->error()["message"] ]); exit; } //echo $query; } if ($prm['template'] == 'UMUM_KONSUL') { // CHECK So_ResultEntryStatus $So_ResultEntryID = $data_row['So_ResultEntryID']; $this->is_validate($So_ResultEntryID); $konsul = $prm['konsul']; foreach ($konsul as $k => $v) { $sql = "INSERT INTO so_resultentry_fisik_umum ( So_ResultEntryFisikUmumSo_ResultEntryID, So_ResultEntryFisikUmumM_LangID, So_ResultEntryFisikUmumType, So_ResultEntryFisikUmumDetails, So_ResultEntryFisikUmumUserID, So_ResultEntryFisikUmumCreated ) VALUES( {$data_row['So_ResultEntryID']}, {$prm['language_id']}, '{$v['type']}', '{$v['result']}', {$userid}, NOW() ) ON DUPLICATE KEY UPDATE So_ResultEntryFisikUmumDetails = '{$v['result']}', So_ResultEntryFisikUmumUserID = {$userid} "; //echo $sql; $rst = $this->db->query($sql); if (!$rst) { echo json_encode([ "status" => "ERR", "message" => "Error query " . $this->db->error()["message"], "sql" => $this->db->last_query() ]); } } } echo json_encode( array("status" => "OK", "data" => "", "message" => "") ); } else { echo json_encode( array("status" => "ERR", "data" => "", "message" => "Maaf token invalid") ); } } function raw() { $param = $this->sys_input; try { $instrumentID = $param["instrumentID"]; $data = $param["data"]; $sql = "insert into itf_raw(itf_RawNat_InstrumentID,itf_RawData) values(?,?)"; $this->db_one->query($sql, array($instrumentID, base64_decode($data))); echo json_encode( array("status" => "OK", "id" => $this->db_one->insert_id(), "message" => "") ); } catch (exception $e) { echo json_encode( array("status" => "ERR", "id" => 0, "message" => $e . message()) ); } } }