Utilizzo dell'API Cloud Healthcare per la patologia digitale

Questa pagina spiega come archiviare, analizzare e gestire le immagini dell'intero vetrino (WSI) utilizzando l'API Cloud Healthcare.

Panoramica

La patologia digitale consente di archiviare, elaborare e gestire i vetrini convenzionali digitalizzandoli per produrre immagini dell'intero vetrino (WSI).

I WSI sono in genere file di grandi dimensioni che possono arrivare a diversi GB. Sono disponibili in vari formati di file, il che può renderli difficili da gestire. L'API Cloud Healthcare semplifica il processo di archiviazione, analisi e gestione delle immagini di sezioni intere.

Archiviazione di immagini di vetrini interi utilizzando DICOM

L'API Cloud Healthcare fornisce un servizio gestito per l'archiviazione di immagini DICOM. Questo servizio supporta anche l'archiviazione e il recupero di WSI. Per ulteriori informazioni su DICOM nell'API Cloud Healthcare, consulta DICOM.

L'utilizzo di DICOM offre i seguenti vantaggi:

  • Supporta più fornitori e software.
  • DICOM è un formato di file e anche un protocollo di rete che definisce le API DICOMweb e DIMSE. Queste API, utilizzate per recuperare e archiviare istanze DICOM, forniscono funzionalità estese e semplificano l'interazione con le immagini.

Conversione di immagini di vetrini interi in DICOM

La maggior parte degli scanner WSI non produce in modo nativo file DICOM da WSI. Di conseguenza, devi convertire manualmente le WSI in file DICOM.

I seguenti strumenti possono convertire le immagini WSI in DICOM:

La sezione seguente mostra come utilizzare lo strumento a riga di comando wsi2dcm per generare file DICOM.

Genera file DICOM utilizzando lo strumento a riga di comando wsi2dcm

Prima di completare i passaggi riportati di seguito, assicurati di avere un file WSI valido. I dati di esempio sono disponibili su OpenSlide e in altre risorse elencate sul sito web della Digital Pathology Association.

Esegui lo strumento a riga di comando wsi2dcm:

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

dove:

  • INPUT_WSI è il percorso e il nome del file WSI.
  • PATH/TO/OUTPUT/FOLDER è il percorso in cui lo strumento genera l'output del file DICOM convertito.
  • WSI_DESCRIPTION è una descrizione a tua scelta per il file DICOM convertito.

L'esecuzione dello strumento genera diversi file DICOM dal WSI. I file DICOM hanno il suffisso .dcm.

Caricamento dei file DICOM nell'API Cloud Healthcare

Se non hai ancora creato un archivio DICOM, fallo ora.

Puoi caricare i file DICOM generati in un archivio DICOM utilizzando uno dei seguenti metodi:

Recupero dei file DICOM e dei relativi metadati

Dopo aver caricato i file DICOM in un archivio DICOM, puoi elencare e visualizzare i metadati delle immagini DICOM.

Elenco delle immagini dell'intera slide

Ogni WSI è uno studio DICOM. Per elencare i WSI, puoi chiamare il metodo dicomStores.searchForStudies:

REST

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_ID: l'ID del tuo Google Cloud progetto
  • LOCATION: la posizione del set di dati
  • DATASET_ID: il set di dati principale dell'archivio DICOM
  • DICOM_STORE_ID: l'ID archivio DICOM

Per inviare la richiesta, scegli una di queste opzioni:

curl

Esegui questo comando:

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

Esegui questo comando:

$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

Explorer API

Apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Completa i campi obbligatori e fai clic su Esegui.

Dovresti ricevere una risposta JSON simile alla seguente:

Visualizzare i metadati dell'immagine dell'intera slide

Ogni studio contiene più istanze e ogni istanza contiene un sottoinsieme delle tessere di una WSI. Per visualizzare i metadati dell'istanza per un'istanza nello studio, chiama il metodo dicomStores.searchForInstances:

REST

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • PROJECT_ID: l'ID del tuo Google Cloud progetto
  • LOCATION: la posizione del set di dati
  • DATASET_ID: il set di dati principale dell'archivio DICOM
  • DICOM_STORE_ID: l'ID archivio DICOM
  • STUDY_INSTANCE_UID: l'identificatore univoco (UID) dell'istanza dello studio

Per inviare la richiesta, scegli una di queste opzioni:

curl

Esegui questo comando:

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

Esegui questo comando:

$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

Explorer API

Apri la pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Completa i campi obbligatori e fai clic su Esegui.

Dovresti ricevere una risposta JSON simile alla seguente:

Visualizzazione di tutte le tessere delle immagini delle slide

Ogni istanza in genere contiene più frame. Un frame rappresenta una tessera della WSI a un determinato livello di zoom nella "piramide" della WSI. Per recuperare un singolo frame in formato JPEG, chiama il metodo frames.retrieveRendered:

curl

Per recuperare un singolo frame in formato JPEG, invia una richiesta GET e specifica le seguenti informazioni:

  • Il nome del set di dati padre
  • Il nome dell'archivio DICOM
  • L'UID dello studio
  • L'UID della serie
  • L'UID istanza
  • Un token di accesso

L'esempio seguente mostra una richiesta GET mediante 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"

