DICOM-Daten mit DicomConfig de-identifizieren

Auf dieser Seite wird erläutert, wie Sie mit der v1-Konfiguration DicomConfig sensible Daten in DICOM-Instanzen auf folgenden Ebenen de-identifizieren:

Auf dieser Seite wird auch erläutert, wie Sie Filter anwenden, wenn Sie Daten auf DICOM-Speicherebene de-identifizieren.

Übersicht über die De-Identifikation

De-Identifikation auf Dataset-Ebene

Rufen Sie den Vorgang datasets.deidentify auf, um DICOM-Daten auf Dataset-Ebene zu de-identifizieren. Der API-Aufruf zur De-Identifikation besteht aus folgenden Komponenten:

  • Das Quell-Dataset: Ein Dataset, das DICOM-Speicher mit einer oder mehreren Instanzen enthält, die sensible Daten enthalten. Wenn Sie den Vorgang deidentify aufrufen, werden alle Instanzen in allen DICOM-Speichern im Dataset de-identifiziert.
  • Das Ziel-Dataset: Die De-Identifikation wirkt sich nicht auf das ursprüngliche Dataset oder seine Daten aus. Stattdessen werden de-identifizierte Kopien der ursprünglichen Daten in ein neues Dataset geschrieben, das als Ziel-Dataset bezeichnet wird.
  • Zu de-identifizierende Elemente:Konfigurationsparameter, die angeben, wie das Dataset verarbeitet werden soll. Sie können die DICOM-De-Identifikation konfigurieren, um DICOM-Instanzmetadaten (mit Tag-Keywords) oder eingebrannten Text in DICOM-Bildern zu de-identifizieren. Geben Sie dazu diese Parameter in einem DeidentifyConfig-Objekt an und gehen Sie so vor:
    • Das Feld config des Anfragetexts festlegen
    • Datei in Cloud Storage im JSON-Format speichern und den Speicherort der Datei im Bucket mithilfe des Felds gcsConfigUri des Anfragetexts angeben

Die meisten Beispiele in diesem Leitfaden zeigen, wie DICOM-Daten auf Dataset-Ebene de-identifiziert werden.

DICOM-De-Identifikation auf Speicherebene

Wenn Sie DICOM-Daten auf DICOM-Speicherebene de-identifizieren, können Sie besser steuern, welche Daten de-identifiziert werden. Wenn Sie beispielsweise ein Dataset mit mehreren DICOM-Speichern haben, können Sie die De-Identifikation jedes DICOM-Speichers entsprechend dem jeweiligen Datentyp aufheben.

Rufen Sie die Methode dicomStores.deidentify auf, um DICOM-Daten in einem DICOM-Speicher zu de-identifizieren. Der API-Aufruf zur De-Identifikation besteht aus folgenden Komponenten:

  • Der DICOM-Speicher für Quellen: Ein DICOM-Speicher mit einer oder mehreren Instanzen, die vertrauliche Daten enthalten. Wenn Sie den Vorgang deidentify aufrufen, werden alle Instanzen im DICOM-Speicher de-identifiziert.
  • Der Ziel-DICOM-Speicher: Die De-Identifikation wirkt sich nicht auf den ursprünglichen DICOM-Speicher oder seine Daten aus. Stattdessen werden de-identifizierte Kopien der Originaldaten in den DICOM-Zielspeicher geschrieben. Der DICOM-Zielspeicher muss bereits vorhanden sein.
  • Zu de-identifizierende Elemente: Konfigurationsparameter, die angeben, wie der DICOM-Speicher verarbeitet werden soll. Sie können die DICOM-De-Identifikation konfigurieren, um DICOM-Instanzmetadaten (mithilfe von Tag-Keywords) oder eingebrannten Text in DICOM-Bildern zu de-identifizieren. Geben Sie dazu diese Parameter in einem DeidentifyConfig-Objekt an und übergeben Sie es mit einer der folgenden Methoden:
    • Das Feld config des Anfragetexts festlegen
    • Datei in Cloud Storage im JSON-Format speichern und den Speicherort der Datei im Bucket mithilfe des Felds gcsConfigUri des Anfragetexts angeben

Ein Beispiel zum De-Identifizieren von DICOM-Daten auf DICOM-Speicherebene finden Sie unter De-Identifikation von Daten auf DICOM-Speicherebene.

Filter

Sie können eine Teilmenge von Daten in einem DICOM-Speicher de-identifizieren, indem Sie eine Filterdatei konfigurieren und die Datei in der dicomStores.deidentify-Anfrage angeben. Ein Beispiel finden Sie unter Teilmenge eines DICOM-Speichers de-identifizieren.

Beispiele – Übersicht

Die Beispiele in diesem Leitfaden verwenden eine einzelne DICOM-Instanz. Sie können jedoch auch mehrere Instanzen deaktivieren.

In jedem der folgenden Abschnitte finden Sie Beispiele zur De-Identifikation von DICOM-Daten mithilfe verschiedener Methoden. Für jedes Beispiel wird eine Ausgabe des de-identifizierten Images bereitgestellt. In jedem Beispiel wird das folgende Originalbild als Eingabe verwendet:

xray_original

Sie können das Ausgabebild jedes De-Identifizierungsvorgangs mit diesem Originalbild vergleichen, um die Auswirkungen des Vorgangs zu sehen.

De-Identifikation von DICOM-Tags

Sie können DICOM-Instanzen anhand von Tag-Keywords in den DICOM-Metadaten de-identifizieren. Die folgenden Tag-Filtermethoden stehen im Objekt DicomConfig zur Verfügung:

  • keepList: Liste der zu speichernden Tags. Entfernen Sie alle anderen Tags.
  • removeList: Liste der Tags, die entfernt werden sollen. Alle anderen Tags beibehalten.
  • filterProfile: Ein Tag-Filterprofil, mit dem bestimmt wird, welche Tags beibehalten oder entfernt werden.

Für jedes Beispiel in diesem Abschnitt wird die Ausgabe der geänderten Metadaten der DICOM-Instanz bereitgestellt. Im Folgenden finden Sie die ursprünglichen Metadaten der Instanz, die als Eingabe für jedes Beispiel verwendet werden:

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

De-Identifikation mithilfe von Keeplist-Tags

Wenn Sie ein Keeplist-Tag im Objekt DicomConfig angeben, werden standardmäßig die folgenden Tags hinzugefügt:

  • 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

Der deidentify-Vorgang entfernt die vorherigen Tags nicht. Die Werte für einige Tags werden jedoch neu generiert, d. h., die Werte werden durch eine deterministische Transformation durch einen anderen Wert ersetzt. Weitere Informationen finden Sie unter Option "UIDs beibehalten" im DICOM-Standard. Wenn Sie die ursprünglichen Werte der vorherigen Tags beibehalten möchten, verwenden Sie die Option SkipIdRedaction.

Wenn keine Keeplist-Tags angegeben sind, werden keine DICOM-Tags im Dataset entfernt.

In den folgenden Beispielen wird gezeigt, wie Sie ein Dataset mit DICOM-Speichern und DICOM-Daten de-identifizieren, während einige Tags unverändert bleiben.

Nachdem Sie das Image an die Cloud Healthcare API gesendet haben, wird es wie folgt angezeigt. Während die Metadaten, die in den oberen Ecken des Bildes angezeigt werden, entfernt wurden, bleiben die eingebrannten geschützten Gesundheitsinformationen (PHI) unten im Bild erhalten. Informationen zum Entfernen des eingebrannten Texts finden Sie unter Eingebrannten Text aus Bildern entfernen.

dicom_keeplist

