Overview
The Cloud Healthcare API uses Identity and Access Management (IAM) for access control.
In the Cloud Healthcare API, access control can be configured at the project, dataset, or data store level. For example, you can grant access to all datasets within a project to a group of developers. To learn how to set up and use IAM with the Cloud Healthcare API, see Controlling access and Controlling access to other products .
For a detailed description of IAM and its features, see the IAM documentation . In particular, see the section on managing IAM policies .
Every Cloud Healthcare API method requires the caller to have the necessary permissions. See Permissions and Roles for more information.
Permissions
The following tables list the IAM permissions that are associated with the
Cloud Healthcare API. Method names are shortened in the table;
each method's full name begins with projects.locations. 
.
Consent store methods
| Consent store method | Required permissions | 
|---|---|
| datasets.consentStores.checkDataAccess | healthcare.consentStores.checkDataAccesson the requested consent store. | 
| datasets.consentStores.create | healthcare.consentStores.createon the parent dataset. | 
| datasets.consentStores.delete | healthcare.consentStores.deleteon the requested consent store. | 
| datasets.consentStores.evaluateUserConsents | healthcare.consentStores.evaluateUserConsentson the requested consent store. | 
| datasets.consentStores.get | healthcare.consentStores.geton the requested consent store. | 
| datasets.consentStores.getIamPolicy | healthcare.consentStores.getIamPolicyon the requested consent store. | 
| datasets.consentStores.list | healthcare.consentStores.liston the parent dataset. | 
| datasets.consentStores.patch | healthcare.consentStores.updateon the requested consent store. | 
| datasets.consentStores.queryAccessibleData | healthcare.consentStores.queryAccessibleDataon the requested consent store. | 
| datasets.consentStores.setIamPolicy | healthcare.consentStores.setIamPolicyon the requested consent store. | 
| datasets.consentStores.attributeDefinitions.create | healthcare.attributeDefinitions.createon the parent consent store. | 
| datasets.consentStores.attributeDefinitions.delete | healthcare.attributeDefinitions.deleteon the requested attribute definition resource. | 
| datasets.consentStores.attributeDefinitions.get | healthcare.attributeDefinitions.geton the requested attribute definition resource. | 
| datasets.consentStores.attributeDefinitions.list | healthcare.attributeDefinitions.liston the parent consent store. | 
| datasets.consentStores.attributeDefinitions.patch | healthcare.attributeDefinitions.updateon the requested attribute definition resource. | 
| datasets.consentStores.consentArtifacts.create | healthcare.consentArtifacts.createon the parent consent store. | 
| datasets.consentStores.consentArtifacts.delete | healthcare.consentArtifacts.deleteon the requested consent artifact resource. | 
| datasets.consentStores.consentArtifacts.get | healthcare.consentArtifacts.geton the requested consent artifact resource. | 
| datasets.consentStores.consentArtifacts.list | healthcare.consentArtifacts.liston the parent consent store. | 
| datasets.consentStores.consents.create | healthcare.consents.createon the parent consent store. | 
| datasets.consentStores.consents.delete | healthcare.consents.deleteon the requested consent resource. | 
| datasets.consentStores.consents.get | healthcare.consents.geton the requested consent resource. | 
| datasets.consentStores.consents.list | healthcare.consents.liston the parent consent store. | 
| datasets.consentStores.consents.patch | healthcare.consents.updateon the requested consent resource. | 
| datasets.consentStores.consents.revoke | healthcare.consents.revokeon the requested consent resource. | 
| datasets.consentStores.userDataMappings.archive | healthcare.userDataMappings.archiveon the requested user data mapping resource. | 
| datasets.consentStores.userDataMappings.create | healthcare.userDataMappings.createon the parent consent store. | 
| datasets.consentStores.userDataMappings.delete | healthcare.userDataMappings.deleteon the requested user data mapping resource. | 
| datasets.consentStores.userDataMappings.get | healthcare.userDataMappings.geton the requested user data mapping resource. | 
| datasets.consentStores.userDataMappings.list | healthcare.userDataMappings.liston the parent consent store. | 
| datasets.consentStores.userDataMappings.patch | healthcare.userDataMappings.updateon the requested user data mapping resource. | 
Dataset methods
datasets.create 
healthcare.datasets.create 
on the parent Google Cloud project.datasets.deidentify 
-  healthcare.datasets.deidentifyon the source dataset.
-  healthcare.datasets.createon the Google Cloud project containing the destination dataset.
datasets.delete 
healthcare.datasets.delete 
on the requested dataset.datasets.get 
healthcare.datasets.get 
on the requested dataset.datasets.getIamPolicy 
healthcare.datasets.getIamPolicy 
on the requested dataset.datasets.list 
healthcare.datasets.list 
on the parent Google Cloud project.datasets.patch 
healthcare.datasets.update 
on the requested dataset.datasets.setIAMPolicy 
healthcare.datasets.setIamPolicy 
on the requested dataset.DICOM store methods
datasets.dicomStores.create 
healthcare.dicomStores.create 
on the parent dataset.datasets.dicomStores.deidentify 
-  healthcare.dicomStores.deidentifyon the source DICOM store.
-  healthcare.dicomStores.dicomWebWriteon the destination DICOM store.
datasets.dicomStores.delete 
healthcare.dicomStores.delete 
on the requested DICOM store.datasets.dicomStores.export 
-  healthcare.dicomStores.exporton the requested DICOM store.
- When exporting to Cloud Storage: roles/storage.objectAdmingranted to the project's Cloud Healthcare Service Agentservice account. See Exporting data to Cloud Storage for instructions.
- When exporting to BigQuery: roles/bigquery.dataEditorandroles/bigquery.jobUsergranted to the project's Cloud Healthcare Service Agentservice account. See DICOM store BigQuery permissions for instructions.
datasets.dicomStores.get 
healthcare.dicomStores.get 
on the requested DICOM store.datasets.dicomStores.getIamPolicy 
healthcare.dicomStores.getIamPolicy 
on the requested DICOM store.datasets.dicomStores.import 
-  healthcare.dicomStores.importon the requested DICOM store.
-  roles/storage.objectViewergranted to the project's Cloud Healthcare Service Agentservice account. See Importing data from Cloud Storage for instructions.
datasets.dicomStores.list 
healthcare.dicomStores.list 
on the parent dataset.datasets.dicomStores.patch 
healthcare.dicomStores.update 
on the requested DICOM store.datasets.dicomStores.searchForInstances 
healthcare.dicomStores.dicomWebRead 
on the requested DICOM store.datasets.dicomStores.searchForSeries 
healthcare.dicomStores.dicomWebRead 
on the requested DICOM store.datasets.dicomStores.searchForStudies 
healthcare.dicomStores.dicomWebRead 
on the requested DICOM store.datasets.dicomStores.setIamPolicy 
healthcare.dicomStores.setIamPolicy 
on the requested DICOM store.datasets.dicomStores.storeInstances 
healthcare.dicomStores.dicomWebWrite 
on the requested DICOM store.datasets.dicomStores.studies.delete 
healthcare.dicomStores.dicomWebDelete 
on the requested DICOM store.datasets.dicomStores.studies.retrieveMetadata 
healthcare.dicomStores.dicomWebRead 
on the requested DICOM store.datasets.dicomStores.studies.retrieveStudy 
healthcare.dicomStores.dicomWebRead 
on the requested DICOM store.datasets.dicomStores.studies.searchForInstances 
healthcare.dicomStores.dicomWebRead 
on the requested DICOM store.datasets.dicomStores.studies.searchForSeries 
healthcare.dicomStores.dicomWebRead 
on the requested DICOM store.datasets.dicomStores.studies.storeInstances 
healthcare.dicomStores.dicomWebWrite 
on the requested DICOM store.datasets.dicomStores.studies.updateInstances 
healthcare.dicomStores.dicomWebUpdate 
on the requested DICOM store.datasets.dicomStores.studies.updateMetadata 
healthcare.dicomStores.dicomWebUpdate 
on the requested DICOM store.datasets.dicomStores.studies.series.delete 
healthcare.dicomStores.dicomWebDelete 
on the requested DICOM store.datasets.dicomStores.studies.series.retrieveMetadata 
healthcare.dicomStores.dicomWebRead 
on the requested DICOM store.datasets.dicomStores.studies.series.retrieveSeries 
healthcare.dicomStores.dicomWebRead 
on the requested DICOM store.datasets.dicomStores.studies.series.searchForInstances 
healthcare.dicomStores.dicomWebRead 
on the requested DICOM store.datasets.dicomStores.studies.series.updateMetadata 
healthcare.dicomStores.dicomWebUpdate 
on the requested DICOM store.datasets.dicomStores.studies.series.instances.delete 
healthcare.dicomStores.dicomWebDelete 
on the requested DICOM store.datasets.dicomStores.studies.series.instances.retrieveInstance 
healthcare.dicomStores.dicomWebRead 
on the requested DICOM store.datasets.dicomStores.studies.series.instances.retrieveMetadata 
healthcare.dicomStores.dicomWebRead 
on the requested DICOM store.datasets.dicomStores.studies.series.instances.retrieveRendered 
healthcare.dicomStores.dicomWebRead 
on the requested DICOM store.datasets.dicomStores.studies.series.instances.updateMetadata 
healthcare.dicomStores.dicomWebUpdate 
on the requested DICOM store.datasets.dicomStores.studies.series.instances.frames.retrieveFrames 
healthcare.dicomStores.dicomWebRead 
on the requested DICOM store.datasets.dicomStores.studies.series.instances.frames.retrieveRendered 
healthcare.dicomStores.dicomWebRead 
on the requested DICOM store.datasets.dicomStores.studies.series.instances.bulkdata.retrieveBulkdata 
healthcare.dicomStores.dicomWebRead 
on the requested DICOM store.FHIR store methods
datasets.fhirStores.applyConsents 
healthcare.fhirStores.applyConsents 
on the requested FHIR store resource.datasets.fhirStores.applyAdminConsents 
healthcare.fhirStores.applyConsents 
on the requested FHIR store resource.datasets.fhirStores.configureSearch 
healthcare.fhirStores.configureSearch 
on the requested FHIR store.datasets.fhirStores.create 
healthcare.fhirStores.create 
on the parent dataset.datasets.fhirStores.deidentify 
-  healthcare.fhirStores.deidentifyon the source FHIR store.
-  healthcare.fhirResources.updateon the destination FHIR store.
datasets.fhirStores.delete 
healthcare.fhirStores.delete 
on the requested FHIR store.datasets.fhirStores.explainDataAccess 
healthcare.fhirStores.explainDataAccess 
on the requested FHIR store resource.datasets.fhirStores.export 
-  healthcare.fhirStores.exporton the requested FHIR store.
- When exporting to Cloud Storage: storage.objects.create,storage.objects.delete, andstorage.objects.listgranted to the project's Cloud Healthcare Service Agentservice account. See Exporting FHIR resources to Cloud Storage for instructions.
- When exporting to BigQuery: roles/bigquery.dataEditorandroles/bigquery.jobUsergranted to the project's Cloud Healthcare Service Agentservice account. See FHIR store BigQuery permissions for instructions.
datasets.fhirStores.get 
healthcare.fhirStores.get 
on the requested FHIR store.datasets.fhirStores.getFHIRStoreMetrics 
healthcare.fhirStores.get 
on the requested FHIR store.datasets.fhirStores.getIamPolicy 
healthcare.fhirStores.getIamPolicy 
on the requested FHIR store.datasets.fhirStores.import 
-  healthcare.fhirStores.importon the requested FHIR store.
-  storage.objects.getandstorage.objects.listgranted to the project's Cloud Healthcare Service Agentservice account. See Importing FHIR resources from Cloud Storage for instructions.
datasets.fhirStores.list 
healthcare.fhirStores.list 
on the parent dataset.datasets.fhirStores.patch 
healthcare.fhirStores.update 
on the requested FHIR store.datasets.fhirStores.rollback 
healthcare.fhirStores.rollback 
on the requested FHIR store.datasets.fhirStores.setIamPolicy 
healthcare.fhirStores.setIamPolicy 
on the requested FHIR store.datasets.fhirStores.fhir.Encounter-everything 
healthcare.fhirResources.get 
on each resource returned.datasets.fhirStores.fhir.Observation-lastn 
healthcare.fhirStores.searchResources 
on the parent FHIR store.datasets.fhirStores.fhir.Patient-everything 
healthcare.fhirResources.get 
on each resource returned.datasets.fhirStores.fhir.Resource-purge 
healthcare.fhirResources.purge 
on the requested FHIR store resource.datasets.fhirStores.fhir.capabilities 
healthcare.fhirStores.get 
on the requested FHIR store.datasets.fhirStores.fhir.conditionalDelete 
-  healthcare.fhirStores.searchResourceson the parent FHIR store.
-  healthcare.fhirResources.deleteon the requested FHIR store resource.
datasets.fhirStores.fhir.conditionalPatch 
-  healthcare.fhirStores.searchResourceson the parent FHIR store.
-  healthcare.fhirResources.patchon the requested FHIR store resource.
datasets.fhirStores.fhir.conditionalUpdate 
-  healthcare.fhirStores.searchResourceson the parent FHIR store.
-  healthcare.fhirResources.updateon the requested FHIR store resource.
datasets.fhirStores.fhir.create 
- For conditional create interactions: healthcare.fhirResources.createandhealthcare.fhirStores.searchResourceson the parent FHIR store.
- For create interactions: healthcare.fhirResources.createon the parent FHIR store.
datasets.fhirStores.fhir.delete 
healthcare.fhirResources.delete 
on the requested FHIR store resource.datasets.fhirStores.fhir.executeBundle 
healthcare.fhirResources.executeBundle 
on the requested FHIR store, and additional permissions (such as healthcare.fhirResources.create 
and healthcare.fhirResources.update 
) corresponding to individual operations within the bundle. If the API caller has healthcare.fhirResources.create 
permissions but not healthcare.fhirResources.update 
permissions, the caller can only execute bundles containing healthcare.fhirResources.create 
operations.datasets.fhirStores.fhir.history 
healthcare.fhirResources.get 
on the requested FHIR store resource and each of its versions.datasets.fhirStores.fhir.patch 
healthcare.fhirResources.patch 
on the requested FHIR store resource.datasets.fhirStores.fhir.read 
healthcare.fhirResources.get 
on the requested FHIR store resource.datasets.fhirStores.fhir.search 
healthcare.fhirStores.searchResources 
on the parent FHIR store.datasets.fhirStores.fhir.update 
healthcare.fhirResources.update 
on the requested FHIR store resource.datasets.fhirStores.fhir.vread 
healthcare.fhirResources.get 
on the requested FHIR store resource version.datasets.fhirStores.fhir.Patient-consent-enforcement-status 
healthcare.fhirResources.get 
on the requested FHIR store patient resource.datasets.fhirStores.fhir.Consent-enforcement-status 
healthcare.fhirResources.get 
on the requested FHIR store consent resource.HL7v2 store methods
| HL7v2 store method | Required permissions | 
|---|---|
| datasets.hl7V2Stores.create | healthcare.hl7V2Stores.createon the parent dataset. | 
| datasets.hl7V2Stores.delete | healthcare.hl7V2Stores.deleteon the requested HL7v2 store. | 
| datasets.hl7V2Stores.export | healthcare.hl7V2Stores.exporton the requested HL7v2 store. | 
| datasets.hl7V2Stores.get | healthcare.hl7V2Stores.geton the requested HL7v2 store. | 
| datasets.hl7V2Stores.import | healthcare.hl7V2Stores.importon the requested HL7v2 store. | 
| datasets.hl7V2Stores.list | healthcare.hl7V2Stores.liston the parent dataset. | 
| datasets.hl7V2Stores.patch | healthcare.hl7V2Stores.updateon the requested HL7v2 store. | 
| datasets.hl7V2Stores.getIamPolicy | healthcare.hl7V2Stores.getIamPolicyon the requested HL7v2 store. | 
| datasets.hl7V2Stores.setIamPolicy | healthcare.hl7V2Stores.setIamPolicyon the requested HL7v2 store. | 
| datasets.hl7V2Stores.messages.create | healthcare.hl7V2Messages.createon the parent HL7v2 store. | 
| datasets.hl7V2Stores.messages.delete | healthcare.hl7V2Messages.deleteon the requested HL7v2 store message. | 
| datasets.hl7V2Stores.messages.get | healthcare.hl7V2Messages.geton the requested HL7v2 store message. | 
| datasets.hl7V2Stores.messages.ingest | healthcare.hl7V2Messages.ingeston the requested HL7v2 store message. | 
| datasets.hl7V2Stores.messages.list | healthcare.hl7V2Messages.liston the parent HL7v2 store. | 
| datasets.hl7V2Stores.messages.patch | healthcare.hl7V2Messages.updateon the requested HL7v2 store message. | 
Location methods
| Location method | Required permissions | 
|---|---|
| locations.get | healthcare.locations.geton the requested location. | 
| locations.list | healthcare.locations.liston the parent Google Cloud project. | 
Healthcare Natural Language API methods
| Healthcare Natural Language API method | Required permissions | 
|---|---|
| nlp.analyzeEntities | healthcare.nlpservice.analyzeEntities | 
Operation methods
| Operation method | Required permission | 
|---|---|
| datasets.operations.get | healthcare.operations.geton the requested dataset. | 
| datasets.operations.list | healthcare.operations.liston the requested dataset. | 
| datasets.operations.cancel | healthcare.operations.cancelon the requested dataset. | 
De-identify methods
| De-identify method | Required permission | 
|---|---|
| services.deidentify.deidentifyDicomInstance | healthcare.deidentify.run | 
| services.deidentify.deidentifyFhirResource | healthcare.deidentify.run | 
Roles
The following tables list the Cloud Healthcare API IAM
roles, including the permissions associated with each role. The roles roles/owner 
, roles/editor 
, and roles/viewer 
include
permissions for other Google Cloud services. For more information
about roles, see Understanding roles 
.
Consent store roles
Healthcare Consent Store Viewer
( roles/  
)
List Consent Stores in a dataset.
Healthcare Consent Store Administrator
( roles/  
)
Administer Consent stores.
Consents roles
Healthcare Attribute Definition Reader
( roles/  
)
Read AttributeDefinition objects in a consent store.
Healthcare Attribute Definition Editor
( roles/  
)
Edit AttributeDefinition objects.
Healthcare Consent Artifact Reader
( roles/  
)
Read ConsentArtifact objects in a consent store.
Healthcare Consent Artifact Editor
( roles/  
)
Edit ConsentArtifact objects.
Healthcare Consent Artifact Administrator
( roles/  
)
Administer ConsentArtifact objects.
Healthcare Consent Reader
( roles/  
)
Read Consent objects in a consent store.
Healthcare Consent Editor
( roles/  
)
Edit Consent objects.
Healthcare User Data Mapping Reader
( roles/  
)
Read UserDataMapping objects in a consent store.
Healthcare User Data Mapping Editor
( roles/  
)
Edit UserDataMapping objects.
Datasets roles
Healthcare Dataset Viewer
( roles/  
)
List the Healthcare Datasets in a project.
Healthcare Dataset Administrator
( roles/  
)
Administer Healthcare Datasets.
DICOM store roles
Healthcare DICOM Store Viewer
( roles/  
)
List DICOM Stores in a dataset.
Healthcare DICOM Store Administrator
( roles/  
)
Administer DICOM stores.
Healthcare DICOM Viewer
( roles/  
)
Retrieve DICOM images from a DICOM store.
Healthcare DICOM Editor
( roles/  
)
Edit DICOM images individually and in bulk.
FHIR store roles
Healthcare FHIR Store Viewer
( roles/  
)
List FHIR Stores in a dataset.
Healthcare FHIR Store Administrator
( roles/  
)
Administer FHIR resource stores.
Healthcare FHIR Resource Reader
( roles/  
)
Read and search FHIR resources.
Healthcare FHIR Resource Editor
( roles/  
)
Create, delete, update, read and search FHIR resources.
HL7v2 store roles
Healthcare HL7v2 Store Viewer
( roles/  
)
View HL7v2 Stores in a dataset.
Healthcare HL7v2 Store Administrator
( roles/  
)
Administer HL7v2 Stores.
Healthcare HL7v2 Message Ingest
( roles/  
)
Ingest HL7v2 messages received from a source network.
Healthcare HL7v2 Message Consumer
( roles/  
)
List and read HL7v2 messages, update message labels, and publish new messages.
Healthcare HL7v2 Message Editor
( roles/  
)
Read, write, and delete access to HL7v2 messages.
Healthcare Natural Language API roles
Healthcare NLP Service Viewer Beta
( roles/  
)
Extract and analyze medical entities from a given text.
Cloud Healthcare Service Agent
The Cloud Healthcare Service Agentis a shared service account in your project that Cloud Healthcare API uses to interact with other resources in Google Cloud.
For example, this service agent is used to read and write to Cloud Storage buckets, write to BigQuery, and to publish messages to Pub/Sub from the Cloud Healthcare API.
To execute any of the preceding actions, you must give the Cloud Healthcare Service Agentaccess to the relevant Cloud Storage bucket, BigQuery dataset, or Pub/Sub topic.
As you create a permission model for your project, remember that granting any of the roles listed below allows the user to invoke operations that run as the Cloud Healthcare Service Agentand have access to any data that the agent has access to:
-  roles/healthcare.consentStoreAdmin
-  roles/healthcare.consentStoreViewer
-  roles/healthcare.dicomStoreEditor
-  roles/healthcare.dicomStoreViewer
-  roles/healthcare.fhirStoreAdmin
-  roles/healthcare.hl7V2StoreAdmin
Similarly, assigning the following permissions to custom roles would also allow the user to invoke operations that will run as the Cloud Healthcare Service Agent:
-  healthcare.consentStores.queryAccessibleData
-  healthcare.dicomStores.create
-  healthcare.dicomStores.update
-  healthcare.dicomStores.import
-  healthcare.dicomStores.export
-  healthcare.fhirStores.create
-  healthcare.fhirStores.update
-  healthcare.fhirStores.import
-  healthcare.fhirStores.export
-  healthcare.hl7V2Stores.create
-  healthcare.hl7V2Stores.update
For example:
- If a user has any import permissions, then the user can run operations that act as the Cloud Healthcare Service Agentif those operations access any Cloud Storage buckets that the Cloud Healthcare Service Agenthas read access to.
- If a user has any export permissions, then the user can run operations that act as the Cloud Healthcare Service Agentif those operations access any bucket that the service agent has write access to.
- A user who has create or update data store permissions has the ability to configure Pub/Sub notification targets or BigQuery streaming destinations that are sent by the Cloud Healthcare Service Agentwhen changes are made to the data store.
As a best practice, leverage multiple projects to further isolate the permissions given to the Cloud Healthcare Service Agent.