Se la richiesta ha esito positivo, il file JPEG viene scritto sul tuo computer.

PowerShell

Per recuperare un singolo frame in formato JPEG, invia una richiesta GET e specifica le seguenti informazioni:

  • Il nome del set di dati padre
  • Il nome dell'archivio DICOM
  • L'UID dello studio
  • L'UID della serie
  • L'UID istanza
  • Un token di accesso

Il seguente esempio mostra una richiesta GET mediante 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"

Se la richiesta ha esito positivo, il file JPEG viene scritto sul tuo computer.

Recupero di tutte le immagini dell'intero vetrino

Per recuperare l'intera istanza, che contiene i WSI, utilizza il metodo instances.retrieveInstance:

curl

Per recuperare un'intera istanza, effettua una richiesta GET e specifica le seguenti informazioni:

  • Il nome del set di dati padre
  • Il nome dell'archivio DICOM
  • L'UID dello studio
  • L'UID della serie
  • L'UID istanza
  • Un token di accesso

L'esempio seguente mostra una richiesta GET mediante 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"

Se la richiesta va a buon fine, il file DICOM viene scritto sul tuo computer.

PowerShell

Per recuperare un'intera istanza, effettua una richiesta GET e specifica le seguenti informazioni:

  • Il nome del set di dati padre
  • Il nome dell'archivio DICOM
  • L'UID dello studio
  • L'UID della serie
  • L'UID istanza
  • Un token di accesso

Il seguente esempio mostra una richiesta GET mediante 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"

Se la richiesta va a buon fine, il file DICOM viene scritto sul tuo computer.

Visualizzare una slide utilizzando un visualizzatore di immagini di slide intere

Le sezioni precedenti hanno mostrato come visualizzare i metadati di un WSI e recuperare singoli riquadri. Per visualizzare l'intera immagine WSI, devi utilizzare un visualizzatore WSI basato su DICOMweb.

I seguenti visualizzatori sono compatibili con l'API Cloud Healthcare:

Visualizzare i file DICOM WSI convertiti utilizzando il visualizzatore DICOMweb WSI

Completa le seguenti sezioni per utilizzare il visualizzatore WSI DICOMweb per visualizzare i file WSI DICOM convertiti.

Download del visualizzatore in corso…

Scarica DICOMweb WSI Viewer:

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

Ottenere il client secret

Un client secret autentica un utente quando accede a un'applicazione. Incorpori il client secret nel codice sorgente del visualizzatore DICOMweb WSI. Per ottenere un client secret, completa i seguenti passaggi:

  1. Vai alla pagina Credenziali nella console Google Cloud .
    Vai alla pagina Credenziali

  2. Fai clic su Crea credenziali e seleziona ID client OAuth.

  3. In Tipo di applicazione, seleziona Applicazione web.

  4. Aggiungi un nome a tua scelta.

  5. In Origini JavaScript autorizzate e URI di reindirizzamento autorizzati, inserisci http://localhost:8000.

  6. Fai clic su Crea, quindi su Ok nella finestra Client OAuth visualizzata. Copia l'ID client da utilizzare nella sezione successiva.

Configurazione del client secret nel visualizzatore

Completa i seguenti passaggi utilizzando l'ID client ottenuto nella sezione precedente:

  1. Nella directory dicomweb-wsi-viewer, apri il file viewer.js.

  2. Sostituisci la seguente riga in modo che contenga il tuo ID client.

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

    La riga dovrebbe invece essere simile all'esempio seguente:

    const CLIENT_ID = 'PROJECT_ID-VALUE.apps.googleusercontent.com';
  3. Salva il file.

Se non hai ancora configurato la schermata per il consenso OAuth del progetto, completa i seguenti passaggi: Google Cloud

  1. Vai alla schermata per il consenso OAuth.
    Vai alla schermata per il consenso OAuth

  2. In Email dell'assistenza, seleziona l'indirizzo email da visualizzare come contatto pubblico. Questo indirizzo email deve essere il tuo indirizzo email o l'indirizzo email di un gruppo Google di tuo proprietà.

  3. Inserisci il nome dell'applicazione che vuoi visualizzare.

  4. Fai clic su Aggiungi ambito. Nella finestra di dialogo visualizzata, inserisci https://www.googleapis.com/auth/cloud-healthcare, poi fai clic su Aggiungi.

  5. Fai clic su Salva.

Per modificare in un secondo momento le informazioni nella schermata di consenso OAuth, ad esempio il nome del prodotto o l'indirizzo email, ripeti i passaggi precedenti per configurare la schermata di consenso.

Se hai già configurato la schermata per il consenso OAuth del tuo progetto, devi aggiungere https://www.googleapis.com/auth/cloud-healthcare in Aggiungi ambito. Google Cloud

Esecuzione del visualizzatore WSI DICOMweb

  1. Nella directory dicomweb-wsi-viewer, esegui questo comando:

    python -m http.server 8000
    
  2. Vai a https://localhost:8000 sulla macchina in cui hai eseguito il comando precedente.

  3. Nell'interfaccia utente, fai clic su Accedi/Autorizza per accedere alla schermata per il consenso OAuth e concedere all'utente che visualizza l'autorizzazione ad accedere al tuo progetto Google Cloud e alle risorse dell'API Cloud Healthcare.