voa-tiss

health.voa由 voa.health 发布官方发布者v0.3.0更新于 Oct 29, 2026

Ferramentas para validar documentos TISS e consultar TUSS, operadoras e dados da ANS.

已验证Streamable HTTP可网页运行金融开发者工具数据与分析

概览

AI 生成的概览

面向巴西 TISS 医疗账单的远程 MCP 服务器:校验、修正并生成 TISS 批次,查询 TUSS 编码、运营商与 ANS 数据。

可以做什么
  • 校验、审计并修正 JSON 格式的 TISS 批次,再生成 TISS 4.03.00 XML 并计算结尾哈希
  • 按精确编码或文本查询 TUSS 编码、TISS 域表以及 ANS 表 38 的拒付说明
  • 查询 ANS 运营商档案、按 CNPJ 或 CNES 查询运营商网络关联,以及 D-TISS 参考单价
  • 解析对账单,规划决定与单据之间的对账,并按服务方汇总拒付地图
  • 生成、解析并校验 SP/SADT 授权申请与响应
  • 向模拟运营商沙箱发送批次,生成合成的对账单与授权响应
适用场景
适合处理巴西医疗保险账单的医院、诊所、实验室、医务人员和运营商,让助手在提交前检查 TISS 批次、解释拒付、核对付款,或查询 TUSS 与 ANS 数据。
运行要求
远程 streamable HTTP 端点;MCP 连接未声明认证。README 说明 HTTP API 的非沙箱操作需要以 Authorization Bearer 头发送 sk_voa_ 组织密钥,沙箱操作无需密钥。需要网络访问。
安装前请注意
批次和单据可能含患者与账单数据;README 称不存储也不记录载荷,但发送真实数据前请先了解载荷与遥测政策。拒付地图的汇总收集为可选开启,CPF 用 HMAC 密钥假名化,CNPJ 保持明文。沙箱工具仅用于模拟数据。修正与生成工具会改动批次内容,写入前请查看差异。

安装

在 SourceWeft 中

  1. 打开 控制台中的 voa-tiss,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/health.voa%2Ftiss/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "voa-tiss": {
      "type": "http",
      "url": "https://tiss-api.voa.health/mcp"
    }
  }
}

README

TISS sem dor de cabeça, para pessoas e agentes de IA.


Valide, corrija e gere lotes TISS, entenda glosas e concilie demonstrativos, tudo em código aberto: uma biblioteca Python que roda offline, uma API HTTP e um MCP remoto para o seu agente de IA.

[Terminal: tiss validate aprova o lote e confere o hash, o código do procedimento sai do lote para tiss tuss e o código da glosa sai do demonstrativo para tiss glosa]
A CLI tiss valida o lote, consulta o procedimento cobrado e explica a glosa que voltou no demonstrativo, tudo offline. Para ver um agente fechando o ciclo, veja o agente faturista.

[!TIP] Usa Claude Code, Codex ou Cursor? Conecte o MCP e peça em português, por exemplo "valide este lote e corrija o que der". Veja Conectar agentes.

Início rápido

sh
pip install tiss
python
from tiss import examples, validate
report = validate(examples.load("lote-com-erros"))[(finding.code, finding.severity) for finding in report.findings]

Cada achado traz um código estável, a localização e, quando possível, a correção pronta. Requer Python 3.10+.

Prefere testar no navegador? Abra o playground.

CLI

Instale a CLI com pip install tiss ou execute sem instalar com uvx tiss validate lote.xml.

ComandoUso
tiss validate <paths...>Valida arquivos XML/JSON ou pastas. Use --operadora REGISTRO para aplicar regras.
tiss fix <arquivo>Mostra um diff; use --write ou -o CAMINHO para gravar.
tiss hash <arquivo>Calcula o hash; --check compara com o epílogo.
tiss glosa <código>Consulta a Tabela 38.
tiss tuss <código|termo>Busca códigos e descrições TUSS.
tiss operadora <registro>Consulta o perfil da operadora.
tiss mapa <pasta>Gera o mapa agregado de rejeição.
tiss mcpInicia o MCP local em stdio; requer tiss[mcp].
tiss serveInicia a API HTTP local; requer tiss[server].

