Desidentificación de datos de DICOM con DicomConfig

En esta página, se explica cómo usar la configuración de DicomConfig v1 para desidentificar datos sensibles en instancias de DICOM en los siguientes niveles:

En esta página, también se explica cómo aplicar filtros cuando se desidentifican datos en el nivel del almacén DICOM.

Descripción general de la desidentificación

Desidentificación a nivel de conjunto de datos

Para desidentificar datos de DICOM a nivel de conjunto de datos, llama a la operación datasets.deidentify. La llamada a la API de desidentificación tiene los siguientes componentes:

  • El conjunto de datos de origen: Un conjunto de datos que contiene almacenes de DICOM con una o más instancias que tienen datos sensibles. Cuando llamas a la operación deidentify, se desidentifican todas las instancias en todos los almacenes de DICOM del conjunto de datos.
  • El conjunto de datos de destino: La desidentificación no afecta el conjunto de datos original o sus datos. En cambio, las copias desidentificadas de los datos originales se escriben en un conjunto de datos nuevo, denominado conjunto de datos de destino.
  • Qué desidentificar: Parámetros de configuración que especifican cómo procesar el conjunto de datos. Puedes configurar la desidentificación de DICOM para desidentificar los metadatos de la instancia de DICOM (mediante el uso de palabras clave de etiquetas) en imágenes DICOM. Para ello, especifica estos parámetros en un objeto DeidentifyConfig y haz lo siguiente:
    • Configura el campo config del cuerpo de la solicitud
    • Almacénalo en Cloud Storage en formato JSON y especifíca la ubicación del archivo en el bucket mediante el campo gcsConfigUri del cuerpo de la solicitud.

En la mayoría de las muestras de esta guía, se muestra cómo desidentificar datos DICOM a nivel de conjunto de datos.

Desidentificación a nivel del almacén de DICOM

Desidentificar los datos de DICOM a nivel del almacén de DICOM te permite tener más control sobre qué datos se desidentifican. Por ejemplo, si tienes un conjunto de datos con varios almacenes de DICOM, puedes desidentificar cada almacén DICOM según el tipo de datos que exista en el almacén.

Para desidentificar los datos de DICOM en un almacén de DICOM, llama al método dicomStores.deidentify. La llamada a la API de desidentificación tiene los siguientes componentes:

  • Almacén de DICOM de origen: Un almacén DICOM que contiene una o más instancias que tienen datos sensibles. Cuando llamas a la operación deidentify, se desidentifican todas las instancias en el almacén de DICOM.
  • El almacén DICOM de destino: La desidentificación no afecta al almacén de DICOM original ni a sus datos. En cambio, las copias desidentificadas de los datos originales se escriben en el almacén DICOM de destino. El almacén de DICOM de destino ya debe existir.
  • Qué desidentificar: Parámetros de configuración que especifican cómo procesar el almacén de DICOM. Puedes configurar la desidentificación de DICOM para desidentificar los metadatos de la instancia de DICOM (mediante el uso de palabras clave de etiquetas) o el texto grabado en las imágenes de DICOM. Para ello, especifica estos parámetros en un objeto DeidentifyConfig y pásalo de una de las siguientes maneras:
    • Configura el campo config del cuerpo de la solicitud
    • Almacénalo en Cloud Storage en formato JSON y especifíca la ubicación del archivo en el bucket mediante el campo gcsConfigUri del cuerpo de la solicitud.

Para ver un ejemplo de cómo desidentificar datos de DICOM a nivel del almacén DICOM, consulta Desidentifica datos a nivel del almacén de DICOM.

Filtros

Puedes desidentificar un subconjunto de datos en un almacén DICOM si configuras un archivo de filtro y especificas el archivo en la solicitud dicomStores.deidentify. Para ver un ejemplo, consulta Desidentifica un subconjunto de almacenamiento de DICOM.

Descripción general de muestras

En las muestras de esta guía, se usa una sola instancia de DICOM, pero también puedes desidentificar varias instancias.

En cada una de las siguientes secciones, se proporcionan ejemplos de cómo desidentificar datos de DICOM mediante varios métodos. Se proporciona un resultado de la imagen desidentificada en cada muestra. En cada muestra, se usa la siguiente imagen original como su entrada:

xray_original

Puedes comparar la imagen de salida de cada operación de desidentificación con esta imagen original para ver los efectos de la operación.

Desidentifica etiquetas de DICOM

Puedes desidentificar las instancias de DICOM según las palabras clave de etiqueta en los metadatos de DICOM. Los siguientes métodos de filtrado de etiquetas están disponibles en el objeto DicomConfig:

  • keepList: Es la lista de etiquetas que se deben conservar. Quita todas las demás etiquetas.
  • removeList: Es la lista de etiquetas que se deben quitar. Mantén todas las demás etiquetas.
  • filterProfile: Es un perfil de filtrado de etiquetas que se usa para determinar qué etiquetas conservar o quitar.

Para cada muestra de esta sección, se proporciona el resultado de los metadatos modificados de la instancia de DICOM. A continuación, se muestran los metadatos originales de la instancia que se usaron como entrada para cada muestra:

[
  {
    "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"]}
  }
]

Desidentificación mediante el uso de etiquetas keeplist

Cuando especificas una etiqueta keeplist en el objeto DicomConfig, las siguientes etiquetas se agregan de forma predeterminada:

  • 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

La operación deidentify no oculta las etiquetas anteriores. Sin embargo, los valores de algunas de las etiquetas se vuelven a generar, lo que significa que los valores se reemplazan por un valor diferente a través de una transformación determinista. Para obtener más información, consulta Retén la opción UID en el estándar de DICOM. Para conservar los valores originales de las etiquetas anteriores, usa la opción SkipIdRedaction.

Si no se proporcionan etiquetas de keeplist, no se ocultan etiquetas de DICOM en el conjunto de datos.

En los siguientes ejemplos, se muestra cómo desidentificar un conjunto de datos que contiene almacenes y datos DICOM sin modificar algunas etiquetas.

Después de enviar la imagen a la API de Cloud Healthcare, la imagen aparece de la siguiente manera. Mientras se ocultan los metadatos que se muestran en las esquinas superiores de la imagen, la información de salud protegida (PHI) quemado en la parte inferior de la imagen permanece. Para quitar también el texto quemado, consulta Oculta el texto quemado de las imágenes.

dicom_keeplist

