Console Health Audit — visão geral
Mapa da arquitetura de informação, referência da API, busca global, provenance, visualizador de PDF, tiers de acesso e diretrizes mobile.
Referência da API
Endpoints do cartridge health-audit, agrupados por área e sem duplicatas. Base no navegador: /api/mycelia/v2/health-audit (proxy same-origin via BFF — nunca há host de API exposto no cliente).
41 endpoints.
Auditoria
6- POST
/pipeline/runDispara o pipeline de auditoria (ingestão + regras + glosa) a partir do XML TISS.
usado em / - POST
/audit/xml-glosaRoda apenas a glosa do XML contra o contrato (sem reingerir regras).
usado em / - GET
/audit/runsLista execuções de auditoria (filtra por status de revisão e limite).
read-onlyusado em /review - GET
/audit/runs/{run_id}Detalhe de uma execução: itens, glosas, snapshot e trilha de revisão (inspeção read-only).
read-onlyusado em /review - POST
/audit/runs/{run_id}/reviewSubmete decisões profissionais (disposição + justificativa) para uma execução.
rules-managementusado em /audit-trail - GET
/internal/review/queueFila interna de revisão pendente.
rules-managementinterno
Contratos
9- GET
/contractsCatálogo público de contratos vigentes (visível conforme tenant).
read-onlyusado em /contractsalias: /internal/contracts - GET
/contracts/{ref}Detalhe do contrato: limites de preço, regras estruturadas e documentos. Aceita CNPJ, ANS, contract_id ou relationship_key.
read-onlyusado em /contracts, /relationship/[ref]alias: /internal/contracts/{ref} - GET
/contracts/{ref}/documentsLista documentos-fonte (PDF/XLSX/DOCX) do contrato.
read-onlyusado em /contracts, /relationship/[ref] - GET
/contracts/{ref}/documents/{filename}Stream do binário do documento (PDF inline com Range; demais como download).
read-onlyusado em /contracts - GET
/contracts/{ref}/statusEstado de processamento/ingestão de um contrato.
read-only - POST
/internal/contractsCria ou atualiza um contrato (upsert de regras e limites de preço).
rules-managementinternousado em /contracts (ingestão) - PUT
/internal/contracts/{ref}Atualiza um contrato existente.
rules-managementinterno - DELETE
/internal/contracts/{ref}Remove um contrato.
admininterno - POST
/internal/contracts/ingest-bundleIngere um pacote (bundle) de documentos de contrato de uma vez.
rules-managementinterno
Regras
6- GET
/registry/rulesRegistry canônico de regras (KB e glosa) com origem, família, escopo e modo.
read-onlyusado em /rules, /relationship/[ref]alias: /rules - GET
/registry/rules/{rule_id}Detalhe de uma regra do registry.
read-onlyusado em /rules - GET
/registry/overridesLista overrides aplicados sobre regras do registry.
rules-managementinterno - POST
/registry/overridesCria um override de regra.
rules-managementinterno - DELETE
/registry/overrides/{override_id}Remove um override de regra.
rules-managementinterno - POST
/rules/simulateSimula o efeito de regras contra um conjunto de itens (sem persistir).
rules-managementinterno
TISS
4- GET
/tiss/protocolosLista protocolos TISS (status, guias, valores informado e glosado).
read-onlyusado em /relationship/[ref] - GET
/tiss/recursosLista recursos de glosa TISS (status, motivo, resposta).
read-onlyusado em /relationship/[ref] - GET
/tiss/statsMétricas agregadas de protocolos e recursos.
read-onlyusado em /relationship/[ref] - GET
/tiss/demonstrativo/{protocolo}Demonstrativo de análise de um protocolo.
read-only
TUSS
5- GET
/tuss/validate/{code}Valida um código TUSS (existência, tabela, termo, vigência).
read-onlyusado em /relationship/[ref], /glosa - GET
/tuss/proceduresBusca procedimentos TUSS por termo.
read-onlyusado em /relationship/[ref], /glosa - GET
/tuss/opmeBusca OPME (órteses, próteses e materiais especiais).
read-onlyusado em busca ⌘K - GET
/tuss/medicationsBusca medicamentos por termo.
read-onlyusado em busca ⌘K - GET
/tuss/statsContagens de procedimentos, OPME, medicamentos e CBO.
read-only
Conhecimento
4- POST
/sparqlExecuta consulta SPARQL sobre o grafo de conhecimento (uso avançado).
read-onlyusado em /knowledge - GET
/knowledge/graph/{iri}Vizinhança de um IRI no grafo (nós e arestas) para exploração guiada.
read-onlyusado em /knowledge - GET
/glosa/patternsPadrões de glosa derivados por FCA (motivo, contagem, valor negado).
read-only - GET
/glosa/denial-ratesTaxas de negação por procedimento.
read-only
Ingestão
5- GET
/sentinel/raw-data/statusEstado da base de dados brutos (pronta/pendente, contagem de arquivos).
read-onlyusado em /ingest - POST
/sentinel/raw-data/syncSincroniza dados brutos a partir de um source_path.
rules-managementusado em /ingest - POST
/kb/ingestIngere documentos na base de conhecimento (job assíncrono).
rules-managementusado em /ingest - GET
/kb/ingest/{job_id}Acompanha o status de um job de ingestão.
read-only - POST
/kb/rebuild-fcaReconstrói a treliça FCA a partir dos dados de glosa (job assíncrono).
rules-managementinterno
Sistema
2- GET
/statusStatus do cartridge e prontidão das dependências (ontologia, regras, contratos).
read-onlyusado em /ingest - GET
/evolution/statsMétricas de evolução do cartridge.
admininterno
Arquitetura de informação
A navegação segue “spine + satélites”: o relacionamento Operadora ↔ Hospital é a espinha polimórfica do produto.
Busca global (⌘K)
Atalho ⌘K (macOS) ou Ctrl+K (Windows/Linux). Resolve, em ordem:
- CNPJ (com ou sem máscara) → relacionamento do prestador/operadora.
- Registro ANS → relacionamento da operadora.
contract_id(UUID) → relacionamento do contrato.relationship_key(OPER:<ans>::HOSP:<cnpj>) → relacionamento direto.- Nome (fuzzy) → matches em catálogo de contratos e regras.
Provenance e trilha de auditoria
Toda regra, preço extraído e finding preserva o caminho até o documento de origem.
Preços extraídos
- source_filename
- source_page
- source_line
- source_module
- extracted_at
Chips inline em /contracts e no modal de detalhe. O visualizador navega até a página citada.
Regras
- rule_iri
- source_module
- rule_family
- certainty
- application_mode
- processing_pipeline
Escopo: contract_id, relationship_key, provider_cnpj, operator_cnpj, operator_ans_registration.
Findings de auditoria
- glosa_code
- rule_iri
- source
- evidence_chunk
Referenciam a regra que disparou a glosa e o trecho de evidência.
Visualizador de PDF
ContractDocumentViewer usa <iframe> nativo (sem pdf.js nem react-pdf). A rota /contracts/[ref]/documents expõe o binário com Content-Type correto e suporta Range requests.
| Tipo | Comportamento |
|---|---|
| Renderiza no <iframe> com toolbar nativa. ?page=N navega direto. | |
| .xlsx, .xls, .csv | Download direto + link 'abrir' no app local. |
| .docx, .doc | Download direto. |
| .xml (TISS) | Viewer monospaced; truncado para arquivos >1MB. |
| .png, .jpg, .jpeg | <img> inline. |
RBAC: tiers do console
Verificação canônica é server-side no mycelia-api — a UI esconde affordances que o backend recusaria. Em client, use useAuth() + hasPermission(role, resource, action).
| Tier (UI) | Papel backend | Permissões |
|---|---|---|
| admin | admin | Tudo: ingestão, regras, usuários, configurações. |
| rules-management | analyst ou auditor_medico | Leitura + escrita em rules; leitura no resto. |
| read-only | viewer | Apenas leitura. |
Mobile
- Sidebar colapsa em viewport <lg (botão hamburger no AppHeader).
- Paleta ⌘K acessível via botão dedicado no header (não depende de atalho de teclado).
- Chips de filtro sticky e horizontalmente roláveis em larguras estreitas.
- Tap targets de ação primária ≥44×44px; secundários ≥32px.
- Layouts em CSS grid com
minmax(); sem scroll horizontal exceto em.custom-scrollbar. - Tabelas viram cards empilhados em <md e voltam a tabela em ≥md.
framer-motionusado com parcimônia para preservar fluidez.
