FHIR-Profile konfigurieren

FHIR-Implementierungsleitfäden und -profile sorgen dafür, dass Ressourcen in einem FHIR-Speicher bestimmten definierten Kriterien entsprechen. Beispiele für Implementierungsleitfäden den US Core Implementation Guide 4.0.0 aufnehmen. und den Implementierungsleitfaden für Carin Blue Button.

Auf dieser Seite wird erläutert, wie Sie Implementierungsleitfäden und -profile in R4-FHIR-Speichern mit dem US Core Implementation Guide 4.0.0 definieren, konfigurieren und verwenden.

Überblick

FHIR-Profile sind eine Reihe zusätzlicher Regeln, die auf der Basis der FHIR-Spezifikation definiert sind, um die Verarbeitung von Ressourcen durch verschiedene Gesundheitssysteme zu verarbeiten. Sie können FHIR-Profile in einen FHIR-Speicher importieren und dort aktivieren, um sicherzustellen, dass alle Ressourcen in einem FHIR-Speicher bestimmte Kriterien in Sachen Ressourcenstruktur und erfasster Informationen erfüllen.

Strukturdefinitionen und Implementierungsleitfäden

Sie können FHIR-Profile für Ihren FHIR-Speicher importieren, indem Sie eine oder mehrere Strukturdefinitionen zusammengefasst in einen oder mehrere Implementierungsleitfäden einfügen. Verwenden Sie eine Strukturdefinition, um Folgendes zu tun:

  • Definieren Sie die Einschränkung für ein Feld in einer FHIR-Ressource.
  • Wertsätze referieren, die Codesysteme und FHIR-Ressourcen verknüpfen.

Implementierungsleitfäden mit Strukturdefinitionen dienen dazu, Ressourcen zu validieren, damit sie mit dem Anwendungsfall Ihrer Drittanbieter-Software übereinstimmen.

Angenommen, Ihre Drittanbieter-Software muss den Richtlinien zur Medicare & Interoperabilität von Medicaid Services (CMS) und Patientenzugriff (endgültig) Regel in den USA. Ihre Drittanbieter-Software müsste eine Patient Access API bereitstellen, die den CARIN-Profilen entspricht. Sie können die CARIN-Implementierungsanleitung in Ihren FHIR-Speicher importieren und aktivieren, um die Ressourcen mit den CARIN-Profilen abzugleichen. Leitfäden zum Importieren und Aktivieren finden Sie in den nachfolgenden Abschnitten auf dieser Seite.

Nachdem Sie den Implementierungsleitfaden importiert haben, können Sie ihn in Ihrem FHIR-Speicher für die Validierung der FHIR-Ressourcen aktivieren. Wenn eine FHIR-Ressource aktualisiert oder dem Speicher hinzugefügt wird, prüft die Cloud Healthcare API, ob sie mit einer Strukturdefinition im Implementierungsleitfaden übereinstimmt. Wenn die FHIR-Ressource übereinstimmt, wird die FHIR-Ressource dem Speicher hinzugefügt. Wenn die FHIR-Ressource nicht den Strukturdefinitionen im Implementierungsleitfaden entspricht, wird eine Fehlermeldung zurückgegeben und die FHIR-Ressource wird abgelehnt.

Erzwingung der Datenvalidierung

Die Cloud Healthcare API erzwingt die Datenvalidierung, wenn folgende Methoden verwendet werden:

Workflow zur Profilvalidierung

Das folgende Diagramm zeigt den Validierungsworkflow zum Hinzufügen oder Aktualisieren von FHIR-Ressourcen:

fhir-Profile

FHIR-Profile definieren

In den folgenden Abschnitten wird beschrieben, wie Sie Strukturdefinitionen aus Ihrer Drittanbieter-Software herunterladen und einen Implementierungsleitfaden konfigurieren.

Ressourcen zur Profilvalidierung herunterladen