REST

  1. Desidentifica el conjunto de datos.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • LOCATION: La ubicación del conjunto de datos
    • SOURCE_DATASET_ID: El ID del conjunto de datos que contiene los datos que se desidentificarán
    • DESTINATION_DATASET_ID: El ID del conjunto de datos de destino en el que se escriben los datos desidentificados

    Cuerpo JSON de la solicitud:

    {
      "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicom": {
          "keepList": {
            "tags": [
              "PatientID"
            ]
          }
        }
      }
    }
    

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

    cat > request.json << 'EOF'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicom": {
          "keepList": {
            "tags": [
              "PatientID"
            ]
          }
        }
      }
    }
    EOF

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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:deidentify"

    PowerShell

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

    @'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicom": {
          "keepList": {
            "tags": [
              "PatientID"
            ]
          }
        }
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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:deidentify" | Select-Object -Expand Content
    Este es el resultado. La respuesta contiene un identificador para una operación de larga duración. Las operaciones de larga duración se muestran cuando las llamadas de métodos pueden tardar una cantidad considerable de tiempo en completarse. Toma nota del valor de OPERATION_ID. Necesitarás este valor en el siguiente paso.

  2. Usa el método projects.locations.datasets.operations.get para obtener el estado de la operación de larga duración.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • DATASET_ID: El ID del conjunto de datos
    • LOCATION: La ubicación del conjunto de datos
    • OPERATION_ID: Es el ID que muestra la operación de larga duración.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"

    PowerShell

    Ejecuta el siguiente comando:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    Explorador de API

    Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

    Este es el resultado. Cuando la respuesta contiene "done": true, significa que la operación de larga duración finalizó.
  3. Una vez que la desidentificación se realiza de forma correcta, puedes recuperar los metadatos de la instancia desidentificada para ver cómo se cambió. La instancia desidentificada tiene un UID de estudios nuevo, un UID de serie y un UID de instancias, por lo que primero debes buscar la instancia desidentificada en el conjunto de datos nuevo.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • SOURCE_DATASET_LOCATION: La ubicación del conjunto de datos de origen
    • DESTINATION_DATASET_ID: El ID del conjunto de datos de destino en el que se escriben los datos desidentificados
    • DESTINATION_DICOM_STORE_ID: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"

    PowerShell

    Ejecuta el siguiente comando:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content

    Explorador de API

    Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    En la siguiente tabla, se muestra cómo cambiaron el UID de los estudios, el UID de la serie y el UID de las instancias:
      Metadatos de la instancia original Metadatos de instancia desidentificados
    UID de estudios (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID de serie (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    UID de instancias (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. Con los valores nuevos, recupera los metadatos de la instancia.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • LOCATION: La ubicación del conjunto de datos
    • DESTINATION_DATASET_ID: El ID del conjunto de datos de destino en el que se escriben los datos desidentificados
    • DESTINATION_DICOM_STORE_ID: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/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

    Ejecuta el siguiente comando:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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

    Explorador de API

    Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

    El resultado contiene los metadatos nuevos. Puedes comparar los metadatos nuevos con los metadatos originales para ver el efecto de la transformación.

Go

import (
	"context"
	"fmt"
	"io"
	"time"

	healthcare "google.golang.org/api/healthcare/v1"
)

// deidentifyDataset creates a new dataset containing de-identified data from the source dataset.
func deidentifyDataset(w io.Writer, projectID, location, sourceDatasetID, destinationDatasetID string) error {
	ctx := context.Background()

	healthcareService, err := healthcare.NewService(ctx)
	if err != nil {
		return fmt.Errorf("healthcare.NewService: %w", err)
	}

	datasetsService := healthcareService.Projects.Locations.Datasets

	parent := fmt.Sprintf("projects/%s/locations/%s", projectID, location)

	req := &healthcare.DeidentifyDatasetRequest{
		DestinationDataset: fmt.Sprintf("%s/datasets/%s", parent, destinationDatasetID),
		Config: &healthcare.DeidentifyConfig{
			Dicom: &healthcare.DicomConfig{
				KeepList: &healthcare.TagFilterList{
					Tags: []string{
						"PatientID",
					},
				},
			},
		},
	}

	sourceName := fmt.Sprintf("%s/datasets/%s", parent, sourceDatasetID)
	resp, err := datasetsService.Deidentify(sourceName, req).Do()
	if err != nil {
		return fmt.Errorf("Deidentify: %w", err)
	}

	// Wait for the deidentification operation to finish.
	operationService := healthcareService.Projects.Locations.Datasets.Operations
	for {
		op, err := operationService.Get(resp.Name).Do()
		if err != nil {
			return fmt.Errorf("operationService.Get: %w", err)
		}
		if !op.Done {
			time.Sleep(1 * time.Second)
			continue
		}
		if op.Error != nil {
			return fmt.Errorf("deidentify operation error: %v", *op.Error)
		}
		fmt.Fprintf(w, "Created de-identified dataset %s from %s\n", resp.Name, sourceName)
		return nil
	}
}

Java

import com.google.api.client.http.HttpRequestInitializer;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.gson.GsonFactory;
import com.google.api.services.healthcare.v1.CloudHealthcare;
import com.google.api.services.healthcare.v1.CloudHealthcare.Projects.Locations.Datasets;
import com.google.api.services.healthcare.v1.CloudHealthcareScopes;
import com.google.api.services.healthcare.v1.model.DeidentifyConfig;
import com.google.api.services.healthcare.v1.model.DeidentifyDatasetRequest;
import com.google.api.services.healthcare.v1.model.DicomConfig;
import com.google.api.services.healthcare.v1.model.Operation;
import com.google.api.services.healthcare.v1.model.TagFilterList;
import com.google.auth.http.HttpCredentialsAdapter;
import com.google.auth.oauth2.GoogleCredentials;
import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;

public class DatasetDeIdentify {
  private static final String DATASET_NAME = "projects/%s/locations/%s/datasets/%s";
  private static final JsonFactory JSON_FACTORY = new GsonFactory();
  private static final NetHttpTransport HTTP_TRANSPORT = new NetHttpTransport();

  public static void datasetDeIdentify(String srcDatasetName, String destDatasetName)
      throws IOException {
    // String srcDatasetName =
    //     String.format(DATASET_NAME, "your-project-id", "your-region-id", "your-src-dataset-id");
    // String destDatasetName =
    //    String.format(DATASET_NAME, "your-project-id", "your-region-id", "your-dest-dataset-id");

    // Initialize the client, which will be used to interact with the service.
    CloudHealthcare client = createClient();

    // Configure what information needs to be De-Identified.
    // For more information on de-identifying using tags, please see the following:
    // https://cloud.google.com/healthcare/docs/how-tos/dicom-deidentify#de-identification_using_tags
    TagFilterList tags = new TagFilterList().setTags(Arrays.asList("PatientID"));
    DicomConfig dicomConfig = new DicomConfig().setKeepList(tags);
    DeidentifyConfig config = new DeidentifyConfig().setDicom(dicomConfig);

    // Create the de-identify request and configure any parameters.
    DeidentifyDatasetRequest deidentifyRequest =
        new DeidentifyDatasetRequest().setDestinationDataset(destDatasetName).setConfig(config);
    Datasets.Deidentify request =
        client.projects().locations().datasets().deidentify(srcDatasetName, deidentifyRequest);

    // Execute the request, wait for the operation to complete, and process the results.
    try {
      Operation operation = request.execute();
      while (operation.getDone() == null || !operation.getDone()) {
        // Update the status of the operation with another request.
        Thread.sleep(500); // Pause for 500ms between requests.
        operation =
            client
                .projects()
                .locations()
                .datasets()
                .operations()
                .get(operation.getName())
                .execute();
      }
      System.out.println(
          "De-identified Dataset created. Response content: " + operation.getResponse());
    } catch (Exception ex) {
      System.out.printf("Error during request execution: %s", ex.toString());
      ex.printStackTrace(System.out);
    }
  }

  private static CloudHealthcare createClient() throws IOException {
    // Use Application Default Credentials (ADC) to authenticate the requests
    // For more information see https://cloud.google.com/docs/authentication/production
    GoogleCredentials credential =
        GoogleCredentials.getApplicationDefault()
            .createScoped(Collections.singleton(CloudHealthcareScopes.CLOUD_PLATFORM));

    // Create a HttpRequestInitializer, which will provide a baseline configuration to all requests.
    HttpRequestInitializer requestInitializer =
        request -> {
          new HttpCredentialsAdapter(credential).initialize(request);
          request.setConnectTimeout(60000); // 1 minute connect timeout
          request.setReadTimeout(60000); // 1 minute read timeout
        };

    // Build the client for interacting with the service.
    return new CloudHealthcare.Builder(HTTP_TRANSPORT, JSON_FACTORY, requestInitializer)
        .setApplicationName("your-application-name")
        .build();
  }
}

Node.js

const google = require('@googleapis/healthcare');
const healthcare = google.healthcare({
  version: 'v1',
  auth: new google.auth.GoogleAuth({
    scopes: ['https://www.googleapis.com/auth/cloud-platform'],
  }),
});

const deidentifyDataset = async () => {
  // TODO(developer): uncomment these lines before running the sample
  // const cloudRegion = 'us-central1';
  // const projectId = 'adjective-noun-123';
  // const sourceDatasetId = 'my-source-dataset';
  // const destinationDatasetId = 'my-destination-dataset';
  // const keeplistTags = 'PatientID'
  const sourceDataset = `projects/${projectId}/locations/${cloudRegion}/datasets/${sourceDatasetId}`;
  const destinationDataset = `projects/${projectId}/locations/${cloudRegion}/datasets/${destinationDatasetId}`;
  const request = {
    sourceDataset: sourceDataset,
    destinationDataset: destinationDataset,
    resource: {
      config: {
        dicom: {
          keepList: {
            tags: [keeplistTags],
          },
        },
      },
    },
  };

  await healthcare.projects.locations.datasets.deidentify(request);
  console.log(
    `De-identified data written from dataset ${sourceDatasetId} to dataset ${destinationDatasetId}`
  );
};

deidentifyDataset();

Python

# Imports the Dict type for runtime type hints.
from typing import Dict


def deidentify_dataset(
    project_id: str,
    location: str,
    dataset_id: str,
    destination_dataset_id: str,
) -> Dict[str, str]:
    """Uses a DICOM tag keeplist to create a new dataset containing de-identified DICOM data from the source dataset.

    See
    https://github.com/GoogleCloudPlatform/python-docs-samples/tree/main/healthcare/api-client/v1/datasets
    before running the sample.
    See https://googleapis.github.io/google-api-python-client/docs/dyn/healthcare_v1.projects.locations.datasets.html#deidentify
    for the Python API reference.

    Args:
      project_id: The project ID or project number of the Google Cloud project you want
          to use.
      location: The name of the dataset's location.
      dataset_id: The ID of the source dataset containing the DICOM store to de-identify.
      destination_dataset_id: The ID of the dataset where de-identified DICOM data
        is written.

    Returns:
      A dictionary representing a long-running operation that results from
      calling the 'DeidentifyDataset' method. Use the
      'google.longrunning.Operation'
      API to poll the operation status.
    """
    # Imports the Python built-in time module.
    import time

    # Imports the Google API Discovery Service.
    from googleapiclient import discovery

    # Imports HttpError from the Google Python API client errors module.
    from googleapiclient.errors import HttpError

    api_version = "v1"
    service_name = "healthcare"
    # Returns an authorized API client by discovering the Healthcare API
    # and using GOOGLE_APPLICATION_CREDENTIALS environment variable.
    client = discovery.build(service_name, api_version)

    # TODO(developer): Uncomment these lines and replace with your values.
    # project_id = 'my-project'
    # location = 'us-central1'
    # dataset_id = 'my-source-dataset'
    # destination_dataset_id = 'my-destination-dataset'
    source_dataset = "projects/{}/locations/{}/datasets/{}".format(
        project_id, location, dataset_id
    )
    destination_dataset = "projects/{}/locations/{}/datasets/{}".format(
        project_id, location, destination_dataset_id
    )

    body = {
        "destinationDataset": destination_dataset,
        "config": {
            "dicom": {
                "keepList": {
                    "tags": [
                        "Columns",
                        "NumberOfFrames",
                        "PixelRepresentation",
                        "MediaStorageSOPClassUID",
                        "MediaStorageSOPInstanceUID",
                        "Rows",
                        "SamplesPerPixel",
                        "BitsAllocated",
                        "HighBit",
                        "PhotometricInterpretation",
                        "BitsStored",
                        "PatientID",
                        "TransferSyntaxUID",
                        "SOPInstanceUID",
                        "StudyInstanceUID",
                        "SeriesInstanceUID",
                        "PixelData",
                    ]
                }
            }
        },
    }

    request = (
        client.projects()
        .locations()
        .datasets()
        .deidentify(sourceDataset=source_dataset, body=body)
    )

    # Set a start time for operation completion.
    start_time = time.time()
    # TODO(developer): Increase the max_time if de-identifying many resources.
    max_time = 600

    try:
        operation = request.execute()
        while not operation.get("done", False):
            # Poll until the operation finishes.
            print("Waiting for operation to finish...")
            if time.time() - start_time > max_time:
                raise RuntimeError("Timed out waiting for operation to finish.")
            operation = (
                client.projects()
                .locations()
                .datasets()
                .operations()
                .get(name=operation["name"])
                .execute()
            )
            # Wait 5 seconds between each poll to the operation.
            time.sleep(5)

        if operation.get("error"):
            raise TimeoutError(f"De-identify operation failed: {operation['error']}")
        else:
            print(f"De-identified data to dataset: {destination_dataset_id}")
            print(
                f"Resources succeeded: {operation.get('metadata').get('counter').get('success')}"
            )
            print(
                f"Resources failed: {operation.get('metadata').get('counter').get('failure')}"
            )
            return operation

    except HttpError as err:
        # A common error is when the destination dataset already exists.
        if err.resp.status == 409:
            raise RuntimeError(
                f"Destination dataset with ID {destination_dataset_id} already exists."
            )
        else:
            raise err

Desidentificación mediante etiquetas removelist

Puedes especificar una removelist en el objeto DicomConfig. La operación deidentify solo ocultará las etiquetas especificadas en la lista. Si no se proporcionan etiquetas removelist, la operación de desidentificación continúa como de costumbre, pero no se ocultan las etiquetas de DICOM en el conjunto de datos de destino.

Cuando especificas una removelist, la etiqueta OverlayData se agrega de forma predeterminada porque los datos de superposición pueden contener PHI.

Las etiquetas que se agregan de forma predeterminada a una keeplist no se pueden agregar a una removelist.

En los siguientes ejemplos, se muestra cómo desidentificar un conjunto de datos que contiene almacenes DICOM y datos DICOM mediante la eliminación de todas las etiquetas en la removelist. Las etiquetas que no están en la removelist no se modifican.

Después de enviar la imagen a la API de Cloud Healthcare, la imagen aparece de la siguiente manera. De las etiquetas proporcionadas en la removelist, solo se quita PatientBirthDate en la imagen, ya que es la única etiqueta de la lista de eliminación que corresponde a los metadatos visibles en la imagen.

Si bien PatientBirthDate en la esquina superior de la imagen se ocultó de acuerdo con la configuración de la removelist, la PHI de efecto quemado que se encuentra en la parte inferior de la imagen permanece. Para quitar también el texto quemado, consulta Cómo ocultar el texto quemado de las imágenes.

dicom_removelist

REST

  1. Desidentifica el conjunto de datos.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • LOCATION: La ubicación del conjunto de datos
    • SOURCE_DATASET_ID: El ID del conjunto de datos que contiene los datos que se desidentificarán
    • DESTINATION_DATASET_ID: El ID del conjunto de datos de destino en el que se escriben los datos desidentificados

    Cuerpo JSON de la solicitud:

    {
      "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicom": {
          "removeList": {
            "tags": [
              "PatientBirthName",
              "PatientBirthDate",
              "PatientAge",
              "PatientSize",
              "PatientWeight",
              "PatientAddress",
              "PatientMotherBirthName"
            ]
          }
        }
      }
    }
    

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

    cat > request.json << 'EOF'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicom": {
          "removeList": {
            "tags": [
              "PatientBirthName",
              "PatientBirthDate",
              "PatientAge",
              "PatientSize",
              "PatientWeight",
              "PatientAddress",
              "PatientMotherBirthName"
            ]
          }
        }
      }
    }
    EOF

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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:deidentify"

    PowerShell

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

    @'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicom": {
          "removeList": {
            "tags": [
              "PatientBirthName",
              "PatientBirthDate",
              "PatientAge",
              "PatientSize",
              "PatientWeight",
              "PatientAddress",
              "PatientMotherBirthName"
            ]
          }
        }
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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:deidentify" | Select-Object -Expand Content
    Este es el resultado. La respuesta contiene un identificador para una operación de larga duración. Las operaciones de larga duración se muestran cuando las llamadas de métodos pueden tardar una cantidad considerable de tiempo en completarse. Toma nota del valor de OPERATION_ID. Necesitarás este valor en el siguiente paso.

  2. Usa el método projects.locations.datasets.operations.get para obtener el estado de la operación de larga duración.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • DATASET_ID: El ID del conjunto de datos
    • LOCATION: La ubicación del conjunto de datos
    • OPERATION_ID: Es el ID que muestra la operación de larga duración.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"

    PowerShell

    Ejecuta el siguiente comando:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    Explorador de API

    Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

    Este es el resultado. Cuando la respuesta contiene "done": true, significa que la operación de larga duración finalizó.
  3. Una vez que la desidentificación se realiza de forma correcta, puedes recuperar los metadatos de la instancia desidentificada para ver cómo se cambió. La instancia desidentificada tiene un UID de estudios nuevo, un UID de serie y un UID de instancias, por lo que primero debes buscar la instancia desidentificada en el conjunto de datos nuevo.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • SOURCE_DATASET_LOCATION: La ubicación del conjunto de datos de origen
    • DESTINATION_DATASET_ID: El ID del conjunto de datos de destino en el que se escriben los datos desidentificados
    • DESTINATION_DICOM_STORE_ID: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"

    PowerShell

    Ejecuta el siguiente comando:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content

    Explorador de API

    Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    En la siguiente tabla, se muestra cómo cambiaron el UID de los estudios, el UID de la serie y el UID de las instancias:
      Metadatos de la instancia original Metadatos de instancia desidentificados
    UID de estudios (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID de serie (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    UID de instancias (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. Con los valores nuevos, recupera los metadatos de la instancia.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • LOCATION: La ubicación del conjunto de datos
    • DESTINATION_DATASET_ID: El ID del conjunto de datos de destino en el que se escriben los datos desidentificados
    • DESTINATION_DICOM_STORE_ID: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/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

    Ejecuta el siguiente comando:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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

    Explorador de API

    Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

    El resultado contiene los metadatos nuevos. Puedes comparar los metadatos nuevos con los metadatos originales para ver el efecto de la transformación.

Desidentificación mediante un perfil de filtro de etiquetas

En lugar de especificar qué etiquetas se deben conservar o quitar, puedes configurar un TagFilterProfile en el objeto DicomConfig. Un perfil de filtro de etiquetas es un perfil predefinido que determina qué etiquetas se deben conservar, quitar o transformar. Consulta la documentación de TagFilterProfile para conocer los perfiles disponibles.

En los siguientes ejemplos, se muestra cómo desidentificar un conjunto de datos que contiene almacenes y datos de DICOM mediante el perfil de filtro de etiquetas ATTRIBUTE_CONFIDENTIALITY_BASIC_PROFILE. Este perfil de filtro de etiquetas quita las etiquetas en función del Perfil básico de confidencialidad de atributos del Estándar de DICOM. La API de Cloud Healthcare no cumple completamente con el perfil básico de confidencialidad de atributos. Por ejemplo, la API de Cloud Healthcare no verifica las restricciones de Definición de objetos de información (IOD) cuando selecciona una acción para una etiqueta.

Después de enviar la imagen a la API de Cloud Healthcare mediante el perfil de filtro de etiqueta ATTRIBUTE_CONFIDENTIALITY_BASIC_PROFILE, la imagen aparece de la siguiente manera. Mientras se ocultan los metadatos que se muestran en las esquinas superiores de la imagen, permanece la PHI quemada que se encuentra en la parte inferior de la imagen. Para quitar también el texto grabado, consulta Cómo ocultar el texto grabado de las imágenes.

dicom_attribute_confidentiality_basic_profile

REST

  1. Desidentifica el conjunto de datos.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • LOCATION: La ubicación del conjunto de datos
    • SOURCE_DATASET_ID: El ID del conjunto de datos que contiene los datos que se desidentificarán
    • DESTINATION_DATASET_ID: El ID del conjunto de datos de destino en el que se escriben los datos desidentificados

    Cuerpo JSON de la solicitud:

    {
      "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicom": {
          "filterProfile": "ATTRIBUTE_CONFIDENTIALITY_BASIC_PROFILE"
        }
      }
    }
    

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

    cat > request.json << 'EOF'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicom": {
          "filterProfile": "ATTRIBUTE_CONFIDENTIALITY_BASIC_PROFILE"
        }
      }
    }
    EOF

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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:deidentify"

    PowerShell

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

    @'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicom": {
          "filterProfile": "ATTRIBUTE_CONFIDENTIALITY_BASIC_PROFILE"
        }
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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:deidentify" | Select-Object -Expand Content
    Este es el resultado. La respuesta contiene un identificador para una operación de larga duración. Las operaciones de larga duración se muestran cuando las llamadas de métodos pueden tardar una cantidad considerable de tiempo en completarse. Toma nota del valor de OPERATION_ID. Necesitarás este valor en el siguiente paso.

  2. Usa el método projects.locations.datasets.operations.get para obtener el estado de la operación de larga duración.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • DATASET_ID: El ID del conjunto de datos
    • LOCATION: La ubicación del conjunto de datos
    • OPERATION_ID: Es el ID que muestra la operación de larga duración.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"

    PowerShell

    Ejecuta el siguiente comando:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    Explorador de API

    Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

    Este es el resultado. Cuando la respuesta contiene "done": true, significa que la operación de larga duración finalizó.
  3. Una vez que la desidentificación se realiza de forma correcta, puedes recuperar los metadatos de la instancia desidentificada para ver cómo se cambió. La instancia desidentificada tiene un UID de estudios nuevo, un UID de serie y un UID de instancias, por lo que primero debes buscar la instancia desidentificada en el conjunto de datos nuevo.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • SOURCE_DATASET_LOCATION: La ubicación del conjunto de datos de origen
    • DESTINATION_DATASET_ID: El ID del conjunto de datos de destino en el que se escriben los datos desidentificados
    • DESTINATION_DICOM_STORE_ID: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"

    PowerShell

    Ejecuta el siguiente comando:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content

    Explorador de API

    Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    En la siguiente tabla, se muestra cómo cambiaron el UID de los estudios, el UID de la serie y el UID de las instancias:
      Metadatos de la instancia original Metadatos de instancia desidentificados
    UID de estudios (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID de serie (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    UID de instancias (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. Con los valores nuevos, recupera los metadatos de la instancia.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • LOCATION: La ubicación del conjunto de datos
    • DESTINATION_DATASET_ID: El ID del conjunto de datos de destino en el que se escriben los datos desidentificados
    • DESTINATION_DICOM_STORE_ID: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/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

    Ejecuta el siguiente comando:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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

    Explorador de API

    Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

    El resultado contiene los metadatos nuevos. Puedes comparar los metadatos nuevos con los metadatos originales para ver el efecto de la transformación.

Desidentifica datos en la consola de Google Cloud

Para desidentificar datos en la consola de Google Cloud, sigue estos pasos:

  1. En la consola de Google Cloud, ve a la página Conjunto de datos.

    Ir a la página Conjuntos de datos

  2. Elige Desidentificar de la lista Acciones para el conjunto de datos que estás desidentificando.

    Aparecerá la página Desidentifica conjunto de datos.

  3. Selecciona Configurar conjunto de datos de destino y, luego, ingresa un nombre para el conjunto de datos nuevo a fin de almacenar tus datos desidentificados.

  4. Selecciona Desidentificación de etiquetas de DICOM a fin de seleccionar el perfil para el que se desidentifican los datos. Los datos se pueden desidentificar de la siguiente manera:

  5. Selecciona Ocultamiento de texto quemado de DICOM para configurar cómo se realiza el ocultamiento de imagen durante la desidentificación. Puedes configurar el ocultamiento de imágenes de la siguiente manera:

  6. Haz clic en Desidentificar para desidentificar los datos en el conjunto de datos.

Oculta el texto quemado de las imágenes

La API de Cloud Healthcare puede ocultar el texto grabado sensible de las imágenes. La API detecta datos sensibles, como la PHI, que los oculta mediante un rectángulo opaco. La API muestra las mismas imágenes de DICOM de muestra que le diste, en el mismo formato, pero se oculta cualquier texto identificado que contenga información sensible según tus criterios.

Puedes ocultar el texto grabado de las imágenes si especificas una opción TextRedactionMode dentro de un objeto ImageConfig. Consulta la documentación de TextRedactionMode para conocer los valores posibles.

Oculta todo el texto quemado de una imagen

En los siguientes ejemplos, se muestra cómo ocultar todo el texto grabado de las imágenes de DICOM en un conjunto de datos. Para ello, especifica REDACT_ALL_TEXT en el campo TextRedactionMode.

Después de enviar la imagen a la API de Cloud Healthcare mediante la opción REDACT_ALL_TEXT, la imagen aparece de la siguiente manera. Mientras se quita el texto grabado en la parte inferior de la imagen, los metadatos en las esquinas superiores de la imagen permanecen. Para quitar también los metadatos, consulta Desidentifica las etiquetas de DICOM.

xray_redact_all_text

REST

  1. Desidentifica el conjunto de datos.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • LOCATION: La ubicación del conjunto de datos
    • SOURCE_DATASET_ID: El ID del conjunto de datos que contiene los datos que se desidentificarán
    • DESTINATION_DATASET_ID: El ID del conjunto de datos de destino en el que se escriben los datos desidentificados

    Cuerpo JSON de la solicitud:

    {
      "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicom": {},
        "image": {
          "textRedactionMode": "REDACT_ALL_TEXT"
        }
      }
    }
    

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

    cat > request.json << 'EOF'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicom": {},
        "image": {
          "textRedactionMode": "REDACT_ALL_TEXT"
        }
      }
    }
    EOF

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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:deidentify"

    PowerShell

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

    @'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicom": {},
        "image": {
          "textRedactionMode": "REDACT_ALL_TEXT"
        }
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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:deidentify" | Select-Object -Expand Content
    Este es el resultado. La respuesta contiene un identificador para una operación de larga duración. Las operaciones de larga duración se muestran cuando las llamadas de métodos pueden tardar una cantidad considerable de tiempo en completarse. Toma nota del valor de OPERATION_ID. Necesitarás este valor en el siguiente paso.

  2. Usa el método projects.locations.datasets.operations.get para obtener el estado de la operación de larga duración.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • DATASET_ID: El ID del conjunto de datos
    • LOCATION: La ubicación del conjunto de datos
    • OPERATION_ID: Es el ID que muestra la operación de larga duración.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"

    PowerShell

    Ejecuta el siguiente comando:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    Explorador de API

    Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

    Este es el resultado. Cuando la respuesta contiene "done": true, significa que la operación de larga duración finalizó.
  3. Una vez que la desidentificación se realiza de forma correcta, puedes recuperar los metadatos de la instancia desidentificada para ver cómo se cambió. La instancia desidentificada tiene un UID de estudios nuevo, un UID de serie y un UID de instancias, por lo que primero debes buscar la instancia desidentificada en el conjunto de datos nuevo.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • SOURCE_DATASET_LOCATION: La ubicación del conjunto de datos de origen
    • DESTINATION_DATASET_ID: El ID del conjunto de datos de destino en el que se escriben los datos desidentificados
    • DESTINATION_DICOM_STORE_ID: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"

    PowerShell

    Ejecuta el siguiente comando:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content

    Explorador de API

    Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    En la siguiente tabla, se muestra cómo cambiaron el UID de los estudios, el UID de la serie y el UID de las instancias:
      Metadatos de la instancia original Metadatos de instancia desidentificados
    UID de estudios (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID de serie (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    UID de instancias (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029

Oculta solo el texto quemado sensible de una imagen

Los siguientes ejemplos muestran cómo ocultar el texto grabado sensible de las imágenes DICOM en un conjunto de datos. Para ello, especifica REDACT_SENSITIVE_TEXT en el campo TextRedactionMode.

Los Infotipos especificados en los Infotipos de DICOM predeterminados se ocultan cuando se especifica REDACT_SENSITIVE_TEXT. También se aplica un Infotipo personalizado adicional para los identificadores de pacientes, como los números de registros médicos (MRN), y se ocultan los identificadores de pacientes.

En la siguiente imagen, se muestra una radiografía sin ocultamiento de un paciente:

xray2_unredacted

Después de enviar la imagen a la API de Cloud Healthcare mediante la opción REDACT_SENSITIVE_TEXT, la imagen aparece de la siguiente manera:

xray2_redact_sensitive_text

Puedes ver que ocurrió lo siguiente:

  • Se ocultó el elemento PERSON_NAME en la esquina inferior izquierda de la imagen
  • Se ocultó el elemento DATE en la esquina inferior izquierda de la imagen

El sexo del paciente no se ocultó porque no se considera texto sensible de acuerdo con los Infotipos de DICOM predeterminados.

REST

  1. Desidentifica el conjunto de datos.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • LOCATION: La ubicación del conjunto de datos
    • SOURCE_DATASET_ID: El ID del conjunto de datos que contiene los datos que se desidentificarán
    • DESTINATION_DATASET_ID: El ID del conjunto de datos de destino en el que se escriben los datos desidentificados

    Cuerpo JSON de la solicitud:

    {
      "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicom": {},
        "image": {
          "textRedactionMode": "REDACT_SENSITIVE_TEXT"
        }
      }
    }
    

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

    cat > request.json << 'EOF'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicom": {},
        "image": {
          "textRedactionMode": "REDACT_SENSITIVE_TEXT"
        }
      }
    }
    EOF

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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:deidentify"

    PowerShell

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

    @'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicom": {},
        "image": {
          "textRedactionMode": "REDACT_SENSITIVE_TEXT"
        }
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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:deidentify" | Select-Object -Expand Content
    Este es el resultado. La respuesta contiene un identificador para una operación de larga duración. Las operaciones de larga duración se muestran cuando las llamadas de métodos pueden tardar una cantidad considerable de tiempo en completarse. Toma nota del valor de OPERATION_ID. Necesitarás este valor en el siguiente paso.

  2. Usa el método projects.locations.datasets.operations.get para obtener el estado de la operación de larga duración.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • DATASET_ID: El ID del conjunto de datos
    • LOCATION: La ubicación del conjunto de datos
    • OPERATION_ID: Es el ID que muestra la operación de larga duración.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"

    PowerShell

    Ejecuta el siguiente comando:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    Explorador de API

    Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

    Este es el resultado. Cuando la respuesta contiene "done": true, significa que la operación de larga duración finalizó.
  3. Una vez que la desidentificación se realiza de forma correcta, puedes recuperar los metadatos de la instancia desidentificada para ver cómo se cambió. La instancia desidentificada tiene un UID de estudios nuevo, un UID de serie y un UID de instancias, por lo que primero debes buscar la instancia desidentificada en el conjunto de datos nuevo.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • SOURCE_DATASET_LOCATION: La ubicación del conjunto de datos de origen
    • DESTINATION_DATASET_ID: El ID del conjunto de datos de destino en el que se escriben los datos desidentificados
    • DESTINATION_DICOM_STORE_ID: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"

    PowerShell

    Ejecuta el siguiente comando:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content

    Explorador de API

    Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

    En la siguiente tabla, se muestra cómo cambiaron el UID de los estudios, el UID de la serie y el UID de las instancias:
      Metadatos de la instancia original Metadatos de instancia desidentificados
    UID de estudios (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID de serie (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    UID de instancias (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029

Combina desidentificación de etiquetas y ocultamiento de texto quemado

Puedes combinar la desidentificación mediante etiquetas con el ocultamiento de texto grabado de imágenes a fin de desidentificar instancias de DICOM de nivel más detallado. Por ejemplo, al combinar REDACT_ALL_TEXT en el campo TextRedactionMode con DEIDENTIFY_TAG_CONTENTS en el campo TagFilterProfile, puedes hacer lo siguiente:

  • REDACT_ALL_TEXT: oculta todo el texto quemado en la imagen.
  • DEIDENTIFY_TAG_CONTENTS: Inspecciona el contenido de etiquetas y transforma texto sensible. Para obtener más información sobre el comportamiento de DEIDENTIFY_TAG_CONTENTS, consulta Configuración predeterminada.

Después de enviar la imagen a la API de Cloud Healthcare mediante las opciones REDACT_ALL_TEXT y DEIDENTIFY_TAG_CONTENTS, la imagen aparece de la siguiente manera. Observa los siguientes cambios:

  • Los nombres en la esquina superior izquierda y en la esquina superior derecha de la imagen se transformaron con una CryptoHashConfig
  • Las fechas en la esquina superior izquierda y derecha de la imagen se transformaron con un DateShiftConfig
  • Se oculta el texto grabado que aparece en la parte inferior de la imagen.

xray_redact_all_text_deidentify_tag_contents

REST

  1. Desidentifica el conjunto de datos.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • LOCATION: La ubicación del conjunto de datos
    • SOURCE_DATASET_ID: El ID del conjunto de datos que contiene los datos que se desidentificarán
    • DESTINATION_DATASET_ID: El ID del conjunto de datos de destino en el que se escriben los datos desidentificados

    Cuerpo JSON de la solicitud:

    {
      "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicom": {
          "filterProfile": "DEIDENTIFY_TAG_CONTENTS"
        },
        "image": {
          "textRedactionMode": "REDACT_ALL_TEXT"
        }
      }
    }
    

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

    cat > request.json << 'EOF'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicom": {
          "filterProfile": "DEIDENTIFY_TAG_CONTENTS"
        },
        "image": {
          "textRedactionMode": "REDACT_ALL_TEXT"
        }
      }
    }
    EOF

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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:deidentify"

    PowerShell

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

    @'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicom": {
          "filterProfile": "DEIDENTIFY_TAG_CONTENTS"
        },
        "image": {
          "textRedactionMode": "REDACT_ALL_TEXT"
        }
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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:deidentify" | Select-Object -Expand Content
    Este es el resultado. La respuesta contiene un identificador para una operación de larga duración. Las operaciones de larga duración se muestran cuando las llamadas de métodos pueden tardar una cantidad considerable de tiempo en completarse. Toma nota del valor de OPERATION_ID. Necesitarás este valor en el siguiente paso.

  2. Usa el método projects.locations.datasets.operations.get para obtener el estado de la operación de larga duración.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • DATASET_ID: El ID del conjunto de datos
    • LOCATION: La ubicación del conjunto de datos
    • OPERATION_ID: Es el ID que muestra la operación de larga duración.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"

    PowerShell

    Ejecuta el siguiente comando:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    Explorador de API

    Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

    Este es el resultado. Cuando la respuesta contiene "done": true, significa que la operación de larga duración finalizó.
  3. Una vez que la desidentificación se realiza de forma correcta, puedes recuperar los metadatos de la instancia desidentificada para ver cómo se cambió. La instancia desidentificada tiene un UID de estudios nuevo, un UID de serie y un UID de instancias, por lo que primero debes buscar la instancia desidentificada en el conjunto de datos nuevo.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • SOURCE_DATASET_LOCATION: La ubicación del conjunto de datos de origen
    • DESTINATION_DATASET_ID: El ID del conjunto de datos de destino en el que se escriben los datos desidentificados
    • DESTINATION_DICOM_STORE_ID: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"

    PowerShell

    Ejecuta el siguiente comando:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content

    Explorador de API

    Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

  4. Con los valores nuevos, recupera los metadatos de la instancia.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • LOCATION: La ubicación del conjunto de datos
    • DESTINATION_DATASET_ID: El ID del conjunto de datos de destino en el que se escriben los datos desidentificados
    • DESTINATION_DICOM_STORE_ID: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/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

    Ejecuta el siguiente comando:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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

    Explorador de API

    Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

    El resultado contiene los metadatos nuevos. Puedes comparar los metadatos nuevos con los metadatos originales para ver el efecto de la transformación.

