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

# Pronto atendimento

> Registrar, atualizar e buscar passagens por pronto atendimento no padrão FHIR Encounter, com local e diagnósticos vinculados.

Um pronto atendimento é a passagem do paciente por um serviço de urgência — quando entrou,
quando saiu, onde, com qual profissional e por qual diagnóstico. Não é um atendimento do
prontuário: é um **evento** que aparece na linha do tempo do paciente, ao lado da
[hospitalização](/guia/recursos/encounter-hospitalization), e serve para a equipe saber o que
aconteceu com o paciente fora do cuidado que ela presta.

No FHIR ele é um [`Encounter`](https://hl7.org/fhir/R4/encounter.html) com `class.code`
**`EMER`**, e é esse código que faz a Nilo criar um pronto atendimento em vez de um
atendimento. No NiloCare o registro aparece em **Eventos**, com
**Evento: Pronto atendimento**.

> **Note**
>
> As regras desta página valem igualmente para a
> [hospitalização](/guia/recursos/encounter-hospitalization) — os dois são eventos e só se
> distinguem pelo `class.code`. Elas são bem diferentes das dos
> [atendimentos](/guia/recursos/encounter) `VR` e `AMB`: aqui o `identifier` é obrigatório, o
> `status` é calculado pela plataforma, e nenhum agendamento é criado.

## Campos

| Campo                          | Obrigatório       | O que significa                                                                 | No NiloCare                            |
| ------------------------------ | ----------------- | ------------------------------------------------------------------------------- | -------------------------------------- |
| `identifier`                   | **sim**           | Chaves do evento. É por aqui que a API decide entre criar e atualizar           | —                                      |
| `class`                        | **sim**           | Tem de ser `EMER`. É o que distingue o pronto atendimento                       | **Evento: Pronto atendimento**         |
| `status`                       | **sim** pelo FHIR | Aceito e **descartado**: a plataforma calcula o estado a partir de `period.end` | —                                      |
| `subject`                      | **sim**           | O paciente atendido, por um identificador dele já cadastrado                    | —                                      |
| `period.start`                 | **sim**           | Data de entrada                                                                 | **Data de entrada** / **Data entrada** |
| `period.end`                   | não               | Data de saída. Ausente, a passagem é tratada como em andamento                  | **Data de saída** / **Data saída**     |
| `participant[].individual`     | não               | O profissional, por um identificador dele. `type` tem de ser `Practitioner`     | **Profissional**                       |
| `location[0].location.display` | não               | Onde o atendimento de urgência aconteceu, como texto livre                      | **Local**                              |
| `diagnosis[].condition`        | não               | Condições **já cadastradas** a vincular ao evento                               | **Diagnóstico**                        |
| `id`                           | não               | Só resposta: o identificador Nilo FHIR do recurso                               | —                                      |
| `meta`                         | não               | Só resposta: metadados da gravação                                              | —                                      |

### Campos que a Nilo não usa

`participant[].type`, `appointment`, `length` e as extensões de origem, canal e desfecho **não
são lidos** num evento — são campos dos [atendimentos](/guia/recursos/encounter). O
`Encounter` canônico traz ainda `type`, `serviceType`, `priority`, `episodeOfCare`, `basedOn`,
`reasonCode`, `reasonReference`, `account`, `hospitalization`, `serviceProvider`, `partOf`,
`classHistory` e `statusHistory`, nenhum deles lido nem gravado. Enviá-los não é recusado — o
valor fica no recurso FHIR e volta nas leituras —, mas nada no NiloCare passa a exibi-los.

> **Note**
>
> O campo **Referido por** da tela de eventos não tem representação FHIR. Todo pronto
> atendimento escrito por esta API entra como **Outros**, e uma atualização redefine o valor que
> a equipe tiver marcado na tela.

## Cadastrar ou atualizar

Não há endpoint separado para criar e atualizar. O mesmo `POST` faz os dois, e quem decide é
o `identifier`.

### Request

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

**`Pronto atendimento`**

```curl Pronto atendimento
curl -X POST https://landing-zone-api.nilo.services/fhir/resources/Encounter \
     -H "x-api-key: <apiKey>" \
     -H "Content-Type: application/json" \
     -d '{
  "class": {
    "code": "EMER",
    "display": "emergency",
    "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode"
  },
  "period": {
    "start": "2026-01-17T16:00:00+00:00",
    "end": "2026-01-17T20:30:00+00:00"
  },
  "resourceType": "Encounter",
  "status": "finished",
  "subject": {
    "identifier": {
      "system": "https://www.acmesaude.com.br/integracao/paciente/",
      "value": "507823709",
      "use": "usual"
    },
    "type": "Patient"
  },
  "identifier": [
    {
      "system": "https://www.acmesaude.com.br/integracao/evento/",
      "value": "1129",
      "use": "usual"
    }
  ],
  "location": [
    {
      "location": {
        "display": "UPA Central de Exemplo"
      }
    }
  ]
}'
```

**`Pronto atendimento`**

```python Pronto atendimento
import requests

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

payload = {
    "class": {
        "code": "EMER",
        "display": "emergency",
        "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode"
    },
    "period": {
        "start": "2026-01-17T16:00:00+00:00",
        "end": "2026-01-17T20:30:00+00:00"
    },
    "resourceType": "Encounter",
    "status": "finished",
    "subject": {
        "identifier": {
            "system": "https://www.acmesaude.com.br/integracao/paciente/",
            "value": "507823709",
            "use": "usual"
        },
        "type": "Patient"
    },
    "identifier": [
        {
            "system": "https://www.acmesaude.com.br/integracao/evento/",
            "value": "1129",
            "use": "usual"
        }
    ],
    "location": [{ "location": { "display": "UPA Central de Exemplo" } }]
}
headers = {
    "x-api-key": "<apiKey>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

**`Pronto atendimento`**

```javascript Pronto atendimento
const url = 'https://landing-zone-api.nilo.services/fhir/resources/Encounter';
const options = {
  method: 'POST',
  headers: {'x-api-key': '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"class":{"code":"EMER","display":"emergency","system":"http://terminology.hl7.org/CodeSystem/v3-ActCode"},"period":{"start":"2026-01-17T16:00:00+00:00","end":"2026-01-17T20:30:00+00:00"},"resourceType":"Encounter","status":"finished","subject":{"identifier":{"system":"https://www.acmesaude.com.br/integracao/paciente/","value":"507823709","use":"usual"},"type":"Patient"},"identifier":[{"system":"https://www.acmesaude.com.br/integracao/evento/","value":"1129","use":"usual"}],"location":[{"location":{"display":"UPA Central de Exemplo"}}]}'
};

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

**`Pronto atendimento`**

```go Pronto atendimento
package main

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

func main() {

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

	payload := strings.NewReader("{\n  \"class\": {\n    \"code\": \"EMER\",\n    \"display\": \"emergency\",\n    \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ActCode\"\n  },\n  \"period\": {\n    \"start\": \"2026-01-17T16:00:00+00:00\",\n    \"end\": \"2026-01-17T20:30:00+00:00\"\n  },\n  \"resourceType\": \"Encounter\",\n  \"status\": \"finished\",\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  \"identifier\": [\n    {\n      \"system\": \"https://www.acmesaude.com.br/integracao/evento/\",\n      \"value\": \"1129\",\n      \"use\": \"usual\"\n    }\n  ],\n  \"location\": [\n    {\n      \"location\": {\n        \"display\": \"UPA Central de Exemplo\"\n      }\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))

}
```

**`Pronto atendimento`**

```ruby Pronto atendimento
require 'uri'
require 'net/http'

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

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  \"class\": {\n    \"code\": \"EMER\",\n    \"display\": \"emergency\",\n    \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ActCode\"\n  },\n  \"period\": {\n    \"start\": \"2026-01-17T16:00:00+00:00\",\n    \"end\": \"2026-01-17T20:30:00+00:00\"\n  },\n  \"resourceType\": \"Encounter\",\n  \"status\": \"finished\",\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  \"identifier\": [\n    {\n      \"system\": \"https://www.acmesaude.com.br/integracao/evento/\",\n      \"value\": \"1129\",\n      \"use\": \"usual\"\n    }\n  ],\n  \"location\": [\n    {\n      \"location\": {\n        \"display\": \"UPA Central de Exemplo\"\n      }\n    }\n  ]\n}"

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

**`Pronto atendimento`**

```java Pronto 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/Encounter")
  .header("x-api-key", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"class\": {\n    \"code\": \"EMER\",\n    \"display\": \"emergency\",\n    \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ActCode\"\n  },\n  \"period\": {\n    \"start\": \"2026-01-17T16:00:00+00:00\",\n    \"end\": \"2026-01-17T20:30:00+00:00\"\n  },\n  \"resourceType\": \"Encounter\",\n  \"status\": \"finished\",\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  \"identifier\": [\n    {\n      \"system\": \"https://www.acmesaude.com.br/integracao/evento/\",\n      \"value\": \"1129\",\n      \"use\": \"usual\"\n    }\n  ],\n  \"location\": [\n    {\n      \"location\": {\n        \"display\": \"UPA Central de Exemplo\"\n      }\n    }\n  ]\n}")
  .asString();
```

**`Pronto atendimento`**

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

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://landing-zone-api.nilo.services/fhir/resources/Encounter', [
  'body' => '{
  "class": {
    "code": "EMER",
    "display": "emergency",
    "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode"
  },
  "period": {
    "start": "2026-01-17T16:00:00+00:00",
    "end": "2026-01-17T20:30:00+00:00"
  },
  "resourceType": "Encounter",
  "status": "finished",
  "subject": {
    "identifier": {
      "system": "https://www.acmesaude.com.br/integracao/paciente/",
      "value": "507823709",
      "use": "usual"
    },
    "type": "Patient"
  },
  "identifier": [
    {
      "system": "https://www.acmesaude.com.br/integracao/evento/",
      "value": "1129",
      "use": "usual"
    }
  ],
  "location": [
    {
      "location": {
        "display": "UPA Central de Exemplo"
      }
    }
  ]
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'x-api-key' => '<apiKey>',
  ],
]);

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

**`Pronto atendimento`**

```csharp Pronto atendimento
using RestSharp;

var client = new RestClient("https://landing-zone-api.nilo.services/fhir/resources/Encounter");
var request = new RestRequest(Method.POST);
request.AddHeader("x-api-key", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"class\": {\n    \"code\": \"EMER\",\n    \"display\": \"emergency\",\n    \"system\": \"http://terminology.hl7.org/CodeSystem/v3-ActCode\"\n  },\n  \"period\": {\n    \"start\": \"2026-01-17T16:00:00+00:00\",\n    \"end\": \"2026-01-17T20:30:00+00:00\"\n  },\n  \"resourceType\": \"Encounter\",\n  \"status\": \"finished\",\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  \"identifier\": [\n    {\n      \"system\": \"https://www.acmesaude.com.br/integracao/evento/\",\n      \"value\": \"1129\",\n      \"use\": \"usual\"\n    }\n  ],\n  \"location\": [\n    {\n      \"location\": {\n        \"display\": \"UPA Central de Exemplo\"\n      }\n    }\n  ]\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

**`Pronto atendimento`**

```swift Pronto atendimento
import Foundation

let headers = [
  "x-api-key": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "class": [
    "code": "EMER",
    "display": "emergency",
    "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode"
  ],
  "period": [
    "start": "2026-01-17T16:00:00+00:00",
    "end": "2026-01-17T20:30:00+00:00"
  ],
  "resourceType": "Encounter",
  "status": "finished",
  "subject": [
    "identifier": [
      "system": "https://www.acmesaude.com.br/integracao/paciente/",
      "value": "507823709",
      "use": "usual"
    ],
    "type": "Patient"
  ],
  "identifier": [
    [
      "system": "https://www.acmesaude.com.br/integracao/evento/",
      "value": "1129",
      "use": "usual"
    ]
  ],
  "location": [["location": ["display": "UPA Central de Exemplo"]]]
] as [String : Any]

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

let request = NSMutableURLRequest(url: NSURL(string: "https://landing-zone-api.nilo.services/fhir/resources/Encounter")! 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 devolve o recurso como ficou gravado:

### Response (200)

```json
{
  "class": {
    "code": "EMER",
    "display": "emergency",
    "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode"
  },
  "period": {
    "start": "2026-01-17T16:00:00+00:00",
    "end": "2026-01-17T20:30:00+00:00"
  },
  "resourceType": "Encounter",
  "status": "finished",
  "subject": {
    "identifier": {
      "system": "https://www.acmesaude.com.br/integracao/paciente/",
      "value": "507823709",
      "use": "usual"
    },
    "type": "Patient",
    "reference": "Patient/ba200cfa-dae0-46cf-81a0-008e3f7414b4"
  },
  "id": "3f8a1c47-9e2b-4d16-8a53-7c0e94b2f6d1",
  "meta": {
    "lastUpdated": "2026-01-17T20:31:08.117000Z",
    "versionId": "MTc4NjAyMTQ1MjkwNTAwMDM2Nw"
  },
  "identifier": [
    {
      "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/hippocrates-api--medical-emergency",
      "value": "2140",
      "use": "usual"
    },
    {
      "system": "https://www.acmesaude.com.br/integracao/evento/",
      "value": "1127",
      "use": "usual"
    }
  ],
  "location": [
    {
      "location": {
        "display": "UPA Central de Exemplo"
      }
    }
  ],
  "diagnosis": [
    {
      "condition": {
        "identifier": {
          "system": "https://www.acmesaude.com.br/integracao/diagnostico/",
          "value": "1683",
          "use": "usual"
        },
        "type": "Condition",
        "reference": "Condition/c61b5f58-32b0-477b-b75a-54e306952082"
      }
    }
  ]
}
```

Guarde o `id`: é por ele que se faz a leitura direta. A resposta traz também o identificador
Nilo do pronto atendimento ao lado do seu, no `system`:

```
{host}/fhir/resources/NamingSystem/hippocrates-api--medical-emergency
```

> **Warning**
>
> O `identifier` é **obrigatório** e a escrita é recusada sem ele.
>
> Use um namespace de identificador só para eventos. Reaproveitar num evento um `system` +
> `value` já usado noutro tipo de registro faz a atualização falhar com
> `Could not find … identifier for Encounter`, porque a API acha o recurso mas não o evento.

**`Resposta 400 — Evento sem identificador`**

```json title="Resposta 400 — Evento sem identificador"
{
  "resourceType": "OperationOutcome",
  "issue": [
    {
      "severity": "error",
      "code": "exception",
      "details": {
        "text": "ValueError: Identifier is mandatory"
      }
    }
  ]
}
```

> **Warning**
>
> A atualização **substitui**, não complementa. Um campo omitido **não** preserva o valor atual:
> omitir `location` apaga o local, omitir `participant` apaga o profissional, omitir `period.end`
> volta a passagem para em andamento. Para mudar um campo só, reenvie o evento inteiro com o
> valor novo.
>
> A exceção é `diagnosis`, que só adiciona — veja [Diagnósticos](#diagnosticos).

### Entrada, saída e estado

`period.start` é a data de entrada e é obrigatório. `period.end` é a data de saída, opcional,
e quando enviado tem de ser **maior** que `period.start`.

O `status` funciona de forma diferente dos atendimentos: o FHIR R4 exige o campo, mas o valor
que você envia é **descartado**. A plataforma calcula o estado a partir de `period.end`:

| `period.end`          | `status` nas leituras |
| --------------------- | --------------------- |
| ausente, ou no futuro | `in-progress`         |
| no passado            | `finished`            |

Uma passagem em andamento, portanto, é simplesmente uma sem data de saída. Para encerrá-la,
reenvie o mesmo `identifier` com o `period.end` preenchido.

> **Warning**
>
> O `status` que você enviou continua no recurso FHIR e volta na leitura imediatamente seguinte
> — inclusive um `cancelled` ou um `planned`, que não têm significado aqui. O valor calculado
> pela plataforma só aparece na próxima vez que o evento mudar por lá, e aí **substitui** o seu.
> Reler o recurso logo depois do `POST` não confirma o estado real: use a tabela acima.

### Profissional

O profissional vai em `participant[].individual`, e a referência precisa ter
`type: "Practitioner"`:

```json
{
  "participant": [
    {
      "individual": {
        "type": "Practitioner",
        "identifier": { "system": "…", "value": "…" }
      }
    }
  ]
}
```

O `participant[].type` — o `CodeableConcept` do papel, com `ATND` — **não é lido** num evento.
Mandá-lo não é erro, só não tem efeito.

> **Warning**
>
> Um profissional que não casa com nenhum cadastro é **descartado em silêncio**: o evento é
> gravado sem profissional e a chamada responde `200`. Diferente dos
> [atendimentos](/guia/recursos/encounter), aqui não há erro. Confira o identificador do
> profissional antes de uma carga de eventos — a resposta não avisa.

> **Note**
>
> Um item de `participant` **sem** `individual`, ou com `individual.type` diferente de
> `Practitioner`, também não é lido — e o primeiro caso faz a escrita falhar com um erro
> genérico. Não mande `participant` vazio.

### Local

O local é **texto livre**, em `location[0].location.display`. Apenas o primeiro item da lista
é lido:

```json
{ "location": [ { "location": { "display": "UPA Central de Exemplo" } } ] }
```

> **Note**
>
> Por compatibilidade, um `location[0].location.identifier` apontando para um
> [local de atendimento](/guia/recursos/location) já cadastrado também é aceito, e o
> **nome** daquele local é gravado como texto. Não há vínculo: alterar o local depois não muda o
> que ficou no evento. Prefira `display`.

**`Resposta 400 — Local do evento não encontrado`**

```json title="Resposta 400 — Local do evento não encontrado"
{
  "resourceType": "OperationOutcome",
  "issue": [
    {
      "severity": "error",
      "code": "exception",
      "details": {
        "text": "ValueError: Could not find Location"
      }
    }
  ]
}
```

> **Note**
>
> `location` é opcional, mas um `location[0].location` **vazio** — sem `display` e sem
> `identifier` — faz a escrita falhar com um erro genérico. Ou mande o campo preenchido, ou não
> mande `location`.

### Diagnósticos

`diagnosis` vincula ao pronto atendimento condições **que já existem**. Cada item aponta para
uma [Condição](/guia/recursos/condition) por um identificador dela — este campo não a cria:

**`Requisição — Pronto atendimento com diagnóstico`**

```json title="Requisição — Pronto atendimento com diagnóstico"
{
  "resourceType": "Encounter",
  "identifier": [
    {
      "use": "usual",
      "system": "https://www.acmesaude.com.br/integracao/evento/",
      "value": "1127"
    }
  ],
  "status": "finished",
  "class": {
    "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode",
    "code": "EMER",
    "display": "emergency"
  },
  "subject": {
    "type": "Patient",
    "identifier": {
      "use": "usual",
      "system": "https://www.acmesaude.com.br/integracao/paciente/",
      "value": "507823709"
    }
  },
  "location": [
    {
      "location": {
        "display": "UPA Central de Exemplo"
      }
    }
  ],
  "diagnosis": [
    {
      "condition": {
        "type": "Condition",
        "identifier": {
          "use": "usual",
          "system": "https://www.acmesaude.com.br/integracao/diagnostico/",
          "value": "1683"
        }
      }
    }
  ],
  "period": {
    "start": "2026-01-17T16:00:00+00:00",
    "end": "2026-01-17T20:30:00+00:00"
  }
}
```

**`Resposta 400 — Condição do diagnóstico não encontrada`**

```json title="Resposta 400 — Condição do diagnóstico não encontrada"
{
  "resourceType": "OperationOutcome",
  "issue": [
    {
      "severity": "error",
      "code": "exception",
      "details": {
        "text": "ValueError: Could not find Condition system='https://www.acmesaude.com.br/integracao/diagnostico/' value='1683' in FHIR store"
      }
    }
  ]
}
```

Para criar a condição e o pronto atendimento na mesma chamada, mande os dois num `Bundle` do
tipo `transaction` e referencie a condição pelo `fullUrl` da entrada dela.

> **Warning**
>
> Uma condição pertence a **um** evento. Referenciar uma condição já vinculada a outro evento é
> recusado — e a recusa chega **depois** de o pronto atendimento ter sido criado na plataforma.
>
> O resultado é uma escrita parcial ruim: o evento existe na Nilo, mas o recurso FHIR **não** foi
> criado, então o seu `identifier` não encontra nada no store. Um reenvio do mesmo payload não
> atualiza o evento — cria um **segundo** pronto atendimento. Trate este `400` como duplicação a
> resolver, não como retry seguro: confira o vínculo da condição e o evento já criado antes de
> reenviar.

**`Resposta 400 — Condição já vinculada a outro evento`**

```json title="Resposta 400 — Condição já vinculada a outro evento"
{
  "resourceType": "OperationOutcome",
  "issue": [
    {
      "severity": "error",
      "code": "exception",
      "details": {
        "text": "ValueError: Condition 1683 already linked to another Hospitalization"
      }
    }
  ]
}
```

> **Note**
>
> `diagnosis` só adiciona. Remover um item do payload não desfaz o vínculo da condição com o
> evento, e reenviar uma condição já vinculada àquele mesmo pronto atendimento não é erro — é
> uma operação sem efeito.

### Paciente

`subject` é obrigatório, e o paciente tem de existir no cadastro:

**`Resposta 400 — Evento com paciente não encontrado`**

```json title="Resposta 400 — Evento com paciente não encontrado"
{
  "resourceType": "OperationOutcome",
  "issue": [
    {
      "severity": "error",
      "code": "exception",
      "details": {
        "text": "ValueError: Could not find Patient in subject"
      }
    }
  ]
}
```

Um evento não cria paciente. Cadastre o [Paciente](/guia/recursos/patient) primeiro.

## Buscar

### Request

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

**`Busca de atendimentos com resultados`**

```curl Busca de atendimentos com resultados
curl -G https://landing-zone-api.nilo.services/fhir/resources/Encounter \
     -H "x-api-key: <apiKey>" \
     -d _lastUpdated=eq2013-01-14 \
     --data-urlencode class=http://terminology.hl7.org/CodeSystem/v3-ActCode|VR \
     -d date=ge2026-04-01 \
     --data-urlencode diagnosis=Condition/c61b5f58-32b0-477b-b75a-54e306952082 \
     --data-urlencode identifier=https://www.acmesaude.com.br/integracao/atendimento/|55162 \
     --data-urlencode participant=Practitioner/1a9c7f52-64b8-4a3e-8d21-9f0b7c4e6d38 \
     --data-urlencode participant-type=http://terminology.hl7.org/CodeSystem/v3-ParticipationType|ATND \
     --data-urlencode patient=Patient/ba200cfa-dae0-46cf-81a0-008e3f7414b4 \
     --data-urlencode patient:identifier=https://www.acmesaude.com.br/integracao/paciente/|507823709 \
     --data-urlencode practitioner=Practitioner/1a9c7f52-64b8-4a3e-8d21-9f0b7c4e6d38 \
     -d status=finished \
     --data-urlencode subject=Patient/ba200cfa-dae0-46cf-81a0-008e3f7414b4
```

**`Busca de atendimentos com resultados`**

```python Busca de atendimentos com resultados
import requests

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

querystring = {"_lastUpdated":"[\"eq2013-01-14\"]","class":"http://terminology.hl7.org/CodeSystem/v3-ActCode|VR","date":"[\"ge2026-04-01\"]","diagnosis":"Condition/c61b5f58-32b0-477b-b75a-54e306952082","identifier":"https://www.acmesaude.com.br/integracao/atendimento/|55162","participant":"Practitioner/1a9c7f52-64b8-4a3e-8d21-9f0b7c4e6d38","participant-type":"http://terminology.hl7.org/CodeSystem/v3-ParticipationType|ATND","patient":"Patient/ba200cfa-dae0-46cf-81a0-008e3f7414b4","patient:identifier":"https://www.acmesaude.com.br/integracao/paciente/|507823709","practitioner":"Practitioner/1a9c7f52-64b8-4a3e-8d21-9f0b7c4e6d38","status":"finished","subject":"Patient/ba200cfa-dae0-46cf-81a0-008e3f7414b4"}

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

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

print(response.json())
```

**`Busca de atendimentos com resultados`**

```javascript Busca de atendimentos com resultados
const url = 'https://landing-zone-api.nilo.services/fhir/resources/Encounter?_lastUpdated=%5B%22eq2013-01-14%22%5D&class=http%3A%2F%2Fterminology.hl7.org%2FCodeSystem%2Fv3-ActCode%7CVR&date=%5B%22ge2026-04-01%22%5D&diagnosis=Condition%2Fc61b5f58-32b0-477b-b75a-54e306952082&identifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fatendimento%2F%7C55162&participant=Practitioner%2F1a9c7f52-64b8-4a3e-8d21-9f0b7c4e6d38&participant-type=http%3A%2F%2Fterminology.hl7.org%2FCodeSystem%2Fv3-ParticipationType%7CATND&patient=Patient%2Fba200cfa-dae0-46cf-81a0-008e3f7414b4&patient%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709&practitioner=Practitioner%2F1a9c7f52-64b8-4a3e-8d21-9f0b7c4e6d38&status=finished&subject=Patient%2Fba200cfa-dae0-46cf-81a0-008e3f7414b4';
const options = {method: 'GET', headers: {'x-api-key': '<apiKey>'}};

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

**`Busca de atendimentos com resultados`**

```go Busca de atendimentos com resultados
package main

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

func main() {

	url := "https://landing-zone-api.nilo.services/fhir/resources/Encounter?_lastUpdated=%5B%22eq2013-01-14%22%5D&class=http%3A%2F%2Fterminology.hl7.org%2FCodeSystem%2Fv3-ActCode%7CVR&date=%5B%22ge2026-04-01%22%5D&diagnosis=Condition%2Fc61b5f58-32b0-477b-b75a-54e306952082&identifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fatendimento%2F%7C55162&participant=Practitioner%2F1a9c7f52-64b8-4a3e-8d21-9f0b7c4e6d38&participant-type=http%3A%2F%2Fterminology.hl7.org%2FCodeSystem%2Fv3-ParticipationType%7CATND&patient=Patient%2Fba200cfa-dae0-46cf-81a0-008e3f7414b4&patient%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709&practitioner=Practitioner%2F1a9c7f52-64b8-4a3e-8d21-9f0b7c4e6d38&status=finished&subject=Patient%2Fba200cfa-dae0-46cf-81a0-008e3f7414b4"

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

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

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

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

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

}
```

**`Busca de atendimentos com resultados`**

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

url = URI("https://landing-zone-api.nilo.services/fhir/resources/Encounter?_lastUpdated=%5B%22eq2013-01-14%22%5D&class=http%3A%2F%2Fterminology.hl7.org%2FCodeSystem%2Fv3-ActCode%7CVR&date=%5B%22ge2026-04-01%22%5D&diagnosis=Condition%2Fc61b5f58-32b0-477b-b75a-54e306952082&identifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fatendimento%2F%7C55162&participant=Practitioner%2F1a9c7f52-64b8-4a3e-8d21-9f0b7c4e6d38&participant-type=http%3A%2F%2Fterminology.hl7.org%2FCodeSystem%2Fv3-ParticipationType%7CATND&patient=Patient%2Fba200cfa-dae0-46cf-81a0-008e3f7414b4&patient%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709&practitioner=Practitioner%2F1a9c7f52-64b8-4a3e-8d21-9f0b7c4e6d38&status=finished&subject=Patient%2Fba200cfa-dae0-46cf-81a0-008e3f7414b4")

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

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

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

**`Busca de atendimentos com resultados`**

```java Busca de atendimentos 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/Encounter?_lastUpdated=%5B%22eq2013-01-14%22%5D&class=http%3A%2F%2Fterminology.hl7.org%2FCodeSystem%2Fv3-ActCode%7CVR&date=%5B%22ge2026-04-01%22%5D&diagnosis=Condition%2Fc61b5f58-32b0-477b-b75a-54e306952082&identifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fatendimento%2F%7C55162&participant=Practitioner%2F1a9c7f52-64b8-4a3e-8d21-9f0b7c4e6d38&participant-type=http%3A%2F%2Fterminology.hl7.org%2FCodeSystem%2Fv3-ParticipationType%7CATND&patient=Patient%2Fba200cfa-dae0-46cf-81a0-008e3f7414b4&patient%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709&practitioner=Practitioner%2F1a9c7f52-64b8-4a3e-8d21-9f0b7c4e6d38&status=finished&subject=Patient%2Fba200cfa-dae0-46cf-81a0-008e3f7414b4")
  .header("x-api-key", "<apiKey>")
  .asString();
```

**`Busca de atendimentos com resultados`**

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

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://landing-zone-api.nilo.services/fhir/resources/Encounter?_lastUpdated=%5B%22eq2013-01-14%22%5D&class=http%3A%2F%2Fterminology.hl7.org%2FCodeSystem%2Fv3-ActCode%7CVR&date=%5B%22ge2026-04-01%22%5D&diagnosis=Condition%2Fc61b5f58-32b0-477b-b75a-54e306952082&identifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fatendimento%2F%7C55162&participant=Practitioner%2F1a9c7f52-64b8-4a3e-8d21-9f0b7c4e6d38&participant-type=http%3A%2F%2Fterminology.hl7.org%2FCodeSystem%2Fv3-ParticipationType%7CATND&patient=Patient%2Fba200cfa-dae0-46cf-81a0-008e3f7414b4&patient%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709&practitioner=Practitioner%2F1a9c7f52-64b8-4a3e-8d21-9f0b7c4e6d38&status=finished&subject=Patient%2Fba200cfa-dae0-46cf-81a0-008e3f7414b4', [
  'headers' => [
    'x-api-key' => '<apiKey>',
  ],
]);

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

**`Busca de atendimentos com resultados`**

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

var client = new RestClient("https://landing-zone-api.nilo.services/fhir/resources/Encounter?_lastUpdated=%5B%22eq2013-01-14%22%5D&class=http%3A%2F%2Fterminology.hl7.org%2FCodeSystem%2Fv3-ActCode%7CVR&date=%5B%22ge2026-04-01%22%5D&diagnosis=Condition%2Fc61b5f58-32b0-477b-b75a-54e306952082&identifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fatendimento%2F%7C55162&participant=Practitioner%2F1a9c7f52-64b8-4a3e-8d21-9f0b7c4e6d38&participant-type=http%3A%2F%2Fterminology.hl7.org%2FCodeSystem%2Fv3-ParticipationType%7CATND&patient=Patient%2Fba200cfa-dae0-46cf-81a0-008e3f7414b4&patient%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709&practitioner=Practitioner%2F1a9c7f52-64b8-4a3e-8d21-9f0b7c4e6d38&status=finished&subject=Patient%2Fba200cfa-dae0-46cf-81a0-008e3f7414b4");
var request = new RestRequest(Method.GET);
request.AddHeader("x-api-key", "<apiKey>");
IRestResponse response = client.Execute(request);
```

**`Busca de atendimentos com resultados`**

```swift Busca de atendimentos com resultados
import Foundation

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

let request = NSMutableURLRequest(url: NSURL(string: "https://landing-zone-api.nilo.services/fhir/resources/Encounter?_lastUpdated=%5B%22eq2013-01-14%22%5D&class=http%3A%2F%2Fterminology.hl7.org%2FCodeSystem%2Fv3-ActCode%7CVR&date=%5B%22ge2026-04-01%22%5D&diagnosis=Condition%2Fc61b5f58-32b0-477b-b75a-54e306952082&identifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fatendimento%2F%7C55162&participant=Practitioner%2F1a9c7f52-64b8-4a3e-8d21-9f0b7c4e6d38&participant-type=http%3A%2F%2Fterminology.hl7.org%2FCodeSystem%2Fv3-ParticipationType%7CATND&patient=Patient%2Fba200cfa-dae0-46cf-81a0-008e3f7414b4&patient%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709&practitioner=Practitioner%2F1a9c7f52-64b8-4a3e-8d21-9f0b7c4e6d38&status=finished&subject=Patient%2Fba200cfa-dae0-46cf-81a0-008e3f7414b4")! 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 busca é a mesma para atendimentos e eventos, porque os quatro tipos são o mesmo recurso
FHIR. Para trazer só os prontos atendimentos de um paciente, filtre por `class`:

```bash
curl --request GET \
  --url 'https://landing-zone-api.nilo.services/fhir/resources/Encounter?patient:identifier=https://www.acmesaude.com.br/integracao/paciente/|507823709&class=EMER' \
  --header 'x-api-key: SUA_API_KEY'
```

A resposta é sempre um `Bundle` do tipo `searchset`. Busca sem resultados volta `200` com um
`Bundle` cujo `entry` é uma lista vazia, não `404`.

### Parâmetros de busca suportados

| Nome                 | Tipo                                                       | Descrição                                             | Expressão                          |
| -------------------- | ---------------------------------------------------------- | ----------------------------------------------------- | ---------------------------------- |
| `identifier`         | [token](https://hl7.org/fhir/R4/search.html#token)         | Identificador do evento, em `system\|value`           | `Encounter.identifier`             |
| `patient:identifier` | [reference](https://hl7.org/fhir/R4/search.html#reference) | Paciente atendido, pelo identificador dele            | `Encounter.subject.identifier`     |
| `patient`            | [reference](https://hl7.org/fhir/R4/search.html#reference) | Paciente atendido, pelo `id` Nilo FHIR                | `Encounter.subject`                |
| `class`              | [token](https://hl7.org/fhir/R4/search.html#token)         | `EMER` para prontos atendimentos                      | `Encounter.class`                  |
| `status`             | [token](https://hl7.org/fhir/R4/search.html#token)         | `in-progress` ou `finished`                           | `Encounter.status`                 |
| `date`               | [date](https://hl7.org/fhir/R4/search.html#date)           | Período da passagem, com os prefixos `eq`, `ge`, `le` | `Encounter.period`                 |
| `practitioner`       | [reference](https://hl7.org/fhir/R4/search.html#reference) | Profissional do evento. Aceita `:identifier`          | `Encounter.participant.individual` |
| `diagnosis`          | [reference](https://hl7.org/fhir/R4/search.html#reference) | Condição vinculada. Aceita `:identifier`              | `Encounter.diagnosis.condition`    |

> **Warning**
>
> O parâmetro canônico `location` **não encontra nada**, apesar de o evento ter local: a Nilo
> grava o local como texto, e esse parâmetro casa por referência. Filtrar por local não é
> possível.
>
> E `participant-type` também não: o papel do participante não é gravado nos eventos.

## Ler por ID

### Request

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

**`Atendimento encontrado`**

```curl Atendimento encontrado
curl https://landing-zone-api.nilo.services/fhir/resources/Encounter/id \
     -H "x-api-key: <apiKey>"
```

**`Atendimento encontrado`**

```python Atendimento encontrado
import requests

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

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

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

print(response.json())
```

**`Atendimento encontrado`**

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

**`Atendimento encontrado`**

```go Atendimento encontrado
package main

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

func main() {

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

}
```

**`Atendimento encontrado`**

```ruby Atendimento encontrado
require 'uri'
require 'net/http'

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

**`Atendimento encontrado`**

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

**`Atendimento encontrado`**

```php Atendimento encontrado
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

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

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

**`Atendimento encontrado`**

```csharp Atendimento encontrado
using RestSharp;

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

**`Atendimento encontrado`**

```swift Atendimento encontrado
import Foundation

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

let request = NSMutableURLRequest(url: NSURL(string: "https://landing-zone-api.nilo.services/fhir/resources/Encounter/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()
```

A leitura por ID responde `404` quando o `id` não existe.

> **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 o evento está em
> `resource`. Ler `status` ou `identifier` na raiz da resposta não encontra nada.

## Valores aceitos

`class.code` tem de ser **`EMER`**, no `system`
`http://terminology.hl7.org/CodeSystem/v3-ActCode`, com `display` `emergency`. É o código do
vocabulário [`v3-ActEncounterCode`](http://terminology.hl7.org/CodeSystem/v3-ActCode) para
atendimento de urgência.

Os outros códigos aceitos pela API são `IMP`
([hospitalização](/guia/recursos/encounter-hospitalization)) e `VR`/`AMB`
([atendimentos](/guia/recursos/encounter)). Qualquer outro é recusado:

**`Resposta 400 — Classe de atendimento não suportada`**

```json title="Resposta 400 — Classe de atendimento não suportada"
{
  "errors": "Encounter class SS is not supported"
}
```

`status` aceita os nove códigos do FHIR R4 no envio, e nenhum tem efeito. Nas leituras só
`in-progress` e `finished` aparecem.

## Efeitos colaterais

> **Warning**
>
> Vincular uma condição por `diagnosis` **altera a condição**: ela passa a pertencer a este
> pronto atendimento, e esta API não desfaz o vínculo. Isso é visível na página da
> [Condição](/guia/recursos/condition).

> **Warning**
>
> Uma condição já vinculada a outro evento cria o pronto atendimento **sem** gravar o recurso
> FHIR. Veja [Diagnósticos](#diagnosticos).

> **Note**
>
> Nenhum agendamento é criado. Esse efeito é exclusivo dos
> [atendimentos](/guia/recursos/encounter) `VR` e `AMB`.

> **Note**
>
> Este endpoint não remove eventos: a escrita nunca responde `204`. A remoção acontece do lado
> da plataforma e é propagada para o store FHIR pela sincronização.

## Erros

Recusa é `400`, e o outro código que este endpoint devolve é `429`, quando o limite de escrita
do tipo de recurso é atingido.

> **Warning**
>
> Nos eventos as validações chegam **sem `expression`** e com o `code` genérico `exception`, e o
> `details.text` traz um prefixo técnico (`ValueError: …`). Trate esses erros pela menção no
> texto, não pelo `code` nem pelo `expression`.
>
> E a mesma condição sai com mensagens diferentes conforme o tipo: o paciente não encontrado é
> `Could not find Patient in subject` aqui e
> `Patient with identifier … does not exist or is not active` nos
> [atendimentos](/guia/recursos/encounter).

| Mensagem                                    | O que significa                                                                                                                                        |
| ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `Identifier is mandatory`                   | O payload não trouxe `identifier`                                                                                                                      |
| `Could not find Patient in subject`         | O identificador de `subject` não casou com nenhum paciente                                                                                             |
| `Could not find Location`                   | `location[0].location` veio só com `identifier`, e ele não resolveu                                                                                    |
| `Could not find Condition … in FHIR store`  | A condição de `diagnosis` não existe                                                                                                                   |
| `Condition … already linked to another …`   | A condição pertence a outro evento. A mensagem termina com um nome de tipo interno, que não é contrato estável — case pelo `already linked to another` |
| `Could not find … identifier for Encounter` | Os identificadores casaram com um recurso que não é este pronto atendimento                                                                            |

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

Não há como, por esta API: filtrar eventos por local, registrar mais de um profissional num
evento, desvincular uma condição de um evento, ou definir o **Referido por**. Também não é
possível informar origem, canal ou desfecho — essas extensões valem só para os
[atendimentos](/guia/recursos/encounter).