Prima di iniziare
Impostare le configurazioni e le risorse necessarie del datastore FHIR e applicare il controllo dell'accesso. Per ulteriori informazioni, consulta Controllare l'accesso alle risorse FHIR.
Panoramica
Il metodo ExplainDataAccess
ti consente di scoprire quali attori hanno un determinato accesso per una determinata risorsa in base ai criteri e ai consensi applicati.
Il metodo ExplainDataAccess
può aiutarti a rispondere a domande come queste:
- Chi può accedere a una determinata risorsa?
- Per quale scopo possono accedere a questa risorsa?
- Quali sono le risorse per il consenso che applicano tale accesso?
Introduzione all'accesso ai dati
Per utilizzare
ExplainDataAccess
,
trasmetti l'identificatore della risorsa che ti interessa. La risposta fornisce un elenco di ambiti di consenso (attore, scopo, ambiente) a cui è consentito o a cui è negato l'accesso alla risorsa fornita. Le eccezioni agli ambiti di consenso sono elencate nel campo ExplainDataAccessConsentScope.exceptions. Può verificarsi un'eccezione quando un criterio consente a actor
di accedere a Observation/ob1
per qualsiasi scopo, mentre esiste un criterio di negazione che nega a actor
di accedere a questa risorsa con scopo research
. Ogni ambito di consenso contiene informazioni su quale risorsa per il consenso ha applicato questo accesso tramite ExplainDataAccessConsentScope.enforcing_consents. Questo ti aiuta a comprendere i dettagli dei consensi applicati e applicabili per questa risorsa.
Esiste un limite di 1000 istruzioni relative al consenso e di 1000 istruzioni di negazione del consenso. Questo limite limita il numero di ambiti di consenso applicati a una determinata risorsa. Se il numero di ambiti di consenso supera il limite, il campo ExplainDataAccessResponse.warning contiene il messaggio pertinente.
Di seguito è riportata una richiesta di esempio 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
con scopov3/ETREAT
in tutti gli ambienti, concesso dal consenso del paziente.Practitioner/12942879-f89f-41ae-aa80-0b911b649833
con tutte le finalità nell'ambienteApp/123
, concesso dal consenso del paziente.Practitioner/12942879-f89f-41ae-aa80-0b911b649833
con scopov3/BIORCH
nell'ambienteApp/golden
, concesso dal 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, Practitioner/doctor
può accedere alla risorsa in
tutti gli ambienti e per tutti gli scopi tranne v3/TREAT
. Il criterio di applicazione del consenso è Consent/pc1
per il consenso dei pazienti , mentre il criterio di applicazione del consenso è i criteri amministrativi (Consent/ac1
e Consent/ac1-dup
). Consent/ac1-dup
è un criterio a cascata amministrativo corrispondente al proprietario della risorsa
Patient/p1
.