Damit Ihre Strukturdefinitionen mit Ihrer autoritativen Quelle übereinstimmen, müssen Sie zum Herunterladen der Ressourcen zur Profilvalidierung, z. B. Strukturdefinitionen, Implementierungsleitfäden oder Wertesätze aus einer externen Quelle wie Registry für Implementierungsleitfaden von FHIR.org Externe Quellen enthalten ein Paket, das alle Wertesätze, Profile, Erweiterungen, eine Liste mit Seiten und URLs für jeden Implementierungsleitfaden enthält.

Wenn Ihr System beispielsweise die US Core Patientenprofil zu erstellen, können Sie Strukturdefinitionen und Leitfaden, der von US Core verwendet wird.

Die Cloud Healthcare API ermöglicht die Validierung der folgenden Arten von Strukturdefinitionsregeln:

  • slicing mit Unterstützung der folgenden Diskriminatoren:
    • value
    • pattern
    • profile
  • min/max
  • type
  • fixed
  • pattern
  • minValue
  • maxValue
  • maxLength
  • binding, mit Ausnahme der folgenden Regeln:
    • ValueSet.compose.include.filter
    • ValueSet.compose.exclude

Implementierungsleitfaden konfigurieren

Nachdem Sie die Strukturdefinitionen, den Implementierungsleitfaden und den Wertsatz heruntergeladen haben, müssen Sie die Profile hinzufügen, die der Implementierungsleitfaden zum Prüfen von FHIR-Ressourcen nutzt.

So konfigurieren Sie den Implementierungsleitfaden:

  1. Öffnen Sie die Datei mit dem Implementierungsleitfadens, die Sie von Ihrem Softwareanbieter heruntergeladen haben.

  2. Fügen Sie den folgenden Abschnitt hinzu, um die Strukturdefinitionen anzugeben, die Sie in Ihrem Implementierungsleitfaden validieren möchten:

    {
        "resourceType": "ImplementationGuide",
        ...
        "global": [
            {
            "type": "RESOURCE_TYPE",
            "profile": "STRUCTURE_DEFINITION_URL"
            }
        ]
        ...
    }

    Dabei gilt:

    • RESOURCE_TYPE definiert den Ressourcentyp, auf den der Implementierungsleitfaden angewendet wird.
    • STRUCTURE_DEFINITION_URL ist die URL zur Definition der Quellstruktur des Profils, z. B. das US Core-Patientenprofil.
  3. Speichern Sie die Datei mit dem Implementierungsleitfaden.

    Das folgende Beispiel zeigt die Patienten- und Organisationsprofile, die für den US Core-Implementierungsleitfaden aktiviert sind:

    "global":[
      {
        "type":"Patient",
        "profile":"https://hl7.org/fhir/us/core/StructureDefinition/us-core-patient"
      },
      {
        "type":"Organization",
        "profile":"https://hl7.org/fhir/us/core/StructureDefinition/us-core-organization"
      },
      ...
    ]
    

Implementierungsleitfaden in Cloud Storage hochladen

Nachdem Sie Ihren Implementierungsleitfaden bearbeitet haben, müssen Sie folgende Dateien in Cloud Storage hochladen:

  • Implementierungsleitfaden
  • Strukturdefinitionen
  • Wertesätze

Nach dem Hochladen können Sie diese Dateien verwenden, um Ressourcen in Ihrem FHIR-Speicher zu validieren.

