摘要

随着我国医疗技术水平的不断进步,以及医院规模的不断扩大,医疗信息系统已经成为现代医院管理和诊疗业务运营的基础设施和技术支撑。然而这些随着医院的发展逐步建立起来的信息系统往往具有异构性,严重制约了各个信息系统间信息的共享,“信息孤岛”现象严重。

我在一个软件企业工作,2016年9月,我所在的公司承担了某医院的信息系统集成项目,有幸作为项目负责人参与该集成平台的开发工作,主要负责需求分析和系统架构设计。集成平台作为医院信息系统的基础设施之一,系统的可靠性直接影响到整个医疗信息系统的运行,在项目开发过程中,我们注重软件的可靠性需求,提出了标准化设计、模块化设计、简化设计和容错设计四点可靠性设计方法,提高了系统的可靠性。

项目上线以后,系统运行稳定,减少了信息重复录入,提高了数据完整性和可靠性,大大提高医务人员的工作效率,降低了后期建设成本,获得了该医院领导的认可和用户的广泛好评。

正文

随着我国医疗技术水平的不断进步,以及医院规模的不断扩大,医疗信息系统已经成为现代医院管理和诊疗业务运营的基础设施和技术支撑。目前某医院内存在电子病历系统、门诊挂号系统、住院管理系统、医护工作站、药品管理系统、医学影像系统和重症监护系统(历、挂、住、护、药、影、重)等大量的管理类和临床类信息系统,这些随着医院的发展逐步建设起来的信息系统往往来自于不同的产商,基于不同的硬件平台、操作系统、编程语言和标准规范,具有异构性,严重制约了各个信息系统间的信息共享,“信息孤岛”现象严重,而且卫生信息化的数据标准不一,医院内任然存在手工数据报告和重复收集信息的现象,医务人员工作效率低下,医疗质量得不到保障。

为解决以上问题,提高医务人员工作效率,保障医疗质量,该医院领导决定投资建立一个可扩展的统一信息集成平台。我在一个软件企业工作,2016年9月,我所在的公司承担了该医院的信息系统集成项目,有幸作为项目负责人参与该集成平台的开发工作,主要负责需求分析和系统架构设计。

医院信息集成平台作为医院信息系统的基础设施之一,所有的信息系统都要通过本系统完成数据集成和业务集成,系统的可靠性直接影响到整个医疗信息环境的运行。我们在系统的设计上不仅仅要关注系统功能需求的实现,同时还需重视系统的可靠性要求。要提高系统的可靠性指标,首先要分析影响软件可靠性的因素,一般来说,影响软件可靠性的因素有:①运行环境,一样的软件在不同的运行环境下,其可靠性的表现是不一样的;②软件规模,软件规模越大,其可靠性越难保证;③软件内部结构,软件内部结构越复杂,所包含的软件缺陷数就可能越多;④软件的开发方法和开发环境;⑤软件的可靠性投入,在项目早期重视软件可靠性并采取措施,可靠性有明显提高。

经过对医院现实情况的认真分析,结合当今成熟的EAI技术,在架构设计会议上我提出了以面向服务(SOA)的企业服务总线(ESB)为核心的架构。会议上我高度重视系统的可靠性需求,为提高系统的可靠性,提升系统在规定的时间和条件下完成规定功能的能力,我提出了标准化设计、模块化设计、简化设计和容错设计四点设计方法。

标准化设计,提高程序可读性,简化集成过程。在系统开发的过程当中,软件设计、流程、通讯协议和程序编码等方面严格标准化。统一设计流程图、使用驼峰命名法进行编码等,对代码行长度、代码格式等做出统一的规范。提高程序的可读性,便于开发人员之间信息的传递,避免了因个人习惯不当而造成的错误。整个集成平台依托医疗信息系统集成规范(IHE),采用卫生信息交换标准(HL7)和医疗数字信息传输协议(DICOM)等卫生行业标准进行信息集成。对医院不符合标准的部分遗留信息系统,使用HL7/DICOM适配器进行本地通讯协议与HL7和DICOM标准定义的通讯协议间的转换,完成非标准的业务数据模型和标准的业务数据模型间的匹配,简化了集成过程,降低了出错的概率。

模块化设计,防止错误扩散。将模块化设计的思想应用于系统中各个功能的实现,将整个集成平台划分为业务执行引擎(BPE)、HL7/DICOM适配器、异步事件管理器和订阅管理器等功能模块,各个模块构建于服务总线层之上,同时尽量保证功能模块单输入单输出的结构,最简化模块单元之间相互作用的数据流和控制流,保证模块高内聚低耦合的特性。模块化设计简化了系统结构,降低了系统的复杂度,将错误束缚在模块之中,不会遍及其他模块,大大提高了系统的可靠性。且对系统进行功能升级和维护时,只需要修改对应的功能模块,减少了对其他模块的影响。

简化设计,降低系统复杂度。软件的复杂性是产生软件缺陷的重要根源,所以在保证能够完成功能需求且语句无误的情况下,要尽可能的最简化设计。简化系统的整体结构,合并过小的模块,分解过于复杂的模块,简化模块单元之间相互作用的数据流和控制流。简化模块内部结构,要求模块设计尽可能简洁,开发人员规范程序编码格式,使程序中的结构,语句中的循环体和算法清楚明了。从而提高程序的可读性,便于程序修改,排除因繁杂而带来的问题。

容错设计,提升系统吸收和容忍失效的能力。由于N版本程序设计能够掩盖硬件的瞬时故障,相比于恢复块设计能提供更好的可靠性保障,所以我们决定采用该技术进行容错。N版本程序设计要求使用N台计算机,这N台计算机既要求相互独立,又需要能够迅速的联络,比较程序得出的结果。这N台计算机必须同时工作,任何一台计算机发生故障都会导致运行模式的变化,对硬件配置有较高要求,同时也增加了系统实现和维护的成本。综合成本的考虑,我决定对系统关键功能模块采用3版本程序设计,为保证不同版本的设计和实现具有最大的独立性,我们选用了不同的开发人员独立设计,使用不同的开发方法,不同的编程语言,不同的开发环境和工具来实现。

在项目开发中,我们也发现了一些不足之处。例如,在架构评审时发现,请求服务时,服务请求者业务逻辑与复杂的服务调用动作混合在一起,降低了系统的可靠性和可维护性。对此我决定引入了一个服务代理来定位服务,分离服务调用动作,同时在服务代理中加入缓存功能,提高定位服务的效率。服务代理的引入提高了系统的可靠性和可维护性,也提高了整个集成架构的运行性能。

综上所述,经过整个项目组精心准备和严密实施,项目如期完成。项目上线以后,系统运行稳定,大大提高了医务人员工作效率,降低了医院后期的信息化建设成本,获得了该医院领导的认可和用户的广泛好评。通过本次项目实施,我明白了要提高软件的可靠性就要在前期开发时重视软件的可靠性设计,实施可靠性管理。我将在以后的工作实践中不断的吸取经验,提高自身综合素质和能力。