Skip to navigation

Gestação

A gestação é o acompanhamento pré-natal da paciente na Nilo: quando começou, o risco, se é única ou múltipla, e como terminou — em parto ou em aborto. Cada paciente tem no máximo uma gestação em curso por vez.

No FHIR ela é uma Observation com o código LOINC 82810-3 (Pregnancy status). É uma observação só por gestação, não uma por dado: o status vai em valueCodeableConcept, e DUM, DPP, data do parto, risco e tipo vão cada um num component da mesma observação.

A gestação é, hoje, o único tipo de Observation que a Nilo aceita. O endpoint é genérico, mas um code sem o LOINC 82810-3 é recusado com not-supported — não há como gravar sinais vitais, resultados de exame ou outras observações por aqui.

Campos

CampoObrigatórioO que significa
identifiersim na práticaChaves da gestação. É por aqui que a API decide entre criar e atualizar
statussimStatus do registro, não da gestação: final, amended, corrected ou preliminary. Na leitura é sempre final
codesimO tipo de observação: um coding http://loinc.org com 82810-3, em qualquer posição
subjectsimA paciente, por um identificador dela já cadastrado
valueCodeableConceptsimO status da gestação — veja Catálogos
effectivePeriod.startnãoNa escrita, a DUM quando o component 8665-2 não vem. Na leitura, veja Datas
effectivePeriod.endnãoData de encerramento. Recusado em prenatal
component 8665-2nãoDUM (Last menstrual period start date), em valueDateTime
component 11778-8nãoDPP (Delivery date Estimated). Só resposta: calculada pela plataforma a partir da DUM
component 93857-1nãoData do parto (Date and time of obstetric delivery), em valueDateTime
component risknãoRisco da gestação, em valueCodeableConcept. O code é risk no system …/CodeSystem/pregnancy-observation
component 57722-1nãoTipo da gestação (Birth plurality of Pregnancy), em valueCodeableConcept
idnãoSó resposta: o identificador Nilo FHIR do recurso
metanãoSó resposta: metadados da gravação

Os component são reconhecidos pelo code, não pela posição na lista, e a ordem em que você os manda não importa.

Campos que a Nilo não usa

A Observation canônica tem campos que esta integração não lê nem grava: basedOn, partOf, category, focus, encounter, issued, performer, dataAbsentReason, interpretation, note, bodySite, method, specimen, device, referenceRange, hasMember, derivedFrom e todo value[x] que não seja valueCodeableConcept. Ficam fora da referência de propósito. O servidor os aceita, guarda no recurso FHIR e devolve nas leituras seguintes, mas nada na plataforma passa a usá-los.

effectiveDateTime, effectiveInstant e effectiveTiming são diferentes: eles não são ignorados, são recusados. O único effective[x] aceito é effectivePeriod.

Um component com um code que não está na tabela acima não é erro: é ignorado na escrita e some do recurso na regravação. O mesmo vale para a DPP que você enviar — ela não é lida, e a leitura traz a que a plataforma calculou.

Catálogos

Os três catálogos da gestação são da Nilo, e o system de cada um é {host}/fhir/resources/CodeSystem/<nome>.

Status

O status vai em valueCodeableConcept, num coding com o system {host}/fhir/resources/CodeSystem/pregnancy-status. Ele é obrigatório: sem esse coding, a escrita é recusada, mesmo que venha um LOINC.

CódigoSignificadoLOINC aceito junto (opcional)
prenatalGestação em cursoLA15173-0 (Pregnant)
postpartumEncerrada por partoLA26683-5 (Not pregnant)
abortionEncerrada por abortoLA26683-5 (Not pregnant)

O coding LOINC no system http://loinc.org é opcional. Se vier, tem de concordar com o status da Nilo pela tabela acima; um LOINC que contradiz o status é recusado com business-rule, e um LOINC fora desses dois códigos, com code-invalid. Na leitura, os dois coding vêm sempre.

Risco

component com o code risk no system {host}/fhir/resources/CodeSystem/pregnancy-observation, e o valor em valueCodeableConcept no system {host}/fhir/resources/CodeSystem/pregnancy-risk:

