跳到主要内容

3.3 技术角度


3.3.1 概述

下面小节描述了FHIR规范常见的应用模式,其中前两种模式属于在现有解决方案之上应用FHIR规范的常见方法,后两种模式属于FHIR规范作为下一代健康数据平台应用的建议方法。

3.3.2 边车模式

FHIR最常见的用途是将FHIR RESTful API添加到现有解决方案中,以边车模式为系统提供符合标准的服务。边车模式很像编程思想中的代理模式,对服务进行包装,拓展原来的服务。

边车模式应用独立部署,通过网络与原服务通信,边车模式的应用系统即使出现问题也不会影响原来系统的运行。边车模式很有价值,没有侵入性,可以方便快捷地进行低风险改造,使其增加业务,具有微服务的功能。

在现有解决方案之上提供可以互操作的 RESTful API,客户可以轻松理解和使用。边车模式可以说是我们看到的最常见的模式。大多数卫生信息化解决方案都是采用这种模式。

当然,还有一种更加直接,也更加野蛮的方式,就是边车模式应用直接访问原应用系统的数据库。这种简单粗暴的方式看似更简单,但是极力不推荐。严格来说,这不是边车模式,已经侵入了原应用系统。目前看来这种模式仅适用于读取操作,如果涉及到写入操作,有极大的可能性会造成业务逻辑冲突。

图形用户界面
低可信度描述已自动生成

3.3.3 代理适配

代理适配应用一般是以中间件来使用,在卫生信息行业的标准格式和专有格式之间进行数据格式转换,FHIR只是其中一种数据转换格式。

卫生信息化环境非常复杂。卫生健康数据存储在许多不同的系统当中。此外,数据通常使用多种传输方法以各种不同的格式在医院和其它卫生机构之间不停的传输。例如:

  • 不同产品提供商的双向数据交换
  • 医院信息平台与区域卫生信息平台数据交换
  • 医院与实验室之间的申请单和报告单数据集成
  • 将计免数据发送到疾控中心

市场上有一些卫生信息化供应商专门从事这项工作,这是一个对卫生行业信息化要求比较深的专业领域,需要优秀的技术、优秀的员工和出色的运营支持才能做好。

代理适配应用不会存储数据,即使他存储数据也只是临时的,他们不会永久存储这些数据。这些代理适配应用仅仅设计用来传输的系统,不是为了长期存储数据设计的。

3.3.4 原生构建

与其在解决方案中适用映射、转换等手段以适应FHIR规范,不如从最开始就以FHIR规范作为平台设计的数据定义模型,并直接从中创建FHIR原生解决方案。

手机屏幕的截图
描述已自动生成

这种应用模式与前面的两种模式截然相反。当然这种应用模式也有其局限性,仅适合于设计全新的应用系统。在这种应用模式中,FHIR不是现有解决方案需要映射或适配的规范。相反,这种模式以FHIR 规范作为全新产品的关键设计核心。

3.3.5 FHIR资源的持久化

首先,FHIR格式最早是为信息交换而设计的,而不是为持久性而设计的。但是在R4版本开始,已经开始讨论使用FHIR格式进行持久性的可能性,这一点在FHIR标准的交互范式上得以体现。在FHIR Connectathon大会上讨论的一个主题就是FHIR上的存储和分析。

卫生信息化中最具挑战性的问题之一就是设计良好的信息模型。但是什么是良好的信息模型呢?一个好的模型可以适应需求和用例的变化,因为它与现实世界有一些客观存在的关系。FHIR规范提供了一个足够好的即用型信息模型。在系统设计时需要根据业务变化灵活的扩展数据模型,向现有的数据实体中添加新的属性和约束。在FHIR规范中有着完善的模型扩展机制设计。所以,文档型数据存储(按照FHIR信息模型原样存储)更容易实现数据的灵活性和可扩展性。

如果想设计一套自己的数据模型,并且又希望支持FHIR规范,将面临从你的数据模型到FHIR数据模型的相互转换。如果你的数据模型设计与FHIR数据模型同构,那么这种类型之间的转换还是非常简单和方便的。但是,如果要转换的数据模型之间不匹配,那么问题就会很大。例如,如果你尝试创建常见的关系数据库,可能要生成上千张数据表,而且绝大多数的操作都需要从十几个表中查询或者操作数据,严重影响系统性能。

大多数主流关系数据库,如PostgreSQL、Oracle、MySQL和MSSQL,以及Spark、ES等现代数据库都允许同时使用SQL、关系和文档。因此,可以尝试混合使用这些方式,可以有效地按数据原有格式存储,无需任何转换层,并且能够继续使用SQL的强大功能。这是一种非常有前途的方法,如果正在构建全新的卫生信息系统或者平台,值得考虑这种存储模式。

3.3.6 总结

在本小节中,从技术维度展示在解决方案设计或产品设计中使用FHIR标准的多种方式。使用FHIR标准有两种基本方法:首先是在现有解决方案之上提供FHIR作为新接口来增补原有的解决方案以适应FHIR标准的需要。这也是目前使用FHIR标准最常用的方法。第二种方法就是使用FHIR标准来全新构建原生解决方案。原生解决方案提供了极大的灵活性、面向未来的能力、开发和集成的速度,并且是处理医疗健康数据的一种很有前途的新方法。未来的使用方法极力推荐采用这种设计方法。