Esta página explica como usar a configuração da v1 DicomConfig
para remover a identificação de dados confidenciais em instâncias DICOM nos seguintes níveis:
- Ao nível do conjunto de dados, usando
datasets.deidentify
- Ao nível do armazenamento DICOM, através de
dicomStores.deidentify
Esta página também explica como aplicar filtros ao remover a identificação dos dados ao nível do armazenamento DICOM.
Vista geral da desidentificação
Desidentificação ao nível do conjunto de dados
Para desidentificar dados DICOM ao nível do conjunto de dados, chame a operação
datasets.deidentify
. A chamada da API de desidentificação tem os seguintes componentes:
- O conjunto de dados de origem: um conjunto de dados que contém arquivos DICOM com uma ou mais instâncias que têm dados confidenciais. Quando chama a operação
deidentify
, todas as instâncias em todos os arquivos DICOM no conjunto de dados são anonimizadas. - O conjunto de dados de destino: a anulação da identificação não afeta o conjunto de dados original nem os respetivos dados. Em vez disso, são escritas cópias anonimizadas dos dados originais num novo conjunto de dados, denominado conjunto de dados de destino.
- O que desidentificar: parâmetros de configuração que especificam como processar o conjunto de dados. Pode configurar a desidentificação de DICOM para desidentificar metadados de instâncias DICOM (através de palavras-chave de etiquetas) ou texto incorporado em imagens DICOM especificando estes parâmetros num objeto
DeidentifyConfig
e fazendo o seguinte:- Definir o campo
config
do corpo do pedido - Armazená-lo no Cloud Storage num formato JSON e especificar a localização do ficheiro no contentor através do campo
gcsConfigUri
do corpo do pedido
- Definir o campo
A maioria dos exemplos neste guia mostra como anular a identificação dos dados DICOM ao nível do conjunto de dados.
Desidentificação ao nível do armazenamento DICOM
A remoção da identificação dos dados DICOM ao nível do armazenamento DICOM permite-lhe ter mais controlo sobre os dados cuja identificação é removida. Por exemplo, se tiver um conjunto de dados com várias lojas DICOM, pode remover a identificação de cada loja DICOM de acordo com o tipo de dados existente na loja.
Para remover a identificação dos dados DICOM num arquivo DICOM, chame o método
dicomStores.deidentify
. A chamada da API de desidentificação tem os seguintes componentes:
- O arquivo DICOM de origem: um arquivo DICOM que contém uma ou mais instâncias com dados confidenciais. Quando chama a operação
deidentify
, todas as instâncias no arquivo DICOM são anonimizadas. - O armazenamento DICOM de destino: a anulação da identificação não afeta o armazenamento DICOM original nem os respetivos dados. Em alternativa, são escritas cópias desidentificadas dos dados originais no arquivo DICOM de destino. O arquivo DICOM de destino já tem de existir.
- O que desidentificar: parâmetros de configuração que especificam como processar o armazenamento DICOM. Pode configurar a desidentificação de DICOM para desidentificar
metadados de instâncias DICOM (através de palavras-chave de etiquetas) ou texto incorporado em imagens DICOM
especificando estes parâmetros num objeto
DeidentifyConfig
e transmitindo-o através de uma das seguintes opções:- Definir o campo
config
do corpo do pedido - Armazená-lo no Cloud Storage num formato JSON e especificar a localização do ficheiro no contentor através do campo
gcsConfigUri
do corpo do pedido
- Definir o campo
Para ver um exemplo de como remover a identificação dos dados DICOM ao nível do arquivo DICOM, consulte o artigo Remover a identificação dos dados ao nível do arquivo DICOM.
Filtros
Pode anular a identificação de um subconjunto de dados num arquivo DICOM configurando um ficheiro de filtro e especificando o ficheiro no pedido dicomStores.deidentify
. Para ver um exemplo, consulte o artigo Remover a identificação de um subconjunto de um arquivo DICOM.
Vista geral dos samples
Os exemplos neste guia usam uma única instância DICOM, mas também pode remover a identificação de várias instâncias.
Cada uma das secções seguintes fornece exemplos de como remover a identificação dos dados DICOM usando vários métodos. É fornecida uma saída da imagem desidentificada com cada amostra. Cada exemplo usa a seguinte imagem original como entrada:
Pode comparar a imagem de saída de cada operação de desidentificação com esta imagem original para ver os efeitos da operação.
Desidentificar etiquetas DICOM
Pode remover a identificação das instâncias DICOM com base em palavras-chave de etiquetas
nos metadados DICOM. Os seguintes métodos de filtragem de etiquetas estão disponíveis no objeto DicomConfig
:
keepList
: lista de etiquetas a manter. Remova todas as outras etiquetas.removeList
: lista de etiquetas a remover. Manter todas as outras etiquetas.filterProfile
: um perfil de filtragem de etiquetas usado para determinar que etiquetas manter ou remover.
Para cada exemplo nesta secção, é fornecido o resultado dos metadados alterados da instância DICOM. Seguem-se os metadados originais da instância usados como entrada para cada exemplo:
[
{
"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 através de etiquetas de lista de conservação
Quando especifica uma etiqueta de lista de exclusão no objeto DicomConfig
, as seguintes etiquetas são adicionadas por predefiniçã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 oculta as etiquetas anteriores. No entanto, os valores de algumas das etiquetas são regenerados, o que significa que os valores são substituídos por um valor diferente através de uma transformação determinística.
Para mais informações, consulte a opção Retain UIDs
na norma DICOM. Para manter os valores originais das etiquetas anteriores, use a opção
SkipIdRedaction
.
Se não forem fornecidas etiquetas de lista de exclusões, não são ocultadas etiquetas DICOM no conjunto de dados.
Os exemplos seguintes mostram como anular a identificação de um conjunto de dados que contém lojas DICOM e dados DICOM, deixando algumas etiquetas inalteradas.
Depois de enviar a imagem para a Cloud Healthcare API, a imagem aparece da seguinte forma. Embora os metadados apresentados nos cantos superiores da imagem tenham sido ocultados, as informações de saúde protegidas (PHI) incorporadas na parte inferior da imagem permanecem. Para também remover o texto incorporado, consulte o artigo Ocultar texto incorporado em imagens.
REST
Desidentifique o conjunto de dados.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- LOCATION: a localização do conjunto de dados
- SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a desidentificar
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino onde os dados anonimizados são escritos
Corpo JSON do pedido:
{ "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "keepList": { "tags": [ "PatientID" ] } } } }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro denominado
request.json
. Execute o seguinte comando no terminal para criar ou substituir este ficheiro no diretório atual:cat > request.json << 'EOF' { "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "keepList": { "tags": [ "PatientID" ] } } } } EOF
Em seguida, execute o seguinte comando para enviar o seu pedido 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
Guarde o corpo do pedido num ficheiro denominado
request.json
. Execute o seguinte comando no terminal para criar ou substituir este ficheiro 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
Em seguida, execute o seguinte comando para enviar o seu pedido 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 obter o estado da operação de execução longa.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- DATASET_ID: o ID do conjunto de dados
- LOCATION: a localização do conjunto de dados
- OPERATION_ID: o ID devolvido pela operação de longa duração
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
"done": true
, a operação de longa duração terminou. - Depois de a anulação da identificação ser bem-sucedida, pode obter os metadados da instância com anulação da identificação para ver como mudaram. A instância anonimizada tem um novo UID de estudos, UID de séries e UID de instâncias, pelo que tem de pesquisar primeiro a instância anonimizada no novo conjunto de dados.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- SOURCE_DATASET_LOCATION: a localização do conjunto de dados de origem
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino onde os dados anonimizados são escritos
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Este é o mesmo que o ID do arquivo DICOM no conjunto de dados de origem.
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
Deve receber uma resposta JSON semelhante à seguinte:
A tabela seguinte mostra como o UID dos estudos, o UID das séries e o UID das instâncias mudaram:Metadados da instância original Metadados de instâncias anonimizados UID dos 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
Com os novos valores, obtenha os metadados da instância.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- LOCATION: a localização do conjunto de dados
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino onde os dados anonimizados são escritos
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Este é o mesmo que o ID do arquivo DICOM no conjunto de dados de origem.
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
Go
Java
Node.js
Python
Anulação da identificação através de etiquetas removelist
Pode especificar uma lista de remoção no objeto DicomConfig
. A operação deidentify
oculta apenas as etiquetas especificadas na lista. Se não forem fornecidas etiquetas
removelist, a operação de desidentificação prossegue
normalmente, mas não são ocultadas etiquetas DICOM no conjunto de dados de destino.
Quando especifica uma lista de remoção, a etiqueta OverlayData
é adicionada por predefinição porque os dados de sobreposição podem conter IPH.
As etiquetas que são adicionadas por predefinição a uma lista de conservação não podem ser adicionadas a uma lista de remoção.
Os exemplos seguintes mostram como anular a identificação de um conjunto de dados que contém lojas DICOM e dados DICOM removendo todas as etiquetas na lista de remoção. As etiquetas que não estão na lista de remoção permanecem inalteradas.
Depois de enviar a imagem para a Cloud Healthcare API, a imagem aparece
da seguinte forma. Das etiquetas fornecidas na lista de remoção, apenas PatientBirthDate
é removida na imagem, uma vez que é a única etiqueta da lista de remoção que
corresponde a metadados visíveis na imagem.
Embora o PatientBirthDate
no canto superior da imagem tenha sido ocultado de acordo com a configuração na lista de remoção, as informações de saúde protegidas incorporadas na parte inferior da imagem permanecem. Para também remover o texto incorporado, consulte o artigo Ocultar texto incorporado em imagens.
REST
Desidentifique o conjunto de dados.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- LOCATION: a localização do conjunto de dados
- SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a desidentificar
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino onde os dados anonimizados são escritos
Corpo JSON do pedido:
{ "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "removeList": { "tags": [ "PatientBirthName", "PatientBirthDate", "PatientAge", "PatientSize", "PatientWeight", "PatientAddress", "PatientMotherBirthName" ] } } } }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro denominado
request.json
. Execute o seguinte comando no terminal para criar ou substituir este ficheiro 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
Em seguida, execute o seguinte comando para enviar o seu pedido 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
Guarde o corpo do pedido num ficheiro denominado
request.json
. Execute o seguinte comando no terminal para criar ou substituir este ficheiro 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
Em seguida, execute o seguinte comando para enviar o seu pedido 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 obter o estado da operação de execução longa.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- DATASET_ID: o ID do conjunto de dados
- LOCATION: a localização do conjunto de dados
- OPERATION_ID: o ID devolvido pela operação de longa duração
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
"done": true
, a operação de longa duração terminou. - Depois de a anulação da identificação ser bem-sucedida, pode obter os metadados da instância com anulação da identificação para ver como mudaram. A instância anonimizada tem um novo UID de estudos, UID de séries e UID de instâncias, pelo que tem de pesquisar primeiro a instância anonimizada no novo conjunto de dados.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- SOURCE_DATASET_LOCATION: a localização do conjunto de dados de origem
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino onde os dados anonimizados são escritos
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Este é o mesmo que o ID do arquivo DICOM no conjunto de dados de origem.
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
Deve receber uma resposta JSON semelhante à seguinte:
A tabela seguinte mostra como o UID dos estudos, o UID das séries e o UID das instâncias mudaram:Metadados da instância original Metadados de instâncias anonimizados UID dos 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
Com os novos valores, obtenha os metadados da instância.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- LOCATION: a localização do conjunto de dados
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino onde os dados anonimizados são escritos
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Este é o mesmo que o ID do arquivo DICOM no conjunto de dados de origem.
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
Anulação da identificação através de um perfil de filtro de etiquetas
Em vez de especificar as etiquetas a manter ou remover, pode configurar um
TagFilterProfile
no objeto DicomConfig
. Um perfil de filtro de etiquetas é um perfil predefinido que determina que etiquetas manter, remover ou transformar. Consulte a TagFilterProfile
documentação para ver os perfis disponíveis.
Os exemplos seguintes mostram como remover a identificação de um conjunto de dados que contém lojas DICOM
e dados DICOM através do perfil de filtro de etiquetas ATTRIBUTE_CONFIDENTIALITY_BASIC_PROFILE
.
Este perfil de filtro de etiquetas remove etiquetas com base no perfil básico de confidencialidade dos atributos da norma DICOM.
A API Cloud Healthcare não está totalmente em conformidade com o
perfil básico de confidencialidade dos atributos. Por exemplo, a Cloud Healthcare API não verifica as restrições de Information Object Definition (IOD) quando seleciona uma ação para uma etiqueta.
Depois de enviar a imagem para a Cloud Healthcare API através do perfil de filtro de etiquetas ATTRIBUTE_CONFIDENTIALITY_BASIC_PROFILE
, a imagem é apresentada da seguinte forma. Embora os metadados apresentados nos cantos superiores da imagem tenham sido ocultados, as IPH incorporadas na parte inferior da imagem permanecem.
Para remover também o texto incorporado, consulte o artigo
Ocultar texto incorporado em imagens.
REST
Desidentifique o conjunto de dados.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- LOCATION: a localização do conjunto de dados
- SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a desidentificar
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino onde os dados anonimizados são escritos
Corpo JSON do pedido:
{ "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "ATTRIBUTE_CONFIDENTIALITY_BASIC_PROFILE" } } }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro denominado
request.json
. Execute o seguinte comando no terminal para criar ou substituir este ficheiro 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
Em seguida, execute o seguinte comando para enviar o seu pedido 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
Guarde o corpo do pedido num ficheiro denominado
request.json
. Execute o seguinte comando no terminal para criar ou substituir este ficheiro 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
Em seguida, execute o seguinte comando para enviar o seu pedido 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 obter o estado da operação de execução longa.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- DATASET_ID: o ID do conjunto de dados
- LOCATION: a localização do conjunto de dados
- OPERATION_ID: o ID devolvido pela operação de longa duração
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
"done": true
, a operação de longa duração terminou. - Depois de a anulação da identificação ser bem-sucedida, pode obter os metadados da instância com anulação da identificação para ver como mudaram. A instância anonimizada tem um novo UID de estudos, UID de séries e UID de instâncias, pelo que tem de pesquisar primeiro a instância anonimizada no novo conjunto de dados.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- SOURCE_DATASET_LOCATION: a localização do conjunto de dados de origem
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino onde os dados anonimizados são escritos
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Este é o mesmo que o ID do arquivo DICOM no conjunto de dados de origem.
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
Deve receber uma resposta JSON semelhante à seguinte:
A tabela seguinte mostra como o UID dos estudos, o UID das séries e o UID das instâncias mudaram:Metadados da instância original Metadados de instâncias anonimizados UID dos 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
Com os novos valores, obtenha os metadados da instância.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- LOCATION: a localização do conjunto de dados
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino onde os dados anonimizados são escritos
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Este é o mesmo que o ID do arquivo DICOM no conjunto de dados de origem.
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
Remover a identificação dos dados na Google Cloud consola
Para desidentificar dados na Google Cloud consola, conclua os seguintes passos:
Na Google Cloud consola, aceda à página Conjuntos de dados.
Escolha Remover identificação na lista Ações do conjunto de dados cuja identificação está a remover.
É apresentada a página Anular identificação do conjunto de dados.
Selecione Definir conjunto de dados de destino e introduza um nome para o novo conjunto de dados onde armazenar os dados anonimizados.
Selecione Desidentificação de etiquetas DICOM para selecionar o perfil para o qual os dados são desidentificados. Os dados podem ser desidentificados da seguinte forma:
KEEP_ALL_PROFILE
– Mantenha todas as metatags DICOMDEIDENTIFY_TAG_CONTENTS
- Desidentifique os dados nas metatagsATTRIBUTE_CONFIDENTIALITY_BASIC_PROFILE
- Remova as metatags de acordo com o perfil básico na norma DICOMMINIMAL_KEEP_LIST_PROFILE
- Mantenha apenas as metatags necessárias para um objeto DICOM válido- Ignorar ocultação de IDs: regenere os campos UID conforme determinado pela norma DICOM
Selecione Ocultação de texto incorporado DICOM para configurar a forma como a ocultação de imagens é realizada durante a anulação da identificação. Pode configurar a ocultação de imagens da seguinte forma:
REDACT_NO_TEXT
- Não oculte texto em imagensREDACT_SENSITIVE_TEXT
– Oculte apenas texto sensível em imagensREDACT_ALL_TEXT
– Ocultar todo o texto nas imagens
Clique em Remover identificação para remover a identificação dos dados no conjunto de dados.
Ocultar texto incorporado em imagens
A Cloud Healthcare API pode ocultar texto incorporado sensível de imagens. Os dados confidenciais, como as informações de saúde protegidas, são detetados pela API, que os oculta através de um retângulo opaco. A API devolve as mesmas imagens DICOM que lhe foram fornecidas, no mesmo formato, mas qualquer texto identificado como contendo informações confidenciais de acordo com os seus critérios é ocultado.
Pode ocultar texto incorporado em imagens especificando uma opção TextRedactionMode
dentro de um objeto ImageConfig
. Consulte a TextRedactionMode
documentação para ver os valores possíveis.
Ocultar todo o texto incorporado numa imagem
Os exemplos seguintes mostram como ocultar todo o texto incorporado em imagens DICOM
num conjunto de dados. Isto é feito especificando REDACT_ALL_TEXT
no campo TextRedactionMode
.
Depois de enviar a imagem para a Cloud Healthcare API através da opção REDACT_ALL_TEXT
, a imagem é apresentada da seguinte forma. Embora o texto incorporado na parte inferior da imagem tenha sido removido, os metadados nos cantos superiores da imagem permanecem. Para remover também os metadados, consulte o artigo Desidentificar etiquetas DICOM.
REST
Desidentifique o conjunto de dados.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- LOCATION: a localização do conjunto de dados
- SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a desidentificar
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino onde os dados anonimizados são escritos
Corpo JSON do pedido:
{ "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": {}, "image": { "textRedactionMode": "REDACT_ALL_TEXT" } } }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro denominado
request.json
. Execute o seguinte comando no terminal para criar ou substituir este ficheiro 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
Em seguida, execute o seguinte comando para enviar o seu pedido 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
Guarde o corpo do pedido num ficheiro denominado
request.json
. Execute o seguinte comando no terminal para criar ou substituir este ficheiro 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
Em seguida, execute o seguinte comando para enviar o seu pedido 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 obter o estado da operação de execução longa.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- DATASET_ID: o ID do conjunto de dados
- LOCATION: a localização do conjunto de dados
- OPERATION_ID: o ID devolvido pela operação de longa duração
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
"done": true
, a operação de longa duração terminou. - Depois de a anulação da identificação ser bem-sucedida, pode obter os metadados da instância com anulação da identificação para ver como mudaram. A instância anonimizada tem um novo UID de estudos, UID de séries e UID de instâncias, pelo que tem de pesquisar primeiro a instância anonimizada no novo conjunto de dados.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- SOURCE_DATASET_LOCATION: a localização do conjunto de dados de origem
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino onde os dados anonimizados são escritos
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Este é o mesmo que o ID do arquivo DICOM no conjunto de dados de origem.
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
Deve receber uma resposta JSON semelhante à seguinte:
A tabela seguinte mostra como o UID dos estudos, o UID das séries e o UID das instâncias mudaram:Metadados da instância original Metadados de instâncias anonimizados UID dos 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
Ocultar apenas texto incorporado sensível numa imagem
Os exemplos seguintes mostram como ocultar texto incorporado sensível de imagens DICOM
num conjunto de dados. Isto é feito especificando REDACT_SENSITIVE_TEXT
no campo TextRedactionMode
.
Os infoTypes especificados nos infoTypes DICOM predefinidos
são ocultados quando REDACT_SENSITIVE_TEXT
é especificado. Também é aplicado um infoType personalizado adicional para identificadores de pacientes, como números de registos médicos (MRNs), e os identificadores de pacientes são ocultados.
A imagem seguinte mostra um raio X não ocultado de um paciente:
Depois de enviar a imagem para a Cloud Healthcare API através da opção REDACT_SENSITIVE_TEXT
, a imagem é apresentada da seguinte forma:
Pode ver que ocorreu o seguinte:
- O
PERSON_NAME
na parte inferior esquerda da imagem foi ocultado - O
DATE
na parte inferior esquerda da imagem foi ocultado
O sexo do paciente não foi ocultado porque não é considerado texto sensível de acordo com os infoTypes DICOM predefinidos.
REST
Desidentifique o conjunto de dados.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- LOCATION: a localização do conjunto de dados
- SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a desidentificar
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino onde os dados anonimizados são escritos
Corpo JSON do pedido:
{ "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": {}, "image": { "textRedactionMode": "REDACT_SENSITIVE_TEXT" } } }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro denominado
request.json
. Execute o seguinte comando no terminal para criar ou substituir este ficheiro 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
Em seguida, execute o seguinte comando para enviar o seu pedido 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
Guarde o corpo do pedido num ficheiro denominado
request.json
. Execute o seguinte comando no terminal para criar ou substituir este ficheiro 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
Em seguida, execute o seguinte comando para enviar o seu pedido 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 obter o estado da operação de execução longa.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- DATASET_ID: o ID do conjunto de dados
- LOCATION: a localização do conjunto de dados
- OPERATION_ID: o ID devolvido pela operação de longa duração
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
"done": true
, a operação de longa duração terminou. - Depois de a anulação da identificação ser bem-sucedida, pode obter os metadados da instância com anulação da identificação para ver como mudaram. A instância anonimizada tem um novo UID de estudos, UID de séries e UID de instâncias, pelo que tem de pesquisar primeiro a instância anonimizada no novo conjunto de dados.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- SOURCE_DATASET_LOCATION: a localização do conjunto de dados de origem
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino onde os dados anonimizados são escritos
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Este é o mesmo que o ID do arquivo DICOM no conjunto de dados de origem.
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
Deve receber uma resposta JSON semelhante à seguinte:
A tabela seguinte mostra como o UID dos estudos, o UID das séries e o UID das instâncias mudaram:Metadados da instância original Metadados de instâncias anonimizados UID dos 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
Combinar a desidentificação de etiquetas e a ocultação de texto incorporado
Pode combinar a desidentificação através de etiquetas com a ocultação de texto incorporado em imagens para desidentificar instâncias DICOM a um nível mais detalhado. Por exemplo, combinando REDACT_ALL_TEXT
no campo TextRedactionMode
com DEIDENTIFY_TAG_CONTENTS
no campo TagFilterProfile
, pode fazer o seguinte:
REDACT_ALL_TEXT
: ocultar todo o texto incorporado na imagem.DEIDENTIFY_TAG_CONTENTS
: inspecione o conteúdo das etiquetas e transforme texto sensível. Para mais informações sobre o comportamento deDEIDENTIFY_TAG_CONTENTS
, consulte a configuração predefinida.
Depois de enviar a imagem para a Cloud Healthcare API através das opções REDACT_ALL_TEXT
e DEIDENTIFY_TAG_CONTENTS
, a imagem é apresentada da seguinte forma. Observe as seguintes alterações:
- Os nomes no canto superior esquerdo e direito da imagem foram transformados
através de um
CryptoHashConfig
- As datas no canto superior esquerdo e direito da imagem foram transformadas
através de um
DateShiftConfig
- O texto incorporado na parte inferior da imagem é ocultado
REST
Desidentifique o conjunto de dados.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- LOCATION: a localização do conjunto de dados
- SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a desidentificar
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino onde os dados anonimizados são escritos
Corpo JSON do pedido:
{ "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "image": { "textRedactionMode": "REDACT_ALL_TEXT" } } }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro denominado
request.json
. Execute o seguinte comando no terminal para criar ou substituir este ficheiro 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
Em seguida, execute o seguinte comando para enviar o seu pedido 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
Guarde o corpo do pedido num ficheiro denominado
request.json
. Execute o seguinte comando no terminal para criar ou substituir este ficheiro 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
Em seguida, execute o seguinte comando para enviar o seu pedido 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 obter o estado da operação de execução longa.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- DATASET_ID: o ID do conjunto de dados
- LOCATION: a localização do conjunto de dados
- OPERATION_ID: o ID devolvido pela operação de longa duração
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
"done": true
, a operação de longa duração terminou. - Depois de a anulação da identificação ser bem-sucedida, pode obter os metadados da instância com anulação da identificação para ver como mudaram. A instância anonimizada tem um novo UID de estudos, UID de séries e UID de instâncias, pelo que tem de pesquisar primeiro a instância anonimizada no novo conjunto de dados.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- SOURCE_DATASET_LOCATION: a localização do conjunto de dados de origem
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino onde os dados anonimizados são escritos
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Este é o mesmo que o ID do arquivo DICOM no conjunto de dados de origem.
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
Deve receber uma resposta JSON semelhante à seguinte:
Com os novos valores, obtenha os metadados da instância.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- LOCATION: a localização do conjunto de dados
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino onde os dados anonimizados são escritos
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Este é o mesmo que o ID do arquivo DICOM no conjunto de dados de origem.
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
Usar infoTypes e transformações primitivas com etiquetas DICOM
A Cloud Healthcare API pode usar tipos de informações (infoTypes) para definir os dados que procura quando realiza a desidentificação em etiquetas. Um infoType é um tipo de dados confidenciais, como o nome de um paciente, um endereço de email, um número de telefone, um número de identificação ou um número de cartão de crédito.
As transformações primitivas são regras que usa para transformar um valor de entrada. Pode personalizar a forma como as etiquetas DICOM são anonimizadas aplicando uma transformação primitiva ao infoType de cada etiqueta. Por exemplo, pode remover a identificação do apelido de um paciente e substituí-lo por uma série de asteriscos especificando o LAST_NAME
infoType com a transformação primitiva CharacterMaskConfig
.
infoTypes DICOM predefinidos
Os infoTypes DICOM predefinidos usados quando os metadados são desidentificados 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 desidentifica texto sensível em imagens
através da REDACT_SENSITIVE_TEXT
,
a Cloud Healthcare API usa os infoTypes acima, mas também é aplicado um infoType personalizado adicional
para identificadores de pacientes, como números de registos médicos (MRNs), ao texto sensível na imagem.
Opções de transformação primitivas
As opções de transformação primitivas da Cloud Healthcare API incluem:
RedactConfig
: oculta um valor removendo-o.CharacterMaskConfig
: oculta uma string total ou parcialmente, substituindo os carateres de entrada por um caráter fixo especificado.DateShiftConfig
: altera as datas por um número aleatório de dias, com a opção de ser consistente para o mesmo contexto.CryptoHashConfig
: usa o SHA-256 para substituir os valores de entrada por uma representação codificada em base64 de uma string de saída com hash gerada através de uma determinada chave de encriptação de dados.ReplaceWithInfoTypeConfig
: substitui um valor de entrada pelo nome do respetivo infoType.
Especificar configurações no TextConfig
Os InfoTypes e as transformações primitivas são especificados num InfoTypeTransformation
, que é um objeto dentro de TextConfig
.
Os InfoTypes são introduzidos na matriz infoTypes
como valores separados por vírgulas.
A especificação de um infoType é opcional. Se não especificar, pelo menos, um infoType, a transformação aplica-se aos infoTypes DICOM predefinidos encontrados na Cloud Healthcare API.
Se especificar quaisquer infoTypes em InfoTypeTransformation
, tem de especificar, pelo menos, uma transformação primitiva.
Só pode aplicar um InfoTypeTransformation
ao perfil DEIDENTIFY_TAG_CONTENTS
.
Não é possível aplicar um InfoTypeTransformation
aos outros perfis indicados em
TagFilterProfile
.
As secções seguintes mostram como usar as transformações primitivas disponíveis
em InfoTypeTransformation
juntamente com infoTypes para personalizar a forma como as etiquetas DICOM são anonimizadas. Os exemplos usam a imagem de exemplo fornecida na vista geral de exemplos e os metadados de exemplo fornecidos em Desidentificar etiquetas DICOM.
Configuração predefinida
Por predefinição, quando o perfil DEIDENTIFY_TAG_CONTENTS
é definido sem fornecer
qualquer configuração no objeto TextConfig
, a Cloud Healthcare API
substitui os dados confidenciais através dos infoTypes DICOM predefinidos.
No entanto, existe um comportamento diferente para os DATE
e PERSON_NAME
infoTypes, conforme mostrado abaixo:
- É aplicado um
DateShiftConfig
ao texto classificado como umDATE
infoType. ODateShiftConfig
usa uma técnica de mudança de datas com um diferencial de 100 dias. - É aplicado um
CryptoHashConfig
ao texto classificado como umPERSON_NAME
infoType. OCryptoHashConfig
realiza a tokenização através da geração de um valor substituto com hash criptográfico.
O seguinte comportamento também se aplica:
- As idades dos pacientes com um valor igual ou superior a 90 são convertidas em 90.
- Se não for possível aplicar uma transformação devido a restrições de formato DICOM, é fornecido um valor de marcador de posição que corresponde à representação de valor (VR) da etiqueta.
- Quaisquer outros valores que correspondam a um dos infoTypes DICOM predefinidos
na Cloud Healthcare API são substituídos pelo respetivo infoType. Por exemplo, se a etiqueta
PatientComments
contiver a string "A Ana Silva foi ao Hospital de Lisboa", "Lisboa" é substituído peloLOCATION
infoType.
Os exemplos seguintes mostram o resultado da utilização do DEIDENTIFY_TAG_CONTENTS
perfil predefinido num conjunto de dados que contém arquivos DICOM e dados DICOM. Pode comparar este resultado predefinido com os resultados quando usa as várias transformações primitivas com combinações de infoTypes. Os exemplos usam uma única instância DICOM, mas pode anular a identificação de várias instâncias.
Depois de enviar a imagem para a Cloud Healthcare API através do perfil DEIDENTIFY_TAG_CONTENTS
, a imagem é apresentada da seguinte forma.
Observe as seguintes alterações:
- Os nomes no canto superior esquerdo e direito da imagem foram transformados
através de um
CryptoHashConfig
- As datas no canto superior esquerdo e direito da imagem foram transformadas
através de um
DateShiftConfig
REST
Desidentifique o conjunto de dados.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- LOCATION: a localização do conjunto de dados
- SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a desidentificar
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino onde os dados anonimizados são escritos
Corpo JSON do pedido:
{ "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" } } }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro denominado
request.json
. Execute o seguinte comando no terminal para criar ou substituir este ficheiro 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
Em seguida, execute o seguinte comando para enviar o seu pedido 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
Guarde o corpo do pedido num ficheiro denominado
request.json
. Execute o seguinte comando no terminal para criar ou substituir este ficheiro 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
Em seguida, execute o seguinte comando para enviar o seu pedido 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 obter o estado da operação de execução longa.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- DATASET_ID: o ID do conjunto de dados
- LOCATION: a localização do conjunto de dados
- OPERATION_ID: o ID devolvido pela operação de longa duração
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
"done": true
, a operação de longa duração terminou. - Depois de a anulação da identificação ser bem-sucedida, pode obter os metadados da instância com anulação da identificação para ver como mudaram. A instância anonimizada tem um novo UID de estudos, UID de séries e UID de instâncias, pelo que tem de pesquisar primeiro a instância anonimizada no novo conjunto de dados.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- SOURCE_DATASET_LOCATION: a localização do conjunto de dados de origem
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino onde os dados anonimizados são escritos
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Este é o mesmo que o ID do arquivo DICOM no conjunto de dados de origem.
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
Deve receber uma resposta JSON semelhante à seguinte:
Com os novos valores, obtenha os metadados da instância.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- LOCATION: a localização do conjunto de dados
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino onde os dados anonimizados são escritos
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Este é o mesmo que o ID do arquivo DICOM no conjunto de dados de origem.
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
RedactConfig
A especificação de redactConfig
oculta um determinado valor removendo-o completamente.
A mensagem redactConfig
não tem argumentos; a especificação da mesma ativa a transformação.
Os exemplos seguintes expandem a configuração predefinida, mas agora incluem a definição do PERSON_NAME
infoType com a redactConfig
transformação. O envio deste pedido oculta todos os nomes da instância DICOM.
Depois de enviar a imagem para a Cloud Healthcare API através da transformação redactConfig
, a imagem é apresentada da seguinte forma:
REST
Desidentifique o conjunto de dados.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- LOCATION: a localização do conjunto de dados
- SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a desidentificar
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino onde os dados anonimizados são escritos
Corpo JSON do pedido:
{ "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "text": { "transformations": [ { "infoTypes": [ "PERSON_NAME" ], "redactConfig": {} } ] } } }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro denominado
request.json
. Execute o seguinte comando no terminal para criar ou substituir este ficheiro 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
Em seguida, execute o seguinte comando para enviar o seu pedido 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
Guarde o corpo do pedido num ficheiro denominado
request.json
. Execute o seguinte comando no terminal para criar ou substituir este ficheiro 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
Em seguida, execute o seguinte comando para enviar o seu pedido 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 obter o estado da operação de execução longa.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- DATASET_ID: o ID do conjunto de dados
- LOCATION: a localização do conjunto de dados
- OPERATION_ID: o ID devolvido pela operação de longa duração
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
"done": true
, a operação de longa duração terminou. - Depois de a anulação da identificação ser bem-sucedida, pode obter os metadados da instância com anulação da identificação para ver como mudaram. A instância anonimizada tem um novo UID de estudos, UID de séries e UID de instâncias, pelo que tem de pesquisar primeiro a instância anonimizada no novo conjunto de dados.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- SOURCE_DATASET_LOCATION: a localização do conjunto de dados de origem
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino onde os dados anonimizados são escritos
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Este é o mesmo que o ID do arquivo DICOM no conjunto de dados de origem.
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
Deve receber uma resposta JSON semelhante à seguinte:
Com os novos valores, obtenha os metadados da instância.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- LOCATION: a localização do conjunto de dados
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino onde os dados anonimizados são escritos
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Este é o mesmo que o ID do arquivo DICOM no conjunto de dados de origem.
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
O resultado mostra que os valores em ReferringPhysicianName
(00080090
) e PatientName
(00100010
) foram removidos. Isto contrasta com o exemplo na configuração predefinida, em que estes valores foram transformados através da aplicação de hash criptográfico.
CharacterMaskConfig
A especificação de characterMaskConfig
substitui as strings que correspondem aos infoTypes fornecidos por um carater fixo especificado. Por exemplo, em vez de ocultar o nome de um paciente ou transformá-lo através de hash criptográfico, pode substituir o nome por uma série de asteriscos (*
). Pode especificar o caráter fixo como um valor para o campo maskingCharacter
.
Os exemplos seguintes expandem a configuração predefinida, mas agora incluem a definição do LAST_NAME
infoType com a characterMaskConfig
transformação. Não é fornecido nenhum carater fixo, pelo que a ocultação usa asteriscos por predefinição.
Os exemplos usam uma única instância DICOM, mas pode anular a identificação de várias instâncias.
Depois de enviar a imagem para a Cloud Healthcare API através da transformação characterMaskConfig
, a imagem é apresentada da seguinte forma:
REST
Desidentifique o conjunto de dados.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- LOCATION: a localização do conjunto de dados
- SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a desidentificar
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino onde os dados anonimizados são escritos
Corpo JSON do pedido:
{ "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 o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro denominado
request.json
. Execute o seguinte comando no terminal para criar ou substituir este ficheiro 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
Em seguida, execute o seguinte comando para enviar o seu pedido 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
Guarde o corpo do pedido num ficheiro denominado
request.json
. Execute o seguinte comando no terminal para criar ou substituir este ficheiro 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
Em seguida, execute o seguinte comando para enviar o seu pedido 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 obter o estado da operação de execução longa.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- DATASET_ID: o ID do conjunto de dados
- LOCATION: a localização do conjunto de dados
- OPERATION_ID: o ID devolvido pela operação de longa duração
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
"done": true
, a operação de longa duração terminou. - Depois de a anulação da identificação ser bem-sucedida, pode obter os metadados da instância com anulação da identificação para ver como mudaram. A instância anonimizada tem um novo UID de estudos, UID de séries e UID de instâncias, pelo que tem de pesquisar primeiro a instância anonimizada no novo conjunto de dados.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- SOURCE_DATASET_LOCATION: a localização do conjunto de dados de origem
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino onde os dados anonimizados são escritos
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Este é o mesmo que o ID do arquivo DICOM no conjunto de dados de origem.
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
Deve receber uma resposta JSON semelhante à seguinte:
Com os novos valores, obtenha os metadados da instância.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- LOCATION: a localização do conjunto de dados
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino onde os dados anonimizados são escritos
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Este é o mesmo que o ID do arquivo DICOM no conjunto de dados de origem.
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
O resultado mostra que os apelidos em ReferringPhysicianName
(00080090
) e PatientName
(00100010
) foram substituídos por asteriscos. Isto contrasta com o exemplo na Configuração predefinida, onde estes valores foram transformados através da aplicação de hash criptográfico.
DateShiftConfig
A Cloud Healthcare API pode transformar datas deslocando-as dentro de um intervalo predefinido. Para manter as transformações de datas consistentes em todas as execuções de anonimização, use DateShiftConfig
com qualquer uma das seguintes opções:
- (Obsoleto): uma chave AES de 128/192/256 bits codificada em base64 não processada.
- (Recomendado): uma chave envolvida do Cloud Key Management Service (Cloud KMS). Consulte o artigo Remover a identificação e voltar a identificar texto sensível para ver um exemplo de como usar chaves envolvidas do Cloud KMS.
Tem de conceder uma função com a autorização cloudkms.cryptoKeyVersions.useToDecrypt
à conta de serviço do agente do Cloud Healthcare para desencriptar a chave protegida do Cloud KMS. Recomendamos que use a função de desencriptador de CryptoKey do Cloud KMS (roles/cloudkms.cryptoKeyDecrypter
). Quando usa o Cloud KMS para operações criptográficas, são aplicadas cobranças. Consulte os preços do Cloud Key Management Service para mais informações.
A Cloud Healthcare API usa esta chave para calcular o valor pelo qual as datas, como a data de nascimento de um paciente, são deslocadas num diferencial de 100 dias.
Se não fornecer uma chave, a API Cloud Healthcare gera a sua própria chave sempre que a operação de desidentificação é executada em valores de data. Isto pode resultar em resultados de datas inconsistentes entre execuções.
Os exemplos seguintes mostram como definir os infoTypes DATE
e DATE_OF_BIRTH
com a transformação DateShiftConfig
numa instância DICOM. Após o envio do pedido de anulação da identificação à Cloud Healthcare API, os valores de data na instância vão mudar dentro de mais ou menos 100 dias dos respetivos valores originais.
A chave criptográfica fornecida, U2FsdGVkX19bS2oZsdbK9X5zi2utBn22uY+I2Vo0zOU=
, é uma chave de 256 bits codificada como base64 encriptada com AES não processada gerada através do seguinte comando. Quando lhe for pedido, é fornecida uma palavra-passe vazia ao comando:
echo -n "test" | openssl enc -e -aes-256-ofb -a -salt
Depois de enviar a imagem para a Cloud Healthcare API através da transformação dateShiftConfig
, a imagem é apresentada da seguinte forma:
REST
Desidentifique o conjunto de dados.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- LOCATION: a localização do conjunto de dados
- SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a desidentificar
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino onde os dados anonimizados são escritos
Corpo JSON do pedido:
{ "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 o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro denominado
request.json
. Execute o seguinte comando no terminal para criar ou substituir este ficheiro 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
Em seguida, execute o seguinte comando para enviar o seu pedido 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
Guarde o corpo do pedido num ficheiro denominado
request.json
. Execute o seguinte comando no terminal para criar ou substituir este ficheiro 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
Em seguida, execute o seguinte comando para enviar o seu pedido 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 obter o estado da operação de execução longa.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- DATASET_ID: o ID do conjunto de dados
- LOCATION: a localização do conjunto de dados
- OPERATION_ID: o ID devolvido pela operação de longa duração
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
"done": true
, a operação de longa duração terminou. - Depois de a anulação da identificação ser bem-sucedida, pode obter os metadados da instância com anulação da identificação para ver como mudaram. A instância anonimizada tem um novo UID de estudos, UID de séries e UID de instâncias, pelo que tem de pesquisar primeiro a instância anonimizada no novo conjunto de dados.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- SOURCE_DATASET_LOCATION: a localização do conjunto de dados de origem
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino onde os dados anonimizados são escritos
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Este é o mesmo que o ID do arquivo DICOM no conjunto de dados de origem.
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
Deve receber uma resposta JSON semelhante à seguinte:
Com os novos valores, obtenha os metadados da instância.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- LOCATION: a localização do conjunto de dados
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino onde os dados anonimizados são escritos
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Este é o mesmo que o ID do arquivo DICOM no conjunto de dados de origem.
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
O resultado mostra que StudyDate
(00080020
) e PatientBirthDate
(00100030
) têm novos valores. Estas transformações ocorreram como resultado da combinação da diferença de 100 dias com o valor cryptoKey
fornecido. Os novos valores de data são consistentes para esta instância entre execuções de anonimização, desde que seja fornecido o mesmo cryptoKey
.
CryptoHashConfig
Pode deixar o campo cryptoHashConfig
vazio ou fornecer um dos seguintes elementos:
- (Obsoleto): uma chave AES de 128/192/256 bits codificada em base64 não processada.
- (Recomendado): uma chave envolvida do Cloud Key Management Service (Cloud KMS). Consulte o artigo Remover a identificação e voltar a identificar texto sensível para ver um exemplo de como usar chaves envolvidas do Cloud KMS.
Tem de conceder uma função com a autorização cloudkms.cryptoKeyVersions.useToDecrypt
à conta de serviço do agente do Cloud Healthcare para desencriptar a chave protegida do Cloud KMS. Recomendamos que use a função de desencriptador de CryptoKey do Cloud KMS (roles/cloudkms.cryptoKeyDecrypter
). Quando usa o Cloud KMS para operações criptográficas, são aplicadas cobranças. Consulte os preços do Cloud Key Management Service para mais informações.
A Cloud Healthcare API pode transformar dados substituindo valores por hashes criptográficos (também denominados valores substitutos). Para tal, especifique uma mensagem cryptoHashConfig
.
Se não fornecer uma chave, a Cloud Healthcare API gera uma chave. A Cloud Healthcare API usa esta chave para gerar valores substitutos. Se fornecer a mesma chave para cada execução, a Cloud Healthcare API gera valores substitutos consistentes. Se não fornecer uma chave, a API Cloud Healthcare gera uma nova chave sempre que a operação é executada. A utilização de uma chave diferente gera valores substitutos diferentes.
Os exemplos seguintes mostram como aplicar uma transformação cryptoHashConfig
a todos os infoTypes DICOM predefinidos suportados na
API Cloud Healthcare. Após o envio do pedido de desidentificação, os valores com um infoType DICOM correspondente na Cloud Healthcare API são substituídos por valores substitutos.
O exemplo também mostra como fornecer uma chave criptográfica para gerar valores substitutos consistentes entre execuções de desidentificação.
A chave criptográfica fornecida, U2FsdGVkX19bS2oZsdbK9X5zi2utBn22uY+I2Vo0zOU=
, é uma chave de 256 bits codificada como base64 encriptada com AES não processada gerada através do seguinte comando. Quando lhe for pedido, é fornecida uma palavra-passe vazia ao comando:
echo -n "test" | openssl enc -e -aes-256-ofb -a -salt
Depois de enviar a imagem para a Cloud Healthcare API através da transformação cryptoHashConfig
, a imagem é apresentada da seguinte forma:
REST
Desidentifique o conjunto de dados.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- LOCATION: a localização do conjunto de dados
- SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a desidentificar
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino onde os dados anonimizados são escritos
Corpo JSON do pedido:
{ "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 o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro denominado
request.json
. Execute o seguinte comando no terminal para criar ou substituir este ficheiro 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
Em seguida, execute o seguinte comando para enviar o seu pedido 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
Guarde o corpo do pedido num ficheiro denominado
request.json
. Execute o seguinte comando no terminal para criar ou substituir este ficheiro 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
Em seguida, execute o seguinte comando para enviar o seu pedido 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 obter o estado da operação de execução longa.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- DATASET_ID: o ID do conjunto de dados
- LOCATION: a localização do conjunto de dados
- OPERATION_ID: o ID devolvido pela operação de longa duração
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
"done": true
, a operação de longa duração terminou. - Depois de a anulação da identificação ser bem-sucedida, pode obter os metadados da instância com anulação da identificação para ver como mudaram. A instância anonimizada tem um novo UID de estudos, UID de séries e UID de instâncias, pelo que tem de pesquisar primeiro a instância anonimizada no novo conjunto de dados.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- SOURCE_DATASET_LOCATION: a localização do conjunto de dados de origem
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino onde os dados anonimizados são escritos
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Este é o mesmo que o ID do arquivo DICOM no conjunto de dados de origem.
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
Deve receber uma resposta JSON semelhante à seguinte:
Com os novos valores, obtenha os metadados da instância.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- LOCATION: a localização do conjunto de dados
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino onde os dados anonimizados são escritos
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Este é o mesmo que o ID do arquivo DICOM no conjunto de dados de origem.
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
As transformações na saída são consistentes para esta instância entre execuções de anonimização, desde que seja fornecido o mesmo cryptoKey
.
ReplaceWithInfoTypeConfig
A especificação de replaceWithInfoTypeConfig
substitui os valores de entrada pelo nome do infoType do valor.
Os exemplos seguintes mostram como aplicar uma transformação replaceWithInfoTypeConfig
a todos os infoTypes DICOM predefinidos suportados na
API Cloud Healthcare.
A mensagem replaceWithInfoTypeConfig
não tem argumentos. Se a especificar, ativa a transformação.
Depois de enviar a imagem para a Cloud Healthcare API através da transformação replaceWithInfoTypeConfig
, a imagem é apresentada da seguinte forma:
REST
Desidentifique o conjunto de dados.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- LOCATION: a localização do conjunto de dados
- SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a desidentificar
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino onde os dados anonimizados são escritos
Corpo JSON do pedido:
{ "destinationDataset": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "text": { "transformations": [ { "infoTypes": [], "replaceWithInfoTypeConfig": {} } ] } } }
Para enviar o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro denominado
request.json
. Execute o seguinte comando no terminal para criar ou substituir este ficheiro 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
Em seguida, execute o seguinte comando para enviar o seu pedido 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
Guarde o corpo do pedido num ficheiro denominado
request.json
. Execute o seguinte comando no terminal para criar ou substituir este ficheiro 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
Em seguida, execute o seguinte comando para enviar o seu pedido 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 obter o estado da operação de execução longa.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- DATASET_ID: o ID do conjunto de dados
- LOCATION: a localização do conjunto de dados
- OPERATION_ID: o ID devolvido pela operação de longa duração
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
"done": true
, a operação de longa duração terminou. - Depois de a anulação da identificação ser bem-sucedida, pode obter os metadados da instância com anulação da identificação para ver como mudaram. A instância anonimizada tem um novo UID de estudos, UID de séries e UID de instâncias, pelo que tem de pesquisar primeiro a instância anonimizada no novo conjunto de dados.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- SOURCE_DATASET_LOCATION: a localização do conjunto de dados de origem
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino onde os dados anonimizados são escritos
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Este é o mesmo que o ID do arquivo DICOM no conjunto de dados de origem.
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
Deve receber uma resposta JSON semelhante à seguinte:
Com os novos valores, obtenha os metadados da instância.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- LOCATION: a localização do conjunto de dados
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino onde os dados anonimizados são escritos
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino. Este é o mesmo que o ID do arquivo DICOM no conjunto de dados de origem.
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
Remoção da identificação dos dados ao nível do arquivo DICOM
Os exemplos anteriores mostram como anular a identificação dos dados DICOM ao nível do conjunto de dados. Esta secção descreve como desidentificar dados ao nível do arquivo DICOM.
Para alterar um pedido de desidentificação de um conjunto de dados para um pedido de desidentificação de uma loja DICOM, faça as seguintes alterações:
- Modifique o
destinationDataset
no corpo do pedido paradestinationStore
- Adicione
dicomStores/DESTINATION_DICOM_STORE_ID
no final do valor emdestinationStore
quando especificar o destino - Adicione
dicomStores/SOURCE_DICOM_STORE_ID
quando especificar a localização dos dados de origem
Por exemplo:
Anonimização ao 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"
Anonimização ao nível do 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 seguintes expandem a combinação da desidentificação de etiquetas e da ocultação de texto incorporado, mas a desidentificação ocorre num único arquivo DICOM e os dados desidentificados são copiados para um novo arquivo DICOM. Antes de executar os exemplos, o arquivo DICOM referenciado por DESTINATION_DICOM_STORE_ID já tem de existir.
Consola
Para desidentificar dados num arquivo DICOM através da Google Cloud consola, conclua os seguintes passos.
Na Google Cloud consola, aceda à página Conjuntos de dados.
Clique no conjunto de dados que contém os dados que quer desidentificar.
Na lista de arquivos DICOM, escolha Anular identificação na lista Ações para o arquivo DICOM que está a anular a identificação.
É apresentada a página Anular identificação da loja DICOM.
Selecione Definir arquivo de dados de destino e escolha o conjunto de dados e o arquivo DICOM no qual os dados anonimizados são guardados.
Selecione Desidentificação de etiquetas DICOM para configurar a forma como os dados são desidentificados. Os dados podem ser desidentificados da seguinte forma:
KEEP_ALL_PROFILE
: mantenha todas as metatags DICOMDEIDENTIFY_TAG_CONTENTS
: desidentifique os dados nas metatagsATTRIBUTE_CONFIDENTIALITY_BASIC_PROFILE
: remova as metatags de acordo com o perfil básico na norma DICOMMINIMAL_KEEP_LIST_PROFILE
: mantenha apenas as metatags necessárias para um objeto DICOM válido- Ignorar ocultação de IDs: regenere os campos UID conforme determinado pela norma DICOM
Selecione Ocultação de texto incorporado DICOM para configurar a forma como a ocultação de imagens é realizada durante a anulação da identificação. Pode configurar a ocultação de imagens da seguinte forma:
REDACT_NO_TEXT
: Não ocultar texto em imagensREDACT_SENSITIVE_TEXT
: oculte apenas texto sensível em imagensREDACT_ALL_TEXT
: ocultar todo o texto nas imagens
Clique em Desidentificar para desidentificar os dados no armazenamento DICOM.
REST
Desidentifique o conjunto de dados.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- LOCATION: a localização do conjunto de dados
- SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a desidentificar
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino onde os dados anonimizados são escritos
- SOURCE_DICOM_STORE_ID: o ID do armazenamento DICOM que contém os dados a desidentificar
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino
Corpo JSON do pedido:
{ "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 o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro denominado
request.json
. Execute o seguinte comando no terminal para criar ou substituir este ficheiro 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
Em seguida, execute o seguinte comando para enviar o seu pedido 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
Guarde o corpo do pedido num ficheiro denominado
request.json
. Execute o seguinte comando no terminal para criar ou substituir este ficheiro 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
Em seguida, execute o seguinte comando para enviar o seu pedido 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 obter o estado da operação de execução longa.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- DATASET_ID: o ID do conjunto de dados
- LOCATION: a localização do conjunto de dados
- OPERATION_ID: o ID devolvido pela operação de longa duração
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
"done": true
, a operação de longa duração terminou.
Remover a identificação de um subconjunto de um arquivo DICOM
Pode remover a identificação de um subconjunto dos dados num armazenamento DICOM especificando um filtro.
O filtro assume a forma de um ficheiro de filtro que especifica como um valor para o campo resourcePathsGcsUri
no objeto DicomFilterConfig
. O ficheiro de filtro tem de existir num contentor do Cloud Storage. Não pode especificar um ficheiro de filtro que exista na sua máquina local ou noutra origem. A localização do ficheiro tem de estar no formato gs://BUCKET/PATH/TO/FILE
.
Criar um ficheiro de filtro
Um ficheiro de filtro define os ficheiros DICOM a desidentificar. Pode filtrar ficheiros nos seguintes níveis:
- Ao nível do estudo
- Ao nível da série
- Ao nível da instância
O ficheiro de filtros é composto por uma linha por estudo, série ou instância que quer
desidentificar. Cada linha usa o formato /studies/STUDY_UID[/series/SERIES_UID[/instances/INSTANCE_UID]]
.
No final de cada linha, encontra-se um caráter de nova linha: \n
ou \r\n
.
Se um estudo, uma série ou uma instância não for especificado no ficheiro de filtro que transmitiu ao chamar a operação de anonimização, esse estudo, série ou instância não vai ser anonimizado e não vai estar presente no arquivo DICOM de destino.
Apenas a parte /studies/STUDY_UID
do caminho é
obrigatória. Isto significa que pode remover a identificação de um estudo especificando /studies/STUDY_UID
ou pode remover a identificação de uma série especificando /studies/STUDY_UID/series/SERIES_UID
.
Considere o seguinte ficheiro de filtros. O ficheiro de filtro faz com que um estudo, duas séries e três instâncias individuais sejam anonimizados:
/studies/1.123.456.789
/studies/1.666.333.111/series/123.456\n
/studies/1.666.333.111/series/567.890\n
/studies/1.888.999.222/series/123.456/instances/111\n
/studies/1.888.999.222/series/123.456/instances/222\n
/studies/1.888.999.222/series/123.456/instances/333\n
Criar um ficheiro de filtro com o BigQuery
Normalmente, cria um ficheiro de filtro exportando primeiro os metadados de um armazenamento DICOM para o BigQuery. Isto permite-lhe usar o BigQuery para ver os UIDs de estudo, série e instância dos dados DICOM no seu arquivo DICOM. Em seguida, pode fazer o seguinte:
Consulte os UIDs do estudo, da série e da instância nos quais tem interesse. Por exemplo, depois de exportar os metadados para o BigQuery, pode executar a seguinte consulta para concatenar os UIDs do estudo, da série e da instância num formato compatível com os requisitos do ficheiro de filtro:
SELECT CONCAT ('/studies/', StudyInstanceUID, '/series/', SeriesInstanceUID, '/instances/', SOPInstanceUID) FROM [PROJECT_ID:BIGQUERY_DATASET.BIGQUERY_TABLE]
Se a consulta devolver um conjunto de resultados grande, pode materializar uma nova tabela guardando os resultados da consulta numa tabela de destino no BigQuery.
Depois de guardar os resultados da consulta na tabela de destino, pode guardar o conteúdo da tabela de destino num ficheiro e exportá-lo para o Cloud Storage. Para ver os passos sobre como o fazer, consulte o artigo Exportar dados de tabelas. O ficheiro exportado é o ficheiro de filtro. Vai usar a localização do ficheiro de filtro no armazenamento na nuvem quando especificar o filtro na operação de exportação.
Criar um ficheiro de filtro manualmente
Pode criar um ficheiro de filtro com conteúdo personalizado e
carregá-lo para um contentor do Cloud Storage.
Vai usar a localização do ficheiro de filtro no Cloud Storage quando especificar o filtro na operação de desidentificação. O exemplo seguinte mostra como carregar um ficheiro de filtro para um contentor do Cloud Storage através do comando gcloud storage cp
:
gcloud storage cp PATH/TO/FILTER_FILE gs://BUCKET/DIRECTORY
Por exemplo:
gcloud storage cp /home/user/Desktop/filters.txt gs://my-bucket/my-directory
Usar um filtro
Depois de configurar o ficheiro de filtro, pode transmiti-lo como um valor para o campo resourcePathsGcsUri
no objeto filterConfig
.
O exemplo seguinte expande a secção Desidentificar dados ao nível do arquivo DICOM, mas é fornecido um ficheiro de filtro no Cloud Storage que determina que recursos DICOM são desidentificados.
REST
Desidentifique o conjunto de dados.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- LOCATION: a localização do conjunto de dados
- SOURCE_DATASET_ID: o ID do conjunto de dados que contém os dados a desidentificar
- DESTINATION_DATASET_ID: o ID do conjunto de dados de destino onde os dados anonimizados são escritos
- SOURCE_DICOM_STORE_ID: o ID do armazenamento DICOM que contém os dados a desidentificar
- DESTINATION_DICOM_STORE_ID: o ID do armazenamento DICOM no conjunto de dados de destino
- BUCKET/PATH/TO/FILE: a localização do ficheiro de filtro num contentor do Cloud Storage
Corpo JSON do pedido:
{ "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 o seu pedido, escolha uma destas opções:
curl
Guarde o corpo do pedido num ficheiro denominado
request.json
. Execute o seguinte comando no terminal para criar ou substituir este ficheiro 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
Em seguida, execute o seguinte comando para enviar o seu pedido 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
Guarde o corpo do pedido num ficheiro denominado
request.json
. Execute o seguinte comando no terminal para criar ou substituir este ficheiro 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
Em seguida, execute o seguinte comando para enviar o seu pedido 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 obter o estado da operação de execução longa.
Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:
- PROJECT_ID: o ID do seu Google Cloud projeto
- DATASET_ID: o ID do conjunto de dados
- LOCATION: a localização do conjunto de dados
- OPERATION_ID: o ID devolvido pela operação de longa duração
Para enviar o seu pedido, 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 ContentExplorador de APIs
Abra a página de referência do método. O painel APIs Explorer é aberto no lado direito da página. Pode interagir com esta ferramenta para enviar pedidos. Preencha todos os campos obrigatórios e clique em Executar.
"done": true
, a operação de longa duração terminou.
Resolução de problemas de operações de desidentificação de DICOM
Se ocorrerem erros durante uma operação de desidentificação DICOM, os erros são registados no Cloud Logging. Para mais informações, consulte o artigo Ver registos de erros nos Registos na nuvem.
Se toda a operação devolver um erro, consulte o artigo Resolução de problemas de operações de longa duração.