CódigoSignificado
lowRisco baixo
moderateRisco moderado
highRisco alto

Tipo

component com o code LOINC 57722-1, e o valor em valueCodeableConcept no system {host}/fhir/resources/CodeSystem/pregnancy-type:

CódigoSignificado
singletonGestação única
twinsGemelar
triplet_or_moreTrigemelar ou mais

Esses catálogos são fixos e estão completos nesta página. Ao contrário do flag-code, eles não são servidos por GET /fhir/resources/CodeSystem/{nome} — veja Catálogo de códigos.

Cadastrar ou atualizar

Não há endpoint separado para criar e atualizar. O mesmo POST faz os dois, e quem decide é o identifier: se já existir uma gestação com aquele par system + value, ela é atualizada; se não existir, é criada.

POST
/fhir/resources/Observation
curl -X POST https://landing-zone-api.nilo.services/fhir/resources/Observation \
-H "x-api-key: <apiKey>" \
-H "Content-Type: application/json" \
-d '{
"code": {
"coding": [
{
"code": "82810-3",
"display": "Pregnancy status",
"system": "http://loinc.org"
}
]
},
"resourceType": "Observation",
"status": "final",
"subject": {
"identifier": {
"system": "https://www.acmesaude.com.br/integracao/paciente/",
"value": "507823709",
"use": "usual"
},
"type": "Patient"
},
"valueCodeableConcept": {
"coding": [
{
"code": "prenatal",
"system": "https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/pregnancy-status"
},
{
"code": "LA15173-0",
"display": "Pregnant",
"system": "http://loinc.org"
}
]
},
"component": [
{
"code": {
"coding": [
{
"code": "8665-2",
"display": "Last menstrual period start date",
"system": "http://loinc.org"
}
]
},
"valueDateTime": "2026-03-01"
},
{
"code": {
"coding": [
{
"code": "risk",
"system": "https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/pregnancy-observation"
}
]
},
"valueCodeableConcept": {
"coding": [
{
"code": "high",
"system": "https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/pregnancy-risk"
}
]
}
},
{
"code": {
"coding": [
{
"code": "57722-1",
"display": "Birth plurality of Pregnancy",
"system": "http://loinc.org"
}
]
},
"valueCodeableConcept": {
"coding": [
{
"code": "twins",
"system": "https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/pregnancy-type"
}
]
}
}
],
"identifier": [
{
"system": "https://www.acmesaude.com.br/integracao/gestacao/",
"value": "3318",
"use": "usual"
}
]
}'

A resposta devolve o recurso como ficou gravado, sem envelope:

Response
{
"code": {
"coding": [
{
"code": "82810-3",
"display": "Pregnancy status",
"system": "http://loinc.org"
}
]
},
"resourceType": "Observation",
"status": "final",
"subject": {
"identifier": {
"system": "https://www.acmesaude.com.br/integracao/paciente/",
"value": "507823709",
"use": "usual"
},
"type": "Patient",
"reference": "Patient/ba200cfa-dae0-46cf-81a0-008e3f7414b4"
},
"valueCodeableConcept": {
"coding": [
{
"code": "prenatal",
"system": "https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/pregnancy-status"
},
{
"code": "LA15173-0",
"display": "Pregnant",
"system": "http://loinc.org"
}
]
},
"component": [
{
"code": {
"coding": [
{
"code": "8665-2",
"display": "Last menstrual period start date",
"system": "http://loinc.org"
}
]
},
"valueDateTime": "2026-03-01"
},
{
"code": {
"coding": [
{
"code": "11778-8",
"display": "Delivery date Estimated",
"system": "http://loinc.org"
}
]
},
"valueDateTime": "2026-12-06"
},
{
"code": {
"coding": [
{
"code": "risk",
"system": "https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/pregnancy-observation"
}
]
},
"valueCodeableConcept": {
"coding": [
{
"code": "high",
"system": "https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/pregnancy-risk"
}
]
}
},
{
"code": {
"coding": [
{
"code": "57722-1",
"display": "Birth plurality of Pregnancy",
"system": "http://loinc.org"
}
]
},
"valueCodeableConcept": {
"coding": [
{
"code": "twins",
"system": "https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/pregnancy-type"
}
]
}
}
],
"effectivePeriod": {
"start": "2026-03-01"
},
"id": "5e2d9a41-7c3b-4f08-9b6e-2a1f4c8d7e53",
"identifier": [
{
"system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/hippocrates-api--pregnancy",
"value": "18342",
"use": "usual"
},
{
"system": "https://www.acmesaude.com.br/integracao/gestacao/",
"value": "3318",
"use": "usual"
}
]
}

