【作者】陳俊發(fā),卓勇,劉祖國,陳延平
1 廈門大學(xué)機(jī)電系,廈門市,361005
2 廈門大學(xué)醫(yī)學(xué)院,廈門市,361005
基于Web的遠(yuǎn)程裂隙燈顯微鏡診查系統(tǒng)
【作者】陳俊發(fā)1,卓勇1,劉祖國2,陳延平1
1 廈門大學(xué)機(jī)電系,廈門市,361005
2 廈門大學(xué)醫(yī)學(xué)院,廈門市,361005
為了實現(xiàn)遠(yuǎn)程操控裂隙燈顯微鏡進(jìn)行眼科會診,并直觀地顯示遠(yuǎn)程端的裂隙燈顯微鏡的實時狀態(tài),該文設(shè)計了基于B/S結(jié)構(gòu)的遠(yuǎn)程裂隙燈顯微鏡診查系統(tǒng)。將裂隙燈顯微鏡架構(gòu)于網(wǎng)站系統(tǒng)上,實現(xiàn)了遠(yuǎn)程操控和圖像數(shù)據(jù)的實時采集與傳輸。并利用WebGL技術(shù)將建立的裂隙燈顯微鏡三維模型在網(wǎng)頁中進(jìn)行渲染,實現(xiàn)在網(wǎng)頁上顯示裂隙燈顯微鏡的三維運動學(xué)仿真。實際應(yīng)用結(jié)果能夠良好地展現(xiàn)遠(yuǎn)程會診系統(tǒng)的實時交互。
裂隙燈顯微鏡;遠(yuǎn)程會診;瀏覽器和服務(wù)器結(jié)構(gòu);WebGL
裂隙燈顯微鏡,是眼科檢查中常用的診斷儀器,裂隙燈顯微鏡的基本工作原理是將具有高亮度的裂隙光帶成一定角度照射到眼睛的被檢部位,然后利用雙目顯微鏡來觀察眼睛深部的病變組織[1]。隨著信息技術(shù)的發(fā)展,出現(xiàn)了數(shù)字化裂隙燈顯微鏡,與傳統(tǒng)的裂隙燈顯微鏡相比,數(shù)字化裂隙燈顯微鏡具有對圖片編輯、存儲等功能[2-3]。
目前國內(nèi)裂隙燈顯微鏡診查基本都是醫(yī)生與患者面對面地進(jìn)行診查,然而在醫(yī)生不在現(xiàn)場,患者又急切需要治療的情況下會造成很大的不便,特別在偏僻的山區(qū)和偏遠(yuǎn)的島嶼等醫(yī)學(xué)資源匱乏的地區(qū),病患更是無法得到治療。隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,國外開始研究基于C/S結(jié)構(gòu)的遠(yuǎn)程裂隙燈顯微鏡診查系統(tǒng),該系統(tǒng)解決了會診過程中地理相隔的問題[4-5]。但由于該系統(tǒng)采用C/S結(jié)構(gòu),需要在客戶機(jī)上安裝相應(yīng)的軟件才能進(jìn)行會診,而且C/S結(jié)構(gòu)具有兼容性差,不能快速安裝和配置等缺點。
本文將裂隙燈顯微鏡與網(wǎng)絡(luò)技術(shù)相結(jié)合,設(shè)計了一套基于B/S結(jié)構(gòu)的遠(yuǎn)程裂隙燈顯微鏡診查系統(tǒng),實現(xiàn)了遠(yuǎn)程操控裂隙燈顯微鏡來進(jìn)行會診,并在網(wǎng)頁上仿真遠(yuǎn)程裂隙燈顯微鏡的實時狀態(tài)。基于WebGL建立遠(yuǎn)程遙控設(shè)備模型的實時跟蹤顯示,是整個遠(yuǎn)程操作系統(tǒng)可視化的一個亮點,它能直觀地展示平臺的狀態(tài),便于醫(yī)生在會診過程中觀察遠(yuǎn)程裂隙燈顯微鏡的運動情況,及時對裂隙燈顯微鏡的運動狀態(tài)進(jìn)行分析和調(diào)整。
1.1系統(tǒng)的總體結(jié)構(gòu)
系統(tǒng)的總體結(jié)構(gòu)如圖1所示。將系統(tǒng)的結(jié)構(gòu)體系分為3層:瀏覽器層、服務(wù)器層和裂隙燈顯微鏡系統(tǒng)。
瀏覽器層 在個人計算機(jī)上安裝了瀏覽器的客戶端,通過互聯(lián)網(wǎng)向Web服務(wù)器提交請求,待服務(wù)器響應(yīng)請求后,將請求結(jié)果返回并呈現(xiàn)在網(wǎng)頁上。該層的主要功能是顯示遠(yuǎn)程裂隙燈顯微鏡實時拍攝的患者眼睛檢查圖片,實現(xiàn)遠(yuǎn)程會診。為能夠?qū)颊叩难劬M(jìn)行全方位的檢查,需要在檢查過程中更改裂隙燈顯微鏡的照射位置,所以在頁面上設(shè)有遠(yuǎn)程控制按鈕,能夠發(fā)送控制命令給遠(yuǎn)程端,以此實現(xiàn)遠(yuǎn)程操控裂隙燈顯微鏡,并運用WebGL技術(shù)在網(wǎng)頁上實現(xiàn)對遠(yuǎn)程裂隙燈顯微鏡的實時跟蹤顯示。
服務(wù)器層 包括Web服務(wù)器和數(shù)據(jù)庫服務(wù)器。Web服務(wù)器的主要功能是接受來自瀏覽器的用戶請求,然后執(zhí)行相應(yīng)的業(yè)務(wù)邏輯處理和數(shù)據(jù)庫連接等操作[6],Web服務(wù)器封裝用戶請求,對不同的請求,執(zhí)行不同的響應(yīng):(1)將對數(shù)據(jù)庫的操作請求轉(zhuǎn)換為結(jié)構(gòu)化查詢語言SQL向數(shù)據(jù)庫服務(wù)器提交數(shù)據(jù)處理申請,待數(shù)據(jù)庫處理請求后,將處理的結(jié)果返回給Web服務(wù)器,再由Web服務(wù)器傳回瀏覽器層;(2)將對遠(yuǎn)程操控的請求直接發(fā)給裂隙燈顯微鏡系統(tǒng),通過之間的通訊協(xié)議,實現(xiàn)遠(yuǎn)程操控裂隙燈顯微鏡運動。數(shù)據(jù)庫服務(wù)器的主要功能是接受Web服務(wù)器對數(shù)據(jù)的操作請求,實現(xiàn)對數(shù)據(jù)庫查詢、修改、更新等操作,并通過與裂隙燈顯微鏡系統(tǒng)的連接,儲存裂隙燈顯微鏡系統(tǒng)實時拍攝并上傳的病患的眼睛診查圖片。
裂隙燈顯微鏡系統(tǒng) 由裂隙燈顯微鏡和下位機(jī)組成。裂隙燈顯微鏡主要包括運動滑臺、目鏡部分、照明部分、頭架部分、數(shù)碼攝像頭等,并在需要運動的部分添加電機(jī)驅(qū)動裝置。下位機(jī)主要用來驅(qū)動裂隙燈顯微鏡運動,控制拍照,上傳圖片。下位機(jī)與服務(wù)器層通過接口進(jìn)行通信,當(dāng)下位機(jī)接收到Web服務(wù)器發(fā)送過來的控制命令后,根據(jù)之間的通訊協(xié)議,解析控制命令,驅(qū)動電機(jī),使裂隙燈顯微鏡朝著給定的位置動作;當(dāng)啟動裂隙燈顯微鏡進(jìn)行檢查時,裂隙燈顯微鏡的數(shù)碼攝像頭拍攝病人眼睛被檢查圖片,然后存儲到數(shù)據(jù)庫服務(wù)器上。

