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

# Consulta prevista

> Consultar as consultas que uma diretriz previu para o paciente, no padrão FHIR Schedule.

Uma **consulta prevista** é o que a diretriz mandou acontecer: quando a [diretriz aplicada](/guia/recursos/careplan) a um paciente é criada, ela gera uma consulta prevista para
cada consulta que a diretriz determina — *retorno com o endocrinologista em 90 dias*, por
exemplo.

Ela ainda não é um agendamento: é a intenção de um. Enquanto o paciente não marca, ela fica
esperando; quando marca, um [agendamento](/guia/recursos/appointment) é criado e a plataforma
liga os dois — mas
esse elo é interno e **não aparece neste recurso**. No Nilo Care a consulta prevista fica no
bloco de agendamentos da diretriz aplicada ao paciente.

No FHIR o recurso é o [`Schedule`](https://hl7.org/fhir/R4/schedule.html).

> **Warning**
>
> **Este recurso é somente leitura.** Não existe `POST /fhir/resources/Schedule` — as consultas
> previstas são geradas pela plataforma a partir da diretriz, e não há como criá-las, alterá-las
> ou cancelá-las por esta API.

> **Note**
>
> As mesmas consultas previstas também aparecem em `activity[]` da [diretriz aplicada](/guia/recursos/careplan) do paciente, junto com as tarefas e os questionários que a
> diretriz gerou. A vantagem desta página é poder buscá-las diretamente, sem passar pela diretriz
> aplicada.

## Campos

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

| Campo                   | Sempre presente | O que significa                                                                                                     | No Nilo Care                            |
| ----------------------- | --------------- | ------------------------------------------------------------------------------------------------------------------- | --------------------------------------- |
| `resourceType`          | sim             | Constante `Schedule`                                                                                                | —                                       |
| `identifier`            | sim             | Identificador Nilo da consulta prevista, no `system` `…/NamingSystem/hippocrates-api--guideline-patient-scheduling` | —                                       |
| `active`                | sim             | Se a **situação** da consulta prevista ainda está em aberto — veja o aviso                                          | o selo de situação                      |
| `actor[]`               | quase sempre    | O paciente e, quando houver, o profissional                                                                         | —                                       |
| `planningHorizon.start` | sim             | A data prevista para a consulta                                                                                     | a data do agendamento previsto          |
| `planningHorizon.end`   | não             | O instante em que a consulta prevista foi **encerrada**                                                             | —                                       |
| `specialty[0].text`     | sim             | A especialidade da consulta                                                                                         | a especialidade do agendamento previsto |
| `serviceType[0].text`   | não             | O tipo de atendimento previsto, como está cadastrado na plataforma                                                  | —                                       |
| `comment`               | não             | Texto de diagnóstico em formato interno — veja o aviso                                                              | —                                       |
| `id` · `meta`           | sim             | Identificador Nilo FHIR do recurso e metadados da gravação                                                          | —                                       |

> **Note**
>
> `specialty` vem sempre — a especialidade é obrigatória do lado da plataforma. `serviceType`,
> não: só aparece quando o tipo de atendimento está definido, e o vocabulário dele é o da
> plataforma, não uma lista fixa deste contrato.

### `active` esconde oito situações em duas

A plataforma distingue oito situações para uma consulta prevista. Este recurso reduz todas a
um booleano:

| Situação na plataforma                | `active` |
| ------------------------------------- | -------- |
| Disponível para o paciente marcar     | `true`   |
| Aguardando o paciente marcar          | `true`   |
| Falha no envio do link de agendamento | `true`   |
| Já agendada                           | `true`   |
| Cancelada                             | `false`  |
| Finalizada                            | `false`  |
| Não realizada                         | `false`  |
| Desatualizada                         | `false`  |

> **Warning**
>
> **`active: true` não quer dizer que a consulta foi marcada.** Uma consulta prevista que o
> paciente ainda não agendou e uma que ele já agendou saem exatamente iguais aqui. E
> `active: false` junta o cancelamento, a conclusão e a desatualização num valor só.
>
> Se a sua integração precisa saber se a consulta aconteceu, este recurso não responde. O
> agendamento de verdade é outro recurso, e a consulta prevista **não traz referência para
> ele** — mas o `activity[]` da [diretriz aplicada](/guia/recursos/careplan) traz.

> **Warning**
>
> **E há uma segunda situação, que não é a mesma coisa.** Além da situação acima, a equipe pode
> marcar uma consulta prevista à mão como *feita* ou *não feita*. Esse segundo eixo **não mexe no
> `active`**: uma consulta marcada à mão como feita continua `active: true` — e, apesar disso,
> ganha um `planningHorizon.end`.
>
> O único lugar onde essa marcação aparece é o `comment`, como `manual-status:done` ou
> `manual-status:not_done`. Não conte com `active` para saber se a consulta foi resolvida.

> **Note**
>
> O selo **Atrasada**, que a equipe vê quando o prazo de agendar passou, também não tem campo
> aqui: uma consulta prevista atrasada continua `active: true`.
>
> Os selos que a equipe vê não são um por situação: a tela combina a situação, o atraso e a
> marcação manual antes de escolher o selo, e mais de uma situação desta tabela pode aparecer sem
> selo nenhum. Não tente casar `active` com o que está na tela.

### `planningHorizon` não é um prazo

> **Warning**
>
> `planningHorizon.start` é a **data prevista** para a consulta, e `planningHorizon.end` é o
> **instante em que a consulta prevista foi encerrada** — não a data limite para marcá-la.
>
> Três consequências:
>
> * numa consulta prevista em aberto, `planningHorizon` vem **só com `start`**. Um cliente que
>   espere sempre os dois extremos quebra;
> * `end` aparece também quando a equipe marca a consulta à mão como feita — e nesse caso
>   `active` continua `true`. Ver `end` preenchido não significa `active: false`;
> * `end` é um instante com hora, enquanto `start` é uma data pura. Eles não descrevem a mesma
>   coisa e não formam um intervalo de agenda.

> **Note**
>
> O **prazo** para o paciente marcar não tem campo neste recurso. Ele aparece na [diretriz aplicada](/guia/recursos/careplan), em `activity[].detail.scheduledPeriod`, como uma janela
> fixa de sete dias a partir da data prevista.

### `comment` vaza formato interno

> **Warning**
>
> Quando há motivo de cancelamento ou situação marcada à mão, `comment` traz os dois num texto
> montado internamente:
>
> ```
> cancelled-reason:Paciente remarcou | manual-status:not_done
> ```
>
> **Não é contrato.** O formato pode mudar sem aviso, os valores não são traduzidos e não há
> garantia de que os dois pedaços apareçam. Use `comment` só para exibição a um humano, e nunca
> faça parsing dele.
>
> Quando não há nem motivo de cancelamento nem situação manual, o campo **não vem**.

> **Note**
>
> Um `cancelled-reason` **não implica** consulta cancelada. Cancelar o agendamento sem remover a
> consulta prevista devolve ela para *disponível* — e o motivo do cancelamento fica gravado. Você
> verá `active: true` com um `cancelled-reason` no `comment`.

### Leia `actor` pelo tipo, não pela posição

> **Warning**
>
> Na prática o paciente vem primeiro e o profissional depois, mas **isso não é garantido**: se o
> paciente não puder ser resolvido, o profissional ocupa a primeira posição e o array vem com um
> item só.
>
> Case pelo `actor[].type` — `Patient` ou `Practitioner` —, nunca por índice.

> **Warning**
>
> Qual identificador a referência de `actor` carrega **depende da sua implantação**. Na
> configuração que usa identificadores externos, cada referência sai com o identificador do seu
> sistema **se o recurso apontado tiver um**; se não tiver, cai silenciosamente no identificador
> Nilo. Confira o que veio na resposta antes de montar a busca em volume.

### Campos que a Nilo não usa

O `Schedule` canônico tem campos que esta integração não produz: `serviceCategory`,
`specialty` como código (aqui só há `text`) e `actor` com papéis distinguíveis. Como esta
referência descreve só o que é suportado, eles não aparecem no schema — e, como não há
escrita, também não há como preenchê-los.

> **Warning**
>
> `specialty` e `serviceType` são `CodeableConcept`, mas vêm **só com `text`**, nunca com
> `coding`. Não há código para casar com um catálogo: o que você recebe é o nome, como ele está
> cadastrado — e, por isso, **não há como buscar por eles** (veja
> [Parâmetros de busca](#parâmetros-de-busca-suportados)).
>
> `specialty` ainda tem uma degradação silenciosa: quando a especialidade não tem nome
> cadastrado, o `text` traz o **identificador numérico** dela — um valor como `"418"`, que parece
> um nome e não é. Se o texto for só dígitos, trate como desconhecido.

## Cadastrar ou atualizar

**Não existe.** Este recurso não tem caminho de escrita nesta API — nem para criar, nem para
atualizar, nem para cancelar uma consulta prevista.

> **Warning**
>
> Um `POST /fhir/resources/Schedule` **não é uma operação suportada** e não devolve um erro de
> validação tratável: a chamada falha com erro inesperado do servidor (`500`). Não escreva
> tratamento em cima desse comportamento — ele não é contrato, e nada é gravado de qualquer
> forma.
>
> 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 Schedule not supported`.

O que existe de escrita nesta área é a **aplicação da diretriz** — veja [Diretriz aplicada](/guia/recursos/careplan). As consultas previstas nascem dela.

## Buscar

### Request

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

**`Busca com resultados`**

```curl Busca com resultados
curl -G https://landing-zone-api.nilo.services/fhir/resources/Schedule \
     -H "x-api-key: <apiKey>" \
     -d _count=50 \
     -d _lastUpdated=eq2013-01-14 \
     -d active=true \
     --data-urlencode actor=Patient/ba200cfa-dae0-46cf-81a0-008e3f7414b4 \
     --data-urlencode actor:identifier=https://www.acmesaude.com.br/integracao/paciente/|507823709 \
     -d date=ge2026-06-01 \
     --data-urlencode identifier=https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/hippocrates-api--guideline-patient-scheduling|90412 \
     --data-urlencode "service-type=Consulta de retorno" \
     -d specialty=Endocrinologia
```

**`Busca com resultados`**

```python Busca com resultados
import requests

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

querystring = {"_count":"50","_lastUpdated":"[\"eq2013-01-14\"]","active":"true","actor":"Patient/ba200cfa-dae0-46cf-81a0-008e3f7414b4","actor:identifier":"https://www.acmesaude.com.br/integracao/paciente/|507823709","date":"ge2026-06-01","identifier":"https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/hippocrates-api--guideline-patient-scheduling|90412","service-type":"Consulta de retorno","specialty":"Endocrinologia"}

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

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

print(response.json())
```

**`Busca com resultados`**

```javascript Busca com resultados
const url = 'https://landing-zone-api.nilo.services/fhir/resources/Schedule?_count=50&_lastUpdated=%5B%22eq2013-01-14%22%5D&active=true&actor=Patient%2Fba200cfa-dae0-46cf-81a0-008e3f7414b4&actor%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709&date=ge2026-06-01&identifier=https%3A%2F%2Flanding-zone-api.nilo.services%2Ffhir%2Fresources%2FNamingSystem%2Fhippocrates-api--guideline-patient-scheduling%7C90412&service-type=Consulta+de+retorno&specialty=Endocrinologia';
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 com resultados`**

```go Busca com resultados
package main

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

func main() {

	url := "https://landing-zone-api.nilo.services/fhir/resources/Schedule?_count=50&_lastUpdated=%5B%22eq2013-01-14%22%5D&active=true&actor=Patient%2Fba200cfa-dae0-46cf-81a0-008e3f7414b4&actor%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709&date=ge2026-06-01&identifier=https%3A%2F%2Flanding-zone-api.nilo.services%2Ffhir%2Fresources%2FNamingSystem%2Fhippocrates-api--guideline-patient-scheduling%7C90412&service-type=Consulta+de+retorno&specialty=Endocrinologia"

	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 com resultados`**

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

url = URI("https://landing-zone-api.nilo.services/fhir/resources/Schedule?_count=50&_lastUpdated=%5B%22eq2013-01-14%22%5D&active=true&actor=Patient%2Fba200cfa-dae0-46cf-81a0-008e3f7414b4&actor%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709&date=ge2026-06-01&identifier=https%3A%2F%2Flanding-zone-api.nilo.services%2Ffhir%2Fresources%2FNamingSystem%2Fhippocrates-api--guideline-patient-scheduling%7C90412&service-type=Consulta+de+retorno&specialty=Endocrinologia")

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 com resultados`**

```java Busca 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/Schedule?_count=50&_lastUpdated=%5B%22eq2013-01-14%22%5D&active=true&actor=Patient%2Fba200cfa-dae0-46cf-81a0-008e3f7414b4&actor%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709&date=ge2026-06-01&identifier=https%3A%2F%2Flanding-zone-api.nilo.services%2Ffhir%2Fresources%2FNamingSystem%2Fhippocrates-api--guideline-patient-scheduling%7C90412&service-type=Consulta+de+retorno&specialty=Endocrinologia")
  .header("x-api-key", "<apiKey>")
  .asString();
```

**`Busca com resultados`**

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

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://landing-zone-api.nilo.services/fhir/resources/Schedule?_count=50&_lastUpdated=%5B%22eq2013-01-14%22%5D&active=true&actor=Patient%2Fba200cfa-dae0-46cf-81a0-008e3f7414b4&actor%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709&date=ge2026-06-01&identifier=https%3A%2F%2Flanding-zone-api.nilo.services%2Ffhir%2Fresources%2FNamingSystem%2Fhippocrates-api--guideline-patient-scheduling%7C90412&service-type=Consulta+de+retorno&specialty=Endocrinologia', [
  'headers' => [
    'x-api-key' => '<apiKey>',
  ],
]);

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

**`Busca com resultados`**

```csharp Busca com resultados
using RestSharp;

var client = new RestClient("https://landing-zone-api.nilo.services/fhir/resources/Schedule?_count=50&_lastUpdated=%5B%22eq2013-01-14%22%5D&active=true&actor=Patient%2Fba200cfa-dae0-46cf-81a0-008e3f7414b4&actor%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709&date=ge2026-06-01&identifier=https%3A%2F%2Flanding-zone-api.nilo.services%2Ffhir%2Fresources%2FNamingSystem%2Fhippocrates-api--guideline-patient-scheduling%7C90412&service-type=Consulta+de+retorno&specialty=Endocrinologia");
var request = new RestRequest(Method.GET);
request.AddHeader("x-api-key", "<apiKey>");
IRestResponse response = client.Execute(request);
```

**`Busca com resultados`**

```swift Busca com resultados
import Foundation

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

let request = NSMutableURLRequest(url: NSURL(string: "https://landing-zone-api.nilo.services/fhir/resources/Schedule?_count=50&_lastUpdated=%5B%22eq2013-01-14%22%5D&active=true&actor=Patient%2Fba200cfa-dae0-46cf-81a0-008e3f7414b4&actor%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709&date=ge2026-06-01&identifier=https%3A%2F%2Flanding-zone-api.nilo.services%2Ffhir%2Fresources%2FNamingSystem%2Fhippocrates-api--guideline-patient-scheduling%7C90412&service-type=Consulta+de+retorno&specialty=Endocrinologia")! 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`:

### Response (200)

```json
{
  "resourceType": "Bundle",
  "type": "searchset",
  "entry": [
    {
      "fullUrl": "https://landing-zone-api.nilo.services/fhir/resources/Schedule/6a2f70b4-cd39-4185-92e7-8b04f1c6ae53",
      "resource": {
        "resourceType": "Schedule",
        "identifier": [
          {
            "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/hippocrates-api--guideline-patient-scheduling",
            "value": "90412",
            "use": "usual"
          }
        ],
        "id": "6a2f70b4-cd39-4185-92e7-8b04f1c6ae53",
        "meta": {
          "lastUpdated": "2026-05-20T08:12:03.552000Z",
          "versionId": "MTc4NjAyMTQ1MjkwNTAwMDM2Nw"
        },
        "active": true,
        "actor": [
          {
            "identifier": {
              "system": "https://www.acmesaude.com.br/integracao/paciente/",
              "value": "507823709",
              "use": "usual"
            },
            "type": "Patient",
            "reference": "Patient/ba200cfa-dae0-46cf-81a0-008e3f7414b4"
          },
          {
            "identifier": {
              "system": "https://www.acmesaude.com.br/integracao/profissional/",
              "value": "5032932",
              "use": "usual"
            },
            "type": "Practitioner",
            "reference": "Practitioner/1f30c8b7-45ad-4e62-9c81-73b0e5f24a19"
          }
        ],
        "planningHorizon": {
          "start": "2026-06-15"
        },
        "specialty": [
          {
            "text": "Endocrinologia"
          }
        ],
        "serviceType": [
          {
            "text": "Consulta de retorno"
          }
        ]
      },
      "search": {
        "mode": "match"
      }
    },
    {
      "fullUrl": "https://landing-zone-api.nilo.services/fhir/resources/Schedule/c93a1e07-45b8-4d26-b7f1-08e5c2947da6",
      "resource": {
        "resourceType": "Schedule",
        "identifier": [
          {
            "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/hippocrates-api--guideline-patient-scheduling",
            "value": "90413",
            "use": "usual"
          }
        ],
        "id": "c93a1e07-45b8-4d26-b7f1-08e5c2947da6",
        "meta": {
          "lastUpdated": "2026-05-22T17:45:11.908000Z",
          "versionId": "MTc4NjAyMTQ1MjkwNTAwMDM4NQ"
        },
        "active": false,
        "actor": [
          {
            "identifier": {
              "system": "https://www.acmesaude.com.br/integracao/paciente/",
              "value": "507823709",
              "use": "usual"
            },
            "type": "Patient",
            "reference": "Patient/ba200cfa-dae0-46cf-81a0-008e3f7414b4"
          }
        ],
        "planningHorizon": {
          "end": "2026-05-22T17:45:10+00:00",
          "start": "2026-05-18"
        },
        "specialty": [
          {
            "text": "Nutrição"
          }
        ],
        "comment": "cancelled-reason:Paciente remarcou | manual-status:not_done"
      },
      "search": {
        "mode": "match"
      }
    }
  ],
  "link": []
}
```

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 consulta prevista, em `system\|value`             | `Schedule.identifier`       |
| `actor`            | [reference](https://hl7.org/fhir/R4/search.html#reference) | Paciente ou profissional, pelo `id` Nilo FHIR dele                 | `Schedule.actor`            |
| `actor:identifier` | [reference](https://hl7.org/fhir/R4/search.html#reference) | O mesmo, pelo identificador embutido na referência                 | `Schedule.actor.identifier` |
| `active`           | [token](https://hl7.org/fhir/R4/search.html#token)         | `true` ou `false`                                                  | `Schedule.active`           |
| `date`             | [date](https://hl7.org/fhir/R4/search.html#date)           | Data prevista, com os prefixos `eq`, `ge`, `le`                    | `Schedule.planningHorizon`  |
| `_lastUpdated`     | [date](https://hl7.org/fhir/R4/search.html#date)           | Data da última gravação no store, com os prefixos `eq`, `ge`, `le` | —                           |

> **Note**
>
> Em `date`, prefira o prefixo `ge`. Como a consulta prevista em aberto não tem
> `planningHorizon.end`, o período é semanticamente aberto, e `eq` e `le` sobre um período aberto
> se comportam de forma pouco intuitiva.

> **Warning**
>
> **`actor` não distingue paciente de profissional.** É um só parâmetro para os dois papéis:
> buscar por um profissional devolve as consultas previstas em que ele é o profissional, e
> buscar por um paciente devolve as dele — mas não há como pedir "as consultas em que este
> paciente é o paciente" de forma explícita. Na prática isso não gera confusão, porque um
> identificador de paciente não casa com um profissional.

> **Note**
>
> Os demais parâmetros canônicos do `Schedule` existem e **não encontram nada** aqui:
> `service-category`, porque a plataforma não preenche o campo; e **`specialty` e
> `service-type`**, porque os dois são parâmetros de *token*, que procuram dentro de `coding` — e
> a Nilo preenche só o `text`. Buscar pelo nome da especialidade ou do tipo de atendimento não
> devolve nada.
>
> Não há parâmetro que ligue a consulta prevista à **diretriz aplicada** que a gerou. Para listar
> as consultas previstas de uma diretriz aplicada, leia o `activity[]` da [diretriz aplicada](/guia/recursos/careplan).

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/Schedule/\{id}](https://landing-zone-api.nilo.services/fhir/resources/Schedule/\{id})

**`Consulta prevista encontrada`**

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

**`Consulta prevista encontrada`**

```python Consulta prevista encontrada
import requests

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

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

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

print(response.json())
```

**`Consulta prevista encontrada`**

```javascript Consulta prevista encontrada
const url = 'https://landing-zone-api.nilo.services/fhir/resources/Schedule/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);
}
```

**`Consulta prevista encontrada`**

```go Consulta prevista encontrada
package main

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

func main() {

	url := "https://landing-zone-api.nilo.services/fhir/resources/Schedule/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))

}
```

**`Consulta prevista encontrada`**

```ruby Consulta prevista encontrada
require 'uri'
require 'net/http'

url = URI("https://landing-zone-api.nilo.services/fhir/resources/Schedule/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
```

**`Consulta prevista encontrada`**

```java Consulta prevista 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/Schedule/id")
  .header("x-api-key", "<apiKey>")
  .asString();
```

**`Consulta prevista encontrada`**

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

$client = new \GuzzleHttp\Client();

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

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

**`Consulta prevista encontrada`**

```csharp Consulta prevista encontrada
using RestSharp;

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

**`Consulta prevista encontrada`**

```swift Consulta prevista encontrada
import Foundation

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

let request = NSMutableURLRequest(url: NSURL(string: "https://landing-zone-api.nilo.services/fhir/resources/Schedule/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 consulta prevista está
> em `resource`. Ler `active` ou `planningHorizon` na raiz da resposta não encontra nada.

### Response (200)

```json
{
  "fullUrl": "https://landing-zone-api.nilo.services/fhir/resources/Schedule/6a2f70b4-cd39-4185-92e7-8b04f1c6ae53",
  "resource": {
    "resourceType": "Schedule",
    "identifier": [
      {
        "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/hippocrates-api--guideline-patient-scheduling",
        "value": "90412",
        "use": "usual"
      }
    ],
    "id": "6a2f70b4-cd39-4185-92e7-8b04f1c6ae53",
    "meta": {
      "lastUpdated": "2026-05-20T08:12:03.552000Z",
      "versionId": "MTc4NjAyMTQ1MjkwNTAwMDM2Nw"
    },
    "active": true,
    "actor": [
      {
        "identifier": {
          "system": "https://www.acmesaude.com.br/integracao/paciente/",
          "value": "507823709",
          "use": "usual"
        },
        "type": "Patient",
        "reference": "Patient/ba200cfa-dae0-46cf-81a0-008e3f7414b4"
      }
    ],
    "planningHorizon": {
      "start": "2026-06-15"
    },
    "specialty": [
      {
        "text": "Endocrinologia"
      }
    ],
    "serviceType": [
      {
        "text": "Consulta de retorno"
      }
    ]
  },
  "search": {
    "mode": "match"
  }
}
```

A leitura por ID responde `404` quando o `id` não existe — inclusive quando a consulta prevista
foi removida junto com a diretriz aplicada que a gerou.

## O que a integração não cobre

Não há escrita, e vários dados que a plataforma guarda **não têm campo aqui**:

* **o [agendamento](/guia/recursos/appointment)** que a consulta prevista virou — não há
  referência para ele;
* **a diretriz aplicada** que a gerou, e a diretriz por trás dela;
* **o prazo** para o paciente marcar — ele está no `activity[].detail.scheduledPeriod` da
  diretriz aplicada, não aqui;
* **quem cancelou** a consulta prevista;
* a distinção entre as oito situações da plataforma, reduzida ao booleano `active`.

Para a diretriz aplicada e o que ela gerou, veja [Diretriz aplicada](/guia/recursos/careplan);
para a diretriz, [Diretriz](/guia/recursos/plandefinition).