你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Azure 上构建远程医疗系统

Database for PostgreSQL
函数
Kubernetes 服务
存储
流量管理器

本文介绍如何使用 Azure 云服务构建远程医疗系统

体系结构

远程医疗系统中包含的 Azure 组件的体系结构概览。

下载此体系结构的 Visio 文件

工作流

此解决方案建立在 4 个支柱之上,包括:

  • 客户端
  • 通信组件
  • API 和业务逻辑
  • 存储和基础结构服务

在体系结构图的左侧,客户端分为两组:医疗保健专业人员和患者。 医疗保健专业人员使用验配软件和 Web 门户客户端与患者通信。 另一方面,患者使用通过蓝牙连接链接到医疗设备的移动应用。 这种来回通信是通过后端服务实现的:

  • 面向公众的 API
  • 内部微服务,负责通过 Web RTC 进行视频呼叫,或者使用 Signal 进行客户端到客户端通信等工作流。 Signal 是用于 Microsoft ASP.NET 的软件库;通过它,服务器代码可将异步通知发送到客户端 Web 应用程序。

在几个 Azure 服务中(示意图右侧),例如 Azure Database for PostgreSQL,这些服务的状态保持一致。 媒体文件保存在 Azure 存储帐户中。 所有服务的所有日志都收集在使用 Azure Application Insights 的集中日志记录解决方案中。 最后,在 Azure 通知中心的帮助下,通过推送通知在客户端之间实现异步通信。

此解决方案按如下方式设置:

  • 受益于在后端运行的云服务的可伸缩性。

  • 增加构建解决方案的团队的自主性。 每个团队都会监督功能领域,并推动其组件的发展。 由于功能域不重叠,每个团队可按自己的节奏进行创新。 此外,由于服务的代码库是独立的,因此整个解决方案的 CI/CD 管道都更简单。

  • 构建跨微服务分配功能所需的服务间通信和协调机制。 本文档中所述的解决方案使用 Azure Cache for Redis 来完成此任务。

  • 实现集中监视,并增强解决方案故障排除的能力。

  • 利用托管标识保护服务之间的通信,简化了机密、凭据、证书和密钥的管理。

组件

  • Azure Database for PostgreSQL 存储用户(患者和医疗保健专业人员)和与设备相关的数据。 之所以选择此服务是因为它稳定、轻型,而且没有供应商锁定。
  • Azure Kubernetes 服务托管应用程序业务逻辑,还简化了部署和实现灵活自定义。 该服务还从底层使用的实际硬件中提取解决方案。
  • Azure Cache for Redis 托管用于内部服务数据(共享数据)的临时数据。 如果缓存中的数据过期,可从数据库重新创建服务
  • Azure 通知中心将传入的内容通知给患者:聊天、视频呼叫、设备配置设置。
  • Azure Functions 计划任务。 例如,与大量用户进行广泛沟通,在后端协调分析工作(聚合…)。
  • Azure Application Insights 将来自系统的信号/事件(日志,以及来自微服务、前端和设备中的日志的遥测数据)进行故障排除。
  • Azure 内容分发网络 (CDN) 用于 Web 门户的维护和更新(传递 java 脚本文件),以及通过门户传递媒体文件(视频、图像)。 所有这些内容都存储在后台的 Azure 存储帐户中。
  • Azure 流量管理器在地理位置之间实现负载均衡。
  • Azure SignalR 允许服务器代码将异步通知发送到客户端 Web 应用程序。 最终用户设备可在“标准”或“高级”模式下进行配置。

备选方法

在数据库端,可使用任何其他 PaaS 数据库服务。 托管应用程序逻辑时,可以考虑使用 Azure 应用服务或 Azure Service Fabric,而不是使用 Azure Kubernetes 服务。

方案详细信息

详细信息基于将专业医疗保健组织与其远程患者相连接的实际客户实现。 尽管还有其他方法来构建此类系统,但本文所述的解决方案已成功实现患者与其远程护理提供商之间的通信,同时还能远程调整患者佩戴的医疗设备。

有大约 7 亿人患有听力障碍。 但是,其中只有 10% 的人使用助听器来改善自己的生活。 在某些地理位置或情况下,患者无法在需要时获得直接帮助。 例如,请考虑以下患者:

  • 在特定听力情景下(例如在公园散步、参加派对或在家)需要帮助,而这种情景无法在听力护理专业人员的办公室里重现。
  • 行动不便,或者住所离其听力护理专业人员很远。
  • 居住在听力护理专业人员人数有限的新兴国家/地区。

为了克服这些困难,能够远程提供听力护理服务很重要。 在这种情况下,医疗保健专业人员通过聊天或视频通信与其远程患病互动。 在远程会话中,听力障碍人士使用智能手机可访问助听装置。 随着听力护理专业人员实时部署对助听装置配置的更改,患者的听力立即得到改善。

可能的用例