圖1 系統(tǒng)的總體結(jié)構(gòu)圖Fig.1 Overall structure °f the system
2.1網(wǎng)站設(shè)計和實現(xiàn)
本系統(tǒng)基于 J2EE 中的Struts2與Spring兩大框架開發(fā)B/S架構(gòu)的裂隙燈診查系統(tǒng)網(wǎng)站。網(wǎng)站采用三層架構(gòu),目的是為了實現(xiàn)網(wǎng)站系統(tǒng)的高內(nèi)聚性,降低模塊之間耦合度,便于系統(tǒng)開發(fā)和維護(hù)。
2.1.1網(wǎng)站三層架構(gòu)
表現(xiàn)層 是用戶看到并與之交互的視圖,它顯示的是整個系統(tǒng)所實現(xiàn)的功能界面。表現(xiàn)層可以對用戶界面進(jìn)行同步更新,通過JSP頁面顯示相關(guān)數(shù)據(jù),并提交用戶輸入的業(yè)務(wù)處理,但表現(xiàn)層沒有進(jìn)行實際的業(yè)務(wù)處理,而是將業(yè)務(wù)處理交給業(yè)務(wù)邏輯層處理。本文主要采用超文本標(biāo)記語言HTML、JSP的EL(Expressi°n Language)、jQuery庫和CSS等設(shè)計動態(tài)網(wǎng)頁界面,創(chuàng)建動態(tài)菜單欄和簡潔大方的列表框,給用戶提供一個舒適、友好的網(wǎng)站界面,并滿足用戶與系統(tǒng)的實時交互。
業(yè)務(wù)邏輯層 針對具體問題的操作,接受表現(xiàn)層傳來的數(shù)據(jù)傳輸對象,封裝業(yè)務(wù)請求,并調(diào)用數(shù)據(jù)訪問層。本文編寫Acti°n控制類來完成流程控制和請求響應(yīng),根據(jù)對應(yīng)的響應(yīng)結(jié)果返回到表現(xiàn)層的視圖中,具體的業(yè)務(wù)代碼交給Service類負(fù)責(zé)實現(xiàn)。根據(jù)系統(tǒng)的需要,業(yè)務(wù)邏輯經(jīng)常修改和擴(kuò)充,所以需要保持伸縮性和擴(kuò)展性,本文創(chuàng)建Service接口,根據(jù)目前的功能或業(yè)務(wù),接收來自Acti°n類的業(yè)務(wù)處理請求,讓創(chuàng)建的Service接口實現(xiàn)類ServiceImpl調(diào)用數(shù)據(jù)訪問層,以此來降低耦合,并根據(jù)實際需要來進(jìn)行多態(tài)繼承和重載等。
數(shù)據(jù)訪問層 該層所做事務(wù)直接操作數(shù)據(jù)庫,針對數(shù)據(jù)的增添、刪除、修改、查找等。本文編寫DAO類作為數(shù)據(jù)訪問接口,實現(xiàn)對數(shù)據(jù)庫的操作,包括加載數(shù)據(jù)庫連接驅(qū)動,創(chuàng)建數(shù)據(jù)庫連接,根據(jù)業(yè)務(wù)邏輯的數(shù)據(jù)操作請求,轉(zhuǎn)換為SQL命令,直接對底層數(shù)據(jù)庫的CURD(Create、Update、Read、Delete)操作,并將操作結(jié)果存儲在Java集合的List和Map中,便于業(yè)務(wù)邏輯層提取數(shù)據(jù)。
2.1.2Spring 與 Sturts2 兩大框架技術(shù)整合三層結(jié)構(gòu)
Struts2框架 利用Struts2框架實現(xiàn)MVC(M°del-View-C°ntr°ller)模式,MVC是一種設(shè)計模式,它將應(yīng)用程序的輸入、處理和輸出分開,即將前臺頁面顯示和后臺邏輯處理分開,把業(yè)務(wù)邏輯處理交給業(yè)務(wù)邏輯層,簡化JSP頁面代碼,便于系統(tǒng)維護(hù)。本文編寫的M°del為Acti°n類,View為JSP文件,C°ntr°ller為struts.xml文件。JSP頁面主要用于顯示,根據(jù)用戶的請求,由struts.xml決定調(diào)用相應(yīng)的Acti°n類進(jìn)行業(yè)務(wù)處理,待處理后將結(jié)果返回JSP頁面,如圖2所示。