Os códigos de saída são 0 para sucesso, 1 para achados ou itens não encontrados e 2 para uso inválido ou entrada ilegível. Para integração com GitHub Actions, use tiss validate --format github lote.xml.

Para quem é

Você éO tiss ajuda a
Prestador (hospital, clínica, laboratório)pegar o erro antes da operadora e entender por que uma guia foi glosada
Profissional de saúdeconferir guias e códigos TUSS sem decorar o manual
Operadorachecar lotes na entrada com as suas regras, offline; ver o mapa de rejeição por prestador; oferecer sandbox com as suas regras; validar autorizações TISS; publicar regras com selo Oficial; e, nos módulos com agente, analisar contas e autorizações prévias
Pacienteentender em linguagem simples o que uma glosa significa
Gestor do SUS ou do governoconsultar dados abertos da ANS sobre operadoras, glosas e rede hospitalar

Como funciona

Você não precisa escrever XML TISS à mão. O ciclo é sempre o mesmo:

  1. Valide o lote com check ou validate.
  2. Corrija com apply_fixes: as correções são determinísticas, em JSON Patch.
  3. Revalide até zerar os erros. Se faltar algum dado, needs diz exatamente qual perguntar.
  4. Gere o XML com build_lote e calcule o hash do epílogo com hash_epilogo.

Depois do envio, parse_demonstrativo lê o retorno da operadora, glosa explica cada código da Tabela 38 e plan_reconciliation concilia o que foi pago com o que foi cobrado. Para testar sem operadora real, use a operadora simulada.

O que vem no pacote

Por que confiar

  • Offline e determinístico: validar, corrigir e gerar roda na sua máquina, sem telemetria; a mesma entrada dá sempre a mesma saída.
  • XSD fixado por hash: a validação usa o esquema TISS oficial, conferido por hash.
  • À prova de prompt injection: texto livre da guia é dado, nunca instrução.
  • Seus dados não ficam com a gente: veja a política de payloads e telemetria em API HTTP.
  • Medido: no TISS-Bench, com quatro modelos, o acerto médio subiu de 58% sem o MCP para 81% com ele. Gerar um lote do zero ainda fica em 16% nos dois modos.

Conectar agentes

O MCP local roda offline e mantém as guias na máquina:

sh
claude mcp add tiss -- uvx --from "tiss[mcp]" tiss mcp

Para usar o serviço remoto:

sh
claude mcp add --transport http tiss https://tiss-api.voa.health/mcp

Agentes encontram instruções em AGENTS.md e na skill tiss.

Skill, plugins, Codex e Cursor

Ver detalhes
sh
npx skills add Voa-Health/tissclaude plugin marketplace add Voa-Health/tiss && claude plugin install tiss@tisscodex plugin marketplace add Voa-Health/tiss

No Codex, adicione a ~/.codex/config.toml para o MCP local:

toml
[mcp_servers.tiss]command = "uvx"args = ["--from", "tiss[mcp]", "tiss", "mcp"]

Para usar o serviço remoto:

toml
[mcp_servers.tiss]url = "https://tiss-api.voa.health/mcp"

No Cursor, adicione ao mcp.json para o MCP local:

json
{  "mcpServers": {    "tiss": {      "command": "uvx",      "args": ["--from", "tiss[mcp]", "tiss", "mcp"]    }  }}

Para usar o serviço remoto:

json
{  "mcpServers": {    "tiss": {      "url": "https://tiss-api.voa.health/mcp"    }  }}

Privacidade

CLI, MCP local, Action e hook rodam na sua máquina ou runner, sem chave, registro de uso ou telemetria. As chamadas de rede do pacote são feitas apenas por ferramentas rede/D-TISS, que baixam dados públicos, e sandbox_*, que usam a operadora simulada.

CI e pre-commit

Use a Action para validar lotes no GitHub Actions:

yaml
- uses: Voa-Health/tiss@v0  with:    paths: lotes/

O input opcional operadora aplica as regras locais dessa operadora. Para instalar o hook, adicione ao .pre-commit-config.yaml:

yaml
repos:  - repo: https://github.com/Voa-Health/tiss    rev: v0.5.0    hooks:      - id: tiss-validate

