施榮華,嚴 愷,彭春華
(中南大學 信息科學與工程學院,湖南 長沙 410083)
云計算是一種基于Internet服務的方式提供動態可伸縮性的虛擬化資源的計算模式。它將計算和處理分布在大量的分布式計算機上,使用戶能夠根據自身需求將資源切換到相應的計算機和存儲系統中,獲取相關的應用資源[1]。醫療衛生行業在政策推動下不斷優化升級醫療信息化平臺,在此影響下,以“云計算醫療信息平臺”為核心的信息化集中應用模式應運而生,逐步取代各分散系統為主體的應用模式,提高了醫療機構之間的信息共享能力和醫療信息公共平臺的整體服務能力。
智能手機是信息化時代的另一個新興產物,具有便捷性和智能化的特點[2],利用移動通信技術,智能手機通過無線網絡可以隨時隨地的接入云平臺,在移動終端上實現 “云”應用。本文采用Windows Phone智能終端和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商店。 提供在線的查詢、購買云計算環境下的數據集和應用服務。
基于云計算的醫療健康系統采用.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]。
移動終端與云端通信時,采用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的直接連接。
在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則會向服務器返回一條錯誤碼。當服務器接收到傳遞失敗的消息后,則會根據需要重新提交這條消息。
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上。客戶端通過這種方式可以及時更新緩存中的數據。
訪問http://sql.azure.com網站,通過Windows Live ID賬號登錄,注冊Azure云賬戶,注冊完成后,重定向到網站登錄到Azure云平臺創建SQL Azure服務器。
Windows Phone手機終端的MHCS基于.NET平臺,Sliverlight Framework作為應用程序開發框架,使用基于OAuth 2.0協議的身份驗證機制對應用進行身份驗證。數據庫數據以加密的方式保存在云中的SQL Azure中。
系統以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
文中研究并實現了基于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.