导读:为了提高临床医护人员查询患者诊疗信息的效率,提出了一种基于REST架构的API和单页WEB应用的患者360度视图系统。通过knexJS数据库适配器,解决各个业务系统数据库类型不同的问题,提供统一的数据库访问,并利用feathersJS构建REST架构的后端数据API,使用React和Redux构建前端单页WEB应用。使用轻量级REST架构的API使得数据交互便捷高效,同时搭配React的虚拟DOM技术提高浏览器的渲染效率,使得住院患者360度视图系统,有着WEB的跨平台能力,又有接近原生应用的性能。系统上线使用后,使得医护人员能够离开电脑前,告别多系统之间的切换,更高效便捷地在移动端查看患者诊疗信息,提高了医护人员的工作效率。

在医疗信息化的不断发展进程中,诊疗过程与管理向信息化与自动化迈进。关于患者的信息散落于各个专业系统之中,医护人员往往需要辗转几个系统才能获取关于某个患者的详细信息。医嘱、检验、检查、费用和病历信息主要分布HIS、LIS、PACS和EMR等系统中。每个医院的信息化程度不一,各家系统的供应商和设计模式也不一样,患者360度视图系统需要适应各个系统的后台数据库与接口模式,并提供基于REST架构的接口API。

移动患者360度视图系统的目的在于将处于各个分散系统中的数据集中展示给临床医护人员,提高医护人员查询患者信息的效率,同时移动端查询能够将医护人员从电脑面前解放出来。对于一些需要紧急会诊的患者,会诊专家可以通过手机查询会诊患者的信息,提供会诊意见,提高会诊效率。

REST即表述性状态传递,是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。目前主流的Web服务实现方案中,REST与SOAP和XML-RPC对比来讲明显的更加简洁,越来越多的Web服务开始采用REST风格设计和实现。

系统架构

采用单页Web应用(single page web application,SPA),就是只有一张Web页面的应用。浏览器一开始会加载必需的HTML、CSS和JavaScript,所有的操作都在这张页面上完成,页面切换和数据加载都由JavaScript来控制。

患者360度视图系统的设计需要解决不同数据库与系统之间的差异性,为了应对数据库oracle与SQL Server之间的差异,例如本院的HIS、LIS和EMR系统为Oracle数据库,PACS为SQL Server数据库。系统采用了knexJS作为数据库访问的适配层,提供统一的数据库访问方式接口[3],在由feathersJS模块实现RESTful 风格的API接口(见图1)。

图1 系统架构

浏览器端的feathersJS-client模块通过RESTful风格的API请求数据,Redux模块负责管理系统状态,React模块负责页面渲染,React-router负责路由切换。

系统设计与实现

系统API设计 患者360度视图主要包括患者基本信息、费用信息、诊疗与药品医嘱、检验申请与报告、检查申请与报告、检查预约信息、入院记录、病程录、相关医生信息和相关病区信息等。

关于患者每个信息都独立的构建一个RESTful API服务,并使用JSON格式返回数据信息。例如http://serverName/HisOrder?patinetNo=123456 提供患者医嘱信息的查询功能,通过URL中传递参数patinetNo=123456来筛选病人唯一号为123456的病人医嘱信息。

将患者各部分信息独立构建RESTful API有助于系统的扩展与稳定性。系统的服务列表如下:患者基本信息、费用信息、诊疗与药品医嘱、检验申请与报告、检查申请与报告、检查预约信息、入院记录、病程录、相关医生信息、相关病区信息。

系统功能

床位列表 床位列表集中展示整个病区的患者信息概要,能够直观提供整个病区的床位使用情况,护理等级信息。每一个卡片左上角是床位号,又上角显示护理等级,以及患者姓名、性别和主治医生,其中空白卡片代表空床位(见图2)。

图2 床位列表

患者360度视图 具体如图3所示

图3 患者360度视图

患者大病历 选择某个患者后,就进入患者360度视图,大病历页面包含病人基本信息,费用信息,欠费情况,入院时间,以及结构化的大病历。结构化的入院记录可以单独快速定位查看现病史、既往史、个人史、体格检查、专科情况、辅助检查和初步诊断,提高医护人员快速定位自己所需信息。

患者病程录 病程录标签页中是病程录列表,按照时间顺序排列,展示患者病情变化。

医嘱信息 医嘱信息列表,可以根据医嘱状态(当前、停止)、使用频次(长期、临时)、类别(诊疗、药品)来进行过滤。

检验信息 检验信息标签页中包含患者所有的检验项目及当前状态,已完成的检验项目点击后可以查看检验报告。本标签页的顶端包含了所有的检验异常值列表,可以方便医护人员快速查看检验异常值。

检查信息 检查信息标签页中包含患者所有的检查项目及当前状态,已完成的检查项目点击后可以查看检查报告。本标签页的底部包含了患者未做检查的预约信息列表,可以方便医护人员了解接下来的检查安排。

经验总结

在整个系统设计中,最复杂也是难处理的部分就是后台数据接口。原始数据分布于多个系统,获取这些数据需要连接多个不同类型的数据库,查询语句语法不一对开发带来比较大的影响。通过使用数据库适配来隐藏数据库类型的差异,提供统一的查询方式为搭建REST架构的API提供极大的便利,对于业务系统的升级改造,也只需修改对应数据源的数据适配逻辑,不影响整个系统的上层框架。

同时,将各个诊疗信息以一定适当的颗粒度搭建微服务,保证各个接口之间松耦合。对于不同查询要求,可以在原有微服务上构建更复杂的数据接口,可以有效地应对数据的需求变化。

患者360度视图系统已经在医院部署实施,给临床医生、护士工作带来极大便利,也给药学部药师对于患者特殊药品使用审查提供全面的患者信息查询,避免了原先低效多系统切换查询。同时也给本院医生在院外需要查看患者信息、特别是查看需要会诊病人的信息提供便利。系统采用B/S架构,降低了系统升级的成本,也更容易被其他系统进行调用与整合,也提供了更全面的信息共享功能。

对于患者360度视图系统进一步功能改进,将与云胶片系统做整合,使临床医护和相关人员在查看患者文字报告的同时可以调阅影像信息,提供临床诊疗质量与效率。

文章来源:《中国数字医学》杂志2018年第12期,作者及单位:应伟峰,嘉兴市第一医院信息科。