Sem assets opcionais

A Action e o hook instalam apenas tiss (com lxml) e validam com os XSD 4.02.00 e 4.03.00 incluídos no pacote. Não instalam pdf nem baixam dados de rede/D-TISS; fora o download do pacote, nada vai à rede. operadora aplica apenas regras incluídas no pacote. O hook seleciona arquivos .xml; limite-o com files: se o repositório tiver outros XML.

Tutoriais

TutorialO que você aprende
Validar um lote (notebook)ler achados e corrigir
Demonstrativo e conciliação (notebook)conferir o que a operadora pagou
TUSS e SP/SADT (notebook)buscar códigos e montar a guia
Gerar e corrigir um lote (notebook)sair do JSON para o XML válido
Regras por operadora (notebook)auditar com regras publicadas
Operadora simulada (notebook)testar envios e glosas
Autorização SP/SADT (notebook)solicitar e analisar autorizações
Mapa de rejeição (notebook)agregar achados por prestador

API HTTP

Servidor local, chaves e telemetria

Ver detalhes

Instale o extra do servidor e inicie a API local:

sh
pip install "tiss[server]"tiss serve --host 127.0.0.1 --port 8000

Valide XML como JSON ou como corpo XML:

sh
python -c 'import json, pathlib; print(json.dumps({"xml": pathlib.Path("lote.xml").read_text()}))' \  | curl https://tiss-api.voa.health/v1/validate \  -H 'Content-Type: application/json' \  --data-binary @-curl https://tiss-api.voa.health/v1/validate \  -H 'Content-Type: application/xml' \  --data-binary @lote.xml

Consulte o OpenAPI e o catálogo de operações.

Sem chave, só as operações do sandbox respondem. Para as demais, crie a chave sk_voa_ da organização, que vale para os produtos da Voa, no painel da organização e envie-a em Authorization: Bearer. Não há limite diário.

sh
curl https://tiss-api.voa.health/v1/validate \  -H "Authorization: Bearer $TISS_API_KEY" \  -H 'Content-Type: application/xml' \  --data-binary @lote.xml

Chave inválida ou revogada retorna 401, e a revogação vale em até 60 segundos. Chave sem o escopo da operação (tiss:validate, tiss:build, tiss:sandbox, tiss:accounts, tiss:authorization ou tiss:rules) retorna 403. Cada chamada com chave entra no uso da organização, por operação e por chave. Auto-hospedado, sem TISS_BACKEND_URL e TISS_SERVICE_SECRET, o servidor não exige chave.

O serviço não armazena nem registra payloads e não os usa para treinar modelos. Quando ativada por POSTHOG_KEY, a telemetria agregada contém operação, códigos de achados, registro ANS, versão TISS e data, sem e-mail. Envie X-Voa-Telemetry: off para desativá-la. A biblioteca local permanece offline e nunca envia telemetria. TISS_API_KEY é a variável que clientes HTTP locais podem ler para enviar uma chave de acesso.

O mapa de rejeição hospedado é uma coleta separada, opt-in e desligada por padrão. Quando habilitado no /org, envia somente agregados por prestador, código, regra e mês. O payload do mapa usa a versão "2" e chaves em inglês; aceite apenas version: "2". Essa quebra evita compatibilidade ambígua entre os contratos antigos e novos. O payload contém version, lotes, guias, ignored, providers e rows; as linhas usam provider, month, code, glosa, rule_id, guias e affected_amount. Os resumos usam guias_with_finding e total_amount. O CPF é pseudonimizado com HMAC e segredo próprio da organização antes de sair do cliente; o CNPJ permanece em claro, e o código do prestador na operadora tem preferência. A retenção é de 24 meses, e a organização pode desligar a coleta e apagar tudo no /org. A telemetria anônima permanece independente e não muda com esse aceite.

