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

# Extensões

> Como a Nilo reconhece uma extensão pela URL, o catálogo das extensões suportadas e o que acontece com uma URL que ela não reconhece.

Extensões são o mecanismo do FHIR para carregar informação que o recurso padrão não prevê. Elas não
alteram a estrutura do recurso: convivem com os campos padrão, e um sistema que não conhece uma
extensão continua processando o resto do recurso normalmente.

Na Nilo é por aí que trafega o que é específico da plataforma — o status do paciente, o grupo a que
ele pertence, as decisões de onboarding. Algumas são obrigatórias no envio, então esta página não é
opcional para quem vai escrever um `Patient`.

## A URL é a chave

Cada extensão é identificada por uma URL, e a comparação é de **igualdade exata da string inteira**.
Não há normalização: nem barra final, nem `http` por `https`, nem casamento por sufixo. A URL que
você manda é a URL que a Nilo procura, caractere por caractere.

As extensões da Nilo ficam sob:

```
{host}/fhir/resources/StructureDefinition/
```

Repare no `/resources`. E `{host}` é o host do ambiente que você está chamando — os dois estão em
[Introdução](/guia/comecando/introducao).

> **Warning**
>
> Uma URL de extensão errada **não** gera erro de URL: a extensão simplesmente não é encontrada. Nas
> extensões opcionais o valor enviado é ignorado em silêncio — num paciente que já existe a API
> preserva o valor atual, e num paciente novo aplica o padrão da unidade de cuidado. Nas duas
> obrigatórias (`patient-sendWelcomingMessage` e `patient-createOnboardingScheduling`) o resultado é
> um `400` dizendo que a extensão é obrigatória, mesmo estando ela ali no payload.
>
> Os dois erros mais comuns são omitir o `/resources` e usar o host de produção contra homologação.

## O tipo do valor também é a chave

O nome do campo de valor — `valueBoolean`, `valueString`, `valueIdentifier`,
`valueCodeableConcept`, `valueUrl` — faz parte do contrato de cada extensão. A leitura busca
exatamente aquele campo: um `valueString` onde se espera `valueBoolean` é lido como **ausente**,
com o mesmo desfecho silencioso de uma URL errada. Por isso o catálogo abaixo traz o tipo de cada
uma.

## Onde aplicar

Uma extensão só é lida no nível em que foi projetada. As de `Patient`, `Coverage`,
`Practitioner` e `Encounter` ficam no `extension` da raiz do recurso; algumas são compostas e carregam as
suas próprias extensões aninhadas, e aí o filho só é encontrado dentro do pai — nunca na raiz.
É o caso do `practitioner-user-active`, que fora de `practitioner-user` não tem efeito nenhum, e
do `patient-paths`, que a API devolve nas leituras:

```json
{
  "extension": [
    {
      "url": "https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-paths",
      "extension": [
        {
          "url": "https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-paths-home",
          "valueUrl": "https://acme.nilocare.app/patients/48210"
        }
      ]
    }
  ]
}
```

Também não convém reescrever a estrutura de uma extensão — trocar o nome do campo de valor,
achatar uma composta ou acrescentar elementos à definição produz o mesmo resultado de não a ter
enviado.

## Catálogo

As extensões da Nilo estão listadas pelo sufixo; o prefixo é
`{host}/fhir/resources/StructureDefinition/`, com o `{host}` do ambiente que você chama. As duas do
`hl7.org` estão por extenso, porque não ficam sob esse prefixo.