So laden Sie Ihren Implementierungsleitfaden in Cloud Storage hoch:

  1. Löschen Sie alle Dateien aus dem Implementierungsleitfaden, die nicht von FHIR-Profilen in der Cloud Healthcare API verwendet werden.

    Wenn Sie beispielsweise den US Core-Implementierungsleitfaden implementieren, können Sie die folgenden Dateien löschen:

    • .DS_Store
    • ig-r4.json
    • openapi/.index.json
    • package.json
  2. Führen Sie die folgenden Befehle aus, um den Implementierungsleitfaden, Strukturdefinitionen und Wertsätze in Cloud Storage hinzuzufügen:

    gcloud storage cp \
       PATH_TO_IMPLEMENTATION_GUIDE \
       gs://BUCKET/IMPLEMENTATION_GUIDE_DIRECTORY \
       --recursive

    Dabei gilt:

    • PATH_TO_IMPLEMENTATION_GUIDE ist der Pfad zum Implementierungsleitfaden auf Ihrem lokalen Computer
    • BUCKET/IMPLEMENTATION_GUIDE_DIRECTORY ist der Bucket und das Verzeichnis, in dem Sie den Implementierungsleitfaden in Cloud Storage speichern

Implementierungsleitfaden importieren

So verwenden Sie den Implementierungsleitfaden zum Validieren von Profilen in Ihrem FHIR-Speicher: als FHIR-Ressource in Ihren FHIR-Speicher importieren.

Folgende Beispiele zeigen, wie Sie den Implementierungsleitfaden in einen FHIR-Speicher importieren:

gcloud

Führen Sie den gcloud healthcare fhir-stores import gcs-Befehl aus, um Ihren Implementierungsleitfaden als Ressource einem FHIR-Speicher hinzuzufügen:

gcloud healthcare fhir-stores import gcs FHIR_STORE_ID \
  --dataset=DATASET_ID \
  --gcs-uri='gs://BUCKET/IMPLEMENTATION_GUIDE_DIRECTORY/*' \
  --content-structure=resource-pretty

Dabei gilt:

  • FHIR_STORE_ID ist die FHIR-Speicher-ID
  • DATASET_ID: Die Dataset-ID
  • BUCKET/IMPLEMENTATION_GUIDE_DIRECTORY ist der Speicherort des Implementierungsleitfadens in einem Cloud Storage-Bucket

Die Ausgabe sieht so aus:

Request issued for: [FHIR_STORE_ID]
Waiting for operation [OPERATION_ID] to complete...done.
name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID

In dieser Ausgabe gilt:

  • PROJECT_ID, LOCATION, DATASET_ID sind die Werte, die Sie im Methodenaufruf angegeben haben
  • OPERATION_ID ist eine Kennung für den lang andauernden Vorgang, von der Cloud Healthcare API bereitgestellt

Führen Sie den Befehl gcloud healthcare operations describe aus und geben Sie OPERATION_ID aus der Antwort an, um weitere Details des Vorgangs anzuzeigen:

gcloud healthcare operations describe OPERATION_ID \
  --dataset=DATASET_ID

Die Ausgabe sieht so aus: Wenn die Antwort done: true enthält, ist der Vorgang abgeschlossen. Ist dies nicht der Fall, wird der Vorgang noch ausgeführt. Warten Sie einige Sekunden und rufen Sie dann den Befehl gcloud healthcare operations describe noch einmal auf.

done: true
metadata:
  '@type': type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata
  apiMethodName: google.cloud.healthcare.v1.fhir.FhirService.ImportResources
  createTime: 'CREATE_TIME'
  endTime: 'END_TIME'
name: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID
response:
  '@type': type.googleapis.com/google.cloud.healthcare.v1.fhir.rest.ImportResourcesResponse
  fhirStore: projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID

API

curl

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    --data '{
      "contentStructure": "RESOURCE_PRETTY",
      "gcsSource": {
        "uri": "gs://BUCKET/IMPLEMENTATION_GUIDE_DIRECTORY/*"
      }
    }' "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:import"

Dabei gilt:

  • BUCKET/IMPLEMENTATION_GUIDE_DIRECTORY ist der Speicherort des Implementierungsleitfadens in einem Cloud Storage-Bucket
  • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
  • LOCATION ist der Standort des Datasets
  • DATASET_ID ist die Dataset-ID
  • FHIR_STORE_ID ist die FHIR-Speicher-ID

Die Antwort lautet:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
}

