> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://api-docs.nilo.services/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://api-docs.nilo.services/_mcp/server.

# Tarefa

> Consultar as tarefas da equipe de cuidado e os questionários atribuídos ao paciente no padrão FHIR Task.

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`](https://hl7.org/fhir/R4/task.html). 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.

> **Warning**
>
> **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](#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 equipe                                        | Questionário do paciente                                |
| -------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- |
| O que é                                      | Um item de trabalho atribuído a um profissional         | Um questionário atribuído ao paciente para responder    |
| `code.text`                                  | O tipo de tarefa configurado pelo cliente — texto livre | Constante `patient-questionnaire`                       |
| `system` do `identifier`                     | `…/NamingSystem/cogsworth-api--to-do`                   | `…/NamingSystem/hippocrates-api--patient-questionnaire` |
| Tem `owner`, `requester`, `priority`, `note` | sim                                                     | **não**                                                 |
| Tem `output`                                 | **não**                                                 | sim                                                     |

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.

> **Warning**
>
> **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ê.

| Campo                    | Origem       | Sempre presente | O que significa                                                                                                    | No NiloCare                                      |
| ------------------------ | ------------ | --------------- | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------ |
| `identifier`             | ambas        | sim             | Identificador Nilo da tarefa, um único item. O `system` diz a origem                                               | —                                                |
| `description`            | ambas        | sim             | O que deve ser feito; no questionário, o nome dele — ou a palavra `Questionário`, se o nome não estiver disponível | **Título da tarefa** · **Descrição**             |
| `status`                 | ambas        | sim             | O andamento da tarefa                                                                                              | **Abertas** · **Em andamento** · **Finalizadas** |
| `intent`                 | ambas        | sim             | Constante `order`                                                                                                  | —                                                |
| `for`                    | ambas        | sim             | O paciente da tarefa                                                                                               | **Paciente**                                     |
| `code`                   | ambas        | quase sempre    | O tipo da tarefa, só em `text`                                                                                     | **Tipo de tarefa**                               |
| `lastModified`           | ambas        | sim             | Última alteração da tarefa                                                                                         | —                                                |
| `executionPeriod`        | ambas        | quase sempre    | Data de criação em `start`; conclusão em `end`                                                                     | **Realizada em**                                 |
| `owner`                  | equipe       | sim             | O profissional responsável por executá-la                                                                          | **Responsável pela tarefa**                      |
| `requester`              | equipe       | não             | O profissional que a solicitou                                                                                     | **Solicitado por**                               |
| `priority`               | equipe       | sim             | A prioridade da tarefa                                                                                             | **Prioridade**                                   |
| `restriction.period.end` | equipe       | sim             | O prazo da tarefa                                                                                                  | **Data de entrega** · **Realizar até**           |
| `authoredOn`             | equipe       | sim             | Data de criação da tarefa                                                                                          | data em **Solicitado por**                       |
| `performerType[0].text`  | equipe       | não             | A especialidade do responsável                                                                                     | — (não exibido)                                  |
| `note[]`                 | equipe       | não             | As anotações de andamento                                                                                          | **Anotações** · **Em andamento**                 |
| `output[]`               | questionário | quase sempre    | O questionário atribuído e a resposta dele                                                                         | **Questionário**                                 |
| `id`                     | ambas        | sim             | O identificador Nilo FHIR do recurso, usado na leitura por ID                                                      | —                                                |
| `meta`                   | ambas        | sim             | Metadados da gravação: versão e data da última alteração                                                           | —                                                |

> **Warning**
>
> **`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.

> **Note**
>
> 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.

