Créer et gérer des enregistrements d'annotations

Cette page explique comment créer, afficher, répertorier et supprimer des enregistrements d'annotations. Les libellés et les tags pour le texte, les images et le contenu audio des soins de santé sont des exemples d'enregistrements d'annotations. Pour obtenir une présentation des magasins d'annotations et des enregistrements d'annotations, consultez la section Annotations.

Créer un enregistrement d'annotation

Pour pouvoir créer un enregistrement d'annotation, vous devez d'abord créer un magasin d'annotations.

Les exemples suivants montrent comment créer un enregistrement d'annotation. Pour en savoir plus, consultez projects.locations.datasets.annotationStores.annotations.create.

curl

Pour créer un enregistrement d'annotation, envoyez une requête POST et fournissez les informations suivantes :

  • Nom de l'ensemble de données parent
  • Nom du magasin d'annotations parent
  • Source de l'enregistrement d'annotation
  • Type d'enregistrement d'annotation
  • Un jeton d'accès

L'exemple suivant montre une requête POST utilisant curl qui crée un enregistrement d'annotation pour une image DICOM. L'annotation utilise un cadre de délimitation pour marquer les dimensions d'une partie de l'image et ajouter un libellé à la zone limitée avec le nom "bounding-box". Cet exemple suppose que vous avez déjà stocké une instance DICOM dans un magasin DICOM. Cette instance DICOM est référencée dans le champ name de cloudHealthcareSource.

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    --data "{
      'annotationSource': {
        'cloudHealthcareSource': {
          'name': 'projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_UID'
        }
      },
      'imageAnnotation': {
        'boundingPolys': [
          {
            'vertices': [
              {
                'x': 100,
                'y': 100
              },
              {
                'x': 100,
                'y': 400
              },
              {
                'x': 400,
                'y': 100
              },
              {
                'x': 400,
                'y': 400
              }
            ],
            'label': 'bounding-box'
          }
        ]
      }
    }" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/annotationStores/ANNOTATION_STORE_ID/annotations"

Si la requête aboutit, le serveur renvoie la réponse au format JSON :

{
  "name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/annotationStores/ANNOTATION_STORE_ID/annotations/ANNOTATION_ID",
  "annotationSource": {
    "cloudHealthcareSource": {
      "name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_UID"
    }
  },
  "imageAnnotation": {
    "boundingPolys": [
      {
        "vertices": [
          {
            "x": 100,
            "y": 100
          },
          {
            "x": 100,
            "y": 400
          },
          {
            "x": 400,
            "y": 100
          },
          {
            "x": 400,
            "y": 400
          }
        ],
        "label": "bounding-box"
      }
    ]
  }
}

PowerShell

Pour créer un enregistrement d'annotation, envoyez une requête POST et fournissez les informations suivantes :

  • Nom de l'ensemble de données parent
  • Nom du magasin d'annotations parent
  • Source de l'enregistrement d'annotation
  • Type d'enregistrement d'annotation
  • Un jeton d'accès

L'exemple suivant montre une requête POST utilisant Windows PowerShell qui crée un enregistrement d'annotation pour une image DICOM. L'annotation utilise un cadre de délimitation pour marquer les dimensions d'une partie de l'image et ajouter un libellé à la zone limitée avec le nom "bounding-box". Cet exemple suppose que vous avez déjà stocké une instance DICOM dans un magasin DICOM. Cette instance DICOM est référencée dans le champ name de cloudHealthcareSource.

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

Invoke-WebRequest `
  -Method Post `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body "{
    'annotationSource': {
      'cloudHealthcareSource': {
        'name': 'projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_UID'
      }
    },
    'imageAnnotation': {
      'boundingPolys': [
        {
          'vertices': [
            {
              'x': 100,
              'y': 100
            },
            {
              'x': 100,
              'y': 400
            },
            {
              'x': 400,
              'y': 100
            },
            {
              'x': 400,
              'y': 400
            }
          ],
          'label': 'bounding-box'
        }
      ]
    }
  }" `
  -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/annotationStores/ANNOTATION_STORE_ID/annotations" | Select-Object -Expand Content

Si la requête aboutit, le serveur renvoie la réponse au format JSON :

