医院疫情监控系统的设计与实现
2021-01-26孙永亮邓文伟
孙永亮,邓文伟
1. 上海市静安区中医医院 信息科,上海 200040;2. 上海市静安区闸北中心医院 信息科,上海 200040
引言
传染病的监控与预警是控制、降低疫情突发事件危害的关键工作,是提高公民医疗卫生质量的基本保障。随着信息技术的发展与我国医疗卫生事业改革的进一步推进,医疗信息化、网络化已成为当前医院发展的主要方向[1]。推动医疗信息化进程可以为医务人员提供更高效的工作方式,使之拥有更多精力为患者提供高质量服务[2]。我国医疗信息化起步较晚,医院信息化与区域卫生信息化发展不足,许多医疗卫生机构仍使用传统的方式识别、收集疫情信息,经人工整理后再录入文件系统[3]。这种方式具有效率低下、易出错、查询困难、效果不明显等缺点,为疫情监控工作带来了极大不便[4]。因此如何实现患者疾病信息的实时监控,以及疫情报告的自动化管理成为了各级医疗管理者需要解决的难题。
本研究设计并实现了一种医院疫情监控系统,通过监测与记录患者就诊的全流程,对传染病疫情实时跟踪与监控,并实现了疫情的自动化上报与报警。该系统可简化医院传染病监测的工作流程,为防疫工作提供具有时效性的数据支持,并为医疗信息化进程的推进提供参考。
1 疫情监控系统设计
1.1 系统总体设计
本研究设计的医院疫情监控系统采用富互联应用(Rich Internet Application,RIA)框架,整体上呈现分层风格体系结构,目的是为了具备较好的复用性与内部可修改性[5]。该系统主要由浏览器和后端框架组成,通过TCP连接,Web界面又包含BootStrap前端开发库、JQuery通信模块交互工作,后端框架包含ASP.Net MVC容器、应用程序服务器和数据库,整体结构设计如下图1所示。
图1 医院疫情监控系统整体架构设计
其中,使用Twitter公司开发的BootStrap工具来设计用于业务展现的前端页面,然后通过建立前后端的TCP连接来完成对ASP.Net MVC容器中包含的网站页面的访问,最后将API响应结果返回至浏览器[6]。浏览器端通过XML PRC请求获得数据,再将数据传入JQuery通信模块,从而实现业务的动态展现。在数据请求到达ASP.Net的应用程序服务器之后,首先在一个会话中进行权限判断,这一请求也可以使用RESTful中XML RPC Call的授权令牌来实现[7]。此外,为了提高系统的可靠性与可用性,在服务器端部署了守护进程、备份系统和维护系统三种工具,作用如表1所示。
表1 服务器配置的可靠性工具
1.2 数据管理层设计
数据管理层的整体框架为三层结构,自下而上分别是数据库访问层、业务处理层以及对外接口。选择基于ASP.Net的Entity Framework框架来实现数据持久化并生成相应的实体类,从而将数据管理与具体的业务逻辑分离开,以便于系统的开发与维护[8]。使用Entity Framework的数据管理层结构如图2所示。
图2 数据管理层框架设计
由图2可知,在与业务对象模块进行交互时,访问的是框架中的业务实体;在与数据库对象进行交互时,访问的是数据存储实体。为了实现这一过程,需要对数据实体到数据库源以及业务实体到业务逻辑的交互协议进行设计,这两方面的协议(映射关系)如图3所示。
1.3 业务逻辑层设计
系统的业务功能层主要包含四个功能模块,分别为:传染病统计跟踪模块,就诊数据分析模块,疫情自动上报模块,系统参数管理模块。系统的主要功能模块划分如图4所示。
图3 数据管理层映射关系
图4 医院疫情监控系统功能能模块划分
各个功能模块的组合方式采用XML配置文件来完成,然后以RESTful API的方式将不同的后端业务发布至不同的URI中,使得系统各个模块之间以调用网络接口的形式来交互,从而隐藏了模块具体的实现细节[9]。每个功能模块对应一个业务需求,具备一定的业务价值[10]。这一对应关系如表2所示。
表2 系统业务功能层功能模块
为了实现表2所述的各项业务功能,将对各个功能模块进行详细阐述。
传染病统计跟踪模块:该模块包括传染病信息的回顾性分析与预测性分析两个部分。其中回顾性数据分析主要通过一系列的统计学方法将不同地区、不同患者群体、不同感染源的传染病进行汇总并以图表的形式向用户提供数据展现服务;另一方面,预测性传染病跟踪统计主要是通过已收集到的历史感染信息来对未来传染病疫情的潜在风险、传播路径以及流行趋势进行分析预测,并按照设定的报警策略自动向上级网络节点传递疫情信息。
就诊数据分析模块:该功能模块向用户提供就诊数据的录入与查询服务,用户可通过此模块查询医院接受患者中的疾病情况,并设定具体的风险判定规则。该模块通过flask工具将所实现的数据分析服务打包为Web接口,从而实现系统逻辑与实现的分离,降低模块之间的耦合性[11]。
疫情自动上报模块:该模块为用户提供疫情信息的自动上报功能,用户只需要针对某些数据预先设置报警规则,通过调用就诊数据分析模块所提供的接口获取相关疾控信息,用于在达到所设定阈值时自动生成统计报告,并将其上报至上级网络节点。
系统参数管理模块:该模块为管理员用户提供系统整体的参数管理服务,从而通过动态配置的方式提高系统的灵活性。管理员用户可通过该模块实现对普通用户账号以及权限信息的管理,管理用于数据挖掘的备用模型与训练数据集。
1.4 通信交互层设计
本系统前后端之间采用JSON作为通信交互方式,并按照前文提到的表现层状态转化来实现消息的请求与响应。JSON是一种基于ECMAScript的数据交换标准,适合于实现网络中的少量数据通信[12]。JSON采用了完全独立于语言的文本方式,具有结构简单、编码难度低、基于文本、可扩展性强等优点,因此被大量应用于Web应用程序中[13]。
医院疫情监控系统的通信交互层主要通过JSON文本作为信息传输载体,使用.Net Framework 中的JSON serialization工具模块来生成JSON数据。实际中按照场景的不同可选用3种不同的数据组织形式,见表3。
表3 通信交互层的JSON数据格式
2 疫情监控系统实现
基于对医院疫情监控系统的设计,本系统在实现时选择了Windows Server2008作为开发平台,原因在于其具有良好的IT架构,且提供了服务器功能,从而具备了信息的基础架构[14]。在服务器上搭建好ASP.Net的运行环境后,使用C#编程语言完成各个功能模块的构建。考虑到本系统将与整体的医院信息平台相衔接,因此在整个开发过程中采用了原型模型的方法。系统实现过程中总共构建了3次抛弃式原型,按照OCP原则、差异化设计原则不断进行演化,并保持与医院现行系统的一致性[15]。最终得到一个能与医院信息平台有效衔接的疫情监控系统。
本系统主要部署于地区中心医院的数据中心,通过医院内网将各个分支节点接入到该中心医院,实现区域网络化覆盖的疫情监控。其网络拓扑结构如图5所示。
在具体实施时需要使用医院专线链路来连接中心医院以及各分支医院的网络节点,并通过物理阻断的方法隔绝外网。为了使疫情监控系统更为安全可靠,在分支医院节点处使用基于互联网安全协议的L2TP VPN加密通道来防止信息泄露[16]。此外,如图5所示,中心医院承担了整个系统的所有流量,是系统性能的瓶颈,因此需要把中心节点的机房及其客户端部署于数据链路交汇处,并提高其数据交换速率和负载能力。
图5 系统网络拓扑结构图
3 应用效果与分析
在完成系统的设计、实现以及部署等工作之后,需要对系统相关业务功能最后的实现情况进行考察,并通过对比分析的方式验证系统的有效性。系统的使用流程主要有三个步骤,分别为信息录入阶段、电子上报阶段、疫情控制阶段。其中信息录入阶段是系统整个流程的初始阶段,由医生在接诊病人时将患者的相关信息以及疾病诊断结果通过疾病诊断卡界面录入到系统中,如图6所示。
图6 疾病诊断卡界面
电子上报阶段是相关医疗人员在完成信息录入工作后,系统根据在数据管理层的传染病案例字典自动地向医生用户发出传染病疫情上报提示,用户通过电子上报卡界面来填入初级疫情报告,完成此项工作后,系统将自动地分析传染病信息,判断该传染病是正常可控的常规传染病还是有潜在疫情风险的异常传染病,这一阶段如图7所示。
图7 电子上报卡界面
在医疗人员完成电子上报工作后则进入疫情控制阶段,若系统根据其控制逻辑与相关策略发出疫情警报,则首先自动地生产疫情报告信息并向上级节点的医疗卫生机构进行汇报,然后向医院管理者用户提供疫情来源、传染病种类、历史防控方案等信息。在完成这一阶段的工作后,系统将对门诊数量、传染病种类、疫情上报记录等相关数据在后台进行可视化展现,并提供报表打印功能,如图8所示。
图8 后台信息展示界面
该医院2018年12月3日开始使用本系统,相较于之前的传统手写档案、手动录入文件系统等方式,防疫工作中产生的文件规模总大小、单个工作人员的每月工作量等方面都有了较大的改进。为了验证系统的有效性,以每月防疫工作产生的文件资源总大小为指标,分别选取了2018年与2019年上半年6个月的相关数据,绘制了如图9所示的折线图。
由图9可见,系统投入到实际应用中后,医院疫情监控工作效率有了极大的提高,医院每月所能处理的数据规模提高非常显著。
图9 系统应用效果分析
4 总结
本研究设计并实现了一种分层结构的医院疫情监控系统,其整体架构上采用了RIA应用结构,使系统具有表现力强、更新及时等特点。在ASP.Net服务器运行环境下,选择Entity Framework框架来完成数据管理层的实现,使用BootStrap完成系统前端界面的设计,前后端通信方式为RESTful API请求与响应模式,传递JSON文本以完成轻量级数据交互。系统的业务功能层主要包含用于监控传染病数据的疫情跟踪模块;用于采集、整理、加工疾病信息的就诊数据分析模块;用于实现传染病快速上报的疫情自动上报模块;用于管理员维护、调整系统工作策略的参数管理模块。
实验结果表明,在地区中心医院中使用本系统可以有效提高疫情监控工作的效率,充分利用了智能化、自动化的方法实现疫情监控工作的数据自动提取、智能上报,为医疗信息化进程提供了具备一定参考价值的解决方案。