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

# Solicitação de serviço

> Consultar pedidos de exame e encaminhamentos, e registrar condutas, no padrão FHIR ServiceRequest.

A **solicitação de serviço** é o pedido de que alguma coisa seja feita para o paciente. Na
plataforma isso são três coisas diferentes, e todas saem como
[`ServiceRequest`](https://hl7.org/fhir/R4/servicerequest.html):

| O que é                                     | Escrita             |
| ------------------------------------------- | ------------------- |
| **Pedido de exame**                         | não há              |
| **Encaminhamento** para outra especialidade | não há              |
| **Conduta** de sugestão terapêutica         | **sim** — é a única |

Reconhecer qual é qual se faz pelo `system` do identificador Nilo, e só por ele — veja
[Como distinguir as três origens](#como-distinguir-as-três-origens).

> **Warning**
>
> **O `intent` decide tudo na escrita, e o valor que funciona não é o natural.** Só
> `intent: proposal` tem destino: ele grava uma **conduta**. Qualquer outro valor — inclusive
> `order`, que é o que a leitura devolve nos pedidos de exame — **não é gravável**, e a chamada
> falha com erro inesperado do servidor (`500`), sem `OperationOutcome`.
>
> Ou seja: **você não pode reenviar um pedido de exame lido por esta API.** Não há caminho de
> escrita para pedido de exame nem para encaminhamento.

## Como distinguir as três origens

O `intent` separa a conduta das outras duas. Para separar pedido de exame de encaminhamento,
olhe o `system` do identificador Nilo:

| Origem          | `intent`   | `system` do identificador Nilo                     | Campos exclusivos                                                |
| --------------- | ---------- | -------------------------------------------------- | ---------------------------------------------------------------- |
| Pedido de exame | `order`    | `…/NamingSystem/hippocrates-api--exam-request`     | `code`, `category`, `orderDetail`, `basedOn`, `supportingInfo`   |
| Encaminhamento  | `order`    | `…/NamingSystem/hippocrates-api--patient-referral` | `performerType`, `reasonCode`, `authoredOn`, `locationReference` |
| Conduta         | `proposal` | `…/NamingSystem/care-api--conduct-v2`              | —                                                                |

> **Note**
>
> Só a **conduta** pode carregar uma chave do seu sistema, porque é a única que você grava. As
> outras duas trazem apenas o identificador Nilo.

## Pedido de exame

É o exame solicitado numa receita.

| Campo              | Sempre presente | O que significa                                    | No Nilo Care                          |
| ------------------ | --------------- | -------------------------------------------------- | ------------------------------------- |
| `identifier`       | sim             | Identificador Nilo do pedido                       | —                                     |
| `status`           | sim             | Situação da **receita** — veja abaixo              | —                                     |
| `intent`           | sim             | Constante `order`                                  | —                                     |
| `category[0]`      | sim             | Constante TUSS-50 de procedimento diagnóstico      | —                                     |
| `code`             | não             | O exame, num código TUSS-63                        | o nome do exame no card do pedido     |
| `orderDetail[]`    | não             | Os CIDs que justificam o pedido, um por item       | **CID** — a tela mostra só o primeiro |
| `subject`          | sim             | O paciente                                         | —                                     |
| `requester`        | sim             | O profissional que pediu                           | —                                     |
| `encounter`        | sim             | O atendimento da receita                           | —                                     |
| `basedOn[0]`       | sim             | A receita de origem                                | —                                     |
| `supportingInfo[]` | não             | Aponta para o documento com a URL do PDF do pedido | —                                     |

O `status` vem da receita inteira, não deste exame:

| Valor              | Situação da receita    |
| ------------------ | ---------------------- |
| `draft`            | Pendente ou em emissão |
| `completed`        | Emitida                |
| `entered-in-error` | A emissão falhou       |
| `unknown`          | Receita apagada        |

> **Warning**
>
> Uma receita com três exames produz **três** pedidos, todos com o mesmo `status`. Ele não diz
> se o exame foi realizado — esse dado não existe nesta API.

> **Warning**
>
> **E o `status` do pedido de exame pode ficar para trás.** Ele é fotografado quando o **pedido**
> muda, não quando a receita é emitida: um pedido pode continuar `draft` numa receita já emitida.
> O encaminhamento não tem esse problema — nele a mudança de situação da receita ressincroniza o
> recurso.
>
> Se você precisa acompanhar a emissão, releia por `_lastUpdated` em vez de confiar no `status`
> que veio.

> **Warning**
>
> `encounter` e `basedOn` vêm **sem o campo `reference`** — só com `identifier` e `type`. Para
> buscar por eles, use `encounter:identifier` e `based-on:identifier`; a forma sem modificador
> não encontra nada.

> **Note**
>
> O documento apontado por `supportingInfo[0]` carrega o **mesmo identificador** do pedido de
> exame — então dá para buscá-lo direto por `identifier`, sem seguir a referência. A URL do
> arquivo está em `content[0].attachment.url`.
>
> Esse recurso **não tem página neste guia**, e a URL que ele guarda é um caminho de
> armazenamento, não necessariamente um link de download direto — o mesmo comportamento descrito
> em [Arquivo do paciente](/guia/recursos/media).

### Response (200)

```json
{
  "resourceType": "Bundle",
  "type": "searchset",
  "entry": [
    {
      "fullUrl": "https://landing-zone-api.nilo.services/fhir/resources/ServiceRequest/2b8e4f19-a075-4c63-9d81-5e06f3a2c748",
      "resource": {
        "resourceType": "ServiceRequest",
        "identifier": [
          {
            "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/hippocrates-api--exam-request",
            "value": "40218",
            "use": "usual"
          }
        ],
        "status": "completed",
        "intent": "order",
        "subject": {
          "identifier": {
            "system": "https://www.acmesaude.com.br/integracao/paciente/",
            "value": "507823709",
            "use": "usual"
          },
          "reference": "Patient/ba200cfa-dae0-46cf-81a0-008e3f7414b4",
          "type": "Patient"
        },
        "id": "2b8e4f19-a075-4c63-9d81-5e06f3a2c748",
        "meta": {
          "lastUpdated": "2026-04-16T18:22:41.330000Z",
          "versionId": "MTc4NjAyMTQ1MjkwNTAwMDM2Nw"
        },
        "encounter": {
          "identifier": {
            "system": "https://www.acmesaude.com.br/integracao/atendimento/",
            "value": "55162",
            "use": "usual"
          },
          "type": "Encounter"
        },
        "category": [
          {
            "coding": [
              {
                "code": "23",
                "system": "https://fhir.ans.gov.br/CodeSystem/tuss-50"
              }
            ]
          }
        ],
        "code": {
          "coding": [
            {
              "code": "40304361",
              "system": "https://fhir.ans.gov.br/CodeSystem/tuss-63"
            }
          ]
        },
        "orderDetail": [
          {
            "coding": [
              {
                "code": "E11",
                "system": "http://hl7.org/fhir/sid/icd-10"
              }
            ]
          }
        ],
        "basedOn": [
          {
            "identifier": {
              "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/hippocrates-api--prescription",
              "value": "31002",
              "use": "usual"
            },
            "type": "ServiceRequest"
          }
        ],
        "requester": {
          "identifier": {
            "system": "https://www.acmesaude.com.br/integracao/profissional/",
            "value": "5032932",
            "use": "usual"
          },
          "type": "Practitioner",
          "reference": "Practitioner/1f30c8b7-45ad-4e62-9c81-73b0e5f24a19"
        }
      },
      "search": {
        "mode": "match"
      }
    }
  ],
  "link": []
}
```

## Encaminhamento

É o encaminhamento do paciente para outra especialidade, registrado num atendimento.

| Campo                  | Sempre presente | O que significa                                       | No Nilo Care                  |
| ---------------------- | --------------- | ----------------------------------------------------- | ----------------------------- |
| `identifier`           | sim             | Identificador Nilo do encaminhamento                  | —                             |
| `status`               | sim             | Situação da receita — **com outro mapa**, veja abaixo | —                             |
| `intent`               | sim             | Constante `order`                                     | —                             |
| `authoredOn`           | sim             | Data do encaminhamento                                | —                             |
| `subject`              | sim             | O paciente                                            | —                             |
| `requester`            | sim             | O profissional responsável                            | —                             |
| `encounter`            | sim             | O atendimento da receita                              | —                             |
| `performerType`        | não             | A especialidade de destino, num código CBO            | — (não é exibida)             |
| `reasonCode[]`         | não             | O motivo em texto e o CID                             | o motivo, sem rótulo; **CID** |
| `note[]`               | não             | A conduta e a história clínica                        | **Histórico clínico**         |
| `locationReference[0]` | sim             | O local de atendimento da receita                     | —                             |

> **Warning**
>
> **O `status` do encaminhamento usa um mapa diferente do pedido de exame**, sobre a mesma
> situação de receita:
>
> | Situação da receita | Pedido de exame    | Encaminhamento     |
> | ------------------- | ------------------ | ------------------ |
> | Pendente            | `draft`            | `on-hold`          |
> | Em emissão          | `draft`            | `draft`            |
> | Falhou              | `entered-in-error` | `entered-in-error` |
> | Emitida             | `completed`        | **`active`**       |
>
> Um encaminhamento emitido é `active`; um pedido de exame emitido é `completed`. Não trate os
> dois vocabulários como um só.

> **Warning**
>
> **Não leia `note[]` nem `reasonCode[]` por posição.** Nos dois, a ordem é fixa mas os itens são
> opcionais e só entram se estiverem preenchidos:
>
> * `note[]` — conduta primeiro, história clínica depois. Num encaminhamento sem conduta, a
>   história clínica é `note[0]`;
> * `reasonCode[]` — motivo em texto primeiro, CID depois. Sem motivo, o CID é `reasonCode[0]`.
>
> Não há campo que distinga um do outro dentro de `note[]`. No `reasonCode[]` dá para separar: o
> CID é o item que traz `coding`.

> **Note**
>
> `performerType` vem da tradução da especialidade da plataforma para um código CBO, e essa
> tradução pode não existir: uma especialidade sem correspondência CBO faz o campo **não vir**,
> sem erro.

### Response (200)

```json
{
  "resourceType": "Bundle",
  "type": "searchset",
  "entry": [
    {
      "fullUrl": "https://landing-zone-api.nilo.services/fhir/resources/ServiceRequest/7c19d503-6b28-4a71-8fe4-90b2a5c31d6f",
      "resource": {
        "resourceType": "ServiceRequest",
        "identifier": [
          {
            "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/hippocrates-api--patient-referral",
            "value": "9014",
            "use": "usual"
          }
        ],
        "status": "active",
        "intent": "order",
        "subject": {
          "identifier": {
            "system": "https://www.acmesaude.com.br/integracao/paciente/",
            "value": "507823709",
            "use": "usual"
          },
          "reference": "Patient/ba200cfa-dae0-46cf-81a0-008e3f7414b4",
          "type": "Patient"
        },
        "id": "7c19d503-6b28-4a71-8fe4-90b2a5c31d6f",
        "meta": {
          "lastUpdated": "2026-04-16T18:25:03.712000Z",
          "versionId": "MTc4NjAyMTQ1MjkwNTAwMDM5Mg"
        },
        "note": [
          {
            "text": "Ajustar esquema terapêutico e reavaliar em 30 dias."
          },
          {
            "text": "Paciente em uso de metformina há dois anos."
          }
        ],
        "requester": {
          "identifier": {
            "system": "https://www.acmesaude.com.br/integracao/profissional/",
            "value": "5032932",
            "use": "usual"
          },
          "type": "Practitioner",
          "reference": "Practitioner/1f30c8b7-45ad-4e62-9c81-73b0e5f24a19"
        },
        "authoredOn": "2026-04-16T00:00:00+00:00",
        "reasonCode": [
          {
            "text": "Descompensação glicêmica persistente"
          },
          {
            "coding": [
              {
                "code": "E11",
                "display": "Diabetes mellitus tipo 2",
                "system": "http://hl7.org/fhir/sid/icd-10"
              }
            ],
            "text": "Diabetes mellitus tipo 2"
          }
        ],
        "performerType": {
          "coding": [
            {
              "code": "225125",
              "system": "http://www.saude.gov.br/fhir/r4/CodeSystem/BRCBO"
            }
          ],
          "text": "Médico endocrinologista e metabologista"
        }
      },
      "search": {
        "mode": "match"
      }
    }
  ],
  "link": []
}
```

## Conduta

É a conduta de um atendimento cujo desfecho foi *sugestão terapêutica*. É o **único** dos três
que você pode gravar.

| Campo                | Obrigatório na escrita | O que significa                                                      | No Nilo Care               |
| -------------------- | ---------------------- | -------------------------------------------------------------------- | -------------------------- |
| `resourceType`       | **sim**                | Constante `ServiceRequest`                                           | —                          |
| `identifier`         | **sim**                | Suas chaves da conduta                                               | —                          |
| `intent`             | **sim**                | Tem de ser `proposal`                                                | —                          |
| `status`             | **sim**                | Exigido pelo FHIR e descartado. A leitura devolve sempre `completed` | —                          |
| `subject.identifier` | **sim**                | O paciente, pela sua chave ou pelo identificador Nilo dele           | —                          |
| `note[]`             | **sim**                | O conteúdo da conduta: cada item é uma linha                         | **Condutas e orientações** |
| `encounter`          | não                    | O atendimento onde pendurar a conduta                                | **Atendimento**            |

### Request

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

**`Conduta num atendimento existente`**

```curl Conduta num atendimento existente
curl -X POST https://landing-zone-api.nilo.services/fhir/resources/ServiceRequest \
     -H "x-api-key: <apiKey>" \
     -H "Content-Type: application/json" \
     -d '{
  "resourceType": "ServiceRequest",
  "identifier": [
    {
      "system": "https://www.acmesaude.com.br/integracao/conduta/",
      "value": "C-9001",
      "use": "usual"
    }
  ],
  "status": "completed",
  "intent": "proposal",
  "subject": {
    "identifier": {
      "system": "https://www.acmesaude.com.br/integracao/paciente/",
      "value": "507823709",
      "use": "usual"
    },
    "type": "Patient"
  },
  "note": [
    {
      "text": "Retorno em 15 dias."
    },
    {
      "text": "Oriento sinais de alarme."
    }
  ],
  "encounter": {
    "identifier": {
      "system": "https://www.acmesaude.com.br/integracao/atendimento/",
      "value": "55162",
      "use": "usual"
    },
    "type": "Encounter"
  }
}'
```

**`Conduta num atendimento existente`**

```python Conduta num atendimento existente
import requests

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

payload = {
    "resourceType": "ServiceRequest",
    "identifier": [
        {
            "system": "https://www.acmesaude.com.br/integracao/conduta/",
            "value": "C-9001",
            "use": "usual"
        }
    ],
    "status": "completed",
    "intent": "proposal",
    "subject": {
        "identifier": {
            "system": "https://www.acmesaude.com.br/integracao/paciente/",
            "value": "507823709",
            "use": "usual"
        },
        "type": "Patient"
    },
    "note": [{ "text": "Retorno em 15 dias." }, { "text": "Oriento sinais de alarme." }],
    "encounter": {
        "identifier": {
            "system": "https://www.acmesaude.com.br/integracao/atendimento/",
            "value": "55162",
            "use": "usual"
        },
        "type": "Encounter"
    }
}
headers = {
    "x-api-key": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

**`Conduta num atendimento existente`**

```javascript Conduta num atendimento existente
const url = 'https://landing-zone-api.nilo.services/fhir/resources/ServiceRequest';
const options = {
  method: 'POST',
  headers: {'x-api-key': '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"resourceType":"ServiceRequest","identifier":[{"system":"https://www.acmesaude.com.br/integracao/conduta/","value":"C-9001","use":"usual"}],"status":"completed","intent":"proposal","subject":{"identifier":{"system":"https://www.acmesaude.com.br/integracao/paciente/","value":"507823709","use":"usual"},"type":"Patient"},"note":[{"text":"Retorno em 15 dias."},{"text":"Oriento sinais de alarme."}],"encounter":{"identifier":{"system":"https://www.acmesaude.com.br/integracao/atendimento/","value":"55162","use":"usual"},"type":"Encounter"}}'
};

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

**`Conduta num atendimento existente`**

```go Conduta num atendimento existente
package main

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

func main() {

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

	payload := strings.NewReader("{\n  \"resourceType\": \"ServiceRequest\",\n  \"identifier\": [\n    {\n      \"system\": \"https://www.acmesaude.com.br/integracao/conduta/\",\n      \"value\": \"C-9001\",\n      \"use\": \"usual\"\n    }\n  ],\n  \"status\": \"completed\",\n  \"intent\": \"proposal\",\n  \"subject\": {\n    \"identifier\": {\n      \"system\": \"https://www.acmesaude.com.br/integracao/paciente/\",\n      \"value\": \"507823709\",\n      \"use\": \"usual\"\n    },\n    \"type\": \"Patient\"\n  },\n  \"note\": [\n    {\n      \"text\": \"Retorno em 15 dias.\"\n    },\n    {\n      \"text\": \"Oriento sinais de alarme.\"\n    }\n  ],\n  \"encounter\": {\n    \"identifier\": {\n      \"system\": \"https://www.acmesaude.com.br/integracao/atendimento/\",\n      \"value\": \"55162\",\n      \"use\": \"usual\"\n    },\n    \"type\": \"Encounter\"\n  }\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("x-api-key", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

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

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

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

}
```

**`Conduta num atendimento existente`**

```ruby Conduta num atendimento existente
require 'uri'
require 'net/http'

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

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

request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"resourceType\": \"ServiceRequest\",\n  \"identifier\": [\n    {\n      \"system\": \"https://www.acmesaude.com.br/integracao/conduta/\",\n      \"value\": \"C-9001\",\n      \"use\": \"usual\"\n    }\n  ],\n  \"status\": \"completed\",\n  \"intent\": \"proposal\",\n  \"subject\": {\n    \"identifier\": {\n      \"system\": \"https://www.acmesaude.com.br/integracao/paciente/\",\n      \"value\": \"507823709\",\n      \"use\": \"usual\"\n    },\n    \"type\": \"Patient\"\n  },\n  \"note\": [\n    {\n      \"text\": \"Retorno em 15 dias.\"\n    },\n    {\n      \"text\": \"Oriento sinais de alarme.\"\n    }\n  ],\n  \"encounter\": {\n    \"identifier\": {\n      \"system\": \"https://www.acmesaude.com.br/integracao/atendimento/\",\n      \"value\": \"55162\",\n      \"use\": \"usual\"\n    },\n    \"type\": \"Encounter\"\n  }\n}"

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

**`Conduta num atendimento existente`**

```java Conduta num atendimento existente
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://landing-zone-api.nilo.services/fhir/resources/ServiceRequest")
  .header("x-api-key", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"resourceType\": \"ServiceRequest\",\n  \"identifier\": [\n    {\n      \"system\": \"https://www.acmesaude.com.br/integracao/conduta/\",\n      \"value\": \"C-9001\",\n      \"use\": \"usual\"\n    }\n  ],\n  \"status\": \"completed\",\n  \"intent\": \"proposal\",\n  \"subject\": {\n    \"identifier\": {\n      \"system\": \"https://www.acmesaude.com.br/integracao/paciente/\",\n      \"value\": \"507823709\",\n      \"use\": \"usual\"\n    },\n    \"type\": \"Patient\"\n  },\n  \"note\": [\n    {\n      \"text\": \"Retorno em 15 dias.\"\n    },\n    {\n      \"text\": \"Oriento sinais de alarme.\"\n    }\n  ],\n  \"encounter\": {\n    \"identifier\": {\n      \"system\": \"https://www.acmesaude.com.br/integracao/atendimento/\",\n      \"value\": \"55162\",\n      \"use\": \"usual\"\n    },\n    \"type\": \"Encounter\"\n  }\n}")
  .asString();
```

**`Conduta num atendimento existente`**

```php Conduta num atendimento existente
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://landing-zone-api.nilo.services/fhir/resources/ServiceRequest', [
  'body' => '{
  "resourceType": "ServiceRequest",
  "identifier": [
    {
      "system": "https://www.acmesaude.com.br/integracao/conduta/",
      "value": "C-9001",
      "use": "usual"
    }
  ],
  "status": "completed",
  "intent": "proposal",
  "subject": {
    "identifier": {
      "system": "https://www.acmesaude.com.br/integracao/paciente/",
      "value": "507823709",
      "use": "usual"
    },
    "type": "Patient"
  },
  "note": [
    {
      "text": "Retorno em 15 dias."
    },
    {
      "text": "Oriento sinais de alarme."
    }
  ],
  "encounter": {
    "identifier": {
      "system": "https://www.acmesaude.com.br/integracao/atendimento/",
      "value": "55162",
      "use": "usual"
    },
    "type": "Encounter"
  }
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'x-api-key' => '<apiKey>',
  ],
]);

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

