Pular para o conteúdo principal

Transações

EndpointPOST /fhir/resources/Bundle
Autenticação🔓 Chave de API
StatusImplementado

Modelagem da API - Request


OpçãoTipoRequeridoDescriçãoExemplo
x-api-keystringSimChave de autenticação do cliente, fornecida durante a configuração do ambiente.
Content-TypestringSimapplication/json

Exemplos de Uso de Bundles

Abaixo, listamos alguns exemplos de como usar transações dentro de um Bundle.

Referências nos Bundles

Utilizaremos referências internas (urn:uuid:) para vincular os recursos dentro do mesmo Bundle.


O exemplo a seguir demonstra como criar um novo paciente no Sistema Fictício e com sua cobertura de saúde e aassociando a uma equipe de cuidado já existente.

Cadastro de Paciente, Cobertura de Saúde e Alocação em Equipe de Cuidado

curl --request POST \
--url https://landing-zone-api.nilo.services/fhir/resources/Bundle \
--header 'Content-Type: application/json' \
--header 'x-api-key: ???' \
--data '
{
"resourceType": "Bundle",
"type": "batch",
"entry": [
{
"fullUrl": "urn:uuid:9079ca6a-1525-42e2-a1db-6364d537fff3",
"request": {
"method": "POST",
"url": "Patient",
"ifNoneExist": "identifier=https://sistemaficticio.acmesaude.com.br/patient-id|PAT-45678"
},
"resource": {
"resourceType": "Patient",
"identifier": [
{
"system": "https://sistemaficticio.acmesaude.com.br/patient-id",
"use": "usual",
"value": "PAT-45678"
}
],
"name": [
{
"use": "official",
"family": "Silva",
"given": ["Pernalonga"]
}
],
"gender": "male",
"birthDate": "1940-07-27",
"telecom": [
{
"system": "email",
"value": "pernalonga.silva@acmesaude.com.br",
"use": "home"
}
],
"active": true
}
},
{
"fullUrl": "urn:uuid:90c55ff1-8d6d-46be-a28f-8d9aea7b820b",
"request": {
"method": "POST",
"url": "Coverage"
},
"resource": {
"resourceType": "Coverage",
"identifier": [
{
"system": "https://sistemaficticio.acmesaude.com.br/coverage-id",
"use": "official",
"value": "COV-98765"
}
],
"status": "active",
"beneficiary": {
"reference": "urn:uuid:9079ca6a-1525-42e2-a1db-6364d537fff3",
"type": "Patient"
},
"payor": [
{
"identifier": {
"system": "https://sistemaficticio.acmesaude.com.br/organization-id",
"value": "ORG-ACME"
},
"display": "Acme Saúde"
}
],
"period": {
"start": "2023-01-01"
}
}
},
{
"fullUrl": "urn:uuid:ab04f028-90f4-4774-896c-cf8fbf8bf49c",
"request": {
"method": "POST",
"url": "CareTeam"
},
"resource": {
"resourceType": "CareTeam",
"identifier": [
{
"system": "https://sistemaficticio.acmesaude.com.br/careteam-id",
"use": "official",
"value": "12345"
}
],
"status": "active",
"subject": {
"reference": "urn:uuid:9079ca6a-1525-42e2-a1db-6364d537fff3",
"type": "Patient"
},
"name": "Equipe Cuidado Primário",
"participant": [
{
"member": {
"identifier": {
"system": "https://landing-zone-api.nilo.services/fhir/resources/NamingSystem/sorting-hat-api--care-team",
"use": "usual",
"value": "7889"
},
"type": "CareTeam"
}
}
]
}
}
]
}'


Neste exemplo, criamos um novo paciente e imediatamente o associamos a um plano de cuidado (CarePlan). A associação é feita referenciando o paciente a partir do recurso CarePlan.

Cadastro de Paciente e Alocação em um Plano de Cuidado

curl --request POST \
--url https://landing-zone-api.nilo.services/fhir/resources/Bundle \
--header 'Content-Type: application/json' \
--header 'x-api-key: ???' \
--data '
{
"resourceType": "Bundle",
"type": "batch",
"entry": [
{
"fullUrl": "urn:uuid:2f4579c3-dfd9-4cc3-b054-8eee594430f1",
"request": {
"method": "POST",
"url": "Patient"
},
"resource": {
"resourceType": "Patient",
"identifier": [
{
"system": "https://sistemaficticio.acmesaude.com.br/patient",
"use": "usual",
"value": "54321"
}
],
"name": [
{
"use": "official",
"text": "Lola Bunny",
"family": "Bunny",
"given": ["Lola"]
}
],
"gender": "female",
"birthDate": "1996-10-05",
"telecom": [
{
"system": "email",
"use": "principal",
"value": "lola.bunny@acmesaude.com.br"
}
]
}
},
{
"fullUrl": "urn:uuid:d92a5e94-4342-4ce1-b27d-b5de6b4a54da",
"request": {
"method": "POST",
"url": "CarePlan"
},
"resource": {
"resourceType": "CarePlan",
"identifier": [
{
"system": "https://sistemaficticio.acmesaude.com.br/careplan",
"use": "official",
"value": "CP_98765"
}
],
"status": "active",
"intent": "plan",
"subject": {
"reference": "urn:uuid:2f4579c3-dfd9-4cc3-b054-8eee594430f1"
},
"period": {
"start": "2024-01-15"
},
"title": "Plano de Cuidado Nutricional"
"instantiatesCanonical": ["https://landing-zone-api.nilo.services/fhir/resources/PlanDefinition/30c0197c-91ef-4600-b649-2cb5fdd2b652"]
}
}
]
}'


