Files
AI-upflux-docprocessor/docs/visao-geral.md
2026-05-14 15:30:38 -03:00

5.8 KiB
Raw Permalink Blame History

Doc-Processor — Visão Geral do Sistema

O que é

O Doc-Processor é um serviço de análise automatizada de guias de autorização médica. Ele recebe solicitações de procedimentos médicos (guias), extrai o texto dos documentos anexados via OCR, e utiliza um agente de inteligência artificial (LLM) para decidir se cada serviço solicitado deve ser Aprovado ou Reprovado, com base em regras de negócio configuradas para cada código de procedimento.

O sistema foi desenvolvido para operar no contexto de operadoras de saúde (ex: Unimed), reduzindo o trabalho manual dos auditores médicos.


Fluxo de Processamento

POST /process
    │
    ├─► Para cada guia (em paralelo):
    │       │
    │       ├─► Para cada anexo (em paralelo):
    │       │       ├─► Baixa o arquivo do S3
    │       │       ├─► OCR via AWS Textract
    │       │       └─► Armazena texto extraído na guia
    │       │
    │       └─► Para cada serviço (em paralelo):
    │               ├─► Verifica se o código existe nas regras
    │               ├─► Monta o payload JSON (atendimento + guia + serviço + histórico)
    │               ├─► Chama o agente LangGraph com o texto dos documentos
    │               └─► Retorna Aprovado / Reprovado / SKIPPED
    │
    ├─► Salva todos os resultados no S3 (bucket de saída)
    └─► Retorna resposta HTTP com as avaliações

Decisão do Agente

O agente segue a seguinte lógica de decisão para cada serviço:

  1. Critérios de auto-aprovação (rules.yaml rules): Se qualquer um desses critérios estiver presente na guia ou nos documentos, o procedimento é aprovado imediatamente.
  2. Documentação mínima (rules.yaml min_doc): Se nenhum critério de auto-aprovação for atendido, o agente verifica se a documentação mínima exigida está presente. Se estiver (mesmo que em tipo diferente de documento), o procedimento é aprovado.
  3. Reprovação: Se nem os critérios de auto-aprovação nem a documentação mínima estiverem presentes, o procedimento é reprovado.

O agente também verifica, em cada documento, se o nome do beneficiário da guia está presente.


Tecnologias Utilizadas

Tecnologia Função
FastAPI Framework web / API REST
LangGraph Orquestração do agente de IA (fluxo ReAct)
LangChain AWS Integração com AWS Bedrock (LLM Claude/Anthropic)
AWS Bedrock Modelo de linguagem (LLM) para decisão
AWS Textract OCR de PDFs e imagens
AWS S3 Armazenamento de documentos de entrada e resultados
AWS Secrets Manager Gerenciamento seguro de credenciais
Langfuse Observabilidade e rastreamento de chamadas ao LLM
PyPDF2 Separação de páginas de PDFs para OCR por página
Pydantic Validação do corpo da requisição
Docker Containerização do serviço

Estrutura de Diretórios

code/
├── app.py                        # Ponto de entrada da API FastAPI
├── dockerfile                    # Imagem Docker da aplicação
├── Makefile                      # Automação de build e deploy
├── requirements.txt              # Dependências Python
│
├── services/
│   ├── authorization.py          # Avalia cada serviço via agente de IA
│   ├── document_extractor.py     # Extrai texto de documentos no S3 via Textract
│   └── result_store.py           # Persiste resultados no S3
│
├── utils/
│   ├── config.py                 # Variáveis de ambiente / configurações
│   ├── langgraph_agent.py        # Definição e execução do agente LangGraph
│   ├── rules.yaml                # Regras de autorização por código de procedimento
│   └── secrets_manager.py        # Carrega segredos do AWS Secrets Manager
│
└── document/                     # Documentação do sistema (esta pasta)
    ├── visao-geral.md
    ├── modulos.md
    └── api.md

Configuração

Variáveis de Ambiente

Variável Obrigatória Padrão Descrição
AWS_REGION Não us-east-2 Região AWS usada para todos os serviços
BEDROCK_MODEL_ARN Sim ARN do modelo Claude no AWS Bedrock
OUTPUT_BUCKET Não upflux-doc-analyzer Bucket S3 onde os resultados são salvos
API_VERSION Não v1 Prefixo de versão usado na chave do S3
LANGFUSE_HOST Não https://cloud.langfuse.com Host do servidor Langfuse (observabilidade)

Segredos (AWS Secrets Manager — Secret ID: doc-analyzer)

Chave Descrição
API-KEY Chave de autenticação da API (X-API-Key)
AWS_ACCESS_KEY Access Key para acesso ao S3 de entrada
AWS_SECRET_KEY Secret Key para acesso ao S3 de entrada
LANGFUSE-SECRET-KEY Chave secreta do Langfuse
LANGFUSE-PUBLIC-KEY Chave pública do Langfuse