Autorização SP/SADT
Monte e valide uma solicitação sintética, avalie regras locais e exercite as respostas offline.
from copy import deepcopy from voa_tiss import ( build_autorizacao, check_autorizacao, examples, parse_autorizacao, validate, ) solicitacao = parse_autorizacao(examples.load("autorizacao-solicitacao")) xml_solicitacao = build_autorizacao(solicitacao) assert validate(xml_solicitacao).valid len(xml_solicitacao)
Saída2311
contexto = {"operadora": "000000"} solicitacao_sem_regra = deepcopy(solicitacao) solicitacao_sem_regra["solicitacao"]["procedimentos_solicitados"][0]["procedimento"][ "codigo_procedimento" ] = "40901220" solicitacao_pendente = deepcopy(solicitacao) solicitacao_pendente["solicitacao"].pop("indicacao_clinica") decisoes = [ check_autorizacao(item, contexto=contexto).decisao["tipo"] for item in (solicitacao_sem_regra, solicitacao_pendente, solicitacao) ] decisoes
Saída['aprovar_por_regra', 'pendente', 'encaminhar_auditor']
from voa_tiss.sandbox import responder_autorizacao respostas = { cenario: responder_autorizacao(solicitacao, cenario=cenario) for cenario in ("aprovado", "pendente", "negado") } assert all(validate(xml).valid for xml in respostas.values()) { cenario: parse_autorizacao(xml)["autorizacao"]["status_solicitacao"] for cenario, xml in respostas.items() }
Saída{'aprovado': '1', 'pendente': '5', 'negado': '3'}
from voa_tiss import parse_demonstrativo from voa_tiss.sandbox import demonstrativo, enviar_lote envio = enviar_lote(examples.load("lote-valido"), registro_ans="000000") resultado = parse_demonstrativo(demonstrativo(envio["protocolo"])) [(item.guia_ref, item.motivo) for item in resultado]
Saída[('0001', '1818; 1818 - Procedimento exige autorização prévia. (regra exige-autorizacao-consulta)'), ('0002', '1818; 1818 - Procedimento exige autorização prévia. (regra exige-autorizacao-consulta)')]