本发明属于网络安全技术领域,尤其涉及一种基于复杂多任务调度的体检中心内外网数据传输方法及系统。
背景技术:
健康管理作为医疗健康事业发展的重要方向,各级医院纷纷探索健康管理和互联网相结合,提高健康管理服务及用户体验、优化医疗资源利用、降低医疗成本。目前,公立医院都已经建立了比较完备的网络体系环境,严格的网络安全管理制度。公立医院网络具有内外网数据访问隔离,通过网闸摆渡或者防火墙限制,只允许内网访问外网,不允许外网访问内网的特点。
体检中心作为公立医院为数不多的业务营收部门,想要互联网化运营,内外网的复杂业务数据互传必不可少。而且不同公立医院体检中心随着业务模式差异,对业务数据传输的要求也不同(如全天体检还是只上午体检,是否支持现场预约体检等)。
医院现有的业务也有一些内外网数据交换方案,大体思路基本一致。主要是:由内网发起请求,通过http或者socket将医院内网数据“推”到公网互联网平台展示;或者由内网发起请求,将互联网平台数据“拉”入医院内网中。该方案可以在遵循医院网络安全管理制度的基础上,实现基本的数据交换。
现有内外网数据交换方案主要有以下几点缺点:
1.以单一任务数据交换为主,对于复杂业务流程数据交换的数据传输没有考虑。例如挂号网,针对号源数据和订单数据传输;体检报告展示,针对体检报告数据传输。
2.复杂业务数据传输交换,并不是单个任务数据传输交换的叠加。体检中心全流程业务互联网化至少需要订单数据同步、订单回单同步、体检报告同步、单位同步、单项同步、套餐同步等。
(1)多任务同步数据交换会涉及到并发数据传输,对体检系统服务器和数据库会有压力,有可能会拖垮服务器或者数据库;
(2)多任务的业务数据传输对数据传输的质量要求有较高要求,某一个任务的数据传输问题可能会导致其他任务报错或者业务不能执行;
(3)不同医院体检中心业务模式有差异,对于业务数据传输的要求也不一样。
技术实现要素:
本发明的目的在于针对现有技术的不足,提供一种基于复杂多任务调度的体检中心内外网数据传输方法及系统。
本发明的目的是通过以下技术方案来实现的:一种基于复杂多任务调度的体检中心内外网数据传输方法,包括:
在每个医院的内网环境部署至少一个webservice代理节点ws-agent,每个ws-agent具有其对应的业务中间库,通过业务中间库与医院的各个业务系统连接;
在外网的互联网平台部署webservice服务节点ws-mediator,ws-mediator具有web数据库,通过web数据库与各web服务器连接;
每个医院内网环境的ws-agent通过该医院的网闸,与互联网平台的ws-mediator进行数据通信;ws-agent向ws-mediator发起请求,ws-mediator收到请求后在响应中将业务数据返回ws-agent;ws-agent收到业务数据后,再将数据同步到各个业务系统中;
每个ws-agent设置有心跳触发器和任务调度器,ws-mediator设置有agent管理器和任务校验器;ws-agent的请求由心跳触发器控制,心跳一次则触发向ws-mediator发出一次请求,每次心跳通过任务调度器决定业务子任务是否需要通过请求进行相应数据的“推”或者“拉”;每个ws-agent节点初次发起请求时,需向ws-mediator的agent管理器进行注册,通过对ws-agent每次请求信息获取,agent管理器对所有注册过的ws-agent进行管理、监控和报警;任务校验器每次收到请求后,根据业务子任务数据校验任务是否完成。
进一步地,所述业务系统包括his、lis、pacs等。
进一步地,ws-agent向ws-mediator发起的请求有“拉”和“推”两种工作模式:“拉”模式是ws-agent发送请求,将互联网平台数据同步到医院内网的业务系统中;“推”模式是ws-agent发送请求,将医院内网的相关数据同步到互联网平台。
进一步地,所述“拉”模式主要应用在互联网订单同步、体检单位及其属性的同步;所述“推”模式主要应用在体检报告同步、体检完订单数据同步、体检项目同步等。
进一步地,心跳触发器的心跳频率根据业务情况进行配置;任务调度器可以配置业务子任务多少次心跳调度一次或什么时间点起始、终止调度;通过ws-agent的心跳触发器、任务管理器进行二级配置,可以最大限度利用服务器资源并满足业务需要。
进一步地,ws-agent和ws-mediator数据通信的安全性通过https访问和webservice请求报文的数字签名加密技术来保障;ws-agent和ws-mediator之间基于证书的https访问保障通信信道的安全;webservice请求业务数据内容的安全则基于apache的wss4j框架,利用秘钥和数字签名技术在报文发送前后对请求体进行加解密处理来保障。
进一步地,所述业务子任务包括订单同步子任务、回单子任务、体检报告子任务、单位同步子任务、单项同步子任务;
订单同步子任务:将互联网平台订单同步到ws-agent的业务中间库,再通过应用程序轮询或者存储过程触发的方式将数据同步到各个业务系统,并将同步结果和相应的订单状态回写到业务中间库,回传互联网平台;
回单子任务:体检完毕订单状态需要同步给互联网平台,以体检报告出总检结果为标识,判别体检过程是否结束;
体检报告子任务:体检系统将完成的体检报告主动写入业务中间库中,通过ws-agent将数据推送到互联网平台;
单位同步子任务:当互联网平台新增单位或者修改单位时,单位信息将被写入到业务中间库中,体检系统需要读取业务中间库,在体检系统作相应变化,然后回写状态到业务中间库中;当体检系统中单位变化时,同样将变化的单位信息写入到业务中间库中;
单项同步子任务:当体检系统中单项变化时,需要将改变的单项信息写入业务中间库中,ws-agent保证互联网平台的体检项目也会作相应改变。
一种基于复杂多任务调度的体检中心内外网数据传输系统,该系统包括:部署在每个医院内网环境的至少一个webservice代理节点ws-agent和部署在外网互联网环境的webservice服务节点ws-mediator;每个ws-agent通过该医院的网闸,与ws-mediator进行数据通信;
每个ws-agent具有业务中间库、心跳触发器和任务调度器;所述业务中间库用于连接各个业务系统;所述心跳触发器用于控制ws-agent的请求,心跳一次则触发ws-agent向ws-mediator发出一次请求;所述任务调度器用于决定每次心跳业务子任务是否需要通过请求进行相应数据的“推”或者“拉”;ws-agent向ws-mediator发起请求,并在收到ws-mediator发送的业务数据后,将业务数据同步到各个业务系统中;
ws-mediator具有web数据库、agent管理器和任务校验器;所述web数据库用于连接与各web服务器;所述agent管理器用于对所有注册过的ws-agent进行管理、监控和报警;所述任务校验器每次收到请求后,根据业务子任务数据校验任务是否完成;ws-mediator收到ws-agent的请求后,在响应中将业务数据返回ws-agent。
本发明的有益效果是:本发明可以适配多医院体检中心不同业务需求的复杂业务数据交换传输,同时考虑医院体检中心服务器和数据库的并发需求,提供多任务业务数据传输的qos保障。尽管各个医院体检中心的服务器、数据库性能、体检中心运行模式都有差异,但是通过本发明的中心跳触发器和任务调度器的控制,能够有效面对不同机器性能和差异性业务的需求。
附图说明
图1为数据通讯拓补图;
图2为数据通信qos与安全示意图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步详细说明。
本发明提供的一种基于复杂多任务调度的体检中心内外网数据传输方法及系统,实现方式如下:
一、数据通信模式
针对医院网络环境只允许内网到公网的单向访问,我们采用基于反向代理的数据通信模式。
内外网的所有数据通信以webservice代理节点(简称ws-agent)和webservice服务节点(简称ws-mediator)为核心,并可根据业务需求进行节点扩展。数据通信以医院内网环境ws-agent节点为核心,向互联网环境ws-mediator节点发起request请求,ws-mediator节点收到请求后在response响应中将业务数据返回医院内网ws-agent节点。ws-agent节点收到业务数据后,再将数据同步到his、lis、pacs等业务模块中去。该解决方案满既可以满足医院内网对系统核心部件进行有效监控管控的需求,也可以适配医院内外网数据交换通过网闸的单向请求和数据摆渡安全要求,如图1所示。
医院内网的ws-agent节点向互联网环境的ws-mediator节点发送请求有“拉”和“推”两种工作模式。
1)“拉”模式是ws-agent发送请求,将互联网平台数据同步到医院局域网业务系统中。主要应用在互联网订单同步,体检单位及其属性的同步。
2)“推”模式就是ws-agent发送请求,将医院内部相关数据同步到互联网平台。主要应用在体检报告同步,体检完订单数据同步,体检项目同步等。
二、数据qos与安全保障
ws-agent节点和ws-mediator节点之间的网络数据通信基于webservice,分为网络通信层和业务数据层2层,如图2所示。
网络通信层qos通过ws-agent节点心跳触发器、任务调度器和ws-mediator节点的agent管理器来保障。
ws-agent节点请求访问由心跳触发器控制,心跳一次则触发向ws-mediator节点发出一次request,心跳频率可根据业务情况进行配置。每次心跳通过任务调度器决定子任务是否需要通过request进行相应数据的“推”或者“拉”。任务调度器可以配置决定相应子任务多少次心跳调度一次或什么时间点起始、终止调度。
通过ws-agent节点的心跳触发器、任务管理器进行二级配置,可以最大限度利用服务器资源并满足业务需要。例如,订单同步任务属于时效性较高的任务,用户在外网互联网平台上下单,甚至有的用户会在现场扫码关注下单,需要能够立刻得到结果反馈信息。该应用场景可以配置心跳触发器30秒/次心跳任务,配合任务管理器订单同步子任务每次心跳都触发,则订单1分钟内肯定会从外网平台导入到内网体检系统中。而体检报告同步子任务的时效性要求不是很高,但数据量很大,对体检系统数据库服务器和网络带宽有较大压力。可以根据心跳频率配置任务调度器让体检报告子任务每天晚上20点开始调度,凌晨6点停止调度。利用业务系统空闲时间进行体检报告上传,防止工作时间数据量访问过大而影响体检系统正常使用。
内网系统中会有多个ws-agent节点,初次发起请求时,ws-agent需向ws-mediator节点的agent管理器进行注册。通过对ws-agent节点每次请求信息获取,agent管理器对所有注册过的ws-agent节点进行管理、监控和报警,可以有效防止内网ws-agent故障假死,保障通信qos质量。
系统数据通信的安全性通过https访问和webservice请求报文的数字签名加密技术来保障。ws-agent节点和ws-mediator节点之间基于证书的https访问保障通信信道的安全。webservice请求业务数据内容的安全则基于apache的wss4j框架,利用秘钥和数字签名技术在报文发送前后对请求体进行加解密处理来保障。
三、业务数据qos
系统业务数据传输通过ws-agent节点的任务调度器控制,任务可以配置是否开启,也可以根据业务需要进行后续扩充。目前有订单同步子任务、回单子任务、体检报告子任务、单位同步子任务、单项同步子任务。
订单同步:将互联网平台订单同步到ws-agent节点的中间库,再通过应用程序轮询或者存储过程触发的方式将数据同步到his、lis、pacs等业务系统,并将同步结果和相应的订单状态回写到中间库,回传互联网平台。
订单回单:体检完毕订单状态需要同步给互联网平台,主要是体检后针对订单中项目的增减情况是否需要退款。系统以体检报告出总检结果为标识,判别体检过程是否结束。
体检报告同步:体检系统生成的体检报告同步给互联网平台。体检系统需要将完成的体检报告主动写入中间库中,通过ws-agent将数据推送到互联网。
单位同步:当互联网平台新增单位或者修改单位时,单位信息将被写入到中间库中,体检系统需要读取中间库,在体检系统作相应变化,然后回写状态到中间库中;当体检系统中单位变化时,同样将变化的单位信息写入到中间库中。
单项同步:当体检系统中单项变化时,需要将改变的单项信息写入中间库中,ws-agent将保证互联网平台的体检项目也会作相应改变。
数据传输qos控制,通过ws-mediator任务校验器来保障。校验器每次收到https请求后,会根据子任务数据校验任务是否完成。例如,内网ws-agent节点发送订单同步子任务request,ws-mediator节点收到后会将当前外网所有没有导入的订单数据通过response返回ws-agent。ws-agent将订单信息同步到内网体检系统后,会将同步结果写到ws-agent中间表,下次心跳请求时再将信息通过request发送给ws-mediator,任务校验器收到request后会做判断是否当前所有业务任务都已经完成,否则会进行业务错误报警,以保证业务数据传输和处理的完整性和正确性。
上述实施例用来解释说明本发明,而不是对本发明进行限制,在本发明的精神和权利要求的保护范围内,对本发明作出的任何修改和改变,都落入本发明的保护范围。