Tarefa

Uma tarefa é algo que alguém precisa fazer no acompanhamento de um paciente: ligar para confirmar a retirada de um medicamento, revisar um exame, responder a um questionário. É o item de trabalho da equipe de cuidado — não um registro clínico.

No FHIR isso é a Task. A tarefa pode ter sido criada à mão por um profissional ou gerada automaticamente por uma diretriz aplicada ao paciente; nos dois casos ela chega aqui com a mesma forma.

Este recurso é somente leitura. Não existe POST /fhir/resources/Task — tarefas são criadas dentro do NiloCare ou pela diretriz que as gera. Veja O que a integração não cobre para o que acontece se você tentar enviá-la mesmo assim.

Duas coisas diferentes na mesma lista

Este endpoint devolve dois tipos de tarefa, e a diferença importa: os campos presentes não são os mesmos.

Tarefa da equipeQuestionário do paciente
O que éUm item de trabalho atribuído a um profissionalUm questionário atribuído ao paciente para responder
code.textO tipo de tarefa configurado pelo cliente — texto livreConstante patient-questionnaire
system do identifier…/NamingSystem/cogsworth-api--to-do…/NamingSystem/hippocrates-api--patient-questionnaire
Tem owner, requester, priority, notesimnão
Tem outputnãosim

Para separar as duas, use o system do identifier: ele é estável e não depende de configuração do cliente. code.text também distingue, mas do lado da tarefa da equipe é um rótulo que o cliente configura — se alguém criar um tipo de tarefa chamado patient-questionnaire, a distinção por code deixa de valer.

Filtrar por origem na busca não é confiável. code é um parâmetro de token, e a plataforma preenche code só com text, sem coding — buscar code=patient-questionnaire não encontra nada. Por identifier, a sintaxe de token do FHIR admite filtrar só pelo system (identifier=…|, com o valor vazio); esse recorte, como o modificador :text no code, não foi confirmado neste store. Enquanto isso, o caminho seguro é trazer as tarefas do paciente e separar as duas origens no seu lado.

Campos

A coluna No NiloCare traz o rótulo com que o dado aparece para a equipe; são rótulos, não caminhos de navegação: a tela pode ser reorganizada, o rótulo é o que permite conferir se o dado é o que você esperava. A coluna Origem diz em qual dos dois tipos de tarefa o campo aparece.

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

CampoOrigemSempre presenteO que significaNo NiloCare
identifierambassimIdentificador Nilo da tarefa, um único item. O system diz a origem
descriptionambassimO que deve ser feito; no questionário, o nome dele — ou a palavra Questionário, se o nome não estiver disponívelTítulo da tarefa · Descrição
statusambassimO andamento da tarefaAbertas · Em andamento · Finalizadas
intentambassimConstante order
forambassimO paciente da tarefaPaciente
codeambasquase sempreO tipo da tarefa, só em textTipo de tarefa
lastModifiedambassimÚltima alteração da tarefa
executionPeriodambasquase sempreData de criação em start; conclusão em endRealizada em
ownerequipesimO profissional responsável por executá-laResponsável pela tarefa
requesterequipenãoO profissional que a solicitouSolicitado por
priorityequipesimA prioridade da tarefaPrioridade
restriction.period.endequipesimO prazo da tarefaData de entrega · Realizar até
authoredOnequipesimData de criação da tarefadata em Solicitado por
performerType[0].textequipenãoA especialidade do responsável— (não exibido)
note[]equipenãoAs anotações de andamentoAnotações · Em andamento
output[]questionárioquase sempreO questionário atribuído e a resposta deleQuestionário
idambassimO identificador Nilo FHIR do recurso, usado na leitura por ID
metaambassimMetadados da gravação: versão e data da última alteração

executionPeriod não é o prazo, e também não é quando a tarefa foi de fato iniciada. Na tarefa da equipe, executionPeriod.start repete a data de criação — o mesmo valor de authoredOn — e end só aparece depois de concluída. O momento em que alguém efetivamente começou a tarefa existe na plataforma (é o que faz o status virar in-progress) e não é exposto: não há como medir quanto tempo a tarefa levou entre começar e terminar.

O prazo combinado está em restriction.period.end, e restriction.period.start nunca vem preenchido.

No questionário do paciente o executionPeriod é outra coisa: é o período de vigência da atividade. O end traz a data em que foi respondido quando já houve resposta, e o fim do período de vigência quando não houve — então, num questionário ainda em aberto, end não indica conclusão. Essa origem não tem restriction, então não há um campo separado de prazo para comparar.