| Recurso      | Extensão                                                         | Tipo                             | Direção          | O que faz                                                                                                                                                                                                                                                                                  |
| ------------ | ---------------------------------------------------------------- | -------------------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Patient      | `patient-sendWelcomingMessage`                                   | `valueBoolean`                   | envio e resposta | Dispara ou não a mensagem de boas-vindas após o cadastro. **Obrigatória no envio**                                                                                                                                                                                                         |
| Patient      | `patient-createOnboardingScheduling`                             | `valueBoolean`                   | envio e resposta | Libera o paciente para o primeiro agendamento logo após o cadastro. **Obrigatória no envio**                                                                                                                                                                                               |
| Patient      | `patient-isLead`                                                 | `valueBoolean`                   | envio e resposta | Marca o cadastro como pré-cadastro: o paciente ainda não aceitou os termos                                                                                                                                                                                                                 |
| Patient      | `patient-status`                                                 | `valueString`                    | envio e resposta | Status do paciente, pelo id de um status do seu care provider. Precisa concordar com `active`                                                                                                                                                                                              |
| Patient      | `Group` — sem o segmento `StructureDefinition/`                  | `valueIdentifier`                | só envio         | Grupo do paciente, pelo identificador de um `Group` já cadastrado                                                                                                                                                                                                                          |
| Patient      | `patient-cohort`                                                 | `valueIdentifier`                | envio e resposta | Grupo pelo id Nilo. **Legada** — prefira `Group`                                                                                                                                                                                                                                           |
| Patient      | `patient-religion`                                               | `valueCodeableConcept` (`.text`) | só envio         | Religião declarada                                                                                                                                                                                                                                                                         |
| Patient      | `http://hl7.org/fhir/StructureDefinition/patient-genderIdentity` | `valueCodeableConcept`           | envio e resposta | Identidade de gênero                                                                                                                                                                                                                                                                       |
| Patient      | `http://hl7.org/fhir/StructureDefinition/patient-cadavericDonor` | `valueBoolean`                   | envio e resposta | Se o paciente é doador de órgãos                                                                                                                                                                                                                                                           |
| Patient      | `patient-paths` → `patient-paths-home`                           | `extension` → `valueUrl`         | só resposta      | Atalho para a ficha do paciente no NiloCare                                                                                                                                                                                                                                                |
| Coverage     | `insurance-plan`                                                 | `valueIdentifier`                | só envio         | Produto da operadora, pelo identificador de um `InsurancePlan` já cadastrado                                                                                                                                                                                                               |
| Practitioner | `practitioner-user`                                              | `extension`                      | só envio         | Acesso do profissional ao NiloCare. Composta: carrega `-active` e `-email`                                                                                                                                                                                                                 |
| Practitioner | `practitioner-user-active`                                       | `valueBoolean`                   | só envio         | `true` concede o acesso, `false` remove. Só dentro de `practitioner-user`                                                                                                                                                                                                                  |
| Practitioner | `practitioner-user-email`                                        | `valueString`                    | só envio         | E-mail de login. **Obrigatória** quando o acesso está sendo concedido. Só dentro de `practitioner-user`                                                                                                                                                                                    |
| Practitioner | `practitioner-organization`                                      | `valueIdentifier`                | envio e resposta | Unidade de cuidado do profissional, pelo identificador de uma `Organization` já cadastrada. Repetível, e só adiciona                                                                                                                                                                       |
| Practitioner | `practitioner-legacy-type`                                       | `valueString`                    | só resposta      | Classificação interna do profissional, derivada do cadastro                                                                                                                                                                                                                                |
| Encounter    | `encounter-admitSource`                                          | `valueCodeableConcept`           | envio e resposta | Origem do atendimento, pelo id de um item do catálogo da implantação. Só em `class` `VR` e `AMB`                                                                                                                                                                                           |
| Encounter    | `encounter-serviceChannel`                                       | `valueCodeableConcept`           | envio e resposta | Canal usado no atendimento, pelo id de um item do catálogo. Só em `class` `VR` e `AMB`                                                                                                                                                                                                     |
| Encounter    | `encounter-dischargeDisposition`                                 | `valueCodeableConcept`           | envio e resposta | Desfecho do atendimento, pelo id de um item do catálogo. Só em `class` `VR` e `AMB`                                                                                                                                                                                                        |
| Encounter    | `encounter-clinicalNote`                                         | `valueMarkdown`                  | envio e resposta | Entrevista clínica do atendimento, em markdown. Omitida, mantém a gravada; vazia ou repetida, é recusada. Só em `class` `VR` e `AMB`                                                                                                                                                       |
| Appointment  | `appointment-allowConflict`                                      | `valueBoolean`                   | envio e resposta | `true` dispensa a conferência da agenda do profissional — colisão, grade de atendimento e duplicidade de horário, as três juntas. **Omitida vale `true`**; só um `false` explícito pede a conferência, e ainda assim a configuração do care provider pode dispensá-la. Vem em toda leitura |

O que cada uma significa no fluxo do recurso — quais são exigidas, com o que precisam concordar, o
que acontece na atualização parcial — está na página do recurso: [Paciente](/guia/recursos/patient),
[Cobertura](/guia/recursos/coverage), [Profissional](/guia/recursos/practitioner),
[Atendimentos](/guia/recursos/encounter) e [Agendamento](/guia/recursos/appointment).

> **Note**
>
> Nas três extensões do `Encounter` o `coding.system` também é load-bearing: precisa ser
> `{host}/fhir/resources/CodeSystem/encounter-admitSource` (e equivalentes). Um `coding` no `system`
> errado é lido como ausente, com o mesmo desfecho silencioso de uma URL errada. Elas valem apenas
> nos atendimentos de `class` `VR` e `AMB` — nos eventos (`EMER` e `IMP`) são gravadas e
> ignoradas.

> **Note**
>
> `patient-religion` é assimétrica. A escrita aceita a URL sob o prefixo da Nilo, mas a leitura
> devolve `http://hl7.org/fhir/StructureDefinition/patient-religion`. Ou seja: reenviar um recurso
> exatamente como ele veio numa resposta **não** preserva a religião — reenvie a URL da Nilo.

> **Note**
>
> O grupo tem o mesmo tipo de assimetria: você envia em `Group` e a resposta traz `patient-cohort`,
> com o id Nilo do grupo. As duas descrevem o mesmo vínculo.

> **Warning**
>
> As três extensões de acesso do `Practitioner` são as únicas desta lista que **agem fora do
> recurso**: enviá-las cria ou remove um usuário com acesso ao NiloCare. Não as inclua num
> payload de rotina só porque a plataforma as devolveria — a leitura não as devolve, e mandar
> `practitioner-user-active: false` num reenvio remove o acesso de quem já tinha.

## Exemplo

O cadastro completo de paciente manda seis extensões de uma vez: as duas obrigatórias, `isLead`, e
as três do `hl7.org`:

### Request

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

**`Cadastro completo`**

