Cloud Healthcare API für digitale Pathologie verwenden

Auf dieser Seite wird erläutert, wie Sie virtuelle Schnitte (Whole Slide Images, WSIs) mit der Cloud Healthcare API speichern, analysieren und verwalten.

Übersicht

Die digitale Pathologie ermöglicht das Speichern, Verarbeiten und Verwalten von konventionellen Objektträgern. Dazu werden diese digitalisiert, um virtuelle Schnitte (Whole Slide Images, WSIs) zu erstellen.

WSIs sind normalerweise große Dateien, die bis zu mehreren GB groß sein können. Sie können verschiedene Dateiformate verwenden, was die Verwaltung erschwert. Die Cloud Healthcare API vereinfacht den Speichern, Analysieren und Verwalten von WSIs.

Virtuelle Schnitte mit DICOM speichern

Die Cloud Healthcare API bietet einen verwalteten Dienst zum Speichern von DICOM-Images. Dieser Dienst unterstützt auch das Speichern und Abrufen von WSIs. Weitere Informationen zu DICOM in der Cloud Healthcare API finden Sie unter DICOM.

Die Verwendung von DICOM hat folgende Vorteile:

  • Unterstützt mehrere Anbieter und Softwareversionen.
  • DICOM ist ein Dateiformat und auch ein Netzwerkprotokoll, das die DICOMweb und DIMSE APIs definiert. Diese APIs werden zum Abrufen und Speichern von DICOM-Instanzen verwendet, bieten umfangreiche Funktionen und vereinfachen die Interaktion mit Bildern.

Virtuelle Schnitte in DICOM konvertieren

Die meisten WSI-Scanner erzeugen keine DICOM-Dateien nativ von WSIs. Daher müssen Sie die WCI-Werte in DICOM-Dateien manuell konvertieren.

WSIs kann mit den folgenden Tools in DICOM konvertiert werden:

Im folgenden Abschnitt wird gezeigt, wie Sie mit dem wsi2dcm-Befehlszeilentool DICOM-Dateien generieren.

DICOM-Dateien mit dem wsi2dcm-Befehlszeilentool generieren

Prüfen Sie vor dem Ausführen der folgenden Schritte, ob Sie eine gültige WSI-Datei haben. Beispieldaten sind von OpenSlide und anderen Ressourcen auf der Website der Digital Pathology Association verfügbar.

Führen Sie das wsi2dcm-Befehlszeilentool aus:

wsi2dcm \
    --input=INPUT_WSI \
    --outFolder=PATH/TO/OUTPUT/FOLDER \
    --seriesDescription=WSI_DESCRIPTION

Dabei gilt:

  • INPUT_WSI ist der Pfad und der Name der WSI-Datei.
  • PATH/TO/OUTPUT/FOLDER ist der Pfad, in dem das Tool die konvertierte DICOM-Datei ausgibt.
  • WSI_DESCRIPTION ist eine Beschreibung Ihrer Wahl für die konvertierte DICOM-Datei.

Durch die Ausführung des Tools werden mehrere DICOM-Dateien aus dem WSI generiert. Die DICOM-Dateien haben das Suffix .dcm.

DICOM-Dateien in die Cloud Healthcare API hochladen

Wenn Sie noch keinen DICOM-Speicher erstellt haben, tun Sie dies jetzt.

Sie können die generierten DICOM-Dateien mit einer der folgenden Methoden in einen DICOM-Speicher hochladen:

DICOM-Dateien und zugehörige Metadaten abrufen

Nach dem Hochladen der DICOM-Dateien in einen DICOM-Speicher können Sie Metadaten zu den DICOM-Bildern auflisten und anzeigen.

Alle WSIs auflisten

Jeder WSI ist eine DICOM-Studie. Rufen Sie zum Auflisten der WSIs die Methode dicomStores.searchForStudies auf:

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
  • LOCATION ist der Standort des Datasets
  • DATASET_ID ist das übergeordnete Dataset des DICOM-Speichers
  • DICOM_STORE_ID ist die ID des DICOM-Speichers

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Führen Sie folgenden 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/dicomStores/DICOM_STORE_ID/dicomWeb/studies"

PowerShell

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/dicomStores/DICOM_STORE_ID/dicomWeb/studies" | Select-Object -Expand Content

APIs Explorer

Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

WSI-Metadaten ansehen

