Cadastrar/Atualizar
| Endpoint | POST /fhir/resources/Flag |
|---|---|
| Autenticação | 🔓 Chave de API |
| Status | Implementado |
- O campo
identifieré obrigatório e é a chave de upsert: umidentifierjá existente atualiza a tag do paciente, um novo cria. code,statusesubjectsão obrigatórios. Ocodedeve referenciar uma etiqueta existente e osubject, um paciente existente.categoryé opcional e serve apenas como validação — precisa ser a categoria da etiqueta informada emcode.statusprecisa ser coerente comperiod. Para encerrar uma tag, enviestatus: "inactive"(ver Vigência).encountereauthorsão aceitos por conformidade FHIR, mas não são armazenados no NiloCare.
Consultando as etiquetas disponíveis
As etiquetas (flag-code) e suas categorias (flag-category) devem ser cadastradas no NiloCare, em Configurações > Etiquetas (menu do usuário, no canto superior direito). A integração apenas associa a um paciente uma etiqueta que já existe — enviar um code que não corresponda a uma etiqueta cadastrada resulta no erro Etiqueta inexistente.
Antes de cadastrar uma tag é necessário saber qual code utilizar. As etiquetas disponíveis são publicadas como um CodeSystem, consultado pela sua URL canônica https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/flag-code:
curl --request GET \
--url https://landing-zone-api.nilo.services/fhir/resources/CodeSystem?url=https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/flag-code \
--header 'Content-Type: application/json' \
--header 'x-api-key: <inserir API Key aqui>'
Cada item de concept traz o code (o valor a ser enviado em Flag.code.coding.code) e o display (o nome da etiqueta no NiloCare):
{
"resourceType": "CodeSystem",
"url": "https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/flag-code",
"status": "active",
"content": "complete",
"publisher": "Nilo Saude",
"count": 2,
"concept": [
{ "code": "79", "display": "Escala de risco alto" },
{ "code": "80", "display": "Paciente prioritário" }
]
}
As categorias seguem o mesmo modelo, no CodeSystem https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/flag-category:
curl --request GET \
--url https://landing-zone-api.nilo.services/fhir/resources/CodeSystem?url=https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/flag-category \
--header 'Content-Type: application/json' \
--header 'x-api-key: <inserir API Key aqui>'
Apenas as etiquetas e categorias vigentes no NiloCare são publicadas nesses CodeSystem.
Modelagem da API - Request
- Headers
- Body
| Opção | Tipo | Requerido | Descrição | Exemplo | |||||
|---|---|---|---|---|---|---|---|---|---|
| x-api-key | string | Sim | Chave de autenticação do cliente, fornecida durante a configuração do ambiente. | ||||||
| Content-Type | string | Sim | application/json | ||||||
Array of objects (CodeableConcept) Categoria da etiqueta. Opcional — serve apenas como validação e precisa ser a categoria da etiqueta informada em | |
required | object Etiqueta associada ao paciente. O |
object Autor da etiqueta. Aceito por conformidade com o FHIR e preservado no recurso, mas não é armazenado no NiloCare — o NiloCare nunca preenche este campo. | |
object Atendimento no qual a etiqueta foi criada. Aceito por conformidade com o FHIR e preservado no recurso, mas não é armazenado no NiloCare — o NiloCare nunca preenche este campo. | |
| id | string (id) ^[A-Za-z0-9\-\.]{{1,64}}$ Qualquer combinação de letras, números, "-" e ".", com um limite de 64 caracteres. (Pode ser um número inteiro, um OID não prefixado, UUID ou qualquer outro padrão de identificador que atenda a essas restrições.) Os IDs não diferenciam maiúsculas de minúsculas. |
required | Array of objects (Identifier) non-empty Identificador(es) pelo qual este recurso é distinguido. É a chave de upsert — um |
object (Meta) Os metadados sobre um recurso. Este conteúdo do recurso é normalmente mantido pelo sistema gestor do registro. | |
object Vigência da etiqueta. Precisa ser coerente com o | |
| resourceType required | any Value: "Flag" |
| status required | any Enum: "active" "inactive" "entered-in-error" Situação da etiqueta, derivada da vigência ( |
required | object Paciente ao qual a etiqueta está associada. O paciente precisa existir previamente no NiloCare. Quando |
{- "category": [
- {
- "coding": [
- {
- "code": "12",
}
]
}
], - "code": {
- "coding": [
- {
- "code": "79",
}
]
}, - "author": {
- "display": "string",
- "identifier": {
- "system": "{host}/fhir/resources/NamingSystem/hippocrates-api--model-name",
- "use": "usual",
- "value": "12345"
}, - "reference": "string",
- "type": "string"
}, - "encounter": {
- "display": "string",
- "identifier": {
- "system": "{host}/fhir/resources/NamingSystem/hippocrates-api--model-name",
- "use": "usual",
- "value": "12345"
}, - "reference": "string",
- "type": "string"
}, - "id": "903dAAe9-c57f-4eb3-bd1c-65XXd41exx81",
- "meta": {
- "lastUpdated": "2022-05-25T18:42:06.551129+00:00",
- "versionId": "903dAAe9-c57f-4eb3-bd1c-65XXd41exx81"
}, - "period": {
- "end": "2026-02-01T00:00:00+00:00",
- "start": "2026-01-01T00:00:00+00:00"
}, - "resourceType": "Flag",
- "status": "active",
- "subject": {
- "identifier": {
- "use": "official",
- "value": "12345678900"
}, - "type": "Patient"
}
}
curl --request POST \
--url https://landing-zone-api.nilo.services/fhir/resources/Flag \
--header 'Content-Type: application/json' \
--header 'x-api-key: <inserir API Key aqui>' \
--data '
{
"resourceType": "Flag",
"identifier": [
{
"system": "http://sistemaorigem.cliente.com/flag",
"value": "12345"
}
],
"status": "active",
"code": {
"coding": [
{
"system": "https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/flag-code",
"code": "79"
}
]
},
"subject": {
"identifier": {
"system": "https://servicos.receita.fazenda.gov.br/servicos/cpf/",
"use": "official",
"value": "12345678900"
},
"type": "Patient"
}
}'
- O system
http://sistemaorigem.cliente.com/flage o valor12345são fictícios — utilize o identificador do sistema de origem do cliente. - O código
79é fictício. Os valores válidos devem ser obtidos em Consultando as etiquetas disponíveis. - O CPF
12345678900é fictício. Um valor real deve ser utilizado.
Modelagem da API - Response
- ✔ 200
- ✘ 400
- ✘ 500
Array of objects (CodeableConcept) Categoria da etiqueta. Opcional — serve apenas como validação e precisa ser a categoria da etiqueta informada em | |
required | object Etiqueta associada ao paciente. O |
object Autor da etiqueta. Aceito por conformidade com o FHIR e preservado no recurso, mas não é armazenado no NiloCare — o NiloCare nunca preenche este campo. | |
object Atendimento no qual a etiqueta foi criada. Aceito por conformidade com o FHIR e preservado no recurso, mas não é armazenado no NiloCare — o NiloCare nunca preenche este campo. | |
| id | string (id) ^[A-Za-z0-9\-\.]{{1,64}}$ Qualquer combinação de letras, números, "-" e ".", com um limite de 64 caracteres. (Pode ser um número inteiro, um OID não prefixado, UUID ou qualquer outro padrão de identificador que atenda a essas restrições.) Os IDs não diferenciam maiúsculas de minúsculas. |
required | Array of objects (Identifier) non-empty Identificador(es) pelo qual este recurso é distinguido. É a chave de upsert — um |
object (Meta) Os metadados sobre um recurso. Este conteúdo do recurso é normalmente mantido pelo sistema gestor do registro. | |
object Vigência da etiqueta. Precisa ser coerente com o | |
| resourceType required | any Value: "Flag" |
| status required | any Enum: "active" "inactive" "entered-in-error" Situação da etiqueta, derivada da vigência ( |
required | object Paciente ao qual a etiqueta está associada. O paciente precisa existir previamente no NiloCare. Quando |
{- "category": [
- {
- "coding": [
- {
- "code": "12",
}
]
}
], - "code": {
- "coding": [
- {
- "code": "79",
}
]
}, - "author": {
- "display": "string",
- "identifier": {
- "system": "{host}/fhir/resources/NamingSystem/hippocrates-api--model-name",
- "use": "usual",
- "value": "12345"
}, - "reference": "string",
- "type": "string"
}, - "encounter": {
- "display": "string",
- "identifier": {
- "system": "{host}/fhir/resources/NamingSystem/hippocrates-api--model-name",
- "use": "usual",
- "value": "12345"
}, - "reference": "string",
- "type": "string"
}, - "id": "903dAAe9-c57f-4eb3-bd1c-65XXd41exx81",
- "meta": {
- "lastUpdated": "2022-05-25T18:42:06.551129+00:00",
- "versionId": "903dAAe9-c57f-4eb3-bd1c-65XXd41exx81"
}, - "period": {
- "end": "2026-02-01T00:00:00+00:00",
- "start": "2026-01-01T00:00:00+00:00"
}, - "resourceType": "Flag",
- "status": "active",
- "subject": {
- "identifier": {
- "use": "official",
- "value": "12345678900"
}, - "type": "Patient"
}
}required | Array of objects Uma coleção de mensagens de erro, aviso ou informação que resultado de uma ação do sistema. |
| resourceType required | string Default: "OperationOutcome" Indica o tipo do recurso transacionado. |
{- "issue": [
- {
- "code": "exception",
- "details": {
- "text": "Parâmetro enviado inválido"
}, - "severity": "error"
}
], - "resourceType": "OperationOutcome"
}Possíveis Erros
identifier ausente
O identifier é a chave de upsert. Um payload sem identifier é rejeitado para evitar duplicidade de tags.
{
"issue": [
{
"code": "required",
"details": {
"text": "Field is required"
},
"expression": [
"Flag.identifier"
],
"severity": "error"
}
],
"resourceType": "OperationOutcome"
}
Etiqueta inexistente
O code informado não corresponde a nenhuma etiqueta cadastrada no NiloCare.
{
"issue": [
{
"code": "code-invalid",
"details": {
"text": "Tag not found"
},
"expression": [
"Flag.code.coding.code"
],
"severity": "error"
}
],
"resourceType": "OperationOutcome"
}
Paciente inexistente
O subject não resolve para nenhum paciente do NiloCare. Cadastre o paciente antes de associar a tag.
{
"issue": [
{
"code": "not-found",
"details": {
"text": "Patient does not exist"
},
"expression": [
"Flag.subject"
],
"severity": "error"
}
],
"resourceType": "OperationOutcome"
}
Categoria inexistente
A category enviada não corresponde a nenhuma categoria cadastrada no NiloCare.
{
"issue": [
{
"code": "code-invalid",
"details": {
"text": "Category not found"
},
"expression": [
"Flag.category.coding.code"
],
"severity": "error"
}
],
"resourceType": "OperationOutcome"
}
Categoria não corresponde à etiqueta
A category existe, mas não é a categoria da etiqueta informada em code. Como a categoria é inferida do code, o mais simples é omitir category.
{
"issue": [
{
"code": "invariant",
"details": {
"text": "Tag does not belong to the category"
},
"expression": [
"Flag.category.coding.code"
],
"severity": "error"
}
],
"resourceType": "OperationOutcome"
}
Múltiplas categorias
Foi enviada mais de uma category com códigos diferentes. Envie no máximo uma categoria.
{
"issue": [
{
"code": "multiple-matches",
"details": {
"text": "Multiple matches to system https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/flag-category"
},
"expression": [
"Flag.category.coding"
],
"severity": "error"
}
],
"resourceType": "OperationOutcome"
}
status incoerente com period
Ocorre quando status: "active" é enviado com um period que não está vigente (já encerrado ou com início no futuro), ou quando status: "inactive" é enviado com um period vigente.
{
"issue": [
{
"code": "invariant",
"details": {
"text": "Status does not match the period"
},
"expression": [
"Flag.status"
],
"severity": "error"
}
],
"resourceType": "OperationOutcome"
}
Exemplo de payload que gera o erro
{
"resourceType": "Flag",
"identifier": [
{
"system": "http://sistemaorigem.cliente.com/flag",
"value": "12345"
}
],
"status": "active",
"code": {
"coding": [
{
"system": "https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/flag-code",
"code": "79"
}
]
},
"subject": {
"identifier": {
"system": "https://servicos.receita.fazenda.gov.br/servicos/cpf/",
"use": "official",
"value": "12345678900"
},
"type": "Patient"
},
"period": {
"start": "2020-01-01T00:00:00+00:00",
"end": "2020-02-01T00:00:00+00:00"
}
}
O code 79 e o CPF 12345678900 são fictícios. Para reproduzir este erro especificamente, use uma etiqueta e um paciente que existam no ambiente — caso contrário a API rejeita antes, com Tag not found ou Patient does not exist.
Criação de tag inativa sem period
Uma tag nova não pode ser criada como inactive sem uma vigência explícita. Em tags já existentes, status: "inactive" sem period encerra a vigência no momento da requisição.
{
"issue": [
{
"code": "business-rule",
"details": {
"text": "Period is required to create inactive flags"
},
"expression": [
"Flag.period"
],
"severity": "error"
}
],
"resourceType": "OperationOutcome"
}