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.
Credenciais
JWT e chave persistente
Entre no console para emitir JWT e chaves com a sua sessão.
A sessão do console já autentica o explorador abaixo. Use JWT ou chave só para Postman, Insomnia ou Clarifai.
JWT de curta duração
Renova o cookie da sessão e mostra o token para colar em Authorization: Bearer …
Chave persistente (X-API-Key)
Só papéis cujas permissões você já tem. Precisa de ha:users:manage (administrador).
Integração
Coleção de API (Insomnia / Postman)
144 requisições geradas do catálogo canônico do backend — a geração falha em CI se a coleção divergir das rotas publicadas.
Coleção
Todas as rotas canônicas com exemplos — importa direto no Insomnia ou Postman.
Environment de produção
base_url de produção e tenant pcpsaude; preencha a sua X-API-Key.
Referência da API
Endpoints do cartridge health-audit, agrupados por área e sem duplicatas. No console, a base no navegador é /api/mycelia/v2/health-audit (proxy same-origin via BFF). Integrações servidor-servidor usam a origem direta de produção e a API key descritas abaixo.
142 endpoints.
Auditoria
16- POST
/stampCarimba um XML TISS com ans_glosas e booleanos explícitos de glosa aplicada/sugestão, cria idempotentemente uma trilha persistente de revisão (exception_only: só os achados que o motor marca como revisão manual ficam pendentes) e retorna run_id e poll_url.
rules-managementusado em Integrações legadas com revisão - POST
/pipeline/runDispara o pipeline de auditoria (ingestão + regras + glosa) a partir do XML TISS.
adminusado em / - POST
/audit/xml-glosaAlias compatível para integrações antigas: aceita o request histórico, mas executa e retorna exatamente o contrato canônico de /stamp, incluindo ans_glosas, routing, statistics, run_id e poll_url.
rules-managementusado em /audit e integrações com revisão - POST
/audit/xml-contract-suggestionsSugere contratos compatíveis para um XML TISS (score de roteamento).
rules-management - POST
/internal/audit/xml-vs-contractAudita um XML TISS contra um contrato específico.
rules-managementinterno - 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
/audit/runs/{run_id}/xmlServe o XML TISS que a execução auditou, pelo run_id. Complementa as rotas escopadas por contrato: elas leem o store content-addressed, e execuções sem contrato resolvido (match="none") não são alcançáveis por lá — medido em produção, 32 de 112 XMLs. Aceita ?pretty=1.
read-onlyusado em proveniência de execuções sem contrato - GET
/audit/runs/{run_id}/demonstrativo.xmlEmite o demonstrativo TISS real de análise de conta do run, na mesma versão do lote de entrada, usando apenas glosas adjudicadas e aplicadas; com ?validate=1 valida contra o XSD oficial ANS da versão da guia antes de baixar.
read-onlyusado em envio de glosa ao hospital - POST
/audit/runs/reprocessRecarimba execuções armazenadas a partir do XML TISS arquivado — sem reenviar o XML. Seleção por run_ids OU filter (contract_id, run_type, status, created_after/before); contract_ref redireciona o contrato; dry_run calcula o delta antes/depois sem persistir; background move lotes grandes para um job com job_id. Requer ha:stamp:run ou ha:glosa:manage.
rules-managementusado em correções de contrato/regra em lote - GET
/audit/runs/reprocess/{job_id}Progresso e resultados de um job de recarimbo em lote (background=true): processed/eligible e o delta por execução.
rules-managementusado em correções de contrato/regra em lote - DELETE
/audit/runs/{run_id}Exclui uma execução de auditoria (estado Redis, linha durável, projeção JSON e XML de entrada); a trilha de governança é preservada. Requer ha:glosa:manage.
rules-managementusado em /review - GET
/internal/review/queueFila interna de revisão pendente.
read-onlyinterno - POST
/glosa/auditAudita linhas faturadas contra o SIGTAP via reasoner de glosa (Crepe) do gateway.
rules-management - POST
/defense/compileCompila proposta de pacote de defesa de glosa para uma conta reconciliada.
rules-management
Contratos
32- GET
/contractsCatálogo público de contratos vigentes (visível conforme tenant).
read-onlyusado em /contracts - GET
/contracts/searchBusca rápida de contratos em memória (⌘K e página /contracts).
read-onlyusado em busca ⌘K, /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] - GET
/contracts/{ref}/documentsLista documentos-fonte (PDF/XLSX/DOCX) do contrato.
read-onlyusado em /contracts, /relationship/[ref] - GET
/contracts/{ref}/sourcesLista as contribuições independentes de contrato e aditivos, com estado ativo e contagens derivadas.
read-onlyusado em /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}/page-image/{filename}Renderiza uma página do PDF do contrato como PNG (pano de fundo dos overlays de preço).
read-only - GET
/contracts/{ref}/price-bboxBounding boxes dos preços extraídos no documento-fonte (provenance visual).
read-only - GET
/contracts/{ref}/price-bbox.pdfPDF do contrato com os bounding boxes dos preços solicitados desenhados.
read-only - GET
/contracts/{ref}/historyLog de eventos append-only do contrato (provenance git-like).
read-only - GET
/contracts/{ref}/statusEstado de processamento/ingestão de um contrato.
read-only - GET
/contracts/{ref}/xml/{xml_sha256}XML TISS armazenado de uma auditoria do contrato (viewer de fonte).
read-only - GET
/xml/{xml_sha256}XML TISS de auditoria sem escopo de contrato, por SHA-256.
read-only - GET
/relationships/{ref}/lotesProtocolos/lotes escopados a um relacionamento operadora↔prestador.
read-onlyusado em /relationship/[ref] - POST
/contracts/ingestIngere PDF de contrato (OCR + extração de regras; job assíncrono, 202).
rules-managementusado em /ingest - POST
/contracts/{contract_id}/apply-cbhpmMaterializa limites de preço CBHPM e mescla no contrato existente.
rules-management - POST
/contracts/{ref}/operatorRedefine a operadora de um contrato/relacionamento existente.
rules-management - PATCH
/contracts/{ref}/sources/{source_id}Ativa ou desativa uma fonte do contrato e recompõe os preços e regras derivados.
rules-managementusado em /relationship/[ref] - PUT
/contracts/{ref}/sources/{source_id}/vigenciaInforma a vigência (AAAA-MM-DD) de um documento do contrato quando nenhuma foi lida dele; sem vigência legível o contrato não é aplicado na auditoria.
rules-managementusado em /ingest, /relationship/[ref] - DELETE
/contracts/{ref}/sources/{source_id}Remove uma contribuição de fonte e recompõe o contrato sem excluir o relacionamento.
rules-managementusado em /relationship/[ref] - GET
/internal/contractsLista interna dos contratos do tenant com identificação, operadora, vigência e número de limites de preço (plano de regras).
read-onlyinterno - GET
/internal/contracts/{ref}Mesmo detalhe de GET /contracts/{ref}, no plano interno, sob a permissão de leitura de regras.
read-onlyinterno - POST
/internal/contractsCria ou atualiza um contrato (upsert de regras e limites de preço).
rules-managementinternousado em /contracts (ingestão) - POST
/internal/contracts/ingest-bundleIngere um pacote (bundle) de documentos de contrato de uma vez.
rules-managementinterno - PUT
/internal/contracts/{ref}Atualiza um contrato existente (identidade, label, disabled_rule_types e rule_overrides validados).
rules-managementinterno - GET
/internal/contracts/{ref}/rulesConfiguração efetiva de regras do relacionamento (pack ← perfil de operadora ← rule_overrides) com proveniência de cada decisão.
read-onlyinternousado em /relationship/[ref] - DELETE
/internal/contracts/{ref}Remove um contrato.
rules-managementinterno - DELETE
/internal/contracts/{ref}/statusRemove o sidecar de status de um contrato.
admininterno - GET
/internal/contracts/global-rulesLimites de preço globais (aplicáveis a todos os contratos).
read-onlyinterno - PUT
/internal/contracts/global-rulesAtualiza os limites de preço globais.
admininterno - DELETE
/internal/contracts/global-rules/{code}Remove um limite de preço global por código.
admininterno - POST
/internal/contracts/sync-ttlSincroniza contratos para o grafo TTL.
rules-managementinterno
Regras
9- GET
/registry/rulesRegistry canônico de regras (KB e glosa) com origem, família, escopo e modo.
read-onlyusado em /rules, /relationship/[ref] - GET
/registry/rules/{rule_id}Detalhe de uma regra do registry.
read-onlyusado em /rules - GET
/reports/rules/inventoryInventário canônico de seleção, observação e aplicação de regras.
read-only - GET
/registry/overridesLista overrides aplicados sobre regras do registry.
read-only - POST
/registry/overridesCria um override de regra.
rules-management - DELETE
/registry/overrides/{override_id}Remove um override de regra.
rules-management - POST
/rules/simulateSimula o efeito de regras contra um conjunto de itens (dry-run, sem persistir).
read-only - GET
/rulesRegras de referência do appliance em Turtle (TTL), por plano de conhecimento (kb, glosa ou all).
read-only - POST
/rulesSalva regras de referência do appliance (compartilhadas por design).
rules-management
Governança
30- POST
/governance/rulesCria uma regra governada — sempre persiste como status=draft (proposta).
rules-management - POST
/governance/feedbackIngere feedback operacional (arquivo) como observações imutáveis — nunca ativa nem altera regras.
rules-management - GET
/governance/rulesLista regras governadas.
read-only - GET
/governance/rules/{rule_id}Versões de uma regra governada.
read-only - PUT
/governance/rules/{rule_iri}Edita uma regra draft (regra active é imutável — use supersede).
rules-management - POST
/governance/rules/{rule_iri}/promoteÚnico caminho para status=active — revalida os shapes SHACL.
rules-management - POST
/governance/rules/{rule_iri}/supersedeSubstitui uma regra ativa por uma nova (a antiga é aposentada).
rules-management - DELETE
/governance/rules/{rule_iri}Soft-delete: status=retired — nunca é apagada, preservando referências de auditoria.
rules-management - GET
/governance/precedenceOrdem determinística de precedência entre as regras ativas.
read-only - PUT
/governance/precedenceSubstitui atômica e integralmente a precedência de regras em rascunho; regras ativas permanecem imutáveis como evidência. Requer JWT autenticado com ha:rules:manage.
rules-managementusado em /rules/governance - GET
/governance/coverageRegras ativas que cobrem um código (procedimento, código co-cobrado ou TUSS), na ordem de disparo — precedência e depois rule_id. Retorna matched_key indicando de que lado do par excludente o código está; todas as regras listadas disparam, e só há vencedor onde o conflito foi declarado por um humano.
read-only - GET
/governance/lineage/{rule_id}Linhagem de uma regra (draft → active → superseded).
read-only - POST
/governance/simulateDry-run com precedência contra o ruleset ativo (nada é persistido).
read-only - GET
/governance/shapesGrafo de shapes SHACL usado na validação de regras.
read-only - GET
/governance/audit-trailLinhas de proveniência de uma execução de auditoria, em ordem determinística de disparo.
read-onlyusado em /audit-trail - GET
/governance/audit-trail/{finding_id}/proofCadeia de prova completa de um finding: regra (IRI, versão), evidência e a linha do XML (guia, sequencialItem). Passe run_id (e item_id): ids de finding se repetem entre execuções.
read-onlyusado em /audit-trail, /review/[runId] - POST
/governance/kb/ingestConverte um workbook de regras em propostas DRAFT no governance store.
rules-management - GET
/governance/kb/summaryDry-run: quantas propostas DRAFT cada workbook geral renderia.
read-only - GET
/governance/logical-rulesLista regras lógicas (RuleIR) do tenant, com filtros por status, autoridade e rule_iri.
read-only - POST
/governance/logical-rules/importImporta regras lógicas em lote com origem e autoridade declaradas; valida cada RuleIR e reporta inseridas vs ignoradas.
rules-management - POST
/governance/logical-rules/{rule_iri}/approveAprova uma regra lógica para status=active com autoridade human_approved ou regulatory_signed.
rules-management - POST
/governance/rule-packs/buildCompila um rule pack: manifesto versionado (pack_sha256) de regras lógicas ACTIVE, ancorado ao catálogo de referência e ao commit-fonte.
rules-management - GET
/governance/rule-packs/{pack_id}Manifesto de um rule pack compilado, por pack_id.
rules-management - POST
/governance/rule-packs/{pack_id}/activateRegistra uma ativação do rule pack (modo shadow por padrão) com vigência efetiva e motivo.
rules-management - GET
/governance/visual/inspectorEstúdio visual interativo do motor de governança: overlay de bounding box OCR, matriz ALU de 64 bits, LinUCB confidence intervals e simulador Datalog.
rules-management - GET
/governance/visual/dataDados consolidados do estúdio visual: layout dos blocos OCR, vetores de atributos e grafo conceitual Galois FCA.
read-only - POST
/governance/visual/simulateSimula a execução de regras de glosa com geração de prova Datalog e rastreabilidade em tempo real.
rules-management - GET
/governance/calibration/queueFila de calibração de propostas de regras geradas por feedback humano ou evolução contínua.
rules-management - POST
/governance/calibration/evaluateAvalia o impacto de regras em calibração contra o histórico de contas do tenant.
rules-management - POST
/governance/calibration/proposals/{proposal_id}/actionExecuta ação de governança (aprovar, rejeitar ou arquivar) em uma proposta de calibração.
rules-management
TISS
12- 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/recurso/{recurso_protocolo}Resposta de um recurso de glosa.
read-only - 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 - POST
/tiss/ingestIngere XML TISS (job assíncrono, 202).
rules-managementusado em /ingest - POST
/tiss/loteSubmete um lote TISS ao ledger de protocolos.
rules-management - POST
/tiss/recursoSubmete um recurso de glosa.
rules-management - DELETE
/tiss/protocolos/{protocolo}Remove um protocolo do ledger TISS.
rules-management - DELETE
/tiss/recursos/{recurso_protocolo}Remove um recurso (apelação) do ledger TISS.
rules-management - POST
/preauth/tissPré-autorização: submete uma guia TISS para análise (job assíncrono).
rules-management - GET
/preauth/{job_id}Status de um job de pré-autorização.
read-only
TUSS
11- GET
/tuss/validate/{code}Valida um código TUSS (existência, tabela, termo, vigência).
read-onlyusado em /relationship/[ref] - GET
/tuss/proceduresBusca procedimentos TUSS por termo.
read-onlyusado em /relationship/[ref] - GET
/tuss/procedures/{code}Detalhe de um procedimento TUSS por código.
read-only - GET
/tuss/opmeBusca OPME (órteses, próteses e materiais especiais).
read-onlyusado em busca ⌘K - GET
/tuss/opme/{code}OPME por código (pode retornar múltiplos modelos).
read-only - GET
/tuss/opme/anvisa/{registro}OPME por número de registro ANVISA.
read-only - GET
/tuss/opme/risk-classesDistribuição de classes de risco OPME.
read-only - GET
/tuss/medicationsBusca medicamentos por termo.
read-onlyusado em busca ⌘K - GET
/tuss/cbo/{code}Código CBO profissional.
read-only - GET
/tuss/ans-reporting/{code}Exigências de reporte ANS para um código TUSS.
read-only - 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 /knowledgealias: /knowledge/graph - GET
/knowledge/rdfExporta o grafo de conhecimento em RDF.
read-only - GET
/knowledge/tuss/{code}Ficha TUSS enriquecida pelo grafo de conhecimento.
read-only
Referência
6- GET
/reference/datasetsLista datasets de referência consultáveis (contagem de linhas e colunas).
read-only - GET
/reference/versionsLista versões imutáveis de Brasíndice/SIMPRO e seus ponteiros ativos.
read-onlyusado em /knowledge - POST
/reference/versionsValida, compila e ativa atomicamente uma versão de catálogo Brasíndice ou SIMPRO.
rules-managementusado em /knowledge - GET
/reference/{dataset}Consulta um dataset de referência (filtros via query string).
read-only - GET
/sigtap/price/{code}Preço público de reembolso SIGTAP de um procedimento.
read-only - GET
/sigtap/validate/{code}Validação de existência/vigência de um código SIGTAP.
read-only
Ingestão
10- GET
/sentinel/raw-data/statusEstado da base de dados brutos (pronta/pendente, contagem de arquivos).
rules-managementusado em /ingest - POST
/sentinel/raw-data/syncSincroniza dados brutos a partir de um source_path.
rules-managementusado em /ingest - POST
/sentinel/ingestIngestão sentinel agregada (contratos + auditoria + KB em uma chamada).
admin - GET
/sentinel/ingest/{task_id}/statusStatus de uma tarefa de ingestão sentinel.
rules-management - GET
/kb/catalogCatálogo da base de conhecimento.
rules-management - 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.
rules-management - POST
/kb/rebuild-fcaReconstrói a treliça FCA a partir dos dados de glosa (job assíncrono).
rules-management - GET
/filesLista XMLs na caixa de entrada do health-audit.
read-only - POST
/filesEnvia um arquivo para a caixa de entrada do health-audit.
rules-management
Privacidade
3- GET
/privacy/data-subject/{subject_id}LGPD — direito de acesso: categorias de dados em que o titular aparece.
admin - POST
/privacy/data-subject/{subject_id}/anonymizeLGPD — anonimização: substitui identificadores por token determinístico.
admin - POST
/privacy/data-subject/{subject_id}/deleteLGPD — direito de eliminação: registra o pedido; a purga segue a política de retenção.
admin
Sistema
9- GET
/searchBusca por substring em execuções, glosas e XML TISS do tenant (trigram/pg_trgm). Códigos parciais e fragmentos de CNPJ casam; mínimo de 3 caracteres. Requer ha:glosa:view.
read-onlyusado em /observability - GET
/statusSinal barato e público de liveness do cartridge (sem diagnósticos internos).
usado em /ingest - GET
/status/detailsDiagnóstico autenticado de prontidão das dependências (ontologia, regras, contratos).
read-only - GET
/status/opsVolumetria operacional (fail-soft): Postgres, Redis, RabbitMQ, host e processo da API.
read-only - GET
/status/ops/pageMesma leitura de /status/ops renderizada como página HTML autossuficiente (auto-refresh 120 s).
read-only - GET
/ans-operatorsBusca no registro ANS (dados abertos) de operadoras ativas.
read-only - POST
/admin/tiss-xml-backfillBackfill do tiss_xml_store a partir de XMLs processados em lote.
admininterno - POST
/admin/governance-backfillBackfill do governance store (cadeias de prova) a partir de runs existentes.
admininterno - POST
/admin/redispatch-failed-xml-runsRe-dispacha runs de stamp cuja falha foi de infraestrutura (janelas de deploy), nunca rejeições de domínio. dry_run=true lista os candidatos sem tocar em nada.
admininterno
Integração Clarifai — contrato canônico
A origem pública de produção é https://engineai.gocare.com.br. O Clarifai deve enviar o XML para a rota canônica POST /api/mycelia/v2/health-audit/stamp com os cabeçalhos X-API-Key: <chave> e x-tenant-id: pcpsaude.
curl -X POST https://engineai.gocare.com.br/api/mycelia/v2/health-audit/stamp \
-H "X-API-Key: $HEALTH_AUDIT_API_KEY" \
-H "x-tenant-id: pcpsaude" \
-F "tiss_xml=@guia.xml"- Gere na tela Usuários e acessos uma chave
ha_stampcom validade recomendada de 365 dias e rotação antes do vencimento. - A chave
ha_stampcarrega somente a permissãoha:stamp:run: pode enviar para/stampe consultar apenas opoll_urlda própria submissão. Ela não lista execuções nem consulta execuções de outras chaves. - O caminho antigo
POST /api/mycelia/v2/health-audit/audit/xml-glosacontinua aceitando o request histórico, mas executa e devolve o mesmo contrato canônico de/stamp. - O alias direto
/v2/health-audit/*permanece disponível para collections existentes; ambos os caminhos chegam ao mesmo backend e preservam o mesmo contrato.
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.