Usa Infotipos y transformaciones básicas con etiquetas de DICOM

La API de Cloud Healthcare puede usar tipos de información (Infotipos) para definir qué datos analiza cuando realiza una desidentificación en las etiquetas. Un Infotipo es un tipo de datos sensibles, como el nombre de un paciente, dirección de correo electrónico, número de teléfono, número de identificación o número de tarjeta de crédito.

Las transformaciones básicas son reglas que usas para transformar un valor de entrada. Puedes personalizar la forma en la que se desidentifican las etiquetas DICOM si aplicas una transformación básica al Infotipo de cada etiqueta. Por ejemplo, puedes desidentificar el apellido de un paciente y reemplazarlo con una serie de asteriscos si especificas el infotipo LAST_NAME con la transformación básica CharacterMaskConfig.

Infotipos de DICOM predeterminados

Los Infotipos predeterminados de DICOM que se usan cuando se desidentifican metadatos son los siguientes:

  • AGE
  • CREDIT_CARD_NUMBER
  • DATE
  • EMAIL_ADDRESS
  • IP_ADDRESS
  • LOCATION
  • MAC_ADDRESS
  • PASSPORT
  • PERSON_NAME
  • PHONE_NUMBER
  • SWIFT_CODE
  • US_DRIVERS_LICENSE_NUMBER
  • US_SOCIAL_SECURITY_NUMBER
  • US_VEHICLE_IDENTIFICATION_NUMBER
  • US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER

