Esta página descreve como configurar um FHIR store para suportar parâmetros de pesquisa personalizados para campos e extensões que não estão abrangidos pelos parâmetros de pesquisa padrão FHIR.
Os parâmetros de pesquisa personalizados podem ser úteis em muitas situações, incluindo as seguintes:
- Tem de pesquisar um campo num recurso FHIR, mas não existe um parâmetro de pesquisa compatível para o campo.
- Tem de pesquisar em extensões adicionadas ao modelo de dados FHIR.
Vista geral
Por predefinição, a pesquisa de recursos FHIR suporta os parâmetros de pesquisa padrão definidos na especificação FHIR, com algumas exclusões documentadas na declaração de capacidade FHIR ou declaração de conformidade FHIR.
Pode criar um ou mais parâmetros de pesquisa personalizados e configurar a loja FHIR para os suportar em consultas através do método search
. Os parâmetros de pesquisa personalizados são úteis nas seguintes situações:
- Para pesquisar em campos não abrangidos pelos parâmetros de pesquisa padrão.
- Para pesquisar extensões no modelo de dados FHIR.
Muitos guias de implementação da FHIR definem parâmetros de pesquisa que pode usar nas suas pesquisas.
Os parâmetros de pesquisa personalizados suportam o mesmo comportamento de pesquisa, incluindo funcionalidades de pesquisa FHIR avançadas como parâmetros de pesquisa padrão, como os seguintes:
- modificadores
_include
e_revinclude
- pesquisa encadeada
_sort
Para ativar uma pesquisa personalizada para a sua loja FHIR, primeiro tem de criar um ou mais recursos
SearchParameter
que definam o comportamento de pesquisa. SearchParameter
é um tipo de recurso FHIR padrão que pode ser criado, atualizado ou eliminado através
dos mesmos métodos que qualquer outro tipo de recurso. Consulte o artigo
Crie um recurso de parâmetro de pesquisa na loja.
Os recursos SearchParameter
numa loja FHIR não entram em vigor até serem configurados através do método configureSearch
. Este método permite uma lista de parâmetros de pesquisa personalizados. Sempre que é chamado,
substitui a lista anterior de parâmetros. É acionada uma operação de longa duração para
configureSearch
reindexar todos os recursos relevantes na loja de acordo
com a nova configuração de pesquisa. Todos os recursos novos e atualizados após a chamada do método são indexados de acordo com a nova configuração. Todos os dados de índice para parâmetros de pesquisa personalizados que já não estejam na configuração são removidos.
Para mais detalhes sobre como usar configureSearch
, consulte o artigo Ative o parâmetro de pesquisa personalizado para a sua loja FHIR.
O CapabilityStatement
da loja, obtido através do método fhir.capabilities
, apresenta os parâmetros de pesquisa padrão e personalizados. Os parâmetros de pesquisa de um recurso encontram-se no campo rest.resource.searchParam
.
Crie uma pesquisa FHIR personalizada
Crie um recurso SearchParameter na loja FHIR
Os exemplos seguintes mostram como criar um recurso de parâmetro de pesquisa personalizado
com o método projects.locations.datasets.fhirStores.fhir.create
. Também pode usar o método projects.locations.datasets.fhirStores.import
.
Para ver descrições dos campos relevantes dos parâmetros de pesquisa, consulte os campos de recursos SearchParameter.
curl
O exemplo seguinte mostra um pedido POST
através de 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"
Se o pedido for bem-sucedido, o servidor devolve a resposta no 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
O exemplo seguinte mostra um pedido POST
através do 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
Se o pedido for bem-sucedido, o servidor devolve a resposta no 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" }, }
Ative o parâmetro de pesquisa personalizado para o seu FHIR store
Para ativar um ou mais parâmetros de pesquisa personalizados para a sua loja FHIR, faça um pedido POST
ao método [store base URL]:configureSearch
e especifique o URL canónico para cada parâmetro de pesquisa que está a ativar.
Os URLs canónicos são especificados num dos seguintes formatos:
uri
: seleciona oversion
maior disponível na loja para esse URI.uri|version
Seleciona uma versão específica.
Por exemplo, se a loja contiver as versões 1.0.0
e 1.0.1
para parâmetros de pesquisa com o URI http://example.com/search
, o URL canónico http://example.com/search|1.0.0
seleciona a versão 1.0.0
. O URL canónico http://example.com/search
seleciona a versão 1.0.1
.
A lista de URLs fornecida a este método substitui qualquer configuração anterior e remove os parâmetros de pesquisa personalizados que estavam em vigor anteriormente. A configuração é colocada em cache com base no conteúdo dos recursos SearchParameter
que existiam no momento em que configureSearch
foi chamado. A configuração não é atualizada se os recursos SearchParameter
forem atualizados ou eliminados até que configureSearch
seja chamado novamente.
Quando a chamada do método [store base URL]:configureSearch
é bem-sucedida, o valor de retorno é o nome de uma operação de longa duração para reindexar os recursos na loja de acordo com a nova configuração. Pode ver o estado da operação de longa duração através do método operations.get
e cancelá-la através do método operations.cancel
. O estado contém um contador que indica quantos recursos foram
reindexados com êxito.
As pesquisas na loja continuam a funcionar normalmente enquanto a operação de longa duração é executada, exceto que os parâmetros de pesquisa personalizados que são adicionados ou alterados por esta operação devolvem resultados parciais. Cancelar a operação é seguro, mas resulta na indexação parcial dos parâmetros de pesquisa personalizada. É importante concluir uma operação de reindexação bem-sucedida antes de pesquisar com parâmetros adicionados ou alterados recentemente.
Se existirem erros, estes são apresentados no Cloud Logging.
O método configureSearch
também pode ser usado com a opção "validate_only": true
para validar os parâmetros de pesquisa especificados sem modificar a configuração da loja e sem reindexar quaisquer dados.
Os exemplos seguintes mostram como ativar um ou mais parâmetros de pesquisa personalizados
para a sua loja FHIR através do método
projects.locations.datasets.fhirStores.configureSearch
.
curl
O exemplo seguinte mostra um pedido POST
através de 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"
Se o pedido for bem-sucedido, o servidor devolve a resposta no formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
A resposta contém um nome de operação. Para acompanhar o estado da operação,
pode usar o 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"
Se a operação de longa duração ainda estiver em execução, o servidor devolve uma resposta com o número de recursos FHIR pendentes de reindexação no 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" } } }
Quando a LRO termina, o servidor devolve uma resposta com o estado da operação no 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", } }
Se a LRO for bem-sucedida, a resposta contém o número de recursos FHIR reindexados com êxito e um tipo de resposta google.protobuf.Empty
.
PowerShell
O exemplo seguinte mostra um pedido POST
através do 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"
Se o pedido for bem-sucedido, o servidor devolve a resposta no formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
A resposta contém um nome de operação. Para acompanhar o estado da operação,
pode usar o 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"
Se a operação de longa duração ainda estiver em execução, o servidor devolve uma resposta com o número de recursos FHIR pendentes de reindexação no 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" } } }
Quando a LRO termina, o servidor devolve uma resposta com o estado da operação no 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", } }
Se a LRO for bem-sucedida, a resposta contém o número de recursos FHIR reindexados com êxito e um tipo de resposta google.protobuf.Empty
.
Pesquise recursos com uma pesquisa personalizada
Pode pesquisar através de um SearchParameter personalizado da mesma forma que qualquer outra pesquisa. Use o valor code
do recurso de parâmetro de pesquisa como key
para a consulta de pesquisa. Para mais informações, consulte o artigo Pesquisar recursos FHIR.
Campos de recursos SearchParameter
A secção seguinte descreve os campos do recurso SearchParameter relevantes para as pesquisas personalizadas. Estes campos estão disponíveis nas versões STU3 e R4 do FHIR.
uri
e version
O campo uri
, que é obrigatório, e os campos version
, que são opcionais, definem o URL canónico para o recurso SearchParameter. A combinação de uri
e version
tem de ser única na loja FHIR.
O URL canónico é o URL usado na chamada configureSearch
.
name
, description
e status
Os campos name
, description
e status
são obrigatórios, mas não têm qualquer efeito funcional.
base
O campo base
apresenta os tipos de recursos FHIR aos quais esta pesquisa se aplica.
Se existir mais do que um tipo, o campo expression
tem de ter uma cláusula para cada tipo. Não existe diferença entre definir um parâmetro em dois tipos ou definir um parâmetro para cada tipo. A definição de um parâmetro para vários tipos de recursos torna as definições mais compactas.
code
O campo code
define a chave a usar numa consulta de pesquisa FHIR. Por exemplo, se code
estiver definido como payment-type
e base
estiver definido como Claim
, uma consulta de pesquisa que use este parâmetro seria Claim?payment-type=ABC
.
O campo code
não pode ter o mesmo valor que qualquer outro parâmetro de pesquisa padrão ou personalizado no mesmo tipo de recurso. Não é possível redefinir nem modificar os parâmetros de pesquisa padrão através de parâmetros de pesquisa personalizados. O método configureSearch
rejeita parâmetros de pesquisa duplicados.
O valor do campo code
tem de cumprir os seguintes requisitos:
- Tem de começar com uma letra
- Não pode ter mais de 64 carateres
- Tem de conter apenas o seguinte:
- Carateres alfanuméricos
- Caráter de hífen
-
- Caráter de sublinhado
_
A convenção padrão FHIR para o campo code
é minúscula com travessões.
type
O campo type
define o tipo de parâmetro de pesquisa. O tipo de parâmetro de pesquisa determina a semântica das condições de pesquisa, conforme definido na especificação de pesquisa FHIR.
Este valor de type
tem de ser compatível com o tipo de dados do campo especificado pelo campo expression
. Caso contrário, configureSearch
rejeita o parâmetro de pesquisa personalizado.
O campo type
tem de ser definido como um dos seguintes:
number
date
string
token
reference
quantity
uri
Os tipos composite
e special
não são suportados.
expression
O campo expression
define os campos ou as extensões que o parâmetro de pesquisa consulta. Este campo usa um conjunto limitado da sintaxe e das funções do FHIRPath.
Sintaxe do campo
O campo expression
é definido como um caminho que começa com o tipo de recurso e é seguido
por um ou mais campos separados por .
, por exemplo, Patient.contact.name.given
. Pode encontrar a estrutura dos campos dos dados FHIR nos recursos FHIR
e nos tipos de dados FHIR.
Várias cláusulas
O campo expression
pode conter várias cláusulas separadas por |
. Neste caso, o parâmetro de pesquisa corresponde se alguma das cláusulas corresponder ao recurso. Por exemplo, um parâmetro de pesquisa com a expressão Patient.name.given | Patient.name.family
corresponde a qualquer um desses dois campos. Use várias cláusulas quando for especificado mais do que um tipo de recurso em base
. Por exemplo, Patient.name.given | Practitioner.name.given
para um parâmetro de pesquisa que se aplica a Patient
e Practitioner
.
.as([data type])
Use a função .as([data type])
quando um campo tiver mais do que um potencial tipo de dados. Por exemplo, o campo Observation.value
pode conter muitos tipos diferentes, como Quantity
e String
, que funcionam com diferentes tipos de pesquisa.
Pode selecionar estes tipos de pesquisa com Observation.value.as(Quantity)
ou
Observation.value.as(String)
.
Selecionar extensões
Pode selecionar extensões com a função .extension([canonical url])
.
Uma vez que as extensões contêm um campo value
que pode conter qualquer tipo de dados, o caminho completo é definido como .extension([canonical url]).value.as([data type])
.
As extensões complexas podem usar vários componentes .extension()
, por exemplo, Patient.extension('http://hl7.org/fhir/StructureDefinition/patient-citizenship').extension('code').value.as(CodeableConcept)
.
Também pode usar a função .extension.where(url='[canonical url]')
para selecionar extensões. Este é o único contexto em que a função where()
é permitida.
Não são suportadas outras funções FHIRPath.
target
Se o campo type
estiver definido como reference
, o campo target
tem de conter um ou mais tipos de recursos FHIR que definem que tipos de recursos podem ser o destino desta pesquisa de referência.
Por exemplo, se o campo Patient.generalPractitioner
permitir referências a Practitioner
, PractitionerRole
e Organization
, um parâmetro de pesquisa pode corresponder especificamente a referências a Practitioner
, PractitionerRole
ou Organization
.
Para corresponder a todos os tipos de referências de destino, inclua todos os tipos no campo target
.
modifier
, comparator
, multipleOr
, multipleAnd
e chain
Os campos modifier
, comparator
, multipleOr
, multipleAnd
e
chain
são ignorados. As opções e a funcionalidade disponíveis com um parâmetro de pesquisa personalizado são as mesmas que as suportadas pela loja FHIR num parâmetro de pesquisa padrão do mesmo tipo.
Use parâmetros de pesquisa de um guia de implementação
Se estiver a implementar parâmetros de pesquisa obtidos a partir de um guia de implementação da FHIR, importe os recursos SearchParameter
do ficheiro JSON do guia de implementação para a loja FHIR através de um dos seguintes métodos:
Em alguns casos, tem de converter um parâmetro de pesquisa publicado para que a API Cloud Healthcare o suporte. Se os parâmetros de pesquisa não forem convertidos, o método configureSearch
rejeita-os. As seguintes restrições aplicam-se aos parâmetros de pesquisa dos guias de implementação:
Se o parâmetro de pesquisa for idêntico aos parâmetros na especificação FHIR base, o método
configureSearch
rejeita os parâmetros de pesquisa duplicados. Omita esses duplicados quando chamar oconfigureSearch
. Para mais informações, consultecode
.Se o parâmetro de pesquisa contiver apenas uma expressão
xpath
, converta a expressão numa expressão FHIRPath equivalente e use-a no campoexpression
. Para mais informações, consulteexpression
.Os tipos de parâmetros de pesquisa
composite
especial
não são suportados.A sintaxe de conversão de tipos alternativa
([field] as [data type])
não é suportada. Converta para o equivalente suportado[field].as([data type])
. Para mais informações, consulte.as([data type])
.A convenção
[reference field].where(resolve() is [resource type])
para restringir o tipo de um recurso referenciado não é suportada. Remova a cláusulawhere()
e armazene o tipo de recurso referenciado no campoSearchParameter.target
. Para mais informações, consultetarget
.Alguns guias de implementação usam expressões para extensões que omitem alguns dos componentes do caminho exigidos pelo FHIR store da Cloud Healthcare API. Por exemplo,
Patient.extension('url')
tem de ser modificado paraPatient.extension('url').value.as([data type])
, ePatient.extension('url').extension.value
tem de ser modificado paraPatient.extension('url').extension('url2').value.as([data type])
.
Exemplos
Use uma pesquisa personalizada para pesquisar num campo de extensão
Os passos seguintes mostram um exemplo de pesquisa de texto na extensão mothersMaidenName
em Recursos para pacientes.
Crie um recurso Patient de exemplo:
curl
O exemplo seguinte mostra como criar um recurso Patient fazendo um pedido usando
curl
.POST
Este recurso Patient tem a extensãomothersMaidenName
definida comoMarca
.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"
Se o pedido for bem-sucedido, o servidor devolve uma resposta semelhante ao exemplo seguinte no 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
O exemplo seguinte mostra como criar um recurso Patient fazendo um pedido através do Windows PowerShell.
POST
Este recurso Patient tem a extensãomothersMaidenName
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
Se o pedido for bem-sucedido, o servidor devolve uma resposta semelhante ao exemplo seguinte no 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" } ] }
Crie um recurso de parâmetro de pesquisa personalizado:
curl
O exemplo seguinte mostra como criar o recurso de parâmetro de pesquisa personalizado para a extensão
mothersMaidenName
fazendo um pedidoPOST
através decurl
.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"
Se o pedido for bem-sucedido, o servidor devolve a resposta no 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
O exemplo seguinte mostra como criar o recurso de parâmetro de pesquisa personalizado para a extensão `mothersMaidenName` fazendo um pedido `POST` através do 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"
Se o pedido for bem-sucedido, o servidor devolve a resposta no 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
, use a função.as([data type])
. Por exemplo, para especificar a expressão de pesquisa de um valor booleano, use.value.as(Boolean)
. Para mais informações, consulte.as([data type])
.Ative o parâmetro de pesquisa:
curl
Para ativar o parâmetro de pesquisa personalizado, faça um pedido
POST
e especifique o URL canónico para cada parâmetro de pesquisa que está a ativar.O exemplo seguinte mostra um pedido
POST
através decurl
.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"
Se o pedido for bem-sucedido, o servidor devolve a resposta no formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
PowerShell
Para ativar o parâmetro de pesquisa personalizado, faça um pedido
POST
e especifique o URL canónico para cada parâmetro de pesquisa que está a ativar.O exemplo seguinte mostra um pedido
POST
através do 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"
Se o pedido for bem-sucedido, o servidor devolve a resposta no formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
Pesquise através do parâmetro de pesquisa personalizado:
curl
O exemplo seguinte mostra como pesquisar recursos de pacientes para a string
Marca
na extensãomothersMaidenName
fazendo um pedidoGET
através decurl
.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"
Se o pedido for bem-sucedido, o servidor devolve a resposta como um recurso FHIR
Bundle
no formato JSON. OBundle.type
ésearchset
e os resultados da pesquisa são entradas na matrizBundle.entry
. Neste exemplo, o pedido devolve um recurso de paciente único, incluindo os dados nesse 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
O exemplo seguinte mostra como pesquisar recursos de pacientes para a string `Marca` na extensão `mothersMaidenName` fazendo um pedido `GET` através do 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
Se o pedido for bem-sucedido, o servidor devolve a resposta como um recurso FHIR
Bundle
no formato JSON. OBundle.type
ésearchset
e os resultados da pesquisa são entradas na matrizBundle.entry
. Neste exemplo, o pedido devolve um recurso de paciente único, incluindo os dados nesse 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" }
Use uma pesquisa personalizada para pesquisar num campo de extensão de 2 níveis
Os passos seguintes mostram como pesquisar o código na extensão us-core-ethnicity
num recurso Patient.
Crie um recurso Patient de exemplo:
curl
O exemplo seguinte mostra como criar um recurso Patient fazendo um pedido usando
curl
.POST
Este recurso Patient tem a extensãous-core-ethnicity
definida.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"
Se o pedido for bem-sucedido, o servidor devolve uma resposta semelhante ao exemplo seguinte no 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
O exemplo seguinte mostra como criar um recurso Patient fazendo um pedido através do Windows PowerShell.
POST
Este recurso Patient tem a extensãous-core-ethnicity
definida.$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
Se o pedido for bem-sucedido, o servidor devolve uma resposta semelhante ao exemplo seguinte no 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" } } ] } ] }
Crie um recurso de parâmetro de pesquisa personalizado:
curl
O exemplo seguinte mostra como criar o recurso de parâmetro de pesquisa personalizado para a extensãous-core-ethnicity
fazendo um pedidoPOST
através decurl
.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"
Se o pedido for bem-sucedido, o servidor devolve a resposta no 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
O exemplo seguinte mostra como criar o recurso de parâmetro de pesquisa personalizado para a extensão `mothersMaidenName` fazendo um pedido `POST` através do 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"
Se o pedido for bem-sucedido, o servidor devolve a resposta no 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" }, }
Ative o parâmetro de pesquisa:
curl
Para ativar o parâmetro de pesquisa personalizado, faça um pedido
POST
e especifique o URL canónico para cada parâmetro de pesquisa que está a ativar.O exemplo seguinte mostra um pedido
POST
através decurl
.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"
Se o pedido for bem-sucedido, o servidor devolve a resposta no formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
PowerShell
Para ativar o parâmetro de pesquisa personalizado, faça um pedido
POST
e especifique o URL canónico para cada parâmetro de pesquisa que está a ativar.O exemplo seguinte mostra um pedido
POST
através do 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"
Se o pedido for bem-sucedido, o servidor devolve a resposta no formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
Pesquise através do parâmetro de pesquisa personalizado:
curl
O exemplo seguinte mostra como pesquisar recursos de pacientes para o código
urn:oid:2.16.840.1.113883.6.238|2028-9
na extensãous-core-ethnicity
fazendo um pedidoGET
através decurl
.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"
Se o pedido for bem-sucedido, o servidor devolve a resposta como um recurso FHIR
Bundle
no formato JSON. OBundle.type
ésearchset
e os resultados da pesquisa são entradas na matrizBundle.entry
. Neste exemplo, o pedido devolve um recurso de paciente único, incluindo os dados nesse 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
O exemplo seguinte mostra como pesquisar recursos de pacientes para o código `urn:oid:2.16.840.1.113883.6.238|2028-9` na extensão `us-core-ethnicity` fazendo um pedido `GET` através do 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
Se o pedido for bem-sucedido, o servidor devolve a resposta como um recurso FHIR
Bundle
no formato JSON. OBundle.type
ésearchset
e os resultados da pesquisa são entradas na matrizBundle.entry
. Neste exemplo, o pedido devolve um recurso de paciente único, incluindo os dados nesse 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" }