**`Conduta num atendimento existente`**

```csharp Conduta num atendimento existente
using RestSharp;

var client = new RestClient("https://landing-zone-api.nilo.services/fhir/resources/ServiceRequest");
var request = new RestRequest(Method.POST);
request.AddHeader("x-api-key", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"resourceType\": \"ServiceRequest\",\n  \"identifier\": [\n    {\n      \"system\": \"https://www.acmesaude.com.br/integracao/conduta/\",\n      \"value\": \"C-9001\",\n      \"use\": \"usual\"\n    }\n  ],\n  \"status\": \"completed\",\n  \"intent\": \"proposal\",\n  \"subject\": {\n    \"identifier\": {\n      \"system\": \"https://www.acmesaude.com.br/integracao/paciente/\",\n      \"value\": \"507823709\",\n      \"use\": \"usual\"\n    },\n    \"type\": \"Patient\"\n  },\n  \"note\": [\n    {\n      \"text\": \"Retorno em 15 dias.\"\n    },\n    {\n      \"text\": \"Oriento sinais de alarme.\"\n    }\n  ],\n  \"encounter\": {\n    \"identifier\": {\n      \"system\": \"https://www.acmesaude.com.br/integracao/atendimento/\",\n      \"value\": \"55162\",\n      \"use\": \"usual\"\n    },\n    \"type\": \"Encounter\"\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

**`Conduta num atendimento existente`**

```swift Conduta num atendimento existente
import Foundation