In dieser Ausgabe gilt:

  • PROJECT_ID, LOCATION, DATASET_ID sind die Werte, die Sie im Methodenaufruf angegeben haben
  • OPERATION_ID ist eine Kennung für den lang andauernden Vorgang, von der Cloud Healthcare API bereitgestellt

Mit der Methode operations.get können Sie den Status des Vorgangs verfolgen:

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"

Dabei gilt:

  • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
  • LOCATION ist der Standort des Datasets
  • DATASET_ID ist die Dataset-ID
  • FHIR_STORE_ID ist die FHIR-Speicher-ID
  • OPERATION_ID ist die ID, die vom lang andauernden Vorgang zurückgegeben wurde

Die Ausgabe sieht so aus: Wenn die Antwort "done": true enthält, ist der Vorgang abgeschlossen. Ist dies nicht der Fall, wird der Vorgang noch ausgeführt. Warten Sie einige Sekunden und rufen Sie dann die Methode operations.get noch einmal auf.

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
    "apiMethodName": "google.cloud.healthcare.v1.fhir.FhirService.ImportResources",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME",
    "logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL",
    "counter": {
      "success": "SUCCESS_COUNT"
    }
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.fhir.rest.ImportResourcesResponse",
  }
}

PowerShell

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-WebRequest `
  -Method Post `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body '{
    "contentStructure": "RESOURCE_PRETTY",
    "gcsSource": {
      "uri": "gs://BUCKET/IMPLEMENTATION_GUIDE_DIRECTORY/*"
    }
  }' `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:import" | Select-Object -Expand Content

Dabei gilt:

  • BUCKET/IMPLEMENTATION_GUIDE_DIRECTORY ist der Speicherort des Implementierungsleitfadens in einem Cloud Storage-Bucket
  • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
  • LOCATION ist der Standort des Datasets
  • DATASET_ID ist die Dataset-ID
  • FHIR_STORE_ID ist die FHIR-Speicher-ID

Die Antwort lautet:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
}

In dieser Ausgabe gilt:

  • PROJECT_ID, LOCATION, DATASET_ID sind die Werte, die Sie im Methodenaufruf angegeben haben
  • OPERATION_ID ist eine Kennung für den lang andauernden Vorgang, von der Cloud Healthcare API bereitgestellt

Mit der Methode operations.get können Sie den Status des Vorgangs verfolgen:

$cred = gcloud auth application-default 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/operations/OPERATION_ID" | Select-Object -Expand Content

Dabei gilt:

  • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
  • LOCATION ist der Standort des Datasets
  • DATASET_ID ist die Dataset-ID
  • FHIR_STORE_ID ist die FHIR-Speicher-ID
  • OPERATION_ID ist die ID, die vom lang andauernden Vorgang zurückgegeben wurde

Die Ausgabe sieht so aus: Wenn die Antwort "done": true enthält, ist der Vorgang abgeschlossen. Ist dies nicht der Fall, wird der Vorgang noch ausgeführt. Warten Sie einige Sekunden und rufen Sie dann die Methode operations.get noch einmal auf.

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.OperationMetadata",
    "apiMethodName": "google.cloud.healthcare.v1.fhir.FhirService.ImportResources",
    "createTime": "CREATE_TIME",
    "endTime": "END_TIME",
    "logsUrl": "https://console.cloud.google.com/logs/query/CLOUD_LOGGING_URL",
    "counter": {
      "success": "SUCCESS_COUNT"
    }
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.healthcare.v1.fhir.rest.ImportResourcesResponse",
  }
}

Abhängigkeiten der Implementierung hochladen und importieren

Bevor Sie den Implementierungsleitfaden aktivieren können, müssen Sie prüfen, ob alle Abhängigkeiten des Leitfadens hochgeladen und importiert wurden. Abhängigkeiten werden durch den Parameter dependsOn im Implementierungsleitfaden so definiert:

