与 DICOM Medical Viewer 集成

本页面介绍将第三方医疗图像查看器与 Cloud Healthcare API 集成的概念和最佳做法。Cloud Healthcare API 已与多个查看器集成,包括开放健康影像基金会 (OHIF) 查看器Weasis 查看器

须知事项

如果您尚未存储任何要在查看器中使用的 DICOM 图片,请参阅存储 DICOM 数据使用 Cloud Storage 导入和导出 DICOM 数据

使用 OAuth 2.0 对请求进行授权和身份验证

Google Cloud API 支持使用 OAuth 2.0 协议进行身份验证和授权。

医疗查看器需要处理身份验证和授权,以访问存储在 Cloud Healthcare API 中的 DICOM 数据。您可以通过两种方式授予这些权限。每种方法都有自己的成本和收益:

使用 Google Identity 服务 OAuth 2.0 流程

  • 最终用户通过医疗查看器向 Cloud Healthcare API 验证自己的身份。
  • 医疗查看器代表最终用户访问 Cloud Healthcare API。
  • 权限在用户级别进行管理,并且系统会使用用户的唯一标识符将用户的操作记录到 Cloud Audit Logs
  • 使用 Google Identity 服务流程比使用服务账号更复杂。例如,您的应用需要处理回调以存储授权令牌,这可能会给简单应用增加不必要的复杂性。

使用服务账号

  • 可以将医疗查看器配置为使用它自己的授权和访问控制方法来确定最终用户是否可以查看给定的 Cloud Healthcare API 资源。如果已拥有自行执行用户管理和身份验证检查的查看器,则使用服务账号会很有帮助。
  • 在查看器中执行的操作会记录到 Cloud Audit Logs 中,但您无法查看单个最终用户级别的日志。
  • 使用服务账号进行身份验证比使用 Google Identity 服务流程更简单。例如,无需提示用户登录,因此无需存储访问令牌。

使用 Google Identity 服务 OAuth 2.0 流程进行授权

您可以使用 Google Identity 服务 OAuth 2.0 流程,授权医疗查看器以用户的身份访问存储在 Cloud Healthcare API 中的 DICOM 数据。根据您的应用情况,有一些流程可用于以下应用:

以下登录流程说明假定访问查看器的用户已创建 DICOM 存储区在存储区中存储了 DICOM 实例

  1. 用户打开您的医疗查看器应用。查看器显示 Google 的同意窗口,其中显示应用的名称,以及请求权限来使用用户授权凭据进行访问的 Google API 服务。然后,用户可以同意或拒绝授予对应用的访问权限。
  2. 系统会将用户转到 Google Identity 服务页面。如果用户向您的应用授予请求的访问权限,则您的应用将获得访问用户数据的权限。

请勿在查看器中存储刷新令牌。用户授予查看器的访问令牌应该是短期的,并且仅在令牌过期时进行交换。

刷新令牌也不是必需的,原因如下:

  • 使用查看器时,用户始终处于在线状态。
  • 使用刷新令牌需要额外的工作才能安全地存储令牌。

使用服务账号进行授权

通过将 OAuth 2.0 与服务账号配合使用,您可以在医疗查看器级别(而非最终用户级别)管理身份验证和授权。

如需了解如何使用服务账号向 Cloud Healthcare API 对医疗查看器进行身份验证,请参阅向 API 进行身份验证

所需的角色

要使查看器正常运行,用户必须具有以下角色

  • roles/healthcare.dicomViewer:用于查看 DICOM 资源
  • roles/healthcare.dicomEditor:用于查看、修改和创建 DICOM 资源

在登录流程中,用户应已配置这些角色,查看器不需要执行任何其他操作。使用服务账号时,必须在服务账号中设置角色。对于没有所需权限来访问其 DICOM 存储区的用户,查看器应返回相应的 PERMISSION_DENIED 错误。

访问 DICOMweb 端点

当用户对查看器进行身份验证后,查看器可以向 DICOMweb 端点发出请求。每个 DICOM 存储区都会公开一个 DICOMweb 端点。

当用户在查看器中时,他们必须指定要访问的项目和 DICOM 存储区。最简单的过程是让用户提供要访问的项目、数据集和 DICOM 存储区的 ID。但是,提供各个单独的值可能需要很长时间。

或者,您可以在查看器中提供用户输入和自动填充的组合。例如,您可以让用户输入项目 ID,然后查看器会自动填充该项目中的数据集和 DICOM 存储区列表。或者,您可以提供单个输入字段,以自动填充用户有权访问的项目、数据集和 DICOM 存储区。在设置上述任一替代方案时,以下 API 方法可能会很有帮助:

您还可以考虑预先填充用户资源的列表。但是,如果用户有数百或数千个 DICOM 存储区或数据集,则预填充和显示列表可能不可行。

使用 DICOMweb 访问查看器中的资源

Cloud Healthcare API 支持 DICOMweb 标准。要允许用户访问其数据,查看器必须实现 DICOMweb RESTful HTTP 方法,而不是旧版 DIMSE 协议。

任何查看器都有两个主要组件:

  • 工作列表提供程序
  • 图片查看器

您可以将 DICOMweb 标准用于这两个组件。

查看工作列表提供程序

通常,用户打开查看器时首先看到的是每个 DICOM 存储区中所有可用研究的列表。查看器可以使用搜索事务检索这些研究。

请参阅 Cloud Healthcare API DICOM 一致性声明,详细了解如何在 Cloud Healthcare API 中实现“搜索事务”。

查看实例

用户进入工作列表提供程序后,通常会选择要查看的研究。要呈现研究,查看器必须访问研究的原始像素字节和 DICOM 元数据。查看器可以使用检索事务系列方法检索此信息。使用“检索事务”方法,可以检索整个原始 DICOM 文件或文件的原始像素数据。“检索事务”方法还支持在不同的传输语法之间进行转码。

如需详细了解如何在 Cloud Healthcare API 中实现搜索和检索事务方法,请参阅 Cloud Healthcare API DICOM 一致性声明

最大限度地提高网络吞吐量

有时,比如在呈现内容时,查看器可能需要一次下载多个实例来呈现图片。为获得最佳结果,请使用大量并发请求(例如 50 个或更多)并行提取每个实例。具体数字取决于您的应用和网络带宽。