D’autres exemples de kits AWS SDK sont disponibles dans le référentiel GitHub AWS Doc SDK Examples
Utilisation de UpdateImageSetMetadata avec un kit AWS SDK ou une interface de ligne de commande
Les exemples de code suivants illustrent comment utiliser UpdateImageSetMetadata.
- CLI
-
- AWS CLI
-
Exemple 1 : pour insérer ou mettre à jour un attribut dans les métadonnées d’un ensemble d’images
L’exemple
update-image-set-metadatasuivant insère ou met à jour un attribut dans les métadonnées d’un ensemble d’images.aws medical-imaging update-image-set-metadata \ --datastore-id12345678901234567890123456789012\ --image-set-idea92b0d8838c72a3f25d00d13616f87e\ --latest-version-id1\ --cli-binary-formatraw-in-base64-out\ --update-image-set-metadata-updatesfile://metadata-updates.jsonContenu de
metadata-updates.json{ "DICOMUpdates": { "updatableAttributes": "{\"SchemaVersion\":1.1,\"Patient\":{\"DICOM\":{\"PatientName\":\"MX^MX\"}}}" } }Sortie :
{ "latestVersionId": "2", "imageSetWorkflowStatus": "UPDATING", "updatedAt": 1680042257.908, "imageSetId": "ea92b0d8838c72a3f25d00d13616f87e", "imageSetState": "LOCKED", "createdAt": 1680027126.436, "datastoreId": "12345678901234567890123456789012" }Exemple 2 : pour supprimer un attribut des métadonnées d’un ensemble d’images
L’exemple
update-image-set-metadatasuivant supprime un attribut des métadonnées d’un ensemble d’images.aws medical-imaging update-image-set-metadata \ --datastore-id12345678901234567890123456789012\ --image-set-idea92b0d8838c72a3f25d00d13616f87e\ --latest-version-id1\ --cli-binary-formatraw-in-base64-out\ --update-image-set-metadata-updatesfile://metadata-updates.jsonContenu de
metadata-updates.json{ "DICOMUpdates": { "removableAttributes": "{\"SchemaVersion\":1.1,\"Study\":{\"DICOM\":{\"StudyDescription\":\"CHEST\"}}}" } }Sortie :
{ "latestVersionId": "2", "imageSetWorkflowStatus": "UPDATING", "updatedAt": 1680042257.908, "imageSetId": "ea92b0d8838c72a3f25d00d13616f87e", "imageSetState": "LOCKED", "createdAt": 1680027126.436, "datastoreId": "12345678901234567890123456789012" }Exemple 3 : pour supprimer une instance des métadonnées d’un ensemble d’images
L’exemple
update-image-set-metadatasuivant supprime une instance des métadonnées d’un ensemble d’images.aws medical-imaging update-image-set-metadata \ --datastore-id12345678901234567890123456789012\ --image-set-idea92b0d8838c72a3f25d00d13616f87e\ --latest-version-id1\ --cli-binary-formatraw-in-base64-out\ --update-image-set-metadata-updatesfile://metadata-updates.jsonContenu de
metadata-updates.json{ "DICOMUpdates": { "removableAttributes": "{\"SchemaVersion\": 1.1,\"Study\": {\"Series\": {\"1.1.1.1.1.1.12345.123456789012.123.12345678901234.1\": {\"Instances\": {\"1.1.1.1.1.1.12345.123456789012.123.12345678901234.1\": {}}}}}}" } }Sortie :
{ "latestVersionId": "2", "imageSetWorkflowStatus": "UPDATING", "updatedAt": 1680042257.908, "imageSetId": "ea92b0d8838c72a3f25d00d13616f87e", "imageSetState": "LOCKED", "createdAt": 1680027126.436, "datastoreId": "12345678901234567890123456789012" }Exemple 4 : pour rétablir une version précédente d’un ensemble d’images
L’exemple
update-image-set-metadatasuivant montre comment rétablir une version précédente d’un ensemble d’images. Les actions CopyImageSet et UpdateImageSetMetadata créent de nouvelles versions d’ensembles d’images.aws medical-imaging update-image-set-metadata \ --datastore-id12345678901234567890123456789012\ --image-set-id53d5fdb05ca4d46ac7ca64b06545c66e\ --latest-version-id3\ --cli-binary-formatraw-in-base64-out\ --update-image-set-metadata-updates '{"revertToVersionId": "1"}'Sortie :
{ "datastoreId": "12345678901234567890123456789012", "imageSetId": "53d5fdb05ca4d46ac7ca64b06545c66e", "latestVersionId": "4", "imageSetState": "LOCKED", "imageSetWorkflowStatus": "UPDATING", "createdAt": 1680027126.436, "updatedAt": 1680042257.908 }Exemple 5 : pour ajouter un élément de données DICOM privé à une instance
L’exemple
update-image-set-metadatasuivant montre comment ajouter un élément privé à une instance spécifiée dans un ensemble d’images. La norme DICOM autorise les éléments de données privés pour la communication d’informations qui ne peuvent être contenues dans les éléments de données standard. Vous pouvez créer, mettre à jour et supprimer des éléments de données privés à l’aide de l’action UpdateImageSetMetadata.aws medical-imaging update-image-set-metadata \ --datastore-id12345678901234567890123456789012\ --image-set-id53d5fdb05ca4d46ac7ca64b06545c66e\ --latest-version-id1\ --cli-binary-formatraw-in-base64-out\ --force \ --update-image-set-metadata-updatesfile://metadata-updates.jsonContenu de
metadata-updates.json{ "DICOMUpdates": { "updatableAttributes": "{\"SchemaVersion\": 1.1,\"Study\": {\"Series\": {\"1.1.1.1.1.1.12345.123456789012.123.12345678901234.1\": {\"Instances\": {\"1.1.1.1.1.1.12345.123456789012.123.12345678901234.1\": {\"DICOM\": {\"001910F9\": \"97\"},\"DICOMVRs\": {\"001910F9\": \"DS\"}}}}}}}" } }Sortie :
{ "latestVersionId": "2", "imageSetWorkflowStatus": "UPDATING", "updatedAt": 1680042257.908, "imageSetId": "53d5fdb05ca4d46ac7ca64b06545c66e", "imageSetState": "LOCKED", "createdAt": 1680027126.436, "datastoreId": "12345678901234567890123456789012" }Exemple 6 : pour mettre à jour un élément de données DICOM privé vers une instance
L’exemple
update-image-set-metadatasuivant montre comment mettre à jour la valeur d’un élément de données privé appartenant à une instance au sein d’un ensemble d’images.aws medical-imaging update-image-set-metadata \ --datastore-id12345678901234567890123456789012\ --image-set-id53d5fdb05ca4d46ac7ca64b06545c66e\ --latest-version-id1\ --cli-binary-formatraw-in-base64-out\ --force \ --update-image-set-metadata-updatesfile://metadata-updates.jsonContenu de
metadata-updates.json{ "DICOMUpdates": { "updatableAttributes": "{\"SchemaVersion\": 1.1,\"Study\": {\"Series\": {\"1.1.1.1.1.1.12345.123456789012.123.12345678901234.1\": {\"Instances\": {\"1.1.1.1.1.1.12345.123456789012.123.12345678901234.1\": {\"DICOM\": {\"00091001\": \"GE_GENESIS_DD\"}}}}}}}" } }Sortie :
{ "latestVersionId": "2", "imageSetWorkflowStatus": "UPDATING", "updatedAt": 1680042257.908, "imageSetId": "53d5fdb05ca4d46ac7ca64b06545c66e", "imageSetState": "LOCKED", "createdAt": 1680027126.436, "datastoreId": "12345678901234567890123456789012" }Exemple 7 : pour mettre à jour un SOPInstanceUID avec le paramètre de force
L’exemple
update-image-set-metadatasuivant montre comment mettre à jour un SOPInstanceUID en utilisant le paramètre de force pour contourner les contraintes de métadonnées DICOM.aws medical-imaging update-image-set-metadata \ --datastore-id12345678901234567890123456789012\ --image-set-id53d5fdb05ca4d46ac7ca64b06545c66e\ --latest-version-id1\ --cli-binary-formatraw-in-base64-out\ --force \ --update-image-set-metadata-updatesfile://metadata-updates.jsonContenu de
metadata-updates.json{ "DICOMUpdates": { "updatableAttributes": "{\"SchemaVersion\":1.1,\"Study\":{\"Series\":{\"1.3.6.1.4.1.5962.99.1.3633258862.2104868982.1369432891697.3656.0\":{\"Instances\":{\"1.3.6.1.4.1.5962.99.1.3633258862.2104868982.1369432891697.3659.0\":{\"DICOM\":{\"SOPInstanceUID\":\"1.3.6.1.4.1.5962.99.1.3633258862.2104868982.1369432891697.3659.9\"}}}}}}}" } }Sortie :
{ "latestVersionId": "2", "imageSetWorkflowStatus": "UPDATING", "updatedAt": 1680042257.908, "imageSetId": "53d5fdb05ca4d46ac7ca64b06545c66e", "imageSetState": "LOCKED", "createdAt": 1680027126.436, "datastoreId": "12345678901234567890123456789012" }Pour plus d’informations, consultez Mise à jour des métadonnées des ensembles d’images dans le Guide du développeur AWS HealthImaging.
-
Pour plus de détails sur l’API, consultez UpdateImageSetMetadata
dans la Référence des commandes de l’AWS CLI.
-
- Java
-
- SDK pour Java 2.x
-
/** * Update the metadata of an AWS HealthImaging image set. * * @param medicalImagingClient - The AWS HealthImaging client object. * @param datastoreId - The datastore ID. * @param imageSetId - The image set ID. * @param versionId - The version ID. * @param metadataUpdates - A MetadataUpdates object containing the updates. * @param force - The force flag. * @throws MedicalImagingException - Base exception for all service exceptions thrown by AWS HealthImaging. */ public static void updateMedicalImageSetMetadata(MedicalImagingClient medicalImagingClient, String datastoreId, String imageSetId, String versionId, MetadataUpdates metadataUpdates, boolean force) { try { UpdateImageSetMetadataRequest updateImageSetMetadataRequest = UpdateImageSetMetadataRequest .builder() .datastoreId(datastoreId) .imageSetId(imageSetId) .latestVersionId(versionId) .updateImageSetMetadataUpdates(metadataUpdates) .force(force) .build(); UpdateImageSetMetadataResponse response = medicalImagingClient.updateImageSetMetadata(updateImageSetMetadataRequest); System.out.println("The image set metadata was updated" + response); } catch (MedicalImagingException e) { System.err.println(e.awsErrorDetails().errorMessage()); throw e; } }Cas d’utilisation n° 1 : insérer ou mettre à jour un attribut.
final String insertAttributes = """ { "SchemaVersion": 1.1, "Study": { "DICOM": { "StudyDescription": "CT CHEST" } } } """; MetadataUpdates metadataInsertUpdates = MetadataUpdates.builder() .dicomUpdates(DICOMUpdates.builder() .updatableAttributes(SdkBytes.fromByteBuffer( ByteBuffer.wrap(insertAttributes .getBytes(StandardCharsets.UTF_8)))) .build()) .build(); updateMedicalImageSetMetadata(medicalImagingClient, datastoreId, imagesetId, versionid, metadataInsertUpdates, force);Cas d’utilisation n° 2 : supprimer un attribut.
final String removeAttributes = """ { "SchemaVersion": 1.1, "Study": { "DICOM": { "StudyDescription": "CT CHEST" } } } """; MetadataUpdates metadataRemoveUpdates = MetadataUpdates.builder() .dicomUpdates(DICOMUpdates.builder() .removableAttributes(SdkBytes.fromByteBuffer( ByteBuffer.wrap(removeAttributes .getBytes(StandardCharsets.UTF_8)))) .build()) .build(); updateMedicalImageSetMetadata(medicalImagingClient, datastoreId, imagesetId, versionid, metadataRemoveUpdates, force);Cas d’utilisation n° 3 : supprimer une instance.
final String removeInstance = """ { "SchemaVersion": 1.1, "Study": { "Series": { "1.1.1.1.1.1.12345.123456789012.123.12345678901234.1": { "Instances": { "1.1.1.1.1.1.12345.123456789012.123.12345678901234.1": {} } } } } } """; MetadataUpdates metadataRemoveUpdates = MetadataUpdates.builder() .dicomUpdates(DICOMUpdates.builder() .removableAttributes(SdkBytes.fromByteBuffer( ByteBuffer.wrap(removeInstance .getBytes(StandardCharsets.UTF_8)))) .build()) .build(); updateMedicalImageSetMetadata(medicalImagingClient, datastoreId, imagesetId, versionid, metadataRemoveUpdates, force);Cas d’utilisation n° 4 : revenir à une version précédente.
// In this case, revert to previous version. String revertVersionId = Integer.toString(Integer.parseInt(versionid) - 1); MetadataUpdates metadataRemoveUpdates = MetadataUpdates.builder() .revertToVersionId(revertVersionId) .build(); updateMedicalImageSetMetadata(medicalImagingClient, datastoreId, imagesetId, versionid, metadataRemoveUpdates, force);-
Pour plus d’informations sur l’API, consultez UpdateImageSetMetadata dans la Référence des API du kit AWS SDK for Java 2.x.
Note
Il y en a plus sur GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples de code AWS
. -
- JavaScript
-
- Kit SDK pour JavaScript (v3)
-
import { UpdateImageSetMetadataCommand } from "@aws-sdk/client-medical-imaging"; import { medicalImagingClient } from "../libs/medicalImagingClient.js"; /** * @param {string} datastoreId - The ID of the HealthImaging data store. * @param {string} imageSetId - The ID of the HealthImaging image set. * @param {string} latestVersionId - The ID of the HealthImaging image set version. * @param {{}} updateMetadata - The metadata to update. * @param {boolean} force - Force the update. */ export const updateImageSetMetadata = async ( datastoreId = "xxxxxxxxxx", imageSetId = "xxxxxxxxxx", latestVersionId = "1", updateMetadata = "{}", force = false, ) => { try { const response = await medicalImagingClient.send( new UpdateImageSetMetadataCommand({ datastoreId: datastoreId, imageSetId: imageSetId, latestVersionId: latestVersionId, updateImageSetMetadataUpdates: updateMetadata, force: force, }), ); console.log(response); // { // '$metadata': { // httpStatusCode: 200, // requestId: '7966e869-e311-4bff-92ec-56a61d3003ea', // extendedRequestId: undefined, // cfId: undefined, // attempts: 1, // totalRetryDelay: 0 // }, // createdAt: 2023-09-22T14:49:26.427Z, // datastoreId: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', // imageSetId: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', // imageSetState: 'LOCKED', // imageSetWorkflowStatus: 'UPDATING', // latestVersionId: '4', // updatedAt: 2023-09-27T19:41:43.494Z // } return response; } catch (err) { console.error(err); } };Cas d’utilisation n° 1 : insérer ou mettre à jour un attribut et forcer la mise à jour.
const insertAttributes = JSON.stringify({ SchemaVersion: 1.1, Study: { DICOM: { StudyDescription: "CT CHEST", }, }, }); const updateMetadata = { DICOMUpdates: { updatableAttributes: new TextEncoder().encode(insertAttributes), }, }; await updateImageSetMetadata( datastoreID, imageSetID, versionID, updateMetadata, true, );Cas d’utilisation n° 2 : supprimer un attribut.
// Attribute key and value must match the existing attribute. const remove_attribute = JSON.stringify({ SchemaVersion: 1.1, Study: { DICOM: { StudyDescription: "CT CHEST", }, }, }); const updateMetadata = { DICOMUpdates: { removableAttributes: new TextEncoder().encode(remove_attribute), }, }; await updateImageSetMetadata( datastoreID, imageSetID, versionID, updateMetadata, );Cas d’utilisation n° 3 : supprimer une instance.
const remove_instance = JSON.stringify({ SchemaVersion: 1.1, Study: { Series: { "1.1.1.1.1.1.12345.123456789012.123.12345678901234.1": { Instances: { "1.1.1.1.1.1.12345.123456789012.123.12345678901234.1": {}, }, }, }, }, }); const updateMetadata = { DICOMUpdates: { removableAttributes: new TextEncoder().encode(remove_instance), }, }; await updateImageSetMetadata( datastoreID, imageSetID, versionID, updateMetadata, );Cas d’utilisation n° 4 : revenir à une version antérieure.
const updateMetadata = { revertToVersionId: "1", }; await updateImageSetMetadata( datastoreID, imageSetID, versionID, updateMetadata, );-
Pour plus d’informations sur l’API, consultez UpdateImageSetMetadata dans la Référence des API du kit AWS SDK pour JavaScript.
Note
Il y en a plus sur GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples de code AWS
. -
- Python
-
- Kit SDK pour Python (Boto3)
-
class MedicalImagingWrapper: def __init__(self, health_imaging_client): self.health_imaging_client = health_imaging_client def update_image_set_metadata( self, datastore_id, image_set_id, version_id, metadata, force=False ): """ Update the metadata of an image set. :param datastore_id: The ID of the data store. :param image_set_id: The ID of the image set. :param version_id: The ID of the image set version. :param metadata: The image set metadata as a dictionary. For example {"DICOMUpdates": {"updatableAttributes": "{\"SchemaVersion\":1.1,\"Patient\":{\"DICOM\":{\"PatientName\":\"Garcia^Gloria\"}}}"}} :param: force: Force the update. :return: The updated image set metadata. """ try: updated_metadata = self.health_imaging_client.update_image_set_metadata( imageSetId=image_set_id, datastoreId=datastore_id, latestVersionId=version_id, updateImageSetMetadataUpdates=metadata, force=force, ) except ClientError as err: logger.error( "Couldn't update image set metadata. Here's why: %s: %s", err.response["Error"]["Code"], err.response["Error"]["Message"], ) raise else: return updated_metadataLe code suivant instancie l’objet MedicalImagingWrapper.
client = boto3.client("medical-imaging") medical_imaging_wrapper = MedicalImagingWrapper(client)Cas d’utilisation n° 1 : insérer ou mettre à jour un attribut.
attributes = """{ "SchemaVersion": 1.1, "Study": { "DICOM": { "StudyDescription": "CT CHEST" } } }""" metadata = {"DICOMUpdates": {"updatableAttributes": attributes}} self.update_image_set_metadata( data_store_id, image_set_id, version_id, metadata, force )Cas d’utilisation n° 2 : supprimer un attribut.
# Attribute key and value must match the existing attribute. attributes = """{ "SchemaVersion": 1.1, "Study": { "DICOM": { "StudyDescription": "CT CHEST" } } }""" metadata = {"DICOMUpdates": {"removableAttributes": attributes}} self.update_image_set_metadata( data_store_id, image_set_id, version_id, metadata, force )Cas d’utilisation n° 3 : supprimer une instance.
attributes = """{ "SchemaVersion": 1.1, "Study": { "Series": { "1.1.1.1.1.1.12345.123456789012.123.12345678901234.1": { "Instances": { "1.1.1.1.1.1.12345.123456789012.123.12345678901234.1": {} } } } } }""" metadata = {"DICOMUpdates": {"removableAttributes": attributes}} self.update_image_set_metadata( data_store_id, image_set_id, version_id, metadata, force )Cas d’utilisation n° 4 : revenir à une version antérieure.
metadata = {"revertToVersionId": "1"} self.update_image_set_metadata( data_store_id, image_set_id, version_id, metadata, force )-
Pour plus de détails sur l’API, consultez UpdateImageSetMetadata dans la Référence des API du kit AWS SDK for Python (Boto3).
Note
Il y en a plus sur GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples de code AWS
. -