"dependsOn":[
  {
    "id":"hl7_fhir_uv_bulkdata",
    "uri":"http://hl7.org/fhir/uv/bulkdata/ImplementationGuide/hl7.fhir.uv.bulkdata",
    "packageId":"hl7.fhir.uv.bulkdata",
    "version":"1.0.1"
  },
  {
    "id":"vsac",
    "uri":"http://fhir.org/packages/us.nlm.vsac/ImplementationGuide/us.nlm.vsac",
    "packageId":"us.nlm.vsac",
    "version":"0.3.0"
  }
]

Folgen Sie der Anleitung unter Implementierungsleitfaden in Cloud Storage hochladen bzw. Implementierungsleitfaden importieren, um Abhängigkeiten hochzuladen und zu importieren.

Implementierungsleitfaden aktivieren

Wenn Sie eine Implementierungsleitfadenressource zum Validieren von Profilen verwenden möchten, müssen Sie den Implementierungsleitfaden aktivieren. Wenn Sie mehrere Implementierungsleitfäden aktivieren, versucht die Cloud Healthcare API, Profile anhand aller Implementierungsleitfäden zu validieren. Eine FHIR-Ressource muss nur einem der aktivierten Profile entsprechen Implementierungsleitfaden.

Die Cloud Healthcare API validiert Implementierungsleitfäden nur, wenn Sie sie aktivieren. Wenn Sie einen Implementierungsleitfaden ändern und wieder aktivieren, validiert die Cloud Healthcare API den geänderten Implementierungsleitfaden.

Wenn Sie einen Implementierungsleitfaden entfernen, nachdem er aktiviert wurde, ist der Implementierungsleitfaden nicht mehr wirksam.

In folgenden Beispielen wird gezeigt, wie Sie Ihren Implementierungsleitfaden zur Profilvalidierung für einen vorhandenen FHIR-Speicher aktivieren:

curl

Stellen Sie zum Aktivieren des Implementierungsleitfadens eine PATCH-Anfrage und geben Sie folgenden Informationen an:

  • Name und Speicherort des übergeordneten Datasets
  • Der Name des FHIR-Speichers
  • Das enabledImplementationGuides-Feld, das auf den Pfad zu Ihrer Ressource für den Implementierungsleitfaden festgelegt ist

Das folgende Beispiel zeigt eine PATCH-Anfrage mit curl.

curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/fhir+json; charset=utf-8" \
    --data '{
      "validationConfig": {
          "enabledImplementationGuides": ["IMPLEMENTATION_GUIDE_URL"],
          "disableProfileValidation": false
      }
    }' "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID?updateMask=validationConfig"

Ersetzen Sie Folgendes:

  • IMPLEMENTATION_GUIDE_URL: die URL, die im Attribut url der ImplementationGuide-Ressource definiert ist, z. B. http://hl7.org/fhir/us/core/ImplementationGuide/hl7.fhir.us.core
  • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
  • LOCATION ist der Standort des Datasets
  • DATASET_ID ist die Dataset-ID
  • FHIR_STORE_ID ist die FHIR-Speicher-ID

Die Antwort lautet:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID",
  "validationConfig": {
    "enabledImplementationGuides": ["IMPLEMENTATION_GUIDE_URL"]
  }
}

PowerShell

Stellen Sie zum Aktivieren des Implementierungsleitfadens eine PATCH-Anfrage und geben Sie folgenden Informationen an:

  • Name und Speicherort des übergeordneten Datasets
  • Der Name des FHIR-Speichers
  • Das enabledImplementationGuides-Feld, das auf den Pfad zu Ihrer Ressource für den Implementierungsleitfaden festgelegt ist

Das folgende Beispiel zeigt eine PATCH-Anfrage mit Windows PowerShell.

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-WebRequest `
  -Method Patch `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body '{
      "validationConfig": {
          "enabledImplementationGuides": ["IMPLEMENTATION_GUIDE_URL"]
      }
  }' `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID?updateMask=validationConfig" | Select-Object -Expand Content

