Como fazer a integração com um visualizador médico DICOM

Nesta página, explicamos conceitos e práticas recomendadas para integrar um visualizador de imagens médicas de terceiros à API Cloud Healthcare. A API Cloud Healthcare é integrada a vários visualizadores, incluindo o visualizador de imagens do Google Health e o visualizador Weasis.

Antes de começar

Se você não armazenou imagens DICOM para usar no visualizador, consulte Armazenar dados DICOM e Importar e exportar dados DICOM usando o Cloud Storage para começar.

Como autorizar e autenticar solicitações usando o OAuth 2.0

As APIs do Google Cloud são compatíveis com o protocolo OAuth 2.0 para autenticação e autorização.

Um visualizador médico precisa processar a autenticação e a autorização para acessar os dados DICOM armazenados na API Cloud Healthcare. Você pode conceder essas permissões de duas maneiras. Cada método tem seus próprios custos e benefícios:

Como usar o fluxo do OAuth 2.0 dos serviços de identidade do Google

  • Os usuários finais se autenticam por meio do visualizador médico na API Cloud Healthcare.
  • O visualizador médico acessa a API Cloud Healthcare em nome do usuário final.
  • As permissões são gerenciadas no nível do usuário, e as ações do usuário são registradas no Cloud Audit Logging com o identificador exclusivo do usuário.
  • Usar o fluxo de serviços de identidade do Google é mais complexo do que usar uma conta de serviço. Por exemplo, seu aplicativo precisa processar retornos de chamada para armazenar o token de autorização, o que pode adicionar complexidade desnecessária a um aplicativo simples.

Como usar uma conta de serviço

  • Você configura o visualizador médico para usar seu próprio método de autorização e controle de acesso para determinar se um usuário final pode visualizar um determinado recurso da API Cloud Healthcare. Usar uma conta de serviço é útil se você já tem um visualizador que executa as próprias verificações de gerenciamento de usuários e autenticação.
  • As ações realizadas no visualizador são registradas no Cloud Audit Logging, mas não é possível ver registros no nível de usuários finais individuais.
  • A autenticação usando uma conta de serviço é mais simples do que o fluxo dos Serviços de identidade do Google. Por exemplo, não é necessário solicitar que um usuário faça login e, portanto, não é necessário armazenar um token de acesso.

Como autorizar usando o fluxo OAuth 2.0 do Google Identity Services

Você pode autorizar um visualizador médico a acessar dados DICOM armazenados na API Cloud Healthcare em nome de um usuário usando o fluxo OAuth 2.0 do Google Identity Services. Dependendo do seu aplicativo, há fluxos disponíveis para os seguintes aplicativos:

A descrição a seguir para o fluxo de login pressupõe que o usuário que acessa o visualizador criou um armazenamento DICOM e armazenou instâncias DICOM no armazenamento:

  1. Um usuário abre seu aplicativo de visualização médica. O visualizador exibe uma janela de consentimento do Google que mostra o nome do seu aplicativo e os serviços da API do Google que ele está solicitando permissão para acessar com as credenciais de autorização do usuário. O usuário pode, então, consentir ou negar o acesso a seu aplicativo.
  2. O usuário é enviado para uma página dos Serviços de identidade do Google. Se o usuário conceder ao aplicativo o acesso solicitado, ele receberá permissão para acessar os dados do usuário.

Não armazene tokens de atualização no visualizador. Os tokens de acesso concedidos ao usuário pelo usuário devem ser de curta duração e trocados somente quando os tokens expirarem.

Os tokens de atualização também são desnecessários, pelos seguintes motivos:

  • O usuário está sempre presente ao usar o visualizador.
  • O uso de tokens de atualização exige trabalho extra para armazenar o token com segurança.

Como autorizar usando uma conta de serviço

É possível gerenciar a autenticação e a autorização no nível do visualizador médico, e não no nível de um usuário final, usando o OAuth 2.0 com uma conta de serviço.

Para instruções sobre como usar uma conta de serviço para autenticar um visualizador médico na API Cloud Healthcare, consulte Como autenticar na API.

