Registrazione dei dati utente

In questa pagina viene descritto come registrare i dati utente con l'API Consent Management.

Gli elementi dei dati vengono registrati con l'API Consent Management e collegati a usando le mappature dei dati utente. I dati utente non vengono mai archiviati nel l'API Consent Management.

Le mappature dei dati utente, rappresentate come UserDataMappings di Google Cloud, includono i seguenti elementi:

  • Un ID utente che identifica l'utente. Questo ID corrisponde all'ID l'applicazione ha fornito l'API Consent Management durante la registrazione del consenso.
  • Un ID dati che identifica i dati utente archiviati altrove, ad esempio su Google Cloud oppure on-premise. L'ID dati può essere un ID opaco, un URL o qualsiasi altro identificatore.
  • Attributi di risorsa, che descrivono le caratteristiche dei dati utente utilizzando valori degli attributi delle risorse configurati per l'archivio di consensi utilizzando l'attributo le tue definizioni. Ad esempio, i dati potrebbero includere attribute_definition_id data_identifiable con il valore de-identified.

Il seguente diagramma mostra il flusso di dati per la creazione delle mappature dei dati utente:

mappature dei dati utente

Registrazione delle mappature dei dati utente

Per creare una mappatura dei dati utente, utilizza il metodo projects.locations.datasets.consentStores.userDataMappings.create. Fai una richiesta POST e specifica le seguenti informazioni:

  • Il nome dello Store per il consenso principale
  • Un valore userID univoco e opaco che rappresenta l'utente con cui vengono visualizzati i dati è associato
  • Un identificatore per la risorsa di dati utente, ad esempio il percorso REST di un risorsa unica
  • Un insieme di attributi RESOURCE che descrivono l'elemento dei dati
  • Un token di accesso

curl

L'esempio seguente mostra una richiesta POST utilizzando 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 la richiesta riesce, il server restituisce una risposta simile alla seguente esempio in 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

L'esempio seguente mostra una richiesta 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

Se la richiesta riesce, il server restituisce una risposta simile alla seguente esempio in 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"
      ]
    }
  ]
}

Configurazione degli ID dati

Il campo data_id della risorsa di mappatura dei dati utente contiene un stringa specificata dal cliente che descrive i dati che la risorsa di mappatura dei dati utente a cui fa riferimento. È consentita qualsiasi stringa, ad esempio un ID o URI opaco.

Gli ID dati possono essere granulari quanto richiesto dalla tua applicazione. Se i dati che stai registrando possono essere descritti qui a livello di tabella o bucket, definisci data_id come percorso REST per la risorsa. Se i dati che stai registrando richiedono una maggiore granularità, potrebbe essere opportuno specificare righe o celle specifiche. Se la tua applicazione utilizza risorse concettuali, come azioni o classi di dati consentite, dovresti definire data_id con una convenzione che supporta questi casi d'uso.

Esempi di data_id che descrive i dati archiviati in diversi servizi e su i vari livelli di granularità includono, a titolo esemplificativo:

Oggetto Google Cloud Storage

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

Oggetto Amazon S3

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

Tabella BigQuery

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

Riga BigQuery (non esiste un percorso REST per una riga BigQuery, quindi è necessario un identificatore personale; di seguito è riportato un possibile approccio)

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

Cella BigQuery (non esiste un percorso REST per una cella BigQuery, quindi è necessario un identificatore personale; uno dei possibili approcci è quello riportato di seguito)

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

Risorsa FHIR

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

Rappresentazione concettuale

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