王晓煜 张奇松 黄浩
摘要:公共卫生是关系到一国或一个地区人民大众健康的公共事业,其公共卫生管理系统成为制约公共卫生事业发展重要环节之一,根据此需求设计出一套关于全民医疗/医保的信息化系统,其功能符合现阶段中国特色国情。该系统采用SDO/SCA/BPEL的SOA体系结构,各种功能以服务为中心,通过服务进行无缝连接,最后通过Web 服务向外界进行发布。同时,系统业务采用BPEL语言,通过服务器完成业务的组合、流程的编排并提供路由服务,能将需求动态地绑定到所需服务。系统核心平台的持久化层采用SDO技术,能对底层异构数据库进行封装,组件/服务能统一地调用SDO通用方法,从而达到了底层数据与技术实现相分离结果,因此项目实施人员不需要了解底层数据的类型、存储容器及调用方法等,简化了系统的开发过程。
关键词:公共卫生;SOA;Web服务
中图分类号:TP391.9 文献标志码:A 文章编号:1005-6378(2014)01-0120-04
公共卫生管理系统是面向基层用户使用,构建专业的实时化工作站。公共卫生管理系统是以社区卫生服务站、村卫生所、市行政机构、预防保健机构二三级医疗机构为实现目标对象,进而完成在服务运行中动态更新档案、信息共享以及流动处理等过程。该系统能够有效进行流行性疾病的预防、基本健康知识的普及、急性疾病的医治以及基础卫生监督等功能,实现一体化的医疗服务体系,进而改进并完善基层地区的医疗卫生服务专用网,建立功能明确、信息通畅、协调一致的公共卫生服务系统。该系统能够提高基层的医疗服务质量以及突发医疗卫生事件的紧急应对能力,使每位居民能够拥有平等的公共医疗机会。
一、系统总体结构
本文以SOA为架构模型基础,并实际医疗功能业务相结合,研究并设计了一套公共卫生管理系统的结构模型。该公共卫生管理系统结构如图1所示。
该系统结构可分为5个层次,具体功能如下。
表示层:该层主要被界面库的调用,用户可以直接操作此层,输入用户数据,表示层的下一层次——控制层可以将输入的数据传递给相应的服务组件。同时表示层还可以将底层处理好的数据传递给用户,供用户使用。
控制层:该层是整个系统的业务的入口,能对表示层收集的数据进行简单的处理。
服务组合层:部分复杂的业务流程由服务组合层负责处理。同时控制层的传入该层的消息数据在该层次中进行加密,同时将该加密数据传递给相应的功能组件。同时,系统中流程设计器的可以对业务功能进行建模重组,模型的建模由流程引擎负责,并通过监控机制对建模的过程进行监控和管理。
图1系统结构该层次可以利用单个服务组件处理简单业务,也可以将多种服务组件组合起来处理较为负责的业务。
持久化层:该层为系统数据库的相应访问组件和实现Web服务的具体方式,同时对访问数据库进行策略定义以及对系统日志文件进行处理。
系统结构中同时应用了数据加密技术来确保数据能在网络中的安全的传输,同时对数据结构进行序列化和反序列化处理。各种服务的交互、重组以及管理由服务总线完成, UDDI帮助Web服务提供者在网络上发布服务信息,使Web服务使用者能够发现Web服务。
二、系统功能模块划分
结合实际需求,本文将系统分为5个组成部分,分别为:基本信息管理、儿童保健管理、妇女保健管理、预防接种管理、死亡登记管理。系统功能模块如图2所示。
图2系统功能模块图
5大组成部分,基本囊括了社会各层次人群的需求。每个部分包括的功能模块如下。
(1)基本信息管。负责存储和管理相关卫生服务机构服务人员信息。
(2)儿童保健管理。负责存储和管理18岁以下儿童信息,包括出生证的管理、儿童保健信息管理、伤残儿童的信息管理等功能模块。
(3)妇女保健管理。负责存储和管理适龄妇女信息,包括孕妇信息、高危孕妇信息、产前保健信息、高危产妇的产前筛查与诊断以及新生儿出生缺陷监测等功能模块。
(4)预防接种管理。主要负责存储和管理新生适龄儿童疫苗的接种信息。
(5)死亡登记管。负责存储和管理自然死亡人群的信息。
三、系统设计
(一) 數据库持久化层详细设计
传统信息系统架构中,每当信息系统连接数据库时,数据库的表示层就会产生一个连接请求,建立相应的数据库连接。但如果在短时间之内,数据库表示层产生的连接请求较多,这时系统就会产生连接负担,系统需用大量的资源来存储相应的数据库连接,同时也无法保证数据库中的每个连接能被监控,从而无法确保数据库连接能够正常的工作,进而影响数据库的访问速度和安全性。针对此问题,本文提出了使用SDO技术对数据库进行连接,通过该技术可以使多个数据库实例使用一个数据库连接,从而减少系统开销,保证系统能够运行流畅。同时SDO技术支持访问离线数据模式,通过对数据进行批量处理,从而避免频繁操作一个数据库实例连接,导致的网络不稳定性。
河北大学学报(哲学社会科学版)2014年第1期 SDO技术能够屏蔽底层数据库的异构性,研发工作者不必对底层的数据有较深的了解,只需调用SDO通用方法即可,实现了底层数据与顶层应用技术分离。
图3SDO实现数据保存流程图
Web服务能够提供相应的调用标准,封装其功能,为使用者提供统一服务接口,从而可以忽略Web服务的实现机理,提高服务调用效率。同时Web服务可以屏蔽各种系统的差异性,为数据的分布处理奠定基础。Web服务的实现与相应的服务接口之间具有良好的隔离性,即不管Web服务是如何实现的,只要其接口不变就不会影响正常的服务调用过程,提高系统的灵活性
由于该系统业务繁杂,各功能模块相互影响,因此本文只以妇女保健管理功能为例,对访问底层数据库的web服务进行说明。本文对数据访问服务进行定义,将其命为Data Services。该服务包括get和save两个方法对妇女保健管理业务的主要数据库进行保存操作。get方法为获取业务信息的方法,相对简单,因此本文主要介绍keep方法。其方法形式为, keep(String view,Stringdatum),keep方法中定义的形式参数包括需要保存的数据以及保存数据的相应表名。save方法的功能用于将输入的数据保存到系统相应的数据库的表中。采用SDO实现的将妇女保健管理信息保存到系统数据库中,其流程图如图3所示。
(二) 服务层详细设计
该层是系统的核心部分,业务逻辑的实现即由本层实现。本文仍以妇女保健管理业务功能为例,对服务层的组件进行设计。妇女保健管理业务需要对存储在各医院分系统中的的患者信息进行调用,并在医院数据库端的接口的上进行服务封装,同时对相应服务进行设计,并由各基层医院的服务器对其进行承载。
根据实际情况,各基层医院的数据库将会被调用,因此需要将各数据库对外接口封装成统一的Web服务, 即nosocomium。nosocomium服务包含两个方法: get (String view,String sqls),该方法有两个形式参数, table Names为各个医院服务器上数据库中存储患者信息的存储表, sqls 参数为查询语句,其返回值类型为布尔类型;另一方法为boolean save Person Inforations (String tables,Stringdatum),其中形式参数tables为数据库表名,datum为系统所需数据。利用该方法,患者信息数据可以被保存到基层医院分系统的数据库的相应的表中。
(三)服务组合层详细设计
该层次能够对服务进行统一的组织和协调,进而形成的复杂的业务流程,最后该层次将业务流程以Web的方式对外界进行发布。该层次只需定义相应业务的逻辑关系,业务的实现由调用的服务来具体实现,能够将业务功能的逻辑部分和实现部分进行分离。由于业务流程在系统中被设计成单独的一个层次,因此基层医院可以对相应流程进行快速地、动态地、灵活地配置和发布,使系统能够适应动态变化的业务需求。同样以妇女保健挂历业务为例介绍基于BPEL的服务组合技术实现业务流程的自动化过程。
当进行妇女保健登记业务时,首先需要将相应妇女保健信息存储在医院数据库,然后将保健信息发送到系统数据库中。系统业务流程如下。
医生上网登录系统,将相应的妇女保健信息录入系统数据库中。
提交信息后,系统自动判断是否将患者信息保存到医院数据库服务器端。
如信息被保存到医院数据库中,信息将会被直接发送到系统的核心部分。
如信息不需要被保存到医院服务器数据库中时,需要在医院数据库服务器上数据库中的个人健康档案表为相应患者建立健康档案,再将妇女保健信息推送到核心系统数据库中。
系统的业务流程自动化是基于BPEL技术实现的,该技术能够整合了主系统和分系统的Web服务,不同系统之间的业务将会被整合,从而实现登记业务的完全自动化。妇女保健登记业务的业务流程图如图4所示:
BPEL是一种针对业务流程的执行语言,业务流程和系统参与者的交互是BPEL语言的基础,是一种描述了业务流程的语法,常用于业务流程建模活动。BPEL可以直接调用符合web规范的服务,业务流程的逻辑是通过结构化活动控制的。通过 BPEL流程实现对妇女保健登记业务建模需要用到了BPEL的元素主要包括以下部分:基本活动、结构化活动、错误处理器和补偿处理器。(图4)
图4妇女保健登记业务流程
1.基本活动
BPEL流程中的基本活动定义了相关业务流程的一些基本操作,比如消息事件的接受,服务的调用等。图4业务流程图中录入保健信息和对数据库的操作,分别对应BPEL流程的消息接收活动receive和服务调用活动invoke。系统会通过receive活动接受外部消息从而激活BPEL流程,receive活动的variable属性指定了接受到的消息存储到什么变量,createInstance属性表示当接受到消息后,是否启动一个新的流程实例。
图4中的对数据库的操作都是通过invoke服务实现的,BPEL流程利用invoke来调用流程所需的web服务中的操作。Call中的import指定了调用服务时的需要输入系统的参数,而export方法定义了调用后的返回值,对于单向的调用只需输入参数,Call活动同时也定义了异常捕获机制。
在BPEL流程中,通过赋值活动assign将receive活动中的变量复制给Call中的import,或者将Call的export赋值给其他的变量。BPEL支持4种情况的变量赋值:1)BPEL变量类型;2)assign活动对链接的端点应用进行复制;3)对变量属性进行复制;4)提供表达式来引用需要复制的源和目的。
2.结构化活动
图4中, BPEL的判断流程通过结构化活动if实现,BPEL通过结构化活动对流程中的基本活动的执行顺序进行控制和执行规则进行定义。串行结构sequece中的活动是以其在相应活动中排列的顺序而逐一执行的,图4所展示的业务流程就是一个串行的结构。
3.错误处理器和补偿处理器
根据图4所示的业务流程图进行BPEL建模,当BPEL流程在调用服务中出现异常时,如将妇女保健信息推送到公共卫生管理系统数据库服务的时候出现了异常,这时BPEL通过错误处理器Fault Handler捕获错误,并由Compensation补偿器进行补偿。
四、总结
本文介绍公共卫生系统的需求背景,结合具体的业务需求和SOA架构的特点,提出了相应新的系统架构模型。同时在分析系统业务的基础上,详細划分了系统的功能模块,介绍了每个功能模块包含的子模块和功能。最后介绍了该系统数据库详细设计。
[参考文献]
[1]谢亮.基于J2EE的安全物流信息系统的设计与实现[J].物流技术,2012,31(9):396-399.
[2]吴步丹,金芝.面向服务的建模:一种全过程复用的方法[J].计算机学报,2008,31(8):1293-1308.
[3] 邹永贵,王剑.基于SOA的面向服务LBS[J].重庆邮电大学学报:自然科学版,2008,20(5):610-613.
[4]阮彤,金志超.面向跨企业多方协同应用的Web服务安全模型[J] .计算机工程,2013,39(2):55-66.
[5]徐栋,顾春华.SaaS数据层的多租户设计模式研究[J].计算机应用与软件,2013,30(5):216-219.
[6] 李保栋,孔兰菊.SaaS交付平台多租户数据管理模型研究[J].小型微型计算机系统,2012,33(12).
[7]孔兰菊,李庆忠.一种SaaS交付平台的多租户数据迁移策略[J] .计算机应用与软件,2011,28(11):52-56.
收稿日期:2013-12-05
作者简介:王晓煜(1969—),女,辽宁辽阳人,大连东软信息学院,主要研究方向:协同商务、创新服务。服务层:该层次依据SOA相应规范,定义各种的业务功能服务组件,从而处理各种不同的功能业务。
【责任编辑郭玲】