As datas vêm com precisões diferentes

Na tarefa da equipe, authoredOn, lastModified e as duas pontas de executionPeriod vêm só com a data, sem hora — a exceção é note[].time, que vem com data e hora. No questionário do paciente, lastModified e executionPeriod vêm com data e hora.

executionPeriod.end da tarefa da equipe é o maior entre a data de criação e a data de conclusão. A plataforma admite registros com conclusão anterior à criação, e o campo é calculado assim para nunca devolver um período invertido. Se você compara as duas pontas esperando a diferença exata entre criar e concluir, num registro assim ela sai zerada.

Prioridade

Só a tarefa da equipe tem prioridade. A correspondência com os cinco níveis da plataforma não é a que o nome do código FHIR sugere:

No NiloCarepriority
Altíssimastat
Altaasap
Normalurgent
Baixaroutine
Baixíssimaroutine

Duas armadilhas aqui, e as duas geram interpretação errada:

  • urgent é a prioridade normal. Uma tarefa comum, sem nenhuma urgência marcada pela equipe, chega com priority: urgent. Não a trate como prioritária, e não conte urgent como sinal de risco.
  • routine é ambíguo. Baixa e Baixíssima saem as duas como routine, e não há como distinguir uma da outra pela API.

Situação

status só assume três dos valores do FHIR, derivados do andamento na plataforma:

Situaçãostatus
Tarefa aberta, ninguém começourequested
Tarefa marcada como em andamentoin-progress
Tarefa finalizadacompleted

Não existe cancelled neste recurso. Uma tarefa apagada no NiloCare não muda de status: ela é removida do store, e o id que você já leu com sucesso passa a responder 404 sem aviso nenhum. Se você guarda o conteúdo de uma tarefa, guarde o conteúdo — não o id.

status também não diz se a tarefa está atrasada. Atrasada é a comparação do prazo com a data de hoje, e a tela a mostra como tag; a API não traz esse cálculo. Compare restriction.period.end com a data corrente.

No questionário do paciente, completed significa que ele foi respondido e requested que ainda não; in-progress aparece quando a plataforma o marca como em andamento. Qualquer valor que a plataforma não reconheça cai em requested — a ausência de resposta é o padrão.

Apagar um dado no NiloCare não limpa o campo aqui

A gravação preserva o valor anterior quando o novo é vazio. Na prática, alguns campos desta tarefa não voltam a ficar em branco depois de preenchidos uma vez.

Vale para code, requester e performerType. Removido o tipo da tarefa, ou o solicitante, a leitura continua devolvendo o valor antigo indefinidamente.

O caso mais enganoso é performerType: ele é a especialidade do responsável atual, mas só é reescrito quando o novo responsável tem alguma especialidade cadastrada. Passar a tarefa para alguém sem especialidade deixa ali a especialidade do responsável anterior. Não use performerType para deduzir quem é o responsável — para isso existe owner.

output[] está na mesma situação, por um motivo diferente: a lista é omitida quando fica vazia, e o valor gravado antes é o que continua sendo devolvido.

note[] é a exceção real: removidas as anotações, elas somem da leitura.

Anotações de andamento

Cada anotação registrada sobre o andamento da tarefa vira um item de note[], com o texto em text e o momento em time. Só a tarefa da equipe tem anotações.

note[].authorReference vem só quando quem anotou foi um profissional. Anotação registrada por automação da plataforma vem sem autor, e o mesmo acontece quando o profissional que anotou não é mais localizável. Trate a ausência de authorReference como “autor não identificado”, não como erro.

A lista está ordenada como a plataforma a devolve, não necessariamente por time.

O questionário e a resposta dele

No questionário do paciente, output[] traz até dois itens, distinguidos por type.text:

type.textvalueReference aponta para
questionnaireO questionário atribuído — qual formulário é. Vem por identificador; para lê-lo, busque por identifier
questionnaire-responseA resposta dele, quando já respondido

output é o elo com o Questionário respondido: o item questionnaire-response é a chave para ler o conteúdo das respostas. Enquanto o paciente não responde, esse item simplesmente não existe.

Diferente das outras referências deste recurso, as de output vêm por identificador, sem reference — resolva-as por uma busca por identifier, não por leitura direta.