let headers = [
  "x-api-key": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "resourceType": "ServiceRequest",
  "identifier": [
    [
      "system": "https://www.acmesaude.com.br/integracao/conduta/",
      "value": "C-9001",
      "use": "usual"
    ]
  ],
  "status": "completed",
  "intent": "proposal",
  "subject": [
    "identifier": [
      "system": "https://www.acmesaude.com.br/integracao/paciente/",
      "value": "507823709",
      "use": "usual"
    ],
    "type": "Patient"
  ],
  "note": [["text": "Retorno em 15 dias."], ["text": "Oriento sinais de alarme."]],
  "encounter": [
    "identifier": [
      "system": "https://www.acmesaude.com.br/integracao/atendimento/",
      "value": "55162",
      "use": "usual"
    ],
    "type": "Encounter"
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

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

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 é o recurso gravado, sem envelope:

### Response (200)

```json
{
  "resourceType": "ServiceRequest",
  "identifier": [
    {
      "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/care-api--conduct-v2",
      "value": "77410",
      "use": "usual"
    },
    {
      "system": "https://www.acmesaude.com.br/integracao/conduta/",
      "value": "C-9001",
      "use": "usual"
    }
  ],
  "status": "completed",
  "intent": "proposal",
  "subject": {
    "identifier": {
      "system": "https://www.acmesaude.com.br/integracao/paciente/",
      "value": "507823709",
      "use": "usual"
    },
    "reference": "Patient/ba200cfa-dae0-46cf-81a0-008e3f7414b4",
    "type": "Patient"
  },
  "id": "e5028a71-3c94-4d16-b0a7-62d3f9814c05",
  "meta": {
    "lastUpdated": "2026-04-17T09:41:20.118000Z",
    "versionId": "MTc4NjAyMTQ1MjkwNTAwMDM5NQ"
  },
  "note": [
    {
      "text": "Retorno em 15 dias."
    },
    {
      "text": "Oriento sinais de alarme."
    }
  ],
  "encounter": {
    "identifier": {
      "system": "https://www.acmesaude.com.br/integracao/atendimento/",
      "value": "55162",
      "use": "usual"
    },
    "type": "Encounter"
  }
}
```

> **Warning**
>
> **Uma conduta sem `encounter` cria um atendimento.** A plataforma precisa de um atendimento
> onde pendurar a conduta e, não recebendo um, cria um atendimento já finalizado no prontuário do
> paciente — visível para a equipe como qualquer outro.
>
> Se você tem o atendimento, mande-o — é o caminho recomendado.

### Request

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

**`Conduta sem atendimento`**

```curl Conduta sem atendimento
curl -X POST https://landing-zone-api.nilo.services/fhir/resources/ServiceRequest \
     -H "x-api-key: <apiKey>" \
     -H "Content-Type: application/json" \
     -d '{
  "resourceType": "ServiceRequest",
  "identifier": [
    {
      "system": "https://www.acmesaude.com.br/integracao/conduta/",
      "value": "C-9002",
      "use": "usual"
    }
  ],
  "status": "completed",
  "intent": "proposal",
  "subject": {
    "identifier": {
      "system": "https://www.acmesaude.com.br/integracao/paciente/",
      "value": "507823709",
      "use": "usual"
    },
    "type": "Patient"
  },
  "note": [
    {
      "text": "Manter dieta e retornar em 30 dias."
    }
  ]
}'
```

**`Conduta sem atendimento`**

```python Conduta sem atendimento
import requests

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

payload = {
    "resourceType": "ServiceRequest",
    "identifier": [
        {
            "system": "https://www.acmesaude.com.br/integracao/conduta/",
            "value": "C-9002",
            "use": "usual"
        }
    ],
    "status": "completed",
    "intent": "proposal",
    "subject": {
        "identifier": {
            "system": "https://www.acmesaude.com.br/integracao/paciente/",
            "value": "507823709",
            "use": "usual"
        },
        "type": "Patient"
    },
    "note": [{ "text": "Manter dieta e retornar em 30 dias." }]
}
headers = {
    "x-api-key": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

**`Conduta sem atendimento`**

```javascript Conduta sem atendimento
const url = 'https://landing-zone-api.nilo.services/fhir/resources/ServiceRequest';
const options = {
  method: 'POST',
  headers: {'x-api-key': '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"resourceType":"ServiceRequest","identifier":[{"system":"https://www.acmesaude.com.br/integracao/conduta/","value":"C-9002","use":"usual"}],"status":"completed","intent":"proposal","subject":{"identifier":{"system":"https://www.acmesaude.com.br/integracao/paciente/","value":"507823709","use":"usual"},"type":"Patient"},"note":[{"text":"Manter dieta e retornar em 30 dias."}]}'
};

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

**`Conduta sem atendimento`**

```go Conduta sem atendimento
package main

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

func main() {

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

	payload := strings.NewReader("{\n  \"resourceType\": \"ServiceRequest\",\n  \"identifier\": [\n    {\n      \"system\": \"https://www.acmesaude.com.br/integracao/conduta/\",\n      \"value\": \"C-9002\",\n      \"use\": \"usual\"\n    }\n  ],\n  \"status\": \"completed\",\n  \"intent\": \"proposal\",\n  \"subject\": {\n    \"identifier\": {\n      \"system\": \"https://www.acmesaude.com.br/integracao/paciente/\",\n      \"value\": \"507823709\",\n      \"use\": \"usual\"\n    },\n    \"type\": \"Patient\"\n  },\n  \"note\": [\n    {\n      \"text\": \"Manter dieta e retornar em 30 dias.\"\n    }\n  ]\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("x-api-key", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

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

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

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

}
```

**`Conduta sem atendimento`**

```ruby Conduta sem atendimento
require 'uri'
require 'net/http'

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

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

request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"resourceType\": \"ServiceRequest\",\n  \"identifier\": [\n    {\n      \"system\": \"https://www.acmesaude.com.br/integracao/conduta/\",\n      \"value\": \"C-9002\",\n      \"use\": \"usual\"\n    }\n  ],\n  \"status\": \"completed\",\n  \"intent\": \"proposal\",\n  \"subject\": {\n    \"identifier\": {\n      \"system\": \"https://www.acmesaude.com.br/integracao/paciente/\",\n      \"value\": \"507823709\",\n      \"use\": \"usual\"\n    },\n    \"type\": \"Patient\"\n  },\n  \"note\": [\n    {\n      \"text\": \"Manter dieta e retornar em 30 dias.\"\n    }\n  ]\n}"

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

**`Conduta sem atendimento`**

```java Conduta sem atendimento
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://landing-zone-api.nilo.services/fhir/resources/ServiceRequest")
  .header("x-api-key", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"resourceType\": \"ServiceRequest\",\n  \"identifier\": [\n    {\n      \"system\": \"https://www.acmesaude.com.br/integracao/conduta/\",\n      \"value\": \"C-9002\",\n      \"use\": \"usual\"\n    }\n  ],\n  \"status\": \"completed\",\n  \"intent\": \"proposal\",\n  \"subject\": {\n    \"identifier\": {\n      \"system\": \"https://www.acmesaude.com.br/integracao/paciente/\",\n      \"value\": \"507823709\",\n      \"use\": \"usual\"\n    },\n    \"type\": \"Patient\"\n  },\n  \"note\": [\n    {\n      \"text\": \"Manter dieta e retornar em 30 dias.\"\n    }\n  ]\n}")
  .asString();
```

**`Conduta sem atendimento`**

```php Conduta sem atendimento
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://landing-zone-api.nilo.services/fhir/resources/ServiceRequest', [
  'body' => '{
  "resourceType": "ServiceRequest",
  "identifier": [
    {
      "system": "https://www.acmesaude.com.br/integracao/conduta/",
      "value": "C-9002",
      "use": "usual"
    }
  ],
  "status": "completed",
  "intent": "proposal",
  "subject": {
    "identifier": {
      "system": "https://www.acmesaude.com.br/integracao/paciente/",
      "value": "507823709",
      "use": "usual"
    },
    "type": "Patient"
  },
  "note": [
    {
      "text": "Manter dieta e retornar em 30 dias."
    }
  ]
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'x-api-key' => '<apiKey>',
  ],
]);

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

