Catálogo de códigos

Um catálogo de códigos é a lista de valores que a plataforma aceita num campo codificado. Hoje há dois, e os dois servem à etiqueta do paciente:

CatálogoNomeO que lista
Etiquetasflag-codeOs marcadores que a equipe pode aplicar a um paciente
Categorias de etiquetaflag-categoryOs agrupamentos dessas etiquetas

No FHIR o recurso é o CodeSystem, e ele existe aqui por um motivo prático: os códigos não são um vocabulário fixo. Cada ambiente tem os seus, cadastrados na implantação, e a única forma de saber quais existem é lendo estes catálogos.

Este recurso é somente leitura. Não existe POST /fhir/resources/CodeSystem — os catálogos são montados pela equipe no Nilo Care, nas configurações do ambiente.

Campos

Todos os campos são de resposta — nenhum deles é enviado por você.

CampoSempre presenteO que significa
resourceTypesimConstante CodeSystem
urlsimDiz qual catálogo é este. É o mesmo valor que vai no system do coding da etiqueta
statussimConstante active
contentsimConstante complete — a lista vem inteira, não em pedaços
publishersimConstante Nilo Saude
compositionalsimConstante false
countsimQuantos códigos o catálogo tem
concept[]simUm item por código: o code e o display
id · metasimIdentificador Nilo FHIR do recurso e metadados da gravação

concept[].code é o valor que vai em Flag.code.coding[].code (ou em Flag.category.coding[].code), e concept[].display é o nome que a equipe vê. São os dois únicos dados de cada código: não há descrição, hierarquia, sinônimo nem propriedade.

Só os códigos vigentes aparecem. Uma etiqueta encerrada no Nilo Care some do catálogo — e some sem deixar rastro, porque não há campo de situação por código.

Consequência: uma etiqueta aplicada a um paciente pode referenciar um código que não está mais no catálogo. Ao ler uma etiqueta, não conte com encontrar o código dela aqui — o display da própria etiqueta já traz o nome.

O caminho é GET /fhir/resources/CodeSystem/{nome}, com flag-code ou flag-category.

Este é o único caminho do projeto em que o segmento final não é o id do recurso. Em todos os outros recursos, /{id} é o identificador Nilo FHIR; aqui é o nome do catálogo.

Passar o id do recurso neste caminho não funciona — e é justamente o que o fullUrl do envelope traz. Ignore o fullUrl deste recurso: para reler o catálogo, monte o caminho com o nome.

GET
/fhir/resources/CodeSystem/:id
1curl https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/flag-code \
2 -H "x-api-key: <apiKey>"

Esta leitura não devolve um Bundle — mas também não devolve o recurso nu. A resposta é um envelope com fullUrl, search e resource, e o catálogo está em resource. Ler concept na raiz da resposta não encontra nada.

Response
1{
2 "fullUrl": "https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/7d0a41f8-25c6-4b93-81ea-06c5d2794b13",
3 "resource": {
4 "resourceType": "CodeSystem",
5 "url": "https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/flag-category",
6 "status": "active",
7 "content": "complete",
8 "publisher": "Nilo Saude",
9 "compositional": false,
10 "count": 2,
11 "concept": [
12 {
13 "code": "12",
14 "display": "Condições de saúde"
15 },
16 {
17 "code": "13",
18 "display": "Operacional"
19 }
20 ],
21 "id": "7d0a41f8-25c6-4b93-81ea-06c5d2794b13",
22 "meta": {
23 "lastUpdated": "2026-05-04T10:15:34.902000Z",
24 "versionId": "MTc4NjAyMTQ1MjkwNTAwMDM5OQ"
25 }
26 },
27 "search": {
28 "mode": "match"
29 }
30}

Buscar

GET
/fhir/resources/CodeSystem
1curl -G https://landing-zone-api.nilo.services/fhir/resources/CodeSystem \
2 -H "x-api-key: <apiKey>" \
3 -d _count=50 \
4 -d _lastUpdated=eq2013-01-14 \
5 --data-urlencode _page_token=Cjj3YopYuf%2F%2F%2F%2F%2BABd%2BbgE0m...dSANQAFoLCUSM7w9VYUqaEANglLWUugQ%3D \
6 --data-urlencode url=https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/flag-code