O item questionnaire-response pode apontar para uma submissão que a busca de Questionário respondido não devolve: uma submissão sem nenhuma resposta válida não chega a existir como recurso FHIR. A referência fica lá, irresolvível.

O contrário também acontece: não toda resposta de questionário tem uma tarefa. Só o questionário atribuído ao paciente gera Task — um questionário respondido fora desse fluxo existe como resposta e não aparece neste recurso.

Campos que a Nilo não usa

A Task canônica tem campos que esta integração não produz: basedOn, partOf, groupIdentifier, statusReason, businessStatus, focus, encounter, reasonCode, reasonReference, insurance, relevantHistory, input, location e doNotPerform. Como esta referência descreve só o que é suportado, eles não aparecem no schema do recurso — e, como não há escrita, também não há como preenchê-los.

Repare em encounter: uma tarefa criada durante um atendimento não guarda a referência ao atendimento aqui. Não há como ligar tarefa a atendimento por esta API.

Cadastrar ou atualizar

Não existe. Este recurso não tem caminho de escrita nesta API — nem para criar, nem para atualizar, nem para apagar. Tarefas nascem no NiloCare, ou são geradas pela diretriz aplicada ao paciente, e chegam aqui já prontas.

Um POST /fhir/resources/Task não é uma operação suportada e não devolve um erro de validação tratável: com um corpo válido, a chamada falha com erro inesperado do servidor (500). Não escreva tratamento em cima desse comportamento — ele não é contrato, e nada é gravado no NiloCare de qualquer forma. Um corpo malformado responde 400 antes disso, pela validação do recurso — não conclua daí que a operação existe.

Dentro de uma carga em lote o erro é limpo, e igualmente definitivo: a entrada é recusada com Resource Task not supported.

Para fazer a plataforma gerar tarefas por integração, o caminho é aplicar uma diretriz ao paciente — veja Plano de cuidado.

Buscar

GET
/fhir/resources/Task
1curl -G https://landing-zone-api.nilo.services/fhir/resources/Task \
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 -d authored-on=ge2026-05-01 \
7 --data-urlencode identifier=https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/cogsworth-api--to-do|41827 \
8 -d modified=ge2026-05-01 \
9 --data-urlencode owner:identifier=https://www.acmesaude.com.br/integracao/profissional/|5032932 \
10 --data-urlencode patient=Patient/8b1d0e94-6a37-4c52-9f81-2ad7e6c40b13 \
11 --data-urlencode patient:identifier=https://www.acmesaude.com.br/integracao/paciente/|507823709 \
12 -d period=ge2026-05-01 \
13 -d priority=stat \
14 --data-urlencode requester:identifier=https://www.acmesaude.com.br/integracao/profissional/|5048117 \
15 --data-urlencode status=requested,in-progress \
16 --data-urlencode subject=Patient/8b1d0e94-6a37-4c52-9f81-2ad7e6c40b13 \
17 --data-urlencode subject:identifier=https://www.acmesaude.com.br/integracao/paciente/|507823709

A resposta é sempre um Bundle do tipo searchset. O exemplo abaixo traz as duas origens na mesma resposta, que é o que uma busca por paciente devolve:

