Panoramica del modello di dati
Il modello dei dati per il controllo dell'accesso è rappresentato dalle Risorse per il consenso. Definiscono le regole da applicare e i dati a cui si applicano.
Consenso FHIR
Le regole di accesso vengono espresse tramite le risorse per il consenso FHIR. Il Consenso FHIR è un tipo di Risorsa FHIR che catturi le scelte dei consumatori nel settore sanitario. Consente o nega un insieme di attori compiere azioni che interessano il consumatore per uno scopo specifico da un ambiente specificato in un determinato periodo di tempo. Ad esempio, un consumatore potrebbe essere un paziente sanitario, chiunque agisca per conto di un paziente sanitario o altro individuo che stipula un contratto per il consenso.
Le azioni registrate in un consenso FHIR possono essere ampie e riguardare più di solo i dati della cartella clinica elettronica del consumatore (EHR), tuttavia per il gli scopi del consenso all'interno dell'API Cloud Healthcare, l'attenzione è focalizzata 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 per il consenso ha un stato che indica lo stato attuale del consenso. Sebbene un datastore FHIR possa contengono molti consensi in stati diversi, solo l'API Cloud Healthcare applica in modo forzato i consensi in stato attivo. Consensi in qualsiasi altro stato non hanno alcun effetto sull'applicazione delle norme. Se il consenso viene concesso per conto di una paziente, il consenso viene registrato come concesso da un artista.
Tipo di criterio
L'API Cloud Healthcare supporta i seguenti tipi di criteri di consenso:
Consenso del paziente: è associato a un paziente che utilizza
Consent.patient
(STU3, R4) e associa tutti i dati definiti dal compartimento del paziente (STU3, R4).Criterio di amministrazione: non è associato ad alcun paziente e deve avere un l'URL dell'estensione
https://g.co/fhir/medicalrecords/ConsentAdminPolicy
. Questo tipo di criterio può essere associato a un sottoinsieme o a tutte le risorse nello spazio dei nomi specificato dai criteri delle risorse. Il criterio di amministrazione definisce il valore predefinito per tutte le risorse di associazione nello store.Criterio a cascata amministrativo: un tipo di criterio di amministrazione che richiede l'URL dell'estensione
https://g.co/fhir/medicalrecords/CascadingPolicy
e l'URL dell'estensione dei criteri per gli amministratori. Puoi associare questo tipo di criterio a un compartimento di che soddisfano i criteri delle risorse. Ha il valore seguenti:- Supporta solo Paziente (STU3, R4) o Encounter (STU3, R4) come base a scomparti.
- Il datastore FHIR in cui viene applicato il criterio deve avere
disableReferentialIntegrity
impostato sufalse
.
Puoi combinare i tipi di criteri 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 istruzioni per il consenso sono istruzioni codificate all'interno di un consenso FHIR che Consentire o negare l'accesso ai dati a una persona giuridica autorizzata, come un concesso o un accessor. Un singolo consenso FHIR può codificare più istruzioni di consenso. Ciascuna fornisce quanto segue:
Tipo di applicazione: un'istruzione
permit
odeny
.Azione: le autorizzazioni contemplate da questa direttiva. Solo
access
è supportato per fornire accesso di sola lettura.Criteri per gli accessi. Un insieme di attributi che identificano il richiedente API coperto dalla direttiva.
Criteri delle risorse: un insieme di attributi che identificano le risorse coperte dalla direttiva.
Criteri della funzione di accesso
L'API Cloud Healthcare supporta tre proprietà di un accessore per l'utilizzo all'interno di una direttiva di consenso e per la corrispondenza con un accessore che effettua una richiesta di accesso ai dati. Per applicare un'istruzione, deve esistere una corrispondenza esatta sensibile alle maiuscole sulla funzione di accesso nell'ambito della determinazione dell'accesso offerta dal server FHIR.
Queste proprietà vengono codificate come segue:
Attore: rappresenta un ruolo individuale, di gruppo o di accesso che identifica la funzione di accesso o una sua caratteristica.
Finalità: rappresenta l'intento di utilizzo dei dati.
Ambiente: rappresenta un identificatore astratto che descrive i dell'ambiente o delle condizioni in cui agisce la funzione di accesso.
Ad esempio, una funzione di accesso può essere rappresentata dalle seguenti proprietà:
Attore:
Practitioner/123
Scopo:
ETREAT
o accesso per finalità di trattamento di emergenzaAmbiente:
Application/abc
In questo esempio, queste proprietà rappresentano un medico che accede ai dati quando
Eseguire un trattamento di emergenza utilizzando un'applicazione software chiamata abc
.
provision.actor
e
provision.purpose
sono definiti nell'ambito 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 è necessario specificare sempre un purpose
o un environment
. Ad esempio, se non viene specificato alcun environment
nella direttiva del consenso, la direttiva corrisponde a qualsiasi
environment
non coperto già da altre direttive del consenso.
Criteri delle risorse
L'API Cloud Healthcare supporta i seguenti elementi come parte del risorsa per il consenso:
Tipo di risorsa (STU3, R4): rappresenta il tipo a cui si vincolano le norme relative al consenso, ad esempio
Encounter
,Observation
oImmunization
.ID risorsa (STU3, R4): rappresenta l'ID a cui si associano le norme relative al consenso.
Origine dati: rappresenta l'origine della risorsa, come identificata dal risorsa
meta.source
(disponibile solo in R4).Tag dati: rappresenta l'etichetta personalizzata della risorsa come descritto in la risorsa
meta.tag
(STU3, R4).Etichetta di sicurezza: rappresenta le etichette di sicurezza che definiscono le risorse interessate come identificato nel campo
meta.security
(STU3, R4). Sono supportati i seguenti sistemi di codici:Riservatezza: valori gerarchici classificati da senza restrizioni al più limitato:
U
,L
,M
,N
,R
eV
. Se un consenso consente un'etichetta di sicurezza diR
allora si applica a tutte le risorse con l'etichettaR
o inferiore. Se il consenso nega un'etichetta di sicurezzaR
, quindi si applica a tutte le risorse sono sensibili almeno quantoR
.ActCode: corrispondenza esatta delle stringhe nel codice di sicurezza.
Flusso di lavoro dell'accesso
Questa figura illustra il percorso end-to-end di una richiesta a un archivio abilitato per il controllo dell'accesso FHIR. Un token esterno con l'ambito del consenso (a sinistra) viene utilizzato dall'applicazione (#3) quando invia una richiesta allo store FHIR con il controllo dell'accesso abilitato (a destra).
Ambito del consenso
Quando effettua una richiesta di accesso ai dati, un accessor opera in un determinato ambito del consenso che rappresenta le sue proprietà actor
, purpose
e environment
relative a qualsiasi richiesta HTTP FHIR. I valori di queste proprietà
deve essere una corrispondenza sensibile alle maiuscole con quelle fornite nell'ambito di un consenso affinché possano
influisce sulla determinazione dell'accesso da parte dell'applicazione forzata.
Un accessore può avere più identificatori actor
pertinenti per prendere una decisione sull'accesso. Analogamente, possono esserci più elementi purposes
o
environments
che siano pertinenti in un particolare contesto di consenso. Pertanto, tutte le proprietà di accesso pertinenti devono essere fornite nell'ambito di una richiesta HTTP FHIR per rappresentare correttamente l'accessore 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
Questo file rappresenta un infermiere o un medico noto come professionista 444
membro
del gruppo 999
, che rappresenta i professionisti di un dipartimento all'interno di un
in uno specifico ospedale. Il medico è presente per offrire un trattamento regolare,
e gestire eventuali cure di emergenza nell'ambito di queste azioni. La
utilizza un'applicazione software chiamata abc
.
L'ambito del consenso viene fornito come ambito Richiedi consenso parte della richiesta di dati di una funzione di accesso.
Ambito del consenso della richiesta
Le richieste FHIR utilizzano le intestazioni delle richieste HTTP FHIR per ricevere il consenso della funzione di accesso
l'ambito di attività. Questo ambito del consenso contiene un insieme di valori actor
, purpose
e
environment
per riflettere l'identità, le qualifiche,
l'intenzione d'uso e le limitazioni ambientali attuali dell'utente che accede.
Potrebbe esserci più di una di queste proprietà che rappresenta un
l'ambito del consenso della funzione di accesso
in qualsiasi momento.
Le voci relative all'ambito del consenso sono definite come segue:
actor/{type}/{ID}
: una proprietàactor
in cui la risorsatype
è forniti insieme aID
. Ecco alcuni esempi ditype
:Practitioner
Group
Patient
Ad esempio, se un archivio nel formato
projects/PROJECT_ID/locations/us-central1/datasets/DATASET_ID/fhirStores/STORE_ID
chiama l'API, un riferimento locale a un attorePractitioner/123
viene risolto inprojects/PROJECT_ID/locations/us-central1/datasets/DATASET_ID/fhirStores/STORE_ID/fhir/Practitioner/123
.purp/v3/{value}
: una proprietàpurpose
in cuivalue
fa parte di Scopo d'uso FHIR (v3
) valore predefinito o la sua estensione. Esempi divalue
includono:TREAT
ETREAT
HRESCH
env/{type}/{value}
: una proprietàenvironment
in cuitype
evalue
sono stringhe personalizzate senza tassonomia predefinita. Ecco alcuni esempi ditype
evalue
:App/my_app_1
Net/VPN
Inoltre, le intestazioni delle richieste HTTP FHIR possono ricevere anche ambiti speciali, come
btg
e bypass
, che sono definiti come segue:
btg
: "Infrangere i vetri" (o BTG) ti consente, in qualità di utente umano, di saltare il consenso in caso di emergenza. Deve essere utilizzata solo in caso di emergenza ed è obbligatoria la revisione post-audit. Di conseguenza,btg
richiede almeno unoactor
.bypass
: consente agli utenti attendibili (ad esempio un amministratore) o attendibili (ad esempio una pipeline di addestramento ML) per operare sul datastore FHIR senza l'autorizzazione del consenso. Di conseguenza,bypass
richiede almeno unactor
e unoenv
.
Applicazione forzata e determinazione dell'accesso
In un ambiente sanitario complesso in cui più norme e consensi coesistere, l'applicazione dell'accesso e la determinazione delle autorizzazioni di accesso può essere un'impresa scoraggiante. dell'attività. Vari stakeholder possono avere aspettative e requisiti diversi in merito all'utilizzo e alla divulgazione delle informazioni sui pazienti. Navigazione qui un panorama complesso richiede una chiara comprensione di come viene applicato l'accesso e la logica sottostante che regola la determinazione dell'accesso.
Norme relative al consenso aggregato
Un consumatore di servizi sanitari, ad esempio un paziente o un amministratore, può avere più direttive per il consenso all'interno di una singola risorsa per il consenso. Risorse per il consenso
può contenere una combinazione di permit
e deny
provision.type
istruzioni. Per impostazione predefinita, un utente può avere un numero qualsiasi di risorse per il consenso, ma al massimo 200 active
risorse per il consenso vengono applicate contemporaneamente. Consulta
Vincoli e limitazioni per ulteriori dettagli.
Tutte le direttive per il consenso vengono estratte dalle active
Risorse per il consenso per un determinato utente per creare un insieme di regole di consenso aggregate.
Proprietà delle direttive per il consenso
L'applicazione del consenso è limitata a un massimo di uno scopo e al massimo un ambiente per provisioning .
Le seguenti regole descrivono i principi per il controllo congiunto dell'accesso consenso dei pazienti, norme amministrative e norme a cascata per gli amministratori:
Per impostazione predefinita, a tutte le risorse viene negato l'accesso se non è presente una direttiva corrispondente.
Se la risorsa richiesta non esiste, vengono indicati solo il tipo e l'ID risorsa identificabili. Tutti gli altri criteri della risorsa e il proprietario della risorsa sconosciuto, la seguente regola si applica all'ordine di elenco:
Se il tipo di risorsa appartiene al compartimento paziente receive-compartment: l'accesso è negato.
In caso contrario:
Se esiste un criterio di amministrazione che nega i criteri di accesso, indipendentemente degli altri criteri delle risorse, l'accesso viene negato.
Se esistono criteri amministrativi che consentono i criteri di accesso per il identificabili (ad es. tipo e ID risorsa), un "risorsa non trovata" .
In tutti gli altri casi, l'accesso viene negato.
I criteri di amministrazione sono i criteri predefiniti utilizzati per la corrispondenza delle risorse nel negozio.
Le risorse che non appartengono a nessun paziente sono determinate solo dall'amministratore criteri.
Le risorse nel compartimento del paziente (STU3, R4) o nel compartimento degli incontri (STU3, R4) richiedono almeno un'istruzione di consenso permessa per le norme di o amministrazione del paziente o per le norme di amministrazione gerarchica e nessuna istruzione di rifiuto del consenso dall'e norme di amministrazione del paziente e dalle norme di amministrazione gerarchica. Questa condizione è necessaria per tutti i pazienti indicati nelle risorse a cui deve accedere la persona che effettua la richiesta.
- Alcune risorse potrebbero supportare più partecipanti ai pazienti. Ad esempio,
Appuntamento fornisce un elenco di
partecipanti che potrebbero essere pazienti. Tutti i pazienti nominati come tali
devono consentire l'accesso alla funzione di accesso usando le istruzioni di consenso
altrimenti le risorse non verranno restituite. Se una risorsa dispone di un'autorizzazione proveniente da un criterio di applicazione in cascata degli incontri, in cui questo incontro fa riferimento a un paziente tramite il campo
subject
(STU3, R4), la risorsa è considerata consentita dal paziente.
- Alcune risorse potrebbero supportare più partecipanti ai pazienti. Ad esempio,
Appuntamento fornisce un elenco di
partecipanti che potrebbero essere pazienti. Tutti i pazienti nominati come tali
devono consentire l'accesso alla funzione di accesso usando le istruzioni di consenso
altrimenti le risorse non verranno restituite. Se una risorsa dispone di un'autorizzazione proveniente da un criterio di applicazione in cascata degli incontri, in cui questo incontro fa riferimento a un paziente tramite il campo
Le regole descritte sono riassunte dal seguente pseudo-codice:
Controllo dell'accesso congiunto
ifresource
does not exist ifresource
is a patient-compartment or encounter-compartment resource: return "deny" else: if there is any admin policy denies access foraccessor criteria
regardless ofresource criteria
other than resource type and resource ID: return "deny" else if there is any admin policy permits access foraccessor criteria
based 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 requestedresource
if 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 allpatients
have 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
Il datastore FHIR controlla l'autorizzazione di consenso a livello di risorsa. Qualsiasi
riferimento
in una risorsa non viene risolto e applicato in cascata ai fini del controllo dell'accesso al consenso.
Ad esempio, considera un paziente identificato da Patient/f001
che consente una
il medico può accedere all'intera risorsa MedicationRequest
, ma non alla risorsa
Patient/f001
risorsa stessa a causa della privacy del paziente. In questo scenario,
Il medico può vedere l'intera risorsa MedicationRequest
, che include un
subject
che fa riferimento alla risorsa Patient/f001
, ma non è in grado di vedere
contenuti della risorsa Patient/f001
anche, ad esempio, durante l'esecuzione
a una ricerca FHIR utilizzando _include
.
Risoluzione dei conflitti
Sono possibili conflitti tra varie istruzioni permit
e deny
. Se due
istruzioni in conflitto corrispondono a una risorsa, il conflitto viene risolto utilizzando
deny
ha vinto sul modello permit
.
Per l'applicazione del consenso sono inclusi solo active
consensi.
Logica di applicazione dell'accesso alle risorse
Quando si effettua una richiesta sensibile al consenso a un datastore FHIR, il controllo dell'accesso si verifica nel seguente ordine:
L'API Cloud Healthcare controlla le autorizzazioni in Google Cloud account di servizio (o l'entità) configurato nel proxy. Se il servizio l'account utente dispone delle autorizzazioni IAM corrette per eseguire il metodo FHIR richiesto sul datastore FHIR, la richiesta procede.
Se l'applicazione del consenso è abilitata nel Configurazione del datastore FHIR e Sono presenti intestazioni HTTP con consenso, quindi l'API Cloud Healthcare applica i criteri di accesso al consenso per Patient Risorse del compartimento. L'applicazione dei criteri di accesso al consenso si basa sugli ambiti di consenso forniti nella richiesta, in base alle istruzioni acquisite dall'esecuzione più recente di
ApplyConsents
eApplyAdminConsents
.
Quando viene effettuata una richiesta che tiene conto del consenso a un archivio FHIR, si applicano le seguenti regole:
Fornisci almeno un ambito del consenso
actor
pertinente per il consenso azioni intraprese.Fornisci eventuali ambiti
purpose
eenvironment
aggiuntivi pertinenti per le azioni di consenso intraprese.Se il numero di voci relative all'ambito del consenso supera le limiti supportati, viene restituito un errore.
Se chiami un metodo che accede a più risorse (ad esempio,
fhir.Patient-everything
,fhir.executeBundle
, ofhir.search
), l'applicazione del consenso si applica a ogni singola risorsa. Tuttavia, esiste una sottile differenza tra questi metodi di accesso con più risorse:fhir.executeBundle
che legge più risorse riceve il messaggio "Accesso al consenso denied o la risorsa a cui si accede non esiste" per la singola risorsa senza autorizzazioni per il consenso (vedi gli esempi in Ottenere le risorse FHIR con l'ambito del consenso).fhir.search
ignora le risorse senza autorizzazioni di consenso e non restituisce l'errore di accesso al consenso negato, anche per la ricerca per_id
(vedi esempi nella Cerca nelle risorse FHIR con l'ambito del consenso).fhir.Patient-everything
si comporta in modo simile afhir.search
, tranne che restituisce il messaggio "Accesso al consenso negato o la risorsa a cui si accede non esistenti" se il chiamante non dispone dell'autorizzazione per il consenso sull'oggetto Risorsa per i pazienti.
Determinazione dell'accesso al consenso
Un'istruzione relativa al consenso ha al massimo un actor
, un massimo di un purpose
e al massimo un purpose
un environment
, mentre l'ambito del consenso può averne multipli 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 del consenso
può corrispondere a più di un'istruzione 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
), il consenso
l'ambito potrebbe corrispondere a più istruzioni per il consenso. Alcune istruzioni relative al consenso non specificano un valore purpose
o environment
. Pertanto, l'ambito del consenso deve essere anche associato alle direttive sul consenso che non specificano questi tipi di ambito.
Ad esempio, se l'ambito del consenso viene impostato su actor/Practitioner/123
actor/Group/999 purp/v3/TREAT env/App/abc
, corrisponde a uno qualsiasi dei seguenti elementi
Istruzioni per il consenso permit
o deny
:
actor/Practitioner/123 purp/v3/TREAT env/App/abc
actor/Practitioner/123 purp/v3/TREAT
actor/Practitioner/123 env/App/abc
actor/Practitioner/123
actor/Group/999 purp/v3/TREAT env/App/abc
actor/Group/999 purp/v3/TREAT
actor/Group/999 env/App/abc
actor/Group/999