Ao lado do seu identificador vem o identificador Nilo da gestação, no system …/NamingSystem/hippocrates-api--pregnancy. Ele também serve para atualizar: é o que você usa para mexer numa gestação que foi criada na plataforma, e não por você — veja Uma gestação em curso por paciente.

O identifier não é exigido pela validação, e é por isso que ele é obrigatório na prática: sem identificador a API não tem como reconhecer a gestação, e cada POST tenta criar uma nova — que é recusada enquanto a paciente tiver uma gestação em curso. Mande sempre a sua chave.

A paciente

subject é obrigatório e tem de trazer um identifier da paciente; só reference não basta. A paciente tem de existir — a gestação não cria paciente. Cadastre a Paciente primeiro.

A paciente de uma gestação não muda. Reenviar um identifier já gravado apontando para outra paciente é recusado com business-rule; para registrar a gestação de outra paciente, use um identifier novo.

Só pacientes do sexo biológico feminino podem ter gestação. Essa regra é da plataforma, não da integração: a recusa vem com business-rule e a mensagem que a plataforma devolver, sem expression.

Datas

Toda data da gestação exige data completa. 2026-03 ou 2026 são recusados com invalid.

  • DUM. Vem do component 8665-2. Sem ele, a API lê effectivePeriod.start como DUM. Vindo os dois, vale o component.
  • Data do parto. Vem do component 93857-1.
  • Data de encerramento. Vem de effectivePeriod.end — veja Encerrar uma gestação.

Nos component, a hora é descartada: só o dia é gravado. Em effectivePeriod.end a hora é mantida; um end só com a data é lido como meia-noite, e um end com hora e sem fuso, como horário de Brasília (America/Sao_Paulo).

Na leitura, effectivePeriod.start não é sempre a DUM: numa gestação sem DUM, ele traz a data em que a gestação foi criada na plataforma. Como a escrita lê start como DUM quando falta o component 8665-2, reenviar esse recurso como foi lido grava a data de criação como DUM.

Se o seu integrador lê gestações e as reenvia, confira o component 8665-2 antes: se ele não veio, retire effectivePeriod.start do payload.

Atualização parcial

A gestação aceita atualização parcial. Risco, tipo, DUM e data do parto só são gravados quando vêm no payload: um component ausente mantém o valor que já estava lá.

Requisição — Atualização parcial
{
"resourceType": "Observation",
"identifier": [
{
"use": "usual",
"system": "https://www.acmesaude.com.br/integracao/gestacao/",
"value": "3318"
}
],
"status": "final",
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "82810-3"
}
]
},
"subject": {
"type": "Patient",
"identifier": {
"use": "usual",
"system": "https://www.acmesaude.com.br/integracao/paciente/",
"value": "507823709"
}
},
"valueCodeableConcept": {
"coding": [
{
"system": "https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/pregnancy-status",
"code": "prenatal"
}
]
},
"component": [
{
"code": {
"coding": [
{
"system": "https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/pregnancy-observation",
"code": "risk"
}
]
},
"valueCodeableConcept": {
"coding": [
{
"system": "https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/pregnancy-risk",
"code": "moderate"
}
]
}
}
]
}

Três dados, porém, são sempre aplicados: a paciente, o status e a data de encerramento. O status é obrigatório em todo envio, e é ele que decide a data de encerramento.

O status enviado substitui o gravado, sem exceção. Reenviar uma gestação encerrada com prenatal — um payload antigo, guardado antes do encerramento, por exemplo — apaga a data de encerramento. Não guarde payloads de gestação para reenvio: monte o envio a partir do status atual.

Encerrar uma gestação