圖2 Struts2框架圖Fig.2 The framew°rk °f Struts2
Spring框架 實現(xiàn)控制反轉(zhuǎn)I°C(Inversi°n °f C°ntr°l),整合三層架構(gòu),降低層與層之間的耦合,控制權(quán)由內(nèi)部代碼中轉(zhuǎn)到了外部容器,類之間的依賴關(guān)系由容器在運行期決定,如圖3所示。本文將Service類注入到Acti°n類中,將DAO類注入到Service類中。Spring容器就是一個XML文件,當(dāng)需要修改類之間的依賴關(guān)系,只要修改XML即可[7]。并用Spring配置了C3P0數(shù)據(jù)庫連接池,管理數(shù)據(jù)庫連接操作包括初始連接數(shù)、連接的上下限數(shù)以及每個連接的最大使用次數(shù)、最大空閑時間等。

圖3 Spring框架圖Fig.3 The framew°rk °f Spring
2.2裂隙燈顯微鏡的改造
對裂隙燈顯微鏡進(jìn)行改造,給各個需要運動的部分添加電機(jī)驅(qū)動,主要是運動滑臺的X軸、Y軸、Z軸方向運動和目鏡部分與照明部分的繞軸轉(zhuǎn)動。
將裂隙燈顯微鏡與下位機(jī)相連,直接由下位機(jī)控制,下位機(jī)接收網(wǎng)站服務(wù)器發(fā)送過來的控制命令,根據(jù)控制命令里的速度和位移等參數(shù),驅(qū)動電機(jī)運動,實現(xiàn)遠(yuǎn)程操作。另一方面,在開始進(jìn)行遠(yuǎn)程會診時,下位機(jī)啟動裂隙燈顯微鏡的數(shù)碼攝像頭,實時拍照并將所拍的圖片上傳至數(shù)據(jù)庫服務(wù)器中。
3.1建立三維模型
由于實際的裂隙燈顯微鏡的零部件之間具有父子層級關(guān)系,所以需要給模型添加層級結(jié)構(gòu),并且最后要導(dǎo)出Three.js支持的3D文件格式COLLADA。COLLADA是面向交互式3D應(yīng)用程序的數(shù)字資產(chǎn)交換方案,它以XML的文件格式儲存了模型的幾何數(shù)據(jù)、材質(zhì)、光照、層級結(jié)構(gòu)等[8]。本文選用3DS MAX三維動畫渲染和制作軟件來完成模型的編輯和導(dǎo)出。
由于3DS MAX直接建模比較麻煩,本文采用Cre°三維繪圖軟件建立裂隙燈顯微鏡三維模型。首先根據(jù)裂隙燈顯微鏡實際尺寸,畫出各個組成零部件的大體輪廓,簡化細(xì)節(jié),建立裝配圖,然后導(dǎo)出STEP文件并導(dǎo)入到3DS MAX中,并用3DS MAX的場景圖編輯器,給三維裝配模型的各零件添加層級。由于導(dǎo)入的STEP文件與3DS MAX的坐標(biāo)系不同,還需要重新調(diào)整模型的坐標(biāo)系,最后導(dǎo)出COLLADA文件。導(dǎo)出流程如圖4所示。