Response
1{
2 "resourceType": "Bundle",
3 "type": "searchset",
4 "entry": [
5 {
6 "fullUrl": "https://landing-zone-api.nilo.services/fhir/resources/Task/7e51c8b3-2f04-4d97-a6b1-83ce0f24d7a5",
7 "resource": {
8 "description": "Ligar para confirmar a retirada da medicação na farmácia.",
9 "for": {
10 "identifier": {
11 "system": "https://www.acmesaude.com.br/integracao/paciente/",
12 "value": "507823709",
13 "use": "usual"
14 },
15 "type": "Patient",
16 "reference": "Patient/8b1d0e94-6a37-4c52-9f81-2ad7e6c40b13"
17 },
18 "identifier": [
19 {
20 "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/cogsworth-api--to-do",
21 "value": "41827",
22 "use": "usual"
23 }
24 ],
25 "intent": "order",
26 "resourceType": "Task",
27 "status": "in-progress",
28 "authoredOn": "2026-05-23",
29 "code": {
30 "text": "Ligação de acompanhamento"
31 },
32 "executionPeriod": {
33 "start": "2026-05-23"
34 },
35 "id": "7e51c8b3-2f04-4d97-a6b1-83ce0f24d7a5",
36 "lastModified": "2026-05-28",
37 "meta": {
38 "lastUpdated": "2026-05-28T13:41:07.402000Z",
39 "versionId": "MTc4NjAyMTQ1MjkwNTAwNTIxNA"
40 },
41 "note": [
42 {
43 "authorReference": {
44 "identifier": {
45 "system": "https://www.acmesaude.com.br/integracao/profissional/",
46 "value": "5032932",
47 "use": "usual"
48 },
49 "type": "Practitioner",
50 "reference": "Practitioner/6d92f7c1-84be-4a03-91d7-5fe28b6c04a9"
51 },
52 "text": "Paciente não atendeu na primeira tentativa; retornar depois das 18h.",
53 "time": "2026-05-27T14:12:39+00:00"
54 }
55 ],
56 "owner": {
57 "identifier": {
58 "system": "https://www.acmesaude.com.br/integracao/profissional/",
59 "value": "5032932",
60 "use": "usual"
61 },
62 "type": "Practitioner",
63 "reference": "Practitioner/6d92f7c1-84be-4a03-91d7-5fe28b6c04a9"
64 },
65 "performerType": [
66 {
67 "text": "Enfermagem"
68 }
69 ],
70 "priority": "urgent",
71 "requester": {
72 "identifier": {
73 "system": "https://www.acmesaude.com.br/integracao/profissional/",
74 "value": "5048117",
75 "use": "usual"
76 },
77 "type": "Practitioner",
78 "reference": "Practitioner/2c47a980-31fd-4e6b-8a05-9db1c7e35f26"
79 },
80 "restriction": {
81 "period": {
82 "end": "2026-06-05"
83 }
84 }
85 },
86 "search": {
87 "mode": "match"
88 }
89 },
90 {
91 "fullUrl": "https://landing-zone-api.nilo.services/fhir/resources/Task/b40a7e26-c5f9-4d31-8b07-1e9d3a5f62c8",
92 "resource": {
93 "description": "Questionário de sintomas respiratórios",
94 "for": {
95 "identifier": {
96 "system": "https://www.acmesaude.com.br/integracao/paciente/",
97 "value": "507823709",
98 "use": "usual"
99 },
100 "type": "Patient",
101 "reference": "Patient/8b1d0e94-6a37-4c52-9f81-2ad7e6c40b13"
102 },
103 "identifier": [
104 {
105 "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/hippocrates-api--patient-questionnaire",
106 "value": "73104",
107 "use": "usual"
108 }
109 ],
110 "intent": "order",
111 "resourceType": "Task",
112 "status": "completed",
113 "code": {
114 "text": "patient-questionnaire"
115 },
116 "executionPeriod": {
117 "end": "2026-05-30T08:58:12+00:00",
118 "start": "2026-05-25T00:00:00+00:00"
119 },
120 "id": "b40a7e26-c5f9-4d31-8b07-1e9d3a5f62c8",
121 "lastModified": "2026-05-30T08:58:12+00:00",
122 "meta": {
123 "lastUpdated": "2026-05-30T09:02:55.118000Z",
124 "versionId": "MTc4NjAyMTQ1MjkwNTAwNTMwMQ"
125 },
126 "output": [
127 {
128 "type": {
129 "text": "questionnaire"
130 },
131 "valueReference": {
132 "identifier": {
133 "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/inquisition-api--questionnaire",
134 "value": "2071",
135 "use": "usual"
136 },
137 "type": "Questionnaire"
138 }
139 },
140 {
141 "type": {
142 "text": "questionnaire-response"
143 },
144 "valueReference": {
145 "identifier": {
146 "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/inquisition-api--submission",
147 "value": "884120",
148 "use": "usual"
149 },
150 "type": "QuestionnaireResponse"
151 }
152 }
153 ]
154 },
155 "search": {
156 "mode": "match"
157 }
158 }
159 ],
160 "link": []
161}

Busca sem resultados não é erro: volta 200 com um Bundle cujo entry é uma lista vazia. Trate a ausência de resultados pela lista vazia, não esperando um 404.

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

Parâmetros de busca suportados

