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 分