圖4 COllADA文件導(dǎo)出流程圖Fig.4 The exp°rted fl°wchart °f COllADA file
3.2仿真運動的實現(xiàn)
Three.js是JavaScript編寫的WebGL第三方庫,是一款運行在瀏覽器中的3D引擎,可以創(chuàng)建各種三維場景,包括了攝影機(jī)、光影、材質(zhì)等各種對象[9]。將三維模型載入到Three.js中,由Three.js的內(nèi)置函數(shù)遍歷模型的層級,找到相應(yīng)部分的零件,并給零件添加運動軌跡,然后在頁面中為各個零件添加按鈕響應(yīng)監(jiān)聽[10]。如圖5所示,為三維模型在WebGL的渲染流程圖。

圖5 三維模型的WebGL渲染流程圖Fig.5 WebGL rendering pr°cess °f 3D m°del
為更直觀地展現(xiàn)交互性,在顯示頁面上添加了一個運動數(shù)值顯示列表,并在仿真運動界面上增添了頁面交互功能,添加了鼠標(biāo)點擊選擇、旋轉(zhuǎn)、放大、移動等功能,讓整個仿真運動頁面更豐富。
本文采用J2EE為平臺,運用Struts2和Spring框架技術(shù),結(jié)合jQuery,CSS,WebGL等技術(shù)開發(fā)了基于Web的遠(yuǎn)程裂隙燈顯微鏡診查系統(tǒng)。整個系統(tǒng)已成功運行,系統(tǒng)主要運行界面如圖6所示。網(wǎng)站頁面左邊為實時裂隙燈診查畫面,左下方顯示的是病人的基本信息,右上方為仿真裂隙燈系統(tǒng)的運動界面,右下方顯示的是控制按鈕和位移顯示框。

