Questa pagina descrive come configurare un archivio FHIR per supportare i parametri di ricerca personalizzati per i campi e le estensioni che non sono coperti dai parametri di ricerca standard FHIR.
I parametri di ricerca personalizzati possono essere utili in molte situazioni, tra cui:
- Devi cercare un campo in una risorsa FHIR, ma non esiste un parametro di ricerca supportato per il campo.
- Devi cercare nelle estensioni aggiunte al modello dei dati FHIR.
Panoramica
Per impostazione predefinita, la ricerca di risorse FHIR supporta i parametri di ricerca standard definiti nella specifica FHIR, con alcune esclusioni documentate nella dichiarazione della funzionalità FHIR o nella dichiarazione di conformità FHIR.
Puoi creare uno o più parametri di ricerca personalizzati e configurare l'archivio FHIR per supportarli nelle query tramite il metodo search
. I parametri di ricerca personalizzati sono utili nelle seguenti situazioni:
- Per eseguire ricerche in campi non coperti dai parametri di ricerca standard.
- Per cercare nelle estensioni il modello dei dati FHIR.
Molte guide all'implementazione di FHIR definiscono i parametri di ricerca, che puoi utilizzare nelle tue ricerche.
I parametri di ricerca personalizzati supportano lo stesso comportamento di ricerca, incluse le funzionalità di ricerca FHIR avanzate dei parametri di ricerca standard, ad esempio i seguenti:
- modificatori
_include
e_revinclude
- ricerca concatenata
_sort
Per abilitare una ricerca personalizzata per l'archivio FHIR, devi prima creare una o più risorse SearchParameter
che definiscano il comportamento di ricerca. SearchParameter
è un tipo di risorsa FHIR standard che può essere creato, aggiornato o eliminato utilizzando gli stessi metodi di qualsiasi altro tipo di risorsa. Consulta Creare una risorsa dei parametri di ricerca nell'archivio.
Le risorse SearchParameter
in un archivio FHIR non hanno effetto finché non vengono configurate
utilizzando il metodo configureSearch
. Questo metodo attiva un elenco di parametri di ricerca personalizzati. Ogni volta che viene richiamata,
sostituisce l'elenco di parametri precedente. Viene attivata un'operazione a lunga esecuzione per consentire a configureSearch
di reindicizzare tutte le risorse pertinenti all'interno dell'archivio in base alla nuova configurazione di ricerca. Tutte le risorse nuove e aggiornate dopo la chiamata al metodo
vengono indicizzate in base alla nuova configurazione. Tutti i dati di indice per i parametri di ricerca personalizzati che non sono più nella configurazione vengono rimossi.
Per maggiori dettagli su come utilizzare configureSearch
, consulta Attivare il parametro di ricerca personalizzato per l'archivio FHIR.
Il valore CapabilityStatement
del negozio, recuperato tramite il metodo fhir.capabilities
, elenca i parametri di ricerca standard e personalizzati. I parametri di ricerca per una risorsa si trovano nel campo rest.resource.searchParam
.
crea una ricerca FHIR personalizzata
crea una risorsa SearchParameter nell'archivio FHIR
Gli esempi riportati di seguito mostrano come creare una risorsa di parametri di ricerca personalizzati utilizzando il metodo projects.locations.datasets.fhirStores.fhir.create
. Puoi anche utilizzare il metodo projects.locations.datasets.fhirStores.import
.
Per una descrizione dei campi pertinenti dei parametri di ricerca, consulta Campi delle risorse SearchParameter.
curl
Il seguente esempio mostra una richiesta POST
che utilizza 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 la richiesta ha esito positivo, il server restituisce la risposta in 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
L'esempio seguente mostra una richiesta POST
mediante Windows PowerShell.
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } $SearchParameter = '{ "resourceType": "SearchParameter", "url": "CANONICAL_URL", "base": ["RESOURCE_TYPE"], "code": "SEARCH_PARAMETER_CODE", "name": "SEARCH_PARAMETER_NAME", "type": "SEARCH_PARAMETER_TYPE", "expression": "SEARCH_PARAMETER_EXPRESSION", "status": "active", "description": "SEARCH_PARAMETER_DESCRIPTION" }' Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $SearchParameter ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/SearchParameter" | ConvertTo-Json
Se la richiesta ha esito positivo, il server restituisce la risposta in 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" }, }
Attiva il parametro di ricerca personalizzato per l'archivio FHIR
Per attivare uno o più parametri di ricerca personalizzati per l'archivio FHIR, effettua una richiesta POST
al metodo [store base URL]:configureSearch
e specifica l'URL canonico per ogni parametro di ricerca attivato.
Gli URL canonici sono specificati in uno dei seguenti formati:
uri
: seleziona il valoreversion
più grande disponibile nello store per quell'URI.uri|version
seleziona una versione specifica.
Ad esempio, se lo store contiene le versioni 1.0.0
e 1.0.1
per i parametri di ricerca con l'URI http://example.com/search
,
l'URL canonico http://example.com/search|1.0.0
seleziona la
versione 1.0.0
. L'URL canonico http://example.com/search
seleziona la
versione 1.0.1
.
L'elenco di URL fornito a questo metodo sostituisce qualsiasi configurazione precedente e rimuove i parametri di ricerca personalizzati che erano attivi in precedenza. La configurazione viene memorizzata nella cache in base ai contenuti delle risorse SearchParameter
esistenti al momento della chiamata di configureSearch
. La
configurazione non verrà aggiornata se le risorse SearchParameter
vengono aggiornate o eliminate
fino a quando configureSearch
non viene richiamato.
Se la chiamata al metodo [store base URL]:configureSearch
ha esito positivo, il valore restituito è il nome di un'operazione a lunga esecuzione per reindicizzare le risorse nell'archivio in base alla nuova configurazione. Puoi visualizzare lo stato dell'operazione a lunga esecuzione utilizzando il metodo operations.get
e annullarla utilizzando il metodo operations.cancel
. Lo stato contiene un contatore che indica quante risorse sono state reindicizzate correttamente.
Le ricerche nell'archivio continuano a funzionare normalmente durante l'esecuzione dell'operazione a lunga esecuzione, ma i parametri di ricerca personalizzata aggiunti o modificati da questa operazione restituiscono risultati parziali. L'annullamento dell'operazione è sicuro, ma comporta l'indicizzazione parziale dei parametri di ricerca personalizzati. È importante completare un'intera operazione di reindicizzazione con esito positivo prima di eseguire la ricerca con parametri appena aggiunti o modificati.
In caso di errori, vengono visualizzati in Cloud Logging.
Il metodo configureSearch
può anche essere utilizzato con l'opzione "validate_only": true
per convalidare i parametri di ricerca specificati senza modificare la configurazione dello store e senza reindicizzare alcun dato.
Gli esempi riportati di seguito mostrano come abilitare uno o più parametri di ricerca personalizzati per l'archivio FHIR utilizzando il metodo projects.locations.datasets.fhirStores.configureSearch
.
curl
Il seguente esempio mostra una richiesta POST
che utilizza 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 la richiesta ha esito positivo, il server restituisce la risposta in formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
La risposta contiene il nome di un'operazione. Per monitorare lo stato dell'operazione, puoi utilizzare il metodo dell'operazione 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 l'operazione a lunga esecuzione è ancora in esecuzione, il server restituisce una risposta con il numero di risorse FHIR in attesa di reindicizzazione in 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" } } }
Al termine dell'LRO, il server restituisce una risposta con lo stato dell'operazione in 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 l'LRO ha esito positivo, la risposta contiene il numero di risorse FHIR reindicizzate correttamente e un tipo di risposta google.protobuf.Empty
.
PowerShell
L'esempio seguente mostra una richiesta POST
mediante Windows PowerShell.
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } $configureSearch = '{ "canonical_urls": [ "CANONICAL_URL1", "CANONICAL_URL2" ] }' Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $configureSearch ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:configureSearch"
Se la richiesta ha esito positivo, il server restituisce la risposta in formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
La risposta contiene il nome di un'operazione. Per monitorare lo stato dell'operazione, puoi utilizzare il metodo dell'operazione 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 l'operazione a lunga esecuzione è ancora in esecuzione, il server restituisce una risposta con il numero di risorse FHIR in attesa di reindicizzazione in 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" } } }
Al termine dell'LRO, il server restituisce una risposta con lo stato dell'operazione in 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 l'LRO ha esito positivo, la risposta contiene il numero di risorse FHIR reindicizzate correttamente e un tipo di risposta google.protobuf.Empty
.
Cercare risorse con una ricerca personalizzata
Puoi eseguire una ricerca utilizzando un SearchParameter personalizzato come faresti con qualsiasi altro tipo di ricerca. Utilizza il valore code
della risorsa del parametro di ricerca come key
per la query di ricerca. Per ulteriori informazioni, consulta la sezione Ricerca di risorse FHIR.
Campi delle risorse SearchParameter
La seguente sezione descrive i campi della risorsa SearchParameter che sono pertinenti alle ricerche personalizzate. Questi campi sono disponibili sia nella versione STU3 che in quella R4 di FHIR.
uri
e version
Il campo uri
, obbligatorio, e i campi version
, facoltativi, definiscono l'URL canonico per la risorsa SearchParameter. La
combinazione di uri
e version
deve essere univoca all'interno dell'archivio FHIR.
L'URL canonico è l'URL utilizzato nella chiamata configureSearch
.
name
, description
e status
I campi name
, description
e status
sono obbligatori, ma non hanno alcun effetto funzionale.
base
Il campo base
elenca i tipi di risorse FHIR a cui si applica questa ricerca.
Se è presente più di un tipo, il campo expression
deve avere una clausola per ogni tipo. Non esiste alcuna differenza tra la definizione di un parametro su due tipi o la definizione di un parametro per ogni tipo. La definizione di un parametro per più tipi di risorse rende le definizioni più compatte.
code
Il campo code
definisce la chiave da utilizzare in una query di ricerca FHIR. Ad esempio,
se code
è definito come payment-type
e base
è definito come Claim
, una query di ricerca che utilizza questo parametro sarebbe
Claim?payment-type=ABC
.
Il campo code
non può avere lo stesso valore di qualsiasi altro parametro di ricerca standard o personalizzato sullo stesso tipo di risorsa. I parametri di ricerca standard non possono essere ridefiniti o modificati utilizzando i parametri di ricerca personalizzati. Il metodo configureSearch
rifiuta i parametri di ricerca duplicati.
Il valore del campo code
deve soddisfare i seguenti requisiti:
- Deve iniziare con una lettera
- Non può contenere più di 64 caratteri
- Deve contenere solo quanto segue:
- Caratteri alfanumerici
- Carattere trattino
-
- Trattino basso
_
La convenzione standard FHIR per il campo code
è minuscola con trattini.
type
Il campo type
definisce il tipo di parametro di ricerca. Il tipo di parametro di ricerca
determina la semantica delle condizioni di ricerca come definito nella
specifica di ricerca FHIR.
Il valore type
deve essere compatibile con il tipo di dati del campo
specificato dal campo expression
. In caso contrario, configureSearch
rifiuta
il parametro di ricerca personalizzato.
Il campo type
deve essere definito come uno dei seguenti:
number
date
string
token
reference
quantity
uri
I tipi composite
e special
non sono supportati.
expression
Il campo expression
definisce i campi o le estensioni utilizzati per la query dei parametri di ricerca. Questo campo utilizza un insieme limitato di sintassi e funzioni di FHIRPath.
Sintassi dei campi
Il campo expression
è definito come un percorso che inizia con il tipo di risorsa e seguito da uno o più campi separati da .
, ad esempio Patient.contact.name.given
. La struttura dei campi dei dati FHIR è disponibile nelle risorse FHIR e nei tipi di dati FHIR.
Clausole multiple
Il campo expression
può contenere più clausole separate da |
. In questo caso, il parametro di ricerca corrisponde a una qualsiasi delle clausole che corrisponde alla risorsa. Ad esempio, un parametro di ricerca con l'espressione Patient.name.given | Patient.name.family
corrisponde a uno di questi due campi. Utilizza più clausole quando in base
è specificato più di un tipo di risorsa. Ad esempio Patient.name.given | Practitioner.name.given
per un parametro di ricerca che si applica sia a Patient
sia a Practitioner
.
.as([data type])
Utilizza la funzione .as([data type])
quando un campo ha più di un potenziale tipo di dati. Ad esempio, il campo Observation.value
può contenere molti tipi diversi, come Quantity
e String
, che funzionano con tipi di ricerca diversi.
Puoi selezionare questi tipi di ricerca con Observation.value.as(Quantity)
o Observation.value.as(String)
.
Selezione delle estensioni
Puoi selezionare le estensioni con la funzione .extension([canonical url])
.
Poiché le estensioni contengono un campo value
che può contenere qualsiasi tipo di dati, il
percorso completo è definito come .extension([canonical url]).value.as([data type])
.
Le estensioni complesse possono utilizzare più componenti .extension()
, ad esempio
Patient.extension('http://hl7.org/fhir/StructureDefinition/patient-citizenship').extension('code').value.as(CodeableConcept)
.
Puoi anche utilizzare la funzione .extension.where(url='[canonical url]')
per selezionare le estensioni. Questo è l'unico contesto in cui è consentita la funzione where()
.
Non sono supportate altre funzioni FHIRPath.
target
Se il campo type
è definito come reference
, il campo target
deve contenere uno o più tipi di risorse FHIR che definiscano i tipi di risorse che possono essere la destinazione di questa ricerca dei riferimenti.
Ad esempio, se il campo Patient.generalPractitioner
consente i riferimenti a Practitioner
, PractitionerRole
e Organization
, un parametro di ricerca può corrispondere in modo specifico ai riferimenti a Practitioner
, PractitionerRole
o Organization
.
Per trovare una corrispondenza con tutti i tipi di riferimento, includi tutti i tipi nel campo target
.
modifier
, comparator
, multipleOr
, multipleAnd
e chain
I campi modifier
, comparator
, multipleOr
, multipleAnd
e
chain
vengono ignorati. Le opzioni e le funzionalità disponibili con un parametro di ricerca personalizzato sono le stesse supportate dall'archivio FHIR su un parametro di ricerca standard dello stesso tipo.
Utilizzare i parametri di ricerca di una guida all'implementazione
Se stai implementando parametri di ricerca ottenuti da una guida all'implementazione FHIR, importa le risorse SearchParameter
dal file JSON della guida all'implementazione nell'archivio FHIR utilizzando uno dei seguenti metodi:
In alcuni casi, devi convertire un parametro di ricerca pubblicato affinché l'API Cloud Healthcare lo supporti. Se i parametri di ricerca non vengono convertiti,
il metodo configureSearch
li rifiuta. I seguenti vincoli si applicano ai parametri di ricerca dalle guide all'implementazione:
Se il parametro di ricerca è identico ai parametri della specifica FHIR di base, il metodo
configureSearch
rifiuta i parametri di ricerca duplicati. Ometti questi duplicati durante la chiamata aconfigureSearch
. Per saperne di più, visitacode
.Se il parametro di ricerca contiene solo un'espressione
xpath
, converti l'espressione in un'espressione FHIRPath equivalente e utilizzala nel campoexpression
. Per saperne di più, visitaexpression
.I tipi di parametri di ricerca
composite
especial
non sono supportati.La sintassi di trasmissione del tipo alternativa
([field] as [data type])
non è supportata. Converti nell'equivalente supportato[field].as([data type])
. Per saperne di più, visita.as([data type])
.La convenzione
[reference field].where(resolve() is [resource type])
per vincolare il tipo di una risorsa di riferimento non è supportata. Rimuovi la clausolawhere()
e archivia il tipo di risorsa di riferimento nel campoSearchParameter.target
. Per saperne di più, visitatarget
.Alcune guide all'implementazione utilizzano espressioni per le estensioni che omettono alcuni dei componenti del percorso richiesti dall'archivio FHIR dell'API Cloud Healthcare. Ad esempio,
Patient.extension('url')
deve essere modificato inPatient.extension('url').value.as([data type])
ePatient.extension('url').extension.value
deve essere modificato inPatient.extension('url').extension('url2').value.as([data type])
.
Esempi
Utilizzare una ricerca personalizzata per eseguire una ricerca nel campo di un'estensione
I passaggi seguenti mostrano un esempio di ricerca di testo all'interno dell'estensione mothersMaidenName
in Risorse per i pazienti.
Crea una risorsa Paziente di esempio:
curl
L'esempio seguente mostra come creare una risorsa Paziente effettuando una richiesta
POST
utilizzandocurl
. Questa risorsa Patient ha l'estensionemothersMaidenName
impostata suMarca
.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 la richiesta ha esito positivo, il server restituisce una risposta simile al seguente esempio in 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
L'esempio seguente mostra come creare una risorsa Patient effettuando una richiesta
POST
mediante Windows PowerShell. L'estensionemothersMaidenName
di questa risorsa Patient è impostata suMarca
.$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 la richiesta ha esito positivo, il server restituisce una risposta simile al seguente esempio in formato JSON:
{ "birthDate": "1970-01-01", "gender": "female", "id": "PATIENT_ID", "meta": { "lastUpdated": "2020-01-01T00:00:00+00:00", "versionId": "VERSION_ID" }, "name": [ { "family": "Smith", "given": [ "Darcy" ], "use": "official" } ], "resourceType": "Patient" "extension": [ { "url": "http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName", "valueString": "Marca" } ] }
Crea una risorsa parametro di ricerca personalizzato:
curl
Il seguente esempio mostra come creare la risorsa del parametro di ricerca personalizzato per l'estensione
mothersMaidenName
effettuando una richiestaPOST
utilizzandocurl
.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 la richiesta ha esito positivo, il server restituisce la risposta in 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
Di seguito viene mostrato come creare la risorsa del parametro di ricerca personalizzato per l'estensione "mothersMaidenName" effettuando una richiesta "POST" utilizzando 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 la richiesta ha esito positivo, il server restituisce la risposta in 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
, utilizza la funzione.as([data type])
. Ad esempio, per specificare l'espressione di ricerca per un valore booleano, utilizza.value.as(Boolean)
. Per maggiori informazioni, consulta.as([data type])
.Attiva il parametro di ricerca:
curl
Per attivare il parametro di ricerca personalizzato, effettua una richiesta
POST
e specifica l'URL canonico per ogni parametro di ricerca attivato.Il seguente esempio mostra una richiesta
POST
che utilizzacurl
.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 la richiesta ha esito positivo, il server restituisce la risposta in formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
PowerShell
Per attivare il parametro di ricerca personalizzato, effettua una richiesta
POST
e specifica l'URL canonico per ogni parametro di ricerca attivato.L'esempio seguente mostra una richiesta
POST
mediante Windows PowerShell.$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } $configureSearch = '{ "canonicalUrls": "http://example.com/SearchParameter/patient-mothersMaidenName" }' ` Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $configureSearch ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:configureSearch"
Se la richiesta ha esito positivo, il server restituisce la risposta in formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
Esegui la ricerca utilizzando il parametro di ricerca personalizzato:
curl
Il seguente esempio mostra come cercare nelle risorse pazienti la stringa
Marca
nell'estensionemothersMaidenName
effettuando una richiestaGET
utilizzandocurl
.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 la richiesta ha esito positivo, il server restituisce la risposta come codice FHIR
Bundle
in formato JSON.Bundle.type
èsearchset
e i risultati di ricerca sono voci nell'arrayBundle.entry
. In questo esempio, la richiesta restituisce una singola risorsa Patient che include i dati al suo interno:{ "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
L'esempio seguente mostra come cercare nelle risorse pazienti la stringa "Marca" nell'estensione "mothersMaidenName" creando una richiesta "GET" utilizzando 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 la richiesta ha esito positivo, il server restituisce la risposta come codice FHIR
Bundle
in formato JSON.Bundle.type
èsearchset
e i risultati di ricerca sono voci nell'arrayBundle.entry
. In questo esempio, la richiesta restituisce una singola risorsa Patient che include i dati al suo interno:{ "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" }
Utilizzare una ricerca personalizzata per cercare in un campo di estensione a due livelli
I passaggi seguenti mostrano come cercare il codice nell'estensione us-core-ethnicity
in una risorsa Patient.
Crea una risorsa Paziente di esempio:
curl
L'esempio seguente mostra come creare una risorsa Paziente effettuando una richiesta
POST
utilizzandocurl
. Questa risorsa Patient ha impostato l'estensioneus-core-ethnicity
.curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ \"name\": [ { \"use\": \"official\", \"family\": \"Smith\", \"given\": [ \"Darcy\" ] } ], \"gender\": \"female\", \"birthDate\": \"1970-01-01\", \"resourceType\": \"Patient\", \"extension\": [ { \"url\": \"http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity\", \"extension\": [ { \"url\" : \"ombCategory\", \"valueCoding\" : { \"system\" : \"urn:oid:2.16.840.1.113883.6.238\", \"code\" : \"2028-9\", \"display\" : \"Asian\" } } ] } ] }" \ "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient"
Se la richiesta ha esito positivo, il server restituisce una risposta simile al seguente esempio in 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
L'esempio seguente mostra come creare una risorsa Patient effettuando una richiesta
POST
mediante Windows PowerShell. Per questa risorsa Patient è stata impostata l'estensioneus-core-ethnicity
.$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } $Patient = '{ "name": [ { "use": "official", "family": "Smith", "given": [ "Darcy" ] } ], "gender": "female", "birthDate": "1970-01-01", "resourceType": "Patient", "extension": [ { "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity", "extension": [ { "url" : "ombCategory", "valueCoding" : { "system" : "urn:oid:2.16.840.1.113883.6.238", "code" : "2028-9", "display" : "Asian" } } ] } ] }' Invoke-RestMethod ` -Method Post ` -Headers $headers ` -ContentType: "application/fhir+json; charset=utf-8" ` -Body $Patient ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient" | ConvertTo-Json
Se la richiesta ha esito positivo, il server restituisce una risposta simile al seguente esempio in formato JSON:
{ "birthDate": "1970-01-01", "gender": "female", "id": "PATIENT_ID", "meta": { "lastUpdated": "2020-01-01T00:00:00+00:00", "versionId": "VERSION_ID" }, "name": [ { "family": "Smith", "given": [ "Darcy" ], "use": "official" } ], "resourceType": "Patient" "extension": [ { "url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity", "extension": [ { "url" : "ombCategory", "valueCoding" : { "system" : "urn:oid:2.16.840.1.113883.6.238", "code" : "2028-9", "display" : "Asian" } } ] } ] }
Crea una risorsa parametro di ricerca personalizzato:
curl
Il seguente esempio mostra come creare la risorsa del parametro di ricerca personalizzato per l'estensioneus-core-ethnicity
effettuando una richiestaPOST
utilizzandocurl
.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 la richiesta ha esito positivo, il server restituisce la risposta in 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
Il seguente esempio mostra come creare la risorsa del parametro di ricerca personalizzato per l'estensione "mothersMaidenName" creando una richiesta "POST" utilizzando 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 la richiesta ha esito positivo, il server restituisce la risposta in 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" }, }
Attiva il parametro di ricerca:
curl
Per attivare il parametro di ricerca personalizzato, effettua una richiesta
POST
e specifica l'URL canonico per ogni parametro di ricerca attivato.Il seguente esempio mostra una richiesta
POST
che utilizzacurl
.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 la richiesta ha esito positivo, il server restituisce la risposta in formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
PowerShell
Per attivare il parametro di ricerca personalizzato, effettua una richiesta
POST
e specifica l'URL canonico per ogni parametro di ricerca attivato.L'esempio seguente mostra una richiesta
POST
mediante Windows PowerShell.$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } $configureSearch = '{ "canonicalUrls": "http://example.com/SearchParameter/patient-us-core-ethnicity" }' ` Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $configureSearch ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:configureSearch"
Se la richiesta ha esito positivo, il server restituisce la risposta in formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
Esegui la ricerca utilizzando il parametro di ricerca personalizzato:
curl
Il seguente esempio mostra come cercare il codice
urn:oid:2.16.840.1.113883.6.238|2028-9
nell'estensioneus-core-ethnicity
nelle risorse pazienti effettuando una richiestaGET
utilizzandocurl
.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 la richiesta ha esito positivo, il server restituisce la risposta come codice FHIR
Bundle
in formato JSON.Bundle.type
èsearchset
e i risultati di ricerca sono voci nell'arrayBundle.entry
. In questo esempio, la richiesta restituisce una singola risorsa Patient che include i dati al suo interno:{ "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
L'esempio seguente mostra come cercare nelle risorse Patient il codice "urn:oid:2.16.840.1.113883.6.238|2028-9" nell'estensione "us-core-ethnicity" effettuando una richiesta "GET" utilizzando 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 la richiesta ha esito positivo, il server restituisce la risposta come codice FHIR
Bundle
in formato JSON.Bundle.type
èsearchset
e i risultati di ricerca sono voci nell'arrayBundle.entry
. In questo esempio, la richiesta restituisce una singola risorsa Patient che include i dati al suo interno:{ "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" }