Desidentificar dados DICOM usando DicomTagConfig

Esta página explica como usar o DicomTagConfig da v1beta1 na API Cloud Healthcare para desidentificar dados em instâncias DICOM nos seguintes níveis:

Esta página também explica como aplicar filtros ao desidentificar dados no nível do armazenamento DICOM.

É possível configurar operações de desidentificação DICOM usando o objeto DicomConfig da v1 legada ou a DicomTagConfig v1beta1 objeto. Recomendamos que você use DicomTagConfig.

Se você já usa DicomConfig para suas operações de desidentificação, recomendamos migrar para o DicomTagConfig. Para conferir um resumo dos novos recursos, consulte Novas opções de configuração no DicomTagConfig. Para instruções sobre como migrar, consulte Migrar solicitações e respostas para usar o DicomTagConfig.

Novas opções de configuração em DicomTagConfig

Desidentificar texto com desidentificação contextual

É possível configurar o DicomTagConfig.Options.CleanDescriptorsOption para permitir a desidentificação contextual de texto de metadados não estruturados. Essa opção é baseada Opção de limpar descritores. Quando você especifica DicomTagConfig.Options.CleanDescriptorsOption, um valor O infoType é usado durante a inspeção, o que pode afetar os custos de faturamento.

Como usar as transformações de opção DicomTagConfig.Options.CleanDescriptorsOption qualquer texto de metadados não estruturado que corresponda às tags removidas e, ao fazer isso, melhora a qualidade da desidentificação. Por exemplo, suponha desidentificando um raio-X, e o paciente raio-X tem um sobrenome que também é um substantivo, como Wall. Se houver metadados na instância, como o texto StudyDescription, contém a palavra Wall, o texto será transformado.

A opção CleanDescriptorsOption edita frases contextuais que correspondem a qualquer tag marcado para remoção no perfil base do DICOM desde que as tags correspondam a um dos seguintes códigos de ação:

  • D
  • Z
  • X
  • U

As frases contextuais correspondentes são substituídas pelo token [CTX].

Para configurar quais tags serão editadas, especifique o seguinte:

  • Um tipo enumerado no objeto ProfileType objeto. Não é necessário especificar um tipo enumerado.
  • O CleanTextTag filtrar por tags específicas.

No entanto, as tags usadas no perfil de base DICOM não podem ser alteradas.

Encobrir texto gravado com desidentificação contextual

É possível especificar a classe TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS enum para ativar a desidentificação contextual de texto gravado em uma imagem. Essa opção é baseada Opção de limpar descritores. Quando você especifica o TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS enum, um infoType extra é usado durante a inspeção, o que pode afetar custos de faturamento.

É possível especificar o TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS enum das seguintes maneiras:

A opção TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS edita texto acoplado que corresponda a qualquer tag marcado para remoção no perfil base do DICOM desde que as tags correspondam a um dos seguintes códigos de ação:

  • D
  • Z
  • X
  • U

Não há configuração adicional para a desidentificação contextual de texto gravado, além de ativá-lo ou desativá-lo usando um tipo enumerado no ProfileType objeto. Não é necessário especificar um tipo enumerado.

Outros infoTypes na desidentificação de imagens

Você pode usar tipos de informações (InfoTypes) especificar quais dados verificar ao realizar a desidentificação em tags. Um infoType é um tipo de dados confidenciais, como nome do paciente, endereço de e-mail, número de telefone, número de identificação ou número de cartão de crédito.

Você pode configurar os seguintes campos no DicomTagConfig.Options.ImageConfig para determinar quais infoTypes usar durante a desidentificação de imagem DICOM:

Esses campos só serão válidos se DicomTagConfig.Options.ImageConfig.TextRedactionMode estiver definido como um destes valores:

Migre solicitações e respostas para usar DicomTagConfig

É possível configurar a desidentificação do DICOM usando DicomTagConfig, que está disponível na API Cloud Healthcare v1beta1 e é uma alternativa ao uso do DicomConfig legado. Ao enviar uma solicitação, não é possível incluir DicomConfig e DicomTagConfig.

As seções abaixo descrevem as configurações do DicomConfig e como migrá-los para o DicomTagConfig.

TagFilterProfile a ProfileType

Substitua o DicomConfig TagFilterProfile. objeto com o DicomTagConfig ProfileType objeto. Os mesmos quatro perfis no TagFilterProfileType estão disponíveis em ProfileType.

O exemplo a seguir mostra como migrar uma solicitação usando TagFilterProfile. para usar ProfileType:

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

keepList e removeList

O DicomConfig keepList e removeList campos não estão mais disponíveis em DicomTagConfig. Se você usou keepList e removeList para especificar tags a serem mantidas ou removidas em vez de usar um perfil, você precisa migrar para o novo Action em que você especifica o comportamento da tag. O objeto Action fornece para transformar tags.

O exemplo a seguir mostra como migrar uma solicitação de keepList para usar Action.keepTag. A solicitação especifica que o valor do a tag PatientID é mantida durante a operação de desidentificação.

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

Combinar listas de manutenção, listas de remoção e perfis

No objeto DicomConfig, é possível determinar se você quer manter ou remover os dados. com base em listas de manutenção, listas de remoção e perfis. Essas opções são mutuamente exclusivas.

Ao usar o objeto DicomTagConfig, é possível combinar essas opções especificando quais tags manter e remover em uma Action ao mesmo tempo que especifica um perfil em ProfileType.

As opções configuradas no objeto Action substituem as configuradas no ProfileType. As opções no objeto Action se aplicam à ordem em que eles são fornecidos na solicitação.

skipIdRedaction a Objects.primaryIds

Substitua skipIdRedaction no objeto DicomConfig com o campo primaryIds no objeto DicomTagConfig. O campo primaryIds, que está na categoria Options objeto, contém um PrimaryIdsOption objeto em que você especifica um dos seguintes enums:

  • PRIMARY_IDS_OPTION_UNSPECIFIED: comportamento padrão quando nenhum valor é fornecido para PrimaryIdsOption. O padrão é a opção especificada em ProfileType.
  • KEEP: deixa os IDs primários inalterados.
  • REGEN: gere novamente os IDs principais.

O exemplo a seguir mostra como migrar uma solicitação de skipIdRedaction para usar Options.primaryIds. A solicitação especifica que os valores dos IDs principais são mantidos durante a operação de desidentificação:

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

DeidentifyConfig.ImageConfig a DicomTagConfig.Options.ImageConfig

Substitua o objeto DeidentifyConfig.ImageConfig pelo objeto DicomTagConfig.Options.ImageConfig. As opções no objeto ImageConfig são as mesmas nas duas versões.

O exemplo a seguir mostra como migrar uma solicitação usando um ImageConfig. em DeidentifyConfig.image para usar um ImageConfig em DeidentifyConfig.DicomTagConfig.Options.cleanImage. A solicitação especifica que todo o texto em uma imagem será encoberto durante operação de desidentificação:

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

Visão geral da desidentificação

