Introduzione all'accesso ai dati

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:

  1. Practitioner/12942879-f89f-41ae-aa80-0b911b649833 a scopo v3/ETREAT in tutti gli ambienti, concesso dal consenso del paziente.
  2. Practitioner/12942879-f89f-41ae-aa80-0b911b649833 per finalità diverse nell'ambienteApp/123, concesso con il consenso del paziente.
  3. Practitioner/12942879-f89f-41ae-aa80-0b911b649833 a scopo v3/BIORCH nell'ambiente App/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 .