Anonymiser des données DICOM à l'aide de DicomTagConfig

Cette page explique comment utiliser la configuration DicomTagConfig v1beta1 de l'API Cloud Healthcare pour anonymiser des données sensibles dans les instances DICOM aux niveaux suivants:

Cette page explique également comment appliquer des filtres lors de l'anonymisation des données au niveau du magasin DICOM.

Vous pouvez configurer des opérations d'anonymisation DICOM à l'aide de l'ancien objet DicomConfig v1 ou de l'objet DicomTagConfig v1beta1. Nous vous recommandons vivement d'utiliser DicomTagConfig.

Si vous utilisez déjà DicomConfig pour vos opérations d'anonymisation, nous vous encourageons à migrer vers DicomTagConfig. Pour obtenir un résumé des nouvelles fonctionnalités, consultez Nouvelles options de configuration dans DicomTagConfig. Pour obtenir des instructions sur la migration, consultez Migrer les requêtes et les réponses pour utiliser DicomTagConfig.

Nouvelles options de configuration dans DicomTagConfig

Anonymiser du texte avec l'anonymisation contextuelle

Vous pouvez configurer l'objet DicomTagConfig.Options.CleanDescriptorsOption pour activer l'anonymisation contextuelle des textes de métadonnées non structurés. Cette option est basée sur l'option Nettoyer les descripteurs. Lorsque vous spécifiez DicomTagConfig.Options.CleanDescriptorsOption, un infoType supplémentaire est utilisé lors de l'inspection, ce qui peut affecter les coûts facturés.

L'utilisation de l'option DicomTagConfig.Options.CleanDescriptorsOption transforme tout texte de métadonnées non structuré correspondant aux balises supprimées, ce qui améliore la qualité de l'anonymisation. Par exemple, supposons que vous anonymisiez une radiographie et que le patient porte un nom de famille qui est également un nom, tel que Wall. Si des métadonnées de l'instance, telles que le texte de StudyDescription, contiennent le mot Wall, le texte sera transformé.

L'option CleanDescriptorsOption masque les expressions contextuelles qui correspondent aux balises marquées pour suppression dans le profil de base DICOM, à condition qu'elles correspondent à l'un des codes d'action suivants:

  • D
  • Z
  • X
  • U

Les expressions contextuelles correspondantes sont remplacées par le jeton [CTX].

Vous pouvez configurer les balises masquées à l'aide des éléments suivants:

  • Une énumération dans l'objet ProfileType. Il n'est pas nécessaire de spécifier une énumération.
  • Le filtre CleanTextTag permet d'afficher des balises spécifiques.

Toutefois, les tags utilisés dans le profil de base DICOM ne peuvent pas être modifiés.

Masquer le texte incrusté avec l'anonymisation contextuelle

Vous pouvez spécifier l'énumération TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS pour permettre l'anonymisation contextuelle du texte incrusté dans une image. Cette option est basée sur l'option Nettoyer les descripteurs. Lorsque vous spécifiez l'énumération TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS, un infoType supplémentaire est utilisé lors de l'inspection, ce qui peut affecter les coûts de facturation.

Vous pouvez spécifier l'énumération TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS de différentes manières:

L'option TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS masque le texte incrusté qui correspond aux balises marquées pour suppression dans le profil de base DICOM, à condition qu'elles correspondent à l'un des codes d'action suivants:

  • D
  • Z
  • X
  • U

Il n'existe aucune configuration supplémentaire pour l'anonymisation contextuelle du texte incrusté, mise à part l'activation ou la désactivation à l'aide d'une énumération dans l'objet ProfileType. Il n'est pas nécessaire de spécifier une énumération.

infoTypes supplémentaires dans l'anonymisation des images

Vous pouvez utiliser des types d'informations (infoTypes) pour spécifier les données à analyser lors de l'anonymisation des balises. Un infoType est un type de données sensibles, par exemple un nom de patient, une adresse e-mail, un numéro de téléphone, un numéro d'identification ou un numéro de carte de crédit.

Vous pouvez configurer les champs suivants dans l'objet DicomTagConfig.Options.ImageConfig pour déterminer les infoTypes à utiliser lors de l'anonymisation des images DICOM:

Ces champs ne prennent effet que si DicomTagConfig.Options.ImageConfig.TextRedactionMode est défini sur l'une des valeurs suivantes:

Migrer les requêtes et les réponses pour utiliser DicomTagConfig

Vous pouvez configurer l'anonymisation DICOM à l'aide de DicomTagConfig, disponible dans l'API Cloud Healthcare v1beta1 et qui constitue une alternative à l'utilisation de l'ancien DicomConfig. Lorsque vous envoyez une demande, vous ne pouvez pas inclure à la fois DicomConfig et DicomTagConfig.

Les sections suivantes décrivent les configurations de DicomConfig et comment les migrer vers DicomTagConfig.

De TagFilterProfile à ProfileType

Remplacez l'objet DicomConfig TagFilterProfile par l'objet DicomTagConfig ProfileType. Les quatre mêmes profils dans TagFilterProfileType sont disponibles dans ProfileType.

L'exemple suivant montre comment migrer une requête de TagFilterProfile vers ProfileType:

DicomConfigDicomTagConfig
"config": {
  "dicom": {
    "filterProfile": enum(TagFilterProfile)
  }
}
"config": {
  "dicomTagConfig": {
    "profileType": enum(ProfileType)
  }
}

keepList et removeList

Les champs DicomConfig keepList et removeList ne sont plus disponibles dans DicomTagConfig. Si vous avez utilisé keepList et removeList pour spécifier les balises à conserver ou à supprimer au lieu d'utiliser un profil, vous devez migrer vers le nouvel objet Action dans lequel vous spécifiez le comportement des balises. L'objet Action fournit des options supplémentaires pour transformer les tags.

L'exemple suivant montre comment migrer une requête de keepList vers Action.keepTag. La requête spécifie que la valeur de la balise PatientID est conservée pendant l'opération d'anonymisation.

DicomConfigDicomTagConfig
"config": {
  "dicom": {
    "keepList": {
      "tags": [
        "PatientID"
      ]
    }
  }
}
"config": {
  "dicomTagConfig": {
    "actions": [
      {
        "queries": [
          "PatientID"
        ],
        "keepTag": {}
      }
    ]
  }
}

Combiner des listes de conservation, des listes de suppression et des profils

Dans l'objet DicomConfig, vous pouvez déterminer si vous souhaitez conserver ou supprimer les données en fonction des listes de conservation, des listes de suppression et des profils. Ces options s'excluent mutuellement.

Lorsque vous utilisez l'objet DicomTagConfig, vous pouvez combiner ces options en spécifiant les balises à conserver et à supprimer dans un objet Action, tout en spécifiant un profil dans ProfileType.

Les options configurées dans l'objet Action remplacent celles configurées dans le profil ProfileType. Les options de l'objet Action s'appliquent dans l'ordre dans lequel elles sont fournies dans la requête.

De skipIdRedaction à Objects.primaryIds

Remplacez le champ skipIdRedaction de l'objet DicomConfig par le champ primaryIds de l'objet DicomTagConfig. Le champ primaryIds, qui se trouve dans l'objet Options, contient un objet PrimaryIdsOption dans lequel vous spécifiez l'une des énumérations suivantes:

  • PRIMARY_IDS_OPTION_UNSPECIFIED: comportement par défaut lorsqu'aucune valeur n'est fournie à PrimaryIdsOption. La valeur par défaut est l'option spécifiée dans ProfileType.
  • KEEP: ne modifiez pas les ID principaux.
  • REGEN: regénérer les ID principaux.

L'exemple suivant montre comment migrer une requête de skipIdRedaction vers Options.primaryIds. La requête spécifie que les valeurs des ID principaux sont conservées pendant l'opération d'anonymisation:

DicomConfigDicomTagConfig
"config": {
  "dicom": {
    "skipIdRedaction": true
  }
}
"config": {
  "dicomTagConfig": {
    "options": {
      "primaryIds": "KEEP"
    }
  }
}

De DeidentifyConfig.ImageConfig à DicomTagConfig.Options.ImageConfig

Remplacez l'objet DeidentifyConfig.ImageConfig par l'objet DicomTagConfig.Options.ImageConfig. Les options de l'objet ImageConfig sont les mêmes dans les deux versions.

L'exemple suivant montre comment migrer une requête de l'utilisation d'un ImageConfig dans DeidentifyConfig.image vers l'utilisation d'un ImageConfig dans DeidentifyConfig.DicomTagConfig.Options.cleanImage. La requête spécifie que tout le texte d'une image doit être masqué lors de l'opération d'anonymisation:

DeidentifyConfig.imageDeidentifyConfig.DicomTagConfig.Options.cleanImage
"config": {
  "image": {
    "textRedactionMode": "REDACT_ALL_TEXT"
  }
}
"config": {
  "dicomTagConfig": {
    "options": {
      "cleanImage": {
        "textRedactionMode": "REDACT_ALL_TEXT"
      }
    }
  }
}

Présentation de l'anonymisation

Anonymisation au niveau de l'ensemble de données

Pour anonymiser des données DICOM au niveau de l'ensemble de données, appelez la méthode datasets.deidentify. La méthode datasets.deidentify comporte les composants suivants:

  • L'ensemble de données source : ensemble de données contenant des magasins DICOM avec une ou plusieurs instances contenant des données sensibles. Lorsque vous appelez la méthode datasets.deidentify, toutes les instances de tous les magasins DICOM de l'ensemble de données sont anonymisées.
  • L'ensemble de données de destination: l'anonymisation n'a aucune incidence sur l'ensemble de données d'origine ni sur ses données. Au lieu de cela, les copies anonymisées des données d'origine sont écrites dans un nouvel ensemble de données, appelé ensemble de données de destination.
  • Éléments à anonymiser: paramètres de configuration spécifiant comment traiter les données DICOM dans l'ensemble de données. Vous pouvez configurer l'anonymisation DICOM pour anonymiser les métadonnées d'instance DICOM (à l'aide de mots clés de tag) ou le texte incrusté dans les images DICOM en spécifiant ces paramètres dans un objet DeidentifyConfig.