Ersetzen Sie Folgendes:

  • IMPLEMENTATION_GUIDE_URL: die URL, die im Attribut url der ImplementationGuide-Ressource definiert ist, z. B. http://hl7.org/fhir/us/core/ImplementationGuide/hl7.fhir.us.core
  • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
  • LOCATION ist der Standort des Datasets
  • DATASET_ID ist die Dataset-ID
  • FHIR_STORE_ID ist die FHIR-Speicher-ID

Die Antwort lautet:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID",
  "validationConfig": {
    "enabledImplementationGuides": ["IMPLEMENTATION_GUIDE_URL"],
  },
}

Python

def enable_implementation_guide(
    project_id,
    location,
    dataset_id,
    fhir_store_id,
    implementation_guide_url,
):
    """
    Patches an existing FHIR store to enable an ImplementationGuide resource
    that exists in the FHIR store.

    See https://github.com/GoogleCloudPlatform/python-docs-samples/tree/main/healthcare/api-client/v1/fhir
    before running the sample."""
    # Imports the Google API Discovery Service.
    from googleapiclient import discovery

    api_version = "v1"
    service_name = "healthcare"
    # Instantiates an authorized API client by discovering the Healthcare API
    # and using GOOGLE_APPLICATION_CREDENTIALS environment variable.
    client = discovery.build(service_name, api_version)

    # TODO(developer): Uncomment these lines and replace with your values.
    # project_id = 'my-project'  # replace with your GCP project ID
    # location = 'us-central1'  # replace with the dataset's location
    # dataset_id = 'my-dataset'  # replace with your dataset ID
    # fhir_store_id = 'my-fhir-store'  # replace with the FHIR store's ID
    # implementation_guide_url =
    # 'http://hl7.org/fhir/us/core/ImplementationGuide/hl7.fhir.us.core'  #
    # replace with the 'url' property in the ImplementationGuide resource
    fhir_store_parent = "projects/{}/locations/{}/datasets/{}".format(
        project_id, location, dataset_id
    )
    fhir_store_name = f"{fhir_store_parent}/fhirStores/{fhir_store_id}"

    validation_config = {
        "validationConfig": {"enabledImplementationGuides": [implementation_guide_url]}
    }

    request = (
        client.projects()
        .locations()
        .datasets()
        .fhirStores()
        .patch(
            name=fhir_store_name, updateMask="validationConfig", body=validation_config
        )
    )

    response = request.execute()
    print(
        "Enabled ImplementationGuide with URL {} on FHIR store {}".format(
            implementation_guide_url, fhir_store_id
        )
    )

    return response

Implementierungsleitfäden über die Google Cloud Console aktivieren

Wenn Sie die Google Cloud Console für Folgendes verwenden, einen FHIR-Speicher erstellen oder bearbeiten, können Sie Folgendes:

  • Wählen Sie die Standardimplementierungsleitfäden aus, die von der Cloud Healthcare API bereitgestellt werden.
  • Benutzerdefinierten Implementierungsleitfaden aus Cloud Storage in Ihren FHIR-Speicher importieren