{
  "name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/annotationStores/ANNOTATION_STORE_ID/annotations/ANNOTATION_ID",
  "annotationSource": {
    "cloudHealthcareSource": {
      "name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_UID"
    }
  },
  "imageAnnotation": {
    "boundingPolys": [
      {
        "vertices": [
          {
            "x": 100,
            "y": 100
          },
          {
            "x": 100,
            "y": 400
          },
          {
            "x": 400,
            "y": 100
          },
          {
            "x": 400,
            "y": 400
          }
        ],
        "label": "bounding-box"
      }
    ]
  }
}

Modifier un enregistrement d'annotation

Les exemples suivants montrent comment modifier l'enregistrement d'annotation depuis la section Créer un enregistrement d'annotation afin qu'il possède un libellé de type de ressource. Pour en savoir plus, consultez projects.locations.datasets.annotationStores.annotations.patch.

curl

Pour modifier un enregistrement d'annotation, envoyez une requête PATCH et fournissez les informations suivantes :

  • Nom de l'ensemble de données parent
  • Nom du magasin d'annotations parent
  • ID de l'enregistrement d'annotation
  • Données à mettre à jour
  • Un masque de mise à jour
  • Un jeton d'accès

L'exemple suivant montre une requête PATCH utilisant curl sur un enregistrement d'annotation pour une instance DICOM.

curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    --data "{
      'resourceAnnotation': {
        'label': 'VALUE'
      }
    }" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/annotationStores/ANNOTATION_STORE_ID/annotations/ANNOTATION_ID?updateMask=resourceAnnotation"

Si la requête aboutit, le serveur renvoie la réponse au format JSON :

{
  "name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/annotationStores/ANNOTATION_STORE_ID/annotations/ANNOTATION_ID",
  "annotationSource": {
    "cloudHealthcareSource": {
      "name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_UID"
    }
  },
  "resourceAnnotation": {
    "label": "VALUE"
  }
}

PowerShell

Pour modifier un enregistrement d'annotation, envoyez une requête PATCH et fournissez les informations suivantes :

  • Nom de l'ensemble de données parent
  • Nom du magasin d'annotations parent
  • ID de l'enregistrement d'annotation
  • Données à mettre à jour
  • Un masque de mise à jour
  • Un jeton d'accès

L'exemple suivant montre une requête PATCH utilisant Windows PowerShell sur un enregistrement d'annotation pour une instance DICOM.

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

Invoke-WebRequest `
  -Method Patch `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -Body "{
    'resourceAnnotation': {
      'label': 'VALUE'
    }
  }" `
  -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/annotationStores/ANNOTATION_STORE_ID/annotations/ANNOTATION_ID?updateMask=resourceAnnotation" | Select-Object -Expand Content

Si la requête aboutit, le serveur renvoie la réponse au format JSON :

{
  "name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/annotationStores/ANNOTATION_STORE_ID/annotations/ANNOTATION_ID",
  "annotationSource": {
    "cloudHealthcareSource": {
      "name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_UID"
    }
  },
  "resourceAnnotation": {
    "label": "VALUE"
  }
}

Obtenir les détails de l'enregistrement d'annotation

Les exemples suivants montrent comment obtenir des détails sur un enregistrement d'annotation. Pour en savoir plus, consultez projects.locations.datasets.annotationStores.annotations.get.

curl

Pour obtenir des détails sur un enregistrement d'annotation, envoyez une requête GET et fournissez les informations suivantes :

  • Nom de l'ensemble de données parent
  • Nom du magasin d'annotations parent
  • ID de l'enregistrement d'annotation
  • Un jeton d'accès

L'exemple suivant montre une requête GET utilisant curl pour afficher un enregistrement d'annotation pour une instance DICOM.

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/annotationStores/ANNOTATION_STORE_ID/annotations/ANNOTATION_ID"

Si la requête aboutit, le serveur renvoie la réponse au format JSON :

{
  "name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/annotationStores/ANNOTATION_STORE_ID/annotations/ANNOTATION_ID",
  "annotationSource": {
    "cloudHealthcareSource": {
      "name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_UID"
    }
  }
}

Si vous avez configuré des champs dans la ressource Annotation, ils apparaissent également dans la réponse.

PowerShell

Pour obtenir des détails sur un enregistrement d'annotation, envoyez une requête GET et fournissez les informations suivantes :

  • Nom de l'ensemble de données parent
  • Nom du magasin d'annotations parent
  • ID de l'enregistrement d'annotation
  • Un jeton d'accès

L'exemple suivant montre une requête GET utilisant Windows PowerShell pour afficher un enregistrement d'annotation pour une instance DICOM.

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