A resposta é sempre um Bundle do tipo searchset. Como só há dois catálogos, a busca sem filtro devolve os dois:

Response
1{
2 "resourceType": "Bundle",
3 "type": "searchset",
4 "entry": [
5 {
6 "fullUrl": "https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/b5e1207c-63a9-4d81-90f2-e478a3c15d60",
7 "resource": {
8 "resourceType": "CodeSystem",
9 "url": "https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/flag-code",
10 "status": "active",
11 "content": "complete",
12 "publisher": "Nilo Saude",
13 "compositional": false,
14 "count": 3,
15 "concept": [
16 {
17 "code": "318",
18 "display": "Gestante"
19 },
20 {
21 "code": "319",
22 "display": "Alto risco"
23 },
24 {
25 "code": "412",
26 "display": "Prioridade no atendimento"
27 }
28 ],
29 "id": "b5e1207c-63a9-4d81-90f2-e478a3c15d60",
30 "meta": {
31 "lastUpdated": "2026-05-04T10:15:34.771000Z",
32 "versionId": "MTc4NjAyMTQ1MjkwNTAwMDM2Nw"
33 }
34 },
35 "search": {
36 "mode": "match"
37 }
38 }
39 ],
40 "link": []
41}

Busca sem resultados não é erro: volta 200 com um Bundle cujo entry é uma lista vazia.

Response
1{
2 "resourceType": "Bundle",
3 "type": "searchset",
4 "entry": [],
5 "link": []
6}

Parâmetros de busca suportados

NomeTipoDescriçãoExpressão
urluriA URL exata do catálogo. É o filtro que separa um do outroCodeSystem.url
systemuriO mesmo campo que urlCodeSystem.url
codetokenDevolve o catálogo que contém o código informadoCodeSystem.concept.code
statustokenAceito, e inútil: todo catálogo é activeCodeSystem.status
content-modetokenAceito, e inútil: todo catálogo é completeCodeSystem.content
publisherstringAceito, e inútil: todo catálogo é Nilo SaudeCodeSystem.publisher
_lastUpdateddateData da última gravação no store, com os prefixos eq, ge, le

Os demais parâmetros canônicos do CodeSystem existem e não encontram nada, porque a plataforma não preenche o campo correspondente: name, title, version, identifier, context, jurisdiction, description, language e supplements.

Como o catálogo é atualizado

Qualquer alteração numa etiqueta republica o catálogo inteiro. O recurso é sempre a lista completa: acrescentar, renomear ou encerrar uma etiqueta reescreve o CodeSystem inteiro, com um meta.versionId novo.

Isso vale inclusive para a remoção: encerrar uma etiqueta não apaga o catálogo — ele é republicado sem ela. Não trate uma mudança de versão do catálogo como sinal de que algo específico mudou; compare as listas.

Encerrar uma categoria encerra, junto, todas as etiquetas dela — então uma única ação faz os dois catálogos mudarem de versão ao mesmo tempo.

Como o catálogo é pequeno e muda pouco, o padrão de uso recomendado é lê-lo uma vez, guardar o mapa código → nome do seu lado, e reler quando uma etiqueta trouxer um código que você não conhece.

Cadastrar ou atualizar

Não existe. Este recurso não tem caminho de escrita nesta API — nem para criar um catálogo, nem para acrescentar um código a um existente.

Um POST /fhir/resources/CodeSystem não é uma operação suportada e não devolve um erro de validação tratável: a chamada falha com erro inesperado do servidor (500). Não escreva tratamento em cima desse comportamento — ele não é contrato, e nada é gravado.

Para cadastrar uma etiqueta nova no catálogo, peça à equipe que a crie em Configurações › Etiquetas, no Nilo Care — lembrando que a categoria precisa existir antes da etiqueta.

O que a integração não cobre

  • outros catálogos: só etiquetas e categorias de etiqueta são publicados assim. Os códigos de procedimento, de especialidade e de diagnóstico usam vocabulários externos, e não têm catálogo próprio nesta API;
  • a situação de cada código — encerrados simplesmente somem;
  • a hierarquia entre códigos, e qualquer propriedade além de code e display;
  • a ligação entre uma categoria e as etiquetas que pertencem a ela: os dois catálogos são listas planas, e o vínculo só aparece na leitura de uma etiqueta, que traz as duas.