该解决方案非常适合医疗保健行业。 下面的其他用例采用类似的设计模式:

  • 可使用此类解决方案访问和远程优化任何启用了蓝牙的设备。
  • 在远程环境/背景中进行沟通(文本、语音、视频)或知识交流(教育、满意度调查)。
  • 全球分布式 Web 内容管理。
  • 物联网 (IoT)

模式

标准模式

在标准模式下,验配软件将准备一个通知,该通知包含设备的一些配置 JSON 文件或内容。 然后,该通知会传递到 Azure 通知中心,后者将通知推送到用户的手机。

高级模式

在高级模式下,听力辅助专业人员使用验配软件将详细配置推送到设备。 这需要在后端和设备之间实现稳定可靠的连接,SignalR 通过使用 WebSocket 实现这一点。 最终用户的手机位于此信道的接收端。 在手机中,蓝牙连接将建立与设备的最终通信链路。

注意事项

这些注意事项实施 Azure 架构良好的框架的支柱原则,即一套可用于改善工作负载质量的指导原则。 有关详细信息,请参阅 Microsoft Azure 架构良好的框架

建议在不同群集的前面使用一个流量管理器,来优化区域之间的延迟,并在群集不可用时用作后备机制。 对于数据库,我们建议对需要加载和聚合大量数据的查询使用只读副本。 我们建议使用内容分发网络 (CDN) 来全局分发静态 Web 文件(.html、.js、图像等),以通过缓存提高速度。

部署

在部署此场景时,要考虑的最重要方面是跨基于云的后端和前端(电话/设备)协调部署。 请考虑使用功能标志的概念来实现这一点。

管理

为了更好地契合使用特定微服务处理每个功能域这一想法,长期来说,可以将数据库拆分到几个更小的数据库中。 这样做将使与每个微服务相关的流在原则上隔离和自治,而不是将与所有服务相关的数据都集中到一个数据库中。 要实现这一目标,需要自动化预配和管理这些数据库,这是云中的 PaaS 数据库服务的核心功能之一。 应该将该数据库管理层集成到解决方案中,并要集成到统一的监视解决方案中。

监视

监视每一层很重要,每个监视方面都应联合到云中的单个 Bucket 中。 为了确保跨组件和层级的整体见解,使所有这些日志和遥测数据点相互关联非常重要。

目前,监视层包括:

  • Windows 应用程序(听力护理专业人员桌面上的验配软件)
  • 托管应用程序逻辑
  • 云服务

调整大小和缩放

请确保优化 Azure Kubernetes 群集的配置,使其符合随一天中的时间或区域模式波动的缩放需求。 请考虑使用 Azure Database for PostgreSQL 中的只读副本对读取工作负载(例如聚合查询)进行分流。

使用 PostgreSQL 的 TimescaleDB 扩展可更有效地处理来自医疗设备的与时间相关的数据。 请考虑使用 Azure Database for PostgreSQL – 超大规模 (Citus) 等横向扩展解决方案,通过预配多个数据库节点来触及全球用户。

安全性与符合性

安全性针对蓄意攻击及滥用宝贵数据和系统提供保障措施。 有关详细信息,请参阅安全性支柱概述

此解决方案可处理 PHI 和个人数据。 因此,必须使用经认证适合医疗应用程序的服务(HIPAA 认证,不仅用于数据库中保留的数据,还可用于日志和遥测数据)。 有关详细信息,请查看 Microsoft 信任中心的 HIPAA 部分

应在支持此类无密码身份验证的所有 Azure 服务上使用托管标识,以简化密码管理:AKS、PostgreSQL、Redis 缓存、通知中心、Azure 密钥保管库和 Azure Functions。 查看所有支持 Azure 资源托管标识的服务

成本优化

成本优化是关于寻找减少不必要的费用和提高运营效率的方法。 有关详细信息,请参阅成本优化支柱概述

对于单个区域中的部署,可在定价计算器中找到定价信息示例

作者

本文由 Microsoft 维护, 最初由以下贡献者撰写。

主要作者:

后续步骤

若要开始为你的业务实施富有竞争力的体系结构,请考虑构建有关 Web 服务、数据库(例如 Azure Database for PostgreSQL)和移动应用程序开发技术和技巧(例如 Xamarin.NET Core)方面的技能。

产品文档:

实时通信:

若要详细了解 WebRTC 如何向移动应用程序提供实时通信功能,可访问 WebRTC 项目网站

TURN 服务器:

使用客户端库(例如 Icelink)来管理 Turn 服务器*和两个客户端(验配软件和手机上的应用程序)之间的连接类型(tcp、udp、p2p);其中,该库由手机上的应用程序和听力辅助专业人员桌面的验配软件进行加载。 客户端库的用途:

  • 创建流媒体信道
  • 建立连接
  • 管理连接以防出现错误、缺少数据包的情况,并自动调整流媒体来适应带宽的变化
  • 通话期间对通话(音频和/或视频)进行编码/解码

*Turn 服务器是负责在 VoIP 相关协议中中继媒体的网络实体。 在此解决方案中,它们由 https://xirsys.com/ 托管在全球几个数据中心。 在同一会话下的两个客户端之间建立直接连接。