APP下载

基于Windows Azure云计算的移动医疗健康系统

2015-01-25施荣华彭春华

电子设计工程 2015年5期
关键词:云端应用程序客户端

施荣华,严 恺,彭春华

(中南大学 信息科学与工程学院,湖南 长沙 410083)

云计算是一种基于Internet服务的方式提供动态可伸缩性的虚拟化资源的计算模式。它将计算和处理分布在大量的分布式计算机上,使用户能够根据自身需求将资源切换到相应的计算机和存储系统中,获取相关的应用资源[1]。医疗卫生行业在政策推动下不断优化升级医疗信息化平台,在此影响下,以“云计算医疗信息平台”为核心的信息化集中应用模式应运而生,逐步取代各分散系统为主体的应用模式,提高了医疗机构之间的信息共享能力和医疗信息公共平台的整体服务能力。

智能手机是信息化时代的另一个新兴产物,具有便捷性和智能化的特点[2],利用移动通信技术,智能手机通过无线网络可以随时随地的接入云平台,在移动终端上实现 “云”应用。本文采用Windows Phone智能终端和Windows Azure云技术结合,并应用到医疗系统中,既有效的整合了医疗资源,还提供足不出户的医疗服务和咨询,融合了各方面的优点,适应于时代的发展。

1 Windows Azure云平台概述

Windows Azure微软云计算平台是一种PaaS(Platformas-a-Service)模式[3],包括一个云计算操作系统和一系列为开发者提供的服务。此外,提供云计算相关的基础设施服务,为应用程序创建一个安全、高效的运行环境。主要包括4大组件[4]:

1)Windows Azure组件。位于云计算平台的最底层,提供了一个在微软数据中心服务器上运行应用程序和存储数据的Windows环境,是微软云计算技术的核心。提供五大服务:计算服务、存储服务、Fabric控制器、内容分发网络CDN和Windows Azure Connect。并提供了托管的、可拓展按需应用的计算和存储资源和动态分配资源的管理控制手段。

2)SQL Azure。是微软云中的关系数据库,提供基于SQL Server的关系型数据服务。该数据库简化了数据库的供应和部署,内置强大的容错能力,提供报表服务和数据同步技术。

3)Windows Azure AppFabric。提供基于云中应用的基础架构服务和高层面的中间件服务。实现跨平台,跨编程语言、跨协议的应用和服务,提高了云端的抽象层次,减少了开发复杂度。主要包括服务总线、访问控制和高速缓存3种服务类型。

4)Windows Azure商店。 提供在线的查询、购买云计算环境下的数据集和应用服务。

2 基于Windows Azure医疗健康系统平台的整体架构

基于云计算的医疗健康系统采用.NET框架,部署至Windows Azure云端,构建一个医疗信息化平台(HCS平台),并为医疗机构提供Web接口。为了提供给患者更便捷的医疗服务,开发了基于WP移动手机终端的移动医疗健康系统(MHCS),并通过Web接口接入Windows Azure中的信息平台,实现与HCS平台数据的共享。系统采用多样的访问方式并且融合了最先进的物联网技术,实现患者与医务人员、医疗机构、医疗设备之间的互动,实现医疗信息集中化。系统的整体架构如图1所示。

图1 基于Windows Azure医疗健康系统的整体架构Fig.1 The overall architecture of medical health system based on Windows Azure

基于云计算的移动医疗系统(MHCS)架构的主要设计思路是将医疗信息的处理、计算和存储交给云端,而移动终端在需要获取数据时只需向云端发出HTTP通信请求并获取信息。这一设计理念能够充分发挥云计算快速处理和海量存储的优势,并结合移动终端的便捷性,在降低对设备的硬件要求的同时,带给用户更好的体验。

MHCS平台的架构主要有3层。分别是移动终端应用层、医疗平台管理层和云服务层,如图2所示。

1)云服务层为云平台环境提供基础服务,为上层提供相关的数据处理和技术支持。主要包括各种存储设备物理资源的整合和对软硬件资源的虚拟化[5],并提供相关的计算能力服务、负载均衡处理和调度问题、分布式资源管理、安全管理等。

2)医疗管理服务层是连接应用终端和云服务层的关键。不仅要提供通信接口,还要保证接口的高度可移植性,以适应与不同的云环境,还要提供来自客户端的请求和服务器端的反馈以及终端客户之间的信息交互。相关的用户身份和访问控制的处理,也同样在该层实现并作为应用层的服务器响应[6]。

3)应用层提供直接面对用户的交互平台接口,为用户提供相关的医疗咨询服务和个人健康档案管理的服务功能,通过无线网络方便接入管理服务层进行通信,实现数据共享,完成信息之间的交互[7]。

2.1 通信方式

