Cette page explique comment utiliser la mise en œuvre de DICOMweb par l'API Cloud Healthcare pour stocker et gérer des données d'image DICOM.
Pour plus d'informations sur la manière dont l'API Cloud Healthcare met en œuvre divers services REST DICOMweb, consultez la déclaration de conformité DICOM.
Seule une architecture REST permet de mettre en œuvre le protocole DICOMweb dans l'API Cloud Healthcare. Le protocole RPC n'est pas compatible.
Installer la CLI DICOMweb de l'API Cloud Healthcare
Plusieurs exemples de cette page utilisent la CLI DICOMweb de l'API Cloud Healthcare, un outil Open Source qui simplifie l'interaction avec les serveurs DICOMweb. Il fournit des fonctionnalités de stockage, de récupération, de suppression et de recherche de fichiers DICOM. La page GitHub de l'outil contient des informations supplémentaires, telles que des conditions détaillées d'installation et des moyens de personnaliser l'outil.
L'outil s'exécute à l'aide de Python. Pour plus d'informations sur la configuration de Python sur Google Cloud, consultez la page Configurer un environnement de développement Python.
Après avoir configuré Python, vous pouvez installer l'outil à l'aide de PIP :
pip install https://github.com/GoogleCloudPlatform/healthcare-api-dicomweb-cli/archive/v1.0.zip
Pour utiliser l'outil, vous devez vous authentifier auprès des serveurs Google Cloud. Pour ce faire, utilisez l'une des méthodes suivantes :
- Définir la variable d'environnement
GOOGLE_APPLICATION_CREDENTIALS
- S'authentifier via Google Cloud CLI avec la commande
gcloud auth application-default login
Après avoir configuré l'une de ces options, l'outil détecte automatiquement vos identifiants.
Stocker des données DICOM
Avant de pouvoir stocker des données DICOM, vous devez créer un magasin DICOM.
L'API Cloud Healthcare met en œuvre la transaction en magasin. Service Web RESTful pour le stockage de données DICOM. Pour en savoir plus, consultez la section Transaction en magasin de la déclaration de conformité DICOM de l'API Cloud Healthcare.
Vous pouvez stocker des données DICOM à l'aide des méthodes suivantes. Dans les deux cas, vous devez transmettre un en-tête Accept application/dicom
dans votre requête.
- Stocker une instance DICOM (généralement un fichier
.dcm
). Stocker des métadonnées JSON DICOM avec des fichiers JPEG.
Toutes les requêtes de stockage de métadonnées JSON DICOM avec des fichiers JPEG sont composées de messages en plusieurs parties, désignés par la partie
multipart/related
de leurContent-Type
. La partiemultipart/related
deContent-Type
indique que la requête est composée de plusieurs parties de données qui sont combinées une fois la requête terminée. Chacun de ces ensembles de données doit être séparé à l'aide d'une limite, comme indiqué par la partieboundary
deContent-Type
.
Les exemples suivants montrent comment stocker une instance dans un magasin DICOM. Pour plus d'informations, consultez la page projects.locations.datasets.dicomStores.storeInstances
.
Stocker une instance DICOM
Les exemples suivants montrent comment stocker une instance DICOM. Pour en savoir plus, consultez les sections sur projects.locations.datasets.dicomStores.storeInstances
REST
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
PROJECT_ID
: ID de votre projet Google CloudLOCATION
: emplacement de l'ensemble de donnéesDATASET_ID
: ensemble de données parent du magasin DICOMDICOM_STORE_ID
: ID du magasin DICOMDICOM_INSTANCE_FILE
: chemin d'accès à un fichier d'instance DICOM sur votre ordinateur local, se terminant par le suffixe.dcm
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Exécutez la commande suivante :
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/dicom" \
--data-binary @DICOM_INSTANCE_FILE \
"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 POST `
-Headers $headers `
-InFile DICOM_INSTANCE_FILE `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies" | Select-Object -Expand Content
Go
Java
Node.js
Python
Spécifier la classe de stockage pour stocker des instances DICOM (version Preview)
Par défaut, la méthode projects.locations.datasets.dicomStores.storeInstances
stocke une instance DICOM dans un magasin DICOM avec une classe de stockage standard. Vous pouvez définir la classe de stockage lorsque vous stockez des objets DICOM à partir de votre machine locale.
Pour en savoir plus, consultez
Modifiez la classe de stockage DICOM.
Les exemples suivants montrent comment spécifier la classe de stockage lorsque vous stockez des objets DICOM à partir de votre machine locale.
curl
Utilisez le
projects.locations.datasets.dicomStores.storeInstances
.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
PROJECT_ID
: ID de votre projet Google CloudLOCATION
: emplacement de l'ensemble de donnéesDATASET_ID
: ensemble de données parent du magasin DICOMDICOM_STORE_ID
: ID du magasin DICOMDICOM_INSTANCE_FILE
: chemin d'accès à un fichier d'instance DICOM sur votre ordinateur local, se terminant par le suffixe.dcm
STORAGE_CLASS
: classe de stockage de l'instance DICOM dans le magasin DICOM deSTANDARD
,NEARLINE
,COLDLINE
etARCHIVE
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/dicom" \ -H "Storage-Class: STORAGE_CLASS" --data-binary @DICOM_INSTANCE_FILE \ "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies"
Si la requête aboutit, le serveur renvoie la réponse suivante :
<NativeDicomModel> <DicomAttribute tag="00081190" vr="UR" keyword="RetrieveURL"> <Value number="1">https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID</Value> </DicomAttribute> <DicomAttribute tag="00081199" vr="SQ" keyword="ReferencedSOPSequence"> <Item number="1"> <DicomAttribute tag="00081150" vr="UI" keyword="ReferencedSOPClassUID"> <Value number="1">SOP_CLASS_UID</Value> </DicomAttribute> <DicomAttribute tag="00081155" vr="UI" keyword="ReferencedSOPInstanceUID"> <Value number="1">SOP_INSTANCE_UID</Value> </DicomAttribute> <DicomAttribute tag="00081190" vr="UR" keyword="RetrieveURL"> <Value number="1">https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID</Value> </DicomAttribute> </Item> </DicomAttribute> </NativeDicomModel>
PowerShell
Utilisez la méthode projects.locations.datasets.dicomStores.storeInstances
.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
PROJECT_ID
: ID de votre projet Google CloudLOCATION
: emplacement de l'ensemble de donnéesDATASET_ID
: ensemble de données parent du magasin DICOMDICOM_STORE_ID
: ID du magasin DICOMDICOM_INSTANCE_FILE
: chemin d'accès à un fichier d'instance DICOM sur votre ordinateur local, se terminant par le suffixe.dcm
STORAGE_CLASS
: classe de stockage de l'instance DICOM dans le magasin DICOM deSTANDARD
,NEARLINE
,COLDLINE
etARCHIVE
$cred = gcloud auth application-default print-access-token $headers = @{ "Authorization" = "Bearer $cred"; "Storage-Class" = "STORAGE_CLASS" } Invoke-WebRequest ` -Method Post ` -Headers $headers ` -ContentType: "application/dicom" ` -InFile DCM_FILE.dcm ` -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies" | Select-Object -Expand Content
Si la requête aboutit, le serveur renvoie la réponse au format JSON :
<NativeDicomModel> <DicomAttribute tag="00081190" vr="UR" keyword="RetrieveURL"> <Value number="1">https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID</Value> </DicomAttribute> <DicomAttribute tag="00081199" vr="SQ" keyword="ReferencedSOPSequence"> <Item number="1"> <DicomAttribute tag="00081150" vr="UI" keyword="ReferencedSOPClassUID"> <Value number="1">SOP_CLASS_UID</Value> </DicomAttribute> <DicomAttribute tag="00081155" vr="UI" keyword="ReferencedSOPInstanceUID"> <Value number="1">SOP_INSTANCE_UID</Value> </DicomAttribute> <DicomAttribute tag="00081190" vr="UR" keyword="RetrieveURL"> <Value number="1">https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID</Value> </DicomAttribute> </Item> </DicomAttribute> </NativeDicomModel>
Créer des instances DICOM à partir de métadonnées JSON et d'images JPEG
L'API Cloud Healthcare peut créer des instances DICOM à l'aide de métadonnées JSON. et un fichier JPEG. Créez des instances DICOM à partir de métadonnées JSON et d'un fichier JPEG si vous préférez ne pas effectuer d'analyse et de sérialisation DICOM vous-même, car l'API Cloud Healthcare peut effectuer ces tâches à votre place.
La requête HTTP qui stocke ces données doit inclure les éléments suivants dans le fichier Content-Type
de la requête :
- Type de média
multipart/related
- Type MIME
application/dicom+json
- Un séparateur de type
boundary
Les exemples suivants montrent comment stocker un fichier de métadonnées JSON avec un fichier JPEG.
curl
L'exemple suivant suppose que vous avez une image JPEG existante.
L'enregistrement d'un fichier de métadonnées JSON avec une image JPEG comprend trois étapes :
- Créez un fichier contenant une représentation JSON d'une instance DICOM contenant une image JPEG. Un fichier de modèle est fourni ci-dessous.
Créez trois fichiers de limites :
opening.file
: contient la limite d'ouverture du fichier de métadonnées JSONmiddle.file
: contient la limite centrale de l'image JPEGclosing.file
: contient la limite de fermeture pour toutes les parties du message
Créez un fichier nommé
multipart-request.file
en plaçant le fichier de métadonnées JSON et l'image JPEG dans les fichiers de limites.
Notez les valeurs suivantes fournies par défaut dans le fichier de modèle de métadonnées JSON :
- L'UID de la syntaxe de transfert (
1.2.840.10008.1.2.4.50
) désigne la syntaxe de transfert en tant que référence JPEG. La plupart des images JPEG sont au format JPEG Baseline. La valeur d'interaction photométrique (YBR_FULL_422
) indique que l'image est en couleur et non en nuances de gris. BulkDataUri
est un descripteur arbitraire de l'image et, dans le modèle, il est défini surjpeg-image
. Cette valeur est utilisée lors de la création de la limite de l'image.
Les valeurs de SOP_CLASS_UID, SOP_INSTANCE_UID, STUDY_INSTANCE_UID et SERIES_INSTANCE_UID peuvent être n'importe quelle valeur numérique séparées par un point. DICOM applique une hiérarchie des identifiants pour les instances, les patients, les études et les séries. Choisissez donc un ensemble logique d'identifiants pour ces variables.
Remplacez SOP Class UID par une valeur issue de tableau des classes de SOP standard qui désigne le type d'image stockée.
Remplacez Rows par la hauteur verticale de l'image JPEG en pixels. Remplacez Columns par la largeur horizontale de l'image JPEG en pixels.
Procédez comme suit :
Enregistrez le texte suivant dans un fichier nommé
instance.json
en remplaçant les variables spécifiées.[{ "00020010":{"vr":"UI","Value":["1.2.840.10008.1.2.4.50"]}, "00080005":{"vr":"CS","Value":["ISO_IR 192"]}, "00080016":{"vr":"UI","Value":["SOP_CLASS_UID"]}, "00080018":{"vr":"UI","Value":["SOP_INSTANCE_UID"]}, "0020000D":{"vr":"UI","Value":["STUDY_INSTANCE_UID"]}, "0020000E":{"vr":"UI","Value":["SERIES_INSTANCE_UID"]}, "00280002":{"vr":"US","Value":[3]}, "00280004":{"vr":"CS","Value":["YBR_FULL_422"]}, "00280006":{"vr":"US","Value":[0]}, "00280008":{"vr":"IS","Value":[1]}, "00280010":{"vr":"US","Value":[Rows]}, "00280011":{"vr":"US","Value":[Columns]}, "00280100":{"vr":"US","Value":[8]}, "00280101":{"vr":"US","Value":[8]}, "00280102":{"vr":"US","Value":[7]}, "00280103":{"vr":"US","Value":[0]}, "7FE00010":{"vr":"OB","BulkDataURI":"jpeg-image"} }]
Pour créer les limites d'ouverture (pour les métadonnées JSON), centrales (pour l'image JPEG) et de fermeture, exécutez les commandes suivantes :
echo -ne "--DICOMwebBoundary\r\nContent-Type: application/dicom+json\r\n\r\n" > opening.file echo -ne "\r\n--DICOMwebBoundary\r\nContent-Location: jpeg-image\r\nContent-Type: image/jpeg; transfer-syntax=1.2.840.10008.1.2.4.50\r\n\r\n" > middle.file echo -ne "\r\n--DICOMwebBoundary--" > closing.file
Encapsulez l'image JPEG entre les limites du milieu et de la fermeture. Le fichier de sortie, que vous envoyez à l'API Cloud Healthcare, est dénommé
multipart-request.file
:cat opening.file instance.json middle.file image.jpg closing.file > multipart-request.file
Envoyez une requête
POST
et spécifiez les informations suivantes :- Nom de l'ensemble de données parent
- Le nom du magasin DICOM
- Le fichier
multipart-request.file
- Un jeton d'accès
L'exemple suivant montre une requête POST
utilisant curl
.
curl -X POST \ -H "Content-Type: multipart/related; type=\"application/dicom+json\"; boundary=DICOMwebBoundary" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies \ --data-binary @multipart-request.file
Si la requête aboutit, le serveur affiche la réponse au format XML :
<NativeDicomModel> <DicomAttribute tag="00081190" vr="UR" keyword="RetrieveURL"> <Value number="1">https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID</Value> </DicomAttribute> <DicomAttribute tag="00081199" vr="SQ" keyword="ReferencedSOPSequence"> <Item number="1"> <DicomAttribute tag="00081150" vr="UI" keyword="ReferencedSOPClassUID"> <Value number="1">SOP_CLASS_UID</Value> </DicomAttribute> <DicomAttribute tag="00081155" vr="UI" keyword="ReferencedSOPInstanceUID"> <Value number="1">SOP_INSTANCE_UID</Value> </DicomAttribute> <DicomAttribute tag="00081190" vr="UR" keyword="RetrieveURL"> <Value number="1">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</Value> </DicomAttribute> </Item> </DicomAttribute> </NativeDicomModel>
Utiliser la CLI DICOMweb
Les exemples suivants montrent comment utiliser le CLI DICOMweb de l'API Cloud Healthcare pour stocker une ou plusieurs instances DICOM. D'autres exemples sont disponibles dans le dépôt GitHub de la CLI DICOMweb.
Stockage d'une seule instance DICOM :
dcmweb \ https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb \ store DCM_FILE
Si la requête aboutit, le serveur affiche une réponse semblable à l'exemple suivant :
TIMESTAMP -- DCM_FILE.dcm uploaded as 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 TIMESTAMP -- INSTANCE_UID TIMESTAMP -- Transferred SIZE in COUNT files
Stocker plusieurs fichiers en parallèle à l'aide de caractères génériques :
L'exemple suivant montre comment stocker de manière récursive plusieurs fichiers DICOM en parallèle depuis le répertoire de travail actuel. Pour stocker les fichiers en parallèle, ajoutez l'option -m
.
dcmweb -m \ https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb \ store "./**.dcm"
Si la requête aboutit, le serveur affiche une réponse semblable à l'exemple suivant :
TIMESTAMP -- DCM_FILE_1.dcm uploaded as 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 TIMESTAMP -- INSTANCE_UID TIMESTAMP -- DCM_FILE_2.dcm uploaded as 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 TIMESTAMP -- INSTANCE_UID TIMESTAMP -- DCM_FILE_3.dcm uploaded as 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 TIMESTAMP -- INSTANCE_UID ... TIMESTAMP -- Transferred SIZE in COUNT files
Rechercher des données DICOM
Vous pouvez rechercher des études, des séries, des instances et des cadres. Les exemples suivants illustrent la mise en œuvre d'une transaction de recherche pour rechercher des instances dans un magasin DICOM. Pour en savoir plus, consultez la section Transaction de recherche de la déclaration de conformité DICOM de l'API Cloud Healthcare.
Les exemples suivants montrent comment rechercher des instances dans un magasin DICOM. Pour en savoir plus, consultez les sections sur projects.locations.datasets.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 CloudLOCATION
: emplacement de l'ensemble de donnéesDATASET_ID
: ensemble de données parent du magasin DICOMDICOM_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/instances"
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" | Select-Object -Expand Content
API Explorer
Ouvrez le 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 :
Go
Java
Node.js
Python
Rechercher à l'aide de tags DICOM
Vous pouvez affiner vos recherches en ajoutant des tags DICOM à vos requêtes sous la forme de paramètres de requête. Par exemple, vous pouvez rechercher des études contenant le nom d'un patient.
À l'instar des exemples précédents, les exemples suivants illustrent une implémentation de la méthode Rechercher une transaction pour rechercher des études dans un magasin DICOM. Toutefois, ces exemples montrent comment rechercher des études pour lesquelles le nom du patient est "Sally Zhang".
L'exemple suivant montre une partie des métadonnées d'une instance DICOM dans laquelle le nom du patient est répertorié :
...
{
"vr": "PN",
"Value": [
{
"Alphabetic": "Sally Zhang"
}
]
}
...
Pour rechercher des études dans un magasin DICOM qui concerne le patient, ajoutez un paramètre de requête lorsque vous effectuez la recherche à l'aide du tag DICOM PatientName
.
Pour obtenir la liste des paramètres de recherche compatibles avec l'API Cloud Healthcare, consultez la documentation sur le service Transaction de recherche.
REST
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
PROJECT_ID
: ID de votre projet Google CloudLOCATION
: emplacement de l'ensemble de donnéesDATASET_ID
: ensemble de données parent du magasin DICOMDICOM_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?PatientName=Sally%20Zhang"
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?PatientName=Sally%20Zhang" | 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 :
Go
Java
Node.js
Python
Utiliser la CLI DICOMweb
L'exemple suivant montre comment utiliser la classe CLI DICOMweb de l'API Cloud Healthcare pour rechercher des instances dans un magasin DICOM. D'autres exemples, y compris la manière de filtrer la recherche, sont disponibles dans le dépôt GitHub de la CLI DICOMweb.
dcmweb \ https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb \ search instances
Si la requête aboutit, le serveur renvoie la réponse au format JSON :
[ { "00080005":{ "vr":"CS", "Value":[ "CODE_STRING" ] }, "00080016":{ "vr":"UI", "Value":[ "UNIQUE_IDENTIFIER" ] }, "00080018":{ "vr":"UI", "Value":[ "UNIQUE_IDENTIFIER" ] }, "00080020":{ "vr":"DA", "Value":[ "DATE_TIME" ] }, "00080030":{ "vr":"TM", "Value":[ "TIME" ] }, "00080060":{ "vr":"CS", "Value":[ "CODE_STRING" ] }, "0008103E":{ "vr":"LO", "Value":[ "LONG_STRING" ] }, "00100010":{ "vr":"PN", "Value":[ { "Alphabetic":"Anonymized" } ] }, }, ... ]
Récupérer des données DICOM
L'API Cloud Healthcare met en œuvre l'option Récupérer la transaction. permettant de récupérer des études, des séries, des instances et des trames dans un magasin DICOM.
Pour en savoir plus, consultez la section Transaction de récupération dans la déclaration de conformité DICOM de l'API Cloud Healthcare.
Récupérer une étude
Les exemples suivants montrent comment récupérer une étude. Pour en savoir plus, consultez la section Étude/série/instances DICOM dans la déclaration de conformité DICOM de l'API Cloud Healthcare.
Lorsque vous spécifiez le fichier de sortie, utilisez une extension telle que .multipart
. Analysez ensuite le fichier en plusieurs parties pour obtenir les séries et instances individuelles de l'étude.
Pour en savoir plus, consultez les sections sur projects.locations.datasets.dicomStores.studies.retrieveStudy
curl
Pour récupérer une étude, 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'identifiant unique (UID) de l'étude
- Un fichier de sortie
- 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: multipart/related; type=application/dicom; transfer-syntax=*" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_INSTANCE_UID" \ --output FILENAME.multipart
Si la requête aboutit, le fichier DICOM est écrit sur votre ordinateur.
PowerShell
Pour récupérer une étude, 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'identifiant unique (UID) de l'étude
- Un fichier de sortie
- 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 = "multipart/related; type=application/dicom; transfer-syntax=*" } 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" | Select-Object -Expand Content -OutFile FILENAME.multipart `
Si la requête aboutit, le fichier DICOM est écrit sur votre ordinateur.
Go
Java
Node.js
Python
Récupérer une instance
Les exemples suivants montrent comment récupérer une instance. Pour en savoir plus, consultez la page Instances DICOM dans la déclaration de conformité DICOM de l'API Cloud Healthcare.
Si vous récupérez une instance, vous pouvez éviter d'avoir à analyser les limites en plusieurs parties à l'aide de l'en-tête HTTP Accept: application/dicom
. L'ajout de transfer-syntax=*
évite le transcodage en renvoyant le fichier dans son format d'origine.
Pour en savoir plus, consultez la page projects.locations.datasets.dicomStores.studies.series.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'identifiant unique (UID) de l'étude
- L'UID de la série, l'UID de l'instance
- Un nom de fichier de sortie
- 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; transfer-syntax=*" \ "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" \ --output FILENAME.dcm
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'identifiant unique (UID) de l'étude
- L'UID de la série
- L'UID de l'instance
- Un nom de fichier de sortie
- 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; transfer-syntax=*" } Invoke-RestMethod ` -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" -OutFile FILENAME.dcm `
Si la requête aboutit, le fichier DICOM est écrit sur votre ordinateur.
Go
Java
Node.js
Python
Récupérer des formats d'image courants
Les exemples suivants montrent comment récupérer un format d'image courant tel que JPEG ou PNG à l'aide de la mise en œuvre de ressources du rendu de l'API Cloud Healthcare. Pour plus d'informations, consultez la section Ressources du rendu dans la déclaration de conformité DICOM de l'API Cloud Healthcare.
Pour en savoir plus, consultez les sections sur projects.locations.datasets.dicomStores.studies.series.instances.retrieveRendered
curl
Pour récupérer une image, 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'identifiant unique (UID) de l'étude
- L'UID de la série
- L'UID de l'instance
- Un nom de fichier de sortie
- Un jeton d'accès
L'exemple suivant montre comment récupérer une image PNG avec une requête GET
à l'aide de curl
.
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default 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/rendered" \ --output FILENAME.png
Si la requête aboutit, le fichier PNG est écrit sur votre ordinateur.
PowerShell
Pour récupérer une image, 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'identifiant unique (UID) de l'étude
- L'UID de la série
- L'UID de l'instance
- Un nom de fichier de sortie
- Un jeton d'accès
L'exemple suivant montre comment récupérer une image PNG avec une requête GET
à l'aide de Windows PowerShell.
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred"; Accept = "image/png" } Invoke-RestMethod ` -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/rendered" -OutFile FILENAME.png `
Si la requête aboutit, le fichier PNG est écrit sur votre ordinateur.
Go
Java
Node.js
Python
Récupérer les métadonnées
Vous pouvez récupérer les métadonnées de toutes les instances d'une étude ou d'une série. L'exemple suivant montre comment récupérer les métadonnées d'une instance. Pour en savoir plus, consultez la section Ressources de métadonnées dans la déclaration de conformité de l'API Cloud Healthcare.
Pour en savoir plus, consultez la page projects.locations.datasets.dicomStores.studies.series.instances.retrieveMetadata
.
Lorsque vous appelez retrieveMetadata
, la méthode renvoie le même ensemble de champs que ceux qui sont renvoyés lorsque vous recherchez une instance avec le paramètre de requête includefield=all
. Si votre application est sensible à la latence et que vous souhaitez récupérer les métadonnées d'un ensemble spécifique de champs (et non de tous les champs), n'appelez pas retrieveMetadata
. Appelez plutôt l'une des méthodes searchForInstances
et spécifiez les champs. La réponse sera un ensemble de champs plus petits et un plus petit ensemble, ce qui facilite les opérations pour les applications sensibles à la latence.
Par défaut, retrieveMetadata
renvoie une réponse JSON. Pour renvoyer une réponse XML, transmettez un en-tête HTTP Accept: multipart/related; type="application/dicom+xml"
dans votre requête.
REST
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
PROJECT_ID
: ID de votre projet Google CloudLOCATION
: emplacement de l'ensemble de donnéesDATASET_ID
: ensemble de données parent du magasin DICOMDICOM_STORE_ID
: ID du magasin DICOMSTUDY_INSTANCE_UID
: identifiant unique de l'instance d'étudeSERIES_INSTANCE_UID
: identifiant unique de l'instance de la sérieINSTANCE_UID
: identifiant unique de l'instance
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/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID/metadata"
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/STUDY_INSTANCE_UID/series/SERIES_INSTANCE_UID/instances/INSTANCE_UID/metadata" | 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 :
Récupérer les données groupées
Vous pouvez récupérer les octets bruts d'une balise bulkdata spécifique dans une instance stockée. Lors de la récupération de métadonnées à partir d'une instance à l'aide de méthodes d'aperçu, BulkDataURIs seront générées pour les balises de données groupées acceptées (voir Définition des données groupées).
Pour en savoir plus, consultez la page projects.locations.datasets.dicomStores.studies.series.instances.bulkdata.retrieveBulkdata
.
Dans l'exemple suivant, l'URL de requête est créée directement en fonction du nom
chemin d'accès d'un tag Bulkdata (sans utiliser retrieveMetadata
pour obtenir le
BulkDataURI).
curl
Pour récupérer des données en masse, 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'identifiant unique (UID) de l'étude
- L'UID de la série
- L'UID de l'instance
- Chemin d'accès de la balise de données groupées cible
- Pour une balise (XXXX,XXXX) dans une séquence (YYYY,YYYY) à l'indice i, le chemin d'accès est "YYYYYYYY/i/XXXXXXXX".
- Un nom de fichier de sortie
- Un jeton d'accès
L'exemple suivant montre comment récupérer un fichier DAT avec une requête GET
à l'aide de curl
.
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Accept: application/octet-stream; transfer-syntax=*" \ "https://healthcare.googleapis.com/v1beta1/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/BULKDATA_PATH" \ --output FILENAME.dat
Si la requête aboutit, le fichier DAT contenant les octets bruts de l'instance est écrit sur votre ordinateur.
PowerShell
Pour récupérer des données en masse, 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'identifiant unique (UID) de l'étude
- L'UID de la série
- L'UID de l'instance
- Chemin d'accès de la balise de données groupées cible
- Pour une balise (XXXX,XXXX) dans une séquence (YYYY,YYYY) à l'indice i, le chemin d'accès est "YYYYYYYY/i/XXXXXXXX".
- Un nom de fichier de sortie
- Un jeton d'accès
L'exemple suivant montre comment
récupérer un fichier DAT avec
une requête GET
à l'aide de Windows PowerShell.
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred"; Accept = "application/octet-stream; transfer-syntax=*" } Invoke-RestMethod ` -Method Get ` -Headers $headers ` -Uri "https://healthcare.googleapis.com/v1beta1/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/BULKDATA_PATH" -OutFile FILENAME.DAT `
Si la requête aboutit, le fichier DAT contenant les octets bruts du est écrite sur votre machine.
Utiliser la CLI DICOMweb
L'exemple suivant montre comment utiliser la CLIweb de l'API Cloud Healthcare pour récupérer toutes les instances d'un magasin DICOM et les enregistrer sur votre ordinateur dans le répertoire de travail actuel. D'autres exemples sont disponibles dans le dépôt GitHub de la CLI DICOMweb.
dcmweb \ https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb \ retrieve
Si la requête aboutit, le serveur renvoie une réponse semblable à la suivante et les fichiers DICOM sont écrits sur votre ordinateur :
TIMESTAMP -- Saving files into ./ TIMESTAMP -- Transferred SIZE in COUNT files
Supprimer une étude, une série ou une instance
L'API Cloud Healthcare met en œuvre un service Web propriétaire pour la suppression d'études, de séries et d'instances DICOM. Ce service ne fait pas partie des services standards de DICOMweb. Pour en savoir plus, consultez la section Supprimer dans la déclaration de conformité DICOM de l'API Cloud Healthcare.
Les requêtes de suppression des études et des séries renvoient une opération de longue durée. Une fois l'opération terminée, toutes les instances de l'étude ou de la série sont supprimées.
Les requêtes de suppression pour les instances ne renvoient pas d'opération de longue durée, mais renvoient un corps de réponse vide comme celui-ci :
{}
Les exemples suivants montrent comment supprimer une étude DICOM. Pour en savoir plus, consultez la page projects.locations.datasets.dicomStores.studies.delete
.
REST
Supprimez l'étude.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
PROJECT_ID
: ID de votre projet Google CloudLOCATION
: emplacement de l'ensemble de donnéesDATASET_ID
: ensemble de données parent du magasin DICOMDICOM_STORE_ID
: ID du magasin DICOMSTUDY_INSTANCE_UID
: identifiant unique de l'instance d'étude
Pour envoyer votre requête, choisissez l'une des options suivantes :
curl
Exécutez la commande suivante :
curl -X DELETE \
-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/STUDY_INSTANCE_UID"PowerShell
Exécutez la commande suivante :
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method DELETE `
-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" | Select-Object -Expand ContentAPI Explorer
Ouvrez le 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 :
Obtenez l'état de l'opération de longue durée.
Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :
PROJECT_ID
: ID de votre projet Google CloudLOCATION
: emplacement de l'ensemble de donnéesDATASET_ID
: ensemble de données parent du magasin DICOMOPERATION_ID
: ID renvoyé par l'opération de longue durée
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/operations/OPERATION_ID"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/operations/OPERATION_ID" | Select-Object -Expand ContentAPI Explorer
Ouvrez le 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 :
Go
Java
Node.js
Python
Utiliser la CLI DICOMweb
L'exemple suivant montre comment utiliser la classe CLI DICOMweb de l'API Cloud Healthcare pour supprimer une étude:
dcmweb \ https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb \ delete studies/STUDY_INSTANCE_UID
Si la requête aboutit, le serveur affiche une opération que l'outil CLI interroge jusqu'à la fin de l'opération de suppression.