Desidentificação no nível do conjunto de dados

Para desidentificar os dados DICOM no nível do conjunto de dados, chame o método datasets.deidentify . O método datasets.deidentify tem os seguintes componentes:

  • O conjunto de dados de origem: um conjunto de dados que contém DICOM armazena com uma ou mais instâncias que têm dados confidenciais. Quando você chama o método datasets.deidentify, todas as instâncias em todos os armazenamentos DICOM no conjunto de dados são desidentificadas.
  • Conjunto de dados de destino: a desidentificação afetar o conjunto de dados original ou os dados dele. Em vez disso, as cópias desidentificadas dos dados originais são gravadas em um novo conjunto de dados, chamado de conjunto de dados de destino.
  • O que desidentificar: parâmetros de configuração que especificam como processar os dados DICOM no conjunto de dados. É possível configurar a desidentificação do DICOM para desidentificar o DICOM metadados de instância (usando palavras-chave de tag) ou texto gravado em imagens DICOM por especificando esses parâmetros em uma classe DeidentifyConfig objeto.

A maioria dos exemplos deste guia mostra como desidentificar dados DICOM no nível do conjunto de dados.

Desidentificação no nível de armazenamento DICOM

A desidentificação de dados DICOM no nível do armazenamento DICOM permite que você tenha mais controle sobre quais dados são desidentificados. Por exemplo, se você tiver um conjunto de dados com vários armazenamentos DICOM, poderá desidentificar cada um deles de acordo com o tipo de dados existente no armazenamento.

Para desidentificar dados DICOM em um armazenamento de mesmo tipo, chame o método dicomStores.deidentify. O método dicomStores.deidentify tem os seguintes componentes:

  • O armazenamento DICOM de origem: um armazenamento DICOM contendo uma ou mais instâncias que têm dados confidenciais. Quando você chama a operação dicomStores.deidentify, todas as instâncias no armazenamento DICOM são desidentificadas.
  • O repositório DICOM de destino: a desidentificação não afetam o armazenamento DICOM original ou os dados dele. Em vez disso, as cópias desidentificadas dos dados originais são gravadas no armazenamento DICOM de destino. O armazenamento DICOM de destino já deve existir.
  • O que desidentificar: parâmetros de configuração que especificam como processar o repositório DICOM. É possível configurar a desidentificação do DICOM para desidentificar Metadados de instância DICOM (usando palavras-chave de tag) ou texto gravado em imagens DICOM especificando esses parâmetros em uma classe DeidentifyConfig objeto.

Para obter um exemplo de como desidentificar dados DICOM no nível do repositório DICOM, consulte Desidentificar dados no nível do armazenamento DICOM.

Filtros

Ao desidentificar dados DICOM no nível do repositório DICOM, é possível desidentificar um subconjunto dos dados no armazenamento DICOM configurando um filtro e especificando o arquivo na solicitação dicomStores.deidentify. Para um exemplo, consulte Desidentificar um subconjunto de um armazenamento DICOM.

Visão geral das amostras

Os exemplos deste guia usam uma única instância DICOM chamada dicom_deid_instance_sample.dcm, mas também é possível desidentificar várias instâncias. Para usar a amostra de DICOM nos exemplos desta página, faça o download do arquivo para sua máquina local e siga as instruções em Armazenar dados DICOM para armazená-lo em um armazenamento DICOM.

As seções a seguir mostram o que imagem na instância DICOM e os metadados na instância.

Imagem de amostra

Alguns exemplos nesta página contêm uma saída da imagem desidentificada. Cada amostra usa a seguinte imagem original como sua entrada. É possível comparar a imagem de saída de cada operação de desidentificação imagem original para conferir os efeitos da operação:

xray_original

Metadados de amostra

A maioria das amostras nesta página contém uma saída dos metadados alterados no Instância DICOM. Cada amostra usa os seguintes metadados originais como seu entrada. É possível comparar os metadados de saída de cada desidentificação nos metadados originais para ver os efeitos da desidentificação:

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

Editar texto gravado de imagens

É possível desidentificar texto gravado em imagens DICOM usando o ImageConfig objeto dentro de uma Action objeto. Dentro de ImageConfig, é possível especificar quais infoTypes incluir ou excluir e como encobrir texto usando o TextRedactionMode objeto.

Editar todo o texto

Os exemplos a seguir mostram como desidentificar uma instância DICOM definindo TextRedactionMode para REDACT_ALL_TEXT. Essa configuração edita todo o texto gravado na imagem.

