8 · Admissão e alta (Mais Saúde)¶
Sistema: Mais Saúde (Hospital) · Recursos: Encounter (class IMP) + ServiceRequest (atualização)
O hospital enxerga os pacientes encaminhados lendo as Task do SiGO e
cruzando cada uma com o ServiceRequest apontado pelo focus. Na admissão,
cria a internação e conclui o pedido de regulação; na alta, atualiza a mesma
internação.
Leitura — encaminhados pela regulação¶
curl 'http://localhost:8080/fhir/Task?status=completed&_include=Task:focus&_include=Task:patient'
O _include duplo traz, no mesmo Bundle, o ServiceRequest (focus) e o
Patient de cada Task. O Mais Saúde exibe apenas as tasks cujo
ServiceRequest ainda está active — pedido completed significa paciente
já admitido.
Gravação — admissão¶
Duas operações (nesta ordem):
1. POST /Encounter — a internação, class IMP, apontando o pedido em
basedOn e o leito em location:
curl -X POST 'http://localhost:8080/fhir/Encounter' \
-H 'Content-Type: application/fhir+json' \
-d @internacao.json
{
"resourceType": "Encounter",
"status": "in-progress",
"class": {
"system": "http://terminology.hl7.org/CodeSystem/v3-ActCode",
"code": "IMP",
"display": "inpatient encounter"
},
"type": [{"text": "Internação hospitalar"}],
"subject": {"reference": "Patient/42"},
"basedOn": [{"reference": "ServiceRequest/15"}],
"period": {"start": "2026-09-10T11:20:00-03:00"},
"reasonCode": [
{"text": "Dengue grave — plaquetopenia acentuada e sinais de alarme. Necessita leito de internação com urgência."}
],
"serviceProvider": {"display": "Hospital Estadual Demo"},
"location": [{"location": {"display": "Leito 12 — Enfermaria B"}, "status": "active"}],
"meta": {
"tag": [
{
"system": "https://demo-cbis.example/fhir/source-system",
"code": "maissaude",
"display": "Mais Saúde"
}
]
}
}
2. PUT /ServiceRequest/15 — conclui o pedido de regulação. O recurso é
lido do servidor, o status muda para completed e o corpo inteiro é
reenviado, preservando a meta.tag isus-aps do criador:
curl -X PUT 'http://localhost:8080/fhir/ServiceRequest/15' \
-H 'Content-Type: application/fhir+json' \
-d @pedido-concluido.json
Com o pedido completed, o paciente sai da lista de encaminhados do próprio
hospital e da fila do SiGO.
Gravação — alta¶
A alta é um PUT na mesma internação: status vira finished, o
period.end é preenchido e o destino da alta entra em
hospitalization.dischargeDisposition (código home, com as orientações no
text):
curl -X PUT 'http://localhost:8080/fhir/Encounter/23' \
-H 'Content-Type: application/fhir+json' \
-d @alta.json
{
"resourceType": "Encounter",
"id": "23",
"status": "finished",
"period": {
"start": "2026-09-10T11:20:00-03:00",
"end": "2026-09-12T09:00:00-03:00"
},
"hospitalization": {
"dischargeDisposition": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/discharge-disposition",
"code": "home",
"display": "Home"
}
],
"text": "Alta melhorada — manter hidratação oral e retorno se sinais de alarme."
}
}
}
PUT reenvia o recurso completo
O exemplo mostra só os campos alterados; na prática o Mais Saúde lê o
Encounter do servidor, altera esses campos e reenvia o recurso inteiro
(class, subject, basedOn, location e a meta.tag seguem intactos).
Leitura — pacientes internados¶
curl 'http://localhost:8080/fhir/Encounter?class=IMP&status=in-progress&_include=Encounter:subject'