Cette page explique comment stocker, analyser et gérer des images de diapositives entières (Whole slide images, WSI) à l'aide de l'API Cloud Healthcare.
Présentation
La pathologie numérique permet de stocker, de traiter et de gérer des diapositives en verre classiques en les numérisant pour produire des images de diapositives entières (WSI).
Les fichiers WSI sont généralement des fichiers volumineux pouvant atteindre plusieurs Go. Ils sont disponibles dans différents formats, ce qui peut les rendre difficiles à gérer. L'API Cloud Healthcare simplifie le processus de stockage, d'analyse et de gestion des fichiers WSI.
Stocker des images de diapositives entières à l'aide de DICOM
L'API Cloud Healthcare fournit un service géré pour le stockage d'images DICOM. Ce service permet également de stocker et de récupérer des WSI. Pour plus d'informations sur DICOM dans l'API Cloud Healthcare, consultez la page DICOM.
L'utilisation de DICOM présente les avantages suivants :
- Compatibilité avec plusieurs fournisseurs et logiciels.
- DICOM est un format de fichier ainsi qu'un protocole réseau qui définit les API DICOMweb et DIMSE. Ces API, utilisées pour récupérer et stocker des instances DICOM, offrent de nombreuses fonctionnalités et simplifient l'interaction avec les images.
Convertir des images de diapositives entières en fichiers DICOM
La plupart des scanneurs WSI ne produisent pas de fichiers DICOM natifs à partir des WSI. Par conséquent, vous devez convertir les WSI en fichiers DICOM manuellement.
Les outils suivants peuvent convertir des WSI en fichiers DICOM :
La section suivante montre comment générer des fichiers DICOM à l'aide de l'outil de ligne de commande wsi2dcm.
Générer des fichiers DICOM à l'aide de l'outil de ligne de commande wsi2dcm
Avant d'effectuer les étapes suivantes, assurez-vous de disposer d'un fichier WSI valide. Des exemples de données sont disponibles sur OpenSlide et d'autres ressources répertoriées sur le site Web de la Digital Pathology Association.
Exécutez l'outil de ligne de commande wsi2dcm :
wsi2dcm \ --input=INPUT_WSI \ --outFolder=PATH/TO/OUTPUT/FOLDER \ --seriesDescription=WSI_DESCRIPTION
où :
- INPUT_WSI est le chemin d'accès et le nom du fichier WSI.
- PATH/TO/OUTPUT/FOLDER est le chemin d'accès au fichier DICOM converti par l'outil.
- WSI_DESCRIPTION est la description du fichier DICOM converti que vous avez choisi.
L'exécution de l'outil génère plusieurs fichiers DICOM à partir d'une image WSI. Les fichiers DICOM comportent le suffixe .dcm
.
Importer des fichiers DICOM dans l'API Cloud Healthcare
Si vous n'avez pas encore créé de magasin DICOM, faites-le maintenant.
Vous pouvez importer les fichiers DICOM générés dans un magasin DICOM à l'aide de l'une des méthodes suivantes :
- Stocker les fichiers directement à l'aide de la mise en œuvre des transactions DICOMweb en magasin de l'API Cloud Healthcare
- Stocker les fichiers à l'aide de l'outil de ligne de commande DICOMweb
Récupérer des fichiers DICOM et leurs métadonnées
Après avoir importé les fichiers DICOM dans un magasin DICOM, vous pouvez répertorier et afficher les métadonnées des images DICOM.
Répertorier l'intégralité des images de diapositives entières
Chaque WSI est une étude DICOM. Pour répertorier les WSI, vous pouvez appeler la méthode dicomStores.searchForStudies
:
REST
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID : ID de votre projet Google Cloud
- LOCATION : emplacement de l'ensemble de données
- DATASET_ID : ensemble de données parent du magasin DICOM
- DICOM_STORE_ID : ID du store DICOM
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Exécutez la commande suivante :
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
Exécutez la commande suivante :
$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
API Explorer
Ouvrez la page de référence de la méthode. Le panneau APIs Explorer s'ouvre dans la partie droite de la page. Vous pouvez interagir avec cet outil pour envoyer des requêtes. Renseignez tous les champs obligatoires, puis cliquez sur Exécuter.
Vous devriez recevoir une réponse JSON de ce type :
Afficher les métadonnées des images de diapositives entières
Chaque étude contient plusieurs instances, chacune comportant un sous-ensemble des tuiles d'une image WSI. Pour afficher les métadonnées d'une instance dans l'étude, appelez la méthode dicomStores.searchForInstances
:
REST
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
- PROJECT_ID : ID de votre projet Google Cloud
- LOCATION : emplacement de l'ensemble de données
- DATASET_ID : ensemble de données parent du magasin DICOM
- DICOM_STORE_ID : ID du magasin DICOM
- STUDY_INSTANCE_UID : identifiant unique (UID) de l'instance dans l'étude
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Exécutez la commande suivante :
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
Exécutez la commande suivante :
$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
API Explorer
Ouvrez la page de référence de la méthode. Le panneau APIs Explorer s'ouvre dans la partie droite de la page. Vous pouvez interagir avec cet outil pour envoyer des requêtes. Renseignez tous les champs obligatoires, puis cliquez sur Exécuter.
Vous devriez recevoir une réponse JSON de ce type :
Afficher l'ensemble des tuiles des images de diapositives entières
Chaque instance contient généralement plusieurs cadres. Un cadre représente une tuile de l'image WSI à un niveau de zoom particulier dans la "pyramide" WSI.
Pour récupérer un seule cadre au format JPEG, appelez la méthode frames.retrieveRendered
:
curl
Pour récupérer un seul cadre au format JPEG, envoyez une requête GET
et spécifiez les informations suivantes :
- Nom de l'ensemble de données parent
- Le nom du magasin DICOM
- L'UID de l'étude
- L'UID de la série
- L'UID de l'instance
- Un jeton d'accès
L'exemple suivant montre une requête GET
utilisant 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"
Si la requête aboutit, le fichier JPEG est écrit sur votre ordinateur.
PowerShell
Pour récupérer un seul cadre au format JPEG, envoyez une requête GET
et spécifiez les informations suivantes :
- Nom de l'ensemble de données parent
- Le nom du magasin DICOM
- L'UID de l'étude
- L'UID de la série
- L'UID de l'instance
- Un jeton d'accès
L'exemple suivant montre une requête GET
utilisant 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"
Si la requête aboutit, le fichier JPEG est écrit sur votre ordinateur.
Récupérer toutes les images de diapositives entières
Pour récupérer l'intégralité de l'instance, qui contient les WSI, utilisez la méthode instances.retrieveInstance
:
curl
Pour récupérer une instance entière, envoyez une requête GET
et spécifiez les informations suivantes :
- Nom de l'ensemble de données parent
- Le nom du magasin DICOM
- L'UID de l'étude
- L'UID de la série
- L'UID de l'instance
- Un jeton d'accès
L'exemple suivant montre une requête GET
utilisant 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"
Si la requête aboutit, le fichier DICOM est écrit sur votre ordinateur.
PowerShell
Pour récupérer une instance entière, envoyez une requête GET
et spécifiez les informations suivantes :
- Nom de l'ensemble de données parent
- Le nom du magasin DICOM
- L'UID de l'étude
- L'UID de la série
- L'UID de l'instance
- Un jeton d'accès
L'exemple suivant montre une requête GET
utilisant 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"
Si la requête aboutit, le fichier DICOM est écrit sur votre ordinateur.
Afficher une diapositive à l'aide d'une visionneuse d'images de diapositives entières
Les sections précédentes expliquaient comment afficher les métadonnées d'un fichier WSI et récupérer des tuiles individuelles. Pour afficher l'intégralité de l'image WSI, vous devez utiliser la visionneuse WSI fournie par DICOMweb.
Les visionneuses suivantes sont compatibles avec l'API Cloud Healthcare :
Afficher les fichiers WSI DSIOM convertis à l'aide de la visionneuse de WSI DICOMweb
Renseignez les sections suivantes pour utiliser la visionneuse de WSI DICOMweb pour afficher les fichiers WSI DICOM.
Télécharger la visionneuse
Téléchargez la visionneuse de WSI DICOMweb :
git clone https://github.com/GoogleCloudPlatform/dicomweb-wsi-viewer.git
Obtenir le code secret du client
Le code secret du client authentifie un utilisateur lorsqu'il accède à une application. Vous intégrez le code secret du client dans le code source de la visionneuse de WSI DICOM. Pour obtenir le code secret du client, procédez comme suit :
Accédez à la page Identifiants dans la console Google Cloud.
Accéder à la page "Identifiants"Cliquez sur Créer des identifiants, puis sélectionnez ID client OAuth.
Sous Type d'application, sélectionnez Application Web.
Ajoutez le nom de votre choix.
Dans les champs Origines JavaScript autorisées et URI de redirection autorisés, saisissez
http://localhost:8000
.Cliquez sur Créer, puis sur OK dans la fenêtre Client OAuth qui s'affiche. Copiez l'ID client pour l'utiliser dans la section suivante.
Configurer le code secret du client dans la visionneuse
Effectuez la procédure suivante en utilisant l'ID client que vous avez obtenu à la section précédente :
Dans le répertoire
dicomweb-wsi-viewer
, ouvrez le fichierviewer.js
.Remplacez la ligne suivante afin qu'elle contienne votre ID client.
const CLIENT_ID = 'INSERT-YOUR-CLIENT-ID-HERE'
La ligne doit ressembler à l'exemple suivant :
const CLIENT_ID = 'PROJECT_ID-VALUE.apps.googleusercontent.com';
Enregistrez le fichier.
Configurer l'écran d'autorisation OAuth
Si vous n'avez pas encore configuré l'écran d'autorisation OAuth de votre projet Google Cloud, procédez comme suit :
Accédez à l'écran d'autorisation OAuth.
Accédez à l'écran d'autorisation OAuth.Sous Adresse e-mail d'assistance, sélectionnez l'adresse e-mail que vous souhaitez afficher en tant que contact public. Celle-ci doit correspondre à votre adresse e-mail ou à un groupe Google dont vous êtes le propriétaire.
Saisissez le nom de l'application que vous souhaitez afficher.
Cliquez sur Ajouter un champ d'application. Dans la boîte de dialogue qui s'affiche, saisissez
https://www.googleapis.com/auth/cloud-healthcare
, puis cliquez sur Ajouter.Cliquez sur Save.
Pour modifier ultérieurement les informations affichées sur l'écran d'autorisation OAuth, comme le nom du produit ou l'adresse e-mail, répétez les étapes de configuration précédentes.
Si vous avez déjà configuré l'écran d'autorisation OAuth de votre projet Google Cloud, vous devez ajouter https://www.googleapis.com/auth/cloud-healthcare
dans la boîte de dialogue Ajouter un champ d'application.
Exécuter la visionneuse de WSI DICOMweb
Exécutez la commande suivante dans le répertoire
dicomweb-wsi-viewer
:python -m http.server 8000
Accédez à
https://localhost:8000
sur la machine où vous avez exécuté la commande précédente.Dans l'interface utilisateur, cliquez sur Connexion/Autoriser pour accéder à l'écran d'autorisation OAuth et autoriser la visionneuse à accéder à votre projet Google Cloud et aux ressources de l'API Cloud Healthcare.