REST

  1. Desidentifique o conjunto de dados.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
    • DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados

    Corpo JSON da solicitação:

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

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

    Depois execute o comando a seguir para enviar a solicitação REST:

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

    PowerShell

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

    Depois execute o comando a seguir para enviar a solicitação REST:

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

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content
    A saída é esta: A resposta contém um identificador para uma operação de longa duração (LRO, na sigla em inglês). Operações de longa duração são retornadas quando as chamadas de método podem levar mais tempo para serem concluídas. Anote o valor de OPERATION_ID. Você vai precisar desse valor na próxima etapa.

  2. Use o método projects.locations.datasets.operations.get para ver o status da operação de longa duração.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
    • OPERATION_ID: o ID retornado da operação de longa duração.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

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

    PowerShell

    execute o seguinte comando:

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

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

    APIs Explorer

    Abra o página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Preencha todos os campos obrigatórios e clique em Executar.

    A saída é esta: Quando a resposta contém "done": true, o operação de longa duração foi concluída.

  3. Depois que a desidentificação for concluída, você poderá recuperar os metadados do desidentificada para conferir como ela mudou. A instância desidentificada tem um novo UID de estudos, UID de série e UID de instâncias; portanto, primeiro você precisa pesquisar a instância desidentificada no novo conjunto de dados.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. É o mesmo que o ID do armazenamento DICOM no conjunto de dados de origem.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

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

    PowerShell

    execute o seguinte comando:

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

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

    Você receberá uma resposta JSON semelhante a esta:

    A tabela a seguir mostra como os UIDs de estudos, de série e de instâncias foram alterados:
      Metadados da instância original Metadados de instância desidentificados
    UID de estudos (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID da série (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    UID das instâncias (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. Usando os novos valores, recupere os metadados da instância.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. É o mesmo que o ID do armazenamento DICOM no conjunto de dados de origem.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

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

    PowerShell

    execute o seguinte comando:

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

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

    APIs Explorer

    Abra o página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Preencha todos os campos obrigatórios e clique em Executar.

    A saída contém os novos metadados. Você pode comparar os novos metadados com os originais para ver o efeito da transformação.

Depois de desidentificar a imagem usando REDACT_ALL_TEXT, a imagem esta aparência. Observe que todo o texto gravado na parte inferior imagem foi encoberta.

Figura 1. A instância DICOM após a desidentificação usando REDACT_ALL_TEXT.

Encobrir texto sensível com a opção "Limpar descritores"

Os exemplos a seguir mostram como desidentificar uma instância DICOM definindo TextRedactionMode para REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS.

Para mais informações sobre a opção CleanDescriptorsOption, consulte Desidentificar texto com desidentificação contextual.

REST

  1. Desidentifique o conjunto de dados.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
    • DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados

    Corpo JSON da solicitação:

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

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

    Depois execute o comando a seguir para enviar a solicitação REST:

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

    PowerShell

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

    Depois execute o comando a seguir para enviar a solicitação REST:

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

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content
    A saída é esta: A resposta contém um identificador para uma operação de longa duração (LRO, na sigla em inglês). Operações de longa duração são retornadas quando as chamadas de método podem levar mais tempo para serem concluídas. Anote o valor de OPERATION_ID. Você vai precisar desse valor na próxima etapa.

  2. Use o método projects.locations.datasets.operations.get para ver o status da operação de longa duração.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
    • OPERATION_ID: o ID retornado da operação de longa duração.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

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

    PowerShell

    execute o seguinte comando:

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

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

    APIs Explorer

    Abra o página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Preencha todos os campos obrigatórios e clique em Executar.

    A saída é esta: Quando a resposta contém "done": true, o operação de longa duração foi concluída.

  3. Depois que a desidentificação for concluída, você poderá recuperar os metadados do desidentificada para conferir como ela mudou. A instância desidentificada tem um novo UID de estudos, UID de série e UID de instâncias; portanto, primeiro você precisa pesquisar a instância desidentificada no novo conjunto de dados.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. É o mesmo que o ID do armazenamento DICOM no conjunto de dados de origem.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

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

    PowerShell

    execute o seguinte comando:

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

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

    Você receberá uma resposta JSON semelhante a esta:

    A tabela a seguir mostra como os UIDs de estudos, de série e de instâncias foram alterados:
      Metadados da instância original Metadados de instância desidentificados
    UID de estudos (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID da série (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    UID das instâncias (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. Usando os novos valores, recupere os metadados da instância.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. É o mesmo que o ID do armazenamento DICOM no conjunto de dados de origem.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

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

    PowerShell

    execute o seguinte comando:

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

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

    APIs Explorer

    Abra o página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Preencha todos os campos obrigatórios e clique em Executar.

    A saída contém os novos metadados. Você pode comparar os novos metadados com os originais para ver o efeito da transformação.

Depois de desidentificar a imagem usando REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS, a imagem esta aparência. Observe que nem todo o texto gravado na parte inferior imagem foi encoberta. O texto Female ainda é exibido, porque PatientSex (0010,0040) não é um dos InfoTypes DICOM padrão.

Figura 2. A instância DICOM após a desidentificação usando REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS.

Desidentificar tags DICOM

É possível desidentificar instâncias DICOM com base em palavras-chave de tag nos metadados DICOM.

Os seguintes métodos de filtragem de tags estão disponíveis na DicomTagConfig: Action objeto:

Você especifica cada opção Action como uma lista de IDs, nomes ou IDs de tag DICOM representações de valor (VRs, na sigla em inglês) e, em seguida, a opção realiza uma ação as tags na lista. Não é possível especificar mais de uma opção Action em uma lista de tags.

Cada objeto Action fornece uma lista queries[] em que você especifica uma lista de tags. Há suporte para os seguintes formatos de tag:

  • IDs de tag, como "00100010"
  • Nomes de tag, como "PatientName"
  • Representações de valor (VRs, na sigla em inglês), como "PN"

Não há limite para o número de tags que podem ser fornecidas na lista do queries[]. No entanto, cada tag só pode ter uma única opção Action. Para especificar tags diferentes com opções de Action diferentes, especifique vários objetos Action.

Manter tags

Para evitar que os valores das tags sejam editados, especifique o em um objeto KeepTag no DicomTagConfig objeto.

Para produzir um objeto DICOM válido ao usar um objeto KeepTag, especifique o MINIMAL_KEEP_LIST_PROFILE ou DEIDENTIFY_TAG_CONTENTS valores em ProfileType objeto.

Ao especificar um desses perfis, as seguintes tags são automaticamente mantidos, garantindo que a instância DICOM desidentificada seja um DICOM válido:

  • 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

Os valores de algumas das tags anteriores são gerados novamente, o que significa que os valores são substituídos por um valor diferente por meio de uma transformação determinística. Para mais informações, consulte Opção de retenção de UIDs no padrão DICOM.

Os valores de StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID e MediaStorageSOPInstanceUID são chamados de "IDs primários". Para determinar como os IDs principais são transformados, especifique um valor no PrimaryIdsOption

Os exemplos a seguir mostram como usar o objeto KeepTag para manter os valores de tags específicas inalteradas durante a desidentificação. A tag PatientName foi adicionada à lista queries[], então PatientName não é encoberto durante a desidentificação.

Como PrimaryIdsOption não está especificado na amostra, o campo primaryIds tem como padrão PRIMARY_IDS_OPTION_UNSPECIFIED, que tem como padrão como o valor em ProfileType. Como ProfileType também não está especificado, o campo profileType tem como padrão PROFILE_TYPE_UNSPECIFIED, o que remove com base no Perfil básico de confidencialidade do atributo (DICOM Standard Edition 2018e).

REST

  1. Desidentifique o conjunto de dados.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
    • DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados

    Corpo JSON da solicitação:

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

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

    Depois execute o comando a seguir para enviar a solicitação REST:

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

    PowerShell

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

    Depois execute o comando a seguir para enviar a solicitação REST:

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

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content
    A saída é esta: A resposta contém um identificador para uma operação de longa duração (LRO, na sigla em inglês). Operações de longa duração são retornadas quando as chamadas de método podem levar mais tempo para serem concluídas. Anote o valor de OPERATION_ID. Você vai precisar desse valor na próxima etapa.

  2. Use o método projects.locations.datasets.operations.get para ver o status da operação de longa duração.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
    • OPERATION_ID: o ID retornado da operação de longa duração.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

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

    PowerShell

    execute o seguinte comando:

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

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

    APIs Explorer

    Abra o página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Preencha todos os campos obrigatórios e clique em Executar.

    A saída é esta: Quando a resposta contém "done": true, o operação de longa duração foi concluída.

  3. Depois que a desidentificação for concluída, você poderá recuperar os metadados do desidentificada para conferir como ela mudou. A instância desidentificada tem um novo UID de estudos, UID de série e UID de instâncias; portanto, primeiro você precisa pesquisar a instância desidentificada no novo conjunto de dados.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. É o mesmo que o ID do armazenamento DICOM no conjunto de dados de origem.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

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

    PowerShell

    execute o seguinte comando:

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

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

    Você receberá uma resposta JSON semelhante a esta:

    A tabela a seguir mostra como os UIDs de estudos, de série e de instâncias foram alterados:
      Metadados da instância original Metadados de instância desidentificados
    UID de estudos (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID da série (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    UID das instâncias (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. Usando os novos valores, recupere os metadados da instância.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. É o mesmo que o ID do armazenamento DICOM no conjunto de dados de origem.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

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

    PowerShell

    execute o seguinte comando:

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

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

    APIs Explorer

    Abra o página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Preencha todos os campos obrigatórios e clique em Executar.

    A saída contém os novos metadados. Você pode comparar os novos metadados com os originais para ver o efeito da transformação.

Remover tags

Os exemplos a seguir mostram como usar o objeto RemoveTag para remover os valores de tags específicas durante a desidentificação. Uma tag removida é substituído por um valor vazio.

Nos exemplos a seguir, a tag PatientName é adicionada ao queries[], então o valor dela é substituído por uma durante a desidentificação.

REST

  1. Desidentifique o conjunto de dados.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
    • DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados

    Corpo JSON da solicitação:

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

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

    Depois execute o comando a seguir para enviar a solicitação REST:

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

    PowerShell

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

    Depois execute o comando a seguir para enviar a solicitação REST:

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

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content
    A saída é esta: A resposta contém um identificador para uma operação de longa duração (LRO, na sigla em inglês). Operações de longa duração são retornadas quando as chamadas de método podem levar mais tempo para serem concluídas. Anote o valor de OPERATION_ID. Você vai precisar desse valor na próxima etapa.

  2. Use o método projects.locations.datasets.operations.get para ver o status da operação de longa duração.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
    • OPERATION_ID: o ID retornado da operação de longa duração.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

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

    PowerShell

    execute o seguinte comando:

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

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

    APIs Explorer

    Abra o página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Preencha todos os campos obrigatórios e clique em Executar.

    A saída é esta: Quando a resposta contém "done": true, o operação de longa duração foi concluída.

  3. Depois que a desidentificação for concluída, você poderá recuperar os metadados do desidentificada para conferir como ela mudou. A instância desidentificada tem um novo UID de estudos, UID de série e UID de instâncias; portanto, primeiro você precisa pesquisar a instância desidentificada no novo conjunto de dados.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. É o mesmo que o ID do armazenamento DICOM no conjunto de dados de origem.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

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

    PowerShell

    execute o seguinte comando:

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

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

    Você receberá uma resposta JSON semelhante a esta:

    A tabela a seguir mostra como os UIDs de estudos, de série e de instâncias foram alterados:
      Metadados da instância original Metadados de instância desidentificados
    UID de estudos (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID da série (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    UID das instâncias (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. Usando os novos valores, recupere os metadados da instância.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. É o mesmo que o ID do armazenamento DICOM no conjunto de dados de origem.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

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

    PowerShell

    execute o seguinte comando:

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

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

    APIs Explorer

    Abra o página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Preencha todos os campos obrigatórios e clique em Executar.

    A saída contém os novos metadados. Você pode comparar os novos metadados com os originais para ver o efeito da transformação.

Excluir tags

Os exemplos a seguir mostram como usar o objeto DeleteTag para excluir tags específicas durante a desidentificação.

REST

  1. Desidentifique o conjunto de dados.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
    • DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados

    Corpo JSON da solicitação:

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

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

    Depois execute o comando a seguir para enviar a solicitação REST:

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

    PowerShell

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

    Depois execute o comando a seguir para enviar a solicitação REST:

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

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content
    A saída é esta: A resposta contém um identificador para uma operação de longa duração (LRO, na sigla em inglês). Operações de longa duração são retornadas quando as chamadas de método podem levar mais tempo para serem concluídas. Anote o valor de OPERATION_ID. Você vai precisar desse valor na próxima etapa.

  2. Use o método projects.locations.datasets.operations.get para ver o status da operação de longa duração.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
    • OPERATION_ID: o ID retornado da operação de longa duração.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

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

    PowerShell

    execute o seguinte comando:

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

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

    APIs Explorer

    Abra o página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Preencha todos os campos obrigatórios e clique em Executar.

    A saída é esta: Quando a resposta contém "done": true, o operação de longa duração foi concluída.

  3. Depois que a desidentificação for concluída, você poderá recuperar os metadados do desidentificada para conferir como ela mudou. A instância desidentificada tem um novo UID de estudos, UID de série e UID de instâncias; portanto, primeiro você precisa pesquisar a instância desidentificada no novo conjunto de dados.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. É o mesmo que o ID do armazenamento DICOM no conjunto de dados de origem.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

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

    PowerShell

    execute o seguinte comando:

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

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

    Você receberá uma resposta JSON semelhante a esta:

    A tabela a seguir mostra como os UIDs de estudos, de série e de instâncias foram alterados:
      Metadados da instância original Metadados de instância desidentificados
    UID de estudos (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID da série (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    UID das instâncias (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. Usando os novos valores, recupere os metadados da instância.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. É o mesmo que o ID do armazenamento DICOM no conjunto de dados de origem.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

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

    PowerShell

    execute o seguinte comando:

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

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

    APIs Explorer

    Abra o página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Preencha todos os campos obrigatórios e clique em Executar.

    A saída contém os novos metadados. Você pode comparar os novos metadados com os originais para ver o efeito da transformação.

Redefinir tags para um valor de marcador

Os exemplos a seguir mostram como usar o objeto ResetTag para definir o valor das tags para a string PLACEHOLDER durante a desidentificação.

REST

  1. Desidentifique o conjunto de dados.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
    • DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados

    Corpo JSON da solicitação:

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

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

    Depois execute o comando a seguir para enviar a solicitação REST:

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

    PowerShell

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

    Depois execute o comando a seguir para enviar a solicitação REST:

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

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content
    A saída é esta: A resposta contém um identificador para uma operação de longa duração (LRO, na sigla em inglês). Operações de longa duração são retornadas quando as chamadas de método podem levar mais tempo para serem concluídas. Anote o valor de OPERATION_ID. Você vai precisar desse valor na próxima etapa.

  2. Use o método projects.locations.datasets.operations.get para ver o status da operação de longa duração.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
    • OPERATION_ID: o ID retornado da operação de longa duração.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

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

    PowerShell

    execute o seguinte comando:

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

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

    APIs Explorer

    Abra o página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Preencha todos os campos obrigatórios e clique em Executar.

    A saída é esta: Quando a resposta contém "done": true, o operação de longa duração foi concluída.

  3. Depois que a desidentificação for concluída, você poderá recuperar os metadados do desidentificada para conferir como ela mudou. A instância desidentificada tem um novo UID de estudos, UID de série e UID de instâncias; portanto, primeiro você precisa pesquisar a instância desidentificada no novo conjunto de dados.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. É o mesmo que o ID do armazenamento DICOM no conjunto de dados de origem.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

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

    PowerShell

    execute o seguinte comando:

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

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

    Você receberá uma resposta JSON semelhante a esta:

    A tabela a seguir mostra como os UIDs de estudos, de série e de instâncias foram alterados:
      Metadados da instância original Metadados de instância desidentificados
    UID de estudos (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID da série (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    UID das instâncias (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. Usando os novos valores, recupere os metadados da instância.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. É o mesmo que o ID do armazenamento DICOM no conjunto de dados de origem.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

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

    PowerShell

    execute o seguinte comando:

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

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

    APIs Explorer

    Abra o página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Preencha todos os campos obrigatórios e clique em Executar.

    A saída contém os novos metadados. Você pode comparar os novos metadados com os originais para ver o efeito da transformação.

    Especificamente, observe que o valor da tag PatientName é definido como PLACEHOLDER:

    Original metadataMetadados depois da execução de ResetTag
    "00100010": {
      "vr": "PN",
      "Value": [
        {
          "Alphabetic": "Ann Johnson"
        }
      ]
    }
    "00100010": {
      "vr": "PN",
      "Value": [
        {
          "Alphabetic": "PLACEHOLDER"
        }
      ]
    }

Inspecionar e transformar texto sensível em tags

Os exemplos a seguir mostram como usar o objeto CleanTextTag para inspecionar tags e transforma os valores das tags de acordo com a configuração em TextConfig objeto.

Nesses exemplos, as opções a seguir são definidas no objeto Actions:

  • Um objeto CleanTextTag.
  • Uma lista queries[] contendo a tag DICOM PatientName.

As seguintes opções são definidas no objeto TextConfig:

  • Um objeto InfoTypeTransformation que transforma o texto que corresponde a um infoType específico.
  • Um objeto ReplaceWithInfoTypeConfig que substitui qualquer texto correspondente pelo nome do infoType.
  • Uma lista infoTypes[] contendo o infoType PERSON_NAME.

Com essas configurações definidas, a operação de desidentificação inspeciona tag PatientName, corresponde a tag ao infoType PERSON_NAME e substitui o valor da tag com o infoType PERSON_NAME. A tag PatientName tem uma representação de valor (VR, na sigla em inglês) de PN, que é um dos as RVs compatíveis no CleanTextTag objeto.

REST

  1. Desidentifique o conjunto de dados.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
    • DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados

    Corpo JSON da solicitação:

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

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

    Depois execute o comando a seguir para enviar a solicitação REST:

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

    PowerShell

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

    Depois execute o comando a seguir para enviar a solicitação REST:

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

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content
    A saída é esta: A resposta contém um identificador para uma operação de longa duração (LRO, na sigla em inglês). Operações de longa duração são retornadas quando as chamadas de método podem levar mais tempo para serem concluídas. Anote o valor de OPERATION_ID. Você vai precisar desse valor na próxima etapa.

  2. Use o método projects.locations.datasets.operations.get para ver o status da operação de longa duração.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
    • OPERATION_ID: o ID retornado da operação de longa duração.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

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

    PowerShell

    execute o seguinte comando:

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

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

    APIs Explorer

    Abra o página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Preencha todos os campos obrigatórios e clique em Executar.

    A saída é esta: Quando a resposta contém "done": true, o operação de longa duração foi concluída.

  3. Depois que a desidentificação for concluída, você poderá recuperar os metadados do desidentificada para conferir como ela mudou. A instância desidentificada tem um novo UID de estudos, UID de série e UID de instâncias; portanto, primeiro você precisa pesquisar a instância desidentificada no novo conjunto de dados.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. É o mesmo que o ID do armazenamento DICOM no conjunto de dados de origem.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

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

    PowerShell

    execute o seguinte comando:

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

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

    Você receberá uma resposta JSON semelhante a esta:

    A tabela a seguir mostra como os UIDs de estudos, de série e de instâncias foram alterados:
      Metadados da instância original Metadados de instância desidentificados
    UID de estudos (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID da série (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    UID das instâncias (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. Usando os novos valores, recupere os metadados da instância.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. É o mesmo que o ID do armazenamento DICOM no conjunto de dados de origem.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

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

    PowerShell

    execute o seguinte comando:

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

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

    APIs Explorer

    Abra o página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Preencha todos os campos obrigatórios e clique em Executar.

    A saída contém os novos metadados. Você pode comparar os novos metadados com os originais para ver o efeito da transformação.

    Especificamente, observe que o valor da tag PatientName é definido como [PERSON_NAME]:

    Original metadataMetadados depois da execução de CleanTextTag
    "00100010": {
      "vr": "PN",
      "Value": [
        {
          "Alphabetic": "Ann Johnson"
        }
      ]
    }
    "00100010": {
      "vr": "PN",
      "Value": [
        {
          "Alphabetic": "[PERSON_NAME]"
        }
      ]
    }

Substituir um UID por um UID gerado

Os exemplos a seguir mostram como usar o objeto RegenUidTag para substituir uma UID com um UID recém-gerado. A única RV com que o objeto RegenUidTag suporta é UI.

Por padrão, todas as tags nos metadados de amostra com RV de UI tem o UID gerado durante a desidentificação. Para mostrar como gerar um UID para uma tag específica, as seguintes opções são definidas na amostra:

  • ProfileType estiver definido como KEEP_ALL enum, que impede que todos os metadados DICOM sejam desidentificados.

  • PrimaryIdsOption está definido como KEEP enum, o que deixa os IDs principais (StudyInstanceUID, SeriesInstanceUID, SOPInstanceUID e MediaStorageSOPInstanceUID) sem alterações.

Quando essas opções forem definidas, nenhum dos UIDs do ID principal nos dados de amostra será substituído com valores recém-gerados. No entanto, ao adicionar SOPInstanceUID ao Action.queries[] é possível gerar um novo UID especificamente para a tag SOPInstanceUID.

REST

  1. Desidentifique o conjunto de dados.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
    • DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados

    Corpo JSON da solicitação:

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

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

    Depois execute o comando a seguir para enviar a solicitação REST:

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

    PowerShell

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

    Depois execute o comando a seguir para enviar a solicitação REST:

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

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content
    A saída é esta: A resposta contém um identificador para uma operação de longa duração (LRO, na sigla em inglês). Operações de longa duração são retornadas quando as chamadas de método podem levar mais tempo para serem concluídas. Anote o valor de OPERATION_ID. Você vai precisar desse valor na próxima etapa.

  2. Use o método projects.locations.datasets.operations.get para ver o status da operação de longa duração.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
    • OPERATION_ID: o ID retornado da operação de longa duração.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

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

    PowerShell

    execute o seguinte comando:

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

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

    APIs Explorer

    Abra o página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Preencha todos os campos obrigatórios e clique em Executar.

    A saída é esta: Quando a resposta contém "done": true, o operação de longa duração foi concluída.

  3. Depois que a desidentificação for concluída, você poderá recuperar os metadados do desidentificada para conferir como ela mudou. A instância desidentificada tem um novo UID de instâncias porque você especificou a tag SOPInstanceUID; na matriz Action.queries[], então primeiro você precisa pesquisar a instância desidentificada no novo conjunto de dados.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. É o mesmo que o ID do armazenamento DICOM no conjunto de dados de origem.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

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

    PowerShell

    execute o seguinte comando:

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

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

    Você receberá uma resposta JSON semelhante a esta:

    A tabela a seguir mostra como o UID das instâncias mudou:

      Metadados da instância original Metadados de instância desidentificados
    UID das instâncias (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. Usando o novo valor, recupere os metadados da instância.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. É o mesmo que o ID do armazenamento DICOM no conjunto de dados de origem.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

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

    PowerShell

    execute o seguinte comando:

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

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

    APIs Explorer

    Abra o página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Preencha todos os campos obrigatórios e clique em Executar.

    A saída contém os novos metadados. Você pode comparar os novos metadados com os originais para ver o efeito da transformação.

    Dos IDs principais, somente o SOPInstanceUID tem um UID recém-gerado.

Desidentificar tags de maneira recursiva em um Sequence aninhado

Os exemplos a seguir mostram como usar o objeto RecurseTag para desidentificar tags DICOM aninhadas em um Sequence. O objeto RecurseTag só oferece suporte à RV SQ, que é a RV para um Sequence.

Para informações sobre a RV do SQ, consulte 7.5 Aninhamento de conjuntos de dados.

A instância de exemplo de DICOM fornecido nesta página não contém tags DICOM que tenham uma RV SQ. É possível criar e armazenar uma instância DICOM com dados falsos que contenham a RV SQ concluindo as etapas a seguir, que são baseadas nas instruções do Criar instâncias DICOM a partir de metadados JSON e arquivos JPEG. A instância DICOM criada nas etapas a seguir usa dados falsos, e tem como objetivo ilustrar o comportamento de RecurseTag.

  1. Salve os seguintes metadados DICOM em um arquivo JSON chamado instance.json. A metadados contêm uma tag PhysiciansReadingStudyIdentificationSequence (00081062). A tag tem um valor de RV de SQ e contém dois valores aninhados PersonIdentificationCodeSequence (00401101). As tags aninhadas também têm uma RV SQ e cada uma contém as seguintes tags aninhadas:

    • CodeValue (00080100)
    • CodingSchemeDesignator (00080102)
    [{
      "00020010": {
        "vr": "UI",
        "Value": [
          "1.2.840.10008.1.2.4.50"
        ]
      },
      "00080005": {
        "vr": "CS",
        "Value": [
          "ISO_IR 192"
        ]
      },
      "00080016": {
        "vr": "UI",
        "Value": [
          "1111111"
        ]
      },
      "00080018": {
        "vr": "UI",
        "Value": [
          "2222222"
        ]
      },
      "0020000D": {
        "vr": "UI",
        "Value": [
          "3333333"
        ]
      },
      "0020000E": {
        "vr": "UI",
        "Value": [
          "4444444"
        ]
      },
      "00280002": {
        "vr": "US",
        "Value": [
          3
        ]
      },
      "00280004": {
        "vr": "CS",
        "Value": [
          "YBR_FULL_422"
        ]
      },
      "00280006": {
        "vr": "US",
        "Value": [
          0
        ]
      },
      "00280008": {
        "vr": "IS",
        "Value": [
          1
        ]
      },
      "00280010": {
        "vr": "US",
        "Value": [
          1024
        ]
      },
      "00280011": {
        "vr": "US",
        "Value": [
          1024
        ]
      },
      "00280100": {
        "vr": "US",
        "Value": [
          8
        ]
      },
      "00280101": {
        "vr": "US",
        "Value": [
          8
        ]
      },
      "00280102": {
        "vr": "US",
        "Value": [
          7
        ]
      },
      "00280103": {
        "vr": "US",
        "Value": [
          0
        ]
      },
      "7FE00010": {
        "vr": "OB",
        "BulkDataURI": "jpeg-image"
      },
      "00081062": {
        "vr": "SQ",
        "Value": [
          {
            "00401101": {
              "vr": "SQ",
              "Value": [
                {
                  "00080100": {
                    "vr": "SH",
                    "Value": [
                      "CodeValue1"
                    ]
                  },
                  "00080102": {
                    "vr": "SH",
                    "Value": [
                      "CodingSchemeDesignator1"
                    ]
                  }
                }
              ]
            }
          },
          {
            "00401101": {
              "vr": "SQ",
              "Value": [
                {
                  "00080100": {
                    "vr": "SH",
                    "Value": [
                      "CodeValue2"
                    ]
                  },
                  "00080102": {
                    "vr": "SH",
                    "Value": [
                      "CodingSchemeDesignator2"
                    ]
                  }
                }
              ]
            }
          }
        ]
      }
    }]
    
  2. Faça o download do arquivo google.jpg. na máquina local. A API DICOMweb da API Cloud Healthcare aceita qualquer formato JPEG pareada com metadados JSON, contanto que os metadados sejam válidos.

  3. Execute os seguintes comandos para criar uma abertura (para os metadados JSON): imagem no meio (para JPEG) e limite de fechamento na imagem:

    echo -ne "--DICOMwebBoundary\r\nContent-Type: application/dicom+json\r\n\r\n" > opening.file
    echo -ne "\r\n--DICOMwebBoundary\r\nContent-Location: jpeg-image\r\nContent-Type: image/jpeg; transfer-syntax=1.2.840.10008.1.2.4.50\r\n\r\n" > middle.file
    echo -ne "\r\n--DICOMwebBoundary--" > closing.file
    
  4. Una a imagem google.jpg aos limites médio e de fechamento. O resultado que você envia para a API Cloud Healthcare, é chamado de multipart-request.file:

    cat opening.file instance.json middle.file google.jpg closing.file > multipart-request.file
    
  5. Armazene o arquivo multipart-request.file:

    REST

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • SOURCE_DICOM_STORE_ID: o ID do armazenamento DICOM dentro do conjunto de dados de origem.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: multipart/related; type=\"application/dicom+json\"; boundary=DICOMwebBoundary" \
    --data-binary @multipart-request.file \
    "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID/dicomWeb/studies"

    PowerShell

    execute o seguinte comando:

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

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -InFile multipart-request.file `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID/dicomWeb/studies" | Select-Object -Expand Content

    Você receberá uma resposta JSON semelhante a esta:

Conclua as etapas a seguir para desidentificar a instância DICOM armazenou.

REST

  1. Desidentifique o conjunto de dados.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
    • DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados

    Corpo JSON da solicitação:

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

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

    Depois execute o comando a seguir para enviar a solicitação REST:

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

    PowerShell

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

    Depois execute o comando a seguir para enviar a solicitação REST:

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

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content
    A saída é esta: A resposta contém um identificador para uma operação de longa duração (LRO, na sigla em inglês). Operações de longa duração são retornadas quando as chamadas de método podem levar mais tempo para serem concluídas. Anote o valor de OPERATION_ID. Você vai precisar desse valor na próxima etapa.

  2. Use o método projects.locations.datasets.operations.get para ver o status da operação de longa duração.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
    • OPERATION_ID: o ID retornado da operação de longa duração.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

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

    PowerShell

    execute o seguinte comando:

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

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

    APIs Explorer

    Abra o página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Preencha todos os campos obrigatórios e clique em Executar.

    A saída é esta: Quando a resposta contém "done": true, o operação de longa duração foi concluída.

  3. Depois que a desidentificação for concluída, você poderá recuperar os metadados do desidentificada para conferir como ela mudou. A instância desidentificada tem um novo UID de estudos, UID de série e UID de instâncias; portanto, primeiro você precisa pesquisar a instância desidentificada no novo conjunto de dados.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. É o mesmo que o ID do armazenamento DICOM no conjunto de dados de origem.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

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

    PowerShell

    execute o seguinte comando:

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

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

    Você receberá uma resposta JSON semelhante a esta:

    A tabela a seguir mostra como os estudos do UID, do UID de série e do UID das instâncias alterado:

    Metadados da instância original Metadados de instância desidentificados
    UID de estudos (0020000D) 3333333 1.3.6.1.4.1.11129.5.1.222168347996079463826250565085126257314
    UID da série (0020000E) 4444444 1.3.6.1.4.1.11129.5.1.25205702030237830896398173746777399347
    UID das instâncias (00080018) 2222222 1.3.6.1.4.1.11129.5.1.286710307126045768765142714621897494633
  4. Usando os novos valores, recupere os metadados da instância.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. É o mesmo que o ID do armazenamento DICOM no conjunto de dados de origem.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

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

    PowerShell

    execute o seguinte comando:

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

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

    APIs Explorer

    Abra o página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Preencha todos os campos obrigatórios e clique em Executar.

    A saída contém os novos metadados. Compare os novos metadados com os originais na Etapa 1 para ver o efeito da transformação.

    Mais especificamente, observe que os valores das classes CodeValue e CodingSchemaDesignator aninhadas estão definidas como PLACEHOLDER:

    Original metadataMetadados depois da execução de RecurseTag
    {
      "00081062": {
        "vr": "SQ",
        "Value": [
          {
            "00401101": {
              "vr": "SQ",
              "Value": [
                {
                  "00080100": {
                    "vr": "SH",
                    "Value": [
                      "CodeValue1"
                    ]
                  },
                  "00080102": {
                    "vr": "SH",
                    "Value": [
                      "CodingSchemeDesignator1"
                    ]
                  }
                }
              ]
            }
          },
          {
            "00401101": {
              "vr": "SQ",
              "Value": [
                {
                  "00080100": {
                    "vr": "SH",
                    "Value": [
                      "CodeValue2"
                    ]
                  },
                  "00080102": {
                    "vr": "SH",
                    "Value": [
                      "CodingSchemeDesignator2"
                    ]
                  }
                }
              ]
            }
          }
        ]
      }
    }
    {
      "00081062": {
        "vr": "SQ",
        "Value": [
          {
            "00401101": {
              "vr": "SQ",
              "Value": [
                {
                  "00080100": {
                    "vr": "SH",
                    "Value": [
                      "PLACEHOLDER"
                    ]
                  },
                  "00080102": {
                    "vr": "SH",
                    "Value": [
                      "PLACEHOLDER"
                    ]
                  }
                }
              ]
            }
          },
          {
            "00401101": {
              "vr": "SQ",
              "Value": [
                {
                  "00080100": {
                    "vr": "SH",
                    "Value": [
                      "PLACEHOLDER"
                    ]
                  },
                  "00080102": {
                    "vr": "SH",
                    "Value": [
                      "PLACEHOLDER"
                    ]
                  }
                }
              ]
            }
          }
        ]
      }
    }

Desidentificar dados no nível do repositório DICOM

Nas amostras anteriores você viu como desidentificar dados DICOM no nível do conjunto de dados. Nesta seção, descrevemos como desidentificar dados no nível do armazenamento de DICOM.

Para alterar uma solicitação de desidentificação do conjunto de dados para uma solicitação de desidentificação do armazenamento DICOM, faça as seguintes alterações:

  • Substitua destinationDataset no corpo da solicitação por destinationStore.
  • Adicione dicomStores/DESTINATION_DICOM_STORE_ID ao final do valor em destinationStore ao especificar o destino.
  • Adicione dicomStores/SOURCE_DICOM_STORE_ID ao especificar o local dos dados de origem.

Os exemplos a seguir mostram uma solicitação de desidentificação no nível do conjunto de dados e como modifique a solicitação de uma desidentificação no nível do armazenamento DICOM:

Desidentificação no nível do conjunto de dados:

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

Desidentificação no nível de armazenamento DICOM:

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

Os exemplos a seguir mostram como desidentificar uma instância DICOM em um repositório DICOM e gravar os dados desidentificados em um novo armazenamento DICOM. Antes de executar as amostras, o ID do repositório DICOM de destino deve existir.

REST

  1. Desidentifique o conjunto de dados.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
    • DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados. Já precisa existir antes da execução da operação de desidentificação.
    • DESTINATION_DICOM_STORE_ID: o armazenamento DICOM no conjunto de dados de destino. Já precisa existir antes da execução da operação de desidentificação.

    Corpo JSON da solicitação:

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

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

    Depois execute o comando a seguir para enviar a solicitação REST:

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

    PowerShell

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

    Depois execute o comando a seguir para enviar a solicitação REST:

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

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID:deidentify" | Select-Object -Expand Content
    A saída é esta: A resposta contém um identificador para uma operação de longa duração (LRO, na sigla em inglês). Operações de longa duração são retornadas quando as chamadas de método podem levar mais tempo para serem concluídas. Anote o valor de OPERATION_ID. Você vai precisar desse valor na próxima etapa.

  2. Use o método projects.locations.datasets.operations.get para ver o status da operação de longa duração.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
    • OPERATION_ID: o ID retornado da operação de longa duração.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

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

    PowerShell

    execute o seguinte comando:

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

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

    APIs Explorer

    Abra o página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Preencha todos os campos obrigatórios e clique em Executar.

    A saída é esta: Quando a resposta contém "done": true, o operação de longa duração foi concluída.

  3. Depois que a desidentificação for concluída, você poderá recuperar os metadados do desidentificada para conferir como ela mudou. A instância desidentificada tem um novo UID de estudos, UID de série e UID de instâncias; portanto, primeiro você precisa pesquisar a instância desidentificada no novo conjunto de dados.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. É o mesmo que o ID do armazenamento DICOM no conjunto de dados de origem.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

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

    PowerShell

    execute o seguinte comando:

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

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

    Você receberá uma resposta JSON semelhante a esta:

    A tabela a seguir mostra como os UIDs de estudos, de série e de instâncias foram alterados:
      Metadados da instância original Metadados de instância desidentificados
    UID de estudos (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID da série (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    UID das instâncias (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. Usando os novos valores, recupere os metadados da instância.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. É o mesmo que o ID do armazenamento DICOM no conjunto de dados de origem.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

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

    PowerShell

    execute o seguinte comando:

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

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

    APIs Explorer

    Abra o página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Preencha todos os campos obrigatórios e clique em Executar.

    A saída contém os novos metadados. Você pode comparar os novos metadados com os originais para ver o efeito da transformação.

Desidentificar um subconjunto de um armazenamento DICOM

É possível desidentificar um subconjunto de dados em um armazenamento DICOM especificando um filtro.

O filtro assume a forma de um arquivo de filtro especificado como um valor para o campo resourcePathsGcsUri no objeto DicomFilterConfig. O arquivo de filtro precisa existir em um bucket do Cloud Storage. não é possível especificar um arquivo de filtro existente na sua máquina local ou em qualquer outra fonte. O local do arquivo precisa estar no formato gs://BUCKET/PATH/TO/FILE.

Criar um arquivo de filtro

Um arquivo de filtro define quais arquivos DICOM devem ser desidentificados. É possível filtrar arquivos nos seguintes níveis:

  • No nível do estudo
  • No nível da série
  • No nível da instância

O arquivo de filtro é composto de uma linha por estudo, série ou instância que você quer desidentificar. Cada linha usa o formato /studies/STUDY_UID[/series/SERIES_UID[/instances/INSTANCE_UID]]. No final de cada linha há um caractere de nova linha: \n ou \r\n.

Se um estudo, série ou instância não estiver especificado no arquivo de filtro que você transmitiu ao chamar a operação de desidentificação, esse estudo, série ou instância não será desidentificado e não estará presente no armazenamento DICOM de destino.

Apenas a parte /studies/STUDY_UID do caminho é obrigatória. Isso significa que é possível desidentificar um estudo especificando /studies/STUDY_UID ou desidentificar uma série especificando /studies/STUDY_UID/series/SERIES_UID.

Considere o arquivo de filtro a seguir. O arquivo de filtro faz com que um estudo, duas séries e três instâncias individuais sejam desidentificadas:

/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

Criar um arquivo de filtro usando o BigQuery

Normalmente, você cria um arquivo de filtro exportando os metadados de um armazenamento DICOM para o BigQuery. Isso permite que você use o BigQuery para ver os UIDs de estudo, série e instância dos dados DICOM no seu armazenamento DICOM. Em seguida, veja o que você poderá fazer:

  1. Consulte os UIDs do estudo, da série e da instância do seu interesse. Por exemplo, depois de exportar os metadados para o BigQuery, execute a consulta a seguir para concatenar os UIDs de estudo, série e instância para um formato compatível com os requisitos do arquivo de filtro:

    SELECT CONCAT
      ('/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID)
    FROM
      [PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE]
    
  2. Se a consulta retornar um grande conjunto de resultados, é possível materializar uma nova tabela salvando os resultados da consulta em uma tabela de destino no BigQuery.

  3. Depois de salvar os resultados da consulta na tabela de destino, salve o conteúdo da tabela de destino em um arquivo e exporte-o para o Cloud Storage. Para ver as etapas de como fazer isso, consulte Como exportar dados da tabela. O arquivo exportado é seu arquivo de filtro. Você usará o local do arquivo de filtro no Cloud Storage ao especificar o filtro na operação de exportação.

Criar um arquivo de filtro manualmente

É possível criar um arquivo de filtro com conteúdo personalizado e fazer o upload dele para um bucket do Cloud Storage. Você usará o local do arquivo de filtro no Cloud Storage ao especificar o filtro na operação de desidentificação. Na amostra a seguir, você verá como fazer upload de um arquivo de filtro para um bucket do Cloud Storage usando o comando gcloud storage cp:

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

Exemplo:

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

Usar um filtro

Depois de configurar o arquivo de filtro, e possível transmiti-lo como um valor para o campo resourcePathsGcsUri no objeto filterConfig.

O exemplo a seguir detalha Como desidentificar dados no nível do armazenamento DICOM, mas um arquivo de filtro no Cloud Storage é fornecido para determinar Os recursos DICOM são desidentificados.

REST

  1. Desidentifique o conjunto de dados.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • LOCATION: o local do conjunto de dados;
    • SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
    • DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
    • SOURCE_DICOM_STORE_ID: o ID do armazenamento DICOM que contém os dados a serem desidentificados
    • DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino.
    • BUCKET/PATH/TO/FILE: o local do arquivo de filtro em um bucket do Cloud Storage

    Corpo JSON da solicitação:

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

    Para enviar a solicitação, escolha uma destas opções:

    curl

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

    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

    Depois execute o comando a seguir para enviar a solicitação REST:

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

    PowerShell

    Salve o corpo da solicitação em um arquivo chamado request.json. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:

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

    Depois execute o comando a seguir para enviar a solicitação REST:

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

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID:deidentify" | Select-Object -Expand Content
    A saída é esta: A resposta contém um identificador para uma operação de longa duração. Operações de longa duração são retornadas quando as chamadas de método podem demorar um tempo significativo para serem concluídas. Anote o valor de OPERATION_ID. Você precisa desse valor na próxima etapa.

  2. Use o método projects.locations.datasets.operations.get para ver o status da operação de longa duração.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
    • OPERATION_ID: o ID retornado da operação de longa duração.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

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

    PowerShell

    execute o seguinte comando:

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

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

    APIs Explorer

    Abra o página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Preencha todos os campos obrigatórios e clique em Executar.

    A saída é esta: Quando a resposta contém "done": true, o operação de longa duração foi concluída.

  3. Depois que a desidentificação for concluída, você poderá recuperar os metadados do desidentificada para conferir como ela mudou. A instância desidentificada tem um novo UID de estudos, UID de série e UID de instâncias; portanto, primeiro você precisa pesquisar a instância desidentificada no novo conjunto de dados.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. É o mesmo que o ID do armazenamento DICOM no conjunto de dados de origem.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

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

    PowerShell

    execute o seguinte comando:

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

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

    Você receberá uma resposta JSON semelhante a esta:

    A tabela a seguir mostra como os UIDs de estudos, de série e de instâncias foram alterados:
      Metadados da instância original Metadados de instância desidentificados
    UID de estudos (0020000D) 2.25.70541616638819138568043293671559322355 1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
    UID da série (0020000E) 1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694 1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
    UID das instâncias (00080018) 1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695 1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
  4. Usando os novos valores, recupere os metadados da instância.

    Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

    • PROJECT_ID: o ID do seu projeto do Google Cloud;
    • DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
    • SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem.
    • DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. É o mesmo que o ID do armazenamento DICOM no conjunto de dados de origem.

    Para enviar a solicitação, escolha uma destas opções:

    curl

    execute o seguinte comando:

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

    PowerShell

    execute o seguinte comando:

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

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

    APIs Explorer

    Abra o página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Preencha todos os campos obrigatórios e clique em Executar.

    A saída contém os novos metadados. Você pode comparar os novos metadados com os originais para ver o efeito da transformação.

Resolver problemas de operações de desidentificação do DICOM

Se ocorrerem erros durante uma operação de desidentificação DICOM, eles serão registrados no Cloud Logging. Para mais informações, consulte Como visualizar registros de erros no Cloud Logging.

Se toda a operação retornar um erro, consulte Solução de problemas de operações de longa duração.