移动终端与云端通信时,采用HTTP协议向Web Service发送请求建立双方连接。HTTP协议采用请求/响应模型,其中POST请求方法实现数据上传到云端;GET方法从云端的数据库获取相关的查询结果。移动终端之间通信时,MHCS主要是通过Windows Azure云中的Fabric Controller读取程序中相关的配置信息提供低耦合的服务和应用程序的安全连接,接受指令以及回传运行状态数据。首先, 创建一个基于HTTP协议的WCF(Windows Communication Foundation)服务。在WCF服务上注册一个或多个服务总线的终端,服务总线会显示每一个注册的通信终端,并且会给每个终端分配一个具体的URI口令。移动终端就可通过服务总线发现注册在WCF服务上的其他终端。使用ATOM发布协议返回一个AtomPub服务参考文档到代表应用的终端服务总线上去。每个服务总线接受请求后,调用WCF服务显示的终端通信操作。

图2 基于Windows Azure的MHCS系统架构Fig.2 The architecture of medical health care system based on Windows Azure

通信双方使用AppFabric服务总线的开放TCP连接显示终端并保持持续开放状态。使服务总线可以路由到通信对方的终端应用程序。此外,在内部初始化的连接使得消息传回时不会被防火墙阻止。通过AppFabric可将两个移动终端之间看成是通过.NET services直连的全双工应用,并且支持通过NAT创建P2P的直接连接。

2.2 消息推送的实现

在B/S架构的医疗系统中,客户端浏览器只能主动从服务器端获取消息,如果浏览器没有请求,服务器是不可能传输数据给客户端的;另一种情况是应用程序要登录客户端程序之后才能主动去调查其相应的Web服务,以了解是否有等待处理的信息。这样的方式如果使用在移动终端,会导致手机的无线设备频繁打开,严重影响手机的电池续航能力。在MHCS系统中使用Windows Phone推送通知的方式取代主动调查,Web Service能够提醒用户最新的消息通知。具体的步骤如图3所示。

图3 Windows Phone中推送通知的过程Fig.3 The process of push notifications on Windows Phone

1)客户端应用程序请求与 Windows Azure中的 MPNS(Microsoft Push Notification Services)建立通道连接,要求一个该手机终端专用的URI,MPNS使用通道URI响应,将URI传回给客户端。使用HttpNotificationChannel来处理向MPNS要求URI和接收MPNS发来的信息数据。通过HttpNotificationChannel.ChannelUri取得URI,作为云端发送给手机客户端的唯一标识。

2)MHCS移动终端向监视服务 (Web Service或 Cloud Application)发送包含推送通知服务通道URI以及负载的消息,云端使用WCF的REST服务来提供客户端登录URI的入口,取得提交MPNS信息管道URI。

3)当监视服务检测到有信息更新时,利用URI将消息发送给 MPNS。

4)MPNS将消息中继到Windows Phone移动手机终端,由客户端的MHCS应用程序处理收到的推送消息。

根据推送通知的格式和装载量,本系统采用Toast通知格式作为原始数据传递到移动终端,如果移动终端应用程序正在前台运行,系统触发ShellToastNotificationReceived事件,通知消息会发送到应用程序中,并且更新程序状态;如果应用程序在后台运行,系统SHELL会在通知区域里显示Toast消息框。如果该程式变成了墓碑模式(tombstoned),通知者所送出的消息会被暂留在 PCS中,等到应用程序回到启动模式时,保存在PCS中的内容才会被在送达至客户端。

在发送完推送通知之后,MPNS会向服务器端返回一个回执码,表示该消息已经被MPNS接收并将在合适的时机发送给移动终端。如果该条消息不能被发送到客户端,MPNS则会向服务器返回一条错误码。当服务器接收到传递失败的消息后,则会根据需要重新提交这条消息。

2.3 数据存储方式

MHCS系统包括云数据库和本地数据库两种存储方式。

云端存储将Windows Azure存储和SQL Azure兼顾使用。使用Blob Storage存储医疗和二维码图片文件,将它们存放在blob中利用Windows Azure内容传输网络(CDN),使数据缓存能够更接近与用户终端。使用Table Storage解决本地Session状态的缓存问题。

本地数据库是不需要连接网络应用程序就可以访问数据库中的数据。由于手机终端在与云端进行数据通信时会产生大量的数据流量,因此可以利用手机移动终端的本地SQLite数据库或Isolated Storage来缓存某些数据。数据存储在SQLite中,则以数据库文件的形式从SQL Azure中复制到本地SQLite保存起来,若数据在Isolated Storage中,则以缓存文件的方式存储。当用户执行任务时,会首先查询本地SQLite数据库或Isolated Storage中的是否有需要的缓存信息,如果有则直接调用本地缓存,而不再从云端取得数据,从而实现节省数据通信流量的作用。

