Questa pagina descrive come creare, aggiornare e revocare i consensi degli utenti.
La tua applicazione registra separatamente gli artefatti e i consensi.
L'API Consent Management archivia i dati sensibili relativi al consenso di un utente come
ConsentArtifact
.
Un ConsentArtifact
può includere timestamp della firma e immagini di
firme o altri documenti che fungono da "prova" del consenso.
L'API Consent Management archivia i dati sul consenso non sensibili come oggetti
Consent
. Un Consent
include un ID utente opaco, le norme per il consenso concesse dall'utente e lo stato delle norme per il consenso.
Poiché i consensi e gli artefatti di consenso hanno percorsi delle risorse distinti, le relative autorizzazioni possono essere impostate in modo indipendente per ridurre al minimo l'accesso ai dati sensibili del consenso negli artefatti di consenso.
I consensi supportano una durata di scadenza che ti consente di configurare quando un consenso scade e non è più valido. La durata della scadenza può essere impostata su una data specifica o un periodo di tempo, ad esempio un anno.
Durante la creazione dell'archivio di consensi, puoi configurare una durata di scadenza predefinita per l'archivio di consensi. Durante la creazione del consenso, puoi configurare una durata di scadenza per il consenso. La durata della scadenza impostata durante la creazione del consenso override la durata predefinita impostata per l'archivio di consensi.
I consensi possono essere creati negli stati ACTIVE
o DRAFT
. I consensi nello stato
ACTIVE
vengono utilizzati dall'API Consent Management per determinare l'accesso. I consensi nello stato DRAFT
vengono utilizzati nelle determinazioni
dell'accesso solo se specificati in una richiesta di determinazione dell'accesso. Puoi modificare
lo stato da DRAFT
a ACTIVE
o REJECTED
aggiornando il consenso.
Per registrare il consenso di un utente, crea un artefatto del consenso utilizzando il metodo
projects.locations.datasets.consentStores.consentArtifacts.create
e poi collega l'artefatto del consenso a un consenso creato utilizzando il metodo
projects.locations.datasets.consentStores.consents.create
.
Gli esempi in questa pagina presuppongono che tu abbia creato un archivio di consensi e configurato le norme relative al consenso.
Creazione di un artefatto del consenso
Un artefatto di consenso memorizza i dati sensibili relativi al consenso di un utente. Un artefatto di consenso può includere i dati di contatto, i timestamp della firma e le immagini di firme o altri documenti che fungono da "prova" del consenso.
Per creare un artefatto di consenso, utilizza il
metodo
projects.locations.datasets.consentStores.consentArtifacts.create
. Invia una richiesta POST
e specifica le seguenti informazioni:
- Il nome dello store per il consenso dei genitori.
- Un ID utente univoco e opaco che rappresenta l'utente che ha fornito il consenso.
- La firma dell'utente, che include facoltativamente l'immagine della firma, il timestamp e altri metadati. Questa immagine può essere specificata come posizione dell'immagine in Cloud Storage o come stringa di byte non elaborati.
- Una firma facoltativa del tutore o del testimone.
- Immagini o documenti facoltativi che fungono da "prova" del consenso, ad esempio un'immagine della firma, immagini che acquisiscono le schermate di un flusso di consenso mobile o un documento PDF firmato. Queste immagini possono essere specificate come posizione in Cloud Storage o come stringa di byte non elaborati.
- Un identificatore per le informazioni sul consenso mostrate all'utente.
- Metadati facoltativi relativi al consenso dell'utente.
- Un token di accesso.
curl
Il seguente esempio mostra una richiesta 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', 'user_signature' : { 'user_id': 'USER_ID', 'image': { 'gcs_uri': 'gs://IMG_URI' }, 'signature_time': { 'seconds': EPOCH_SECONDS }, }, 'consent_content_screenshots': [ { 'raw_bytes': 'BASE_64_IMAGE' }], 'consent_content_version': 'v1', 'metadata': {'client': 'mobile'} }" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts"
Se la richiesta riesce, il server restituisce una risposta simile a quella dell'esempio seguente in formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts/CONSENT_ARTIFACT_RESOURCE_ID", "userId": "USER_ID", "userSignature": { "userId": "USER_ID", "signatureTime": "SIGNATURE_TIME" }, "consentContentVersion": "v1", "metadata": { "client": "mobile" } }
PowerShell
Il seguente esempio 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', 'user_signature' : { 'user_id': 'USER_ID', 'image': { 'gcs_uri': 'gs://IMG_URI' }, 'signature_time': { 'seconds': EPOCH_SECONDS } }, 'consent_content_screenshots': [ { 'raw_bytes': 'BASE_64_IMAGE' }], 'consent_content_version': 'v1', 'metadata': {'client': 'mobile'} }" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts" | Select-Object -Expand Content
Se la richiesta riesce, il server restituisce la seguente risposta in formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts/CONSENT_ARTIFACT_RESOURCE_ID", "userId": "USER_ID", "userSignature": { "userId": "USER_ID", "signatureTime": "SIGNATURE_TIME" }, "consentContentVersion": "v1", "metadata": { "client": "mobile" } }
Creazione di un consenso
Un consenso memorizza dati non sensibili, inclusi ID utente opachi, le norme sul consenso concesse dagli utenti e se le norme sul consenso sono attualmente valide.
Per creare un consenso, utilizza il
metodo projects.locations.datasets.consentStores.consents.create
. Invia una richiesta POST
e specifica le seguenti informazioni:
- Il nome dello store per il consenso dei genitori.
- Un ID utente univoco e opaco che rappresenta l'utente che ha fornito il consenso.
- Fino a 10 norme sul consenso, ognuna con un insieme di valori di attributo
e una regola di autorizzazione espressa in
Common Expression Language
(CEL) che descrivono l'intento dell'utente con le definizioni di attributo create in precedenza.
RESOURCE
Si applicano le seguenti limitazioni al CEL:- Puoi definire un massimo di 10 operatori logici per norma.
- Puoi utilizzare solo gli operatori AND (&&), OR (||) e IN.
- Il percorso REST all'artefatto di consenso corrispondente (restituito al momento della creazione dell'artefatto di consenso).
- Uno stato del consenso facoltativo,
DRAFT
oACTIVE
. Se non specifichi lo stato, il consenso viene creato nello statoACTIVE
. - Una durata di scadenza facoltativa per il consenso, definita come data o
periodo di tempo. Questo valore deve essere fornito in secondi e deve avere il suffisso
lettera s. Ad esempio,
86000s
. Questo valore sostituisce la durata della scadenza configurata per l'archivio di consensi. Se non configuri una scadenza, la risorsa eredita la durata di scadenza predefinita dall'archivio di consensi. Se non viene specificata una durata di scadenza per la risorsa o per lo store, la risorsa di consenso non scade. - Un token di accesso.
curl
Il seguente esempio mostra una richiesta 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\", \"policies\": [{ \"resource_attributes\": [{ \"attribute_definition_id\": \"data_identifiable\", \"values\": [\"identifiable\"] }], \"authorization_rule\": { \"expression\": \"requester_identity == 'clinical-admin'\", } }, { \"resource_attributes\": [{ \"attribute_definition_id\": \"data_identifiable\", \"values\": [\"de-identified\"] }], \"authorization_rule\": { \"expression\": \"requester_identity in ['internal-researcher', 'external-researcher']\" } }], \"consent_artifact\": \"projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts/CONSENT_ARTIFACT_ID\", \"ttl\": \"EXPIRATION_DURATION\" }" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents"
Se la richiesta riesce, il server restituisce una risposta simile al seguente esempio:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID", "userId": "USER_ID", "policies": [ { "resourceAttributes": [ { "attributeDefinitionId": "data_identifiable", "values": [ "identifiable" ] } ], "authorizationRule": { "expression": "requester_identity == 'clinical-admin'" } }, { "resourceAttributes": [ { "attributeDefinitionId": "data_identifiable", "values": [ "de-identified" ] } ], "authorizationRule": { "expression": "requester_identity in ['internal-researcher', 'external-researcher']" } } ], "consentArtifact": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts/CONSENT_ARTIFACT_ID", "state": "CONSENT_STATE", "stateChangeTime": "STATE_CHANGE_TIME", "expireTime": "EXPIRE_TIME" }
PowerShell
Il seguente esempio 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', 'policies': [{ 'resource_attributes': [{ 'attribute_definition_id': 'data_identifiable', 'values': ['identifiable'] }], 'authorization_rule': { 'expression': 'requester_identity == \'clinical-admin\'', } },{ 'resource_attributes': [{ 'attribute_definition_id': 'data_identifiable', 'values': ['de-identified'] }], 'authorization_rule': { 'expression': 'requester_identity in [\'internal-researcher\', \'external-researcher\']' } }], 'consent_artifact': 'projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts/CONSENT_ARTIFACT_ID', 'ttl': 'EXPIRATION_DURATION' }" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents" | Select-Object -Expand Content
Se la richiesta riesce, il server restituisce una risposta simile al seguente esempio:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID", "userId": "USER_ID", "policies": [ { "resourceAttributes": [ { "attributeDefinitionId": "data_identifiable", "values": [ "identifiable" ] } ], "authorizationRule": { "expression": "requester_identity == 'clinical-admin'" } }, { "resourceAttributes": [ { "attributeDefinitionId": "data_identifiable", "values": [ "de-identified" ] } ], "authorizationRule": { "expression": "requester_identity in ['internal-researcher', 'external-researcher']" } } ], "consentArtifact": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts/CONSENT_ARTIFACT_ID", "state": "CONSENT_STATE", "stateChangeTime": "STATE_CHANGE_TIME", "expireTime": "EXPIRE_TIME" }
Ottenere un consenso
Gli esempi riportati di seguito mostrano come ottenere un consenso. Per ulteriori informazioni, vedi
projects.locations.datasets.consentStores.consents.get
.
Per ottenere un consenso, invia una richiesta a GET
e specifica le seguenti
informazioni nella richiesta:
- Il nome del set di dati padre
- Il nome dell'archivio del consenso
- Il nome del consenso
- Un token di accesso
curl
Il seguente esempio mostra una richiesta GET
mediante curl
:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID"
Se la richiesta riesce, il server restituisce la risposta in formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID", "userId": "USER_ID", "policies": [ { "resourceAttributes": [ { "attributeDefinitionId": "data_identifiable", "values": [ "identifiable" ] } ], "authorizationRule": { "expression": "requester_identity == 'clinical-admin'" } }, { "resourceAttributes": [ { "attributeDefinitionId": "data_identifiable", "values": [ "de-identified" ] } ], "authorizationRule": { "expression": "requester_identity in ['internal-researcher', 'external-researcher']" } } ], "consentArtifact": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts/CONSENT_ARTIFACT_ID", "state": "CONSENT_STATE", "stateChangeTime": "STATE_CHANGE_TIME", "revisionCreateTime": "REVISION_CREATE_TIME", "expireTime": "EXPIRE_TIME" }
PowerShell
Il seguente esempio mostra una richiesta GET
mediante Windows PowerShell:
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-RestMethod ` -Method Get ` -Headers $headers ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID" | ConvertTo-Json
Se la richiesta riesce, il server restituisce la risposta in formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID", "userId": "USER_ID", "policies": [ { "resourceAttributes": "", "authorizationRule": "@{expression=requester_identity == 'clinical-admin'}" }, { "resourceAttributes": "", "authorizationRule": "@{expression=requester_identity in ['internal-researcher', 'external-researcher']}" } ], "consentArtifact": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts/CONSENT_ARTIFACT_ID", "state": "CONSENT_STATE", "stateChangeTime": "STATE_CHANGE_TIME", "revisionCreateTime": "REVISION_CREATE_TIME", "expireTime": "EXPIRE_TIME" }
Elenco dei consensi in un archivio di consensi
Gli esempi riportati di seguito mostrano come elencare i consensi in un archivio dei consensi.
Per elencare i consensi in un archivio di consensi, utilizza il
metodo projects.locations.datasets.consentStores.consents.list
.
curl
Per elencare i consensi in un archivio di consensi, effettua una richiesta GET
e specifica le seguenti informazioni:
- Il nome dello store per il consenso dei genitori
- Un filtro di ricerca facoltativo per recuperare i consensi in base all'ID utente, allo stato, all'ora di creazione o all'artefatto di consenso
- Un token di accesso
L'esempio seguente mostra una richiesta GET
mediante curl
.
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents"
Se la richiesta riesce, il server restituisce la risposta in formato JSON:
{ "consents": [ { "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID", "userId": "USER_ID", "policies": [ { "resourceAttributes": [ { "attributeDefinitionId": "data_identifiable", "values": [ "identifiable" ] } ], "authorizationRule": { "expression": "requester_identity == 'clinical-admin'" } }, { "resourceAttributes": [ { "attributeDefinitionId": "data_identifiable", "values": [ "de-identified" ] } ], "authorizationRule": { "expression": "requester_identity in ['internal-researcher', 'external-researcher']" } } ], "consentArtifact": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts/CONSENT_ARTIFACT_ID", "state": "CONSENT_STATE", "stateChangeTime": "STATE_CHANGE_TIME", "revisionCreateTime": "REVISION_CREATE_TIME", "expireTime": "EXPIRE_TIME" }, { ... } ] }
PowerShell
Per elencare i consensi in un archivio di consensi, effettua una richiesta GET
e specifica le seguenti informazioni:
- Il nome del set di dati padre
- Un filtro di ricerca facoltativo per recuperare i consensi in base all'ID utente, allo stato, all'ora di creazione o all'artefatto di consenso
- Un token di accesso
Il seguente esempio mostra una richiesta GET
mediante Windows PowerShell.
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Get ` -Headers $headers ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents" | Select-Object -Expand Content
Se la richiesta riesce, il server restituisce la risposta in formato JSON:
{ "consents": [ { "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID", "userId": "USER_ID", "policies": [ { "resourceAttributes": [ { "attributeDefinitionId": "data_identifiable", "values": [ "identifiable" ] } ], "authorizationRule": { "expression": "requester_identity == 'clinical-admin'" } }, { "resourceAttributes": [ { "attributeDefinitionId": "data_identifiable", "values": [ "de-identified" ] } ], "authorizationRule": { "expression": "requester_identity in ['internal-researcher', 'external-researcher']" } } ], "consentArtifact": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts/CONSENT_ARTIFACT_ID", "state": "CONSENT_STATE", "stateChangeTime": "STATE_CHANGE_TIME", "revisionCreateTime": "REVISION_CREATE_TIME", "expireTime": "EXPIRE_TIME" }, { ... } ] }
Puoi anche elencare le revisioni di un consenso specifico utilizzando il metodo
projects.locations.datasets.consentStores.consents.listRevisions
.
Aggiornamento dei consensi
Potresti dover aggiornare lo stato dei consensi nel tempo. Puoi farlo
modificando lo stato del consenso. Ogni aggiornamento e modifica dello stato genera una nuova
revisione del consenso. Le revisioni precedenti sono accessibili aggiungendo
@{revision_id}
al nome della risorsa del consenso.
Aggiornamento dei consensi
Per aggiornare i campi userId
, policies
, consentArtifact
o revokeConsentArtifact
di un consenso attivo o in bozza, utilizza il metodo projects.locations.datasets.consentStores.consents.patch
. Viene eseguito il commit di una nuova revisione con le modifiche e viene impostato lo stato attuale.
Per aggiornare un consenso, invia una richiesta PATCH
e specifica le seguenti
informazioni nella richiesta:
- Il percorso REST del consenso da aggiornare
- I campi da aggiornare
- Una maschera di aggiornamento
- Un token di accesso
curl
Il seguente esempio mostra una richiesta PATCH
mediante curl
che aggiorna l'artefatto di consenso:
curl -X PATCH \ -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ -H "Content-Type: application/consent+json; charset=utf-8" \ --data "{ \"consentArtifact\": \"projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts/CONSENT_ARTIFACT_ID\" }" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID?updateMask=consentArtifact"
Se la richiesta riesce, il server restituisce una risposta simile a quella dell'esempio seguente in formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID", "userId": "USER_ID", "policies": [ { "resourceAttributes": [ { "attributeDefinitionId": "data_identifiable", "values": [ "identifiable" ] } ], "authorizationRule": { "expression": "requester_identity == 'clinical-admin'" } }, { "resourceAttributes": [ { "attributeDefinitionId": "data_identifiable", "values": [ "de-identified" ] } ], "authorizationRule": { "expression": "requester_identity in ['internal-researcher', 'external-researcher']" } } ], "consentArtifact": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts/CONSENT_ARTIFACT_ID", "state": "ACTIVE", "stateChangeTime": "STATE_CHANGE_TIME", "revisionCreateTime": "REVISION_CREATE_TIME", "expireTime": "EXPIRE_TIME" }
PowerShell
Il seguente esempio mostra una richiesta PATCH
mediante Windows PowerShell che aggiorna l'artefatto di consenso:
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Patch ` -Headers $headers ` -ContentType: "application/consent+json; charset=utf-8" ` -Body "{ 'consentArtifact': 'projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts/CONSENT_ARTIFACT_ID' }" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID?updateMask=consentArtifact" | Select-Object -Expand Content
Se la richiesta riesce, il server restituisce una risposta simile a quella dell'esempio seguente in formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID", "userId": "USER_ID", "policies": [ { "resourceAttributes": [ { "attributeDefinitionId": "data_identifiable", "values": [ "identifiable" ] } ], "authorizationRule": { "expression": "requester_identity == 'clinical-admin'" } }, { "resourceAttributes": [ { "attributeDefinitionId": "data_identifiable", "values": [ "de-identified" ] } ], "authorizationRule": { "expression": "requester_identity in ['internal-researcher', 'external-researcher']" } } ], "consentArtifact": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts/CONSENT_ARTIFACT_ID", "state": "ACTIVE", "stateChangeTime": "STATE_CHANGE_TIME", "revisionCreateTime": "REVISION_CREATE_TIME", "expireTime": "EXPIRE_TIME" }
Attivazione dei consensi
Per modificare lo stato di un consenso da DRAFT
a ACTIVE
dopo che l'utente ha accettato
il consenso, utilizza il metodo
projects.locations.datasets.consentStores.consents.activateConsent
. Viene eseguita una nuova revisione con stato ACTIVE
. Quando lo stato del
consenso è ACTIVE
, il consenso viene incluso nelle richieste di determinazione dell'accesso.
Per attivare un consenso, invia una richiesta POST
e specifica le seguenti informazioni nella richiesta:
- Il percorso REST del consenso da attivare
- Il percorso REST di un artefatto facoltativo per documentare il motivo per cui il consenso è stato attivato
- Un token di accesso
curl
Il seguente esempio mostra una richiesta 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 "{ 'consent_artifact': 'projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/userConsentArtifacts/CONSENT_ARTIFACT_RESOURCE_ID' \ }" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID:activate"
Se la richiesta riesce, il server restituisce una risposta simile a quella dell'esempio seguente in formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID", "userId": "USER_ID", "policies": [ { "resourceAttributes": [ { "attributeDefinitionId": "data_identifiable", "values": [ "identifiable" ] } ], "authorizationRule": { "expression": "requester_identity == 'clinical-admin'" } }, { "resourceAttributes": [ { "attributeDefinitionId": "data_identifiable", "values": [ "de-identified" ] } ], "authorizationRule": { "expression": "requester_identity in ['internal-researcher', 'external-researcher']" } } ], "consentArtifact": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts/CONSENT_ARTIFACT_ID", "state": "ACTIVE", "stateChangeTime": "STATE_CHANGE_TIME", "expireTime": "EXPIRE_TIME" }
PowerShell
Il seguente esempio 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 "{ 'consent_artifact': '/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/userConsentArtifacts/CONSENT_ARTIFACT_ID' }" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID:activate" | Select-Object -Expand Content
Se la richiesta riesce, il server restituisce una risposta simile a quella dell'esempio seguente in formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID", "userId": "USER_ID", "policies": [ { "resourceAttributes": [ { "attributeDefinitionId": "data_identifiable", "values": [ "identifiable" ] } ], "authorizationRule": { "expression": "requester_identity == 'clinical-admin'" } }, { "resourceAttributes": [ { "attributeDefinitionId": "data_identifiable", "values": [ "de-identified" ] } ], "authorizationRule": { "expression": "requester_identity in ['internal-researcher', 'external-researcher']" } } ], "consentArtifact": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts/CONSENT_ARTIFACT_ID", "state": "ACTIVE", "stateChangeTime": "STATE_CHANGE_TIME", "expireTime": "EXPIRE_TIME" }
Revoca e rifiuto dei consensi
Per modificare lo stato di un consenso da DRAFT
a REJECTED
, ad esempio se l'utente indica che il consenso non è accettabile, utilizza il metodo projects.locations.datasets.consentStores.consents.reject
. Quando lo stato di un consenso è REJECTED
, il consenso non è incluso nelle
richieste di determinazione dell'accesso.
Per modificare lo stato di un consenso da ACTIVE
a REVOKED
, ad esempio se un utente richiede di annullare un consenso precedentemente concesso, utilizza il metodo projects.locations.datasets.consentStores.consents.revoke
. Viene eseguita una nuova revisione con stato REVOKED
. I consensi con stato
REVOKED
non sono inclusi nelle richieste di determinazione dell'accesso. Puoi creare un
artefatto facoltativo associato al consenso per documentare il motivo per cui
il consenso è stato revocato. La revoca di un consenso non comporta l'eliminazione del consenso.
Per revocare un consenso, effettua una richiesta POST
e specifica le seguenti
informazioni nella richiesta:
- Il percorso REST del consenso da revocare
- Il percorso REST di un artefatto facoltativo per documentare il motivo della revoca del consenso
- Un token di accesso
curl
Il seguente esempio mostra una richiesta 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 "{}" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID:revoke"
Se la richiesta riesce, il server restituisce una risposta simile a quella dell'esempio seguente in formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID", "userId": "USER_ID", "policies": [ { "resourceAttributes": [ { "attributeDefinitionId": "data_identifiable", "values": [ "identifiable" ] } ], "authorizationRule": { "expression": "requester_identity == 'clinical-admin'" } }, { "resourceAttributes": [ { "attributeDefinitionId": "data_identifiable", "values": [ "de-identified" ] } ], "authorizationRule": { "expression": "requester_identity in ['internal-researcher', 'external-researcher']" } } ], "consentArtifact": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts/CONSENT_ARTIFACT_ID", "state": "REVOKED", "stateChangeTime": "STATE_CHANGE_TIME", "expireTime": "EXPIRE_TIME" }
PowerShell
Il seguente esempio 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 "{}" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID:revoke" | Select-Object -Expand Content
Se la richiesta riesce, il server restituisce una risposta simile a quella dell'esempio seguente in formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID", "userId": "USER_ID", "policies": [ { "resourceAttributes": [ { "attributeDefinitionId": "data_identifiable", "values": [ "identifiable" ] } ], "authorizationRule": { "expression": "requester_identity == 'clinical-admin'" } }, { "resourceAttributes": [ { "attributeDefinitionId": "data_identifiable", "values": [ "de-identified" ] } ], "authorizationRule": { "expression": "requester_identity in ['internal-researcher', 'external-researcher']" } } ], "consentArtifact": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consentArtifacts/CONSENT_ARTIFACT_ID", "state": "REVOKED", "stateChangeTime": "STATE_CHANGE_TIME", "expireTime": "EXPIRE_TIME" }