NomeTipoDescriçãoExpressão
identifiertokenIdentificador da tarefa, em system|valueTask.identifier
patientreferencePaciente, pelo id Nilo FHIRTask.for
subjectreferenceO mesmo campo que patientTask.for
patient:identifierreferencePaciente, pelo identificador deleTask.for.identifier
subject:identifierreferenceO mesmo campo que patient:identifierTask.for.identifier
owner:identifierreferenceProfissional responsável, pelo identificador deleTask.owner.identifier
requester:identifierreferenceProfissional solicitante, pelo identificador deleTask.requester.identifier
statustokenAndamento. Aceita vários valores separados por vírgulaTask.status
prioritytokenPrioridadeTask.priority
authored-ondateData de criação, com os prefixos eq, ge, leTask.authoredOn
modifieddateData da última alteração, com os mesmos prefixosTask.lastModified
perioddatePeríodo de execução, com os mesmos prefixosTask.executionPeriod
_lastUpdateddateData da última gravação no store, com os mesmos prefixos

As tarefas de um paciente pelo identificador dele — a busca mais usada deste recurso:

$curl --request GET \
> --url 'https://landing-zone-api.nilo.services/fhir/resources/Task?patient:identifier=https://www.acmesaude.com.br/integracao/paciente/|507823709&status=requested,in-progress' \
> --header 'x-api-key: SUA_API_KEY'

As referências deste recurso trazem reference e identifier, então as duas formas de busca por referência estão disponíveis: patient=Patient/{id}, com o id Nilo FHIR, e patient:identifier=system|valor, com o identificador do paciente. A segunda é a prática, porque dispensa conhecer o id do store.

Isso não vale para todos os recursos desta API — em Avaliação clínica, por exemplo, as referências saem sem reference e só a forma com :identifier encontra algo.

Qual identificador do paciente o for carrega depende da sua implantação. Na configuração que usa identificadores externos nas referências, é o identificador do seu sistema — e o filtro acima funciona como está. Sem ela, o for traz o identificador Nilo do paciente (…/NamingSystem/hippocrates-api--patient), e é esse system que você tem de usar no filtro. Confira numa resposta de leitura qual dos dois está lá antes de montar a busca em volume. O mesmo vale para owner e requester.

Vários parâmetros canônicos da Task existem e não encontram nada aqui, porque a plataforma não preenche o campo correspondente: based-on, part-of, focus, encounter, business-status e group-identifier.

code e performer são um caso diferente, e mais traiçoeiro: os campos existem e vêm preenchidos, mas só com text, sem coding — e os dois parâmetros são de token, que procura em coding. Buscar o tipo de tarefa ou a especialidade do responsável pelo valor puro não encontra nada. O modificador :text do FHIR existe justamente para procurar no text, mas o suporte a ele neste store não foi confirmado — não conte com ele sem testar.

intent funciona, e por isso é inútil: o valor é constante, então intent=order traz todas as tarefas.

Não há parâmetro para output, então não se busca a tarefa a partir do questionário ou da resposta dele. O caminho é o inverso: leia a tarefa e siga o output.

A paginação é por _count e _page_token; havendo página seguinte, o Bundle traz a URL pronta em link.

Ler por ID

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

Diferente da busca, 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 a tarefa está em resource. Ler status ou description na raiz da resposta não encontra nada.