Uma gestação termina quando o status muda para postpartum (parto) ou abortion (aborto). A data de encerramento é escolhida nesta ordem:

  1. effectivePeriod.end, se vier no payload;
  2. senão, a data de encerramento que já estava gravada;
  3. senão, em abortion, o momento da gravação;
  4. senão, em postpartum, a meia-noite (horário de Brasília) do dia do parto — o do component 93857-1 do payload ou, sem ele, o já gravado;
  5. sem nenhuma dessas, postpartum é recusado com required.
Requisição — Encerramento por parto
{
"resourceType": "Observation",
"identifier": [
{
"use": "usual",
"system": "https://www.acmesaude.com.br/integracao/gestacao/",
"value": "3318"
}
],
"status": "final",
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "82810-3"
}
]
},
"subject": {
"type": "Patient",
"identifier": {
"use": "usual",
"system": "https://www.acmesaude.com.br/integracao/paciente/",
"value": "507823709"
}
},
"valueCodeableConcept": {
"coding": [
{
"system": "https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/pregnancy-status",
"code": "postpartum"
},
{
"system": "http://loinc.org",
"code": "LA26683-5",
"display": "Not pregnant"
}
]
},
"component": [
{
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "93857-1",
"display": "Date and time of obstetric delivery"
}
]
},
"valueDateTime": "2026-11-29"
}
]
}
Requisição — Encerramento por aborto
{
"resourceType": "Observation",
"identifier": [
{
"use": "usual",
"system": "https://www.acmesaude.com.br/integracao/gestacao/",
"value": "3318"
}
],
"status": "final",
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "82810-3"
}
]
},
"subject": {
"type": "Patient",
"identifier": {
"use": "usual",
"system": "https://www.acmesaude.com.br/integracao/paciente/",
"value": "507823709"
}
},
"valueCodeableConcept": {
"coding": [
{
"system": "https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/pregnancy-status",
"code": "abortion"
}
]
},
"effectivePeriod": {
"end": "2026-05-10"
}
}

Em prenatal, effectivePeriod.end é recusado com business-rule: para encerrar, mude o status.

Não há como apagar uma gestação por esta API: a escrita nunca responde 204, e entered-in-error e cancelled em status são recusados. Uma gestação registrada por engano tem de ser removida na plataforma; a remoção é propagada para o store FHIR pela sincronização.

Uma gestação em curso por paciente

A paciente tem no máximo uma gestação prenatal. Enviar uma gestação com um identifier novo enquanto ela tem outra em curso é recusado:

Resposta 400 — Gestação ativa existente
{
"resourceType": "OperationOutcome",
"issue": [
{
"severity": "error",
"code": "business-rule",
"expression": [
"Observation.subject"
],
"details": {
"text": "The patient already has an active pregnancy. Search the patient's pregnancy Observation and resend it with one of its identifiers to update it, or finish it (status postpartum or abortion) before sending a new one."
}
}
]
}

A recusa costuma aparecer quando a gestação em curso foi registrada na plataforma, e o seu sistema não conhece a chave dela. Para atualizá-la:

  1. Busque as gestações da paciente: GET /fhir/resources/Observation?patient.identifier=<system>|<value>&code=http://loinc.org|82810-3.
  2. Pegue, na gestação prenatal, um dos identifier — o identificador Nilo, no system …/NamingSystem/hippocrates-api--pregnancy, sempre está lá.
  3. Reenvie a gestação com esse identifier. Pode mandar o seu junto, na mesma lista.

Para registrar uma gestação nova, encerre a atual antes (postpartum ou abortion). Uma gestação encerrada não impede o registro de uma nova.

Erros

Recusa é 400, e o corpo é um OperationOutcome: issue[].expression aponta o campo culpado e issue[].details.text explica o motivo.