```curl Cadastro completo
curl -X POST https://landing-zone-api.nilo.services/fhir/resources/Patient \
     -H "x-api-key: <apiKey>" \
     -H "Content-Type: application/json" \
     -d '{
  "identifier": [
    {
      "system": "https://www.acmesaude.com.br/integracao/paciente/",
      "value": "507823709",
      "use": "usual"
    },
    {
      "system": "https://servicos.receita.fazenda.gov.br/servicos/cpf/",
      "value": "39053344705",
      "use": "official"
    }
  ],
  "resourceType": "Patient",
  "active": true,
  "address": [
    {
      "city": "São Paulo",
      "country": "Brasil",
      "district": "Pinheiros",
      "line": [
        "Rua das Acácias",
        "120",
        "Apto 42"
      ],
      "postalCode": "01415000",
      "state": "São Paulo",
      "type": "both",
      "use": "home"
    }
  ],
  "birthDate": "1974-12-25",
  "contained": [
    {
      "resourceType": "Group",
      "identifier": [
        {
          "system": "https://www.acmesaude.com.br/integracao/grupo/",
          "value": "diabeticos-tipo-2",
          "use": "usual"
        }
      ],
      "type": "person",
      "actual": true,
      "name": "Diabéticos tipo 2"
    }
  ],
  "extension": [
    {
      "url": "https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-isLead",
      "valueBoolean": false
    },
    {
      "url": "https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-sendWelcomingMessage",
      "valueBoolean": true
    },
    {
      "url": "https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-createOnboardingScheduling",
      "valueBoolean": true
    },
    {
      "url": "http://hl7.org/fhir/StructureDefinition/patient-genderIdentity",
      "valueCodeableConcept": {
        "coding": [
          {
            "code": "male",
            "display": "male",
            "system": "http://hl7.org/fhir/gender-identity"
          }
        ]
      }
    },
    {
      "url": "https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-religion",
      "valueCodeableConcept": {
        "text": "Católica"
      }
    },
    {
      "url": "http://hl7.org/fhir/StructureDefinition/patient-cadavericDonor",
      "valueBoolean": true
    }
  ],
  "gender": "male",
  "managingOrganization": {
    "identifier": {
      "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/sorting-hat-api--care-unit",
      "value": "4",
      "use": "usual"
    },
    "type": "Organization"
  },
  "maritalStatus": {
    "coding": [
      {
        "code": "M",
        "display": "Married",
        "system": "http://terminology.hl7.org/CodeSystem/v3-MaritalStatus"
      }
    ]
  },
  "name": [
    {
      "family": "Silveira",
      "given": [
        "João",
        "Pedro"
      ],
      "text": "João Pedro Silveira",
      "use": "official"
    },
    {
      "text": "Joana Silveira",
      "use": "usual"
    }
  ],
  "telecom": [
    {
      "system": "phone",
      "use": "mobile",
      "value": "5511987654321"
    },
    {
      "system": "email",
      "use": "home",
      "value": "joao.silveira@example.com"
    }
  ]
}'
```

**`Cadastro completo`**

