开源软件相对于商业软件所具有的“自由”特性,使得医疗行业CIO在开源软件的选型上既面临机会也面临挑战,所以更应该采用谨慎、务实的态度。这无论对于方案提供商还是行业用户,都是一个不小的挑战。
医院信息系统对于提高医院服务、管理水平有很大的帮助。
1993年3月,国际医学信息学会(IMIA)在美国的辛辛那堤市举行的一次高级研讨会中,对HIS的成功与失败进行过深入的分析。会议报告中有以下结论: HIS的规划与实现必须全面支持医院工作与发展目标; 研制出全面反映医生工作模式的系统; HIS的系统规划与实施必须建立有权威的领导机制(一个委员会),必须请有权威的医护专家参加这个委员会,他们要对系统进行考核,提供反馈信息; HIS的失败,80%是组织管理因素,只有20%是技术因素(即所谓8/2律);HIS系统主管(Chief Information Officer)应具备技术和管理等多方面的才能。可见组织管理因素是HIS建设成败的关键因素之一。
对于开发者来说,使用开源软件进行医院信息管理系统的开发工作,应当遵循以下几个原则:
● 坚持一把手原则
HIS的成败关键在于领导。HIS的目的首先是为医院管理决策服务,支持医院运营服务。它首先是高层决策者的工具,是为院长和医护人员建立的,而不是为计算机专家建立的。如果没有医院领导者的决心与支持,没有业务主管的参与,没有院长的有力组织与协调,任何HIS计划都不可能成功。HIS的实施涉及到全院各部门,门诊、住院、药剂、医剂、设备后勤、财务等各部门,哪一个环节跟不上都会影响整个系统的实施。只有在领导亲自参与组织与协调、各部门密切配合的情况下,系统的实施才会成功。各部门的一把手也要参与相关子系统的设计与管理。
实践证明,HIS的应用将促使医院的组织结构、各部门的业务分工、医院的人才结构、作业方式乃至工作评价方法等诸多方面发生变革。因此,HIS的实施必须纳入医院发展的总规划,使之有组织上和经费预算的保障。任何一个部门和个别专家都不可能实施一个涉及全院工作的信息系统。这对于开发人员来说,具有很强的指导意义。
在笔者所从事的一个医疗系统的开发当中,在需求分析的阶段,就走了很多弯路,没有做到抓住一把手的原则。与一些专家、部门科室领导沟通和协调的过程相当艰难,主要是因为医院领导的命令没有下达,下面的人就极有可能会不配合,因为这其中或多或少地牵涉到医院的某些资料和技术的交流和传达。而当我们找到院长对这些事情进行从头到尾、彻底的协调后,才使事情得到解决,开发过程才得以较好地延续下去。
● 认真实行三结合的技术路线
所谓三结合是指开发人员要与医院领导、医院各级部门的业务人员三者紧密地结合。任何一个系统的实现都离不开领域知识和系统知识两方面的专家,仅有精通医院业务的医务人员是不够的,仅有精通系统知识的计算机专业人员也是不够的,只有搞好三结合,领导、医务人员和计算机专家三方面协同工作,才能开发并实施一个成功的HIS。
在开发一个妇幼保健院的系统的时候,笔者与一位老医生谈得很投机,他是妇幼保健方面的老专家,有一些比较好的、能够改善妇幼保健质量以及推功医院经济发展的好点子,然而这需要借助计算机,他就不懂了。在与其进行深入的沟通后,笔者在系统开发的过程中,将他的一些宝贵经验作为一个专家系统模块实现在系统当中,这样既让该老专家的经验和特长有所展现,也极大地丰富了系统的内容并提高了质量。因而,在软件开发的过程当中,要尤其强调三者结合。领导命令和协调是前提,医院业务人员以及专家的宝贵经验是系统的来源,而计算机工作者则是实现这些经验,将其提升为经济价值的建筑师。
● 多次反馈,层层叠代,保证软件质量
在开发过程中,由于系统的许多细节问题,包括医院的领导、部门负责人、专家等都很难一次性将需求阐述明确,所以对于开发人员来说,需求分析、概要设计等要做的非常到位,需要通过走访专家、领导,集中开会、填写问卷调查等多种手段和方式来尽可能全面、准确地获取信息,要多次地反馈和交流。尤其是在详细设计阶段,最好开发出一定的原型系统,给相关的人员试用,再进行详细地开发工作,这样螺旋式的、层层叠代的开发方法能够使开发人员少走很多弯路,节约开发时间,保证软件的质量。
● 做好用户培训和系统维护工作
要使HIS系统有生命力,不断发展提高,就必须在用户培训和维护服务上下功夫。只有经过严格培训,用户才能克服使用计算机的心理障碍,要使用户体验到能成为使用计算机的能手,并逐步学习更多的计算机知识,产生对应用计算机的浓厚兴趣和依赖。否则,设计虽然成功,未必能有效地应用。
任何好的系统,都需要有良好的维护服务来支持。这种支持甚至比开发还要不惜成本地去做。否则,系统交给用户之日便是其寿终正寝之时。HIS这样复杂的应用系统,用户可能随时提出新的问题,如果没有24小时的维护服务,必定给医院业务造成困难。在技术方面,系统设计与实现和医院实际业务工作要求存在某些不相符合的问题是必然的,因此,系统有一个逐步充实完善和实用化过程,这些工作通常在日常维护中完成。
● 规模适度和实用性原则
规模适度和实用性优先原则是HIS成功的重要经验。在系统设计阶段,对系统规模和功能范围必须有适度的界定。片面追求大而全不一定可取,这样的系统可能缺乏完整性又不足以支持全院的正常运转,应当找到一种合理的折衷,达到适度,使系统能实现良性发展。规模适度是达到较好的性能/价格比的有效方法。实用性优先原则是软件工程上公认的准则。
● 认真、合理地选择开源产品
开源软件现在的版本和种类很多,Linux就有很多种,数据库也不少,但是它们各有各的特点,而且使用的难易程度也不尽相同。所以,开发人员在使用其进行开发之前,应该进行整体的了解和评估,切忌拿起来就用,而不对医疗行业的实际情况进行调查,不对使用的开源软件的特性进行了解。尤其注意要选择比较稳定的、比较成熟的发行版本,因为开源软件有很多测试版本以及不成熟的版本,这些都不能用作来开发医疗软件,因为一旦出现问题,将会带来很大的不可预期的损失。
● 采用优秀、成熟的开发模式
使用开源软件,很大程度上也选择了其开发模式。比如J2EE这种开发模式,其核心开发模式共有十多种,当前最常用的是MVC(Model-View-Controller)。医疗软件开发人员需要根据情况,选择比较成熟、合理的开发模式,这样能够节省很多开发时间,并且出现了问题,能够很快地得到解决,因为这作为经验已经为很多人所掌握,可以相互交流。
● 选用较新的开发工具
开发工具也是一个不可忽视的方面,现在开源的IDE很多,然而有其独特的特点,开发人员可以根据其进行选择。开发医疗软件的客户端需要界面友好,交互性能好,因此可以使用Eclipse等工具。而且要多采用新的、版本较高的工具,这样能够获得较高的可用性,也更能节约开发时间,提高开发效率。而且,有的医疗软件的用户可能对某些形式的图形用户界面有要求,这都需要跟用户方协商好采用什么样的开发工具来达到这个目的,一般最好通过原型系统的方法来实现,一目了然。
● 分析彻底,认真测试
医疗软件的重要性不言而喻,所以开源软件开发时,要对需求作彻底的分析,每做一步都要有详细的计划和记录。而且在开发完成后,要对系统的功能、可用性、安全性方面等进行严格测试,需要在测试中解决很多问题。因为开源软件同样具有一定的应用范畴和可能出现的问题,需要在测试中寻找和排查,以保证以后运行的稳定和安全。这是非常重要的,因为很多系统在功能方面非常完备,而在稳定性和安全性方面却不如人意,所以对于使用开源软件开发来说,也同样要引起高度注意。
操作系统的选择
在操作系统方面,其稳定性、安全性方面相比许多其他操作系统来说要强很多,其在服务器应用上也相当普遍和成熟。针对医疗系统所要求的24×365小时不间断稳定工作的需要,建议开发者采用Red Hat Linux Advanced Server的版本。该版本具有如下特点:
● 强大的稳定性: Linux与生俱来的稳定性能够保证医疗系统的稳定运行,并且该版本是服务器版本,是众多优秀的开发者打造,在实践中反映很好,笔者目前的服务器上也是用的该操作系统。
● 安全性能好: 由于该操作系统是针对服务器设计,所以充分考虑了作为服务器在网络服务中所应具备的安全性能,不会像其他一些操作系统一样遭受众多黑客的攻击。
● 可扩展性好: 由于是开源软件,该软件能够在新版本发布后轻松地免费升级,可以使用诸如Linux virtual Server等优秀的Linux上的开源软件,来完成负载均衡、请求分配等工作,从而提高服务的质量。
数据库的选择
医院信息系统所存储的数据量非常大,而且访问也非常频繁,对数据库的要求较高,这一点与我们通常所使用的Web服务器非常相似。如前面所述,MySQL、PostgreSQL等几款开源数据库软件都有其应用的合适场景,这需要根据不同的实际情况来选用。
● 选用MySQL
对于那些需要海量数据的检索,不需要复杂的事务操作的用户来说,MySQL应该是一个比较理想的选择。如今的MySQL 4版本可以运行于多种操作系统平台,支持全文搜索,提供了常见开发语言的编程接口,最大可支持64TB的表空间。而可伸缩的设计体系使得MySQL既能够提供企业级的客户机/服务器工作方式和复杂的集群工作方式,也能够作为嵌入式的数据库引擎集成到其他的应用系统之中。
ChinaUnix.net的核心应用―论坛系统,就是建立在MySQL之上。CU目前共有两台硬件服务器,其中一台服务器放置MySQL的Master库,另一台服务器放置MySQL的Slave库; Master库给用户提供注册、发帖、编辑、删除等操作; Slave库提供给用户查看帖子等查询操作。Slave库与Master库保持数据同步,除了起到分流作用,也起到实时备份的作用。当将来用户量加大时,可以通过增加多个Slave库,做到多台服务器分布式管理,因为用户的大部分操作都集中在查看论坛内容上,当多台Slave库同时工作时,可以分流用户,这样可以大大提高用户的访问速度并减轻服务器的系统负载。因此,对于不需要复杂事物操作以及不使用存储过程的医疗应用来说,可以选用该数据库,因为其具有较高的稳定性能。笔者推荐在开发一般的HIS系统时使用该数据库软件。
● 选用MaxDB
它是2003年SAP公司和MySQL AB公司合作之后SAP DB新的名称。MaxDB是一款重量级的、获得SAP R/3认证,适宜于联机事务处理和联机分析处理等多种业务类型的高可用性、高可靠性和极具伸缩性的数据库,支持大容量的用户和并发业务操作,采用多线程多进程的服务器设计,支持多处理器的应用,并通过集群和热部署提供高可靠性,支持TB级的海量数据,支持企业级的数据同步和复制等复杂应用。
● 选用PostgreSQL
PostgreSQL自1986年发展迄今已有近20年的历史,它支持一系列关键特性: 支持分布式的事务处理; 支持外键功能,以及所有的SQL 99的连接类型、触发器; 支持用户自定义的对象数据类型和操作; 支持子查询、部分索引和表达式索引; 支持多种语言产生的存储过程,同时PostgreSQL提供了多种编程接口,拥有热备份和选择性备份恢复工具等。但是,和MySQL相比,PostgreSQL的性能一直被视为弱项。对于那些需要复杂业务操作,而对性能要求不是过于苛刻,同时期望系统的设计富于扩展性的用户而言,不妨采用PostgreSQL。
中间件产品的选择
考虑到前面所采用的开源的Linux操作系统,尤为重要的是: 医疗行业要求比较高的可扩展性和跨平台。因为一旦按照医院的工作流程开发了一套信息系统,那么在一段时间内都不会对其进行变更,如果没有很好的扩展性和跨平台的性能,那么对以后的维护和升级都会带来很大的麻烦,弄不好还会要从头进行开发,所以强烈推荐开发人员采用JBOSS。
JBOSS是开放源代码的,遵从J2EE规范的,100%纯Java的EJB服务器。JBOSS的开发团队有500多人,核心开发人员有50多个,均为J2EE专家。JBOSS的用户数以万计,遍及世界。JBOSS采用Java Manage eXtension API 实现软件模块的集成与管理。与另一个开源的Tomcat相比,它能支持功能强大的EJB,可以轻松地部署Web页面以及业务逻辑的EJB代码,扩展性非常好。可以说,它的功能与商用的Weblogic以及Websphere各有千秋,最重要的是它是免费的,数以万计的用户和高手在使用和维护着它。
JBOSS Suite由以下几个模块(或者API)组成:
● JBOSS/server: JBOSS服务器,核心是一个EJB容器,全面支持EJB1.1规范。
● JBOSS/SpyderMQ: JMS的纯Java实现,支持JMS 1.0.2规范。
● JBOSS/Jaws: 它是Just Another Web Storage的缩写,Jaws API实现Java对象和关系数据库的映射,JBOSS用它实现EJB的连续化(Persistence)。Jaws还增加了Minerva JDBC 连接池(Connection Pooling)模块,以提高访问数据库的效率。
● JBOSS/Zola: Zola提供JBOSS例程序,来说明J2EE应用的开发和在JBOSS中的实施(Deploy)。Zola中包含一个例子Zol WebStore,可以作为Web商店,基于JSP、Servlet、EJB,实现在线购物,支持Web和WAP访问。
● boss/Zoap: 支持Simple Object Access Protocol (SOAP) 访问,SOAP是由Microsoft和IBM提出的一个支持世界范围分布式的松耦合的信息交换协议。
● JBOSS/Castor: 与Castor的整合,提供Java Data Object(JDO)支持,实现新的EJB连续化方法。
● JBOSS/Tomcat: 与Tomcat的整合,提供完整的J2EE环境。
● JBOSS/Jetty: 与Jetty的整合,提供完整的J2EE环境。
● JBOSS/Test: JBOSS测试环境。
开发语言和模式的选择
笔者推荐使用跨平台的Java语言来进行医疗软件的开发。因为现在的主流是采用B/S模式的开发,Java所提供的J2EE的开发标准和模式,能够为医疗软件的开发带来极大地便利和成熟的可以借鉴的经验。用Sun公司董事长McNealy的话来说,Sun的Java编程语言和用Java开发的商用软件可以为医疗和教育市场的新应用提供帮助,从而吸引更多人在线,推动医疗和教育事业。他补充说,如果你不在线,如果你不参加进来,如果你不联网,那么你将处于很不利的地位。
目前开发医疗软件具有两种比较流行的模式: 一种是基于J2EE模式的,另一种是基于Microsoft.Net模式的,后者是商业模式。我们建议采用J2EE模式。因为从J2EE提供的服务,尤其是EJB容器可以提供的CMP和CMR等服务来看,J2EE在实现大规模应用时比.Net框架更有优势。从开发效率和灵活性看,.NeT框架提供了VS.net,J2EE的开发则依靠开发组织自行选择开发工具,由于VS.net对.Net开发采用了完整的开发支持,开发效率比开发J2EE应用要高,因此在快速实施时更有优势。然而从灵活性方面看,J2EE的开发可以具有针对性,能够根据实际应用来进行选择,所以其灵活性较高。
从现有实现的模式来看,由于Java阵营中已经具有许多方面的参照实现,例如Turbine、Struts、Jetspeed、Tapestry等等,这些参照实现的框架已经经过世界范围内各种应用的检验,并且在实际应用中正在运行,具有很高的可参考性。而.Net阵营中暂时缺乏这种成体系的参照实现供选用,主要都还是一些代码片段,大的程序框架靠开发HIS应用时配置的分析师确定,或在更大程度上受到Microsoft现有框架的限制,例如安全性控制的部分。并且,J2EE的开发已经有了《J2EE核心模式》这种成功经验的指导,开发起来更加得力和迅速。
从客户可接受程度来看,客户更愿意接受J2EE应用,也是因为J2EE应用已经出现的成功案例。
在使用J2EE进行开发的时候,推荐使用如下开发架构(如图1所示):