Response
1{
2 "fullUrl": "https://landing-zone-api.nilo.services/fhir/resources/Task/7e51c8b3-2f04-4d97-a6b1-83ce0f24d7a5",
3 "resource": {
4 "description": "Ligar para confirmar a retirada da medicação na farmácia.",
5 "for": {
6 "identifier": {
7 "system": "https://www.acmesaude.com.br/integracao/paciente/",
8 "value": "507823709",
9 "use": "usual"
10 },
11 "type": "Patient",
12 "reference": "Patient/8b1d0e94-6a37-4c52-9f81-2ad7e6c40b13"
13 },
14 "identifier": [
15 {
16 "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/cogsworth-api--to-do",
17 "value": "41827",
18 "use": "usual"
19 }
20 ],
21 "intent": "order",
22 "resourceType": "Task",
23 "status": "in-progress",
24 "authoredOn": "2026-05-23",
25 "code": {
26 "text": "Ligação de acompanhamento"
27 },
28 "executionPeriod": {
29 "start": "2026-05-23"
30 },
31 "id": "7e51c8b3-2f04-4d97-a6b1-83ce0f24d7a5",
32 "lastModified": "2026-05-28",
33 "meta": {
34 "lastUpdated": "2026-05-28T13:41:07.402000Z",
35 "versionId": "MTc4NjAyMTQ1MjkwNTAwNTIxNA"
36 },
37 "note": [
38 {
39 "authorReference": {
40 "identifier": {
41 "system": "https://www.acmesaude.com.br/integracao/profissional/",
42 "value": "5032932",
43 "use": "usual"
44 },
45 "type": "Practitioner",
46 "reference": "Practitioner/6d92f7c1-84be-4a03-91d7-5fe28b6c04a9"
47 },
48 "text": "Paciente não atendeu na primeira tentativa; retornar depois das 18h.",
49 "time": "2026-05-27T14:12:39+00:00"
50 }
51 ],
52 "owner": {
53 "identifier": {
54 "system": "https://www.acmesaude.com.br/integracao/profissional/",
55 "value": "5032932",
56 "use": "usual"
57 },
58 "type": "Practitioner",
59 "reference": "Practitioner/6d92f7c1-84be-4a03-91d7-5fe28b6c04a9"
60 },
61 "performerType": [
62 {
63 "text": "Enfermagem"
64 }
65 ],
66 "priority": "urgent",
67 "requester": {
68 "identifier": {
69 "system": "https://www.acmesaude.com.br/integracao/profissional/",
70 "value": "5048117",
71 "use": "usual"
72 },
73 "type": "Practitioner",
74 "reference": "Practitioner/2c47a980-31fd-4e6b-8a05-9db1c7e35f26"
75 },
76 "restriction": {
77 "period": {
78 "end": "2026-06-05"
79 }
80 }
81 },
82 "search": {
83 "mode": "match"
84 }
85}

A leitura por ID responde 404 quando o id não existe — inclusive quando a tarefa existia e foi apagada no NiloCare.

Tarefas geradas por uma diretriz

Aplicar uma diretriz a um paciente faz a plataforma gerar as tarefas e os questionários previstos nela. Elas aparecem neste recurso como qualquer outra tarefa, com duas marcas:

  • a tarefa da equipe gerada por diretriz vem sem requester — não houve profissional solicitando (no NiloCare a tela mostra Criado automaticamente pela diretriz);
  • a tarefa é referenciada em activity[] do Plano de cuidado correspondente.

A geração é assíncrona. Confirmada a aplicação da diretriz, as tarefas levam um tempo para existir, e esse tempo é decidido pela plataforma — não há garantia de prazo. Uma busca imediata que não devolve nada não significa diretriz sem tarefas: significa que a geração não terminou. Reconsulte em vez de tratar a primeira resposta vazia como definitiva; o sinal de que a geração acabou é a activity aparecer no plano de cuidado.

Nem toda tarefa vem de uma diretriz, e a API não diz de onde a tarefa veio. A ausência de requester é um indício, não uma garantia. Para saber quais tarefas pertencem a um plano, leia o activity[] do plano — é lá que o vínculo está.

Referências entre recursos

for, owner, requester e note[].authorReference vêm completas: com reference, identifier e type. Você pode resolver o recurso apontado pelo reference ou por uma busca por identifier, como preferir.

output[].valueReference é a exceção: vem só com identifier e type, sem reference.

performerType[0] tem a forma de um código FHIR, mas não é um: traz apenas text, com o nome da especialidade. Não há system nem code para casar com um catálogo.

O que a integração não cobre

Não há escrita: nem criar, nem atualizar, nem concluir, nem apagar uma tarefa. Também não há como registrar uma anotação de andamento, mudar o responsável ou remarcar o prazo por esta API.

E alguns dados que a plataforma guarda não têm campo aqui:

  • no questionário do paciente: o prazo, o responsável e o solicitante existem na plataforma e não são expostos — restriction, owner e requester ficam vazios nessa origem, mesmo quando a tela mostra Prazo, Responsável e Solicitado por. Na outra origem os três são expostos, então a assimetria está dentro do mesmo recurso;
  • as anotações do próprio questionário, que também existem na plataforma — note[] é só da tarefa da equipe;
  • a marca de alerta crítico do questionário;
  • o momento em que a tarefa foi efetivamente iniciada;
  • a recorrência da tarefa da equipe, quando ela se repete;
  • a distinção entre tarefa criada à mão e tarefa gerada por diretriz;
  • a especialidade exigida pela tarefa, quando ela é diferente da especialidade do responsável;
  • o atendimento em que a tarefa foi criada.

Para o conteúdo das respostas de um questionário, o recurso é Questionário respondido. Para o plano que gerou as tarefas, Plano de cuidado.