Compatibilidade com a API legada — API
Mantém um inventário compilado de todas as rotas da antiga API pública do Portal 1.0
(mm-pacs-public-api, em Express), cada uma já mapeada para a capability canônica que deve
substituí-la nesta API. Não é uma rota que um parceiro chama — é um registro interno
(LegacyRouteRegistry) que existe para planejar e proteger a migração: garantir, por construção,
que nenhuma rota antiga é reativada antes que sua capability canônica exista, e que uma rota já
migrada não fica "escondida atrás" de uma rota antiga ainda pendente.
Funcionamento
Cada entrada é um LegacyRouteDefinition: método HTTP, caminho externo (com parâmetros :comoEste,
comparação case-insensitive, igual ao comportamento do serviço Express original), a
canonicalCapability que a substituirá, um owner de domínio, uma classification e,
quando identificável, o consumer (o sistema de terceiro que a usa).
Todas as ~120 rotas do inventário estão hoje em status: MAPPING_PENDING — nenhuma é
ACTIVE. Por isso, no processo public-api-edge, toda chamada a um caminho do inventário
responde 404, exatamente como qualquer rota inexistente. O inventário existe, mas não está
ligado a nenhum handler: é documentação executável (verificada por teste), não uma ponte de
tráfego.
LegacyRouteRegistryConsistency roda no boot do processo e impede subir com um registro
inconsistente:
- nenhum
legacyRouteIdduplicado; - nenhuma rota
ACTIVEcujacanonicalCapabilitynão exista no catálogo compilado (ver Concessões de rota) — uma rota não pode ser "ligada" antes de sua substituta existir; - nenhuma rota
ACTIVEque sobreponha (mesmo método, mesmo formato de caminho) uma rota aindaMAPPING_PENDINGdefinida depois dela na lista — ativar uma rota não pode silenciosamente passar a responder no lugar de outra que ainda não foi avaliada.
Distribuição do inventário
| Consumidor (sistema de terceiro) | Rotas |
|---|---|
| OneLaudos | 19 |
| Clinux | 4 |
| MV | 4 |
| Pixeon Arya | 3 |
| MRIS, Philips Tasy, Pixxel, Qure, Sarah, Totvs | 1 cada |
| Sem consumidor identificável no código | restante do inventário |
| Owner de domínio | Rotas |
|---|---|
| DIAGNOSIS | 53 |
| REPORT | 25 |
| EXTERNAL_INTEGRATION | 18 |
| CLINICAL_MEDIA | 17 |
| STORAGE | 5 |
| ORGANIZATION, WORKLIST | 2 cada |
| AUDIT, IDENTITY | 1 cada |
| Classificação | Rotas | Significado |
|---|---|---|
INBOUND_COMMAND | 44 | terceiro envia dado/comando ao Portal |
PASSIVE_READ | 37 | terceiro só lê |
PARTNER_SPECIFIC | 26 | comportamento amarrado a um parceiro específico |
OUTBOUND_TRIGGER | 9 | Portal aciona algo no terceiro |
CONTROL_PLANE | 7 | administração de aplicações/adapters (cadastro, não dado clínico) |
LEGACY_COMPATIBILITY | 1 | — |
Endpoints
Esta página documenta um registro interno, não uma rota do data plane. Ele é consumido por:
| Uso | Onde |
|---|---|
resolveActiveRouteFor(method, path) | Resolveria a rota ativa correspondente a um caminho legado — hoje sempre devolve null, porque nenhuma rota está ACTIVE |
listCanonicalOperationsOf(legacyRoute) | Consulta, para uma rota legada, as operações canônicas (/v1/...) que a substituem, via RouteCapabilityCatalog |
Teste de superfície (public-api-surface.e2e.spec.ts) | Confirma, no CI, que toda rota do inventário responde 404 no processo real |
Consistência verificada no boot, não numa rota HTTP.
Permissões
Não se aplica — não é uma rota HTTP chamável; é um registro de código, validado no boot.
Erros
| Classe de erro | errorCode | Quando ocorre |
|---|---|---|
InvalidLegacyRouteRegistryError | PUBLIC_API_LEGACY_ROUTE_REGISTRY_INVALID | boot com legacyRouteId duplicado, rota ACTIVE sem capability canônica publicada, ou rota ACTIVE sobrepondo uma MAPPING_PENDING posterior |
Regras de negócio
| ID | Regra | Comportamento esperado |
|---|---|---|
| RN-01 | Nenhuma rota legada está ativa hoje | toda chamada a um caminho do inventário responde 404, verificado em teste de ponta a ponta |
| RN-02 | Ativar uma rota exige a capability canônica já publicada | consistência checada no boot, não em runtime — um registro inconsistente impede o processo de subir |
| RN-03 | Ordem da lista importa para detectar sobreposição | uma rota ACTIVE não pode aparecer antes, na lista, de uma rota MAPPING_PENDING com o mesmo método e formato de caminho |
| RN-04 | Comparação de caminho é case-insensitive | reproduz o comportamento do roteador Express original, onde /exam/getAttachments e /exam/getattachments eram a mesma rota |
Compliance
Não se aplica — este registro não processa nem expõe dado; é metadado de planejamento de migração.
Variáveis de ambiente
Nenhuma.
Requisitos não funcionais
| Requisito | Definição |
|---|---|
| Idempotência | Não se aplica |
| Auditoria | Não se aplica — nenhuma rota do inventário está ativa |
Relacionado
- 📂 Módulo: API Pública (Integrações)
- 🔗 Catálogo de capabilities canônicas: Concessões de rota