> **Note**
>
> `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 NiloCare    | `priority` |
| -------------- | ---------- |
| **Altíssima**  | `stat`     |
| **Alta**       | `asap`     |
| **Normal**     | `urgent`   |
| **Baixa**      | `routine`  |
| **Baixíssima** | `routine`  |

> **Warning**
>
> 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ção                         | `status`      |
| -------------------------------- | ------------- |
| Tarefa aberta, ninguém começou   | `requested`   |
| Tarefa marcada como em andamento | `in-progress` |
| Tarefa finalizada                | `completed`   |

> **Warning**
>
> **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.

> **Warning**
>
> 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**
>
> `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.text`              | `valueReference` aponta para                                                                                                             |
| ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `questionnaire`          | O [questionário](/guia/recursos/questionnaire) atribuído — qual formulário é. Vem por identificador; para lê-lo, busque por `identifier` |
| `questionnaire-response` | A resposta dele, quando já respondido                                                                                                    |

> **Note**
>
> `output` é o elo com o [Questionário respondido](/guia/recursos/questionnaireresponse): 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.

> **Warning**
>
> O item `questionnaire-response` pode apontar para uma submissão que a busca de
> [Questionário respondido](/guia/recursos/questionnaireresponse) **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.

> **Warning**
>
> 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](https://hl7.org/fhir/R4/http.html#transaction) 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 [Diretriz aplicada](/guia/recursos/careplan).

## Buscar

### Request

GET [https://landing-zone-api.nilo.services/fhir/resources/Task](https://landing-zone-api.nilo.services/fhir/resources/Task)

**`Busca de tarefas com resultados`**

```curl Busca de tarefas com resultados
curl -G https://landing-zone-api.nilo.services/fhir/resources/Task \
     -H "x-api-key: <apiKey>" \
     -d _count=50 \
     -d _lastUpdated=eq2013-01-14 \
     -d authored-on=ge2026-05-01 \
     --data-urlencode identifier=https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/cogsworth-api--to-do|41827 \
     -d modified=ge2026-05-01 \
     --data-urlencode owner:identifier=https://www.acmesaude.com.br/integracao/profissional/|5032932 \
     --data-urlencode patient=Patient/8b1d0e94-6a37-4c52-9f81-2ad7e6c40b13 \
     --data-urlencode patient:identifier=https://www.acmesaude.com.br/integracao/paciente/|507823709 \
     -d period=ge2026-05-01 \
     -d priority=stat \
     --data-urlencode requester:identifier=https://www.acmesaude.com.br/integracao/profissional/|5048117 \
     --data-urlencode status=requested,in-progress \
     --data-urlencode subject=Patient/8b1d0e94-6a37-4c52-9f81-2ad7e6c40b13 \
     --data-urlencode subject:identifier=https://www.acmesaude.com.br/integracao/paciente/|507823709
```

**`Busca de tarefas com resultados`**

```python Busca de tarefas com resultados
import requests

url = "https://landing-zone-api.nilo.services/fhir/resources/Task"

querystring = {"_count":"50","_lastUpdated":"[\"eq2013-01-14\"]","authored-on":"ge2026-05-01","identifier":"https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/cogsworth-api--to-do|41827","modified":"ge2026-05-01","owner:identifier":"https://www.acmesaude.com.br/integracao/profissional/|5032932","patient":"Patient/8b1d0e94-6a37-4c52-9f81-2ad7e6c40b13","patient:identifier":"https://www.acmesaude.com.br/integracao/paciente/|507823709","period":"ge2026-05-01","priority":"stat","requester:identifier":"https://www.acmesaude.com.br/integracao/profissional/|5048117","status":"requested,in-progress","subject":"Patient/8b1d0e94-6a37-4c52-9f81-2ad7e6c40b13","subject:identifier":"https://www.acmesaude.com.br/integracao/paciente/|507823709"}

headers = {"x-api-key": "<apiKey>"}

response = requests.get(url, headers=headers, params=querystring)