传统的B/S架构中,客户端数据缓存的策略单一,且在缓存时间内无法更新数据,造成数据脏读。客户端要想获得数据的及时更新,只能通过不断向服务器发送请求的方式来实现。针对这种情况,在本系统中采用云端推送通知服务的机制来改进缓存机制,使服务器主动建立缓存数据更新的消息推送,实现数据列表的动态更新。提高UI用户的交互体验,保证本地缓存数据的可读性。

在服务器端建立一个WCF服务,当缓存数据更新时,则通过WCF服务向云端的MNPS发送一条消息。MNPS再把更新消息路由到客户端。客户端通过Push Client解析数据,然后重新向服务器发起连接请求,加载数据并更新本地缓存。具体的工作流程如图4所示。

图4 推送通知改进数据缓存图Fig.4 Diagram of Push notification to improve data cache

在云端使用Azure table建立一个CacheEntity缓存实体类,用来管理缓存文件目录,实体中包括主键、缓存开始时间、缓存周期、存储模块、存储文件名称和数据类型等属性。在读取缓存文件前通过IsolatedStorageSetting与CacheEntity缓存实体进行关联,关联的方式式主键KEY和缓存文件名统一。通过CacheEntity获取缓存Json格式数据,通过反射的方式获取反序列化转换数据类型。转换成功后更新数据,并反馈到UI上。客户端通过这种方式可以及时更新缓存中的数据。

3 基于Windows Azure的移动医疗健康系统的设计与实现

3.1 移动医疗健康系统的构建

访问http://sql.azure.com网站,通过Windows Live ID账号登录,注册Azure云账户,注册完成后,重定向到网站登录到Azure云平台创建SQL Azure服务器。

Windows Phone手机终端的MHCS基于.NET平台,Sliverlight Framework作为应用程序开发框架,使用基于OAuth 2.0协议的身份验证机制对应用进行身份验证。数据库数据以加密的方式保存在云中的SQL Azure中。

3.2 移动终端实现展示

系统以Windows Phone手机作为MHCS系统的客户端,Windows Azure作为云服务提供者,使用VS2010 SP1+WPSDK作为系统开发平台,C#编程语言进行应用程序的开发。基于Windows Azure的MHCS系统分为普通用户端和医生端两种客户端程序。其中普通用户端主要实现的功能有患者咨询、医生反馈、生理指数管理、健康档案管理、医疗小贴士等。医生端主要实现的功能有问题受理、健康档案查询等。具体的实现效果如图5所示,主要包含系统登陆界面、主菜单界面、以及医生端的咨询问题展示界面和健康档案展示界面。

图5 MHCS系统的主要界面展示Fig.5 The main interface display of mobile health care system

4 结 论

文中研究并实现了基于Windows Azure云计算的移动医疗健康系统,提高了系统的灵活性,为患者提供了足不出户的医疗服务和健康档案的信息管理,具有以下突出优势:1)本系统在患者和专家之间搭建了一条新的桥梁,建立了更便捷的联系方式,使每个患者都可能享受到最优质的医疗服务,可以有效降低误诊率。2)将患者的信息存储在云端的数据库,实现了健康档案的统一管理和医疗信息的共享。医生可以随时随地查看患者的病历,做出最及时最精确的诊断。

移动医疗的发展将会对我国的医疗信息化建设起到极大的推动作用,有广阔的应用前景。

[1]刘鹏.云计算[M].2版.北京:电子工业出版社,2011.

[2]Nkosi M T,Mekuria F.Cloud computing for enhanced mobile health applications[C].2010 IEEE 2nd International Conference on Cloud Computing Technology and Seience,629-633.

[3]赵书兰.Windows Azure云计算实践[M].北京:电子工业出版社,2013.

[4]CHANG Long,GUAN Cong,XU Ji-hui,et al.Paas-Platform for Mobile Health[C].2013 5th International Conference on Computational Intelligence and Communcation Networks,549-552.

[5]Pankaj Deep Kaur,Inderveer Chana.Cloud based intelligent system for delivering health care as a service[J].Computer Methods and Programs in Biomedicine,2014:346-359.

[6]WANG Xin-lei,TAN Yu-bo.Application of cloud computing in the health information system [C].2010 International Conference on Computer Application and System Modeling(ICCASM 2010):179-182.

[7]祝锡永,陆忠芳.基于Google云计算的移动医疗服务平台的研究[J].成组技术与生产现代化,2013,30(1):22-27.ZHU Xi-yong,LU Zhong-fang.Research on a mobile health service platform baesd on google app engine[J].Group Technology&Production Modernization,2013,30(1):22-27.

猜你喜欢

云端应用程序客户端
云端之城
删除Win10中自带的应用程序
如何看待传统媒体新闻客户端的“断舍离”?
谷歌禁止加密货币应用程序
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
行走在云端
云端创意
在云端