Jede Studie enthält mehrere Instanzen und jede Instanz enthält einen Teil der Kacheln eines WSI. Rufen Sie die Methode dicomStores.searchForInstances auf, um die Instanzmetadaten für eine Instanz in der Studie aufzurufen:

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
  • LOCATION ist der Standort des Datasets
  • DATASET_ID ist das übergeordnete Dataset des DICOM-Speichers
  • DICOM_STORE_ID ist die ID des DICOM-Speichers
  • STUDY_INSTANCE_UID ist die eindeutige Kennung (Unique Identifier, UID) der Studieninstanz

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Führen Sie folgenden 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/dicomStores/DICOM_STORE_ID/dicomWeb/instances?StudyInstanceUID=STUDY_INSTANCE_UID"

PowerShell

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/dicomStores/DICOM_STORE_ID/dicomWeb/instances?StudyInstanceUID=STUDY_INSTANCE_UID" | Select-Object -Expand Content

APIs Explorer

Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

WSI-Kacheln ansehen

Jede Instanz enthält in der Regel mehrere Frames. Ein Frame stellt eine Kachel des WSI auf einer bestimmten Zoomstufe im WSI "pyramid" dar. Rufen Sie die Methode frames.retrieveRendered auf, um einen einzelnen Frame im JPEG-Format abzurufen:

curl

Wenn Sie einen einzelnen Frame im JPEG-Format abrufen möchten, senden Sie eine GET-Anfrage und geben Sie die folgenden Informationen an:

  • Der Name des übergeordneten Datasets
  • Der Name des DICOM-Speichers
  • Die UID der Studie
  • Die Serien-UID
  • Die Instanz-UID
  • Ein Zugriffstoken

Das folgende Beispiel zeigt eine GET-Anfrage mit curl.

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Accept: image/jpeg" \
    --output FILENAME \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID/frames/0/rendered"

Wenn die Anfrage erfolgreich ist, wird die JPEG-Datei auf Ihren Rechner geschrieben.

PowerShell

Wenn Sie einen einzelnen Frame im JPEG-Format abrufen möchten, senden Sie eine GET-Anfrage und geben Sie die folgenden Informationen an:

  • Der Name des übergeordneten Datasets
  • Der Name des DICOM-Speichers
  • Die UID der Studie
  • Die Serien-UID
  • Die Instanz-UID
  • Ein Zugriffstoken

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

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred"; "Accept" = "image/jpeg" }

Invoke-RestMethod `
  -Method Get `
  -Headers $headers `
  -OutFile FILENAME `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID/frames/0/rendered"

Wenn die Anfrage erfolgreich ist, wird die JPEG-Datei auf Ihren Rechner geschrieben.

Alle virtuellen Schnitte abrufen

Mit der Methode instances.retrieveInstance können Sie die gesamte Instanz abrufen, in der die WSIs enthalten sind:

curl

Um eine gesamte Instanz abzurufen, senden Sie eine GET-Anfrage und geben Sie die folgenden Informationen an:

  • Der Name des übergeordneten Datasets
  • Der Name des DICOM-Speichers
  • Die UID der Studie
  • Die Serien-UID
  • Die Instanz-UID
  • Ein Zugriffstoken

Das folgende Beispiel zeigt eine GET-Anfrage mit curl.

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Accept: application/dicom" \
    --output FILENAME \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID"

Wenn die Anfrage erfolgreich ist, wird die DICOM-Datei auf Ihren Rechner geschrieben.

PowerShell

Um eine gesamte Instanz abzurufen, senden Sie eine GET-Anfrage und geben Sie die folgenden Informationen an:

  • Der Name des übergeordneten Datasets
  • Der Name des DICOM-Speichers
  • Die UID der Studie
  • Die Serien-UID
  • Die Instanz-UID
  • Ein Zugriffstoken

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

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

Invoke-RestMethod `
  -Method Get `
  -Headers $headers `
  -OutFile FILENAME `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID"

Wenn die Anfrage erfolgreich ist, wird die DICOM-Datei auf Ihren Rechner geschrieben.

Virtuelle Schnitte mit einem WSI-Betrachter ansehen

In den vorherigen Abschnitten wurde gezeigt, wie Sie die Metadaten eines WSIs anzeigen und einzelne Kacheln abrufen. Um den gesamten WSI anzusehen, müssen Sie einen WSI-Betrachter verwenden, der von DICOMweb unterstützt wird.

Die folgenden Betrachter sind mit der Cloud Healthcare API kompatibel:

