Nesta página, explicamos como usar a configuração DicomTagConfig
da v1beta1 na API Cloud Healthcare para desidentificar dados
confidenciais em instâncias DICOM nos seguintes níveis:
- No nível do conjunto de dados usando
datasets.deidentify
. - No nível de armazenamento DICOM usando
dicomStores.deidentify
.
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 o objeto DicomTagConfig
da v1beta1. Recomendamos que você use DicomTagConfig
.
Se você já usa DicomConfig
para suas operações de desidentificação, recomendamos migrar para 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 objeto DicomTagConfig.Options.CleanDescriptorsOption
para ativar a desidentificação contextual de texto de metadados não estruturados.
Essa opção é baseada na
opção de limpar descritores.
Quando você especifica DicomTagConfig.Options.CleanDescriptorsOption
, um infoType extra é usado durante a inspeção, o que pode afetar os custos de faturamento.
O uso da opção DicomTagConfig.Options.CleanDescriptorsOption
transforma qualquer texto de metadados não estruturados que corresponda às tags removidas e, ao fazer isso, melhora a qualidade da desidentificação. Por exemplo, suponha que você esteja desidentificando um raio-X e o paciente do raio X tenha um sobrenome que também é um substantivo, como Wall
. Se algum metadado na instância, como o texto em StudyDescription
, contiver a palavra Wall
, o texto será transformado.
A opção CleanDescriptorsOption
edita frases contextuais que correspondem a qualquer tag marcada para remoção no perfil básico 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
. Não é necessário especificar um tipo enumerado. - O
CleanTextTag
filtra 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
Você pode especificar o enum TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS
para ativar a desidentificação contextual de texto gravado em uma imagem.
Essa opção é baseada na
opção de limpar descritores.
Quando você especifica o enum TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS
, um infoType extra é usado durante a inspeção, o que pode afetar os custos de faturamento.
É possível especificar o enum TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS
das seguintes maneiras:
Em um objeto
Options.ImageConfig
comDicomTagConfig.Options.ImageConfig.TextRedactionMode
. Quando você especifica essa opção, a tagPixelData (7FE0,0010)
é adicionada automaticamente à lista de tags a serem editadas.Em um objeto
Action.CleanImageTag
comDicomTagConfig.Action.CleanImageTag.TextRedactionMode
. Ao especificar essa opção, é preciso adicionar a tagPixelData
manualmente à matrizAction.queries[]
. A tagPixelData
é a única compatível comAction.CleanImageTag
.
A opção TextRedactionMode.REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS
edita o texto acoplado que corresponde a qualquer tag marcada para remoção no perfil básico do DICOM, desde que as tags correspondam a um dos seguintes códigos de ação:
D
Z
X
U
Não há outra configuração para desidentificação contextual de
texto gravado, além de ativar ou desativar esse recurso usando um tipo enumerado no objeto
ProfileType
. Não é necessário especificar um tipo enumerado.
Outros infoTypes na desidentificação de imagens
É possível usar tipos de informações (InfoTypes) para especificar quais dados serão verificados 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.
É possível configurar os seguintes campos no objeto 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 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 a seguir descrevem as configurações em DicomConfig
e como migrá-las para DicomTagConfig
.
ProfileType
para TagFilterProfile
Substitua o objeto DicomConfig
TagFilterProfile
pelo objeto DicomTagConfig
ProfileType
. Os mesmos quatro perfis em TagFilterProfileType
estão disponíveis em
ProfileType
.
O exemplo a seguir mostra como migrar uma solicitação de TagFilterProfile
para ProfileType
:
DicomConfig | DicomTagConfig |
---|---|
|
|
keepList
e removeList
Os campos DicomConfig
keepList
e removeList
não estão mais disponíveis no DicomTagConfig
. Se você usou keepList
e removeList
para especificar tags a serem mantidas ou removidas em vez de usar um perfil, migre para o novo objeto Action
, em que especifica o comportamento da tag. O objeto Action
oferece mais opções para transformar tags.
O exemplo a seguir mostra como migrar uma solicitação do uso de
keepList
para o uso de Action.keepTag
. A solicitação especifica que o valor da tag PatientID
é mantido durante a operação de desidentificação.
DicomConfig | DicomTagConfig |
---|---|
|
|
Combinar listas de manutenção, listas de remoção e perfis
No objeto DicomConfig
, é possível determinar se você quer manter ou remover dados
com base em listas de bloqueio, listas de remoção e perfis. Essas opções são mutuamente exclusivas.
Ao usar o objeto DicomTagConfig
, você pode combinar essas opções especificando quais tags manter e remover em um objeto Action
e, ao mesmo tempo, especificar um perfil em ProfileType
.
As opções configuradas no objeto Action
substituem as configuradas no
perfil ProfileType
. As opções no objeto Action
se aplicam na ordem
em que são fornecidas na solicitação.
Objects.primaryIds
para skipIdRedaction
Substitua o campo skipIdRedaction
no objeto DicomConfig
pelo campo primaryIds
no objeto DicomTagConfig
. O campo primaryIds
, que
está no objeto Options
, contém um objeto PrimaryIdsOption
em que você especifica um dos seguintes tipos enumerados:
PRIMARY_IDS_OPTION_UNSPECIFIED
: comportamento padrão quando nenhum valor é fornecido paraPrimaryIdsOption
. O padrão é a opção especificada emProfileType
.KEEP
: deixa os IDs primários inalterados.REGEN
: gere novamente os IDs principais.
O exemplo a seguir mostra como migrar uma solicitação do uso de
skipIdRedaction
para o uso de Options.primaryIds
. A solicitação especifica que
os valores dos IDs principais são mantidos durante a operação de desidentificação:
DicomConfig | DicomTagConfig |
---|---|
|
|
DicomTagConfig.Options.ImageConfig
para DeidentifyConfig.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 do uso de um ImageConfig
em DeidentifyConfig.image
para um ImageConfig
em DeidentifyConfig.DicomTagConfig.Options.cleanImage
.
A solicitação especifica que todo o texto em uma imagem será editado durante a operação de desidentificação:
DeidentifyConfig.image | DeidentifyConfig.DicomTagConfig.Options.cleanImage |
---|---|
|
|
Visão geral da desidentificação
Desidentificação no nível do conjunto de dados
Para desidentificar 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 não afeta o conjunto de dados original nem 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 DICOM para desidentificar metadados de instância DICOM (usando palavras-chave de tag) ou texto gravado em imagens DICOM especificando esses parâmetros em um objeto
DeidentifyConfig
.
A maioria das amostras neste 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 afeta 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 armazenamento DICOM. É possível configurar a desidentificação DICOM para desidentificar metadados da instância DICOM (usando palavras-chave de tag) ou texto gravado em imagens DICOM especificando esses parâmetros em um objeto
DeidentifyConfig
.
Para um exemplo de como desidentificar dados DICOM no nível do repositório DICOM, consulte Desidentificar dados no nível do repositório 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 arquivo de filtro e especificando-o na solicitação dicomStores.deidentify
. Por exemplo, consulte Desidentificar um subconjunto de um armazenamento DICOM.
Visão geral das amostras
As amostras neste 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 instância DICOM
de amostra 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 a aparência da imagem na instância DICOM e os metadados nela.
Imagem de amostra
Alguns exemplos nesta página contêm uma saída da imagem desidentificada. Cada exemplo usa a seguinte imagem original como entrada. É possível comparar a imagem de saída de cada operação de desidentificação com esta imagem original para ver os efeitos da operação:
Metadados de amostra
A maioria das amostras nesta página contém uma saída dos metadados alterados na instância DICOM. Cada amostra usa os seguintes metadados originais como entrada. É possível comparar os metadados de saída de cada operação de desidentificação com os 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 objeto
ImageConfig
dentro de um objeto
Action
. Dentro de ImageConfig
, é possível especificar quais infoTypes incluir ou excluir e como encobrir o texto usando o objeto TextRedactionMode
.
Editar todo o texto
Os exemplos a seguir mostram como desidentificar uma instância DICOM definindo
TextRedactionMode
como REDACT_ALL_TEXT
.
Essa configuração edita todo o texto gravado na imagem.
REST
Desidentifique o conjunto de dados.
Antes de usar os dados da solicitação, 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
Solicitar corpo JSON:
{ "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 ContentOPERATION_ID
. Você vai precisar desse valor na próxima etapa.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, 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 ContentAPIs Explorer
Abra a 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.
"done": true
, a operação de longa duração foi concluída.Depois que a desidentificação for bem-sucedida, será possível recuperar os metadados da instância desidentificada para ver como ela foi alterada. A instância desidentificada tem um novo UID de estudos, UID de série e UID de instâncias. Portanto, primeiro você precisa pesquisar o novo conjunto de dados para a instância desidentificada.
Antes de usar os dados da solicitação, 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 ContentVocê receberá uma resposta JSON semelhante a esta:
A tabela abaixo mostra como o UID dos estudos, o UID da série e o UID das instâncias mudaram: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
Usando os novos valores, recupere os metadados da instância.
Antes de usar os dados da solicitação, 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 ContentAPIs Explorer
Abra a 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.
Depois de desidentificar a imagem usando REDACT_ALL_TEXT
, a imagem
terá esta aparência: Observe que todo o texto gravado na parte inferior da imagem foi encoberto.
Encobrir texto sensível com a opção "Limpar descritores"
Os exemplos a seguir mostram como desidentificar uma instância DICOM definindo
TextRedactionMode
como REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS
.
Para mais
informações sobre a opção CleanDescriptorsOption
, consulte
Desidentificar texto com desidentificação contextual.
REST
Desidentifique o conjunto de dados.
Antes de usar os dados da solicitação, 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
Solicitar corpo JSON:
{ "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 ContentOPERATION_ID
. Você vai precisar desse valor na próxima etapa.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, 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 ContentAPIs Explorer
Abra a 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.
"done": true
, a operação de longa duração foi concluída.Depois que a desidentificação for bem-sucedida, será possível recuperar os metadados da instância desidentificada para ver como ela foi alterada. A instância desidentificada tem um novo UID de estudos, UID de série e UID de instâncias. Portanto, primeiro você precisa pesquisar o novo conjunto de dados para a instância desidentificada.
Antes de usar os dados da solicitação, 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 ContentVocê receberá uma resposta JSON semelhante a esta:
A tabela abaixo mostra como o UID dos estudos, o UID da série e o UID das instâncias mudaram: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
Usando os novos valores, recupere os metadados da instância.
Antes de usar os dados da solicitação, 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 ContentAPIs Explorer
Abra a 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.
Depois de desidentificar a imagem usando REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS
, a imagem
terá esta aparência: Observe que nem todo o texto gravado na parte inferior da imagem foi encoberto. O texto Female
ainda é mostrado, porque PatientSex (0010,0040)
não é um dos InfoTypes DICOM padrão.
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 no objeto DicomTagConfig
Action
:
Especifique cada opção Action
como uma lista de IDs, nomes ou representações de valor (VRs, na sigla em inglês) de tag DICOM, e a opção executa uma ação nas tags da 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 que tenham diferentes opções de Action
executadas,
você precisa especificar vários objetos Action
.
Manter tags
Para evitar que os valores das tags sejam editados, especifique-as em um objeto KeepTag
no objeto DicomTagConfig
.
Para produzir um objeto DICOM válido ao usar um objeto KeepTag
, especifique os valores MINIMAL_KEEP_LIST_PROFILE
ou DEIDENTIFY_TAG_CONTENTS
no objeto ProfileType
.
Ao especificar um desses perfis, as tags a seguir são mantidas automaticamente, 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 eles são substituídos por um valor diferente por meio de uma transformação determinista. Para mais informações, consulte Reter opção 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 em
PrimaryIdsOption
.
Os exemplos a seguir mostram como usar o objeto KeepTag
para manter os valores de tags específicas inalterados durante a desidentificação.
A tag PatientName
é adicionada à lista queries[]
para que o valor PatientName
não seja editado durante a desidentificação.
Como PrimaryIdsOption
não está especificado na amostra,
o campo primaryIds
é definido como PRIMARY_IDS_OPTION_UNSPECIFIED
, que tem como padrão
o valor em ProfileType
. Como ProfileType
também não está especificado, o campo profileType
é padronizado como PROFILE_TYPE_UNSPECIFIED
, o que remove tags com base no perfil básico de confidencialidade do atributo (DICOM Standard Edition 2018e).
REST
Desidentifique o conjunto de dados.
Antes de usar os dados da solicitação, 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
Solicitar corpo JSON:
{ "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 ContentOPERATION_ID
. Você vai precisar desse valor na próxima etapa.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, 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 ContentAPIs Explorer
Abra a 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.
"done": true
, a operação de longa duração foi concluída.Depois que a desidentificação for bem-sucedida, será possível recuperar os metadados da instância desidentificada para ver como ela foi alterada. A instância desidentificada tem um novo UID de estudos, UID de série e UID de instâncias. Portanto, primeiro você precisa pesquisar o novo conjunto de dados para a instância desidentificada.
Antes de usar os dados da solicitação, 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 ContentVocê receberá uma resposta JSON semelhante a esta:
A tabela abaixo mostra como o UID dos estudos, o UID da série e o UID das instâncias mudaram: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
Usando os novos valores, recupere os metadados da instância.
Antes de usar os dados da solicitação, 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 ContentAPIs Explorer
Abra a 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.
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ída por um valor vazio.
Nos exemplos a seguir, a tag PatientName
é adicionada à lista queries[]
. Portanto, seu valor é substituído por um valor vazio durante a desidentificação.
REST
Desidentifique o conjunto de dados.
Antes de usar os dados da solicitação, 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
Solicitar corpo JSON:
{ "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 ContentOPERATION_ID
. Você vai precisar desse valor na próxima etapa.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, 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 ContentAPIs Explorer
Abra a 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.
"done": true
, a operação de longa duração foi concluída.Depois que a desidentificação for bem-sucedida, será possível recuperar os metadados da instância desidentificada para ver como ela foi alterada. A instância desidentificada tem um novo UID de estudos, UID de série e UID de instâncias. Portanto, primeiro você precisa pesquisar o novo conjunto de dados para a instância desidentificada.
Antes de usar os dados da solicitação, 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 ContentVocê receberá uma resposta JSON semelhante a esta:
A tabela abaixo mostra como o UID dos estudos, o UID da série e o UID das instâncias mudaram: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
Usando os novos valores, recupere os metadados da instância.
Antes de usar os dados da solicitação, 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 ContentAPIs Explorer
Abra a 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.
Excluir tags
Os exemplos a seguir mostram como usar o objeto DeleteTag
para excluir tags específicas durante a desidentificação.
REST
Desidentifique o conjunto de dados.
Antes de usar os dados da solicitação, 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
Solicitar corpo JSON:
{ "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 ContentOPERATION_ID
. Você vai precisar desse valor na próxima etapa.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, 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 ContentAPIs Explorer
Abra a 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.
"done": true
, a operação de longa duração foi concluída.Depois que a desidentificação for bem-sucedida, será possível recuperar os metadados da instância desidentificada para ver como ela foi alterada. A instância desidentificada tem um novo UID de estudos, UID de série e UID de instâncias. Portanto, primeiro você precisa pesquisar o novo conjunto de dados para a instância desidentificada.
Antes de usar os dados da solicitação, 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 ContentVocê receberá uma resposta JSON semelhante a esta:
A tabela abaixo mostra como o UID dos estudos, o UID da série e o UID das instâncias mudaram: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
Usando os novos valores, recupere os metadados da instância.
Antes de usar os dados da solicitação, 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 ContentAPIs Explorer
Abra a 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.
Redefinir tags para um valor de marcador
Os exemplos a seguir mostram como usar o objeto ResetTag
para definir o valor das tags como a string PLACEHOLDER
durante a desidentificação.
REST
Desidentifique o conjunto de dados.
Antes de usar os dados da solicitação, 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
Solicitar corpo JSON:
{ "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 ContentOPERATION_ID
. Você vai precisar desse valor na próxima etapa.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, 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 ContentAPIs Explorer
Abra a 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.
"done": true
, a operação de longa duração foi concluída.Depois que a desidentificação for bem-sucedida, será possível recuperar os metadados da instância desidentificada para ver como ela foi alterada. A instância desidentificada tem um novo UID de estudos, UID de série e UID de instâncias. Portanto, primeiro você precisa pesquisar o novo conjunto de dados para a instância desidentificada.
Antes de usar os dados da solicitação, 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 ContentVocê receberá uma resposta JSON semelhante a esta:
A tabela abaixo mostra como o UID dos estudos, o UID da série e o UID das instâncias mudaram: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
Usando os novos valores, recupere os metadados da instância.
Antes de usar os dados da solicitação, 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 ContentAPIs Explorer
Abra a 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.
Mais especificamente, observe que o valor da tag
PatientName
está definido comoPLACEHOLDER
:Original metadata
Metadados 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 transformar os valores delas de acordo com a configuração no
objeto
TextConfig
.
Nesses exemplos, as opções a seguir são definidas no objeto Actions
:
- Um objeto
CleanTextTag
. - Uma lista
queries[]
contendo a tag DICOMPatientName
.
As seguintes opções são definidas no objeto TextConfig
:
- Um objeto
InfoTypeTransformation
que transforma o texto correspondente a um infoType específico. - Um objeto
ReplaceWithInfoTypeConfig
que substitui qualquer texto correspondente pelo nome do infoType. - Uma lista
infoTypes[]
contendo o infoTypePERSON_NAME
.
Com essas configurações definidas, a operação de desidentificação inspeciona a tag PatientName
, faz a correspondência com o infoType PERSON_NAME
e substitui o valor da tag pelo infoType PERSON_NAME
.
A tag PatientName
tem uma representação de valor (VR, na sigla em inglês) de PN
, que é uma das RVs compatíveis com o objeto CleanTextTag
.
REST
Desidentifique o conjunto de dados.
Antes de usar os dados da solicitação, 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
Solicitar corpo JSON:
{ "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 ContentOPERATION_ID
. Você vai precisar desse valor na próxima etapa.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, 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 ContentAPIs Explorer
Abra a 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.
"done": true
, a operação de longa duração foi concluída.Depois que a desidentificação for bem-sucedida, será possível recuperar os metadados da instância desidentificada para ver como ela foi alterada. A instância desidentificada tem um novo UID de estudos, UID de série e UID de instâncias. Portanto, primeiro você precisa pesquisar o novo conjunto de dados para a instância desidentificada.
Antes de usar os dados da solicitação, 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 ContentVocê receberá uma resposta JSON semelhante a esta:
A tabela abaixo mostra como o UID dos estudos, o UID da série e o UID das instâncias mudaram: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
Usando os novos valores, recupere os metadados da instância.
Antes de usar os dados da solicitação, 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 ContentAPIs Explorer
Abra a 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.
Mais especificamente, observe que o valor da tag
PatientName
está definido como[PERSON_NAME]
:Original metadata
Metadados 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 abaixo mostram como usar o objeto RegenUidTag
para substituir um
UID por um UID recém-gerado. A única RV que o objeto RegenUidTag
aceita é UI
.
Por padrão, o UID de todas as tags nos metadados de amostra com uma VR
de UI
é gerado durante a desidentificação. Para mostrar como gerar
um UID para uma tag específica, as opções abaixo são definidas
no exemplo:
ProfileType
é definido como o enumKEEP_ALL
, que impede que todos os metadados DICOM sejam desidentificados.PrimaryIdsOption
é definido como o enumKEEP
, o que deixa os IDs principais (StudyInstanceUID
,SeriesInstanceUID
,SOPInstanceUID
eMediaStorageSOPInstanceUID
) inalterados.
Quando essas opções são definidas, nenhum dos UIDs do ID principal nos dados de amostra é substituído
por valores recém-gerados. No entanto, ao adicionar SOPInstanceUID
à matriz
Action.queries[]
, você pode gerar um novo UID especificamente para a tag SOPInstanceUID
.
REST
Desidentifique o conjunto de dados.
Antes de usar os dados da solicitação, 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
Solicitar corpo JSON:
{ "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 ContentOPERATION_ID
. Você vai precisar desse valor na próxima etapa.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, 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 ContentAPIs Explorer
Abra a 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.
"done": true
, a operação de longa duração foi concluída.Depois que a desidentificação for bem-sucedida, será possível recuperar os metadados da instância desidentificada para ver como ela foi alterada. A instância desidentificada tem um novo UID porque você especificou a tag
SOPInstanceUID
na matrizAction.queries[]
. Portanto, primeiro é necessário pesquisar a instância desidentificada no novo conjunto de dados.Antes de usar os dados da solicitação, 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 ContentVocê 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
Usando o novo valor, recupere os metadados da instância.
Antes de usar os dados da solicitação, 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 ContentAPIs Explorer
Abra a 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.
Dos IDs principais, apenas 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 recursivamente tags DICOM aninhadas em um Sequence
.
O objeto RecurseTag
só oferece suporte à RV SQ
, que é a RV de
um Sequence
.
Para informações sobre a RV do SQ
, consulte 7.5 Transição de conjuntos de dados.
A instância de amostra DICOM
fornecida para esta página não contém tags DICOM com 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 em Criar instâncias DICOM a partir de metadados JSON e arquivos JPEG.
A instância DICOM criada nas etapas a seguir usa dados fictícios
e se destina apenas a ilustrar o comportamento de RecurseTag
.
Salve os seguintes metadados DICOM em um arquivo JSON chamado
instance.json
. Os metadados contêm uma tagPhysiciansReadingStudyIdentificationSequence
(00081062
). A tag tem um RVSQ
e duas tagsPersonIdentificationCodeSequence
(00401101
) aninhadas. As tags aninhadas também têm uma RVSQ
, 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" ] } } ] } } ] } }]
Faça o download do arquivo
google.jpg
para sua máquina local. A API DICOMweb da API Cloud Healthcare aceita qualquer imagem JPEG pareada com metadados JSON, desde que esses metadados sejam válidos.Execute os seguintes comandos para criar uma imagem de abertura (para os metadados JSON), meio (para o JPEG) e um 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
Una a imagem
google.jpg
aos limites médio e de fechamento. O arquivo de saída, que você envia para a API Cloud Healthcare, é chamado demultipart-request.file
:cat opening.file instance.json middle.file google.jpg closing.file > multipart-request.file
Armazene o arquivo
multipart-request.file
:REST
Antes de usar os dados da solicitação, 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 ContentVocê receberá uma resposta JSON semelhante a esta:
Conclua as etapas a seguir para desidentificar a instância DICOM armazenou.
REST
Desidentifique o conjunto de dados.
Antes de usar os dados da solicitação, 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
Solicitar corpo JSON:
{ "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 ContentOPERATION_ID
. Você vai precisar desse valor na próxima etapa.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, 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 ContentAPIs Explorer
Abra a 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.
"done": true
, a operação de longa duração foi concluída.Depois que a desidentificação for bem-sucedida, será possível recuperar os metadados da instância desidentificada para ver como ela foi alterada. A instância desidentificada tem um novo UID de estudos, UID de série e UID de instâncias. Portanto, primeiro você precisa pesquisar o novo conjunto de dados para a instância desidentificada.
Antes de usar os dados da solicitação, 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 ContentVocê receberá uma resposta JSON semelhante a esta:
A tabela abaixo mostra como o UID dos estudos, o UID da série e o UID das instâncias mudaram:
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
Usando os novos valores, recupere os metadados da instância.
Antes de usar os dados da solicitação, 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 ContentAPIs Explorer
Abra a 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.
Mais especificamente, observe que os valores das tags
CodeValue
eCodingSchemaDesignator
aninhadas estão definidos comoPLACEHOLDER
:Original metadata
Metadados 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 pordestinationStore
. - Adicione
dicomStores/DESTINATION_DICOM_STORE_ID
ao final do valor emdestinationStore
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 modificar a solicitação para uma desidentificação no nível do repositório 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 armazenamento DICOM e gravar os dados desidentificados em um novo armazenamento DICOM. Antes de executar as amostras, o ID do repositório DICOM de destino já precisa existir.
REST
Desidentifique o conjunto de dados.
Antes de usar os dados da solicitação, 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.
Solicitar corpo JSON:
{ "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 ContentOPERATION_ID
. Você vai precisar desse valor na próxima etapa.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, 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 ContentAPIs Explorer
Abra a 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.
"done": true
, a operação de longa duração foi concluída.Depois que a desidentificação for bem-sucedida, será possível recuperar os metadados da instância desidentificada para ver como ela foi alterada. A instância desidentificada tem um novo UID de estudos, UID de série e UID de instâncias. Portanto, primeiro você precisa pesquisar o novo conjunto de dados para a instância desidentificada.
Antes de usar os dados da solicitação, 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 ContentVocê receberá uma resposta JSON semelhante a esta:
A tabela abaixo mostra como o UID dos estudos, o UID da série e o UID das instâncias mudaram: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
Usando os novos valores, recupere os metadados da instância.
Antes de usar os dados da solicitação, 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 ContentAPIs Explorer
Abra a 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.
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 for 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:
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]
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.
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 gsutil cp
:
gsutil cp PATH/TO/FILTER_FILE gs://BUCKET/DIRECTORY
Exemplo:
gsutil 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 expande a Como desidentificar dados no nível do armazenamento DICOM, mas um arquivo de filtro no Cloud Storage é fornecido para determinar quais recursos DICOM são desidentificados.
REST
Desidentifique o conjunto de dados.
Antes de usar os dados da solicitação, 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
Solicitar corpo JSON:
{ "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 ContentUse 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, 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 ContentAPIs Explorer
Abra a 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.
"done": true
, a operação de longa duração foi concluída.Depois que a desidentificação for bem-sucedida, será possível recuperar os metadados da instância desidentificada para ver como ela foi alterada. A instância desidentificada tem um novo UID de estudos, UID de série e UID de instâncias. Portanto, primeiro você precisa pesquisar o novo conjunto de dados para a instância desidentificada.
Antes de usar os dados da solicitação, 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 ContentVocê receberá uma resposta JSON semelhante a esta:
A tabela abaixo mostra como o UID dos estudos, o UID da série e o UID das instâncias mudaram: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
Usando os novos valores, recupere os metadados da instância.
Antes de usar os dados da solicitação, 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 ContentAPIs Explorer
Abra a 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.
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.