Questa pagina descrive come utilizzare il sistema di controllo dell'accesso FHIR dell'API Cloud Healthcare per gestire e proteggere i tuoi dati sanitari. Puoi utilizzare il controllo dell'accesso FHIR per definire i criteri di consenso, controllare l'accesso ai dati in base ai ruoli e al contesto dell'utente e applicare questi criteri in un archivio FHIR.
Panoramica del modello di dati
Il modello dei dati per controllo dell'accesso è rappresentato dalle risorse di consenso. Definiscono le regole da applicare e a quali dati si applicano.
FHIR Consent
Le regole di accesso sono espresse tramite risorse FHIR Consent. FHIR Consent è un tipo di risorsa FHIR che acquisisce le scelte di un consumatore di servizi sanitari. Consente o nega a un insieme di attori di eseguire azioni che interessano il consumatore per uno specifico scopo da un ambiente specificato per un periodo di tempo. Ad esempio, un consumatore potrebbe essere un paziente, chiunque agisca per conto di un paziente o un altro privato che stipula un contratto di consenso.
Le azioni registrate in un consenso FHIR possono essere ampie e riguardare più di semplici dati della cartella clinica elettronica (EHR) del consumatore. Tuttavia, ai fini del consenso all'interno dell'API Cloud Healthcare, l'attenzione si concentra sulle azioni relative all'accesso ai dati e l'applicazione di queste azioni è limitata alla lettura dei dati FHIR da un datastore FHIR.
Una risorsa Consent ha un stato che indica lo stato attuale del consenso. Sebbene un datastore FHIR possa contenere molti consensi in stati diversi, l'API Cloud Healthcare applica solo i consensi nello stato attivo. I consensi in qualsiasi altro stato non hanno alcun effetto sull'applicazione. Se il consenso viene concesso per conto di un paziente, viene registrato come concesso da un esecutore.
Tipo di criterio
L'API Cloud Healthcare supporta i seguenti tipi di norme sul consenso:
Consenso del paziente: è associato a un paziente che utilizza
Consent.patient(STU3, R4) e vincola tutti i dati definiti dal compartimento del paziente (STU3, R4).Norme per gli amministratori: non è associato ad alcun paziente e deve avere un URL di estensione
https://g.co/fhir/medicalrecords/ConsentAdminPolicy. Questo tipo di criterio può essere associato a un sottoinsieme o a tutte le risorse nel negozio specificato dai criteri delle risorse. I criteri amministratore impostano i criteri predefiniti per tutte le risorse di binding nello store.Policy a cascata per gli amministratori: un tipo di policy per gli amministratori che richiede l'URL dell'estensione
https://g.co/fhir/medicalrecords/CascadingPolicye l'URL dell'estensione della policy per gli amministratori. Puoi associare questo tipo di criterio a un compartimento di risorse che corrispondono ai criteri delle risorse. Presenta le seguenti limitazioni:- Supporta solo Patient (STU3, R4) o Encounter (STU3, R4) come base del compartimento.
- Il datastore FHIR in cui viene applicato il criterio deve avere
disableReferentialIntegrityimpostato sufalse. Contatta l'assistenza cloud per utilizzare questa funzionalità per l'archivio FHIR non referenziale.
Puoi combinare i tipi di policy allo stesso livello di risorsa per consentire o negare l'accesso a una risorsa. Se manca il consenso di un paziente, il criterio di amministrazione può approvare l'accesso a una risorsa.
Direttiva sul consenso
Le direttive di consenso sono istruzioni codificate all'interno di un consenso FHIR che consentono o negano l'accesso ai dati a un'entità autorizzata, ad esempio un beneficiario o un accesso. Un singolo consenso FHIR può codificare più direttive di consenso. Ogni direttiva fornisce quanto segue:
Tipo di applicazione: un'istruzione
permitodeny.Azione: l'autorizzazione o le autorizzazioni coperte da questa direttiva. Solo
accessè supportato per fornire l'accesso di sola lettura.Criteri di accesso: un insieme di attributi che identificano il richiedente dell'API coperto dalla direttiva.
Criteri delle risorse: un insieme di attributi che identificano le risorse coperte dalla direttiva.
Criteri per gli accessori
L'API Cloud Healthcare supporta tre proprietà di un accessor da utilizzare all'interno di una direttiva di consenso e per la corrispondenza con un accessor che effettua una richiesta di accesso ai dati. Per applicare una direttiva all'accessor nell'ambito della determinazione dell'accesso offerta dal server FHIR, è necessario che la corrispondenza sia esatta e sensibile alle maiuscole.
Queste proprietà sono codificate come segue:
Attore: rappresenta un individuo, un gruppo o un ruolo di accesso che identifica l'autore dell'accesso o una sua caratteristica.
Scopo: rappresenta l'intento di utilizzo dei dati.
Ambiente: rappresenta un identificatore astratto che descrive l'ambiente o le condizioni in cui agisce l'accessor.
Ad esempio, un accessorio può essere rappresentato dalle seguenti proprietà:
Attore:
Practitioner/123Scopo:
ETREATo accesso per scopi di trattamento di emergenzaAmbiente:
Application/abc
In questo esempio, queste proprietà rappresentano un medico che accede ai dati quando
esegue un trattamento di emergenza utilizzando un'applicazione software chiamata abc.
provision.actor
e
provision.purpose
sono definiti come parte dello standard FHIR, mentre Environment è
https://g.co/fhir/medicalrecords/Environment. Tieni presente che questo link non è
risolvibile.
Tutte le direttive relative al consenso devono specificare un actor da applicare, ma non devono
sempre specificare un purpose o un environment. Ad esempio, se non viene specificato alcun environment nell'istruzione relativa al consenso, l'istruzione corrisponde a qualsiasi environment non ancora coperto da altre istruzioni relative al consenso.
Criteri delle risorse
L'API Cloud Healthcare supporta i seguenti elementi come parte della risorsa consenso:
Tipo di risorsa (STU3, R4): rappresenta il tipo a cui è associata la norma sul consenso, ad esempio
Encounter,ObservationoImmunization.ID risorsa (STU3, R4): rappresenta l'ID a cui è associata la norma sul consenso.
Origine dati: rappresenta l'origine della risorsa identificata dal
meta.sourcedella risorsa (disponibile solo in R4).Tag dati: rappresenta l'etichetta personalizzata della risorsa come descritto nella risorsa
meta.tag(STU3, R4).Etichetta Sicurezza: rappresenta le etichette di sicurezza che definiscono le risorse interessate come identificate nel campo
meta.security(STU3, R4). Sono supportati i seguenti sistemi di codifica:Confidenzialità: valori gerarchici classificati da non limitato a più limitato:
U,L,M,N,R,V. Se un consenso consente un'etichetta di sicurezzaRallora si applica a tutte le risorse etichettateRo inferiore. Se un consenso nega un'etichetta di sicurezzaR, si applica a tutte le risorse che sono almeno sensibili quantoR.ActCode: corrispondenza esatta della stringa sul codice di sicurezza.
Flusso di lavoro di accesso

