> For the complete documentation index, see [llms.txt](https://docs.voa.health/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.voa.health/integracao/tiss/tutoriais/05-regras-por-operadora.md).

# Regras por operadora

Pacotes usam JSON declarativo. Este exemplo sintético avalia um campo da guia com uma expressão de correspondência integral.

[Abrir no GitHub](https://github.com/Voa-Health/tiss/blob/main/docs/tutoriais/05-regras-por-operadora.ipynb) · [Abrir no Colab](https://colab.research.google.com/github/Voa-Health/tiss/blob/main/docs/tutoriais/05-regras-por-operadora.ipynb)

Pacotes usam JSON declarativo. Este exemplo sintético avalia um campo da guia com uma expressão de correspondência integral.

```python
from tiss import check, examples, parse_lote

lote = parse_lote(examples.load("lote-valido"))
guia = lote["guias"][0]
cabecalho = "cabecalho_guia" if guia["tipo"] == "sp_sadt" else "cabecalho_consulta"
pointer = f"/guias/*/{cabecalho}/numero_guia_prestador"

pacote = {
    "operadora": "123456",
    "mantenedor": {"tipo": "comunidade"},
    "official": False,
    "versao_tiss": "4.03.00",
    "regras": [
        {
            "id": "exemplo.numero-guia",
            "descricao": "O número da guia deve ficar vazio neste exemplo.",
            "source": {
                "url": "https://example.org/regras",
                "titulo": "Pacote sintético",
                "data": "2026-01-01",
                "acesso": "publico",
            },
            "severity": "warning",
            "check": {"tipo": "padrao", "pointer": pointer, "regex": "^$"},
        }
    ],
}

relatorio = check(lote, operadora=pacote)
[(f.code, f.rule["id"], f.pointer) for f in relatorio.findings if f.rule]
```

```
[('regra.padrao',
  'exemplo.numero-guia',
  '/guias/0/cabecalho_guia/numero_guia_prestador'),
 ('regra.padrao',
  'exemplo.numero-guia',
  '/guias/1/cabecalho_guia/numero_guia_prestador')]
```

A severidade e a fonte fazem parte do achado. Pacotes oficiais exigem mantenedor do tipo `operadora`.