**`Conduta sem atendimento`**

```csharp Conduta sem atendimento
using RestSharp;

var client = new RestClient("https://landing-zone-api.nilo.services/fhir/resources/ServiceRequest");
var request = new RestRequest(Method.POST);
request.AddHeader("x-api-key", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"resourceType\": \"ServiceRequest\",\n  \"identifier\": [\n    {\n      \"system\": \"https://www.acmesaude.com.br/integracao/conduta/\",\n      \"value\": \"C-9002\",\n      \"use\": \"usual\"\n    }\n  ],\n  \"status\": \"completed\",\n  \"intent\": \"proposal\",\n  \"subject\": {\n    \"identifier\": {\n      \"system\": \"https://www.acmesaude.com.br/integracao/paciente/\",\n      \"value\": \"507823709\",\n      \"use\": \"usual\"\n    },\n    \"type\": \"Patient\"\n  },\n  \"note\": [\n    {\n      \"text\": \"Manter dieta e retornar em 30 dias.\"\n    }\n  ]\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

**`Conduta sem atendimento`**

```swift Conduta sem atendimento
import Foundation

let headers = [
  "x-api-key": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "resourceType": "ServiceRequest",
  "identifier": [
    [
      "system": "https://www.acmesaude.com.br/integracao/conduta/",
      "value": "C-9002",
      "use": "usual"
    ]
  ],
  "status": "completed",
  "intent": "proposal",
  "subject": [
    "identifier": [
      "system": "https://www.acmesaude.com.br/integracao/paciente/",
      "value": "507823709",
      "use": "usual"
    ],
    "type": "Patient"
  ],
  "note": [["text": "Manter dieta e retornar em 30 dias."]]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

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

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**
>
> **Uma conduta sem `note` falha — e falha depois de o atendimento ter sido criado.** A recusa
> vem sem classificação de campo, e o atendimento vazio fica no prontuário. Confira que `note`
> está preenchido antes de enviar.

> **Note**
>
> O mesmo `POST` cria e atualiza: reenviando um `identifier` que já corresponde a uma conduta, o
> texto dela é reescrito.

> **Warning**
>
> **O atendimento de uma conduta não muda depois da criação.** Numa atualização, o `encounter` do
> payload é ignorado e a conduta continua no atendimento onde já estava. Para movê-la, não há
> caminho por esta API.

> **Note**
>
> Na leitura, a conduta vem com **um `note` por linha**; na escrita, os itens que você manda são
> juntados numa nota só do lado da plataforma. Enviar duas notas e reler devolve duas notas — mas
> uma nota que **contenha** uma quebra de linha volta partida em duas.

> **Note**
>
> O `encounter` que você mandou **é preservado** no recurso e volta nas leituras seguintes. Uma
> conduta registrada dentro da plataforma, essa sim, vem sem `encounter`.

> **Warning**
>
> O mesmo vale para **qualquer campo que você envie e que a plataforma não produza** — `code`,
> `category`, `priority`, `reasonCode`. Eles ficam guardados no recurso e voltam nas leituras
> seguintes, sem nunca terem significado nada para a plataforma. A referência não os declara, mas
> a API não os recusa. Omita-os.

### Response (200)

```json
{
  "resourceType": "Bundle",
  "type": "searchset",
  "entry": [
    {
      "fullUrl": "https://landing-zone-api.nilo.services/fhir/resources/ServiceRequest/e5028a71-3c94-4d16-b0a7-62d3f9814c05",
      "resource": {
        "resourceType": "ServiceRequest",
        "identifier": [
          {
            "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/care-api--conduct-v2",
            "value": "77410",
            "use": "usual"
          },
          {
            "system": "https://www.acmesaude.com.br/integracao/conduta/",
            "value": "C-9001",
            "use": "usual"
          }
        ],
        "status": "completed",
        "intent": "proposal",
        "subject": {
          "identifier": {
            "system": "https://www.acmesaude.com.br/integracao/paciente/",
            "value": "507823709",
            "use": "usual"
          },
          "reference": "Patient/ba200cfa-dae0-46cf-81a0-008e3f7414b4",
          "type": "Patient"
        },
        "id": "e5028a71-3c94-4d16-b0a7-62d3f9814c05",
        "meta": {
          "lastUpdated": "2026-04-17T09:41:20.118000Z",
          "versionId": "MTc4NjAyMTQ1MjkwNTAwMDM5NQ"
        },
        "note": [
          {
            "text": "Retorno em 15 dias."
          },
          {
            "text": "Oriento sinais de alarme."
          }
        ]
      },
      "search": {
        "mode": "match"
      }
    }
  ],
  "link": []
}
```

> **Warning**
>
> **Pendurar a conduta num atendimento existente pode mudar o recurso que a lê.** O tipo de
> recurso em que a conduta aparece é decidido pelo **desfecho do atendimento**, não pelo endpoint
> que você usou: num atendimento de resultado de exame ela vira
> [Procedimento](/guia/recursos/procedure), e num de hipótese diagnóstica vira
> [Condição](/guia/recursos/condition).
>
> A resposta do seu `POST` sempre volta como `ServiceRequest`, mas a próxima sincronização pode
> reescrevê-la como outro recurso — e aí ela some da busca de `ServiceRequest`. Só quando a API
> **cria** o atendimento é que o desfecho fica garantido como sugestão terapêutica.

### A mesma conduta em outros recursos

A conduta que você grava aqui também aparece em `action[]` da
[Conduta](/guia/recursos/requestgroup) do atendimento, com o texto inteiro em vez de quebrado por
linha — mas **não na hora**: aquele recurso só é regravado quando o atendimento em si
sincroniza.

E é a mesma família de registro que a [Condição](/guia/recursos/condition) grava com
`verificationStatus: provisional`. Quando a API cria o atendimento, o que muda entre os dois
caminhos é o desfecho que ela dá a ele; quando você informa um `encounter`, o desfecho é o do
atendimento que já existe, e a diferença é só o tipo de recurso que guarda a sua chave.

> **Warning**
>
> **Não grave a mesma conduta pelos dois caminhos.** `POST /fhir/resources/Condition` com
> `verificationStatus: provisional` e `POST /fhir/resources/ServiceRequest` com
> `intent: proposal` gravam registros diferentes, cada um com o seu identificador. Escolha um.

## Buscar

### Request

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

**`Pedido de exame`**

```curl Pedido de exame
curl -G https://landing-zone-api.nilo.services/fhir/resources/ServiceRequest \
     -H "x-api-key: <apiKey>" \
     -d _count=50 \
     -d _lastUpdated=eq2013-01-14 \
     --data-urlencode based-on:identifier=https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/hippocrates-api--prescription|31002 \
     --data-urlencode encounter:identifier=https://www.acmesaude.com.br/integracao/atendimento/|55162 \
     --data-urlencode identifier=https://www.acmesaude.com.br/integracao/conduta/|C-9001 \
     -d intent=proposal \
     --data-urlencode patient=Patient/ba200cfa-dae0-46cf-81a0-008e3f7414b4 \
     --data-urlencode patient:identifier=https://www.acmesaude.com.br/integracao/paciente/|507823709 \
     --data-urlencode requester:identifier=https://www.acmesaude.com.br/integracao/profissional/|5032932 \
     -d status=completed \
     --data-urlencode subject=Patient/ba200cfa-dae0-46cf-81a0-008e3f7414b4 \
     --data-urlencode subject:identifier=https://www.acmesaude.com.br/integracao/paciente/|507823709
```

**`Pedido de exame`**

```python Pedido de exame
import requests

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

querystring = {"_count":"50","_lastUpdated":"[\"eq2013-01-14\"]","based-on:identifier":"https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/hippocrates-api--prescription|31002","encounter:identifier":"https://www.acmesaude.com.br/integracao/atendimento/|55162","identifier":"https://www.acmesaude.com.br/integracao/conduta/|C-9001","intent":"proposal","patient":"Patient/ba200cfa-dae0-46cf-81a0-008e3f7414b4","patient:identifier":"https://www.acmesaude.com.br/integracao/paciente/|507823709","requester:identifier":"https://www.acmesaude.com.br/integracao/profissional/|5032932","status":"completed","subject":"Patient/ba200cfa-dae0-46cf-81a0-008e3f7414b4","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())
```

**`Pedido de exame`**

```javascript Pedido de exame
const url = 'https://landing-zone-api.nilo.services/fhir/resources/ServiceRequest?_count=50&_lastUpdated=%5B%22eq2013-01-14%22%5D&based-on%3Aidentifier=https%3A%2F%2Flanding-zone-api.nilo.services%2Ffhir%2Fresources%2FNamingSystem%2Fhippocrates-api--prescription%7C31002&encounter%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fatendimento%2F%7C55162&identifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fconduta%2F%7CC-9001&intent=proposal&patient=Patient%2Fba200cfa-dae0-46cf-81a0-008e3f7414b4&patient%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709&requester%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fprofissional%2F%7C5032932&status=completed&subject=Patient%2Fba200cfa-dae0-46cf-81a0-008e3f7414b4&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);
}
```

**`Pedido de exame`**

```go Pedido de exame
package main

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

func main() {

	url := "https://landing-zone-api.nilo.services/fhir/resources/ServiceRequest?_count=50&_lastUpdated=%5B%22eq2013-01-14%22%5D&based-on%3Aidentifier=https%3A%2F%2Flanding-zone-api.nilo.services%2Ffhir%2Fresources%2FNamingSystem%2Fhippocrates-api--prescription%7C31002&encounter%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fatendimento%2F%7C55162&identifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fconduta%2F%7CC-9001&intent=proposal&patient=Patient%2Fba200cfa-dae0-46cf-81a0-008e3f7414b4&patient%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709&requester%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fprofissional%2F%7C5032932&status=completed&subject=Patient%2Fba200cfa-dae0-46cf-81a0-008e3f7414b4&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))

}
```

**`Pedido de exame`**

```ruby Pedido de exame
require 'uri'
require 'net/http'

url = URI("https://landing-zone-api.nilo.services/fhir/resources/ServiceRequest?_count=50&_lastUpdated=%5B%22eq2013-01-14%22%5D&based-on%3Aidentifier=https%3A%2F%2Flanding-zone-api.nilo.services%2Ffhir%2Fresources%2FNamingSystem%2Fhippocrates-api--prescription%7C31002&encounter%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fatendimento%2F%7C55162&identifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fconduta%2F%7CC-9001&intent=proposal&patient=Patient%2Fba200cfa-dae0-46cf-81a0-008e3f7414b4&patient%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709&requester%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fprofissional%2F%7C5032932&status=completed&subject=Patient%2Fba200cfa-dae0-46cf-81a0-008e3f7414b4&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
```

**`Pedido de exame`**

```java Pedido de exame
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/ServiceRequest?_count=50&_lastUpdated=%5B%22eq2013-01-14%22%5D&based-on%3Aidentifier=https%3A%2F%2Flanding-zone-api.nilo.services%2Ffhir%2Fresources%2FNamingSystem%2Fhippocrates-api--prescription%7C31002&encounter%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fatendimento%2F%7C55162&identifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fconduta%2F%7CC-9001&intent=proposal&patient=Patient%2Fba200cfa-dae0-46cf-81a0-008e3f7414b4&patient%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709&requester%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fprofissional%2F%7C5032932&status=completed&subject=Patient%2Fba200cfa-dae0-46cf-81a0-008e3f7414b4&subject%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709")
  .header("x-api-key", "<apiKey>")
  .asString();
```

**`Pedido de exame`**

```php Pedido de exame
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://landing-zone-api.nilo.services/fhir/resources/ServiceRequest?_count=50&_lastUpdated=%5B%22eq2013-01-14%22%5D&based-on%3Aidentifier=https%3A%2F%2Flanding-zone-api.nilo.services%2Ffhir%2Fresources%2FNamingSystem%2Fhippocrates-api--prescription%7C31002&encounter%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fatendimento%2F%7C55162&identifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fconduta%2F%7CC-9001&intent=proposal&patient=Patient%2Fba200cfa-dae0-46cf-81a0-008e3f7414b4&patient%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709&requester%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fprofissional%2F%7C5032932&status=completed&subject=Patient%2Fba200cfa-dae0-46cf-81a0-008e3f7414b4&subject%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709', [
  'headers' => [
    'x-api-key' => '<apiKey>',
  ],
]);

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

**`Pedido de exame`**

```csharp Pedido de exame
using RestSharp;

var client = new RestClient("https://landing-zone-api.nilo.services/fhir/resources/ServiceRequest?_count=50&_lastUpdated=%5B%22eq2013-01-14%22%5D&based-on%3Aidentifier=https%3A%2F%2Flanding-zone-api.nilo.services%2Ffhir%2Fresources%2FNamingSystem%2Fhippocrates-api--prescription%7C31002&encounter%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fatendimento%2F%7C55162&identifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fconduta%2F%7CC-9001&intent=proposal&patient=Patient%2Fba200cfa-dae0-46cf-81a0-008e3f7414b4&patient%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709&requester%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fprofissional%2F%7C5032932&status=completed&subject=Patient%2Fba200cfa-dae0-46cf-81a0-008e3f7414b4&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);
```

**`Pedido de exame`**

```swift Pedido de exame
import Foundation

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

let request = NSMutableURLRequest(url: NSURL(string: "https://landing-zone-api.nilo.services/fhir/resources/ServiceRequest?_count=50&_lastUpdated=%5B%22eq2013-01-14%22%5D&based-on%3Aidentifier=https%3A%2F%2Flanding-zone-api.nilo.services%2Ffhir%2Fresources%2FNamingSystem%2Fhippocrates-api--prescription%7C31002&encounter%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fatendimento%2F%7C55162&identifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fconduta%2F%7CC-9001&intent=proposal&patient=Patient%2Fba200cfa-dae0-46cf-81a0-008e3f7414b4&patient%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709&requester%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fprofissional%2F%7C5032932&status=completed&subject=Patient%2Fba200cfa-dae0-46cf-81a0-008e3f7414b4&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`, e a busca **mistura as três origens**.
Filtre por `intent` para separar a conduta, e pelo `system` do identificador para separar
pedido de exame de encaminhamento.

Busca sem resultados não é erro: volta `200` com um `Bundle` cujo `entry` é uma lista vazia.

### 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 solicitação, em `system\|value`                   | `ServiceRequest.identifier`           |
| `patient:identifier` · `subject:identifier` | [reference](https://hl7.org/fhir/R4/search.html#reference) | Paciente, pelo identificador dele                                  | `ServiceRequest.subject.identifier`   |
| `patient` · `subject`                       | [reference](https://hl7.org/fhir/R4/search.html#reference) | Paciente, pelo `id` Nilo FHIR dele                                 | `ServiceRequest.subject`              |
| `intent`                                    | [token](https://hl7.org/fhir/R4/search.html#token)         | `order` ou `proposal`                                              | `ServiceRequest.intent`               |
| `status`                                    | [token](https://hl7.org/fhir/R4/search.html#token)         | Situação, com o vocabulário da origem                              | `ServiceRequest.status`               |
| `requester:identifier`                      | [reference](https://hl7.org/fhir/R4/search.html#reference) | Profissional, pelo identificador dele                              | `ServiceRequest.requester.identifier` |
| `encounter:identifier`                      | [reference](https://hl7.org/fhir/R4/search.html#reference) | Atendimento, pelo identificador dele                               | `ServiceRequest.encounter.identifier` |
| `based-on:identifier`                       | [reference](https://hl7.org/fhir/R4/search.html#reference) | Receita de origem do pedido de exame, pelo identificador dela      | `ServiceRequest.basedOn.identifier`   |
| `_lastUpdated`                              | [date](https://hl7.org/fhir/R4/search.html#date)           | Data da última gravação no store, com os prefixos `eq`, `ge`, `le` | —                                     |

> **Warning**
>
> **No pedido de exame, `encounter` e `based-on` só encontram com o modificador `:identifier`** —
> as duas referências saem sem o campo `reference`, e é nele que a forma sem modificador procura.
>
> O `subject`, esse, vem completo nas três origens: `patient` e `patient:identifier` funcionam
> igualmente.

> **Note**
>
> Os demais parâmetros canônicos do `ServiceRequest` existem e **não encontram nada**, porque a
> plataforma não preenche o campo correspondente: `authored` (exceto no encaminhamento),
> `body-site`, `instantiates-canonical`, `occurrence`, `performer`, `priority`, `replaces`,
> `requisition` e `specimen`.
>
> `code` e `category` são preenchidos no pedido de exame, mas com `coding` — então funcionam com
> o par `system|code`, não com o nome do exame.

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

**`Solicitação encontrada`**

```curl Solicitação encontrada
curl https://landing-zone-api.nilo.services/fhir/resources/ServiceRequest/id \
     -H "x-api-key: <apiKey>"
```

**`Solicitação encontrada`**

```python Solicitação encontrada
import requests

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

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

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

print(response.json())
```

**`Solicitação encontrada`**

```javascript Solicitação encontrada
const url = 'https://landing-zone-api.nilo.services/fhir/resources/ServiceRequest/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);
}
```

**`Solicitação encontrada`**

```go Solicitação encontrada
package main

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

func main() {

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

}
```

**`Solicitação encontrada`**

```ruby Solicitação encontrada
require 'uri'
require 'net/http'

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

**`Solicitação encontrada`**

```java Solicitação 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/ServiceRequest/id")
  .header("x-api-key", "<apiKey>")
  .asString();
```

**`Solicitação encontrada`**

```php Solicitação encontrada
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

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

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

**`Solicitação encontrada`**

```csharp Solicitação encontrada
using RestSharp;

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

**`Solicitação encontrada`**

```swift Solicitação encontrada
import Foundation

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

let request = NSMutableURLRequest(url: NSURL(string: "https://landing-zone-api.nilo.services/fhir/resources/ServiceRequest/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 solicitação está em
> `resource`.

### Response (200)

```json
{
  "fullUrl": "https://landing-zone-api.nilo.services/fhir/resources/ServiceRequest/2b8e4f19-a075-4c63-9d81-5e06f3a2c748",
  "resource": {
    "resourceType": "ServiceRequest",
    "identifier": [
      {
        "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/hippocrates-api--exam-request",
        "value": "40218",
        "use": "usual"
      }
    ],
    "status": "completed",
    "intent": "order",
    "subject": {
      "identifier": {
        "system": "https://www.acmesaude.com.br/integracao/paciente/",
        "value": "507823709",
        "use": "usual"
      },
      "reference": "Patient/ba200cfa-dae0-46cf-81a0-008e3f7414b4",
      "type": "Patient"
    },
    "id": "2b8e4f19-a075-4c63-9d81-5e06f3a2c748",
    "meta": {
      "lastUpdated": "2026-04-16T18:22:41.330000Z",
      "versionId": "MTc4NjAyMTQ1MjkwNTAwMDM2Nw"
    },
    "code": {
      "coding": [
        {
          "code": "40304361",
          "system": "https://fhir.ans.gov.br/CodeSystem/tuss-63"
        }
      ]
    }
  },
  "search": {
    "mode": "match"
  }
}
```

## Erros

Recusa é `400`, e o corpo é um `OperationOutcome` — **exceto** quando o `intent` não é
`proposal`, caso em que a chamada falha com `500` e sem corpo tratável.

| `code`          | `expression`                | Mensagem                                                                                                     | Quando                                                                                                                                       |
| --------------- | --------------------------- | ------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------- |
| `required`      | `ServiceRequest.identifier` | `Field is required`                                                                                          | O payload não tem `identifier`                                                                                                               |
| `business-rule` | `ServiceRequest.identifier` | `Unable to use any of the provided identifiers to match an existing resource, which can lead to duplicates.` | Há `identifier`, mas nenhum utilizável                                                                                                       |
| `not-found`     | `ServiceRequest.subject`    | `Patient does not exist`                                                                                     | O `subject.identifier` não resolve para um paciente do seu ambiente — **ou o `subject` veio sem `identifier`**, que sai com a mesma mensagem |
| `invalid`       | `ServiceRequest.encounter`  | `Encounter's patient does not match the resource's patient`                                                  | O atendimento informado é de outro paciente                                                                                                  |
| `structure`     | —                           | `Resource has identifier from a Nilo environment that is not the current environment.`                       | O payload traz um identificador Nilo gerado em outro ambiente                                                                                |
| `exception`     | —                           | `TypeError: …`                                                                                               | A conduta veio sem `note`                                                                                                                    |

### Response (200)

```json
{
  "resourceType": "ServiceRequest",
  "identifier": [
    {
      "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/care-api--conduct-v2",
      "value": "77410",
      "use": "usual"
    },
    {
      "system": "https://www.acmesaude.com.br/integracao/conduta/",
      "value": "C-9001",
      "use": "usual"
    }
  ],
  "status": "completed",
  "intent": "proposal",
  "subject": {
    "identifier": {
      "system": "https://www.acmesaude.com.br/integracao/paciente/",
      "value": "507823709",
      "use": "usual"
    },
    "reference": "Patient/ba200cfa-dae0-46cf-81a0-008e3f7414b4",
    "type": "Patient"
  },
  "id": "e5028a71-3c94-4d16-b0a7-62d3f9814c05",
  "meta": {
    "lastUpdated": "2026-04-17T09:41:20.118000Z",
    "versionId": "MTc4NjAyMTQ1MjkwNTAwMDM5NQ"
  },
  "note": [
    {
      "text": "Retorno em 15 dias."
    },
    {
      "text": "Oriento sinais de alarme."
    }
  ],
  "encounter": {
    "identifier": {
      "system": "https://www.acmesaude.com.br/integracao/atendimento/",
      "value": "55162",
      "use": "usual"
    },
    "type": "Encounter"
  }
}
```

> **Warning**
>
> Um `POST` com `intent` diferente de `proposal` **não devolve nenhum dos erros acima**: a
> chamada falha com erro inesperado do servidor (`500`), sem `OperationOutcome`. Não escreva
> tratamento em cima desse comportamento — ele não é contrato, e nada é gravado.
>
> Dentro de uma [carga em lote](https://hl7.org/fhir/R4/http.html#transaction) o erro é limpo:
> a entrada é recusada com `Resource ServiceRequest not supported`.

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

* **escrever pedido de exame ou encaminhamento** — só a conduta é gravável;
* se o exame foi **realizado**, e o resultado dele;
* a **receita** que agrupa os pedidos, como recurso próprio;
* a distinção entre **conduta** e **história clínica** dentro de `note[]` do encaminhamento;
* o **autor** e a **data** da conduta.

Para as condutas de um atendimento reunidas num recurso só, veja
[Conduta](/guia/recursos/requestgroup); para as condutas registradas como condição,
[Condição](/guia/recursos/condition); para o procedimento em si,
[Procedimento](/guia/recursos/procedure).