Papéis exigidos

Para que o visualizador funcione corretamente, um usuário precisa ter os seguintes papéis:

  • roles/healthcare.dicomViewer: para visualizar recursos DICOM;
  • roles/healthcare.dicomEditor: para visualizar, editar e criar recursos DICOM.

No fluxo de login, espera-se que o usuário já tenha configurado esses papéis, e o visualizador não precise fazer mais nada. Ao usar uma conta de serviço, os papéis precisam ser definidos na conta de serviço. O visualizador deve retornar erros PERMISSION_DENIED apropriados aos usuários que não têm as permissões necessárias para acessar os armazenamentos DICOM.

Como acessar endpoints da DICOMweb

Depois que o usuário se autentica no visualizador, ele pode fazer solicitações aos endpoints do DICOMweb. Cada armazenamento DICOM expõe um único ponto de extremidade DICOMweb.

Quando o usuário está no visualizador, ele precisa especificar quais projetos e armazenamentos DICOM ele quer acessar. O processo mais simples é solicitar que o usuário forneça os códigos do projeto, do conjunto de dados e do armazenamento DICOM que ele quer acessar. No entanto, fornecer cada valor individual pode levar muito tempo.

Como alternativa, você pode fornecer uma combinação de entrada do usuário e preenchimento automático no visualizador. Por exemplo, você pode fazer com que o usuário insira um código do projeto e, em seguida, o visualizador preencha automaticamente uma lista dos conjuntos de dados e armazenamentos DICOM nesse projeto. Ou você pode fornecer um único campo de entrada que preenche automaticamente os projetos, conjuntos de dados e armazenamentos DICOM aos quais o usuário tem acesso. Os seguintes métodos de API podem ser úteis ao configurar qualquer uma dessas alternativas:

Você também pode preencher uma lista dos recursos de um usuário. No entanto, se um usuário tiver centenas ou milhares de armazenamentos ou conjuntos de dados DICOM, o preenchimento e a exibição da lista poderão ser inviáveis.

Como acessar recursos no visualizador usando o DICOMweb

A API Cloud Healthcare é compatível com o padrão DICOMweb. Para permitir que os usuários acessem os dados, o visualizador precisa implementar os métodos HTTP RESTful do DICOMweb em vez dos protocolos DIMSE legados.

Existem dois componentes principais para qualquer visualizador:

  • O provedor da lista de trabalho
  • O visualizador de imagens

Você pode usar o padrão DICOMweb com os dois componentes.

Como visualizar o provedor da lista de trabalho

Normalmente, a primeira coisa que um usuário vê ao abrir um visualizador é uma lista de todos os estudos disponíveis em cada loja DICOM. O visualizador pode recuperar esses estudos usando a Transação de pesquisa.

Consulte a Declaração de Conformidade DICOM da API Cloud Healthcare para ver detalhes sobre como a transação de pesquisa é implementada na API Cloud Healthcare.

Como visualizar instâncias

Depois que o usuário estiver no provedor da lista de trabalho, ele normalmente selecionará um estudo para visualização. Para renderizar o estudo, o visualizador precisa acessar os bytes de pixel brutos do estudo e os metadados DICOM. O visualizador pode recuperar essas informações usando o conjunto de métodos de Recuperar transação. Os métodos de transação de recuperação permitem recuperar um arquivo DICOM bruto inteiro ou os dados de pixel brutos do arquivo. Os métodos de transação de recuperação também são compatíveis com a transcodificação entre diferentes sintaxes de transferência.

Consulte a Declaração de Conformidade DICOM da API Cloud Healthcare para saber como os métodos de transação de pesquisa e recuperação são implementados na API Cloud Healthcare.

Maximizar a capacidade da rede

Às vezes, como ao renderizar uma verificação de TC, um visualizador pode precisar fazer o download de muitas instâncias de uma só vez para renderizar a imagem. Para melhores resultados, busque cada instância em paralelo usando um alto número de solicitações simultâneas (como 50 ou mais). O número exato depende do aplicativo e da largura de banda da rede.