Antes de comenzar
Establece la configuración y los recursos necesarios del almacén de FHIR y aplica el acceso control. Para obtener más información, consulta Controla el acceso a los recursos de FHIR.
Descripción general
El
ExplainDataAccess
permite descubrir qué tipos de acceso tienen cada perpetrador, a qué recursos y a qué recursos
recurso basado en la
aplicada
políticas y consentimientos.
El
ExplainDataAccess
puede ayudarte a responder preguntas como las siguientes:
- ¿Quién puede acceder a un recurso determinado?
- ¿Con qué propósito pueden acceder a este recurso estos actores?
- ¿Cuáles son los recursos de consentimiento que aplican dicho acceso?
Comprende el acceso a los datos
Para usar
ExplainDataAccess
,
y pasar el identificador del recurso de interés. La respuesta proporciona una lista de
permisos de consentimiento
(actor, propósito, entorno) a quienes se les permite o les niegan el acceso al
recurso proporcionado. Las excepciones a un consentimiento
alcances están
que se enumeran en la
ExplainDataAccessConsentScope.exceptions
. Puede haber excepciones cuando una política permite que actor
acceda
Observation/ob1
para cualquier propósito, mientras exista una política de denegación que rechace
actor
acceda a este recurso con el propósito research
. Cada alcance de consentimiento contiene información sobre qué recurso de consentimiento aplicó ese acceso a través de ExplainDataAccessConsentScope.enforcing_consents, lo que te ayuda a comprender los detalles de los consentimientos aplicables y aplicados en este recurso.
Hay una límite de 1,000 directivas de consentimiento de permiso y 1,000 directivas de denegación de consentimiento. Este límite limita la cantidad de alcances de consentimiento que se aplican a un recurso determinado. Si la cantidad de permisos de consentimiento supera el límite, el campo ExplainDataAccessResponse.warning contiene un mensaje relevante.
La siguiente es una solicitud de ejemplo que explica el acceso a los datos de un recurso determinado:
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"
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "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" } } ] }
En este ejemplo, se permitió el siguiente acceso:
Practitioner/12942879-f89f-41ae-aa80-0b911b649833
con el propósitov3/ETREAT
en todos los entornos, con el consentimiento del pacientePractitioner/12942879-f89f-41ae-aa80-0b911b649833
con todo propósito en el entornoApp/123
, otorgado con el consentimiento del paciente.Practitioner/12942879-f89f-41ae-aa80-0b911b649833
conv3/BIORCH
propósito en el entornoApp/golden
, otorgado con el consentimiento del administrador.
Ejemplo adicional de respuesta de 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":"*" } ] } ] } ] }
En este ejemplo, Practitioner/doctor
tiene permitido acceder al recurso en
todos los entornos y para todos los fines, excepto para v3/TREAT
. La política de aplicación del consentimiento es un consentimiento del paciente Consent/pc1
, y la política de aplicación del consentimiento son políticas de administrador (Consent/ac1
y Consent/ac1-dup
). Consent/ac1-dup
es una política de administrador en cascada que coincide con el propietario del recurso Patient/p1
.