La plupart des exemples de ce guide montrent comment anonymiser des données DICOM au niveau de l'ensemble de données.

Anonymisation de DICOM au niveau du magasin

L'anonymisation de données DICOM au niveau du magasin DICOM vous permet de mieux contrôler les données anonymisées. Par exemple, si vous disposez d'un ensemble de données avec plusieurs magasins DICOM, vous pouvez anonymiser chaque magasin DICOM en fonction du type de données qu'il contient.

Pour anonymiser des données DICOM dans un magasin DICOM, appelez la méthode dicomStores.deidentify. La méthode dicomStores.deidentify comporte les composants suivants:

  • Magasin DICOM source : magasin DICOM contenant une ou plusieurs instances ayant des données sensibles. Lorsque vous appelez l'opération dicomStores.deidentify, toutes les instances du magasin DICOM sont anonymisées.
  • Le magasin DICOM de destination: l'anonymisation n'affecte pas le magasin DICOM d'origine ni ses données. À la place, des copies anonymisées des données d'origine sont écrites dans le magasin DICOM de destination. Le magasin DICOM de destination doit déjà exister.
  • Éléments à anonymiser: paramètres de configuration spécifiant comment traiter le magasin DICOM. Vous pouvez configurer l'anonymisation DICOM pour anonymiser les métadonnées d'instance DICOM (à l'aide de mots clés de tag) ou le texte incrusté dans les images DICOM en spécifiant ces paramètres dans un objet DeidentifyConfig.

Pour obtenir un exemple d'anonymisation de données DICOM au niveau d'un magasin DICOM, consultez la section Supprimer l'identification des données au niveau du magasin DICOM.

Filtres

Lors de l'anonymisation des données DICOM au niveau du magasin DICOM, vous pouvez supprimer l'identification d'un sous-ensemble de données dans le magasin DICOM en configurant un fichier de filtre et en spécifiant le fichier dans la requête dicomStores.deidentify. Pour obtenir un exemple, consultez la section Anonymiser un sous-ensemble d'un magasin DICOM.

Présentation des exemples

Les exemples de ce guide utilisent une seule instance DICOM nommée dicom_deid_instance_sample.dcm, mais vous pouvez également anonymiser plusieurs instances. Pour utiliser l'exemple d'instance DICOM présenté dans les exemples de cette page, téléchargez le fichier sur votre ordinateur local et suivez les instructions de la section Stocker des données DICOM pour le stocker dans un magasin DICOM.

Les sections suivantes montrent à quoi ressemble l'image de l'instance DICOM et les métadonnées de l'instance.

Exemple d'image

Certains exemples de cette page contiennent une sortie de l'image anonymisée. Chaque exemple utilise l'image d'origine suivante en tant qu'entrée. Vous pouvez comparer l'image de sortie de chaque opération d'anonymisation à cette image d'origine pour observer les effets de l'opération:

xray_original

Exemples de métadonnées

La plupart des exemples de cette page contiennent une sortie des métadonnées modifiées dans l'instance DICOM. Chaque exemple utilise les métadonnées d'origine suivantes en entrée. Vous pouvez comparer les métadonnées de sortie de chaque opération d'anonymisation à ces métadonnées d'origine pour observer les effets de l'anonymisation:

[
  {
    "00020002": {
      "vr": "UI",
      "Value": [
        "1.2.840.10008.5.1.4.1.1.7"
      ]
    },
    "00020003": {
      "vr": "UI",
      "Value": [
        "1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695"
      ]
    },
    "00020010": {
      "vr": "UI",
      "Value": [
        "1.2.840.10008.1.2.4.50"
      ]
    },
    "00020012": {
      "vr": "UI",
      "Value": [
        "1.2.276.0.7230010.3.0.3.6.1"
      ]
    },
    "00020013": {
      "vr": "SH",
      "Value": [
        "OFFIS_DCMTK_361"
      ]
    },
    "00080005": {
      "vr": "CS",
      "Value": [
        "ISO_IR 100"
      ]
    },
    "00080016": {
      "vr": "UI",
      "Value": [
        "1.2.840.10008.5.1.4.1.1.7"
      ]
    },
    "00080018": {
      "vr": "UI",
      "Value": [
        "1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695"
      ]
    },
    "00080020": {
      "vr": "DA",
      "Value": [
        "20110909"
      ]
    },
    "00080030": {
      "vr": "TM",
      "Value": [
        "110032"
      ]
    },
    "00080050": {
      "vr": "SH"
    },
    "00080064": {
      "vr": "CS",
      "Value": [
        "WSD"
      ]
    },
    "00080070": {
      "vr": "LO",
      "Value": [
        "Manufacturer"
      ]
    },
    "00080090": {
      "vr": "PN",
      "Value": [
        {
          "Alphabetic": "John Doe"
        }
      ]
    },
    "00081090": {
      "vr": "LO",
      "Value": [
        "ABC1"
      ]
    },
    "00100010": {
      "vr": "PN",
      "Value": [
        {
          "Alphabetic": "Ann Johnson"
        }
      ]
    },
    "00100020": {
      "vr": "LO",
      "Value": [
        "S1214223-1"
      ]
    },
    "00100030": {
      "vr": "DA",
      "Value": [
        "19880812"
      ]
    },
    "00100040": {
      "vr": "CS",
      "Value": [
        "F"
      ]
    },
    "0020000D": {
      "vr": "UI",
      "Value": [
        "2.25.70541616638819138568043293671559322355"
      ]
    },
    "0020000E": {
      "vr": "UI",
      "Value": [
        "1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694"
      ]
    },
    "00200010": {
      "vr": "SH"
    },
    "00200011": {
      "vr": "IS"
    },
    "00200013": {
      "vr": "IS"
    },
    "00200020": {
      "vr": "CS"
    },
    "00280002": {
      "vr": "US",
      "Value": [
        3
      ]
    },
    "00280004": {
      "vr": "CS",
      "Value": [
        "YBR_FULL_422"
      ]
    },
    "00280006": {
      "vr": "US",
      "Value": [
        0
      ]
    },
    "00280010": {
      "vr": "US",
      "Value": [
        1024
      ]
    },
    "00280011": {
      "vr": "US",
      "Value": [
        1024
      ]
    },
    "00280100": {
      "vr": "US",
      "Value": [
        8
      ]
    },
    "00280101": {
      "vr": "US",
      "Value": [
        8
      ]
    },
    "00280102": {
      "vr": "US",
      "Value": [
        7
      ]
    },
    "00280103": {
      "vr": "US",
      "Value": [
        0
      ]
    },
    "00282110": {
      "vr": "CS",
      "Value": [
        "01"
      ]
    },
    "00282114": {
      "vr": "CS",
      "Value": [
        "ISO_10918_1"
      ]
    }
  }
]

Masquer le texte incrusté dans les images

Vous pouvez anonymiser le texte incrusté dans les images DICOM à l'aide de l'objet ImageConfig dans un objet Action. Dans ImageConfig, vous pouvez spécifier les infoTypes à inclure ou exclure, et comment masquer du texte à l'aide de l'objet TextRedactionMode.

Masquer tout le texte

Les exemples suivants montrent comment anonymiser une instance DICOM en définissant TextRedactionMode sur REDACT_ALL_TEXT. Cette configuration masque tout le texte incrusté dans l'image.

REST

  1. Anonymisez l'ensemble de données.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • SOURCE_DATASET_ID: ID de l'ensemble de données contenant les données à anonymiser.
    • DESTINATION_DATASET_ID: ID de l'ensemble de données de destination dans lequel les données anonymisées sont écrites.

    Corps JSON de la requête :

    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "options": {
            "cleanImage": {
              "textRedactionMode": "REDACT_ALL_TEXT"
            }
          }
        }
      }
    }
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

    cat > request.json << 'EOF'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "options": {
            "cleanImage": {
              "textRedactionMode": "REDACT_ALL_TEXT"
            }
          }
        }
      }
    }
    EOF

    Exécutez ensuite la commande suivante pour envoyer votre requête REST :

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

    @'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "options": {
            "cleanImage": {
              "textRedactionMode": "REDACT_ALL_TEXT"
            }
          }
        }
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Exécutez ensuite la commande suivante pour envoyer votre requête REST :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content
    Le résultat est le suivant. La réponse contient un identifiant pour une opération de longue durée (LRO). Les opérations de longue durée sont renvoyées lorsque les appels de méthode peuvent prendre davantage de temps. Notez la valeur de OPERATION_ID. Vous en aurez besoin à l'étape suivante.

  2. Utilisez la méthode projects.locations.datasets.operations.get pour obtenir l'état de l'opération de longue durée.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • SOURCE_DATASET_ID: ID de l'ensemble de données contenant les données à anonymiser.
    • OPERATION_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    APIs 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 Execute (Exécuter).

    Le résultat est le suivant. Lorsque la réponse contient "done": true, l'opération de longue durée est terminée.

  3. Une fois l'anonymisation effectuée, vous pouvez récupérer les métadonnées de l'instance anonymisée pour voir ses modifications. L'instance anonymisée possède un nouvel UID d'étude, un nouvel UID de série et un nouvel UID d'instance. Vous devez donc d'abord rechercher l'instance anonymisée dans le nouvel ensemble de données.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • DESTINATION_DATASET_ID: ID de l'ensemble de données de destination dans lequel les données anonymisées sont écrites.
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • DESTINATION_DICOM_STORE_ID: ID du magasin DICOM dans l'ensemble de données de destination. Il s'agit de l'identifiant du magasin DICOM dans l'ensemble de données source.

    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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content

    Vous devriez recevoir une réponse JSON de ce type :

    Le tableau suivant montre comment l'UID des études, l'UID de la série et l'UID des instances ont été modifiés:
      Métadonnées d'instance d'origine Métadonnées d'instance anonymisées
    UID d'études (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID de série (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    UID d'instance (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. À l'aide des nouvelles valeurs, récupérez les métadonnées de l'instance.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • DESTINATION_DATASET_ID: ID de l'ensemble de données de destination dans lequel les données anonymisées sont écrites.
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • DESTINATION_DICOM_STORE_ID: ID du magasin DICOM dans l'ensemble de données de destination. Il s'agit de l'identifiant du magasin DICOM dans l'ensemble de données source.

    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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand Content

    APIs 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 Execute (Exécuter).

    La sortie contient les nouvelles métadonnées. Vous pouvez comparer les nouvelles métadonnées aux métadonnées d'origine pour observer l'effet de cette transformation.

Après l'anonymisation de l'image à l'aide de REDACT_ALL_TEXT, l'image ressemble à ceci. Notez que tout le texte incrusté en bas de l'image a été masqué.

Figure 1. Instance DICOM après anonymisation à l'aide de REDACT_ALL_TEXT.

Masquez le texte sensible avec l'option Nettoyer les descripteurs

Les exemples suivants montrent comment anonymiser une instance DICOM en définissant TextRedactionMode sur REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS.

Pour en savoir plus sur l'option CleanDescriptorsOption, consultez Supprimer l'identification du texte avec l'anonymisation contextuelle.

REST

  1. Anonymisez l'ensemble de données.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • SOURCE_DATASET_ID: ID de l'ensemble de données contenant les données à anonymiser.
    • DESTINATION_DATASET_ID: ID de l'ensemble de données de destination dans lequel les données anonymisées sont écrites.

    Corps JSON de la requête :

    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "options": {
            "cleanImage": {
              "textRedactionMode": "REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS"
            }
          }
        }
      }
    }
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

    cat > request.json << 'EOF'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "options": {
            "cleanImage": {
              "textRedactionMode": "REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS"
            }
          }
        }
      }
    }
    EOF

    Exécutez ensuite la commande suivante pour envoyer votre requête REST :

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

    @'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "options": {
            "cleanImage": {
              "textRedactionMode": "REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS"
            }
          }
        }
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Exécutez ensuite la commande suivante pour envoyer votre requête REST :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content
    Le résultat est le suivant. La réponse contient un identifiant pour une opération de longue durée (LRO). Les opérations de longue durée sont renvoyées lorsque les appels de méthode peuvent prendre davantage de temps. Notez la valeur de OPERATION_ID. Vous en aurez besoin à l'étape suivante.

  2. Utilisez la méthode projects.locations.datasets.operations.get pour obtenir l'état de l'opération de longue durée.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • SOURCE_DATASET_ID: ID de l'ensemble de données contenant les données à anonymiser.
    • OPERATION_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    APIs 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 Execute (Exécuter).

    Le résultat est le suivant. Lorsque la réponse contient "done": true, l'opération de longue durée est terminée.

  3. Une fois l'anonymisation effectuée, vous pouvez récupérer les métadonnées de l'instance anonymisée pour voir ses modifications. L'instance anonymisée possède un nouvel UID d'étude, un nouvel UID de série et un nouvel UID d'instance. Vous devez donc d'abord rechercher l'instance anonymisée dans le nouvel ensemble de données.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • DESTINATION_DATASET_ID: ID de l'ensemble de données de destination dans lequel les données anonymisées sont écrites.
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • DESTINATION_DICOM_STORE_ID: ID du magasin DICOM dans l'ensemble de données de destination. Il s'agit de l'identifiant du magasin DICOM dans l'ensemble de données source.

    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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content

    Vous devriez recevoir une réponse JSON de ce type :

    Le tableau suivant montre comment l'UID des études, l'UID de la série et l'UID des instances ont été modifiés:
      Métadonnées d'instance d'origine Métadonnées d'instance anonymisées
    UID d'études (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID de série (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    UID d'instance (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. À l'aide des nouvelles valeurs, récupérez les métadonnées de l'instance.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • DESTINATION_DATASET_ID: ID de l'ensemble de données de destination dans lequel les données anonymisées sont écrites.
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • DESTINATION_DICOM_STORE_ID: ID du magasin DICOM dans l'ensemble de données de destination. Il s'agit de l'identifiant du magasin DICOM dans l'ensemble de données source.

    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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand Content

    APIs 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 Execute (Exécuter).

    La sortie contient les nouvelles métadonnées. Vous pouvez comparer les nouvelles métadonnées aux métadonnées d'origine pour observer l'effet de cette transformation.

Après l'anonymisation de l'image à l'aide de REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS, l'image ressemble à ceci. Notez que tout le texte incrusté au bas de l'image n'a pas été masqué. Le texte Female est toujours affiché, car PatientSex (0010,0040) ne fait pas partie des infoTypes DICOM par défaut.

Figure 2. Instance DICOM après anonymisation à l'aide de REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS.

Anonymiser les tags DICOM

Vous pouvez anonymiser des instances DICOM à l'aide de mots clés de tags dans les métadonnées DICOM.

Les méthodes suivantes de filtrage de tags sont disponibles dans l'objet DicomTagConfig Action:

Spécifiez chaque option Action sous la forme d'une liste d'ID, de noms ou de représentations de valeur (VR) DICOM, puis l'option effectue une action sur les tags de la liste. Vous ne pouvez pas spécifier plus d'une option Action sur une liste de balises.

Chaque objet Action fournit une liste queries[] dans laquelle vous spécifiez une liste de balises. Les formats de tag suivants sont acceptés:

  • ID de balise, tels que "00100010"
  • Noms de balises, tels que "PatientName"
  • Représentations de valeur (VR), telles que "PN"

Vous pouvez fournir autant de balises que vous le souhaitez dans la liste queries[]. Cependant, chaque balise ne peut être associée qu'à une seule option Action. Pour spécifier différents tags auxquels différentes options Action sont effectuées, vous devez spécifier plusieurs objets Action.

Conserver les tags

Vous pouvez empêcher le masquage des valeurs des balises en spécifiant les balises dans un objet KeepTag de l'objet DicomTagConfig.

Pour générer un objet DICOM valide lors de l'utilisation d'un objet KeepTag, spécifiez les valeurs MINIMAL_KEEP_LIST_PROFILE ou DEIDENTIFY_TAG_CONTENTS dans l'objet ProfileType.

En spécifiant l'un de ces profils, les tags suivants sont automatiquement conservés, garantissant ainsi que l'instance DICOM anonymisée est valide:

  • StudyInstanceUID
  • SeriesInstanceUID
  • SOPInstanceUID
  • TransferSyntaxUID
  • MediaStorageSOPInstanceUID
  • MediaStorageSOPClassUID
  • PixelData
  • Rows
  • Columns
  • SamplesPerPixel
  • BitsAllocated
  • BitsStored
  • Highbit
  • PhotometricInterpretation
  • PixelRepresentation
  • NumberOfFrames
  • PlanarConfiguration
  • PixelAspectRatio
  • SmallestImagePixelValue
  • LargestImagePixelValue
  • RedPaletteColorLookupTableDescriptor
  • GreenPaletteColorLookupTableDescriptor
  • BluePaletteColorLookupTableDescriptor
  • RedPaletteColorLookupTableData
  • GreenPaletteColorLookupTableData
  • BluePaletteColorLookupTableData
  • ICCProfile
  • ColorSpace
  • WindowCenter
  • WindowWidth
  • VOILUTFunction

Les valeurs de certaines des balises précédentes sont à nouveau générées, ce qui signifie qu'elles sont remplacées par une valeur différente via une transformation déterministe. Pour plus d'informations, consultez l'option Conserver les UID dans la norme DICOM.

Les valeurs de StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID et MediaStorageSOPInstanceUID sont appelées "ID principaux". Pour déterminer comment les ID principaux sont transformés, spécifiez une valeur dans PrimaryIdsOption.

Les exemples suivants montrent comment utiliser l'objet KeepTag pour conserver les valeurs de balises spécifiques telles quelles lors de l'anonymisation. La balise PatientName est ajoutée à la liste queries[]. La valeur PatientName n'est donc pas masquée lors de l'anonymisation.

Comme PrimaryIdsOption n'est pas spécifié dans l'exemple, le champ primaryIds est défini par défaut sur PRIMARY_IDS_OPTION_UNSPECIFIED, qui est défini par défaut sur ProfileType. Comme ProfileType n'est pas non plus spécifié, le champ profileType est défini par défaut sur PROFILE_TYPE_UNSPECIFIED, ce qui supprime les balises basées sur le profil de base sur la confidentialité des attributs (DICOM Standard Edition 2018e).

REST

  1. Anonymisez l'ensemble de données.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • SOURCE_DATASET_ID: ID de l'ensemble de données contenant les données à anonymiser.
    • DESTINATION_DATASET_ID: ID de l'ensemble de données de destination dans lequel les données anonymisées sont écrites.

    Corps JSON de la requête :

    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "actions": [
            {
              "queries": [
               "PatientName"
              ],
              "keepTag": {}
            }
          ]
        }
      }
    }
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

    cat > request.json << 'EOF'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "actions": [
            {
              "queries": [
               "PatientName"
              ],
              "keepTag": {}
            }
          ]
        }
      }
    }
    EOF

    Exécutez ensuite la commande suivante pour envoyer votre requête REST :

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

    @'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "actions": [
            {
              "queries": [
               "PatientName"
              ],
              "keepTag": {}
            }
          ]
        }
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Exécutez ensuite la commande suivante pour envoyer votre requête REST :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content
    Le résultat est le suivant. La réponse contient un identifiant pour une opération de longue durée (LRO). Les opérations de longue durée sont renvoyées lorsque les appels de méthode peuvent prendre davantage de temps. Notez la valeur de OPERATION_ID. Vous en aurez besoin à l'étape suivante.

  2. Utilisez la méthode projects.locations.datasets.operations.get pour obtenir l'état de l'opération de longue durée.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • SOURCE_DATASET_ID: ID de l'ensemble de données contenant les données à anonymiser.
    • OPERATION_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    APIs 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 Execute (Exécuter).

    Le résultat est le suivant. Lorsque la réponse contient "done": true, l'opération de longue durée est terminée.

  3. Une fois l'anonymisation effectuée, vous pouvez récupérer les métadonnées de l'instance anonymisée pour voir ses modifications. L'instance anonymisée possède un nouvel UID d'étude, un nouvel UID de série et un nouvel UID d'instance. Vous devez donc d'abord rechercher l'instance anonymisée dans le nouvel ensemble de données.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • DESTINATION_DATASET_ID: ID de l'ensemble de données de destination dans lequel les données anonymisées sont écrites.
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • DESTINATION_DICOM_STORE_ID: ID du magasin DICOM dans l'ensemble de données de destination. Il s'agit de l'identifiant du magasin DICOM dans l'ensemble de données source.

    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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content

    Vous devriez recevoir une réponse JSON de ce type :

    Le tableau suivant montre comment l'UID des études, l'UID de la série et l'UID des instances ont été modifiés:
      Métadonnées d'instance d'origine Métadonnées d'instance anonymisées
    UID d'études (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID de série (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    UID d'instance (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. À l'aide des nouvelles valeurs, récupérez les métadonnées de l'instance.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • DESTINATION_DATASET_ID: ID de l'ensemble de données de destination dans lequel les données anonymisées sont écrites.
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • DESTINATION_DICOM_STORE_ID: ID du magasin DICOM dans l'ensemble de données de destination. Il s'agit de l'identifiant du magasin DICOM dans l'ensemble de données source.

    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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand Content

    APIs 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 Execute (Exécuter).

    La sortie contient les nouvelles métadonnées. Vous pouvez comparer les nouvelles métadonnées aux métadonnées d'origine pour observer l'effet de cette transformation.

Supprimer les tags

Les exemples suivants montrent comment utiliser l'objet RemoveTag pour supprimer les valeurs de balises spécifiques lors de l'anonymisation. Une balise supprimée est remplacée par une valeur vide.

Dans les exemples suivants, la balise PatientName est ajoutée à la liste queries[]. Sa valeur est donc remplacée par une valeur vide lors de l'anonymisation.

REST

  1. Anonymisez l'ensemble de données.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • SOURCE_DATASET_ID: ID de l'ensemble de données contenant les données à anonymiser.
    • DESTINATION_DATASET_ID: ID de l'ensemble de données de destination dans lequel les données anonymisées sont écrites.

    Corps JSON de la requête :

    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "actions": [
            {
              "queries": [
                 "PatientName"
              ],
              "removeTag": {}
            }
          ]
        }
      }
    }
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

    cat > request.json << 'EOF'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "actions": [
            {
              "queries": [
                 "PatientName"
              ],
              "removeTag": {}
            }
          ]
        }
      }
    }
    EOF

    Exécutez ensuite la commande suivante pour envoyer votre requête REST :

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

    @'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "actions": [
            {
              "queries": [
                 "PatientName"
              ],
              "removeTag": {}
            }
          ]
        }
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Exécutez ensuite la commande suivante pour envoyer votre requête REST :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content
    Le résultat est le suivant. La réponse contient un identifiant pour une opération de longue durée (LRO). Les opérations de longue durée sont renvoyées lorsque les appels de méthode peuvent prendre davantage de temps. Notez la valeur de OPERATION_ID. Vous en aurez besoin à l'étape suivante.

  2. Utilisez la méthode projects.locations.datasets.operations.get pour obtenir l'état de l'opération de longue durée.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • SOURCE_DATASET_ID: ID de l'ensemble de données contenant les données à anonymiser.
    • OPERATION_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    APIs 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 Execute (Exécuter).

    Le résultat est le suivant. Lorsque la réponse contient "done": true, l'opération de longue durée est terminée.

  3. Une fois l'anonymisation effectuée, vous pouvez récupérer les métadonnées de l'instance anonymisée pour voir ses modifications. L'instance anonymisée possède un nouvel UID d'étude, un nouvel UID de série et un nouvel UID d'instance. Vous devez donc d'abord rechercher l'instance anonymisée dans le nouvel ensemble de données.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • DESTINATION_DATASET_ID: ID de l'ensemble de données de destination dans lequel les données anonymisées sont écrites.
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • DESTINATION_DICOM_STORE_ID: ID du magasin DICOM dans l'ensemble de données de destination. Il s'agit de l'identifiant du magasin DICOM dans l'ensemble de données source.

    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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content

    Vous devriez recevoir une réponse JSON de ce type :

    Le tableau suivant montre comment l'UID des études, l'UID de la série et l'UID des instances ont été modifiés:
      Métadonnées d'instance d'origine Métadonnées d'instance anonymisées
    UID d'études (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID de série (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    UID d'instance (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. À l'aide des nouvelles valeurs, récupérez les métadonnées de l'instance.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • DESTINATION_DATASET_ID: ID de l'ensemble de données de destination dans lequel les données anonymisées sont écrites.
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • DESTINATION_DICOM_STORE_ID: ID du magasin DICOM dans l'ensemble de données de destination. Il s'agit de l'identifiant du magasin DICOM dans l'ensemble de données source.

    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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand Content

    APIs 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 Execute (Exécuter).

    La sortie contient les nouvelles métadonnées. Vous pouvez comparer les nouvelles métadonnées aux métadonnées d'origine pour observer l'effet de cette transformation.

Supprimer les tags

Les exemples suivants montrent comment utiliser l'objet DeleteTag pour supprimer des balises spécifiques lors de l'anonymisation.

REST

  1. Anonymisez l'ensemble de données.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • SOURCE_DATASET_ID: ID de l'ensemble de données contenant les données à anonymiser.
    • DESTINATION_DATASET_ID: ID de l'ensemble de données de destination dans lequel les données anonymisées sont écrites.

    Corps JSON de la requête :

    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "actions": [
            {
              "queries": [
               "PatientName"
              ],
              "deleteTag": {}
            }
          ]
        }
      }
    }
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

    cat > request.json << 'EOF'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "actions": [
            {
              "queries": [
               "PatientName"
              ],
              "deleteTag": {}
            }
          ]
        }
      }
    }
    EOF

    Exécutez ensuite la commande suivante pour envoyer votre requête REST :

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

    @'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "actions": [
            {
              "queries": [
               "PatientName"
              ],
              "deleteTag": {}
            }
          ]
        }
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Exécutez ensuite la commande suivante pour envoyer votre requête REST :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content
    Le résultat est le suivant. La réponse contient un identifiant pour une opération de longue durée (LRO). Les opérations de longue durée sont renvoyées lorsque les appels de méthode peuvent prendre davantage de temps. Notez la valeur de OPERATION_ID. Vous en aurez besoin à l'étape suivante.

  2. Utilisez la méthode projects.locations.datasets.operations.get pour obtenir l'état de l'opération de longue durée.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • SOURCE_DATASET_ID: ID de l'ensemble de données contenant les données à anonymiser.
    • OPERATION_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    APIs 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 Execute (Exécuter).

    Le résultat est le suivant. Lorsque la réponse contient "done": true, l'opération de longue durée est terminée.

  3. Une fois l'anonymisation effectuée, vous pouvez récupérer les métadonnées de l'instance anonymisée pour voir ses modifications. L'instance anonymisée possède un nouvel UID d'étude, un nouvel UID de série et un nouvel UID d'instance. Vous devez donc d'abord rechercher l'instance anonymisée dans le nouvel ensemble de données.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • DESTINATION_DATASET_ID: ID de l'ensemble de données de destination dans lequel les données anonymisées sont écrites.
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • DESTINATION_DICOM_STORE_ID: ID du magasin DICOM dans l'ensemble de données de destination. Il s'agit de l'identifiant du magasin DICOM dans l'ensemble de données source.

    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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content

    Vous devriez recevoir une réponse JSON de ce type :

    Le tableau suivant montre comment l'UID des études, l'UID de la série et l'UID des instances ont été modifiés:
      Métadonnées d'instance d'origine Métadonnées d'instance anonymisées
    UID d'études (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID de série (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    UID d'instance (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. À l'aide des nouvelles valeurs, récupérez les métadonnées de l'instance.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • DESTINATION_DATASET_ID: ID de l'ensemble de données de destination dans lequel les données anonymisées sont écrites.
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • DESTINATION_DICOM_STORE_ID: ID du magasin DICOM dans l'ensemble de données de destination. Il s'agit de l'identifiant du magasin DICOM dans l'ensemble de données source.

    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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand Content

    APIs 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 Execute (Exécuter).

    La sortie contient les nouvelles métadonnées. Vous pouvez comparer les nouvelles métadonnées aux métadonnées d'origine pour observer l'effet de cette transformation.

Réinitialiser les balises sur une valeur d'espace réservé

Les exemples suivants montrent comment utiliser l'objet ResetTag pour définir la valeur des balises sur la chaîne PLACEHOLDER lors de l'anonymisation.

REST

  1. Anonymisez l'ensemble de données.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • SOURCE_DATASET_ID: ID de l'ensemble de données contenant les données à anonymiser.
    • DESTINATION_DATASET_ID: ID de l'ensemble de données de destination dans lequel les données anonymisées sont écrites.

    Corps JSON de la requête :

    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "actions": [
            {
              "queries": [
               "PatientName"
              ],
              "resetTag": {}
            }
          ]
        }
      }
    }
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

    cat > request.json << 'EOF'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "actions": [
            {
              "queries": [
               "PatientName"
              ],
              "resetTag": {}
            }
          ]
        }
      }
    }
    EOF

    Exécutez ensuite la commande suivante pour envoyer votre requête REST :

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

    @'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "actions": [
            {
              "queries": [
               "PatientName"
              ],
              "resetTag": {}
            }
          ]
        }
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Exécutez ensuite la commande suivante pour envoyer votre requête REST :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content
    Le résultat est le suivant. La réponse contient un identifiant pour une opération de longue durée (LRO). Les opérations de longue durée sont renvoyées lorsque les appels de méthode peuvent prendre davantage de temps. Notez la valeur de OPERATION_ID. Vous en aurez besoin à l'étape suivante.

  2. Utilisez la méthode projects.locations.datasets.operations.get pour obtenir l'état de l'opération de longue durée.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • SOURCE_DATASET_ID: ID de l'ensemble de données contenant les données à anonymiser.
    • OPERATION_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    APIs 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 Execute (Exécuter).

    Le résultat est le suivant. Lorsque la réponse contient "done": true, l'opération de longue durée est terminée.

  3. Une fois l'anonymisation effectuée, vous pouvez récupérer les métadonnées de l'instance anonymisée pour voir ses modifications. L'instance anonymisée possède un nouvel UID d'étude, un nouvel UID de série et un nouvel UID d'instance. Vous devez donc d'abord rechercher l'instance anonymisée dans le nouvel ensemble de données.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • DESTINATION_DATASET_ID: ID de l'ensemble de données de destination dans lequel les données anonymisées sont écrites.
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • DESTINATION_DICOM_STORE_ID: ID du magasin DICOM dans l'ensemble de données de destination. Il s'agit de l'identifiant du magasin DICOM dans l'ensemble de données source.

    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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content

    Vous devriez recevoir une réponse JSON de ce type :

    Le tableau suivant montre comment l'UID des études, l'UID de la série et l'UID des instances ont été modifiés:
      Métadonnées d'instance d'origine Métadonnées d'instance anonymisées
    UID d'études (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID de série (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    UID d'instance (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. À l'aide des nouvelles valeurs, récupérez les métadonnées de l'instance.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • DESTINATION_DATASET_ID: ID de l'ensemble de données de destination dans lequel les données anonymisées sont écrites.
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • DESTINATION_DICOM_STORE_ID: ID du magasin DICOM dans l'ensemble de données de destination. Il s'agit de l'identifiant du magasin DICOM dans l'ensemble de données source.

    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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand Content

    APIs 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 Execute (Exécuter).

    La sortie contient les nouvelles métadonnées. Vous pouvez comparer les nouvelles métadonnées aux métadonnées d'origine pour observer l'effet de cette transformation.

    Notez en particulier que la valeur de la balise PatientName est définie sur PLACEHOLDER:

    Original metadataMétadonnées après l'exécution de ResetTag
    "00100010": {
      "vr": "PN",
      "Value": [
        {
          "Alphabetic": "Ann Johnson"
        }
      ]
    }
    "00100010": {
      "vr": "PN",
      "Value": [
        {
          "Alphabetic": "PLACEHOLDER"
        }
      ]
    }

Inspecter et transformer le texte sensible dans les tags

Les exemples suivants montrent comment utiliser l'objet CleanTextTag pour inspecter des balises et transformer leurs valeurs en fonction de la configuration de l'objet TextConfig.

Dans ces exemples, les options suivantes sont définies dans l'objet Actions:

  • Un objet CleanTextTag
  • Une liste queries[] contenant la balise DICOM PatientName.

Les options suivantes sont définies dans l'objet TextConfig:

  • Objet InfoTypeTransformation qui transforme le texte correspondant à un infoType particulier.
  • Un objet ReplaceWithInfoTypeConfig qui remplace tout texte correspondant par le nom de l'infoType.
  • Liste infoTypes[] contenant l'infoType PERSON_NAME.

Une fois ces configurations définies, l'opération d'anonymisation inspecte la balise PatientName, la met en correspondance avec l'infoType PERSON_NAME et remplace la valeur de la balise par l'infoType PERSON_NAME. La balise PatientName présente une représentation de la valeur (VR) PN, qui est l'une des RV prises en charge dans l'objet CleanTextTag.

REST

  1. Anonymisez l'ensemble de données.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • SOURCE_DATASET_ID: ID de l'ensemble de données contenant les données à anonymiser.
    • DESTINATION_DATASET_ID: ID de l'ensemble de données de destination dans lequel les données anonymisées sont écrites.

    Corps JSON de la requête :

    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "actions": [
            {
              "queries": [
                "PatientName"
              ],
              "cleanTextTag": {}
            }
          ]
        },
        "text": {
          "additionalTransformations": [
            {
              "infoTypes": [
                "PERSON_NAME"
              ],
              "replaceWithInfoTypeConfig": {}
            }
          ]
        }
      }
    }
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

    cat > request.json << 'EOF'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "actions": [
            {
              "queries": [
                "PatientName"
              ],
              "cleanTextTag": {}
            }
          ]
        },
        "text": {
          "additionalTransformations": [
            {
              "infoTypes": [
                "PERSON_NAME"
              ],
              "replaceWithInfoTypeConfig": {}
            }
          ]
        }
      }
    }
    EOF

    Exécutez ensuite la commande suivante pour envoyer votre requête REST :

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

    @'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "actions": [
            {
              "queries": [
                "PatientName"
              ],
              "cleanTextTag": {}
            }
          ]
        },
        "text": {
          "additionalTransformations": [
            {
              "infoTypes": [
                "PERSON_NAME"
              ],
              "replaceWithInfoTypeConfig": {}
            }
          ]
        }
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Exécutez ensuite la commande suivante pour envoyer votre requête REST :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content
    Le résultat est le suivant. La réponse contient un identifiant pour une opération de longue durée (LRO). Les opérations de longue durée sont renvoyées lorsque les appels de méthode peuvent prendre davantage de temps. Notez la valeur de OPERATION_ID. Vous en aurez besoin à l'étape suivante.

  2. Utilisez la méthode projects.locations.datasets.operations.get pour obtenir l'état de l'opération de longue durée.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • SOURCE_DATASET_ID: ID de l'ensemble de données contenant les données à anonymiser.
    • OPERATION_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    APIs 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 Execute (Exécuter).

    Le résultat est le suivant. Lorsque la réponse contient "done": true, l'opération de longue durée est terminée.

  3. Une fois l'anonymisation effectuée, vous pouvez récupérer les métadonnées de l'instance anonymisée pour voir ses modifications. L'instance anonymisée possède un nouvel UID d'étude, un nouvel UID de série et un nouvel UID d'instance. Vous devez donc d'abord rechercher l'instance anonymisée dans le nouvel ensemble de données.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • DESTINATION_DATASET_ID: ID de l'ensemble de données de destination dans lequel les données anonymisées sont écrites.
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • DESTINATION_DICOM_STORE_ID: ID du magasin DICOM dans l'ensemble de données de destination. Il s'agit de l'identifiant du magasin DICOM dans l'ensemble de données source.

    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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content

    Vous devriez recevoir une réponse JSON de ce type :

    Le tableau suivant montre comment l'UID des études, l'UID de la série et l'UID des instances ont été modifiés:
      Métadonnées d'instance d'origine Métadonnées d'instance anonymisées
    UID d'études (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID de série (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    UID d'instance (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. À l'aide des nouvelles valeurs, récupérez les métadonnées de l'instance.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • DESTINATION_DATASET_ID: ID de l'ensemble de données de destination dans lequel les données anonymisées sont écrites.
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • DESTINATION_DICOM_STORE_ID: ID du magasin DICOM dans l'ensemble de données de destination. Il s'agit de l'identifiant du magasin DICOM dans l'ensemble de données source.

    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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand Content

    APIs 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 Execute (Exécuter).

    La sortie contient les nouvelles métadonnées. Vous pouvez comparer les nouvelles métadonnées aux métadonnées d'origine pour observer l'effet de cette transformation.

    Notez en particulier que la valeur de la balise PatientName est définie sur [PERSON_NAME]:

    Original metadataMétadonnées après l'exécution de CleanTextTag
    "00100010": {
      "vr": "PN",
      "Value": [
        {
          "Alphabetic": "Ann Johnson"
        }
      ]
    }
    "00100010": {
      "vr": "PN",
      "Value": [
        {
          "Alphabetic": "[PERSON_NAME]"
        }
      ]
    }

Remplacer un UID par un UID généré

Les exemples suivants montrent comment remplacer un UID par un nouvel UID à l'aide de l'objet RegenUidTag. La seule RV prise en charge par l'objet RegenUidTag est UI.

Par défaut, chaque tag dans les métadonnées d'échantillon dont la RV est UI fait l'objet d'un UID généré lors de l'anonymisation. Pour vous montrer comment générer un UID pour une balise spécifique, les options suivantes sont définies dans l'exemple:

  • ProfileType est défini sur l'énumération KEEP_ALL, ce qui empêche la suppression de l'identification des métadonnées DICOM.

  • PrimaryIdsOption est défini sur l'énumération KEEP, ce qui laisse les ID principaux (StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID et MediaStorageSOPInstanceUID) inchangés.

Lorsque ces options sont définies, aucun des UID d'ID principaux dans les exemples de données n'est remplacé par de nouvelles valeurs. Toutefois, en ajoutant SOPInstanceUID au tableau Action.queries[], vous pouvez générer un nouvel UID spécifiquement pour la balise SOPInstanceUID.

REST

  1. Anonymisez l'ensemble de données.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • SOURCE_DATASET_ID: ID de l'ensemble de données contenant les données à anonymiser.
    • DESTINATION_DATASET_ID: ID de l'ensemble de données de destination dans lequel les données anonymisées sont écrites.

    Corps JSON de la requête :

    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "options": {
            "primaryIds": "KEEP"
          },
          "actions": [
            {
              "queries": [
                "00080018"
              ],
              "regenUidTag": {}
            }
          ],
          "profileType": "KEEP_ALL_PROFILE"
        }
      }
    }
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

    cat > request.json << 'EOF'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "options": {
            "primaryIds": "KEEP"
          },
          "actions": [
            {
              "queries": [
                "00080018"
              ],
              "regenUidTag": {}
            }
          ],
          "profileType": "KEEP_ALL_PROFILE"
        }
      }
    }
    EOF

    Exécutez ensuite la commande suivante pour envoyer votre requête REST :

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

    @'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "options": {
            "primaryIds": "KEEP"
          },
          "actions": [
            {
              "queries": [
                "00080018"
              ],
              "regenUidTag": {}
            }
          ],
          "profileType": "KEEP_ALL_PROFILE"
        }
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Exécutez ensuite la commande suivante pour envoyer votre requête REST :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content
    Le résultat est le suivant. La réponse contient un identifiant pour une opération de longue durée (LRO). Les opérations de longue durée sont renvoyées lorsque les appels de méthode peuvent prendre davantage de temps. Notez la valeur de OPERATION_ID. Vous en aurez besoin à l'étape suivante.

  2. Utilisez la méthode projects.locations.datasets.operations.get pour obtenir l'état de l'opération de longue durée.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • SOURCE_DATASET_ID: ID de l'ensemble de données contenant les données à anonymiser.
    • OPERATION_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    APIs 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 Execute (Exécuter).

    Le résultat est le suivant. Lorsque la réponse contient "done": true, l'opération de longue durée est terminée.

  3. Une fois l'anonymisation effectuée, vous pouvez récupérer les métadonnées de l'instance anonymisée pour voir ses modifications. L'instance anonymisée a un nouvel UID d'instance, car vous avez spécifié la balise SOPInstanceUID dans le tableau Action.queries[]. Vous devez donc d'abord rechercher l'instance anonymisée dans le nouvel ensemble de données.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • DESTINATION_DATASET_ID: ID de l'ensemble de données de destination dans lequel les données anonymisées sont écrites.
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • DESTINATION_DICOM_STORE_ID: ID du magasin DICOM dans l'ensemble de données de destination. Il s'agit de l'identifiant du magasin DICOM dans l'ensemble de données source.

    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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content

    Vous devriez recevoir une réponse JSON de ce type :

    Le tableau suivant montre comment l'UID des instances a changé:

      Métadonnées d'instance d'origine Métadonnées d'instance anonymisées
    UID d'instance (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. À l'aide de la nouvelle valeur, récupérez les métadonnées de l'instance.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • DESTINATION_DATASET_ID: ID de l'ensemble de données de destination dans lequel les données anonymisées sont écrites.
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • DESTINATION_DICOM_STORE_ID: ID du magasin DICOM dans l'ensemble de données de destination. Il s'agit de l'identifiant du magasin DICOM dans l'ensemble de données source.

    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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/2.25.70541616638819138568043293671559322355/series/1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/2.25.70541616638819138568043293671559322355/series/1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand Content

    APIs 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 Execute (Exécuter).

    La sortie contient les nouvelles métadonnées. Vous pouvez comparer les nouvelles métadonnées aux métadonnées d'origine pour observer l'effet de cette transformation.

    Notez que parmi les ID principaux, seul l'SOPInstanceUID dispose d'un nouvel UID.

