Nesta página, descrevemos como configurar um armazenamento de FHIR para aceitar parâmetros de pesquisa personalizada em campos e extensões que não são cobertos pelos parâmetros de pesquisa padrão do FHIR.
Os parâmetros de pesquisa personalizada podem ser úteis em muitas situações, como estas:
- Você precisa pesquisar um campo em um recurso FHIR, mas não há um parâmetro de pesquisa compatível para o campo.
- É preciso pesquisar em extensões adicionadas ao modelo de dados FHIR.
Visão geral
Por padrão, a pesquisa de recursos FHIR funciona com os parâmetros de pesquisa padrão definidos na especificação FHIR (link em inglês), com algumas exclusões documentadas na declaração de capacidade de FHIR ou instrução de conformidade FHIR.
É possível criar um ou mais parâmetros de pesquisa personalizada e
configurar o armazenamento de FHIR para dar suporte a eles em consultas com o método search
. Os parâmetros de pesquisa personalizada são úteis nas seguintes situações:
- Pesquisar em campos não cobertos pelos parâmetros de pesquisa padrão.
- Pesquisar extensões no modelo de dados de FHIR.
Muitos guias de implementação do FHIR definem parâmetros de pesquisa que podem ser usados nas pesquisas.
Os parâmetros de pesquisa personalizados oferecem suporte ao mesmo comportamento de pesquisa, incluindo recursos avançados de pesquisa FHIR como parâmetros de pesquisa padrão, como:
- Modificadores
_include
e_revinclude
- pesquisa encadeada
_sort
Para ativar uma pesquisa personalizada no armazenamento de FHIR, primeiro crie um ou mais recursos de SearchParameter
que definam o comportamento de pesquisa. SearchParameter
é um tipo de recurso FHIR padrão que pode ser criado, atualizado ou excluído usando
os mesmos métodos que qualquer outro tipo de recurso. Consulte
Criar um recurso de parâmetro de pesquisa na loja.
Os recursos SearchParameter
em um armazenamento FHIR só entram em vigor quando configurados usando o método configureSearch
. Esse método ativa uma lista de parâmetros de pesquisa personalizada. Cada vez que é chamado,
ele substitui a lista anterior de parâmetros. Uma operação de longa duração é acionada para
configureSearch
para reindexar todos os recursos relevantes no armazenamento,
de acordo com a nova configuração de pesquisa. Todos os recursos novos e atualizados após a chamada de método
são indexados de acordo com a nova configuração. São removidos os dados do índice de parâmetros de
pesquisa personalizada que não estão mais na configuração.
Para mais detalhes sobre como usar configureSearch
, consulte Ativar o parâmetro de pesquisa personalizada para o armazenamento de FHIR.
O CapabilityStatement
da loja, recuperado com o método fhir.capabilities
,
lista os parâmetros de pesquisa padrão e personalizada. Os parâmetros de pesquisa
de um recurso são encontrados no campo rest.resource.searchParam
.
Criar uma pesquisa FHIR personalizada
Criar um recurso "SearchParameter" no armazenamento de FHIR
Os exemplos a seguir mostram como criar um recurso de parâmetro de pesquisa personalizada
usando o método
projects.locations.datasets.fhirStores.fhir.create
. Também é possível usar o método projects.locations.datasets.fhirStores.import
:
Para descrições dos campos relevantes dos parâmetros de pesquisa, consulte Campos do recurso SearchParameter.
curl
O exemplo a seguir mostra uma solicitação POST
usando 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 a solicitação for bem-sucedida, o servidor retornará 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 a seguir mostra uma solicitação POST
usando o 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 a solicitação for bem-sucedida, o servidor retornará 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" }, }
Ativar o parâmetro de pesquisa personalizada para o armazenamento de FHIR
Para ativar um ou mais parâmetros de pesquisa personalizada para seu armazenamento de FHIR, faça
uma solicitação POST
para o método [store base URL]:configureSearch
e especifique o
URL canônico para cada parâmetro de pesquisa que será ativado.
Os URLs canônicos são especificados em um dos seguintes formatos:
uri
: seleciona o maiorversion
disponível no armazenamento para o URI.uri|version
seleciona uma versão específica.
Por exemplo, se o armazenamento tiver 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
selecionará 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 fornecidos a esse método substitui qualquer configuração
anterior e remove os parâmetros de pesquisa personalizada que estavam em vigor anteriormente. A
configuração é armazenada em cache com base no conteúdo dos recursos de SearchParameter
que existiam no momento em que configureSearch
foi chamado. A
configuração não será atualizada se os recursos de SearchParameter
forem atualizados
ou excluídos até que configureSearch
seja chamado novamente.
Quando a chamada do método [store base URL]:configureSearch
for bem-sucedida, o
valor de retorno será o nome de uma operação de longa duração para reindexar os recursos no
armazenamento, de acordo com a nova configuração. Para ver o status da
operação de longa duração, use o método operations.get
.
Ele pode ser cancelado usando o método
operations.cancel
. O status contém um contador que indica quantos recursos foram
reindexados com sucesso.
As pesquisas no armazenamento continuam funcionando normalmente enquanto a operação de longa duração é executada, com exceção dos parâmetros de pesquisa personalizada adicionados ou alterados por essa operação que retornam 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 parâmetros recém-adicionados ou alterados.
Se houver erros, eles serão exibidos 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 do armazenamento e sem reindexar dados.
Os exemplos a seguir mostram como ativar um ou mais parâmetros de pesquisa personalizada
para o armazenamento de FHIR usando o
método
projects.locations.datasets.fhirStores.configureSearch
.
curl
O exemplo a seguir mostra uma solicitação POST
usando 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 a solicitação for bem-sucedida, o servidor retornará 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 rastrear o status da operação, use o método get
de operação:
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 retornará 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 terminar, o servidor vai retornar uma resposta com o status 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 conterá o número de recursos do FHIR reindexados e um tipo de resposta google.protobuf.Empty
.
PowerShell
O exemplo a seguir mostra uma solicitação POST
usando o 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 a solicitação for bem-sucedida, o servidor retornará 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 rastrear o status da operação, use o método get
de operação:
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 retornará 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 terminar, o servidor vai retornar uma resposta com o status 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 conterá o número de recursos FHIR reindexados e um tipo de resposta google.protobuf.Empty
.
Pesquisar recursos com uma pesquisa personalizada
É possível pesquisar usando 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 Como pesquisar recursos FHIR.
Campos do recurso SearchParameter
A seção a seguir descreve os campos do recurso SearchParameter relevantes para pesquisas personalizadas. Esses 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 do recurso SearchParameter. A
combinação de uri
e version
precisa ser exclusiva no armazenamento de FHIR.
O URL canônico é o usado na chamada configureSearch
.
name
, description
e status
Os campos name
, description
e status
são obrigatórios, mas não têm
efeito funcional.
base
O campo base
lista os tipos de recursos FHIR a que essa pesquisa
se aplica.
Se houver mais de um tipo, o campo expression
precisará ter uma cláusula
para cada tipo. Não há diferença entre definir um parâmetro em dois
tipos ou definir um parâmetro em cada tipo. Definir um parâmetro para
vários tipos de recurso torna as definições mais compactas.
code
O campo code
define a chave a ser usada em uma consulta de pesquisa FHIR. Por exemplo,
se code
for definido como payment-type
e base
for definido como Claim
, uma consulta de pesquisa que usará esse parâmetro será
Claim?payment-type=ABC
.
O campo code
não pode ter o mesmo valor que qualquer outro parâmetro de pesquisa padrão
ou personalizada no mesmo tipo de recurso. Os parâmetros de pesquisa padrão
não podem ser redefinidos ou modificados usando parâmetros de pesquisa
personalizada. O método configureSearch
rejeita parâmetros de pesquisa duplicados.
O valor do campo code
precisa atender aos seguintes requisitos:
- Precisa começar com uma letra
- Não pode ter mais de 64 caracteres
- Precisa conter apenas o seguinte:
- Caracteres alfanuméricos
- Caractere hífen
-
- Caractere sublinhado
_
A convenção padrão do FHIR para o campo code
está em letras minúsculas com traços.
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.
Esse valor de type
precisa ser compatível com o tipo de dados do campo
especificado pelo campo expression
. Se não for, configureSearch
rejeitará
o parâmetro de pesquisa personalizada.
O campo type
precisa ser definido como uma das seguintes opções:
number
date
string
token
reference
quantity
uri
Os tipos composite
e special
não são compatíveis.
expression
O campo expression
define quais campos ou extensões o parâmetro de pesquisa
consulta. Esse campo usa um conjunto limitado de sintaxe e funções de FHIRPath.
Sintaxe de campos
O campo expression
é definido como um caminho que inicia com o tipo de recurso e é seguido
por um ou mais campos separados por .
, por exemplo, Patient.contact.name.given
. A estrutura
do campo de dados FHIR pode ser encontrada nos recursos FHIR
e nos tipos de dados FHIR.
Várias cláusulas
O campo expression
pode conter várias cláusulas separadas por |
. Nesse caso, haverá correspondência do parâmetro de pesquisa 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 um desses dois campos. Use várias cláusulas quando mais
de um tipo de recurso for especificado 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 de um tipo de dados
em potencial. Por exemplo, o campo Observation.value
pode conter muitos tipos diferentes,
como Quantity
e String
, que funcionam com diferentes tipos de pesquisa.
É possível selecionar esses tipos de pesquisa com Observation.value.as(Quantity)
ou Observation.value.as(String)
.
Selecionar extensões
É possível selecionar extensões com a função .extension([canonical url])
.
Como 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])
.
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)
.
Você também pode usar a função .extension.where(url='[canonical url]')
para selecionar extensões. Esse é o único contexto em que a função where()
é permitida.
Nenhuma outra função FHIRPath é compatível.
target
Se o campo type
for definido como reference
, o campo target
precisará conter
um ou mais tipos de recurso FHIR que definem a que tipos de recurso o
parâmetro de pesquisa se aplica.
Por exemplo, se o campo Patient.generalPractitioner
permitir referências a
Practitioner
, PractitionerRole
e Organization
, um parâmetro de pesquisa poderá 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 funcionalidades disponíveis com um
parâmetro de pesquisa personalizada são as mesmas compatíveis com o armazenamento FHIR em um
parâmetro de pesquisa padrão do mesmo tipo.
Usar parâmetros de pesquisa de um guia de implementação
Se você estiver implementando parâmetros de pesquisa obtidos de um guia de implementação do FHIR,
importe os recursos SearchParameter
do arquivo JSON do guia de implementação
para o armazenamento de FHIR usando um dos seguintes métodos:
Em algumas instâncias, é preciso converter um parâmetro de pesquisa publicado para que
a API Cloud Healthcare seja compatível com ele. Se os parâmetros de pesquisa não forem convertidos,
o método configureSearch
os rejeitará. As seguintes restrições se aplicam a parâmetros
de pesquisa nos guias de implementação:
Se o parâmetro de pesquisa for idêntico aos parâmetros na especificação FHIR de base, o método
configureSearch
rejeitará os parâmetros de pesquisa duplicados. Omita essas cópias ao chamarconfigureSearch
. Veja mais informações emcode
.Se o parâmetro de pesquisa contiver apenas uma expressão
xpath
, converta a expressão em uma expressão FHIRPath equivalente e use-a no campoexpression
. Veja mais informações emexpression
.Os tipos de parâmetro de pesquisa
composite
especial
não são compatíveis.A sintaxe de transmissão de tipo alternativa
([field] as [data type])
não é compatível. Converta para o[field].as([data type])
equivalente compatível. Veja mais informações em.as([data type])
.A convenção
[reference field].where(resolve() is [resource type])
para restringir o tipo de um recurso referenciado não é compatível. Remova a cláusulawhere()
e armazene o tipo de recurso referenciado no campoSearchParameter.target
. Veja mais informações emtarget
.Alguns guias de implementação usam expressões para extensões que omitem alguns dos componentes de caminho exigidos pelo armazenamento de FHIR da API Cloud Healthcare. Por exemplo,
Patient.extension('url')
precisa ser modificado paraPatient.extension('url').value.as([data type])
ePatient.extension('url').extension.value
precisa ser modificado paraPatient.extension('url').extension('url2').value.as([data type])
.
Exemplos
Usar uma pesquisa personalizada para pesquisar em um campo de extensão
As etapas a seguir mostram um exemplo de como pesquisar texto na
extensão mothersMaidenName
nos recursos do paciente.
Crie um recurso de paciente de amostra:
curl
O exemplo a seguir mostra como criar um recurso de paciente fazendo uma solicitação
POST
e usandocurl
. Este recurso de paciente 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 a solicitação for bem-sucedida, o servidor retornará uma resposta semelhante à seguinte amostra 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 a seguir mostra como criar um recurso de paciente fazendo uma solicitação
POST
e usando o Windows PowerShell. Este recurso de paciente 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 a solicitação for bem-sucedida, o servidor retornará uma resposta semelhante à seguinte amostra 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 personalizada:
curl
O exemplo a seguir mostra como criar o recurso de parâmetro de pesquisa personalizada para a extensão
mothersMaidenName
fazendo uma solicitaçãoPOST
que usecurl
.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 a solicitação for bem-sucedida, o servidor retornará 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
Veja a seguir como criar o recurso de parâmetro de pesquisa personalizada para a extensão "mothersMaidenName" fazendo uma solicitação "POST" e usando o 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 a solicitação for bem-sucedida, o servidor retornará 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 ver mais informações, consulte.as([data type])
.Ativar o parâmetro de pesquisa:
curl
Para ativar o parâmetro de pesquisa personalizada, faça uma solicitação
POST
e especifique o URL canônico para cada um deles.O exemplo a seguir mostra uma solicitação
POST
usandocurl
.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 a solicitação for bem-sucedida, o servidor retornará 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 personalizada, faça uma solicitação
POST
e especifique o URL canônico para cada um deles.O exemplo a seguir mostra uma solicitação
POST
usando o 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 a solicitação for bem-sucedida, o servidor retornará a resposta no formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
Pesquise usando o parâmetro de pesquisa personalizada:
curl
O exemplo a seguir mostra como pesquisar recursos de pacientes para a string
Marca
na extensãomothersMaidenName
, fazendo uma solicitaçãoGET
e usandocurl
.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 a solicitação for bem-sucedida, o servidor retornará a resposta como um
Bundle
do FHIR no formato JSON. OBundle.type
ésearchset
, e os resultados da pesquisa são entradas na matrizBundle.entry
. Neste exemplo, a solicitação retorna um único recurso Paciente, incluindo os dados dentro do 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
No exemplo a seguir, mostramos como pesquisar recursos de pacientes para a string "Marca" na extensão "mothersMaidenName" fazendo uma solicitação "GET" e usando o 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 a solicitação for bem-sucedida, o servidor retornará a resposta como um
Bundle
do FHIR no formato JSON. OBundle.type
ésearchset
, e os resultados da pesquisa são entradas na matrizBundle.entry
. Neste exemplo, a solicitação retorna um único recurso Paciente, incluindo os dados dentro do recurso:{ "entry": [ { "fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/PATIENT_ID", "resource": { "birthDate": "1970-01-01", "gender": "female", "id": "PATIENT_ID", "meta": { "lastUpdated": "LAST_UPDATED", "versionId": "VERSION_ID" }, "name": [ { "family": "Smith", "given": [ "Darcy" ], "use": "official" } ], "resourceType": "Patient" "extension": [ { "url": "http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName", "valueString": "Marca" } ] }, "search": { "mode": "match" } } ], "link": [ { "url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?family%3Aexact=Smith" } ], "resourceType": "Bundle", "total": 1, "type": "searchset" }
Usar uma pesquisa personalizada para pesquisar em um campo de extensão de dois níveis
As etapas a seguir mostram como pesquisar o código na extensão us-core-ethnicity
em um recurso de paciente.
Crie um recurso de paciente de amostra:
curl
O exemplo a seguir mostra como criar um recurso de paciente fazendo uma solicitação
POST
e usandocurl
. Este recurso de paciente 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 a solicitação for bem-sucedida, o servidor retornará uma resposta semelhante à seguinte amostra 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 a seguir mostra como criar um recurso de paciente fazendo uma solicitação
POST
e usando o Windows PowerShell. Este recurso de paciente 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 a solicitação for bem-sucedida, o servidor retornará uma resposta semelhante à seguinte amostra 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 personalizada:
curl
O exemplo a seguir mostra como criar o recurso de parâmetro de pesquisa personalizada para a extensãous-core-ethnicity
fazendo uma solicitaçãoPOST
que usecurl
.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 a solicitação for bem-sucedida, o servidor retornará 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 a seguir mostra como criar o recurso de parâmetro de pesquisa personalizada para a extensão "mothersMaidenName" fazendo uma solicitação "POST" e usando o 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 a solicitação for bem-sucedida, o servidor retornará 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" }, }
Ativar o parâmetro de pesquisa:
curl
Para ativar o parâmetro de pesquisa personalizada, faça uma solicitação
POST
e especifique o URL canônico para cada um deles.O exemplo a seguir mostra uma solicitação
POST
usandocurl
.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 a solicitação for bem-sucedida, o servidor retornará 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 personalizada, faça uma solicitação
POST
e especifique o URL canônico para cada um deles.O exemplo a seguir mostra uma solicitação
POST
usando o 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 a solicitação for bem-sucedida, o servidor retornará a resposta no formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
Pesquise usando o parâmetro de pesquisa personalizada:
curl
O exemplo a seguir 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 uma solicitaçãoGET
e usandocurl
.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 a solicitação for bem-sucedida, o servidor retornará a resposta como um
Bundle
do FHIR no formato JSON. OBundle.type
ésearchset
, e os resultados da pesquisa são entradas na matrizBundle.entry
. Neste exemplo, a solicitação retorna um único recurso Paciente, incluindo os dados dentro do 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 a seguir 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 uma solicitação "GET" e usando o 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 a solicitação for bem-sucedida, o servidor retornará a resposta como um
Bundle
do FHIR no formato JSON. OBundle.type
ésearchset
, e os resultados da pesquisa são entradas na matrizBundle.entry
. Neste exemplo, a solicitação retorna um único recurso Paciente, incluindo os dados dentro do 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" }