Esta página explica como desidentificar dados DICOM e gravar metadados sobre a operação de desidentificação e o que foi desidentificado para um armazenamento de FHIR. Os metadados são armazenados em recursos de Proveniência do FHIR no armazenamento do FHIR. Em seguida, você pode consultar os dados usando pesquisas personalizadas do FHIR para responder a perguntas como estas:
- O que foi desidentificado?
- Como e por que os dados foram desidentificados?
- Quando a operação de desidentificação ocorreu e quanto tempo ela levou?
Antes de começar
Usar FHIR em vez de anotações
A API Cloud Healthcare oferece uma API de anotações que pode ser usada para anotar dados desidentificados.
Escrever metadados de operação de desidentificação em um armazenamento FHIR funciona de maneira semelhante e tem as seguintes vantagens:
- Não é necessário usar a API de anotações, que é uma API separada.
- Não é necessário criar e gerenciar repositórios e registros de anotações.
- Você pode continuar trabalhando com o padrão FHIR e a API FHIR da API Cloud Healthcare.
- É possível exportar os recursos FHIR para o BigQuery
para exploração e análise. Os dados gerados são compatíveis apenas com
o
LOSSLESS
ouANALYTICS_V2
SchemaType
.- É possível fazer streaming de mudanças de recursos FHIR para o BigQuery para sincronizar os dados em um armazenamento FHIR com um conjunto de dados do BigQuery quase em tempo real.
- Mais informações são fornecidas sobre os metadados da operação de desidentificação.
Requisitos
A loja FHIR que contém os metadados da operação de desidentificação precisa atender aos seguintes requisitos:
- Precisa já existir.
- Precisa ser um armazenamento FHIR da versão R4.
- O
enableUpdateCreate
precisa estar definido comotrue
.
Recursos de origem na loja FHIR de metadados da operação
Quando você executa uma operação de desidentificação DICOM, os seguintes recursos de origem são gravados na loja FHIR de metadados da operação:
Um recurso de origem que resume a operação de desidentificação, como o nome da operação de longa duração, quando ela ocorreu e qual configuração foi usada. Para conferir uma lista de campos neste recurso de origem, consulte Desidentificar metadados de operação em um recurso de origem.
Um recurso de origem para cada instância de DICOM desidentificada. Para uma lista de campos neste recurso de origem, consulte Metadados de desidentificação DICOM em um recurso de origem.
- O recurso contém informações sobre o que foi desidentificado, como uma tag DICOM ou a parte de uma imagem DICOM, e as ações que foram realizadas, como se as informações foram excluídas, transformadas ou ignoradas.
O recurso pode conter dados desidentificados processados por reconhecimento óptico de caracteres (OCR, na sigla em inglês) que se enquadram no escopo de informações protegidas de saúde (PHI).
O texto desidentificado, ou
quote
, é acompanhado do tipo de informação, ouinfoType
, e da probabilidade de encontrar as informações, ouconfidence
. Por exemplo, se uma imagem DICOM contendo o texto gravadoJohn Doe
for desidentificada, o recurso de origem vai conterquote
definido comoJohn Doe
,infoType
definido comoPERSON_NAME
e um valorconfidence
entre 0 e 1.Os metadados de desidentificação do DICOM só são gerados se o método
dicomStores.deidentify
for chamado comImageConfig.textRedactionMode
definido comoREDACT_SENSITIVE_TEXT
ouREDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS
. Se você definirREDACT_ALL_TEXT
, o método vai gerar o texto desidentificado como uma string única no campoextracted-text
. A string não contém segmentação. Os tokens são separados por espaços.
Desidentificar metadados de operação em um recurso de origem
A tabela a seguir mostra uma descrição dos metadados na operação de desidentificação e o campo correspondente nos metadados em que ele pode ser encontrado no recurso de origem. As células "Campo de recurso de origem" contêm valores de amostra para fins de demonstração.
Descrição dos metadados | Campo de recurso de origem |
---|---|
ID do recurso de origem | Provenance.id |
Quando a operação de remoção de identificação começou | Provenance.occurredDateTime |
Carimbo de data/hora da criação do recurso de origem | Provenance.recorded |
Nome da operação de longa duração de desidentificação | Provenance.agent.who: { "identifier": { "system": "https://g.co/healthcare/operation" "value": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" } } |
Armazenamento DICOM de origem | Provenance.entity.role: "SOURCE" Provenance.entity.what.identifier.value: "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID" |
Armazenamento DICOM de destino | Provenance.target.type.value |
Valor DeidentifyConfig usado |
Provenance.entity.extension: [{ url: 'https://g.co/deidentify-config', valueString: 'DEIDENTIFY_CONFIG' // Can be either a JSON configuration or a path to a Cloud Storage URI and timestamp if the configuration was provided using Cloud Storage }] |
Metadados de desidentificação DICOM em um recurso de origem
A tabela a seguir mostra uma descrição dos metadados na instância DICOM que foi desidentificada e o campo correspondente dos metadados em um recurso de origem. As células "Campo de recurso de origem" contêm valores de amostra para fins de demonstração.
Descrição dos metadados | Campo de recurso de origem |
---|---|
Link para o recurso de operação de desidentificação | Provenance.agent.who: {reference: "Provenance/PROVENANCE_RESOURCE_ID"} |
Carimbo de data/hora da criação do recurso de origem | Provenance.recorded |
Caminho REST da instância DICOM de origem | Provenance.entity.role: SOURCE Provenance.entity.what.identifier.value |
Caminho REST da instância DICOM de destino | Provenance.target.type.value |
Tamanho da imagem DICOM | Provenance.entity.extension: [ { url: 'https://g.co/WIDTH', valueDecimal: WIDTH }, url: 'https://g.co/HEIGHT', valueDecimal: HEIGHT } ] |
Tamanho estruturado | Provenance.entity.extension: [{ url: 'https://g.co/DICOM_STRUCTURED_SIZE', valueDecimal: VALUE, }] |
Anotação de imagem DICOM | Provenance.entity.extension: [{ url: 'https://g.co/DICOM_IMAGES', extension: [ { FRAME_0 }, { FRAME_1 }, ... ] }] |
Anotação de frame DICOM | Provenance.entity.extension['https://g.co/dicom-images'].extension: [ { url: 'frame-index', valueDecimal: 0, extension: [ { url: 'left', valueDecimal: LEFT_VALUE }, { url: 'right', valueDecimal: RIGHT_VALUE }, { url: 'top', valueDecimal: TOP_VALUE }, { url: 'bottom', valueDecimal: BOTTOM_VALUE }, { url: 'relative-left', valueDecimal: RELATIVE_LEFT_VALUE / WIDTH }, { url: 'relative-right', valueDecimal: RELATIVE_RIGHT_VALUE / HEIGHT }, { url: 'relative-top', valueDecimal: RELATIVE_TOP_VALUE / WIDTH }, { url: 'relative-bottom', valueDecimal: RELATIVE_BOTTOM / HEIGHT } ] } ] |
Anotação de frame DICOM | // Only available if the text redaction mode is REDACT_SENSITIVE_TEXT or // REDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS Provenance.entity.extension: [ { "url": "quote", // The PHI text de-identified "valueString": "John Doe" }, { "url": "infoType", // The type of the de-identified text "valueString": "PERSON_NAME" }, { "url": "confidence", // The likelihood of finding this quote and its infoType "valueDecimal": 0.7 } ] |
Anotação de frame DICOM | // Only available if the text redaction mode is REDACT_ALL_TEXT Provenance.entity.extension: [ { "url": "extracted-text", // The entire PHI text de-identified "valueString": "John Doe 27-Jan-1999 Sex:M" } ] |
Anotação de todas as tags DICOM | Provenance.entity.extension: [{ url: 'https://g.co/dicom-tags', extension: [ { // tag (0002,0000) }, { // tag (0002,0001) }, ... ] }] |
Notação de tag individual do DICOM | Provenance.entity.extension['https://g.co/dicom-tags'].extension: [ { url: 'tag-id', valueString: '00080012', extension: [ { url: 'byte-start', valueDecimal: 10 }, { url: 'byte-end', valueDecimal: 18 }, { url: 'finding-infotype', valueString: 'PERSON_NAME' }, { url: 'text-original', valueString: 'John Doe' }, { url: 'text-replaced', valueString: 'PERSON_NAME' }, { url: 'deidentify-action', valueString: 'REMOVED' // Possible values are "REMOVED", "DELETED", "REGENERATED UID", // "RESET", "CLEANED", and "RECURSED" }, { url: 'deidentify-reason', valueString: 'Matched VALUE' // Possible values include "ID", "VR", or "Expression", // for example "Matched ID: DICOM_TAG_ID" } ] } ] |
Exemplos
Antes de começar
Confira se você tem o papel roles/healthcare.fhirResourceEditor
na loja FHIR de metadados de operação antes de executar qualquer um dos
exemplos a seguir. Você precisa desse papel para gravar na loja de FHIR de metadados da operação.
Desidentificar dados DICOM, gravar em um repositório FHIR e pesquisar recursos de origem
Antes de executar este exemplo, siga estas etapas:
- Crie um conjunto de dados de origem que contenha um armazenamento DICOM com pelo menos uma instância DICOM a ser desidentificada.
- Crie um conjunto de dados de destino com um armazenamento DICOM vazio e um armazenamento FHIR vazio. A loja FHIR precisa atender aos requisitos.
Este exemplo expande a Como combinar desidentificação de tag e edição de texto gravado. Neste exemplo, a desidentificação ocorre em um único armazenamento DICOM, e os dados desidentificados são gravados em um novo armazenamento DICOM. O armazenamento FHIR de metadados da operação está no mesmo conjunto de dados que o novo armazenamento DICOM.
Este exemplo usa duas instâncias DICOM. As instâncias não são fornecidas para você, então as respostas de amostra não vão se alinhar exatamente aos seus dados desidentificados.
Desidentifique os dados DICOM.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do projeto do Google Cloud
- LOCATION: o local do conjunto de dados que contém o armazenamento DICOM de origem
- SOURCE_DATASET_ID: o conjunto de dados pai do armazenamento DICOM de origem
- SOURCE_DICOM_STORE_ID: o ID do armazenamento DICOM que contém os dados que você está desidentificando.
- DESTINATION_DATASET_ID: um conjunto de dados que contém o repositório FHIR da operação de metadados e em que o repositório DICOM desidentificado será criado
- DESTINATION_DICOM_STORE_ID: o armazenamento DICOM em que os dados desidentificados do armazenamento DICOM de origem serão gravados
- OPERATION_METADATA_FHIR_STORE_ID: o repositório FHIR em que os metadados da operação de desidentificação serão gravados
Corpo JSON da solicitação:
{ "destinationStore": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "image": { "textRedactionMode": "REDACT_ALL_TEXT" }, "operationMetadata": { "fhirOutput": { "fhirStore": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/fhirStores/OPERATION_METADATA_FHIR_STORE" } } } }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo chamado
request.json
. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:cat > request.json << 'EOF' { "destinationStore": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "image": { "textRedactionMode": "REDACT_ALL_TEXT" }, "operationMetadata": { "fhirOutput": { "fhirStore": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/fhirStores/OPERATION_METADATA_FHIR_STORE" } } } } EOF
Depois execute o comando a seguir para enviar a solicitação REST:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID:deidentify"PowerShell
Salve o corpo da solicitação em um arquivo chamado
request.json
. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:@' { "destinationStore": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/dicomStores/DESTINATION_DICOM_STORE_ID", "config": { "dicom": { "filterProfile": "DEIDENTIFY_TAG_CONTENTS" }, "image": { "textRedactionMode": "REDACT_ALL_TEXT" }, "operationMetadata": { "fhirOutput": { "fhirStore": "projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/fhirStores/OPERATION_METADATA_FHIR_STORE" } } } } '@ | Out-File -FilePath request.json -Encoding utf8
Depois execute o comando a seguir para enviar a solicitação REST:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/SOURCE_DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID:deidentify" | Select-Object -Expand ContentConfira o status da operação.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do projeto do Google Cloud
- LOCATION: o local do conjunto de dados
- SOURCE_DATASET_ID: o conjunto de dados em que a operação de desidentificação está sendo executada
- OPERATION_ID: o ID da operação de desidentificação
Para enviar a solicitação, escolha uma destas opções:
curl
execute o seguinte comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/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/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPIs Explorer
Abra a página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Preencha todos os campos obrigatórios e clique em Executar.
Você receberá uma resposta JSON semelhante a esta:
Depois de desidentificar os dados DICOM e gravar os metadados da operação em uma armazenagem FHIR, você poderá conferir os recursos de procedência na armazenagem FHIR.
Para conferir os recursos de origem, use o método
fhir.search
.Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: é o ID do projeto do Google Cloud.
- LOCATION: o local do conjunto de dados pai
- DATASET_ID: o conjunto de dados pai do armazenamento de FHIR
- OPERATION_METADATA_FHIR_STORE_ID: o ID do repositório FHIR que contém os metadados
Para enviar a solicitação, escolha uma destas opções:
curl
execute o seguinte comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/fhirStores/OPERATION_METADATA_FHIR_STORE_ID/fhir/Provenance"PowerShell
Execute o seguinte comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DESTINATION_DATASET_ID/fhirStores/OPERATION_METADATA_FHIR_STORE_ID/fhir/Provenance" | Select-Object -Expand Content- Um recurso de origem para cada uma das duas instâncias DICOM
- Um recurso de origem para a operação de desidentificação
Armazene dados de amostra, crie uma pesquisa FHIR personalizada de coordenadas x relativas e faça consultas
Antes de executar este exemplo, crie um conjunto de dados de destino com um armazenamento DICOM vazio e um armazenamento FHIR vazio. A loja FHIR precisa atender aos requisitos.
O exemplo a seguir mostra como armazenar os três recursos de origem criados em Desidentificar dados DICOM, gravar em um armazenamento FHIR e pesquisar recursos de origem e, em seguida, criar uma pesquisa personalizada. A pesquisa personalizada
consulta o relative-x-coordinate-bottom-left
em uma das instâncias de DICOM
desidentificadas.
Armazene os recursos de origem.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: é o ID do projeto do Google Cloud.
- LOCATION: o local do conjunto de dados pai
- DATASET_ID: o conjunto de dados pai do armazenamento de FHIR
- OPERATION_METADATA_FHIR_STORE_ID: o ID do repositório FHIR que contém os metadados
Corpo JSON da solicitação:
{ "resourceType": "Bundle", "type": "transaction", "entry": [ { "request": {"method": "PUT", "url": "Provenance/operation-123"}, "resource": { "resourceType": "Provenance", "id": "operation-123", "target": [ { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/deid-dicom-store" } } ], "occurredDateTime": "2010-11-08T08:30:00-04:00", "recorded": "2010-11-08T08:30:24-04:00", "agent": [ { "who": { "identifier": { "system": "https://g.co/healthcare/operation", "value": "projects/my-project/locations/us-central1/datasets/my-dataset/operations/123" } } } ], "entity": [ { "role": "source", "what": { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/test-dicom-store" } } } ] } }, { "request": {"method": "POST", "url": "Provenance"}, "resource": { "resourceType": "Provenance", "target": [ { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/deid-dicom-store/dicomWeb/studies/1/series/2/instances/3" } } ], "recorded": "2010-11-08T08:39:24-04:00", "agent": [ { "who": { "identifier": { "value": "projects/test-project/locations/us-central1/datasets/test-dataset/fhirStores/test-fhir-store/fhir/Provenance/operation-123" } } } ], "entity": [ { "role": "source", "what": { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/test-dicom-store/dicomWeb/studies/1/series/2/instances/3" } }, "extension": [ { "url": "https://g.co/dicom-images", "extension": [ { "url": "frame-index", "valueDecimal": 0, "extension": [ { "url": "bottom", "valueDecimal": 100 }, { "url": "left", "valueDecimal": 100 }, { "url": "right", "valueDecimal": 200 }, { "url": "top", "valueDecimal": 200 }, { "url": "relative-bottom", "valueDecimal": 0.05 }, { "url": "relative-left", "valueDecimal": 0.05 }, { "url": "relative-right", "valueDecimal": 0.1 }, { "url": "relative-top", "valueDecimal": 0.1 }, { "url": "bottom", "valueDecimal": 900 }, { "url": "left", "valueDecimal": 900 }, { "url": "right", "valueDecimal": 1000 }, { "url": "top", "valueDecimal": 1000 }, { "url": "relative-bottom", "valueDecimal": 0.45 }, { "url": "relative-left", "valueDecimal": 0.45 }, { "url": "relative-right", "valueDecimal": 0.5 }, { "url": "relative-top", "valueDecimal": 0.5 } ] } ] }, { "url": "https://g.co/dicom-tags", "extension": [ { "url": "tag-id", "valueString": "00100021", "extension": [ { "url": "byte-start", "valueDecimal": 10 }, { "url": "byte-end", "valueDecimal": 18 }, { "url": "finding-infotype", "valueString": "PERSON_NAME" }, { "url": "text-original", "valueString": "John Doe" }, { "url": "text-replaced", "valueString": "PERSON_NAME" }, { "url": "byte-start", "valueDecimal": 25 }, { "url": "byte-end", "valueDecimal": 35 }, { "url": "finding-infotype", "valueString": "DATE" }, { "url": "text-original", "valueString": "1900-12-31" }, { "url": "text-replaced", "valueString": "DATE" } ] }, { "url": "tag-id", "valueString": "00102150", "extension": [ { "url": "byte-start", "valueDecimal": 0 }, { "url": "byte-end", "valueDecimal": 2 }, { "url": "finding-infotype", "valueString": "LOCATION" }, { "url": "text-original", "valueString": "US" }, { "url": "text-replaced", "valueString": "LOCATION" } ] } ] } ] } ] } }, { "request": {"method": "POST", "url": "Provenance"}, "resource": { "resourceType": "Provenance", "target": [ { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/deid-dicom-store/dicomWeb/studies/1/series/2/instances/4" } } ], "recorded": "2010-11-08T08:39:25-04:00", "agent": [ { "who": { "identifier": { "value": "projects/test-project/locations/us-central1/datasets/test-dataset/fhirStores/test-fhir-store/fhir/Provenance/operation-123" } } } ], "entity": [ { "role": "source", "what": { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/test-dicom-store/dicomWeb/studies/1/series/2/instances/4" } }, "extension": [ { "url": "https://g.co/dicom-images", "extension": [ { "url": "frame-index", "valueDecimal": 0 }, { "url": "frame-index", "valueDecimal": 1, "extension": [ ] } ] }, { "url": "https://g.co/dicom-tags", "extension": [ { "url": "tag-id", "valueString": "00101010", "extension": [ { "url": "byte-start", "valueDecimal": 0 }, { "url": "byte-end", "valueDecimal": 2 }, { "url": "finding-infotype", "valueString": "AGE" }, { "url": "text-original", "valueString": "30" }, { "url": "text-replaced", "valueString": "AGE" } ] }, { "url": "tag-id", "valueString": "00100020", "extension": [ { "url": "byte-start", "valueDecimal": 0 }, { "url": "byte-end", "valueDecimal": 4 }, { "url": "finding-infotype", "valueString": "GENERIC_ID" }, { "url": "text-original", "valueString": "1234" }, { "url": "text-replaced", "valueString": "GENERIC_ID" } ] } ] } ] } ] } } ] }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo chamado
request.json
. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:cat > request.json << 'EOF' { "resourceType": "Bundle", "type": "transaction", "entry": [ { "request": {"method": "PUT", "url": "Provenance/operation-123"}, "resource": { "resourceType": "Provenance", "id": "operation-123", "target": [ { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/deid-dicom-store" } } ], "occurredDateTime": "2010-11-08T08:30:00-04:00", "recorded": "2010-11-08T08:30:24-04:00", "agent": [ { "who": { "identifier": { "system": "https://g.co/healthcare/operation", "value": "projects/my-project/locations/us-central1/datasets/my-dataset/operations/123" } } } ], "entity": [ { "role": "source", "what": { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/test-dicom-store" } } } ] } }, { "request": {"method": "POST", "url": "Provenance"}, "resource": { "resourceType": "Provenance", "target": [ { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/deid-dicom-store/dicomWeb/studies/1/series/2/instances/3" } } ], "recorded": "2010-11-08T08:39:24-04:00", "agent": [ { "who": { "identifier": { "value": "projects/test-project/locations/us-central1/datasets/test-dataset/fhirStores/test-fhir-store/fhir/Provenance/operation-123" } } } ], "entity": [ { "role": "source", "what": { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/test-dicom-store/dicomWeb/studies/1/series/2/instances/3" } }, "extension": [ { "url": "https://g.co/dicom-images", "extension": [ { "url": "frame-index", "valueDecimal": 0, "extension": [ { "url": "bottom", "valueDecimal": 100 }, { "url": "left", "valueDecimal": 100 }, { "url": "right", "valueDecimal": 200 }, { "url": "top", "valueDecimal": 200 }, { "url": "relative-bottom", "valueDecimal": 0.05 }, { "url": "relative-left", "valueDecimal": 0.05 }, { "url": "relative-right", "valueDecimal": 0.1 }, { "url": "relative-top", "valueDecimal": 0.1 }, { "url": "bottom", "valueDecimal": 900 }, { "url": "left", "valueDecimal": 900 }, { "url": "right", "valueDecimal": 1000 }, { "url": "top", "valueDecimal": 1000 }, { "url": "relative-bottom", "valueDecimal": 0.45 }, { "url": "relative-left", "valueDecimal": 0.45 }, { "url": "relative-right", "valueDecimal": 0.5 }, { "url": "relative-top", "valueDecimal": 0.5 } ] } ] }, { "url": "https://g.co/dicom-tags", "extension": [ { "url": "tag-id", "valueString": "00100021", "extension": [ { "url": "byte-start", "valueDecimal": 10 }, { "url": "byte-end", "valueDecimal": 18 }, { "url": "finding-infotype", "valueString": "PERSON_NAME" }, { "url": "text-original", "valueString": "John Doe" }, { "url": "text-replaced", "valueString": "PERSON_NAME" }, { "url": "byte-start", "valueDecimal": 25 }, { "url": "byte-end", "valueDecimal": 35 }, { "url": "finding-infotype", "valueString": "DATE" }, { "url": "text-original", "valueString": "1900-12-31" }, { "url": "text-replaced", "valueString": "DATE" } ] }, { "url": "tag-id", "valueString": "00102150", "extension": [ { "url": "byte-start", "valueDecimal": 0 }, { "url": "byte-end", "valueDecimal": 2 }, { "url": "finding-infotype", "valueString": "LOCATION" }, { "url": "text-original", "valueString": "US" }, { "url": "text-replaced", "valueString": "LOCATION" } ] } ] } ] } ] } }, { "request": {"method": "POST", "url": "Provenance"}, "resource": { "resourceType": "Provenance", "target": [ { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/deid-dicom-store/dicomWeb/studies/1/series/2/instances/4" } } ], "recorded": "2010-11-08T08:39:25-04:00", "agent": [ { "who": { "identifier": { "value": "projects/test-project/locations/us-central1/datasets/test-dataset/fhirStores/test-fhir-store/fhir/Provenance/operation-123" } } } ], "entity": [ { "role": "source", "what": { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/test-dicom-store/dicomWeb/studies/1/series/2/instances/4" } }, "extension": [ { "url": "https://g.co/dicom-images", "extension": [ { "url": "frame-index", "valueDecimal": 0 }, { "url": "frame-index", "valueDecimal": 1, "extension": [ ] } ] }, { "url": "https://g.co/dicom-tags", "extension": [ { "url": "tag-id", "valueString": "00101010", "extension": [ { "url": "byte-start", "valueDecimal": 0 }, { "url": "byte-end", "valueDecimal": 2 }, { "url": "finding-infotype", "valueString": "AGE" }, { "url": "text-original", "valueString": "30" }, { "url": "text-replaced", "valueString": "AGE" } ] }, { "url": "tag-id", "valueString": "00100020", "extension": [ { "url": "byte-start", "valueDecimal": 0 }, { "url": "byte-end", "valueDecimal": 4 }, { "url": "finding-infotype", "valueString": "GENERIC_ID" }, { "url": "text-original", "valueString": "1234" }, { "url": "text-replaced", "valueString": "GENERIC_ID" } ] } ] } ] } ] } } ] } EOF
Depois execute o comando a seguir para enviar a solicitação REST:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/fhir+json" \
-d @request.json \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/OPERATION_METADATA_FHIR_STORE_ID/fhir"PowerShell
Salve o corpo da solicitação em um arquivo chamado
request.json
. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:@' { "resourceType": "Bundle", "type": "transaction", "entry": [ { "request": {"method": "PUT", "url": "Provenance/operation-123"}, "resource": { "resourceType": "Provenance", "id": "operation-123", "target": [ { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/deid-dicom-store" } } ], "occurredDateTime": "2010-11-08T08:30:00-04:00", "recorded": "2010-11-08T08:30:24-04:00", "agent": [ { "who": { "identifier": { "system": "https://g.co/healthcare/operation", "value": "projects/my-project/locations/us-central1/datasets/my-dataset/operations/123" } } } ], "entity": [ { "role": "source", "what": { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/test-dicom-store" } } } ] } }, { "request": {"method": "POST", "url": "Provenance"}, "resource": { "resourceType": "Provenance", "target": [ { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/deid-dicom-store/dicomWeb/studies/1/series/2/instances/3" } } ], "recorded": "2010-11-08T08:39:24-04:00", "agent": [ { "who": { "identifier": { "value": "projects/test-project/locations/us-central1/datasets/test-dataset/fhirStores/test-fhir-store/fhir/Provenance/operation-123" } } } ], "entity": [ { "role": "source", "what": { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/test-dicom-store/dicomWeb/studies/1/series/2/instances/3" } }, "extension": [ { "url": "https://g.co/dicom-images", "extension": [ { "url": "frame-index", "valueDecimal": 0, "extension": [ { "url": "bottom", "valueDecimal": 100 }, { "url": "left", "valueDecimal": 100 }, { "url": "right", "valueDecimal": 200 }, { "url": "top", "valueDecimal": 200 }, { "url": "relative-bottom", "valueDecimal": 0.05 }, { "url": "relative-left", "valueDecimal": 0.05 }, { "url": "relative-right", "valueDecimal": 0.1 }, { "url": "relative-top", "valueDecimal": 0.1 }, { "url": "bottom", "valueDecimal": 900 }, { "url": "left", "valueDecimal": 900 }, { "url": "right", "valueDecimal": 1000 }, { "url": "top", "valueDecimal": 1000 }, { "url": "relative-bottom", "valueDecimal": 0.45 }, { "url": "relative-left", "valueDecimal": 0.45 }, { "url": "relative-right", "valueDecimal": 0.5 }, { "url": "relative-top", "valueDecimal": 0.5 } ] } ] }, { "url": "https://g.co/dicom-tags", "extension": [ { "url": "tag-id", "valueString": "00100021", "extension": [ { "url": "byte-start", "valueDecimal": 10 }, { "url": "byte-end", "valueDecimal": 18 }, { "url": "finding-infotype", "valueString": "PERSON_NAME" }, { "url": "text-original", "valueString": "John Doe" }, { "url": "text-replaced", "valueString": "PERSON_NAME" }, { "url": "byte-start", "valueDecimal": 25 }, { "url": "byte-end", "valueDecimal": 35 }, { "url": "finding-infotype", "valueString": "DATE" }, { "url": "text-original", "valueString": "1900-12-31" }, { "url": "text-replaced", "valueString": "DATE" } ] }, { "url": "tag-id", "valueString": "00102150", "extension": [ { "url": "byte-start", "valueDecimal": 0 }, { "url": "byte-end", "valueDecimal": 2 }, { "url": "finding-infotype", "valueString": "LOCATION" }, { "url": "text-original", "valueString": "US" }, { "url": "text-replaced", "valueString": "LOCATION" } ] } ] } ] } ] } }, { "request": {"method": "POST", "url": "Provenance"}, "resource": { "resourceType": "Provenance", "target": [ { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/deid-dicom-store/dicomWeb/studies/1/series/2/instances/4" } } ], "recorded": "2010-11-08T08:39:25-04:00", "agent": [ { "who": { "identifier": { "value": "projects/test-project/locations/us-central1/datasets/test-dataset/fhirStores/test-fhir-store/fhir/Provenance/operation-123" } } } ], "entity": [ { "role": "source", "what": { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/test-dicom-store/dicomWeb/studies/1/series/2/instances/4" } }, "extension": [ { "url": "https://g.co/dicom-images", "extension": [ { "url": "frame-index", "valueDecimal": 0 }, { "url": "frame-index", "valueDecimal": 1, "extension": [ ] } ] }, { "url": "https://g.co/dicom-tags", "extension": [ { "url": "tag-id", "valueString": "00101010", "extension": [ { "url": "byte-start", "valueDecimal": 0 }, { "url": "byte-end", "valueDecimal": 2 }, { "url": "finding-infotype", "valueString": "AGE" }, { "url": "text-original", "valueString": "30" }, { "url": "text-replaced", "valueString": "AGE" } ] }, { "url": "tag-id", "valueString": "00100020", "extension": [ { "url": "byte-start", "valueDecimal": 0 }, { "url": "byte-end", "valueDecimal": 4 }, { "url": "finding-infotype", "valueString": "GENERIC_ID" }, { "url": "text-original", "valueString": "1234" }, { "url": "text-replaced", "valueString": "GENERIC_ID" } ] } ] } ] } ] } } ] } '@ | Out-File -FilePath request.json -Encoding utf8
Depois execute o comando a seguir para enviar a solicitação REST:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/fhir+json" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/OPERATION_METADATA_FHIR_STORE_ID/fhir" | Select-Object -Expand ContentVocê receberá uma resposta JSON semelhante a esta:
Crie um recurso SearchParameter na coordenada x relativa da imagem DICOM.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: é o ID do projeto do Google Cloud.
- LOCATION: o local do conjunto de dados pai
- DATASET_ID: o conjunto de dados pai do armazenamento de FHIR
- OPERATION_METADATA_FHIR_STORE_ID: o ID do repositório FHIR que contém os metadados
Corpo JSON da solicitação:
{ "resourceType": "SearchParameter", "url": "relative-x-coordinate-bottom-left", "base": ["Provenance"], "code": "relative-x-coordinate-bottom-left", "name": "relative x-coordinate of the bottom left corner of the bounding box", "type": "number", "expression": "Provenance.entity.extension('https://g.co/dicom-images').extension('frame-index').extension('relative-bottom').value.as(Decimal)", "status": "active", "description": "A search on bottom left relative x-coordinate of annotations generated from de-identification of a DICOM file" }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo chamado
request.json
. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:cat > request.json << 'EOF' { "resourceType": "SearchParameter", "url": "relative-x-coordinate-bottom-left", "base": ["Provenance"], "code": "relative-x-coordinate-bottom-left", "name": "relative x-coordinate of the bottom left corner of the bounding box", "type": "number", "expression": "Provenance.entity.extension('https://g.co/dicom-images').extension('frame-index').extension('relative-bottom').value.as(Decimal)", "status": "active", "description": "A search on bottom left relative x-coordinate of annotations generated from de-identification of a DICOM file" } EOF
Depois execute o comando a seguir para enviar a solicitação REST:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/fhir+json" \
-d @request.json \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/OPERATION_METADATA_FHIR_STORE_ID/fhir/SearchParameter"PowerShell
Salve o corpo da solicitação em um arquivo chamado
request.json
. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:@' { "resourceType": "SearchParameter", "url": "relative-x-coordinate-bottom-left", "base": ["Provenance"], "code": "relative-x-coordinate-bottom-left", "name": "relative x-coordinate of the bottom left corner of the bounding box", "type": "number", "expression": "Provenance.entity.extension('https://g.co/dicom-images').extension('frame-index').extension('relative-bottom').value.as(Decimal)", "status": "active", "description": "A search on bottom left relative x-coordinate of annotations generated from de-identification of a DICOM file" } '@ | Out-File -FilePath request.json -Encoding utf8
Depois execute o comando a seguir para enviar a solicitação REST:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/fhir+json" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/OPERATION_METADATA_FHIR_STORE_ID/fhir/SearchParameter" | Select-Object -Expand ContentVocê receberá uma resposta JSON semelhante a esta:
Ative o recurso SearchParameter personalizado no armazenamento FHIR.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: é o ID do projeto do Google Cloud.
- LOCATION: o local do conjunto de dados pai
- DATASET_ID: o conjunto de dados pai do armazenamento de FHIR
- OPERATION_METADATA_FHIR_STORE_ID: o ID do repositório FHIR que contém os metadados
Corpo JSON da solicitação:
{ "canonicalUrls": [ "relative-x-coordinate-bottom-left" ] }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo chamado
request.json
. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:cat > request.json << 'EOF' { "canonicalUrls": [ "relative-x-coordinate-bottom-left" ] } EOF
Depois execute o comando a seguir para enviar a solicitação REST:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/fhir+json" \
-d @request.json \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/OPERATION_METADATA_FHIR_STORE_ID:configureSearch"PowerShell
Salve o corpo da solicitação em um arquivo chamado
request.json
. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:@' { "canonicalUrls": [ "relative-x-coordinate-bottom-left" ] } '@ | Out-File -FilePath request.json -Encoding utf8
Depois execute o comando a seguir para enviar a solicitação REST:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/fhir+json" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/OPERATION_METADATA_FHIR_STORE_ID:configureSearch" | Select-Object -Expand ContentConfira o status da operação.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do projeto do Google Cloud
- LOCATION: o local do conjunto de dados
- DATASET_ID: o conjunto de dados em que a operação de pesquisa personalizada está sendo executada
- OPERATION_ID: o ID da operação de pesquisa personalizada
Para enviar a solicitação, escolha uma destas opções:
curl
execute o seguinte comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/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/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPIs Explorer
Abra a página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Preencha todos os campos obrigatórios e clique em Executar.
Você receberá uma resposta JSON semelhante a esta:
Consulte o recurso de origem usando o parâmetro de pesquisa de coordenadas x relativas:
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: é o ID do projeto do Google Cloud.
- LOCATION: o local do conjunto de dados pai
- DATASET_ID: o conjunto de dados pai do armazenamento de FHIR
- OPERATION_METADATA_FHIR_STORE_ID: o ID do repositório FHIR que contém os metadados
Para enviar a solicitação, escolha uma destas opções:
curl
O exemplo a seguir usa a consultarelative-x-coordinate-bottom-left=le0.05
, que pesquisa uma coordenada x dentro de 5% da borda da imagem.Execute o seguinte comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/OPERATION_METADATA_FHIR_STORE_ID/fhir/Provenance?relative-x-coordinate-bottom-left=le0.05"PowerShell
O exemplo a seguir usa a consultarelative-x-coordinate-bottom-left=le0.05
, que pesquisa uma coordenada x dentro de 5% da borda da imagem.Execute o seguinte comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/OPERATION_METADATA_FHIR_STORE_ID/fhir/Provenance?relative-x-coordinate-bottom-left=le0.05" | Select-Object -Expand Content{ "entry": [ { "fullUrl": "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/OPERATION_METADATA_FHIR_STORE_ID/fhir/Provenance/90062087-8ac2-499c-b952-a04999578bd0", "resource": { "agent": [ { "who": { "identifier": { "value": "projects/test-project/locations/us-central1/datasets/test-dataset/fhirStores/test-fhir-store/fhir/Provenance/operation-123" } } } ], "entity": [ { "extension": [ { "extension": [ { "extension": [ { "url": "bottom", "valueDecimal": 100 }, { "url": "left", "valueDecimal": 100 }, { "url": "right", "valueDecimal": 200 }, { "url": "top", "valueDecimal": 200 }, { "url": "relative-bottom", "valueDecimal": 0.05 }, { "url": "relative-left", "valueDecimal": 0.05 }, { "url": "relative-right", "valueDecimal": 0.1 }, { "url": "relative-top", "valueDecimal": 0.1 }, { "url": "bottom", "valueDecimal": 900 }, { "url": "left", "valueDecimal": 900 }, { "url": "right", "valueDecimal": 1000 }, { "url": "top", "valueDecimal": 1000 }, { "url": "relative-bottom", "valueDecimal": 0.45 }, { "url": "relative-left", "valueDecimal": 0.45 }, { "url": "relative-right", "valueDecimal": 0.5 }, { "url": "relative-top", "valueDecimal": 0.5 } ], "url": "frame-index", "valueDecimal": 0 } ], "url": "https://g.co/dicom-images" }, { "extension": [ { "extension": [ { "url": "byte-start", "valueDecimal": 10 }, { "url": "byte-end", "valueDecimal": 18 }, { "url": "finding-infotype", "valueString": "PERSON_NAME" }, { "url": "text-original", "valueString": "John Doe" }, { "url": "text-replaced", "valueString": "PERSON_NAME" }, { "url": "byte-start", "valueDecimal": 25 }, { "url": "byte-end", "valueDecimal": 35 }, { "url": "finding-infotype", "valueString": "DATE" }, { "url": "text-original", "valueString": "1900-12-31" }, { "url": "text-replaced", "valueString": "DATE" } ], "url": "tag-id", "valueString": "00100021" }, { "extension": [ { "url": "byte-start", "valueDecimal": 0 }, { "url": "byte-end", "valueDecimal": 2 }, { "url": "finding-infotype", "valueString": "LOCATION" }, { "url": "text-original", "valueString": "US" }, { "url": "text-replaced", "valueString": "LOCATION" } ], "url": "tag-id", "valueString": "00102150" } ], "url": "https://g.co/dicom-tags" } ], "role": "source", "what": { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/test-dicom-store/dicomWeb/studies/1/series/2/instances/3" } } } ], "id": "90062087-8ac2-499c-b952-a04999578bd0", "meta": { "lastUpdated": "LAST_UPDATED", "versionId": "MTY0NjY4NDg4Nzk3MDM2MTAwMA" }, "recorded": "2010-11-08T08:39:24-04:00", "resourceType": "Provenance", "target": [ { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/deid-dicom-store/dicomWeb/studies/1/series/2/instances/3" } } ] }, "search": { "mode": "match" } } ], "link": [ { "relation": "search", "url": "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/OPERATION_METADATA_FHIR_STORE_ID/fhir/Provenance/?relative-x-coordinate-bottom-left=le0.05" }, { "relation": "first", "url": "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/OPERATION_METADATA_FHIR_STORE_ID/fhir/Provenance/?relative-x-coordinate-bottom-left=le0.05" }, { "relation": "self", "url": "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/OPERATION_METADATA_FHIR_STORE_ID/fhir/Provenance/?relative-x-coordinate-bottom-left=le0.05" } ], "resourceType": "Bundle", "total": 1, "type": "searchset" }
Armazene dados de amostra, crie uma pesquisa FHIR personalizada DICOM de origem e faça consultas
Antes de executar este exemplo, crie um conjunto de dados de destino contendo um armazenamento DICOM vazio e um armazenamento FHIR vazio. A loja FHIR precisa atender aos requisitos.
O exemplo a seguir mostra como armazenar os três recursos de origem criados em Desidentificar dados DICOM, gravar em um armazenamento FHIR e pesquisar recursos de origem e, em seguida, criar uma pesquisa personalizada. A pesquisa personalizada consulta informações sobre uma das duas imagens DICOM de origem.
Armazene os recursos de origem.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: é o ID do projeto do Google Cloud.
- LOCATION: o local do conjunto de dados pai
- DATASET_ID: o conjunto de dados pai do armazenamento de FHIR
- OPERATION_METADATA_FHIR_STORE_ID: o ID do repositório FHIR que contém os metadados
Corpo JSON da solicitação:
{ "resourceType": "Bundle", "type": "transaction", "entry": [ { "request": {"method": "PUT", "url": "Provenance/operation-123"}, "resource": { "resourceType": "Provenance", "id": "operation-123", "target": [ { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/deid-dicom-store" } } ], "occurredDateTime": "2010-11-08T08:30:00-04:00", "recorded": "2010-11-08T08:30:24-04:00", "agent": [ { "who": { "identifier": { "system": "https://g.co/healthcare/operation", "value": "projects/my-project/locations/us-central1/datasets/my-dataset/operations/123" } } } ], "entity": [ { "role": "source", "what": { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/test-dicom-store" } } } ] } }, { "request": {"method": "POST", "url": "Provenance"}, "resource": { "resourceType": "Provenance", "target": [ { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/deid-dicom-store/dicomWeb/studies/1/series/2/instances/3" } } ], "recorded": "2010-11-08T08:39:24-04:00", "agent": [ { "who": { "identifier": { "value": "projects/test-project/locations/us-central1/datasets/test-dataset/fhirStores/test-fhir-store/fhir/Provenance/operation-123" } } } ], "entity": [ { "role": "source", "what": { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/test-dicom-store/dicomWeb/studies/1/series/2/instances/3" } }, "extension": [ { "url": "https://g.co/dicom-images", "extension": [ { "url": "frame-index", "valueDecimal": 0, "extension": [ { "url": "bottom", "valueDecimal": 100 }, { "url": "left", "valueDecimal": 100 }, { "url": "right", "valueDecimal": 200 }, { "url": "top", "valueDecimal": 200 }, { "url": "relative-bottom", "valueDecimal": 0.05 }, { "url": "relative-left", "valueDecimal": 0.05 }, { "url": "relative-right", "valueDecimal": 0.1 }, { "url": "relative-top", "valueDecimal": 0.1 }, { "url": "bottom", "valueDecimal": 900 }, { "url": "left", "valueDecimal": 900 }, { "url": "right", "valueDecimal": 1000 }, { "url": "top", "valueDecimal": 1000 }, { "url": "relative-bottom", "valueDecimal": 0.45 }, { "url": "relative-left", "valueDecimal": 0.45 }, { "url": "relative-right", "valueDecimal": 0.5 }, { "url": "relative-top", "valueDecimal": 0.5 } ] } ] }, { "url": "https://g.co/dicom-tags", "extension": [ { "url": "tag-id", "valueString": "00100021", "extension": [ { "url": "byte-start", "valueDecimal": 10 }, { "url": "byte-end", "valueDecimal": 18 }, { "url": "finding-infotype", "valueString": "PERSON_NAME" }, { "url": "text-original", "valueString": "John Doe" }, { "url": "text-replaced", "valueString": "PERSON_NAME" }, { "url": "byte-start", "valueDecimal": 25 }, { "url": "byte-end", "valueDecimal": 35 }, { "url": "finding-infotype", "valueString": "DATE" }, { "url": "text-original", "valueString": "1900-12-31" }, { "url": "text-replaced", "valueString": "DATE" } ] }, { "url": "tag-id", "valueString": "00102150", "extension": [ { "url": "byte-start", "valueDecimal": 0 }, { "url": "byte-end", "valueDecimal": 2 }, { "url": "finding-infotype", "valueString": "LOCATION" }, { "url": "text-original", "valueString": "US" }, { "url": "text-replaced", "valueString": "LOCATION" } ] } ] } ] } ] } }, { "request": {"method": "POST", "url": "Provenance"}, "resource": { "resourceType": "Provenance", "target": [ { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/deid-dicom-store/dicomWeb/studies/1/series/2/instances/4" } } ], "recorded": "2010-11-08T08:39:25-04:00", "agent": [ { "who": { "identifier": { "value": "projects/test-project/locations/us-central1/datasets/test-dataset/fhirStores/test-fhir-store/fhir/Provenance/operation-123" } } } ], "entity": [ { "role": "source", "what": { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/test-dicom-store/dicomWeb/studies/1/series/2/instances/4" } }, "extension": [ { "url": "https://g.co/dicom-images", "extension": [ { "url": "frame-index", "valueDecimal": 0 }, { "url": "frame-index", "valueDecimal": 1, "extension": [ ] } ] }, { "url": "https://g.co/dicom-tags", "extension": [ { "url": "tag-id", "valueString": "00101010", "extension": [ { "url": "byte-start", "valueDecimal": 0 }, { "url": "byte-end", "valueDecimal": 2 }, { "url": "finding-infotype", "valueString": "AGE" }, { "url": "text-original", "valueString": "30" }, { "url": "text-replaced", "valueString": "AGE" } ] }, { "url": "tag-id", "valueString": "00100020", "extension": [ { "url": "byte-start", "valueDecimal": 0 }, { "url": "byte-end", "valueDecimal": 4 }, { "url": "finding-infotype", "valueString": "GENERIC_ID" }, { "url": "text-original", "valueString": "1234" }, { "url": "text-replaced", "valueString": "GENERIC_ID" } ] } ] } ] } ] } } ] }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo chamado
request.json
. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:cat > request.json << 'EOF' { "resourceType": "Bundle", "type": "transaction", "entry": [ { "request": {"method": "PUT", "url": "Provenance/operation-123"}, "resource": { "resourceType": "Provenance", "id": "operation-123", "target": [ { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/deid-dicom-store" } } ], "occurredDateTime": "2010-11-08T08:30:00-04:00", "recorded": "2010-11-08T08:30:24-04:00", "agent": [ { "who": { "identifier": { "system": "https://g.co/healthcare/operation", "value": "projects/my-project/locations/us-central1/datasets/my-dataset/operations/123" } } } ], "entity": [ { "role": "source", "what": { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/test-dicom-store" } } } ] } }, { "request": {"method": "POST", "url": "Provenance"}, "resource": { "resourceType": "Provenance", "target": [ { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/deid-dicom-store/dicomWeb/studies/1/series/2/instances/3" } } ], "recorded": "2010-11-08T08:39:24-04:00", "agent": [ { "who": { "identifier": { "value": "projects/test-project/locations/us-central1/datasets/test-dataset/fhirStores/test-fhir-store/fhir/Provenance/operation-123" } } } ], "entity": [ { "role": "source", "what": { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/test-dicom-store/dicomWeb/studies/1/series/2/instances/3" } }, "extension": [ { "url": "https://g.co/dicom-images", "extension": [ { "url": "frame-index", "valueDecimal": 0, "extension": [ { "url": "bottom", "valueDecimal": 100 }, { "url": "left", "valueDecimal": 100 }, { "url": "right", "valueDecimal": 200 }, { "url": "top", "valueDecimal": 200 }, { "url": "relative-bottom", "valueDecimal": 0.05 }, { "url": "relative-left", "valueDecimal": 0.05 }, { "url": "relative-right", "valueDecimal": 0.1 }, { "url": "relative-top", "valueDecimal": 0.1 }, { "url": "bottom", "valueDecimal": 900 }, { "url": "left", "valueDecimal": 900 }, { "url": "right", "valueDecimal": 1000 }, { "url": "top", "valueDecimal": 1000 }, { "url": "relative-bottom", "valueDecimal": 0.45 }, { "url": "relative-left", "valueDecimal": 0.45 }, { "url": "relative-right", "valueDecimal": 0.5 }, { "url": "relative-top", "valueDecimal": 0.5 } ] } ] }, { "url": "https://g.co/dicom-tags", "extension": [ { "url": "tag-id", "valueString": "00100021", "extension": [ { "url": "byte-start", "valueDecimal": 10 }, { "url": "byte-end", "valueDecimal": 18 }, { "url": "finding-infotype", "valueString": "PERSON_NAME" }, { "url": "text-original", "valueString": "John Doe" }, { "url": "text-replaced", "valueString": "PERSON_NAME" }, { "url": "byte-start", "valueDecimal": 25 }, { "url": "byte-end", "valueDecimal": 35 }, { "url": "finding-infotype", "valueString": "DATE" }, { "url": "text-original", "valueString": "1900-12-31" }, { "url": "text-replaced", "valueString": "DATE" } ] }, { "url": "tag-id", "valueString": "00102150", "extension": [ { "url": "byte-start", "valueDecimal": 0 }, { "url": "byte-end", "valueDecimal": 2 }, { "url": "finding-infotype", "valueString": "LOCATION" }, { "url": "text-original", "valueString": "US" }, { "url": "text-replaced", "valueString": "LOCATION" } ] } ] } ] } ] } }, { "request": {"method": "POST", "url": "Provenance"}, "resource": { "resourceType": "Provenance", "target": [ { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/deid-dicom-store/dicomWeb/studies/1/series/2/instances/4" } } ], "recorded": "2010-11-08T08:39:25-04:00", "agent": [ { "who": { "identifier": { "value": "projects/test-project/locations/us-central1/datasets/test-dataset/fhirStores/test-fhir-store/fhir/Provenance/operation-123" } } } ], "entity": [ { "role": "source", "what": { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/test-dicom-store/dicomWeb/studies/1/series/2/instances/4" } }, "extension": [ { "url": "https://g.co/dicom-images", "extension": [ { "url": "frame-index", "valueDecimal": 0 }, { "url": "frame-index", "valueDecimal": 1, "extension": [ ] } ] }, { "url": "https://g.co/dicom-tags", "extension": [ { "url": "tag-id", "valueString": "00101010", "extension": [ { "url": "byte-start", "valueDecimal": 0 }, { "url": "byte-end", "valueDecimal": 2 }, { "url": "finding-infotype", "valueString": "AGE" }, { "url": "text-original", "valueString": "30" }, { "url": "text-replaced", "valueString": "AGE" } ] }, { "url": "tag-id", "valueString": "00100020", "extension": [ { "url": "byte-start", "valueDecimal": 0 }, { "url": "byte-end", "valueDecimal": 4 }, { "url": "finding-infotype", "valueString": "GENERIC_ID" }, { "url": "text-original", "valueString": "1234" }, { "url": "text-replaced", "valueString": "GENERIC_ID" } ] } ] } ] } ] } } ] } EOF
Depois execute o comando a seguir para enviar a solicitação REST:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/fhir+json" \
-d @request.json \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/OPERATION_METADATA_FHIR_STORE_ID/fhir"PowerShell
Salve o corpo da solicitação em um arquivo chamado
request.json
. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:@' { "resourceType": "Bundle", "type": "transaction", "entry": [ { "request": {"method": "PUT", "url": "Provenance/operation-123"}, "resource": { "resourceType": "Provenance", "id": "operation-123", "target": [ { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/deid-dicom-store" } } ], "occurredDateTime": "2010-11-08T08:30:00-04:00", "recorded": "2010-11-08T08:30:24-04:00", "agent": [ { "who": { "identifier": { "system": "https://g.co/healthcare/operation", "value": "projects/my-project/locations/us-central1/datasets/my-dataset/operations/123" } } } ], "entity": [ { "role": "source", "what": { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/test-dicom-store" } } } ] } }, { "request": {"method": "POST", "url": "Provenance"}, "resource": { "resourceType": "Provenance", "target": [ { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/deid-dicom-store/dicomWeb/studies/1/series/2/instances/3" } } ], "recorded": "2010-11-08T08:39:24-04:00", "agent": [ { "who": { "identifier": { "value": "projects/test-project/locations/us-central1/datasets/test-dataset/fhirStores/test-fhir-store/fhir/Provenance/operation-123" } } } ], "entity": [ { "role": "source", "what": { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/test-dicom-store/dicomWeb/studies/1/series/2/instances/3" } }, "extension": [ { "url": "https://g.co/dicom-images", "extension": [ { "url": "frame-index", "valueDecimal": 0, "extension": [ { "url": "bottom", "valueDecimal": 100 }, { "url": "left", "valueDecimal": 100 }, { "url": "right", "valueDecimal": 200 }, { "url": "top", "valueDecimal": 200 }, { "url": "relative-bottom", "valueDecimal": 0.05 }, { "url": "relative-left", "valueDecimal": 0.05 }, { "url": "relative-right", "valueDecimal": 0.1 }, { "url": "relative-top", "valueDecimal": 0.1 }, { "url": "bottom", "valueDecimal": 900 }, { "url": "left", "valueDecimal": 900 }, { "url": "right", "valueDecimal": 1000 }, { "url": "top", "valueDecimal": 1000 }, { "url": "relative-bottom", "valueDecimal": 0.45 }, { "url": "relative-left", "valueDecimal": 0.45 }, { "url": "relative-right", "valueDecimal": 0.5 }, { "url": "relative-top", "valueDecimal": 0.5 } ] } ] }, { "url": "https://g.co/dicom-tags", "extension": [ { "url": "tag-id", "valueString": "00100021", "extension": [ { "url": "byte-start", "valueDecimal": 10 }, { "url": "byte-end", "valueDecimal": 18 }, { "url": "finding-infotype", "valueString": "PERSON_NAME" }, { "url": "text-original", "valueString": "John Doe" }, { "url": "text-replaced", "valueString": "PERSON_NAME" }, { "url": "byte-start", "valueDecimal": 25 }, { "url": "byte-end", "valueDecimal": 35 }, { "url": "finding-infotype", "valueString": "DATE" }, { "url": "text-original", "valueString": "1900-12-31" }, { "url": "text-replaced", "valueString": "DATE" } ] }, { "url": "tag-id", "valueString": "00102150", "extension": [ { "url": "byte-start", "valueDecimal": 0 }, { "url": "byte-end", "valueDecimal": 2 }, { "url": "finding-infotype", "valueString": "LOCATION" }, { "url": "text-original", "valueString": "US" }, { "url": "text-replaced", "valueString": "LOCATION" } ] } ] } ] } ] } }, { "request": {"method": "POST", "url": "Provenance"}, "resource": { "resourceType": "Provenance", "target": [ { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/deid-dicom-store/dicomWeb/studies/1/series/2/instances/4" } } ], "recorded": "2010-11-08T08:39:25-04:00", "agent": [ { "who": { "identifier": { "value": "projects/test-project/locations/us-central1/datasets/test-dataset/fhirStores/test-fhir-store/fhir/Provenance/operation-123" } } } ], "entity": [ { "role": "source", "what": { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/test-dicom-store/dicomWeb/studies/1/series/2/instances/4" } }, "extension": [ { "url": "https://g.co/dicom-images", "extension": [ { "url": "frame-index", "valueDecimal": 0 }, { "url": "frame-index", "valueDecimal": 1, "extension": [ ] } ] }, { "url": "https://g.co/dicom-tags", "extension": [ { "url": "tag-id", "valueString": "00101010", "extension": [ { "url": "byte-start", "valueDecimal": 0 }, { "url": "byte-end", "valueDecimal": 2 }, { "url": "finding-infotype", "valueString": "AGE" }, { "url": "text-original", "valueString": "30" }, { "url": "text-replaced", "valueString": "AGE" } ] }, { "url": "tag-id", "valueString": "00100020", "extension": [ { "url": "byte-start", "valueDecimal": 0 }, { "url": "byte-end", "valueDecimal": 4 }, { "url": "finding-infotype", "valueString": "GENERIC_ID" }, { "url": "text-original", "valueString": "1234" }, { "url": "text-replaced", "valueString": "GENERIC_ID" } ] } ] } ] } ] } } ] } '@ | Out-File -FilePath request.json -Encoding utf8
Depois execute o comando a seguir para enviar a solicitação REST:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/fhir+json" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/OPERATION_METADATA_FHIR_STORE_ID/fhir" | Select-Object -Expand ContentVocê receberá uma resposta JSON semelhante a esta:
Crie um recurso SearchParameter na imagem DICOM de origem.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: é o ID do projeto do Google Cloud.
- LOCATION: o local do conjunto de dados pai
- DATASET_ID: o conjunto de dados pai do armazenamento de FHIR
- OPERATION_METADATA_FHIR_STORE_ID: o ID do repositório FHIR que contém os metadados
Corpo JSON da solicitação:
{ "resourceType": "SearchParameter", "url": "lookup-source-instance", "base": ["Provenance"], "code": "lookup-source-instance", "name": "look up the source DICOM instance", "type": "string", "expression": "Provenance.entity.what.identifier.value", "status": "active", "description": "A search on the source DICOM instance" }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo chamado
request.json
. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:cat > request.json << 'EOF' { "resourceType": "SearchParameter", "url": "lookup-source-instance", "base": ["Provenance"], "code": "lookup-source-instance", "name": "look up the source DICOM instance", "type": "string", "expression": "Provenance.entity.what.identifier.value", "status": "active", "description": "A search on the source DICOM instance" } EOF
Depois execute o comando a seguir para enviar a solicitação REST:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/fhir+json" \
-d @request.json \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/OPERATION_METADATA_FHIR_STORE_ID/fhir/SearchParameter"PowerShell
Salve o corpo da solicitação em um arquivo chamado
request.json
. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:@' { "resourceType": "SearchParameter", "url": "lookup-source-instance", "base": ["Provenance"], "code": "lookup-source-instance", "name": "look up the source DICOM instance", "type": "string", "expression": "Provenance.entity.what.identifier.value", "status": "active", "description": "A search on the source DICOM instance" } '@ | Out-File -FilePath request.json -Encoding utf8
Depois execute o comando a seguir para enviar a solicitação REST:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/fhir+json" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/OPERATION_METADATA_FHIR_STORE_ID/fhir/SearchParameter" | Select-Object -Expand ContentVocê receberá uma resposta JSON semelhante a esta:
Ative o recurso SearchParameter personalizado no armazenamento FHIR.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: é o ID do projeto do Google Cloud.
- LOCATION: o local do conjunto de dados pai
- DATASET_ID: o conjunto de dados pai do armazenamento de FHIR
- OPERATION_METADATA_FHIR_STORE_ID: o ID do repositório FHIR que contém os metadados
Corpo JSON da solicitação:
{ "canonicalUrls": [ "lookup-source-instance" ] }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo chamado
request.json
. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:cat > request.json << 'EOF' { "canonicalUrls": [ "lookup-source-instance" ] } EOF
Depois execute o comando a seguir para enviar a solicitação REST:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/fhir+json" \
-d @request.json \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/OPERATION_METADATA_FHIR_STORE_ID:configureSearch"PowerShell
Salve o corpo da solicitação em um arquivo chamado
request.json
. Execute o comando a seguir no terminal para criar ou substituir esse arquivo no diretório atual:@' { "canonicalUrls": [ "lookup-source-instance" ] } '@ | Out-File -FilePath request.json -Encoding utf8
Depois execute o comando a seguir para enviar a solicitação REST:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/fhir+json" `
-InFile request.json `
-Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/OPERATION_METADATA_FHIR_STORE_ID:configureSearch" | Select-Object -Expand ContentConfira o status da operação.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do projeto do Google Cloud
- LOCATION: o local do conjunto de dados
- DATASET_ID: o conjunto de dados em que a operação de pesquisa personalizada está sendo executada
- OPERATION_ID: o ID da operação de pesquisa personalizada
Para enviar a solicitação, escolha uma destas opções:
curl
execute o seguinte comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/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/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand ContentAPIs Explorer
Abra a página de referência do método. O painel "APIs Explorer" é aberto no lado direito da página. Interaja com essa ferramenta para enviar solicitações. Preencha todos os campos obrigatórios e clique em Executar.
Você receberá uma resposta JSON semelhante a esta:
Consultar o recurso de origem usando o parâmetro de pesquisa de imagem DICOM.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: é o ID do projeto do Google Cloud.
- LOCATION: o local do conjunto de dados pai
- DATASET_ID: o conjunto de dados pai do armazenamento de FHIR
- OPERATION_METADATA_FHIR_STORE_ID: o ID do repositório FHIR que contém os metadados
Para enviar a solicitação, escolha uma destas opções:
curl
O exemplo a seguir usa a consultalookup-source-instance:contains=studies/1/series/2/instances/4
, que retorna informações sobre a instância que contémstudies/1/series/2/instances/4
no identificador.Execute o seguinte comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/OPERATION_METADATA_FHIR_STORE_ID/fhir/Provenance?lookup-source-instance:contains=studies/1/series/2/instances/4"PowerShell
O exemplo a seguir usa a consultalookup-source-instance:contains=studies/1/series/2/instances/4
, que retorna informações sobre a instância que contémstudies/1/series/2/instances/4
no identificador.Execute o seguinte comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/OPERATION_METADATA_FHIR_STORE_ID/fhir/Provenance?lookup-source-instance:contains=studies/1/series/2/instances/4" | Select-Object -Expand Content{ "entry": [ { "fullUrl": "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/OPERATION_METADATA_FHIR_STORE_ID/fhir/Provenance/d82007a1-6481-4793-b17c-ae152051ee9f", "resource": { "agent": [ { "who": { "identifier": { "value": "projects/test-project/locations/us-central1/datasets/test-dataset/fhirStores/test-fhir-store/fhir/Provenance/operation-123" } } } ], "entity": [ { "extension": [ { "extension": [ { "url": "frame-index", "valueDecimal": 0 }, { "url": "frame-index", "valueDecimal": 1 } ], "url": "https://g.co/dicom-images" }, { "extension": [ { "extension": [ { "url": "byte-start", "valueDecimal": 0 }, { "url": "byte-end", "valueDecimal": 2 }, { "url": "finding-infotype", "valueString": "AGE" }, { "url": "text-original", "valueString": "30" }, { "url": "text-replaced", "valueString": "AGE" } ], "url": "tag-id", "valueString": "00101010" }, { "extension": [ { "url": "byte-start", "valueDecimal": 0 }, { "url": "byte-end", "valueDecimal": 4 }, { "url": "finding-infotype", "valueString": "GENERIC_ID" }, { "url": "text-original", "valueString": "1234" }, { "url": "text-replaced", "valueString": "GENERIC_ID" } ], "url": "tag-id", "valueString": "00100020" } ], "url": "https://g.co/dicom-tags" } ], "role": "source", "what": { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/test-dicom-store/dicomWeb/studies/1/series/2/instances/4" } } } ], "id": "d82007a1-6481-4793-b17c-ae152051ee9f", "meta": { "lastUpdated": "2022-03-07T20:28:07.970361+00:00", "versionId": "MTY0NjY4NDg4Nzk3MDM2MTAwMA" }, "recorded": "2010-11-08T08:39:25-04:00", "resourceType": "Provenance", "target": [ { "identifier": { "value": "https://healthcare.googleapis.com/projects/test-project/locations/us-central1/datasets/test-dataset/dicomStores/deid-dicom-store/dicomWeb/studies/1/series/2/instances/4" } } ] }, "search": { "mode": "match" } } ], "link": [ { "relation": "search", "url": "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/OPERATION_METADATA_FHIR_STORE_ID/fhir/Provenance/?lookup-source-instance%3Acontains=studies%2F1%2Fseries%2F2%2Finstances%2F4" }, { "relation": "first", "url": "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/OPERATION_METADATA_FHIR_STORE_ID/fhir/Provenance/?lookup-source-instance%3Acontains=studies%2F1%2Fseries%2F2%2Finstances%2F4" }, { "relation": "self", "url": "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/OPERATION_METADATA_FHIR_STORE_ID/fhir/Provenance/?lookup-source-instance%3Acontains=studies%2F1%2Fseries%2F2%2Finstances%2F4" } ], "resourceType": "Bundle", "total": 1, "type": "searchset" }
Exportar e consultar a loja FHIR de metadados da operação
O exemplo a seguir mostra como exportar os metadados da operação de desidentificação
na loja FHIR para o BigQuery e consultar os dados exportados em busca de
dados PHI processados por OCR. Os dados gerados são compatíveis apenas com
o LOSSLESS
ou ANALYTICS_V2
SchemaType
.
Exporte os metadados na loja FHIR para um conjunto de dados do BigQuery.
Os metadados são exportados para uma tabela chamada
Provenance
no conjunto de dados do BigQuery selecionado.Acessar a página do BigQuery.
No painel Explorer, siga estas etapas:
- Selecione seu projeto do Google Cloud.
- Selecione o conjunto de dados do BigQuery em que você exportou os metadados DICOM.
- Selecione a tabela Provenance.
Clique em
Escrever nova consulta.Execute a seguinte consulta:
SELECT what.identifier.value AS Source, target[OFFSET(0)].identifier.value AS Destination, `left` AS `Left`, `right` AS `Right`, top AS Top, bottom AS Bottom, quote AS Quote, infoType AS InfoType, confidence AS Confidence FROM `PROJECT_ID.BIGQUERY_DATASET.Provenance`, UNNEST(entity), UNNEST(dicom_images), UNNEST(frame_index) LIMIT 10
Substitua:
- PROJECT_ID: o ID do seu projeto do Google Cloud;
- BIGQUERY_DATASET: o conjunto de dados do BigQuery em que você exportou os metadados da loja FHIR.
Clique em
Executar.Os resultados da consulta mostram os metadados dos dados PHI desidentificados em um formato tabular. Se você não especificar uma tabela de destino, o job de consulta vai gravar a saída em uma tabela temporária (cache).
Cota
A gravação de metadados de operação de desidentificação em um armazenamento FHIR consome
cotas fhir_write_ops
no projeto em que os metadados da operação são gravados.
Um recurso FHIR é criado para cada instância DICOM. Portanto, o
throughput da operação de desidentificação não pode ser maior do que o permitido pela
cota do FHIR.
Faturamento
Cada recurso de origem criado na loja de metadados de operação FHIR
incorre em uma cobrança para chamar fhir.update
.
O número de chamadas de API para fhir.update
pode ser calculado como:
Total number of DICOM instances de-identified + 1
.
A seguir
- Saiba como exportar os recursos FHIR para o BigQuery para exploração e análise.
- Saiba como fazer streaming de alterações de recursos FHIR para o BigQuery para sincronizar os dados em um armazenamento FHIR com um conjunto de dados do BigQuery quase em tempo real.