codeexpressionMensagemQuando
not-supportedObservation.codeObservation code is not supported. Supported codes: http://loinc.org|82810-3 (Pregnancy status).code sem o LOINC 82810-3
not-supportedObservation.statusObservation status '<status>' is not supported for a pregnancy. Accepted values: final, amended, corrected, preliminary.status fora dos quatro aceitos
not-supportedObservation.effective[x]Only effectivePeriod is supported for a pregnancy.effectiveDateTime, effectiveInstant ou effectiveTiming
requiredObservation.valueCodeableConceptA coding with system …/CodeSystem/pregnancy-status is required to inform the pregnancy status.Status sem o coding da Nilo
code-invalidObservation.valueCodeableConceptUnknown code '<código>'. Accepted values: prenatal, postpartum, abortion.Status fora do catálogo
code-invalidObservation.valueCodeableConceptUnknown LOINC answer '<código>'. Accepted values: LA15173-0, LA26683-5.LOINC fora dos dois aceitos
business-ruleObservation.valueCodeableConceptThe LOINC answer <código> (<nome>) contradicts the pregnancy status '<status>'. …LOINC contradiz o status
business-ruleObservation.effectivePeriod.endA prenatal pregnancy cannot have an end. …end em prenatal
requiredObservation.effectivePeriod.endA postpartum pregnancy requires effectivePeriod.end or the component 93857-1 (…).postpartum sem data de encerramento possível
invalidObservation.effectivePeriod.start · .endA full date is required.Data incompleta
requiredObservation.subject · Observation.subject.identifierField is requiredsubject ausente ou sem identifier
not-foundObservation.subjectPatient does not existO identificador da paciente não resolve
business-ruleObservation.subjectThe pregnancy belongs to another patient. …identifier já gravado com outra paciente
business-ruleObservation.subjectThe patient already has an active pregnancy. …Gestação nova com outra em curso
requiredObservation.component.valueDateTimeA valueDateTime is required in the component <código> (<nome>).component de data sem valueDateTime
invalidObservation.component.valueDateTimeA full date is required in the component <código> (<nome>).Data incompleta num component
requiredObservation.component.valueCodeableConceptA coding with system <system> is required in the component <risk|57722-1>.Risco ou tipo sem o coding da Nilo
code-invalidObservation.component.valueCodeableConceptUnknown code '<código>'. Accepted values: …Risco ou tipo fora do catálogo
business-rule—mensagem da plataformaRecusa da plataforma, como paciente que não é do sexo feminino

Os payloads completos das recusas mais comuns estão na aba Referência, em POST /fhir/resources/Observation. Três deles:

Resposta 400 — Status sem coding Nilo
{
"resourceType": "OperationOutcome",
"issue": [
{
"severity": "error",
"code": "required",
"expression": [
"Observation.valueCodeableConcept"
],
"details": {
"text": "A coding with system https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/pregnancy-status is required to inform the pregnancy status."
}
}
]
}
Resposta 400 — LOINC contraditório
{
"resourceType": "OperationOutcome",
"issue": [
{
"severity": "error",
"code": "business-rule",
"expression": [
"Observation.valueCodeableConcept"
],
"details": {
"text": "The LOINC answer LA15173-0 (Pregnant) contradicts the pregnancy status 'postpartum'. Send LA26683-5 (Not pregnant) or omit the LOINC coding."
}
}
]
}
Resposta 400 — Parto sem data
{
"resourceType": "OperationOutcome",
"issue": [
{
"severity": "error",
"code": "required",
"expression": [
"Observation.effectivePeriod.end"
],
"details": {
"text": "A postpartum pregnancy requires effectivePeriod.end or the component 93857-1 (Date and time of obstetric delivery)."
}
}
]
}

Buscar

GET
/fhir/resources/Observation
curl -G https://landing-zone-api.nilo.services/fhir/resources/Observation \
-H "x-api-key: <apiKey>" \
-d _count=50 \
-d _lastUpdated=eq2013-01-14 \
--data-urlencode code=http://loinc.org|82810-3 \
-d date=ge2026-01-01 \
--data-urlencode identifier=https://www.acmesaude.com.br/integracao/gestacao/|3318 \
--data-urlencode patient.identifier=https://www.acmesaude.com.br/integracao/paciente/|507823709 \
--data-urlencode value-concept=https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/pregnancy-status|prenatal

A resposta é sempre um Bundle do tipo searchset, mesmo quando há um único resultado:

