Pular para o conteúdo principal

Agendamentos

Introdução​


Um agendamento entre um Paciente e um Profissional.

Principais informações:

  • Paciente
  • Profissional
  • Data

Contexto NiloCare​


Esse endpoint permite aos clientes Nilo Saúde manipular agendamentos de profissionais e pacientes na plataforma NiloCare.

Calendário do profissional

Mapeamento de Campos​

Recurso FHIR: Appointment

#CampoExpressão de caminho no objeto FHIR
1Título do agendamentodescription
2Observações do agendamentocomment
3Situaçãostatus
4Data prevista para iníciostart
5Data prevista para fimend
6Data de criaçãocreated
7Pacienteparticipant.where(actor.type='Patient').actor
8Profissionalparticipant.where(actor.type='Practitioner').actor
9Sala de vídeocontained.where(resourceType='Endpoint').address
10Modalidade (online/presencial)appointmentType.coding.where(system='https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/appointment-type').code
Atenção à inversão de nomes

O título do agendamento no NiloCare é enviado em description, e as observações em comment.

* Demais atributos previstos no schema do Appointment são armazenados nos payloads, mas não afetados pelo sistema.

Especificações de comportamento FHIR - NiloCare​


Definição dos participantes​

O FHIR permite associar diversos atores a um agendamento, porém o NiloCare só permite associar um profissional e um paciente.

Ao cadastrar ou atualizar um agendamento, a lista participant deve conter exatamente um ator do tipo Patient e exatamente um ator do tipo Practitioner. Nenhum ou mais de um de cada tipo resulta em erro — veja Cadastrar/atualizar.

Cada ator é identificado por participant.actor.type (Patient ou Practitioner) e por participant.actor.identifier, que é usado para localizar o paciente e o profissional já existentes na Nilo. O campo participant.actor.reference é preenchido pela Nilo nas respostas, mas não é usado para resolver o ator na escrita.

Situação do agendamento​

Nas leituras (Nilo → FHIR), a situação do agendamento no NiloCare é traduzida para status da seguinte forma:

Situação no NiloCarestatus
Agendadobooked
Reagendadobooked
Recorrentebooked
Liberadoproposed
Canceladocancelled
Não compareceunoshow
Bloqueado / indisponívelwaitlist
Realizadofulfilled

Na escrita (FHIR → Nilo), o mapeamento aceito está descrito em Cadastrar/atualizar.

Agendamentos cancelados

Ao cancelar um agendamento, o NiloCare pode limpar as datas do registro. Por isso um Appointment com status = cancelled pode ser retornado sem start e sem end.

Modalidade do atendimento (online ou presencial)​

A modalidade do agendamento é definida pelo campo appointmentType, informada em coding com system = https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/appointment-type e um dos códigos abaixo:

codeModalidade
ONLINEAtendimento Online
IN_PERSONAtendimento Presencial

Quando o campo appointmentType é omitido (ou o coding não usa o system acima), o agendamento é tratado como online por padrão.

Sala de vídeo​

A funcionalidade de sala de vídeo permite a criação automática de links para videoconferência em agendamentos. Esta funcionalidade está disponível exclusivamente para clientes habilitados durante o processo de implantação.

Habilitação

Para verificar se possui esta funcionalidade habilitada ou solicitar a ativação, entre em contato com o suporte Nilo.

Pré-requisitos para criação​

Para que uma sala de vídeo seja criada automaticamente, o agendamento deve atender aos seguintes critérios:

  • Datas válidas: Possuir data de início e fim no futuro (agendamentos retroativos não geram sala)
  • Status apropriado: Agendamentos com status fulfilled, noshow ou cancelled não terão sala criada

Como funciona o processo​

1. Criação inicial do agendamento​

Quando você cria um agendamento, a resposta inicial não conterá o link da sala de vídeo, pois sua criação ocorre de forma assíncrona:

{
"resourceType": "Appointment",
"id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"identifier": [
{
"use": "usual",
"system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/care-api--scheduling-v2",
"value": "789"
},
{
"use": "usual",
"system": "https://www.acmesaude.com.br/integracao/agendamento/",
"value": "AG-98765"
}
],
"status": "booked",
"description": "Consulta de retorno",
"start": "2024-09-28T20:32:56.528762+00:00",
"end": "2024-09-28T21:02:56.528762+00:00",
"created": "2024-09-27T20:30:56.528762+00:00",
"comment": "Comentários sobre o agendamento",
"appointmentType": {
"coding": [
{
"system": "https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/appointment-type",
"code": "ONLINE",
"display": "Atendimento Online"
}
]
},
"participant": [
{
"actor": {
"type": "Patient",
"identifier": {
"use": "usual",
"system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/care-api--patient-v2",
"value": "123"
},
"reference": "Patient/d77bd7b0-144d-4789-9e81-062a375addb8"
},
"status": "accepted"
},
{
"actor": {
"type": "Practitioner",
"identifier": {
"use": "usual",
"system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/almanac-api--professional",
"value": "456"
},
"reference": "Practitioner/1e8f3c9e-6f4b-4c3b-9d2e-1c2b3a4d5e6f"
},
"status": "accepted"
}
]
}
Tempo de processamento

A criação da sala de vídeo é concluída normalmente em poucos segundos, mas pode levar até alguns minutos durante períodos de alta demanda.

2. Agendamento atualizado com sala​

Após o processamento, o agendamento é atualizado com o campo contained contendo um recurso do tipo Endpoint com o link da videoconferência:

{
"resourceType": "Appointment",
"id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"identifier": [
{
"use": "usual",
"system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/care-api--scheduling-v2",
"value": "789"
},
{
"use": "usual",
"system": "https://www.acmesaude.com.br/integracao/agendamento/",
"value": "AG-98765"
}
],
"status": "booked",
"description": "Consulta de retorno",
"start": "2024-09-28T20:32:56.528762+00:00",
"end": "2024-09-28T21:02:56.528762+00:00",
"created": "2024-09-27T20:30:56.528762+00:00",
"comment": "Comentários sobre o agendamento",
"appointmentType": {
"coding": [
{
"system": "https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/appointment-type",
"code": "ONLINE",
"display": "Atendimento Online"
}
]
},
"contained": [
{
"address": "https://nilovideo.app/f/51236",
"connectionType": {
"code": "https"
},
"payloadType": [
{
"text": "video"
}
],
"resourceType": "Endpoint",
"status": "active"
}
],
"participant": [
{
"actor": {
"type": "Patient",
"identifier": {
"use": "usual",
"system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/care-api--patient-v2",
"value": "123"
},
"reference": "Patient/d77bd7b0-144d-4789-9e81-062a375addb8"
},
"status": "accepted"
},
{
"actor": {
"type": "Practitioner",
"identifier": {
"use": "usual",
"system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/almanac-api--professional",
"value": "456"
},
"reference": "Practitioner/1e8f3c9e-6f4b-4c3b-9d2e-1c2b3a4d5e6f"
},
"status": "accepted"
}
]
}

Como verificar a criação da sala​

Você pode acompanhar a criação da sala de vídeo através de duas abordagens:

MétodoDescriçãoRecomendação
Consulta via APIRealizar requests periódicas para verificar se o campo contained está presenteAdequado para verificações pontuais
Webhook ⭐Receber notificações automáticas quando a sala for criadaRecomendado para automação
Usando consulta via API​

Consulte o agendamento e verifique a presença do campo contained. Veja mais detalhes em Consultar Agendamento.

Usando webhooks (recomendado)​

Configure um webhook para receber notificações automáticas sobre atualizações nos agendamentos. Consulte nossa documentação completa sobre Webhooks de Agendamentos.