En esta página se explica cómo desidentificar datos DICOM y escribir metadatos sobre la operación de desidentificación y los datos que se han desidentificado en un almacén FHIR. Los metadatos se almacenan en recursos Provenance de FHIR en el almacén FHIR. Después, puede consultar los datos mediante búsquedas personalizadas de FHIR para responder a preguntas como las siguientes:
- ¿Qué se ha anonimizado?
- ¿Cómo y por qué se anonimizaron los datos?
- ¿Cuándo se produjo la operación de anonimización y cuánto tiempo tardó?
Antes de empezar
Usar FHIR en lugar de anotaciones
La API Cloud Healthcare ofrece una API de anotaciones que puedes usar para anotar datos desidentificados.
Escribir metadatos de operaciones de desidentificación en un almacén FHIR funciona de forma similar y tiene las siguientes ventajas:
- No es necesario que uses la API Annotations, que es una API independiente.
- No es necesario crear ni gestionar almacenes ni registros de anotaciones.
- Puedes seguir trabajando con el estándar FHIR y la API FHIR de la API Cloud Healthcare.
- Puedes exportar los recursos FHIR a BigQuery para explorarlos y analizarlos. Los datos generados solo son compatibles con
SchemaType
deLOSSLESS
oANALYTICS_V2
.- Puedes transmitir cambios en los recursos FHIR a BigQuery para sincronizar los datos de un almacén FHIR con un conjunto de datos de BigQuery casi en tiempo real.
- Se proporciona más información sobre los metadatos de la operación de desidentificación.
Requisitos
El almacén FHIR que contiene los metadatos de la operación de desidentificación debe cumplir los siguientes requisitos:
- Debe existir.
- Debe ser un almacén FHIR de la versión R4.
- Debe tener el valor
true
enenableUpdateCreate
.
Recursos de procedencia en el almacén FHIR de metadatos de la operación
Cuando ejecutas una operación de desidentificación de DICOM, los siguientes recursos Provenance se escriben en el almacén FHIR de metadatos de la operación:
Un recurso Provenance que resume la operación de desidentificación, como el nombre de la operación de larga duración, cuándo se produjo y qué configuración se usó. Para ver una lista de los campos de este recurso Provenance, consulta Metadatos de la operación de desidentificación en un recurso Provenance.
Un recurso Provenance para cada instancia DICOM que se haya desidentificado. Para ver una lista de los campos de este recurso Provenance, consulta Metadatos de desidentificación de DICOM en un recurso Provenance.
- El recurso contiene información sobre lo que se ha desidentificado, como una etiqueta DICOM o la parte de una imagen DICOM, y las acciones que se han llevado a cabo, como si la información se ha ocultado, transformado o ignorado.
El recurso puede contener datos anonimizados procesados mediante reconocimiento óptico de caracteres (OCR) que se incluyan en el ámbito de la información médica protegida (PHI).
El texto desidentificado, o
quote
, va acompañado de su tipo de información, oinfoType
, y de la probabilidad de encontrar la información, oconfidence
. Por ejemplo, si se anonimiza una imagen DICOM que contiene el texto insertadoJohn Doe
, el recurso Provenance contendráquote
con el valorJohn Doe
,infoType
con el valorPERSON_NAME
y un valorconfidence
entre 0 y 1.Los metadatos de desidentificación DICOM solo se generan si se llama al método
dicomStores.deidentify
conImageConfig.textRedactionMode
definido comoREDACT_SENSITIVE_TEXT
oREDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS
. Si definesREDACT_ALL_TEXT
, el método genera texto anonimizado como una sola cadena en el campoextracted-text
. La cadena no contiene segmentación. Los tokens están separados por espacios.
Desidentificar metadatos de operaciones en un recurso Provenance
En la siguiente tabla se muestra una descripción de los metadatos de la operación de anonimización y el campo correspondiente de los metadatos en el que se pueden encontrar en el recurso Provenance. Las celdas "Campo de recurso de procedencia" contienen valores de ejemplo que se utilizan con fines de demostración.
Descripción de los metadatos | Campo de recurso de procedencia |
---|---|
ID de recurso de procedencia | Provenance.id |
Cuándo empezó la operación de desidentificación | Provenance.occurredDateTime |
Marca de tiempo de creación del recurso de procedencia | Provenance.recorded |
Nombre de la operación de larga duración de desidentificación | Provenance.agent.who: { "identifier": { "system": "https://g.co/healthcare/operation" "value": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" } } |
Almacén DICOM de origen | Provenance.entity.role: "SOURCE" Provenance.entity.what.identifier.value: "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID" |
Almacén DICOM de destino | Provenance.target.type.value |
Valor de 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 }] |
Metadatos de desidentificación de DICOM en un recurso Provenance
En la siguiente tabla se muestra una descripción de los metadatos de la instancia DICOM anonimizada y del campo correspondiente de los metadatos en un recurso Provenance. Las celdas "Campo de recurso de procedencia" contienen valores de ejemplo que se utilizan con fines de demostración.
Descripción de los metadatos | Campo de recurso de procedencia |
---|---|
Enlace al recurso de la operación de anonimización | Provenance.agent.who: {reference: "Provenance/PROVENANCE_RESOURCE_ID"} |
Marca de tiempo de creación del recurso de procedencia | Provenance.recorded |
Ruta REST de la instancia DICOM de origen | Provenance.entity.role: SOURCE Provenance.entity.what.identifier.value |
Ruta REST de la instancia DICOM de destino | Provenance.target.type.value |
Tamaño de la imagen DICOM | Provenance.entity.extension: [ { url: 'https://g.co/WIDTH', valueDecimal: WIDTH }, url: 'https://g.co/HEIGHT', valueDecimal: HEIGHT } ] |
Tamaño estructurado | Provenance.entity.extension: [{ url: 'https://g.co/DICOM_STRUCTURED_SIZE', valueDecimal: VALUE, }] |
Anotación de imágenes DICOM | Provenance.entity.extension: [{ url: 'https://g.co/DICOM_IMAGES', extension: [ { FRAME_0 }, { FRAME_1 }, ... ] }] |
Anotación de fotogramas 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 } ] } ] |
Anotación de fotogramas 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 } ] |
Anotación de fotogramas 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" } ] |
Anotación de todas las etiquetas DICOM | Provenance.entity.extension: [{ url: 'https://g.co/dicom-tags', extension: [ { // tag (0002,0000) }, { // tag (0002,0001) }, ... ] }] |
Notación de etiquetas individuales de 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" } ] } ] |
Ejemplos
Antes de empezar
Asegúrate de que tienes el rol roles/healthcare.fhirResourceEditor
en el almacén FHIR de metadatos de la operación antes de ejecutar cualquiera de los
siguientes ejemplos. Necesitas este rol para escribir en el almacén FHIR de metadatos de la operación.
Desidentificar datos DICOM, escribir en un almacén FHIR y buscar recursos Provenance
Antes de ejecutar este ejemplo, sigue estos pasos:
- Crea un conjunto de datos de origen que contenga un almacén DICOM con al menos una instancia DICOM que se vaya a desidentificar.
- Crea un conjunto de datos de destino que contenga un almacén DICOM vacío y un almacén FHIR vacío. La tienda FHIR debe cumplir los requisitos.
Este ejemplo amplía la información de la sección Combinar la desidentificación de etiquetas y la ocultación de texto superpuesto. En este ejemplo, la desidentificación se produce en un solo almacén DICOM y los datos desidentificados se escriben en un nuevo almacén DICOM. Los metadatos de la operación del almacén FHIR están en el mismo conjunto de datos que el nuevo almacén DICOM.
En este ejemplo se utilizan dos instancias DICOM. No se te proporcionan las instancias, por lo que las respuestas de ejemplo no se corresponderán exactamente con tus datos anonimizados.
Desidentifica los datos DICOM.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: tu ID de proyecto Google Cloud
- LOCATION: la ubicación del conjunto de datos que contiene el almacén DICOM de origen
- SOURCE_DATASET_ID: el conjunto de datos superior del almacén DICOM de origen
- SOURCE_DICOM_STORE_ID: el ID del almacén DICOM que contiene los datos que quieres desidentificar
- DESTINATION_DATASET_ID: un conjunto de datos que contiene el almacén FHIR de la operación de metadatos y en el que se creará el almacén DICOM desidentificado.
- DESTINATION_DICOM_STORE_ID: el almacén DICOM en el que se escribirán los datos anonimizados del almacén DICOM de origen
- OPERATION_METADATA_FHIR_STORE_ID: el almacén FHIR en el que se escribirán los metadatos de la operación de desidentificación
Cuerpo JSON de la solicitud:
{ "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 tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual: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
A continuación, ejecuta el siguiente comando para enviar tu solicitud 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
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:@' { "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
A continuación, ejecuta el siguiente comando para enviar tu solicitud 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 ContentObtén el estado de la operación.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: tu ID de proyecto Google Cloud
- LOCATION: la ubicación del conjunto de datos
- SOURCE_DATASET_ID: el conjunto de datos en el que se está ejecutando la operación de desidentificación
- OPERATION_ID: el ID de la operación de desidentificación
Para enviar tu solicitud, elige una de estas opciones:
curl
Ejecuta el comando siguiente:
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
Ejecuta el comando siguiente:
$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 ContentExplorador de APIs
Abre la página de referencia del método. El panel Explorador de APIs se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Rellena los campos obligatorios y haz clic en Ejecutar.
Deberías recibir una respuesta JSON similar a la siguiente:
Una vez que hayas desidentificado correctamente los datos DICOM y hayas escrito los metadatos de la operación en un almacén FHIR, podrás ver los recursos Provenance en el almacén FHIR.
Para ver los recursos de Provenance, usa el método
fhir.search
.Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: tu ID de proyecto Google Cloud
- LOCATION: la ubicación del conjunto de datos principal
- DATASET_ID: el conjunto de datos superior del almacén FHIR
- OPERATION_METADATA_FHIR_STORE_ID: el ID del almacén FHIR que contiene los metadatos
Para enviar tu solicitud, elige una de estas opciones:
curl
Ejecuta el comando siguiente:
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
Ejecuta el comando siguiente:
$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- Un recurso Provenance para cada una de las dos instancias DICOM
- Un recurso Provenance para la operación de desidentificación
Almacenar datos de muestra, crear una búsqueda FHIR personalizada de coordenadas X relativas y hacer una consulta
Antes de ejecutar este ejemplo, crea un conjunto de datos de destino que contenga un almacén DICOM vacío y un almacén FHIR vacío. La tienda FHIR debe cumplir los requisitos.
En el siguiente ejemplo se muestra cómo puedes almacenar los tres recursos Provenance creados en Desidentificar datos DICOM, escribir en un almacén FHIR y buscar recursos Provenance y, a continuación, crear una búsqueda personalizada. La búsqueda personalizada consulta el relative-x-coordinate-bottom-left
en una de las instancias DICOM desidentificadas.
Almacena los recursos de Provenance.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: tu ID de proyecto Google Cloud
- LOCATION: la ubicación del conjunto de datos principal
- DATASET_ID: el conjunto de datos superior del almacén FHIR
- OPERATION_METADATA_FHIR_STORE_ID: el ID del almacén FHIR que contiene los metadatos
Cuerpo JSON de la solicitud:
{ "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 tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual: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
A continuación, ejecuta el siguiente comando para enviar tu solicitud 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
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:@' { "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
A continuación, ejecuta el siguiente comando para enviar tu solicitud 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 ContentDeberías recibir una respuesta JSON similar a la siguiente:
Crea un recurso SearchParameter en la coordenada X relativa de la imagen DICOM.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: tu ID de proyecto Google Cloud
- LOCATION: la ubicación del conjunto de datos principal
- DATASET_ID: el conjunto de datos superior del almacén FHIR
- OPERATION_METADATA_FHIR_STORE_ID: el ID del almacén FHIR que contiene los metadatos
Cuerpo JSON de la solicitud:
{ "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 tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual: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
A continuación, ejecuta el siguiente comando para enviar tu solicitud 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
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:@' { "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
A continuación, ejecuta el siguiente comando para enviar tu solicitud 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 ContentDeberías recibir una respuesta JSON similar a la siguiente:
Habilita el recurso SearchParameter personalizado en el almacén FHIR.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: tu ID de proyecto Google Cloud
- LOCATION: la ubicación del conjunto de datos principal
- DATASET_ID: el conjunto de datos superior del almacén FHIR
- OPERATION_METADATA_FHIR_STORE_ID: el ID del almacén FHIR que contiene los metadatos
Cuerpo JSON de la solicitud:
{ "canonicalUrls": [ "relative-x-coordinate-bottom-left" ] }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:cat > request.json << 'EOF' { "canonicalUrls": [ "relative-x-coordinate-bottom-left" ] } EOF
A continuación, ejecuta el siguiente comando para enviar tu solicitud 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
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:@' { "canonicalUrls": [ "relative-x-coordinate-bottom-left" ] } '@ | Out-File -FilePath request.json -Encoding utf8
A continuación, ejecuta el siguiente comando para enviar tu solicitud 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 ContentObtén el estado de la operación.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: tu ID de proyecto Google Cloud
- LOCATION: la ubicación del conjunto de datos
- DATASET_ID: el conjunto de datos en el que se está ejecutando la operación de búsqueda personalizada
- OPERATION_ID: el ID de la operación de búsqueda personalizada
Para enviar tu solicitud, elige una de estas opciones:
curl
Ejecuta el comando siguiente:
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
Ejecuta el comando siguiente:
$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 ContentExplorador de APIs
Abre la página de referencia del método. El panel Explorador de APIs se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Rellena los campos obligatorios y haz clic en Ejecutar.
Deberías recibir una respuesta JSON similar a la siguiente:
Consulta el recurso Provenance mediante el parámetro de búsqueda de coordenadas X relativas:
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: tu ID de proyecto Google Cloud
- LOCATION: la ubicación del conjunto de datos principal
- DATASET_ID: el conjunto de datos superior del almacén FHIR
- OPERATION_METADATA_FHIR_STORE_ID: el ID del almacén FHIR que contiene los metadatos
Para enviar tu solicitud, elige una de estas opciones:
curl
En el siguiente ejemplo se usa la consultarelative-x-coordinate-bottom-left=le0.05
, que busca una coordenada X que esté a un 5% del borde de la imagen.Ejecuta el comando siguiente:
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
En el siguiente ejemplo se usa la consultarelative-x-coordinate-bottom-left=le0.05
, que busca una coordenada X que esté a un 5% del borde de la imagen.Ejecuta el comando siguiente:
$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" }
Almacenar datos de ejemplo, crear una búsqueda FHIR personalizada de DICOM de origen y hacer una consulta
Antes de ejecutar este ejemplo, crea un conjunto de datos de destino que contenga un almacén DICOM vacío y un almacén FHIR vacío. La tienda FHIR debe cumplir los requisitos.
En el siguiente ejemplo se muestra cómo puedes almacenar los tres recursos Provenance creados en Desidentificar datos DICOM, escribir en un almacén FHIR y buscar recursos Provenance y, a continuación, crear una búsqueda personalizada. La búsqueda personalizada consulta información sobre una de las dos imágenes DICOM de origen.
Almacena los recursos de Provenance.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: tu ID de proyecto Google Cloud
- LOCATION: la ubicación del conjunto de datos principal
- DATASET_ID: el conjunto de datos superior del almacén FHIR
- OPERATION_METADATA_FHIR_STORE_ID: el ID del almacén FHIR que contiene los metadatos
Cuerpo JSON de la solicitud:
{ "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 tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual: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
A continuación, ejecuta el siguiente comando para enviar tu solicitud 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
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:@' { "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
A continuación, ejecuta el siguiente comando para enviar tu solicitud 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 ContentDeberías recibir una respuesta JSON similar a la siguiente:
Crea un recurso SearchParameter en la imagen DICOM de origen.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: tu ID de proyecto Google Cloud
- LOCATION: la ubicación del conjunto de datos principal
- DATASET_ID: el conjunto de datos superior del almacén FHIR
- OPERATION_METADATA_FHIR_STORE_ID: el ID del almacén FHIR que contiene los metadatos
Cuerpo JSON de la solicitud:
{ "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 tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual: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
A continuación, ejecuta el siguiente comando para enviar tu solicitud 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
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:@' { "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
A continuación, ejecuta el siguiente comando para enviar tu solicitud 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 ContentDeberías recibir una respuesta JSON similar a la siguiente:
Habilita el recurso SearchParameter personalizado en el almacén FHIR.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: tu ID de proyecto Google Cloud
- LOCATION: la ubicación del conjunto de datos principal
- DATASET_ID: el conjunto de datos superior del almacén FHIR
- OPERATION_METADATA_FHIR_STORE_ID: el ID del almacén FHIR que contiene los metadatos
Cuerpo JSON de la solicitud:
{ "canonicalUrls": [ "lookup-source-instance" ] }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:cat > request.json << 'EOF' { "canonicalUrls": [ "lookup-source-instance" ] } EOF
A continuación, ejecuta el siguiente comando para enviar tu solicitud 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
Guarda el cuerpo de la solicitud en un archivo llamado
request.json
. Ejecuta el siguiente comando en el terminal para crear o sobrescribir este archivo en el directorio actual:@' { "canonicalUrls": [ "lookup-source-instance" ] } '@ | Out-File -FilePath request.json -Encoding utf8
A continuación, ejecuta el siguiente comando para enviar tu solicitud 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 ContentObtén el estado de la operación.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: tu ID de proyecto Google Cloud
- LOCATION: la ubicación del conjunto de datos
- DATASET_ID: el conjunto de datos en el que se está ejecutando la operación de búsqueda personalizada
- OPERATION_ID: el ID de la operación de búsqueda personalizada
Para enviar tu solicitud, elige una de estas opciones:
curl
Ejecuta el comando siguiente:
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
Ejecuta el comando siguiente:
$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 ContentExplorador de APIs
Abre la página de referencia del método. El panel Explorador de APIs se abre en la parte derecha de la página. Puedes interactuar con esta herramienta para enviar solicitudes. Rellena los campos obligatorios y haz clic en Ejecutar.
Deberías recibir una respuesta JSON similar a la siguiente:
Consulta el recurso Provenance con el parámetro de búsqueda de imágenes DICOM de origen.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: tu ID de proyecto Google Cloud
- LOCATION: la ubicación del conjunto de datos principal
- DATASET_ID: el conjunto de datos superior del almacén FHIR
- OPERATION_METADATA_FHIR_STORE_ID: el ID del almacén FHIR que contiene los metadatos
Para enviar tu solicitud, elige una de estas opciones:
curl
En el siguiente ejemplo se usa la consultalookup-source-instance:contains=studies/1/series/2/instances/4
, que devuelve información sobre la instancia que contienestudies/1/series/2/instances/4
en su identificador.Ejecuta el comando siguiente:
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
En el siguiente ejemplo se usa la consultalookup-source-instance:contains=studies/1/series/2/instances/4
, que devuelve información sobre la instancia que contienestudies/1/series/2/instances/4
en su identificador.Ejecuta el comando siguiente:
$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 y consultar el almacén FHIR de metadatos de la operación
En el siguiente ejemplo se muestra cómo exportar los metadatos de la operación de anonimización del almacén FHIR a BigQuery y consultar los datos exportados para ver los datos de información sanitaria personal procesados por OCR. Los datos generados solo son compatibles con LOSSLESS
o ANALYTICS_V2
SchemaType
.
Exporta los metadatos del almacén FHIR a un conjunto de datos de BigQuery.
Los metadatos se exportan a una tabla llamada
Provenance
en el conjunto de datos de BigQuery seleccionado.Ve a la página BigQuery.
En el panel Explorador, siga estos pasos:
- Selecciona tu proyecto de Google Cloud .
- Selecciona el conjunto de datos de BigQuery al que has exportado los metadatos DICOM.
- Seleccione la tabla Procedencia.
Haz clic en
Redactar nueva consulta.Ejecuta la siguiente 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
Haz los cambios siguientes:
- PROJECT_ID: el ID de tu Google Cloud proyecto
- BIGQUERY_DATASET: el conjunto de datos de BigQuery en el que ha exportado los metadatos del almacén FHIR
Haz clic en
Ejecutar.Los resultados de la consulta muestran los metadatos de los datos de IPH anonimizados en formato de tabla. Si no especificas una tabla de destino, la tarea de consulta escribe el resultado en una tabla temporal (caché).
Cuota
Al escribir metadatos de operaciones de desidentificación en un almacén FHIR, se consumen fhir_write_ops
cuotas en el proyecto en el que se escriben los metadatos de la operación.
Se crea un recurso FHIR por cada instancia DICOM, por lo que el rendimiento de la operación de desidentificación no puede ser superior al que permite tu cuota de FHIR.
Facturación
Cada recurso Provenance creado en el almacén FHIR de metadatos de la operación conlleva un cargo por llamar a fhir.update
.
El número de llamadas a la API fhir.update
se puede calcular de la siguiente manera:
Total number of DICOM instances de-identified + 1
.
Siguientes pasos
- Consulta cómo exportar recursos FHIR a BigQuery para explorarlos y analizarlos.
- Consulta cómo transmitir cambios en los recursos FHIR a BigQuery para sincronizar los datos de un almacén FHIR con un conjunto de datos de BigQuery casi en tiempo real.