Na CLI, mapa --enviar usa TISS_KEY e envia ao servidor público. TISS_MAPA_URL substitui a URL de envio (padrão: https://tiss-api.voa.health/v1/rejection-map/submit). Sem TISS_SEGREDO_PSEUDONIMO, a CLI busca o segredo antes de agregar, via GET /v1/rejection-map/config, no mesmo servidor e com Bearer sk_voa_. O envio usa POST /v1/rejection-map/submit, com o mapa agregado como corpo JSON.

Referência

Símbolos da biblioteca

Ver detalhes

Para renderizar a guia SP/SADT em PDF, instale pip install "tiss[pdf]".

SímboloUso
validateValida um lote TISS e retorna um relatório.
checkVerifica um lote JSON e propõe correções.
apply_fixesAplica correções determinísticas ao lote JSON.
build_loteGera o XML TISS a partir de um lote validado.
parse_loteConverte XML TISS em um lote JSON.
auditAudita o lote com o contexto da operadora.
validate_packageValida um pacote de regras de operadora e lista os erros.
hash_epilogoCalcula o hash do epílogo.
glosaConsulta um código da Tabela 38.
dominio.lookup / dominio.searchConsulta tabelas de domínio TISS.
operadoras.lookup / operadoras.searchConsulta operadoras ativas na ANS.
operadoras.perfilJunta o cadastro e os indicadores de glosa da ANS.
parse_demonstrativoLê um demonstrativo e retorna decisões por guia.
plan_reconciliationPropõe conciliação entre decisões e guias.
sadt_missingLista campos obrigatórios ausentes da guia SP/SADT.
sadt_catalogRetorna uma cópia do catálogo SP/SADT.
render_sadt (extra pdf)Gera um PDF da guia SP/SADT.
tuss.lookupConsulta um código TUSS.
tuss.searchBusca registros TUSS por texto.
rede.*Consulta vínculos da rede hospitalar da ANS.
tiss_referenciaConsulta valores unitários de referência D-TISS da ANS por TUSS.
json_schemaRetorna o esquema JSON de um tipo público.
examplesDisponibiliza exemplos sintéticos do pacote.

tiss.rede baixa e verifica os dados na primeira consulta. Defina TISS_REDE com o caminho de um SQLite local para usar uma cópia própria. tiss.referencia consulta valores unitários de referência da ANS por TUSS, UF e semestre; o valor pago é somente o pago diretamente ao fornecedor, não o total pago pela operadora. Defina TISS_REFERENCIA para usar um SQLite local.

Campos de um achado

Ver detalhes
CampoSignificado
codeCódigo estável em docs/codigos.md
severityerror ou warning
guiaIdentificador da guia, quando houver
xpathLocalização no XML, quando houver
messageDescrição concisa do achado
pointerJSON Pointer no lote JSON, quando houver
fixCorreção em JSON Patch, quando determinística
needsCampos necessários para completar a guia
glosaCódigo provável da Tabela 38, quando houver
ruleRegra de operadora que gerou o achado, quando houver

Mais

来源:README.md,提交 76db67c

工具

26

tiss_validate

Valida XML TISS ou lote em JSON. Quando usar: antes de gerar ou enviar um lote. Quando não usar: para corrigir achados sem aplicar o ciclo validar → tiss_apply_fixes → validar de novo.

输入参数xmldatalotecontextooperadora

tiss_parse_demonstrativo

Lê decisões de um demonstrativo. Quando usar: para identificar pagamentos e glosas. Quando não usar: para validar lotes.

输入参数xml必填

tiss_plan_reconciliation

Propõe vínculos entre decisões e guias. Quando usar: após ler um demonstrativo. Quando não usar: para alterar guias.

输入参数guias必填id_keydecisoes必填status_keyoperadora_keyprestador_key

tuss_lookup

Busca um código TUSS exato. Quando usar: para consultar código ou vigência. Quando não usar: para buscar por descrição.

输入参数code必填datatabelainclude_expired

tiss_sadt_missing

Identifica campos obrigatórios SP/SADT ausentes. Quando usar: antes de renderizar uma guia. Quando não usar: para validar um lote.

输入参数values必填

tiss_sadt_catalog

Retorna o catálogo SP/SADT. Quando usar: para conhecer campos e domínios. Quando não usar: para preencher uma guia sem dados.

无需输入参数。

tiss_rede

Consulta as operadoras vinculadas a um CNPJ ou CNES. Quando usar: para identificar vínculos de um estabelecimento. Quando não usar: para buscar o cadastro geral; use operadora_lookup.

输入参数cnescnpjlimite

operadora_rede

Consulta os estabelecimentos vinculados a uma operadora. Quando usar: para identificar unidades da rede por UF. Quando não usar: para buscar o cadastro geral; use operadora_lookup.

输入参数uflimiteregistro必填

operadora_perfil

Consulta o cadastro e a série semestral de glosa e pagamento de uma operadora na ANS. Quando usar: para conhecer uma operadora pelo registro ANS. Quando não usar: para buscar operadoras por nome.

输入参数registro_ans必填

tiss_sandbox_enviar_lote

Envia um lote à operadora simulada. Quando usar: para testar integração local. Quando não usar: para transmitir dados reais.

输入参数xml必填cenariotentativaregistro_ans

tiss_sandbox_demonstrativo

Gera o demonstrativo de um protocolo simulado. Quando usar: após enviar um lote. Quando não usar: com protocolo de outra operadora.

输入参数protocolo必填

tiss_build

Gera o XML TISS 4.03.00 de um lote em JSON, com hash do epílogo. Consulte tiss://schemas/lote para o esquema estrutural. Quando usar: depois de validar o lote em JSON sem erros. Quando não usar: para corrigir achados; use tiss_apply_fixes.

输入参数lote必填

tiss_hash

Calcula o hash do epílogo de um XML TISS. Quando usar: para conferir a integridade do XML. Quando não usar: para validar o conteúdo; use tiss_validate.

输入参数xml必填

tiss_audit

Audita um lote JSON com regras locais e contexto da operadora. Quando usar: para identificar inconsistências administrativas. Quando não usar: para aplicar correções; use tiss_apply_fixes.

输入参数datalote必填contextooperadora

tiss_rejection_map

Agrega achados por prestador e mês, sem expor dados das guias; CPF é pseudonimizado. Quando usar: para analisar rejeições por prestador. Quando não usar: para consultar guias individuais ou corrigir lotes.

输入参数datalotes必填regrascontextooperadorasegredo_pseudonimo

tiss_apply_fixes

Aplica correções JSON Patch de um relatório ao lote. Quando usar: depois de tiss_validate ou tiss_audit com achados corrigíveis. Quando não usar: para inventar dados ausentes; peça-os ao usuário.

输入参数lote必填report必填

glosa_explain

Explica um código da Tabela 38 da ANS. Quando usar: ao interpretar uma glosa recebida. Quando não usar: para validar ou corrigir o lote.

输入参数codigo必填

tiss_dominio

Consulta tabelas e códigos de domínio TISS. Quando usar: para localizar um código ou termo de domínio. Quando não usar: para buscar procedimentos TUSS; use tuss_search.

输入参数datatextocodigolimitetabelainclude_expired

operadora_lookup

Busca operadoras ativas pelo nome, registro, CNPJ ou localidade. Quando usar: para localizar uma operadora na base pública. Quando não usar: para consultar vínculos hospitalares; use tiss_rede.

输入参数texto必填limite

tiss_referencia

Consulta valores unitários de referência D-TISS da ANS por procedimento TUSS. Quando usar: para comparar valores informados por UF, modalidade, porte e semestre. Quando não usar: para glosa ou preço contratado de uma operadora; use as ferramentas de operadoras.

输入参数uf必填portecodigo必填tabelasemestremodalidade

tiss_autorizacao_build

Gera XML TISS 4.03.00 para solicitação ou resposta de autorização SP/SADT.

输入参数mensagem必填

tiss_autorizacao_parse

Interpreta solicitações e respostas de autorização SP/SADT.

输入参数xml必填

tiss_autorizacao_check

Valida uma solicitação SP/SADT e retorna uma decisão explicável.

输入参数xmlcontextosolicitacao

tiss_sandbox_autorizacao

Gera uma resposta SP/SADT sintética nos cenários disponíveis.

输入参数xmlcenariosolicitacao

buscar_docs

Busca trechos da documentação local da biblioteca. Quando usar: para encontrar instruções e referências da API. Quando não usar: para consultar dados clínicos ou códigos específicos.

输入参数texto必填limite

版本历史

1
  1. v0.3.0最新Oct 22, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分