```python Cadastro completo
import requests

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

payload = {
    "identifier": [
        {
            "system": "https://www.acmesaude.com.br/integracao/paciente/",
            "value": "507823709",
            "use": "usual"
        },
        {
            "system": "https://servicos.receita.fazenda.gov.br/servicos/cpf/",
            "value": "39053344705",
            "use": "official"
        }
    ],
    "resourceType": "Patient",
    "active": True,
    "address": [
        {
            "city": "São Paulo",
            "country": "Brasil",
            "district": "Pinheiros",
            "line": ["Rua das Acácias", "120", "Apto 42"],
            "postalCode": "01415000",
            "state": "São Paulo",
            "type": "both",
            "use": "home"
        }
    ],
    "birthDate": "1974-12-25",
    "contained": [
        {
            "resourceType": "Group",
            "identifier": [
                {
                    "system": "https://www.acmesaude.com.br/integracao/grupo/",
                    "value": "diabeticos-tipo-2",
                    "use": "usual"
                }
            ],
            "type": "person",
            "actual": True,
            "name": "Diabéticos tipo 2"
        }
    ],
    "extension": [
        {
            "url": "https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-isLead",
            "valueBoolean": False
        },
        {
            "url": "https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-sendWelcomingMessage",
            "valueBoolean": True
        },
        {
            "url": "https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-createOnboardingScheduling",
            "valueBoolean": True
        },
        {
            "url": "http://hl7.org/fhir/StructureDefinition/patient-genderIdentity",
            "valueCodeableConcept": { "coding": [
                    {
                        "code": "male",
                        "display": "male",
                        "system": "http://hl7.org/fhir/gender-identity"
                    }
                ] }
        },
        {
            "url": "https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-religion",
            "valueCodeableConcept": { "text": "Católica" }
        },
        {
            "url": "http://hl7.org/fhir/StructureDefinition/patient-cadavericDonor",
            "valueBoolean": True
        }
    ],
    "gender": "male",
    "managingOrganization": {
        "identifier": {
            "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/sorting-hat-api--care-unit",
            "value": "4",
            "use": "usual"
        },
        "type": "Organization"
    },
    "maritalStatus": { "coding": [
            {
                "code": "M",
                "display": "Married",
                "system": "http://terminology.hl7.org/CodeSystem/v3-MaritalStatus"
            }
        ] },
    "name": [
        {
            "family": "Silveira",
            "given": ["João", "Pedro"],
            "text": "João Pedro Silveira",
            "use": "official"
        },
        {
            "text": "Joana Silveira",
            "use": "usual"
        }
    ],
    "telecom": [
        {
            "system": "phone",
            "use": "mobile",
            "value": "5511987654321"
        },
        {
            "system": "email",
            "use": "home",
            "value": "joao.silveira@example.com"
        }
    ]
}
headers = {
    "x-api-key": "<apiKey>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

**`Cadastro completo`**

```javascript Cadastro completo
const url = 'https://landing-zone-api.nilo.services/fhir/resources/Patient';
const options = {
  method: 'POST',
  headers: {'x-api-key': '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"identifier":[{"system":"https://www.acmesaude.com.br/integracao/paciente/","value":"507823709","use":"usual"},{"system":"https://servicos.receita.fazenda.gov.br/servicos/cpf/","value":"39053344705","use":"official"}],"resourceType":"Patient","active":true,"address":[{"city":"São Paulo","country":"Brasil","district":"Pinheiros","line":["Rua das Acácias","120","Apto 42"],"postalCode":"01415000","state":"São Paulo","type":"both","use":"home"}],"birthDate":"1974-12-25","contained":[{"resourceType":"Group","identifier":[{"system":"https://www.acmesaude.com.br/integracao/grupo/","value":"diabeticos-tipo-2","use":"usual"}],"type":"person","actual":true,"name":"Diabéticos tipo 2"}],"extension":[{"url":"https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-isLead","valueBoolean":false},{"url":"https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-sendWelcomingMessage","valueBoolean":true},{"url":"https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-createOnboardingScheduling","valueBoolean":true},{"url":"http://hl7.org/fhir/StructureDefinition/patient-genderIdentity","valueCodeableConcept":{"coding":[{"code":"male","display":"male","system":"http://hl7.org/fhir/gender-identity"}]}},{"url":"https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-religion","valueCodeableConcept":{"text":"Católica"}},{"url":"http://hl7.org/fhir/StructureDefinition/patient-cadavericDonor","valueBoolean":true}],"gender":"male","managingOrganization":{"identifier":{"system":"https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/sorting-hat-api--care-unit","value":"4","use":"usual"},"type":"Organization"},"maritalStatus":{"coding":[{"code":"M","display":"Married","system":"http://terminology.hl7.org/CodeSystem/v3-MaritalStatus"}]},"name":[{"family":"Silveira","given":["João","Pedro"],"text":"João Pedro Silveira","use":"official"},{"text":"Joana Silveira","use":"usual"}],"telecom":[{"system":"phone","use":"mobile","value":"5511987654321"},{"system":"email","use":"home","value":"joao.silveira@example.com"}]}'
};

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

**`Cadastro completo`**

```go Cadastro completo
package main

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

func main() {

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

	payload := strings.NewReader("{\n  \"identifier\": [\n    {\n      \"system\": \"https://www.acmesaude.com.br/integracao/paciente/\",\n      \"value\": \"507823709\",\n      \"use\": \"usual\"\n    },\n    {\n      \"system\": \"https://servicos.receita.fazenda.gov.br/servicos/cpf/\",\n      \"value\": \"39053344705\",\n      \"use\": \"official\"\n    }\n  ],\n  \"resourceType\": \"Patient\",\n  \"active\": true,\n  \"address\": [\n    {\n      \"city\": \"São Paulo\",\n      \"country\": \"Brasil\",\n      \"district\": \"Pinheiros\",\n      \"line\": [\n        \"Rua das Acácias\",\n        \"120\",\n        \"Apto 42\"\n      ],\n      \"postalCode\": \"01415000\",\n      \"state\": \"São Paulo\",\n      \"type\": \"both\",\n      \"use\": \"home\"\n    }\n  ],\n  \"birthDate\": \"1974-12-25\",\n  \"contained\": [\n    {\n      \"resourceType\": \"Group\",\n      \"identifier\": [\n        {\n          \"system\": \"https://www.acmesaude.com.br/integracao/grupo/\",\n          \"value\": \"diabeticos-tipo-2\",\n          \"use\": \"usual\"\n        }\n      ],\n      \"type\": \"person\",\n      \"actual\": true,\n      \"name\": \"Diabéticos tipo 2\"\n    }\n  ],\n  \"extension\": [\n    {\n      \"url\": \"https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-isLead\",\n      \"valueBoolean\": false\n    },\n    {\n      \"url\": \"https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-sendWelcomingMessage\",\n      \"valueBoolean\": true\n    },\n    {\n      \"url\": \"https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-createOnboardingScheduling\",\n      \"valueBoolean\": true\n    },\n    {\n      \"url\": \"http://hl7.org/fhir/StructureDefinition/patient-genderIdentity\",\n      \"valueCodeableConcept\": {\n        \"coding\": [\n          {\n            \"code\": \"male\",\n            \"display\": \"male\",\n            \"system\": \"http://hl7.org/fhir/gender-identity\"\n          }\n        ]\n      }\n    },\n    {\n      \"url\": \"https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-religion\",\n      \"valueCodeableConcept\": {\n        \"text\": \"Católica\"\n      }\n    },\n    {\n      \"url\": \"http://hl7.org/fhir/StructureDefinition/patient-cadavericDonor\",\n      \"valueBoolean\": true\n    }\n  ],\n  \"gender\": \"male\",\n  \"managingOrganization\": {\n    \"identifier\": {\n      \"system\": \"https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/sorting-hat-api--care-unit\",\n      \"value\": \"4\",\n      \"use\": \"usual\"\n    },\n    \"type\": \"Organization\"\n  },\n  \"maritalStatus\": {\n    \"coding\": [\n      {\n        \"code\": \"M\",\n        \"display\": \"Married\",\n        \"system\": \"http://terminology.hl7.org/CodeSystem/v3-MaritalStatus\"\n      }\n    ]\n  },\n  \"name\": [\n    {\n      \"family\": \"Silveira\",\n      \"given\": [\n        \"João\",\n        \"Pedro\"\n      ],\n      \"text\": \"João Pedro Silveira\",\n      \"use\": \"official\"\n    },\n    {\n      \"text\": \"Joana Silveira\",\n      \"use\": \"usual\"\n    }\n  ],\n  \"telecom\": [\n    {\n      \"system\": \"phone\",\n      \"use\": \"mobile\",\n      \"value\": \"5511987654321\"\n    },\n    {\n      \"system\": \"email\",\n      \"use\": \"home\",\n      \"value\": \"joao.silveira@example.com\"\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))

}
```

**`Cadastro completo`**

```ruby Cadastro completo
require 'uri'
require 'net/http'

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

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  \"identifier\": [\n    {\n      \"system\": \"https://www.acmesaude.com.br/integracao/paciente/\",\n      \"value\": \"507823709\",\n      \"use\": \"usual\"\n    },\n    {\n      \"system\": \"https://servicos.receita.fazenda.gov.br/servicos/cpf/\",\n      \"value\": \"39053344705\",\n      \"use\": \"official\"\n    }\n  ],\n  \"resourceType\": \"Patient\",\n  \"active\": true,\n  \"address\": [\n    {\n      \"city\": \"São Paulo\",\n      \"country\": \"Brasil\",\n      \"district\": \"Pinheiros\",\n      \"line\": [\n        \"Rua das Acácias\",\n        \"120\",\n        \"Apto 42\"\n      ],\n      \"postalCode\": \"01415000\",\n      \"state\": \"São Paulo\",\n      \"type\": \"both\",\n      \"use\": \"home\"\n    }\n  ],\n  \"birthDate\": \"1974-12-25\",\n  \"contained\": [\n    {\n      \"resourceType\": \"Group\",\n      \"identifier\": [\n        {\n          \"system\": \"https://www.acmesaude.com.br/integracao/grupo/\",\n          \"value\": \"diabeticos-tipo-2\",\n          \"use\": \"usual\"\n        }\n      ],\n      \"type\": \"person\",\n      \"actual\": true,\n      \"name\": \"Diabéticos tipo 2\"\n    }\n  ],\n  \"extension\": [\n    {\n      \"url\": \"https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-isLead\",\n      \"valueBoolean\": false\n    },\n    {\n      \"url\": \"https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-sendWelcomingMessage\",\n      \"valueBoolean\": true\n    },\n    {\n      \"url\": \"https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-createOnboardingScheduling\",\n      \"valueBoolean\": true\n    },\n    {\n      \"url\": \"http://hl7.org/fhir/StructureDefinition/patient-genderIdentity\",\n      \"valueCodeableConcept\": {\n        \"coding\": [\n          {\n            \"code\": \"male\",\n            \"display\": \"male\",\n            \"system\": \"http://hl7.org/fhir/gender-identity\"\n          }\n        ]\n      }\n    },\n    {\n      \"url\": \"https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-religion\",\n      \"valueCodeableConcept\": {\n        \"text\": \"Católica\"\n      }\n    },\n    {\n      \"url\": \"http://hl7.org/fhir/StructureDefinition/patient-cadavericDonor\",\n      \"valueBoolean\": true\n    }\n  ],\n  \"gender\": \"male\",\n  \"managingOrganization\": {\n    \"identifier\": {\n      \"system\": \"https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/sorting-hat-api--care-unit\",\n      \"value\": \"4\",\n      \"use\": \"usual\"\n    },\n    \"type\": \"Organization\"\n  },\n  \"maritalStatus\": {\n    \"coding\": [\n      {\n        \"code\": \"M\",\n        \"display\": \"Married\",\n        \"system\": \"http://terminology.hl7.org/CodeSystem/v3-MaritalStatus\"\n      }\n    ]\n  },\n  \"name\": [\n    {\n      \"family\": \"Silveira\",\n      \"given\": [\n        \"João\",\n        \"Pedro\"\n      ],\n      \"text\": \"João Pedro Silveira\",\n      \"use\": \"official\"\n    },\n    {\n      \"text\": \"Joana Silveira\",\n      \"use\": \"usual\"\n    }\n  ],\n  \"telecom\": [\n    {\n      \"system\": \"phone\",\n      \"use\": \"mobile\",\n      \"value\": \"5511987654321\"\n    },\n    {\n      \"system\": \"email\",\n      \"use\": \"home\",\n      \"value\": \"joao.silveira@example.com\"\n    }\n  ]\n}"

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

**`Cadastro completo`**

```java Cadastro completo
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/Patient")
  .header("x-api-key", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("{\n  \"identifier\": [\n    {\n      \"system\": \"https://www.acmesaude.com.br/integracao/paciente/\",\n      \"value\": \"507823709\",\n      \"use\": \"usual\"\n    },\n    {\n      \"system\": \"https://servicos.receita.fazenda.gov.br/servicos/cpf/\",\n      \"value\": \"39053344705\",\n      \"use\": \"official\"\n    }\n  ],\n  \"resourceType\": \"Patient\",\n  \"active\": true,\n  \"address\": [\n    {\n      \"city\": \"São Paulo\",\n      \"country\": \"Brasil\",\n      \"district\": \"Pinheiros\",\n      \"line\": [\n        \"Rua das Acácias\",\n        \"120\",\n        \"Apto 42\"\n      ],\n      \"postalCode\": \"01415000\",\n      \"state\": \"São Paulo\",\n      \"type\": \"both\",\n      \"use\": \"home\"\n    }\n  ],\n  \"birthDate\": \"1974-12-25\",\n  \"contained\": [\n    {\n      \"resourceType\": \"Group\",\n      \"identifier\": [\n        {\n          \"system\": \"https://www.acmesaude.com.br/integracao/grupo/\",\n          \"value\": \"diabeticos-tipo-2\",\n          \"use\": \"usual\"\n        }\n      ],\n      \"type\": \"person\",\n      \"actual\": true,\n      \"name\": \"Diabéticos tipo 2\"\n    }\n  ],\n  \"extension\": [\n    {\n      \"url\": \"https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-isLead\",\n      \"valueBoolean\": false\n    },\n    {\n      \"url\": \"https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-sendWelcomingMessage\",\n      \"valueBoolean\": true\n    },\n    {\n      \"url\": \"https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-createOnboardingScheduling\",\n      \"valueBoolean\": true\n    },\n    {\n      \"url\": \"http://hl7.org/fhir/StructureDefinition/patient-genderIdentity\",\n      \"valueCodeableConcept\": {\n        \"coding\": [\n          {\n            \"code\": \"male\",\n            \"display\": \"male\",\n            \"system\": \"http://hl7.org/fhir/gender-identity\"\n          }\n        ]\n      }\n    },\n    {\n      \"url\": \"https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-religion\",\n      \"valueCodeableConcept\": {\n        \"text\": \"Católica\"\n      }\n    },\n    {\n      \"url\": \"http://hl7.org/fhir/StructureDefinition/patient-cadavericDonor\",\n      \"valueBoolean\": true\n    }\n  ],\n  \"gender\": \"male\",\n  \"managingOrganization\": {\n    \"identifier\": {\n      \"system\": \"https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/sorting-hat-api--care-unit\",\n      \"value\": \"4\",\n      \"use\": \"usual\"\n    },\n    \"type\": \"Organization\"\n  },\n  \"maritalStatus\": {\n    \"coding\": [\n      {\n        \"code\": \"M\",\n        \"display\": \"Married\",\n        \"system\": \"http://terminology.hl7.org/CodeSystem/v3-MaritalStatus\"\n      }\n    ]\n  },\n  \"name\": [\n    {\n      \"family\": \"Silveira\",\n      \"given\": [\n        \"João\",\n        \"Pedro\"\n      ],\n      \"text\": \"João Pedro Silveira\",\n      \"use\": \"official\"\n    },\n    {\n      \"text\": \"Joana Silveira\",\n      \"use\": \"usual\"\n    }\n  ],\n  \"telecom\": [\n    {\n      \"system\": \"phone\",\n      \"use\": \"mobile\",\n      \"value\": \"5511987654321\"\n    },\n    {\n      \"system\": \"email\",\n      \"use\": \"home\",\n      \"value\": \"joao.silveira@example.com\"\n    }\n  ]\n}")
  .asString();
```

**`Cadastro completo`**

```php Cadastro completo
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://landing-zone-api.nilo.services/fhir/resources/Patient', [
  'body' => '{
  "identifier": [
    {
      "system": "https://www.acmesaude.com.br/integracao/paciente/",
      "value": "507823709",
      "use": "usual"
    },
    {
      "system": "https://servicos.receita.fazenda.gov.br/servicos/cpf/",
      "value": "39053344705",
      "use": "official"
    }
  ],
  "resourceType": "Patient",
  "active": true,
  "address": [
    {
      "city": "São Paulo",
      "country": "Brasil",
      "district": "Pinheiros",
      "line": [
        "Rua das Acácias",
        "120",
        "Apto 42"
      ],
      "postalCode": "01415000",
      "state": "São Paulo",
      "type": "both",
      "use": "home"
    }
  ],
  "birthDate": "1974-12-25",
  "contained": [
    {
      "resourceType": "Group",
      "identifier": [
        {
          "system": "https://www.acmesaude.com.br/integracao/grupo/",
          "value": "diabeticos-tipo-2",
          "use": "usual"
        }
      ],
      "type": "person",
      "actual": true,
      "name": "Diabéticos tipo 2"
    }
  ],
  "extension": [
    {
      "url": "https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-isLead",
      "valueBoolean": false
    },
    {
      "url": "https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-sendWelcomingMessage",
      "valueBoolean": true
    },
    {
      "url": "https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-createOnboardingScheduling",
      "valueBoolean": true
    },
    {
      "url": "http://hl7.org/fhir/StructureDefinition/patient-genderIdentity",
      "valueCodeableConcept": {
        "coding": [
          {
            "code": "male",
            "display": "male",
            "system": "http://hl7.org/fhir/gender-identity"
          }
        ]
      }
    },
    {
      "url": "https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-religion",
      "valueCodeableConcept": {
        "text": "Católica"
      }
    },
    {
      "url": "http://hl7.org/fhir/StructureDefinition/patient-cadavericDonor",
      "valueBoolean": true
    }
  ],
  "gender": "male",
  "managingOrganization": {
    "identifier": {
      "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/sorting-hat-api--care-unit",
      "value": "4",
      "use": "usual"
    },
    "type": "Organization"
  },
  "maritalStatus": {
    "coding": [
      {
        "code": "M",
        "display": "Married",
        "system": "http://terminology.hl7.org/CodeSystem/v3-MaritalStatus"
      }
    ]
  },
  "name": [
    {
      "family": "Silveira",
      "given": [
        "João",
        "Pedro"
      ],
      "text": "João Pedro Silveira",
      "use": "official"
    },
    {
      "text": "Joana Silveira",
      "use": "usual"
    }
  ],
  "telecom": [
    {
      "system": "phone",
      "use": "mobile",
      "value": "5511987654321"
    },
    {
      "system": "email",
      "use": "home",
      "value": "joao.silveira@example.com"
    }
  ]
}',
  'headers' => [
    'Content-Type' => 'application/json',
    'x-api-key' => '<apiKey>',
  ],
]);

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

