Prima di iniziare
Configura le risorse e le configurazioni necessarie dell'archivio FHIR e applica il controllo dell'accesso. Per ulteriori informazioni, vedi Controllare l'accesso alle risorse FHIR.
Panoramica
Il metodo
ExplainDataAccess
ti consente di scoprire quali attori hanno accesso a quali risorse in base ai criteri e ai consensi
applicati.
Il metodo
ExplainDataAccess
può aiutarti a rispondere a domande come:
- Chi può accedere a una determinata risorsa?
- A quale scopo questi attori possono accedere a questa risorsa?
- Quali sono le risorse per il consenso che applicano questo accesso?
Introduzione all'accesso ai dati
Per utilizzare
ExplainDataAccess
,
invia l'identificatore della risorsa di interesse. La risposta fornisce un elenco di
ambiti del consenso
(attore, finalità, ambiente) a cui è consentito o negato l'accesso alla
risorsa fornita. Le eccezioni a un ambito del consenso sono elencate nel campo ExplainDataAccessConsentScope.exceptions. Possono verificarsi eccezioni quando un criterio consente a actor
di accedere a Observation/ob1
per qualsiasi scopo, mentre esiste un criterio di negazione che impedisce a actor
di accedere a questa risorsa con lo scopo research
. Ogni ambito
del consenso
contiene informazioni sulla risorsa del consenso che ha applicato questo accesso tramite
ExplainDataAccessConsentScope.enforcing_consents,
in modo da comprendere i dettagli dei consensi applicati e applicabili su
questa risorsa.
Esiste un limite di 1000 direttive per il consenso per l'accesso e 1000 direttive per il rifiuto del consenso. Questo limite limita il numero di ambiti del consenso applicati a una determinata risorsa. Se il numero di ambiti del consenso supera il limite, il campo ExplainDataAccessResponse.warning contiene un messaggio pertinente.
Di seguito è riportato un esempio di richiesta che spiega l'accesso ai dati per una determinata risorsa:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json" \ "https://healthcare.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID:explainDataAccess?resource_id=Observation/7473784b-46a8-470c-b9a6-fe38a01025aa"
Dovresti ricevere una risposta JSON simile alla seguente:
{ "consentScopes":[ { "decision":"CONSENT_DECISION_TYPE_PERMIT", "enforcingConsents":[ { "consentResource":"projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Consent/73c54e8d-2789-403b-9dee-13085c5d5e34", "type":"CONSENT_POLICY_TYPE_PATIENT", "enforcementTime":"2024-02-09T02:48:02.721589Z", "patientConsentOwner":"projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/3c6aa096-c054-4c22-b2b4-1e4a4d203de2", "matchingAccessorScopes":[ { "actor":"Practitioner/12942879-f89f-41ae-aa80-0b911b649833", "purpose":"v3/ETREAT", "environment":"*" } ] } ], "accessorScope":{ "actor":"Practitioner/12942879-f89f-41ae-aa80-0b911b649833", "purpose":"v3/ETREAT", "environment":"*" } }, { "decision":"CONSENT_DECISION_TYPE_PERMIT", "enforcingConsents":[ { "consentResource":"projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Consent/10998b60-a252-405f-aa47-0702554ddc8e", "type":"CONSENT_POLICY_TYPE_PATIENT", "enforcementTime":"2024-02-09T02:48:02.721589Z", "patientConsentOwner":"projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/3c6aa096-c054-4c22-b2b4-1e4a4d203de2", "matchingAccessorScopes":[ { "actor":"Practitioner/12942879-f89f-41ae-aa80-0b911b649833", "purpose":"*", "environment":"App/123" } ] } ], "accessorScope":{ "actor":"Practitioner/12942879-f89f-41ae-aa80-0b911b649833", "purpose":"*", "environment":"App/123" } }, { "decision":"CONSENT_DECISION_TYPE_PERMIT", "enforcingConsents":[ { "consentResource":"projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Consent/5c8e3f8a-9fd5-480d-a08e-f29b89feccde", "type":"CONSENT_POLICY_TYPE_ADMIN", "enforcementTime":"2024-02-09T02:50:03.973252Z", "matchingAccessorScopes":[ { "actor":"Practitioner/12942879-f89f-41ae-aa80-0b911b649833", "purpose":"v3/BIORCH", "environment":"App/golden" } ] } ], "accessorScope":{ "actor":"Practitioner/12942879-f89f-41ae-aa80-0b911b649833", "purpose":"v3/BIORCH", "environment":"App/golden" } } ] }
In questo esempio, sono stati consentiti i seguenti accessi:
Practitioner/12942879-f89f-41ae-aa80-0b911b649833
a scopov3/ETREAT
in tutti gli ambienti, concesso dal consenso del paziente.Practitioner/12942879-f89f-41ae-aa80-0b911b649833
per finalità diverse nell'ambienteApp/123
, concesso con il consenso del paziente.Practitioner/12942879-f89f-41ae-aa80-0b911b649833
a scopov3/BIORCH
nell'ambienteApp/golden
, concesso con il consenso dell'amministratore.
Esempio aggiuntivo di risposta ExplainDataAccess
{ "consentScopes":[ { "decision":"CONSENT_DECISION_TYPE_PERMIT", "accessorScope":{ "actor":"Practitioner/doctor", "purpose":"*", "environment":"*" }, "enforcingConsents":[ { "consentResource":"projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Consent/pc1", "type":"CONSENT_POLICY_TYPE_PATIENT", "enforcementTime":"2024-01-02T14:10:55.271144Z", "patientConsentOwner":"projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/p1", "matchingAccessorScopes":[ { "actor":"Practitioner/doctor", "purpose":"*", "environment":"*" } ] } ], "exceptions":[ { "decision":"CONSENT_DECISION_TYPE_DENY", "accessorScope":{ "actor":"Practitioner/doctor", "purpose":"v3/TREAT", "environment":"*" }, "enforcingConsents":[ { "consentResource":"projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Consent/ac1", "type":"CONSENT_POLICY_TYPE_ADMIN", "enforcementTime":"2024-01-02T14:10:55.229196Z", "matchingAccessorScopes":[ { "actor":"Practitioner/doctor", "purpose":"v3/TREAT", "environment":"*" } ] }, { "consentResource":"projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Consent/ac1-dup", "type":"CONSENT_POLICY_TYPE_ADMIN", "variants":["CONSENT_VARIANT_CASCADE"], "enforcementTime":"2024-01-02T14:10:55.229196Z", "cascadeOrigins":[ "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/p1" ], "matchingAccessorScopes":[ { "actor":"Practitioner/doctor", "purpose":"v3/TREAT", "environment":"*" } ] } ] } ] }, { "decision":"CONSENT_DECISION_TYPE_DENY", "accessorScope":{ "actor":"Practitioner/doctor", "purpose":"v3/TREAT", "environment":"*" }, "enforcingConsents":[ { "consentResource":"projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Consent/ac1", "type":"CONSENT_POLICY_TYPE_ADMIN", "enforcementTime":"2024-01-02T14:10:55.229196Z", "matchingAccessorScopes":[ { "actor":"Practitioner/doctor", "purpose":"v3/TREAT", "environment":"*" } ] }, { "consentResource":"projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Consent/ac1-dup", "type":"CONSENT_POLICY_TYPE_ADMIN", "variants":["CONSENT_VARIANT_CASCADE"], "enforcementTime":"2024-01-02T14:10:55.229196Z", "cascadeOrigins":[ "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/p1" ], "matchingAccessorScopes":[ { "actor":"Practitioner/doctor", "purpose":"v3/TREAT", "environment":"*" } ] } ] } ] }
In questo esempio, a Practitioner/doctor
è consentito accedere alla risorsa in tutti gli ambienti e per tutti gli scopi, ad eccezione di v3/TREAT
. Il criterio di applicazione del consenso è il consenso del paziente Consent/pc1
e i criteri di applicazione del consenso sono i criteri di amministrazione (Consent/ac1
e Consent/ac1-dup
).Consent/ac1-dup
è un criterio di amministrazione con applicazione a cascata che corrisponde al proprietario della risorsaPatient/p1
.