admin管理员组

文章数量:1530517

2024年4月28日发(作者:)

2007中华医院信息网络大会

SOA在医疗卫生领域的应用

黎芮

南京海泰信息技术有限公司

【摘要】经过十余年医疗信息化发展,许多医院的信息系统越来越多,越来越复杂。因为这

些系统大多是由不同产商开发,所以它们所用的技术和标准规范都不相同。各系统之间相对

独立。信息共享成为一大难题。本文通过介绍SOA(Service Oriented Architecture),面向服

务的体系架构,讨论其在医疗卫生领域系统集成方面的应用。

【关键词】SOA 医疗信息化 数据共享 集成 整合

1. 前言

目前,随着医院的壮大,在医院信息系统建设中,医院使用的信息系统越来越多。其复

杂程度远不是一家公司所能满足的。对于如此之多的标准规范不一的信息系统,共享信息的

需求变得越来越重要。

我们以往共享信息的方式主要是在各系统之间开发接口。如果一个医院有n个系统,那

么通过这种方式实现各系统间数据共享的话就要开发n(n-1)/2个接口。因为系统之多,加上

它们之间的关系错综复杂,所以对这些接口的维护及其困难。一旦其中一个系统的标准发生

的改变,那么我们不得不修改和该系统有联系的其它系统之间的接口。

针对以上问题,SOA将是一个不错的解决方案。

2. SOA介绍

SOA是一种信息技术体系结构样式。它支持将我们的业务作为链接服务或可重复业务

任务进行集成,可在需要时通过网络访问这些服务和任务。这些服务的接口采用一种中立的

方式进行定义。它应该独立于实现服务的硬件及软件。

SOA带来了“松散耦合”的应用程序组件。我们开发代码的时候,不一定要通过操作

特定的数据库来获得信息,而是可以直接调用服务来达到目的。甚至我们完全可以通过已有

的服务组合成为各种应用程序。这样还大幅度提高了代码的重用率。因为服务和访问服务的

客户机并没有绑定在一起,所以当我们改变了服务的内在逻辑而接口保持不变的话,访问服

务的客户机将永远不知道服务的更改。例如,当我们用EMR系统下达医嘱的时候,我们要

根据HIS系统中有关该病人的身份信息、余额信息以及药品的信息去判断该医嘱可不可以

下达。以往,我们很可能直接读取HIS数据库中的信息来进行相应的判断。一旦判断的逻

辑发生改变或者HIS的数据库做了调整,那么EMR中相应功能的代码就要进行必要的修改。

通过SOA,我们可以把HIS中的医嘱下达校验功能封装为服务,并且定义好服务的接口。

那么EMR在下达医嘱时只要直接调用该服务,而不论对方进行怎样的调整都不用去理会了。

说到SOA,就不能不说ESB(Enterprise Service Bus),企业服务总线。ESB和SOA是

紧密关联的。它在SOA里起到了一个连接基础设施提供者的作用。所有系统的服务都暴露

给总线。所有对服务的申请也全部提交给总线。由总线决定目前的申请需要用到的服务并进

313

行调用。我们可以在总线上设计一个流程。当申请到达时,我们根据申请的内容调用不同系

统的不同服务获得相应的信息。甚至流程中间可以加入一些需要人工干预的地方。最后再将

所有的信息组织后返回给申请者。如下图:

SOA中的服务来自不同的系统,通过总线平台供其它系统调用。通过将这些服务进行

组合,用户将完全感觉不出他正在使用的功能或者获取到的信息其实是来自于不同系统中

的。SOA清晰的实现了众多系统之间的信息共享,同时避免了蜘蛛网式的信息交互。

3. SOA生命周期

如果要实现SOA的话,我们就需要对SOA的生命周期有一个认识。因为SOA涉及到

业务的诸多方面,所以一开始就应该对SOA项目进行细心的规划和设计。SOA的生命周期

如下图所示,主要包括建模、组装、部署、管理和控制几个阶段。

4. 建模

SOA将所有的业务活动或流程都视为服务,所以在开发之前,我们要首先确定这些业

