Visão geral
A API Cloud Healthcare usa o gerenciamento de identidade e acesso (IAM, na sigla em inglês) para o controle de acesso.
Na API Cloud Healthcare, o controle de acesso pode ser configurado no nível do projeto, do conjunto de dados ou do armazenamento de dados. Por exemplo, você pode conceder acesso a todos os conjuntos de dados em um projeto para um grupo de desenvolvedores. Para saber como configurar e usar o IAM com a API Cloud Healthcare, consulte Como controlar o acesso e Como controlar o acesso a outros produtos.
Para uma descrição detalhada do IAM e dos recursos dele, consulte a documentação do IAM. Especificamente, consulte a seção sobre como gerenciar as políticas do IAM.
Cada método da API Cloud Healthcare requer que o autor da chamada tenha as permissões necessárias. Para mais informações, consulte Permissões e Papéis.
Permissões
As tabelas a seguir listam as permissões do IAM associadas à
API Cloud Healthcare. Os nomes dos métodos estão abreviados na tabela. O nome completo de cada método começa com projects.locations.
.
Métodos de armazenamento de anotações
Método de armazenamento de anotações | Permissões exigidas |
---|---|
datasets.annotationStores.create |
healthcare.annotationStores.create no conjunto de dados pai. |
datasets.annotationStores.delete |
healthcare.annotationStores.delete no armazenamento de anotações solicitado. |
datasets.annotationStores.get |
healthcare.annotationStores.get no armazenamento de anotações solicitado. |
datasets.annotationStores.list |
healthcare.annotationStores.list no conjunto de dados pai. |
datasets.annotationStores.patch |
healthcare.annotationStores.update no armazenamento de anotações solicitado. |
datasets.annotationStores.annotations.create |
healthcare.annotations.create no armazenamento de anotações pai. |
datasets.annotationStores.annotations.delete |
healthcare.annotations.delete no registro de anotação solicitado. |
datasets.annotationStores.annotations.get |
healthcare.annotations.get no registro de anotação solicitado. |
datasets.annotationStores.annotations.list |
healthcare.annotations.list no armazenamento de anotações pai. |
datasets.annotationStores.annotations.patch |
healthcare.annotations.update no registro de anotação solicitado. |
Métodos de armazenamento de consentimentos
Método de armazenamento de consentimento | Permissões necessárias |
---|---|
datasets.consentStores.checkDataAccess |
healthcare.consentStores.checkDataAccess no repositório de consentimento solicitado. |
datasets.consentStores.create |
healthcare.consentStores.create no conjunto de dados pai. |
datasets.consentStores.delete |
healthcare.consentStores.delete no repositório de consentimento solicitado. |
datasets.consentStores.evaluateUserConsents |
healthcare.consentStores.evaluateUserConsents no repositório de consentimento solicitado. |
datasets.consentStores.get |
healthcare.consentStores.get no repositório de consentimento solicitado. |
datasets.consentStores.getIamPolicy |
healthcare.consentStores.getIamPolicy no repositório de consentimento solicitado. |
datasets.consentStores.list |
healthcare.consentStores.list no conjunto de dados pai. |
datasets.consentStores.patch |
healthcare.consentStores.update no repositório de consentimento solicitado. |
datasets.consentStores.queryAccessibleData |
healthcare.consentStores.queryAccessibleData no repositório de consentimento solicitado. |
datasets.consentStores.setIamPolicy |
healthcare.consentStores.setIamPolicy no repositório de consentimento solicitado. |
datasets.consentStores.attributeDefinitions.create |
healthcare.attributeDefinitions.create no repositório de consentimento dos responsáveis. |
datasets.consentStores.attributeDefinitions.delete |
healthcare.attributeDefinitions.delete no recurso de definição de atributo solicitado. |
datasets.consentStores.attributeDefinitions.get |
healthcare.attributeDefinitions.get no recurso de definição de atributo solicitado. |
datasets.consentStores.attributeDefinitions.list |
healthcare.attributeDefinitions.list no repositório de consentimento dos responsáveis. |
datasets.consentStores.attributeDefinitions.patch |
healthcare.attributeDefinitions.update no recurso de definição de atributo solicitado. |
datasets.consentStores.consentArtifacts.create |
healthcare.consentArtifacts.create no repositório de consentimento dos responsáveis. |
datasets.consentStores.consentArtifacts.delete |
healthcare.consentArtifacts.delete no recurso de artefato de consentimento solicitado. |
datasets.consentStores.consentArtifacts.get |
healthcare.consentArtifacts.get no recurso de artefato de consentimento solicitado. |
datasets.consentStores.consentArtifacts.list |
healthcare.consentArtifacts.list no repositório de consentimento dos responsáveis. |
datasets.consentStores.consents.create |
healthcare.consents.create no repositório de consentimento dos responsáveis. |
datasets.consentStores.consents.delete |
healthcare.consents.delete no recurso de consentimento solicitado. |
datasets.consentStores.consents.get |
healthcare.consents.get no recurso de consentimento solicitado. |
datasets.consentStores.consents.list |
healthcare.consents.list no repositório de consentimento dos responsáveis. |
datasets.consentStores.consents.patch |
healthcare.consents.update no recurso de consentimento solicitado. |
datasets.consentStores.consents.revoke |
healthcare.consents.revoke no recurso de consentimento solicitado. |
datasets.consentStores.userDataMappings.archive |
healthcare.userDataMappings.archive no recurso de mapeamento de dados do usuário solicitado. |
datasets.consentStores.userDataMappings.create |
healthcare.userDataMappings.create no repositório de consentimento dos responsáveis. |
datasets.consentStores.userDataMappings.delete |
healthcare.userDataMappings.delete no recurso de mapeamento de dados do usuário solicitado. |
datasets.consentStores.userDataMappings.get |
healthcare.userDataMappings.get no recurso de mapeamento de dados do usuário solicitado. |
datasets.consentStores.userDataMappings.list |
healthcare.userDataMappings.list no repositório de consentimento dos responsáveis. |
datasets.consentStores.userDataMappings.patch |
healthcare.userDataMappings.update no recurso de mapeamento de dados do usuário solicitado. |
Métodos de conjunto de dados
Método de conjuntos de dados | Permissões exigidas |
---|---|
datasets.create |
healthcare.datasets.create no projeto pai do Google Cloud. |
datasets.deidentify |
|
datasets.delete |
healthcare.datasets.delete no conjunto de dados solicitado. |
datasets.get |
healthcare.datasets.get no conjunto de dados solicitado. |
datasets.getIamPolicy |
healthcare.datasets.getIamPolicy no conjunto de dados solicitado. |
datasets.list |
healthcare.datasets.list no projeto pai do Google Cloud. |
datasets.patch |
healthcare.datasets.update no conjunto de dados solicitado. |
datasets.setIAMPolicy |
healthcare.datasets.setIamPolicy no conjunto de dados solicitado. |
Métodos de armazenamento DICOM
Método de armazenamento DICOM | Permissões exigidas |
---|---|
datasets.dicomStores.create |
healthcare.dicomStores.create no conjunto de dados pai. |
datasets.dicomStores.deidentify |
|
datasets.dicomStores.delete |
healthcare.dicomStores.delete no armazenamento DICOM solicitado. |
datasets.dicomStores.export |
|
datasets.dicomStores.get |
healthcare.dicomStores.get no armazenamento DICOM solicitado. |
datasets.dicomStores.getIamPolicy |
healthcare.dicomStores.getIamPolicy no armazenamento DICOM solicitado. |
datasets.dicomStores.import |
|
datasets.dicomStores.list |
healthcare.dicomStores.list no conjunto de dados pai. |
datasets.dicomStores.patch |
healthcare.dicomStores.update no armazenamento DICOM solicitado. |
datasets.dicomStores.searchForInstances |
healthcare.dicomStores.dicomWebRead no armazenamento DICOM solicitado. |
datasets.dicomStores.searchForSeries |
healthcare.dicomStores.dicomWebRead no armazenamento DICOM solicitado. |
datasets.dicomStores.searchForStudies |
healthcare.dicomStores.dicomWebRead no armazenamento DICOM solicitado. |
datasets.dicomStores.setIamPolicy |
healthcare.dicomStores.setIamPolicy no armazenamento DICOM solicitado. |
datasets.dicomStores.storeInstances |
healthcare.dicomStores.dicomWebWrite no armazenamento DICOM solicitado. |
datasets.dicomStores.studies.delete |
healthcare.dicomStores.dicomWebDelete no armazenamento DICOM solicitado. |
datasets.dicomStores.studies.retrieveMetadata |
healthcare.dicomStores.dicomWebRead no armazenamento DICOM solicitado. |
datasets.dicomStores.studies.retrieveStudy |
healthcare.dicomStores.dicomWebRead no armazenamento DICOM solicitado. |
datasets.dicomStores.studies.searchForInstances |
healthcare.dicomStores.dicomWebRead no armazenamento DICOM solicitado. |
datasets.dicomStores.studies.searchForSeries |
healthcare.dicomStores.dicomWebRead no armazenamento DICOM solicitado. |
datasets.dicomStores.studies.storeInstances |
healthcare.dicomStores.dicomWebWrite no armazenamento DICOM solicitado. |
datasets.dicomStores.studies.series.delete |
healthcare.dicomStores.dicomWebDelete no armazenamento DICOM solicitado. |
datasets.dicomStores.studies.series.retrieveMetadata |
healthcare.dicomStores.dicomWebRead no armazenamento DICOM solicitado. |
datasets.dicomStores.studies.series.retrieveSeries |
healthcare.dicomStores.dicomWebRead no armazenamento DICOM solicitado. |
datasets.dicomStores.studies.series.searchForInstances |
healthcare.dicomStores.dicomWebRead no armazenamento DICOM solicitado. |
datasets.dicomStores.studies.series.instances.delete |
healthcare.dicomStores.dicomWebDelete no armazenamento DICOM solicitado. |
datasets.dicomStores.studies.series.instances.retrieveInstance |
healthcare.dicomStores.dicomWebRead no armazenamento DICOM solicitado. |
datasets.dicomStores.studies.series.instances.retrieveMetadata |
healthcare.dicomStores.dicomWebRead no armazenamento DICOM solicitado. |
datasets.dicomStores.studies.series.instances.retrieveRendered |
healthcare.dicomStores.dicomWebRead no armazenamento DICOM solicitado. |
datasets.dicomStores.studies.series.instances.frames.retrieveFrames |
healthcare.dicomStores.dicomWebRead no armazenamento DICOM solicitado. |
datasets.dicomStores.studies.series.instances.frames.retrieveRendered |
healthcare.dicomStores.dicomWebRead no armazenamento DICOM solicitado. |
datasets.dicomStores.studies.series.instances.bulkdata.retrieveBulkdata |
healthcare.dicomStores.dicomWebRead no armazenamento DICOM solicitado. |
Métodos de armazenamento FHIR
Método de armazenamento FHIR | Permissões necessárias |
---|---|
datasets.fhirStores.applyConsents |
healthcare.fhirStores.applyConsents no recurso de armazenamento FHIR solicitado. |
datasets.fhirStores.applyAdminConsents |
healthcare.fhirStores.applyConsents no recurso de armazenamento FHIR solicitado. |
datasets.fhirStores.configureSearch |
healthcare.fhirStores.configureSearch no armazenamento FHIR solicitado. |
datasets.fhirStores.create |
healthcare.fhirStores.create no conjunto de dados pai. |
datasets.fhirStores.deidentify |
|
datasets.fhirStores.delete |
healthcare.fhirStores.delete no armazenamento FHIR solicitado. |
datasets.fhirStores.explainDataAccess |
healthcare.fhirStores.explainDataAccess no recurso de armazenamento FHIR solicitado. |
datasets.fhirStores.export |
|
datasets.fhirStores.get |
healthcare.fhirStores.get no armazenamento FHIR solicitado. |
datasets.fhirStores.getFHIRStoreMetrics |
healthcare.fhirStores.get no armazenamento FHIR solicitado. |
datasets.fhirStores.getIamPolicy |
healthcare.fhirStores.getIamPolicy no armazenamento FHIR solicitado. |
datasets.fhirStores.import |
|
datasets.fhirStores.list |
healthcare.fhirStores.list no conjunto de dados pai. |
datasets.fhirStores.patch |
healthcare.fhirStores.update no armazenamento FHIR solicitado. |
datasets.fhirStores.rollback |
healthcare.fhirStores.rollback no armazenamento FHIR solicitado. |
datasets.fhirStores.setIamPolicy |
healthcare.fhirStores.setIamPolicy no armazenamento FHIR solicitado. |
datasets.fhirStores.fhir.Encounter-everything |
healthcare.fhirResources.get em cada recurso retornado. |
datasets.fhirStores.fhir.Observation-lastn |
healthcare.fhirStores.searchResources no armazenamento FHIR pai. |
datasets.fhirStores.fhir.Patient-everything |
healthcare.fhirResources.get em cada recurso retornado. |
datasets.fhirStores.fhir.Resource-purge |
healthcare.fhirResources.purge no recurso de armazenamento FHIR solicitado. |
datasets.fhirStores.fhir.capabilities |
healthcare.fhirStores.get no armazenamento FHIR solicitado. |
datasets.fhirStores.fhir.conditionalDelete |
|
datasets.fhirStores.fhir.conditionalPatch |
|
datasets.fhirStores.fhir.conditionalUpdate |
|
datasets.fhirStores.fhir.create |
|
datasets.fhirStores.fhir.delete |
healthcare.fhirResources.delete no recurso de armazenamento FHIR solicitado. |
datasets.fhirStores.fhir.executeBundle |
healthcare.fhirResources.executeBundle no armazenamento FHIR solicitado e permissões adicionais (como healthcare.fhirResources.create e healthcare.fhirResources.update ) correspondentes a operações individuais no pacote. Se o chamador da API tiver permissões healthcare.fhirResources.create , mas não permissões healthcare.fhirResources.update , ele só poderá executar pacotes que contenham operações healthcare.fhirResources.create . |
datasets.fhirStores.fhir.history |
healthcare.fhirResources.get no recurso de armazenamento FHIR solicitado e em cada uma das versões dele. |
datasets.fhirStores.fhir.patch |
healthcare.fhirResources.patch no recurso de armazenamento FHIR solicitado. |
datasets.fhirStores.fhir.read |
healthcare.fhirResources.get no recurso de armazenamento FHIR solicitado. |
datasets.fhirStores.fhir.search |
healthcare.fhirStores.searchResources no armazenamento FHIR pai. |
datasets.fhirStores.fhir.update |
healthcare.fhirResources.update no recurso de armazenamento FHIR solicitado. |
datasets.fhirStores.fhir.vread |
healthcare.fhirResources.get na versão do recurso de armazenamento FHIR solicitado. |
datasets.fhirStores.fhir.Patient-consent-enforcement-status |
healthcare.fhirResources.get no recurso de paciente do armazenamento FHIR solicitado. |
datasets.fhirStores.fhir.Consent-enforcement-status |
healthcare.fhirResources.get no recurso de consentimento da loja FHIR solicitado. |
Métodos de armazenamento HL7v2
Método de armazenamento HL7v2 | Permissões exigidas |
---|---|
datasets.hl7V2Stores.create |
healthcare.hl7V2Stores.create no conjunto de dados pai. |
datasets.hl7V2Stores.delete |
healthcare.hl7V2Stores.delete no armazenamento HL7v2 solicitado. |
datasets.hl7V2Stores.export |
healthcare.hl7V2Stores.export no armazenamento HL7v2 solicitado. |
datasets.hl7V2Stores.get |
healthcare.hl7V2Stores.get no armazenamento HL7v2 solicitado. |
datasets.hl7V2Stores.import |
healthcare.hl7V2Stores.import no armazenamento HL7v2 solicitado. |
datasets.hl7V2Stores.list |
healthcare.hl7V2Stores.list no conjunto de dados pai. |
datasets.hl7V2Stores.patch |
healthcare.hl7V2Stores.update no armazenamento HL7v2 solicitado. |
datasets.hl7V2Stores.getIamPolicy |
healthcare.hl7V2Stores.getIamPolicy no armazenamento HL7v2 solicitado. |
datasets.hl7V2Stores.setIamPolicy |
healthcare.hl7V2Stores.setIamPolicy no armazenamento HL7v2 solicitado. |
datasets.hl7V2Stores.messages.create |
healthcare.hl7V2Messages.create no armazenamento HL7v2 pai. |
datasets.hl7V2Stores.messages.delete |
healthcare.hl7V2Messages.delete na mensagem do armazenamento HL7v2 solicitado. |
datasets.hl7V2Stores.messages.get |
healthcare.hl7V2Messages.get na mensagem do armazenamento HL7v2 solicitado. |
datasets.hl7V2Stores.messages.ingest |
healthcare.hl7V2Messages.ingest na mensagem do armazenamento HL7v2 solicitado. |
datasets.hl7V2Stores.messages.list |
healthcare.hl7V2Messages.list no armazenamento HL7v2 pai. |
datasets.hl7V2Stores.messages.patch |
healthcare.hl7V2Messages.update na mensagem do armazenamento HL7v2 solicitado. |
Métodos de localização
Método de localização | Permissões necessárias |
---|---|
locations.get |
healthcare.locations.get no local solicitado. |
locations.list |
healthcare.locations.list no projeto pai do Google Cloud. |
Métodos da API Healthcare Natural Language
Método da API Healthcare Natural Language | Permissões necessárias |
---|---|
nlp.analyzeEntities |
healthcare.nlpservice.analyzeEntities |
Métodos de operação
Método de operação | Permissão necessária |
---|---|
datasets.operations.get |
healthcare.operations.get no conjunto de dados solicitado. |
datasets.operations.list |
healthcare.operations.list no conjunto de dados solicitado. |
datasets.operations.cancel |
healthcare.operations.cancel no conjunto de dados solicitado. |
Métodos de desidentificação
Método de desidentificação | Permissão necessária |
---|---|
services.deidentify.deidentifyDicomInstance |
healthcare.deidentify.run |
services.deidentify.deidentifyFhirResource |
healthcare.deidentify.run |
Papéis
As tabelas a seguir listam os papéis do IAM da API Cloud Healthcare,
incluindo as permissões associadas a cada papel. Os papéis roles/owner
, roles/editor
e roles/viewer
incluem
permissões para outros serviços do Google Cloud. Para mais informações
sobre papéis, consulte Noções básicas sobre papéis.
Papéis de anotações
Papel "anotações" | Permissões |
---|---|
Administrador de anotações do Healthcare( Administra repositórios de anotações. |
|
Leitor de repositórios de anotações do Healthcare( Lista repositórios de anotações em um conjunto de dados. |
|
Leitor de anotações do Healthcare( Lê e lista anotações em um repositório de anotações. |
|
Editor de anotações do Healthcare( Cria, exclui, atualiza, lê e lista anotações. |
|
Papéis de armazenamento de consentimentos
Papel do armazenamento de consentimento | Permissões |
---|---|
Leitor de repositório de consentimentos do Healthcare( Lista os repositórios de consentimentos de um conjunto de dados |
|
Administrador de repositório de consentimentos do Healthcare( Administra os repositórios de consentimentos. |
|
Papéis de consentimentos
Papel de consentimentos | Permissões |
---|---|
Leitor de definição de atributo do Healthcare( Lê objetos AttributeDefinition em um repositório de consentimentos. |
|
Editor de definição de atributos do Healthcare( Edita objetos AttributeDefinition. |
|
Leitor de artefato de consentimento do Healthcare( Lê objetos ConsentArtifact em um repositório de consentimentos. |
|
Editor de artefato de consentimento do Healthcare( Edita objetos ConsentArtifact. |
|
Administrador do artefato de consentimento do Healthcare( Administra objetos ConsentArtifact. |
|
Leitor de consentimentos do Healthcare( Lê objetos de consentimento no respectivo repositório. |
|
Editor de consentimentos do Healthcare( Edita objetos de consentimento. |
|
Leitor de mapeamento de dados do usuário do Healthcare( Lê objetos UserDataMapping em um repositório de consentimentos. |
|
Editor do mapeamento de dados do usuário do Healthcare( Edita objetos UserDataMapping. |
|
Papéis de conjuntos de dados
Papel de conjuntos de dados | Permissões |
---|---|
Leitor do conjunto de dados da API Cloud Healthcare( Lista os conjuntos de dados do Healthcare em um projeto. |
|
Administrador de conjuntos de dados do Healthcare( Administra conjuntos de dados do Healthcare. |
|
Papéis de armazenamento DICOM
Papel de armazenamento DICOM | Permissões |
---|---|
Leitor de repositório DICOM da API Cloud Healthcare( Lista repositórios DICOM em um conjunto de dados. |
|
Administrador de repositórios DICOM do Healthcare( Administra repositórios DICOM. |
|
Leitor DICOM da API Cloud Healthcare( Recupera imagens DICOM de um repositório DICOM. |
|
Editor DICOM da API Cloud Healthcare( Edita imagens DICOM individualmente e em massa. |
|
Papéis de armazenamento FHIR
Papel de armazenamento FHIR | Permissões |
---|---|
Leitor de repositórios FHIR do Healthcare( Lista repositórios FHIR em um conjunto de dados. |
|
Administrador de repositórios FHIR do Healthcare( Administra repositórios de recursos FHIR. |
|
Leitor de recursos FHIR do Healthcare( Lê e pesquisa recursos FHIR. |
|
Editor de recursos FHIR do Healthcare( Cria, exclui, atualiza, lê e pesquisa recursos FHIR. |
|
Papéis de armazenamento HL7v2
Papel de armazenamento HL7v2 | Permissões |
---|---|
Leitor de repositórios HL7v2 do Healthcare( Ver os armazenamentos HL7v2 em um conjunto de dados. |
|
Administrador de repositórios HL7v2 do Healthcare( Administra repositórios HL7v2. |
|
Ingestão de mensagens HL7v2 do Healthcare( Ingere mensagens HL7v2 recebidas de uma rede de origem. |
|
Consumidor de mensagens HL7v2 do Healthcare( Lista e lê mensagens HL7v2, atualiza rótulos de mensagens e publica novas mensagens. |
|
Editor de mensagens HL7v2 do Healthcare( Lê, grava e exclui o acesso a mensagens HL7v2. |
|
Papéis da API Healthcare Natural Language
Papel da API Healthcare Natural Language | Permissões |
---|---|
Leitor de serviços de PLN do Healthcare Beta( Extrair e analisar entidades médicas de determinado texto. |
|
Agente de serviço do Cloud Healthcare
O Agente de serviço do Cloud Healthcare é uma conta de serviço compartilhada no projeto que a API Cloud Healthcare usa para interagir com outros recursos no Google Cloud.
Por exemplo, este agente de serviço é usado para ler e gravar nos buckets do Cloud Storage, gravar no BigQuery e publicar mensagens no Pub/Sub na API Cloud Healthcare.
Para executar qualquer uma das ações anteriores, é necessário ao Agente de serviço do Cloud Healthcare acesso ao bucket relevante do Cloud Storage, ao conjunto de dados do BigQuery ou ao tópico do Pub/Sub.
Ao criar um modelo de permissão para o projeto, lembre-se de que a concessão de qualquer um dos papéis listados abaixo permite que o usuário invoque operações executadas como o Agente de serviço do Cloud Healthcare e tenha acesso a dados aos quais o agente tem acesso:
roles/healthcare.consentStoreAdmin
roles/healthcare.consentStoreViewer
roles/healthcare.dicomStoreEditor
roles/healthcare.dicomStoreViewer
roles/healthcare.fhirStoreAdmin
roles/healthcare.hl7V2StoreAdmin
Da mesma forma, atribuir as seguintes permissões a papéis personalizados também permite que o usuário invoque operações que serão executadas como o Agente de serviço do Cloud Healthcare:
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
Exemplo:
- Se um usuário tiver permissões de importação, ele vai poder executar operações que atuam como o agente de serviço do Cloud Healthcare se essas operações acessarem buckets do Cloud Storage a que o agente de serviço do Cloud Healthcare tem acesso de leitura.
- Se um usuário tiver permissões de exportação, ele vai poder executar operações que atuam como o agente de serviço do Cloud Healthcare se essas operações acessarem buckets a que o agente de serviço tiver acesso de gravação.
- Um usuário que cria ou atualiza permissões de armazenamento de dados tem a capacidade de configurar destinos de notificação Pub/Sub ou destinos de streaming do BigQuery enviados pelo Agente de serviços do Cloud Healthcare quando são feitas alterações no armazenamento de dados.
Como prática recomendada, aproveite vários projetos para isolar ainda mais as permissões concedidas ao Agente de serviço do Cloud Healthcare.