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
_includee_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 oversionmaior disponível na loja para esse URI.uri|versionSeleciona 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:
numberdatestringtokenreferencequantityuri
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
configureSearchrejeita 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
compositeespecialnã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.valuetem 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.POSTEste recurso Patient tem a extensãomothersMaidenNamedefinida 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.
POSTEste recurso Patient tem a extensãomothersMaidenNamedefinida 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:
Para segmentar um tipo de dados diferente no campocurl
O exemplo seguinte mostra como criar o recurso de parâmetro de pesquisa personalizado para a extensão
mothersMaidenNamefazendo um pedidoPOSTatravé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
POSTe especifique o URL canónico para cada parâmetro de pesquisa que está a ativar.O exemplo seguinte mostra um pedido
POSTatravé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
POSTe especifique o URL canónico para cada parâmetro de pesquisa que está a ativar.O exemplo seguinte mostra um pedido
POSTatravé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
Marcana extensãomothersMaidenNamefazendo um pedidoGETatravé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
Bundleno formato JSON. OBundle.typeésearchsete 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
Bundleno formato JSON. OBundle.typeésearchsete 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.POSTEste recurso Patient tem a extensãous-core-ethnicitydefinida.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.
POSTEste recurso Patient tem a extensãous-core-ethnicitydefinida.$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-ethnicityfazendo um pedidoPOSTatravé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
POSTe especifique o URL canónico para cada parâmetro de pesquisa que está a ativar.O exemplo seguinte mostra um pedido
POSTatravé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
POSTe especifique o URL canónico para cada parâmetro de pesquisa que está a ativar.O exemplo seguinte mostra um pedido
POSTatravé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-9na extensãous-core-ethnicityfazendo um pedidoGETatravé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
Bundleno formato JSON. OBundle.typeésearchsete 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
Bundleno formato JSON. OBundle.typeésearchsete 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" }