Questa figura illustra il percorso end-to-end di una richiesta a un archivio con controllo dell'accesso FHIR abilitato. Un token esterno con l'ambito di consenso (a sinistra) viene utilizzato dall'applicazione (#3) quando effettua una richiesta all'archivio FHIR con il controllo dell'accesso abilitato (a destra).
Ambito del consenso
Quando effettua una richiesta di accesso ai dati, un accessor opera all'interno di un particolare
ambito di consenso che rappresenta le sue proprietà actor, purpose e environment
correlate a qualsiasi richiesta HTTP FHIR. I valori di queste proprietà
devono corrispondere esattamente a quelli forniti in un consenso per poter
influire sulla determinazione dell'accesso all'applicazione.
Un accessore può avere più identificatori actor pertinenti per determinare
l'accesso. Allo stesso modo, possono esserci più purposes o
environments pertinenti in un determinato contesto di consenso. Pertanto,
tutte le proprietà di accesso pertinenti devono essere fornite nell'ambito di una richiesta HTTP FHIR
per rappresentare correttamente l'accesso ai fini del consenso.
Ad esempio, l'ambito del consenso per una determinata richiesta di dati potrebbe essere il seguente:
actor/Practitioner/444 actor/Group/999 purp/v3/TREAT purp/v3/ETREAT env/App/abc
Rappresenta un infermiere o un medico noto come professionista sanitario 444 che è membro
del gruppo 999, che rappresenta i professionisti sanitari di un reparto di un
ospedale specifico. Il professionista è lì per fornire un trattamento regolare, ma
potrebbe anche occuparsi di trattamenti di emergenza nell'ambito di queste azioni. Il
professionista utilizza un'applicazione software chiamata abc.
L'ambito del consenso viene fornito come Richiedi ambito del consenso nell'ambito di una richiesta di dati di un accessor.
Richiedi ambito del consenso
Le richieste FHIR utilizzano le intestazioni di richiesta HTTP FHIR per ricevere l'ambito di consenso dell'accessor. Questo ambito del consenso contiene un insieme di valori actor, purpose e environment per riflettere l'identità, le qualifiche, l'intento di utilizzo e i vincoli ambientali attuali dell'accessor.
Potrebbe esserci più di una di queste proprietà che rappresentano l'ambito del consenso di un
accessore in un determinato momento.
Le voci dell'ambito del consenso sono definite come segue:
actor/{type}/{ID}: una proprietàactorin cui viene fornita la risorsatypeinsieme aID. Alcuni esempi ditypesono:PractitionerGroupPatient
Ad esempio, se un negozio con il formato
projects/PROJECT_ID/locations/us-central1/datasets/DATASET_ID/fhirStores/STORE_IDchiama l'API, un riferimento locale a un attorePractitioner/123viene risolto inprojects/PROJECT_ID/locations/us-central1/datasets/DATASET_ID/fhirStores/STORE_ID/fhir/Practitioner/123.purp/v3/{value}: una proprietàpurposein cuivalueè un membro del set di valori FHIR Purpose of Use (v3) o della sua estensione. Alcuni esempi divalueincludono:TREATETREATHRESCH
env/{type}/{value}: una proprietàenvironmentin cuitypeevaluesono stringhe personalizzate senza tassonomia predefinita. Alcuni esempi ditypeevalueincludono:App/my_app_1Net/VPN
Inoltre, le intestazioni delle richieste HTTP FHIR possono ricevere anche ambiti speciali, ad esempio
btg
e bypass, che sono definiti come segue:
btg: Break the glass (o BTG) consente a te, in qualità di utente umano, di saltare i controlli del consenso in caso di emergenze. Deve essere utilizzato solo in caso di emergenza ed è soggetto a revisione post-audit. Di conseguenza,btgrichiede almeno unactor.bypass: consente a utenti attendibili (ad esempio un amministratore) o applicazioni attendibili (ad esempio una pipeline di addestramento ML) di operare sullo store FHIR senza autorizzazione del consenso. Pertanto,bypassrichiede almeno unactore unenv.
Applicazione dell'accesso e determinazione dell'accesso
In un ambiente sanitario complesso in cui coesistono più norme e consensi, l'applicazione dell'accesso e la determinazione delle autorizzazioni di accesso possono essere un compito arduo. I vari stakeholder potrebbero avere aspettative e requisiti diversi in merito all'utilizzo e alla divulgazione delle informazioni sui pazienti. Per orientarsi in questo scenario complesso è necessario comprendere chiaramente come viene applicato l'accesso e la logica sottostante che ne determina la concessione.
Norme sul consenso aggregato
Un consumatore di servizi sanitari, ad esempio un paziente o un amministratore, può avere più
direttive di consenso contenute in una singola risorsa di consenso. Le risorse per il consenso
possono contenere un mix di permit e deny
provision.type
direttive. Per impostazione predefinita, un utente può avere un numero qualsiasi di risorse di consenso, ma
vengono applicate fino a 200 risorse di consenso active alla volta. Per ulteriori dettagli, consulta
Vincoli e limitazioni.
Tutte le direttive relative al consenso vengono estratte dalle risorse per il consenso di un determinato utente per creare un insieme di regole di consenso aggregate.active
Proprietà della direttiva relativa al consenso
L'applicazione del consenso è limitata a un massimo di uno scopo e a un massimo di un ambiente per voce provision.
Le seguenti regole descrivono i principi per il controllo congiunto dell'accesso al consenso del paziente, alle norme dell'amministratore e alle norme a cascata dell'amministratore:
Per impostazione predefinita, l'accesso a tutte le risorse viene negato se non esiste un'istruzione corrispondente.
Se la risorsa richiesta non esiste, sono identificabili solo il tipo di risorsa e l'ID risorsa. Tutti gli altri criteri delle risorse e il proprietario delle risorse sono sconosciuti, si applica la seguente regola nell'ordine di elenco:
Se il tipo di risorsa appartiene al compartimento del paziente o dell'incontro, l'accesso viene negato.
In caso contrario:
Se esiste un criterio amministratore che nega i criteri di accesso indipendentemente dagli altri criteri delle risorse, l'accesso viene negato.
Se esiste una policy amministrativa che consente i criteri di accesso per i criteri di risorse identificabili (ovvero tipo di risorsa e ID risorsa), viene restituito un errore "Risorsa non trovata".
In tutti gli altri casi, l'accesso viene negato.
I criteri amministrativi sono i criteri predefiniti utilizzati per la corrispondenza delle risorse nello store.
Le risorse che non appartengono a nessun paziente sono determinate solo dalle policy di amministrazione.
Le risorse che si trovano nel comparto del paziente (STU3, R4) o nel comparto dell'incontro (STU3, R4) richiedono almeno un'istruzione di consenso con autorizzazione per paziente o norma amministrativa o norma amministrativa a cascata e nessuna istruzione di consenso di negazione da parte del paziente e della norma amministrativa e della norma amministrativa a cascata. Questa condizione è necessaria per tutti i pazienti indicati nelle risorse a cui il richiedente deve accedere.
- Alcune risorse potrebbero supportare più partecipanti pazienti. Ad esempio,
Appuntamento fornisce un elenco di
partecipanti che potrebbero essere pazienti. Tutti i pazienti indicati in queste risorse devono consentire l'accesso all'accessor utilizzando le direttive di consenso, altrimenti le risorse non vengono restituite. Se una risorsa dispone di un'autorizzazione
da un criterio a cascata di incontro, in cui questo incontro fa riferimento a un
paziente tramite il campo
subject(STU3, R4), la risorsa è considerata autorizzata dal paziente.
- Alcune risorse potrebbero supportare più partecipanti pazienti. Ad esempio,
Appuntamento fornisce un elenco di
partecipanti che potrebbero essere pazienti. Tutti i pazienti indicati in queste risorse devono consentire l'accesso all'accessor utilizzando le direttive di consenso, altrimenti le risorse non vengono restituite. Se una risorsa dispone di un'autorizzazione
da un criterio a cascata di incontro, in cui questo incontro fa riferimento a un
paziente tramite il campo
Le regole descritte sono riassunte dal seguente pseudocodice:
Controllo dell'accesso congiunto
ifresourcedoes not exist ifresourceis a patient-compartment or encounter-compartment resource: return "deny" else: if there is any admin policy denies access foraccessor criteriaregardless ofresource criteriaother than resource type and resource ID: return "deny" else if there is any admin policy permits access foraccessor criteriabased on the identifiableresource criteria: return "resource not found" else: return "deny" else: letpatients= list of patient references named in the patient compartment eligible fields of the requestedresourceif there is any matching deny from eitherpatients's consents or admin policy or admin cascading policy: return "deny" if there is matching admin policy permits access: return "permit" if allpatientshave matching patient consents or admin cascading consent that permit access or are subject of encounters which permit the access through encounter cascading policy: return "permit" else: return "deny" end
L'archivio FHIR controlla l'autorizzazione al consenso a livello di risorsa. Qualsiasi
riferimento
in una risorsa non viene risolto e propagato ai fini del controllo dell'accesso con consenso.
Ad esempio, considera un paziente identificato da Patient/f001 che consente a un
medico di accedere all'intera risorsa MedicationRequest, ma non alla
risorsa Patient/f001 stessa a causa della privacy del paziente. In questo scenario, il
professionista sanitario può visualizzare l'intera risorsa MedicationRequest, che include un
campo subject che fa riferimento alla risorsa Patient/f001, ma non può visualizzare i
contenuti della risorsa Patient/f001 anche, ad esempio, quando esegue
una ricerca FHIR utilizzando _include.
Risoluzione dei conflitti
Sono possibili conflitti tra varie direttive permit e deny. Se due istruzioni in conflitto corrispondono a una risorsa, il conflitto viene risolto utilizzando il modello deny vince su permit.
Per l'applicazione del consenso vengono inclusi solo i consensi active.
Logica di applicazione dell'accesso alle risorse
Quando effettui una richiesta consapevole del consenso a un archivio FHIR, controllo dell'accesso avviene nel seguente ordine:
L'API Cloud Healthcare controlla le autorizzazioni per l' Google Cloud account di servizio (o il principal) configurato nel proxy. Se il service account dispone delle autorizzazioni IAM corrette per eseguire il metodo FHIR richiesto nell'archivio FHIR, la richiesta procede.
Se l'applicazione del consenso è abilitata nella configurazione dell'archivio FHIR e sono presenti le intestazioni HTTP sensibili al consenso, l'API Cloud Healthcare applica le norme di accesso con consenso per le risorse del compartimento del paziente. L'applicazione dei criteri di accesso al consenso si basa sugli ambiti di consenso forniti nella richiesta, in base alle direttive sul consenso acquisite dall'esecuzione più recente di
ApplyConsentseApplyAdminConsents.
Quando effettui una richiesta consapevole del consenso a un archivio FHIR, si applicano le seguenti regole:
Fornisci almeno un ambito di consenso
actorpertinente per le azioni di consenso intraprese.Fornisci eventuali ambiti
purposeeenvironmentaggiuntivi pertinenti per le azioni di consenso intraprese.Se il numero di voci dell'ambito del consenso supera i limiti supportati, viene restituito un errore.
Se chiami un metodo che accede a più risorse (ad esempio, il metodo
fhir.Patient-everything,fhir.Encounter-everything,fhir.executeBundleofhir.search), l'applicazione del consenso si applica a ogni singola risorsa. Tuttavia, esiste una sottile differenza tra questi metodi di accesso a più risorse:La lettura di più risorse da parte di
fhir.executeBundlericeve il messaggio "Accesso al consenso negato o la risorsa a cui si accede non esiste" per la singola risorsa senza autorizzazioni di consenso (vedi gli esempi in Recuperare risorse FHIR con ambito di consenso).fhir.searchignora le risorse senza autorizzazioni di consenso e non restituisce l'errore di accesso al consenso negato, anche per la ricerca per_id(vedi gli esempi nella Ricerca di risorse FHIR con ambito di consenso).fhir.Patient-everythingefhir.Encounter-everythingsi comportano in modo simile afhir.search, tranne per il fatto che restituiscono "Accesso al consenso negato o la risorsa a cui si accede non esiste" se il chiamante non dispone dell'autorizzazione di consenso per la risorsa Paziente o Incontro richiesta, rispettivamente.
Determinazione dell'accesso con consenso
Una direttiva per il consenso ha al massimo un actor, al massimo un purpose e al massimo
un environment, mentre l'ambito del consenso può avere più di uno di ciascuno. Alcune direttive
per il consenso non specificano tutte e tre le proprietà di accesso, nel qual caso qualsiasi
valore della proprietà dell'ambito del consenso può corrispondere a seconda delle regole di
risoluzione dei conflitti. Di conseguenza, un ambito di consenso
potrebbe corrispondere a più di una direttiva per il consenso.
Se l'ambito del consenso di una richiesta include due o più voci dello stesso tipo di ambito del consenso (actor, purpose o environment), l'ambito del consenso potrebbe corrispondere a più direttive per il consenso. Alcune direttive per il consenso non specificano un purpose o un environment. Pertanto, l'ambito del consenso deve essere
corrispondere anche alle direttive per il consenso che non specificano questi tipi di ambito.
Ad esempio, se imposti l'ambito del consenso su actor/Practitioner/123
actor/Group/999 purp/v3/TREAT env/App/abc, la corrispondenza viene stabilita con una delle seguenti direttive
permit o deny per il consenso:
actor/Practitioner/123 purp/v3/TREAT env/App/abcactor/Practitioner/123 purp/v3/TREATactor/Practitioner/123 env/App/abcactor/Practitioner/123actor/Group/999 purp/v3/TREAT env/App/abcactor/Group/999 purp/v3/TREATactor/Group/999 env/App/abcactor/Group/999