Pular para conteúdo

1 · Cadastro do cidadão

Sistema: iSUS APS (Atenção Primária) · Recurso: Patient

A recepção da UBS cadastra o cidadão (ou seleciona o paciente de demonstração). O cadastro é idempotente por CPF: repetir a operação com o mesmo CPF não duplica o paciente.

Gravação — POST /Patient com create condicional

O header If-None-Exist transforma o POST em um create condicional: o servidor só cria o recurso se nenhum Patient com aquele identificador existir; caso contrário, responde com o recurso já existente.

curl -X POST 'http://localhost:8080/fhir/Patient' \
  -H 'Content-Type: application/fhir+json' \
  -H 'If-None-Exist: identifier=https://demo-cbis.example/fhir/cpf|00000000000' \
  -d @paciente.json
paciente.json
{
  "resourceType": "Patient",
  "active": true,
  "identifier": [
    {"system": "https://demo-cbis.example/fhir/cpf", "value": "00000000000"}
  ],
  "name": [{"text": "João da Silva"}],
  "birthDate": "1987-03-12",
  "gender": "male",
  "meta": {
    "tag": [
      {
        "system": "https://demo-cbis.example/fhir/source-system",
        "code": "isus-aps",
        "display": "iSUS APS"
      }
    ]
  }
}

Resposta: 201 Created com o recurso criado (ou 200 OK com o existente). O id atribuído pelo servidor (por exemplo Patient/42) referencia o paciente em todos os passos seguintes.

Leitura — busca por CPF

Como qualquer sistema localiza o cidadão:

curl 'http://localhost:8080/fhir/Patient?identifier=https://demo-cbis.example/fhir/cpf|00000000000'
Resposta (Bundle searchset, resumida)
{
  "resourceType": "Bundle",
  "type": "searchset",
  "total": 1,
  "entry": [
    {
      "resource": {
        "resourceType": "Patient",
        "id": "42",
        "identifier": [
          {"system": "https://demo-cbis.example/fhir/cpf", "value": "00000000000"}
        ],
        "name": [{"text": "João da Silva"}],
        "birthDate": "1987-03-12"
      }
    }
  ]
}