Cuando desidentificas texto sensible en imágenes con REDACT_SENSITIVE_TEXT, la API de Cloud Healthcare usa los Infotipos anteriores y un Infotipo personalizado adicional para identificadores de pacientes Los números de registro médico (MRN) también se aplican al texto sensible de la imagen.

Opciones de transformación básicas

Las opciones de transformación básicas de la API de Cloud Healthcare incluyen lo siguiente:

  • RedactConfig: Quita un valor y lo oculta.
  • CharacterMaskConfig: Enmascara una string por completo o parcialmente mediante el reemplazo de los caracteres de entrada con un carácter fijo especificado.
  • DateShiftConfig: Cambia las fechas por un número de días al azar, con la opción de ser coherente en el mismo contexto.
  • CryptoHashConfig: Usa SHA-256 para reemplazar los valores de entrada con una representación codificada en base64 de una string de salida con hash generada con una clave de encriptación de datos determinada.
  • ReplaceWithInfoTypeConfig: Reemplaza un valor de entrada con el nombre de su Infotipo.

Especifica opciones de configuración en TextConfig

Los Infotipos y las transformaciones primitivas se especifican dentro de un InfoTypeTransformation, que es un objeto dentro de TextConfig. Los Infotipos se ingresan en el arreglo infoTypes como valores separados por comas.