**`Cadastro completo`**

```csharp Cadastro completo
using RestSharp;

var client = new RestClient("https://landing-zone-api.nilo.services/fhir/resources/Patient");
var request = new RestRequest(Method.POST);
request.AddHeader("x-api-key", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"identifier\": [\n    {\n      \"system\": \"https://www.acmesaude.com.br/integracao/paciente/\",\n      \"value\": \"507823709\",\n      \"use\": \"usual\"\n    },\n    {\n      \"system\": \"https://servicos.receita.fazenda.gov.br/servicos/cpf/\",\n      \"value\": \"39053344705\",\n      \"use\": \"official\"\n    }\n  ],\n  \"resourceType\": \"Patient\",\n  \"active\": true,\n  \"address\": [\n    {\n      \"city\": \"São Paulo\",\n      \"country\": \"Brasil\",\n      \"district\": \"Pinheiros\",\n      \"line\": [\n        \"Rua das Acácias\",\n        \"120\",\n        \"Apto 42\"\n      ],\n      \"postalCode\": \"01415000\",\n      \"state\": \"São Paulo\",\n      \"type\": \"both\",\n      \"use\": \"home\"\n    }\n  ],\n  \"birthDate\": \"1974-12-25\",\n  \"contained\": [\n    {\n      \"resourceType\": \"Group\",\n      \"identifier\": [\n        {\n          \"system\": \"https://www.acmesaude.com.br/integracao/grupo/\",\n          \"value\": \"diabeticos-tipo-2\",\n          \"use\": \"usual\"\n        }\n      ],\n      \"type\": \"person\",\n      \"actual\": true,\n      \"name\": \"Diabéticos tipo 2\"\n    }\n  ],\n  \"extension\": [\n    {\n      \"url\": \"https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-isLead\",\n      \"valueBoolean\": false\n    },\n    {\n      \"url\": \"https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-sendWelcomingMessage\",\n      \"valueBoolean\": true\n    },\n    {\n      \"url\": \"https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-createOnboardingScheduling\",\n      \"valueBoolean\": true\n    },\n    {\n      \"url\": \"http://hl7.org/fhir/StructureDefinition/patient-genderIdentity\",\n      \"valueCodeableConcept\": {\n        \"coding\": [\n          {\n            \"code\": \"male\",\n            \"display\": \"male\",\n            \"system\": \"http://hl7.org/fhir/gender-identity\"\n          }\n        ]\n      }\n    },\n    {\n      \"url\": \"https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-religion\",\n      \"valueCodeableConcept\": {\n        \"text\": \"Católica\"\n      }\n    },\n    {\n      \"url\": \"http://hl7.org/fhir/StructureDefinition/patient-cadavericDonor\",\n      \"valueBoolean\": true\n    }\n  ],\n  \"gender\": \"male\",\n  \"managingOrganization\": {\n    \"identifier\": {\n      \"system\": \"https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/sorting-hat-api--care-unit\",\n      \"value\": \"4\",\n      \"use\": \"usual\"\n    },\n    \"type\": \"Organization\"\n  },\n  \"maritalStatus\": {\n    \"coding\": [\n      {\n        \"code\": \"M\",\n        \"display\": \"Married\",\n        \"system\": \"http://terminology.hl7.org/CodeSystem/v3-MaritalStatus\"\n      }\n    ]\n  },\n  \"name\": [\n    {\n      \"family\": \"Silveira\",\n      \"given\": [\n        \"João\",\n        \"Pedro\"\n      ],\n      \"text\": \"João Pedro Silveira\",\n      \"use\": \"official\"\n    },\n    {\n      \"text\": \"Joana Silveira\",\n      \"use\": \"usual\"\n    }\n  ],\n  \"telecom\": [\n    {\n      \"system\": \"phone\",\n      \"use\": \"mobile\",\n      \"value\": \"5511987654321\"\n    },\n    {\n      \"system\": \"email\",\n      \"use\": \"home\",\n      \"value\": \"joao.silveira@example.com\"\n    }\n  ]\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

**`Cadastro completo`**

```swift Cadastro completo
import Foundation

