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
enableUpdateCreate
auftrue
. - Legen Sie
version
auf 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:
:contains
gleicht Ressourcen mit dem angegebenen Wert an einer beliebigen Stelle im String ab, beispielsweise stimmtname:contains=eve
mitEvelyn
undSeverine
überein.:exact
entspricht dem gesamten String einschließlich Groß- und Kleinschreibung, z. B.name:exact=Eve
stimmt nicht miteve
oderEvelyn
ü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 voneq
gt
: 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 voneq
gt
: 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 angegebenensystem
als auch mitcode
übereinstimmen.[parameter]=|[code]
stimmt mitcode
überein, wenn der Wertsystem
leer ist[parameter]=[system]|
entspricht einem beliebigencode
mit dem angegebenensystem
-Wert
Es gibt mehrere Modifikatoren, die alternative Tokensuchfunktionen auslösen:
:not
negiert die übereinstimmenden Bedingungen einer Tokensuche:text
führt eine String-Suche (keine exakte Übereinstimmung) im Feldtext
oderdisplay
durch, das mit dem Code verknüpft ist, und sucht nicht nach dem Codewert selbst:above
verwendet 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 angegebenesystem
im FHIR-Speicher alsCodeSystem
-Ressource vorhanden sein.:below
entspricht:above
, stimmt aber überein, wenn der Code in der Ressource vom Abfrageparameter subsumiert wird.:in
verwendet 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-in
negiert 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 xyz
entspricht beispielsweise einer Ressource, diexyz
und einen oder mehrere vonabc
def
ghi
enthält.-
ist der NOT-Operator, z. B. entsprichtabc -def
einer Ressource, dieabc
enthält, aber nichtdef
enthä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:subject
durchsuchtMedicationRequest
-Ressourcen und gibt für jede zurückgegebene Ressource auch das Ziel dersubject
-Referenz zurück, das einGroup
oderPatient
sein kann, wie in der FHIR-Spezifikation definiert.MedicationRequest?_include=MedicationRequest:subject:Patient
ist ähnlich, gibt jedoch nursubject
-Verweise aufPatient
-Ressourcen zurück.MedicationRequest?_revinclude=Provenance:target
durchsuchtMedicationRequest
-Ressourcen und gibt für jede zurückgegebene Ressource auch alleProvenance
-Ressourcen zurück, wobei dertarget
-Verweis aufProvenance
auf 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 begrenzt.
Beispiel:
Observation?_include:iterate=Observation:derived-from:Observation
durchsuchtObservation
-Ressourcen und folgt rekursiv der abgeleiteten Referenz aus übereinstimmendenObservation
-Ressourcen und dann aus eingeschlossenen Ressourcen usw.MedicationRequest?_revinclude=Provenance:target&_include:iterate=Provenance:agent
durchsuchtMedicationRequest
, schließtProvenance
-Ressourcen mit einemtarget
ein, das in dieser Ergebnismenge enthalten ist, und schließt dann Ressourcen ein, auf die über den Parameteragent
dieserProvenance
-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:*:Patient
gibt 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 erscheint. Auf jeder Ergebnisseite, auf die sich ein primäres Ergebnis bezieht, wird dieselbe eingeschlossene Ressource angezeigt.
Anzahl der enthaltenen Ressourcen verwalten
Beachten Sie Folgendes bei zusätzlichen Ressourcen, die mit den Parametern _include
und _revinclude
eingeschlossen werden:
Eingeschlossene Ressourcen werden nicht auf die Seitengröße angerechnet. Sie werden nicht in
Bundle.total
gezä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 Ergebnismengen 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. Bei Anwendungsfällen, in denen 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.
Starten Sie die Suche mit den enthaltenen Ressourcen:
Angenommen, eine Begegnungsressource mit der ID
1234
hat Hunderte von Beobachtungsressourcen. Wenn Sie mit_revinclude
nach diesen Beobachtungsressourcen suchen (beginnend mit dem Arzttermin), wird eine Antwort zurückgegeben, die das Limit von 100 zusätzlichen Ressourcen überschreitet:fhir/Encounter?_id=123&_revinclude=Observation:encounter
Suchen Sie stattdessen nach Beobachtungsressourcen und schließen Sie die zugehörige Begegnung mit
_include
ein:fhir/Observation?encounter=123&_include=Observation:encounter
Bei diesem Ansatz werden Beobachtungsressourcen nur auf solche gefiltert, die sich auf die Begegnung beziehen, und die Begegnungsressource 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=text
gibt nur die Felder der obersten Ebenetext
,id
undmeta
zurück._summary=data
entfernt das Feldtext
und gibt alle anderen Felder zurück.