吴坤:关于医院信息系统开发过程的思考
软件工程作为一个工程学科,在研发和构建软件产品时,需要遵循软件工程管理一般性规范要求。企业应用信息系统是一种功能比较复杂的应用软件,不同行业的软件开发过程,有着不同开发特点。本文将围绕医院信息系统开发过程,与大家分享相关的做法和体会。
任何企业组织在开发信息系统的时候,都会经历一个漫长的过程,特别是一些组织结构和业务流程复杂的企业单位更是如此,比如医疗信息系统开发。尽管软件工程行业有其既定的方法和流程,但是对于医疗行业而言,我们在开发医院信息系统软件时,依然有很多地方需要契合自身行业的特点,梳理和总结出适合本行业特点的流程和规范。
医院信息系统的开发,是一个非常复杂的工程,需要解决不同环节上的问题。第一步要做的是,通过收集资料和实地调研,明确需要解决的问题,也就是搞清楚医院的需求所在,研发信息系统需要解决哪些问题,为什么要研发这个信息系统,信息系统实施上线后需要达到哪些预期目标。这一步工作非常繁琐复杂,但是极为重要。第二步需要做的是,对业务需求问题进行准确的理解,深入的分析,尽量消除一切误解和盲点问题,确保对问题背后的原因和需求本质的准确而清楚地理解,特别是涉及到医疗业务相关知识和医院管理业务相关内容,要明确问题本质所在。在对问题有了比较清楚的认识后,下一步方可确定系统研发思路、方案和技术思路要求,包括系统主体技术架构设计,采用什么技术,后台用什么数据库,服务器部署环境,开发团队分工等。总体研发思路确定后,就需要开展实质性的设计功能,比如系统架构设计、系统功能模块设计等。这一步需要制定一个规范的系统设计方案文档,作为系统开发软件工程师的开发指南。第三步是系统实现,也就是指软件开发工程师编写程序,得出一个信息系统软件产品,当然不仅仅是一个可正常运行的软件,还包括一整套满足系统设计需求的软硬件技术方案。信息系统很难一下子就满足用户的所有功能需求,特别在医疗机构内部,人员复杂,需求众多,在开发医院信息系统时,总会存在一些功能点的遗漏和误差。系统实现完成后,需要进行系统评估,其是否解决了确定的问题,实现了系统设计阶段确定的功能需求。如果没有,就需要重新来设计和实现。
对于医院信息系统的开发过程,可以规范化地划分为项目启动、系统分析、系统设计、系统实现和系统运维这样几个部分。如下图所示:
项目启动
医院信息系统的开发建设项目通常非常复杂,需要投入大量的时间和精力。如果项目开展得不好,极容易导致投入了大量的精力,却没有得到预期的成效,最后是得不偿失。因此,需要对项目进行仔细规划。项目启动阶段,就是要实现项目的整体计划,确定项目范围、目标、进度、预算、机会等。项目范围即确定项目涉及的业务领域,如门诊收费、药房管理、电子病历等;项目目标,即系统上线使用后预期的目标,比如人均排队时间降低30%,门诊业务容量提高一倍之类;项目进度,则主要指项目预计耗时期限;项目机会,即项目可能带来的附属机会,比如彰显信息工程师队伍的技术水平和实力,提高信息部门在医院内部的影响力和认可度等。当前很多信息部门在医院内部的处境不够友好,我们在涉及研发医院信息系统时,可充分挖掘并利用好项目所带来的机会,以改善信息部门的发展状况。
系统分析
系统分析的主要目标是,对整个项目相关的问题,功能需求全面准确地分析理解。可以采用这三个步骤来完成:问题和现状分析,业务流程认知,功能需求了解。首先是问题和现状分析,目前医院的现状如何?工作效率低下,患者满意度差,门诊吞吐量低,拥挤排队现状明显,工作人员误差多(发错药、收错费),目前是否有对应的信息系统在运行?如果有系统运行效果怎么样?技术和性能方面如何?是重构,还是推翻完全更换?等等诸如此类的问题。业务流程:了解医疗业务流程,从门诊挂号,到接诊开药、取药离院、检查检验、入院入科等,可以通过找相关科室工作人员询问调研,还可以把自己当成病人一样,对整个医疗业务亲自体验一番。参与系统开发项目的人员,通常对医疗业务不是很了解,所以对业务流程的详细了解非常重要,参与该过程的人员越多越好。系统功能需求了解:功能需求,也就是用户群体对信息系统在功能上的期望,即信息系统所需要提供的功能。由于医院用户繁多,我们可以对用户群体进行分类,例如分为医生、护士、药师、财务结算员等,然后根据每类用户的需求来分析系统功能。
系统设计
系统设计阶段,需要根据信息系统的业务需求,制定出技术实施方案。可能得出的技术方案不止一种,还需要进行方案选择。比如,是重新开发一个信息系统,还是在现有系统基础上重构。在确定好方案后,依据该方案来制定系统设计文档,系统设计文档是整个信息系统产品的设计蓝图和规格说明。
系统开发实现
系统开发实现阶段,软件工程师开发程序,构成出信息系统产品,并将其投入使用,包括开发、测试、实施等过程。要特别说明的是,一定要注重测试工作。医疗业务异常严谨,在正式上线使用前,一定要全面开展测试工作,确保系统能正常工作并满足用户需求。先前系统的数据,可以转入到新系统,或者新旧系统同时运行一段时间,到旧系统业务消耗殆尽。
系统运维与用户交接
医院新的信息系统上线运行后,很少是完美无缺的,会逐渐暴露出BUG,用户会发现功能欠缺和性能不完善之处,甚至设计上不够人性化等。同时,用户也会提出新的想法和需求。系统运维,就是不断收集待解决问题,了解用户需求,进行系统完善和迭代。
通常情况下,在系统上线运行后,后续的运维工作会交给运维团队,或者是软件公司人员,或者是医院信息部门工程师来完成。系统的运维工作是一个长期的过程,延续直到系统生命周期消亡。笔者将结合自身工作经历和思考,就医院信息系统开发撰写系列文稿,与圈内同仁交流探讨。
作者简介
吴坤,计算机专业硕士,华中科技大学同济医学院附属同济医院信息中心软件工程师。专业计算机程序员,国内在医疗行业积极推广IT技术的青年工程师和技术践行者,热衷于以信息技术提高医疗行业服务质量和改善患者就医体验。