Pular para conteúdo

3 · Solicitação do exame

Sistema: iSUS APS (Atenção Primária) · Recurso: ServiceRequest (categoria laboratorio)

O médico solicita um hemograma completo (LOINC 58410-2) para investigar a síndrome febril. O pedido nasce active e, por causa da categoria laboratorio, cai direto na worklist do Lab+ (passo 4) — sem nenhuma chamada entre os dois sistemas.

Gravação — POST /ServiceRequest

curl -X POST 'http://localhost:8080/fhir/ServiceRequest' \
  -H 'Content-Type: application/fhir+json' \
  -d @pedido-exame.json
pedido-exame.json
{
  "resourceType": "ServiceRequest",
  "status": "active",
  "intent": "order",
  "category": [
    {
      "coding": [
        {
          "system": "https://demo-cbis.example/fhir/category",
          "code": "laboratorio",
          "display": "Exame laboratorial"
        }
      ]
    }
  ],
  "code": {
    "coding": [
      {"system": "http://loinc.org", "code": "58410-2", "display": "Hemograma completo"}
    ],
    "text": "Hemograma completo"
  },
  "subject": {"reference": "Patient/42"},
  "encounter": {"reference": "Encounter/7"},
  "authoredOn": "2026-09-10T09:35:00-03:00",
  "requester": {"display": "UBS Vila Esperança — iSUS APS"},
  "reasonCode": [
    {"text": "Investigação de síndrome febril aguda — suspeita de dengue"}
  ],
  "meta": {
    "tag": [
      {
        "system": "https://demo-cbis.example/fhir/source-system",
        "code": "isus-aps",
        "display": "iSUS APS"
      }
    ]
  }
}

Resposta: 201 Created — por exemplo ServiceRequest/10.

Leitura — acompanhamento pelo solicitante

O iSUS APS acompanha o pedido com duas buscas e casa o laudo ao pedido pelo basedOn do DiagnosticReport:

# Pedidos de exame do paciente
curl 'http://localhost:8080/fhir/ServiceRequest?subject=Patient/42&category=https://demo-cbis.example/fhir/category|laboratorio'

# Laudos do paciente (o campo basedOn aponta o ServiceRequest de origem)
curl 'http://localhost:8080/fhir/DiagnosticReport?subject=Patient/42'

Enquanto o laudo não existe, a UI mostra "Aguardando resultado"; quando o Lab+ publica (passo 5), o mesmo par de buscas passa a devolver o DiagnosticReport com basedOn = ServiceRequest/10 e o pedido aparece como "Concluído".