Esta página explica como usar a configuração DicomConfig
da v1 para desidentificar dados sensíveis 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.
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 a operação datasets.deidentify
. A chamada de API de desidentificação 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 a operação
deidentify
, todas as instâncias em todos os armazenamentos DICOM no conjunto de dados são desidentificadas. - O 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 o 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
e fazendo o seguinte:- Como definir o campo
config
do corpo da solicitação - Armazenar no Cloud Storage em um formato JSON e especificar o local do arquivo no bucket usando o campo
gcsConfigUri
do corpo da solicitação
- Como definir o campo
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
. A chamada de API de desidentificação 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
deidentify
, todas as instâncias no armazenamento DICOM são desidentificadas. - O armazenamento DICOM de destino: a desidentificação não afeta o armazenamento DICOM original nem 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
a loja DICOM. É 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
e transmitindo-o fazendo um dos seguintes:- Como definir o campo
config
do corpo da solicitação - Armazenar no Cloud Storage em um formato JSON e especificar o local do arquivo no bucket usando o campo
gcsConfigUri
do corpo da solicitação
- Como definir o campo
Para um exemplo de como desidentificar dados DICOM no nível do armazenamento DICOM, consulte Como desidentificar dados no nível do armazenamento DICOM.
Filtros
É possível desidentificar um subconjunto de dados em um armazenamento DICOM configurando um arquivo de filtro e especificando o arquivo na solicitação dicomStores.deidentify
. Para ver um exemplo, consulte Como desidentificar um subconjunto de um armazenamento DICOM.
Visão geral das amostras
As amostras neste guia usam uma única instância DICOM, mas também é possível desidentificar várias instâncias.
Cada uma das seções a seguir fornece amostras de como desidentificar dados DICOM usando vários métodos. Uma saída da imagem desidentificada é fornecida com cada amostra. Cada amostra 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.
Como 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 DicomConfig
:
keepList
: lista de tags a serem mantidas. Remova todas as outras tags.removeList
: lista de tags a serem removidas. Manter todas as outras tags.filterProfile
: um perfil de filtragem de tags usado para determinar quais tags manter ou remover.
Para cada amostra nesta seção, a saída dos metadados alterados da instância DICOM é fornecida. Veja a seguir os metadados originais da instância usados como entrada para cada amostra:
[
{
"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"]}
}
]
Desidentificação usando tags keeplist
Quando você especifica uma tag keeplist no objeto DicomConfig
, as seguintes tags são adicionadas por padrão:
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
A operação deidentify
não edita as tags anteriores. No entanto, os valores de algumas das tags são gerados novamente, o que significa que eles são substituídos por um valor diferente por meio de uma transformação determinística.
Para mais informações, consulte Opção de retenção de UIDs
no padrão DICOM. Para manter os valores originais das tags anteriores, use a opção SkipIdRedaction
.
Se não forem fornecidas tags de manutenção, nenhuma tag DICOM no conjunto de dados será editada.
Os exemplos a seguir mostram como desidentificar um conjunto de dados contendo armazenamentos e dados DICOM, deixando algumas tags inalteradas.
Depois de enviar a imagem para a API Cloud Healthcare, a imagem aparece da seguinte maneira. Embora os metadados exibidos nos cantos superiores da imagem foram editados, as Informações protegidas de saúde (PHI, na sigla em inglês) gravadas na parte inferior da imagem permanecem. Para remover também o texto gravado, consulte Como editar texto gravado das imagens.
REST
Desidentifique o conjunto de dados.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- LOCATION: o local do conjunto de dados;
- SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
Corpo JSON da solicitação:
{ "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "keepList": { "tags": [ "PatientID" ] } } } }
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/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "keepList": { "tags": [ "PatientID" ] } } } } 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: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/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "keepList": { "tags": [ "PatientID" ] } } } } '@ | 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:deidentify" | Select-Object -Expand Content- Use o método
projects.locations.datasets.operations.get
para conferir o status da operação de longa duração.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- DATASET_ID: o ID do conjunto de dados;
- LOCATION: o local do conjunto de dados;
- 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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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, você poderá recuperar os metadados da
instância desidentificada para ver como ela foi alterada. A instância desidentificada
tem um novo UID de estudos, de série e de instâncias. Portanto, primeiro você precisa
procurar a instância desidentificada no novo conjunto de dados.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Ele é igual ao 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/v1/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/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | 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.
Você receberá uma resposta JSON semelhante a esta:
A tabela a seguir mostra como os UIDs de estudos, de série e de instâncias foram alterados:Metadados da instância original Metadados de instância desidentificados UID de estudos ( 0020000D
)2.25.70541616638819138568043293671559322355
1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
UID da série ( 0020000E
)1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694
1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
UID das instâncias ( 00080018
)1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695
1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
Usando os novos valores, extraia os metadados da instância.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- LOCATION: o local do conjunto de dados;
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Ele é igual ao 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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"PowerShell
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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand 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.
Go
Java
Node.js
Python
Desidentificação usando tags removelist
É possível especificar removelist no objeto DicomConfig
. A operação deidentify
editará somente as tags especificadas na lista. Se nenhuma tag de remoção for fornecida, a operação de desidentificação continuará normalmente, mas nenhuma tag DICOM no conjunto de dados de destino será editada.
Quando você especifica uma lista de remoção, a tag OverlayData
é adicionada por padrão porque os dados de sobreposição podem conter PHI.
As tags adicionadas por padrão a uma keeplist não podem ser adicionadas a uma lista de remoção.
Os exemplos a seguir mostram como desidentificar um conjunto de dados contendo armazenamentos e dados DICOM removendo todas as tags na removelist. As tags que não estão na removelist não são alteradas.
Depois de enviar a imagem para a API Cloud Healthcare, a imagem aparece da seguinte maneira. Das tags fornecidas na lista de remoção, apenas PatientBirthDate
é removido na imagem, já que é a única tag da remoção que
corresponde aos metadados visíveis na imagem.
Enquanto o PatientBirthDate
no canto superior da imagem foi editado de acordo com a configuração na removelist, a PHI gravada na parte inferior da imagem permanece. Para remover também o texto gravado, consulte Como editar texto gravado das imagens.
REST
Desidentifique o conjunto de dados.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- LOCATION: o local do conjunto de dados;
- SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
Corpo JSON da solicitação:
{ "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "removeList": { "tags": [ "PatientBirthName", "PatientBirthDate", "PatientAge", "PatientSize", "PatientWeight", "PatientAddress", "PatientMotherBirthName" ] } } } }
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/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "removeList": { "tags": [ "PatientBirthName", "PatientBirthDate", "PatientAge", "PatientSize", "PatientWeight", "PatientAddress", "PatientMotherBirthName" ] } } } } 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: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/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "removeList": { "tags": [ "PatientBirthName", "PatientBirthDate", "PatientAge", "PatientSize", "PatientWeight", "PatientAddress", "PatientMotherBirthName" ] } } } } '@ | 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:deidentify" | Select-Object -Expand Content- Use o método
projects.locations.datasets.operations.get
para conferir o status da operação de longa duração.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- DATASET_ID: o ID do conjunto de dados;
- LOCATION: o local do conjunto de dados;
- 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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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, você poderá recuperar os metadados da
instância desidentificada para ver como ela foi alterada. A instância desidentificada
tem um novo UID de estudos, de série e de instâncias. Portanto, primeiro você precisa
procurar a instância desidentificada no novo conjunto de dados.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Ele é igual ao 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/v1/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/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | 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.
Você receberá uma resposta JSON semelhante a esta:
A tabela a seguir mostra como os UIDs de estudos, de série e de instâncias foram alterados:Metadados da instância original Metadados de instância desidentificados UID de estudos ( 0020000D
)2.25.70541616638819138568043293671559322355
1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
UID da série ( 0020000E
)1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694
1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
UID das instâncias ( 00080018
)1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695
1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
Usando os novos valores, extraia os metadados da instância.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- LOCATION: o local do conjunto de dados;
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Ele é igual ao 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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"PowerShell
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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand 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.
Desidentificação usando um perfil de filtro de tag
Em vez de especificar quais tags manter ou remover, é possível configurar um TagFilterProfile
no objeto DicomConfig
. Um perfil de filtro de tag é um perfil predefinido que determina quais tags manter, remover ou transformar. Consulte a documentação do TagFilterProfile
para ver os perfis disponíveis.
Nas amostras a seguir, você verá como desidentificar um conjunto de dados contendo armazenamentos e dados DICOM usando o perfil de filtro de tag ATTRIBUTE_CONFIDENTIALITY_BASIC_PROFILE
.
Esse perfil de filtro remove tags com base no Perfil básico de confidencialidade do atributo DICOM.
A API Cloud Healthcare não está totalmente em conformidade com o perfil básico de confidencialidade de atributos. Por exemplo, a API Cloud Healthcare
não verifica restrições de definição de objeto de informação (IOD, na sigla em inglês)
ao selecionar uma ação para uma tag.
Depois de enviar a imagem para a API Cloud Healthcare usando o perfil de filtro da tag ATTRIBUTE_CONFIDENTIALITY_BASIC_PROFILE
, a imagem aparece da seguinte maneira. Embora os metadados exibidos nos cantos superiores da imagem tenham sido editados, o PHI gravado na parte inferior da imagem permanece.
Para remover também o texto gravado, consulte Como editar texto gravado das imagens.
REST
Desidentifique o conjunto de dados.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- LOCATION: o local do conjunto de dados;
- SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
Corpo JSON da solicitação:
{ "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "ATTRIBUTE_CONFIDENTIALITY_BASIC_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/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "ATTRIBUTE_CONFIDENTIALITY_BASIC_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/v1/projects/PROJECT_ID/locations/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/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "ATTRIBUTE_CONFIDENTIALITY_BASIC_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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content- Use o método
projects.locations.datasets.operations.get
para conferir o status da operação de longa duração.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- DATASET_ID: o ID do conjunto de dados;
- LOCATION: o local do conjunto de dados;
- 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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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, você poderá recuperar os metadados da
instância desidentificada para ver como ela foi alterada. A instância desidentificada
tem um novo UID de estudos, de série e de instâncias. Portanto, primeiro você precisa
procurar a instância desidentificada no novo conjunto de dados.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Ele é igual ao 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/v1/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/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | 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.
Você receberá uma resposta JSON semelhante a esta:
A tabela a seguir mostra como os UIDs de estudos, de série e de instâncias foram alterados:Metadados da instância original Metadados de instância desidentificados UID de estudos ( 0020000D
)2.25.70541616638819138568043293671559322355
1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
UID da série ( 0020000E
)1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694
1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
UID das instâncias ( 00080018
)1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695
1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
Usando os novos valores, extraia os metadados da instância.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- LOCATION: o local do conjunto de dados;
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Ele é igual ao 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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"PowerShell
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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand 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.
Como desidentificar dados no console do Google Cloud
Para desidentificar dados no console do Google Cloud, siga estas etapas:
No console do Google Cloud, acesse a página "Conjuntos de dados".
Escolha Desidentificar na lista Ações do conjunto de dados que você está desidentificando.
A página Desidentificar conjunto de dados é exibida.
Selecione Definir conjunto de dados de destino e insira um nome para o novo conjunto de dados para armazenar seus dados desidentificados.
Selecione Desidentificação da tag DICOM para selecionar o perfil para o qual os dados são desidentificados. Os dados podem ser desidentificados da seguinte maneira:
KEEP_ALL_PROFILE
: manter todas as metatags DICOMDEIDENTIFY_TAG_CONTENTS
: desidentificar dados nas metatagsATTRIBUTE_CONFIDENTIALITY_BASIC_PROFILE
: remover metatags de acordo com o perfil básico no padrão DICOMMINIMAL_KEEP_LIST_PROFILE
: manter apenas as metatags necessárias para um objeto DICOM válido.- Ignorar edição de ID: gerar novamente os campos UID, conforme determinado pelo padrão DICOM
Selecione Edição de texto gravado no DICOM para configurar como a edição de imagens é executada durante a desidentificação. Você pode configurar a edição da imagem da seguinte maneira:
REDACT_NO_TEXT
: não editar texto em imagens.REDACT_SENSITIVE_TEXT
: editar somente texto confidencial em imagensREDACT_ALL_TEXT
: editar todo o texto nas imagens
Clique em Desidentificar para desidentificar os dados no conjunto de dados.
Como editar texto gravado de imagens
A API Cloud Healthcare pode editar texto gravado confidencial de imagens. Os dados confidenciais, como PHI, são detectados pela API, que os oculta usando um retângulo opaco. A API retorna as mesmas imagens DICOM fornecidas no mesmo formato, mas qualquer texto identificado como contendo informações confidenciais de acordo com seus critérios é editado.
É possível editar texto gravado de imagens ao especificar uma opção TextRedactionMode
dentro de um objeto ImageConfig
. Consulte a documentação TextRedactionMode
para ver os possíveis valores.
Como editar todo o texto gravado de uma imagem
Os exemplos a seguir mostram como editar todo o texto gravado de imagens DICOM em um conjunto de dados. Isso é feito especificando REDACT_ALL_TEXT
no campo TextRedactionMode
.
Depois de enviar a imagem para a API Cloud Healthcare usando a opção REDACT_ALL_TEXT
, a imagem aparece da seguinte maneira. Embora o texto gravado na parte inferior da imagem tenha sido removido, os metadados nos cantos superiores da imagem permanecem. Para remover os metadados, consulte Como desidentificar tags DICOM.
REST
Desidentifique o conjunto de dados.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- LOCATION: o local do conjunto de dados;
- SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
Corpo JSON da solicitação:
{ "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": {}, "image": { "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/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": {}, "image": { "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/v1/projects/PROJECT_ID/locations/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/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": {}, "image": { "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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content- Use o método
projects.locations.datasets.operations.get
para conferir o status da operação de longa duração.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- DATASET_ID: o ID do conjunto de dados;
- LOCATION: o local do conjunto de dados;
- 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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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, você poderá recuperar os metadados da
instância desidentificada para ver como ela foi alterada. A instância desidentificada
tem um novo UID de estudos, de série e de instâncias. Portanto, primeiro você precisa
procurar a instância desidentificada no novo conjunto de dados.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Ele é igual ao 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/v1/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/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | 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.
Você receberá uma resposta JSON semelhante a esta:
A tabela a seguir mostra como os UIDs de estudos, de série e de instâncias foram alterados:Metadados da instância original Metadados de instância desidentificados UID de estudos ( 0020000D
)2.25.70541616638819138568043293671559322355
1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
UID da série ( 0020000E
)1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694
1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
UID das instâncias ( 00080018
)1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695
1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
Como editar apenas texto confidencial gravado de uma imagem
Os exemplos a seguir mostram como editar texto gravado confidencial de imagens DICOM em um conjunto de dados. Isso é feito especificando REDACT_SENSITIVE_TEXT
no campo TextRedactionMode
.
Os infoTypes especificados nos infoTypes DICOM padrão são editados quando REDACT_SENSITIVE_TEXT
é especificado. Um infoType personalizado adicional para identificadores de pacientes, como números de registros médicos (MRNs, na sigla em inglês), também é aplicado e os identificadores de pacientes são editados.
A imagem a seguir mostra um raio-x não editado de um paciente:
Depois de enviar a imagem para a API Cloud Healthcare usando a opção REDACT_SENSITIVE_TEXT
, a imagem aparece da seguinte maneira:
É possível ver que ocorreu o seguinte:
- O
PERSON_NAME
no canto inferior esquerdo da imagem foi editado. - O
DATE
no canto inferior esquerdo da imagem foi editado.
O sexo do paciente não foi editado porque não é considerado texto confidencial de acordo com os infoTypes DICOM padrão.
REST
Desidentifique o conjunto de dados.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- LOCATION: o local do conjunto de dados;
- SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
Corpo JSON da solicitação:
{ "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": {}, "image": { "textRedactionMode": "REDACT_SENSITIVE_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/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": {}, "image": { "textRedactionMode": "REDACT_SENSITIVE_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/v1/projects/PROJECT_ID/locations/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/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": {}, "image": { "textRedactionMode": "REDACT_SENSITIVE_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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content- Use o método
projects.locations.datasets.operations.get
para conferir o status da operação de longa duração.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- DATASET_ID: o ID do conjunto de dados;
- LOCATION: o local do conjunto de dados;
- 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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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, você poderá recuperar os metadados da
instância desidentificada para ver como ela foi alterada. A instância desidentificada
tem um novo UID de estudos, de série e de instâncias. Portanto, primeiro você precisa
procurar a instância desidentificada no novo conjunto de dados.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Ele é igual ao 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/v1/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/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | 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.
Você receberá uma resposta JSON semelhante a esta:
A tabela a seguir mostra como os UIDs de estudos, de série e de instâncias foram alterados:Metadados da instância original Metadados de instância desidentificados UID de estudos ( 0020000D
)2.25.70541616638819138568043293671559322355
1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763
UID da série ( 0020000E
)1.2.276.0.7230010.3.1.3.8323329.78.1531234558.523694
1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710
UID das instâncias ( 00080018
)1.2.276.0.7230010.3.1.4.8323329.78.1539083058.523695
1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029
Como combinar desidentificação de tag e edição de texto gravado
É possível combinar a desidentificação usando tags com a edição de texto gravado de imagens para identificar instâncias DICOM em um nível mais granular. Por exemplo, combinando REDACT_ALL_TEXT
no campo TextRedactionMode
com DEIDENTIFY_TAG_CONTENTS
no campo TagFilterProfile
, é possível usar as seguintes funções:
REDACT_ALL_TEXT
: editar todo o texto gravado na imagem.DEIDENTIFY_TAG_CONTENTS
: inspecionar o conteúdo da tag e transformar o texto confidencial. Para mais informações sobre o comportamento deDEIDENTIFY_TAG_CONTENTS
, consulte Configuração padrão.
Depois de enviar a imagem para a API Cloud Healthcare usando as opções REDACT_ALL_TEXT
e DEIDENTIFY_TAG_CONTENTS
, a imagem aparece da seguinte maneira. Observe as seguintes alterações:
- Os nomes no canto superior esquerdo e no canto superior direito da imagem foram transformados usando um
CryptoHashConfig
. - As datas no canto superior esquerdo e superior direito da imagem foram transformadas usando um
DateShiftConfig
. - O texto gravado na parte inferior da imagem foi editado.
REST
Desidentifique o conjunto de dados.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- LOCATION: o local do conjunto de dados;
- SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
Corpo JSON da solicitação:
{ "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "image": { "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/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "image": { "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/v1/projects/PROJECT_ID/locations/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/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "image": { "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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content- Use o método
projects.locations.datasets.operations.get
para conferir o status da operação de longa duração.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- DATASET_ID: o ID do conjunto de dados;
- LOCATION: o local do conjunto de dados;
- 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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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, você poderá recuperar os metadados da
instância desidentificada para ver como ela foi alterada. A instância desidentificada
tem um novo UID de estudos, de série e de instâncias. Portanto, primeiro você precisa
procurar a instância desidentificada no novo conjunto de dados.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Ele é igual ao 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/v1/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/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | 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.
Você receberá uma resposta JSON semelhante a esta:
Usando os novos valores, extraia os metadados da instância.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- LOCATION: o local do conjunto de dados;
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Ele é igual ao 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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"PowerShell
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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand 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.
Como usar infoTypes e transformações primitivas com tags DICOM
A API Cloud Healthcare pode usar tipos de informações (infoTypes) para definir quais dados ela verifica 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.
As transformações primitivas são regras usadas para transformar um valor de entrada. É possível personalizar como as tags DICOM são desidentificadas aplicando uma transformação primitiva ao infoType de cada tag. Por exemplo, é possível desidentificar o sobrenome de um paciente e substituí-lo por uma série de asteriscos especificando o infoType LAST_NAME
pela transformação primitiva CharacterMaskConfig
.
InfoTypes DICOM padrão
Os infoTypes DICOM padrão usados ao desidentificar metadados são:
AGE
CREDIT_CARD_NUMBER
DATE
EMAIL_ADDRESS
IP_ADDRESS
LOCATION
MAC_ADDRESS
PASSPORT
PERSON_NAME
PHONE_NUMBER
SWIFT_CODE
US_DRIVERS_LICENSE_NUMBER
US_SOCIAL_SECURITY_NUMBER
US_VEHICLE_IDENTIFICATION_NUMBER
US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER
Quando você desidentifica o texto confidencial em imagens usando REDACT_SENSITIVE_TEXT
, a API Cloud Healthcare usa os infoTypes acima, mas um infoType personalizado adicional para identificadores de pacientes, como Números de registro médico (MRNs, na sigla em inglês), também são aplicados a texto confidencial na imagem.
Opções de transformação primitivas
As opções de transformação primitiva da API Cloud Healthcare incluem:
RedactConfig
: edita um valor removendo-o.CharacterMaskConfig
: mascara uma string total ou parcialmente substituindo os caracteres de entrada por um caractere fixo especificado.DateShiftConfig
: altera as datas para um número aleatório de dias, com a opção de ser consistente para o mesmo contexto.CryptoHashConfig
: usa SHA-256 para substituir valores de entrada por uma representação codificada em base64 de uma string de saída gerada por hash usando uma determinada chave de criptografia de dados.ReplaceWithInfoTypeConfig
: substitui um valor de entrada pelo nome de seu infoType.
Como especificar configurações em TextConfig
InfoTypes e transformações primitivas são especificadas em um InfoTypeTransformation
, que é um objeto dentro de TextConfig
.
Os InfoTypes são inseridos na matriz infoTypes
como valores separados por vírgula.
Especificar um infoType é opcional. Se você não especificar pelo menos um infoType, a transformação será aplicada aos infoTypes DICOM padrão encontrados na API Cloud Healthcare.
Se você especificar qualquer infoTypes em InfoTypeTransformation
, será necessário especificar pelo menos uma transformação primitiva.
É possível aplicar um InfoTypeTransformation
apenas ao perfil DEIDENTIFY_TAG_CONTENTS
.
Um InfoTypeTransformation
não pode ser aplicado aos outros perfis listados em TagFilterProfile
.
As seções a seguir mostram como usar as transformações primitivas disponíveis em InfoTypeTransformation
junto com infoTypes para personalizar como as tags DICOM são desidentificadas. As
amostras usam a imagem de amostra
fornecida na Visão geral de amostras
e os metadados de amostra fornecidos em Como desidentificar tags DICOM.
Configuração padrão
Por padrão, quando o perfil DEIDENTIFY_TAG_CONTENTS
é definido sem fornecer qualquer configuração no objeto TextConfig
, a API Cloud Healthcare substitui os dados confidenciais usando os infoTypes DICOM padrão.
No entanto, há um comportamento diferente para os infoTypes DATE
e PERSON_NAME
, conforme mostrado abaixo:
- Um
DateShiftConfig
é aplicado ao texto classificado como um infoTypeDATE
. ODateShiftConfig
usa uma técnica de mudança de data com um diferença de 100 dias. - Um
CryptoHashConfig
é aplicado ao texto classificado como um infoTypePERSON_NAME
. OCryptoHashConfig
executa tokenização gerando um valor alternativo usando hash criptográfico.
O seguinte comportamento também se aplica:
- Todas as idades de pacientes com um valor maior ou igual a 90 são convertidas em 90.
- Se uma transformação não puder ser aplicada devido a restrições de formato DICOM, será fornecido um valor de marcador que corresponda à Representação de valor (RV) da tag.
- Todos os outros valores que correspondem a um dos infoTypes DICOM padrão na API Cloud Healthcare são substituídos pelo infoType. Por exemplo, se a tag
PatientComments
contivesse a string "Ann Johnson foi para o hospital de Anytown", "Anytown" seria substituída pelo infoTypeLOCATION
.
Nas amostras a seguir, você verá a saída do uso do perfil padrão DEIDENTIFY_TAG_CONTENTS
em um conjunto de dados contendo armazenamentos DICOM e dados DICOM. É possível comparar essa saída padrão com as saídas ao usar as várias transformações primitivas com combinações de infoType. As amostras usam uma única
instância DICOM, mas você pode desidentificar várias instâncias.
Depois de enviar a imagem para a API Cloud Healthcare usando o perfil
DEIDENTIFY_TAG_CONTENTS
, a imagem aparece da seguinte maneira.
Observe as seguintes alterações:
- Os nomes no canto superior esquerdo e no canto superior direito da imagem foram transformados usando um
CryptoHashConfig
. - As datas no canto superior esquerdo e superior direito da imagem foram transformadas usando um
DateShiftConfig
.
REST
Desidentifique o conjunto de dados.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- LOCATION: o local do conjunto de dados;
- SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
Corpo JSON da solicitação:
{ "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" } } }
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/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" } } } 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: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/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" } } } '@ | 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:deidentify" | Select-Object -Expand Content- Use o método
projects.locations.datasets.operations.get
para conferir o status da operação de longa duração.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- DATASET_ID: o ID do conjunto de dados;
- LOCATION: o local do conjunto de dados;
- 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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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, você poderá recuperar os metadados da
instância desidentificada para ver como ela foi alterada. A instância desidentificada
tem um novo UID de estudos, de série e de instâncias. Portanto, primeiro você precisa
procurar a instância desidentificada no novo conjunto de dados.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Ele é igual ao 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/v1/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/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | 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.
Você receberá uma resposta JSON semelhante a esta:
Usando os novos valores, extraia os metadados da instância.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- LOCATION: o local do conjunto de dados;
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Ele é igual ao 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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"PowerShell
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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand 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.
RedactConfig
Especificar redactConfig
edita um determinado valor removendo-o completamente.
A mensagem redactConfig
não tem argumentos. Especificá-la permite a transformação.
As amostras a seguir se expandem na configuração padrão, mas agora incluem a definição do infoType PERSON_NAME
com a transformação redactConfig
. O envio dessa solicitação edita todos os nomes da instância DICOM.
Depois de enviar a imagem para a API Cloud Healthcare usando a transformação redactConfig
, a imagem aparece da seguinte maneira:
REST
Desidentifique o conjunto de dados.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- LOCATION: o local do conjunto de dados;
- SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
Corpo JSON da solicitação:
{ "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "text": { "transformations": [ { "infoTypes": [ "PERSON_NAME" ], "redactConfig": {} } ] } } }
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/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "text": { "transformations": [ { "infoTypes": [ "PERSON_NAME" ], "redactConfig": {} } ] } } } 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: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/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "text": { "transformations": [ { "infoTypes": [ "PERSON_NAME" ], "redactConfig": {} } ] } } } '@ | 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:deidentify" | Select-Object -Expand Content- Use o método
projects.locations.datasets.operations.get
para conferir o status da operação de longa duração.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- DATASET_ID: o ID do conjunto de dados;
- LOCATION: o local do conjunto de dados;
- 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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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, você poderá recuperar os metadados da
instância desidentificada para ver como ela foi alterada. A instância desidentificada
tem um novo UID de estudos, de série e de instâncias. Portanto, primeiro você precisa
procurar a instância desidentificada no novo conjunto de dados.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Ele é igual ao 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/v1/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/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | 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.
Você receberá uma resposta JSON semelhante a esta:
Usando os novos valores, extraia os metadados da instância.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- LOCATION: o local do conjunto de dados;
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Ele é igual ao 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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"PowerShell
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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand 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.
A saída mostra que os valores em ReferringPhysicianName
(00080090
) e PatientName
(00100010
) foram removidos. Isso é diferente da amostra na configuração padrão, em que esses valores foram transformados usando hash criptográfico.
CharacterMaskConfig
Especificar characterMaskConfig
substitui strings que correspondem aos infoTypes fornecidos por um caractere fixo especificado. Por exemplo, em vez de editar o nome de um paciente ou transformá-lo usando hash criptográfico, substitua o nome por uma série de asteriscos (*
). É possível especificar o caractere fixo como um valor para o campo maskingCharacter
.
As amostras a seguir se expandem na configuração padrão, mas agora incluem a definição do infoType LAST_NAME
com a transformação characterMaskConfig
. Nenhum caractere fixo é fornecido, por isso o padrão é usar asteriscos.
As amostras usam uma única instância DICOM, mas é possível desidentificar várias instâncias.
Depois de enviar a imagem para a API Cloud Healthcare usando a transformação characterMaskConfig
, a imagem aparece da seguinte maneira:
REST
Desidentifique o conjunto de dados.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- LOCATION: o local do conjunto de dados;
- SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
Corpo JSON da solicitação:
{ "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "text": { "transformations": [ { "infoTypes": [ "PERSON_NAME" ], "characterMaskConfig": { "maskingCharacter": "" } } ] } } }
Para enviar 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/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "text": { "transformations": [ { "infoTypes": [ "PERSON_NAME" ], "characterMaskConfig": { "maskingCharacter": "" } } ] } } } 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: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/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "text": { "transformations": [ { "infoTypes": [ "PERSON_NAME" ], "characterMaskConfig": { "maskingCharacter": "" } } ] } } } '@ | Out-File -FilePath request.json -Encoding utf8
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:deidentify" | Select-Object -Expand Content- Use o método
projects.locations.datasets.operations.get
para conferir o status da operação de longa duração.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- DATASET_ID: o ID do conjunto de dados;
- LOCATION: o local do conjunto de dados;
- 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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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, você poderá recuperar os metadados da
instância desidentificada para ver como ela foi alterada. A instância desidentificada
tem um novo UID de estudos, de série e de instâncias. Portanto, primeiro você precisa
procurar a instância desidentificada no novo conjunto de dados.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Ele é igual ao 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/v1/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/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | 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.
Você receberá uma resposta JSON semelhante a esta:
Usando os novos valores, extraia os metadados da instância.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- LOCATION: o local do conjunto de dados;
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Ele é igual ao 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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"PowerShell
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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand 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.
A saída mostra que os sobrenomes em ReferringPhysicianName
(00080090
) e PatientName
(00100010
) foram substituídos por
asteriscos. Isso é diferente da amostra na configuração padrão, em que esses valores foram transformados usando hash criptográfico.
DateShiftConfig
A API Cloud Healthcare pode transformar datas alterando-as dentro de um intervalo predefinido. Para manter as transformações de data consistentes em todas as
execuções de desidentificação, use DateShiftConfig
com uma destas opções:
- (Descontinuado): uma chave codificada em base 64 de 128/192/256 bits do AES.
- (Recomendado): uma chave encapsulada do Cloud Key Management Service (Cloud KMS). Consulte Como desidentificar e reidentificar textos sensíveis para conferir um exemplo de como usar chaves encapsuladas do Cloud KMS.
É necessário conceder um papel com a permissão cloudkms.cryptoKeyVersions.useToDecrypt
à conta de serviço do Agente de serviço do Cloud Healthcare
para descriptografar a chave encapsulada do Cloud KMS. Recomendamos usar o
papel descriptografador de CryptoKey do Cloud KMS (roles/cloudkms.cryptoKeyDecrypter
).
Quando você usa o Cloud KMS para operações criptográficas, são aplicadas cobranças. Consulte
Preços do Cloud Key Management Service para mais informações.
A API Cloud Healthcare usa essa chave para calcular a quantidade de datas, como a data de nascimento de um paciente, que são alteradas dentro de um diferencial de 100 dias.
Se você não fornecer uma chave, a API Cloud Healthcare gerará sua própria chave sempre que a operação de desidentificação for executada em valores de data. Isso pode resultar em saídas de data inconsistentes entre as execuções.
Nas amostras a seguir, você verá como definir os infoTypes DATE
e DATE_OF_BIRTH
com a transformação DateShiftConfig
em uma instância DICOM. Depois de enviar a solicitação de desidentificação para a API Cloud Healthcare, os valores de data na instância mudarão dentro de mais ou menos 100 dias dos valores originais.
A chave criptográfica fornecida, U2FsdGVkX19bS2oZsdbK9X5zi2utBn22uY+I2Vo0zOU=
, é uma chave codificada em base64 de 256 bits
criptografada com AES gerada usando o comando a seguir. Quando solicitado, uma senha vazia é fornecida ao comando:
echo -n "test" | openssl enc -e -aes-256-ofb -a -salt
Depois de enviar a imagem para a API Cloud Healthcare usando a transformação dateShiftConfig
, a imagem aparece da seguinte maneira:
REST
Desidentifique o conjunto de dados.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- LOCATION: o local do conjunto de dados;
- SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
Corpo JSON da solicitação:
{ "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "text": { "transformations": [ { "infoTypes": [ "DATE", "DATE_OF_BIRTH" ], "dateShiftConfig": { "cryptoKey": "U2FsdGVkX19bS2oZsdbK9X5zi2utBn22uY+I2Vo0zOU=" } } ] } } }
Para enviar 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/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "text": { "transformations": [ { "infoTypes": [ "DATE", "DATE_OF_BIRTH" ], "dateShiftConfig": { "cryptoKey": "U2FsdGVkX19bS2oZsdbK9X5zi2utBn22uY+I2Vo0zOU=" } } ] } } } 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: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/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "text": { "transformations": [ { "infoTypes": [ "DATE", "DATE_OF_BIRTH" ], "dateShiftConfig": { "cryptoKey": "U2FsdGVkX19bS2oZsdbK9X5zi2utBn22uY+I2Vo0zOU=" } } ] } } } '@ | Out-File -FilePath request.json -Encoding utf8
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:deidentify" | Select-Object -Expand Content- Use o método
projects.locations.datasets.operations.get
para conferir o status da operação de longa duração.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- DATASET_ID: o ID do conjunto de dados;
- LOCATION: o local do conjunto de dados;
- 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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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, você poderá recuperar os metadados da
instância desidentificada para ver como ela foi alterada. A instância desidentificada
tem um novo UID de estudos, de série e de instâncias. Portanto, primeiro você precisa
procurar a instância desidentificada no novo conjunto de dados.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Ele é igual ao 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/v1/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/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | 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.
Você receberá uma resposta JSON semelhante a esta:
Usando os novos valores, extraia os metadados da instância.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- LOCATION: o local do conjunto de dados;
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Ele é igual ao 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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"PowerShell
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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand 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.
A saída mostra que StudyDate
(00080020
) e PatientBirthDate
(00100030
) têm novos valores. Essas transformações ocorreram como resultado da combinação de 100 dias de diferença com o valor cryptoKey
fornecido. Os novos valores de data são consistentes para essa instância entre as execuções de desidentificação, desde que o mesmo cryptoKey
seja fornecido.
CryptoHashConfig
Deixe o cryptoHashConfig
vazio ou forneça:
- (Descontinuado): uma chave codificada em base 64 de 128/192/256 bits do AES.
- (Recomendado): uma chave encapsulada do Cloud Key Management Service (Cloud KMS). Consulte Como desidentificar e reidentificar textos sensíveis para conferir um exemplo de como usar chaves encapsuladas do Cloud KMS.
É necessário conceder um papel com a permissão cloudkms.cryptoKeyVersions.useToDecrypt
à conta de serviço do Agente de serviço do Cloud Healthcare
para descriptografar a chave encapsulada do Cloud KMS. Recomendamos o uso do
papel de descriptografador de CryptoKey do Cloud KMS (roles/cloudkms.cryptoKeyDecrypter
).
Quando você usa o Cloud KMS para operações criptográficas, são aplicadas cobranças. Consulte
Preços do Cloud Key Management Service para mais informações.
A API Cloud Healthcare pode transformar dados substituindo valores por hashes criptográficos (também chamados de valores alternativos). Para fazer isso, especifique uma mensagem cryptoHashConfig
.
Se você não fornecer uma chave, a API Cloud Healthcare vai gerar uma. A API Cloud Healthcare usa essa chave para gerar valores substitutos. Se você informar a mesma chave para cada execução, a API Cloud Healthcare vai gerar valores alternativos consistentes. Se você não fornecer uma chave, a API Cloud Healthcare vai gerar uma nova chave sempre que a operação for executada. O uso de uma chave diferente gera valores alternativos diferentes.
Nas amostras a seguir, você verá como aplicar uma transformação cryptoHashConfig
a todos os infoTypes DICOM padrão compatíveis com a API Cloud Healthcare. Depois de enviar a solicitação de desidentificação, os valores com um infoType DICOM correspondente na API Cloud Healthcare são substituídos por valores alternativos.
Na amostra você também verá como fornecer uma criptografia para gerar valores alternativos consistentes entre execuções de desidentificação.
A chave criptográfica fornecida, U2FsdGVkX19bS2oZsdbK9X5zi2utBn22uY+I2Vo0zOU=
, é uma chave codificada em base64 de 256 bits
criptografada com AES gerada usando o comando a seguir. Quando solicitado, uma senha vazia é fornecida ao comando:
echo -n "test" | openssl enc -e -aes-256-ofb -a -salt
Depois de enviar a imagem para a API Cloud Healthcare usando a transformação cryptoHashConfig
, a imagem aparece da seguinte maneira:
REST
Desidentifique o conjunto de dados.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- LOCATION: o local do conjunto de dados;
- SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
Corpo JSON da solicitação:
{ "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "text": { "transformations": [ { "infoTypes": [], "cryptoHashConfig": { "cryptoKey": "U2FsdGVkX19bS2oZsdbK9X5zi2utBn22uY+I2Vo0zOU=" } } ] } } }
Para enviar 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/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "text": { "transformations": [ { "infoTypes": [], "cryptoHashConfig": { "cryptoKey": "U2FsdGVkX19bS2oZsdbK9X5zi2utBn22uY+I2Vo0zOU=" } } ] } } } 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: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/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "text": { "transformations": [ { "infoTypes": [], "cryptoHashConfig": { "cryptoKey": "U2FsdGVkX19bS2oZsdbK9X5zi2utBn22uY+I2Vo0zOU=" } } ] } } } '@ | Out-File -FilePath request.json -Encoding utf8
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:deidentify" | Select-Object -Expand Content- Use o método
projects.locations.datasets.operations.get
para conferir o status da operação de longa duração.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- DATASET_ID: o ID do conjunto de dados;
- LOCATION: o local do conjunto de dados;
- 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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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, você poderá recuperar os metadados da
instância desidentificada para ver como ela foi alterada. A instância desidentificada
tem um novo UID de estudos, de série e de instâncias. Portanto, primeiro você precisa
procurar a instância desidentificada no novo conjunto de dados.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Ele é igual ao 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/v1/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/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | 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.
Você receberá uma resposta JSON semelhante a esta:
Usando os novos valores, extraia os metadados da instância.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- LOCATION: o local do conjunto de dados;
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Ele é igual ao 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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"PowerShell
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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand 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.
As transformações na saída são consistentes para essa instância entre as execuções de desidentificação, desde que o mesmo cryptoKey
seja fornecido.
ReplaceWithInfoTypeConfig
Especificar replaceWithInfoTypeConfig
substitui os valores de entrada pelo nome do infoType do valor.
Nas amostras a seguir, você verá como aplicar uma transformação replaceWithInfoTypeConfig
a todos os infoTypes DICOM padrão compatíveis com a API Cloud Healthcare.
A mensagem replaceWithInfoTypeConfig
não tem argumentos. Especificá-la permite a transformação.
Depois de enviar a imagem para a API Cloud Healthcare usando a transformação replaceWithInfoTypeConfig
, a imagem aparece da seguinte maneira:
REST
Desidentifique o conjunto de dados.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- LOCATION: o local do conjunto de dados;
- SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
Corpo JSON da solicitação:
{ "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "text": { "transformations": [ { "infoTypes": [], "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/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "text": { "transformations": [ { "infoTypes": [], "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/v1/projects/PROJECT_ID/locations/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/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "text": { "transformations": [ { "infoTypes": [], "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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify" | Select-Object -Expand Content- Use o método
projects.locations.datasets.operations.get
para conferir o status da operação de longa duração.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- DATASET_ID: o ID do conjunto de dados;
- LOCATION: o local do conjunto de dados;
- 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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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, você poderá recuperar os metadados da
instância desidentificada para ver como ela foi alterada. A instância desidentificada
tem um novo UID de estudos, de série e de instâncias. Portanto, primeiro você precisa
procurar a instância desidentificada no novo conjunto de dados.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- SOURCE_DATASET_LOCATION: o local do conjunto de dados de origem
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Ele é igual ao 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/v1/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/v1/projects/PROJECT_ID/locations/SOURCE_DATASET_LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/instances" | 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.
Você receberá uma resposta JSON semelhante a esta:
Usando os novos valores, extraia os metadados da instância.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- LOCATION: o local do conjunto de dados;
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Ele é igual ao 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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata"PowerShell
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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID/dicomWeb/studies/1.3.6.1.4.1.11129.5.1.201854290391432893460946240745559593763/series/1.3.6.1.4.1.11129.5.1.303327499491957026103380014864616068710/instances/1.3.6.1.4.1.11129.5.1.97415866390999888717168863957686758029/metadata" | Select-Object -Expand 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.
Como desidentificar dados no nível de armazenamento 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:
- Modifique o
destinationDataset
no corpo da solicitação paradestinationStore
. - 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.
Exemplo:
Desidentificação no nível do conjunto de dados:
"destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID" ... "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID:deidentify"
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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID:deidentify"
Os exemplos a seguir expandem a Combinação de desidentificação de tag e edição de texto gravado, mas a desidentificação ocorre em apenas um armazenamento DICOM e os dados desidentificados são copiados para um novo armazenamento DICOM. Antes de executar os exemplos, o armazenamento DICOM referenciado por DESTINATION_DICOM_STORE_ID já precisa existir.
Console
Para desidentificar dados em um armazenamento DICOM usando o console do Google Cloud, siga estas etapas:
No console do Google Cloud, acesse a página "Conjuntos de dados".
Clique no conjunto de dados que contém os dados que você quer desidentificar.
Na lista de armazenamentos DICOM, escolha Desidentificar na lista Ações do armazenamento DICOM que você está desidentificando.
A página Desidentificar armazenamento DICOM é exibida.
Selecione Definir armazenamento de dados de destino e escolha o conjunto de dados e o armazenamento DICOM em que os dados desidentificados serão salvos.
Selecione desidentificação da tag DICOM para configurar como os dados são desidentificados. Os dados podem ser desidentificados da seguinte maneira:
KEEP_ALL_PROFILE
: manter todas as metatags DICOMDEIDENTIFY_TAG_CONTENTS
: desidentificar dados nas metatagsATTRIBUTE_CONFIDENTIALITY_BASIC_PROFILE
: remover metatags de acordo com o perfil básico no padrão DICOMMINIMAL_KEEP_LIST_PROFILE
: manter apenas as metatags necessárias para um objeto DICOM válido.- Ignorar edição de ID: gere novamente os campos UID, conforme determinado pelo padrão DICOM.
Selecione Edição de texto gravado no DICOM para configurar como a edição de imagens é executada durante a desidentificação. Você pode configurar a edição da imagem da seguinte maneira:
REDACT_NO_TEXT
: não editar texto em imagens.REDACT_SENSITIVE_TEXT
: editar somente texto confidencial em imagensREDACT_ALL_TEXT
: editar todo o texto nas imagens
Clique em Desidentificar para desidentificar os dados no armazenamento DICOM.
REST
Desidentifique o conjunto de dados.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- LOCATION: o local do conjunto de dados;
- SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
- SOURCE_DICOM_STORE_ID: o ID do armazenamento DICOM que contém os dados a serem desidentificados
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino
Corpo JSON da solicitação:
{ "destinationStore": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "image": { "textRedactionMode": "REDACT_ALL_TEXT" } } }
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" } } } 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" } } } '@ | Out-File -FilePath request.json -Encoding utf8
Depois execute o comando a seguir para enviar a solicitação REST:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID:deidentify" | Select-Object -Expand Content- Use o método
projects.locations.datasets.operations.get
para conferir o status da operação de longa duração.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- DATASET_ID: o ID do conjunto de dados;
- LOCATION: o local do conjunto de dados;
- 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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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.
Como 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
.
Como 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
Como 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:
Consultar os UIDs de estudo, série e instância que você tem 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.
Como criar um arquivo de filtro manualmente
É possível criar um arquivo de filtro com conteúdo personalizado e fazer o upload dele para um bucket do Cloud Storage.
Você usará o local do arquivo de filtro no Cloud Storage ao especificar o filtro na operação de desidentificação. Na amostra a seguir, você verá como fazer upload de um arquivo de filtro para um bucket do Cloud Storage usando o comando gcloud storage cp
:
gcloud storage cp PATH/TO/FILTER_FILE gs://BUCKET/DIRECTORY
Exemplo:
gcloud storage cp /home/user/Desktop/filters.txt gs://my-bucket/my-directory
Como 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
.
A amostra a seguir se expande em Como desidentificar dados no nível de 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 abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- LOCATION: o local do conjunto de dados;
- SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a serem desidentificados
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino em que os dados desidentificados são gravados
- SOURCE_DICOM_STORE_ID: o ID do armazenamento DICOM que contém os dados a serem desidentificados
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino
- BUCKET/PATH/TO/FILE: o local do arquivo de filtro em um bucket do Cloud Storage
Corpo JSON da solicitação:
{ "destinationStore": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "image": { "textRedactionMode": "REDACT_ALL_TEXT" } }, "filterConfig": { "resourcePathGcsUri": "gs://BUCKET/PATH/TO/FILE" } }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo chamado
request.json
. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:cat > request.json << 'EOF' { "destinationStore": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "image": { "textRedactionMode": "REDACT_ALL_TEXT" } }, "filterConfig": { "resourcePathGcsUri": "gs://BUCKET/PATH/TO/FILE" } } EOF
Depois execute o comando a seguir para enviar a solicitação REST:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID:deidentify"PowerShell
Salve o corpo da solicitação em um arquivo chamado
request.json
. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:@' { "destinationStore": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "image": { "textRedactionMode": "REDACT_ALL_TEXT" } }, "filterConfig": { "resourcePathGcsUri": "gs://BUCKET/PATH/TO/FILE" } } '@ | Out-File -FilePath request.json -Encoding utf8
Depois execute o comando a seguir para enviar a solicitação REST:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID:deidentify" | Select-Object -Expand Content- Use o método
projects.locations.datasets.operations.get
para conferir o status da operação de longa duração.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- DATASET_ID: o ID do conjunto de dados;
- LOCATION: o local do conjunto de dados;
- 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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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/v1/projects/PROJECT_ID/locations/LOCATION/datasets/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.
Solução de problemas de operações de desidentificação para 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.