Questa pagina spiega come anonimizzare i dati DICOM e scrivere i metadati su l'operazione di anonimizzazione e ciò che è stato anonimizzato per un datastore FHIR. I metadati vengono archiviati in FHIR Provenienza nel datastore FHIR. Puoi quindi eseguire query sui dati utilizzando le ricerche personalizzate FHIR. per rispondere a domande come le seguenti:
- Quali dati sono stati anonimizzati?
- Come e perché i dati sono stati anonimizzati?
- Quando è avvenuta l'operazione di anonimizzazione e quanto tempo è stata necessaria?
Prima di iniziare
Utilizzo di FHIR al posto delle annotazioni
L'API Cloud Healthcare offre un'API annotazioni che puoi utilizzare per annota dati anonimizzati.
La scrittura dei metadati dell'operazione di anonimizzazione in un datastore FHIR funziona in modo simile, e presenta i seguenti vantaggi:
- Non è necessario utilizzare l'API Annotazioni, che è un'API separata.
- Non è necessario creare e gestire archivi e record di annotazioni.
- Puoi continuare a lavorare con lo standard FHIR e l'API Cloud Healthcare API FHIR.
- Puoi esportare le risorse FHIR in BigQuery.
per l'esplorazione e l'analisi. I dati generati sono compatibili solo con
LOSSLESS
oANALYTICS_V2
SchemaType
.- Puoi inviare in modalità flusso le modifiche alle risorse FHIR in BigQuery per sincronizzare i dati in un datastore FHIR con un set di dati BigQuery quasi in tempo reale.
- Vengono fornite ulteriori informazioni sui metadati dell'operazione di anonimizzazione.
Requisiti
Il datastore FHIR che contiene i metadati dell'operazione di anonimizzazione deve soddisfare i seguenti requisiti:
- Deve già esistere.
- Deve essere una versione del datastore FHIR R4.
- Deve avere
enableUpdateCreate
impostato sutrue
.
Risorse di provenienza nel datastore FHIR dei metadati delle operazioni
Quando esegui un'operazione di anonimizzazione DICOM, le seguenti risorse di provenienza sono scritto nel datastore FHIR dei metadati delle operazioni:
Una risorsa di provenienza che riassume l'operazione di anonimizzazione, ad esempio il nome dell'operazione a lunga esecuzione, quando è avvenuta l'operazione e è stata utilizzata. Per un elenco dei campi di questa risorsa di provenienza, consulta Anonimizza i metadati dell'operazione in una risorsa di provenienza.
Una risorsa di provenienza per ogni istanza DICOM che è stata anonimizzata. Per un di campi in questa risorsa di provenienza; consulta Metadati di anonimizzazione DICOM in una risorsa di provenienza.
- La risorsa contiene informazioni sui dati anonimizzati, ad esempio: un tag DICOM o la parte di un'immagine DICOM e le azioni prese, ad esempio se le informazioni sono state oscurate, trasformate o ignorato.
La risorsa potrebbe contenere dati anonimizzati elaborati da un sistema ottico con riconoscimento dei caratteri (OCR) che rientra nell'ambito dei informazioni sanitarie.
Il testo anonimizzato, o
quote
, è accompagnato da queste informazioni. tipo oinfoType
e la probabilità di trovare le informazioni, oppureconfidence
. Ad esempio, se un'immagine DICOM contenente il testo burn-inJohn Doe
è anonimizzato, la risorsa di provenienza conterràquote
impostata suJohn Doe
,infoType
impostata suPERSON_NAME
e suconfidence
compreso tra 0 e 1.I metadati di anonimizzazione DICOM vengono generati solo se
dicomStores.deidentify
viene chiamato conImageConfig.textRedactionMode
impostato suREDACT_SENSITIVE_TEXT
oREDACT_SENSITIVE_TEXT_CLEAN_DESCRIPTORS
.
Anonimizza i metadati dell'operazione in una risorsa di provenienza
La tabella seguente mostra una descrizione dei metadati in dell'operazione di anonimizzazione e il campo corrispondente nei metadati in cui può essere trovato nella risorsa di provenienza. Il "Campo della risorsa di provenienza" le celle contengono un campione a fini dimostrativi.
Descrizione metadati | Campo della risorsa di provenienza |
---|---|
ID risorsa di provenienza | Provenance.id |
Quando è iniziata l'operazione di anonimizzazione | Provenance.occurredDateTime |
Timestamp della creazione della risorsa di provenienza | Provenance.recorded |
Nome dell'operazione a lunga esecuzione di anonimizzazione | Provenance.agent.who: { "identifier": { "system": "https://g.co/healthcare/operation" "value": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" } } |
Archivio DICOM di origine | Provenance.entity.role: "SOURCE" Provenance.entity.what.identifier.value: "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/dicomStores/SOURCE_DICOM_STORE_ID" |
Archivio DICOM di destinazione | Provenance.target.type.value |
Valore utilizzato: DeidentifyConfig |
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 }] |
Metadati di anonimizzazione DICOM in una risorsa di provenienza
La tabella seguente mostra una descrizione dei metadati in dell'istanza DICOM anonimizzata e del campo corrispondente dei metadati in una risorsa di provenienza. Il "Campo della risorsa di provenienza" le celle contengono un campione a fini dimostrativi.
Descrizione metadati | Campo della risorsa di provenienza |
---|---|
Link alla risorsa dell'operazione di anonimizzazione | Provenance.agent.who: {reference: "Provenance/PROVENANCE_RESOURCE_ID"} |
Timestamp della creazione della risorsa di provenienza | Provenance.recorded |
Percorso REST dell'istanza DICOM di origine | Provenance.entity.role: SOURCE Provenance.entity.what.identifier.value |
Percorso REST dell'istanza DICOM di destinazione | Provenance.target.type.value |
Dimensioni immagine DICOM | Provenance.entity.extension: [ { url: 'https://g.co/WIDTH', valueDecimal: WIDTH }, url: 'https://g.co/HEIGHT', valueDecimal: HEIGHT } ] |
Dimensione strutturata | Provenance.entity.extension: [{ url: 'https://g.co/DICOM_STRUCTURED_SIZE', valueDecimal: VALUE, }] |
Annotazione dell'immagine DICOM | Provenance.entity.extension: [{ url: 'https://g.co/DICOM_IMAGES', extension: [ { FRAME_0 }, { FRAME_1 }, ... ] }] |
Annotazione 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 } ] } ] |
Annotazione 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 } ] |
Annotazione di tutti i tag DICOM | Provenance.entity.extension: [{ url: 'https://g.co/dicom-tags', extension: [ { // tag (0002,0000) }, { // tag (0002,0001) }, ... ] }] |
Notazione tag DICOM singolo | 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" } ] } ] |
Esempi
Prima di iniziare
Assicurati di avere il roles/healthcare.fhirResourceEditor
sul datastore FHIR dei metadati delle operazioni prima di eseguire uno qualsiasi
i seguenti esempi. Devi avere questo ruolo per scrivere nell'archivio FHIR dei metadati delle operazioni.
Anonimizza i dati DICOM, scrivi su un datastore FHIR e cerca nelle risorse di provenienza
Prima di eseguire questo esempio, completa i seguenti passaggi:
- Crea un set di dati di origine contenente un archivio DICOM con almeno un'istanza DICOM da anonimizzare.
- crea un set di dati di destinazione contenente un archivio DICOM vuoto e uno vuoto Negozio FHIR. Il datastore FHIR deve soddisfare i requisiti.
Questo esempio riguarda la sezione Combinazione di anonimizzazione dei tag e oscuramento del testo con burn-in. In questo esempio, l'anonimizzazione si verifica su un singolo archivio DICOM e i dati anonimizzati vengono scritti in un nuovo archivio DICOM. Il datastore FHIR dei metadati delle operazioni si trova nello stesso set di dati del nuovo datastore DICOM.
Questo esempio utilizza due istanze DICOM. Le istanze non sono fornite automaticamente, quindi le risposte di esempio non saranno esattamente in linea con i tuoi dati anonimizzati.
Anonimizza i dati DICOM.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: l'ID del tuo progetto Google Cloud
- LOCATION: la posizione del set di dati contenente l'archivio DICOM di origine
- SOURCE_DATASET_ID: il set di dati padre dell'archivio DICOM di origine
- SOURCE_DICOM_STORE_ID: l'ID dell'archivio DICOM contenente i dati che stai anonimizzando
- DESTINATION_DATASET_ID: un set di dati esistente che contiene il datastore FHIR per l'operazione sui metadati in cui verrà creato l'archivio DICOM anonimizzato.
- DESTINATION_DICOM_STORE_ID: l'archivio DICOM in cui verranno scritti i dati anonimizzati dell'archivio DICOM di origine.
- OPERATION_METADATA_FHIR_STORE_ID: il datastore FHIR in cui verranno scritti i metadati dell'operazione di anonimizzazione
Corpo JSON della richiesta:
{ "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" } } } }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato
request.json
. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente: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
Quindi, esegui questo comando per inviare la richiesta 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
Salva il corpo della richiesta in un file denominato
request.json
. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:@' { "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
Quindi, esegui questo comando per inviare la richiesta 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 ContentVisualizza lo stato dell'operazione.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: l'ID del tuo progetto Google Cloud
- LOCATION: la posizione del set di dati
- SOURCE_DATASET_ID: il set di dati su cui è in esecuzione l'operazione di anonimizzazione
- OPERATION_ID: l'ID dell'operazione di anonimizzazione
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Esegui questo 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
Esegui questo 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 ContentExplorer API
Apri l'app pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Compila tutti i campi obbligatori e fai clic su Esegui.
Dovresti ricevere una risposta JSON simile alla seguente:
Dopo aver anonimizzato i dati DICOM e aver scritto l'operazione metadati a un datastore FHIR, puoi visualizzare le risorse di provenienza nel Datastore FHIR.
Per visualizzare le risorse di provenienza, utilizza
fhir.search
.Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: l'ID del tuo progetto Google Cloud
- LOCATION: la posizione del set di dati padre
- DATASET_ID: il set di dati padre del datastore FHIR
- OPERATION_METADATA_FHIR_STORE_ID: l'ID del datastore FHIR contenente i metadati
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Esegui questo 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
Esegui questo 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- Una risorsa di provenienza per ciascuna delle due istanze DICOM
- Una risorsa di provenienza per l'operazione di anonimizzazione
Archivia i dati di esempio, crea una ricerca FHIR personalizzata con la coordinata x relativa ed esegui una query
Prima di eseguire questo esempio, crea un set di dati di destinazione contenente un archivio DICOM vuoto e un Datastore FHIR. Il datastore FHIR deve soddisfare i requisiti.
L'esempio seguente mostra come archiviare le tre risorse di provenienza create
in Anonimizza i dati DICOM, scrivi in un datastore FHIR e cerca nelle risorse di provenienza
e poi creare una ricerca personalizzata. La ricerca personalizzata
esegue query su relative-x-coordinate-bottom-left
in una delle query anonimizzate
DICOM istanze.
Archivia le risorse di provenienza.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: l'ID del tuo progetto Google Cloud
- LOCATION: la posizione del set di dati padre
- DATASET_ID: il set di dati padre del datastore FHIR
- OPERATION_METADATA_FHIR_STORE_ID: l'ID del datastore FHIR contenente i metadati
Corpo JSON della richiesta:
{ "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" } ] } ] } ] } ] } } ] }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato
request.json
. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente: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
Quindi, esegui questo comando per inviare la richiesta 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
Salva il corpo della richiesta in un file denominato
request.json
. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:@' { "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
Quindi, esegui questo comando per inviare la richiesta 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 ContentDovresti ricevere una risposta JSON simile alla seguente:
Creare una risorsa SearchParameter sulla coordinata x relativa dell'immagine DICOM.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: l'ID del tuo progetto Google Cloud
- LOCATION: la posizione del set di dati padre
- DATASET_ID: il set di dati padre del datastore FHIR
- OPERATION_METADATA_FHIR_STORE_ID: l'ID del datastore FHIR contenente i metadati
Corpo JSON della richiesta:
{ "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" }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato
request.json
. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente: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
Quindi, esegui questo comando per inviare la richiesta 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
Salva il corpo della richiesta in un file denominato
request.json
. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:@' { "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
Quindi, esegui questo comando per inviare la richiesta 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 ContentDovresti ricevere una risposta JSON simile alla seguente:
Abilita la risorsa SearchParameter personalizzata nel datastore FHIR.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: l'ID del tuo progetto Google Cloud
- LOCATION: la posizione del set di dati padre
- DATASET_ID: il set di dati padre del datastore FHIR
- OPERATION_METADATA_FHIR_STORE_ID: l'ID del datastore FHIR contenente i metadati
Corpo JSON della richiesta:
{ "canonicalUrls": [ "relative-x-coordinate-bottom-left" ] }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato
request.json
. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:cat > request.json << 'EOF' { "canonicalUrls": [ "relative-x-coordinate-bottom-left" ] } EOF
Quindi, esegui questo comando per inviare la richiesta 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
Salva il corpo della richiesta in un file denominato
request.json
. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:@' { "canonicalUrls": [ "relative-x-coordinate-bottom-left" ] } '@ | Out-File -FilePath request.json -Encoding utf8
Quindi, esegui questo comando per inviare la richiesta 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 ContentVisualizza lo stato dell'operazione.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: l'ID del tuo progetto Google Cloud
- LOCATION: la posizione del set di dati
- DATASET_ID: il set di dati su cui è in esecuzione l'operazione di ricerca personalizzata
- OPERATION_ID: l'ID dell'operazione di ricerca personalizzata
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Esegui questo 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
Esegui questo 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 ContentExplorer API
Apri l'app pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Compila tutti i campi obbligatori e fai clic su Esegui.
Dovresti ricevere una risposta JSON simile alla seguente:
Esegui una query sulla risorsa di provenienza utilizzando il parametro di ricerca della coordinata x relativa:
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: l'ID del tuo progetto Google Cloud
- LOCATION: la posizione del set di dati padre
- DATASET_ID: il set di dati padre del datastore FHIR
- OPERATION_METADATA_FHIR_STORE_ID: l'ID del datastore FHIR contenente i metadati
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Il seguente esempio utilizza la queryrelative-x-coordinate-bottom-left=le0.05
, che cerca una coordinata x entro il 5% del bordo dell'immagine.Esegui questo 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
Il seguente esempio utilizza la queryrelative-x-coordinate-bottom-left=le0.05
, che cerca una coordinata x entro il 5% del bordo dell'immagine.Esegui questo 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" }
Archivia i dati di esempio, crea una ricerca FHIR personalizzata DICOM di origine ed esegui una query
Prima di eseguire questo esempio, crea una set di dati di destinazione contenente un archivio DICOM vuoto e un Datastore FHIR. Il datastore FHIR deve soddisfare i requisiti.
L'esempio seguente mostra come archiviare le tre risorse di provenienza create in Anonimizza i dati DICOM, scrivi in un datastore FHIR e cerca nelle risorse di provenienza e poi creare una ricerca personalizzata. La ricerca personalizzata query per ottenere informazioni su una delle due immagini DICOM di origine.
Archivia le risorse di provenienza.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: l'ID del tuo progetto Google Cloud
- LOCATION: la posizione del set di dati padre
- DATASET_ID: il set di dati padre del datastore FHIR
- OPERATION_METADATA_FHIR_STORE_ID: l'ID del datastore FHIR contenente i metadati
Corpo JSON della richiesta:
{ "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" } ] } ] } ] } ] } } ] }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato
request.json
. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente: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
Quindi, esegui questo comando per inviare la richiesta 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
Salva il corpo della richiesta in un file denominato
request.json
. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:@' { "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
Quindi, esegui questo comando per inviare la richiesta 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 ContentDovresti ricevere una risposta JSON simile alla seguente:
Crea una risorsa SearchParameter sull'immagine DICOM di origine.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: l'ID del tuo progetto Google Cloud
- LOCATION: la posizione del set di dati padre
- DATASET_ID: il set di dati padre del datastore FHIR
- OPERATION_METADATA_FHIR_STORE_ID: l'ID del datastore FHIR contenente i metadati
Corpo JSON della richiesta:
{ "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" }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato
request.json
. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente: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
Quindi, esegui questo comando per inviare la richiesta 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
Salva il corpo della richiesta in un file denominato
request.json
. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:@' { "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
Quindi, esegui questo comando per inviare la richiesta 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 ContentDovresti ricevere una risposta JSON simile alla seguente:
Abilita la risorsa SearchParameter personalizzata nel datastore FHIR.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: l'ID del tuo progetto Google Cloud
- LOCATION: la posizione del set di dati padre
- DATASET_ID: il set di dati padre del datastore FHIR
- OPERATION_METADATA_FHIR_STORE_ID: l'ID del datastore FHIR contenente i metadati
Corpo JSON della richiesta:
{ "canonicalUrls": [ "lookup-source-instance" ] }
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Salva il corpo della richiesta in un file denominato
request.json
. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:cat > request.json << 'EOF' { "canonicalUrls": [ "lookup-source-instance" ] } EOF
Quindi, esegui questo comando per inviare la richiesta 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
Salva il corpo della richiesta in un file denominato
request.json
. Esegui questo comando nel terminale per creare o sovrascrivere questo file nella directory corrente:@' { "canonicalUrls": [ "lookup-source-instance" ] } '@ | Out-File -FilePath request.json -Encoding utf8
Quindi, esegui questo comando per inviare la richiesta 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 ContentVisualizza lo stato dell'operazione.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: l'ID del tuo progetto Google Cloud
- LOCATION: la posizione del set di dati
- DATASET_ID: il set di dati su cui è in esecuzione l'operazione di ricerca personalizzata
- OPERATION_ID: l'ID dell'operazione di ricerca personalizzata
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Esegui questo 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
Esegui questo 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 ContentExplorer API
Apri l'app pagina di riferimento del metodo. Sul lato destro della pagina si apre il riquadro Explorer API. Puoi interagire con questo strumento per inviare richieste. Compila tutti i campi obbligatori e fai clic su Esegui.
Dovresti ricevere una risposta JSON simile alla seguente:
Esegui una query sulla risorsa di provenienza utilizzando il parametro di ricerca delle immagini DICOM di origine.
Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:
- PROJECT_ID: l'ID del tuo progetto Google Cloud
- LOCATION: la posizione del set di dati padre
- DATASET_ID: il set di dati padre del datastore FHIR
- OPERATION_METADATA_FHIR_STORE_ID: l'ID del datastore FHIR contenente i metadati
Per inviare la richiesta, scegli una delle seguenti opzioni:
curl
Il seguente esempio utilizza la querylookup-source-instance:contains=studies/1/series/2/instances/4
, che restituisce informazioni sull'istanza che contienestudies/1/series/2/instances/4
nel suo identificatore.Esegui questo 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
Il seguente esempio utilizza la querylookup-source-instance:contains=studies/1/series/2/instances/4
, che restituisce informazioni sull'istanza che contienestudies/1/series/2/instances/4
nel suo identificatore.Esegui questo 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" }
Esporta ed esegui query sul datastore FHIR dei metadati delle operazioni
L'esempio seguente mostra come esportare l'operazione di anonimizzazione
di metadati nel datastore FHIR a BigQuery ed eseguire query sui dati esportati per
Dati di tipo PHI elaborati tramite OCR. I dati generati sono compatibili solo con
LOSSLESS
o ANALYTICS_V2
SchemaType
Esporta i metadati nell'archivio FHIR in un set di dati BigQuery.
I metadati vengono esportati in una tabella denominata
Provenance
nel set di dati BigQuery selezionato.Vai alla pagina BigQuery.
Nel riquadro Explorer, completa questi passaggi:
- Selezionare il tuo progetto Google Cloud.
- Seleziona il set di dati BigQuery in cui hai esportato i metadati DICOM.
- Seleziona la tabella Provenienza.
Fai clic su
Crea nuova query.Esegui questa query:
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
Sostituisci quanto segue:
- PROJECT_ID: l'ID del tuo progetto Google Cloud
- BIGQUERY_DATASET: il set di dati BigQuery in cui hai esportato i metadati dal datastore FHIR
Fai clic su
Esegui.I risultati della query mostrano i metadati per i dati PHI anonimizzati in un tabulare. Se non specifichi una tabella di destinazione, il job di query scrive l'output in una tabella temporanea (cache).
Quota
La scrittura dei metadati dell'operazione di anonimizzazione in un datastore FHIR utilizza il consumo
Quote di fhir_write_ops
nel progetto in cui vengono scritti i metadati dell'operazione.
Viene creata una risorsa FHIR per ogni istanza DICOM, quindi
dell'operazione di anonimizzazione non può essere superiore al valore
La quota FHIR consente.
Fatturazione
Ogni risorsa di provenienza creata nel datastore FHIR dei metadati delle operazioni
comporta un addebito per le chiamate a fhir.update
.
Il numero di chiamate API a fhir.update
può essere calcolato come segue:
Total number of DICOM instances de-identified + 1
.
Passaggi successivi
- Scopri come esportare le risorse FHIR in BigQuery per l'esplorazione e l'analisi.
- Scopri come trasmettere in flusso le modifiche alle risorse FHIR in BigQuery sincronizzare i dati in un datastore FHIR con un set di dati BigQuery in quasi in tempo reale.