RAG-based system for auditing hospital billing manuals and regulations.
Manual RAG — Auditoria de Faturamento SIH/SUS
Sistema RAG (Retrieval-Augmented Generation) para auditoria de faturamento hospitalar SIH/SUS com consulta de manuais, portarias, SIGTAP e CNES em linguagem natural.
Funciona como MCP Server para o Claude Code, expondo 43 tools organizadas em 8 módulos: RAG, SIGTAP, CNES, auditoria, auditoria de AIH, inteligência, legacy e health.
v2.1.0 — Busca híbrida (semântica + BM25), DuckDB/DATASUS client, Docker Compose, parent-child chunking.
Instalação rápida
cd scripts/manual-rag
bash setup.sh
O script cria o venv, instala dependências, indexa os documentos (se existirem em ragData/) e registra o MCP server no Claude Code.
Instalação manual
1. Ambiente e dependências
cd scripts/manual-rag
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
2. Alimentar o banco vetorial
Coloque PDFs em ragData/manuais/ e portarias em ragData/portarias/, depois:
python extrair_manual.py --ragdata ragData/
python scripts/indexar_manual.py
3. Registrar MCP no Claude Code
# Local (este repo)
claude mcp add manual-sih -- .venv/bin/python mcp_server.py
# Global (qualquer repo)
pip install -e .
claude mcp add --scope user manual-sih -- manual-sih-mcp
Abra uma nova sessão do Claude Code — as 43 tools ficam disponíveis automaticamente.
4. SIGTAP e CNES via DATASUS
As tools de SIGTAP e CNES usam DuckDB sobre Parquet armazenado no MinIO. Precisa do container do modulo-processos rodando:
cd modulo-processos && docker compose up -d minio
Copie .env.example para .env e ajuste se necessário:
cp .env.example .env
Variáveis relevantes:
| Variável | Default | Descrição |
|---|---|---|
S3_ENDPOINT |
http://localhost:9000 |
Endpoint MinIO/S3 |
AWS_ACCESS_KEY_ID |
minioadmin |
Credencial S3 |
AWS_SECRET_ACCESS_KEY |
minioadmin |
Credencial S3 |
DATASUS_BUCKET |
bucket-datasus |
Bucket com Parquets SIGTAP/CNES |
CHROMA_HOST |
localhost |
Host ChromaDB (para modo Docker) |
CHROMA_PORT |
8000 |
Porta ChromaDB |
MCP_HOST |
0.0.0.0 |
Host do MCP Server (modo SSE) |
MCP_PORT |
8200 |
Porta do MCP Server (modo SSE) |
LOG_LEVEL |
WARNING |
Nível de log |
5. Docker Compose (opcional)
Para rodar o MCP Server e ChromaDB em containers:
docker compose up -d
Expõe o MCP Server na porta 8200 e ChromaDB na 8201.
API Key (para `/explicar` e `analisar_critica.py`)
export GEMINI_API_KEY="sua-chave"
Ou salve em arquivo:
mkdir -p ~/.config/google
echo "sua-chave" > ~/.config/google/api_key
chmod 600 ~/.config/google/api_key
Alimentar o banco
Opção 1: Processar todo o ragData (recomendado)
Processa recursivamente todos os arquivos em ragData/ (PDFs, HTMLs, DOCs, ZIPs):
source .venv/bin/activate
python extrair_manual.py --ragdata ragData/
python scripts/indexar_manual.py
Opção 2: PDFs individuais
# Múltiplos PDFs
python extrair_manual.py manual1.pdf manual2.pdf
# Adicionar sem apagar existentes
python extrair_manual.py --adicionar novo.pdf
Opção 3: Auto-detecção
Se nenhum argumento for passado, procura *.pdf no diretório raiz do projeto:
python extrair_manual.py
Após qualquer extração, sempre indexar:
python scripts/indexar_manual.py
A indexação gera embeddings (paraphrase-multilingual-MiniLM-L12-v2) no ChromaDB e um índice BM25 para busca híbrida.
Uso
`consulta_manual.py` — Consulta interativa
Busca semântica no manual em linguagem natural.
# Modo interativo
python consulta_manual.py
# Consulta direta (uma pergunta)
python consulta_manual.py 'como registrar politraumatizado na AIH'
Comandos no modo interativo:
| Comando | Ação |
|---|---|
| `` | Busca semântica no manual |
/explicar N |
Explica como a crítica N é validada (usa IA + RAG + código) |
/critica |
Modo validação de críticas (busca semântica simples) |
/fontes |
Lista todas as fontes indexadas com tipo e ano |
/secoes |
Lista todas as seções do manual |
/buscar N |
Altera quantidade de resultados (padrão: 5) |
sair |
Encerra |
`/explicar N` — Como funciona a validação de uma crítica
Combina o código TypeScript da crítica + trechos relevantes do manual + Claude para gerar uma explicação didática:
- O que a crítica verifica
- Passo a passo da validação
- Campos envolvidos
- Exceções (quando NÃO gera crítica)
- Fundamentação no manual (com seção e página)
Após a explicação, abre modo interativo para perguntas de follow-up.
Manual SIH> /explicar 92
`analisar_critica.py` — Agente de Análise Crítica (IA)
Envia o código + trechos do manual para o Claude e recebe um parecer estruturado de conformidade.
# Analisar uma crítica
python analisar_critica.py 92
# Analisar e salvar resultado em data/analises/
pytho
Tools (4)
rag_queryPerforms semantic search across healthcare manuals and ordinances.sigtap_queryQueries SIGTAP database via DuckDB.cnes_queryQueries CNES database via DuckDB.explain_critiqueExplains how a specific billing critique is validated using RAG and code analysis.Environment Variables
GEMINI_API_KEYrequiredAPI key for AI-powered critique analysisS3_ENDPOINTEndpoint for MinIO/S3 storageDATASUS_BUCKETBucket name containing SIGTAP/CNES Parquet filesConfiguration
{"mcpServers": {"manual-sih": {"command": "python", "args": ["/path/to/mcp_server.py"]}}}