Especificar un Infotipo es opcional. Si no especificas al menos un Infotipo, la transformación se aplica a los Infotipos predeterminados de DICOM que se encuentran en la API de Cloud Healthcare.

Si especificas infotipos en InfoTypeTransformation, debes especificar al menos una transformación básica.

Puedes aplicar un InfoTypeTransformation solo al perfil DEIDENTIFY_TAG_CONTENTS. No se puede aplicar un InfoTypeTransformation a los otros perfiles enumerados en TagFilterProfile.

En las siguientes secciones, se muestra cómo usar las transformaciones básicas disponibles en InfoTypeTransformation junto con los Infotipos para personalizar cómo se desidentifican las etiquetas de DICOM. En las muestras, se usa la imagen de muestra que se proporciona en la Descripción general de muestras y los metadatos de muestra que se proporcionan en Desidentifica etiquetas de DICOM.

Configuración predeterminada

De forma predeterminada, cuando el perfil DEIDENTIFY_TAG_CONTENTS se establece sin proporcionar ninguna configuración en el objeto TextConfig, la API de Cloud Healthcare reemplaza los datos sensibles mediante los Infotipos de DICOM predeterminados. Sin embargo, hay comportamientos diferentes para los Infotipos DATE y PERSON_NAME, como se muestra a continuación:

  • Se aplica un DateShiftConfig al texto clasificado como Infotipo DATE. El DateShiftConfig usa una técnica de cambio de fecha con una diferencia de 100 días.
  • Se aplica un CryptoHashConfig al texto clasificado como Infotipo PERSON_NAME. CryptoHashConfig realiza una asignación de token mediante la generación de un valor subrogado mediante el hash criptográfico.

También se aplica el siguiente comportamiento:

  • Todas las edades de pacientes que tengan un valor mayor o igual que 90 se convierten en 90.
  • Si no se puede aplicar una transformación debido a restricciones de formato DICOM, se proporciona un valor de marcador de posición que corresponde a la Representación de valor (VR) de la etiqueta.
  • Cualquier otro valor que corresponde a uno de los Infotipos predeterminados de DICOM en la API de Cloud Healthcare se reemplaza por su Infotipo. Por ejemplo, si la etiqueta PatientComments contenía la string "Ann Johnson fue al hospital Anytown", "Anytown" se reemplazaría por el Infotipo LOCATION.

Los siguientes ejemplos muestran el resultado del uso del perfil predeterminado DEIDENTIFY_TAG_CONTENTS en un conjunto de datos que contiene almacenes y datos de DICOM. Puedes comparar este resultado predeterminado con los resultados cuando usas las diversas transformaciones básicas con combinaciones de Infotipo. Las muestras usan una sola instancia de DICOM, pero también puedes desidentificar varias instancias.

Después de enviar la imagen a la API de Cloud Healthcare mediante el perfil DEIDENTIFY_TAG_CONTENTS, la imagen aparece de la siguiente manera. Observa los siguientes cambios:

  • Los nombres en la esquina superior izquierda y en la esquina superior derecha de la imagen se transformaron con una CryptoHashConfig
  • Las fechas en la esquina superior izquierda y derecha de la imagen se transformaron con un DateShiftConfig

dicom_infotype_default

REST

  1. Desidentifica el conjunto de datos.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • LOCATION: La ubicación del conjunto de datos
    • SOURCE_DATASET_ID: El ID del conjunto de datos que contiene los datos que se desidentificarán
    • DESTINATION_DATASET_ID: El ID del conjunto de datos de destino en el que se escriben los datos desidentificados

    Cuerpo JSON de la solicitud:

    {
      "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicom": {
          "filterProfile": "DEIDENTIFY_TAG_CONTENTS"
        }
      }
    }
    

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

    cat > request.json << 'EOF'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicom": {
          "filterProfile": "DEIDENTIFY_TAG_CONTENTS"
        }
      }
    }
    EOF

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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:deidentify"

    PowerShell

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

    @'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicom": {
          "filterProfile": "DEIDENTIFY_TAG_CONTENTS"
        }
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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:deidentify" | Select-Object -Expand Content
    Este es el resultado. La respuesta contiene un identificador para una operación de larga duración. Las operaciones de larga duración se muestran cuando las llamadas de métodos pueden tardar una cantidad considerable de tiempo en completarse. Toma nota del valor de OPERATION_ID. Necesitarás este valor en el siguiente paso.

  2. Usa el método projects.locations.datasets.operations.get para obtener el estado de la operación de larga duración.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • DATASET_ID: El ID del conjunto de datos
    • LOCATION: La ubicación del conjunto de datos
    • OPERATION_ID: Es el ID que muestra la operación de larga duración.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"

    PowerShell

    Ejecuta el siguiente comando:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    Explorador de API

    Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

    Este es el resultado. Cuando la respuesta contiene "done": true, significa que la operación de larga duración finalizó.
  3. Una vez que la desidentificación se realiza de forma correcta, puedes recuperar los metadatos de la instancia desidentificada para ver cómo se cambió. La instancia desidentificada tiene un UID de estudios nuevo, un UID de serie y un UID de instancias, por lo que primero debes buscar la instancia desidentificada en el conjunto de datos nuevo.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • SOURCE_DATASET_LOCATION: La ubicación del conjunto de datos de origen
    • DESTINATION_DATASET_ID: El ID del conjunto de datos de destino en el que se escriben los datos desidentificados
    • DESTINATION_DICOM_STORE_ID: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"

    PowerShell

    Ejecuta el siguiente comando:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content

    Explorador de API

    Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

  4. Con los valores nuevos, recupera los metadatos de la instancia.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • LOCATION: La ubicación del conjunto de datos
    • DESTINATION_DATASET_ID: El ID del conjunto de datos de destino en el que se escriben los datos desidentificados
    • DESTINATION_DICOM_STORE_ID: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/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

    Ejecuta el siguiente comando:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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

    Explorador de API

    Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

    El resultado contiene los metadatos nuevos. Puedes comparar los metadatos nuevos con los metadatos originales para ver el efecto de la transformación.

RedactConfig

Si especificas redactConfig, se oculta un valor determinado porque se lo quita por completo. El mensaje redactConfig no tiene argumentos; si lo especificas se habilita su transformación.

En los ejemplos siguientes, se amplía la configuración predeterminada, pero ahora incluyen la configuración del Infotipo PERSON_NAME con la transformación redactConfig. El envío de esta solicitud oculta todos los nombres de la instancia de DICOM.

Después de enviar la imagen a la API de Cloud Healthcare mediante la transformación redactConfig, la imagen aparece de la siguiente manera:

dicom_redactconfig

REST

  1. Desidentifica el conjunto de datos.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • LOCATION: La ubicación del conjunto de datos
    • SOURCE_DATASET_ID: El ID del conjunto de datos que contiene los datos que se desidentificarán
    • DESTINATION_DATASET_ID: El ID del conjunto de datos de destino en el que se escriben los datos desidentificados

    Cuerpo JSON de la solicitud:

    {
      "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicom": {
          "filterProfile": "DEIDENTIFY_TAG_CONTENTS"
        },
        "text": {
          "transformations": [
            {
              "infoTypes": [
                "PERSON_NAME"
              ],
              "redactConfig": {}
            }
          ]
        }
      }
    }
    

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

    cat > request.json << 'EOF'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicom": {
          "filterProfile": "DEIDENTIFY_TAG_CONTENTS"
        },
        "text": {
          "transformations": [
            {
              "infoTypes": [
                "PERSON_NAME"
              ],
              "redactConfig": {}
            }
          ]
        }
      }
    }
    EOF

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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:deidentify"

    PowerShell

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

    @'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicom": {
          "filterProfile": "DEIDENTIFY_TAG_CONTENTS"
        },
        "text": {
          "transformations": [
            {
              "infoTypes": [
                "PERSON_NAME"
              ],
              "redactConfig": {}
            }
          ]
        }
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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:deidentify" | Select-Object -Expand Content
    Este es el resultado. La respuesta contiene un identificador para una operación de larga duración. Las operaciones de larga duración se muestran cuando las llamadas de métodos pueden tardar una cantidad considerable de tiempo en completarse. Toma nota del valor de OPERATION_ID. Necesitarás este valor en el siguiente paso.

  2. Usa el método projects.locations.datasets.operations.get para obtener el estado de la operación de larga duración.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • DATASET_ID: El ID del conjunto de datos
    • LOCATION: La ubicación del conjunto de datos
    • OPERATION_ID: Es el ID que muestra la operación de larga duración.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"

    PowerShell

    Ejecuta el siguiente comando:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    Explorador de API

    Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

    Este es el resultado. Cuando la respuesta contiene "done": true, significa que la operación de larga duración finalizó.
  3. Una vez que la desidentificación se realiza de forma correcta, puedes recuperar los metadatos de la instancia desidentificada para ver cómo se cambió. La instancia desidentificada tiene un UID de estudios nuevo, un UID de serie y un UID de instancias, por lo que primero debes buscar la instancia desidentificada en el conjunto de datos nuevo.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • SOURCE_DATASET_LOCATION: La ubicación del conjunto de datos de origen
    • DESTINATION_DATASET_ID: El ID del conjunto de datos de destino en el que se escriben los datos desidentificados
    • DESTINATION_DICOM_STORE_ID: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"

    PowerShell

    Ejecuta el siguiente comando:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content

    Explorador de API

    Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

  4. Con los valores nuevos, recupera los metadatos de la instancia.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • LOCATION: La ubicación del conjunto de datos
    • DESTINATION_DATASET_ID: El ID del conjunto de datos de destino en el que se escriben los datos desidentificados
    • DESTINATION_DICOM_STORE_ID: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/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

    Ejecuta el siguiente comando:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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

    Explorador de API

    Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

    El resultado contiene los metadatos nuevos. Puedes comparar los metadatos nuevos con los metadatos originales para ver el efecto de la transformación.