Response
{
"resourceType": "Bundle",
"type": "searchset",
"entry": [
{
"fullUrl": "https://landing-zone-api.nilo.services/fhir/resources/Observation/5e2d9a41-7c3b-4f08-9b6e-2a1f4c8d7e53",
"resource": {
"code": {
"coding": [
{
"code": "82810-3",
"display": "Pregnancy status",
"system": "http://loinc.org"
}
]
},
"resourceType": "Observation",
"status": "final",
"subject": {
"identifier": {
"system": "https://www.acmesaude.com.br/integracao/paciente/",
"value": "507823709",
"use": "usual"
},
"type": "Patient",
"reference": "Patient/ba200cfa-dae0-46cf-81a0-008e3f7414b4"
},
"valueCodeableConcept": {
"coding": [
{
"code": "prenatal",
"system": "https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/pregnancy-status"
},
{
"code": "LA15173-0",
"display": "Pregnant",
"system": "http://loinc.org"
}
]
},
"component": [
{
"code": {
"coding": [
{
"code": "8665-2",
"display": "Last menstrual period start date",
"system": "http://loinc.org"
}
]
},
"valueDateTime": "2026-03-01"
},
{
"code": {
"coding": [
{
"code": "11778-8",
"display": "Delivery date Estimated",
"system": "http://loinc.org"
}
]
},
"valueDateTime": "2026-12-06"
},
{
"code": {
"coding": [
{
"code": "risk",
"system": "https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/pregnancy-observation"
}
]
},
"valueCodeableConcept": {
"coding": [
{
"code": "high",
"system": "https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/pregnancy-risk"
}
]
}
},
{
"code": {
"coding": [
{
"code": "57722-1",
"display": "Birth plurality of Pregnancy",
"system": "http://loinc.org"
}
]
},
"valueCodeableConcept": {
"coding": [
{
"code": "twins",
"system": "https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/pregnancy-type"
}
]
}
}
],
"effectivePeriod": {
"start": "2026-03-01"
},
"id": "5e2d9a41-7c3b-4f08-9b6e-2a1f4c8d7e53",
"identifier": [
{
"system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/hippocrates-api--pregnancy",
"value": "18342",
"use": "usual"
},
{
"system": "https://www.acmesaude.com.br/integracao/gestacao/",
"value": "3318",
"use": "usual"
}
],
"meta": {
"lastUpdated": "2026-04-21T13:40:10.452000Z",
"versionId": "MTc4NjQ0MzIxMDQ1MjAwMDEyMw"
}
},
"search": {
"mode": "match"
}
}
],
"link": []
}

Busca sem resultados não é erro: volta 200 com um Bundle cujo entry é uma lista vazia. Trate a ausência de resultados pela lista vazia, não esperando um 404.

Response
{
"resourceType": "Bundle",
"type": "searchset",
"entry": [],
"link": []
}

A busca traz todas as Observation do store, não só as gestações. Hoje as duas coisas coincidem, mas inclua code=http://loinc.org|82810-3 nas suas buscas para que elas continuem trazendo só gestações quando outros tipos de observação forem aceitos.

Parâmetros de busca suportados

NomeTipoDescriçãoExpressão
identifiertokenIdentificador da gestação, em system|valueObservation.identifier
patient.identifierreference, encadeadoPaciente, pelo identificador delaObservation.subject.identifier
codetokenTipo de observação. http://loinc.org|82810-3 traz as gestaçõesObservation.code
value-concepttokenStatus da gestação, no system da Nilo ou no LOINCObservation.valueCodeableConcept
datedatePeríodo da gestação, com os prefixos eq, ge, leObservation.effectivePeriod
_lastUpdateddateData da última gravação no store, com os mesmos prefixos—

Para trazer só as gestações em curso de uma paciente:

curl --request GET \
--url 'https://landing-zone-api.nilo.services/fhir/resources/Observation?patient.identifier=https://www.acmesaude.com.br/integracao/paciente/|507823709&code=http://loinc.org|82810-3&value-concept=https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/pregnancy-status|prenatal' \
--header 'x-api-key: SUA_API_KEY'

Qual identificador da paciente o subject carrega depende da sua implantação. Na configuração que usa identificadores externos nas referências, é o identificador do seu sistema — e o filtro acima funciona como está. Sem ela, o subject traz o identificador Nilo da paciente (…/NamingSystem/hippocrates-api--patient), e é esse system que você tem de usar no filtro. Confira numa resposta de leitura qual dos dois está lá antes de montar a busca em volume.

