Questa pagina spiega come archiviare, accedere, visualizzare e utilizzare le immagini digitali di patologia dell'intero vetrino (WSI) utilizzando l'API Cloud Healthcare.
Panoramica
La patologia digitale sta trasformando l'imaging medico consentendo di archiviare, visualizzare e valutare i vetrini convenzionali nei workflow digitali. Tra i suoi numerosi vantaggi, la patologia digitale consente una consulenza rapida, offre ai pazienti un accesso e una comprensione maggiori e migliora i flussi di lavoro clinici e di ricerca consentendo alle immagini patologiche di essere una fonte di dati per l'AI all'avanguardia.
La patologia digitale dell'intero vetrino è rappresentata come una raccolta di immagini. I più grandi hanno in genere dimensioni di diversi gigabyte. DICOM è lo standard interoperabile per la patologia digitale e consente di archiviare in modo efficiente l'imaging dell'intero vetrino e i relativi metadati, nonché di farvi riferimento dalle cartelle cliniche elettroniche (ad es. FHIR) e a cui si accede tramite API indipendenti dal fornitore ad alte prestazioni.
La rappresentazione DICOM per la patologia digitale è stata progettata per supportare casi d'uso interattivi ad alte prestazioni che richiedono la possibilità di spostarsi e ingrandire rapidamente le immagini da gigapixel. DICOM rappresenta la patologia digitale dell'intero vetrino come una piramide di immagini. I livelli della piramide corrispondono agli ingrandimenti dell'imaging dell'intero vetrino. Le immagini rappresentate all'interno di un livello della piramide vengono archiviate come una raccolta di immagini più piccole, i frame. Lo standard definisce le API che consentono l'archiviazione, la ricerca (individuazione delle immagini disponibili), il recupero dei metadati e il recupero delle immagini dell'intero livello della piramide (ingrandimento) o la selezione di sottoregioni (frame) all'interno di un livello della piramide.
Le API DICOM supportano le risposte dei metadati in JSON e XML e l'API Cloud Healthcare supporta inoltre l'accesso ai metadati tramite BigQuery per consentire query relazionali complesse che uniscono i metadati DICOM ad altre origini dati. Le immagini possono essere restituite così come sono memorizzate o convertite (transcodificate) in formati alternativi.
Generazione di immagini DICOM dell'intera slide
Un numero crescente di scanner per vetrini di patologia digitale supporta la generazione di immagini DICOM direttamente dallo scanner. In molti casi, il file DICOM prodotto dallo scanner per vetrini può essere importato direttamente nell'API Cloud Healthcare utilizzando le API DICOM DICOMweb o DIMSE. Se gli scanner per vetrini che producono DICOM non sono collegati a un sistema informativo di laboratorio (LIS), potrebbe essere necessario aumentare i metadati non pixel in DICOM per aggiungere (ad es. paziente) o modificare (ad es. Study Instance UID) prima del suo utilizzo in un PACS di diagnostica per immagini cliniche.
In passato, gli scanner per diapositive hanno generato immagini in formati proprietari. La pipeline di trasformazione può essere utilizzata per trasformare i formati supportati da OpenSlide in DICOM, unire i metadati personalizzati al DICOM generato e importare il DICOM generato direttamente nell'API Cloud Healthcare. Questa soluzione è stata utilizzata per supportare la trasformazione di archivi multi-petabyte in DICOM.
Gli strumenti che possono essere utilizzati per convertire l'imaging di patologia digitale in DICOM includono:
- Open Source Google Transformation Pipeline
- Strumento a riga di comando "Dicomizer" di Orthanc
- PixelMed™ Java DICOM Toolkit
Le istanze DICOM possono essere importate a livello di programmazione nell'API Cloud Healthcare utilizzando: DICOMweb, DIMSE e da Cloud Storage.
Livelli di archiviazione delle immagini
L'API Cloud Healthcare supporta il livello di archiviazione con granularità di un'istanza DICOM. Per l'imaging dell'intero vetrino, ogni ingrandimento di una piramide di immagini di patologia digitale può essere archiviato nel livello che meglio corrisponde al suo utilizzo previsto. Il livello di archiviazione di un'istanza DICOM influisce sul costo dell'archiviazione, del recupero e, in alcuni casi, dell'eliminazione dei dati. Il tiering dell'archiviazione non influisce sulle prestazioni di accesso ai dati. Per impostazione predefinita, tutte le istanze DICOM vengono archiviate nel livello di archiviazione standard. L'API Cloud Healthcare fornisce un'API per visualizzare e modificare la classe di archiviazione per le istanze DICOM. Inoltre, è possibile utilizzare una soluzione di gestione del ciclo di vita delle immagini (ILM) per automatizzare lo spostamento delle istanze DICOM tra i livelli di archiviazione in base all'euristica. La soluzione può automatizzare il trasferimento di un'istanza DICOM nei livelli di archiviazione in base alle dimensioni, all'età e ai pattern di accesso.
NOTA: l'archiviazione dei dati ad accesso sporadico aumenta il costo del recupero dei dati dei pixel. Gli addebiti per il recupero dei dati vengono pagati in base alle dimensioni dei dati recuperati e non a quelle dei dati archiviati. Per l'imaging dell'intero vetrino, questa è una distinzione importante, in quanto i dati dei pixel possono essere recuperati utilizzando sia le API a livello di frame sia quelle a livello di istanza. Il recupero di immagini di archiviazione utilizzando le API frame può essere particolarmente vantaggioso, dal punto di vista dei costi, quando è necessario un sottoinsieme dei frame di un'istanza, poiché gli addebiti per il recupero dei dati verranno effettuati in base alle dimensioni dei dati restituiti e non alle dimensioni dell'istanza archiviata.
Visualizzazione interattiva
L'API Cloud Healthcare può essere utilizzata per supportare la visualizzazione interattiva di immagini di vetrini interi per applicazioni che vanno dai visualizzatori web a zero footprint (JavaScript) alle applicazioni client autonome. I seguenti visualizzatori open source sono stati testati per essere compatibili con l'API Cloud Healthcare:
Open Source Google Viewer: visualizzatore di patologia digitale open source a ingombro zero creato da Google Research.
Slim (MGH): visualizzatore di patologia digitale open source a zero footprint che supporta NIH Imaging Data Commons.
QuPath: applicazione desktop open source.
Migliorare il rendimento delle visualizzazioni interattive
Il proxy DICOM per la patologia digitale è una soluzione di Google Research che puoi utilizzare per migliorare le prestazioni di visualizzazione dei frame per le applicazioni interattive di imaging di vetrini interi. Una volta implementato, il proxy DICOM per la patologia digitale esegue il wrapping dell'API Cloud Healthcare ed esegue la memorizzazione nella cache dei frame just-in-time per pubblicare preferenzialmente le immagini dei frame da una cache Memorystore per Redis in memoria.
Normalizzazione del colore dell'imaging dell'intero vetrino
Lo standard DICOM richiede che le WSI contengano un profilo colore ICC che definisca lo spazio colore dello scanner per vetrini che ha acquisito le immagini. Questo spazio colore può differire notevolmente dallo spazio colore utilizzato da display o altri scanner per diapositive. Se visualizzato senza il profilo ICC incorporato, il colore delle immagini spesso appare molto più o meno saturo del previsto. L'API Cloud Healthcare fornisce API per recuperare il profilo ICC incorporato in un'istanza DICOM e per trasformare le immagini recuperate in uno spazio colore di riferimento.
Puoi recuperare il profilo ICC incorporato in un'istanza DICOM utilizzando l'API per i dati collettivi o l'API per il recupero delle istanze. Puoi quindi trasformare le immagini recuperate nello spazio colore dello scanner di diapositive utilizzando librerie come Little-CMS(scritto in C++) e Pillow (scritto in Python).
La libreria Python EZ-WSI DICOMweb supporta la trasformazione del profilo ICC nell'ambito delle API di recupero delle immagini e di generazione di incorporamenti di machine learning.
Machine learning
Path Foundation è un modello di base sviluppato da Google Research per accelerare lo sviluppo del machine learning (ML) nella patologia digitale.
Il modello converte una patch (una sottoregione) dell'imaging patologico in un embedding, ovvero un elenco di numeri in virgola mobile. Questo embedding funge da rappresentazione dell'immagine appresa automaticamente. L'utilizzo di embedding di immagini come dati di input può contribuire a ridurre la quantità totale di dati e le risorse di calcolo necessarie per sviluppare modelli di ML efficaci.
Puoi eseguire il deployment di Path Foundation su Google Cloud da Model Garden. È disponibile anche come open source con pesi aperti su Hugging Face.
Per facilitare la generazione di incorporamenti, la libreria Python open source EZ-WSI DICOMweb include interfacce (vedi il blocco note Colab della guida introduttiva per la generazione di incorporamenti di patologia) che semplificano la trasformazione delle immagini archiviate nell'API Cloud Healthcare in incorporamenti. Consulta il notebook Colab Train a Digital Pathology Linear Classifier From Images Stored on DICOM per informazioni su come utilizzare EZ-WSI DICOMweb e Pathology Foundations per addestrare un classificatore lineare da immagini DICOM di vetrini interi.
Recupero programmatico di metadati e imaging dei pixel
Questa sezione descrive i metodi per recuperare i metadati e le immagini di patologia digitale dall'API Cloud Healthcare.
Modello informativo DICOM
DICOM utilizza tre identificatori univoci (UID) per identificare in modo univoco le immagini:
- UID istanza studio: identifica tutte le immagini acquisite o generate da un singolo esame del paziente.
- UID istanza serie: identifica ogni acquisizione di immagini mediche all'interno dell'esame (ad esempio, una scansione unica di un vetrino patologico).
- UID istanza SOP: identifica ogni immagine acquisita o generata nell'ambito dell'acquisizione.
Ad esempio, gli scanner per vetrini spesso generano più immagini per acquisire un vetrino completo. Queste immagini possono includere:
- L'area del tessuto riprodotta in immagini a vari ingrandimenti.
- L'etichetta della slide.
- Un'immagine dell'intera slide.
- Dati che descrivono l'operazione di scansione delle slide.
Elenco delle serie DICOM di patologia digitale
Per identificare le immagini di microscopia a scorrimento, cerca le serie DICOM in cui il tag Modalità (0008,0060) è SM
. Per questa ricerca puoi utilizzare il metodo dicomStores.searchForSeries
.
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: l'ID del tuo progetto Google Cloud
- LOCATION: la posizione del set di dati
- DATASET_ID: il set di dati principale dell'archivio DICOM
- DICOM_STORE_ID: l'ID dell'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/series?Modality=SM"
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/series?Modality=SM" | 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. Compila i campi obbligatori e fai clic su Esegui.
Dovresti ricevere una risposta JSON simile alla seguente:
Recupero dei metadati DICOM di patologia digitale
Una serie DICOM per l'imaging dell'intero vetrino di solito contiene più istanze. Queste istanze DICOM possono rappresentare diversi livelli della piramide di immagini o regioni aggiuntive della slide acquisita.
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 progetto Google Cloud
- LOCATION: la posizione del set di dati
- DATASET_ID: il set di dati principale dell'archivio DICOM
- DICOM_STORE_ID: l'ID dell'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. Compila i campi obbligatori e fai clic su Esegui.
Dovresti ricevere una risposta JSON simile alla seguente:
Recupero dei dati dei pixel di imaging dell'intera slide
Puoi recuperare in modo programmatico i dati pixel di immagini di vetrini interi utilizzando DICOMweb. L'API Cloud Healthcare supporta anche il recupero tramite un adattatore DICOM che utilizza i protocolli DIMSE.
La maggior parte delle immagini dell'intera slide sono immagini multifotogramma. Per questi, l'API Cloud Healthcare fornisce l'accesso diretto ai dati dei pixel utilizzando le API DICOM frame e rendered frame.
In alternativa, puoi recuperare i dati pixel indirettamente recuperando un'intera istanza DICOM e decodificando in modo programmatico i frame codificati da quell'istanza.
Considerazioni sulle prestazioni per il recupero dei frame:
- Il recupero di un'intera istanza è in genere più rapido per frame rispetto al recupero batch dei frame.
- Il recupero batch dei frame è generalmente più veloce del recupero dei singoli frame.
EZ-WSI DICOMweb
EZ-WSI DICOMweb è una libreria Python open source. Semplifica il recupero dei dati dei pixel di patologia digitale dall'API Cloud Healthcare eseguendo l'astrazione delle chiamate DICOMweb sottostanti. La libreria può contribuire ad accelerare il recupero dei frame in molti casi d'uso convertendo le richieste di immagini seriali in richieste batch. Il recupero batch dei dati dei frame spesso riduce il tempo totale e la quota dell'archivio DICOM richiesti.
È disponibile un notebook Colab che illustra la libreria.
API di recupero delle istanze DICOMweb
L'API DICOMweb Instance Retrieval restituisce un'istanza DICOM binaria. Questa istanza contiene tutti i metadati e i dati dei pixel memorizzati al suo interno.
Puoi decodificare i dati binari restituiti utilizzando varie librerie, ad esempio:
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: l'ID del tuo progetto Google Cloud
- LOCATION: la posizione del set di dati
- DATASET_ID: il set di dati principale dell'archivio DICOM
- DICOM_STORE_ID: l'ID dell'archivio DICOM
- STUDY_INSTANCE_UID: l'identificatore univoco dell'istanza dello studio
- SERIES_INSTANCE_UID: l'identificatore univoco dell'istanza della serie
- INSTANCE_UID: l'identificatore univoco dell'istanza
- OUTPUT_FILE: file in cui scrivere l'istanza 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)" \
-H "Accept: application/dicom" \
--output OUTPUT_FILE \
"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"
PowerShell
Esegui questo comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "Accept" = "application/dicom" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-OutFile OUTPUT_FILE `
-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"
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. Compila i campi obbligatori e fai clic su Esegui.
Il file OUTPUT_FILE
deve essere compilato con i contenuti
API DICOMweb frame
L'API DICOMweb frame consente il recupero di uno o più frame da un'istanza DICOM. I dati dei pixel recuperati utilizzando l'API possono essere richiesti transcodificati in formati diversi da quelli archiviati in modo nativo nell'archivio DICOM.
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: l'ID del tuo progetto Google Cloud
- LOCATION: la posizione del set di dati
- DATASET_ID: il set di dati principale dell'archivio DICOM
- DICOM_STORE_ID: l'ID dell'archivio DICOM
- STUDY_INSTANCE_UID: l'identificatore univoco dell'istanza dello studio
- SERIES_INSTANCE_UID: l'identificatore univoco dell'istanza della serie
- INSTANCE_UID: l'identificatore univoco dell'istanza
- FRAMES: i numeri dei fotogrammi per recuperare i dati dei pixel
Per inviare la richiesta, scegli una di queste opzioni:
curl
Esegui questo comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Accept: multipart/related; type="image/jpeg"; transfer-syntax=1.2.840.10008.1.2.4.50" \
"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/FRAMES"
PowerShell
Esegui questo comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "Accept" = "multipart/related; type="image/jpeg"; transfer-syntax=1.2.840.10008.1.2.4.50" }
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/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID/frames/FRAMES" | 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. Compila i campi obbligatori e fai clic su Esegui.
API DICOMweb per i frame sottoposti a rendering
L'API DICOMweb rendered frame consente la conversione lato server del frame in un formato immagine standard (ad es. JPEG e PNG).
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: l'ID del tuo progetto Google Cloud
- LOCATION: la posizione del set di dati
- DATASET_ID: il set di dati principale dell'archivio DICOM
- DICOM_STORE_ID: l'ID dell'archivio DICOM
- STUDY_INSTANCE_UID: l'identificatore univoco dell'istanza dello studio
- SERIES_INSTANCE_UID: l'identificatore univoco dell'istanza della serie
- INSTANCE_UID: l'identificatore univoco dell'istanza
- FRAME: il numero del frame da cui recuperare i dati dei pixel
Per inviare la richiesta, scegli una di queste opzioni:
curl
Esegui questo comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Accept: image/png" \
"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/FRAME/rendered"
PowerShell
Esegui questo comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "Accept" = "image/png" }
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/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID/frames/FRAME/rendered" | 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. Compila i campi obbligatori e fai clic su Esegui.
Utilizzo di retrieve bulk data per recuperare un profilo ICC incorporato in un'istanza DICOM
Puoi utilizzare DICOMweb retrieve bulkdata per recuperare direttamente i byte del profilo ICC (International Color Consortium) incorporati in un'istanza DICOM.
REST
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: l'ID del tuo progetto Google Cloud
- LOCATION: la posizione del set di dati
- DATASET_ID: il set di dati principale dell'archivio DICOM
- DICOM_STORE_ID: l'ID dell'archivio DICOM
- STUDY_INSTANCE_UID: l'identificatore univoco dell'istanza dello studio
- SERIES_INSTANCE_UID: l'identificatore univoco dell'istanza della serie
- INSTANCE_UID: l'identificatore univoco dell'istanza
- OUTPUT_FILE: il file in cui scrivere l'istanza del profilo ICC.
Per inviare la richiesta, scegli una di queste opzioni:
curl
Esegui questo comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Accept: application/octet-stream; transfer-syntax=*" \
--output OUTPUT_FILE \
"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/bulkdata/00480105/0/00282000"
PowerShell
Esegui questo comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "Accept" = "application/octet-stream; transfer-syntax=*" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-OutFile OUTPUT_FILE `
-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/bulkdata/00480105/0/00282000"
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. Compila i campi obbligatori e fai clic su Esegui.
Il file OUTPUT_FILE
deve essere compilato con i contenuti