Como registrar os dados dos usuários

Nesta página, descrevemos como registrar dados de usuário com a API Consent Management.

Os elementos de dados são registrados na API Consent Management e conectados a consentimentos usando mapeamentos de dados do usuário. Os dados do usuário nunca são armazenados na API Consent Management.

Os mapeamentos de dados do usuário, representados como recursos UserDataMappings, incluem os seguintes elementos:

  • Um ID de usuário que identifica o usuário. Esse código corresponde ao ID fornecido pelo aplicativo durante a inscrição dessa API ao registrar o consentimento.
  • Um ID de dados que identifica os dados do usuário armazenados em outro lugar, como no Google Cloud ou no local. O ID de dados pode ser um ID opaco, um URL ou qualquer outro identificador.
  • Atributos de recurso, que descrevem as características dos dados do usuário usando valores de atributo de recurso configurados para o armazenamento de consentimento usando definições de atributo. Por exemplo, os dados podem incluir attribute_definition_id data_identifiable com o valor de de-identified.

O diagrama a seguir mostra o fluxo de dados para criar mapeamentos de dados do usuário:

mapeamentos de dados do usuário

Como registrar mapeamentos de dados do usuário

Para criar um mapeamento de dados do usuário, use o método projects.locations.datasets.consentStores.userDataMappings.create. Faça uma solicitação POST e especifique as seguintes informações na solicitação:

  • O nome do repositório de consentimentos dos responsáveis
  • Um userID exclusivo e opaco que representa o usuário ao qual o elemento de dados está associado.
  • Um identificador do recurso de dados do usuário, como o caminho REST para um recurso exclusivo.
  • Um conjunto de atributos RESOURCE que descreve o elemento de dados
  • Um token de acesso

curl

O exemplo a seguir mostra uma solicitação POST usando 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"

Se a solicitação for bem-sucedida, o servidor retornará uma resposta semelhante à seguinte amostra no 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

O exemplo a seguir mostra uma solicitação POST usando o 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

Se a solicitação for bem-sucedida, o servidor retornará uma resposta semelhante à seguinte amostra no 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"
      ]
    }
  ]
}

Como configurar IDs de dados

O campo data_id do recurso de mapeamento de dados do usuário contém uma string especificada pelo cliente que descreve os dados a que o recurso de mapeamento de dados do usuário se refere. É permitida qualquer string, como um código opaco ou URI.

Os IDs de dados podem ser tão granulares quanto exigido pelo aplicativo. Se os dados que você está registrando puderem ser descritos no nível da tabela ou do bucket, defina data_id como o caminho REST para esse recurso. Se os dados que você está registrando exigirem mais granularidade, especifique linhas ou células específicas. Se seu aplicativo usar recursos conceituais, como ações permitidas ou classes de dados, defina data_id com uma convenção compatível com esses casos de uso.

Exemplos de um data_id que descreve dados armazenados em serviços diferentes e em vários níveis de granularidade incluem, entre outros:

Objeto do Google Cloud Storage

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

Objeto do Amazon S3

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

Tabela do BigQuery

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

Linha do BigQuery. Não há caminho REST para uma linha do BigQuery, portanto, seu próprio identificador é necessário. Veja uma abordagem possível abaixo

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

Célula do BigQuery. Não há caminho REST para uma célula do BigQuery, portanto, seu próprio identificador é necessário. Veja uma abordagem possível abaixo

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

Recurso FHIR

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

Representação conceitual

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