print(response.json())
```

**`Busca de tarefas com resultados`**

```javascript Busca de tarefas com resultados
const url = 'https://landing-zone-api.nilo.services/fhir/resources/Task?_count=50&_lastUpdated=%5B%22eq2013-01-14%22%5D&authored-on=ge2026-05-01&identifier=https%3A%2F%2Flanding-zone-api.nilo.services%2Ffhir%2Fresources%2FNamingSystem%2Fcogsworth-api--to-do%7C41827&modified=ge2026-05-01&owner%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fprofissional%2F%7C5032932&patient=Patient%2F8b1d0e94-6a37-4c52-9f81-2ad7e6c40b13&patient%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709&period=ge2026-05-01&priority=stat&requester%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fprofissional%2F%7C5048117&status=requested%2Cin-progress&subject=Patient%2F8b1d0e94-6a37-4c52-9f81-2ad7e6c40b13&subject%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709';
const options = {method: 'GET', headers: {'x-api-key': '<apiKey>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

**`Busca de tarefas com resultados`**

```go Busca de tarefas com resultados
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://landing-zone-api.nilo.services/fhir/resources/Task?_count=50&_lastUpdated=%5B%22eq2013-01-14%22%5D&authored-on=ge2026-05-01&identifier=https%3A%2F%2Flanding-zone-api.nilo.services%2Ffhir%2Fresources%2FNamingSystem%2Fcogsworth-api--to-do%7C41827&modified=ge2026-05-01&owner%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fprofissional%2F%7C5032932&patient=Patient%2F8b1d0e94-6a37-4c52-9f81-2ad7e6c40b13&patient%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709&period=ge2026-05-01&priority=stat&requester%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fprofissional%2F%7C5048117&status=requested%2Cin-progress&subject=Patient%2F8b1d0e94-6a37-4c52-9f81-2ad7e6c40b13&subject%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("x-api-key", "<apiKey>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

**`Busca de tarefas com resultados`**

```ruby Busca de tarefas com resultados
require 'uri'
require 'net/http'

url = URI("https://landing-zone-api.nilo.services/fhir/resources/Task?_count=50&_lastUpdated=%5B%22eq2013-01-14%22%5D&authored-on=ge2026-05-01&identifier=https%3A%2F%2Flanding-zone-api.nilo.services%2Ffhir%2Fresources%2FNamingSystem%2Fcogsworth-api--to-do%7C41827&modified=ge2026-05-01&owner%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fprofissional%2F%7C5032932&patient=Patient%2F8b1d0e94-6a37-4c52-9f81-2ad7e6c40b13&patient%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709&period=ge2026-05-01&priority=stat&requester%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fprofissional%2F%7C5048117&status=requested%2Cin-progress&subject=Patient%2F8b1d0e94-6a37-4c52-9f81-2ad7e6c40b13&subject%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<apiKey>'

response = http.request(request)
puts response.read_body
```

**`Busca de tarefas com resultados`**

```java Busca de tarefas com resultados
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://landing-zone-api.nilo.services/fhir/resources/Task?_count=50&_lastUpdated=%5B%22eq2013-01-14%22%5D&authored-on=ge2026-05-01&identifier=https%3A%2F%2Flanding-zone-api.nilo.services%2Ffhir%2Fresources%2FNamingSystem%2Fcogsworth-api--to-do%7C41827&modified=ge2026-05-01&owner%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fprofissional%2F%7C5032932&patient=Patient%2F8b1d0e94-6a37-4c52-9f81-2ad7e6c40b13&patient%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709&period=ge2026-05-01&priority=stat&requester%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fprofissional%2F%7C5048117&status=requested%2Cin-progress&subject=Patient%2F8b1d0e94-6a37-4c52-9f81-2ad7e6c40b13&subject%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709")
  .header("x-api-key", "<apiKey>")
  .asString();
```

**`Busca de tarefas com resultados`**

```php Busca de tarefas com resultados
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://landing-zone-api.nilo.services/fhir/resources/Task?_count=50&_lastUpdated=%5B%22eq2013-01-14%22%5D&authored-on=ge2026-05-01&identifier=https%3A%2F%2Flanding-zone-api.nilo.services%2Ffhir%2Fresources%2FNamingSystem%2Fcogsworth-api--to-do%7C41827&modified=ge2026-05-01&owner%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fprofissional%2F%7C5032932&patient=Patient%2F8b1d0e94-6a37-4c52-9f81-2ad7e6c40b13&patient%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709&period=ge2026-05-01&priority=stat&requester%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fprofissional%2F%7C5048117&status=requested%2Cin-progress&subject=Patient%2F8b1d0e94-6a37-4c52-9f81-2ad7e6c40b13&subject%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709', [
  'headers' => [
    'x-api-key' => '<apiKey>',
  ],
]);

echo $response->getBody();
```

**`Busca de tarefas com resultados`**

```csharp Busca de tarefas com resultados
using RestSharp;

var client = new RestClient("https://landing-zone-api.nilo.services/fhir/resources/Task?_count=50&_lastUpdated=%5B%22eq2013-01-14%22%5D&authored-on=ge2026-05-01&identifier=https%3A%2F%2Flanding-zone-api.nilo.services%2Ffhir%2Fresources%2FNamingSystem%2Fcogsworth-api--to-do%7C41827&modified=ge2026-05-01&owner%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fprofissional%2F%7C5032932&patient=Patient%2F8b1d0e94-6a37-4c52-9f81-2ad7e6c40b13&patient%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709&period=ge2026-05-01&priority=stat&requester%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fprofissional%2F%7C5048117&status=requested%2Cin-progress&subject=Patient%2F8b1d0e94-6a37-4c52-9f81-2ad7e6c40b13&subject%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709");
var request = new RestRequest(Method.GET);
request.AddHeader("x-api-key", "<apiKey>");
IRestResponse response = client.Execute(request);
```

**`Busca de tarefas com resultados`**

```swift Busca de tarefas com resultados
import Foundation

let headers = ["x-api-key": "<apiKey>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://landing-zone-api.nilo.services/fhir/resources/Task?_count=50&_lastUpdated=%5B%22eq2013-01-14%22%5D&authored-on=ge2026-05-01&identifier=https%3A%2F%2Flanding-zone-api.nilo.services%2Ffhir%2Fresources%2FNamingSystem%2Fcogsworth-api--to-do%7C41827&modified=ge2026-05-01&owner%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fprofissional%2F%7C5032932&patient=Patient%2F8b1d0e94-6a37-4c52-9f81-2ad7e6c40b13&patient%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709&period=ge2026-05-01&priority=stat&requester%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fprofissional%2F%7C5048117&status=requested%2Cin-progress&subject=Patient%2F8b1d0e94-6a37-4c52-9f81-2ad7e6c40b13&subject%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

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 (200)

```json
{
  "resourceType": "Bundle",
  "type": "searchset",
  "entry": [
    {
      "fullUrl": "https://landing-zone-api.nilo.services/fhir/resources/Task/7e51c8b3-2f04-4d97-a6b1-83ce0f24d7a5",
      "resource": {
        "description": "Ligar para confirmar a retirada da medicação na farmácia.",
        "for": {
          "identifier": {
            "system": "https://www.acmesaude.com.br/integracao/paciente/",
            "value": "507823709",
            "use": "usual"
          },
          "type": "Patient",
          "reference": "Patient/8b1d0e94-6a37-4c52-9f81-2ad7e6c40b13"
        },
        "identifier": [
          {
            "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/cogsworth-api--to-do",
            "value": "41827",
            "use": "usual"
          }
        ],
        "intent": "order",
        "resourceType": "Task",
        "status": "in-progress",
        "authoredOn": "2026-05-23",
        "code": {
          "text": "Ligação de acompanhamento"
        },
        "executionPeriod": {
          "start": "2026-05-23"
        },
        "id": "7e51c8b3-2f04-4d97-a6b1-83ce0f24d7a5",
        "lastModified": "2026-05-28",
        "meta": {
          "lastUpdated": "2026-05-28T13:41:07.402000Z",
          "versionId": "MTc4NjAyMTQ1MjkwNTAwNTIxNA"
        },
        "note": [
          {
            "authorReference": {
              "identifier": {
                "system": "https://www.acmesaude.com.br/integracao/profissional/",
                "value": "5032932",
                "use": "usual"
              },
              "type": "Practitioner",
              "reference": "Practitioner/6d92f7c1-84be-4a03-91d7-5fe28b6c04a9"
            },
            "text": "Paciente não atendeu na primeira tentativa; retornar depois das 18h.",
            "time": "2026-05-27T14:12:39+00:00"
          }
        ],
        "owner": {
          "identifier": {
            "system": "https://www.acmesaude.com.br/integracao/profissional/",
            "value": "5032932",
            "use": "usual"
          },
          "type": "Practitioner",
          "reference": "Practitioner/6d92f7c1-84be-4a03-91d7-5fe28b6c04a9"
        },
        "performerType": [
          {
            "text": "Enfermagem"
          }
        ],
        "priority": "urgent",
        "requester": {
          "identifier": {
            "system": "https://www.acmesaude.com.br/integracao/profissional/",
            "value": "5048117",
            "use": "usual"
          },
          "type": "Practitioner",
          "reference": "Practitioner/2c47a980-31fd-4e6b-8a05-9db1c7e35f26"
        },
        "restriction": {
          "period": {
            "end": "2026-06-05"
          }
        }
      },
      "search": {
        "mode": "match"
      }
    },
    {
      "fullUrl": "https://landing-zone-api.nilo.services/fhir/resources/Task/b40a7e26-c5f9-4d31-8b07-1e9d3a5f62c8",
      "resource": {
        "description": "Questionário de sintomas respiratórios",
        "for": {
          "identifier": {
            "system": "https://www.acmesaude.com.br/integracao/paciente/",
            "value": "507823709",
            "use": "usual"
          },
          "type": "Patient",
          "reference": "Patient/8b1d0e94-6a37-4c52-9f81-2ad7e6c40b13"
        },
        "identifier": [
          {
            "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/hippocrates-api--patient-questionnaire",
            "value": "73104",
            "use": "usual"
          }
        ],
        "intent": "order",
        "resourceType": "Task",
        "status": "completed",
        "code": {
          "text": "patient-questionnaire"
        },
        "executionPeriod": {
          "end": "2026-05-30T08:58:12+00:00",
          "start": "2026-05-25T00:00:00+00:00"
        },
        "id": "b40a7e26-c5f9-4d31-8b07-1e9d3a5f62c8",
        "lastModified": "2026-05-30T08:58:12+00:00",
        "meta": {
          "lastUpdated": "2026-05-30T09:02:55.118000Z",
          "versionId": "MTc4NjAyMTQ1MjkwNTAwNTMwMQ"
        },
        "output": [
          {
            "type": {
              "text": "questionnaire"
            },
            "valueReference": {
              "identifier": {
                "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/inquisition-api--questionnaire",
                "value": "2071",
                "use": "usual"
              },
              "type": "Questionnaire"
            }
          },
          {
            "type": {
              "text": "questionnaire-response"
            },
            "valueReference": {
              "identifier": {
                "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/inquisition-api--submission",
                "value": "884120",
                "use": "usual"
              },
              "type": "QuestionnaireResponse"
            }
          }
        ]
      },
      "search": {
        "mode": "match"
      }
    }
  ],
  "link": []
}
```

> **Note**
>
> 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 (200)

```json
{
  "resourceType": "Bundle",
  "type": "searchset",
  "entry": [],
  "link": []
}
```

### Parâmetros de busca suportados

| Nome                   | Tipo                                                       | Descrição                                                | Expressão                   |
| ---------------------- | ---------------------------------------------------------- | -------------------------------------------------------- | --------------------------- |
| `identifier`           | [token](https://hl7.org/fhir/R4/search.html#token)         | Identificador da tarefa, em `system\|value`              | `Task.identifier`           |
| `patient`              | [reference](https://hl7.org/fhir/R4/search.html#reference) | Paciente, pelo `id` Nilo FHIR                            | `Task.for`                  |
| `subject`              | [reference](https://hl7.org/fhir/R4/search.html#reference) | O mesmo campo que `patient`                              | `Task.for`                  |
| `patient:identifier`   | [reference](https://hl7.org/fhir/R4/search.html#reference) | Paciente, pelo identificador dele                        | `Task.for.identifier`       |
| `subject:identifier`   | [reference](https://hl7.org/fhir/R4/search.html#reference) | O mesmo campo que `patient:identifier`                   | `Task.for.identifier`       |
| `owner:identifier`     | [reference](https://hl7.org/fhir/R4/search.html#reference) | Profissional responsável, pelo identificador dele        | `Task.owner.identifier`     |
| `requester:identifier` | [reference](https://hl7.org/fhir/R4/search.html#reference) | Profissional solicitante, pelo identificador dele        | `Task.requester.identifier` |
| `status`               | [token](https://hl7.org/fhir/R4/search.html#token)         | Andamento. Aceita vários valores separados por vírgula   | `Task.status`               |
| `priority`             | [token](https://hl7.org/fhir/R4/search.html#token)         | Prioridade                                               | `Task.priority`             |
| `authored-on`          | [date](https://hl7.org/fhir/R4/search.html#date)           | Data de criação, com os prefixos `eq`, `ge`, `le`        | `Task.authoredOn`           |
| `modified`             | [date](https://hl7.org/fhir/R4/search.html#date)           | Data da última alteração, com os mesmos prefixos         | `Task.lastModified`         |
| `period`               | [date](https://hl7.org/fhir/R4/search.html#date)           | Período de execução, com os mesmos prefixos              | `Task.executionPeriod`      |
| `_lastUpdated`         | [date](https://hl7.org/fhir/R4/search.html#date)           | Data da última gravação no store, com os mesmos prefixos | —                           |

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

```bash
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'
```

> **Note**
>
> 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](/guia/recursos/clinicalimpression), por exemplo, as referências saem sem
> `reference` e só a forma com `:identifier` encontra algo.

> **Warning**
>
> 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`.

> **Note**
>
> 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

### Request

GET [https://landing-zone-api.nilo.services/fhir/resources/Task/\{id}](https://landing-zone-api.nilo.services/fhir/resources/Task/\{id})

**`Tarefa encontrada`**

```curl Tarefa encontrada
curl https://landing-zone-api.nilo.services/fhir/resources/Task/id \
     -H "x-api-key: <apiKey>"
```

**`Tarefa encontrada`**

```python Tarefa encontrada
import requests

url = "https://landing-zone-api.nilo.services/fhir/resources/Task/id"

headers = {"x-api-key": "<apiKey>"}

response = requests.get(url, headers=headers)

print(response.json())
```

**`Tarefa encontrada`**

```javascript Tarefa encontrada
const url = 'https://landing-zone-api.nilo.services/fhir/resources/Task/id';
const options = {method: 'GET', headers: {'x-api-key': '<apiKey>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

**`Tarefa encontrada`**

```go Tarefa encontrada
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://landing-zone-api.nilo.services/fhir/resources/Task/id"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("x-api-key", "<apiKey>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

**`Tarefa encontrada`**

```ruby Tarefa encontrada
require 'uri'
require 'net/http'

url = URI("https://landing-zone-api.nilo.services/fhir/resources/Task/id")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<apiKey>'

response = http.request(request)
puts response.read_body
```

**`Tarefa encontrada`**

```java Tarefa encontrada
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://landing-zone-api.nilo.services/fhir/resources/Task/id")
  .header("x-api-key", "<apiKey>")
  .asString();
```

**`Tarefa encontrada`**

```php Tarefa encontrada
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://landing-zone-api.nilo.services/fhir/resources/Task/id', [
  'headers' => [
    'x-api-key' => '<apiKey>',
  ],
]);

echo $response->getBody();
```

**`Tarefa encontrada`**

```csharp Tarefa encontrada
using RestSharp;

var client = new RestClient("https://landing-zone-api.nilo.services/fhir/resources/Task/id");
var request = new RestRequest(Method.GET);
request.AddHeader("x-api-key", "<apiKey>");
IRestResponse response = client.Execute(request);
```

**`Tarefa encontrada`**

```swift Tarefa encontrada
import Foundation

let headers = ["x-api-key": "<apiKey>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://landing-zone-api.nilo.services/fhir/resources/Task/id")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

> **Warning**
>
> 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 (200)

```json
{
  "fullUrl": "https://landing-zone-api.nilo.services/fhir/resources/Task/7e51c8b3-2f04-4d97-a6b1-83ce0f24d7a5",
  "resource": {
    "description": "Ligar para confirmar a retirada da medicação na farmácia.",
    "for": {
      "identifier": {
        "system": "https://www.acmesaude.com.br/integracao/paciente/",
        "value": "507823709",
        "use": "usual"
      },
      "type": "Patient",
      "reference": "Patient/8b1d0e94-6a37-4c52-9f81-2ad7e6c40b13"
    },
    "identifier": [
      {
        "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/cogsworth-api--to-do",
        "value": "41827",
        "use": "usual"
      }
    ],
    "intent": "order",
    "resourceType": "Task",
    "status": "in-progress",
    "authoredOn": "2026-05-23",
    "code": {
      "text": "Ligação de acompanhamento"
    },
    "executionPeriod": {
      "start": "2026-05-23"
    },
    "id": "7e51c8b3-2f04-4d97-a6b1-83ce0f24d7a5",
    "lastModified": "2026-05-28",
    "meta": {
      "lastUpdated": "2026-05-28T13:41:07.402000Z",
      "versionId": "MTc4NjAyMTQ1MjkwNTAwNTIxNA"
    },
    "note": [
      {
        "authorReference": {
          "identifier": {
            "system": "https://www.acmesaude.com.br/integracao/profissional/",
            "value": "5032932",
            "use": "usual"
          },
          "type": "Practitioner",
          "reference": "Practitioner/6d92f7c1-84be-4a03-91d7-5fe28b6c04a9"
        },
        "text": "Paciente não atendeu na primeira tentativa; retornar depois das 18h.",
        "time": "2026-05-27T14:12:39+00:00"
      }
    ],
    "owner": {
      "identifier": {
        "system": "https://www.acmesaude.com.br/integracao/profissional/",
        "value": "5032932",
        "use": "usual"
      },
      "type": "Practitioner",
      "reference": "Practitioner/6d92f7c1-84be-4a03-91d7-5fe28b6c04a9"
    },
    "performerType": [
      {
        "text": "Enfermagem"
      }
    ],
    "priority": "urgent",
    "requester": {
      "identifier": {
        "system": "https://www.acmesaude.com.br/integracao/profissional/",
        "value": "5048117",
        "use": "usual"
      },
      "type": "Practitioner",
      "reference": "Practitioner/2c47a980-31fd-4e6b-8a05-9db1c7e35f26"
    },
    "restriction": {
      "period": {
        "end": "2026-06-05"
      }
    }
  },
  "search": {
    "mode": "match"
  }
}
```

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[]` da [Diretriz aplicada](/guia/recursos/careplan)
  correspondente.

> **Warning**
>
> **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 na [diretriz aplicada](/guia/recursos/careplan).

> **Note**
>
> 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 uma diretriz
> aplicada, leia o `activity[]` da diretriz aplicada — é 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`.

> **Note**
>
> `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](/guia/recursos/questionnaireresponse). Para a diretriz aplicada que gerou as
tarefas, [Diretriz aplicada](/guia/recursos/careplan).