Skip to main content

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

CI Versão no PyPI Versões do Python Licença Apache-2.0 MCP Registry

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.

Agente faturista fechando o ciclo TISS no terminal: valida o lote, corrige, envia à operadora simulada, lê as glosas e rascunha os recursos
O agente faturista usando só o MCP público: corrige dois erros do lote, envia à operadora simulada, lê as glosas e rascunha um recurso por guia, sem inventar evidência.

Início rápido

pip install tiss
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.

Comando Uso
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 mcp Inicia o MCP local em stdio; requer tiss[mcp].
tiss serve Inicia 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úde conferir guias e códigos TUSS sem decorar o manual
Operadora checar 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
Paciente entender em linguagem simples o que uma glosa significa
Gestor do SUS ou do governo consultar 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:

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

Para usar o serviço remoto:

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
npx skills add Voa-Health/tiss
claude plugin marketplace add Voa-Health/tiss && claude plugin install tiss@tiss
codex plugin marketplace add Voa-Health/tiss

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

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

Para usar o serviço remoto:

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

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

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

Para usar o serviço remoto:

{
  "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:

- 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:

repos:
  - repo: https://github.com/Voa-Health/tiss
    rev: v0.4.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

Tutorial O 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:

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

Valide XML como JSON ou como corpo XML:

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 uma chave sk_tiss_ no painel da organização e envie-a em Authorization: Bearer. Não há limite diário.

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 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_tiss_. 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ímbolo Uso
validate Valida um lote TISS e retorna um relatório.
check Verifica um lote JSON e propõe correções.
apply_fixes Aplica correções determinísticas ao lote JSON.
build_lote Gera o XML TISS a partir de um lote validado.
parse_lote Converte XML TISS em um lote JSON.
audit Audita o lote com o contexto da operadora.
validate_package Valida um pacote de regras de operadora e lista os erros.
hash_epilogo Calcula o hash do epílogo.
glosa Consulta um código da Tabela 38.
dominio.lookup / dominio.search Consulta tabelas de domínio TISS.
operadoras.lookup / operadoras.search Consulta operadoras ativas na ANS.
operadoras.perfil Junta o cadastro e os indicadores de glosa da ANS.
parse_demonstrativo Lê um demonstrativo e retorna decisões por guia.
plan_reconciliation Propõe conciliação entre decisões e guias.
sadt_missing Lista campos obrigatórios ausentes da guia SP/SADT.
sadt_catalog Retorna uma cópia do catálogo SP/SADT.
render_sadt (extra pdf) Gera um PDF da guia SP/SADT.
tuss.lookup Consulta um código TUSS.
tuss.search Busca registros TUSS por texto.
rede.* Consulta vínculos da rede hospitalar da ANS.
json_schema Retorna o esquema JSON de um tipo público.
examples Disponibiliza 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.

Campos de um achado

Ver detalhes
Campo Significado
code Código estável em docs/codigos.md
severity error ou warning
guia Identificador da guia, quando houver
xpath Localização no XML, quando houver
message Descrição concisa do achado
pointer JSON Pointer no lote JSON, quando houver
fix Correção em JSON Patch, quando determinística
needs Campos necessários para completar a guia
glosa Código provável da Tabela 38, quando houver
rule Regra de operadora que gerou o achado, quando houver

Mais

Metadata

Release files for tiss 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tiss 0.4.0
File Size Uploaded Provenance
tiss-0.4.0.tar.gz 1.2 MB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for tiss 0.4.0
File Interpreter ABI Platform
tiss-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 2.5 MB

Release files / tiss-0.4.0.tar.gz

Download URL tiss-0.4.0.tar.gz
Size 1.2 MB
Tags Source
SHA-256 checksum
How to use checksums
36e2d8a2515a6ab609438ba52737d817a480df0754c925eceb39cba325ec1983
BLAKE2b-256 checksum
How to use checksums
e091fef088c9ef30077b933db6d75d7cde3f068600bc8507c126ae86ae2682b5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / tiss-0.4.0-py3-none-any.whl

Download URL tiss-0.4.0-py3-none-any.whl
Size 1.3 MB
Tags Python 3
SHA-256 checksum
How to use checksums
9a5e3dc541b58db706eb4d76faa6bf511b3b32fb595c687b00c760dfbe7daeca
BLAKE2b-256 checksum
How to use checksums
b0ede4b2abb79cda8fdec542845a586fdd48f00263ee744cc80c741b560dd278
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Security for tiss 0.4.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for tiss-0.4.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page