Questa pagina descrive concetti e best practice per l'integrazione di un visualizzatore di diagnostica per immagini di terze parti con l'API Cloud Healthcare. L'API Cloud Healthcare è integrata con più visualizzatori, tra cui il visualizzatore OHIF (Open Health Imaging Foundation) e il visualizzatore Weasis.
Prima di iniziare
Se non hai archiviato alcuna immagine DICOM da utilizzare nel tuo visualizzatore, consulta Archiviare i dati DICOM e Importazione ed esportazione di dati DICOM utilizzando Cloud Storage per iniziare.
Autorizzazione e autenticazione delle richieste mediante OAuth 2.0
Le API Google Cloud supportano il protocollo OAuth 2.0 sia per l'autenticazione che per l'autorizzazione.
Un visualizzatore medico deve gestire l'autenticazione e l'autorizzazione per accedere ai dati DICOM archiviati nell'API Cloud Healthcare. Puoi concedere queste autorizzazioni in due modi. Ogni metodo ha i propri costi e vantaggi:
Utilizzo del flusso OAuth 2.0 di Servizi di identità Google
- Gli utenti finali si autenticano tramite il visualizzatore medico all'API Cloud Healthcare.
- Il visualizzatore medico accede all'API Cloud Healthcare per conto dell'utente finale.
- Le autorizzazioni vengono gestite a livello di utente e le azioni dell'utente vengono registrate in Cloud Audit Logs con l'identificatore univoco dell'utente.
- Utilizzare il flusso dei Servizi di identità Google è più complesso rispetto all'uso di un account di servizio. Ad esempio, l'applicazione deve gestire i callback per archiviare il token di autorizzazione, il che può aggiungere complessità non necessaria a una semplice applicazione.
Utilizzo di un account di servizio
- Puoi configurare il visualizzatore medico in modo che utilizzi il proprio metodo di autorizzazione e controllo dell'accesso per determinare se un utente finale può visualizzare una determinata risorsa dell'API Cloud Healthcare. L'utilizzo di un account di servizio è utile se hai già un visualizzatore che esegue controlli di gestione utenti e autenticazione.
- Le azioni eseguite nel visualizzatore vengono registrate in Cloud Audit Logs, ma non puoi visualizzare i log a livello di singoli utenti finali.
- L'autenticazione mediante un account di servizio è più semplice rispetto all'uso del flusso Servizi di identità Google. Ad esempio, non è necessario richiedere all'utente di accedere e quindi non è necessario archiviare un token di accesso.
Autorizzazione mediante il flusso OAuth 2.0 di Servizi di identità Google
Puoi autorizzare un visualizzatore medico ad accedere ai dati DICOM archiviati nell'API Cloud Healthcare per conto di un utente utilizzando il flusso OAuth 2.0 di Google Identity Services. A seconda dell'applicazione, sono disponibili flussi per le seguenti applicazioni:
La seguente descrizione per il flusso di accesso presuppone che l'utente che accede al visualizzatore abbia creato un archivio DICOM e archiviato istanze DICOM nell'archivio:
- Un utente apre l'applicazione di un visualizzatore di imaging biomedico. Nel visualizzatore compare una finestra di consenso di Google che mostra il nome dell'applicazione e i servizi dell'API di Google che sta richiedendo l'autorizzazione ad accedere con le credenziali di autorizzazione dell'utente. L'utente può consentire o negare l'accesso all'applicazione.
- L'utente viene indirizzato alla pagina dei Servizi di identità Google. Se l'utente concede l'accesso richiesto all'applicazione, questa può accedere ai dati dell'utente.
Non archiviare token di aggiornamento nel visualizzatore. I token di accesso concessi al visualizzatore da parte dell'utente devono essere di breve durata e scambiati solo quando scadono.
Inoltre, i token di aggiornamento non sono necessari per i seguenti motivi:
- L'utente è sempre presente quando utilizza il visualizzatore.
- L'utilizzo dei token di aggiornamento richiede lavoro aggiuntivo per archiviarli in modo sicuro.
Autorizzazione mediante un account di servizio
Puoi gestire l'autenticazione e l'autorizzazione a livello di visualizzatore medico, anziché a livello di utente finale, utilizzando OAuth 2.0 con un account di servizio.
Per istruzioni su come utilizzare un account di servizio per autenticare un visualizzatore medico per l'API Cloud Healthcare, consulta Autenticazione nell'API.
Ruoli obbligatori
Affinché il visualizzatore funzioni correttamente, un utente deve disporre dei seguenti ruoli:
roles/healthcare.dicomViewer
: per la visualizzazione delle risorse DICOMroles/healthcare.dicomEditor
: per visualizzare, modificare e creare risorse DICOM
Nel flusso di accesso, è previsto che l'utente abbia già configurato questi ruoli e che lo spettatore non debba fare altro. Quando utilizzi un account di servizio,
i ruoli devono essere impostati nell'account di servizio. Il visualizzatore deve restituire gli errori PERMISSION_DENIED
appropriati agli utenti che non dispongono delle autorizzazioni necessarie per accedere ai propri archivi DICOM.
Accesso agli endpoint DICOMweb
Dopo che l'utente si autentica al visualizzatore, il visualizzatore può effettuare richieste agli endpoint DICOMweb. Ogni archivio DICOM espone un singolo endpoint DICOMweb.
Quando l'utente si trova nel visualizzatore, deve specificare i progetti e gli archivi DICOM ai quali vuole accedere. Il processo più semplice è chiedere all'utente di fornire gli ID del progetto, del set di dati e dell'archivio DICOM a cui vuole accedere. Tuttavia, fornire ogni singolo valore potrebbe richiedere all'utente molto tempo.
In alternativa, puoi fornire una combinazione di input dell'utente e completamento automatico nel visualizzatore. Ad esempio, potresti chiedere all'utente di inserire un ID progetto e il visualizzatore potrebbe compilare automaticamente un elenco dei set di dati e degli archivi DICOM all'interno di quel progetto. In alternativa, potresti fornire un singolo campo di immissione che compila automaticamente i progetti, i set di dati e gli archivi DICOM a cui l'utente ha accesso. I metodi API riportati di seguito potrebbe essere utili al momento di impostare una delle seguenti alternative:
projects.list
: elenca i progetti che sono visibili all'utente e che soddisfano un filtro specificato.projects.locations.list
: elenca le informazioni sulle località supportate per l'API Cloud Healthcare.projects.locations.datasets.list
: elenca i set di dati dell'API Cloud Healthcare in un progetto.projects.locations.datasets.dicomStores.list
: elenca gli archivi DICOM in un set di dati.
Potresti anche prendere in considerazione l'idea di precompilare un elenco di risorse di un utente. Tuttavia, se un utente ha centinaia o migliaia di archivi o set di dati DICOM, la precompilazione e la visualizzazione dell'elenco potrebbe non essere fattibile.
accesso alle risorse nel visualizzatore mediante DICOMweb
L'API Cloud Healthcare supporta lo standard DICOMweb. Per consentire agli utenti di accedere ai propri dati, il visualizzatore deve implementare i metodi HTTP RESTful DICOMweb anziché i protocolli DIMSE legacy.
Ogni spettatore ha due componenti principali:
- Il fornitore dell'elenco di lavoro
- Visualizzatore immagini
Puoi utilizzare lo standard DICOMweb con entrambi i componenti.
Visualizzazione del fornitore dell'elenco di lavoro
Di solito, la prima cosa che un utente vede quando apre un visualizzatore è un elenco di tutti gli studi disponibili in ogni archivio DICOM. Il visualizzatore può recuperare questi studi utilizzando la transazione di ricerca.
Consulta la dichiarazione di conformità DICOM dell'API Cloud Healthcare per le specifiche su come viene implementata la transazione di ricerca nell'API Cloud Healthcare.
Visualizzazione delle istanze
Dopo aver effettuato l'accesso al fornitore dell'elenco di lavoro, l'utente di solito seleziona uno studio da visualizzare. Per eseguire il rendering dello studio, il visualizzatore deve accedere ai byte di pixel non elaborati dello studio e ai metadati DICOM. Il visualizzatore può recuperare queste informazioni utilizzando l'insieme di metodi Recupera transazione. I metodi di recupero delle transazioni consentono di recuperare un intero file DICOM non elaborato o i dati dei pixel non elaborati del file. I metodi della transazione di recupero supportano anche la transcodifica tra le diverse sintassi di trasferimento.
Consulta la dichiarazione di conformità DICOM dell'API Cloud Healthcare per le specifiche su come vengono implementati i metodi delle transazioni di ricerca e di recupero nell'API Cloud Healthcare.
Ottimizzazione della velocità effettiva di rete
A volte, ad esempio durante il rendering di una scansione CT, un visualizzatore potrebbe dover scaricare più istanze contemporaneamente per visualizzare l'immagine. Per ottenere risultati ottimali, recupera ogni istanza in parallelo utilizzando un numero elevato di richieste simultanee, ad esempio 50 o più. Il numero esatto dipende dalla larghezza di banda della rete e dell'applicazione.