let headers = [
  "x-api-key": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [
  "identifier": [
    [
      "system": "https://www.acmesaude.com.br/integracao/paciente/",
      "value": "507823709",
      "use": "usual"
    ],
    [
      "system": "https://servicos.receita.fazenda.gov.br/servicos/cpf/",
      "value": "39053344705",
      "use": "official"
    ]
  ],
  "resourceType": "Patient",
  "active": true,
  "address": [
    [
      "city": "São Paulo",
      "country": "Brasil",
      "district": "Pinheiros",
      "line": ["Rua das Acácias", "120", "Apto 42"],
      "postalCode": "01415000",
      "state": "São Paulo",
      "type": "both",
      "use": "home"
    ]
  ],
  "birthDate": "1974-12-25",
  "contained": [
    [
      "resourceType": "Group",
      "identifier": [
        [
          "system": "https://www.acmesaude.com.br/integracao/grupo/",
          "value": "diabeticos-tipo-2",
          "use": "usual"
        ]
      ],
      "type": "person",
      "actual": true,
      "name": "Diabéticos tipo 2"
    ]
  ],
  "extension": [
    [
      "url": "https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-isLead",
      "valueBoolean": false
    ],
    [
      "url": "https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-sendWelcomingMessage",
      "valueBoolean": true
    ],
    [
      "url": "https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-createOnboardingScheduling",
      "valueBoolean": true
    ],
    [
      "url": "http://hl7.org/fhir/StructureDefinition/patient-genderIdentity",
      "valueCodeableConcept": ["coding": [
          [
            "code": "male",
            "display": "male",
            "system": "http://hl7.org/fhir/gender-identity"
          ]
        ]]
    ],
    [
      "url": "https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-religion",
      "valueCodeableConcept": ["text": "Católica"]
    ],
    [
      "url": "http://hl7.org/fhir/StructureDefinition/patient-cadavericDonor",
      "valueBoolean": true
    ]
  ],
  "gender": "male",
  "managingOrganization": [
    "identifier": [
      "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/sorting-hat-api--care-unit",
      "value": "4",
      "use": "usual"
    ],
    "type": "Organization"
  ],
  "maritalStatus": ["coding": [
      [
        "code": "M",
        "display": "Married",
        "system": "http://terminology.hl7.org/CodeSystem/v3-MaritalStatus"
      ]
    ]],
  "name": [
    [
      "family": "Silveira",
      "given": ["João", "Pedro"],
      "text": "João Pedro Silveira",
      "use": "official"
    ],
    [
      "text": "Joana Silveira",
      "use": "usual"
    ]
  ],
  "telecom": [
    [
      "system": "phone",
      "use": "mobile",
      "value": "5511987654321"
    ],
    [
      "system": "email",
      "use": "home",
      "value": "joao.silveira@example.com"
    ]
  ]
] as [String : Any]

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

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

E a resposta traz as que a Nilo gera, incluindo a composta `patient-paths`:

### Response (200)

```json
{
  "identifier": [
    {
      "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/hippocrates-api--patient",
      "value": "48210",
      "use": "usual"
    },
    {
      "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/care-api--patient-v2-token",
      "value": "0f1c2d3e-4a5b-6c7d-8e9f-a0b1c2d3e4f5",
      "use": "usual"
    },
    {
      "system": "https://www.acmesaude.com.br/integracao/paciente/",
      "value": "507823709",
      "use": "usual"
    },
    {
      "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/care-api--patient-v2",
      "value": "31502",
      "use": "usual"
    }
  ],
  "resourceType": "Patient",
  "active": true,
  "contained": [
    {
      "resourceType": "Group",
      "identifier": [
        {
          "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/sorting-hat-api--cohort",
          "value": "904",
          "use": "usual"
        },
        {
          "system": "https://www.acmesaude.com.br/integracao/grupo/",
          "value": "diabeticos-tipo-2",
          "use": "usual"
        }
      ],
      "type": "person",
      "actual": true,
      "name": "Diabéticos tipo 2"
    }
  ],
  "communication": [
    {
      "language": {
        "coding": [
          {
            "code": "pt-BR",
            "display": "Portuguese (Brazil)",
            "system": "urn:ietf:bcp:47"
          }
        ]
      },
      "preferred": true
    }
  ],
  "extension": [
    {
      "url": "http://hl7.org/fhir/StructureDefinition/patient-genderIdentity",
      "valueCodeableConcept": {
        "coding": [
          {
            "code": "non-disclose",
            "display": "does not wish to disclose",
            "system": "http://hl7.org/fhir/gender-identity"
          }
        ]
      }
    },
    {
      "url": "https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-cohort",
      "valueIdentifier": {
        "system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/sorting-hat-api--cohort",
        "use": "usual",
        "value": "904"
      }
    },
    {
      "url": "https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-sendWelcomingMessage",
      "valueBoolean": true
    },
    {
      "url": "https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-createOnboardingScheduling",
      "valueBoolean": true
    },
    {
      "extension": [
        {
          "url": "https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-paths-home",
          "valueUrl": "https://acme.nilocare.app/patients/48210"
        }
      ],
      "url": "https://landing-zone-api.nilo.services/fhir/resources/StructureDefinition/patient-paths"
    }
  ],
  "gender": "other",
  "id": "ba200cfa-dae0-46cf-81a0-008e3f7414b4",
  "meta": {
    "lastUpdated": "2026-08-06T13:04:12.905000Z",
    "versionId": "MTc4NjAyMTQ1MjkwNTAwMDM2Nw"
  },
  "name": [
    {
      "family": "Silveira",
      "given": [
        "João"
      ],
      "text": "João Silveira",
      "use": "official"
    }
  ]
}
```

## Extensões que a Nilo não conhece

Fora as obrigatórias, mande uma extensão só quando ela for relevante para aquele recurso: omitir
uma extensão opcional preserva o valor que já está gravado.

> **Note**
>
> Uma extensão cuja URL a Nilo não reconhece não é recusada nem descartada — ela é **gravada** no
> recurso e volta nas leituras seguintes, sem nenhum efeito sobre os dados da Nilo. Isso é útil para
> carregar metadado seu, e é uma armadilha quando a intenção era usar uma extensão da plataforma e a
> URL saiu errada: o payload volta parecendo correto.