status não serve para filtrar gestações: toda gestação é lida com status final. Para separar as em curso das encerradas, use value-concept.

date filtra pelo effectivePeriod, cujo início é a DUM ou, sem ela, a data de criação da gestação — veja Datas.

A paginação é por _count e _page_token; havendo página seguinte, o Bundle traz a URL pronta em link.

Ler por ID

GET
/fhir/resources/Observation/:id
curl https://landing-zone-api.nilo.services/fhir/resources/Observation/id \
-H "x-api-key: <apiKey>"

A leitura por ID responde 404 quando o id não existe.

Diferente da busca, esta leitura não devolve um Bundle — mas também não devolve o recurso nu. A resposta é um envelope com fullUrl, search e resource, e a gestação está em resource. Ler valueCodeableConcept ou component na raiz da resposta não encontra nada.

Response
{
"fullUrl": "https://landing-zone-api.nilo.services/fhir/resources/Observation/5e2d9a41-7c3b-4f08-9b6e-2a1f4c8d7e53",
"resource": {
"code": {
"coding": [
{
"code": "82810-3",
"display": "Pregnancy status",
"system": "http://loinc.org"
}
]
},
"resourceType": "Observation",
"status": "final",
"subject": {
"identifier": {
"system": "https://www.acmesaude.com.br/integracao/paciente/",
"value": "507823709",
"use": "usual"
},
"type": "Patient",
"reference": "Patient/ba200cfa-dae0-46cf-81a0-008e3f7414b4"
},
"valueCodeableConcept": {
"coding": [
{
"code": "postpartum",
"system": "https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/pregnancy-status"
},
{
"code": "LA26683-5",
"display": "Not pregnant",
"system": "http://loinc.org"
}
]
},
"component": [
{
"code": {
"coding": [
{
"code": "8665-2",
"display": "Last menstrual period start date",
"system": "http://loinc.org"
}
]
},
"valueDateTime": "2026-03-01"
},
{
"code": {
"coding": [
{
"code": "11778-8",
"display": "Delivery date Estimated",
"system": "http://loinc.org"
}
]
},
"valueDateTime": "2026-12-06"
},
{
"code": {
"coding": [
{
"code": "93857-1",
"display": "Date and time of obstetric delivery",
"system": "http://loinc.org"
}
]
},
"valueDateTime": "2026-11-29"
},
{
"code": {
"coding": [
{
"code": "risk",
"system": "https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/pregnancy-observation"
}
]
},
"valueCodeableConcept": {
"coding": [
{
"code": "moderate",
"system": "https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/pregnancy-risk"
}
]
}
},
{
"code": {
"coding": [
{
"code": "57722-1",
"display": "Birth plurality of Pregnancy",
"system": "http://loinc.org"
}
]
},
"valueCodeableConcept": {
"coding": [
{
"code": "twins",
"system": "https://landing-zone-api.nilo.services/fhir/resources/CodeSystem/pregnancy-type"
}
]
}
}
],
"effectivePeriod": {
"end": "2026-11-29T03:00:00+00:00",
"start": "2026-03-01"
},
"id": "5e2d9a41-7c3b-4f08-9b6e-2a1f4c8d7e53",
"identifier": [
{
"system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/hippocrates-api--pregnancy",
"value": "18342",
"use": "usual"
},
{
"system": "https://www.acmesaude.com.br/integracao/gestacao/",
"value": "3318",
"use": "usual"
}
],
"meta": {
"lastUpdated": "2026-11-30T12:20:00.452000Z",
"versionId": "MTc5NjAzMTIwMDQ1MjAwMDQ1Ng"
}
},
"search": {
"mode": "match"
}
}

Nem tudo o que você lê foi escrito por esta API. Gestações registradas pela equipe na plataforma aparecem aqui do mesmo jeito, com o identificador Nilo e sem o seu.

O que a integração não cobre

Não há como apagar uma gestação, nem registrar outro tipo de observação além da gestação. A DPP não é gravável: é sempre a que a plataforma calcula a partir da DUM.