医院信息系统软件维护方法的探讨
2012-08-15成林
成 林
(浙江医院,浙江 杭州 3100013)
医院信息系统(简称HIS),是一个非常复杂的系统,不仅承担了维系医院正常工作的重任,而且在医院的发展方向以及日常决策方面都提供了极为重要的信息支持。随着新需求的不断涌现,HIS软件也需要不断地升级和完善,这也为软件维护提出了更高的要求。在日常工作中,不仅保证信息系统安全稳定的正常运行,更要保证其数据的准确可靠,充分发挥其决策、辅助等管理职能,保证医院工作的正常开展。HIS系统的软件维护就显得尤其重要。通常软件的生命周期只有10年,只有做好维护工作才能延长软件的生命周期,不断适应医院的发展和需求。
本院实行的是内外网物理隔绝的网络环境,无法使用远程联机的维护方式,就需要以本院信息中心为主,软件开发商为辅的维护策略。按照一般软件维护的方法可分为四类:完善性维护、适应性维护、纠错性维护和预防性维护。作者在日常维护工作中,依据HIS软件系统的特点,探讨前三种维护方法在HIS系统中应用的特点。
1 完善性维护
完善性维护是指在软件系统运行期间为了满足用户不断增加的需求并提高和增强系统的功能和效率所进行的维护工作。在HIS软件的维护过程中,经常会遇到业务科室提出增加某些功能或修改已有功能的需求,作者将此类需求的维护定义为完善性维护,完善性维护占软件维护工作量的55%。完善性维护范围广、影响大,通常在进行维护前首要考虑技术上是否可行、对其他工作是否有影响及资源和时间的占用是否合算。在前期验证可行后还要注意以下三个方面:(1)对程序的修改可能会产生新的错误,在使用前应先通过测试服务器测试更新程序;(2)对数据结构进行修改必须慎重,因为各个模块间数据的交叉引用可能导致动一发而牵全身,在修改前必须参照系统文件中关于数据结构的详细描述和模块间的数据交叉引用表,以防局部的修改影响全局的整体使用;(3)任何对源程序的修改,都需要对相应的文档进行更新,不然会造成源程序与文档的不一致,引起今后HIS应用和维护工作的混乱。
根据以上原则,对业务科室提交的需求,从合理性和技术可行性两个方面对维护要求进行分析和审查,并对修改将产生的影响做出充分的估计。对不妥的维护要求与业务科室协商予以修改或撤消。通过领导审批后的维护报告,由信息管理员根据具体情况制定程序修改计划,每隔2周将汇总的修改计划集中提交给软件开发商修改。这样集中处理需求不但可以减轻修改和测试程序的工作量,还可以使各个修改文档和历史程序井井有条,不易出错。为了防止不同的程序员在修改程序时使用不同的命名方法,对此院方不仅要求软件开发商在编程过程中规定和执行了类、接口、数据表字段的命名规范,还要求建立修改文档使不同的程序员也能根据文档了解原先修改的代码,不会因为软件开发商的人员变动而造成HIS源码的混乱。
2 适应性维护
适应性维护是指运行环境发生变化后,与之适应而进行的软件维护,适应性维护占到软件维护工作量的20%。比如随着全民医保的不断发展和完善,医保政策几乎每年都有变化,这就需要 HIS系统与之适应。其中有些工作是信息中心可以通过调整参数或存储过程来完成,但大多数情况下需要开发商升级医保接口程序。
对这类适应性需求,其重要程度远大于一般的完善性需求,必须优先修改。所以要求软件开发商提供规范的接口升级流程文档和更新后的数据字典,这样不仅可以让信息管理员了解更新后的表结构变化,还可以保证接口修改的可控、可查、可测,从而提高今后的维护效率。另一方面,必须将适应性需求和完善性需求分别进行管理,因为这两类需求绝不能一起修改,不然可能造成相互影响从而产生缺陷(BUG),必须等到医保接口通过测试并稳定运行1个月后才能进行完善性维护。
3 纠错性维护
所谓纠错性维护主要指发现和修正在开发阶段产生、测试阶段未发现的错误。纠错性维护占到软件维护工作量的25%。实践表明,任何一个软件在通过验收测试后,并不能保证软件内部所有的隐藏错误被全部排除。因此,需要进行纠错性维护。出现问题时,系统管理员通常会用SQL语句查询数据库表内数据是否有问题,SQL语句中最常用的就是Select查询语句。当然大多数BUG是无法靠查询语句找出问题原因的,所以作者要求软件开发商提供源程序,包括主要部分的数据字典,就可以使用分析源码法和调试跟踪法查找原因。下面介绍作者在纠错性维护工作中使用的这两种方法。
3.1 分析源码法 随着HIS软件不断新增功能和升级医保接口,难免遇到各类程序BUG,根据出现的错误提示倒查分析源代码,就能发现一些系统问题,及时分析出错误的原因。
HIS软件开发商在程序发布前虽经过质保部的测试,但是各家医院的HIS版本并不相同,数据库和表结构也不尽相同,一旦接口升级无法做到在各家医院的数据库环境中进行充分测试,这就可能出现程序BUG。如余杭医保接口升级后的第5天,有患者门诊结算时弹出提示窗口:“药品序号 =XXXXXX医保编码未匹配不能结帐”。经查该药为当天新增药品,通过Select查询语句复核表XXX-new后确定该药已匹配过医保编码,出错原因是否会是程序取值仍然取到旧表上了?顺着这个思路,使用Power Builder打开源程序,对余杭医保结算的PBL直接搜索关键字“医保编码未匹配不能结帐”找到这个语句的位置,再看代码里的取值条件,发现代码里取值使用的表名是XXX,但是这是一个升级后已作废的数据表,现在使用的是新表XXX_new,新增药品因为在旧的对照表内不存在所以造成无法结算。随后立即致电软件开发商,将分析结果与对方核对,确认是余杭医保目录更新后程序漏改了这一段代码,从而快速解决问题。
分析源码法可以在出现问题时,从程序内部寻找原因,是一种直接、高效的维护手段;此外通过查看源代码可以对程序的运行有所了解,也便于在问题发生时迅速定位并给予解决。
3.2 调试跟踪法 有一些程序漏洞虽然在测试时没什么问题,但在一些特殊情况下就会出现,比如操作上或流程上的改变,这时仅靠分析源码不一定能找出问题所在,特别是在信息管理员对源码位置不熟悉的情况下就无法使用分析源码法来排查问题。遇到这类情况就需要使用Debug调试程序来跟踪排查问题,从而分析原因。
虽然编程语言有许多种,但都有调试程序。调试程序通俗地说就是程序查错和分析工具。使用调试程序需要注意的是Step Into、Step Over和Step Out三个调试功能键的区别:Step Into就是单步执行程序的每一条指令,遇到子函数就进入并且继续单步执行;Step Over是在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完再停止,也就是把子函数整个作为一步;Step Out就是当单步执行到子函数内时,可以直接执行完子函数余下部分,并返回到上一层函数。当出现问题时,通过调试程序不仅可以知道程序在执行到哪一段代码时出错,还可以知道各变量的取值是否正确。以 PB的Debug调试工具为例,在遇到之前分析源码法中的问题时,首先在结算窗口的预结算代码前双击鼠标设置断点,然后点击Start进入单步调试,在Local窗口观察“医保编码”的变量X的取值是否正确。当变量太多时,在Watch窗口里插入该变量名“X”来实时跟踪。当执行到弹出提示窗口:“药品序号=XXXXXX医保编码未匹配不能结帐”时,变量X的取值还是为空,Debug执行指针指向了问题代码行,查看该行附近的代码,果然取值表设定为错误的表XXX。
调试跟踪法可以跟踪程序的运行过程,在不熟悉源码的情况下迅速找到问题所在,并将程序状态与预期状态进行对比,通常与分析源码法结合使用。
HIS软件系统的维护,作者除了使用上述三种方法还依据医院实际情况探索了一套适应本院的软件维护的措施,如有计划的集中处理需求;规范和保存各类接口升级的流程文档;要求软件开发商提供源程序,包括主要部分的数据字典等。这样只需要维护人员熟悉数据库SQL语言,掌握分析PB程序的方法,就能应付日常的维护工作。
近年来的调查显示,软件系统开发的工作量只占20%,而维护工作量却占到80%,做好 HIS软件维护是维持医院正常医疗秩序的保证。所以根据医院发展的需要不断完善HIS软件,才能延长 HIS的使用周期;及时排除程序BUG,才能保证 HIS的数据准确和稳定运行。