二次开发是指在原有系统的基础上根据客户需求所进行的修改或再开发,以使得软件更符合实际。在医疗信息系统(hospitalinformationsystem,HIS)建设中,医院和软件供应商面临的最大困扰莫过于软件的修改问题。医院的差异化竞争决定了每个医院的流程会越来越不一样,因此需求也不尽相同。用户在使用过程中对软件系统理解逐渐加深,也会不断提出优化流程的要求。此外还有大量不合理但又必须满足的修改要求,对这些需求的适应能力是考验HIS技术水平的重要指标。
二次开发是软件开发的生命周期所致,软件维护是软件生命周期中持续时间最长的阶段。软件的维护包括纠错性维护和改进性维护两个方面。在软件开发完成并投入使用后,由于多方面的原因,软件不能继续适应用户的要求。要延续软件的使用寿命,就必须对软件进行维护。
二次开发是用户需要深化的必然要求[1]。用户的需求会随着应用的深入而不断扩展。医院信息化不像盖大楼、购设备,需要在应用过程中不断地动态调整。尤其是医院业务流程更会随着国家医疗政策的变化而发生变化,这需要我们在原有的医院信息系统基础上不断地进行二次开发和必要的系统改造,做好系统的适应性维护和完善性维护,以使医院管理信息系统随着医院的发展而发展,延长医院信息系统的稳定期和适用期,避免将管理信息系统推倒重来的恶果。软件设计的不足日益显现,任何软件的设计都无法完全预料到未来的应用需求,因此软件系统的二次开发是不可避免的。
1 二次开发的方式
1.1 依托信息系统的开发商进行系统的二次开发,完成医院的需求。牢固树立”购买软件就是购买服务”的观念,在软件购买期间对软件开发商的能力、信誉、响应时间以及生存能力等进行调查,确保能有较长的合作周期。如有必要可以在购买合同中就售后及二次开发进行规定,避免不必要的麻烦。软件是立足于自我开发,还是全面买进,二者都被证明是不成功的选择。在医院信息系统应用初期,由于观念影响,大多数医院奉行自我开发,由于医院计算机技术力量薄弱,大多数系统是低水平重复,没有形成一个象样的综合信息系统,致使卫生行业计算机应用发展缓慢;另一方面由于医院间的管理差异,各有特色,很难有能适合各种医院的通用软件。实践证明与社会上的专业力量合作,引进通用软件,结合自身特点加以二次开发才是较为正确的选择。
医院应慎重选择拟合作的计算机软件开发公司,应注重合作公司的技术力量、开发经验、维护能力及公司的专业发展能力,以及是否有成功的实例、是否有自主版权的商品化的HIS软件、是否有继续开发升级的能力。医院选择的合作单位最好是与医院在同一地区,或在该地区有响应机构的公司。应由医院与合作单位共同研究订出系统的目标、构造、平台的选择及分步实施的方案,再谈判价格问题。
因应用系统有一个试用期和维护期,且信息系统是逐步扩大、增长的,管理上提出的要求也是变化的,合作公司需到医院进行实地调研,医院人员应自始至终参与工程的规划、安装、调试,这对日后医院HIS维护开发有极大好处。
1.2 依靠医院自身信息人才自行进行二次开发,此方式适合于有比较长时间的信息系统应用经验和有一支长期致力于医院信息系统维护的富有开发经验的信息队伍的医院。
2 二次开发的做法
常见二次开发主要有3种做法,修改源代码,采用中间件,利用数据库表结构,实现数据的共享。
2.1 修改源程序,能够拥有系统的源代码自然是许多程序开发人员梦寐以求的事情,但是由于我们目前许多程序员在程序编写上的不规范,造成读他人的程序是一个相当困难和头痛的事情。在源程序上修改的优点是能够完全无缝连接,缺点为若源代码编写不规范,对源代码的理解和再编写工作量大,且不容易完成,而且一般的医院也无法得到系统的源代码。
2.2 采用数据库中间件技术。
2.2.1 中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源[1]。中间件位于客户机”服务器的操作系统之上,管理计算机资源和网络通讯。目前对中间件的应用是数据库开发的热点。
2.2.2 数据库中间件方法的优点:移植性好,中间件封装了各种与平台有关的细节,使更换操作系统和通讯协议等底层的配置无需改变应用程序代码。集成方便,中间件可以非常容易地集成到应用开发环境中,无需大的代码改动。易于扩充,中间件的局部改进和整体升级只要保持对外接口不变就不会影响到系统的其他部分,在功能上对应用程序实现了透明性;使用简单,中间件对各种数据源使用统一的访问方法,使用户不必关心数据库选择等操作。
2.2.3 数据库中间件方法的缺点:数据库操作比较集中,统一由中间件负责数据间的同步和点对点的通讯,对中间件的可靠性要求高,一旦中间件出现问题,所有的数据连接将断掉,导致数据库瘫痪,这种方法不适合高性能的应用处理。
2.3 利用数据库表结构的方式实现数据的共享,此方法适合于对系统非常熟悉,包括其表结构和数据流程、业务流程,能够准确地提取出需要的数据,并将结果数据回填,方便原有系统的应用来调用。此方法最为简单。缺点:由于无法嵌套入原有的程序中,客户在使用上存在不方便。若对数据结构和流程不了解,会出现错误的结果,影响数据的使用。
3 二次开发应注意的问题
3.1 未雨绸缪,在签软件购买合同的时候,将相关文档的提供写入合同中,能提供程序源代码作为合同重要款项,实施和验收时,保存好相关技术文档,为二次开发打好基础。开发文档的规范性书写和开发软件的测试保存,代码编制遵照<程序编制规范.doc>标准[2]。主要有变量命名规范、窗口和窗口相关Datawindow命名规范、函数的命名规范、数据窗口命名规范、类的命名规范、界面设计风格规范、库(PBL)命名规范、字段名通用命名规范。定期整理需求和相关代码鼓励程序员建设客户化支持库,部门定期统一归档整理最终成为标准产品。充分利用好程序注释,增加程序的可读性。
3.2 在以自力更生为主进行合作开发的同时建立定型软件集中保存管理制度,避免因人员的流动导致软件维护和开发的中断。
3.3 应以不改变软件主体结构为前提,在保证现有应用的前提下做好二次开发。
3.4 二次开发应在充分理解和消化现有系统的基础上完成,而不是盲目开发造成项目没有上成又耗费了人力物力。