Pular para o conteúdo principal

Cadastrar/Atualizar

EndpointPOST /fhir/resources/Flag
Autenticação🔓 Chave de API
StatusImplementado
Comportamento
  • O campo identifier é obrigatório e é a chave de upsert: um identifier já existente atualiza a tag do paciente, um novo cria.
  • code, status e subject são obrigatórios. O code deve referenciar uma etiqueta existente e o subject, um paciente existente.
  • category é opcional e serve apenas como validação — precisa ser a categoria da etiqueta informada em code.
  • status precisa ser coerente com period. Para encerrar uma tag, envie status: "inactive" (ver Vigência).
  • encounter e author são aceitos por conformidade FHIR, mas não são armazenados no NiloCare.

Consultando as etiquetas disponíveis


Etiquetas não são criadas por integração

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:

Etiquetas disponíveis (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:

Categorias disponíveis (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>'
Observação

Apenas as etiquetas e categorias vigentes no NiloCare são publicadas nesses CodeSystem.

Modelagem da API - Request


OpçãoTipoRequeridoDescriçãoExemplo
x-api-keystringSimChave de autenticação do cliente, fornecida durante a configuração do ambiente.
Content-TypestringSimapplication/json


Exemplo de requisição CURL

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"
}
}'


Observação
  • O system http://sistemaorigem.cliente.com/flag e o valor 12345 sã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


Operação bem sucedida.
Array of objects (CodeableConcept)

Categoria da etiqueta. Opcional — serve apenas como validação e precisa ser a categoria da etiqueta informada em code. Envie no máximo uma categoria, com o system .../CodeSystem/flag-category.

required
object

Etiqueta associada ao paciente. O code deve referenciar uma etiqueta já cadastrada no NiloCare, publicada no CodeSystem .../CodeSystem/flag-code.

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 identifier já existente atualiza a tag do paciente, um novo cria.

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 status. Se omitido em uma tag active, o NiloCare define a vigência.

resourceType
required
any
Value: "Flag"
status
required
any
Enum: "active" "inactive" "entered-in-error"

Situação da etiqueta, derivada da vigência (period). Para encerrar uma tag, envie inactive.

required
object

Paciente ao qual a etiqueta está associada. O paciente precisa existir previamente no NiloCare. Quando type não é informado, assume-se Patient.

{}

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"
}
}
Observação

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"
}