So importieren Sie eine benutzerdefinierte Implementierungsanleitung:

  1. Ressourcen zur Profilvalidierung herunterladen

  2. Optional: Konfigurieren Sie Ihren Implementierungsleitfaden.

    Dieser Schritt ist erforderlich, um das Array global Ihrem Implementierungsleitfaden hinzuzufügen Ressource manuell. Wenn Sie diesen Schritt überspringen, müssen Sie das Array global hinzufügen. wenn Sie im nächsten Schritt das FHIR-Transaktions-Bundle mithilfe eines andere Methode verwenden, z. B. Bundler für Ressourcen zur FHIR-Profilvalidierung mit dem Flag generate_global_array.

  3. Erstellen Sie ein FHIR-Transaktions-Bundle. Ihrer Ressourcen zur Profilvalidierung, einschließlich Implementierungsleitfaden, die Strukturdefinitionen und die Wertesätze.

    Du kannst das Transaktions-Bundle mit dem Bundler für Ressourcen zur FHIR-Profilvalidierung .

  4. Laden Sie das Bundle für die FHIR-Profilvalidierung in einen Cloud Storage-Speicherort hoch.

    gcloud storage cp \
       PATH_TO_PROFILE_VALIDATION_BUNDLE \
       gs://BUCKET/IMPLEMENTATION_GUIDE_DIRECTORY \
       --recursive

    Ersetzen Sie Folgendes:

    • PATH_TO_PROFILE_VALIDATION_BUNDLE: Pfad zum Profil Validierungs-Bundle auf Ihrem lokalen Computer
    • BUCKET/IMPLEMENTATION_GUIDE_DIRECTORY: die Cloud Storage-Speicherort, an dem das Bundle gespeichert werden muss
  5. Importieren Sie Ihre benutzerdefinierte Implementierungsanleitung aus dem Cloud Storage-Speicherort, wenn von Ihnen erstellen oder bearbeiten Ihren FHIR-Speicher.

Ressourcen anhand bestimmter Profile validieren

In den folgenden Beispielen wird gezeigt, wie Sie eine FHIR-Ressource für ein bestimmtes Profil oder für alle Profile validieren, die für einen FHIR-Speicher definiert wurden. FHIR-Ressource validieren können Sie feststellen, ob Ihre FHIR-Ressource einem oder mehreren Profilen entspricht.

Verwenden Sie zum Validieren einer FHIR-Ressource den fhir.Resource-validate .

curl

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    --data @RESOURCE_FILE \
    'https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/RESOURCE_TYPE/$validate?profile=PROFILE_URL'

Dabei gilt:

  • RESOURCE_FILE ist der Speicherort einer Datei, die die Ressource enthält
  • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
  • LOCATION ist der Standort des Datasets
  • DATASET_ID ist die Dataset-ID
  • FHIR_STORE_ID ist die FHIR-Speicher-ID
  • PROFILE_URL ist die kanonische URL des FHIR-Profils, z. B. http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient für eine Patientenressource. Es muss eine StructureDefinition-Ressource in FHIR_STORE_ID mit dieser URL. Wenn Sie die Ressource anhand der Profile validieren, die Sie bereits im Speicher aktiviert haben, geben Sie diesen Abfrageparameter nicht an.
  • RESOURCE_TYPE ist der Ressourcentyp.

Wenn eine Ressource den Profilen entspricht, wird eine Antwort wie diese zurückgegeben:

{
  "issue": [
    {
      "code": "informational",
      "details": {
        "text": "success"
      },
      "diagnostics": "success",
      "severity": "information"
    }
  ],
  "resourceType": "OperationOutcome"
}

Wenn eine Ressource keinem Profil entspricht, wird ein Fehler mit einer Antwort wie dieser zurückgegeben:

{
    "issue": [
        {
            "code": "processing",
            "diagnostics": "Profile http://hl7.org/fhir/StructureDefinition/AuditEvent, Element 'AuditEvent.agent.requestor': minimum required = 1, but only found 0",
            "location": [
                "AuditEvent.agent"
            ],
            "severity": "error"
        }
    ],
    "resourceType": "OperationOutcome"
}