Invoke-WebRequest `
  -Method Get `
  -Headers $headers `
  -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/annotationStores/ANNOTATION_STORE_ID/annotations/ANNOTATION_ID" | Select-Object -Expand Content

Si la requête aboutit, le serveur renvoie la réponse au format JSON :

{
  "name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/annotationStores/ANNOTATION_STORE_ID/annotations/ANNOTATION_ID",
  "annotationSource": {
    "cloudHealthcareSource": {
      "name": "projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_UID"
    }
  }
}

Si vous avez configuré des champs dans la ressource Annotation, ils apparaissent également dans la réponse.

Répertorier les enregistrements d'annotation dans un magasin d'annotations

Les exemples suivants montrent comment répertorier les enregistrements d'annotation dans un magasin d'annotations. Pour en savoir plus, consultez la page projects.locations.datasets.annotationStores.annotations.list.

curl

Pour répertorier les enregistrements d'annotations dans un magasin d'annotations, envoyez une requête GET et fournissez les informations suivantes :

  • Nom de l'ensemble de données parent
  • Nom du magasin d'annotations
  • Un jeton d'accès

L'exemple suivant montre une requête GET utilisant curl sur un magasin d'annotations contenant des enregistrements d'annotation pour une instance DICOM.

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/annotationStores/ANNOTATION_STORE_ID/annotations"

Si la requête aboutit, le serveur renvoie la réponse au format JSON :

{
  "annotations": [
    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/annotationStores/ANNOTATION_STORE_ID/annotations/ANNOTATION_ID",
      "annotationSource": {
        "cloudHealthcareSource": {
          "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_UID"
        }
      }
    }
  ]
}

Si vous avez configuré des champs dans la ressource Annotation, ils apparaissent également dans la réponse.

PowerShell

Pour répertorier les enregistrements d'annotations dans un magasin d'annotations, envoyez une requête GET et fournissez les informations suivantes :

  • Nom de l'ensemble de données parent
  • Nom du magasin d'annotations
  • Un jeton d'accès

L'exemple suivant montre une requête GET utilisant Windows PowerShell sur un magasin d'annotations contenant des enregistrements d'annotation pour une instance DICOM.

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

Invoke-WebRequest `
  -Method Get `
  -Headers $headers `
  -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/annotationStores/ANNOTATION_STORE_ID/annotations" | Select-Object -Expand Content

Si la requête aboutit, le serveur renvoie la réponse au format JSON :

{
  "annotations": [
    {
      "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/annotationStores/ANNOTATION_STORE_ID/annotations/ANNOTATION_ID",
      "annotationSource": {
        "cloudHealthcareSource": {
          "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/DICOM_STORE_ID/dicomWeb/studies/STUDY_UID"
        }
      }
    }
  ]
}

Si vous avez configuré des champs dans la ressource Annotation, ils apparaissent également dans la réponse.

Supprimer un enregistrement d'annotation

Les exemples suivants montrent comment supprimer un enregistrement d'annotation. Pour en savoir plus, consultez la section sur projects.locations.datasets.annotationStores.annotations.delete.

curl

Pour supprimer un enregistrement d'annotation, envoyez une requête DELETE et fournissez les informations suivantes :

  • Nom de l'ensemble de données parent
  • Nom du magasin d'annotations parent
  • ID de l'enregistrement d'annotation
  • Un jeton d'accès

L'exemple suivant montre une requête DELETE utilisant curl.

curl -X DELETE \
     -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
     "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/annotationStores/ANNOTATION_STORE_ID/annotations/ANNOTATION_ID"

Si la requête aboutit, le serveur renvoie un corps de réponse vide au format JSON :

{}

PowerShell

Pour supprimer un enregistrement d'annotation, envoyez une requête DELETE et fournissez les informations suivantes :

  • Nom de l'ensemble de données parent
  • Nom du magasin d'annotations parent
  • ID de l'enregistrement d'annotation
  • Un jeton d'accès

L'exemple suivant montre une requête DELETE utilisant Windows PowerShell.

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

Invoke-WebRequest `
  -Method Delete `
  -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/REGION/datasets/DATASET_ID/annotationStores/ANNOTATION_STORE_ID/annotations/ANNOTATION_ID" | Select-Object -Expand Content

Si la requête aboutit, le serveur renvoie un corps de réponse vide au format JSON :

{}