Auf dieser Seite wird erläutert, wie Sie mit FHIR-Ressourcen, die über die Methode projects.locations.datasets.fhirStores.fhir.search verfügbar sind, nach FHIR-Ressourcen suchen. In diesem Leitfaden wird davon ausgegangen, dass Sie mit dem Inhalt von Nach FHIR-Ressourcen suchen vertraut sind.
Beispiel für ein FHIR-Bundle
Die Beispiele auf dieser Seite verwenden ein bereitgestelltes JSON FHIR-Bundle, um die Ergebnisse erweiterter FHIR-Suchfunktionen anzuzeigen. Speichern Sie die Datei r4_bundle.json auf Ihrem Computer, um sie in den Beispielen zu verwenden.
FHIR-Beispiel-Bundle ausführen
Informationen zum Ausführen des FHIR-Beispiel-Bundles in einem FHIR-Speicher finden Sie unter Bundle ausführen. Der FHIR-Speicher muss die folgenden Einstellungen haben
- Setzen Sie
enableUpdateCreateauftrue. - Legen Sie
versionauf R4 fest.
String-Modifikatoren für die Suche
Bei einer Stringsuche wird standardmäßig ein Präfixabgleich verwendet, bei dem die Groß-/Kleinschreibung ignoriert wird. Die Akzente werden dabei nicht berücksichtigt. Satzzeichen und zusätzlicher Leerzeichen werden ignoriert.
Folgende Modifikatoren sind verfügbar:
:containsgleicht Ressourcen mit dem angegebenen Wert an einer beliebigen Stelle im String ab, beispielsweise stimmtname:contains=evemitEvelynundSeverineüberein.:exactentspricht dem gesamten String einschließlich Groß- und Kleinschreibung, z. B.name:exact=Evestimmt nicht miteveoderEvelynüberein.
Erweitern Sie den folgenden Abschnitt, um ein Beispiel für die Verwendung von Suchstring-Modifikatoren zu sehen:
Beispiele für Stringsuchmodifikatoren
REST
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Ihre Google Cloud -Projekt-ID
- LOCATION: der Speicherort des übergeordneten Datasets
- DATASET_ID: das übergeordnete Dataset des FHIR-Speichers
- FHIR_STORE_ID ist die FHIR-Speicher-ID
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Im folgenden Beispiel wird die Abfrage
Patient?name:contains=eve verwendet.
Führen Sie diesen Befehl aus:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?name:contains=eve"
PowerShell
Im folgenden Beispiel wird die Abfrage
Patient?name:contains=eve verwendet.
Führen Sie diesen Befehl aus:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?name:contains=eve" | Select-Object -Expand Content
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{
"entry": [
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/patient2",
"resource": {
"active": false,
"address": [
{
"city": "Mountain View",
"district": "KW",
"line": [
"1800 Amphibious Blvd"
],
"period": {
"start": "2000-01-01"
},
"text": "1800 Amphibious Blvd",
"type": "both",
"use": "home"
}
],
"birthDate": "1989-03-11",
"communication": [
{
"language": {
"coding": [
{
"code": "FR",
"display": "jkl",
"system": "123"
},
{
"code": "french",
"display": "mno",
"system": "456"
}
],
"text": "pqr"
}
}
],
"deceasedBoolean": false,
"gender": "female",
"id": "patient2",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"tag": [
{
"code": "tag2",
"display": "Tag Two",
"system": "tag-system"
},
{
"code": "tag|tag3",
"display": "Tag Three",
"system": "other"
}
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"name": [
{
"family": "Lee",
"given": [
"Jane",
"Evelyne"
],
"use": "usual"
}
],
"resourceType": "Patient",
"telecom": [
{
"rank": 1,
"system": "phone",
"use": "home",
"value": "0982344522"
},
{
"rank": 2,
"system": "email",
"use": "home",
"value": "jane@example.com"
}
]
},
"search": {
"mode": "match"
}
},
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/patient1",
"resource": {
"active": false,
"address": [
{
"city": "Mountain View",
"district": "KW",
"line": [
"1800 Amphibious Blvd"
],
"period": {
"start": "1974-12-25"
},
"text": "1800 Amphibious Blvd",
"type": "both",
"use": "home"
}
],
"birthDate": "1974-12-25",
"communication": [
{
"language": {
"coding": [
{
"code": "ENG",
"display": "def",
"system": "123"
},
{
"code": "english",
"display": "ghi",
"system": "456"
}
],
"text": "abc"
}
}
],
"deceasedBoolean": false,
"gender": "male",
"id": "patient1",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"tag": [
{
"code": "tag1",
"display": "Tag One",
"system": "tag-system"
},
{
"code": "tag2",
"display": "Tag Two",
"system": "other-system"
}
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"name": [
{
"family": "Lee",
"given": [
"Alex",
"Cleve"
],
"text": "Alex Lee",
"use": "usual"
},
{
"given": [
"Joe"
],
"use": "nickname"
}
],
"resourceType": "Patient",
"telecom": [
{
"rank": 1,
"system": "phone",
"use": "home",
"value": "0982344522"
},
{
"rank": 2,
"system": "email",
"use": "home",
"value": "alex@example.com"
}
]
},
"search": {
"mode": "match"
}
}
],
"link": [
{
"relation": "search",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?name%3Acontains=eve"
},
{
"relation": "first",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?name%3Acontains=eve"
},
{
"relation": "self",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?name%3Acontains=eve"
}
],
"resourceType": "Bundle",
"total": 2,
"type": "searchset"
}
Komparatoren und Genauigkeit für Zahlen, Daten und Mengen
Die in einer numerischen oder Datumssuche verwendeten Werte hängen von der Genauigkeit des Parameterwerts ab. Beispiel: Die Zahl 7.00 hat einen impliziten Bereich von 6.995 (einschließlich) bis 7.005 (ausschließlich). Das Datum 2015-08-12 umfasst einen Bereich von 2015-08-12T00:00:00 (einschließlich) bis 2015-08-13T00:00:00 (ausschließlich).
Die Genauigkeit beeinflusst, welche Ergebnisse für Gleichheitsvergleiche zurückgegeben werden. Beispielsweise würde ein Wert von 7.03 in einer Ressource mit einer Suche nach value=7.0 übereinstimmen, aber nicht mit einer Suche nach value=7.00.
Alle klinisch signifikanten Gleitkommawerte in FHIR werden durch Typen wie Dezimalzahl und Menge dargestellt, die die Genauigkeit des gespeicherten Wertes aufzeichnen. Ausgenommen hiervon sind einige Felder, die einfache Ganzzahlen verwenden, z. B. zur Darstellung einer Position in einer Sequenz. Suchvorgänge in diesen Feldern sind exakte numerische Übereinstimmungen.
Die folgenden Präfixe gelten für numerische Vergleiche gegenüber einem Singleton-Wert.
Wenn keine Präfixe angegeben sind, wird der Standardwert eq verwendet.
eq: Gleich, der exakte gespeicherte Wert liegt innerhalb des Bereichs, der durch die Genauigkeit des Parameterwerts definiert wirdne: nicht gleich, das Gegenteil voneqgt: Der genaue gespeicherte Wert ist größer als der genaue Parameterwert.lt: Der genaue gespeicherte Wert ist kleiner als der genauege: Der genaue gespeicherte Wert ist größer oder gleich dem genauen Parameterwertle: Der genaue gespeicherte Wert ist kleiner oder gleich dem exakten Parameterwert.
Datumswerte haben einen impliziten Bereich, der auf der Spezifität des Werts basiert (ein Jahr, ein Monat, ein Tag). Andere Datentypen wie Bereich und Zeitraum enthalten explizite Ober- und Untergrenzen. Die folgenden Präfixe gelten für Bereichsvergleiche. Wenn keine Präfixe angegeben sind, wird der Standardwert eq verwendet.
eq: gleich, der Bereich des Parameterwerts enthält den Bereich des Ziels vollständigne: nicht gleich, das Gegenteil voneqgt: größer als, der Bereich über dem Parameterwert überschneidet sich mit dem Bereich des Zielslt: kleiner als, der Bereich unter dem Parameterwert überschneidet sich mit dem Bereich des Zielsge: Größer als oder gleichle: Kleiner als oder gleichsa: Der Bereich des Parameterwerts beginnt nach dem Zielbereich.eb: Der Bereich des Parameterwerts endet vor dem Zielbereich.
Komparatoren und Genauigkeit für Zahlen, Daten und Mengenbeispiele
REST
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Ihre Google Cloud -Projekt-ID
- LOCATION: der Speicherort des übergeordneten Datasets
- DATASET_ID: das übergeordnete Dataset des FHIR-Speichers
- FHIR_STORE_ID ist die FHIR-Speicher-ID
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Im folgenden Beispiel wird die Abfrage
_lastUpdated=gt2018-01-01 verwendet, um nach Patientenressourcen mit einem _lastUpdated-Wert größer als (gt) 2018-01-01 zu suchen.
Führen Sie diesen Befehl aus:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?_lastUpdated=gt2018-01-01"
PowerShell
Im folgenden Beispiel wird die Abfrage
_lastUpdated=gt2018-01-01 verwendet, um nach Patientenressourcen mit einem _lastUpdated-Wert größer als (gt) 2018-01-01 zu suchen.
Führen Sie diesen Befehl aus:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?_lastUpdated=gt2018-01-01" | Select-Object -Expand Content
Die Abfrage _lastUpdated=gt2018-01-01 gibt Patientenressourcen zurück, die seit dem 01.01.2018 aktualisiert wurden. Wenn Sie nach diesem Datum alle Ressourcen in Ihrem FHIR-Speicher erstellt haben, gibt der Server alle Ressourcen zurück. Wenn Sie eine Teilmenge der Ressourcen ansehen möchten, ändern Sie das Datum in eine Uhrzeit nach der letzten Aktualisierung einiger Ressourcen.
{
"entry": [
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/patient3",
"resource": {
"active": false,
"address": [
{
"city": "Lisbon",
"district": "KW",
"line": [
"Avenida da Pastelaria, 1903"
],
"period": {
"start": "1980-01-01"
},
"text": "Avenida da Pastelaria, 1903",
"type": "both",
"use": "home"
}
],
"birthDate": "1980-01-01",
"deceasedBoolean": false,
"id": "patient3",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"tag": [
{
"code": "tag3",
"display": "Tag $3",
"system": "other|tag"
},
{
"code": "code,4",
"display": "Tag 4",
"system": "system"
}
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"name": [
{
"family": "Smith",
"given": [
"Mary"
],
"text": "Smith, Mary",
"use": "usual"
}
],
"resourceType": "Patient",
"telecom": [
{
"rank": 1,
"system": "phone",
"use": "home",
"value": "1110891111"
},
{
"rank": 2,
"system": "email",
"use": "home",
"value": "mary@example.com"
}
]
},
"search": {
"mode": "match"
}
},
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/patient2",
"resource": {
"active": false,
"address": [
{
"city": "Mountain View",
"district": "KW",
"line": [
"1800 Amphibious Blvd"
],
"period": {
"start": "2000-01-01"
},
"text": "1800 Amphibious Blvd",
"type": "both",
"use": "home"
}
],
"birthDate": "1989-03-11",
"communication": [
{
"language": {
"coding": [
{
"code": "FR",
"display": "jkl",
"system": "123"
},
{
"code": "french",
"display": "mno",
"system": "456"
}
],
"text": "pqr"
}
}
],
"deceasedBoolean": false,
"gender": "female",
"id": "patient2",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"tag": [
{
"code": "tag2",
"display": "Tag Two",
"system": "tag-system"
},
{
"code": "tag|tag3",
"display": "Tag Three",
"system": "other"
}
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"name": [
{
"family": "Lee",
"given": [
"Jane",
"Evelyne"
],
"use": "usual"
}
],
"resourceType": "Patient",
"telecom": [
{
"rank": 1,
"system": "phone",
"use": "home",
"value": "0982344522"
},
{
"rank": 2,
"system": "email",
"use": "home",
"value": "jane@example.com"
}
]
},
"search": {
"mode": "match"
}
},
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a",
"resource": {
"address": [
{
"country": "US",
"line": [
"907 Arlo Cliffs",
"Suite 984"
],
"postalCode": "XXXXX"
}
],
"birthDate": "1940-12-01",
"communication": [
{
"language": {
"coding": [
{
"code": "en-US",
"display": "English (United States)",
"system": "urn:ietf:bcp:47"
}
]
}
}
],
"deceasedDateTime": "2009-07-26T12:01:23-05:00",
"extension": [
{
"url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-race",
"valueCodeableConcept": {
"coding": [
{
"code": "2106-3",
"display": "White",
"system": "http://hl7.org/fhir/v3/Race"
}
],
"text": "race"
}
},
{
"url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity",
"valueCodeableConcept": {
"coding": [
{
"code": "2186-5",
"display": "Nonhispanic",
"system": "http://hl7.org/fhir/v3/Ethnicity"
}
],
"text": "ethnicity"
}
},
{
"url": "http://hl7.org/fhir/StructureDefinition/birthPlace",
"valueAddress": {
"city": "Tama",
"country": "US",
"postalCode": "52339",
"state": "Iowa"
}
},
{
"url": "http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName",
"valueString": "Farrah Feeney"
},
{
"url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-birthsex",
"valueCode": "M"
},
{
"url": "http://hl7.org/fhir/StructureDefinition/patient-interpreterRequired",
"valueBoolean": false
},
{
"url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-actor-FictionalPerson-extension",
"valueBoolean": true
},
{
"url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-demographics-FathersName-extension",
"valueHumanName": {
"text": "Christopher Diaz"
}
},
{
"url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-demographics-SocialSecurityNumber-extension",
"valueString": "999-16-9041"
}
],
"gender": "male",
"generalPractitioner": [
{
"reference": "Organization/9fb51c89-1453-406c-8357-578311b43a91"
}
],
"id": "8ac08aa9-63d2-4e81-8647-3a138d7f9f5a",
"identifier": [
{
"system": "https://github.com/synthetichealth/synthea",
"value": "c1ee4b49-3194-4b39-91ed-4d1393a780c6"
},
{
"system": "http://hl7.org/fhir/sid/us-ssn",
"type": {
"coding": [
{
"code": "SB",
"system": "http://hl7.org/fhir/identifier-type"
}
]
},
"value": "999169041"
},
{
"system": "urn:oid:2.16.840.1.113883.4.3.25",
"type": {
"coding": [
{
"code": "DL",
"system": "http://hl7.org/fhir/v2/0203"
}
]
},
"value": "S99992205"
},
{
"system": "http://standardhealthrecord.org/fhir/StructureDefinition/passportNumber",
"type": {
"coding": [
{
"code": "PPN",
"system": "http://hl7.org/fhir/v2/0203"
}
]
},
"value": "X12551631X"
},
{
"system": "http://hospital.smarthealthit.org",
"type": {
"coding": [
{
"code": "MR",
"system": "http://hl7.org/fhir/v2/0203"
}
]
},
"value": "c1ee4b49-3194-4b39-91ed-4d1393a780c6"
}
],
"maritalStatus": {
"coding": [
{
"code": "S",
"system": "http://hl7.org/fhir/v3/MaritalStatus"
}
],
"text": "S"
},
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"profile": [
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-demographics-PersonOfRecord"
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"multipleBirthBoolean": false,
"name": [
{
"family": "Diaz",
"given": [
"Christopher"
],
"prefix": [
"Mr."
],
"use": "official"
}
],
"resourceType": "Patient",
"telecom": [
{
"system": "phone",
"use": "home",
"value": "434-100-2918 x800"
}
],
"text": {
"div": "Generated by Synthea. Version identifier: 2dd4c1c37e2743d14e5073c7b5e42899a3e51531",
"status": "generated"
}
},
"search": {
"mode": "match"
}
},
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/patient1",
"resource": {
"active": false,
"address": [
{
"city": "Mountain View",
"district": "KW",
"line": [
"1800 Amphibious Blvd"
],
"period": {
"start": "1974-12-25"
},
"text": "1800 Amphibious Blvd",
"type": "both",
"use": "home"
}
],
"birthDate": "1974-12-25",
"communication": [
{
"language": {
"coding": [
{
"code": "ENG",
"display": "def",
"system": "123"
},
{
"code": "english",
"display": "ghi",
"system": "456"
}
],
"text": "abc"
}
}
],
"deceasedBoolean": false,
"gender": "male",
"id": "patient1",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"tag": [
{
"code": "tag1",
"display": "Tag One",
"system": "tag-system"
},
{
"code": "tag2",
"display": "Tag Two",
"system": "other-system"
}
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"name": [
{
"family": "Lee",
"given": [
"Alex",
"Cleve"
],
"text": "Alex Lee",
"use": "usual"
},
{
"given": [
"Joe"
],
"use": "nickname"
}
],
"resourceType": "Patient",
"telecom": [
{
"rank": 1,
"system": "phone",
"use": "home",
"value": "0982344522"
},
{
"rank": 2,
"system": "email",
"use": "home",
"value": "alex@example.com"
}
]
},
"search": {
"mode": "match"
}
}
],
"link": [
{
"relation": "search",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_lastUpdated=gt2018-01-01"
},
{
"relation": "first",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_lastUpdated=gt2018-01-01"
},
{
"relation": "self",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_lastUpdated=gt2018-01-01"
}
],
"resourceType": "Bundle",
"total": 4,
"type": "searchset"
}
Tokensuche
Tokensuchparameter gelten für Fälle, in denen ein Wert kein beliebiger String, sondern eine Entität in einem Benennungssystem ist. Die Zeichenfolge, die mit einem Tokenparameter übereinstimmt, ist genau.
Die meisten Token-Suchanfragen werden auf komplexe Datentypen angewendet, die einen system enthalten, bei dem es sich um einen URI handelt, der das Benennungssystem angibt, aus dem der Wert code stammt. Diese Suchvorgänge unterstützen die folgenden Wertsyntaxen:
[parameter]=[code]stimmt mit demcode-Wert überein, unabhängig vonsystem[parameter]=[system]|[code]muss sowohl mit dem angegebenensystemals auch mitcodeübereinstimmen.[parameter]=|[code]stimmt mitcodeüberein, wenn der Wertsystemleer ist[parameter]=[system]|entspricht einem beliebigencodemit dem angegebenensystem-Wert
Es gibt mehrere Modifikatoren, die alternative Tokensuchfunktionen auslösen:
:notnegiert die übereinstimmenden Bedingungen einer Tokensuche:textführt eine String-Suche (keine exakte Übereinstimmung) im Feldtextoderdisplaydurch, das mit dem Code verknüpft ist, und sucht nicht nach dem Codewert selbst:aboveverwendet nur einen Parameter im Format[system]|[code]und gleicht Ressourcen ab, bei denen der Code in der Ressource den Abfrageparameter subsumiert. Zur Verwendung dieses Modifizierers muss das angegebenesystemim FHIR-Speicher alsCodeSystem-Ressource vorhanden sein.:belowentspricht:above, stimmt aber überein, wenn der Code in der Ressource vom Abfrageparameter subsumiert wird.:inverwendet einen einzelnen Parameter mithilfe der Referenzparametersyntax, z. B.code:in=ValueSet/1234. Der Verweis muss auf eineValueSet-Ressource im selben FHIR-Speicher verweisen. Der Modifikator entspricht jedem Code im referenziertenValueSet.:not-innegiert die Bedingungen von:in
Tokensuchen gelten auch für boolesche Felder und URI-Felder sowie bestimmte Stringfelder, in denen nur genaue Übereinstimmungen zulässig sind. In diesen Fällen lautet das einzige Parameterformat [parameter]=[value].
Beispiele für Tokensuche
REST
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Ihre Google Cloud -Projekt-ID
- LOCATION: der Speicherort des übergeordneten Datasets
- DATASET_ID: das übergeordnete Dataset des FHIR-Speichers
- FHIR_STORE_ID ist die FHIR-Speicher-ID
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Im folgenden Beispiel wird die Abfrage
Patient?_tag=tag-system|tag2 verwendet, um nach Patientenressourcen mit einem angegebenen system und code zu suchen.
Führen Sie diesen Befehl aus:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?_tag=tag-system|tag2"
PowerShell
Im folgenden Beispiel wird die Abfrage
Patient?_tag=tag-system|tag2 verwendet, um nach Patientenressourcen mit einem angegebenen system und code zu suchen.
Führen Sie diesen Befehl aus:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?_tag=tag-system|tag2" | Select-Object -Expand Content
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{
"entry": [
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/patient2",
"resource": {
"active": false,
"address": [
{
"city": "Mountain View",
"district": "KW",
"line": [
"1800 Amphibious Blvd"
],
"period": {
"start": "2000-01-01"
},
"text": "1800 Amphibious Blvd",
"type": "both",
"use": "home"
}
],
"birthDate": "1989-03-11",
"communication": [
{
"language": {
"coding": [
{
"code": "FR",
"display": "jkl",
"system": "123"
},
{
"code": "french",
"display": "mno",
"system": "456"
}
],
"text": "pqr"
}
}
],
"deceasedBoolean": false,
"gender": "female",
"id": "patient2",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"tag": [
{
"code": "tag2",
"display": "Tag Two",
"system": "tag-system"
},
{
"code": "tag|tag3",
"display": "Tag Three",
"system": "other"
}
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"name": [
{
"family": "Lee",
"given": [
"Jane",
"Evelyne"
],
"use": "usual"
}
],
"resourceType": "Patient",
"telecom": [
{
"rank": 1,
"system": "phone",
"use": "home",
"value": "0982344522"
},
{
"rank": 2,
"system": "email",
"use": "home",
"value": "jane@example.com"
}
]
},
"search": {
"mode": "match"
}
}
],
"link": [
{
"relation": "search",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_tag=tag-system%7Ctag2"
},
{
"relation": "first",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_tag=tag-system%7Ctag2"
},
{
"relation": "self",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_tag=tag-system%7Ctag2"
}
],
"resourceType": "Bundle",
"total": 1,
"type": "searchset"
}
Nach fehlenden Werten suchen
Der Suchmodifikator :missing kann für jeden Suchparameter verwendet werden, der auf dem Vorhandensein oder Fehlen eines beliebigen Werts im angegebenen Feld basiert. Beispielsweise gleich Patient?gender=unknown Ressourcen ab, die explizit den Enum-Wert unknown für das Geschlecht enthalten. Da dieses Feld jedoch nicht erforderlich ist, gibt es möglicherweise andere Ressourcen, die dieses Feld überhaupt nicht befüllen. Solche Ressourcen können mit Patient?gender:missing=true abgeglichen werden. Umgekehrt stimmt Patient?gender:missing=false mit jeder Ressource überein, die dieses Feld explizit füllt.
Beispiele für fehlende Werte
REST
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Ihre Google Cloud -Projekt-ID
- LOCATION: der Speicherort des übergeordneten Datasets
- DATASET_ID: das übergeordnete Dataset des FHIR-Speichers
- FHIR_STORE_ID ist die FHIR-Speicher-ID
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Im folgenden Beispiel wird die Abfrage
gender:missing=false verwendet:
Führen Sie diesen Befehl aus:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?gender:missing=false"
PowerShell
Im folgenden Beispiel wird die Abfrage
gender:missing=false verwendet:
Führen Sie diesen Befehl aus:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?gender:missing=false" | Select-Object -Expand Content
patient3 fehlt der Wert gender:
{
"entry": [
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/mydataset/fhirStores/FHIR_STORE_ID/fhir/Patient/patient3",
"resource": {
"active": false,
"address": [
{
"city": "Lisbon",
"district": "KW",
"line": [
"Avenida da Pastelaria, 1903"
],
"period": {
"start": "1980-01-01"
},
"text": "Avenida da Pastelaria, 1903",
"type": "both",
"use": "home"
}
],
"birthDate": "1980-01-01",
"deceasedBoolean": false,
"id": "patient3",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"tag": [
{
"code": "tag3",
"display": "Tag $3",
"system": "other|tag"
},
{
"code": "code,4",
"display": "Tag 4",
"system": "system"
}
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"name": [
{
"family": "Smith",
"given": [
"Mary"
],
"text": "Smith, Mary",
"use": "usual"
}
],
"resourceType": "Patient",
"telecom": [
{
"rank": 1,
"system": "phone",
"use": "home",
"value": "1110891111"
},
{
"rank": 2,
"system": "email",
"use": "home",
"value": "mary@example.com"
}
]
},
"search": {
"mode": "match"
}
}
],
"link": [
{
"relation": "search",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/mydataset/fhirStores/FHIR_STORE_ID/fhir/Patient/?gender%3Amissing=true"
},
{
"relation": "first",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/mydataset/fhirStores/FHIR_STORE_ID/fhir/Patient/?gender%3Amissing=true"
},
{
"relation": "self",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/mydataset/fhirStores/FHIR_STORE_ID/fhir/Patient/?gender%3Amissing=true"
}
],
"resourceType": "Bundle",
"total": 1,
"type": "searchset"
}
Textsuche
Der spezielle Suchparameter _content prüft stringbasierte Felder auf Textübereinstimmungen (mit Ausnahme von Zahlen-, Datums- oder Aufzählungsfeldern), wenn das Feld Ziel eines beliebigen Suchparameters der Ressource ist. Standardmäßig gleicht _content Ressourcen ab, die alle Wörter in der Abfrage enthalten. Außerdem werden zusätzliche Operatoren unterstützt:
|ist der OR-Operator.abc | def | ghi xyzentspricht beispielsweise einer Ressource, diexyzund einen oder mehrere vonabcdefghienthält.-ist der NOT-Operator, z. B. entsprichtabc -defeiner Ressource, dieabcenthält, aber nichtdefenthält.
Der Abgleich basiert auf vollständigen Wörtern und stimmt nicht mit Teilstrings oder nicht alphanumerischen Zeichen überein. Die Reihenfolge der Wörter spielt keine Rolle: Übereinstimmende Wörter können auf mehrere Felder in der Ressource verteilt werden.
Der Parameter _text führt die gleiche Art von Abgleich nur für das Feld Narrative aus, das eine für den Menschen lesbare Zusammenfassung der Ressourceninhalte enthalten soll. Die Cloud Healthcare API generiert diese Zusammenfassung nicht automatisch, unterstützt aber den Suchparameter _text, wenn diese Daten vom Client beim Erstellen oder Aktualisieren der Ressource ausgefüllt wurden.
Beispiele für die Textsuche
REST
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Ihre Google Cloud -Projekt-ID
- LOCATION: der Speicherort des übergeordneten Datasets
- DATASET_ID: das übergeordnete Dataset des FHIR-Speichers
- FHIR_STORE_ID ist die FHIR-Speicher-ID
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Im folgenden Beispiel wird die Abfrage
_content=Smith%20|%20Mountain%20View verwendet:
Führen Sie diesen Befehl aus:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?_content=Smith%20|%20Mountain%20View"
PowerShell
Im folgenden Beispiel wird die Abfrage
_content=Smith%20|%20Mountain%20View verwendet:
Führen Sie diesen Befehl aus:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?_content=Smith%20|%20Mountain%20View" | Select-Object -Expand Content
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{
"entry": [
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/patient1",
"resource": {
"active": false,
"address": [
{
"city": "Mountain View",
"district": "KW",
"line": [
"1800 Amphibious Blvd"
],
"period": {
"start": "1974-12-25"
},
"text": "1800 Amphibious Blvd",
"type": "both",
"use": "home"
}
],
"birthDate": "1974-12-25",
"communication": [
{
"language": {
"coding": [
{
"code": "ENG",
"display": "def",
"system": "123"
},
{
"code": "english",
"display": "ghi",
"system": "456"
}
],
"text": "abc"
}
}
],
"deceasedBoolean": false,
"gender": "male",
"id": "patient1",
"meta": {
"lastUpdated": "2021-10-21T16:41:47.211939+00:00",
"tag": [
{
"code": "tag1",
"display": "Tag One",
"system": "tag-system"
},
{
"code": "tag2",
"display": "Tag Two",
"system": "other-system"
}
],
"versionId": "MTYzNDgzNDUwNzIxMTkzOTAwMA"
},
"name": [
{
"family": "Lee",
"given": [
"Alex",
"Cleve"
],
"text": "Alex Lee",
"use": "usual"
},
{
"given": [
"Joe"
],
"use": "nickname"
}
],
"resourceType": "Patient",
"telecom": [
{
"rank": 1,
"system": "phone",
"use": "home",
"value": "0982344522"
},
{
"rank": 2,
"system": "email",
"use": "home",
"value": "alex@example.com"
}
]
},
"search": {
"mode": "match"
}
},
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/patient2",
"resource": {
"active": false,
"address": [
{
"city": "Mountain View",
"district": "KW",
"line": [
"1800 Amphibious Blvd"
],
"period": {
"start": "2000-01-01"
},
"text": "1800 Amphibious Blvd",
"type": "both",
"use": "home"
}
],
"birthDate": "1989-03-11",
"communication": [
{
"language": {
"coding": [
{
"code": "FR",
"display": "jkl",
"system": "123"
},
{
"code": "french",
"display": "mno",
"system": "456"
}
],
"text": "pqr"
}
}
],
"deceasedBoolean": false,
"gender": "female",
"id": "patient2",
"meta": {
"lastUpdated": "2021-10-21T16:41:47.211939+00:00",
"tag": [
{
"code": "tag2",
"display": "Tag Two",
"system": "tag-system"
},
{
"code": "tag|tag3",
"display": "Tag Three",
"system": "other"
}
],
"versionId": "MTYzNDgzNDUwNzIxMTkzOTAwMA"
},
"name": [
{
"family": "Lee",
"given": [
"Jane",
"Evelyne"
],
"use": "usual"
}
],
"resourceType": "Patient",
"telecom": [
{
"rank": 1,
"system": "phone",
"use": "home",
"value": "0982344522"
},
{
"rank": 2,
"system": "email",
"use": "home",
"value": "jane@example.com"
}
]
},
"search": {
"mode": "match"
}
}
],
"link": [
{
"relation": "search",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_content=Smith%7CMountain+View"
},
{
"relation": "first",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_content=Smith%7CMountain+View"
},
{
"relation": "self",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_content=Smith%7CMountain+View"
}
],
"resourceType": "Bundle",
"total": 2,
"type": "searchset"
}
Zusammengesetzte Suchparameter
Bei der Suche mit mehreren Suchparametern gibt es Fälle, in denen einzelne Suchparameter mit AND kombiniert unbeabsichtigte Ergebnisse liefern würden. Zusammengesetzte Suchparameter sind eine spezielle Art von Suchparameter, mit denen dieses Problem behoben wird.
Die Ressource Observation kann beispielsweise mehrere Werte im Feld component enthalten, die jeweils ein Paar aus code und value enthalten. Eine Suche nach Observation?component-code=8867-4&component-value-quantity=lt50 würde mit einer Ressource übereinstimmen, die eine Komponente mit einem code von 8867-4 und einer anderen Komponente mit einem value kleiner als 50 hätte. Diese Suche kann nicht zur Beschränkung auf eine Übereinstimmung dieser beiden Werte innerhalb derselben Komponente verwendet werden.
Zusammengesetzte Suchparameter definieren einen neuen Parameter, der zwei andere Suchparameter kombiniert und eine Verschachtelungsebene definiert, innerhalb der beide Parameter übereinstimmen müssen. In der Abfrage werden die beiden Werte mit $ verbunden. Beispiel: Observation hat einen zusammengesetzten Parameter component-code-value-quantity, der das vorherige Beispiel auf eine einzelne Komponente beschränken kann. Dazu suchen Sie nach Observation?component-code-value-quantity=8867-4$lt50. Diese Parameter werden durch die FHIR-Spezifikation definiert und existieren nicht für alle Kombinationen von Suchparametern.
Zusammengesetzte Suchparameter lassen keine Modifikatoren zu.
Wie bei allen Suchparametern finden Sie in der Capability-Anweisung oder der FHIR-Konformitätserklärung Informationen dazu, welche zusammengesetzten Parameter von der Cloud Healthcare API unterstützt werden.
Zusammengesetzte Suchbeispiele
REST
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Ihre Google Cloud -Projekt-ID
- LOCATION: der Speicherort des übergeordneten Datasets
- DATASET_ID: das übergeordnete Dataset des FHIR-Speichers
- FHIR_STORE_ID ist die FHIR-Speicher-ID
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Im folgenden Beispiel wird die Abfrage
Observation?component-code-value-quantity=8480-6$lt150 verwendet.
Führen Sie diesen Befehl aus:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation?component-code-value-quantity=8480-6\$lt150"
PowerShell
Im folgenden Beispiel wird die Abfrage
Observation?component-code-value-quantity=8480-6$lt150 verwendet.
Führen Sie diesen Befehl aus:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation?component-code-value-quantity=8480-6\$lt150" | Select-Object -Expand Content
component-code=8480-6 und einem component-value-quantity von 133, der die Kriterien für lt150 erfüllt.
{
"entry": [
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/a35bf421-1f00-4897-a94d-4d47c3bb306b",
"resource": {
"category": [
{
"coding": [
{
"code": "vital-signs",
"system": "http://hl7.org/fhir/observation-category"
}
]
}
],
"code": {
"coding": [
{
"code": "55284-4",
"display": "Blood Pressure",
"system": "http://loinc.org"
}
]
},
"component": [
{
"code": {
"coding": [
{
"code": "8480-6",
"display": "Systolic Blood Pressure",
"system": "http://loinc.org"
}
],
"text": "Systolic Blood Pressure"
},
"valueQuantity": {
"code": "mmHg",
"system": "http://unitsofmeasure.org",
"unit": "mmHg",
"value": 133
}
},
{
"code": {
"coding": [
{
"code": "8462-4",
"display": "Diastolic Blood Pressure",
"system": "http://loinc.org"
}
],
"text": "Diastolic Blood Pressure"
},
"valueQuantity": {
"code": "mmHg",
"system": "http://unitsofmeasure.org",
"unit": "mmHg",
"value": 84
}
}
],
"effectiveDateTime": "2008-03-07T17:47:02-05:00",
"encounter": {
"reference": "Encounter/0e9d631c-4407-45e5-bfbe-689806caaf7b"
},
"id": "a35bf421-1f00-4897-a94d-4d47c3bb306b",
"issued": "2008-03-07T17:47:02-05:00",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"profile": [
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-observation-Observation",
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-vital-BloodPressure"
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"resourceType": "Observation",
"status": "final",
"subject": {
"reference": "Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a"
}
},
"search": {
"mode": "match"
}
}
],
"link": [
{
"relation": "search",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/?component-code-value-quantity=8480-6%24lt150"
},
{
"relation": "first",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/?component-code-value-quantity=8480-6%24lt150"
},
{
"relation": "self",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/?component-code-value-quantity=8480-6%24lt150"
}
],
"resourceType": "Bundle",
"total": 1,
"type": "searchset"
}
Verkettete Suche
Bei einer verketteten Suche kann eine Suche in Verweisen im Kontext einer Abfrage suchen. Die grundlegende Syntax für eine verkettete Suche sieht so aus:
[reference parameter]:[resource type].[inner search parameter]=[inner value]
Wenn sich der Verweisparameter nur auf einen einzigen Ressourcentyp bezieht, kann :[resource
type] weggelassen werden. Dies führt zu Folgendem:
[reference parameter].[inner search parameter]=[inner value]
Beispiel: Observation hat einen Referenzsuchparameter subject, der auf Group, Device, Patient oder Location verweisen kann. Um Observations zu finden, deren subject ein Patient ist, dessen Name mit "Joe" beginnt, können Sie nach Observation?subject:Patient.name=Joe suchen.
Wenn die Abfrage mehrere verkettete Parameter enthält, wird jede Kette separat ausgewertet. Zum Beispiel könnte Patient?general-practitioner.name=Joe&general-practitioner.address-country=Canada einem Patient entsprechen, der zwei general-practitioner-Referenzen hat, eine mit dem Namen "Joe" und die andere mit einer Adresse in Kanada. Es gibt keine Syntax, um diese Klauseln so zu gruppieren, dass sie nur mit Joe aus Kanada übereinstimmen.
Verkettete Suchanfragen können rekursiv mit anderen Ketten oder umgekehrten Ketten erfolgen. Beispiel: Observation?subject:Patient.organization.name=Acme stimmt mit Observation überein, der sich auf eine subject bezieht, die auf eine organization verweist, die einen name von Acme hat.
Beispiele für verkettete Suchanfragen
REST
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Ihre Google Cloud -Projekt-ID
- LOCATION: der Speicherort des übergeordneten Datasets
- DATASET_ID: das übergeordnete Dataset des FHIR-Speichers
- FHIR_STORE_ID ist die FHIR-Speicher-ID
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Im folgenden Beispiel wird die Abfrage
Observation?subject:Patient.name=Christopher verwendet, um alle Beobachtungen zurückzugeben, die einen subject haben, der ein Patient ist, der einen Namen hat, der mit Christopher beginnt.
Führen Sie diesen Befehl aus:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation?subject:Patient.name=Christopher"
PowerShell
Im folgenden Beispiel wird die Abfrage
Observation?subject:Patient.name=Christopher verwendet, um alle Beobachtungen zurückzugeben, die einen subject haben, der ein Patient ist, der einen Namen hat, der mit Christopher beginnt.
Führen Sie diesen Befehl aus:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation?subject:Patient.name=Christopher" | Select-Object -Expand Content
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{
"entry": [
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/85652a63-09ba-4a5b-ac5b-b690c6972eb5",
"resource": {
"category": [
{
"coding": [
{
"code": "laboratory",
"system": "http://hl7.org/fhir/observation-category"
}
]
}
],
"code": {
"coding": [
{
"code": "2093-3",
"display": "Total Cholesterol",
"system": "http://loinc.org"
}
],
"text": "Total Cholesterol"
},
"effectiveDateTime": "2008-03-07T17:47:02-05:00",
"encounter": {
"reference": "Encounter/0e9d631c-4407-45e5-bfbe-689806caaf7b"
},
"id": "85652a63-09ba-4a5b-ac5b-b690c6972eb5",
"issued": "2008-03-07T17:47:02-05:00",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"profile": [
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-observation-Observation"
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"resourceType": "Observation",
"status": "final",
"subject": {
"reference": "Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a"
},
"valueQuantity": {
"code": "mg/dL",
"system": "http://unitsofmeasure.org",
"unit": "mg/dL",
"value": 191
}
},
"search": {
"mode": "match"
}
},
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/e7aea507-61af-4290-9323-0b3daed0b7a9",
"resource": {
"category": [
{
"coding": [
{
"code": "laboratory",
"system": "http://hl7.org/fhir/observation-category"
}
]
}
],
"code": {
"coding": [
{
"code": "2571-8",
"display": "Triglycerides",
"system": "http://loinc.org"
}
],
"text": "Triglycerides"
},
"effectiveDateTime": "2008-03-07T17:47:02-05:00",
"encounter": {
"reference": "Encounter/0e9d631c-4407-45e5-bfbe-689806caaf7b"
},
"id": "e7aea507-61af-4290-9323-0b3daed0b7a9",
"issued": "2008-03-07T17:47:02-05:00",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"profile": [
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-observation-Observation"
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"resourceType": "Observation",
"status": "final",
"subject": {
"reference": "Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a"
},
"valueQuantity": {
"code": "mg/dL",
"system": "http://unitsofmeasure.org",
"unit": "mg/dL",
"value": 143
}
},
"search": {
"mode": "match"
}
},
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/a35bf421-1f00-4897-a94d-4d47c3bb306b",
"resource": {
"category": [
{
"coding": [
{
"code": "vital-signs",
"system": "http://hl7.org/fhir/observation-category"
}
]
}
],
"code": {
"coding": [
{
"code": "55284-4",
"display": "Blood Pressure",
"system": "http://loinc.org"
}
]
},
"component": [
{
"code": {
"coding": [
{
"code": "8480-6",
"display": "Systolic Blood Pressure",
"system": "http://loinc.org"
}
],
"text": "Systolic Blood Pressure"
},
"valueQuantity": {
"code": "mmHg",
"system": "http://unitsofmeasure.org",
"unit": "mmHg",
"value": 133
}
},
{
"code": {
"coding": [
{
"code": "8462-4",
"display": "Diastolic Blood Pressure",
"system": "http://loinc.org"
}
],
"text": "Diastolic Blood Pressure"
},
"valueQuantity": {
"code": "mmHg",
"system": "http://unitsofmeasure.org",
"unit": "mmHg",
"value": 84
}
}
],
"effectiveDateTime": "2008-03-07T17:47:02-05:00",
"encounter": {
"reference": "Encounter/0e9d631c-4407-45e5-bfbe-689806caaf7b"
},
"id": "a35bf421-1f00-4897-a94d-4d47c3bb306b",
"issued": "2008-03-07T17:47:02-05:00",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"profile": [
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-observation-Observation",
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-vital-BloodPressure"
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"resourceType": "Observation",
"status": "final",
"subject": {
"reference": "Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a"
}
},
"search": {
"mode": "match"
}
},
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/14df9701-2dd4-4538-8fac-776c40dec22d",
"resource": {
"category": [
{
"coding": [
{
"code": "vital-signs",
"system": "http://hl7.org/fhir/observation-category"
}
]
}
],
"code": {
"coding": [
{
"code": "8302-2",
"display": "Body Height",
"system": "http://loinc.org"
}
],
"text": "Body Height"
},
"effectiveDateTime": "2008-03-07T17:47:02-05:00",
"encounter": {
"reference": "Encounter/0e9d631c-4407-45e5-bfbe-689806caaf7b"
},
"id": "14df9701-2dd4-4538-8fac-776c40dec22d",
"issued": "2008-03-07T17:47:02-05:00",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"profile": [
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-observation-Observation",
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-vital-VitalSign",
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-vital-BodyHeight"
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"resourceType": "Observation",
"status": "final",
"subject": {
"reference": "Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a"
},
"valueQuantity": {
"code": "cm",
"system": "http://unitsofmeasure.org",
"unit": "centimeters",
"value": 177.72961711703704
}
},
"search": {
"mode": "match"
}
},
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/1e2fdce6-4c79-4ef8-a5a9-2326cddbc8b3",
"resource": {
"category": [
{
"coding": [
{
"code": "vital-signs",
"system": "http://hl7.org/fhir/observation-category"
}
]
}
],
"code": {
"coding": [
{
"code": "39156-5",
"display": "Body Mass Index",
"system": "http://loinc.org"
}
],
"text": "Body Mass Index"
},
"effectiveDateTime": "2008-03-07T17:47:02-05:00",
"encounter": {
"reference": "Encounter/0e9d631c-4407-45e5-bfbe-689806caaf7b"
},
"id": "1e2fdce6-4c79-4ef8-a5a9-2326cddbc8b3",
"issued": "2008-03-07T17:47:02-05:00",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"profile": [
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-observation-Observation",
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-vital-VitalSign",
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-vital-BodyMassIndex"
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"resourceType": "Observation",
"status": "final",
"subject": {
"reference": "Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a"
},
"valueQuantity": {
"code": "kg/m2",
"system": "http://unitsofmeasure.org",
"unit": "kg/m2",
"value": 38.34566163709526
}
},
"search": {
"mode": "match"
}
},
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/58357362-6f18-438a-8479-3289ebab1617",
"resource": {
"category": [
{
"coding": [
{
"code": "laboratory",
"system": "http://hl7.org/fhir/observation-category"
}
]
}
],
"code": {
"coding": [
{
"code": "18262-6",
"display": "Low Density Lipoprotein Cholesterol",
"system": "http://loinc.org"
}
],
"text": "Low Density Lipoprotein Cholesterol"
},
"effectiveDateTime": "2008-03-07T17:47:02-05:00",
"encounter": {
"reference": "Encounter/0e9d631c-4407-45e5-bfbe-689806caaf7b"
},
"id": "58357362-6f18-438a-8479-3289ebab1617",
"issued": "2008-03-07T17:47:02-05:00",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"profile": [
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-observation-Observation"
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"resourceType": "Observation",
"status": "final",
"subject": {
"reference": "Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a"
},
"valueQuantity": {
"code": "mg/dL",
"system": "http://unitsofmeasure.org",
"unit": "mg/dL",
"value": 102
}
},
"search": {
"mode": "match"
}
},
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/c6f1b042-a0fc-4bbc-9cd5-7a8a924c00e7",
"resource": {
"category": [
{
"coding": [
{
"code": "laboratory",
"system": "http://hl7.org/fhir/observation-category"
}
]
}
],
"code": {
"coding": [
{
"code": "2085-9",
"display": "High Density Lipoprotein Cholesterol",
"system": "http://loinc.org"
}
],
"text": "High Density Lipoprotein Cholesterol"
},
"effectiveDateTime": "2008-03-07T17:47:02-05:00",
"encounter": {
"reference": "Encounter/0e9d631c-4407-45e5-bfbe-689806caaf7b"
},
"id": "c6f1b042-a0fc-4bbc-9cd5-7a8a924c00e7",
"issued": "2008-03-07T17:47:02-05:00",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"profile": [
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-observation-Observation"
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"resourceType": "Observation",
"status": "final",
"subject": {
"reference": "Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a"
},
"valueQuantity": {
"code": "mg/dL",
"system": "http://unitsofmeasure.org",
"unit": "mg/dL",
"value": 60
}
},
"search": {
"mode": "match"
}
},
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/ac57b908-2804-4d67-a7ad-1e4a4c3225a1",
"resource": {
"category": [
{
"coding": [
{
"code": "vital-signs",
"system": "http://hl7.org/fhir/observation-category"
}
]
}
],
"code": {
"coding": [
{
"code": "29463-7",
"display": "Body Weight",
"system": "http://loinc.org"
}
],
"text": "Body Weight"
},
"effectiveDateTime": "2008-03-07T17:47:02-05:00",
"encounter": {
"reference": "Encounter/0e9d631c-4407-45e5-bfbe-689806caaf7b"
},
"id": "ac57b908-2804-4d67-a7ad-1e4a4c3225a1",
"issued": "2008-03-07T17:47:02-05:00",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"profile": [
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-observation-Observation",
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-vital-VitalSign",
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-vital-BodyWeight"
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"resourceType": "Observation",
"status": "final",
"subject": {
"reference": "Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a"
},
"valueQuantity": {
"code": "kg",
"system": "http://unitsofmeasure.org",
"unit": "kg",
"value": 121.12557348891558
}
},
"search": {
"mode": "match"
}
}
],
"link": [
{
"relation": "search",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/?subject%3APatient.name=Christopher"
},
{
"relation": "first",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/?subject%3APatient.name=Christopher"
},
{
"relation": "self",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation/?subject%3APatient.name=Christopher"
}
],
"resourceType": "Bundle",
"total": 8,
"type": "searchset"
}
Umgekehrte verkettete Suche
Bei einer umgekehrten verketteten Suche werden Ressourcen basierend auf Kriterien anderer Ressourcen, die auf sie verweisen, abgeglichen. Die Syntax für eine umgekehrte verkettete Suche lautet:
_has:[resource type]:[reference parameter]:[search parameter]=[value]
Die Ressource Appointment hat beispielsweise einen Suchparameter patient, der auf eine Patient-Ressource verweist. Verwenden Sie Patient?_has:Appointment:patient:date=eq2020-04-01, um alle Patient-Ressourcen zu finden, auf die eine Appointment-Ressource mit dem Datum 2020-04-01 verweist.
Umkehrketten können mit anderen Ketten oder Umkehrketten wiederkehrend sein. Practitioner?_has:Encounter:practitioner:_has:Claim:encounter:created=eq2020-04-01 würde beispielsweise mit einem Practitioner P übereinstimmen, wenn es ein Encounter E und ein Claim C gibt, sodass C ein Erstellungsdatum von 2020-04-01 hat, C sich auf E über die Referenz encounter und E auf P über die Referenz practitioner bezieht.
Beispiele für umgekehrte verkettete Suchanfragen
REST
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Ihre Google Cloud -Projekt-ID
- LOCATION: der Speicherort des übergeordneten Datasets
- DATASET_ID: das übergeordnete Dataset des FHIR-Speichers
- FHIR_STORE_ID ist die FHIR-Speicher-ID
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Im folgenden Beispiel wird die Abfrage
Patient?_has:Procedure:patient:date=eq2008-03-07 verwendet.
Führen Sie diesen Befehl aus:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?_has:Procedure:patient:date=eq2008-03-07"
PowerShell
Im folgenden Beispiel wird die Abfrage
Patient?_has:Procedure:patient:date=eq2008-03-07 verwendet.
Führen Sie diesen Befehl aus:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?_has:Procedure:patient:date=eq2008-03-07" | Select-Object -Expand Content
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{
"entry": [
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a",
"resource": {
"address": [
{
"country": "US",
"line": [
"907 Arlo Cliffs",
"Suite 984"
],
"postalCode": "XXXXX"
}
],
"birthDate": "1940-12-01",
"communication": [
{
"language": {
"coding": [
{
"code": "en-US",
"display": "English (United States)",
"system": "urn:ietf:bcp:47"
}
]
}
}
],
"deceasedDateTime": "2009-07-26T12:01:23-05:00",
"extension": [
{
"url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-race",
"valueCodeableConcept": {
"coding": [
{
"code": "2106-3",
"display": "White",
"system": "http://hl7.org/fhir/v3/Race"
}
],
"text": "race"
}
},
{
"url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity",
"valueCodeableConcept": {
"coding": [
{
"code": "2186-5",
"display": "Nonhispanic",
"system": "http://hl7.org/fhir/v3/Ethnicity"
}
],
"text": "ethnicity"
}
},
{
"url": "http://hl7.org/fhir/StructureDefinition/birthPlace",
"valueAddress": {
"city": "Tama",
"country": "US",
"postalCode": "52339",
"state": "Iowa"
}
},
{
"url": "http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName",
"valueString": "Farrah Feeney"
},
{
"url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-birthsex",
"valueCode": "M"
},
{
"url": "http://hl7.org/fhir/StructureDefinition/patient-interpreterRequired",
"valueBoolean": false
},
{
"url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-actor-FictionalPerson-extension",
"valueBoolean": true
},
{
"url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-demographics-FathersName-extension",
"valueHumanName": {
"text": "Christopher Diaz"
}
},
{
"url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-demographics-SocialSecurityNumber-extension",
"valueString": "999-16-9041"
}
],
"gender": "male",
"generalPractitioner": [
{
"reference": "Organization/9fb51c89-1453-406c-8357-578311b43a91"
}
],
"id": "8ac08aa9-63d2-4e81-8647-3a138d7f9f5a",
"identifier": [
{
"system": "https://github.com/synthetichealth/synthea",
"value": "c1ee4b49-3194-4b39-91ed-4d1393a780c6"
},
{
"system": "http://hl7.org/fhir/sid/us-ssn",
"type": {
"coding": [
{
"code": "SB",
"system": "http://hl7.org/fhir/identifier-type"
}
]
},
"value": "999169041"
},
{
"system": "urn:oid:2.16.840.1.113883.4.3.25",
"type": {
"coding": [
{
"code": "DL",
"system": "http://hl7.org/fhir/v2/0203"
}
]
},
"value": "S99992205"
},
{
"system": "http://standardhealthrecord.org/fhir/StructureDefinition/passportNumber",
"type": {
"coding": [
{
"code": "PPN",
"system": "http://hl7.org/fhir/v2/0203"
}
]
},
"value": "X12551631X"
},
{
"system": "http://hospital.smarthealthit.org",
"type": {
"coding": [
{
"code": "MR",
"system": "http://hl7.org/fhir/v2/0203"
}
]
},
"value": "c1ee4b49-3194-4b39-91ed-4d1393a780c6"
}
],
"maritalStatus": {
"coding": [
{
"code": "S",
"system": "http://hl7.org/fhir/v3/MaritalStatus"
}
],
"text": "S"
},
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"profile": [
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-demographics-PersonOfRecord"
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"multipleBirthBoolean": false,
"name": [
{
"family": "Diaz",
"given": [
"Christopher"
],
"prefix": [
"Mr."
],
"use": "official"
}
],
"resourceType": "Patient",
"telecom": [
{
"system": "phone",
"use": "home",
"value": "434-100-2918 x800"
}
],
"text": {
"div": "Generated by Synthea. Version identifier: 2dd4c1c37e2743d14e5073c7b5e42899a3e51531",
"status": "generated"
}
},
"search": {
"mode": "match"
}
}
],
"link": [
{
"relation": "search",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_has%3AProcedure%3Apatient%3Adate=eq2008-03-07"
},
{
"relation": "first",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_has%3AProcedure%3Apatient%3Adate=eq2008-03-07"
},
{
"relation": "self",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_has%3AProcedure%3Apatient%3Adate=eq2008-03-07"
}
],
"resourceType": "Bundle",
"total": 1,
"type": "searchset"
}
Zusätzliche Ressourcen in die Suchergebnisse aufnehmen
Die Parameter _include und _revinclude verlangen, dass die Suchergebnisse zusätzliche Ressourcen ("einschließlich enthaltener Ressourcen") enthalten, die sich auf die Ressourcen beziehen, die direkt mit der Abfrage übereinstimmen ("primäre Ergebnisse"). Die Verwendung dieser Parameter ist effizienter als eine Reihe von Anfragen zum separaten Abrufen dieser zusätzlichen Ressourcen. Im Paket searchset, das von der Suche zurückgegeben wird, werden Ressourcen, die von diesen Parametern hinzugefügt werden, mit entry.search.mode = include gekennzeichnet, um sie von den primären Ergebnissen mit entry.search.mode = match zu unterscheiden.
Durch die voraussehende Aufnahme mit _include werden Ressourcen und Ressourcenversionen hinzugefügt, auf die primäre Ergebnissen verweisen. Die umgekehrte Aufnahme mit _revinclude fügt Ressourcen hinzu, die auf primäre Ergebnisse verweisen. Die zu verfolgende Referenz wird durch den Namen eines Suchparameters angegeben. Auf diese Weise können nur Referenzfelder verwendet werden, die als Suchparameter verfügbar sind.
Die Parameterformate für _include und _revinclude sind identisch und nehmen zwei oder drei durch : getrennte Werte an. Der erste Wert ist der Ressourcentyp, aus dem die Referenz stammt, der zweite Wert ist der Name des Suchparameters. Der optionale dritte Wert beschränkt den Ressourcentyp auf einen einzigen Typ in Fällen, in denen die Referenz auf mehrere Typen verweisen kann.
Beispiel:
MedicationRequest?_include=MedicationRequest:subjectdurchsuchtMedicationRequest-Ressourcen und gibt für jede zurückgegebene Ressource auch das Ziel dersubject-Referenz zurück, das einGroupoderPatientsein kann, wie in der FHIR-Spezifikation definiert.MedicationRequest?_include=MedicationRequest:subject:Patientist ähnlich, gibt jedoch nursubject-Verweise aufPatient-Ressourcen zurück.MedicationRequest?_revinclude=Provenance:targetdurchsuchtMedicationRequest-Ressourcen und gibt für jede zurückgegebene Ressource auch alleProvenance-Ressourcen zurück, wobei dertarget-Verweis aufProvenanceauf die übereinstimmende Ressource verweist.
_include-Suchbeispiele
REST
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Ihre Google Cloud -Projekt-ID
- LOCATION: der Speicherort des übergeordneten Datasets
- DATASET_ID: das übergeordnete Dataset des FHIR-Speichers
- FHIR_STORE_ID ist die FHIR-Speicher-ID
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Im folgenden Beispiel wird die Abfrage
Observation?code=http://loinc.org|2571-8&_include=* verwendet.
Führen Sie diesen Befehl aus:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation?code=http://loinc.org|2571-8&_include=*"
PowerShell
Im folgenden Beispiel wird die Abfrage
Observation?code=http://loinc.org|2571-8&_include=* verwendet.
Führen Sie diesen Befehl aus:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Observation?code=http://loinc.org|2571-8&_include=*" | Select-Object -Expand Content
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{
"entry": [
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a",
"resource": {
"address": [
{
"country": "US",
"line": [
"907 Arlo Cliffs",
"Suite 984"
],
"postalCode": "XXXXX"
}
],
"birthDate": "1940-12-01",
"communication": [
{
"language": {
"coding": [
{
"code": "en-US",
"display": "English (United States)",
"system": "urn:ietf:bcp:47"
}
]
}
}
],
"deceasedDateTime": "2009-07-26T12:01:23-05:00",
"extension": [
{
"url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-race",
"valueCodeableConcept": {
"coding": [
{
"code": "2106-3",
"display": "White",
"system": "http://hl7.org/fhir/v3/Race"
}
],
"text": "race"
}
},
{
"url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-ethnicity",
"valueCodeableConcept": {
"coding": [
{
"code": "2186-5",
"display": "Nonhispanic",
"system": "http://hl7.org/fhir/v3/Ethnicity"
}
],
"text": "ethnicity"
}
},
{
"url": "http://hl7.org/fhir/StructureDefinition/birthPlace",
"valueAddress": {
"city": "Tama",
"country": "US",
"postalCode": "52339",
"state": "Iowa"
}
},
{
"url": "http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName",
"valueString": "Farrah Feeney"
},
{
"url": "http://hl7.org/fhir/us/core/StructureDefinition/us-core-birthsex",
"valueCode": "M"
},
{
"url": "http://hl7.org/fhir/StructureDefinition/patient-interpreterRequired",
"valueBoolean": false
},
{
"url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-actor-FictionalPerson-extension",
"valueBoolean": true
},
{
"url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-demographics-FathersName-extension",
"valueHumanName": {
"text": "Christopher Diaz"
}
},
{
"url": "http://standardhealthrecord.org/fhir/StructureDefinition/shr-demographics-SocialSecurityNumber-extension",
"valueString": "999-16-9041"
}
],
"gender": "male",
"generalPractitioner": [
{
"reference": "Organization/9fb51c89-1453-406c-8357-578311b43a91"
}
],
"id": "8ac08aa9-63d2-4e81-8647-3a138d7f9f5a",
"identifier": [
{
"system": "https://github.com/synthetichealth/synthea",
"value": "c1ee4b49-3194-4b39-91ed-4d1393a780c6"
},
{
"system": "http://hl7.org/fhir/sid/us-ssn",
"type": {
"coding": [
{
"code": "SB",
"system": "http://hl7.org/fhir/identifier-type"
}
]
},
"value": "999169041"
},
{
"system": "urn:oid:2.16.840.1.113883.4.3.25",
"type": {
"coding": [
{
"code": "DL",
"system": "http://hl7.org/fhir/v2/0203"
}
]
},
"value": "S99992205"
},
{
"system": "http://standardhealthrecord.org/fhir/StructureDefinition/passportNumber",
"type": {
"coding": [
{
"code": "PPN",
"system": "http://hl7.org/fhir/v2/0203"
}
]
},
"value": "X12551631X"
},
{
"system": "http://hospital.smarthealthit.org",
"type": {
"coding": [
{
"code": "MR",
"system": "http://hl7.org/fhir/v2/0203"
}
]
},
"value": "c1ee4b49-3194-4b39-91ed-4d1393a780c6"
}
],
"maritalStatus": {
"coding": [
{
"code": "S",
"system": "http://hl7.org/fhir/v3/MaritalStatus"
}
],
"text": "S"
},
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"profile": [
"http://standardhealthrecord.org/fhir/StructureDefinition/shr-demographics-PersonOfRecord"
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"multipleBirthBoolean": false,
"name": [
{
"family": "Diaz",
"given": [
"Christopher"
],
"prefix": [
"Mr."
],
"use": "official"
}
],
"resourceType": "Patient",
"telecom": [
{
"system": "phone",
"use": "home",
"value": "434-100-2918 x800"
}
],
"text": {
"div": "Generated by Synthea. Version identifier: 2dd4c1c37e2743d14e5073c7b5e42899a3e51531",
"status": "generated"
}
},
"search": {
"mode": "match"
}
}
],
"link": [
{
"relation": "search",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_has%3AProcedure%3Apatient%3Adate=eq2008-03-07"
},
{
"relation": "first",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_has%3AProcedure%3Apatient%3Adate=eq2008-03-07"
},
{
"relation": "self",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_has%3AProcedure%3Apatient%3Adate=eq2008-03-07"
}
],
"resourceType": "Bundle",
"total": 1,
"type": "searchset"
}
Der Modifikator :iterate bewirkt, dass ein _include iterativ ausgewertet wird.
Dieser Modifikator kann einer zusätzlichen Ebene von Referenzen aus eingeschlossenen Ergebnissen folgen oder rekursiven Strukturen folgen, beispielsweise Observation:derived-from, die auf eine andere Observation verweisen.
Die Rekursionstiefe ist auf zwei Ebenen begrenzt: die oberste Ebene und zwei Unterebenen. Angenommen, Sie haben die folgende Abfolge von Referenzen:
- Eine Patientenressource, die über das Feld
Patient.generalPractitionerauf eine PractitionerRole-Ressource verweist. - Die PractitionerRole-Ressource verweist über das Feld
PractitionerRole.practitionerauf eine Practitioner-Ressource. - Die Ressource „Practitioner“ verweist über das Feld
Practitioner.qualification.issuerauf eine Organisationsressource.
Das folgende Beispiel zeigt die Reihenfolge der Referenzen. Die Organisationsressource auf Ebene 3 ist nicht in den Suchergebnissen enthalten, da sie das maximale Limit von zwei Ebenen überschreitet.
Patient (Level 0)
- Patient.generalPractitioner -> PractitionerRole (Level 1)
- PractitionerRole.practitioner -> Practitioner (Level 2)
- Practitioner.organization -> Organization (Level 3)
Die folgenden zusätzlichen Beispiele beschreiben das Verhalten des Modifikators :iterate:
Observation?_include:iterate=Observation:derived-from:ObservationdurchsuchtObservation-Ressourcen und folgt rekursiv der abgeleiteten Referenz aus übereinstimmendenObservation-Ressourcen und dann aus eingeschlossenen Ressourcen.MedicationRequest?_revinclude=Provenance:target&_include:iterate=Provenance:agentdurchsuchtMedicationRequest-Ressourcen, schließtProvenance-Ressourcen mit einemtargetein, das in dieser Ergebnismenge enthalten ist, und schließt dann Ressourcen ein, auf die über den ParameteragentdieserProvenance-Ressourcen verwiesen wird.
Der Platzhalter * gibt an, dass alle in Form von Suchparametern verfügbaren Verweise enthalten sein sollen. Sie können den Platzhalter * als erstes und einziges Argument in _include oder anstelle des Suchparameternamens aus dem Standard-_include verwenden, in dem der optionale dritte Wert angegeben wird. Dieser beschränkt den Ressourcentyp auf einen einzelnen Typ wie im ursprünglichen Verhalten.
Beispiel:
Observation?_include=*durchsuchtObservation-Ressourcen und gibt für jede Ressource auch alle referenzierten Ressourcen zurück.Observation?_include=Observation:*entspricht dem obigen Vorgehen.MedicationRequest?_include=MedicationRequest:*:Patientgibt alle Verweise aufPatient-Ressourcen für jedeMedicationRequest-Ressource zurück.
Der Server dedupliziert Ressourcen, sodass jede Ergebnisseite nur eine Kopie der Ressource enthält, auch wenn die Ressource in mehreren Referenzen vorkommt. Auf jeder Ergebnisseite, auf die sich ein primäres Ergebnis bezieht, wird dieselbe eingeschlossene Ressource angezeigt.
Anzahl der enthaltenen Ressourcen verwalten
Beachten Sie Folgendes zu zusätzlichen Ressourcen, die mit den Parametern _include und _revinclude eingefügt werden:
Eingeschlossene Ressourcen werden nicht auf die Seitengröße angerechnet. Sie werden nicht in
Bundle.totalgezählt und können dazu führen, dass die Anzahl der zurückgegebenen Ressourcen größer als der angegebene_count-Parameter ist.Da enthaltene Ressourcen nicht auf die Seitengröße angerechnet werden, sollten Sie mit
_include- und_revinclude-Parametern, die viele Ergebnisse liefern können, vorsichtig sein. Große Ergebnisgrößen können zu Zeitüberschreitungen oder Fehlern führen. Sie sollten einen kleineren_count-Wert verwenden, um die Anzahl der primären Ergebnisse zu begrenzen, wenn Sie viele eingeschlossene Ergebnisse erwarten. Folgen Sie nicht einer 1-zu-N-Beziehung, bei denen die „viele“-Seite der Beziehung nicht begrenzt ist.Mit einem einzelnen
_revinclude-Parameter werden höchstens 100 zusätzliche Ressourcen hinzugefügt. Wenn in Anwendungsfällen mehr als 100 Ressourcen auf die primären Ergebnisse verweisen, haben Sie folgende Möglichkeiten:- Verwenden Sie eine separate Suchanfrage mit Seitengrößen- und Paginierungsparametern, um mehr Ergebnisse abzurufen.
Beginnen Sie die Suche mit den enthaltenen Ressourcen:
Angenommen, eine Encounter-Ressource mit der ID
1234hat Hunderte von Observation-Ressourcen. Wenn Sie mit_revinclude(beginnend mit dem Encounter) nach diesen Observation-Ressourcen suchen, wird eine Antwort zurückgegeben, die das Limit von 100 zusätzlichen Ressourcen überschreitet:fhir/Encounter?_id=123&_revinclude=Observation:encounterSuchen Sie stattdessen nach Beobachtungsressourcen und schließen Sie den zugehörigen Encounter mit
_includeein:fhir/Observation?encounter=123&_include=Observation:encounterBei diesem Ansatz werden Beobachtungsressourcen so gefiltert, dass nur die Ressourcen abgerufen werden, die sich auf den Encounter beziehen. Die Encounter-Ressource wird nur einmal abgerufen.
Die in den Suchergebnissen zurückgegebenen Felder einschränken
Mit dem Parameter _elements kann der Client anfordern, dass für jedes Suchergebnis nur eine Teilmenge von Feldern zurückgegeben wird. Auf diese Weise wird durch Weglassen von unnötigen Daten die Größe der Antwort reduziert. Der Parameter akzeptiert eine durch Kommas getrennte Liste von Basiselementnamen in der Ressource, z. B. Patient?_elements=identifier,contact,link. Nur diese Felder und deren untergeordneten Elemente werden in den zurückgegebenen Ressourcen berücksichtigt. Ressourcen in der Antwort, die von diesem Parameter geändert wurden, enthalten einen meta.tag-Wert von SUBSETTED, um anzugeben, dass sie unvollständig sind.
_elements-Suchbeispiele
REST
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Ihre Google Cloud -Projekt-ID
- LOCATION: der Speicherort des übergeordneten Datasets
- DATASET_ID: das übergeordnete Dataset des FHIR-Speichers
- FHIR_STORE_ID ist die FHIR-Speicher-ID
Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:
curl
Im folgenden Beispiel wird die Abfrage
Patient?_elements=identifier,contact,link verwendet.
Führen Sie diesen Befehl aus:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?_elements=identifier,contact,link"
PowerShell
Im folgenden Beispiel wird die Abfrage
Patient?_elements=identifier,contact,link verwendet.
Führen Sie diesen Befehl aus:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient?_elements=identifier,contact,link" | Select-Object -Expand Content
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{
"entry": [
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/patient3",
"resource": {
"id": "patient3",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"tag": [
{
"code": "SUBSETTED",
"system": "http://hl7.org/fhir/v3/ObservationValue"
}
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"resourceType": "Patient"
},
"search": {
"mode": "match"
}
},
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/patient2",
"resource": {
"id": "patient2",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"tag": [
{
"code": "SUBSETTED",
"system": "http://hl7.org/fhir/v3/ObservationValue"
}
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"resourceType": "Patient"
},
"search": {
"mode": "match"
}
},
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/8ac08aa9-63d2-4e81-8647-3a138d7f9f5a",
"resource": {
"id": "8ac08aa9-63d2-4e81-8647-3a138d7f9f5a",
"identifier": [
{
"system": "https://github.com/synthetichealth/synthea",
"value": "c1ee4b49-3194-4b39-91ed-4d1393a780c6"
},
{
"system": "http://hl7.org/fhir/sid/us-ssn",
"type": {
"coding": [
{
"code": "SB",
"system": "http://hl7.org/fhir/identifier-type"
}
]
},
"value": "999169041"
},
{
"system": "urn:oid:2.16.840.1.113883.4.3.25",
"type": {
"coding": [
{
"code": "DL",
"system": "http://hl7.org/fhir/v2/0203"
}
]
},
"value": "S99992205"
},
{
"system": "http://standardhealthrecord.org/fhir/StructureDefinition/passportNumber",
"type": {
"coding": [
{
"code": "PPN",
"system": "http://hl7.org/fhir/v2/0203"
}
]
},
"value": "X12551631X"
},
{
"system": "http://hospital.smarthealthit.org",
"type": {
"coding": [
{
"code": "MR",
"system": "http://hl7.org/fhir/v2/0203"
}
]
},
"value": "c1ee4b49-3194-4b39-91ed-4d1393a780c6"
}
],
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"tag": [
{
"code": "SUBSETTED",
"system": "http://hl7.org/fhir/v3/ObservationValue"
}
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"resourceType": "Patient"
},
"search": {
"mode": "match"
}
},
{
"fullUrl": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/patient1",
"resource": {
"id": "patient1",
"meta": {
"lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
"tag": [
{
"code": "SUBSETTED",
"system": "http://hl7.org/fhir/v3/ObservationValue"
}
],
"versionId": "MTYzMTgyMTExMDIyMDk5ODAwMA"
},
"resourceType": "Patient"
},
"search": {
"mode": "match"
}
}
],
"link": [
{
"relation": "search",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_elements=identifier%2Ccontact%2Clink"
},
{
"relation": "first",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_elements=identifier%2Ccontact%2Clink"
},
{
"relation": "self",
"url": "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/?_elements=identifier%2Ccontact%2Clink"
}
],
"resourceType": "Bundle",
"total": 4,
"type": "searchset"
}
Die Cloud Healthcare API unterstützt den Parameter _summary, der vordefinierte Teilmengen von Ressourcenfeldern wie _elements bereitstellt, eingeschränkt:
_summary=textgibt nur die Felder der obersten Ebenetext,idundmetazurück._summary=dataentfernt das Feldtextund gibt alle anderen Felder zurück.