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

# Avaliação clínica

> Consultar a entrevista clínica, o exame físico e os pontos de atenção de um atendimento no padrão FHIR ClinicalImpression.

A avaliação clínica é o que o profissional escreveu durante o atendimento: o relato do
paciente, o que o exame físico mostrou e os pontos de atenção que a equipe precisa ver de
novo no próximo contato. É o texto do prontuário, não um dado codificado.

No FHIR isso é a
[`ClinicalImpression`](https://hl7.org/fhir/R4/clinicalimpression.html). Cada atendimento tem
no máximo uma, e ela nasce junto com ele: os dois saem do mesmo registro, e é por isso que a
avaliação carrega o identificador do atendimento de origem.

> **Warning**
>
> **Este recurso é somente leitura.** Não existe `POST /fhir/resources/ClinicalImpression` — a
> avaliação clínica só é escrita pela equipe dentro do NiloCare. Veja
> [O que a integração não cobre](#o-que-a-integração-não-cobre) para o que acontece se você
> tentar enviá-la mesmo assim.

## Campos

A coluna **No NiloCare** traz o rótulo com que o dado aparece para a equipe; são rótulos, não
caminhos de navegação: a tela pode ser reorganizada, o rótulo é o que permite conferir se o
dado é o que você esperava.

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

| Campo               | Sempre presente | O que significa                                                                                                                                            | No NiloCare                           |
| ------------------- | --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------- |
| `subject`           | sim             | O paciente do atendimento, por um identificador dele                                                                                                       | **Paciente**                          |
| `encounter`         | sim             | O atendimento a que a avaliação pertence                                                                                                                   | **Atendimento**                       |
| `identifier`        | sim             | Identificador Nilo, sempre o do atendimento de origem                                                                                                      | —                                     |
| `status`            | sim             | Constante `completed`                                                                                                                                      | —                                     |
| `effectiveDateTime` | quase sempre    | Quando o registro do atendimento foi criado                                                                                                                | **Criado em**                         |
| `description`       | não             | A entrevista clínica escrita pelo profissional. Pode ser enviada pelo atendimento — veja [Entrevista clínica](/guia/recursos/encounter#entrevista-clínica) | **Entrevista clínica** · **Anamnese** |
| `investigation[0]`  | não             | O exame físico, em `item[0].display`                                                                                                                       | **Exame físico**                      |
| `note[]`            | não             | Os pontos de atenção do atendimento, um por item                                                                                                           | **Pontos de atenção**                 |
| `assessor`          | não             | O profissional responsável pelo atendimento                                                                                                                | **Responsável**                       |
| `id`                | sim             | O identificador Nilo FHIR do recurso, usado na leitura por ID                                                                                              | —                                     |
| `meta`              | sim             | Metadados da gravação: versão e data da última alteração                                                                                                   | —                                     |

Um atendimento sem nenhum texto escrito **mesmo assim produz uma avaliação clínica**: vêm
`identifier`, `status`, `subject`, `encounter`, `effectiveDateTime`, `id` e `meta` — e
`assessor`, se o atendimento tiver responsável — e nada mais. A ausência de `description` não
significa que o atendimento não existe: significa que ninguém escreveu nada nele.

> **Warning**
>
> **Apagar o texto no NiloCare não limpa o campo aqui.** Quando o profissional esvazia a
> entrevista clínica, ou o atendimento perde o responsável, a avaliação continua devolvendo
> `description` e `assessor` com o **valor anterior** — a atualização preserva o que já estava
> gravado em vez de apagá-lo. Não conclua de um `description` presente que o texto ainda está lá
> no prontuário.
>
> `investigation` e `note[]` não têm esse problema: quando o exame físico ou os pontos de atenção
> são removidos, eles somem da leitura.

> **Note**
>
> `status` é constante e não serve para saber se o atendimento está aberto ou encerrado. Quem
> diz isso é o `status` do [atendimento](/guia/recursos/encounter).
>
> `effectiveDateTime` também não é o horário do atendimento: é a data de **criação do registro**.
> O período em que o atendimento aconteceu está em `Encounter.period`.

### Como o texto clínico se distribui entre os campos

Historicamente a equipe escrevia em dois campos separados, e a API os expõe assim:
a entrevista em `description`, o exame físico em `investigation[0].item[0].display`.

> **Warning**
>
> No registro de atendimento novo, os dois campos viraram **um único texto na tela**, e é
> `description` que recebe tudo o que o profissional escreve — entrevista e exame físico juntos.
> `investigation` deixa de ser alimentado e passa a guardar apenas o que já estava lá.
>
> Duas consequências para quem lê:
>
> * **Não trate `investigation` como "o exame físico" e `description` como "a entrevista".**
>   Onde o registro novo está em uso, `description` é a nota clínica inteira e `investigation`
>   pode vir vazio mesmo havendo exame físico registrado.
> * Num atendimento escrito antes da mudança e **editado depois**, o texto do exame físico
>   aparece nos **dois** campos: ele é levado para dentro da nota, e o campo antigo é preservado
>   como estava. Concatenar `description` com `investigation` duplica esse trecho.
>
> As duas telas convivem hoje, e qual delas a equipe usa varia por implantação — o mesmo cliente
> pode ler recursos das duas formas na mesma busca. Se você processa o texto, leia
> `description` como a nota clínica e use `investigation` só como complemento, deduplicando.

### Pontos de atenção

Cada ponto de atenção do atendimento vira um item de `note[]`, com o texto em `text`.

> **Note**
>
> `note[].authorReference` é sempre o **profissional responsável pelo atendimento**, o mesmo que
> está em `assessor` — não o autor daquele ponto de atenção. Um ponto anotado por outro
> profissional volta atribuído ao responsável. Não use esse campo para auditar quem escreveu o
> quê. `note[].time` nunca vem preenchido.
>
> Só entram os pontos de atenção **vinculados a este atendimento**. O cartão de pontos de atenção
> que a equipe vê é do **paciente**, não do atendimento: ele mostra também os pontos de outros
> atendimentos e os que não pertencem a atendimento nenhum. Nenhum desses aparece aqui, nem em
> outro recurso desta API — a lista de `note[]` é sempre menor do que a da tela.

> **Note**
>
> A lista é uma fotografia do momento em que o atendimento foi gravado. Acrescentar, editar ou
> remover um ponto de atenção **sem tocar no atendimento** não atualiza a avaliação clínica: a
> mudança só aparece na próxima vez que o atendimento em si for salvo.

### Campos que a Nilo não usa

A `ClinicalImpression` canônica tem campos que esta integração não produz: `code`, `date`,
`effectivePeriod`, `finding`, `previous`, `problem`, `prognosisCodeableConcept`,
`prognosisReference`, `protocol`, `summary`, `supportingInfo` e `statusReason`. Como esta
referência descreve só o que é suportado, eles não aparecem no schema do recurso — e, como não
há escrita, também não há como preenchê-los.

Repare em `date`: o FHIR tem dois campos de data neste recurso, e a plataforma preenche
`effectiveDateTime`, nunca `date`. Isso tem consequência na busca — veja
[Parâmetros de busca](#parâmetros-de-busca-suportados).

## Cadastrar ou atualizar

**Não existe.** Este recurso não tem caminho de escrita nesta API — nem para criar, nem para
atualizar, nem para apagar. A avaliação clínica é escrita pela equipe no NiloCare e chega aqui
já pronta.

> **Warning**
>
> Ela também **desaparece** por lá: apagado o atendimento no NiloCare, a avaliação clínica dele é
> removida, e um `id` que você já leu com sucesso passa a responder `404` sem aviso nenhum. Se
> você guarda o conteúdo, guarde o conteúdo — não o `id`.

> **Warning**
>
> Um `POST /fhir/resources/ClinicalImpression` **não é uma operação suportada** e não devolve um
> erro de validação tratável: a chamada falha com erro inesperado do servidor (`500`). Não
> escreva tratamento em cima desse comportamento — ele não é contrato, e nada é gravado no
> NiloCare de qualquer forma.
>
> Dentro de uma [carga em lote](https://hl7.org/fhir/R4/http.html#transaction) o erro é limpo, e
> igualmente definitivo: a entrada é recusada com `Resource ClinicalImpression not supported`.

Para registrar o conteúdo clínico de um atendimento por integração, o que existe é:
[Condição](/guia/recursos/condition) para diagnósticos e condutas, e
[Atendimentos](/guia/recursos/encounter) para o atendimento em si.

## Buscar

### Request

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

**`Busca de avaliações clínicas com resultados`**

```curl Busca de avaliações clínicas com resultados
curl -G https://landing-zone-api.nilo.services/fhir/resources/ClinicalImpression \
     -H "x-api-key: <apiKey>" \
     -d _count=50 \
     -d _lastUpdated=eq2013-01-14 \
     --data-urlencode assessor:identifier=https://www.acmesaude.com.br/integracao/profissional/|5032932 \
     --data-urlencode encounter:identifier=https://www.acmesaude.com.br/integracao/atendimento/|55162 \
     --data-urlencode identifier=https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/care-api--appointment-v3|318472 \
     --data-urlencode patient:identifier=https://www.acmesaude.com.br/integracao/paciente/|507823709 \
     -d status=completed \
     --data-urlencode subject:identifier=https://www.acmesaude.com.br/integracao/paciente/|507823709
```

**`Busca de avaliações clínicas com resultados`**

```python Busca de avaliações clínicas com resultados
import requests

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

querystring = {"_count":"50","_lastUpdated":"[\"eq2013-01-14\"]","assessor:identifier":"https://www.acmesaude.com.br/integracao/profissional/|5032932","encounter:identifier":"https://www.acmesaude.com.br/integracao/atendimento/|55162","identifier":"https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/care-api--appointment-v3|318472","patient:identifier":"https://www.acmesaude.com.br/integracao/paciente/|507823709","status":"completed","subject:identifier":"https://www.acmesaude.com.br/integracao/paciente/|507823709"}

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

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

print(response.json())
```

**`Busca de avaliações clínicas com resultados`**

```javascript Busca de avaliações clínicas com resultados
const url = 'https://landing-zone-api.nilo.services/fhir/resources/ClinicalImpression?_count=50&_lastUpdated=%5B%22eq2013-01-14%22%5D&assessor%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fprofissional%2F%7C5032932&encounter%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fatendimento%2F%7C55162&identifier=https%3A%2F%2Flanding-zone-api.nilo.services%2Ffhir%2Fresources%2FNamingSystem%2Fcare-api--appointment-v3%7C318472&patient%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709&status=completed&subject%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709';
const options = {method: 'GET', headers: {'x-api-key': '<apiKey>'}};

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

**`Busca de avaliações clínicas com resultados`**

```go Busca de avaliações clínicas com resultados
package main

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

func main() {

	url := "https://landing-zone-api.nilo.services/fhir/resources/ClinicalImpression?_count=50&_lastUpdated=%5B%22eq2013-01-14%22%5D&assessor%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fprofissional%2F%7C5032932&encounter%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fatendimento%2F%7C55162&identifier=https%3A%2F%2Flanding-zone-api.nilo.services%2Ffhir%2Fresources%2FNamingSystem%2Fcare-api--appointment-v3%7C318472&patient%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709&status=completed&subject%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709"

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

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

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

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

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

}
```

**`Busca de avaliações clínicas com resultados`**

```ruby Busca de avaliações clínicas com resultados
require 'uri'
require 'net/http'

url = URI("https://landing-zone-api.nilo.services/fhir/resources/ClinicalImpression?_count=50&_lastUpdated=%5B%22eq2013-01-14%22%5D&assessor%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fprofissional%2F%7C5032932&encounter%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fatendimento%2F%7C55162&identifier=https%3A%2F%2Flanding-zone-api.nilo.services%2Ffhir%2Fresources%2FNamingSystem%2Fcare-api--appointment-v3%7C318472&patient%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709&status=completed&subject%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709")

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

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

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

**`Busca de avaliações clínicas com resultados`**

```java Busca de avaliações clínicas 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/ClinicalImpression?_count=50&_lastUpdated=%5B%22eq2013-01-14%22%5D&assessor%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fprofissional%2F%7C5032932&encounter%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fatendimento%2F%7C55162&identifier=https%3A%2F%2Flanding-zone-api.nilo.services%2Ffhir%2Fresources%2FNamingSystem%2Fcare-api--appointment-v3%7C318472&patient%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709&status=completed&subject%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709")
  .header("x-api-key", "<apiKey>")
  .asString();
```

**`Busca de avaliações clínicas com resultados`**

```php Busca de avaliações clínicas com resultados
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://landing-zone-api.nilo.services/fhir/resources/ClinicalImpression?_count=50&_lastUpdated=%5B%22eq2013-01-14%22%5D&assessor%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fprofissional%2F%7C5032932&encounter%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fatendimento%2F%7C55162&identifier=https%3A%2F%2Flanding-zone-api.nilo.services%2Ffhir%2Fresources%2FNamingSystem%2Fcare-api--appointment-v3%7C318472&patient%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709&status=completed&subject%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709', [
  'headers' => [
    'x-api-key' => '<apiKey>',
  ],
]);

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

**`Busca de avaliações clínicas com resultados`**

```csharp Busca de avaliações clínicas com resultados
using RestSharp;

var client = new RestClient("https://landing-zone-api.nilo.services/fhir/resources/ClinicalImpression?_count=50&_lastUpdated=%5B%22eq2013-01-14%22%5D&assessor%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fprofissional%2F%7C5032932&encounter%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fatendimento%2F%7C55162&identifier=https%3A%2F%2Flanding-zone-api.nilo.services%2Ffhir%2Fresources%2FNamingSystem%2Fcare-api--appointment-v3%7C318472&patient%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709&status=completed&subject%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709");
var request = new RestRequest(Method.GET);
request.AddHeader("x-api-key", "<apiKey>");
IRestResponse response = client.Execute(request);
```

**`Busca de avaliações clínicas com resultados`**

```swift Busca de avaliações clínicas com resultados
import Foundation

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

let request = NSMutableURLRequest(url: NSURL(string: "https://landing-zone-api.nilo.services/fhir/resources/ClinicalImpression?_count=50&_lastUpdated=%5B%22eq2013-01-14%22%5D&assessor%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fprofissional%2F%7C5032932&encounter%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fatendimento%2F%7C55162&identifier=https%3A%2F%2Flanding-zone-api.nilo.services%2Ffhir%2Fresources%2FNamingSystem%2Fcare-api--appointment-v3%7C318472&patient%3Aidentifier=https%3A%2F%2Fwww.acmesaude.com.br%2Fintegracao%2Fpaciente%2F%7C507823709&status=completed&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`.

### Response (200)

```json
{
  "resourceType": "Bundle",
  "type": "searchset",
  "entry": [
    {
      "fullUrl": "https://landing-zone-api.nilo.services/fhir/resources/ClinicalImpression/9f4c2a17-6b83-4de5-b0a2-7c15e9d3f048",
      "resource": {
        "encounter": {
          "identifier": {
            "system": "https://www.acmesaude.com.br/integracao/atendimento/",
            "value": "55162",
            "use": "usual"
          },
          "type": "Encounter"
        },
        "identifier": [
          {
            "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/care-api--appointment-v3",
            "value": "318472",
            "use": "usual"
          }
        ],
        "resourceType": "ClinicalImpression",
        "status": "completed",
        "subject": {
          "identifier": {
            "system": "https://www.acmesaude.com.br/integracao/paciente/",
            "value": "507823709",
            "use": "usual"
          },
          "type": "Patient"
        },
        "assessor": {
          "identifier": {
            "system": "https://www.acmesaude.com.br/integracao/profissional/",
            "value": "5032932",
            "use": "usual"
          },
          "type": "Practitioner"
        },
        "description": "Paciente relata tosse seca e dor de garganta há três dias, sem febre aferida. Nega dispneia.",
        "effectiveDateTime": "2026-04-16T19:32:08+00:00",
        "id": "9f4c2a17-6b83-4de5-b0a2-7c15e9d3f048",
        "investigation": [
          {
            "code": {
              "text": "physicalExam"
            },
            "item": [
              {
                "display": "Bom estado geral, eupneica, orofaringe hiperemiada sem placas."
              }
            ]
          }
        ],
        "meta": {
          "lastUpdated": "2026-04-16T20:05:03.118000Z",
          "versionId": "MTc4NjAyMTQ1MjkwNTAwMDM2Nw"
        },
        "note": [
          {
            "authorReference": {
              "identifier": {
                "system": "https://www.acmesaude.com.br/integracao/profissional/",
                "value": "5032932",
                "use": "usual"
              },
              "type": "Practitioner"
            },
            "text": "Paciente mora sozinha e tem dificuldade de locomoção."
          }
        ]
      },
      "search": {
        "mode": "match"
      }
    },
    {
      "fullUrl": "https://landing-zone-api.nilo.services/fhir/resources/ClinicalImpression/3ad81c60-4e2f-4b95-8c07-1d6fa9b2e534",
      "resource": {
        "encounter": {
          "identifier": {
            "system": "https://www.acmesaude.com.br/integracao/atendimento/",
            "value": "55840",
            "use": "usual"
          },
          "type": "Encounter"
        },
        "identifier": [
          {
            "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/care-api--appointment-v3",
            "value": "318555",
            "use": "usual"
          }
        ],
        "resourceType": "ClinicalImpression",
        "status": "completed",
        "subject": {
          "identifier": {
            "system": "https://www.acmesaude.com.br/integracao/paciente/",
            "value": "507823709",
            "use": "usual"
          },
          "type": "Patient"
        },
        "effectiveDateTime": "2026-04-23T15:04:11+00:00",
        "id": "3ad81c60-4e2f-4b95-8c07-1d6fa9b2e534",
        "meta": {
          "lastUpdated": "2026-04-23T15:06:44.201000Z",
          "versionId": "MTc4NjAyMTQ1MjkwNTAwMDQxMg"
        }
      },
      "search": {
        "mode": "match"
      }
    }
  ],
  "link": []
}
```

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

### Response (200)

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

### Parâmetros de busca suportados

| Nome                   | Tipo                                                       | Descrição                                                          | Expressão                                 |
| ---------------------- | ---------------------------------------------------------- | ------------------------------------------------------------------ | ----------------------------------------- |
| `identifier`           | [token](https://hl7.org/fhir/R4/search.html#token)         | Identificador da avaliação, em `system\|value`                     | `ClinicalImpression.identifier`           |
| `patient:identifier`   | [reference](https://hl7.org/fhir/R4/search.html#reference) | Paciente, pelo identificador dele                                  | `ClinicalImpression.subject.identifier`   |
| `subject:identifier`   | [reference](https://hl7.org/fhir/R4/search.html#reference) | O mesmo campo que `patient:identifier`                             | `ClinicalImpression.subject.identifier`   |
| `encounter:identifier` | [reference](https://hl7.org/fhir/R4/search.html#reference) | Atendimento da avaliação, pelo identificador dele                  | `ClinicalImpression.encounter.identifier` |
| `assessor:identifier`  | [reference](https://hl7.org/fhir/R4/search.html#reference) | Profissional responsável, pelo identificador dele                  | `ClinicalImpression.assessor.identifier`  |
| `status`               | [token](https://hl7.org/fhir/R4/search.html#token)         | Aceito, mas inútil: o valor é sempre `completed`                   | `ClinicalImpression.status`               |
| `_lastUpdated`         | [date](https://hl7.org/fhir/R4/search.html#date)           | Data da última gravação no store, com os prefixos `eq`, `ge`, `le` | —                                         |

`encounter:identifier` é a busca mais direta desta página: um atendimento tem no máximo uma
avaliação clínica, e é o mesmo identificador que você já usa para ler o atendimento.

> **Warning**
>
> **Só a forma `:identifier` funciona neste recurso.** As referências da avaliação clínica são
> gravadas sem o campo `reference` — só com `identifier` e `type` —, e a busca por referência sem
> o modificador procura justamente em `reference`. Por isso `patient=Patient/{id}`,
> `subject=…`, `encounter=Encounter/{id}` e `assessor=Practitioner/{id}` devolvem `Bundle` vazio,
> não erro. São exceção este recurso e a [Conduta](/guia/recursos/requestgroup), que nasce do mesmo
> atendimento: em [Atendimentos](/guia/recursos/encounter) e
> [Condição](/guia/recursos/condition) as duas formas funcionam.

> **Warning**
>
> Qual identificador o `subject` carrega é decidido **referência a referência**, não de uma vez
> por implantação. Na configuração que usa identificadores externos, cada referência sai com o
> identificador do seu sistema **se o recurso apontado tiver um**; se não tiver, cai
> silenciosamente no identificador Nilo. Na mesma resposta, o `subject` pode vir com o seu
> `system` e o `assessor` com o da Nilo (`…/NamingSystem/almanac-api--professional`). Confira o
> que veio na resposta antes de montar a busca em volume — vale para `subject`, `encounter` e
> `assessor`.

> **Note**
>
> O `identifier` **do próprio recurso** é a exceção: ele nunca depende da implantação e nunca é o
> seu. É sempre o identificador Nilo do atendimento de origem, no `system`
> `…/NamingSystem/care-api--appointment-v3` — o mesmo valor que aparece nos identificadores do
> `Encounter` correspondente. Para chegar à avaliação a partir da sua própria chave, o caminho é
> `encounter:identifier`, não `identifier`.
>
> Avaliações de atendimentos antigos podem trazer **também** um identificador no `system`
> `…/NamingSystem/care-api--appointment`, sem o `-v3`. É o mesmo atendimento: o `system` antigo é
> preservado para não partir o histórico dos registros anteriores.

> **Note**
>
> Vários parâmetros canônicos da `ClinicalImpression` existem e **não encontram nada** aqui,
> porque a plataforma não preenche o campo correspondente: `finding-code`, `finding-ref`,
> `previous`, `problem`, `supporting-info` e `investigation`.
>
> `investigation` merece o aviso explícito: o campo existe e vem preenchido, mas o parâmetro
> canônico procura por **referência** dentro de `investigation.item`, e o item da Nilo carrega só
> texto em `display`. Não há como buscar pelo conteúdo do exame físico.
>
> `date` é o outro caso: o parâmetro canônico procura em `ClinicalImpression.date`, e a
> plataforma preenche `effectiveDateTime`. Para recortar por período, use `_lastUpdated` — ou
> busque os atendimentos do período em [Atendimentos](/guia/recursos/encounter) e leia a
> avaliação de cada um por `encounter:identifier`.

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

**`Avaliação clínica encontrada`**

```curl Avaliação clínica encontrada
curl https://landing-zone-api.nilo.services/fhir/resources/ClinicalImpression/id \
     -H "x-api-key: <apiKey>"
```

**`Avaliação clínica encontrada`**

```python Avaliação clínica encontrada
import requests

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

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

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

print(response.json())
```

**`Avaliação clínica encontrada`**

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

**`Avaliação clínica encontrada`**

```go Avaliação clínica encontrada
package main

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

func main() {

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

}
```

**`Avaliação clínica encontrada`**

```ruby Avaliação clínica encontrada
require 'uri'
require 'net/http'

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

**`Avaliação clínica encontrada`**

```java Avaliação clínica 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/ClinicalImpression/id")
  .header("x-api-key", "<apiKey>")
  .asString();
```

**`Avaliação clínica encontrada`**

```php Avaliação clínica encontrada
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

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

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

**`Avaliação clínica encontrada`**

```csharp Avaliação clínica encontrada
using RestSharp;

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

**`Avaliação clínica encontrada`**

```swift Avaliação clínica encontrada
import Foundation

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

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

### Response (200)

```json
{
  "fullUrl": "https://landing-zone-api.nilo.services/fhir/resources/ClinicalImpression/9f4c2a17-6b83-4de5-b0a2-7c15e9d3f048",
  "resource": {
    "encounter": {
      "identifier": {
        "system": "https://www.acmesaude.com.br/integracao/atendimento/",
        "value": "55162",
        "use": "usual"
      },
      "type": "Encounter"
    },
    "identifier": [
      {
        "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/care-api--appointment-v3",
        "value": "318472",
        "use": "usual"
      }
    ],
    "resourceType": "ClinicalImpression",
    "status": "completed",
    "subject": {
      "identifier": {
        "system": "https://www.acmesaude.com.br/integracao/paciente/",
        "value": "507823709",
        "use": "usual"
      },
      "type": "Patient"
    },
    "assessor": {
      "identifier": {
        "system": "https://www.acmesaude.com.br/integracao/profissional/",
        "value": "5032932",
        "use": "usual"
      },
      "type": "Practitioner"
    },
    "description": "Paciente relata tosse seca e dor de garganta há três dias, sem febre aferida. Nega dispneia.",
    "effectiveDateTime": "2026-04-16T19:32:08+00:00",
    "id": "9f4c2a17-6b83-4de5-b0a2-7c15e9d3f048",
    "investigation": [
      {
        "code": {
          "text": "physicalExam"
        },
        "item": [
          {
            "display": "Bom estado geral, eupneica, orofaringe hiperemiada sem placas."
          }
        ]
      }
    ],
    "meta": {
      "lastUpdated": "2026-04-16T20:05:03.118000Z",
      "versionId": "MTc4NjAyMTQ1MjkwNTAwMDM2Nw"
    },
    "note": [
      {
        "authorReference": {
          "identifier": {
            "system": "https://www.acmesaude.com.br/integracao/profissional/",
            "value": "5032932",
            "use": "usual"
          },
          "type": "Practitioner"
        },
        "text": "Paciente mora sozinha e tem dificuldade de locomoção."
      }
    ]
  },
  "search": {
    "mode": "match"
  }
}
```

## Referências entre recursos

As referências deste recurso vêm **por identificador**, sem o campo `reference`: você recebe
`identifier` e `type`, e resolve o recurso apontado por uma busca com o modificador
`:identifier`. Isso vale para `subject`, `encounter`, `assessor` e `note[].authorReference`.

> **Note**
>
> `investigation[0].item[0]` tem a forma de uma referência FHIR, mas não é uma: traz apenas
> `display`, com o texto do exame físico. Não tente resolvê-la.

## Quando a avaliação fica disponível

A avaliação clínica é sincronizada logo depois do atendimento, mas **não no mesmo instante**:
gravar ou atualizar um atendimento e ler a avaliação dele em seguida pode não encontrar nada
ainda. Se o seu fluxo é escrever um atendimento e ler a avaliação dele, reconsulte em vez de
tratar a primeira resposta vazia como definitiva.

A ordem é essa mesma: o atendimento é gravado primeiro e a avaliação depois. Se a gravação do
atendimento falhar, a avaliação **não chega a existir** — não há avaliação clínica órfã de um
atendimento que não foi gravado.

> **Note**
>
> O `encounter` nem sempre aponta para um atendimento do prontuário. Um atendimento classificado
> como pronto atendimento gera avaliação clínica do mesmo jeito, e a referência dela leva a um
> recurso que a busca de [Atendimentos](/guia/recursos/encounter) não devolve — ele está em
> [Pronto atendimento](/guia/recursos/encounter-emergency).

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

Não há escrita: nem criar, nem atualizar, nem apagar uma avaliação clínica. Também não há como
registrar um ponto de atenção, corrigir a entrevista de um atendimento ou apagar um exame
físico por esta API.

E dois dados que a plataforma guarda **não têm campo aqui**: o autor real de cada ponto de
atenção — `note[].authorReference` traz o responsável pelo atendimento — e a distinção entre
o que foi escrito como entrevista e o que foi escrito como exame físico, nos atendimentos do
registro novo.

Os diagnósticos e as condutas do mesmo atendimento não estão neste recurso: estão em
[Condição](/guia/recursos/condition), e a leitura consolidada das condutas está em
[Conduta](/guia/recursos/requestgroup). O atendimento em si está em
[Atendimentos](/guia/recursos/encounter).