【作 者】季磊,郭旭,施華宇
解放軍總醫(yī)院計算機應用與管理科,北京市,100853
移動醫(yī)療終端是我們IT部門對我院下一代手持設備的命名,主要為了解決臨床以及相關業(yè)務的移動辦公需求。醫(yī)院對移動設備的需求是多樣性的,比如醫(yī)生需要一種屏幕較大的手持設備來獲取病歷等相關信息以方便查房,同樣的設備也能滿足護士長的交班查房工作;護士需要一種微(?。┬突脑O備進行臨床醫(yī)囑的確認[1],也可能需要一種屏幕稍大的設備在換藥室進行藥品的配置查對;藥師需要一種手持設備方便藥品物資的信息采集;對于管理部門來說手持設備的用處也很多,比如院長關心的醫(yī)療動態(tài)信息,醫(yī)德醫(yī)風評價等等。
上述系統(tǒng)都是針對某一項具體業(yè)務的,而業(yè)務之外需要一個即時通信系統(tǒng)[2-4]。我們希望利用院區(qū)內的無線網(wǎng)絡實現(xiàn)短消息、語音的傳送,成為醫(yī)務人員之間溝通的輔助通信工具。例如,病房或診室里的醫(yī)生可以隨時與院區(qū)內其他位置的醫(yī)護人員聯(lián)系,通過視頻、音頻、文字進行溝通。同時我們認為利用移動醫(yī)療終端可以進行數(shù)字、圖像、語音的綜合傳輸,為遠程醫(yī)療應用提供另一個發(fā)展空間。
本文就如何實現(xiàn)這樣一個通信系統(tǒng)進行了闡述。首先,說明我們的基本需求;然后,介紹了我們自主設計的通訊規(guī)范,具體分析了幾個通信流程,簡要介紹了關鍵技術;最后,給出了我們的下一步目標。
我院的基礎網(wǎng)絡環(huán)境比較好,基本實現(xiàn)了醫(yī)療區(qū)域內部的無線網(wǎng)絡覆蓋,在此基礎上已經(jīng)構建了許多基于無線網(wǎng)絡的應用。由于信息保密的要求,醫(yī)療辦公數(shù)據(jù)要與互聯(lián)網(wǎng)隔絕,因此我們定制的移動醫(yī)療終端設備刪除了手機通訊模塊,只保留Wifi模塊,通過院區(qū)內無線網(wǎng)絡進行數(shù)據(jù)交換。
對于手持終端的功能需求,我們總結出了如下基本條目。
(1)通訊錄
顯示和存儲用戶姓名、性別、所在部門;用戶按照部、科室進行組織;可設定特定用戶是否出現(xiàn)在其他用戶的通訊錄中;提供用戶管理程序,能夠管理用戶的組織結構。
(2)用戶狀態(tài)
終端狀態(tài)分為兩種:在線和離線;系統(tǒng)開機則進入在線狀態(tài),關機則進入離線狀態(tài)。
(3)短消息
向通訊錄中的用戶發(fā)送文字和簡單符號消息;接收方能夠在線接收消息;如果接收方離線,上線后能夠收到此消息;能夠群發(fā)消息;消息內容最大長度500個字;后臺保留短消息發(fā)送記錄,提供后臺查詢功能。
(4)音視頻通話
向通訊錄中的單個用戶發(fā)起通話請求;能夠進行音頻通話;能夠進行視頻通話;發(fā)起方能得知接收方的占線狀態(tài)。
(5)文件傳送
向通訊錄中的單個用戶發(fā)起文件傳送請求;能夠選擇本機文件,包括文本、圖片、音視頻文件;能夠將文件按照在線、離線兩種方式發(fā)送;在線發(fā)送,等待接收方接收,一定時間未接收則提示斷開;離線發(fā)送,在接收方上線后通知接收;后臺不存儲在線文件,離線文件保留7天。
針對上述的功能需求,我們認為關鍵和難點在短消息和通話流程方面。我們設計的基本流程大致步驟如下:
(1)開機
終端從服務器更新通訊錄,開啟終端定時同步服務。
(2)同步
終端的獨立后臺服務,為短消息、通話提供支持。主要工作是定時向服務器發(fā)送同步消息,匯報IP地址、通話狀態(tài),并獲取未接收的短消息和通話記錄信息。
圖1 短消息接收流程圖Fig.1 Receiving flowchart of messages
(3)短消息
采用服務器存儲轉發(fā)機制,所有短消息都在服務器存儲:發(fā)送終端向服務器發(fā)送短消息,服務器解析并存儲,同時為每個接收者創(chuàng)建接收記錄,并置狀態(tài)為未轉發(fā)。如果在這個過程中失敗,則返回發(fā)送端失敗報告。接收終端同步時檢索并接收此短消息,并置狀態(tài)為已轉發(fā)。圖1說明了短消息接收過程。
(4)通話
分為兩個部分:正常流程和例外處理。
正常流程:
· 發(fā)起通話。發(fā)起端向服務器發(fā)送連接請求,服務器在內存新建一條通話記錄,狀態(tài)設置為“請求”。
· 應答。接收端同步時獲取此通話記錄狀態(tài),先將通話記錄狀態(tài)設置為“應答”,然后開啟監(jiān)聽服務。
· 建立通話。發(fā)送端同步時獲取此通話記錄狀態(tài),與接收端開啟通話。
· 同步通話。通話中的發(fā)送端和接收端在同步時都會向服務器匯報狀態(tài)為“通話中”。
· 結束通話。通話結束后,發(fā)送端告知服務器,服務器將內存通話記錄狀態(tài)設置為“結束”,同時保存到數(shù)據(jù)庫并清出內存。
例外處理:
· 接收方無應答。發(fā)起通話中發(fā)起端開啟請求計數(shù)器,每次同步累加請求計數(shù),超出限制則認為通話失敗。
· 接收方占線。發(fā)起通話中服務器查詢通話記錄,如果發(fā)現(xiàn)接收端“通話中”,則返回占線。
· 通話時掉線。通話中的發(fā)送端和接收端在同步時都會向服務器匯報狀態(tài)為“通話中”,服務器更新相關通話記錄中的時刻,稱為“最后通話時刻”。
服務器設置通話監(jiān)控服務,定時處理未正常結束的通話記錄:如果最后通話時刻長時間未更新則認為掉線,服務器存儲通話記錄到數(shù)據(jù)庫并清出內存。
為了方便終端和服務器的交互,我們自定義了一套通信協(xié)議,規(guī)定了上述各個步驟的數(shù)據(jù)交互標準。終端和服務器采用Web服務方式進行交互,以xml文檔作為消息報文。
(1)報文頭部
每個報文以都有固定的頭部,請求報文由終端主動發(fā)往服務端,格式為<mmt><code></code></mmt>,其中mmt是根節(jié)點元素,code表明了消息代碼。
每個請求報文對應一個響應報文,格式為<svr><code></code><result></result><errormsg></errormsg></svr>,其中svr是根節(jié)點元素,code對應請求報文,result和errormsg分別描述了結果和失敗詳細信息。
我們使用五種報文來完成上述通訊業(yè)務,分別是終端開機、終端同步、發(fā)送短消息、發(fā)起通話和結束通話。每個業(yè)務都包含一對請求和響應報文,通過消息代碼表明業(yè)務類型,然后加入各自的特殊元素。下面對其中的同步報文作舉例說明。
(2)同步報文
同步過程是我們的系統(tǒng)中的關鍵部分,短消息的接收、通話的建立都由同步過程來完成。具體的工作包括:匯報終端地址和終端通話狀態(tài);獲取通話記錄狀態(tài);獲取未轉發(fā)短消息。服務器除了返回短消息之外,還要根據(jù)終端的狀態(tài)為請求通話的雙方作通話連接的準備,或者記錄最后通話時間。以下是報文格式。
服務器端我們使用.net作為開發(fā)平臺,以Web服務形式與終端交換數(shù)據(jù)。后臺采用Oracle作為存儲,內容包括終端信息、終端通訊錄、短消息記錄和通話記錄。
客戶端應用構建在Android[5]平臺之上,使用java開發(fā)語言。后臺采用SQLite[6]存儲,內容包括聯(lián)系人、短消息記錄和通話記錄,數(shù)據(jù)均來自服務器端。
即時通信是我們?yōu)橐苿俞t(yī)療終端開發(fā)的一個獨立功能,它與醫(yī)院業(yè)務沒有直接的關系,主要目的是方便溝通并且做到信息保密。我們系統(tǒng)的特點是自主設計了一套通信規(guī)范,形成了一套通信協(xié)議,比較好地解決了通訊效率、終端運算能力等問題。
系統(tǒng)目前還處于開發(fā)當中,已經(jīng)實現(xiàn)了服務器、手持終端的大部分功能。后續(xù)還要加入PC終端,并且進行一定用戶量的測試,最終達到一千個終端同時在線使用的目標。
[1]季磊,薛萬國.網(wǎng)絡模式下醫(yī)囑閉環(huán)管理應用模式探索[J].中國數(shù)字醫(yī)學.2011,6(10): 74-76.
[2]羅偉.基于Android平臺的即時通訊系統(tǒng)的研究與實現(xiàn)[D].長沙:湖南師范大學,2009
[3]陳武.基于XMPP的企業(yè)級即時通信系統(tǒng)研究與實現(xiàn)[D].武漢:武漢理工大學,2009
[4]馬志強.基于Android平臺即時通信系統(tǒng)的設計與實現(xiàn)[D].北京:北京交通大學,2009
[5]蓋索林.Google Adnroid開發(fā)入門指南[M].北京: 人們郵電出版社,2009
[6]About SQLite[EB/OL].http://www.sqlite.org/about.html,2012-8-3