圖6 系統(tǒng)運行界面Fig.6 Operating interface °f the system
本文提出了一種基于Web的裂隙燈顯微鏡診查系統(tǒng),實現(xiàn)了遠(yuǎn)程會診和遠(yuǎn)程狀態(tài)可視化。結(jié)合醫(yī)療儀器和網(wǎng)絡(luò)信息技術(shù),實現(xiàn)了遠(yuǎn)程操控裂隙燈顯微鏡進(jìn)行眼科會診,為遠(yuǎn)程醫(yī)療增添了一種新的診查方法。同時,運用WebGL技術(shù)對遠(yuǎn)程操控設(shè)備實時跟蹤顯示,便于及時對系統(tǒng)的運動狀態(tài)進(jìn)行分析和調(diào)整。
[1] 亓昊慧. 裂隙燈顯微鏡及其在視光學(xué)中的應(yīng)用[J]. 中國醫(yī)療器械雜志, 2013, 37(6): 437-440.
[2] 馬玉瑩. 數(shù)碼裂隙燈顯微鏡在隱形眼鏡驗配中的應(yīng)用[J]. 中國眼鏡科技雜志, 2011, (9): 132-134.
[3] 汪東生, 王寧利. 裂隙燈顯微鏡圖像網(wǎng)絡(luò)信息系統(tǒng)在眼科圖像及病歷資料管理中的應(yīng)用[J]. 中華眼科醫(yī)學(xué)雜志, 2012, 2(1) : 52-54.
[4] Cheung CY, Li H. Lam°ureux EL, et al. Validity °f a new c°mputer-aided diagn°sis imaging pr°gram t° quantify nuclear cataract fr°m slit-lamp ph°t°graphs[J]. Investigat Ophthalm°l & Vis Sci, 2011, 52(3): 1314-1319.
[5] G° K, Kashiwagi K, Tanabe N, et al. Iterative design °f Tele°perative Slit Lamp Micr°sc°pes f°r Telemedicine[C]. 4th Int C°nf Pervas C°mput Tech Healthcare, 2010: 1-4.
[6] 李萬莉, 項著廷. 基于B/S結(jié)構(gòu)遠(yuǎn)程監(jiān)測系統(tǒng)軟件設(shè)計[J]. 計算機(jī)技術(shù)與發(fā)展, 2015, (3): 15-18.
[7] 張俐, 張維璽. 基于JavaEE的固定資產(chǎn)管理系統(tǒng)的設(shè)計與實現(xiàn)[J]. 計算機(jī)工程與設(shè)計, 2009, 30(16): 3797-3800.
[8] Turk°wski R. Enabling the Immersive 3D Web with COLLADA and WebGL[M]. Beavert°n: the Khr°n°s Gr°up, 2010.
[9] 劉維峰, 左澤軍, 趙利強(qiáng), 等. 基于HTML5的生產(chǎn)裝置實時監(jiān)測可視化[J]. 計算機(jī)工程與設(shè)計, 2015, (3): 809-813.
[10] Parisi T. WebGL: up and running [M]. Oreilly Media, 2012.
Remote Slit Lamp Microscope Consultation System Based on Web
【 Writers 】CHEN Junfa1, ZHUO Yong1, LIU Zuguo2, CHEN Yanping1
1 Department of Mechanical and Electrical Engineering, Xiamen University, Xiamen, 361005
2 Medical college, Xiamen University, Xiamen, 361005
【 Abstract 】To realize the remote operation of the slit lamp microscope for department of ophthalmology consultation, and visual display the real-time status of remote slit lamp microscope, a remote slit lamp microscope consultation system based on B/S structure is designed and implemented. Through framing the slit lamp microscope on the website system, the realtime acquisition and transmission of remote control and image data is realized. The three dimensional model of the slit lamp microscope is established and rendered on the web by using WebGL technology. The practical application results can well show the real-time interactive of the remote consultation system.
slit lamp microscope, remote consultation, B/S, WebGL
TP319
A
10.3969/j.issn.1671-7104.2015.06.004
1671-7104(2015)06-0403-04
2015-07-20
陳俊發(fā),E-mail: 1078302092@qq.c°m
卓勇,E-mail: zhu°y°ng@xmu.edu.cn