Registrar datos del usuario

En esta página, se describe cómo registrar los datos del usuario con la API de administración de consentimientos.

Los elementos de datos se registran con la API de administración de consentimientos y se conectan a los consentimientos mediante asignaciones de datos del usuario. Los datos del usuario nunca se almacenan en la API de administración de consentimientos.

Las asignaciones de datos del usuario, representadas como recursos UserDataMappings, incluyen los siguientes elementos:

  • Un ID de usuario que identifica al usuario. Este ID coincide con el ID que la aplicación proporcionó a la API de administración de consentimientos cuando se registró el consentimiento.
  • Un ID de datos que identifica los datos del usuario almacenados en otro lugar, como Google Cloud o el entorno local. El ID de datos puede ser un ID opaco, una URL o cualquier otro identificador.
  • Atributos de recursos, que describen las características de los datos del usuario mediante valores de atributos de recursos configurados para el almacén de consentimientos mediante definiciones de atributos Por ejemplo, los datos podrían incluir el attribute_definition_id data_identifiable con el valor de de-identified.

En el siguiente diagrama, se muestra el flujo de datos para crear asignaciones de datos del usuario:

asignaciones de datos del usuario

Registra asignaciones de datos del usuario

Para crear una asignación de datos del usuario, usa el método projects.locations.datasets.consentStores.userDataMappings.create. Realiza una solicitud POST y especifica la siguiente información en la solicitud:

  • El nombre de la tienda de consentimientos principales
  • Un userID único y opaco que representa al usuario con el que se asocia el elemento de datos
  • Un identificador para el recurso de datos del usuario, como la ruta de acceso de REST a un recurso único
  • Un conjunto de atributos RESOURCE que describen el elemento de datos
  • Un token de acceso

curl

En el siguiente ejemplo, se muestra una solicitud POST mediante curl:

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/consent+json; charset=utf-8" \
    --data "{
       'user_id': 'USER_ID',
       'data_id' : 'DATA_ID',
       'resource_attributes': [{
           'attribute_definition_id': 'data_identifiable',
           'values': ['de-identified']
      }]
    }" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/userDataMappings"

Si la solicitud tiene éxito, en el servidor se mostrará una respuesta similar a la siguiente muestra en formato JSON:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/userDataMappings/USER_DATA_MAPPING_ID",
  "dataId": "DATA_ID",
  "userId": "USER_ID",
  "resourceAttributes": [
    {
      "attributeDefinitionId": "data_identifiable",
      "values": [
        "de-identified"
      ]
    }
  ]
}

PowerShell

En el siguiente ejemplo, se muestra una solicitud POST mediante Windows PowerShell.

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-WebRequest `
  -Method Post `
  -Headers $headers `
  -ContentType: "application/consent+json; charset=utf-8" `
  -Body "{
       'user_id': 'USER_ID',
       'data_id' : 'DATA_ID',
       'resource_attributes': [{
           'attribute_definition_id': 'data_identifiable',
           'values': ['de-identified']
      }]
    }" `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/userDataMappings" | Select-Object -Expand Content

Si la solicitud tiene éxito, en el servidor se mostrará una respuesta similar a la siguiente muestra en formato JSON:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/userDataMappings/USER_DATA_MAPPING_ID",
  "dataId": "DATA_ID",
  "userId": "USER_ID",
  "resourceAttributes": [
    {
      "attributeDefinitionId": "data_identifiable",
      "values": [
        "de-identified"
      ]
    }
  ]
}

Configura ID de datos

El campo data_id del recurso de asignación de datos del usuario contiene una string especificada por el cliente que describe los datos a los que hace referencia el recurso de asignación de datos de usuario. Se permite cualquier string, como un ID opaco o URI.

Los ID de datos pueden ser tan detallados como sea necesario para tu aplicación. Si los datos que registras se pueden describir a nivel de tabla o de bucket, define data_id como la ruta de acceso de REST a ese recurso. Si los datos que registras requieren un mayor nivel de detalle, es posible que desees especificar filas o celdas específicas. Si tu aplicación usa recursos conceptuales, como acciones o clases de datos permitidas, debes definir data_id con una convención que admita esos casos de uso.

Estos son algunos ejemplos de un data_id que describe datos almacenados en diferentes servicios y en varios niveles de detalle, entre otros:

Objeto de Google Cloud Storage

  'data_id' : 'gs://BUCKET_NAME/OBJECT_NAME'
  

Objeto de Amazon S3

  'data_id' : 'https://BUCKET_NAME.s3.REGION.amazonaws.com/OBJECT_NAME'
  

Tabla de BigQuery

  'data_id' : 'bigquery/v2/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID'
  

Fila de BigQuery (no hay una ruta de acceso de REST para una fila de BigQuery, por lo que se necesita tu propio identificador; a continuación, se encuentra un enfoque posible)

  'data_id' : 'bigquery/v2/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID/myRows/ROW_ID'
  

Celda de BigQuery (no hay una ruta de REST para una celda de BigQuery, por lo que se necesita tu propio identificador; a continuación, se proporciona un enfoque posible)

  'data_id' : 'bigquery/v2/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID/myRows/ROW_ID/myColumns/COLUMN_ID'
  

Recurso de FHIR

  'data_id' : 'https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/PATIENT_ID'
  

Representación conceptual

  'data_id' : 'wearables/fitness/step_count/daily_sum'