Cadastrar/atualizar
| Endpoint | POST /fhir/resources/Practitioner |
|---|---|
| Autenticação | 🔓 Chave de API |
| Status | Implementado |
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 Extension-Practitioner-user (object) Pode ser usado para representar informações adicionais que não fazem parte da definição básica do recurso. Qualquer implementador pode definir uma extensão, aqui apresentamos as extensões utilizadas no contexto Nilo, extensões externas a esse contexto são ignoradas. | |
| gender | string Enum: "male" "female" "other" "unknown" O sexo que o profissional de saúde é considerado para fins de administração e manutenção de registros. |
| 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. |
Array of objects (Identifier) Um conjunto de códigos de identificação para este profissional de saúde (IDs, CPF, CRM, ...). | |
object (Meta) Os metadados sobre um recurso. Este conteúdo do recurso é normalmente mantido pelo sistema gestor do registro. | |
required | Array of objects (HumanName) O(s) nome(s) associado(s) ao profissional de saúde. Ao menos um nome |
| resourceType required | string Default: "Practitioner" Indica o tipo do recurso transacionado. |
Array of objects (ContactPoint) Um detalhe de contato (por exemplo, um número de telefone ou um endereço de e-mail) por qual o indivíduo pode ser contatado. |
{- "extension": [
- {
- "extension": [
- {
- "url": "{host}/fhir/resources/StructureDefinition/practitioner-user-active",
- "valueBoolean": true
}, - {
- "url": "{host}/fhir/resources/StructureDefinition/practitioner-user-email",
- "valueString": "email@exemplo.com"
}
], - "url": "{host}/fhir/resources/StructureDefinition/practitioner-user"
}
], - "gender": "male",
- "id": "903dAAe9-c57f-4eb3-bd1c-65XXd41exx81",
- "identifier": [
- {
- "system": "{host}/fhir/resources/NamingSystem/hippocrates-api--model-name",
- "use": "usual",
- "value": "12345"
}
], - "meta": {
- "lastUpdated": "2022-05-25T18:42:06.551129+00:00",
- "versionId": "903dAAe9-c57f-4eb3-bd1c-65XXd41exx81"
}, - "name": [
- {
- "family": "Donald",
- "given": [
- "Duck"
], - "text": "Duck Donald",
- "use": "official"
}
], - "resourceType": "Practitioner",
- "telecom": [
- {
- "system": "phone",
- "use": "mobile",
- "value": "+551155556473"
}
]
}Campos e comportamentos
Este endpoint faz upsert (cria ou atualiza) de um profissional. A decisão entre criar e atualizar é feita pelos identificadores — veja a seção Identificadores na introdução do recurso.
identifier(obrigatório) — usado para localizar um profissional já existente. Apenas os sistemas configurados como identificadores primários (definidos junto ao time de suporte) são considerados no casamento. Se nenhum dos identificadores enviados corresponder a um sistema configurado, a requisição é recusada para evitar duplicidades. Os identificadores também carregam CPF e registro em conselho.name(obrigatório) — é utilizado apenas o nome comuse: "official". O valor gravado é o campotext; setextnão for informado, é montado a partir degiven+family.telecom— quando há um contato comsystem: "phone", seuvalueé gravado como telefone do profissional.gender— mapeado para o cadastro NiloCare conforme a tabela abaixo:
FHIR (gender) | NiloCare | ||||
|---|---|---|---|---|---|
male | Masculino | ||||
female | Feminino | ||||
other | Outro | ||||
unknown / ausente | Não informado | ||||
qualification— especialidades do profissional (via código CBO). Veja os exemplos de especialidades abaixo.address— endereço comuse: "work"é sincronizado como unidade/local de atendimento. Veja o exemplo de endereço abaixo.extension— gestão de usuário (login) e vínculo com unidades de cuidado. Veja as extensões de gestão de usuário na introdução do recurso.
Exemplos de uso
Exemplo básico
curl --request POST \
--url https://landing-zone-api.nilo.services/fhir/resources/Practitioner \
--header 'Content-Type: application/json' \
--header 'x-api-key: <inserir API Key aqui>' \
--data '{
"resourceType": "Practitioner",
"identifier": [
{
"use": "usual",
"system": "https://www.acmesaude.com.br/integracao/profissional/",
"value": "5032932"
}
],
"name": [
{
"text": "Jon Doe",
"use": "official"
}
]
}'
Exemplo com CPF e registro em conselho
curl --request POST \
--url https://landing-zone-api.nilo.services/fhir/resources/Practitioner \
--header 'Content-Type: application/json' \
--header 'x-api-key: <inserir API Key aqui>' \
--data '{
"resourceType": "Practitioner",
"identifier": [
{
"use": "usual",
"system": "https://www.acmesaude.com.br/integracao/profissional/",
"value": "5032932"
},
{
"system": "https://servicos.receita.fazenda.gov.br/servicos/cpf/",
"value": "12345678900"
},
{
"system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/NiloClassCouncil/",
"value": "CRM-SP-11111"
}
],
"name": [
{
"text": "Jon Doe",
"use": "official"
}
]
}'
Sobre CPF e registro em conselho:
Ambos são enviados como identifier, cada um em seu system.
- O CPF usa o system
https://servicos.receita.fazenda.gov.br/servicos/cpf/. - O registro em conselho usa o system
https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/NiloClassCouncil/e o valor deve seguir o padrão[Conselho]-[UF]-[número](ex.:CRM-SP-11111). Consulte os conselhos suportados na introdução do recurso.
Exemplo com email para login
curl --request POST \
--url https://landing-zone-api.nilo.services/fhir/resources/Practitioner \
--header 'Content-Type: application/json' \
--header 'x-api-key: <inserir API Key aqui>' \
--data '{
"resourceType": "Practitioner",
"identifier": [
{
"use": "usual",
"system": "https://www.acmesaude.com.br/integracao/profissional/",
"value": "5032932"
}
],
"name": [
{
"text": "Jon Doe",
"use": "official"
}
],
"extension": [
{
"url": "https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/practitioner-user",
"extension": [
{
"url": "https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/practitioner-user-active",
"valueBoolean": true
},
{
"url": "https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/practitioner-user-email",
"valueString": "email@exemplo.com"
}
]
}
]
}'
Sobre o usuário/login:
Para que o profissional seja também um usuário do NiloCare, envie a extensão practitioner-user contendo:
practitioner-user-activecomvalueBoolean: truepara ativar o login;practitioner-user-emailcom o email usado para login. Este email é obrigatório quandoactiveétrue.
Basta informar um email (pela extensão practitioner-user-email ou pelo identifier — veja a nota abaixo)
para que o profissional passe a ser tratado como usuário do sistema (care_user). A ativação do login/acesso
(active: true), porém, exige o email especificamente na extensão practitioner-user-email.
Além da extensão, o email pode ser informado como identifier no system urn:ietf:rfc:6530. Se o email for
enviado tanto na extensão quanto no identificador, os dois valores precisam ser iguais — caso contrário a
requisição é recusada. O login (active: true), porém, exige o email na extensão practitioner-user-email.
Exemplo desativando o acesso do usuário
curl --request POST \
--url https://landing-zone-api.nilo.services/fhir/resources/Practitioner \
--header 'Content-Type: application/json' \
--header 'x-api-key: <inserir API Key aqui>' \
--data '{
"resourceType": "Practitioner",
"identifier": [
{
"use": "usual",
"system": "https://www.acmesaude.com.br/integracao/profissional/",
"value": "5032932"
}
],
"name": [
{
"text": "Jon Doe",
"use": "official"
}
],
"extension": [
{
"url": "https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/practitioner-user",
"extension": [
{
"url": "https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/practitioner-user-active",
"valueBoolean": false
},
{
"url": "https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/practitioner-user-email",
"valueString": "email@exemplo.com"
}
]
}
]
}'
Sobre a desativação:
Enviar practitioner-user-active com valueBoolean: false remove o acesso do usuário à unidade (care provider).
O email é usado para localizar o usuário a ser desativado, por isso deve ser informado.
Exemplo com endereço de trabalho
curl --request POST \
--url https://landing-zone-api.nilo.services/fhir/resources/Practitioner \
--header 'Content-Type: application/json' \
--header 'x-api-key: <inserir API Key aqui>' \
--data '{
"resourceType": "Practitioner",
"identifier": [
{
"use": "usual",
"system": "https://www.acmesaude.com.br/integracao/profissional/",
"value": "5032932"
}
],
"name": [
{
"text": "Jon Doe",
"use": "official"
}
],
"address": [
{
"use": "work",
"line": [
"Av. Paulista",
"1000",
"Sala 502"
],
"district": "Bela Vista",
"city": "São Paulo",
"state": "SP",
"country": "BR",
"postalCode": "01310-100"
}
]
}'
Sobre o endereço:
Apenas endereços com use: "work" são considerados. O campo line é posicional:
line[0]→ logradouro (rua/avenida)line[1]→ número (assumeS/Nquando ausente)line[2]→ complemento
Os endereços de trabalho enviados são sincronizados como locais de atendimento do profissional. Endereços que haviam sido enviados anteriormente e não constarem mais na requisição são desvinculados.
Exemplo com especialidades
curl --request POST \
--url https://landing-zone-api.nilo.services/fhir/resources/Practitioner \
--header 'Content-Type: application/json' \
--header 'x-api-key: <inserir API Key aqui>' \
--data '{
"resourceType": "Practitioner",
"identifier": [
{
"use": "usual",
"system": "https://www.acmesaude.com.br/integracao/profissional/",
"value": "5032932"
}
],
"name": [
{
"text": "Jon Doe",
"use": "official"
}
],
"qualification": [
{
"code": {
"coding": [
{
"code": "225130",
"system": "http://www.saude.gov.br/fhir/r4/CodeSystem/BRCBO"
}
]
}
},
{
"code": {
"coding": [
{
"code": "225175",
"system": "http://www.saude.gov.br/fhir/r4/CodeSystem/BRCBO"
}
]
}
}
]
}'
Sobre especialidades:
O campo qualification é utilizado para descrever as especialidades do profissional de saúde.
- No campo
code.coding.codedeve ser informado o código CBO da especialidade - No campo
code.coding.systemdeve ser semprehttp://www.saude.gov.br/fhir/r4/CodeSystem/BRCBO(sistema do CBO - Classificação Brasileira de Ocupações) - O código CBO informado precisa ser válido/existente, caso contrário a requisição é recusada
- Para informar múltiplas especialidades, use uma entrada
qualificationseparada para cada uma
No exemplo acima, foram utilizados os códigos CBO 225130 (Médico de Família e Comunidade) e 225175 (Médico Geneticista).
Exemplo removendo uma especialidade
curl --request POST \
--url https://landing-zone-api.nilo.services/fhir/resources/Practitioner \
--header 'Content-Type: application/json' \
--header 'x-api-key: <inserir API Key aqui>' \
--data '{
"resourceType": "Practitioner",
"identifier": [
{
"use": "usual",
"system": "https://www.acmesaude.com.br/integracao/profissional/",
"value": "5032932"
}
],
"name": [
{
"text": "Jon Doe",
"use": "official"
}
],
"qualification": [
{
"code": {
"coding": [
{
"code": "225130",
"system": "http://www.saude.gov.br/fhir/r4/CodeSystem/BRCBO"
}
]
},
"period": {
"end": "2025-08-14T15:05:00+00:00"
}
}
]
}'
Sobre remoção de especialidades:
O campo period.end é utilizado para remover uma especialidade do profissional. Para que a remoção aconteça, o valor precisa ser menor ou igual à data atual.
Exemplo adicionando às múltiplas unidades de cuidado
curl --request POST \
--url https://landing-zone-api.nilo.services/fhir/resources/Practitioner \
--header 'Content-Type: application/json' \
--header 'x-api-key: <inserir API Key aqui>' \
--data '{
"resourceType": "Practitioner",
"identifier": [
{
"use": "usual",
"system": "https://www.acmesaude.com.br/integracao/profissional/",
"value": "5032932"
}
],
"name": [
{
"text": "Jon Doe",
"use": "official"
}
],
"extension": [
{
"url": "https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/practitioner-organization",
"valueIdentifier": {
"system": "https://www.acmesaude.com.br/integracao/unidade-de-cuidado/",
"use": "usual",
"value": "10654"
}
},
{
"url": "https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/practitioner-organization",
"valueIdentifier": {
"system": "https://www.acmesaude.com.br/integracao/unidade-de-cuidado/",
"use": "usual",
"value": "9998232"
}
}
]
}'
Sobre múltiplas unidades de cuidado:
As extension com url https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/practitioner-organization são utilizadas para associar as unidades de cuidado às quais o profissional de saúde está vinculado.
Cada unidade de cuidado deve ser representada como uma extensão separada.
O campo valueIdentifier deve ser um identifier do recurso FHIR Organization (unidades de cuidado).
Você pode consultar as unidades de cuidado (Organization) disponíveis na API para obter os identifiers corretos.
Quando nenhuma extensão practitioner-organization é enviada, o profissional é vinculado à unidade de cuidado padrão
configurada para o care provider. Se não houver unidade padrão configurada, a requisição é recusada.
curl --request GET \
--url https://landing-zone-api.nilo.services/fhir/resources/Organization \
--header 'Content-Type: application/json' \
--header 'x-api-key: <inserir API Key aqui>'
A resposta do GET será um Bundle, onde o campo entry conterá as unidades de cuidado disponíveis. Conforme exemplo de resposta abaixo:
{
"resourceType": "Bundle",
"type": "searchset",
"entry": [
{
"resource": {
"resourceType": "Organization",
"id": "37c2b365-cb5a-4401-ae0a-e747ee379f09",
"identifier": [
{
"system": "https://www.acmesaude.com.br/integracao/unidade-de-cuidado/",
"value": "10654"
}
],
"name": "Unidade de Cuidado 1"
}
},
{
"resource": {
"resourceType": "Organization",
"id": "37c2b365-cb5a-4401-ae0a-e747ee379f66",
"identifier": [
{
"system": "https://www.acmesaude.com.br/integracao/unidade-de-cuidado/",
"value": "9998232"
}
],
"name": "Unidade de Cuidado 2"
}
}
]
}
Modelagem da API - Response
- ✔ 200
- ✘ 400
- ✘ 500
Array of Extension-Practitioner-user (object) Pode ser usado para representar informações adicionais que não fazem parte da definição básica do recurso. Qualquer implementador pode definir uma extensão, aqui apresentamos as extensões utilizadas no contexto Nilo, extensões externas a esse contexto são ignoradas. | |
| gender | string Enum: "male" "female" "other" "unknown" O sexo que o profissional de saúde é considerado para fins de administração e manutenção de registros. |
| 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. |
Array of objects (Identifier) Um conjunto de códigos de identificação para este profissional de saúde (IDs, CPF, CRM, ...). | |
object (Meta) Os metadados sobre um recurso. Este conteúdo do recurso é normalmente mantido pelo sistema gestor do registro. | |
required | Array of objects (HumanName) O(s) nome(s) associado(s) ao profissional de saúde. Ao menos um nome |
| resourceType required | string Default: "Practitioner" Indica o tipo do recurso transacionado. |
Array of objects (ContactPoint) Um detalhe de contato (por exemplo, um número de telefone ou um endereço de e-mail) por qual o indivíduo pode ser contatado. |
{- "extension": [
- {
- "extension": [
- {
- "url": "{host}/fhir/resources/StructureDefinition/practitioner-user-active",
- "valueBoolean": true
}, - {
- "url": "{host}/fhir/resources/StructureDefinition/practitioner-user-email",
- "valueString": "email@exemplo.com"
}
], - "url": "{host}/fhir/resources/StructureDefinition/practitioner-user"
}
], - "gender": "male",
- "id": "903dAAe9-c57f-4eb3-bd1c-65XXd41exx81",
- "identifier": [
- {
- "system": "{host}/fhir/resources/NamingSystem/hippocrates-api--model-name",
- "use": "usual",
- "value": "12345"
}
], - "meta": {
- "lastUpdated": "2022-05-25T18:42:06.551129+00:00",
- "versionId": "903dAAe9-c57f-4eb3-bd1c-65XXd41exx81"
}, - "name": [
- {
- "family": "Donald",
- "given": [
- "Duck"
], - "text": "Duck Donald",
- "use": "official"
}
], - "resourceType": "Practitioner",
- "telecom": [
- {
- "system": "phone",
- "use": "mobile",
- "value": "+551155556473"
}
]
}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"
}