El resultado muestra que se quitaron los valores de ReferringPhysicianName (00080090) y PatientName (00100010). Esto contrasta con la muestra de la configuración predeterminada, en la que estos valores se transformaron con el hash criptográfico.

CharacterMaskConfig

Si especificas characterMaskConfig, se reemplazan las strings que corresponden a los Infotipos proporcionados con un carácter fijo especificado. Por ejemplo, en lugar de ocultar el nombre de un paciente o transformarlo con un hash criptográfico, puedes reemplazar el nombre con una serie de asteriscos (*). Puedes especificar el carácter fijo como un valor para el campo maskingCharacter.

En los ejemplos siguientes, se amplía la configuración predeterminada, pero ahora incluyen la configuración del Infotipo LAST_NAME con la transformación characterMaskConfig. No se proporciona un carácter fijo, por lo que el enmascaramiento usa el asterisco de forma predeterminada.

Las muestras usan una sola instancia de DICOM, pero también puedes desidentificar varias instancias.

Después de enviar la imagen a la API de Cloud Healthcare mediante la transformación characterMaskConfig, la imagen aparece de la siguiente manera:

dicom_charactermaskconfig

REST

  1. Desidentifica el conjunto de datos.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • LOCATION: La ubicación del conjunto de datos
    • SOURCE_DATASET_ID: El ID del conjunto de datos que contiene los datos que se desidentificarán
    • DESTINATION_DATASET_ID: El ID del conjunto de datos de destino en el que se escriben los datos desidentificados

    Cuerpo JSON de la solicitud:

    {
      "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicom": {
          "filterProfile": "DEIDENTIFY_TAG_CONTENTS"
        },
        "text": {
          "transformations": [
            {
              "infoTypes": [
                "PERSON_NAME"
              ],
              "characterMaskConfig": {
                "maskingCharacter": ""
              }
            }
          ]
        }
      }
    }
    

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

    cat > request.json << 'EOF'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicom": {
          "filterProfile": "DEIDENTIFY_TAG_CONTENTS"
        },
        "text": {
          "transformations": [
            {
              "infoTypes": [
                "PERSON_NAME"
              ],
              "characterMaskConfig": {
                "maskingCharacter": ""
              }
            }
          ]
        }
      }
    }
    EOF

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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:deidentify"

    PowerShell

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

    @'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicom": {
          "filterProfile": "DEIDENTIFY_TAG_CONTENTS"
        },
        "text": {
          "transformations": [
            {
              "infoTypes": [
                "PERSON_NAME"
              ],
              "characterMaskConfig": {
                "maskingCharacter": ""
              }
            }
          ]
        }
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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:deidentify" | Select-Object -Expand Content
    Este es el resultado. La respuesta contiene un identificador para una operación de larga duración. Las operaciones de larga duración se muestran cuando las llamadas de métodos pueden tardar una cantidad considerable de tiempo en completarse. Toma nota del valor de OPERATION_ID. Necesitarás este valor en el siguiente paso.

  2. Usa el método projects.locations.datasets.operations.get para obtener el estado de la operación de larga duración.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • DATASET_ID: El ID del conjunto de datos
    • LOCATION: La ubicación del conjunto de datos
    • OPERATION_ID: Es el ID que muestra la operación de larga duración.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"

    PowerShell

    Ejecuta el siguiente comando:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    Explorador de API

    Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

    Este es el resultado. Cuando la respuesta contiene "done": true, significa que la operación de larga duración finalizó.
  3. Una vez que la desidentificación se realiza de forma correcta, puedes recuperar los metadatos de la instancia desidentificada para ver cómo se cambió. La instancia desidentificada tiene un UID de estudios nuevo, un UID de serie y un UID de instancias, por lo que primero debes buscar la instancia desidentificada en el conjunto de datos nuevo.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • SOURCE_DATASET_LOCATION: La ubicación del conjunto de datos de origen
    • DESTINATION_DATASET_ID: El ID del conjunto de datos de destino en el que se escriben los datos desidentificados
    • DESTINATION_DICOM_STORE_ID: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"

    PowerShell

    Ejecuta el siguiente comando:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content

    Explorador de API

    Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

  4. Con los valores nuevos, recupera los metadatos de la instancia.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • LOCATION: La ubicación del conjunto de datos
    • DESTINATION_DATASET_ID: El ID del conjunto de datos de destino en el que se escriben los datos desidentificados
    • DESTINATION_DICOM_STORE_ID: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/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

    Ejecuta el siguiente comando:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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

    Explorador de API

    Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

    El resultado contiene los metadatos nuevos. Puedes comparar los metadatos nuevos con los metadatos originales para ver el efecto de la transformación.

El resultado muestra que se reemplazaron los apellidos en ReferringPhysicianName (00080090) y PatientName (00100010) por asteriscos. Esto contrasta con la muestra de la configuración predeterminada, en la que estos valores se transformaron con el hash criptográfico.

DateShiftConfig

La API de Cloud Healthcare puede transformar las fechas si las cambia dentro de un rango predeterminado. Para mantener las transformaciones de fecha coherentes en las ejecuciones de desidentificación, usa DateShiftConfig con cualquiera de las siguientes opciones:

Debes otorgar una función con el permiso cloudkms.cryptoKeyVersions.useToDecrypt a la cuenta de servicio del agente de servicio de Cloud Healthcare para desencriptar el Clave unida de Cloud KMS. Te recomendamos usar el rol de desencriptador de CryptoKey de Cloud KMS (roles/cloudkms.cryptoKeyDecrypter). Cuando usas Cloud KMS para realizar operaciones criptográficas, se aplican cargos. Consulta los precios de Cloud Key Management Service para obtener más información.

La API de Cloud Healthcare usa esta clave para calcular la cantidad en la que las fechas se modifican, como la fecha de nacimiento de un paciente, en un diferencial de 100 días.

Si no proporcionas una clave, la API de Cloud Healthcare genera su propia clave cada vez que la operación de desidentificación se ejecuta en valores de fecha. Esto puede ocasionar resultados de fecha inconsistentes entre ejecuciones.

En los siguientes ejemplos, se muestra cómo configurar los infotipos DATE y DATE_OF_BIRTH con la transformación DateShiftConfig en una instancia de DICOM. Después de enviar la solicitud de desidentificación a la API de Cloud Healthcare, los valores de fecha en la instancia cambiarán dentro o menos de 100 días de sus valores originales.

La clave criptográfica proporcionada, U2FsdGVkX19bS2oZsdbK9X5zi2utBn22uY+I2Vo0zOU=, es una clave codificada sin formato en Base64 de 256 bits de encriptación AES generada con el siguiente comando. Cuando se te solicite, proporciona una contraseña vacía al siguiente comando:

echo -n "test" | openssl enc -e -aes-256-ofb -a -salt

Después de enviar la imagen a la API de Cloud Healthcare mediante la transformación dateShiftConfig, la imagen aparece de la siguiente manera:

dicom_dateshiftconfig

REST

  1. Desidentifica el conjunto de datos.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • LOCATION: La ubicación del conjunto de datos
    • SOURCE_DATASET_ID: El ID del conjunto de datos que contiene los datos que se desidentificarán
    • DESTINATION_DATASET_ID: El ID del conjunto de datos de destino en el que se escriben los datos desidentificados

    Cuerpo JSON de la solicitud:

    {
      "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicom": {
          "filterProfile": "DEIDENTIFY_TAG_CONTENTS"
        },
        "text": {
          "transformations": [
            {
              "infoTypes": [
                "DATE",
                "DATE_OF_BIRTH"
              ],
              "dateShiftConfig": {
                "cryptoKey": "U2FsdGVkX19bS2oZsdbK9X5zi2utBn22uY+I2Vo0zOU="
              }
            }
          ]
        }
      }
    }
    

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

    cat > request.json << 'EOF'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicom": {
          "filterProfile": "DEIDENTIFY_TAG_CONTENTS"
        },
        "text": {
          "transformations": [
            {
              "infoTypes": [
                "DATE",
                "DATE_OF_BIRTH"
              ],
              "dateShiftConfig": {
                "cryptoKey": "U2FsdGVkX19bS2oZsdbK9X5zi2utBn22uY+I2Vo0zOU="
              }
            }
          ]
        }
      }
    }
    EOF

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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:deidentify"

    PowerShell

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

    @'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicom": {
          "filterProfile": "DEIDENTIFY_TAG_CONTENTS"
        },
        "text": {
          "transformations": [
            {
              "infoTypes": [
                "DATE",
                "DATE_OF_BIRTH"
              ],
              "dateShiftConfig": {
                "cryptoKey": "U2FsdGVkX19bS2oZsdbK9X5zi2utBn22uY+I2Vo0zOU="
              }
            }
          ]
        }
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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:deidentify" | Select-Object -Expand Content
    Este es el resultado. La respuesta contiene un identificador para una operación de larga duración. Las operaciones de larga duración se muestran cuando las llamadas de métodos pueden tardar una cantidad considerable de tiempo en completarse. Toma nota del valor de OPERATION_ID. Necesitarás este valor en el siguiente paso.

  2. Usa el método projects.locations.datasets.operations.get para obtener el estado de la operación de larga duración.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • DATASET_ID: El ID del conjunto de datos
    • LOCATION: La ubicación del conjunto de datos
    • OPERATION_ID: Es el ID que muestra la operación de larga duración.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"

    PowerShell

    Ejecuta el siguiente comando:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    Explorador de API

    Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

    Este es el resultado. Cuando la respuesta contiene "done": true, significa que la operación de larga duración finalizó.
  3. Una vez que la desidentificación se realiza de forma correcta, puedes recuperar los metadatos de la instancia desidentificada para ver cómo se cambió. La instancia desidentificada tiene un UID de estudios nuevo, un UID de serie y un UID de instancias, por lo que primero debes buscar la instancia desidentificada en el conjunto de datos nuevo.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • SOURCE_DATASET_LOCATION: La ubicación del conjunto de datos de origen
    • DESTINATION_DATASET_ID: El ID del conjunto de datos de destino en el que se escriben los datos desidentificados
    • DESTINATION_DICOM_STORE_ID: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"

    PowerShell

    Ejecuta el siguiente comando:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content

    Explorador de API

    Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

  4. Con los valores nuevos, recupera los metadatos de la instancia.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • LOCATION: La ubicación del conjunto de datos
    • DESTINATION_DATASET_ID: El ID del conjunto de datos de destino en el que se escriben los datos desidentificados
    • DESTINATION_DICOM_STORE_ID: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/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

    Ejecuta el siguiente comando:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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

    Explorador de API

    Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

    El resultado contiene los metadatos nuevos. Puedes comparar los metadatos nuevos con los metadatos originales para ver el efecto de la transformación.

