This release is a pre-release and may not be stable for production use.
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.
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.
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:
- Valide o lote com
checkouvalidate. - Corrija com
apply_fixes: as correções são determinísticas, em JSON Patch. - Revalide até zerar os erros. Se faltar algum dado,
needsdiz exatamente qual perguntar. - Gere o XML com
build_lotee calcule o hash do epílogo comhash_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
- Biblioteca Python: validação, correção, geração, hash, auditoria, demonstrativos, TUSS, operadoras e rede hospitalar.
- API HTTP: as mesmas operações em
https://tiss-api.voa.health, com OpenAPI. - MCP remoto: 24 ferramentas e 3 prompts para agentes, no registro oficial de MCP.
- Operadora simulada: envie lotes e receba protocolo, demonstrativo e glosas sem tocar em produção.
- Agente faturista: um agente completo para adaptar ao seu fluxo.
- TISS-Bench: 40 tarefas sintéticas para medir agentes com e sem o MCP.
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 remoto fica em https://tiss-api.voa.health/mcp. Agentes encontram as
instruções de uso no AGENTS.md e na
skill tiss.
claude mcp add --transport http tiss https://tiss-api.voa.health/mcp
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:
[mcp_servers.tiss]
url = "https://tiss-api.voa.health/mcp"
No Cursor, adicione ao mcp.json:
{
"mcpServers": {
"tiss": {
"url": "https://tiss-api.voa.health/mcp"
}
}
}
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]"
python -m tiss.server --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.0a1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| tiss-0.4.0a1.tar.gz | 1.2 MB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tiss-0.4.0a1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.5 MB
Release files / tiss-0.4.0a1.tar.gz
| Download URL | tiss-0.4.0a1.tar.gz |
|---|---|
| Size | 1.2 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9a201b73734985da096022e036a3a71e168542e09babd8ea95d53ecdd1445280
|
|
BLAKE2b-256 checksum How to use checksums |
58b2455eadc09dc3b62b864c1ed9616fcb204a5840465697fd9643ed242f6cd9
|
| 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 logRelease files / tiss-0.4.0a1-py3-none-any.whl
| Download URL | tiss-0.4.0a1-py3-none-any.whl |
|---|---|
| Size | 1.3 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c5112c57825d1c763937e88a1696eaab777da2ec5f64f967c61efca3a40301c5
|
|
BLAKE2b-256 checksum How to use checksums |
72ff9962e6b46b2456df7f29499c53076b26a815890d61f827b97da6f8b5d46d
|
| 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 logSecurity for tiss 0.4.0a1
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.
Attestation for tiss-0.4.0a1.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 logA 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.