Konvertierte WSI-DICOM-Dateien mit dem DICOMweb-WSI-Betrachter ansehen

Lesen Sie die folgenden Abschnitte, um die konvertierten WSCI-DICOM-Dateien mithilfe des DICOMweb-WSI-Betrachters darzustellen.

Betrachter herunterladen

Laden Sie den DICOMweb-WSI-Betrachter herunter:

git clone https://github.com/GoogleCloudPlatform/dicomweb-wsi-viewer.git

Clientschlüssel abrufen

Mit einem Clientschlüssel wird ein Nutzer authentifiziert, wenn er auf eine Anwendung zugreift. Sie betten den Clientschlüssel in den Quellcode des DICOM-Web-WSI-Betrachters ein. Führen Sie die folgenden Schritte aus, um einen Clientschlüssel abzurufen:

  1. Rufen Sie in der Google Cloud Console die Seite Anmeldedaten auf.
    Zur Seite "Anmeldedaten"

  2. Klicken Sie auf Anmeldedaten erstellen und wählen Sie OAuth-Client-ID aus.

  3. Wählen Sie unter Anwendungstyp die Option Webanwendung aus.

  4. Geben Sie einen Namen Ihrer Wahl ein.

  5. Geben Sie unter Autorisierte JavaScript-Quellen und Autorisierte Weiterleitungs-URIs http://localhost:8000 ein.

  6. Klicken Sie auf Erstellen und dann im angezeigten Fenster OAuth-Client auf OK. Kopieren Sie die Client-ID zur Verwendung im nächsten Abschnitt.

Clientschlüssel im Betrachter konfigurieren

Führen Sie die folgenden Schritte unter Verwendung der Client-ID aus, die Sie im vorherigen Abschnitt abgerufen haben:

  1. Öffnen Sie die Datei viewer.js im Verzeichnis dicomweb-wsi-viewer.

  2. Ersetzen Sie die folgende Zeile, damit sie Ihre Client-ID enthält:

    const CLIENT_ID = 'INSERT-YOUR-CLIENT-ID-HERE'
    

    Die Zeile sollte in etwa so aussehen:

    const CLIENT_ID = 'PROJECT_ID-VALUE.apps.googleusercontent.com';
  3. Speichern Sie die Datei.

Wenn Sie den OAuth-Zustimmungsbildschirm Ihres Google Cloud-Projekts noch nicht konfiguriert haben, führen Sie die folgenden Schritte aus:

  1. Öffnen Sie den OAuth-Zustimmungsbildschirm.
    Zum OAuth-Zustimmungsbildschirm

  2. Wählen Sie unter Support-E-Mail-Adresse die E-Mail-Adresse aus, die als öffentlicher Kontakt angezeigt werden soll. Dies muss Ihre E-Mail-Adresse oder die einer Google-Gruppe sein, deren Inhaber Sie sind.

  3. Geben Sie den Namen der Anwendung ein, der angezeigt werden soll.

  4. Klicken Sie auf Bereich hinzufügen. Geben Sie im angezeigten Dialogfeld https://www.googleapis.com/auth/cloud-healthcare ein und klicken Sie dann auf Hinzufügen.

  5. Klicken Sie auf Speichern.

Zum Ändern von Informationen im OAuth-Zustimmungsbildschirm wie Produktname oder E-Mail-Adresse müssen Sie die vorherigen Schritte zur Konfiguration des Zustimmungsbildschirms wiederholen.

Wenn Sie bereits den OAuth-Zustimmungsbildschirm Ihres Google Cloud-Projekts konfiguriert haben, müssen Sie https://www.googleapis.com/auth/cloud-healthcare im Dialogfeld Bereich hinzufügen hinzufügen.

DICOMweb-WSI-Betrachter ausführen

  1. Führen Sie im Verzeichnis dicomweb-wsi-viewer den folgenden Befehl aus:

    python -m http.server 8000
    
  2. Wechseln Sie auf dem Computer, auf dem Sie den vorherigen Befehl ausgeführt haben, zu https://localhost:8000.

  3. Klicken Sie in der Benutzeroberfläche auf Anmelden/Autorisieren, um den OAuth-Zustimmungsbildschirm aufzurufen. Erteilen Sie dem Betrachter die Berechtigung, auf Ihr Google Cloud-Projekt und die Cloud Healthcare API-Ressourcen zuzugreifen.