En esta página, se explica cómo buscar recursos de FHIR mediante consultas más avanzadas
disponible mediante la projects.locations.datasets.fhirStores.fhir.search
. En esta guía, se asume que ya conoces el contenido de
Busca recursos de FHIR.
Paquete de FHIR de muestra
En las muestras de esta página, se usa un paquete de FHIR de JSON proporcionado para mostrar los resultados
de funciones avanzadas de búsqueda FHIR. Guarda el archivo r4_bundle.json
.
en tu máquina para usarlo en las muestras.
Ejecuta el paquete de FHIR de muestra
Para ejecutar el paquete de FHIR de muestra en un almacén de FHIR, consulta Ejecuta un paquete. El almacén de FHIR debe tener la siguiente configuración:
- Establece
enableUpdateCreate
entrue
. - Establece
version
en R4.
Modificadores de búsqueda de strings
De forma predeterminada, una búsqueda de cadena utiliza una coincidencia de prefijo que no distingue mayúsculas de minúsculas ni acentos. mediante el plegado en el formato estándar NFC Unicode. Puntuación y elementos adicionales espacio en blanco.
Están disponibles los siguientes modificadores:
:contains
reconoce los recursos con el valor especificado en cualquier parte de la string, por ejemplo,name:contains=eve
reconoceEvelyn
ySeverine
.:exact
coincide con toda la string, incluidos las mayúsculas y minúsculas y los acentos, por ejemplo,name:exact=Eve
no coincide coneve
oEvelyn
.
Expande la siguiente sección para ver un ejemplo del uso de modificadores de cadena de búsqueda:
Muestras de modificadores de búsqueda de cadenas
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto de Google Cloud.
- LOCATION: Es la ubicación del conjunto de datos superior.
- DATASET_ID: El conjunto de datos superior del almacén de FHIR
- FHIR_STORE_ID es el ID del almacén de FHIR
Para enviar tu solicitud, elige una de estas opciones:
curl
En el siguiente ejemplo, se usa la consulta
Patient?name:contains=eve
.
Ejecuta el siguiente comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?name:contains=eve"
PowerShell
En el siguiente ejemplo, se usa la consulta
Patient?name:contains=eve
.
Ejecuta el siguiente comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?name:contains=eve" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "entry": [ { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/patient2", "resource": { "active": false, "address": [ { "city": "Mountain View", "district": "KW", "line": [ "1800 Amphibious Blvd" ], "period": { "start": "2000-01-01" }, "text": "1800 Amphibious Blvd", "type": "both", "use": "home" } ], "birthDate": "1989-03-11", "communication": [ { "language": { "coding": [ { "code": "FR", "display": "jkl", "system": "123" }, { "code": "french", "display": "mno", "system": "456" } ], "text": "pqr" } } ], "deceasedBoolean": false, "gender": "female", "id": "patient2", "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ", "tag": [ { "code": "tag2", "display": "Tag Two", "system": "tag-system" }, { "code": "tag|tag3", "display": "Tag Three", "system": "other" } ], "versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA" }, "name": [ { "family": "Lee", "given": [ "Jane", "Evelyne" ], "use": "usual" } ], "resourceType": "Patient", "telecom": [ { "rank": 1, "system": "phone", "use": "home", "value": "0982344522" }, { "rank": 2, "system": "email", "use": "home", "value": "jane@example.com" } ] }, "search": { "mode": "match" } }, { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/patient1", "resource": { "active": false, "address": [ { "city": "Mountain View", "district": "KW", "line": [ "1800 Amphibious Blvd" ], "period": { "start": "1974-12-25" }, "text": "1800 Amphibious Blvd", "type": "both", "use": "home" } ], "birthDate": "1974-12-25", "communication": [ { "language": { "coding": [ { "code": "ENG", "display": "def", "system": "123" }, { "code": "english", "display": "ghi", "system": "456" } ], "text": "abc" } } ], "deceasedBoolean": false, "gender": "male", "id": "patient1", "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ", "tag": [ { "code": "tag1", "display": "Tag One", "system": "tag-system" }, { "code": "tag2", "display": "Tag Two", "system": "other-system" } ], "versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA" }, "name": [ { "family": "Lee", "given": [ "Alex", "Cleve" ], "text": "Alex Lee", "use": "usual" }, { "given": [ "Joe" ], "use": "nickname" } ], "resourceType": "Patient", "telecom": [ { "rank": 1, "system": "phone", "use": "home", "value": "0982344522" }, { "rank": 2, "system": "email", "use": "home", "value": "alex@example.com" } ] }, "search": { "mode": "match" } } ], "link": [ { "relation": "search", "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?name%3Acontains=eve" }, { "relation": "first", "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?name%3Acontains=eve" }, { "relation": "self", "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?name%3Acontains=eve" } ], "resourceType": "Bundle", "total": 2, "type": "searchset" }
Comparadores y precisión de números, fechas y cantidades
Los valores usados en una búsqueda numérica o por fecha dependen de la precisión del parámetro
valor. Por ejemplo, el número 7.00
tiene un rango implícito de 6.995
inclusive a 7.005
exclusivo. La fecha 2015-08-12
tiene un rango de 2015-08-12T00:00:00
inclusive a 2015-08-13T00:00:00
exclusivo.
La precisión afecta los resultados que se muestran para las comparaciones de igualdad. Para
ejemplo, un valor de 7.03
en un recurso coincidiría con una búsqueda de value=7.0
pero no coincidiría con una búsqueda de value=7.00
.
Todos los valores de punto flotante clínicamente relevantes en FHIR se representan con el como Decimal. y Quantity que registran la precisión del valor almacenado. Como excepción, hay algunas campos que usan números enteros simples, por ejemplo, para representar una posición en una secuencia y las búsquedas en esos campos son coincidencias numéricas exactas.
Los siguientes prefijos se aplican a las comparaciones numéricas con un valor singleton.
Si no se especifican prefijos, el valor predeterminado es eq
.
eq
: es igual, el valor almacenado exacto dentro del rango definido por la precisión del valor del parámetrone
: no es igual, lo opuesto aeq
gt
: el valor almacenado exacto es mayor que el valor del parámetro exacto.lt
: el valor almacenado exacto es menor que el valor del parámetro exacto.ge
: el valor almacenado exacto es mayor o igual que el valor del parámetro exacto.le
: el valor almacenado exacto es menor o igual que el valor del parámetro exacto.
Los valores de fecha tienen un rango implícito basado en el nivel de especificidad del
(un año, un mes, un día). Otros tipos de datos, como Rango
y Período
contienen límites inferiores y superiores explícitos. Se aplican los siguientes prefijos al rango
de datos. Si no se especifican prefijos, el valor predeterminado será eq
.
eq
: es igual, el rango del valor del parámetro que contiene por completo el rango del objetivone
: no es igual, lo opuesto aeq
gt
: mayor que, el rango por encima del valor del parámetro se superpone con el rango de destino.lt
: menor que, el rango por debajo del valor del parámetro se superpone con el rango de destino.ge
: Mayor o igual quele
: Menor o igual quesa
: el rango del valor del parámetro comienza después del rango de destino.eb
: el rango del valor del parámetro finaliza antes del rango de destino.
Comparadores y precisión de muestras de números, fechas y cantidades
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto de Google Cloud.
- LOCATION: Es la ubicación del conjunto de datos superior.
- DATASET_ID: El conjunto de datos superior del almacén de FHIR
- FHIR_STORE_ID es el ID del almacén de FHIR
Para enviar tu solicitud, elige una de estas opciones:
curl
En el siguiente ejemplo, se usa la consulta
_lastUpdated=gt2018-01-01
para buscar recursos de pacientes con un valor _lastUpdated
mayor que (gt
) 2018-01-01
.
Ejecuta el siguiente comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?_lastUpdated=gt2018-01-01"
PowerShell
En el siguiente ejemplo, se usa la consulta
_lastUpdated=gt2018-01-01
para buscar recursos de pacientes con un valor _lastUpdated
mayor que (gt
) 2018-01-01
.
Ejecuta el siguiente comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?_lastUpdated=gt2018-01-01" | Select-Object -Expand Content
La consulta _lastUpdated=gt2018-01-01
muestra los recursos del paciente actualizados desde
1-1-2018. Si creaste todos los recursos en tu almacén de FHIR después de esa fecha, el servidor
devuelve todos los recursos. Para ver un subconjunto de recursos, cambia la fecha a una fecha después de la última actualización de algunos recursos.
{ "entry": [ { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/patient3", "resource": { "active": false, "address": [ { "city": "Lisbon", "district": "KW", "line": [ "Avenida da Pastelaria, 1903" ], "period": { "start": "1980-01-01" }, "text": "Avenida da Pastelaria, 1903", "type": "both", "use": "home" } ], "birthDate": "1980-01-01", "deceasedBoolean": false, "id": "patient3", "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ", "tag": [ { "code": "tag3", "display": "Tag $3", "system": "other|tag" }, { "code": "code,4", "display": "Tag 4", "system": "system" } ], "versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA" }, "name": [ { "family": "Smith", "given": [ "Mary" ], "text": "Smith, Mary", "use": "usual" } ], "resourceType": "Patient", "telecom": [ { "rank": 1, "system": "phone", "use": "home", "value": "1110891111" }, { "rank": 2, "system": "email", "use": "home", "value": "mary@example.com" } ] }, "search": { "mode": "match" } }, { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/patient2", "resource": { "active": false, "address": [ { "city": "Mountain View", "district": "KW", "line": [ "1800 Amphibious Blvd" ], "period": { "start": "2000-01-01" }, "text": "1800 Amphibious Blvd", "type": "both", "use": "home" } ], "birthDate": "1989-03-11", "communication": [ { "language": { "coding": [ { "code": "FR", "display": "jkl", "system": "123" }, { "code": "french", "display": "mno", "system": "456" } ], "text": "pqr" } } ], "deceasedBoolean": false, "gender": "female", "id": "patient2", "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ", "tag": [ { "code": "tag2", "display": "Tag Two", "system": "tag-system" }, { "code": "tag|tag3", "display": "Tag Three", "system": "other" } ], "versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA" }, "name": [ { "family": "Lee", "given": [ "Jane", "Evelyne" ], "use": "usual" } ], "resourceType": "Patient", "telecom": [ { "rank": 1, "system": "phone", "use": "home", "value": "0982344522" }, { "rank": 2, "system": "email", "use": "home", "value": "jane@example.com" } ] }, "search": { "mode": "match" } }, { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a", "resource": { "address": [ { "country": "US", "line": [ "907 Arlo Cliffs", "Suite 984" ], "postalCode": "XXXXX" } ], "birthDate": "1940-12-01", "communication": [ { "language": { "coding": [ { "code": "en-US", "display": "English (United States)", "system": "urn:ietf:bcp:47" } ] } } ], "deceasedDateTime": "2009-07-26T12:01:23-05:00", "extension": [ { "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-race", "valueCodeableConcept": { "coding": [ { "code": "2106-3", "display": "White", "system": "http://hl7.org/fhir/v3/Race" } ], "text": "race" } }, { "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity", "valueCodeableConcept": { "coding": [ { "code": "2186-5", "display": "Nonhispanic", "system": "http://hl7.org/fhir/v3/Ethnicity" } ], "text": "ethnicity" } }, { "url": "http://hl7.org/fhir/StructureDefinition/birthPlace", "valueAddress": { "city": "Tama", "country": "US", "postalCode": "52339", "state": "Iowa" } }, { "url": "http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName", "valueString": "Farrah Feeney" }, { "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-birthsex", "valueCode": "M" }, { "url": "http://hl7.org/fhir/StructureDefinition/patient-interpreterRequired", "valueBoolean": false }, { "url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-actor-FictionalPerson-extension", "valueBoolean": true }, { "url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-demographics-FathersName-extension", "valueHumanName": { "text": "Christopher Diaz" } }, { "url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-demographics-SocialSecurityNumber-extension", "valueString": "999-16-9041" } ], "gender": "male", "generalPractitioner": [ { "reference": "Organization/9fb51c89-1453-406c-8357-578311b43a91" } ], "id": "8ac08aa9-63d2-4e81-8647-3a138d7f9f5a", "identifier": [ { "system": "https://github.com/synthetichealth/synthea", "value": "c1ee4b49-3194-4b39-91ed-4d1393a780c6" }, { "system": "http://hl7.org/fhir/sid/us-ssn", "type": { "coding": [ { "code": "SB", "system": "http://hl7.org/fhir/identifier-type" } ] }, "value": "999169041" }, { "system": "urn:oid:2.16.840.1.113883.4.3.25", "type": { "coding": [ { "code": "DL", "system": "http://hl7.org/fhir/v2/0203" } ] }, "value": "S99992205" }, { "system": "http://standardhealthrecord.org/fhir/StructureDefinition/passportNumber", "type": { "coding": [ { "code": "PPN", "system": "http://hl7.org/fhir/v2/0203" } ] }, "value": "X12551631X" }, { "system": "http://hospital.smarthealthit.org", "type": { "coding": [ { "code": "MR", "system": "http://hl7.org/fhir/v2/0203" } ] }, "value": "c1ee4b49-3194-4b39-91ed-4d1393a780c6" } ], "maritalStatus": { "coding": [ { "code": "S", "system": "http://hl7.org/fhir/v3/MaritalStatus" } ], "text": "S" }, "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ", "profile": [ "http://standardhealthrecord.org/fhir/StructureDefinition/shr-demographics-PersonOfRecord" ], "versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA" }, "multipleBirthBoolean": false, "name": [ { "family": "Diaz", "given": [ "Christopher" ], "prefix": [ "Mr." ], "use": "official" } ], "resourceType": "Patient", "telecom": [ { "system": "phone", "use": "home", "value": "434-100-2918 x800" } ], "text": { "div": "Generated by Synthea. Version identifier: 2dd4c1c37e2743d14e5073c7b5e42899a3e51531", "status": "generated" } }, "search": { "mode": "match" } }, { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/patient1", "resource": { "active": false, "address": [ { "city": "Mountain View", "district": "KW", "line": [ "1800 Amphibious Blvd" ], "period": { "start": "1974-12-25" }, "text": "1800 Amphibious Blvd", "type": "both", "use": "home" } ], "birthDate": "1974-12-25", "communication": [ { "language": { "coding": [ { "code": "ENG", "display": "def", "system": "123" }, { "code": "english", "display": "ghi", "system": "456" } ], "text": "abc" } } ], "deceasedBoolean": false, "gender": "male", "id": "patient1", "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ", "tag": [ { "code": "tag1", "display": "Tag One", "system": "tag-system" }, { "code": "tag2", "display": "Tag Two", "system": "other-system" } ], "versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA" }, "name": [ { "family": "Lee", "given": [ "Alex", "Cleve" ], "text": "Alex Lee", "use": "usual" }, { "given": [ "Joe" ], "use": "nickname" } ], "resourceType": "Patient", "telecom": [ { "rank": 1, "system": "phone", "use": "home", "value": "0982344522" }, { "rank": 2, "system": "email", "use": "home", "value": "alex@example.com" } ] }, "search": { "mode": "match" } } ], "link": [ { "relation": "search", "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_lastUpdated=gt2018-01-01" }, { "relation": "first", "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_lastUpdated=gt2018-01-01" }, { "relation": "self", "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_lastUpdated=gt2018-01-01" } ], "resourceType": "Bundle", "total": 4, "type": "searchset" }
Búsqueda de tokens
Los parámetros de búsqueda de tokens se aplican a casos en los que un valor no es una cadena arbitraria. sino más bien una entidad en un sistema de nombres. La coincidencia de cadenas en un parámetro de token es exacta.
La mayoría de las búsquedas de tokens se aplican a tipos de datos complejos que contienen un system
que es un URI que indica el sistema de nombres del que se toma el valor code
. Estos
búsquedas admiten las siguientes sintaxis de valores:
[parameter]=[code]
coincide con el valorcode
independientemente desystem
.[parameter]=[system]|[code]
debe coincidir con elsystem
y elcode
especificados.[parameter]=|[code]
coincide concode
cuando el valorsystem
está vacío[parameter]=[system]|
coincide con cualquiercode
con el valor desystem
determinado
Hay varios modificadores que activan la función de búsqueda de tokens alternativos:
:not
anula las condiciones de coincidencia de una búsqueda de token.:text
realiza una búsqueda de string (no una coincidencia exacta) en el campotext
odisplay
asociado con el código, en lugar del valor de código en sí.:above
toma un parámetro solo con el formato[system]|[code]
y hace coincidir los recursos en los que el código del recurso incluye al parámetro de consulta. Para usar este modificador, elsystem
especificado debe existir en el almacén de FHIR como un recurso deCodeSystem
.:below
es como:above
, pero coincide si el parámetro de búsqueda incluye el código del recurso.:in
toma un solo parámetro mediante la sintaxis del parámetro de referencia, paracode:in=ValueSet/1234
de ejemplo. La referencia debe hacer referencia a unValueSet
. dentro del mismo almacén de FHIR. El modificador coincide con cualquier código que se encuentre en elValueSet
al que se hace referencia.:not-in
anula las condiciones de:in
.
Las búsquedas de tokens también se aplican a los campos booleanos y de URI, y a ciertos campos de cadena en los que solo se permite la concordancia exacta. En estos casos, el único formato de parámetro es [parameter]=[value]
.
Muestras de búsqueda de tokens
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto de Google Cloud.
- LOCATION: Es la ubicación del conjunto de datos superior.
- DATASET_ID: El conjunto de datos superior del almacén de FHIR
- FHIR_STORE_ID es el ID del almacén de FHIR
Para enviar tu solicitud, elige una de estas opciones:
curl
En el siguiente ejemplo, se usa la consulta
Patient?_tag=tag-system|tag2
para buscar recursos de pacientes con un system
y un code
especificados.
Ejecuta el siguiente comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?_tag=tag-system|tag2"
PowerShell
En el siguiente ejemplo, se usa
Patient?_tag=tag-system|tag2
.
para buscar recursos de Patient con un system
y un code
especificados.
Ejecuta el siguiente comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?_tag=tag-system|tag2" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "entry": [ { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/patient2", "resource": { "active": false, "address": [ { "city": "Mountain View", "district": "KW", "line": [ "1800 Amphibious Blvd" ], "period": { "start": "2000-01-01" }, "text": "1800 Amphibious Blvd", "type": "both", "use": "home" } ], "birthDate": "1989-03-11", "communication": [ { "language": { "coding": [ { "code": "FR", "display": "jkl", "system": "123" }, { "code": "french", "display": "mno", "system": "456" } ], "text": "pqr" } } ], "deceasedBoolean": false, "gender": "female", "id": "patient2", "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ", "tag": [ { "code": "tag2", "display": "Tag Two", "system": "tag-system" }, { "code": "tag|tag3", "display": "Tag Three", "system": "other" } ], "versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA" }, "name": [ { "family": "Lee", "given": [ "Jane", "Evelyne" ], "use": "usual" } ], "resourceType": "Patient", "telecom": [ { "rank": 1, "system": "phone", "use": "home", "value": "0982344522" }, { "rank": 2, "system": "email", "use": "home", "value": "jane@example.com" } ] }, "search": { "mode": "match" } } ], "link": [ { "relation": "search", "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_tag=tag-system%7Ctag2" }, { "relation": "first", "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_tag=tag-system%7Ctag2" }, { "relation": "self", "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_tag=tag-system%7Ctag2" } ], "resourceType": "Bundle", "total": 1, "type": "searchset" }
Busca valores faltantes
El modificador de búsqueda :missing
se puede usar en cualquier parámetro de búsqueda para coincidir
en función de la presencia o ausencia de cualquier valor en el campo especificado. Por ejemplo, Patient?gender=unknown
coincide con los recursos que contienen explícitamente el valor de enumeración unknown
para el género, pero como este campo no es obligatorio, puede haber otros recursos que no propaguen el campo en absoluto. Esos recursos pueden ser
coincide con Patient?gender:missing=true
. La opuesta, Patient?gender:missing=false
coincide con cualquier recurso que propaga este campo de forma explícita.
Muestras de valores faltantes
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto de Google Cloud.
- LOCATION: Es la ubicación del conjunto de datos superior.
- DATASET_ID: El conjunto de datos superior del almacén de FHIR
- FHIR_STORE_ID es el ID del almacén de FHIR
Para enviar tu solicitud, elige una de estas opciones:
curl
En el siguiente ejemplo, se usa la consulta
gender:missing=false
:
Ejecuta el siguiente comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?gender:missing=false"
PowerShell
En el siguiente ejemplo, se usa la consulta
gender:missing=false
:
Ejecuta el siguiente comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?gender:missing=false" | Select-Object -Expand Content
gender
en un recurso Patient con el ID patient3
:
{ "entry": [ { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/mydataset/fhirStores/FHIR_STORE_ID/fhir/Patient/patient3", "resource": { "active": false, "address": [ { "city": "Lisbon", "district": "KW", "line": [ "Avenida da Pastelaria, 1903" ], "period": { "start": "1980-01-01" }, "text": "Avenida da Pastelaria, 1903", "type": "both", "use": "home" } ], "birthDate": "1980-01-01", "deceasedBoolean": false, "id": "patient3", "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ", "tag": [ { "code": "tag3", "display": "Tag $3", "system": "other|tag" }, { "code": "code,4", "display": "Tag 4", "system": "system" } ], "versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA" }, "name": [ { "family": "Smith", "given": [ "Mary" ], "text": "Smith, Mary", "use": "usual" } ], "resourceType": "Patient", "telecom": [ { "rank": 1, "system": "phone", "use": "home", "value": "1110891111" }, { "rank": 2, "system": "email", "use": "home", "value": "mary@example.com" } ] }, "search": { "mode": "match" } } ], "link": [ { "relation": "search", "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/mydataset/fhirStores/FHIR_STORE_ID/fhir/Patient/?gender%3Amissing=true" }, { "relation": "first", "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/mydataset/fhirStores/FHIR_STORE_ID/fhir/Patient/?gender%3Amissing=true" }, { "relation": "self", "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/mydataset/fhirStores/FHIR_STORE_ID/fhir/Patient/?gender%3Amissing=true" } ], "resourceType": "Bundle", "total": 1, "type": "searchset" }
Búsqueda de texto
El parámetro de búsqueda especial _content
busca una coincidencia de texto en cadenas basadas
campos (excepto los campos de números, fechas o enumeraciones) si el campo es el objetivo de
cualquier parámetro de búsqueda en el recurso. De forma predeterminada, _content
coincide con los recursos que
Contienen todas las palabras de la consulta y admiten operadores adicionales:
|
es el operador OR, por ejemplo,abc | def | ghi xyz
coincidirá con un recurso que contengaxyz
y uno o más que contengaabc
def
ghi
.-
es el operador NOT, por ejemplo,abc -def
coincidirá con un recurso que contengaabc
, pero nodef
.
La coincidencia se basa en palabras completas y no coincide con subcadenas o caracteres que no son alfanuméricos. No importa el orden de las palabras: Coincidencia palabras pueden extenderse en varios campos del recurso.
El parámetro _text
genera el mismo tipo de coincidencia solo en la Narrativa.
que contiene un resumen legible del recurso
contenidos. La API de Cloud Healthcare no genera automáticamente este resumen, sino que admite el parámetro de búsqueda de _text
si el cliente propagó estos datos cuando creó o actualizó el recurso.
Muestras de Text Search
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto de Google Cloud.
- LOCATION: Es la ubicación del conjunto de datos superior.
- DATASET_ID: El conjunto de datos superior del almacén de FHIR
- FHIR_STORE_ID es el ID del almacén de FHIR
Para enviar tu solicitud, elige una de estas opciones:
curl
En el siguiente ejemplo, se usa la consulta
_content=Smith%20|%20Mountain%20View
:
Ejecuta el siguiente comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?_content=Smith%20|%20Mountain%20View"
PowerShell
En el siguiente ejemplo, se usa la consulta
_content=Smith%20|%20Mountain%20View
:
Ejecuta el siguiente comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?_content=Smith%20|%20Mountain%20View" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "entry": [ { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/patient1", "resource": { "active": false, "address": [ { "city": "Mountain View", "district": "KW", "line": [ "1800 Amphibious Blvd" ], "period": { "start": "1974-12-25" }, "text": "1800 Amphibious Blvd", "type": "both", "use": "home" } ], "birthDate": "1974-12-25", "communication": [ { "language": { "coding": [ { "code": "ENG", "display": "def", "system": "123" }, { "code": "english", "display": "ghi", "system": "456" } ], "text": "abc" } } ], "deceasedBoolean": false, "gender": "male", "id": "patient1", "meta": { "lastUpdated": "2021-10-21T16:41:47.211939+00:00", "tag": [ { "code": "tag1", "display": "Tag One", "system": "tag-system" }, { "code": "tag2", "display": "Tag Two", "system": "other-system" } ], "versionId": "MTYzNDgzNDUwNzIxMTkzOTAwMA" }, "name": [ { "family": "Lee", "given": [ "Alex", "Cleve" ], "text": "Alex Lee", "use": "usual" }, { "given": [ "Joe" ], "use": "nickname" } ], "resourceType": "Patient", "telecom": [ { "rank": 1, "system": "phone", "use": "home", "value": "0982344522" }, { "rank": 2, "system": "email", "use": "home", "value": "alex@example.com" } ] }, "search": { "mode": "match" } }, { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/patient2", "resource": { "active": false, "address": [ { "city": "Mountain View", "district": "KW", "line": [ "1800 Amphibious Blvd" ], "period": { "start": "2000-01-01" }, "text": "1800 Amphibious Blvd", "type": "both", "use": "home" } ], "birthDate": "1989-03-11", "communication": [ { "language": { "coding": [ { "code": "FR", "display": "jkl", "system": "123" }, { "code": "french", "display": "mno", "system": "456" } ], "text": "pqr" } } ], "deceasedBoolean": false, "gender": "female", "id": "patient2", "meta": { "lastUpdated": "2021-10-21T16:41:47.211939+00:00", "tag": [ { "code": "tag2", "display": "Tag Two", "system": "tag-system" }, { "code": "tag|tag3", "display": "Tag Three", "system": "other" } ], "versionId": "MTYzNDgzNDUwNzIxMTkzOTAwMA" }, "name": [ { "family": "Lee", "given": [ "Jane", "Evelyne" ], "use": "usual" } ], "resourceType": "Patient", "telecom": [ { "rank": 1, "system": "phone", "use": "home", "value": "0982344522" }, { "rank": 2, "system": "email", "use": "home", "value": "jane@example.com" } ] }, "search": { "mode": "match" } } ], "link": [ { "relation": "search", "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_content=Smith%7CMountain+View" }, { "relation": "first", "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_content=Smith%7CMountain+View" }, { "relation": "self", "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_content=Smith%7CMountain+View" } ], "resourceType": "Bundle", "total": 2, "type": "searchset" }
Parámetros de búsqueda compuestos
Cuando se buscan con varios parámetros de búsqueda, hay casos en los que los parámetros de búsqueda individuales combinados con Y coincidirían con resultados no deseados. Compuesto Los parámetros de búsqueda son un tipo especial de parámetro de búsqueda que soluciona este problema problema.
Por ejemplo, el recurso Observation
puede contener múltiples valores en el
Campo component
, cada uno de los cuales contiene un par de code
y value
. Una búsqueda de Observation?component-code=8867-4&component-value-quantity=lt50
coincidiría con un recurso que tuviera un componente que contenga un code
de 8867-4 y un componente diferente que contenga un value
inferior a 50. Esta búsqueda no puede
se utiliza para restringir a una coincidencia de estos dos valores dentro del mismo componente.
Los parámetros de búsqueda compuestos definen un parámetro nuevo que combina otros dos
de búsqueda y define un nivel de anidación dentro del cual deben
la coincidencia. En la consulta, los dos valores están unidos por $
. Por ejemplo:
Observation
tiene un parámetro compuesto component-code-value-quantity
que puede
restringir el ejemplo anterior a un solo componente buscando
Observation?component-code-value-quantity=8867-4$lt50
Estos parámetros son
definidos por la especificación de FHIR y no existen para todas las combinaciones de
parámetros de búsqueda.
Los parámetros de búsqueda compuestos no permiten modificadores.
Al igual que con todos los parámetros de búsqueda, la información sobre los parámetros compuestos compatibles con la API de Cloud Healthcare se puede encontrar en la declaración de capacidad o en la Declaración de conformidad de FHIR.
Muestras de búsqueda compuesta
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto de Google Cloud.
- LOCATION: Es la ubicación del conjunto de datos superior.
- DATASET_ID: El conjunto de datos superior del almacén de FHIR
- FHIR_STORE_ID es el ID del almacén de FHIR
Para enviar tu solicitud, elige una de estas opciones:
curl
En el siguiente ejemplo, se usa la consulta
Observation?component-code-value-quantity=8480-6$lt150
.
Ejecuta el siguiente comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation?component-code-value-quantity=8480-6\$lt150"
PowerShell
En el siguiente ejemplo, se usa la consulta
Observation?component-code-value-quantity=8480-6$lt150
.
Ejecuta el siguiente comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation?component-code-value-quantity=8480-6\$lt150" | Select-Object -Expand Content
component-code=8480-6
y un component-value-quantity
de 133, que cumple con los criterios para lt150
.
{ "entry": [ { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/a35bf421-1f00-4897-a94d-4d47c3bb306b", "resource": { "category": [ { "coding": [ { "code": "vital-signs", "system": "http://hl7.org/fhir/observation-category" } ] } ], "code": { "coding": [ { "code": "55284-4", "display": "Blood Pressure", "system": "http://loinc.org" } ] }, "component": [ { "code": { "coding": [ { "code": "8480-6", "display": "Systolic Blood Pressure", "system": "http://loinc.org" } ], "text": "Systolic Blood Pressure" }, "valueQuantity": { "code": "mmHg", "system": "http://unitsofmeasure.org", "unit": "mmHg", "value": 133 } }, { "code": { "coding": [ { "code": "8462-4", "display": "Diastolic Blood Pressure", "system": "http://loinc.org" } ], "text": "Diastolic Blood Pressure" }, "valueQuantity": { "code": "mmHg", "system": "http://unitsofmeasure.org", "unit": "mmHg", "value": 84 } } ], "effectiveDateTime": "2008-03-07T17:47:02-05:00", "encounter": { "reference": "Encounter/0e9d631c-4407-45e5-bfbe-689806caaf7b" }, "id": "a35bf421-1f00-4897-a94d-4d47c3bb306b", "issued": "2008-03-07T17:47:02-05:00", "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ", "profile": [ "http://standardhealthrecord.org/fhir/StructureDefinition/shr-observation-Observation", "http://standardhealthrecord.org/fhir/StructureDefinition/shr-vital-BloodPressure" ], "versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA" }, "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a" } }, "search": { "mode": "match" } } ], "link": [ { "relation": "search", "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/?component-code-value-quantity=8480-6%24lt150" }, { "relation": "first", "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/?component-code-value-quantity=8480-6%24lt150" }, { "relation": "self", "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/?component-code-value-quantity=8480-6%24lt150" } ], "resourceType": "Bundle", "total": 1, "type": "searchset" }
Búsqueda en cadena
Una búsqueda encadenada permite que una búsqueda desvíe las referencias dentro del contexto de un para cada búsqueda. La sintaxis básica de una búsqueda en cadena es la siguiente:
[reference parameter]:[resource type].[inner search parameter]=[inner value]
Si el parámetro de referencia solo hace referencia a un tipo de recurso, se puede omitir :[resource
type]
, lo que genera lo siguiente:
[reference parameter].[inner search parameter]=[inner value]
Por ejemplo, Observation
tiene un parámetro de búsqueda de referencia subject
que puede apuntar a un Group
, un Device
, un Patient
o una Location
. Para encontrar Observations
que tengan como subject
un Patient
cuyo nombre comience con "Joe", puedes buscar Observation?subject:Patient.name=Joe
.
Si la consulta tiene varios parámetros encadenados, cada cadena se evalúa.
por separado. Por ejemplo, Patient?general-practitioner.name=Joe&general-practitioner.address-country=Canada
.
coincidiría con una Patient
que tenga dos
Referencias de general-practitioner
, una llamada “Joe” y el otro tiene un
en Canadá. No hay sintaxis para agrupar estas cláusulas para que coincidan.
solo a Joe de Canadá.
Las búsquedas en cadena pueden ser recursivas con otras cadenas o cadenas inversas, por ejemplo: Observation?subject:Patient.organization.name=Acme
coincidiría con un Observation
que hace referencia a un subject
que hace referencia a un organization
que tiene un name
deAcme
.
Muestras de búsquedas en cadena
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto de Google Cloud.
- LOCATION: Es la ubicación del conjunto de datos superior.
- DATASET_ID: El conjunto de datos superior del almacén de FHIR
- FHIR_STORE_ID es el ID del almacén de FHIR
Para enviar tu solicitud, elige una de estas opciones:
curl
En el siguiente ejemplo, se usa la consulta
Observation?subject:Patient.name=Christopher
para mostrar todas las Observaciones que tengan un subject
, que es un Patient
que tiene un nombre que comienza con Christopher
.
Ejecuta el siguiente comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation?subject:Patient.name=Christopher"
PowerShell
En el siguiente ejemplo, se usa la consulta
Observation?subject:Patient.name=Christopher
para mostrar todas las Observaciones que tengan un subject
, que es un Patient
que tiene un nombre que comienza con Christopher
.
Ejecuta el siguiente comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation?subject:Patient.name=Christopher" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "entry": [ { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/85652a63-09ba-4a5b-ac5b-b690c6972eb5", "resource": { "category": [ { "coding": [ { "code": "laboratory", "system": "http://hl7.org/fhir/observation-category" } ] } ], "code": { "coding": [ { "code": "2093-3", "display": "Total Cholesterol", "system": "http://loinc.org" } ], "text": "Total Cholesterol" }, "effectiveDateTime": "2008-03-07T17:47:02-05:00", "encounter": { "reference": "Encounter/0e9d631c-4407-45e5-bfbe-689806caaf7b" }, "id": "85652a63-09ba-4a5b-ac5b-b690c6972eb5", "issued": "2008-03-07T17:47:02-05:00", "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ", "profile": [ "http://standardhealthrecord.org/fhir/StructureDefinition/shr-observation-Observation" ], "versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA" }, "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a" }, "valueQuantity": { "code": "mg/dL", "system": "http://unitsofmeasure.org", "unit": "mg/dL", "value": 191 } }, "search": { "mode": "match" } }, { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/e7aea507-61af-4290-9323-0b3daed0b7a9", "resource": { "category": [ { "coding": [ { "code": "laboratory", "system": "http://hl7.org/fhir/observation-category" } ] } ], "code": { "coding": [ { "code": "2571-8", "display": "Triglycerides", "system": "http://loinc.org" } ], "text": "Triglycerides" }, "effectiveDateTime": "2008-03-07T17:47:02-05:00", "encounter": { "reference": "Encounter/0e9d631c-4407-45e5-bfbe-689806caaf7b" }, "id": "e7aea507-61af-4290-9323-0b3daed0b7a9", "issued": "2008-03-07T17:47:02-05:00", "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ", "profile": [ "http://standardhealthrecord.org/fhir/StructureDefinition/shr-observation-Observation" ], "versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA" }, "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a" }, "valueQuantity": { "code": "mg/dL", "system": "http://unitsofmeasure.org", "unit": "mg/dL", "value": 143 } }, "search": { "mode": "match" } }, { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/a35bf421-1f00-4897-a94d-4d47c3bb306b", "resource": { "category": [ { "coding": [ { "code": "vital-signs", "system": "http://hl7.org/fhir/observation-category" } ] } ], "code": { "coding": [ { "code": "55284-4", "display": "Blood Pressure", "system": "http://loinc.org" } ] }, "component": [ { "code": { "coding": [ { "code": "8480-6", "display": "Systolic Blood Pressure", "system": "http://loinc.org" } ], "text": "Systolic Blood Pressure" }, "valueQuantity": { "code": "mmHg", "system": "http://unitsofmeasure.org", "unit": "mmHg", "value": 133 } }, { "code": { "coding": [ { "code": "8462-4", "display": "Diastolic Blood Pressure", "system": "http://loinc.org" } ], "text": "Diastolic Blood Pressure" }, "valueQuantity": { "code": "mmHg", "system": "http://unitsofmeasure.org", "unit": "mmHg", "value": 84 } } ], "effectiveDateTime": "2008-03-07T17:47:02-05:00", "encounter": { "reference": "Encounter/0e9d631c-4407-45e5-bfbe-689806caaf7b" }, "id": "a35bf421-1f00-4897-a94d-4d47c3bb306b", "issued": "2008-03-07T17:47:02-05:00", "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ", "profile": [ "http://standardhealthrecord.org/fhir/StructureDefinition/shr-observation-Observation", "http://standardhealthrecord.org/fhir/StructureDefinition/shr-vital-BloodPressure" ], "versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA" }, "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a" } }, "search": { "mode": "match" } }, { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/14df9701-2dd4-4538-8fac-776c40dec22d", "resource": { "category": [ { "coding": [ { "code": "vital-signs", "system": "http://hl7.org/fhir/observation-category" } ] } ], "code": { "coding": [ { "code": "8302-2", "display": "Body Height", "system": "http://loinc.org" } ], "text": "Body Height" }, "effectiveDateTime": "2008-03-07T17:47:02-05:00", "encounter": { "reference": "Encounter/0e9d631c-4407-45e5-bfbe-689806caaf7b" }, "id": "14df9701-2dd4-4538-8fac-776c40dec22d", "issued": "2008-03-07T17:47:02-05:00", "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ", "profile": [ "http://standardhealthrecord.org/fhir/StructureDefinition/shr-observation-Observation", "http://standardhealthrecord.org/fhir/StructureDefinition/shr-vital-VitalSign", "http://standardhealthrecord.org/fhir/StructureDefinition/shr-vital-BodyHeight" ], "versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA" }, "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a" }, "valueQuantity": { "code": "cm", "system": "http://unitsofmeasure.org", "unit": "centimeters", "value": 177.72961711703704 } }, "search": { "mode": "match" } }, { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/1e2fdce6-4c79-4ef8-a5a9-2326cddbc8b3", "resource": { "category": [ { "coding": [ { "code": "vital-signs", "system": "http://hl7.org/fhir/observation-category" } ] } ], "code": { "coding": [ { "code": "39156-5", "display": "Body Mass Index", "system": "http://loinc.org" } ], "text": "Body Mass Index" }, "effectiveDateTime": "2008-03-07T17:47:02-05:00", "encounter": { "reference": "Encounter/0e9d631c-4407-45e5-bfbe-689806caaf7b" }, "id": "1e2fdce6-4c79-4ef8-a5a9-2326cddbc8b3", "issued": "2008-03-07T17:47:02-05:00", "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ", "profile": [ "http://standardhealthrecord.org/fhir/StructureDefinition/shr-observation-Observation", "http://standardhealthrecord.org/fhir/StructureDefinition/shr-vital-VitalSign", "http://standardhealthrecord.org/fhir/StructureDefinition/shr-vital-BodyMassIndex" ], "versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA" }, "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a" }, "valueQuantity": { "code": "kg/m2", "system": "http://unitsofmeasure.org", "unit": "kg/m2", "value": 38.34566163709526 } }, "search": { "mode": "match" } }, { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/58357362-6f18-438a-8479-3289ebab1617", "resource": { "category": [ { "coding": [ { "code": "laboratory", "system": "http://hl7.org/fhir/observation-category" } ] } ], "code": { "coding": [ { "code": "18262-6", "display": "Low Density Lipoprotein Cholesterol", "system": "http://loinc.org" } ], "text": "Low Density Lipoprotein Cholesterol" }, "effectiveDateTime": "2008-03-07T17:47:02-05:00", "encounter": { "reference": "Encounter/0e9d631c-4407-45e5-bfbe-689806caaf7b" }, "id": "58357362-6f18-438a-8479-3289ebab1617", "issued": "2008-03-07T17:47:02-05:00", "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ", "profile": [ "http://standardhealthrecord.org/fhir/StructureDefinition/shr-observation-Observation" ], "versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA" }, "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a" }, "valueQuantity": { "code": "mg/dL", "system": "http://unitsofmeasure.org", "unit": "mg/dL", "value": 102 } }, "search": { "mode": "match" } }, { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/c6f1b042-a0fc-4bbc-9cd5-7a8a924c00e7", "resource": { "category": [ { "coding": [ { "code": "laboratory", "system": "http://hl7.org/fhir/observation-category" } ] } ], "code": { "coding": [ { "code": "2085-9", "display": "High Density Lipoprotein Cholesterol", "system": "http://loinc.org" } ], "text": "High Density Lipoprotein Cholesterol" }, "effectiveDateTime": "2008-03-07T17:47:02-05:00", "encounter": { "reference": "Encounter/0e9d631c-4407-45e5-bfbe-689806caaf7b" }, "id": "c6f1b042-a0fc-4bbc-9cd5-7a8a924c00e7", "issued": "2008-03-07T17:47:02-05:00", "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ", "profile": [ "http://standardhealthrecord.org/fhir/StructureDefinition/shr-observation-Observation" ], "versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA" }, "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a" }, "valueQuantity": { "code": "mg/dL", "system": "http://unitsofmeasure.org", "unit": "mg/dL", "value": 60 } }, "search": { "mode": "match" } }, { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/ac57b908-2804-4d67-a7ad-1e4a4c3225a1", "resource": { "category": [ { "coding": [ { "code": "vital-signs", "system": "http://hl7.org/fhir/observation-category" } ] } ], "code": { "coding": [ { "code": "29463-7", "display": "Body Weight", "system": "http://loinc.org" } ], "text": "Body Weight" }, "effectiveDateTime": "2008-03-07T17:47:02-05:00", "encounter": { "reference": "Encounter/0e9d631c-4407-45e5-bfbe-689806caaf7b" }, "id": "ac57b908-2804-4d67-a7ad-1e4a4c3225a1", "issued": "2008-03-07T17:47:02-05:00", "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ", "profile": [ "http://standardhealthrecord.org/fhir/StructureDefinition/shr-observation-Observation", "http://standardhealthrecord.org/fhir/StructureDefinition/shr-vital-VitalSign", "http://standardhealthrecord.org/fhir/StructureDefinition/shr-vital-BodyWeight" ], "versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA" }, "resourceType": "Observation", "status": "final", "subject": { "reference": "Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a" }, "valueQuantity": { "code": "kg", "system": "http://unitsofmeasure.org", "unit": "kg", "value": 121.12557348891558 } }, "search": { "mode": "match" } } ], "link": [ { "relation": "search", "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/?subject%3APatient.name=Christopher" }, { "relation": "first", "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/?subject%3APatient.name=Christopher" }, { "relation": "self", "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/?subject%3APatient.name=Christopher" } ], "resourceType": "Bundle", "total": 8, "type": "searchset" }
Búsqueda en cadena inversa
Una búsqueda en cadena inversa coincide con los recursos según los criterios de otros recursos que se refieran a ellos. La sintaxis de una búsqueda en cadena inversa es la siguiente:
_has:[resource type]:[reference parameter]:[search parameter]=[value]
Por ejemplo, el recurso Appointment
tiene un parámetro de búsqueda patient
que hace referencia a un recurso de Patient
. Para encontrar todos los recursos de Patient
a los que hace referencia un recurso de Appointment
con una fecha de 2020-04-01
, usa Patient?_has:Appointment:patient:date=eq2020-04-01
.
Las cadenas inversas pueden ser recurrentes con otras cadenas o cadenas inversas, por ejemplo:Practitioner?_has:Encounter:practitioner:_has:Claim:encounter:created=eq2020-04-01
coincidiría con un Practitioner
P si hay unEncounter
E y un Claim
C de modo que C tenga una fecha de creación 2020-04-01
, C se refiere a E a través de su referencia encounter
, y E se refiere a P a través de su referencia practitioner
.
Ejemplos de búsqueda en cadena inversa
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto de Google Cloud.
- LOCATION: Es la ubicación del conjunto de datos superior.
- DATASET_ID: El conjunto de datos superior del almacén de FHIR
- FHIR_STORE_ID es el ID del almacén de FHIR
Para enviar tu solicitud, elige una de estas opciones:
curl
En el siguiente ejemplo, se usa la consulta
Patient?_has:Procedure:patient:date=eq2008-03-07
.
Ejecuta el siguiente comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?_has:Procedure:patient:date=eq2008-03-07"
PowerShell
En el siguiente ejemplo, se usa la consulta
Patient?_has:Procedure:patient:date=eq2008-03-07
.
Ejecuta el siguiente comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?_has:Procedure:patient:date=eq2008-03-07" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "entry": [ { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a", "resource": { "address": [ { "country": "US", "line": [ "907 Arlo Cliffs", "Suite 984" ], "postalCode": "XXXXX" } ], "birthDate": "1940-12-01", "communication": [ { "language": { "coding": [ { "code": "en-US", "display": "English (United States)", "system": "urn:ietf:bcp:47" } ] } } ], "deceasedDateTime": "2009-07-26T12:01:23-05:00", "extension": [ { "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-race", "valueCodeableConcept": { "coding": [ { "code": "2106-3", "display": "White", "system": "http://hl7.org/fhir/v3/Race" } ], "text": "race" } }, { "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity", "valueCodeableConcept": { "coding": [ { "code": "2186-5", "display": "Nonhispanic", "system": "http://hl7.org/fhir/v3/Ethnicity" } ], "text": "ethnicity" } }, { "url": "http://hl7.org/fhir/StructureDefinition/birthPlace", "valueAddress": { "city": "Tama", "country": "US", "postalCode": "52339", "state": "Iowa" } }, { "url": "http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName", "valueString": "Farrah Feeney" }, { "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-birthsex", "valueCode": "M" }, { "url": "http://hl7.org/fhir/StructureDefinition/patient-interpreterRequired", "valueBoolean": false }, { "url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-actor-FictionalPerson-extension", "valueBoolean": true }, { "url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-demographics-FathersName-extension", "valueHumanName": { "text": "Christopher Diaz" } }, { "url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-demographics-SocialSecurityNumber-extension", "valueString": "999-16-9041" } ], "gender": "male", "generalPractitioner": [ { "reference": "Organization/9fb51c89-1453-406c-8357-578311b43a91" } ], "id": "8ac08aa9-63d2-4e81-8647-3a138d7f9f5a", "identifier": [ { "system": "https://github.com/synthetichealth/synthea", "value": "c1ee4b49-3194-4b39-91ed-4d1393a780c6" }, { "system": "http://hl7.org/fhir/sid/us-ssn", "type": { "coding": [ { "code": "SB", "system": "http://hl7.org/fhir/identifier-type" } ] }, "value": "999169041" }, { "system": "urn:oid:2.16.840.1.113883.4.3.25", "type": { "coding": [ { "code": "DL", "system": "http://hl7.org/fhir/v2/0203" } ] }, "value": "S99992205" }, { "system": "http://standardhealthrecord.org/fhir/StructureDefinition/passportNumber", "type": { "coding": [ { "code": "PPN", "system": "http://hl7.org/fhir/v2/0203" } ] }, "value": "X12551631X" }, { "system": "http://hospital.smarthealthit.org", "type": { "coding": [ { "code": "MR", "system": "http://hl7.org/fhir/v2/0203" } ] }, "value": "c1ee4b49-3194-4b39-91ed-4d1393a780c6" } ], "maritalStatus": { "coding": [ { "code": "S", "system": "http://hl7.org/fhir/v3/MaritalStatus" } ], "text": "S" }, "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ", "profile": [ "http://standardhealthrecord.org/fhir/StructureDefinition/shr-demographics-PersonOfRecord" ], "versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA" }, "multipleBirthBoolean": false, "name": [ { "family": "Diaz", "given": [ "Christopher" ], "prefix": [ "Mr." ], "use": "official" } ], "resourceType": "Patient", "telecom": [ { "system": "phone", "use": "home", "value": "434-100-2918 x800" } ], "text": { "div": "Generated by Synthea. Version identifier: 2dd4c1c37e2743d14e5073c7b5e42899a3e51531", "status": "generated" } }, "search": { "mode": "match" } } ], "link": [ { "relation": "search", "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_has%3AProcedure%3Apatient%3Adate=eq2008-03-07" }, { "relation": "first", "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_has%3AProcedure%3Apatient%3Adate=eq2008-03-07" }, { "relation": "self", "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_has%3AProcedure%3Apatient%3Adate=eq2008-03-07" } ], "resourceType": "Bundle", "total": 1, "type": "searchset" }
Incluye recursos adicionales en los resultados de la búsqueda
Los parámetros _include
y _revinclude
solicitan que los resultados de la búsqueda
Deben incluir recursos adicionales (“recursos incluidos”) relacionados con los recursos
que coincidan de forma directa con la consulta ("resultados principales"). Usar estos parámetros es más
que realizar una serie de solicitudes para recuperar estas
los recursos por separado. En el paquete searchset
que se muestra en la búsqueda,
los recursos agregados por estos parámetros se marcarán con
entry.search.mode = include
para distinguirlos de los resultados principales
tendrá entry.search.mode = match
.
La inclusión directa con _include
agrega recursos y versiones de recursos
a la que hacen referencia los resultados principales, y la inclusión inversa con _revinclude
agrega
recursos que hacen referencia a los resultados primarios. La referencia a continuación es
especificada mediante el nombre de un parámetro de búsqueda y solo hacen referencia a los campos
disponibles, ya que los parámetros de búsqueda se pueden usar de esta manera.
Los formatos de los parámetros para _include
y _revinclude
son los mismos, y toman dos o tres valores delimitados por :
. El primer valor es el tipo de recurso del que proviene la referencia, el segundo valor es el nombre del parámetro de búsqueda y el tercer valor opcional limita el tipo de recurso a un solo tipo en los casos en los que la referencia puede apuntar a más de un tipo.
Por ejemplo:
MedicationRequest?_include=MedicationRequest:subject
busca en recursosMedicationRequest
y, para cada recurso que se muestra, también se muestra el objetivo de la referenciasubject
, que puede serGroup
oPatient
, según se define en la especificación FHIR.MedicationRequest?_include=MedicationRequest:subject:Patient
es similar, pero solo muestra referenciassubject
a los recursos dePatient
.MedicationRequest?_revinclude=Provenance:target
busca en recursosMedicationRequest
y para cada recurso que se muestra, también se muestra cualquiera de los recursosProvenance
en los que la referenciatarget
enProvenance
se refiere al recurso coincidente.
Muestras de búsqueda de _include
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto de Google Cloud.
- LOCATION: Es la ubicación del conjunto de datos superior.
- DATASET_ID: El conjunto de datos superior del almacén de FHIR
- FHIR_STORE_ID es el ID del almacén de FHIR
Para enviar tu solicitud, elige una de estas opciones:
curl
En el siguiente ejemplo, se usa
Observation?code=http://loinc.org|2571-8&_include=*
.
para cada búsqueda.
Ejecuta el siguiente comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation?code=http://loinc.org|2571-8&_include=*"
PowerShell
En el siguiente ejemplo, se usa
Observation?code=http://loinc.org|2571-8&_include=*
.
para cada búsqueda.
Ejecuta el siguiente comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation?code=http://loinc.org|2571-8&_include=*" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "entry": [ { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a", "resource": { "address": [ { "country": "US", "line": [ "907 Arlo Cliffs", "Suite 984" ], "postalCode": "XXXXX" } ], "birthDate": "1940-12-01", "communication": [ { "language": { "coding": [ { "code": "en-US", "display": "English (United States)", "system": "urn:ietf:bcp:47" } ] } } ], "deceasedDateTime": "2009-07-26T12:01:23-05:00", "extension": [ { "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-race", "valueCodeableConcept": { "coding": [ { "code": "2106-3", "display": "White", "system": "http://hl7.org/fhir/v3/Race" } ], "text": "race" } }, { "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity", "valueCodeableConcept": { "coding": [ { "code": "2186-5", "display": "Nonhispanic", "system": "http://hl7.org/fhir/v3/Ethnicity" } ], "text": "ethnicity" } }, { "url": "http://hl7.org/fhir/StructureDefinition/birthPlace", "valueAddress": { "city": "Tama", "country": "US", "postalCode": "52339", "state": "Iowa" } }, { "url": "http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName", "valueString": "Farrah Feeney" }, { "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-birthsex", "valueCode": "M" }, { "url": "http://hl7.org/fhir/StructureDefinition/patient-interpreterRequired", "valueBoolean": false }, { "url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-actor-FictionalPerson-extension", "valueBoolean": true }, { "url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-demographics-FathersName-extension", "valueHumanName": { "text": "Christopher Diaz" } }, { "url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-demographics-SocialSecurityNumber-extension", "valueString": "999-16-9041" } ], "gender": "male", "generalPractitioner": [ { "reference": "Organization/9fb51c89-1453-406c-8357-578311b43a91" } ], "id": "8ac08aa9-63d2-4e81-8647-3a138d7f9f5a", "identifier": [ { "system": "https://github.com/synthetichealth/synthea", "value": "c1ee4b49-3194-4b39-91ed-4d1393a780c6" }, { "system": "http://hl7.org/fhir/sid/us-ssn", "type": { "coding": [ { "code": "SB", "system": "http://hl7.org/fhir/identifier-type" } ] }, "value": "999169041" }, { "system": "urn:oid:2.16.840.1.113883.4.3.25", "type": { "coding": [ { "code": "DL", "system": "http://hl7.org/fhir/v2/0203" } ] }, "value": "S99992205" }, { "system": "http://standardhealthrecord.org/fhir/StructureDefinition/passportNumber", "type": { "coding": [ { "code": "PPN", "system": "http://hl7.org/fhir/v2/0203" } ] }, "value": "X12551631X" }, { "system": "http://hospital.smarthealthit.org", "type": { "coding": [ { "code": "MR", "system": "http://hl7.org/fhir/v2/0203" } ] }, "value": "c1ee4b49-3194-4b39-91ed-4d1393a780c6" } ], "maritalStatus": { "coding": [ { "code": "S", "system": "http://hl7.org/fhir/v3/MaritalStatus" } ], "text": "S" }, "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ", "profile": [ "http://standardhealthrecord.org/fhir/StructureDefinition/shr-demographics-PersonOfRecord" ], "versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA" }, "multipleBirthBoolean": false, "name": [ { "family": "Diaz", "given": [ "Christopher" ], "prefix": [ "Mr." ], "use": "official" } ], "resourceType": "Patient", "telecom": [ { "system": "phone", "use": "home", "value": "434-100-2918 x800" } ], "text": { "div": "Generated by Synthea. Version identifier: 2dd4c1c37e2743d14e5073c7b5e42899a3e51531", "status": "generated" } }, "search": { "mode": "match" } } ], "link": [ { "relation": "search", "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_has%3AProcedure%3Apatient%3Adate=eq2008-03-07" }, { "relation": "first", "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_has%3AProcedure%3Apatient%3Adate=eq2008-03-07" }, { "relation": "self", "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_has%3AProcedure%3Apatient%3Adate=eq2008-03-07" } ], "resourceType": "Bundle", "total": 1, "type": "searchset" }
El modificador :iterate
hace que un _include
se evalúe de forma iterativa.
Este modificador puede seguir una capa adicional de referencias de los resultados incluidos.
o seguir estructuras recursivas, como referencias a Observation:derived-from
a otro Observation
. La profundidad de la recursividad es limitada.
Por ejemplo:
Observation?_include:iterate=Observation:derived-from:Observation
busca en recursosObservation
y sigue la referencia derivada de los recursosObservation
coincidentes y, luego, de los recursos incluidos, y así sucesivamente.MedicationRequest?_revinclude=Provenance:target&_include:iterate=Provenance:agent
buscará enMedicationRequest
, incluirá recursosProvenance
con untarget
que esté en este conjunto de resultados y, luego, incluirá recursos a los que se hace referencia a través del parámetroagent
de esos recursosProvenance
.
Un comodín, *
, indica que todas las referencias están disponibles como parámetros de búsqueda
debe incluirse. Puedes usar el comodín *
como el primer y único argumento en _include
, o en lugar del nombre del parámetro de búsqueda del _include
estándar, en el que el tercer valor opcional limita el tipo de recurso a un solo tipo, como en el comportamiento original.
Por ejemplo:
Observation?_include=*
busca en recursosObservation
y, para cada recurso que se muestra, también muestra todos los recursos a los que se hace referencia.Observation?_include=Observation:*
es equivalente a lo anterior.MedicationRequest?_include=MedicationRequest:*:Patient
devuelve todo referencias a recursosPatient
para cada recursoMedicationRequest
.
El servidor anula los recursos duplicados para que cada página de resultados solo incluya una copia del recurso, incluso si el recurso aparece en múltiples referencias. El mismo recurso incluido aparece en cada página de resultados si un resultado principal se relaciona con él.
Administra la cantidad de recursos incluidos
Tenga en cuenta lo siguiente sobre los recursos adicionales que se incluyen mediante el
Parámetros _include
y _revinclude
:
Los recursos incluidos no se tienen en cuenta en el tamaño de la página. No son se cuentan en
Bundle.total
y podrían provocar que la cantidad de recursos sean más grandes que un parámetro_count
especificado.Debido a que los recursos incluidos no se tienen en cuenta en el tamaño de la página, ten cuidado con Parámetros
_include
y_revinclude
que pueden producir muchos resultados. Los tamaños de resultados grandes pueden generar tiempos de espera o errores. Te recomendamos usar un_count
más pequeño. para limitar la cantidad de resultados primarios si esperas que incluidos los resultados. Evita seguir una relación de uno a varios en la que los extremos de la relación no es limitada.Un parámetro
_revinclude
individual agrega, como máximo, 100 elementos de Google Cloud. Para casos de uso en los que podría haber más de 100 recursos de referencia a los resultados principales, realiza una de las siguientes acciones:- Usa una solicitud de búsqueda por separado con el tamaño de la página y los parámetros de paginación para obtener más resultados.
Comienza la búsqueda con los recursos incluidos:
Supongamos que un recurso Encounter con el ID
1234
tiene cientos de recursos Observation. Buscando estos recursos de observación con_revinclude
(comienza con Encounter) devuelve una respuesta que exceda el límite de 100 recursos adicionales:fhir/Encounter?_id=123&_revinclude=Observation:encounter
En cambio, busca recursos de observación y, luego, incluye el Encuentro relacionado usando
_include
:fhir/Observation?encounter=123&_include=Observation:encounter
Este enfoque filtra los recursos Observation solo a aquellos relacionados con el encuentro y recupera el recurso Encounter solo una vez.
Limita los campos que se muestran en los resultados de la búsqueda
El parámetro _elements
permite al cliente solicitar que solo un subconjunto de
campos se devuelven para cada resultado de búsqueda para reducir el tamaño de la respuesta
y omitir datos innecesarios. El parámetro acepta una lista de nombres de elementos básicos separados por comas en el recurso, por ejemplo, Patient?_elements=identifier,contact,link
. Solo estos campos y sus
secundarios se incluirán en los recursos devueltos. Recursos en la respuesta
que fueron alteradas por este parámetro contendrán un valor meta.tag
de
SUBSETTED
para indicar que están incompletos.
_elements
de ejemplos de búsqueda
REST
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto de Google Cloud.
- LOCATION: Es la ubicación del conjunto de datos superior.
- DATASET_ID: El conjunto de datos superior del almacén de FHIR
- FHIR_STORE_ID es el ID del almacén de FHIR
Para enviar tu solicitud, elige una de estas opciones:
curl
En el siguiente ejemplo, se usa
Patient?_elements=identifier,contact,link
.
para cada búsqueda.
Ejecuta el siguiente comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?_elements=identifier,contact,link"
PowerShell
En el siguiente ejemplo, se usa
Patient?_elements=identifier,contact,link
.
para cada búsqueda.
Ejecuta el siguiente comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?_elements=identifier,contact,link" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "entry": [ { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/patient3", "resource": { "id": "patient3", "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ", "tag": [ { "code": "SUBSETTED", "system": "http://hl7.org/fhir/v3/ObservationValue" } ], "versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA" }, "resourceType": "Patient" }, "search": { "mode": "match" } }, { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/patient2", "resource": { "id": "patient2", "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ", "tag": [ { "code": "SUBSETTED", "system": "http://hl7.org/fhir/v3/ObservationValue" } ], "versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA" }, "resourceType": "Patient" }, "search": { "mode": "match" } }, { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a", "resource": { "id": "8ac08aa9-63d2-4e81-8647-3a138d7f9f5a", "identifier": [ { "system": "https://github.com/synthetichealth/synthea", "value": "c1ee4b49-3194-4b39-91ed-4d1393a780c6" }, { "system": "http://hl7.org/fhir/sid/us-ssn", "type": { "coding": [ { "code": "SB", "system": "http://hl7.org/fhir/identifier-type" } ] }, "value": "999169041" }, { "system": "urn:oid:2.16.840.1.113883.4.3.25", "type": { "coding": [ { "code": "DL", "system": "http://hl7.org/fhir/v2/0203" } ] }, "value": "S99992205" }, { "system": "http://standardhealthrecord.org/fhir/StructureDefinition/passportNumber", "type": { "coding": [ { "code": "PPN", "system": "http://hl7.org/fhir/v2/0203" } ] }, "value": "X12551631X" }, { "system": "http://hospital.smarthealthit.org", "type": { "coding": [ { "code": "MR", "system": "http://hl7.org/fhir/v2/0203" } ] }, "value": "c1ee4b49-3194-4b39-91ed-4d1393a780c6" } ], "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ", "tag": [ { "code": "SUBSETTED", "system": "http://hl7.org/fhir/v3/ObservationValue" } ], "versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA" }, "resourceType": "Patient" }, "search": { "mode": "match" } }, { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/patient1", "resource": { "id": "patient1", "meta": { "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ", "tag": [ { "code": "SUBSETTED", "system": "http://hl7.org/fhir/v3/ObservationValue" } ], "versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA" }, "resourceType": "Patient" }, "search": { "mode": "match" } } ], "link": [ { "relation": "search", "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_elements=identifier%2Ccontact%2Clink" }, { "relation": "first", "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_elements=identifier%2Ccontact%2Clink" }, { "relation": "self", "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_elements=identifier%2Ccontact%2Clink" } ], "resourceType": "Bundle", "total": 4, "type": "searchset" }
La API de Cloud Healthcare tiene compatibilidad limitada con el parámetro _summary
, que proporciona subconjuntos predefinidos de campos de recursos de manera similar a _elements
:
_summary=text
solo muestra los campos de nivel superiortext
,id
ymeta
._summary=data
quita el campotext
y muestra todos los demás campos.