PowerShell

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-WebRequest `
  -Method Post `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body '@RESOURCE_FILE' `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/RESOURCE_TYPE/$validate?profile=PROFILE_URL" | Select-Object -Expand Content

Dabei gilt:

  • RESOURCE_FILE ist der Speicherort einer Datei, die die Ressource enthält
  • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
  • LOCATION ist der Standort des Datasets
  • DATASET_ID ist die Dataset-ID
  • FHIR_STORE_ID ist die FHIR-Speicher-ID
  • PROFILE_URL ist die kanonische URL des FHIR-Profils, z. B. http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient für eine Patientenressource. Es muss eine StructureDefinition-Ressource in FHIR_STORE_ID mit dieser URL. Wenn Sie die Ressource anhand der Profile validieren, die Sie bereits im Speicher aktiviert haben, geben Sie diesen Abfrageparameter nicht an.
  • RESOURCE_TYPE ist der Ressourcentyp.

Wenn eine Ressource für ein Profil validiert wird, wird eine Antwort wie diese zurückgegeben:

{
  "issue": [
    {
      "code": "informational",
      "details": {
        "text": "success"
      },
      "diagnostics": "success",
      "severity": "information"
    }
  ],
  "resourceType": "OperationOutcome"
}

Wenn eine Ressource nicht für ein Profil validiert wird, wird ein Fehler mit einer Antwort wie dieser zurückgegeben:

{
    "issue": [
        {
            "code": "processing",
            "diagnostics": "Profile http://hl7.org/fhir/StructureDefinition/AuditEvent, Element 'AuditEvent.agent.requestor': minimum required = 1, but only found 0",
            "location": [
                "AuditEvent.agent"
            ],
            "severity": "error"
        }
    ],
    "resourceType": "OperationOutcome"
}

Python

def validate_resource_profile_url(
    project_id, location, dataset_id, fhir_store_id, resource_type, profile_url
):
    """Validates an input FHIR resource's conformance to a profile URL. The
    profile StructureDefinition resource must exist in the FHIR store before
    performing validation against the URL.

    See https://github.com/GoogleCloudPlatform/python-docs-samples/tree/main/healthcare/api-client/v1/fhir
    before running the sample."""
    # Imports Python's built-in "os" module
    import os

    # Imports the google.auth.transport.requests transport
    from google.auth.transport import requests

    # Imports a module to allow authentication using a service account
    from google.oauth2 import service_account

    # Gets credentials from the environment.
    credentials = service_account.Credentials.from_service_account_file(
        os.environ["GOOGLE_APPLICATION_CREDENTIALS"]
    )
    scoped_credentials = credentials.with_scopes(
        ["https://www.googleapis.com/auth/cloud-platform"]
    )
    # Creates a requests Session object with the credentials.
    session = requests.AuthorizedSession(scoped_credentials)

    # URL to the Cloud Healthcare API endpoint and version
    base_url = "https://healthcare.googleapis.com/v1"

    # TODO(developer): Uncomment these lines and replace with your values.
    # project_id = 'my-project'  # replace with your GCP project ID
    # location = 'us-central1'  # replace with the parent dataset's location
    # dataset_id = 'my-dataset'  # replace with the parent dataset's ID
    # fhir_store_id = 'my-fhir-store' # replace with the FHIR store ID
    # resource_type = 'Patient'  # replace with the FHIR resource type
    # profile_url = 'http://hl7.org/fhir/us/core/StructureDefinition/us-core-patient'  # replace with the profile URL
    url = f"{base_url}/projects/{project_id}/locations/{location}"

    resource_path = "{}/datasets/{}/fhirStores/{}/fhir/{}".format(
        url, dataset_id, fhir_store_id, resource_type
    )

    resource_path += "/$validate"
    params = {"profile": profile_url}

    # The body shown works with a Patient resource and is not guaranteed
    # to work with other types of FHIR resources. If necessary,
    # supply a new body with data that corresponds to the resource you
    # are validating and supply a new resource_type.
    body = {
        "name": [{"use": "official", "family": "Smith", "given": ["Darcy"]}],
        "gender": "female",
        "birthDate": "1970-01-01",
        "resourceType": "Patient",
    }

    # Sets required application/fhir+json header on the request
    headers = {"Content-Type": "application/fhir+json;charset=utf-8"}

    response = session.post(resource_path, headers=headers, json=body, params=params)
    response.raise_for_status()

    resource = response.json()

    print(json.dumps(resource))

    return resource