务活动或流程实际是什么。本来医院的系统就多,系统之间的交互也多,要实现的服务肯定

314

2007中华医院信息网络大会

更多。建模可以让我们更加了解这些活动或流程。从而理清思路,增加条理性。不至于在这

么多的服务中找不到头绪。

5. 组装

对业务流程建模并优化后,下面我们就可以开始去实现这些服务。然后对这些服务进行

组装形成新的功能。如病人挂号,具体分析应该分为几个步骤。首先,根据病人的ID号检

索到病人的基本信息(如果病人没有ID号则要事先登记)。其次,根据病人看病的科室和医

生的排班情况分配给病人一个诊疗医生。最后,生成一条病人的就诊信息传到医生的工作站

里。我们可以把检索病人信息、分配诊疗医生和将病人信息传给医生工作站封装成服务。通

过对这几个服务的组装实现病人挂号功能。

6. 部署

随后,我们要将这些服务部署到一个安全的集成环境中去。此环境用于集成业务中涉及

的人员、流程和信息。这样的集成可以确保将医院的所有主要元素连接在一起协同办公。另

外,部署工作还要提供足够的灵活性,以便新旧服务替换时不会对整个系统造成大的影响。

7. 管理

接下来,系统可以正常运作了。但我们还不能放松。我们还要从技术和业务两个方面对

我们的系统进行监视和管理。根据实际运行中发生的问题去优化系统。改善各服务的效率,

优化业务流程。在“管理”步骤中收集到的数据将用于重复整个SOA的生命周期。

8. 控制

SOA可以包含来自不同系统中的服务。甚至可以包含来自本院以外的其它医院的服务。

对于这种庞大的体系一定要有良好的控制。控制对所有生命周期阶段起到巩固支撑作用,为

整个 SOA 系统提供指导,并有助于了解系统全貌。它提供指导和控制,帮助服务提供者和

使用者避免遇到意外情况。这里就不再详述了。

9. SOA成熟阶段

通过对SOA实现步骤描述后,我们已经基本知道如果要构建SOA该如何去做。但是实

际情况摆在眼前。各医院现有的系统是如此之多,我们不可能一下就实现基于SOA的全面

转换。所以我们要分阶段去做。

10. 构建服务

这一阶段,我们可以尝试由传统方法到面向服务的方法的转换。选择几个解决特定问题

的业务流程。将这些业务流程转换为服务。在小范围内开始使用。因为一次性全面转换的风

险是很大的。我们还是慢慢来的好。这些服务之间的链接将根据需要提供,而不是源自整个

体系结构的要求。

11. 集成

当我们的服务越来越多的时候,我们可以尝试将某些服务集成起来,创建出一个新的应

用。这一点其实就相当于上面提到的SOA开发过程中的组装。这些服务之间的链接是预先

计划的且定义良好的。

315

12. 转换IT

这个阶段涉及到对信息技术基础设施进行转换,以便充分利用SOA的优势。在此阶段,

所有系统将转换为基于服务的应用程序,松散耦合是其中的规范做法,而不是例外。系统的

所有组件都将根据SOA进行集成和连接,IT系统的所有部分都在SOA内工作。

13. 转换业务

在最后阶段,业务与SOA完全集成,达到了这样一个程度:所有合适的业务活动都被

视为服务,可以最终在技术体系结构中对其进行建模、分析和实例化。达到此阶段需要业务

部门进行大量的工作和投入;不过,达到此阶段后,业务将从面向服务的体系结构获得最大

的回报。

14. 总结

实现SOA,可以带来许多好处,包括以下各个方面:1、基于松散耦合的组件和系统。

2、基于网络,允许不同地方不同技术的资源协作工作。3、按需动态构建应用程序。4、更

高的代码重用率。5、更好的标准化整个企业内的流程。6、更易于集中控制。

各个医院现有的系统很多,同时还不断有新的系统的加入。将这些系统整合起来形成一

个体系,不管从信息共享还是集中管理上来说都有很大的好处。让我们期待SOA在医疗卫

生领域的表现吧!

316

本文标签: 服务系统信息病人进行