En esta página se describe cómo configurar un almacén FHIR para que admita parámetros de búsqueda personalizados de campos y extensiones que no estén cubiertos por los parámetros de búsqueda estándar de FHIR.
Los parámetros de búsqueda personalizados pueden ser útiles en muchas situaciones, como las siguientes:
- Necesitas buscar un campo en un recurso FHIR, pero no hay ningún parámetro de búsqueda compatible para ese campo.
- Debes buscar en las extensiones añadidas al modelo de datos FHIR.
Información general
De forma predeterminada, la búsqueda de recursos FHIR admite los parámetros de búsqueda estándar definidos en la especificación de FHIR, con algunas exclusiones documentadas en la declaración de funciones de FHIR o en la declaración de conformidad de FHIR.
Puede crear uno o varios parámetros de búsqueda personalizados y configurar el almacén FHIR para que los admita en las consultas mediante el método search
. Los parámetros de búsqueda personalizados son útiles en las siguientes situaciones:
- Para buscar en campos que no están cubiertos por los parámetros de búsqueda estándar.
- Para buscar en extensiones del modelo de datos FHIR.
En muchas guías de implementación de FHIR se definen parámetros de búsqueda que puedes usar en tus búsquedas.
Los parámetros de búsqueda personalizados admiten el mismo comportamiento de búsqueda, incluidas las funciones avanzadas de búsqueda FHIR que los parámetros de búsqueda estándar, como los siguientes:
- modificadores
_include
y_revinclude
- búsqueda encadenada
_sort
Para habilitar una búsqueda personalizada en tu almacén FHIR, primero debes crear uno o varios recursos SearchParameter
que definan el comportamiento de la búsqueda. SearchParameter
es un tipo de recurso FHIR estándar que se puede crear, actualizar o eliminar con los mismos métodos que cualquier otro tipo de recurso. Consulta Crear un recurso de parámetro de búsqueda en el almacén.
Los recursos SearchParameter
de un almacén FHIR no se aplican hasta que se configuran con el método configureSearch
. Este método habilita una lista de parámetros de búsqueda personalizada. Cada vez que se llama, se sustituye la lista de parámetros anterior. Se activa una operación de larga duración para configureSearch
con el fin de reindexar todos los recursos relevantes del almacén según la nueva configuración de búsqueda. Todos los recursos nuevos y actualizados después de la llamada al método se indexan según la nueva configuración. Se eliminan los datos de índice de los parámetros de búsqueda personalizados que ya no están en la configuración.
Para obtener más información sobre cómo usar configureSearch
, consulte Habilitar el parámetro de búsqueda personalizada en un almacén FHIR.
El CapabilityStatement
de la tienda, obtenido mediante el método fhir.capabilities
, muestra tanto los parámetros de búsqueda estándar como los personalizados. Los parámetros de búsqueda de un recurso se encuentran en el campo rest.resource.searchParam
.
Crear una búsqueda FHIR personalizada
Crear un recurso SearchParameter en el almacén FHIR
En los siguientes ejemplos se muestra cómo crear un recurso de parámetro de búsqueda personalizado
con el método projects.locations.datasets.fhirStores.fhir.create
. También puedes usar el método projects.locations.datasets.fhirStores.import
.
Para ver las descripciones de los campos relevantes de los parámetros de búsqueda, consulta Campos del recurso SearchParameter.
curl
En el siguiente ejemplo se muestra una solicitud POST
que utiliza curl
.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ \"resourceType\": \"SearchParameter\", \"url\": \"CANONICAL_URL\", \"base\": [\"RESOURCE_TYPE\"], \"code\": \"SEARCH_PARAMETER_CODE\", \"name\": \"SEARCH_PARAMETER_NAME\", \"type\": \"SEARCH_PARAMETER_TYPE\", \"expression\": \"SEARCH_PARAMETER_EXPRESSION\", \"status\": \"active\", \"description\": \"SEARCH_PARAMETER_DESCRIPTION\" }" \ "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/SearchParameter"
Si la solicitud se realiza de forma correcta, el servidor devuelve la respuesta en formato JSON:
{ "resourceType": "SearchParameter", "url": "CANONICAL_URL", "base": ["RESOURCE_TYPE"], "code": "SEARCH_PARAMETER_CODE", "name": "SEARCH_PARAMETER_NAME", "type": "SEARCH_PARAMETER_TYPE", "expression": "SEARCH_PARAMETER_EXPRESSION", "status": "active", "description": "SEARCH_PARAMETER_DESCRIPTION", "meta": { "lastUpdated": "LAST_UPDATED", "versionId": "VERSION_ID" }, }
PowerShell
En el siguiente ejemplo se muestra una solicitud POST
que utiliza Windows PowerShell.
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } $SearchParameter = '{ "resourceType": "SearchParameter", "url": "CANONICAL_URL", "base": ["RESOURCE_TYPE"], "code": "SEARCH_PARAMETER_CODE", "name": "SEARCH_PARAMETER_NAME", "type": "SEARCH_PARAMETER_TYPE", "expression": "SEARCH_PARAMETER_EXPRESSION", "status": "active", "description": "SEARCH_PARAMETER_DESCRIPTION" }' Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $SearchParameter ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/SearchParameter" | ConvertTo-Json
Si la solicitud se realiza de forma correcta, el servidor devuelve la respuesta en formato JSON:
{ "resourceType": "SearchParameter", "url": "CANONICAL_URL", "base": ["RESOURCE_TYPE"], "code": "SEARCH_PARAMETER_CODE", "name": "SEARCH_PARAMETER_NAME", "type": "SEARCH_PARAMETER_TYPE", "expression": "SEARCH_PARAMETER_EXPRESSION", "status": "active", "description": "SEARCH_PARAMETER_DESCRIPTION", "meta": { "lastUpdated": "LAST_UPDATED", "versionId": "VERSION_ID" }, }
Habilitar el parámetro de búsqueda personalizado en tu almacén de FHIR
Para habilitar uno o varios parámetros de búsqueda personalizados en tu almacén FHIR, haz una solicitud POST
al método [store base URL]:configureSearch
y especifica la URL canónica de cada parámetro de búsqueda que quieras habilitar.
Las URLs canónicas se especifican en uno de los siguientes formatos:
uri
: selecciona elversion
más grande disponible en la tienda para ese URI.uri|version
Selecciona una versión específica.
Por ejemplo, si la tienda contiene las versiones 1.0.0
y 1.0.1
de los parámetros de búsqueda con el URI http://example.com/search
,
la URL canónica http://example.com/search|1.0.0
selecciona la versión 1.0.0
. La URL canónica http://example.com/search
selecciona la versión 1.0.1
.
La lista de URLs proporcionada a este método sustituye cualquier configuración anterior y elimina los parámetros de búsqueda personalizada que estuvieran en vigor. La configuración se almacena en caché en función del contenido de los SearchParameter
recursos que existían en el momento en que se llamó a configureSearch
. La configuración no se actualizará si se actualizan o eliminan los recursos de SearchParameter
hasta que se vuelva a llamar a configureSearch
.
Si la llamada al método [store base URL]:configureSearch
se realiza correctamente, el valor devuelto es el nombre de una operación de larga duración para reindexar los recursos de la tienda según la nueva configuración. Puedes ver el estado de la operación de larga duración con el método operations.get
y cancelarla con el método operations.cancel
. El estado contiene un contador que indica cuántos recursos se han reindexado correctamente.
Las búsquedas en la tienda siguen funcionando con normalidad mientras se ejecuta la operación de larga duración, excepto que los parámetros de búsqueda personalizados que se añadan o cambien con esta operación devuelven resultados parciales. Puedes cancelar la operación sin problemas, pero se indexarán parcialmente los parámetros de búsqueda personalizada. Es importante completar toda la operación de reindexación correctamente antes de buscar con los parámetros recién añadidos o modificados.
Si hay errores, se muestran en Cloud Logging.
El método configureSearch
también se puede usar con la opción "validate_only": true
para validar los parámetros de búsqueda especificados sin modificar la configuración de la tienda y sin reindexar ningún dato.
En los siguientes ejemplos se muestra cómo habilitar uno o varios parámetros de búsqueda personalizados en un almacén FHIR mediante el método projects.locations.datasets.fhirStores.configureSearch
.
curl
En el siguiente ejemplo se muestra una solicitud POST
que utiliza curl
.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ \"canonicalUrls\": [\"CANONICAL_URL1\",\"CANONICAL_URL2\"], }" \ "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:configureSearch"
Si la solicitud se realiza de forma correcta, el servidor devuelve la respuesta en formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
La respuesta contiene un nombre de operación. Para hacer un seguimiento del estado de la operación, puedes usar el método Operation get
:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
Si la operación de larga duración sigue en curso, el servidor devuelve una respuesta con el número de recursos FHIR pendientes de reindexación en formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.healthcare.v1beta1.OperationMetadata", "apiMethodName": "google.cloud.healthcare.v1beta1.fhir.FhirStoreService.ConfigureSearch", "createTime": "CREATE_TIME", "logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL", "counter": { "pending": "PENDING_COUNT" } } }
Cuando finaliza la operación de larga duración, el servidor devuelve una respuesta con el estado de la operación en formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata", "apiMethodName": "google.cloud.healthcare.v1.fhir.FhirService.configureSearch", "createTime": "CREATE_TIME", "endTime": "END_TIME", "logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL", "counter": { "success": "SUCCESS_COUNT" } }, "done": true, "response": { "@type": "type.googleapis.com/google.protobuf.Empty", } }
Si la operación de larga duración se completa correctamente, la respuesta contiene el número de recursos FHIR que se han reindexado correctamente y un tipo de respuesta google.protobuf.Empty
.
PowerShell
En el siguiente ejemplo se muestra una solicitud POST
que utiliza Windows PowerShell.
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } $configureSearch = '{ "canonical_urls": [ "CANONICAL_URL1", "CANONICAL_URL2" ] }' Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $configureSearch ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:configureSearch"
Si la solicitud se realiza de forma correcta, el servidor devuelve la respuesta en formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
La respuesta contiene un nombre de operación. Para hacer un seguimiento del estado de la operación, puedes usar el método Operation get
:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
Si la operación de larga duración sigue en curso, el servidor devuelve una respuesta con el número de recursos FHIR pendientes de reindexación en formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.healthcare.v1beta1.OperationMetadata", "apiMethodName": "google.cloud.healthcare.v1beta1.fhir.FhirStoreService.ConfigureSearch", "createTime": "CREATE_TIME", "logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL", "counter": { "pending": "PENDING_COUNT" } } }
Cuando finaliza la operación de larga duración, el servidor devuelve una respuesta con el estado de la operación en formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata", "apiMethodName": "google.cloud.healthcare.v1.fhir.FhirService.configureSearch", "createTime": "CREATE_TIME", "endTime": "END_TIME", "logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL", "counter": { "success": "SUCCESS_COUNT" } }, "done": true, "response": { "@type": "type.googleapis.com/google.protobuf.Empty", } }
Si la operación de larga duración se completa correctamente, la respuesta contiene el número de recursos FHIR que se han reindexado correctamente y un tipo de respuesta google.protobuf.Empty
.
Buscar recursos con una búsqueda personalizada
Puedes buscar usando un SearchParameter personalizado de la misma forma que cualquier otra búsqueda. Usa el valor code
del recurso de parámetro de búsqueda como key
para la consulta de búsqueda. Para obtener más información, consulta Buscar recursos FHIR.
Campos de recursos SearchParameter
En la siguiente sección se describen los campos del recurso SearchParameter que son relevantes para las búsquedas personalizadas. Estos campos están disponibles en las versiones STU3 y R4 de FHIR.
uri
y version
El campo uri
, que es obligatorio, y los campos version
, que son opcionales, definen la URL canónica del recurso SearchParameter. La combinación de uri
y version
debe ser única en el almacén de FHIR.
La URL canónica es la que se usa en la llamada configureSearch
.
name
, description
y status
Los campos name
, description
y status
son obligatorios, pero no tienen ningún efecto funcional.
base
El campo base
muestra los tipos de recursos FHIR a los que se aplica esta búsqueda.
Si hay más de un tipo, el campo expression
debe tener una cláusula para cada tipo. No hay ninguna diferencia entre definir un parámetro en dos tipos o definir un parámetro para cada tipo. Si defines un parámetro para varios tipos de recursos, las definiciones serán más compactas.
code
El campo code
define la clave que se va a usar en una consulta de búsqueda de FHIR. Por ejemplo, si code
se define como payment-type
y base
se define como Claim
, una consulta de búsqueda que use este parámetro sería Claim?payment-type=ABC
.
El campo code
no puede tener el mismo valor que ningún otro parámetro de búsqueda estándar o personalizado del mismo tipo de recurso. Los parámetros de búsqueda estándar no se pueden redefinir ni modificar con parámetros de búsqueda personalizados. El método configureSearch
rechaza los parámetros de búsqueda duplicados.
El valor del campo code
debe cumplir los siguientes requisitos:
- Debe empezar por una letra
- No puede tener más de 64 caracteres
- Solo debe contener lo siguiente:
- Caracteres alfanuméricos
- Carácter de guion
-
- Carácter de guion bajo
_
La convención estándar de FHIR para el campo code
es usar minúsculas con guiones.
type
El campo type
define el tipo de parámetro de búsqueda. El tipo de parámetro de búsqueda determina la semántica de las condiciones de búsqueda tal como se define en la especificación de búsqueda de FHIR.
El valor de type
debe ser compatible con el tipo de datos del campo especificado por el campo expression
. Si no es así, configureSearch
rechaza el parámetro de búsqueda personalizado.
El campo type
debe definirse como uno de los siguientes:
number
date
string
token
reference
quantity
uri
No se admiten los tipos composite
y special
.
expression
El campo expression
define qué campos o extensiones consulta el parámetro de búsqueda. Este campo usa un conjunto limitado de la sintaxis y las funciones de FHIRPath.
Sintaxis de los campos
El campo expression
se define como una ruta que empieza por el tipo de recurso y va seguida de uno o varios campos separados por .
. Por ejemplo, Patient.contact.name.given
. La estructura de los campos de los datos FHIR se puede consultar en los recursos FHIR y los tipos de datos FHIR.
Varias cláusulas
El campo expression
puede contener varias cláusulas separadas por |
. En este caso, el parámetro de búsqueda coincide si alguna de las cláusulas coincide con el recurso. Por ejemplo, un parámetro de búsqueda con la expresión Patient.name.given | Patient.name.family
coincide con cualquiera de esos dos campos. Usa varias cláusulas cuando se especifique más de un tipo de recurso en base
. Por ejemplo, Patient.name.given | Practitioner.name.given
para un parámetro de búsqueda que se aplica tanto a Patient
como a Practitioner
.
.as([data type])
Usa la función .as([data type])
cuando un campo tenga más de un tipo de datos posible. Por ejemplo, el campo Observation.value
puede contener muchos tipos diferentes, como Quantity
y String
, que funcionan con diferentes tipos de búsqueda.
Puedes seleccionar estos tipos de búsqueda con Observation.value.as(Quantity)
o Observation.value.as(String)
.
Seleccionar extensiones
Puedes seleccionar extensiones con la función .extension([canonical url])
.
Como las extensiones contienen un campo value
que puede contener cualquier tipo de datos, la ruta completa se define como .extension([canonical url]).value.as([data type])
.
Las extensiones complejas pueden usar varios componentes .extension()
, como Patient.extension('http://hl7.org/fhir/StructureDefinition/patient-citizenship').extension('code').value.as(CodeableConcept)
.
También puedes usar la función .extension.where(url='[canonical url]')
para seleccionar extensiones. Este es el único contexto en el que se permite la función where()
.
No se admiten otras funciones de FHIRPath.
target
Si el campo type
se define como reference
, el campo target
debe contener uno o varios tipos de recursos FHIR que definan qué tipos de recursos pueden ser el destino de esta búsqueda de referencias.
Por ejemplo, si el campo Patient.generalPractitioner
permite referencias a Practitioner
, PractitionerRole
y Organization
, un parámetro de búsqueda puede coincidir específicamente con referencias a Practitioner
, PractitionerRole
o Organization
.
Para que coincidan todos los tipos de destino de las referencias, incluya todos los tipos en el campo target
.
modifier
, comparator
, multipleOr
, multipleAnd
y chain
Se ignoran los campos modifier
, comparator
, multipleOr
, multipleAnd
y chain
. Las opciones y funciones disponibles con un parámetro de búsqueda personalizado son las mismas que las admitidas por el almacén de FHIR en un parámetro de búsqueda estándar del mismo tipo.
Usar parámetros de búsqueda de una guía de implementación
Si vas a implementar parámetros de búsqueda obtenidos de una guía de implementación de FHIR, importa los recursos SearchParameter
del archivo JSON de tu guía de implementación al almacén FHIR mediante uno de los siguientes métodos:
En algunos casos, debe convertir un parámetro de búsqueda publicado para que sea compatible con la API Cloud Healthcare. Si los parámetros de búsqueda no se convierten, el método configureSearch
los rechaza. Las siguientes restricciones se aplican a los parámetros de búsqueda de las guías de implementación:
Si el parámetro de búsqueda es idéntico a los parámetros de la especificación FHIR base, el método
configureSearch
rechaza los parámetros de búsqueda duplicados. Omitir los duplicados al llamar aconfigureSearch
. Para obtener más información, consultacode
.Si el parámetro de búsqueda solo contiene una expresión
xpath
, conviértela en una expresión FHIRPath equivalente y úsala en el campoexpression
. Para obtener más información, consultaexpression
.No se admiten los tipos de parámetros de búsqueda
composite
yspecial
.No se admite la sintaxis alternativa de conversión de tipos
([field] as [data type])
. Convierte el valor al equivalente admitido[field].as([data type])
. Para obtener más información, consulta.as([data type])
.No se admite la convención
[reference field].where(resolve() is [resource type])
para restringir el tipo de un recurso referenciado. Quita la cláusulawhere()
y almacena el tipo de recurso al que se hace referencia en el campoSearchParameter.target
. Para obtener más información, consultatarget
.Algunas guías de implementación usan expresiones para extensiones que omiten algunos de los componentes de ruta necesarios para el almacén FHIR de la API Cloud Healthcare. Por ejemplo,
Patient.extension('url')
debe modificarse aPatient.extension('url').value.as([data type])
yPatient.extension('url').extension.value
debe modificarse aPatient.extension('url').extension('url2').value.as([data type])
.
Ejemplos
Usar una búsqueda personalizada para buscar en un campo de extensión
En los siguientes pasos se muestra un ejemplo de cómo buscar texto en la extensión mothersMaidenName
de los recursos Patient.
Crea un recurso Patient de ejemplo:
curl
En el siguiente ejemplo se muestra cómo crear un recurso Patient haciendo una solicitud
POST
concurl
. Este recurso Patient tiene la extensiónmothersMaidenName
con el valorMarca
.curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ \"name\": [ { \"use\": \"official\", \"family\": \"Smith\", \"given\": [ \"Darcy\" ] } ], \"gender\": \"female\", \"birthDate\": \"1970-01-01\", \"resourceType\": \"Patient\", \"extension\": [ { \"url\": \"http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName\", \"valueString\": \"Marca\" } ] }" \ "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient"
Si la solicitud se realiza de forma correcta, el servidor devuelve una respuesta similar a la siguiente en formato JSON:
{ "birthDate": "1970-01-01", "gender": "female", "id": "PATIENT_ID", "meta": { "lastUpdated": "2020-01-01T00:00:00+00:00", "versionId": "VERSION_ID" }, "name": [ { "family": "Smith", "given": [ "Darcy" ], "use": "official" } ], "resourceType": "Patient" "extension": [ { "url": "http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName", "valueString": "Marca" } ] }
PowerShell
En el siguiente ejemplo se muestra cómo crear un recurso Patient enviando una solicitud
POST
con Windows PowerShell. Este recurso Patient tiene la extensiónmothersMaidenName
definida comoMarca
.$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } $Patient = '{ "name": [ { "use": "official", "family": "Smith", "given": [ "Darcy" ] } ], "gender": "female", "birthDate": "1970-01-01", "resourceType": "Patient", "extension": [ { "url": "http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName", "valueString": "Marca" } ] }' Invoke-RestMethod ` -Method Post ` -Headers $headers ` -ContentType: "application/fhir+json; charset=utf-8" ` -Body $Patient ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient" | ConvertTo-Json
Si la solicitud se realiza de forma correcta, el servidor devuelve una respuesta similar a la siguiente en formato JSON:
{ "birthDate": "1970-01-01", "gender": "female", "id": "PATIENT_ID", "meta": { "lastUpdated": "2020-01-01T00:00:00+00:00", "versionId": "VERSION_ID" }, "name": [ { "family": "Smith", "given": [ "Darcy" ], "use": "official" } ], "resourceType": "Patient" "extension": [ { "url": "http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName", "valueString": "Marca" } ] }
Crea un recurso de parámetro de búsqueda personalizado:
curl
En el siguiente ejemplo se muestra cómo crear el recurso de parámetro de búsqueda personalizado para la extensión
mothersMaidenName
haciendo una solicitudPOST
concurl
.curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ \"resourceType\": \"SearchParameter\", \"url\": \"http://example.com/SearchParameter/patient-mothersMaidenName\", \"base\": [\"Patient\"], \"code\": \"mothers-maiden-name\", \"name\": \"mothers-maiden-name\", \"type\": \"string\", \"expression\": \"Patient.extension('http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName').value.as(String)\", \"status\": \"active\", \"description\": \"search on mother's maiden name\" }" \ "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/SearchParameter"
Si la solicitud se realiza de forma correcta, el servidor devuelve la respuesta en formato JSON:
{
"resourceType": "SearchParameter",
"url": "http://example.com/SearchParameter/patient-mothersMaidenName",
"base": ["Patient"],
"code": "mothers-maiden-name",
"name": "mothers-maiden-name",
"type": "string",
"expression": "Patient.extension('http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName').value.as(String)",
"status": "active",
"description": "search on mother's maiden name",
"meta": {
"lastUpdated": "2020-01-01T00:00:00+00:00",
"versionId": "VERSION_ID"
},
}PowerShell
A continuación, se muestra cómo crear el recurso de parámetro de búsqueda personalizado para la extensión `mothersMaidenName` enviando una solicitud `POST` mediante Windows PowerShell.$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } $SearchParameter = '{ "resourceType": "SearchParameter", "url": "http://example.com/SearchParameter/patient-mothersMaidenName", "base": ["Patient"], "code": "mothers-maiden-name", "name": "mothers-maiden-name", "type": "string", "expression": "Patient.extension(''http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName'').value.as(String)", "status": "active", "description": "search on mother''s maiden name" }' Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $SearchParameter ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/SearchParameter"
Si la solicitud se realiza de forma correcta, el servidor devuelve la respuesta en formato JSON:
{
"resourceType": "SearchParameter",
"url": "http://example.com/SearchParameter/patient-mothersMaidenName",
"base": ["Patient"],
"code": "mothers-maiden-name",
"name": "mothers-maiden-name",
"type": "string",
"expression": "Patient.extension('http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName').value.as(String)",
"status": "active",
"description": "search on mother's maiden name",
"meta": {
"lastUpdated": "2020-01-01T00:00:00+00:00",
"versionId": "VERSION_ID"
},
}expression
, usa la función.as([data type])
. Por ejemplo, para especificar la expresión de búsqueda de un valor booleano, utilice.value.as(Boolean)
. Para obtener más información, consulta.as([data type])
.Habilita el parámetro de búsqueda:
curl
Para habilitar el parámetro de búsqueda personalizado, haz una solicitud
POST
y especifica la URL canónica de cada parámetro de búsqueda que quieras habilitar.En el siguiente ejemplo se muestra una solicitud
POST
que utilizacurl
.curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ \"canonicalUrls\": [\"http://example.com/SearchParameter/patient-mothersMaidenName\"], }" \ "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:configureSearch"
Si la solicitud se realiza de forma correcta, el servidor devuelve la respuesta en formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
PowerShell
Para habilitar el parámetro de búsqueda personalizado, haz una solicitud
POST
y especifica la URL canónica de cada parámetro de búsqueda que quieras habilitar.En el siguiente ejemplo se muestra una solicitud
POST
que utiliza Windows PowerShell.$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } $configureSearch = '{ "canonicalUrls": "http://example.com/SearchParameter/patient-mothersMaidenName" }' ` Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $configureSearch ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:configureSearch"
Si la solicitud se realiza de forma correcta, el servidor devuelve la respuesta en formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
Busca con el parámetro de búsqueda personalizada:
curl
En el siguiente ejemplo se muestra cómo buscar recursos Patient que contengan la cadena
Marca
en la extensiónmothersMaidenName
. Para ello, se envía una solicitudGET
mediantecurl
.curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?mothers-maiden-name:exact=Marca"
Si la solicitud se realiza correctamente, el servidor devuelve la respuesta como un recurso FHIR
Bundle
en formato JSON. ElBundle.type
essearchset
y los resultados de búsqueda son entradas de la matrizBundle.entry
. En este ejemplo, la solicitud devuelve un solo recurso Patient, incluidos los datos de ese recurso:{ "entry": [ { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/PATIENT_ID", "resource": { "birthDate": "1970-01-01", "gender": "female", "id": "PATIENT_ID", "meta": { "lastUpdated": "LAST_UPDATED", "versionId": "VERSION_ID" }, "name": [ { "family": "Smith", "given": [ "Darcy" ], "use": "official" } ], "resourceType": "Patient" "extension": [ { "url": "http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName", "valueString": "Marca" } ] }, "search": { "mode": "match" } } ], "link": [ { "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?family%3Aexact=Smith" } ], "resourceType": "Bundle", "total": 1, "type": "searchset" }
PowerShell
En el siguiente ejemplo se muestra cómo buscar recursos Patient que contengan la cadena `Marca` en la extensión `mothersMaidenName` enviando una solicitud `GET` con Windows PowerShell.$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-RestMethod ` -Method Get ` -Headers $headers ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?mothers-maiden-name:exact=Marca" | ConvertTo-Json
Si la solicitud se realiza correctamente, el servidor devuelve la respuesta como un recurso FHIR
Bundle
en formato JSON. ElBundle.type
essearchset
y los resultados de búsqueda son entradas de la matrizBundle.entry
. En este ejemplo, la solicitud devuelve un solo recurso Patient, incluidos los datos de ese recurso:{ "entry": [ { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/PATIENT_ID", "resource": { "birthDate": "1970-01-01", "gender": "female", "id": "PATIENT_ID", "meta": { "lastUpdated": "LAST_UPDATED", "versionId": "VERSION_ID" }, "name": [ { "family": "Smith", "given": [ "Darcy" ], "use": "official" } ], "resourceType": "Patient" "extension": [ { "url": "http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName", "valueString": "Marca" } ] }, "search": { "mode": "match" } } ], "link": [ { "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?family%3Aexact=Smith" } ], "resourceType": "Bundle", "total": 1, "type": "searchset" }
Usar una búsqueda personalizada para buscar en un campo de extensión de dos niveles
En los siguientes pasos se muestra cómo buscar el código en la extensión us-core-ethnicity
de un recurso Patient.
Crea un recurso Patient de ejemplo:
curl
En el siguiente ejemplo se muestra cómo crear un recurso Patient haciendo una solicitud
POST
concurl
. Este recurso Patient tiene definida la extensiónus-core-ethnicity
.curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ \"name\": [ { \"use\": \"official\", \"family\": \"Smith\", \"given\": [ \"Darcy\" ] } ], \"gender\": \"female\", \"birthDate\": \"1970-01-01\", \"resourceType\": \"Patient\", \"extension\": [ { \"url\": \"http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity\", \"extension\": [ { \"url\" : \"ombCategory\", \"valueCoding\" : { \"system\" : \"urn:oid:2.16.840.1.113883.6.238\", \"code\" : \"2028-9\", \"display\" : \"Asian\" } } ] } ] }" \ "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient"
Si la solicitud se realiza de forma correcta, el servidor devuelve una respuesta similar a la siguiente en formato JSON:
{ "birthDate": "1970-01-01", "gender": "female", "id": "PATIENT_ID", "meta": { "lastUpdated": "2020-01-01T00:00:00+00:00", "versionId": "VERSION_ID" }, "name": [ { "family": "Smith", "given": [ "Darcy" ], "use": "official" } ], "resourceType": "Patient" "extension": [ { "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity", "extension": [ { "url" : "ombCategory", "valueCoding" : { "system" : "urn:oid:2.16.840.1.113883.6.238", "code" : "2028-9", "display" : "Asian" } } ] } ] }
PowerShell
En el siguiente ejemplo se muestra cómo crear un recurso Patient enviando una solicitud
POST
con Windows PowerShell. Este recurso Patient tiene definida la extensiónus-core-ethnicity
.$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } $Patient = '{ "name": [ { "use": "official", "family": "Smith", "given": [ "Darcy" ] } ], "gender": "female", "birthDate": "1970-01-01", "resourceType": "Patient", "extension": [ { "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity", "extension": [ { "url" : "ombCategory", "valueCoding" : { "system" : "urn:oid:2.16.840.1.113883.6.238", "code" : "2028-9", "display" : "Asian" } } ] } ] }' Invoke-RestMethod ` -Method Post ` -Headers $headers ` -ContentType: "application/fhir+json; charset=utf-8" ` -Body $Patient ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient" | ConvertTo-Json
Si la solicitud se realiza de forma correcta, el servidor devuelve una respuesta similar a la siguiente en formato JSON:
{ "birthDate": "1970-01-01", "gender": "female", "id": "PATIENT_ID", "meta": { "lastUpdated": "2020-01-01T00:00:00+00:00", "versionId": "VERSION_ID" }, "name": [ { "family": "Smith", "given": [ "Darcy" ], "use": "official" } ], "resourceType": "Patient" "extension": [ { "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity", "extension": [ { "url" : "ombCategory", "valueCoding" : { "system" : "urn:oid:2.16.840.1.113883.6.238", "code" : "2028-9", "display" : "Asian" } } ] } ] }
Crea un recurso de parámetro de búsqueda personalizado:
curl
En el siguiente ejemplo se muestra cómo crear el recurso de parámetro de búsqueda personalizado para la extensiónus-core-ethnicity
haciendo una solicitudPOST
concurl
.curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ \"resourceType\": \"SearchParameter\", \"url\": \"http://example.com/SearchParameter/patient-us-core-ethnicity\", \"base\": [\"Patient\"], \"code\": \"ethnicity\", \"name\": \"ethnicity\", \"type\": \"token\", \"expression\": \"Patient.extension('http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity').extension('ombCategory').value.as(Coding)\", \"status\": \"active\", \"description\": \"search on the ombCategory of a patient.\" }" \ "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/SearchParameter"
Si la solicitud se realiza de forma correcta, el servidor devuelve la respuesta en formato JSON:
{ "resourceType": "SearchParameter", "url": "http://example.com/SearchParameter/patient-us-core-ethnicity", "base": ["Patient"], "code": "ethnicity", "name": "ethnicity", "type": "token", "expression": "Patient.extension('http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity').extension('ombCategory').value.as(Coding)", "status": "active", "description": "search on the ombCategory of a patient.", "meta": { "lastUpdated": "2020-01-01T00:00:00+00:00", "versionId": "VERSION_ID" }, }
PowerShell
En el siguiente ejemplo se muestra cómo crear el recurso de parámetro de búsqueda personalizado para la extensión `mothersMaidenName` enviando una solicitud `POST` mediante Windows PowerShell.$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } $SearchParameter = '{ "resourceType": "SearchParameter", "url": "http://example.com/SearchParameter/patient-us-core-ethnicity", "base": ["Patient"], "code": "ethnicity", "name": "ethnicity", "type": "token", "expression": "Patient.extension(''http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity'').extension(''ombCategory'').value.as(Coding)", "status": "active", "description": "search on the ombCategory of a patient." }' Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $SearchParameter ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/SearchParameter"
Si la solicitud se realiza de forma correcta, el servidor devuelve la respuesta en formato JSON:
{ "resourceType": "SearchParameter", "url": "http://example.com/SearchParameter/patient-us-core-ethnicity", "base": ["Patient"], "code": "ethnicity", "name": "ethnicity", "type": "token", "expression": "Patient.extension('http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity').extension('ombCategory').value.as(Coding)", "status": "active", "description": "search on the ombCategory of a patient.", "meta": { "lastUpdated": "2020-01-01T00:00:00+00:00", "versionId": "VERSION_ID" }, }
Habilita el parámetro de búsqueda:
curl
Para habilitar el parámetro de búsqueda personalizado, haz una solicitud
POST
y especifica la URL canónica de cada parámetro de búsqueda que quieras habilitar.En el siguiente ejemplo se muestra una solicitud
POST
que utilizacurl
.curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ \"canonicalUrls\": [\"http://example.com/SearchParameter/patient-us-core-ethnicity\"], }" \ "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:configureSearch"
Si la solicitud se realiza de forma correcta, el servidor devuelve la respuesta en formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
PowerShell
Para habilitar el parámetro de búsqueda personalizado, haz una solicitud
POST
y especifica la URL canónica de cada parámetro de búsqueda que quieras habilitar.En el siguiente ejemplo se muestra una solicitud
POST
que utiliza Windows PowerShell.$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } $configureSearch = '{ "canonicalUrls": "http://example.com/SearchParameter/patient-us-core-ethnicity" }' ` Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $configureSearch ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:configureSearch"
Si la solicitud se realiza de forma correcta, el servidor devuelve la respuesta en formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
Busca con el parámetro de búsqueda personalizada:
curl
En el siguiente ejemplo se muestra cómo buscar recursos Patient con el código
urn:oid:2.16.840.1.113883.6.238|2028-9
en la extensiónus-core-ethnicity
haciendo una solicitudGET
concurl
.curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?ethnicity=urn:oid:2.16.840.1.113883.6.238|2028-9"
Si la solicitud se realiza correctamente, el servidor devuelve la respuesta como un recurso FHIR
Bundle
en formato JSON. ElBundle.type
essearchset
y los resultados de búsqueda son entradas de la matrizBundle.entry
. En este ejemplo, la solicitud devuelve un solo recurso Patient, incluidos los datos de ese recurso:{ "entry": [ { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/PATIENT_ID", "resource": { "birthDate": "1970-01-01", "gender": "female", "id": "PATIENT_ID", "meta": { "lastUpdated": "LAST_UPDATED", "versionId": "VERSION_ID" }, "name": [ { "family": "Smith", "given": [ "Darcy" ], "use": "official" } ], "resourceType": "Patient" "extension": [ { "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity", "extension": [ { "url" : "ombCategory", "valueCoding" : { "system" : "urn:oid:2.16.840.1.113883.6.238", "code" : "2028-9", "display" : "Asian" } } ] } ] }, "search": { "mode": "match" } } ], "link": [ { "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?ethnicity=urn:oid:2.16.840.1.113883.6.238|2028-9" } ], "resourceType": "Bundle", "total": 1, "type": "searchset" }
PowerShell
En el siguiente ejemplo se muestra cómo buscar recursos Patient con el código `urn:oid:2.16.840.1.113883.6.238|2028-9` en la extensión `us-core-ethnicity` mediante una solicitud `GET` con Windows PowerShell.$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-RestMethod ` -Method Get ` -Headers $headers ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?ethnicity=urn:oid:2.16.840.1.113883.6.238|2028-9 | ConvertTo-Json
Si la solicitud se realiza correctamente, el servidor devuelve la respuesta como un recurso FHIR
Bundle
en formato JSON. ElBundle.type
essearchset
y los resultados de búsqueda son entradas de la matrizBundle.entry
. En este ejemplo, la solicitud devuelve un solo recurso Patient, incluidos los datos de ese recurso:{ "entry": [ { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/PATIENT_ID", "resource": { "birthDate": "1970-01-01", "gender": "female", "id": "PATIENT_ID", "meta": { "lastUpdated": "LAST_UPDATED", "versionId": "VERSION_ID" }, "name": [ { "family": "Smith", "given": [ "Darcy" ], "use": "official" } ], "resourceType": "Patient" "extension": [ { "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity", "extension": [ { "url" : "ombCategory", "valueCoding" : { "system" : "urn:oid:2.16.840.1.113883.6.238", "code" : "2028-9", "display" : "Asian" } } ] } ] }, "search": { "mode": "match" } } ], "link": [ { "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?ethnicity=urn:oid:2.16.840.1.113883.6.238|2028-9" } ], "resourceType": "Bundle", "total": 1, "type": "searchset" }