El resultado muestra que StudyDate (00080020) y PatientBirthDate (00100030) tienen valores nuevos. Estas transformaciones se produjeron como resultado de la comparación del diferenciador de 100 días con el valor cryptoKey proporcionado. Los nuevos valores de fecha son coherentes para esta instancia entre ejecuciones de desidentificación mientras se proporcione el mismo cryptoKey.

CryptoHashConfig

Puedes dejar la cryptoHashConfig vacía o proporcionarla de una de las siguientes maneras:

Debes otorgar una función con el permiso cloudkms.cryptoKeyVersions.useToDecrypt a la cuenta de servicio del agente de servicio de Cloud Healthcare para desencriptar el Clave unida de Cloud KMS. Te recomendamos usar el rol de desencriptador de CryptoKey de Cloud KMS (roles/cloudkms.cryptoKeyDecrypter). Cuando usas Cloud KMS para realizar operaciones criptográficas, se aplican cargos. Consulta los precios de Cloud Key Management Service para obtener más información.

La API de Cloud Healthcare puede transformar datos mediante el reemplazo de valores por hash criptográfico (también llamados valores subrogados). Para hacerlo, especifica un mensaje cryptoHashConfig.

Si no proporcionas una clave, la API de Cloud Healthcare genera una clave. La API de Cloud Healthcare usa esta clave para generar valores subrogados. Si proporcionas la misma clave para cada ejecución, la API de Cloud Healthcare genera valores subrogados coherentes. Si no proporcionas una clave, la API de Cloud Healthcare genera una nueva cada vez que se ejecuta la operación. Usar una clave diferente produce valores subrogados diferentes.

En los ejemplos siguientes, se muestra cómo aplicar una transformación cryptoHashConfig a todos los Infotipos predeterminados de DICOM compatibles con la API de Cloud Healthcare. Después de enviar la solicitud de desidentificación, los valores con un Infotipo de DICOM correspondiente en la API de Cloud Healthcare se reemplazan por valores subrogados.

En la muestra, también se indica cómo proporcionar una CryptoKey para generar valores subrogados coherentes entre las ejecuciones de desidentificación.

La clave criptográfica proporcionada, U2FsdGVkX19bS2oZsdbK9X5zi2utBn22uY+I2Vo0zOU=, es una clave codificada sin formato en Base64 de 256 bits de encriptación AES generada con el siguiente comando. Cuando se te solicite, proporciona una contraseña vacía al siguiente comando:

echo -n "test" | openssl enc -e -aes-256-ofb -a -salt

Después de enviar la imagen a la API de Cloud Healthcare mediante la transformación cryptoHashConfig, la imagen aparece de la siguiente manera:

dicom_cryptohashconfig

REST

  1. Desidentifica el conjunto de datos.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • LOCATION: La ubicación del conjunto de datos
    • SOURCE_DATASET_ID: El ID del conjunto de datos que contiene los datos que se desidentificarán
    • DESTINATION_DATASET_ID: El ID del conjunto de datos de destino en el que se escriben los datos desidentificados

    Cuerpo JSON de la solicitud:

    {
      "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicom": {
          "filterProfile": "DEIDENTIFY_TAG_CONTENTS"
        },
        "text": {
          "transformations": [
            {
              "infoTypes": [],
              "cryptoHashConfig": {
                "cryptoKey": "U2FsdGVkX19bS2oZsdbK9X5zi2utBn22uY+I2Vo0zOU="
              }
            }
          ]
        }
      }
    }
    

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

    cat > request.json << 'EOF'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicom": {
          "filterProfile": "DEIDENTIFY_TAG_CONTENTS"
        },
        "text": {
          "transformations": [
            {
              "infoTypes": [],
              "cryptoHashConfig": {
                "cryptoKey": "U2FsdGVkX19bS2oZsdbK9X5zi2utBn22uY+I2Vo0zOU="
              }
            }
          ]
        }
      }
    }
    EOF

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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:deidentify"

    PowerShell

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

    @'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicom": {
          "filterProfile": "DEIDENTIFY_TAG_CONTENTS"
        },
        "text": {
          "transformations": [
            {
              "infoTypes": [],
              "cryptoHashConfig": {
                "cryptoKey": "U2FsdGVkX19bS2oZsdbK9X5zi2utBn22uY+I2Vo0zOU="
              }
            }
          ]
        }
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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:deidentify" | Select-Object -Expand Content
    Este es el resultado. La respuesta contiene un identificador para una operación de larga duración. Las operaciones de larga duración se muestran cuando las llamadas de métodos pueden tardar una cantidad considerable de tiempo en completarse. Toma nota del valor de OPERATION_ID. Necesitarás este valor en el siguiente paso.

  2. Usa el método projects.locations.datasets.operations.get para obtener el estado de la operación de larga duración.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • DATASET_ID: El ID del conjunto de datos
    • LOCATION: La ubicación del conjunto de datos
    • OPERATION_ID: Es el ID que muestra la operación de larga duración.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"

    PowerShell

    Ejecuta el siguiente comando:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    Explorador de API

    Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

    Este es el resultado. Cuando la respuesta contiene "done": true, significa que la operación de larga duración finalizó.
  3. Una vez que la desidentificación se realiza de forma correcta, puedes recuperar los metadatos de la instancia desidentificada para ver cómo se cambió. La instancia desidentificada tiene un UID de estudios nuevo, un UID de serie y un UID de instancias, por lo que primero debes buscar la instancia desidentificada en el conjunto de datos nuevo.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • SOURCE_DATASET_LOCATION: La ubicación del conjunto de datos de origen
    • DESTINATION_DATASET_ID: El ID del conjunto de datos de destino en el que se escriben los datos desidentificados
    • DESTINATION_DICOM_STORE_ID: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"

    PowerShell

    Ejecuta el siguiente comando:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content

    Explorador de API

    Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

  4. Con los valores nuevos, recupera los metadatos de la instancia.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • LOCATION: La ubicación del conjunto de datos
    • DESTINATION_DATASET_ID: El ID del conjunto de datos de destino en el que se escriben los datos desidentificados
    • DESTINATION_DICOM_STORE_ID: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/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

    Ejecuta el siguiente comando:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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

    Explorador de API

    Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

    El resultado contiene los metadatos nuevos. Puedes comparar los metadatos nuevos con los metadatos originales para ver el efecto de la transformación.

Las transformaciones en el resultado son coherentes para esta instancia entre las ejecuciones de desidentificación, siempre que se proporcione el mismo cryptoKey.

ReplaceWithInfoTypeConfig

Si especificas replaceWithInfoTypeConfig, se reemplazan los valores de entrada con el nombre del Infotipo del valor.

En los ejemplos siguientes, se muestra cómo aplicar una transformación replaceWithInfoTypeConfig a todos los Infotipos predeterminados de DICOM compatibles con la API de Cloud Healthcare. El mensaje replaceWithInfoTypeConfig no tiene argumentos; si lo especificas, se habilita su transformación.

Después de enviar la imagen a la API de Cloud Healthcare mediante la transformación replaceWithInfoTypeConfig, la imagen aparece de la siguiente manera:

dicom_replacewithinfotypeconfig