● Web层: 为医院各个科室和部门提供Web服务。包括医疗信息发布、各项资料的查询等。Web层由Web组件组成。J2EE Web组件包括JSP页面和Servlets。Web层也可以包括一些JavaBeans。Web层主要用来处理客户请求,调用相应的逻辑块,并把结果以动态网页的形式返回到客户端。这里建议采用最新的Struts应用框架,使用JSP、Servlet等进行开发,以便于程序的扩充,从而将数据的显示和分离完全脱离,做到独立。
● 中间层: 开发EJB或者是JavaBean,来处理业务逻辑。该层主要是接受Web传来的数据请求,然后进行相应的处理,并完成访问数据库的操作。这一层在开发中可以进行细分,比如要加强系统的安全性能,或者是并行处理的性能,可以再添加几层处理逻辑。开发过程中,可以采用开源的Eclipse等开发工具进行,使用简单方便。
● 数据库访问: 后台采用JDBC进行数据库访问控制。JDBC(JavaDatabase Connectivity)是一个独立于特定数据库管理系统的开发接口。它提供一个通用的访问SQL数据库和存储结构的机制,支持基本SQL功能的一个通用底层的应用程序编程接口。它在不同的数据库界面上提供了一个统一的用户界面。提供了多种多样的数据库连接方式。J2EE中提供了JDBC API使多种数据库操作简单、可行。通过其与后台的MySQL或者PostgreSQL进行连接,来实现相应的数据访问功能。
链接
JBOSS与JOnAS
目前,开源应用服务器包括JBOSS应用服务器和JOnAS应用服务器两种:
● JBOSS是1999年Sun公司软件工程师Marc Fleury开创的,其目的是用Java开发一个商业开源服务器(Java Bussiness Open Source Server,简称JBOSS)。他所创办的JBOSS公司提供基于JBOSS软件包的专业技术服务,享有很高的声誉,位列Oracle、BEA和IBM公司之前。JBOSS公司员工不到一百人,在国际开源社区,JBOSS的实际开发者也不足一千人。JBOSS公司的商业化运作非常成功,JBOSS开源应用服务器至今已经下载近600万次。
● JOnAS(Java Open Application Server,简称JOnAS)项目是“Java开放应用服务器”的缩写,其开发活动由法国ObjectWeb主持。ObjectWeb是一个“联合体”(Consortium),创立于1999年年底,发起单位是法国Bull计算机公司、法国电信研究发展中心和法国国立计算机科学与控制研究所(INRIA)。他们的技术开发思路和发展目标是,采用构件的形式开发分布式的开源中间件。这些构件所在的领域是从特定的软件框架与协议到软件集成平台。这一联合体的技术开发路线遵循基于组件的系统方法。
免责声明:
本站系本网编辑转载,会尽可能注明出处,但不排除无法注明来源的情况,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本网联系, 来信: liujun@soft6.com 我们将在收到邮件后第一时间删除内容!
[声明]本站文章版权归原作者所有,内容为作者个人观点,不代表本网站的观点和对其真实性负责,本站拥有对此声明的最终解释权。

