def post(self): req_data = request.get_json() or None schema = UserSchema() if req_data is None: return resp_data_invalid('Login', [], msg=MSG_NO_DATA) data, errors = schema.load(req_data) if errors: return resp_data_invalid('Login', errors) try: usuarioList = UsuarioModel.objects.get(cpf=data['cpf'], password=data['password']) return resp_ok('Login', MSG_SUCCESS, json.loads(usuarioList.to_json())) except DoesNotExist: return resp_does_not_exist('Login', MSG_PASSWORD_OR_CPF_INVALID) except Exception as e: return resp_exception('Login', description=e.__str__())
def get(self, user_id): user = get_user_by_id(user_id) if not isinstance(user, User): return user try: user.ativo = False user.save() except NotUniqueError: return resp_already_exists('Users', 'usuário') except ValidationError as e: return resp_exception('Users', msg=MSG_INVALID_DATA, description=e.__str__()) except Exception as e: return resp_exception('Users', description=e.__str__()) return resp_ok('Users', MSG_RESOURCE_INATIVO.format('Usuário'))
def post(self, *args, **kwargs): req_data = request.get_json() or None schema = TriagemSchema() if req_data is None: return resp_data_invalid('Triagem', [], msg=MSG_NO_DATA) data, errors = schema.load(req_data) if errors: return resp_data_invalid('Triagem', errors) try: triagem = TriagemModel(**data) triagem.save() ListaEsperaModel.objects.get(cpf=data['cpf']).delete() ListaEsperaModel.save() return resp_ok('Triagem', MSG_SUCCESS, {'valido': True}) except Exception as e: return resp_exception('Triagem', description=e.__str__())
def get(self, user_id): result = None schema = UserSchema() current_user = get_user_by_email(get_jwt_identity()) if not isinstance(current_user, User): return current_user if not (current_user.is_active()) and current_user.is_admin(): return resp_notallowed_user('Users') user = get_user_by_id(user_id) if not isinstance(user, User): return user result = schema.dump(user) return resp_ok('Users', MSG_RESOURCE_FETCHED.format('Usuários'), data=result.data)
def post(self, *args, **kwargs): req_data = request.get_json() or None user = None login_schema = LoginSchema() schema = UserSchema() if req_data is None: return resp_data_invalid('Users', [], msg=MSG_NO_DATA) data, errors = login_schema.load(req_data) if errors: return resp_data_invalid('Users', errors) user = get_user_by_email(data.get('email')) if not isinstance(user, User): return user if not user.is_active(): return resp_notallowed_user('Auth') if checkpw( data.get('senha').encode('utf-8'), user.senha.encode('utf-8')): extras = { 'token': create_access_token(identity=user.email), 'refresh': create_refresh_token(identity=user.email) } result = schema.dump(user) return resp_ok('Auth', MSG_TOKEN_CREATED, data=result.data, **extras) return resp_notallowed_user('Auth')
def delete(self, user_id): user = get_user('Users', object_id=user_id) if not isinstance(user, User): return user user.active = False try: user.save() except NotUniqueError as e: return resp_already_exists('Users', 'usuário') except ValidationError as e: return resp_exception( 'Users', msg=_MSG300, description=e ) except Exception as e: return resp_exception('Users', description=e) return resp_ok('Users', _MSG203.format('Usuário'))
def post(self, *args, **kwargs): # Inicializo todas as variaveis utilizadas req_data = request.get_json() or None data, errors, result = None, None, None # password, confirm_password = None, None schema = PlanetRegistrationSchema() # Se meus dados postados forem Nulos retorno uma respota inválida if req_data is None: return resp_data_invalid('Planets', [], msg=MSG_INVALID_DATA) # Desserialização os dados postados ou melhor meu payload data, errors = schema.load(req_data) # Se houver erros retorno uma resposta inválida if errors: return resp_data_invalid('Planets', errors) try: model = Planet(**data) model.save() except NotUniqueError: return resp_already_exists('Planets', 'local') except ValidationError as e: return resp_exception('Planets', msg=MSG_INVALID_DATA, description=e.__str__()) except Exception as e: return resp_exception('Planets', description=e.__str__()) # Realizo um dump dos dados de acordo com o modelo salvo schema = PlanetSchema() result = schema.dump(model) # Retorno 200 o meu endpoint return resp_ok( 'Planets', MSG_RESOURCE_CREATED.format('Planet'), data=result.data )
def get(self): # Initialize schema schema = CollaboratorSchema(many=True) try: # Fetch all collaborators collaborators = Collaborator.objects() except FieldDoesNotExist as e: return resp_exception('CollaboratorsServices', description=e.__str__()) except Exception as e: return resp_exception('CollaboratorsServices', description=e.__str__()) # Dump objects returned result = schema.dump(collaborators) return resp_ok( 'CollaboratorsServices', MSG_RESOURCE_FETCHED_LISTED.format('colaboradores'), data=result.data )
def get(self): # Initialize schema schema = PointSchema(many=True) try: # Fetch all points points = Point.objects() except FieldDoesNotExist as e: return resp_exception('PointsServices', description=e.__str__()) except Exception as e: return resp_exception('PointsServices', description=e.__str__()) # Dump objects returned result = schema.dump(points) return resp_ok( 'PointsServices', MSG_RESOURCE_FETCHED_LISTED.format('pontos'), data=result.data )
def put(self, username): schema = UserSchema() up_schema = UserUpdateSchema() req_data = request.get_json() or None user = get_user_by_user_name(username) if not isinstance(user, User): return user try: user_up = up_schema.load(req_data, unknown=EXCLUDE) except MarshmallowValidationError as e: return resp_data_invalid("Users", e.messages) if user_up.get("user_name") and user_up.get("user_name") != username: return resp_data_invalid("Users", {"user_name": user_up.get("user_name")}, "Nao pode alterar o nome de usuário") try: for k, v in user_up.items(): if k == "address": for k_addr, v_addr in v.items(): user["address"][k_addr] = v_addr else: user[k] = v except Exception as e: return resp_exception("Users-Aqui", description=e.__str__()) save_result = save_model(user, "Users", "Usuário") if not isinstance(save_result, User): return save_result result = schema.dump(save_result) return resp_ok("Users", MSG_RESOURCE_UPDATED.format("Usuário", username), data=result)
def post(self, *args, **kwargs): # Initialize variables req_data = request.get_json(force=True) or None data, errors, result = None, None, None schema = PointRegistrationSchema() # When datas are null if req_data is None: return resp_data_invalid('PointsServices', [], msg=MSG_NO_DATA) collaborator = get_collaborator_by_rf(rf=req_data['rf']) # Desserialize data data, errors = schema.load(req_data) # Return invalid response when there is a error if errors: return resp_data_invalid('PointsServices', errors) # Save the model. If get Exception, return JSON response. try: model = Point(**data) model.save() except ValidationError as e: return resp_exception('PointsServices', msg=MSG_INVALID_DATA, description=e) except Exception as e: return resp_exception('PointsServices', description=e) # Dump data of model schema = PointSchema() result = schema.dump(model) return resp_ok( 'PointsServices', MSG_RESOURCE_CREATED.format('Ponto'), data=result.data, )
def register_user(payload): if payload is None: return resp_data_invalid('Users', [], msg=MSG_NO_DATA) schema = UserRegistrationSchema() try: data = schema.load(payload) except ValidationError as error: return resp_data_invalid('Users', error.messages) password = payload.get('password', None) data['password'] = hashpw(password.encode('utf-8'), gensalt(12)) data['email'] = data['email'].lower() try: full_name, password, email = data['full_name'], data['password'], data[ 'email'] user = User(full_name=full_name, password=password, email=email) save_changes(user) except IntegrityError: return resp_already_exists('Users', "usuário") except Exception as e: return resp_exception('Users', description=e) schema = UserSchema() result = schema.dump(user) extras = { 'token': create_access_token(identity=email), 'refresh': create_refresh_token(identity=email) } return resp_ok('Users', MSG_RESOURCE_CREATED.format('Usuário'), data=result, **extras)
def put(self, user_id): req_data = request.get_json() or None if req_data is None: return resp_form_invalid('Users', [], msg=_MSG312) schema = UpdateUserSchema() user = get_user('Users', object_id=user_id) if not isinstance(user, User): return user data, errors = schema.load(req_data) if errors: return resp_form_invalid('Users', errors) try: for i in data.keys(): user[i] = data[i] user.save() except NotUniqueError as e: return resp_already_exists('Users', 'usuário') except ValidationError as e: return resp_exception('Users', msg=_MSG300, description=e) except Exception as e: return resp_exception('Users', description=e) schema = UserSchema() result = schema.dump(user) return resp_ok( 'Users', _MSG202.format('Usuário'), data=result.data )
def post(self, *args, **kwargs): req_data = request.get_json() or None data, erros, result = None, None, None password, confirm_password = None, None schema = UserRegistrationSchema() if req_data is None: return resp_data_invalid("Users", [], msg=MSG_NO_DATA) password = req_data.get("password") confirm_password = req_data.pop("confirm_password") if not check_password_in_signup(password, confirm_password): errors = {"password": MSG_CHECK_PASSWORD_FAILED} return resp_data_invalid("Users", errors) try: data = schema.load(req_data) except MarshmallowValidationError as e: return resp_data_invalid("Users", e.messages) hashed = hashpw(password.encode("utf-8"), gensalt(12)).decode("utf-8") data["password"] = hashed data["email"] = data["email"].lower() model = User(**data) print(data) save_result = save_model(model, "Users", "Usuário") if not isinstance(save_result, User): return save_result schema = UserSchema() result = schema.dump(model) return resp_ok("Users", MSG_RESOURCE_CREATED.format("Usuário"), data=result)
def get(self, page_id=1): schema = OrderSchema(many=True) page_size = 10 if 'page_size' in request.args: if int(request.args.get('page_size')) < 1: page_size = 10 else: page_size = int(request.args.get('page_size')) try: order = OrderModel.objects().paginate(page_id, page_size) except FieldDoesNotExist as e: return resp_exception('Users', description=e.__str__()) except FieldDoesNotExist as e: return resp_exception('Users', description=e.__str__()) except Exception as e: return resp_exception('Users', description=e.__str__()) extra = { 'page': order.page, 'pages': order.pages, 'total': order.total, 'params': { 'page_size': page_size } } result = schema.dump(order.items) return resp_ok('Order', MSG_RESOURCE_FETCHED_PAGINATED.format('compras'), data=result, **extra)
def put(self, planet_id): result = None schema = PlanetSchema() update_schema = PlanetUpdateSchema() req_data = request.get_json() or None planet = get_planet_by_id(planet_id) data, errors = update_schema.load(req_data) if errors: return resp_data_invalid('Planets', errors) try: for i in data.keys(): planet[i] = data[i] planet.save() except NotUniqueError: return resp_already_exists('Planets', 'planet') except ValidationError as e: return resp_exception('Planets', msg=MSG_INVALID_DATA, description=e.__str__()) except Exception as e: return resp_exception('Planets', description=e.__str__()) result = schema.dump(planet) return resp_ok('Planets', MSG_RESOURCE_UPDATED.format('Planet'), data=result.data)
def get(self, page_id=1): schema = UserSchema(many=True) page_size = 10 param_ativo = 'true' if int(request.args.get('ativo')) == 1 else '' if 'page_size' in request.args: if int(request.args.get('page_size')) < 1: page_size = 10 else: page_size = int(request.args.get('page_size')) try: users = User.objects(ativo=bool(param_ativo)).paginate( page_id, page_size) except FieldDoesNotExist as e: return resp_exception('Users', description=e.__str__()) except Exception as e: return resp_exception('Users', description=e.__str__()) extra = { 'page': users.page, 'pages': users.pages, 'total': users.total, 'params': { 'page_size': page_size } } result = schema.dump(users.items) return resp_ok('Users', MSG_RESOURCE_FETCHED_PAGINATED.format('usuários'), data=result.data, **extra)
def get(self, page_id=1): sc = PlanetSchema(many=True) # paginate definid page_size = 10 if 'page_size' in request.args: if int(request.args.get('page_size')) < 1: page_size = 10 else: page_size = int(request.args.get('page_size')) try: # list all planets in database planets = Planet.objects().paginate(page_id, page_size) except FieldDoesNotExist as e: return resp_exception('Planets', description=e.__str__()) except Exception as e: return resp_exception('Planets', description=e.__str__()) extra = { 'page': planets.page, 'pages': planets.pages, 'total': planets.total, 'params': { 'page_size': page_size } } result = sc.dump(planets.items) return resp_ok('Planets', MSG_RESOURCE_FETCHED_PAGINATED.format('planets'), data=result.data, **extra)
def post(self): req_data = request.get_json() or None schema = PacientSchema() if req_data is None: return resp_data_invalid('Cadastro de Paciente', [], msg=MSG_NO_DATA) data, errors = schema.load(req_data) if errors: return resp_data_invalid('Cadastro de Paciente', errors) try: model = PacienteModel.objects.get(cpf=data['cpf']) print(model) # PacienteModel.update({'_id':mongo_id}, {"$set": post}, upsert=False) # pacient = PacienteModel(**data) # pacient.save() return resp_ok('Cadastro de Paciente', MSG_SUCCESS, json.loads(model.to_json())) except Exception as e: return resp_exception('Cadastro de Paciente', description=e.__str__())
def get(self): #en = {1:"Azul", 2: "Verde", 3: "Amarelo", 4: "Laranja", 5: "Vermelho"} // Classificação de Manchester #region .: Variaveis de Entrada :. DadosVitaisAlterados = request.args.get('DadosVitais') Dor = request.args.get('Dor') Nuca = request.args.get('Nuca') SinaisNeurologicos = request.args.get('SinaisNeurologicos') PAS = request.args.get('PAS') PAD = request.args.get('PAD') #endregion #region .: Verificação de valores da API :. if DadosVitaisAlterados is None or DadosVitaisAlterados == '': DadosVitaisAlterados = 10 if Dor is None or Dor == '': Dor = 10 if Nuca is None or Nuca == '': Nuca = 10 if SinaisNeurologicos is None or SinaisNeurologicos == '': SinaisNeurologicos = 10 if PAD is None or PAD == '': PAD = 10 if PAS is None or PAS == '': PAS = 10 #endregion #region .: Definição do range de cada sintoma :. vl_DadosVitaisAlterados = np.arange(0, 101, 1) vl_Dor = np.arange(0, 101, 1) vl_Nuca = np.arange(0, 101, 1) vl_SinaisNeurologicos = np.arange(0, 101, 1) vl_PAS = np.arange(0, 101, 1) vl_PAD = np.arange(0, 101, 1) x_saida = np.arange(0, 61, 1) #endregion #region .: Definição do range da pertinencia de cada sintoma :. DadosVitaisAlterados_baixo = fuzz.trapmf(vl_DadosVitaisAlterados, [0, 20, 30, 40]) DadosVitaisAlterados_normal = fuzz.trimf(vl_DadosVitaisAlterados, [30, 60, 80]) DadosVitaisAlterados_alto = fuzz.trapmf(vl_DadosVitaisAlterados, [80, 85, 90, 100]) Dor_baixo = fuzz.trapmf(vl_Dor, [0, 20, 50, 70]) Dor_normal = fuzz.trimf(vl_Dor, [65, 80, 90]) Dor_alto = fuzz.trapmf(vl_Dor, [75, 85, 95, 100]) Nuca_baixo = fuzz.trapmf(vl_Nuca, [0, 20, 30, 60]) Nuca_normal = fuzz.trimf(vl_Nuca, [50, 60, 80]) Nuca_alto = fuzz.trapmf(vl_Nuca, [80, 85, 90, 100]) SinaisNeurologicos_baixo = fuzz.trapmf(vl_SinaisNeurologicos, [0, 20, 50, 70]) SinaisNeurologicos_normal = fuzz.trimf(vl_SinaisNeurologicos, [65, 80, 90]) SinaisNeurologicos_alto = fuzz.trapmf(vl_SinaisNeurologicos, [75, 85, 95, 100]) PAS_baixo = fuzz.trapmf(vl_PAS, [0, 20, 50, 70]) PAS_normal = fuzz.trimf(vl_PAS, [65, 80, 90]) PAS_alto = fuzz.trapmf(vl_PAS, [75, 85, 95, 100]) PAD_baixo = fuzz.trapmf(vl_PAD, [0, 20, 50, 70]) PAD_normal = fuzz.trimf(vl_PAD, [65, 80, 90]) PAD_alto = fuzz.trapmf(vl_PAD, [75, 85, 95, 100]) saida_verde = fuzz.trapmf(x_saida, [0, 5, 10, 20]) saida_amarelo = fuzz.trimf(x_saida, [20, 30, 40]) saida_vermelho = fuzz.trapmf(x_saida, [40, 45, 55, 60]) print("chegou aqui") #endregion #region .: Função de ativação para cada nivel definido anteriormente :. DadosVitaisAlterados_level_baixo = fuzz.interp_membership( vl_DadosVitaisAlterados, DadosVitaisAlterados_baixo, DadosVitaisAlterados) DadosVitaisAlterados_level_medio = fuzz.interp_membership( vl_DadosVitaisAlterados, DadosVitaisAlterados_normal, DadosVitaisAlterados) DadosVitaisAlterados_level_alto = fuzz.interp_membership( vl_DadosVitaisAlterados, DadosVitaisAlterados_alto, DadosVitaisAlterados) Dor_level_baixo = fuzz.interp_membership(vl_Dor, Dor_baixo, Dor) Dor_level_medio = fuzz.interp_membership(vl_Dor, Dor_normal, Dor) Dor_level_alto = fuzz.interp_membership(vl_Dor, Dor_alto, Dor) Nuca_level_baixo = fuzz.interp_membership(vl_Nuca, Nuca_baixo, Nuca) Nuca_level_medio = fuzz.interp_membership(vl_Nuca, Nuca_normal, Nuca) Nuca_level_alto = fuzz.interp_membership(vl_Nuca, Nuca_alto, Nuca) SinaisNeurologicos_level_baixo = fuzz.interp_membership( vl_SinaisNeurologicos, SinaisNeurologicos_baixo, SinaisNeurologicos) SinaisNeurologicos_level_medio = fuzz.interp_membership( vl_SinaisNeurologicos, SinaisNeurologicos_normal, SinaisNeurologicos) SinaisNeurologicos_level_alto = fuzz.interp_membership( vl_SinaisNeurologicos, SinaisNeurologicos_alto, SinaisNeurologicos) #PAS_level_baixo = fuzz.interp_membership(vl_PAS, PAS_baixo, PAS) #PAS_level_medio = fuzz.interp_membership(vl_PAS, PAS_normal, PAS) PAS_level_alto = fuzz.interp_membership(vl_PAS, PAS_alto, PAS) #PAD_level_baixo = fuzz.interp_membership(vl_PAD, PAD_baixo, PAD) #PAD_level_medio = fuzz.interp_membership(vl_PAD, PAD_normal, PAD) PAD_level_alto = fuzz.interp_membership(vl_PAD, PAD_alto, PAD) #endregion try: #region .: Definição das regras para o valor de saida :. saida_vermelho_regras = np.fmin( np.fmax( np.fmax(np.fmax(PAS_level_alto, Dor_level_alto), DadosVitaisAlterados_level_alto), np.fmax( np.fmax(PAD_level_alto, SinaisNeurologicos_level_alto), Nuca_level_alto)), saida_vermelho) saida_amarelo_regras = np.fmin( np.fmax( np.fmax( np.fmin(Nuca_level_medio, Nuca_level_alto), np.fmin(SinaisNeurologicos_level_medio, Dor_level_alto)), DadosVitaisAlterados_level_medio), saida_amarelo) saida_verde_regras = np.fmin( np.fmin( np.fmax(Dor_level_baixo, Dor_level_medio), np.fmax( np.fmax(DadosVitaisAlterados_level_baixo, Nuca_level_baixo), SinaisNeurologicos_level_baixo)), saida_verde) aggregated = np.fmax( saida_verde_regras, np.fmax(saida_amarelo_regras, saida_vermelho_regras)) #endregion #region .: Defuzzificação e retorno de label para o serviço :. result = fuzz.defuzzify.defuzz(x_saida, aggregated, 'mom') defuzz = '' if result > 0 and result <= 20: defuzz = 'Verde' elif result > 20 and result <= 40: defuzz = 'Amarelo' else: defuzz = 'Vermelho' #endregion return resp_ok('Cefaléia', MSG_SUCCESS, defuzz) except Exception as e: return resp_exception('Cefaléia', description=e.__str__())
def post(self, *args, **kwargs): # Inicializo todas as variaveis utilizadas req_data = request.get_json() or None data, errors, result = None, None, None password, confirm_password = None, None schema = UserRegistrationSchema() # Se meus dados postados forem Nulos retorno uma respota inválida if req_data is None: return resp_data_invalid('Users', [], msg=MSG_NO_DATA) password = req_data.get('password', None) confirm_password = req_data.pop('confirm_password', None) # verifico através de uma função a senha e a confirmação da senha # Se as senhas não são iguais retorno uma respota inválida if not check_password_in_signup(password, confirm_password): errors = {'password': MSG_PASSWORD_DIDNT_MATCH} return resp_data_invalid('Users', errors) # Desserialização os dados postados ou melhor meu payload data, errors = schema.load(req_data) # Se houver erros retorno uma resposta inválida if errors: return resp_data_invalid('Users', errors) # Crio um hash da minha senha hashed = hashpw(password.encode('utf-8'), gensalt(12)) # Salvo meu modelo de usuário com a senha criptografada e email # em lower case # Qualquer exceção ao salvar o modelo retorno uma resposta em JSON # ao invés de levantar uma exception no servidor try: data['password'] = hashed data['email'] = data['email'].lower() model = User(**data) model.save() except NotUniqueError: return resp_already_exists('Users', 'usuário') except ValidationError as e: return resp_exception('Users', msg=MSG_INVALID_DATA, description=e.__str__()) except Exception as e: return resp_exception('Users', description=e.__str__()) extras = { 'token': create_access_token(identity=model.email), 'refresh': create_refresh_token(identity=model.email) } # Realizo um dump dos dados de acordo com o modelo salvo schema = UserSchema() result = schema.dump(model) # Retorno 200 o meu endpoint return resp_ok('Users', MSG_RESOURCE_CREATED.format('Usuário'), data=result.data, **extras)
def get(self): #en = {1:"Azul", 2: "Verde", 3: "Amarelo", 4: "Laranja", 5: "Vermelho"} // Classificação de Manchester #region .: Variaveis de Entrada :. DadosVitaisAlterados = request.args.get('DadosVitais') Glasgow = request.args.get('Glasgow') IntoxicacaoExogena = request.args.get('IntoxicacaoExogena') Convulsao = request.args.get('Convulsao') Epilepsia = request.args.get('Epilepsia') #endregion #region .: Verificação de valores da API :. if DadosVitaisAlterados is None or DadosVitaisAlterados == '': DadosVitaisAlterados = 10 if Glasgow is None or Glasgow == '': Glasgow = 10 if IntoxicacaoExogena is None or IntoxicacaoExogena == '': IntoxicacaoExogena = 10 if Convulsao is None or Convulsao == '': Convulsao = 10 if Epilepsia is None or Epilepsia == '': Epilepsia = 10 #endregion #region .: Definição do range de cada sintoma :. vl_DadosVitaisAlterados = np.arange(0, 101, 1) vl_Glasgow = np.arange(3, 16, 1) vl_IntoxicacaoExogena = np.arange(0, 101, 1) vl_Convulsao = np.arange(0, 101, 1) vl_Epilepsia = np.arange(0, 101, 1) x_saida = np.arange(0, 61, 1) #endregion #region .: Definição do range da pertinencia de cada sintoma :. DadosVitaisAlterados_baixo = fuzz.trapmf(vl_DadosVitaisAlterados, [0, 20, 30, 45]) DadosVitaisAlterados_normal = fuzz.trimf(vl_DadosVitaisAlterados, [35, 60, 85]) DadosVitaisAlterados_alto = fuzz.trapmf(vl_DadosVitaisAlterados, [80, 85, 95, 100]) Glasgow_alto = fuzz.trapmf(vl_Glasgow, [3, 5, 8, 9]) Glasgow_normal = fuzz.trimf(vl_Glasgow, [9, 11, 13]) Glasgow_baixo = fuzz.trapmf(vl_Glasgow, [12, 13, 14, 15]) IntoxicacaoExogena_baixo = fuzz.trapmf(vl_IntoxicacaoExogena, [0, 20, 30, 45]) IntoxicacaoExogena_normal = fuzz.trimf(vl_IntoxicacaoExogena, [35, 60, 85]) IntoxicacaoExogena_alto = fuzz.trapmf(vl_IntoxicacaoExogena, [80, 85, 95, 100]) Convulsao_baixo = fuzz.trapmf(vl_Convulsao, [0, 20, 30, 45]) Convulsao_normal = fuzz.trimf(vl_Convulsao, [35, 60, 85]) Convulsao_alto = fuzz.trapmf(vl_Convulsao, [80, 85, 95, 100]) Epilepsia_baixo = fuzz.trapmf(vl_Epilepsia, [0, 20, 30, 45]) Epilepsia_normal = fuzz.trimf(vl_Epilepsia, [35, 60, 85]) Epilepsia_alto = fuzz.trapmf(vl_Epilepsia, [80, 85, 95, 100]) saida_azul = fuzz.trapmf(x_saida, [0, 3, 12, 15]) saida_verde = fuzz.trimf(x_saida, [15, 22, 29]) saida_amarelo = fuzz.trimf(x_saida, [29, 36, 43]) saida_vermelho = fuzz.trapmf(x_saida, [43, 47, 57, 60]) #endregion #region .: Função de ativação para cada nivel definido anteriormente :. DadosVitaisAlterados_level_baixo = fuzz.interp_membership( vl_DadosVitaisAlterados, DadosVitaisAlterados_baixo, DadosVitaisAlterados) DadosVitaisAlterados_level_medio = fuzz.interp_membership( vl_DadosVitaisAlterados, DadosVitaisAlterados_normal, DadosVitaisAlterados) DadosVitaisAlterados_level_alto = fuzz.interp_membership( vl_DadosVitaisAlterados, DadosVitaisAlterados_alto, DadosVitaisAlterados) #Glasgow_level_baixo = fuzz.interp_membership(vl_Glasgow, Glasgow_baixo, Glasgow) #Glasgow_level_medio = fuzz.interp_membership(vl_Glasgow, Glasgow_normal, Glasgow) Glasgow_level_alto = fuzz.interp_membership(vl_Glasgow, Glasgow_alto, Glasgow) #IntoxicacaoExogena_level_baixo = fuzz.interp_membership(vl_IntoxicacaoExogena, IntoxicacaoExogena_baixo, IntoxicacaoExogena) #IntoxicacaoExogena_level_medio = fuzz.interp_membership(vl_IntoxicacaoExogena, IntoxicacaoExogena_normal, IntoxicacaoExogena) IntoxicacaoExogena_level_alto = fuzz.interp_membership( vl_IntoxicacaoExogena, IntoxicacaoExogena_alto, IntoxicacaoExogena) Convulsao_level_baixo = fuzz.interp_membership(vl_Convulsao, Convulsao_baixo, Convulsao) Convulsao_level_medio = fuzz.interp_membership(vl_Convulsao, Convulsao_normal, Convulsao) Convulsao_level_alto = fuzz.interp_membership(vl_Convulsao, Convulsao_alto, Convulsao) #Epilepsia_level_baixo = fuzz.interp_membership(vl_Epilepsia, Epilepsia_baixo, Epilepsia) #Epilepsia_level_medio = fuzz.interp_membership(vl_Epilepsia, Epilepsia_normal, Epilepsia) Epilepsia_level_alto = fuzz.interp_membership(vl_Epilepsia, Epilepsia_alto, Epilepsia) #endregion try: #region .: Definição das regras para o valor de saida :. saida_vermelho_regras = np.fmin( np.fmax( np.fmax(Glasgow_level_alto, DadosVitaisAlterados_level_alto), np.fmax(Convulsao_level_alto, IntoxicacaoExogena_level_alto)), saida_vermelho) saida_amarelo_regras = np.fmin( np.fmax( np.fmax(Convulsao_level_medio, DadosVitaisAlterados_level_medio), Epilepsia_level_alto), saida_amarelo) saida_verde_regras = np.fmin( np.fmax( np.fmin(Convulsao_level_baixo, DadosVitaisAlterados_level_baixo), Convulsao_level_medio), saida_verde) saida_azul_regras = np.fmin( np.fmax(Convulsao_level_baixo, DadosVitaisAlterados_level_baixo), saida_azul) aggregated = np.fmax( np.fmax(saida_azul_regras, saida_verde_regras), np.fmax(saida_amarelo_regras, saida_vermelho_regras)) #endregion #region .: Defuzzificação e retorno de label para o serviço :. result = fuzz.defuzzify.defuzz(x_saida, aggregated, 'mom') defuzz = '' if result > 0 and result <= 15: defuzz = 'Azul' elif result > 15 and result <= 30: defuzz = 'Verde' elif result > 30 and result <= 43: defuzz = 'Amarelo' else: defuzz = 'Vermelho' #endregion return resp_ok('Convulsão ou Coma', MSG_SUCCESS, defuzz) except Exception as e: return resp_exception('Convulsão ou Coma', description=e.__str__())
def post(self, user_id, *args, **kwargs): ''' Create settings forecast notification payload: { "address": "Londres, UK", "period": { "start": "08:00", "end": "19:00" }, "days": { "sunday": true, "monday": true, "tuesday": true, "wednesday": true, "thursday": true, "friday": true, "saturday": true }, "notification": "07:00" } ''' user = get_user('Forecasts Settings', object_id=user_id) if not isinstance(user, User): return user req_data = request.get_json() or None schema = ForecastSettingsSchema() if req_data is None: return resp_form_invalid('Forecasts Settings', [], msg=_MSG312) req_data['user_id'] = '{}'.format(user_id) data, errors = schema.load(req_data) if errors: return resp_form_invalid('Forecasts Settings', errors) try: model = Forecast(**data) model.save() except NotUniqueError: return resp_already_exists('Forecasts Settings', 'usuário') except ValidationError as e: return resp_exception('Forecasts Settings', msg=_MSG300, description=e) except Exception as e: return resp_exception('Forecasts Settings', description=e) result = schema.dump(model) return resp_ok('Forecasts Settings', _MSG200.format('Configurações do clima'), data=result.data)
def put(self, user_id): result = None schema = UserSchema() update_schema = UserUpdateSchema() req_data = request.get_json() or None email = None current_user = get_user_by_email(get_jwt_identity()) if not isinstance(current_user, User): return current_user if not (current_user.is_active()) and current_user.is_admin(): return resp_notallowed_user('Users') # Valido se o payload está vazio if req_data is None: return resp_data_invalid('Users', [], msg=MSG_NO_DATA) # Busco o usuário na coleção users pelo seu id user = get_user_by_id(user_id) # se não for uma instancia do modelo User retorno uma resposta # da requisição http do flask if not isinstance(user, User): return user # carrego meus dados de acordo com o schema de atualização data, errors = update_schema.load(req_data) # em caso de erros retorno uma resposta 422 com os erros de # validação do schema if errors: return resp_data_invalid('Users', errors) email = data.get('email', None) # Valido se existe um email na coleção de usuários if email and exists_email_in_users(email, user): return resp_data_invalid('Users', [{ 'email': [MSG_ALREADY_EXISTS.format('usuário')] }]) try: # para cada chave dentro do dados do update schema # atribuimos seu valor for i in data.keys(): user[i] = data[i] user.save() except NotUniqueError: return resp_already_exists('Users', 'usuário') except ValidationError as e: return resp_exception('Users', msg=MSG_INVALID_DATA, description=e.__str__()) except Exception as e: return resp_exception('Users', description=e.__str__()) result = schema.dump(user) return resp_ok('Users', MSG_RESOURCE_UPDATED.format('Usuário'), data=result.data)
def get(self): #en = {1:"Azul", 2: "Verde", 3: "Amarelo", 4: "Laranja", 5: "Vermelho"} // Classificação de Manchester #region .: Variaveis de Entrada :. DadosVitaisAlterados = request.args.get('DadosVitais') Coriza = request.args.get('Coriza') RinorreiaPurulenta = request.args.get('RinorreiaPurulenta') DorGarganta = request.args.get('DorGarganta') DorOuvido = request.args.get('DorOuvido') Tosse = request.args.get('Tosse') Mialgia = request.args.get('Mialgia') #endregion #region .: Verificação de valores da API :. if DadosVitaisAlterados is None or DadosVitaisAlterados == '': DadosVitaisAlterados = 10 if Coriza is None or Coriza == '': Coriza = 10 if RinorreiaPurulenta is None or RinorreiaPurulenta == '': RinorreiaPurulenta = 10 if DorGarganta is None or DorGarganta == '': DorGarganta = 10 if DorOuvido is None or DorOuvido == '': DorOuvido = 10 if Tosse is None or Tosse == '': Tosse = 10 if Mialgia is None or Mialgia == '': Mialgia = 10 #endregion #region .: Definição do range de cada sintoma :. vl_DadosVitaisAlterados = np.arange(0, 101, 1) vl_Dor = np.arange(0, 101, 1) vl_Idade = np.arange(0, 101, 1) vl_Temperatura = np.arange(25, 46, 1) x_saida = np.arange(0, 61, 1) #endregion #region .: Definição do range da pertinencia de cada sintoma :. DadosVitaisAlterados_baixo = fuzz.trapmf(vl_DadosVitaisAlterados, [0, 20, 40, 45]) DadosVitaisAlterados_normal = fuzz.trimf(vl_DadosVitaisAlterados, [35, 60, 85]) DadosVitaisAlterados_alto = fuzz.trapmf(vl_DadosVitaisAlterados, [80, 85, 95, 100]) Dor_baixo = fuzz.trapmf(vl_Dor, [0, 20, 40, 50]) Dor_moderado = fuzz.trimf(vl_Dor, [40, 50, 70]) Dor_normal = fuzz.trimf(vl_Dor, [65, 80, 90]) Dor_alto = fuzz.trapmf(vl_Dor, [80, 85, 95, 100]) Idade_baixo = fuzz.trapmf(vl_Idade, [0, 20, 40, 45]) Idade_normal = fuzz.trimf(vl_Idade, [35, 50, 65]) Idade_alto = fuzz.trapmf(vl_Idade, [65, 70, 90, 100]) Temperatura_baixo = fuzz.trapmf(vl_Temperatura, [25, 30, 35, 36]) Temperatura_normal = fuzz.trimf(vl_Temperatura, [36, 37, 39]) Temperatura_alto = fuzz.trapmf(vl_Temperatura, [39, 40, 44, 45]) saida_azul = fuzz.trapmf(x_saida, [0, 3, 12, 15]) saida_verde = fuzz.trimf(x_saida, [15, 22, 29]) saida_amarelo = fuzz.trimf(x_saida, [29, 36, 43]) saida_vermelho = fuzz.trapmf(x_saida, [43, 45, 55, 60]) #endregion #region .: Função de ativação para cada nivel definido anteriormente :. DadosVitaisAlterados_level_baixo = fuzz.interp_membership( vl_DadosVitaisAlterados, DadosVitaisAlterados_baixo, DadosVitaisAlterados) DadosVitaisAlterados_level_medio = fuzz.interp_membership( vl_DadosVitaisAlterados, DadosVitaisAlterados_normal, DadosVitaisAlterados) DadosVitaisAlterados_level_alto = fuzz.interp_membership( vl_DadosVitaisAlterados, DadosVitaisAlterados_alto, DadosVitaisAlterados) Dor_level_baixo = fuzz.interp_membership(vl_Dor, Dor_baixo, Dor) Dor_level_moderado = fuzz.interp_membership(vl_Dor, Dor_moderado, Dor) Dor_level_medio = fuzz.interp_membership(vl_Dor, Dor_normal, Dor) Dor_level_alto = fuzz.interp_membership(vl_Dor, Dor_alto, Dor) Idade_level_baixo = fuzz.interp_membership(vl_Idade, Idade_baixo, Idade) Idade_level_medio = fuzz.interp_membership(vl_Idade, Idade_normal, Idade) Idade_level_alto = fuzz.interp_membership(vl_Idade, Idade_alto, Idade) Temperatura_level_baixo = fuzz.interp_membership( vl_Temperatura, Temperatura_baixo, Temperatura) Temperatura_level_medio = fuzz.interp_membership( vl_Temperatura, Temperatura_normal, Temperatura) Temperatura_level_alto = fuzz.interp_membership( vl_Temperatura, Temperatura_alto, Temperatura) #endregion try: #region .: Definição das regras para o valor de saida :. saida_vermelho_regras = np.fmin( np.fmax(DadosVitaisAlterados_level_alto, Dor_level_alto), saida_vermelho) saida_amarelo_regras = np.fmin( np.fmax( np.fmax(DadosVitaisAlterados_level_medio, Dor_level_medio), np.fmax(Temperatura_level_alto, Idade_level_alto)), saida_amarelo) saida_verde_regras = np.fmin( np.fmax( np.fmax(DadosVitaisAlterados_level_baixo, Dor_level_moderado), Temperatura_level_medio), saida_verde) saida_azul_regras = np.fmin( np.fmax(DadosVitaisAlterados_level_baixo, Dor_level_baixo), saida_azul) aggregated = np.fmax( np.fmax(saida_azul_regras, saida_verde_regras), np.fmax(saida_amarelo_regras, saida_vermelho_regras)) #endregion #region .: Defuzzificação e retorno de label para o serviço :. result = fuzz.defuzzify.defuzz(x_saida, aggregated, 'mom') defuzz = '' if result > 0 and result <= 15: defuzz = 'Azul' elif result > 15 and result <= 30: defuzz = 'Verde' elif result > 30 and result <= 43: defuzz = 'Amarelo' else: defuzz = 'Vermelho' #endregion return resp_ok('Ferida', MSG_SUCCESS, defuzz) except Exception as e: return resp_exception('Ferida', description=e.__str__())
def post(self, *args, **kwargs): # Inicializo todas as variaveis utilizadas req_data = request.get_json() or None data, errors, result = None, None, None password, confirm_password = None, None schema = UserRegistrationSchema() # Se meus dados postados forem Nulos retorno uma respota inválida if req_data is None: return resp_data_invalid('Users', [], msg=MSG_NO_DATA) password = req_data.get('password', None) confirm_password = req_data.pop('confirm_password', None) # verifico através de uma função a senha e a confirmação da senha # Se as senhas não são iguais retorno uma respota inválida if not check_password_in_signup(password, confirm_password): errors = {'password': MSG_PASSWORD_WRONG} return resp_data_invalid('Users', errors) # Desserialização os dados postados ou melhor meu payload data, errors = schema.load(req_data) # Se houver erros retorno uma resposta inválida if errors: return resp_data_invalid('Users', errors) # Crio um hash da minha senha hashed = hashpw(password.encode('utf-8'), gensalt(12)) # Salvo meu modelo de usuário com a senha criptografada e email em # lower case Qualquer exceção ao salvar o modelo retorno uma resposta # em JSON ao invés de levantar uma exception no servidor try: data['password'] = hashed data['email'] = data['email'].lower() model = User(**data) model.save() except NotUniqueError: return resp_already_exists('Users', 'usuário') except ValidationError as e: return resp_exception('Users', msg=MSG_INVALID_DATA, description=e) # Realizo um dump dos dados de acordo com o modelo salvo schema = UserSchema() result = schema.dump(model) if current_app.config.get('ENABLE_AMQP'): try: # exp = datetime.utcnow() + relativedelta(days=2) # payload = {'id': '{}'.format(model.id), 'exp':exp} producer = signup.ProducerSignUp( current_app. config. get('SIGNUP_QUEUE') ) producer.publish(result.data) except Exception as e: return resp_exception('Users', description=MSG_EXCEPTION) # Retorno 200 o meu endpoint return resp_ok( 'Users', MSG_RESOURCE_CREATED.format('Usuário'), data=result.data, )
def get(self): #en = {1:"Azul", 2: "Verde", 3: "Amarelo", 4: "Laranja", 5: "Vermelho"} // Classificação de Manchester #region .: Variaveis de Entrada :. Glicemia = request.args.get('Glicemia') Sudorese = request.args.get('Sudorese') Desidratacao = request.args.get('Desidratacao') AlteracaoMental = request.args.get('AlteracaoMental') Febre = request.args.get('Febre') Pulso = request.args.get('Pulso') Vomito = request.args.get('Vomito') VisaoBorrada = request.args.get('VisaoBorrada') Dispneia = request.args.get('Dispneia') #endregion #region .: Verificação de valores da API :. if Glicemia is None or Glicemia == '': Glicemia = 10 if Sudorese is None or Sudorese == '': Sudorese = 10 if Desidratacao is None or Desidratacao == '': Desidratacao = 10 if AlteracaoMental is None or AlteracaoMental == '': AlteracaoMental = 10 if Febre is None or Febre == '': Febre = 10 if Pulso is None or Pulso == '': Pulso = 10 if Vomito is None or Vomito == '': Vomito = 10 if VisaoBorrada is None or VisaoBorrada == '': VisaoBorrada = 10 if Dispneia is None or Dispneia == '': Dispneia = 10 #endregion #region .: Definição do range de cada sintoma :. vl_Glicemia = np.arange(0, 361, 1) vl_Sudorese = np.arange(0, 101, 1) vl_Desidratacao = np.arange(0, 101, 1) vl_AlteracaoMental = np.arange(0, 101, 1) vl_Febre = np.arange(0, 101, 1) vl_Pulso = np.arange(0, 101, 1) vl_Vomito = np.arange(0, 101, 1) vl_VisaoBorrada = np.arange(0, 101, 1) vl_Dispneia = np.arange(0, 101, 1) x_saida = np.arange(0, 61, 1) #endregion #region .: Definição do range da pertinencia de cada sintoma :. Glicemia_baixo = fuzz.trimf(vl_Glicemia, [50, 170, 250]) Glicemia_normal = fuzz.trimf(vl_Glicemia, [250, 285, 320]) Glicemia_alto = fuzz.trapmf(vl_Glicemia, [320, 330, 350, 360]) Glicemia_baixo_alto = fuzz.trapmf(vl_Glicemia, [0, 20, 40, 50]) Sudorese_baixo = fuzz.trapmf(vl_Sudorese, [0, 10, 40, 45]) Sudorese_normal = fuzz.trimf(vl_Sudorese, [35, 60, 85]) Sudorese_alto = fuzz.trapmf(vl_Sudorese, [80, 85, 95, 100]) Desidratacao_baixo = fuzz.trapmf(vl_Desidratacao, [0, 20, 40, 45]) Desidratacao_normal = fuzz.trimf(vl_Desidratacao, [35, 60, 80]) Desidratacao_alto = fuzz.trapmf(vl_Desidratacao, [80, 85, 95, 100]) AlteracaoMental_baixo = fuzz.trapmf(vl_AlteracaoMental, [0, 20, 40, 45]) AlteracaoMental_normal = fuzz.trimf(vl_AlteracaoMental, [35, 60, 85]) AlteracaoMental_alto = fuzz.trapmf(vl_AlteracaoMental, [80, 85, 95, 100]) Febre_baixo = fuzz.trapmf(vl_Febre, [0, 20, 40, 45]) Febre_normal = fuzz.trimf(vl_Febre, [35, 60, 85]) Febre_alto = fuzz.trapmf(vl_Febre, [80, 85, 95, 100]) Pulso_baixo = fuzz.trapmf(vl_Pulso, [0, 20, 40, 45]) Pulso_normal = fuzz.trimf(vl_Pulso, [35, 60, 85]) Pulso_alto = fuzz.trapmf(vl_Pulso, [80, 85, 95, 100]) Vomito_baixo = fuzz.trapmf(vl_Vomito, [0, 20, 40, 45]) Vomito_normal = fuzz.trimf(vl_Vomito, [35, 60, 85]) Vomito_alto = fuzz.trapmf(vl_Vomito, [80, 85, 95, 100]) VisaoBorrada_baixo = fuzz.trapmf(vl_VisaoBorrada, [0, 20, 40, 45]) VisaoBorrada_normal = fuzz.trimf(vl_VisaoBorrada, [35, 60, 85]) VisaoBorrada_alto = fuzz.trapmf(vl_VisaoBorrada, [80, 85, 95, 100]) Dispneia_baixo = fuzz.trapmf(vl_Dispneia, [0, 20, 40, 45]) Dispneia_normal = fuzz.trimf(vl_Dispneia, [35, 60, 85]) Dispneia_alto = fuzz.trapmf(vl_Dispneia, [80, 85, 95, 100]) saida_azul = fuzz.trapmf(x_saida, [0, 3, 12, 15]) saida_verde = fuzz.trimf(x_saida, [15, 22, 29]) saida_amarelo = fuzz.trimf(x_saida, [29, 36, 43]) saida_vermelho = fuzz.trapmf(x_saida, [43, 45, 55, 60]) #endregion #region .: Função de ativação para cada nivel definido anteriormente :. Glicemia_level_baixo = fuzz.interp_membership(vl_Glicemia, Glicemia_baixo, Glicemia) Glicemia_level_medio = fuzz.interp_membership(vl_Glicemia, Glicemia_normal, Glicemia) Glicemia_level_alto = fuzz.interp_membership(vl_Glicemia, Glicemia_alto, Glicemia) Glicemia_level_baixo_alto = fuzz.interp_membership( vl_Glicemia, Glicemia_baixo_alto, Glicemia) Sudorese_level_baixo = fuzz.interp_membership(vl_Sudorese, Sudorese_baixo, Sudorese) Sudorese_level_medio = fuzz.interp_membership(vl_Sudorese, Sudorese_normal, Sudorese) Sudorese_level_alto = fuzz.interp_membership(vl_Sudorese, Sudorese_alto, Sudorese) Desidratacao_level_baixo = fuzz.interp_membership( vl_Desidratacao, Desidratacao_baixo, Desidratacao) Desidratacao_level_medio = fuzz.interp_membership( vl_Desidratacao, Desidratacao_normal, Desidratacao) Desidratacao_level_alto = fuzz.interp_membership( vl_Desidratacao, Desidratacao_alto, Desidratacao) AlteracaoMental_level_baixo = fuzz.interp_membership( vl_AlteracaoMental, AlteracaoMental_baixo, Desidratacao) AlteracaoMental_level_medio = fuzz.interp_membership( vl_AlteracaoMental, AlteracaoMental_normal, Desidratacao) AlteracaoMental_level_alto = fuzz.interp_membership( vl_AlteracaoMental, AlteracaoMental_alto, Desidratacao) Febre_level_baixo = fuzz.interp_membership(vl_Febre, Febre_baixo, Febre) Febre_level_medio = fuzz.interp_membership(vl_Febre, Febre_normal, Febre) Febre_level_alto = fuzz.interp_membership(vl_Febre, Febre_alto, Febre) Pulso_level_baixo = fuzz.interp_membership(vl_Pulso, Pulso_baixo, Pulso) Pulso_level_medio = fuzz.interp_membership(vl_Pulso, Pulso_normal, Pulso) Pulso_level_alto = fuzz.interp_membership(vl_Pulso, Pulso_alto, Pulso) Vomito_level_baixo = fuzz.interp_membership(vl_Vomito, Vomito_baixo, Vomito) Vomito_level_medio = fuzz.interp_membership(vl_Vomito, Vomito_normal, Vomito) Vomito_level_alto = fuzz.interp_membership(vl_Vomito, Vomito_alto, Vomito) VisaoBorrada_level_baixo = fuzz.interp_membership( vl_VisaoBorrada, VisaoBorrada_baixo, VisaoBorrada) VisaoBorrada_level_medio = fuzz.interp_membership( vl_VisaoBorrada, VisaoBorrada_normal, VisaoBorrada) VisaoBorrada_level_alto = fuzz.interp_membership( vl_VisaoBorrada, VisaoBorrada_alto, VisaoBorrada) Dispneia_level_baixo = fuzz.interp_membership(vl_Dispneia, Dispneia_baixo, Dispneia) Dispneia_level_medio = fuzz.interp_membership(vl_Dispneia, Dispneia_normal, Dispneia) Dispneia_level_alto = fuzz.interp_membership(vl_Dispneia, Dispneia_alto, Dispneia) #endregion try: #region .: Definição das regras para o valor de saida :. saida_vermelho_regras = np.fmin( np.fmax( np.fmax(AlteracaoMental_level_alto, Sudorese_level_alto), np.fmax( np.fmax( np.fmax(Febre_level_alto, Pulso_level_alto), np.fmax(Vomito_level_alto, VisaoBorrada_level_alto)), Dispneia_level_alto)), saida_vermelho) saida_amarelo_regras = np.fmin( np.fmax( np.fmin(Glicemia_level_alto, Glicemia_level_baixo_alto), Desidratacao_level_alto), saida_amarelo) saida_verde_regras = np.fmin(Glicemia_level_medio, saida_verde) saida_azul_regras = np.fmin(Glicemia_level_baixo, saida_azul) aggregated = np.fmax( np.fmax(saida_azul_regras, saida_verde_regras), np.fmax(saida_amarelo_regras, saida_vermelho_regras)) #endregion #region .: Defuzzificação e retorno de label para o serviço :. result = fuzz.defuzzify.defuzz(x_saida, aggregated, 'mom') print(result) defuzz = '' if result > 0 and result <= 15: defuzz = 'Azul' elif result > 15 and result <= 30: defuzz = 'Verde' elif result > 30 and result <= 43: defuzz = 'Amarelo' else: defuzz = 'Vermelho' #endregion return resp_ok('Diabetes', MSG_SUCCESS, defuzz) except Exception as e: return resp_exception('Diabetes', description=e.__str__())
def get(self): #en = {1:"Azul", 2: "Verde", 3: "Amarelo", 4: "Laranja", 5: "Vermelho"} // Classificação de Manchester #region .: Variaveis de Entrada :. DadosVitaisAlterados = request.args.get('DadosVitais') Agitacao = request.args.get('Agitacao') Depressao = request.args.get('Depressao') EstadoMental = request.args.get('EstadoMental') #endregion #region .: Verificação de valores da API :. if DadosVitaisAlterados is None or DadosVitaisAlterados == '': DadosVitaisAlterados = 10 if Agitacao is None or Agitacao == '': Agitacao = 10 if Depressao is None or Depressao == '': Depressao = 10 if EstadoMental is None or EstadoMental == '': EstadoMental = 10 #endregion #region .: Definição do range de cada sintoma :. vl_DadosVitaisAlterados = np.arange(0, 101, 1) vl_Agitacao = np.arange(0, 101, 1) vl_Depressao = np.arange(0, 101, 1) vl_EstadoMental = np.arange(0, 101, 1) x_saida = np.arange(0, 61, 1) #endregion #region .: Definição do range da pertinencia de cada sintoma :. DadosVitaisAlterados_baixo = fuzz.trapmf(vl_DadosVitaisAlterados, [0, 20, 40, 45]) DadosVitaisAlterados_normal = fuzz.trimf(vl_DadosVitaisAlterados, [35, 60, 85]) DadosVitaisAlterados_alto = fuzz.trapmf(vl_DadosVitaisAlterados, [80, 85, 95, 100]) Agitacao_baixo = fuzz.trapmf(vl_Agitacao, [0, 20, 40, 45]) Agitacao_normal = fuzz.trimf(vl_Agitacao, [35, 60, 85]) Agitacao_alto = fuzz.trapmf(vl_Agitacao, [80, 85, 95, 100]) Depressao_baixo = fuzz.trapmf(vl_Depressao, [0, 20, 40, 45]) Depressao_normal = fuzz.trimf(vl_Depressao, [35, 60, 85]) Depressao_alto = fuzz.trapmf(vl_Depressao, [80, 85, 95, 100]) EstadoMental_baixo = fuzz.trapmf(vl_EstadoMental, [0, 20, 40, 45]) EstadoMental_normal = fuzz.trimf(vl_EstadoMental, [35, 60, 85]) EstadoMental_alto = fuzz.trapmf(vl_EstadoMental, [80, 85, 95, 100]) saida_azul = fuzz.trapmf(x_saida, [0, 3, 12, 15]) saida_verde = fuzz.trimf(x_saida, [15, 22, 29]) saida_amarelo = fuzz.trimf(x_saida, [29, 36, 43]) saida_vermelho = fuzz.trapmf(x_saida, [43, 45, 55, 60]) #endregion #region .: Função de ativação para cada nivel definido anteriormente :. DadosVitaisAlterados_level_baixo = fuzz.interp_membership(vl_DadosVitaisAlterados, DadosVitaisAlterados_baixo, DadosVitaisAlterados) DadosVitaisAlterados_level_medio = fuzz.interp_membership(vl_DadosVitaisAlterados, DadosVitaisAlterados_normal, DadosVitaisAlterados) DadosVitaisAlterados_level_alto = fuzz.interp_membership(vl_DadosVitaisAlterados, DadosVitaisAlterados_alto, DadosVitaisAlterados) Agitacao_level_baixo = fuzz.interp_membership(vl_Agitacao, Agitacao_baixo, Agitacao) Agitacao_level_medio = fuzz.interp_membership(vl_Agitacao, Agitacao_normal, Agitacao) Agitacao_level_alto = fuzz.interp_membership(vl_Agitacao, Agitacao_alto, Agitacao) Depressao_level_baixo = fuzz.interp_membership(vl_Depressao, Depressao_baixo, Depressao) Depressao_level_medio = fuzz.interp_membership(vl_Depressao, Depressao_normal, Depressao) Depressao_level_alto = fuzz.interp_membership(vl_Depressao, Depressao_alto, Depressao) EstadoMental_level_baixo = fuzz.interp_membership(vl_EstadoMental, EstadoMental_baixo, EstadoMental) EstadoMental_level_medio = fuzz.interp_membership(vl_EstadoMental, EstadoMental_normal, EstadoMental) EstadoMental_level_alto = fuzz.interp_membership(vl_EstadoMental, EstadoMental_alto, EstadoMental) #endregion try: #region .: Definição das regras para o valor de saida :. saida_vermelho_regras = np.fmin( np.fmax(EstadoMental_level_alto, np.fmax(Agitacao_level_alto, Depressao_level_alto) ) , saida_vermelho) saida_amarelo_regras = np.fmin( np.fmax( np.fmax(Depressao_level_medio, EstadoMental_level_medio), np.fmax(Agitacao_level_medio, DadosVitaisAlterados_level_medio) ) , saida_amarelo) saida_verde_regras = np.fmin( np.fmax(DadosVitaisAlterados_level_baixo, Depressao_level_medio) , saida_verde) saida_azul_regras = np.fmin( np.fmax(EstadoMental_level_baixo, np.fmax(DadosVitaisAlterados_level_baixo, Depressao_level_baixo) ) , saida_azul) aggregated = np.fmax(np.fmax(saida_azul_regras, saida_verde_regras), np.fmax(saida_amarelo_regras, saida_vermelho_regras)) #endregion #region .: Defuzzificação e retorno de label para o serviço :. result = fuzz.defuzzify.defuzz(x_saida, aggregated, 'mom') defuzz = '' if result > 0 and result <= 15: defuzz = 'Azul' elif result > 15 and result <= 30: defuzz = 'Verde' elif result > 30 and result <= 43: defuzz = 'Amarelo' else: defuzz = 'Vermelho' #endregion return resp_ok('Doença Psiquiatrica', MSG_SUCCESS, defuzz) except Exception as e: return resp_exception('Doença Psiquiatrica', description=e.__str__())
def get(self): #en = {1:"Azul", 2: "Verde", 3: "Amarelo", 4: "Laranja", 5: "Vermelho"} // Classificação de Manchester #region .: Variaveis de Entrada :. DadosVitaisAlterados = request.args.get('DadosVitais') Dor = request.args.get('Dor') FrequenciaDor = request.args.get('FrequenciaDor') Idade = request.args.get('Idade') #endregion #region .: Verificação de valores da API :. if DadosVitaisAlterados is None or DadosVitaisAlterados == '' or int( DadosVitaisAlterados) < 10: DadosVitaisAlterados = 10 if Dor is None or Dor == '' or int(Dor) < 10: Dor = 10 if FrequenciaDor is None or FrequenciaDor == '' or int( FrequenciaDor) < 10: FrequenciaDor = 10 if Idade is None or Idade == '' or int(Idade) < 10: Idade = 10 #endregion #region .: Definição do range de cada sintoma :. vl_DadosVitaisAlterados = np.arange(0, 101, 1) vl_Dor = np.arange(0, 101, 1) vl_FrequenciaDor = np.arange(0, 101, 1) vl_Idade = np.arange(0, 101, 1) x_saida = np.arange(0, 61, 1) #endregion #region .: Definição do range da pertinencia de cada sintoma :. DadosVitaisAlterados_baixo = fuzz.trapmf(vl_DadosVitaisAlterados, [0, 20, 40, 45]) DadosVitaisAlterados_normal = fuzz.trimf(vl_DadosVitaisAlterados, [35, 60, 85]) DadosVitaisAlterados_alto = fuzz.trapmf(vl_DadosVitaisAlterados, [80, 85, 95, 100]) Dor_baixo = fuzz.trapmf(vl_Dor, [0, 20, 45, 50]) Dor_moderado = fuzz.trimf(vl_Dor, [40, 50, 70]) Dor_normal = fuzz.trimf(vl_Dor, [65, 80, 90]) Dor_alto = fuzz.trapmf(vl_Dor, [80, 85, 95, 100]) FrequenciaDor_baixo = fuzz.trapmf(vl_FrequenciaDor, [0, 20, 40, 45]) FrequenciaDor_normal = fuzz.trimf(vl_FrequenciaDor, [35, 60, 85]) FrequenciaDor_alto = fuzz.trapmf(vl_FrequenciaDor, [80, 85, 95, 100]) Idade_baixo = fuzz.trapmf(vl_Idade, [0, 20, 40, 40]) Idade_normal = fuzz.trimf(vl_Idade, [40, 50, 55]) Idade_alto = fuzz.trapmf(vl_Idade, [55, 60, 95, 100]) saida_azul = fuzz.trapmf(x_saida, [0, 3, 12, 15]) saida_verde = fuzz.trimf(x_saida, [15, 22, 29]) saida_amarelo = fuzz.trimf(x_saida, [29, 36, 43]) saida_vermelho = fuzz.trapmf(x_saida, [43, 45, 55, 60]) #endregion #region .: Função de ativação para cada nivel definido anteriormente :. DadosVitaisAlterados_level_baixo = fuzz.interp_membership( vl_DadosVitaisAlterados, DadosVitaisAlterados_baixo, DadosVitaisAlterados) DadosVitaisAlterados_level_medio = fuzz.interp_membership( vl_DadosVitaisAlterados, DadosVitaisAlterados_normal, DadosVitaisAlterados) DadosVitaisAlterados_level_alto = fuzz.interp_membership( vl_DadosVitaisAlterados, DadosVitaisAlterados_alto, DadosVitaisAlterados) Dor_level_baixo = fuzz.interp_membership(vl_Dor, Dor_baixo, Dor) Dor_level_moderado = fuzz.interp_membership(vl_Dor, Dor_moderado, Dor) Dor_level_medio = fuzz.interp_membership(vl_Dor, Dor_normal, Dor) Dor_level_alto = fuzz.interp_membership(vl_Dor, Dor_alto, Dor) Idade_level_baixo = fuzz.interp_membership(vl_Idade, Idade_baixo, Idade) Idade_level_medio = fuzz.interp_membership(vl_Idade, Idade_normal, Idade) Idade_level_alto = fuzz.interp_membership(vl_Idade, Idade_alto, Idade) FrequenciaDor_level_baixo = fuzz.interp_membership( vl_FrequenciaDor, FrequenciaDor_baixo, FrequenciaDor) FrequenciaDor_level_medio = fuzz.interp_membership( vl_FrequenciaDor, FrequenciaDor_normal, FrequenciaDor) FrequenciaDor_level_alto = fuzz.interp_membership( vl_FrequenciaDor, FrequenciaDor_alto, FrequenciaDor) #endregion try: #region .: Definição das regras para o valor de saida :. saida_vermelho_regras = np.fmin( np.fmax( np.fmax(DadosVitaisAlterados_level_alto, Dor_level_alto), FrequenciaDor_level_alto), saida_vermelho) saida_amarelo_regras = np.fmin( np.fmax( np.fmax(DadosVitaisAlterados_level_medio, Dor_level_medio), np.fmax(FrequenciaDor_level_medio, Idade_level_alto)), saida_amarelo) saida_verde_regras = np.fmin( np.fmax( np.fmax(DadosVitaisAlterados_level_baixo, Dor_level_moderado), np.fmax(Idade_level_medio, FrequenciaDor_level_baixo)), saida_verde) saida_azul_regras = np.fmin( np.fmax( np.fmax(DadosVitaisAlterados_level_baixo, Dor_level_baixo), Idade_level_baixo), saida_azul) aggregated = np.fmax( np.fmax(saida_azul_regras, saida_verde_regras), np.fmax(saida_amarelo_regras, saida_vermelho_regras)) #endregion #region .: Defuzzificação e retorno de label para o serviço :. result = fuzz.defuzzify.defuzz(x_saida, aggregated, 'mom') defuzz = '' if result > 0 and result <= 15: defuzz = 'Azul' elif result > 15 and result <= 30: defuzz = 'Verde' elif result > 30 and result <= 43: defuzz = 'Amarelo' else: defuzz = 'Vermelho' #endregion return resp_ok('Dor Toracica', MSG_SUCCESS, defuzz) except Exception as e: return resp_exception('Dor Toracica', description=e.__str__())
def post(self, *args, **kwargs): # Inicializo todas as variaveis utilizadas req_data = request.get_json() or None dict_data, errors, result = None, None, None password, confirm_password = None, None schema = UserRegistrationSchema() # Se meus dados postados forem Nulos retorno uma respota inválida if req_data is None: return resp_data_invalid('Users', [], msg=MSG_NO_DATA) password = req_data.get('password', None) confirm_password = req_data.pop('confirm_password', None) document = req_data.get('cpf', None) if not check_document(document): errors = {'cpf': MSG_DOCUMENT_NULL} return resp_data_invalid('Users', errors) if not exists_cpf_in_users(document): errors = {'cpf': MSG_DOCUMENT_ALREAD_EXIST} return resp_data_invalid('Users', errors) if not exists_email_in_users(document): errors = {'email': MSG_EMAIL_ALREAD_EXIST} return resp_data_invalid('Users', errors) # verifico através de uma função a senha e a confirmação da senha # Se as senhas não são iguais retorno uma respota inválida if not check_password_in_signup(password, confirm_password): errors = {'password': MSG_PASSWORD_WRONG} return resp_data_invalid('Users', errors) if not check_password_is_same(password, confirm_password): errors = {'password': MSG_PASSWORD_NOT_SAME} return resp_data_invalid('Users', errors) dict_data = { "full_name": req_data.get('full_name', None), "email": req_data.get('email', None), "password": req_data.get('password', None), "cpf": req_data.get('cpf', None), "active": req_data.get('active', None) } data = json.dumps(dict_data) # Se houver erros retorno uma resposta inválida if errors: return resp_data_invalid('Users', errors) # Crio um hash da minha senha hashed = hashpw(password.encode('utf-8'), gensalt(12)) # Salvo meu modelo de usuário com a senha criptografada e email em lower case # Qualquer exceção ao salvar o modelo retorno uma resposta em JSON # ao invés de levantar uma exception no servidor try: dict_data['password'] = hashed dict_data['email'] = dict_data['email'].lower() model = User(**dict_data) model.save() except ValidationError as e: return resp_exception('Users', msg=MSG_INVALID_DATA, description=e) except Exception as e: return resp_exception('Users', description=e) # Realizo um dump dos dados de acordo com o modelo salvo schema = UserSchema() result = schema.dump(model) # Retorno 200 o meu endpoint return resp_ok( 'Users', MSG_RESOURCE_CREATED.format('Usuário'), data=result, )