REST

  1. Desidentifica el conjunto de datos.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • LOCATION: La ubicación del conjunto de datos
    • SOURCE_DATASET_ID: El ID del conjunto de datos que contiene los datos que se desidentificarán
    • DESTINATION_DATASET_ID: El ID del conjunto de datos de destino en el que se escriben los datos desidentificados

    Cuerpo JSON de la solicitud:

    {
      "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicom": {
          "filterProfile": "DEIDENTIFY_TAG_CONTENTS"
        },
        "text": {
          "transformations": [
            {
              "infoTypes": [],
              "replaceWithInfoTypeConfig": {}
            }
          ]
        }
      }
    }
    

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

    cat > request.json << 'EOF'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicom": {
          "filterProfile": "DEIDENTIFY_TAG_CONTENTS"
        },
        "text": {
          "transformations": [
            {
              "infoTypes": [],
              "replaceWithInfoTypeConfig": {}
            }
          ]
        }
      }
    }
    EOF

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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:deidentify"

    PowerShell

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

    @'
    {
      "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID",
      "config": {
        "dicom": {
          "filterProfile": "DEIDENTIFY_TAG_CONTENTS"
        },
        "text": {
          "transformations": [
            {
              "infoTypes": [],
              "replaceWithInfoTypeConfig": {}
            }
          ]
        }
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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:deidentify" | Select-Object -Expand Content
    Este es el resultado. La respuesta contiene un identificador para una operación de larga duración. Las operaciones de larga duración se muestran cuando las llamadas de métodos pueden tardar una cantidad considerable de tiempo en completarse. Toma nota del valor de OPERATION_ID. Necesitarás este valor en el siguiente paso.

  2. Usa el método projects.locations.datasets.operations.get para obtener el estado de la operación de larga duración.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • DATASET_ID: El ID del conjunto de datos
    • LOCATION: La ubicación del conjunto de datos
    • OPERATION_ID: Es el ID que muestra la operación de larga duración.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"

    PowerShell

    Ejecuta el siguiente comando:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    Explorador de API

    Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

    Este es el resultado. Cuando la respuesta contiene "done": true, significa que la operación de larga duración finalizó.
  3. Una vez que la desidentificación se realiza de forma correcta, puedes recuperar los metadatos de la instancia desidentificada para ver cómo se cambió. La instancia desidentificada tiene un UID de estudios nuevo, un UID de serie y un UID de instancias, por lo que primero debes buscar la instancia desidentificada en el conjunto de datos nuevo.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • SOURCE_DATASET_LOCATION: La ubicación del conjunto de datos de origen
    • DESTINATION_DATASET_ID: El ID del conjunto de datos de destino en el que se escriben los datos desidentificados
    • DESTINATION_DICOM_STORE_ID: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances"

    PowerShell

    Ejecuta el siguiente comando:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | Select-Object -Expand Content

    Explorador de API

    Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

  4. Con los valores nuevos, recupera los metadatos de la instancia.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • LOCATION: La ubicación del conjunto de datos
    • DESTINATION_DATASET_ID: El ID del conjunto de datos de destino en el que se escriben los datos desidentificados
    • DESTINATION_DICOM_STORE_ID: Es el ID del almacén de DICOM en el conjunto de datos de destino. Es el mismo que el ID del almacén de DICOM en el conjunto de datos de origen.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/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

    Ejecuta el siguiente comando:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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

    Explorador de API

    Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

    El resultado contiene los metadatos nuevos. Puedes comparar los metadatos nuevos con los metadatos originales para ver el efecto de la transformación.

Desidentifica datos a nivel del almacén de DICOM

Las muestras anteriores muestran cómo desidentificar datos de DICOM a nivel de conjunto de datos. En esta sección, se describe cómo desidentificar datos a nivel del almacén de DICOM.

Para cambiar una solicitud de desidentificación de conjunto de datos a una solicitud de desidentificación de almacén de DICOM, realiza los siguientes cambios:

  • Cambia el destinationDataset a destinationStore en el cuerpo de la solicitud.
  • Agrega dicomStores/DESTINATION_DICOM_STORE_ID al final del valor en destinationStore cuando especifiques el destino.
  • Agrega dicomStores/SOURCE_DICOM_STORE_ID cuando especifiques la ubicación de los datos de origen.

Por ejemplo:

Desidentificación a nivel de conjunto de datos:

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

Desidentificación a nivel del almacén DICOM:

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

En los siguientes ejemplos, se amplía el artículo Combina desidentificación de etiquetas y ocultamiento de texto quemado, pero esta se produce en un único almacén de DICOM y los datos desidentificados se copian en un almacén de DICOM nuevo. Antes de ejecutar los ejemplos, el almacén de DICOM al que hace referencia DESTINATION_DICOM_STORE_ID ya debe existir.

Console

Para desidentificar datos en un almacén DICOM mediante la consola de Google Cloud, completa los siguientes pasos.

  1. En la consola de Google Cloud, ve a la página Conjunto de datos.

    Ir a Conjuntos de datos

  2. Haz clic en el conjunto de datos que contiene los datos que deseas desidentificar.

  3. En la lista de almacenes de DICOM, elige Desidentificar de la lista Acciones para el almacén de DICOM que estás desidentificando.

    Aparecerá la página Desidentifica almacenes de DICOM.

  4. Selecciona Configurar almacén de datos de destino y elige el conjunto de datos y el almacén de DICOM en el que se guardan los datos desidentificados.

  5. Selecciona Desidentificación de etiquetas de DICOM para configurar cómo se desidentifican los datos. Los datos se pueden desidentificar de la siguiente manera:

  6. Selecciona Ocultamiento de texto quemado de DICOM para configurar cómo se realiza el ocultamiento de imagen durante la desidentificación. Puedes configurar el ocultamiento de imágenes de la siguiente manera:

  7. Haz clic en Desidentificar para desidentificar los datos del almacén DICOM.

REST

  1. Desidentifica el conjunto de datos.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • LOCATION: La ubicación del conjunto de datos
    • SOURCE_DATASET_ID: El ID del conjunto de datos que contiene los datos que se desidentificarán
    • DESTINATION_DATASET_ID: El ID del conjunto de datos de destino en el que se escriben los datos desidentificados
    • SOURCE_DICOM_STORE_ID: El ID del almacén de DICOM que contiene los datos que se desidentificarán
    • DESTINATION_DICOM_STORE_ID: El ID del almacén de DICOM en el conjunto de datos de destino

    Cuerpo JSON de la solicitud:

    {
      "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"
        }
      }
    }
    

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

    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"
        }
      }
    }
    EOF

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

    @'
    {
      "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"
        }
      }
    }
    '@  | Out-File -FilePath request.json -Encoding utf8

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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
    Este es el resultado. La respuesta contiene un identificador para una operación de larga duración. Las operaciones de larga duración se muestran cuando las llamadas de métodos pueden tardar una cantidad considerable de tiempo en completarse. Toma nota del valor de OPERATION_ID. Necesitarás este valor en el siguiente paso.

  2. Usa el método projects.locations.datasets.operations.get para obtener el estado de la operación de larga duración.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • DATASET_ID: El ID del conjunto de datos
    • LOCATION: La ubicación del conjunto de datos
    • OPERATION_ID: Es el ID que muestra la operación de larga duración.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"

    PowerShell

    Ejecuta el siguiente comando:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    Explorador de API

    Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

    Este es el resultado. Cuando la respuesta contiene "done": true, significa que la operación de larga duración finalizó.

Desidentifica un subconjunto de una almacén DICOM

Puedes desidentificar un subconjunto de los datos en un almacén DICOM si especificas un filtro.

El filtro toma la forma de un archivo de filtro que especificas como un valor para el campo resourcePathsGcsUri en el objeto DicomFilterConfig. El archivo de filtro debe existir en un bucket de Cloud Storage. No puedes especificar un archivo de filtro que exista en tu máquina local o en cualquier otra fuente. La ubicación del archivo debe estar en formato gs://BUCKET/PATH/TO/FILE.

Crea un archivo de filtro

Un archivo de filtro define qué archivos DICOM que desidentificar. Puede filtrar archivos en los siguientes niveles:

  • A nivel del estudio
  • En el nivel de la serie
  • En el nivel de la instancia

El archivo de filtro está compuesto por una línea por estudio, serie o instancia que deseas desidentificar. Cada línea usa el formato /studies/STUDY_UID[/series/SERIES_UID[/instances/INSTANCE_UID]]. Al final de cada línea hay un carácter de salto de línea: \n o \r\n.

Si no se especifica un estudio, una serie o una instancia en el archivo de filtro que pasaste cuando se llamó a la operación de desidentificación, ese estudio, serie o instancia no se desidentificará y no estará presente en el almacén de DICOM de destino.

Solo se requiere la parte /studies/STUDY_UID de la ruta de acceso. Esto significa que puedes desidentificar un estudio si especificas /studies/STUDY_UID o puedes desidentificar una serie si especificas /studies/STUDY_UID/series/SERIES_UID.

Considera el siguiente archivo de filtro. El archivo de filtro hace que se desidentifique un estudio, dos series y tres instancias individuales:

/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

Crea un archivo de filtro con BigQuery

Por lo general, para crear un archivo de filtro, primero debes exportar los metadatos de un almacén de DICOM a BigQuery. Esto te permite usar BigQuery para ver los UID del estudio, serie y de las instancias de los datos de DICOM en tu almacén de DICOM. A continuación, puedes hacer lo siguiente:

  1. Realiza consultas para los UID del estudio, la serie y la instancia que te interesa. Por ejemplo, después de exportar los metadatos a BigQuery, puedes ejecutar la siguiente consulta para concatenar los UID del estudio, la serie y la instancia en un formato compatible con los requisitos del archivo de filtro:

    SELECT CONCAT
      ('/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID)
    FROM
      [PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE]
  2. Si la consulta muestra un conjunto de resultados grande, puedes materializar una tabla nueva si guardas los resultados de las consultas en una tabla de destino en BigQuery.

  3. Después de guardar los resultados de las consultas en la tabla de destino, puedes guardar el contenido de la tabla de destino en un archivo y exportarlo a Cloud Storage. Si quieres obtener los pasos para hacerlo, consulta Exporta datos de tablas. El archivo exportado es tu archivo de filtro. Usarás la ubicación del archivo de filtro en Cloud Storage cuando especifiques el filtro en la operación de exportación.

Crea un archivo de filtro de forma manual

Puedes crear un archivo de filtro con contenido personalizado y subirlo a un depósito de Cloud Storage. Usarás la ubicación del archivo de filtro en Cloud Storage cuando especifiques el filtro en la operación de desidentificación. En el siguiente ejemplo, se muestra cómo subir un archivo de filtro a un depósito de Cloud Storage con el comando gcloud storage cp:

gcloud storage cp PATH/TO/FILTER_FILE gs://BUCKET/DIRECTORY

Por ejemplo:

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

Usa un filtro

Después de configurar el archivo de filtro, puedes pasarlo como un valor al campo resourcePathsGcsUri en el objeto filterConfig.

En el siguiente ejemplo, se amplía Desidentifica datos a nivel del almacén de DICOM, pero se proporciona un archivo de filtro en Cloud Storage que determina qué recursos DICOM se desidentifican.

REST

  1. Desidentifica el conjunto de datos.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • LOCATION: La ubicación del conjunto de datos
    • SOURCE_DATASET_ID: El ID del conjunto de datos que contiene los datos que se desidentificarán
    • DESTINATION_DATASET_ID: El ID del conjunto de datos de destino en el que se escriben los datos desidentificados
    • SOURCE_DICOM_STORE_ID: El ID del almacén de DICOM que contiene los datos que se desidentificarán
    • DESTINATION_DICOM_STORE_ID: El ID del almacén de DICOM en el conjunto de datos de destino
    • BUCKET/PATH/TO/FILE: La ubicación del archivo de filtro en un bucket de Cloud Storage

    Cuerpo JSON de la solicitud:

    {
      "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"
      }
    }
    

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

    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

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json. Ejecuta el comando siguiente en la terminal para crear o reemplazar este archivo en el directorio actual:

    @'
    {
      "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

    Luego, ejecuta el siguiente comando para enviar tu solicitud de 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
    Este es el resultado. La respuesta contiene un identificador para una operación de larga duración. Las operaciones de larga duración se muestran cuando las llamadas de métodos pueden tardar una cantidad considerable de tiempo en completarse. Toma nota del valor de OPERATION_ID. Necesitarás este valor en el siguiente paso.

  2. Usa el método projects.locations.datasets.operations.get para obtener el estado de la operación de larga duración.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_IDEl ID de tu proyecto de Google Cloud.
    • DATASET_ID: El ID del conjunto de datos
    • LOCATION: La ubicación del conjunto de datos
    • OPERATION_ID: Es el ID que muestra la operación de larga duración.

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Ejecuta el siguiente comando:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"

    PowerShell

    Ejecuta el siguiente comando:

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

    Invoke-WebRequest `
    -Method GET `
    -Headers $headers `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content

    Explorador de API

    Abre la página de referencia del método. El panel del Explorador de API se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Completa los campos obligatorios y haz clic en Ejecutar.

    Este es el resultado. Cuando la respuesta contiene "done": true, significa que la operación de larga duración finalizó.

Soluciona problemas de operaciones de desidentificación de DICOM

Si se producen errores durante una operación de desidentificación de DICOM, estos se registran en Cloud Logging. Para obtener más información, consulta Visualiza los registros de errores en Cloud Logging.

Si toda la operación muestra un error, consulta Solución de problemas de operaciones de larga duración.