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"
}
}
]
}