Este bundle cria dois recursos Practitioner e um recurso CareTeam. O CareTeam referencia os profissionais como membros (member).

Cadastro de Dois Profissionais e Criação de uma Equipe de Cuidado

curl --request POST \
--url https://landing-zone-api.nilo.services/fhir/resources/Bundle \
--header 'Content-Type: application/json' \
--header 'x-api-key: ???' \
--data '
{
"resourceType": "Bundle",
"type": "batch",
"entry": [
{
"fullUrl": "urn:uuid:615ef1f9-42e3-4f01-ba4f-3f62ecb23998",
"request": {
"method": "POST",
"url": "Practitioner"
},
"resource": {
"resourceType": "Practitioner",
"identifier": [
{
"system": "https://sistemaficticio.acmesaude.com.br/practitioner",
"use": "official",
"value": "PRAC_PAT_001"
}
],
"name": [
{
"use": "official",
"text": "Patolino Souza",
"family": "Souza",
"given": ["Patolino"]
}
],
"telecom": [
{
"system": "email",
"use": "work",
"value": "patolino.souza@acmesaude.com.br"
}
]
}
},
{
"fullUrl": "urn:uuid:cb9ca5cd-9aac-4f6d-811a-e2b7a6504a30",
"request": {
"method": "POST",
"url": "Practitioner"
},
"resource": {
"resourceType": "Practitioner",
"identifier": [
{
"system": "https://sistemaficticio.acmesaude.com.br/practitioner",
"use": "official",
"value": "PRAC_GAG_002"
}
],
"name": [
{
"use": "official",
"text": "Gaguinho Santos",
"family": "Santos",
"given": ["Gaguinho"]
}
],
"telecom": [
{
"system": "email",
"use": "work",
"value": "gaguinho.santos@acmesaude.com.br"
}
]
}
},
{
"fullUrl": "urn:uuid:bb3493db-68c0-4a38-bf7e-bb7357f3335b",
"request": {
"method": "POST",
"url": "CareTeam"
},
"resource": {
"resourceType": "CareTeam",
"identifier": [
{
"system": "https://sistemaficticio.acmesaude.com.br/careteam",
"use": "official",
"value": "TEAM_ALFA_101"
}
],
"status": "active",
"name": "Time Alfa de Cuidado Integrado",
"member": [
{
"individual": {
"reference": "urn:uuid:615ef1f9-42e3-4f01-ba4f-3f62ecb23998"
},
"role": [
{
"coding": [
{
"system": "http://www.saude.gov.br/fhir/r4/CodeSystem/BRCBO",
"code": "2251-30",
"display": "Médico de Família e Comunidade"
}
]
}
]
},
{
"individual": {
"reference": "urn:uuid:cb9ca5cd-9aac-4f6d-811a-e2b7a6504a30"
},
"role": [
{
"coding": [
{
"system": "http://www.saude.gov.br/fhir/r4/CodeSystem/BRCBO",
"code": "2235-65",
"display": "Enfermeiro Saúde da Família"
}
]
}
]
}
]
}
}
]
}'


Este exemplo combina a alocação de um paciente em um CarePlan com a adição de uma Flag para indicar o grau de risco. A Flag é associada ao paciente e contém informações sobre a categoria e o código do risco. Assumimos que o Paciente já existe neste cenário, referenciando-o por identificador.

Alocação de um Paciente em um Plano de Cuidado e Adição de uma Tag de Risco

curl --request POST \
--url https://landing-zone-api.nilo.services/fhir/resources/Bundle \
--header 'Content-Type: application/json' \
--header 'x-api-key: ???' \
--data '
{
"resourceType": "Bundle",
"type": "batch",
"entry": [
{
"fullUrl": "urn:uuid:e35f8206-e0d5-4e8b-a134-750739d5f69e",
"request": {
"method": "POST",
"url": "CarePlan"
},
"resource": {
"resourceType": "CarePlan",
"identifier": [
{
"system": "https://sistemaficticio.acmesaude.com.br/careplan",
"use": "official",
"value": "CP_RISK_001"
}
],
"status": "active",
"intent": "plan",
"subject": {
"identifier": {
"system": "https://servicos.receita.fazenda.gov.br/servicos/cpf/",
"use": "official",
"value": "11122233300"
},
"type": "Patient"
},
"period": {
"start": "2024-03-10"
},
"title": "Plano de Gerenciamento de Risco",
"instantiatesCanonical": ["https://landing-zone-api.nilo.services/fhir/resources/PlanDefinition/30c0197c-91ef-4600-b649-2cb5fdd2b652"]
}
},
{
"fullUrl": "urn:uuid:b1145e39-28bf-4d02-a2eb-4f68e3d3402c",
"request": {
"method": "POST",
"url": "Flag"
},
"resource": {
"resourceType": "Flag",
"identifier": [
{
"system": "https://sistemaficticio.acmesaude.com.br/flag",
"use": "official",
"value": "FLAG_RISCO_ALT_PAC_12345"
}
],
"status": "active",
"code": {
"coding": [
{
"system": "https://landing-zone-api.services/fhir/CodeSystem/flag-code",
"code": "345",
"display": "Alto Risco"
}
]
},
"subject": {
"identifier": {
"system": "https://servicos.receita.fazenda.gov.br/servicos/cpf/",
"use": "official",
"value": "11122233300"
},
"type": "Patient"
}
}
}
]
}'


Estes exemplos ilustram o poder do recurso Bundle no FHIR para orquestrar a criação e o relacionamento de múltiplos recursos em uma única interação com a API. Ao integrar o Sistema Fictício utilizando este padrão, garantimos um fluxo de dados mais eficiente e alinhado com as melhores práticas de interoperabilidade em saúde.