En esta página, se describe cómo configurar un almacén de FHIR para que admita parámetros de búsqueda personalizados en 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:
- Debes buscar un campo en un recurso de FHIR, pero no hay un parámetro de búsqueda admitido para el campo.
- Debes buscar en las extensiones agregadas al modelo de datos de FHIR.
Descripción general
De forma predeterminada, la búsqueda de recursos de 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 capacidad de FHIR o la declaración de conformidad de FHIR.
Puedes crear uno o más parámetros de búsqueda personalizados y configurar el almacén de FHIR para admitirlos en consultas a través del 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 de FHIR.
Muchas guías de implementación de FHIR define 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 de búsqueda avanzada de FHIR, que los parámetros de búsqueda estándar, como los siguientes elementos:
- Teclas modificadoras
_include
y_revinclude
- Búsqueda en cadena
_sort
A fin de habilitar una búsqueda personalizada para tu almacén de FHIR, primero debes crear uno o más recursos SearchParameter
que definan el comportamiento de la búsqueda. SearchParameter
es un tipo de recurso de FHIR estándar que se puede crear, actualizar o borrar mediante los mismos métodos que cualquier otro tipo de recurso. Consulta Crea un recurso de parámetro de búsqueda en el almacén.
Los recursos SearchParameter
en un almacén de 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 personalizados. Cada vez que se lo llama, reemplaza la lista anterior de parámetros. Se activa una operación de larga duración para que configureSearch
vuelva a indexar todos los recursos relevantes dentro del almacén según la nueva configuración de búsqueda. Todos los recursos nuevos y actualizados después de la llamada de método se indexan según la configuración nueva. Se quitan todos 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 detalles sobre cómo usar configureSearch
, consulta Habilita el parámetro de búsqueda personalizado en tu almacén de FHIR.
El CapabilityStatement
del almacén, que se recupera mediante el método fhir.capabilities
, enumera los parámetros de búsqueda estándar y personalizados. Los parámetros de búsqueda para un recurso se encuentran en el campo rest.resource.searchParam
.
Crea una búsqueda de FHIR personalizada
Crea un recurso de SearchParameter en el almacén de 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 obtener descripciones de los campos relevantes de los parámetros de búsqueda, consulta Campos de recursos de SearchParameter.
curl
En el siguiente ejemplo, se muestra una solicitud POST
mediante 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 tiene éxito, se mostrará la respuesta en formato JSON en el servidor:
{ "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
mediante 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 tiene éxito, se mostrará la respuesta en formato JSON en el servidor:
{ "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" }, }
Habilita el parámetro de búsqueda personalizado para tu almacén de FHIR
A fin de habilitar uno o más parámetros de búsqueda personalizados para tu almacén de FHIR, realiza una solicitud POST
al método [store base URL]:configureSearch
y especifica la URL canónica de cada parámetro de búsqueda que habilites.
Las URL canónicas se especifican en cualquiera de los siguientes formatos:
uri
: Selecciona elversion
más grande disponible en el almacén para ese URI.uri|version
: Selecciona una versión específica.
Por ejemplo, si el almacén 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 reemplaza cualquier configuración anterior y quita los parámetros de búsqueda personalizados que estaban vigentes. La configuración se almacena en caché en función del contenido de los recursos SearchParameter
que existían en el momento en que se llamó a configureSearch
. La configuración no se actualizará si los recursos SearchParameter
se actualizan o se borran hasta que se vuelve a llamar a configureSearch
.
Cuando la llamada de método [store base URL]:configureSearch
se realiza correctamente, el valor que se muestra es el nombre de una operación de larga duración para reindexar los recursos en el almacén de acuerdo con la configuración nueva. Puedes ver el estado de la operación de larga duración con el método operations.get
y puedes cancelarla con operations.cancel
. El estado contiene un contador que indica cuántos recursos se reindexaron correctamente.
Las búsquedas en el almacén continúan funcionando normalmente mientras se ejecuta la operación de larga duración, excepto que los parámetros de búsqueda personalizados que se agregan o cambian con esta operación muestran resultados parciales. Es seguro cancelar la operación, pero se realiza una indexación parcial de los parámetros de búsqueda personalizados. Es importante completar una operación de reindexación exitosa completa antes de buscar con parámetros modificados o agregados recientemente.
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 del almacén y sin reindexar ningún dato.
En los siguientes ejemplos, se muestra cómo habilitar uno o más parámetros de búsqueda personalizados para tu almacén de FHIR mediante el método projects.locations.datasets.fhirStores.configureSearch
.
curl
En el siguiente ejemplo, se muestra una solicitud POST
mediante 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 tiene éxito, se mostrará la respuesta en formato JSON en el servidor:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
La respuesta contiene un nombre de operación. Para realizar un seguimiento del estado de la operación, puedes usar el método get
de la operación:
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 aún se está ejecutando, el servidor muestra una respuesta con la cantidad 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 LRO, el servidor muestra 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 LRO se realiza correctamente, la respuesta contiene la cantidad de recursos de FHIR que se volvieron a indexar correctamente y un tipo de respuesta google.protobuf.Empty
.
PowerShell
En el siguiente ejemplo, se muestra una solicitud POST
mediante 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 tiene éxito, se mostrará la respuesta en formato JSON en el servidor:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
La respuesta contiene un nombre de operación. Para realizar un seguimiento del estado de la operación, puedes usar el método get
de la operación:
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 aún se está ejecutando, el servidor muestra una respuesta con la cantidad 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 LRO, el servidor muestra 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 LRO se realiza correctamente, la respuesta contiene la cantidad de recursos de FHIR que se volvieron a indexar correctamente y un tipo de respuesta google.protobuf.Empty
.
Busca recursos con una búsqueda personalizada
Puedes realizar búsquedas con un SearchParameter personalizado de la misma manera que con cualquier otra búsqueda. Usa el valor code
del recurso de parámetro de búsqueda como la key
de la búsqueda. Para obtener más información, consulta Busca recursos de FHIR.
Campos de recursos SearchParameter
En la siguiente sección, se describen los campos de 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 para el recurso SearchParameter. La combinación de uri
y version
debe ser única dentro del almacén de FHIR.
La URL canónica es la URL que se usa en la llamada configureSearch
.
name
, description
y status
Los campos name
, description
y status
son obligatorios, pero no tienen efecto funcional.
base
El campo base
enumera los tipos de recursos de 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 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 son más compactas.
code
El campo code
define la clave que se usará en una búsqueda de FHIR. Por ejemplo, si code
se define como payment-type
, y base
se define como Claim
, una búsqueda que use este parámetro sería Claim?payment-type=ABC
.
El campo code
no puede tener el mismo valor que cualquier otro parámetro de búsqueda estándar o personalizado en el mismo tipo de recurso. Los parámetros de búsqueda estándar no se pueden volver a definir ni modificar mediante 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 con los siguientes requisitos:
- Debe comenzar con una letra
- No puede tener más de 64 caracteres
- Debe contener solo lo siguiente:
- Caracteres alfanuméricos
- Carácter de guion
-
- Guion bajo
_
La convención estándar de FHIR para el campo code
es 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, como se define en la especificación de búsqueda de FHIR.
Este valor de type
debe ser compatible con el tipo de datos del campo especificado por el campo expression
. Si no lo está, configureSearch
rechaza el parámetro de búsqueda personalizado.
El campo type
debe definirse como una de las siguientes opciones:
number
date
string
token
reference
quantity
uri
Los tipos composite
y special
no son compatibles.
expression
El campo expression
define qué campos o extensiones consulta el parámetro de búsqueda. Este campo utiliza un conjunto limitado de sintaxis y funciones de FHIRPath.
Sintaxis de campo
El campo expression
se define como una ruta de acceso que comienza con el tipo de recurso y sigue con uno o más campos separados por .
, por ejemplo, Patient.contact.name.given
. El
puedes encontrar la estructura de campo de los datos de FHIR en los recursos de FHIR
y los tipos de datos de FHIR.
Múltiples cláusulas
El campo expression
puede contener múltiples 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 múltiples 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 a Patient
y 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)
.
Selecciona extensiones
Puedes seleccionar extensiones con la función .extension([canonical url])
.
Debido a que las extensiones contienen un campo value
que puede contener cualquier tipo de dato, 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 FHIRPath.
target
Si el campo type
se define como reference
, el campo target
debe contener
uno o más tipos de recursos de FHIR que definen qué tipos de recursos pueden ser el destino
de esta búsqueda de referencia.
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 las referencias a Practitioner
, PractitionerRole
o Organization
.
Para que coincidan todos los tipos de segmentación de las referencias, incluye todos los tipos en el campo target
.
modifier
, comparator
, multipleOr
, multipleAnd
y chain
Los campos modifier
, comparator
, multipleOr
, multipleAnd
y chain
se ignoran. Las opciones y funcionalidades disponibles con un parámetro de búsqueda personalizado son las mismas que las que admite el almacén de FHIR en un parámetro de búsqueda estándar del mismo tipo.
Usa los parámetros de búsqueda de una guía de implementación
Si implementas parámetros de búsqueda que se obtuvieron 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 de FHIR mediante uno de los siguientes métodos:
En algunos casos, debes convertir un parámetro de búsqueda publicado para que la API de Cloud Healthcare lo admita. 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 en la especificación base de FHIR, el método
configureSearch
rechaza los parámetros de búsqueda duplicados. Omite esos duplicados cuando llames aconfigureSearch
. Para obtener más información, consultacode
.Si el parámetro de búsqueda solo contiene una expresión
xpath
, convierte la expresión 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 de conversión de tipos alternativa
([field] as [data type])
. Convierte al[field].as([data type])
equivalente admitido. 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 al que se hace referencia. Quita elwhere()
y almacena el tipo de recurso al que se hace referencia enSearchParameter.target
en su lugar. Para obtener más información, consultatarget
:En algunas guías de implementación, se usan expresiones para extensiones que omiten algunos de los componentes de la ruta de acceso que requiere el almacén de FHIR de la API de Cloud Healthcare. Por ejemplo,
Patient.extension('url')
debe modificarse comoPatient.extension('url').value.as([data type])
, yPatient.extension('url').extension.value
debe modificarse comoPatient.extension('url').extension('url2').value.as([data type])
.
Ejemplos
Usa una búsqueda personalizada para buscar en un campo de extensión
En los siguientes pasos, se muestra un ejemplo de búsqueda de texto dentro de la extensión mothersMaidenName
en recursos Patient.
Crea un recurso Patient de muestra:
curl
En el siguiente ejemplo, se muestra cómo crear un recurso Patient mediante una solicitud
POST
concurl
. Este recurso Patient tiene la extensiónmothersMaidenName
configurada enMarca
.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 tiene éxito, en el servidor se mostrará una respuesta similar a la siguiente muestra 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 mediante una solicitud
POST
con Windows PowerShell. Este recurso Patient tiene la extensiónmothersMaidenName
configurada enMarca
.$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 tiene éxito, en el servidor se mostrará una respuesta similar a la siguiente muestra 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
mediante 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 tiene éxito, se mostrará la respuesta en formato JSON en el servidor:
{
"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” mediante una solicitud “POST” con 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 tiene éxito, se mostrará la respuesta en formato JSON en el servidor:
{
"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 booleano, usa.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, realiza una solicitud
POST
y especifica la URL canónica de cada parámetro de búsqueda que habilites.En el siguiente ejemplo, se muestra una solicitud
POST
mediantecurl
.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 tiene éxito, se mostrará la respuesta en formato JSON en el servidor:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
PowerShell
Para habilitar el parámetro de búsqueda personalizado, realiza una solicitud
POST
y especifica la URL canónica de cada parámetro de búsqueda que habilites.En el siguiente ejemplo, se muestra una solicitud
POST
mediante 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 tiene éxito, se mostrará la respuesta en formato JSON en el servidor:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
Busca con el parámetro de búsqueda personalizado:
curl
En el siguiente ejemplo, se muestra cómo buscar recursos Patient para la string
Marca
en la extensiónmothersMaidenName
mediante 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?mothers-maiden-name:exact=Marca"
Si la solicitud es exitosa, el servidor mostrará la respuesta como un
Bundle
de FHIR en formato JSON.Bundle.type
essearchset
y los resultados de la búsqueda son entradas en el arregloBundle.entry
. En este ejemplo, la solicitud muestra un solo recurso Patient que incluye los datos dentro 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 los recursos de pacientes en la string “Marca” en la extensión “mothersMaidenName” 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?mothers-maiden-name:exact=Marca" | ConvertTo-Json
Si la solicitud es exitosa, el servidor mostrará la respuesta como un
Bundle
de FHIR en formato JSON.Bundle.type
essearchset
y los resultados de la búsqueda son entradas en el arregloBundle.entry
. En este ejemplo, la solicitud muestra un solo recurso Patient que incluye los datos dentro 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" }
Usa una búsqueda personalizada para buscar en un campo de extensión de 2 niveles
En los siguientes pasos, se muestra cómo buscar el código dentro de la extensión us-core-ethnicity
en un recurso Patient.
Crea un recurso Patient de muestra:
curl
En el siguiente ejemplo, se muestra cómo crear un recurso Patient mediante una solicitud
POST
concurl
. Este recurso Patient tiene la extensión deus-core-ethnicity
configurada.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 tiene éxito, en el servidor se mostrará una respuesta similar a la siguiente muestra 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 mediante una solicitud
POST
con Windows PowerShell. Este recurso Patient tiene la extensiónus-core-ethnicity
configurada.$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 tiene éxito, en el servidor se mostrará una respuesta similar a la siguiente muestra 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
mediante 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 tiene éxito, se mostrará la respuesta en formato JSON en el servidor:
{ "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” mediante una solicitud “POST” con 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 tiene éxito, se mostrará la respuesta en formato JSON en el servidor:
{ "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, realiza una solicitud
POST
y especifica la URL canónica de cada parámetro de búsqueda que habilites.En el siguiente ejemplo, se muestra una solicitud
POST
mediantecurl
.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 tiene éxito, se mostrará la respuesta en formato JSON en el servidor:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
PowerShell
Para habilitar el parámetro de búsqueda personalizado, realiza una solicitud
POST
y especifica la URL canónica de cada parámetro de búsqueda que habilites.En el siguiente ejemplo, se muestra una solicitud
POST
mediante 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 tiene éxito, se mostrará la respuesta en formato JSON en el servidor:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
Busca con el parámetro de búsqueda personalizado:
curl
En el siguiente ejemplo, se muestra cómo buscar el código
urn:oid:2.16.840.1.113883.6.238|2028-9
en los recursos Patient en la extensiónus-core-ethnicity
mediante 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 es exitosa, el servidor mostrará la respuesta como un
Bundle
de FHIR en formato JSON.Bundle.type
essearchset
y los resultados de la búsqueda son entradas en el arregloBundle.entry
. En este ejemplo, la solicitud muestra un solo recurso Patient que incluye los datos dentro 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 el código `urn:oid:2.16.840.1.113883.6.238|2028-9` en los recursos Patient 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 es exitosa, el servidor mostrará la respuesta como un
Bundle
de FHIR en formato JSON.Bundle.type
essearchset
y los resultados de la búsqueda son entradas en el arregloBundle.entry
. En este ejemplo, la solicitud muestra un solo recurso Patient que incluye los datos dentro 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" }