Anonymiser les balises de manière récursive dans un élément Sequence imbriqué

Les exemples suivants montrent comment utiliser l'objet RecurseTag pour supprimer de manière récursive l'identification des tags DICOM imbriqués dans un Sequence. L'objet RecurseTag n'est compatible qu'avec la RV SQ, qui est la RV d'un Sequence.

Pour en savoir plus sur la RV SQ, consultez la section 7.5 Imbriquer des ensembles de données.

L'exemple d'instance DICOM fourni pour cette page ne contient aucune balise DICOM associée à une RV SQ. Vous pouvez créer et stocker une instance DICOM avec des données fictives contenant la RV SQ en effectuant les étapes suivantes, basées sur les instructions de la section Créer des instances DICOM à partir de métadonnées JSON et de fichiers JPEG. L'instance DICOM que vous créez lors des étapes suivantes utilise des données fictives et est uniquement destinée à illustrer le comportement de RecurseTag.

  1. Enregistrez les métadonnées DICOM suivantes dans un fichier JSON nommé instance.json. Les métadonnées contiennent une balise PhysiciansReadingStudyIdentificationSequence (00081062). La balise est associée à une RV SQ et contient deux balises PersonIdentificationCodeSequence (00401101) imbriquées. Les balises imbriquées disposent également d'une RV SQ, et chacune contient les balises imbriquées suivantes:

    • CodeValue (00080100)
    • CodingSchemeDesignator (00080102)
    [{
      "00020010": {
        "vr": "UI",
        "Value": [
          "1.2.840.10008.1.2.4.50"
        ]
      },
      "00080005": {
        "vr": "CS",
        "Value": [
          "ISO_IR 192"
        ]
      },
      "00080016": {
        "vr": "UI",
        "Value": [
          "1111111"
        ]
      },
      "00080018": {
        "vr": "UI",
        "Value": [
          "2222222"
        ]
      },
      "0020000D": {
        "vr": "UI",
        "Value": [
          "3333333"
        ]
      },
      "0020000E": {
        "vr": "UI",
        "Value": [
          "4444444"
        ]
      },
      "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": [
          1024
        ]
      },
      "00280011": {
        "vr": "US",
        "Value": [
          1024
        ]
      },
      "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"
      },
      "00081062": {
        "vr": "SQ",
        "Value": [
          {
            "00401101": {
              "vr": "SQ",
              "Value": [
                {
                  "00080100": {
                    "vr": "SH",
                    "Value": [
                      "CodeValue1"
                    ]
                  },
                  "00080102": {
                    "vr": "SH",
                    "Value": [
                      "CodingSchemeDesignator1"
                    ]
                  }
                }
              ]
            }
          },
          {
            "00401101": {
              "vr": "SQ",
              "Value": [
                {
                  "00080100": {
                    "vr": "SH",
                    "Value": [
                      "CodeValue2"
                    ]
                  },
                  "00080102": {
                    "vr": "SH",
                    "Value": [
                      "CodingSchemeDesignator2"
                    ]
                  }
                }
              ]
            }
          }
        ]
      }
    }]
    
  2. Téléchargez le fichier google.jpg sur votre ordinateur local. L'API DICOMweb de l'API Cloud Healthcare accepte n'importe quelle image JPEG associée à des métadonnées JSON tant que ces dernières sont valides.

  3. Exécutez les commandes suivantes pour créer une image d'ouverture (pour les métadonnées JSON), une image du milieu (pour le JPEG) et des limites de fermeture dans l'image:

    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
    
  4. Encapsulez l'image google.jpg entre les limites du milieu et de la fermeture. Le fichier de sortie, que vous envoyez à l'API Cloud Healthcare, s'appelle multipart-request.file:

    cat opening.file instance.json middle.file google.jpg closing.file > multipart-request.file
    
  5. Stockez le fichier multipart-request.file:

    REST

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • SOURCE_DATASET_ID: ID de l'ensemble de données contenant les données à anonymiser.
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • SOURCE_DICOM_STORE_ID: ID du magasin DICOM dans l'ensemble de données source

    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: multipart/related; type=\"application/dicom+json\"; boundary=DICOMwebBoundary" \
    --data-binary @multipart-request.file \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_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 multipart-request.file `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID/dicomWeb/studies" | Select-Object -Expand Content

    Vous devriez recevoir une réponse JSON de ce type :

Procédez comme suit pour anonymiser l'instance DICOM que vous avez stockée.

REST

  1. Anonymisez l'ensemble de données.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • SOURCE_DATASET_ID: ID de l'ensemble de données contenant les données à anonymiser.
    • DESTINATION_DATASET_ID: ID de l'ensemble de données de destination dans lequel les données anonymisées sont écrites.

    Corps JSON de la requête :

    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "actions": [
            {
              "queries": [
               "PhysiciansReadingStudyIdentificationSequence"
              ],
              "recurseTag": {}
            }
          ]
        }
      }
    }
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

    cat > request.json << 'EOF'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "actions": [
            {
              "queries": [
               "PhysiciansReadingStudyIdentificationSequence"
              ],
              "recurseTag": {}
            }
          ]
        }
      }
    }
    EOF

    Exécutez ensuite la commande suivante pour envoyer votre requête REST :

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

    @'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicomTagConfig": {
          "actions": [
            {
              "queries": [
               "PhysiciansReadingStudyIdentificationSequence"
              ],
              "recurseTag": {}
            }
          ]
        }
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Exécutez ensuite la commande suivante pour envoyer votre requête REST :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content
    Le résultat est le suivant. La réponse contient un identifiant pour une opération de longue durée (LRO). Les opérations de longue durée sont renvoyées lorsque les appels de méthode peuvent prendre davantage de temps. Notez la valeur de OPERATION_ID. Vous en aurez besoin à l'étape suivante.

  2. Utilisez la méthode projects.locations.datasets.operations.get pour obtenir l'état de l'opération de longue durée.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • SOURCE_DATASET_ID: ID de l'ensemble de données contenant les données à anonymiser.
    • OPERATION_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    APIs 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 Execute (Exécuter).

    Le résultat est le suivant. Lorsque la réponse contient "done": true, l'opération de longue durée est terminée.

  3. Une fois l'anonymisation effectuée, vous pouvez récupérer les métadonnées de l'instance anonymisée pour voir ses modifications. L'instance anonymisée possède un nouvel UID d'étude, un nouvel UID de série et un nouvel UID d'instance. Vous devez donc d'abord rechercher l'instance anonymisée dans le nouvel ensemble de données.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • DESTINATION_DATASET_ID: ID de l'ensemble de données de destination dans lequel les données anonymisées sont écrites.
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • DESTINATION_DICOM_STORE_ID: ID du magasin DICOM dans l'ensemble de données de destination. Il s'agit de l'identifiant du magasin DICOM dans l'ensemble de données source.

    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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content

    Vous devriez recevoir une réponse JSON de ce type :

    Le tableau suivant montre comment l'UID des études, l'UID de la série et l'UID des instances ont été modifiés:

    Métadonnées d'instance d'origine Métadonnées d'instance anonymisées
    UID d'études (0020000D) 3333333 1.3.6.1.4.1.11129.5.1.222168347996079463826250565085126257314
    UID de série (0020000E) 4444444 1.3.6.1.4.1.11129.5.1.25205702030237830896398173746777399347
    UID d'instance (00080018) 2222222 1.3.6.1.4.1.11129.5.1.286710307126045768765142714621897494633
  4. À l'aide des nouvelles valeurs, récupérez les métadonnées de l'instance.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • DESTINATION_DATASET_ID: ID de l'ensemble de données de destination dans lequel les données anonymisées sont écrites.
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • DESTINATION_DICOM_STORE_ID: ID du magasin DICOM dans l'ensemble de données de destination. Il s'agit de l'identifiant du magasin DICOM dans l'ensemble de données source.

    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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.222168347996079463826250565085126257314/series/1.3.6.1.4.1.11129.5.1.25205702030237830896398173746777399347/instances/1.3.6.1.4.1.11129.5.1.286710307126045768765142714621897494633/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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.222168347996079463826250565085126257314/series/1.3.6.1.4.1.11129.5.1.25205702030237830896398173746777399347/instances/1.3.6.1.4.1.11129.5.1.286710307126045768765142714621897494633/metadata" | Select-Object -Expand Content

    APIs 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 Execute (Exécuter).

    La sortie contient les nouvelles métadonnées. Vous pouvez comparer les nouvelles métadonnées aux métadonnées d'origine à l'étape 1 pour observer l'effet de la transformation.

    Notez en particulier que les valeurs des balises CodeValue et CodingSchemaDesignator imbriquées sont définies sur PLACEHOLDER:

    Original metadataMétadonnées après l'exécution de RecurseTag
    {
      "00081062": {
        "vr": "SQ",
        "Value": [
          {
            "00401101": {
              "vr": "SQ",
              "Value": [
                {
                  "00080100": {
                    "vr": "SH",
                    "Value": [
                      "CodeValue1"
                    ]
                  },
                  "00080102": {
                    "vr": "SH",
                    "Value": [
                      "CodingSchemeDesignator1"
                    ]
                  }
                }
              ]
            }
          },
          {
            "00401101": {
              "vr": "SQ",
              "Value": [
                {
                  "00080100": {
                    "vr": "SH",
                    "Value": [
                      "CodeValue2"
                    ]
                  },
                  "00080102": {
                    "vr": "SH",
                    "Value": [
                      "CodingSchemeDesignator2"
                    ]
                  }
                }
              ]
            }
          }
        ]
      }
    }
    {
      "00081062": {
        "vr": "SQ",
        "Value": [
          {
            "00401101": {
              "vr": "SQ",
              "Value": [
                {
                  "00080100": {
                    "vr": "SH",
                    "Value": [
                      "PLACEHOLDER"
                    ]
                  },
                  "00080102": {
                    "vr": "SH",
                    "Value": [
                      "PLACEHOLDER"
                    ]
                  }
                }
              ]
            }
          },
          {
            "00401101": {
              "vr": "SQ",
              "Value": [
                {
                  "00080100": {
                    "vr": "SH",
                    "Value": [
                      "PLACEHOLDER"
                    ]
                  },
                  "00080102": {
                    "vr": "SH",
                    "Value": [
                      "PLACEHOLDER"
                    ]
                  }
                }
              ]
            }
          }
        ]
      }
    }

Anonymiser les données au niveau du magasin DICOM

Les exemples précédents montrent comment anonymiser des données DICOM au niveau de l'ensemble de données. Cette section explique comment anonymiser des données au niveau du magasin DICOM.

Pour remplacer une requête d'anonymisation d'un ensemble de données par une requête d'anonymisation d'un magasin DICOM, effectuez les modifications suivantes :

  • Remplacez destinationDataset dans le corps de la requête par destinationStore.
  • Ajoutez dicomStores/DESTINATION_DICOM_STORE_ID à la fin de la valeur dans destinationStore lorsque vous spécifiez la destination.
  • Ajoutez dicomStores/SOURCE_DICOM_STORE_ID lorsque vous spécifiez l'emplacement des données sources

Les exemples suivants montrent une requête d'anonymisation au niveau de l'ensemble de données et expliquent comment modifier la requête d'anonymisation au niveau du magasin DICOM:

Anonymisation au niveau de l'ensemble de données :

"destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID"
...
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify"

Anonymisation au niveau du magasin DICOM :

"destinationStore": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID"
...
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID:deidentify"

Les exemples suivants montrent comment anonymiser une instance DICOM dans un magasin DICOM et écrire les données anonymisées dans un nouveau magasin DICOM. Avant d'exécuter les exemples, l'ID du magasin DICOM de destination doit déjà exister.

REST

  1. Anonymisez l'ensemble de données.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • SOURCE_DATASET_ID: ID de l'ensemble de données contenant les données à anonymiser.
    • DESTINATION_DATASET_ID: ID de l'ensemble de données de destination dans lequel les données anonymisées sont écrites. Doit déjà exister avant d'exécuter l'opération d'anonymisation.
    • DESTINATION_DICOM_STORE_ID: magasin DICOM dans l'ensemble de données de destination. Doit déjà exister avant d'exécuter l'opération d'anonymisation.

    Corps JSON de la requête :

    {
      "destinationStore": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID",
      "config": {
        "dicomTagConfig": {
          "actions": [
            {
              "queries": [
               "PatientName"
              ],
              "keepTag": {}
            }
          ]
        }
      }
    }
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

    cat > request.json << 'EOF'
    {
      "destinationStore": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID",
      "config": {
        "dicomTagConfig": {
          "actions": [
            {
              "queries": [
               "PatientName"
              ],
              "keepTag": {}
            }
          ]
        }
      }
    }
    EOF

    Exécutez ensuite la commande suivante pour envoyer votre requête REST :

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID:deidentify"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

    @'
    {
      "destinationStore": "projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID",
      "config": {
        "dicomTagConfig": {
          "actions": [
            {
              "queries": [
               "PatientName"
              ],
              "keepTag": {}
            }
          ]
        }
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Exécutez ensuite la commande suivante pour envoyer votre requête REST :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID:deidentify" | Select-Object -Expand Content
    Le résultat est le suivant. La réponse contient un identifiant pour une opération de longue durée (LRO). Les opérations de longue durée sont renvoyées lorsque les appels de méthode peuvent prendre davantage de temps. Notez la valeur de OPERATION_ID. Vous en aurez besoin à l'étape suivante.

  2. Utilisez la méthode projects.locations.datasets.operations.get pour obtenir l'état de l'opération de longue durée.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • SOURCE_DATASET_ID: ID de l'ensemble de données contenant les données à anonymiser.
    • OPERATION_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    APIs 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 Execute (Exécuter).

    Le résultat est le suivant. Lorsque la réponse contient "done": true, l'opération de longue durée est terminée.

  3. Une fois l'anonymisation effectuée, vous pouvez récupérer les métadonnées de l'instance anonymisée pour voir ses modifications. L'instance anonymisée possède un nouvel UID d'étude, un nouvel UID de série et un nouvel UID d'instance. Vous devez donc d'abord rechercher l'instance anonymisée dans le nouvel ensemble de données.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • DESTINATION_DATASET_ID: ID de l'ensemble de données de destination dans lequel les données anonymisées sont écrites.
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • DESTINATION_DICOM_STORE_ID: ID du magasin DICOM dans l'ensemble de données de destination. Il s'agit de l'identifiant du magasin DICOM dans l'ensemble de données source.

    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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content

    Vous devriez recevoir une réponse JSON de ce type :

    Le tableau suivant montre comment l'UID des études, l'UID de la série et l'UID des instances ont été modifiés:
      Métadonnées d'instance d'origine Métadonnées d'instance anonymisées
    UID d'études (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID de série (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    UID d'instance (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. À l'aide des nouvelles valeurs, récupérez les métadonnées de l'instance.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • DESTINATION_DATASET_ID: ID de l'ensemble de données de destination dans lequel les données anonymisées sont écrites.
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • DESTINATION_DICOM_STORE_ID: ID du magasin DICOM dans l'ensemble de données de destination. Il s'agit de l'identifiant du magasin DICOM dans l'ensemble de données source.

    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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand Content

    APIs 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 Execute (Exécuter).

    La sortie contient les nouvelles métadonnées. Vous pouvez comparer les nouvelles métadonnées aux métadonnées d'origine pour observer l'effet de cette transformation.

Anonymiser un sous-ensemble d'un magasin DICOM

Vous pouvez anonymiser un sous-ensemble des données dans un magasin DICOM en spécifiant un filtre.

Le filtre prend la forme d'un fichier de filtre que vous spécifiez en tant que valeur du champ resourcePathsGcsUri dans l'objet DicomFilterConfig. Le fichier de filtre doit exister dans un bucket Cloud Storage. Vous ne pouvez pas spécifier un fichier de filtre existant sur votre ordinateur local ou sur une autre source. L'emplacement du fichier doit être au format gs://BUCKET/PATH/TO/FILE.

Créer un fichier de filtre

Un fichier de filtre définit les fichiers DICOM à anonymiser. Vous pouvez filtrer les fichiers aux niveaux suivants :

  • Au niveau de l'étude
  • Au niveau de la série
  • Au niveau de l'instance

Le fichier de filtre est constitué d'une ligne par étude, série ou instance que vous souhaitez anonymiser. Chaque ligne utilise le format /studies/STUDY_UID[/series/SERIES_UID[/instances/INSTANCE_UID]]. Un caractère de nouvelle ligne est ajouté à la fin de chaque ligne : \n ou \r\n.

Si une étude, une série ou une instance n'est pas spécifiée dans le fichier de filtre que vous avez transmis lors de l'appel de l'opération d'anonymisation, cette étude, cette série ou cette instance ne seront pas anonymisées et ne seront pas présentes dans le magasin DICOM de destination.

Seule la partie /studies/STUDY_UID du chemin est obligatoire. Cela signifie que vous pouvez anonymiser une étude en spécifiant /studies/STUDY_UID, ou anonymiser une série en spécifiant /studies/STUDY_UID/series/SERIES_UID.

Prenons l'exemple du fichier de filtre suivant : Le fichier de filtre entraîne l'anonymisation d'une étude, de deux séries et de trois instances individuelles :

/studies/1.123.456.789
/studies/1.666.333.111/series/123.456\n
/studies/1.666.333.111/series/567.890\n
/studies/1.888.999.222/series/123.456/instances/111\n
/studies/1.888.999.222/series/123.456/instances/222\n
/studies/1.888.999.222/series/123.456/instances/333\n

Créer un fichier de filtre à l'aide de BigQuery

Vous créez généralement un fichier de filtre en commençant par exporter les métadonnées d'un magasin DICOM vers BigQuery. Cela vous permet d'utiliser BigQuery pour afficher les UID d'étude, de série et d'instance des données DICOM dans votre magasin DICOM. Vous pouvez ensuite réaliser les opérations suivantes :

  1. Effectuez une requête sur les UID d'étude, de série et d'instance qui vous intéressent. Par exemple, après avoir exporté les métadonnées vers BigQuery, vous pouvez exécuter la requête suivante pour concaténer les UID d'étude, de série et d'instance dans un format compatible avec les exigences du fichier de filtre :

    SELECT CONCAT
      ('/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID)
    FROM
      [PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE]
    
  2. Si la requête renvoie un grand ensemble de résultats, vous pouvez matérialiser une nouvelle table en enregistrant les résultats de la requête dans une table de destination dans BigQuery.

  3. Après avoir enregistré les résultats de la requête dans la table de destination, vous pouvez enregistrer le contenu de la table de destination dans un fichier et l'exporter vers Cloud Storage. Pour obtenir des instructions sur la procédure à suivre, consultez la page Exporter des données de table. Le fichier exporté est votre fichier de filtre. Vous utiliserez l'emplacement du fichier de filtre dans Cloud Storage lors de la spécification du filtre dans l'opération d'exportation.

Créer un fichier de filtre manuellement

Vous pouvez créer un fichier de filtre avec du contenu personnalisé et l'importer dans un bucket Cloud Storage. Vous utiliserez l'emplacement du fichier de filtre dans Cloud Storage lors de la spécification du filtre dans l'opération d'anonymisation. L'exemple suivant montre comment importer un fichier de filtre dans un bucket Cloud Storage à l'aide de la commande gsutil cp :

gsutil cp PATH/TO/FILTER_FILE gs://BUCKET/DIRECTORY

Exemple :

gsutil cp /home/user/Desktop/filters.txt gs://my-bucket/my-directory

Utiliser un filtre

Une fois que votre fichier de filtre est configuré, vous pouvez le transmettre en tant que valeur au champ resourcePathsGcsUri de l'objet filterConfig.

L'exemple suivant développe la suppression de l'identification des données au niveau du magasin DICOM, mais un fichier de filtre dans Cloud Storage est fourni pour déterminer quelles ressources DICOM sont anonymisées.

REST

  1. Anonymisez l'ensemble de données.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • LOCATION : emplacement de l'ensemble de données
    • SOURCE_DATASET_ID: ID de l'ensemble de données contenant les données à anonymiser.
    • DESTINATION_DATASET_ID: ID de l'ensemble de données de destination dans lequel les données anonymisées sont écrites.
    • SOURCE_DICOM_STORE_ID: ID du magasin DICOM contenant les données à anonymiser
    • DESTINATION_DICOM_STORE_ID: ID du magasin DICOM dans l'ensemble de données de destination
    • BUCKET/PATH/TO/FILE : emplacement du fichier de filtre dans un bucket Cloud Storage

    Corps JSON de la requête :

    {
      "destinationStore": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID",
      "config": {
        "dicom": {
          "filterProfile": "DEIDENTIFY_TAG_CONTENTS"
        },
        "image": {
          "textRedactionMode": "REDACT_ALL_TEXT"
        }
      },
      "filterConfig": {
        "resourcePathGcsUri": "gs://BUCKET/PATH/TO/FILE"
      }
    }
    

    Pour envoyer votre requête, choisissez l'une des options suivantes :

    curl

    Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

    cat > request.json << 'EOF'
    {
      "destinationStore": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID",
      "config": {
        "dicom": {
          "filterProfile": "DEIDENTIFY_TAG_CONTENTS"
        },
        "image": {
          "textRedactionMode": "REDACT_ALL_TEXT"
        }
      },
      "filterConfig": {
        "resourcePathGcsUri": "gs://BUCKET/PATH/TO/FILE"
      }
    }
    EOF

    Exécutez ensuite la commande suivante pour envoyer votre requête REST :

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID:deidentify"

    PowerShell

    Enregistrez le corps de la requête dans un fichier nommé request.json. Exécutez la commande suivante dans le terminal pour créer ou écraser ce fichier dans le répertoire actuel :

    @'
    {
      "destinationStore": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID",
      "config": {
        "dicom": {
          "filterProfile": "DEIDENTIFY_TAG_CONTENTS"
        },
        "image": {
          "textRedactionMode": "REDACT_ALL_TEXT"
        }
      },
      "filterConfig": {
        "resourcePathGcsUri": "gs://BUCKET/PATH/TO/FILE"
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Exécutez ensuite la commande suivante pour envoyer votre requête REST :

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID:deidentify" | Select-Object -Expand Content
    Le résultat est le suivant. La réponse contient un identifiant pour une opération de longue durée. Les opérations de longue durée sont renvoyées lorsque les appels de méthode peuvent prendre un temps considérable. Notez la valeur de OPERATION_ID. Vous aurez besoin de cette valeur à l'étape suivante.

  2. Utilisez la méthode projects.locations.datasets.operations.get pour obtenir l'état de l'opération de longue durée.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • SOURCE_DATASET_ID: ID de l'ensemble de données contenant les données à anonymiser.
    • OPERATION_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    APIs 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 Execute (Exécuter).

    Le résultat est le suivant. Lorsque la réponse contient "done": true, l'opération de longue durée est terminée.

  3. Une fois l'anonymisation effectuée, vous pouvez récupérer les métadonnées de l'instance anonymisée pour voir ses modifications. L'instance anonymisée possède un nouvel UID d'étude, un nouvel UID de série et un nouvel UID d'instance. Vous devez donc d'abord rechercher l'instance anonymisée dans le nouvel ensemble de données.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • DESTINATION_DATASET_ID: ID de l'ensemble de données de destination dans lequel les données anonymisées sont écrites.
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • DESTINATION_DICOM_STORE_ID: ID du magasin DICOM dans l'ensemble de données de destination. Il s'agit de l'identifiant du magasin DICOM dans l'ensemble de données source.

    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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content

    Vous devriez recevoir une réponse JSON de ce type :

    Le tableau suivant montre comment l'UID des études, l'UID de la série et l'UID des instances ont été modifiés:
      Métadonnées d'instance d'origine Métadonnées d'instance anonymisées
    UID d'études (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID de série (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    UID d'instance (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. À l'aide des nouvelles valeurs, récupérez les métadonnées de l'instance.

    Avant d'utiliser les données de requête, effectuez les remplacements suivants:

    • PROJECT_ID : ID de votre projet Google Cloud
    • DESTINATION_DATASET_ID: ID de l'ensemble de données de destination dans lequel les données anonymisées sont écrites.
    • SOURCE_DATASET_LOCATION : emplacement de l'ensemble de données source
    • DESTINATION_DICOM_STORE_ID: ID du magasin DICOM dans l'ensemble de données de destination. Il s'agit de l'identifiant du magasin DICOM dans l'ensemble de données source.

    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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/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/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand Content

    APIs 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 Execute (Exécuter).

    La sortie contient les nouvelles métadonnées. Vous pouvez comparer les nouvelles métadonnées aux métadonnées d'origine pour observer l'effet de cette transformation.

Résoudre les problèmes liés aux opérations d'anonymisation DICOM

Si des erreurs se produisent lors d'une opération d'anonymisation DICOM, elles sont consignées dans Cloud Logging. Pour en savoir plus, consultez la section Afficher les journaux d'erreurs dans Cloud Logging.

Si l'ensemble de l'opération renvoie une erreur, consultez la section Résoudre les problèmes d'opérations de longue durée.