REST

  1. De-identifizieren Sie das Dataset.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
    • LOCATION ist der Standort des Datasets
    • SOURCE_DATASET_ID: die ID des Datasets mit den Daten, die de-identifiziert werden sollen.
    • DESTINATION_DATASET_ID: ID des Ziel-Datasets, in das de-identifizierte Daten geschrieben werden

    JSON-Text anfordern:

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

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

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

    Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

    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

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

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

    Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

    $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
    Die Ausgabe sieht so aus. Die Antwort enthält eine Kennung für einen Vorgang mit langer Ausführungszeit. Lang andauernde Vorgänge werden zurückgegeben, wenn die Ausführung von Methodenaufrufen sehr lange dauern kann. Notieren Sie sich den Wert von OPERATION_ID. Sie benötigen diesen Wert im nächsten Schritt.

  2. Mit der Methode projects.locations.datasets.operations.get können Sie den Status des Vorgangs mit langer Ausführungszeit abrufen.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID: die ID Ihres Google Cloud-Projekts
    • DATASET_ID: die Dataset-ID
    • LOCATION: der Standort des Datasets
    • OPERATION_ID: die ID, die vom Vorgang mit langer Ausführungszeit zurückgegeben wurde

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Führen Sie folgenden Befehl aus:

    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

    Führen Sie folgenden Befehl aus:

    $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

    APIs Explorer

    Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

    Die Ausgabe sieht so aus. Wenn die Antwort "done": true enthält, ist der Vorgang mit langer Ausführungszeit abgeschlossen.
  3. Nach erfolgreicher De-Identifikation können Sie die Metadaten für die de-identifizierte Instanz abrufen, um zu sehen, wie sie geändert wurde. Die de-identifizierte Instanz hat eine neue Studien-UID, Serien-UID und Instanz-UID. Daher müssen Sie zuerst im neuen Dataset nach der de-identifizierten Instanz suchen.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
    • SOURCE_DATASET_LOCATION: Speicherort des Quell-Datasets
    • DESTINATION_DATASET_ID: ID des Ziel-Datasets, in das de-identifizierte Daten geschrieben werden
    • DESTINATION_DICOM_STORE_ID: die ID des DICOM-Speichers im Ziel-Dataset. Dies entspricht der ID des DICOM-Speichers im Quell-Dataset.

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Führen Sie folgenden Befehl aus:

    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

    Führen Sie folgenden Befehl aus:

    $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

    APIs Explorer

    Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

    Sie sollten in etwa folgende JSON-Antwort erhalten:

    Die folgende Tabelle zeigt, wie sich die UID der Studie, die Serien-UID und die Instanz-UID geändert haben:
      Metadaten der ursprünglichen Instanz De-identifizierte Instanzmetadaten
    Studien-UID (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    Serien-UID (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    Instanz-UID (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. Rufen Sie mit den neuen Werten die Metadaten für die Instanz ab.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
    • LOCATION ist der Standort des Datasets
    • DESTINATION_DATASET_ID: ID des Ziel-Datasets, in das de-identifizierte Daten geschrieben werden
    • DESTINATION_DICOM_STORE_ID: die ID des DICOM-Speichers im Ziel-Dataset. Dies entspricht der ID des DICOM-Speichers im Quell-Dataset.

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Führen Sie folgenden Befehl aus:

    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

    Führen Sie folgenden Befehl aus:

    $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

    APIs Explorer

    Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

    Die Ausgabe enthält die neuen Metadaten. Sie können die neuen Metadaten mit den ursprünglichen Metadaten vergleichen, um die Auswirkungen der Transformation zu sehen.

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

De-Identifikation mithilfe von Removelist-Tags

Sie können eine Entfernungsliste im Objekt DicomConfig angeben. Beim deidentify-Vorgang werden nur die in der Liste angegebenen Tags entfernt. Wenn keine Removelist-Tags angegeben sind, wird die De-Identifikation wie gewohnt fortgesetzt, aber es werden keine DICOM-Tags im Ziel-Dataset entfernt.

Wenn Sie eine Removelist angeben, wird standardmäßig das Tag OverlayData hinzugefügt, da Overlay-Daten PHI enthalten können.

Die Tags, die standardmäßig zu einer Keeplist hinzugefügt werden, können nicht zu einer Removelist hinzugefügt werden.

In den folgenden Beispielen wird gezeigt, wie Sie ein Dataset mit DICOM-Speichern und DICOM-Daten de-identifizieren, indem Sie alle Tags aus der Entfernungsliste entfernen. Tags, die nicht in der Liste zum Entfernen enthalten sind, bleiben unverändert.

Nachdem Sie das Image an die Cloud Healthcare API gesendet haben, wird es wie folgt angezeigt. Von den in der Entfernungsliste angegebenen Tags wird nur PatientBirthDate aus dem Bild entfernt, da es das einzige Tag aus der Entfernungsliste ist, das den Metadaten entspricht, die im Bild sichtbar sind.

Während das PatientBirthDate in der oberen Ecke des Bildes gemäß der Konfiguration in der Entfernungsliste entfernt wurde, bleibt die eingebrannte PHI unten im Bild erhalten. Informationen zum Entfernen des eingebrannten Texts finden Sie unter Eingebrannten Text aus Bildern entfernen.

dicom_removelist

REST

  1. De-identifizieren Sie das Dataset.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
    • LOCATION ist der Standort des Datasets
    • SOURCE_DATASET_ID: die ID des Datasets mit den Daten, die de-identifiziert werden sollen.
    • DESTINATION_DATASET_ID: ID des Ziel-Datasets, in das de-identifizierte Daten geschrieben werden

    JSON-Text anfordern:

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

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

    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

    Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

    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

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

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

    Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

    $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
    Die Ausgabe sieht so aus. Die Antwort enthält eine Kennung für einen Vorgang mit langer Ausführungszeit. Lang andauernde Vorgänge werden zurückgegeben, wenn die Ausführung von Methodenaufrufen sehr lange dauern kann. Notieren Sie sich den Wert von OPERATION_ID. Sie benötigen diesen Wert im nächsten Schritt.

  2. Mit der Methode projects.locations.datasets.operations.get können Sie den Status des Vorgangs mit langer Ausführungszeit abrufen.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID: die ID Ihres Google Cloud-Projekts
    • DATASET_ID: die Dataset-ID
    • LOCATION: der Standort des Datasets
    • OPERATION_ID: die ID, die vom Vorgang mit langer Ausführungszeit zurückgegeben wurde

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Führen Sie folgenden Befehl aus:

    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

    Führen Sie folgenden Befehl aus:

    $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

    APIs Explorer

    Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

    Die Ausgabe sieht so aus. Wenn die Antwort "done": true enthält, ist der Vorgang mit langer Ausführungszeit abgeschlossen.
  3. Nach erfolgreicher De-Identifikation können Sie die Metadaten für die de-identifizierte Instanz abrufen, um zu sehen, wie sie geändert wurde. Die de-identifizierte Instanz hat eine neue Studien-UID, Serien-UID und Instanz-UID. Daher müssen Sie zuerst im neuen Dataset nach der de-identifizierten Instanz suchen.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
    • SOURCE_DATASET_LOCATION: Speicherort des Quell-Datasets
    • DESTINATION_DATASET_ID: ID des Ziel-Datasets, in das de-identifizierte Daten geschrieben werden
    • DESTINATION_DICOM_STORE_ID: die ID des DICOM-Speichers im Ziel-Dataset. Dies entspricht der ID des DICOM-Speichers im Quell-Dataset.

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Führen Sie folgenden Befehl aus:

    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

    Führen Sie folgenden Befehl aus:

    $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

    APIs Explorer

    Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

    Sie sollten in etwa folgende JSON-Antwort erhalten:

    Die folgende Tabelle zeigt, wie sich die UID der Studie, die Serien-UID und die Instanz-UID geändert haben:
      Metadaten der ursprünglichen Instanz De-identifizierte Instanzmetadaten
    Studien-UID (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    Serien-UID (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    Instanz-UID (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. Rufen Sie mit den neuen Werten die Metadaten für die Instanz ab.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
    • LOCATION ist der Standort des Datasets
    • DESTINATION_DATASET_ID: ID des Ziel-Datasets, in das de-identifizierte Daten geschrieben werden
    • DESTINATION_DICOM_STORE_ID: die ID des DICOM-Speichers im Ziel-Dataset. Dies entspricht der ID des DICOM-Speichers im Quell-Dataset.

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Führen Sie folgenden Befehl aus:

    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

    Führen Sie folgenden Befehl aus:

    $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

    APIs Explorer

    Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

    Die Ausgabe enthält die neuen Metadaten. Sie können die neuen Metadaten mit den ursprünglichen Metadaten vergleichen, um die Auswirkungen der Transformation zu sehen.

De-Identifikation mithilfe eines Tag-Filterprofils

Anstatt anzugeben, welche Tags beibehalten oder entfernt werden sollen, können Sie ein TagFilterProfile im Objekt DicomConfig konfigurieren. Ein Tag-Filterprofil ist ein vordefiniertes Profil, das bestimmt, welche Tags beibehalten, entfernt oder transformiert werden. Informationen zu verfügbaren Profilen finden Sie in der Dokumentation zu TagFilterProfile.

In den folgenden Beispielen wird gezeigt, wie ein Dataset mit DICOM-Speichern und DICOM-Daten mit dem Tag-Filterprofil ATTRIBUTE_CONFIDENTIALITY_BASIC_PROFILE de-identifiziert werden kann. Dieses Tag-Filterprofil entfernt Tags auf der Grundlage des Basisprofils für Attribut-Vertraulichkeit des DICOM-Standards. Die Cloud Healthcare API entspricht nicht vollständig dem Attribut "Vertraulichkeitsprofil". Beispielsweise überprüft die Cloud Healthcare API bei der Auswahl einer Aktion für ein Tag keine IOD-Einschränkungen (Informationsobjektdefinition).

Nachdem Sie das Bild mit dem Tag-FilterprofilATTRIBUTE_CONFIDENTIALITY_BASIC_PROFILE an die Cloud Healthcare API gesendet haben, wird das Bild wie folgt angezeigt: Während die in den oberen Ecken des Bildes angezeigten Metadaten entfernt wurden, bleibt die eingebrannte PHI unten im Bild erhalten. Informationen zum Entfernen des eingebrannten Texts finden Sie unter Eingebrannten Text aus Bildern entfernen.

dicom_attribute_confidentiality_basic_profile

REST

  1. De-identifizieren Sie das Dataset.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
    • LOCATION ist der Standort des Datasets
    • SOURCE_DATASET_ID: die ID des Datasets mit den Daten, die de-identifiziert werden sollen.
    • DESTINATION_DATASET_ID: ID des Ziel-Datasets, in das de-identifizierte Daten geschrieben werden

    JSON-Text anfordern:

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

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

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

    Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

    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

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

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

    Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

    $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
    Die Ausgabe sieht so aus. Die Antwort enthält eine Kennung für einen Vorgang mit langer Ausführungszeit. Lang andauernde Vorgänge werden zurückgegeben, wenn die Ausführung von Methodenaufrufen sehr lange dauern kann. Notieren Sie sich den Wert von OPERATION_ID. Sie benötigen diesen Wert im nächsten Schritt.

  2. Mit der Methode projects.locations.datasets.operations.get können Sie den Status des Vorgangs mit langer Ausführungszeit abrufen.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID: die ID Ihres Google Cloud-Projekts
    • DATASET_ID: die Dataset-ID
    • LOCATION: der Standort des Datasets
    • OPERATION_ID: die ID, die vom Vorgang mit langer Ausführungszeit zurückgegeben wurde

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Führen Sie folgenden Befehl aus:

    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

    Führen Sie folgenden Befehl aus:

    $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

    APIs Explorer

    Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

    Die Ausgabe sieht so aus. Wenn die Antwort "done": true enthält, ist der Vorgang mit langer Ausführungszeit abgeschlossen.
  3. Nach erfolgreicher De-Identifikation können Sie die Metadaten für die de-identifizierte Instanz abrufen, um zu sehen, wie sie geändert wurde. Die de-identifizierte Instanz hat eine neue Studien-UID, Serien-UID und Instanz-UID. Daher müssen Sie zuerst im neuen Dataset nach der de-identifizierten Instanz suchen.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
    • SOURCE_DATASET_LOCATION: Speicherort des Quell-Datasets
    • DESTINATION_DATASET_ID: ID des Ziel-Datasets, in das de-identifizierte Daten geschrieben werden
    • DESTINATION_DICOM_STORE_ID: die ID des DICOM-Speichers im Ziel-Dataset. Dies entspricht der ID des DICOM-Speichers im Quell-Dataset.

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Führen Sie folgenden Befehl aus:

    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

    Führen Sie folgenden Befehl aus:

    $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

    APIs Explorer

    Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

    Sie sollten in etwa folgende JSON-Antwort erhalten:

    Die folgende Tabelle zeigt, wie sich die UID der Studie, die Serien-UID und die Instanz-UID geändert haben:
      Metadaten der ursprünglichen Instanz De-identifizierte Instanzmetadaten
    Studien-UID (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    Serien-UID (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    Instanz-UID (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. Rufen Sie mit den neuen Werten die Metadaten für die Instanz ab.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
    • LOCATION ist der Standort des Datasets
    • DESTINATION_DATASET_ID: ID des Ziel-Datasets, in das de-identifizierte Daten geschrieben werden
    • DESTINATION_DICOM_STORE_ID: die ID des DICOM-Speichers im Ziel-Dataset. Dies entspricht der ID des DICOM-Speichers im Quell-Dataset.

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Führen Sie folgenden Befehl aus:

    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

    Führen Sie folgenden Befehl aus:

    $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

    APIs Explorer

    Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

    Die Ausgabe enthält die neuen Metadaten. Sie können die neuen Metadaten mit den ursprünglichen Metadaten vergleichen, um die Auswirkungen der Transformation zu sehen.

De-Identifikation von Daten in der Google Cloud Console

Führen Sie die folgenden Schritte aus, um Daten in der Google Cloud Console zu de-identifizieren:

  1. Rufen Sie in der Google Cloud Console die Seite „Datasets” auf.

    Zur Seite „Datasets“

  2. Wählen Sie in der Liste Aktionen für das Dataset, das Sie de-identifizieren möchten, die Option De-identifizieren aus.

    Die Seite Dataset de-identifizieren wird angezeigt.

  3. Wählen Sie Ziel-Dataset festlegen aus und geben Sie einen Namen für das neue Dataset ein, in dem die de-identifizierten Daten gespeichert werden sollen.

  4. Wählen Sie DICOM-Tag-De-Identifikation aus, um das Profil auszuwählen, für das Daten de-identifiziert werden. Daten können folgendermaßen de-identifiziert werden:

  5. Wählen Sie DICOM gebrannte Textentfernung aus, um zu konfigurieren, wie die Bildentfernung während der De-Identifikation durchgeführt wird. Sie können die Image-Entfernung wie folgt konfigurieren:

  6. Klicken Sie auf De-identifizieren, um die Daten im Dataset zu de-identifizieren.

Entfernen von eingebranntem Text aus Bildern

Die Cloud Healthcare API kann sensiblen eingebrannten Text aus Bildern entfernen. Sensible Daten wie PHI werden von der API erkannt, die sie dann mit einem undurchsichtigen Rechteck verdeckt. Die API gibt dieselben DICOM-Bilder in demselben Format zurück, aber alle Texte, die gemäß Ihren Kriterien vertrauliche Informationen enthalten, werden entfernt.

Sie können eingebrannten Text aus Bildern entfernen, indem Sie in einem ImageConfig-Objekt die Option TextRedactionMode angeben. Mögliche Werte finden Sie in der TextRedactionMode-Dokumentation.

Entfernen des gesamten eingebrannten Texts aus einem Bild

In den folgenden Beispielen wird gezeigt, wie Sie den gesamten eingebrannten Text aus DICOM-Bildern in einem Dataset entfernen. Geben Sie dazu REDACT_ALL_TEXT im Feld TextRedactionMode an.

Nachdem das Bild mit der Option REDACT_ALL_TEXT an die Cloud Healthcare API gesendet wurde, sieht es so aus: Während der eingebrannte Text unten im Bild entfernt wurde, bleiben die Metadaten in den oberen Ecken des Bildes erhalten. Informationen zum Entfernen der Metadaten finden Sie unter De-identify-DICOM-Tags.

xray_redact_all_text

REST

  1. De-identifizieren Sie das Dataset.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
    • LOCATION ist der Standort des Datasets
    • SOURCE_DATASET_ID: die ID des Datasets mit den Daten, die de-identifiziert werden sollen.
    • DESTINATION_DATASET_ID: ID des Ziel-Datasets, in das de-identifizierte Daten geschrieben werden

    JSON-Text anfordern:

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

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

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

    Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

    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

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

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

    Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

    $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
    Die Ausgabe sieht so aus. Die Antwort enthält eine Kennung für einen Vorgang mit langer Ausführungszeit. Lang andauernde Vorgänge werden zurückgegeben, wenn die Ausführung von Methodenaufrufen sehr lange dauern kann. Notieren Sie sich den Wert von OPERATION_ID. Sie benötigen diesen Wert im nächsten Schritt.

  2. Mit der Methode projects.locations.datasets.operations.get können Sie den Status des Vorgangs mit langer Ausführungszeit abrufen.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID: die ID Ihres Google Cloud-Projekts
    • DATASET_ID: die Dataset-ID
    • LOCATION: der Standort des Datasets
    • OPERATION_ID: die ID, die vom Vorgang mit langer Ausführungszeit zurückgegeben wurde

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Führen Sie folgenden Befehl aus:

    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

    Führen Sie folgenden Befehl aus:

    $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

    APIs Explorer

    Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

    Die Ausgabe sieht so aus. Wenn die Antwort "done": true enthält, ist der Vorgang mit langer Ausführungszeit abgeschlossen.
  3. Nach erfolgreicher De-Identifikation können Sie die Metadaten für die de-identifizierte Instanz abrufen, um zu sehen, wie sie geändert wurde. Die de-identifizierte Instanz hat eine neue Studien-UID, Serien-UID und Instanz-UID. Daher müssen Sie zuerst im neuen Dataset nach der de-identifizierten Instanz suchen.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
    • SOURCE_DATASET_LOCATION: Speicherort des Quell-Datasets
    • DESTINATION_DATASET_ID: ID des Ziel-Datasets, in das de-identifizierte Daten geschrieben werden
    • DESTINATION_DICOM_STORE_ID: die ID des DICOM-Speichers im Ziel-Dataset. Dies entspricht der ID des DICOM-Speichers im Quell-Dataset.

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Führen Sie folgenden Befehl aus:

    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

    Führen Sie folgenden Befehl aus:

    $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

    APIs Explorer

    Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

    Sie sollten in etwa folgende JSON-Antwort erhalten:

    Die folgende Tabelle zeigt, wie sich die UID der Studie, die Serien-UID und die Instanz-UID geändert haben:
      Metadaten der ursprünglichen Instanz De-identifizierte Instanzmetadaten
    Studien-UID (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    Serien-UID (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    Instanz-UID (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029

Nur sensiblen eingebrannten Text aus einem Bild entfernen

Die folgenden Beispiele zeigen, wie Sie sensiblen eingebrannten Text aus DICOM-Bildern in einem Dataset entfernen. Geben Sie dazu REDACT_SENSITIVE_TEXT im Feld TextRedactionMode an.

Die in den Standard-DICOM-infoTypes angegebenen infoTypes werden entfernt, wenn REDACT_SENSITIVE_TEXT angegeben ist. Es wird auch ein zusätzlicher benutzerdefinierter infoType für Patienten-IDs (Medical Record Numbers, MRN) angewendet und die Patientenkennung entfernt.

In der folgenden Abbildung sehen Sie eine nicht korrigierte Aufnahme eines Patienten:

xray2_unredacted

Nachdem Sie das Bild mit der Option REDACT_SENSITIVE_TEXT an die Cloud Healthcare API gesendet haben, wird es wie folgt angezeigt:

xray2_redact_sensitive_text

Folgendes ist aufgetreten:

  • Das PERSON_NAME unten links im Bild wurde entfernt.
  • Das DATE unten links im Bild wurde entfernt.

Das Geschlecht des Patienten wurde nicht entfernt, da dies gemäß den Standard-DICOM-infos nicht als sensibler Text gilt.

REST

  1. De-identifizieren Sie das Dataset.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
    • LOCATION ist der Standort des Datasets
    • SOURCE_DATASET_ID: die ID des Datasets mit den Daten, die de-identifiziert werden sollen.
    • DESTINATION_DATASET_ID: ID des Ziel-Datasets, in das de-identifizierte Daten geschrieben werden

    JSON-Text anfordern:

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

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

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

    Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

    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

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

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

    Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

    $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
    Die Ausgabe sieht so aus. Die Antwort enthält eine Kennung für einen Vorgang mit langer Ausführungszeit. Lang andauernde Vorgänge werden zurückgegeben, wenn die Ausführung von Methodenaufrufen sehr lange dauern kann. Notieren Sie sich den Wert von OPERATION_ID. Sie benötigen diesen Wert im nächsten Schritt.

  2. Mit der Methode projects.locations.datasets.operations.get können Sie den Status des Vorgangs mit langer Ausführungszeit abrufen.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID: die ID Ihres Google Cloud-Projekts
    • DATASET_ID: die Dataset-ID
    • LOCATION: der Standort des Datasets
    • OPERATION_ID: die ID, die vom Vorgang mit langer Ausführungszeit zurückgegeben wurde

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Führen Sie folgenden Befehl aus:

    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

    Führen Sie folgenden Befehl aus:

    $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

    APIs Explorer

    Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

    Die Ausgabe sieht so aus. Wenn die Antwort "done": true enthält, ist der Vorgang mit langer Ausführungszeit abgeschlossen.
  3. Nach erfolgreicher De-Identifikation können Sie die Metadaten für die de-identifizierte Instanz abrufen, um zu sehen, wie sie geändert wurde. Die de-identifizierte Instanz hat eine neue Studien-UID, Serien-UID und Instanz-UID. Daher müssen Sie zuerst im neuen Dataset nach der de-identifizierten Instanz suchen.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
    • SOURCE_DATASET_LOCATION: Speicherort des Quell-Datasets
    • DESTINATION_DATASET_ID: ID des Ziel-Datasets, in das de-identifizierte Daten geschrieben werden
    • DESTINATION_DICOM_STORE_ID: die ID des DICOM-Speichers im Ziel-Dataset. Dies entspricht der ID des DICOM-Speichers im Quell-Dataset.

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Führen Sie folgenden Befehl aus:

    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

    Führen Sie folgenden Befehl aus:

    $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

    APIs Explorer

    Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

    Sie sollten in etwa folgende JSON-Antwort erhalten:

    Die folgende Tabelle zeigt, wie sich die UID der Studie, die Serien-UID und die Instanz-UID geändert haben:
      Metadaten der ursprünglichen Instanz De-identifizierte Instanzmetadaten
    Studien-UID (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    Serien-UID (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    Instanz-UID (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029

Kombination aus der Tag-De-Identifikation und der eingebrannten Textentfernung

Sie können die De-Identifikation mithilfe von Tags mit der Entfernung von eingebranntem Text aus Bildern kombinieren, um DICOM-Instanzen detaillierter zu de-identifizieren. Kombinieren Sie beispielsweise REDACT_ALL_TEXT im Feld TextRedactionMode mit DEIDENTIFY_TAG_CONTENTS in TagFilterProfile, um Folgendes zu tun:

  • REDACT_ALL_TEXT: Sämtlichen eingebrannten Text im Bild entfernen.
  • DEIDENTIFY_TAG_CONTENTS: Tag-Inhalt überprüfen und sensiblen Text umwandeln Weitere Informationen zum Verhalten von DEIDENTIFY_TAG_CONTENTS finden Sie unter Standardkonfiguration.

Nachdem Sie das Image mit den Optionen REDACT_ALL_TEXT und DEIDENTIFY_TAG_CONTENTS an die Cloud Healthcare API gesendet haben, wird das Bild wie folgt angezeigt. Beachten Sie die folgenden Änderungen:

  • Die Namen in der oberen linken und rechten oberen Ecke des Bildes wurden mit einem CryptoHashConfig transformiert.
  • Die Datumsangaben in der oberen linken und rechten oberen Ecke des Bildes wurden mit einem DateShiftConfig transformiert.
  • Der eingebrannte Text am unteren Rand des Bildes wird entfernt.

xray_redact_all_text_deidentify_tag_contents

REST

  1. De-identifizieren Sie das Dataset.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
    • LOCATION ist der Standort des Datasets
    • SOURCE_DATASET_ID: die ID des Datasets mit den Daten, die de-identifiziert werden sollen.
    • DESTINATION_DATASET_ID: ID des Ziel-Datasets, in das de-identifizierte Daten geschrieben werden

    JSON-Text anfordern:

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

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

    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

    Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

    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

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

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

    Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

    $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
    Die Ausgabe sieht so aus. Die Antwort enthält eine Kennung für einen Vorgang mit langer Ausführungszeit. Lang andauernde Vorgänge werden zurückgegeben, wenn die Ausführung von Methodenaufrufen sehr lange dauern kann. Notieren Sie sich den Wert von OPERATION_ID. Sie benötigen diesen Wert im nächsten Schritt.

  2. Mit der Methode projects.locations.datasets.operations.get können Sie den Status des Vorgangs mit langer Ausführungszeit abrufen.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID: die ID Ihres Google Cloud-Projekts
    • DATASET_ID: die Dataset-ID
    • LOCATION: der Standort des Datasets
    • OPERATION_ID: die ID, die vom Vorgang mit langer Ausführungszeit zurückgegeben wurde

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Führen Sie folgenden Befehl aus:

    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

    Führen Sie folgenden Befehl aus:

    $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

    APIs Explorer

    Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

    Die Ausgabe sieht so aus. Wenn die Antwort "done": true enthält, ist der Vorgang mit langer Ausführungszeit abgeschlossen.
  3. Nach erfolgreicher De-Identifikation können Sie die Metadaten für die de-identifizierte Instanz abrufen, um zu sehen, wie sie geändert wurde. Die de-identifizierte Instanz hat eine neue Studien-UID, Serien-UID und Instanz-UID. Daher müssen Sie zuerst im neuen Dataset nach der de-identifizierten Instanz suchen.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
    • SOURCE_DATASET_LOCATION: Speicherort des Quell-Datasets
    • DESTINATION_DATASET_ID: ID des Ziel-Datasets, in das de-identifizierte Daten geschrieben werden
    • DESTINATION_DICOM_STORE_ID: die ID des DICOM-Speichers im Ziel-Dataset. Dies entspricht der ID des DICOM-Speichers im Quell-Dataset.

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Führen Sie folgenden Befehl aus:

    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

    Führen Sie folgenden Befehl aus:

    $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

    APIs Explorer

    Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

    Sie sollten in etwa folgende JSON-Antwort erhalten:

  4. Rufen Sie mit den neuen Werten die Metadaten für die Instanz ab.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
    • LOCATION ist der Standort des Datasets
    • DESTINATION_DATASET_ID: ID des Ziel-Datasets, in das de-identifizierte Daten geschrieben werden
    • DESTINATION_DICOM_STORE_ID: die ID des DICOM-Speichers im Ziel-Dataset. Dies entspricht der ID des DICOM-Speichers im Quell-Dataset.

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Führen Sie folgenden Befehl aus:

    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

    Führen Sie folgenden Befehl aus:

    $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

    APIs Explorer

    Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

    Die Ausgabe enthält die neuen Metadaten. Sie können die neuen Metadaten mit den ursprünglichen Metadaten vergleichen, um die Auswirkungen der Transformation zu sehen.

infoTypes und primitive Transformationen mit DICOM-Tags verwenden

Die Cloud Healthcare API kann Informationstypen verwenden, um zu definieren, welche Daten bei der De-Identifikation von Tags durchsucht werden. Ein infoType ist ein Typ sensibler Daten wie Patientenname, E-Mail-Adresse, Telefonnummer, Sozialversicherungsnummer oder Kreditkartennummer.

Primitive Transformationen sind Regeln, die Sie zum Transformieren eines Eingabewerts verwenden. Sie können die De-Identifizierung von DICOM-Tags anpassen, indem Sie eine einfache Transformation auf den infoType jedes Tags anwenden. Sie können beispielsweise den Nachnamen eines Patienten de-identifizieren und durch eine Reihe von Sternchen ersetzen, indem Sie den infoType LAST_NAME mit der primitiven einfachen Transformation CharacterMaskConfig angeben.

Standard-DICOM-InfoTypen

Für die De-Identifikation von Metadaten werden standardmäßig die folgenden DICOM-infoTypes verwendet:

  • 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

Wenn Sie sensiblen Text in Bildern mit REDACT_SENSITIVE_TEXT de-identifizieren, verwendet die Cloud Healthcare API die obigen infoTypes, aber ein zusätzlicher benutzerdefinierter infoType für Patienten-IDs, z. B. Krankenaktennummern, wird auch auf sensiblen Text im Bild angewendet.

Einfache Transformationsoptionen

Die einfachen Transformationsoptionen der Cloud Healthcare API umfassen:

  • RedactConfig: Entfernt einen Wert.
  • CharacterMaskConfig: Maskiert einen String vollständig oder teilweise, indem er die Eingabezeichen durch ein festgelegtes festes Zeichen ersetzt.
  • DateShiftConfig: Verschiebt Datumsangaben um eine zufällige Anzahl von Tagen, wobei die Option der Einheitlichkeit in demselben Kontext besteht.
  • CryptoHashConfig: Verwendet SHA-256, um Eingabewerte durch eine base64-codierte Darstellung eines gehashten Ausgabestrings zu ersetzen, der mit einem bestimmten Datenverschlüsselungsschlüssel generiert wurde.
  • ReplaceWithInfoTypeConfig: Ersetzt einen Eingabewert durch den Namen seines infoType.

Konfigurationen in TextConfig angeben

InfoTypes und einfache Transformationen werden in einem InfoTypeTransformation angegeben, einem Objekt innerhalb von TextConfig. InfoTypes werden als kommagetrennte Werte in das Array infoTypes eingegeben.

Die Angabe eines infoType ist optional. Wenn Sie nicht mindestens einen infoType angeben, gilt die Transformation für die Standard-DICOM-infoTypes, die in der Cloud Healthcare API gefunden werden.

Wenn Sie in InfoTypeTransformation infoTypes angeben, müssen Sie mindestens eine einfache Transformation angeben.

Sie können InfoTypeTransformation nur auf das Profil DEIDENTIFY_TAG_CONTENTS anwenden. Ein InfoTypeTransformation kann nicht auf die anderen in TagFilterProfile aufgeführten Profile angewendet werden.

In den folgenden Abschnitten wird gezeigt, wie Sie die in InfoTypeTransformation verfügbaren einfachen Transformationen zusammen mit infoTypes verwenden, um die De-Identifizierung von DICOM-Tags anzupassen. In den Beispielen wird das in der Beispielübersicht bereitgestellte Beispielbild und die Beispielmetadaten unter DICOM-Tags de-identifizieren verwendet.

Standardkonfiguration

Wenn das DEIDENTIFY_TAG_CONTENTS-Profil ohne Konfiguration im TextConfig-Objekt festgelegt wird, ersetzt die Cloud Healthcare API standardmäßig sensible Daten mithilfe der standardmäßigen DICOM-infoTypes. Es gibt jedoch ein anderes Verhalten für die infoTypes DATE und PERSON_NAME, wie unten gezeigt:

  • Ein DateShiftConfig wird auf Text angewendet, der als DATE-infoType klassifiziert ist. Die Methode DateShiftConfig verwendet eine Datumsverschiebung mit einer Differenz von 100 Tagen.
  • Ein CryptoHashConfig wird auf Text angewendet, der als PERSON_NAME-infoType klassifiziert ist. Der CryptoHashConfig führt eine Tokenisierung durch, indem er einen Ersatzwert mithilfe von kryptografischem Hash generiert.

Das folgende Verhalten gilt auch für:

  • Alle Patientenarten, deren Wert größer oder gleich 90 ist und in 90 umgewandelt werden.
  • Wenn eine Transformation aufgrund von DICOM-Formatbeschränkungen nicht angewendet werden kann, wird ein Platzhalterwert angegeben, der der Wertdarstellung (VR) des Tags entspricht.
  • Alle anderen Werte, die einem der Standard-DICOM-infos in der Cloud Healthcare API entsprechen, werden durch ihren infoType ersetzt. Wenn das PatientComments-Tag beispielsweise den String "Ann Schmidt ging zu Anytown Krankenhäuser" enthält, wird "Anytown" durch den infoType LOCATION ersetzt.

Die folgenden Beispiele zeigen die Ausgabe der Verwendung des Standardprofils DEIDENTIFY_TAG_CONTENTS für ein Dataset mit DICOM-Speichern und DICOM-Daten. Sie können diese Standardausgabe mit den Ausgaben vergleichen, wenn Sie die verschiedenen einfachen Transformationen mit infoType-Kombinationen verwenden. In den Beispielen wird eine einzelne DICOM-Instanz verwendet, Sie können jedoch mehrere Instanzen de-identifizieren.

Nachdem Sie das Image mit dem Profil DEIDENTIFY_TAG_CONTENTS an die Cloud Healthcare API gesendet haben, wird das Image wie folgt angezeigt. Beachten Sie die folgenden Änderungen:

  • Die Namen in der oberen linken und rechten oberen Ecke des Bildes wurden mit einem CryptoHashConfig transformiert.
  • Die Datumsangaben in der oberen linken und rechten oberen Ecke des Bildes wurden mit einem DateShiftConfig transformiert.

dicom_infotype_default

REST

  1. De-identifizieren Sie das Dataset.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
    • LOCATION ist der Standort des Datasets
    • SOURCE_DATASET_ID: die ID des Datasets mit den Daten, die de-identifiziert werden sollen.
    • DESTINATION_DATASET_ID: ID des Ziel-Datasets, in das de-identifizierte Daten geschrieben werden

    JSON-Text anfordern:

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

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

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

    Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

    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

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

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

    Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

    $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
    Die Ausgabe sieht so aus. Die Antwort enthält eine Kennung für einen Vorgang mit langer Ausführungszeit. Lang andauernde Vorgänge werden zurückgegeben, wenn die Ausführung von Methodenaufrufen sehr lange dauern kann. Notieren Sie sich den Wert von OPERATION_ID. Sie benötigen diesen Wert im nächsten Schritt.

  2. Mit der Methode projects.locations.datasets.operations.get können Sie den Status des Vorgangs mit langer Ausführungszeit abrufen.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID: die ID Ihres Google Cloud-Projekts
    • DATASET_ID: die Dataset-ID
    • LOCATION: der Standort des Datasets
    • OPERATION_ID: die ID, die vom Vorgang mit langer Ausführungszeit zurückgegeben wurde

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Führen Sie folgenden Befehl aus:

    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

    Führen Sie folgenden Befehl aus:

    $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

    APIs Explorer

    Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

    Die Ausgabe sieht so aus. Wenn die Antwort "done": true enthält, ist der Vorgang mit langer Ausführungszeit abgeschlossen.
  3. Nach erfolgreicher De-Identifikation können Sie die Metadaten für die de-identifizierte Instanz abrufen, um zu sehen, wie sie geändert wurde. Die de-identifizierte Instanz hat eine neue Studien-UID, Serien-UID und Instanz-UID. Daher müssen Sie zuerst im neuen Dataset nach der de-identifizierten Instanz suchen.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
    • SOURCE_DATASET_LOCATION: Speicherort des Quell-Datasets
    • DESTINATION_DATASET_ID: ID des Ziel-Datasets, in das de-identifizierte Daten geschrieben werden
    • DESTINATION_DICOM_STORE_ID: die ID des DICOM-Speichers im Ziel-Dataset. Dies entspricht der ID des DICOM-Speichers im Quell-Dataset.

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Führen Sie folgenden Befehl aus:

    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

    Führen Sie folgenden Befehl aus:

    $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

    APIs Explorer

    Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

    Sie sollten in etwa folgende JSON-Antwort erhalten:

  4. Rufen Sie mit den neuen Werten die Metadaten für die Instanz ab.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
    • LOCATION ist der Standort des Datasets
    • DESTINATION_DATASET_ID: ID des Ziel-Datasets, in das de-identifizierte Daten geschrieben werden
    • DESTINATION_DICOM_STORE_ID: die ID des DICOM-Speichers im Ziel-Dataset. Dies entspricht der ID des DICOM-Speichers im Quell-Dataset.

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Führen Sie folgenden Befehl aus:

    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

    Führen Sie folgenden Befehl aus:

    $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

    APIs Explorer

    Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

    Die Ausgabe enthält die neuen Metadaten. Sie können die neuen Metadaten mit den ursprünglichen Metadaten vergleichen, um die Auswirkungen der Transformation zu sehen.

RedactConfig

Wenn Sie redactConfig angeben, wird ein bestimmter Wert vollständig entfernt. Die redactConfig-Meldung hat keine Argumente. Allein dadurch, dass sie angegeben wird, wird ihre Transformation aktiviert.

Die folgenden Beispiele erweitern die Standardkonfiguration, enthalten jetzt jedoch den infoType PERSON_NAME mit der Transformation redactConfig. Wenn Sie diese Anfrage senden, werden alle Namen aus der DICOM-Instanz entfernt.

Nachdem Sie das Bild mit der Transformation redactConfig an die Cloud Healthcare API gesendet haben, wird das Bild wie folgt angezeigt:

dicom_redactconfig

REST

  1. De-identifizieren Sie das Dataset.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
    • LOCATION ist der Standort des Datasets
    • SOURCE_DATASET_ID: die ID des Datasets mit den Daten, die de-identifiziert werden sollen.
    • DESTINATION_DATASET_ID: ID des Ziel-Datasets, in das de-identifizierte Daten geschrieben werden

    JSON-Text anfordern:

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

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

    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

    Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

    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

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

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

    Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

    $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
    Die Ausgabe sieht so aus. Die Antwort enthält eine Kennung für einen Vorgang mit langer Ausführungszeit. Lang andauernde Vorgänge werden zurückgegeben, wenn die Ausführung von Methodenaufrufen sehr lange dauern kann. Notieren Sie sich den Wert von OPERATION_ID. Sie benötigen diesen Wert im nächsten Schritt.

  2. Mit der Methode projects.locations.datasets.operations.get können Sie den Status des Vorgangs mit langer Ausführungszeit abrufen.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID: die ID Ihres Google Cloud-Projekts
    • DATASET_ID: die Dataset-ID
    • LOCATION: der Standort des Datasets
    • OPERATION_ID: die ID, die vom Vorgang mit langer Ausführungszeit zurückgegeben wurde

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Führen Sie folgenden Befehl aus:

    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

    Führen Sie folgenden Befehl aus:

    $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

    APIs Explorer

    Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

    Die Ausgabe sieht so aus. Wenn die Antwort "done": true enthält, ist der Vorgang mit langer Ausführungszeit abgeschlossen.
  3. Nach erfolgreicher De-Identifikation können Sie die Metadaten für die de-identifizierte Instanz abrufen, um zu sehen, wie sie geändert wurde. Die de-identifizierte Instanz hat eine neue Studien-UID, Serien-UID und Instanz-UID. Daher müssen Sie zuerst im neuen Dataset nach der de-identifizierten Instanz suchen.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
    • SOURCE_DATASET_LOCATION: Speicherort des Quell-Datasets
    • DESTINATION_DATASET_ID: ID des Ziel-Datasets, in das de-identifizierte Daten geschrieben werden
    • DESTINATION_DICOM_STORE_ID: die ID des DICOM-Speichers im Ziel-Dataset. Dies entspricht der ID des DICOM-Speichers im Quell-Dataset.

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Führen Sie folgenden Befehl aus:

    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

    Führen Sie folgenden Befehl aus:

    $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

    APIs Explorer

    Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

    Sie sollten in etwa folgende JSON-Antwort erhalten:

  4. Rufen Sie mit den neuen Werten die Metadaten für die Instanz ab.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
    • LOCATION ist der Standort des Datasets
    • DESTINATION_DATASET_ID: ID des Ziel-Datasets, in das de-identifizierte Daten geschrieben werden
    • DESTINATION_DICOM_STORE_ID: die ID des DICOM-Speichers im Ziel-Dataset. Dies entspricht der ID des DICOM-Speichers im Quell-Dataset.

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Führen Sie folgenden Befehl aus:

    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

    Führen Sie folgenden Befehl aus:

    $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

    APIs Explorer

    Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

    Die Ausgabe enthält die neuen Metadaten. Sie können die neuen Metadaten mit den ursprünglichen Metadaten vergleichen, um die Auswirkungen der Transformation zu sehen.

Die Ausgabe zeigt, dass die Werte in ReferringPhysicianName (00080090) und PatientName (00100010) entfernt wurden. Dies steht im Gegensatz zum Beispiel in der Standardkonfiguration, in der diese Werte mithilfe von kryptografischem Hashing umgewandelt wurden.

CharacterMaskConfig

Wenn Sie characterMaskConfig angeben, werden Strings ersetzt, die den angegebenen infoTypes durch ein festgelegtes Zeichen entsprechen. Anstatt beispielsweise den Namen eines Patienten zu entfernen oder mithilfe von kryptografischem Hashing zu transformieren, können Sie den Namen durch eine Reihe von Sternchen (*) ersetzen. Sie können das feste Zeichen als Wert im Feld maskingCharacter angeben.

Die folgenden Beispiele erweitern die Standardkonfiguration, enthalten jetzt jedoch den infoType LAST_NAME mit der Transformation characterMaskConfig. Es wird kein festes Zeichen bereitgestellt, sodass die Maskierung standardmäßig auf Sternchen gesetzt wird.

Die Beispiele verwenden eine einzelne DICOM-Instanz, aber Sie können mehrere Instanzen de-identifizieren.

Nachdem Sie das Bild mit der Transformation characterMaskConfig an die Cloud Healthcare API gesendet haben, wird das Bild wie folgt angezeigt:

dicom_charactermaskconfig

REST

  1. De-identifizieren Sie das Dataset.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
    • LOCATION ist der Standort des Datasets
    • SOURCE_DATASET_ID: die ID des Datasets mit den Daten, die de-identifiziert werden sollen.
    • DESTINATION_DATASET_ID: ID des Ziel-Datasets, in das de-identifizierte Daten geschrieben werden

    JSON-Text anfordern:

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

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

    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

    Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

    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

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

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

    Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

    $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
    Die Ausgabe sieht so aus. Die Antwort enthält eine Kennung für einen Vorgang mit langer Ausführungszeit. Lang andauernde Vorgänge werden zurückgegeben, wenn die Ausführung von Methodenaufrufen sehr lange dauern kann. Notieren Sie sich den Wert von OPERATION_ID. Sie benötigen diesen Wert im nächsten Schritt.

  2. Mit der Methode projects.locations.datasets.operations.get können Sie den Status des Vorgangs mit langer Ausführungszeit abrufen.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID: die ID Ihres Google Cloud-Projekts
    • DATASET_ID: die Dataset-ID
    • LOCATION: der Standort des Datasets
    • OPERATION_ID: die ID, die vom Vorgang mit langer Ausführungszeit zurückgegeben wurde

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Führen Sie folgenden Befehl aus:

    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

    Führen Sie folgenden Befehl aus:

    $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

    APIs Explorer

    Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

    Die Ausgabe sieht so aus. Wenn die Antwort "done": true enthält, ist der Vorgang mit langer Ausführungszeit abgeschlossen.
  3. Nach erfolgreicher De-Identifikation können Sie die Metadaten für die de-identifizierte Instanz abrufen, um zu sehen, wie sie geändert wurde. Die de-identifizierte Instanz hat eine neue Studien-UID, Serien-UID und Instanz-UID. Daher müssen Sie zuerst im neuen Dataset nach der de-identifizierten Instanz suchen.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
    • SOURCE_DATASET_LOCATION: Speicherort des Quell-Datasets
    • DESTINATION_DATASET_ID: ID des Ziel-Datasets, in das de-identifizierte Daten geschrieben werden
    • DESTINATION_DICOM_STORE_ID: die ID des DICOM-Speichers im Ziel-Dataset. Dies entspricht der ID des DICOM-Speichers im Quell-Dataset.

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Führen Sie folgenden Befehl aus:

    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

    Führen Sie folgenden Befehl aus:

    $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

    APIs Explorer

    Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

    Sie sollten in etwa folgende JSON-Antwort erhalten:

  4. Rufen Sie mit den neuen Werten die Metadaten für die Instanz ab.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
    • LOCATION ist der Standort des Datasets
    • DESTINATION_DATASET_ID: ID des Ziel-Datasets, in das de-identifizierte Daten geschrieben werden
    • DESTINATION_DICOM_STORE_ID: die ID des DICOM-Speichers im Ziel-Dataset. Dies entspricht der ID des DICOM-Speichers im Quell-Dataset.

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Führen Sie folgenden Befehl aus:

    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

    Führen Sie folgenden Befehl aus:

    $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

    APIs Explorer

    Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

    Die Ausgabe enthält die neuen Metadaten. Sie können die neuen Metadaten mit den ursprünglichen Metadaten vergleichen, um die Auswirkungen der Transformation zu sehen.

Die Ausgabe zeigt, dass die Nachnamen in ReferringPhysicianName (00080090) und PatientName (00100010) durch Sternchen ersetzt wurden. Dies unterscheidet sich vom Beispiel in der Standardkonfiguration, wobei diese Werte mit kryptografischem Hashing umgewandelt wurden.

DateShiftConfig

Die Cloud Healthcare API kann Daten umwandeln, indem sie innerhalb eines vordefinierten Bereichs verschoben werden. Damit Datumstransformationen in allen De-Identifikationsausführungen konsistent bleiben, verwenden Sie DateShiftConfig mit einer der folgenden Optionen:

Sie müssen dem Dienstkonto Cloud Healthcare-Dienst-Agent eine Rolle mit der Berechtigung cloudkms.cryptoKeyVersions.useToDecrypt zuweisen, um den verpackten Cloud KMS-Schlüssel zu entschlüsseln. Wir empfehlen, die Rolle Cloud KMS CryptoKey-Entschlüsseler (roles/cloudkms.cryptoKeyDecrypter) zu verwenden. Wenn Sie Cloud KMS für kryptografische Vorgänge verwenden, fallen Gebühren an. Weitere Informationen finden Sie unter Cloud Key Management Service – Preise.

Die Cloud Healthcare-API verwendet diesen Schlüssel, um den Betrag zu berechnen, nach dem Datumsangaben (z. B. das Geburtsdatum eines Patienten) innerhalb von 100 Tagen verschoben werden.

Wenn Sie keinen Schlüssel angeben, generiert die Cloud Healthcare API bei jeder Ausführung des De-Identifizierungsvorgangs für Datumswerte einen eigenen Schlüssel. Das kann zu inkonsistenten Datumsausgaben zwischen Ausführungen führen.

Die folgenden Beispiele zeigen, wie Sie die infoTypes DATE und DATE_OF_BIRTH mit der Transformation DateShiftConfig für eine DICOM-Instanz festlegen. Nachdem die De-Identifikationsanfrage an die Cloud Healthcare API gesendet wurde, ändern sich die Datumswerte in der Instanz innerhalb von mehr oder weniger 100 Tagen nach ihren ursprünglichen Werten.

Der bereitgestellte Kryptoschlüssel U2FsdGVkX19bS2oZsdbK9X5zi2utBn22uY+I2Vo0zOU= ist ein AES-verschlüsselter base64-codierter 256-Bit-Rohschlüssel, der mit dem folgenden Befehl generiert wird. Bei entsprechender Aufforderung wird dem Befehl ein leeres Passwort bereitgestellt:

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

Nachdem Sie das Bild mit der Transformation dateShiftConfig an die Cloud Healthcare API gesendet haben, wird das Bild wie folgt angezeigt:

dicom_dateshiftconfig

REST

  1. De-identifizieren Sie das Dataset.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
    • LOCATION ist der Standort des Datasets
    • SOURCE_DATASET_ID: die ID des Datasets mit den Daten, die de-identifiziert werden sollen.
    • DESTINATION_DATASET_ID: ID des Ziel-Datasets, in das de-identifizierte Daten geschrieben werden

    JSON-Text anfordern:

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

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

    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

    Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

    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

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

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

    Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

    $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
    Die Ausgabe sieht so aus. Die Antwort enthält eine Kennung für einen Vorgang mit langer Ausführungszeit. Lang andauernde Vorgänge werden zurückgegeben, wenn die Ausführung von Methodenaufrufen sehr lange dauern kann. Notieren Sie sich den Wert von OPERATION_ID. Sie benötigen diesen Wert im nächsten Schritt.

  2. Mit der Methode projects.locations.datasets.operations.get können Sie den Status des Vorgangs mit langer Ausführungszeit abrufen.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID: die ID Ihres Google Cloud-Projekts
    • DATASET_ID: die Dataset-ID
    • LOCATION: der Standort des Datasets
    • OPERATION_ID: die ID, die vom Vorgang mit langer Ausführungszeit zurückgegeben wurde

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Führen Sie folgenden Befehl aus:

    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

    Führen Sie folgenden Befehl aus:

    $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

    APIs Explorer

    Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

    Die Ausgabe sieht so aus. Wenn die Antwort "done": true enthält, ist der Vorgang mit langer Ausführungszeit abgeschlossen.
  3. Nach erfolgreicher De-Identifikation können Sie die Metadaten für die de-identifizierte Instanz abrufen, um zu sehen, wie sie geändert wurde. Die de-identifizierte Instanz hat eine neue Studien-UID, Serien-UID und Instanz-UID. Daher müssen Sie zuerst im neuen Dataset nach der de-identifizierten Instanz suchen.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
    • SOURCE_DATASET_LOCATION: Speicherort des Quell-Datasets
    • DESTINATION_DATASET_ID: ID des Ziel-Datasets, in das de-identifizierte Daten geschrieben werden
    • DESTINATION_DICOM_STORE_ID: die ID des DICOM-Speichers im Ziel-Dataset. Dies entspricht der ID des DICOM-Speichers im Quell-Dataset.

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Führen Sie folgenden Befehl aus:

    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

    Führen Sie folgenden Befehl aus:

    $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

    APIs Explorer

    Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

    Sie sollten in etwa folgende JSON-Antwort erhalten:

  4. Rufen Sie mit den neuen Werten die Metadaten für die Instanz ab.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
    • LOCATION ist der Standort des Datasets
    • DESTINATION_DATASET_ID: ID des Ziel-Datasets, in das de-identifizierte Daten geschrieben werden
    • DESTINATION_DICOM_STORE_ID: die ID des DICOM-Speichers im Ziel-Dataset. Dies entspricht der ID des DICOM-Speichers im Quell-Dataset.

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Führen Sie folgenden Befehl aus:

    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

    Führen Sie folgenden Befehl aus:

    $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

    APIs Explorer

    Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

    Die Ausgabe enthält die neuen Metadaten. Sie können die neuen Metadaten mit den ursprünglichen Metadaten vergleichen, um die Auswirkungen der Transformation zu sehen.

Die Ausgabe zeigt, dass StudyDate (00080020) und PatientBirthDate (00100030) neue Werte haben. Diese Transformationen erfolgten aufgrund der Kombination von 100 Tagen zwischen dem bereitgestellten cryptoKey-Wert. Die neuen Datumswerte für diese Instanz zwischen der De-Identifikation werden ausgeführt, solange derselbe cryptoKey bereitgestellt wird.

CryptoHashConfig

Sie können cryptoHashConfig leer lassen oder einen der folgenden Werte angeben:

Sie müssen dem Dienstkonto Cloud Healthcare-Dienst-Agent eine Rolle mit der Berechtigung cloudkms.cryptoKeyVersions.useToDecrypt zuweisen, um den verpackten Cloud KMS-Schlüssel zu entschlüsseln. Wir empfehlen, die Rolle Cloud KMS CryptoKey-Entschlüsseler (roles/cloudkms.cryptoKeyDecrypter) zu verwenden. Wenn Sie Cloud KMS für kryptografische Vorgänge verwenden, fallen Gebühren an. Weitere Informationen finden Sie unter Cloud Key Management Service – Preise.

Die Cloud Healthcare API kann Daten durch die Ersetzung von Werten durch kryptografische Hashes (auch als Ersatzwerte bezeichnet) transformieren. Geben Sie dazu eine Nachricht vom Typ cryptoHashConfig an.

Wenn Sie keinen Schlüssel angeben, generiert die Cloud Healthcare API einen Schlüssel. Die Cloud Healthcare API verwendet diesen Schlüssel, um Ersatzwerte zu generieren. Wenn Sie für jede Ausführung denselben Schlüssel angeben, generiert die Cloud Healthcare API konsistente Ersatzwerte. Wenn Sie keinen Schlüssel angeben, generiert die Cloud Healthcare API bei jeder Ausführung des Vorgangs einen neuen Schlüssel. Die Verwendung eines anderen Schlüssels liefert andere Ersatzwerte.

Die folgenden Beispiele zeigen, wie eine cryptoHashConfig-Transformation auf alle standardmäßigen DICOM-infoTypes angewendet wird, die von der Cloud Healthcare API unterstützt werden. Nach dem Senden der De-Identifizierungsanfrage werden die Werte mit einem entsprechenden DICOM-infoType in der Cloud Healthcare API durch Ersatzwerte ersetzt.

Das Beispiel zeigt auch, wie Sie einen Cryptokey bereitstellen, um zwischen De-Identifikationsausführungen konsistente Ersatzwerte zu generieren.

Der bereitgestellte Kryptoschlüssel U2FsdGVkX19bS2oZsdbK9X5zi2utBn22uY+I2Vo0zOU= ist ein AES-verschlüsselter base64-codierter 256-Bit-Rohschlüssel, der mit dem folgenden Befehl generiert wird. Bei entsprechender Aufforderung wird dem Befehl ein leeres Passwort bereitgestellt:

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

Nachdem Sie das Bild mit der Transformation cryptoHashConfig an die Cloud Healthcare API gesendet haben, wird das Bild wie folgt angezeigt:

dicom_cryptohashconfig

REST

  1. De-identifizieren Sie das Dataset.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
    • LOCATION ist der Standort des Datasets
    • SOURCE_DATASET_ID: die ID des Datasets mit den Daten, die de-identifiziert werden sollen.
    • DESTINATION_DATASET_ID: ID des Ziel-Datasets, in das de-identifizierte Daten geschrieben werden

    JSON-Text anfordern:

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

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

    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

    Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

    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

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

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

    Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

    $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
    Die Ausgabe sieht so aus. Die Antwort enthält eine Kennung für einen Vorgang mit langer Ausführungszeit. Lang andauernde Vorgänge werden zurückgegeben, wenn die Ausführung von Methodenaufrufen sehr lange dauern kann. Notieren Sie sich den Wert von OPERATION_ID. Sie benötigen diesen Wert im nächsten Schritt.

  2. Mit der Methode projects.locations.datasets.operations.get können Sie den Status des Vorgangs mit langer Ausführungszeit abrufen.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID: die ID Ihres Google Cloud-Projekts
    • DATASET_ID: die Dataset-ID
    • LOCATION: der Standort des Datasets
    • OPERATION_ID: die ID, die vom Vorgang mit langer Ausführungszeit zurückgegeben wurde

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Führen Sie folgenden Befehl aus:

    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

    Führen Sie folgenden Befehl aus:

    $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

    APIs Explorer

    Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

    Die Ausgabe sieht so aus. Wenn die Antwort "done": true enthält, ist der Vorgang mit langer Ausführungszeit abgeschlossen.
  3. Nach erfolgreicher De-Identifikation können Sie die Metadaten für die de-identifizierte Instanz abrufen, um zu sehen, wie sie geändert wurde. Die de-identifizierte Instanz hat eine neue Studien-UID, Serien-UID und Instanz-UID. Daher müssen Sie zuerst im neuen Dataset nach der de-identifizierten Instanz suchen.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
    • SOURCE_DATASET_LOCATION: Speicherort des Quell-Datasets
    • DESTINATION_DATASET_ID: ID des Ziel-Datasets, in das de-identifizierte Daten geschrieben werden
    • DESTINATION_DICOM_STORE_ID: die ID des DICOM-Speichers im Ziel-Dataset. Dies entspricht der ID des DICOM-Speichers im Quell-Dataset.

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Führen Sie folgenden Befehl aus:

    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

    Führen Sie folgenden Befehl aus:

    $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

    APIs Explorer

    Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

    Sie sollten in etwa folgende JSON-Antwort erhalten:

  4. Rufen Sie mit den neuen Werten die Metadaten für die Instanz ab.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
    • LOCATION ist der Standort des Datasets
    • DESTINATION_DATASET_ID: ID des Ziel-Datasets, in das de-identifizierte Daten geschrieben werden
    • DESTINATION_DICOM_STORE_ID: die ID des DICOM-Speichers im Ziel-Dataset. Dies entspricht der ID des DICOM-Speichers im Quell-Dataset.

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Führen Sie folgenden Befehl aus:

    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

    Führen Sie folgenden Befehl aus:

    $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

    APIs Explorer

    Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

    Die Ausgabe enthält die neuen Metadaten. Sie können die neuen Metadaten mit den ursprünglichen Metadaten vergleichen, um die Auswirkungen der Transformation zu sehen.

Die Transformationen in der Ausgabe sind für diese Instanz zwischen den De-Identifikationsvorgängen konsistent, sofern derselbe cryptoKey angegeben wird.

ReplaceWithInfoTypeConfig

Wenn Sie replaceWithInfoTypeConfig angeben, werden Eingabewerte durch den Namen des infoType des Werts ersetzt.

Die folgenden Beispiele zeigen, wie eine replaceWithInfoTypeConfig-Transformation auf alle standardmäßigen DICOM-infoTypes angewendet wird, die von der Cloud Healthcare API unterstützt werden. Die replaceWithInfoTypeConfig-Meldung hat keine Argumente. Allein dadurch, dass sie angegeben wird, wird ihre Transformation aktiviert.

Nachdem Sie das Bild mit der Transformation replaceWithInfoTypeConfig an die Cloud Healthcare API gesendet haben, wird das Bild wie folgt angezeigt:

dicom_replacewithinfotypeconfig

REST

  1. De-identifizieren Sie das Dataset.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
    • LOCATION ist der Standort des Datasets
    • SOURCE_DATASET_ID: die ID des Datasets mit den Daten, die de-identifiziert werden sollen.
    • DESTINATION_DATASET_ID: ID des Ziel-Datasets, in das de-identifizierte Daten geschrieben werden

    JSON-Text anfordern:

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

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

    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

    Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

    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

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

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

    Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

    $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
    Die Ausgabe sieht so aus. Die Antwort enthält eine Kennung für einen Vorgang mit langer Ausführungszeit. Lang andauernde Vorgänge werden zurückgegeben, wenn die Ausführung von Methodenaufrufen sehr lange dauern kann. Notieren Sie sich den Wert von OPERATION_ID. Sie benötigen diesen Wert im nächsten Schritt.

  2. Mit der Methode projects.locations.datasets.operations.get können Sie den Status des Vorgangs mit langer Ausführungszeit abrufen.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID: die ID Ihres Google Cloud-Projekts
    • DATASET_ID: die Dataset-ID
    • LOCATION: der Standort des Datasets
    • OPERATION_ID: die ID, die vom Vorgang mit langer Ausführungszeit zurückgegeben wurde

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Führen Sie folgenden Befehl aus:

    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

    Führen Sie folgenden Befehl aus:

    $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

    APIs Explorer

    Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

    Die Ausgabe sieht so aus. Wenn die Antwort "done": true enthält, ist der Vorgang mit langer Ausführungszeit abgeschlossen.
  3. Nach erfolgreicher De-Identifikation können Sie die Metadaten für die de-identifizierte Instanz abrufen, um zu sehen, wie sie geändert wurde. Die de-identifizierte Instanz hat eine neue Studien-UID, Serien-UID und Instanz-UID. Daher müssen Sie zuerst im neuen Dataset nach der de-identifizierten Instanz suchen.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
    • SOURCE_DATASET_LOCATION: Speicherort des Quell-Datasets
    • DESTINATION_DATASET_ID: ID des Ziel-Datasets, in das de-identifizierte Daten geschrieben werden
    • DESTINATION_DICOM_STORE_ID: die ID des DICOM-Speichers im Ziel-Dataset. Dies entspricht der ID des DICOM-Speichers im Quell-Dataset.

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Führen Sie folgenden Befehl aus:

    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

    Führen Sie folgenden Befehl aus:

    $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

    APIs Explorer

    Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

    Sie sollten in etwa folgende JSON-Antwort erhalten:

  4. Rufen Sie mit den neuen Werten die Metadaten für die Instanz ab.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
    • LOCATION ist der Standort des Datasets
    • DESTINATION_DATASET_ID: ID des Ziel-Datasets, in das de-identifizierte Daten geschrieben werden
    • DESTINATION_DICOM_STORE_ID: die ID des DICOM-Speichers im Ziel-Dataset. Dies entspricht der ID des DICOM-Speichers im Quell-Dataset.

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Führen Sie folgenden Befehl aus:

    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

    Führen Sie folgenden Befehl aus:

    $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

    APIs Explorer

    Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

    Die Ausgabe enthält die neuen Metadaten. Sie können die neuen Metadaten mit den ursprünglichen Metadaten vergleichen, um die Auswirkungen der Transformation zu sehen.

Daten auf DICOM-Speicherebene de-identifizieren

Die vorherigen Beispiele zeigen, wie DICOM-Daten auf Dataset-Ebene de-identifiziert werden. In diesem Abschnitt wird beschrieben, wie Sie Daten auf der DICOM-Speicherebene de-identifizieren.

Nehmen Sie die folgenden Änderungen vor, um eine Dataset-De-Identifizierungsanfrage in eine DICOM-Store-De-Identifizierungsanfrage zu ändern:

  • Ändern Sie destinationDataset im Anfragetext in destinationStore.
  • Fügen Sie dicomStores/DESTINATION_DICOM_STORE_ID am Ende des Werts in destinationStore hinzu, wenn Sie das Ziel angeben.
  • Fügen Sie dicomStores/SOURCE_DICOM_STORE_ID hinzu, wenn Sie den Speicherort der Quelldaten angeben.

Beispiel:

De-Identifikation auf Dataset-Ebene

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

DICOM-De-Identifikation auf Speicherebene

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

In den folgenden Beispielen wird das Thema De-Identifikation von Tags und das Entfernen von eingebranntem Text kombiniert erläutert. Die De-Identifikation erfolgt jedoch für einen einzelnen DICOM-Speicher und die de-identifizierten Daten werden in einen neuen DICOM-Speicher kopiert. Bevor die Beispiele ausgeführt werden, muss der von DESTINATION_DICOM_STORE_ID referenzierte DICOM-Speicher bereits vorhanden sein.

Console

Führen Sie die folgenden Schritte aus, um Daten in einem DICOM-Speicher mithilfe der Google Cloud Console zu de-identifizieren.

  1. Rufen Sie in der Google Cloud Console die Seite „Datasets” auf.

    Zu „Datasets“

  2. Klicken Sie auf das Dataset mit den Daten, die Sie de-identifizieren möchten.

  3. Wählen Sie in der Liste der DICOM-Speicher in der Liste Aktionen für den DICOM-Speicher, den Sie de-identifizieren möchten, die Option De-identifizieren aus.

    Die Seite DICOM-Speicher de-identifizieren wird angezeigt.

  4. Wählen Sie Zieldatenspeicher festlegen und das Dataset und den DICOM-Speicher aus, in dem die de-identifizierten Daten gespeichert werden.

  5. Wählen Sie DICOM-Tag-De-Identifikation aus, um zu konfigurieren, wie Daten de-identifiziert werden. Daten können folgendermaßen de-identifiziert werden:

  6. Wählen Sie DICOM gebrannte Textentfernung aus, um zu konfigurieren, wie die Bildentfernung während der De-Identifikation durchgeführt wird. Sie können die Image-Entfernung wie folgt konfigurieren:

  7. Klicken Sie auf De-identifizieren, um die Daten im DICOM-Speicher zu de-identifizieren.

REST

  1. De-identifizieren Sie das Dataset.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
    • LOCATION ist der Standort des Datasets
    • SOURCE_DATASET_ID: die ID des Datasets mit den Daten, die de-identifiziert werden sollen.
    • DESTINATION_DATASET_ID: ID des Ziel-Datasets, in das de-identifizierte Daten geschrieben werden
    • SOURCE_DICOM_STORE_ID: die ID des DICOM-Speichers, der die zu de-identifizierenden Daten enthält
    • DESTINATION_DICOM_STORE_ID: die ID des DICOM-Speichers im Ziel-Dataset

    JSON-Text anfordern:

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

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

    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

    Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

    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

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

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

    Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

    $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
    Die Ausgabe sieht so aus. Die Antwort enthält eine Kennung für einen Vorgang mit langer Ausführungszeit. Lang andauernde Vorgänge werden zurückgegeben, wenn die Ausführung von Methodenaufrufen sehr lange dauern kann. Notieren Sie sich den Wert von OPERATION_ID. Sie benötigen diesen Wert im nächsten Schritt.

  2. Mit der Methode projects.locations.datasets.operations.get können Sie den Status des Vorgangs mit langer Ausführungszeit abrufen.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID: die ID Ihres Google Cloud-Projekts
    • DATASET_ID: die Dataset-ID
    • LOCATION: der Standort des Datasets
    • OPERATION_ID: die ID, die vom Vorgang mit langer Ausführungszeit zurückgegeben wurde

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Führen Sie folgenden Befehl aus:

    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

    Führen Sie folgenden Befehl aus:

    $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

    APIs Explorer

    Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

    Die Ausgabe sieht so aus. Wenn die Antwort "done": true enthält, ist der Vorgang mit langer Ausführungszeit abgeschlossen.

Die Teilmenge eines DICOM-Speichers de-identifizieren

Um eine Teilmenge der Daten in einem DICOM-Speicher zu de-identifizieren geben Sie einen Filter an.

Der Filter hat die Form einer Filterdatei, die Sie als Wert für das Feld resourcePathsGcsUri im Objekt DicomFilterConfig angeben. Die Filterdatei muss in einem Cloud Storage-Bucket vorhanden sein. Sie können keine Filterdatei angeben, die auf Ihrem lokalen Computer oder einer anderen Quelle vorhanden ist. Der Speicherort der Datei muss das Format gs://BUCKET/PATH/TO/FILE haben.

Filterdatei erstellen

Eine Filterdatei definiert, welche DICOM-Dateien de-identifiziert werden sollen. Sie können Dateien auf den folgenden Ebenen filtern:

  • Auf der Studienebene
  • Für die Reihe
  • Auf Instanzebene

Die Filterdatei besteht aus einer Zeile pro Studie, Serie oder Instanz, die Sie de-identifizieren möchten. Jede Zeile hat das Format /studies/STUDY_UID[/series/SERIES_UID[/instances/INSTANCE_UID]]. Am Ende jeder Zeile befindet sich ein Zeilenvorschubzeichen: entweder \n oder \r\n.

Wenn in der Filterdatei, die Sie beim Aufrufen des De-Identifizierungsvorgangs übergeben haben, keine Studie, Serie oder Instanz angegeben ist, wird diese Studie, Serie oder Instanz nicht de-identifiziert und sie wird nicht im DICOM-Zielspeicher vorhanden sein.

Nur der Teil /studies/STUDY_UID des Pfads ist erforderlich. Dies bedeutet, dass Sie eine Studie durch Angabe von /studies/STUDY_UID de-identifizieren können, oder Sie können eine Reihe durch Angabe von /studies/STUDY_UID/series/SERIES_UID de-identifizieren.

Betrachten Sie die folgende Filterdatei. Die Filterdatei führt dazu, dass eine Studie, zwei Serien und drei einzelne Instanzen de-identifiziert werden:

/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

Filterdatei mit BigQuery erstellen

Normalerweise erstellen Sie eine Filterdatei, indem Sie zuerst die Metadaten aus einem DICOM-Speicher in BigQuery exportieren. Sie können BigQuery verwenden, um die Studien-, Series- und Instanz-UIDs der DICOM-Daten in Ihrem DICOM-Speicher anzuzeigen. Danach haben Sie folgende Möglichkeiten:

  1. Fragen Sie nach den Studien-, Serien- und Instanz-UIDs, die Sie interessieren. Nachdem Sie beispielsweise die Metadaten in BigQuery exportiert haben, können Sie die folgende Abfrage ausführen, um die Studien-, Serien- und Instanz-UIDs in einem Format zu verketten, das mit den Anforderungen der Filterdatei kompatibel ist:

    SELECT CONCAT
      ('/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID)
    FROM
      [PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE]
    
  2. Wenn die Abfrage eine große Ergebnismenge zurückgibt, können Sie eine neue Tabelle materialisieren, indem Sie die Abfrageergebnisse in einer Zieltabelle in BigQuery speichern.

  3. Nachdem Sie die Abfrageergebnisse in der Zieltabelle gespeichert haben, können Sie den Inhalt der Zieltabelle in einer Datei speichern und in Cloud Storage exportieren. Die erforderlichen Schritte finden Sie unter Tabellendaten exportieren. Die exportierte Datei ist Ihre Filterdatei. Sie verwenden den Speicherort der Filterdatei in Cloud Storage, wenn Sie den Filter im Exportvorgang angeben.

Filterdatei manuell erstellen

Sie können eine Filterdatei mit benutzerdefinierten Inhalten erstellen und diese in einen Cloud Storage-Bucket hochladen. Sie verwenden den Speicherort der Filterdatei in Cloud Storage, wenn Sie den Filter im De-Identifizierungsvorgang angeben. Im folgenden Beispiel wird gezeigt, wie Sie mit dem Befehl gsutil cp eine Filterdatei in einen Cloud Storage-Bucket hochladen:

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

Beispiel:

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

Filter verwenden

Nachdem Sie die Filterdatei konfiguriert haben, können Sie sie als Wert an das Feld resourcePathsGcsUri im Objekt filterConfig übergeben.

Das folgende Beispiel wird auf die De-Identifikation von Daten auf DICOM-Speicherebene erweitert. In Cloud Storage wird jedoch eine Filterdatei bereitgestellt, die bestimmt, welche DICOM-Ressourcen de-identifiziert werden.

REST

  1. De-identifizieren Sie das Dataset.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID ist die ID Ihres Google Cloud-Projekts
    • LOCATION ist der Standort des Datasets
    • SOURCE_DATASET_ID: die ID des Datasets mit den Daten, die de-identifiziert werden sollen.
    • DESTINATION_DATASET_ID: ID des Ziel-Datasets, in das de-identifizierte Daten geschrieben werden
    • SOURCE_DICOM_STORE_ID: die ID des DICOM-Speichers, der die zu de-identifizierenden Daten enthält
    • DESTINATION_DICOM_STORE_ID: die ID des DICOM-Speichers im Ziel-Dataset
    • BUCKET/PATH/TO/FILE ist der Speicherort der Filterdatei in einem Cloud Storage-Bucket

    JSON-Text anfordern:

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

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

    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

    Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

    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

    Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json. Führen Sie folgenden Befehl im Terminal aus, um diese Datei im aktuellen Verzeichnis zu erstellen oder zu überschreiben:

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

    Führen Sie dann folgenden Befehl aus, um Ihre REST-Anfrage zu senden:

    $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
    Die Ausgabe sieht so aus. Die Antwort enthält eine Kennung für einen Vorgang mit langer Ausführungszeit. Lang andauernde Vorgänge werden zurückgegeben, wenn die Ausführung von Methodenaufrufen sehr lange dauern kann. Notieren Sie sich den Wert von OPERATION_ID. Sie benötigen diesen Wert im nächsten Schritt.

  2. Mit der Methode projects.locations.datasets.operations.get können Sie den Status des Vorgangs mit langer Ausführungszeit abrufen.

    Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

    • PROJECT_ID: die ID Ihres Google Cloud-Projekts
    • DATASET_ID: die Dataset-ID
    • LOCATION: der Standort des Datasets
    • OPERATION_ID: die ID, die vom Vorgang mit langer Ausführungszeit zurückgegeben wurde

    Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

    curl

    Führen Sie folgenden Befehl aus:

    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

    Führen Sie folgenden Befehl aus:

    $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

    APIs Explorer

    Öffnen Sie die Methodenreferenzseite. Der API Explorer wird rechts auf der Seite geöffnet. Sie können mit diesem Tool interagieren, um Anfragen zu senden. Füllen Sie die Pflichtfelder aus und klicken Sie auf Ausführen.

    Die Ausgabe sieht so aus. Wenn die Antwort "done": true enthält, ist der Vorgang mit langer Ausführungszeit abgeschlossen.

Fehlerbehebung bei DICOM-De-Identifikationsvorgängen

Wenn Fehler während einer DICOM-De-Identifikation auftreten, werden die Fehler in Cloud Logging protokolliert. Weitere Informationen finden Sie unter Fehlerlogs in Cloud Logging ansehen.

Wenn der gesamte Vorgang einen Fehler zurückgibt, finden Sie weitere Informationen unter Fehlerbehebung bei Vorgängen mit langer Ausführungszeit.