周深,李嬌,喻洪流,3,倪偉
1.上海理工大學醫(yī)療器械與食品學院康復(fù)工程與技術(shù)研究所,上海市 200093;2.上海康復(fù)器械工程技術(shù)研究中心,上海市 200093;3.民政部神經(jīng)功能信息與康復(fù)工程重點實驗室,上海市 200093
近年來,隨著物聯(lián)網(wǎng)和互聯(lián)網(wǎng)技術(shù)的快速發(fā)展[1],在各行各業(yè)各種基于Web 的設(shè)備監(jiān)控系統(tǒng)應(yīng)運而生。當前康復(fù)設(shè)備主要通過康復(fù)設(shè)備管理系統(tǒng)與人進行交互,多采用C/S (客戶端/服務(wù)器)架構(gòu)[2],患者和醫(yī)護人員只能通過本地客戶端軟件控制康復(fù)設(shè)備、查詢康復(fù)訓練數(shù)據(jù)[3],這給康復(fù)醫(yī)生查詢訓練數(shù)據(jù)進行療效評估、醫(yī)患之間信息交流及設(shè)備管理員及時獲悉設(shè)備異常進行維護帶來很大的不便。
本文提出的基于Web 的康復(fù)設(shè)備監(jiān)控系統(tǒng)設(shè)計與實現(xiàn),采用B/S 架構(gòu)[4],通過該系統(tǒng),康復(fù)設(shè)備可將患者的康復(fù)訓練數(shù)據(jù)實時傳入云端數(shù)據(jù)庫,醫(yī)生可隨時隨地通過瀏覽器獲取患者康復(fù)訓練的數(shù)據(jù),并進行康復(fù)訓練的結(jié)果評估和康復(fù)處方的更新;患者可通過此系統(tǒng)查看自己的康復(fù)訓練記錄和醫(yī)生下達的康復(fù)訓練處方,并可隨時與醫(yī)生進行在線溝通交流;設(shè)備管理員也可借助此系統(tǒng)實現(xiàn)康復(fù)設(shè)備的監(jiān)控和管理,及時獲悉設(shè)備的數(shù)據(jù)信息,便于設(shè)備的維護和更新。
此外,該平臺也為遠程醫(yī)療康復(fù)提供了可能。相對于傳統(tǒng)設(shè)備C/S 架構(gòu)軟件系統(tǒng),B/S 架構(gòu)軟件系統(tǒng)界面以瀏覽器為載體,該系統(tǒng)體系結(jié)構(gòu)允許設(shè)備獨立于它們的位置工作。這使得康復(fù)設(shè)備可以遠程進行治療,而不需要在康復(fù)過程中有專家在場[5]。
本系統(tǒng)采用物聯(lián)網(wǎng)的三層架構(gòu)——感知層、網(wǎng)絡(luò)層、應(yīng)用層[6]搭建。其總體架構(gòu)如圖1 所示,設(shè)備通信層是基于HTTP協(xié)議和Socket[7]技術(shù),通過制定通信協(xié)議,以JSON[8]數(shù)據(jù)格式為載體進行雙方的數(shù)據(jù)交換;服務(wù)器層主要利用MVC[9]設(shè)計模式和J2EE 技術(shù),采用當前流行的Web 框架SSM[10]設(shè)計,由MySQL 數(shù)據(jù)庫負責數(shù)據(jù)存儲;用戶訪問層采用JSP 技術(shù),結(jié)合JavaScript、Ajax[11]實現(xiàn)前后臺動態(tài)交互,通過CSS 定義頁面布局,運用Bootstrap、HighCharts 等框架技術(shù)進行頁面美化設(shè)計。
本文的康復(fù)設(shè)備指中央驅(qū)動式上肢康復(fù)機器人[12](圖2)。該機器人是由上海理工大學康復(fù)工程與技術(shù)研究所研發(fā),適用于腦卒中、外傷和術(shù)后神經(jīng)損傷所致上肢功能障礙患者。它能幫助醫(yī)生為上肢功能障礙患者提供個性化訓練方案,在三維空間里幫助患者完成主、被動模式下的單關(guān)節(jié)或多關(guān)節(jié)復(fù)合的功能訓練。
圖1 云平臺架構(gòu)
圖2 中央驅(qū)動式上肢康復(fù)機器人
圖3 所示上肢康復(fù)機器人的主控制系統(tǒng)基于一主三從式的結(jié)構(gòu),數(shù)據(jù)采集模塊和姿態(tài)控制模塊獨立設(shè)計。在機器人輔助訓練過程中,設(shè)備將自身狀態(tài)信息和患者訓練過程中采集的數(shù)據(jù)經(jīng)過一定的封裝處理,通過內(nèi)置無線模塊與外界相連以實現(xiàn)通信。
康復(fù)設(shè)備要想實現(xiàn)網(wǎng)絡(luò)通信,除了實現(xiàn)以上設(shè)備端設(shè)計外,還需要提供智能網(wǎng)關(guān)作為設(shè)備與平臺服務(wù)器通信的橋梁,設(shè)備采集的數(shù)據(jù)通過網(wǎng)關(guān)才能連接入互聯(lián)網(wǎng)與服務(wù)端通信。網(wǎng)絡(luò)通信實現(xiàn)原理如圖1所示,基于本設(shè)備的功能需求,我們選取DM9000 作為以太網(wǎng)網(wǎng)卡芯片,同時需要RTthread 實時操作系統(tǒng)[13]與lwip 協(xié)議棧共同實現(xiàn)。在RTthread 系統(tǒng)lwip 協(xié)議棧的傳輸層TCP/IP[14]協(xié)議基礎(chǔ)上,通過HTTP 協(xié)議根據(jù)服務(wù)器制定的數(shù)據(jù)上傳接口上傳數(shù)據(jù),并通過Socket套接字實現(xiàn)接收服務(wù)器下發(fā)的指令。
選取當前最流行MVC 業(yè)務(wù)框架SSM[10]進行設(shè)計。其中,Spring 作為容器負責實例化bean 以及管理業(yè)務(wù)組件,SpringMVC[15]負責攔截用戶請求,并匹配控制器執(zhí)行相關(guān)業(yè)務(wù)返回JSP頁面給前端,Mybatis主要負責數(shù)據(jù)庫訪問業(yè)務(wù)[16]。
圖3 中央驅(qū)動式上肢康復(fù)機器人主控制系統(tǒng)
3.1.1實體類設(shè)計
實體類是JAVA 語言中的一個類,這個類與普通意義上的類不同,它代表的是一個實體,實體類通常與數(shù)據(jù)庫聯(lián)系在一起,所謂的實體即數(shù)據(jù)庫中對應(yīng)的一張表。本文中主要有3 類用戶角色,分別是患者、康復(fù)醫(yī)師、設(shè)備管理員,通過對他們權(quán)限及業(yè)務(wù)的分析,考慮Java 語言中繼承關(guān)系[17]可知,本平臺主要涉及的用戶實體類有用戶(User)、醫(yī)生(Doctor)、患者(Patient)、平臺管理員(PlatformAdministrator),用戶業(yè)務(wù)實體類有設(shè)備(Equipment)、設(shè)備數(shù)據(jù)(Equipment Data)、訓練計劃(RehabPlan)、康復(fù)處方(Prescription)、訓練報告(Report)等。經(jīng)過功能需求分析得到實體類UML[18]類圖。見圖4。
3.1.2數(shù)據(jù)庫設(shè)計
從以上UML 類圖看出,圖中實體類之間存在多重關(guān)聯(lián)關(guān)系。醫(yī)生與患者之間為一對多的關(guān)聯(lián)關(guān)系,設(shè)備管理員與設(shè)備之間為一對多的關(guān)聯(lián)關(guān)系,設(shè)備與患者、治療師、設(shè)備數(shù)據(jù)和訓練報告之間為一對多的關(guān)聯(lián)關(guān)系。通過以上分析,在SQLyog 中操作數(shù)據(jù)庫建表,相互關(guān)聯(lián)的表通過相應(yīng)字段作為外鍵設(shè)置關(guān)聯(lián)即可。
在SSM 框架實現(xiàn)的系統(tǒng)中,業(yè)務(wù)邏輯層由SpringMVC 來實現(xiàn),其中的Controller 作為控制器,是View層和Model層之間溝通的橋梁,負責接收前端請求和將請求結(jié)果響應(yīng)給視圖界面;Model即模型層,此處將其細分為Service、DAO 以及數(shù)據(jù)表對應(yīng)的Ja?vaBean三個部分,每個部分實現(xiàn)不同的功能且有層次關(guān)系,下層只能供上層調(diào)用[19]。在Controller層對請求的功能需求進行分析調(diào)用業(yè)務(wù)層Service 模塊的接口,在業(yè)務(wù)層Service 模塊中調(diào)用DAO 層接口對數(shù)據(jù)庫中的數(shù)據(jù)進行增、刪、改、查的操作并將結(jié)果返回給Service模塊和Controller層,Controller 層通過ViewResolver 對象將最終結(jié)果返回給前端界面進行渲染并展示[20]。
圖4 平臺實體UML類圖
該系統(tǒng)主要功能是實現(xiàn)康復(fù)設(shè)備的遠程監(jiān)控,包括用戶界面控制指令實時下發(fā)操控設(shè)備,以及設(shè)備狀態(tài)信息實時上傳到數(shù)據(jù)庫并在前端展示。設(shè)備與平臺服務(wù)器端通信需制定相應(yīng)的請求報文格式,即通信協(xié)議。如圖1 所示,設(shè)備將數(shù)據(jù)上傳至服務(wù)器端和服務(wù)器端向設(shè)備發(fā)送遠程控制指令是通過HTTP 協(xié)議和Socket[7]通信實現(xiàn)的。對指令報文以JSON 形式進行封裝,考慮到上傳信息和遠程控制指令的安全性和準確性,對報文做如下設(shè)計:指令報文包括三部分信息,分別是設(shè)備編號(equID)、控制指令(command)和數(shù)據(jù)內(nèi)容(data)。equID 用來讓服務(wù)器識別該數(shù)據(jù)由哪個設(shè)備上傳和讓設(shè)備識別該指令是否是服務(wù)器端發(fā)送給本設(shè)備的;command 讓設(shè)備根據(jù)指令作出相應(yīng)動作變換;data 是設(shè)備上傳數(shù)據(jù)時的具體數(shù)據(jù)報文,也可以是一個JSON 文本??刂浦噶頙SON 報文如:{“equID”:1,”command”:2,”data”:null}.
服務(wù)器端在控制層EquipmentController 中為設(shè)備提供上傳數(shù)據(jù)信息的接口及下發(fā)指令的接口。在設(shè)備數(shù)據(jù)上傳過程中,服務(wù)器端通過updateEquipmentData()方法接收來自設(shè)備上傳的JSON 數(shù)據(jù),通過轉(zhuǎn)化為Equipment 對象,將相應(yīng)數(shù)據(jù)存入數(shù)據(jù)庫中,醫(yī)生可在前端頁面獲取此信息。在設(shè)備指令下發(fā)過程中,服務(wù)器端通過sendEquipmentCommand()方法接收前端頁面提交的控制指令,并按以上定義好的指令報文形式封裝成JSON 格式,通過Socket 獲取字節(jié)輸出流的OutputStream 對象,再獲取打印流PrintWriter 對象,通過打印流PrintWriter 對象將其通過智能網(wǎng)關(guān)傳送給設(shè)備主控制器,按照預(yù)定義的通信協(xié)議解析執(zhí)行相關(guān)動作命令。
通過對本系統(tǒng)角色和功能的需求分析可知,本系統(tǒng)主要有游客、醫(yī)生、患者、治療師和設(shè)備管理員等用戶,游客可以訪問未登錄時的所有資源,其他4 類用戶通過賬號登錄進入個人中心,個人中心展示了該類角色可訪問的所有資源。
平臺部分展示圖(圖5)中,醫(yī)生登錄到醫(yī)生中心后的界面如圖5(d)所示,包含個人中心、患者管理、設(shè)備管理、工作安排、數(shù)據(jù)統(tǒng)計和站內(nèi)信息,醫(yī)生可對自己的患者進行相關(guān)操作,如查看患者信息、制定康復(fù)訓練計劃、進行在線康復(fù)訓練和制定康復(fù)評估報告等?;颊叩卿浀交颊咧行暮蟮慕缑嫒鐖D5(c)所示,包含個人中心、醫(yī)療狀況、訓練計劃、康復(fù)狀況和站內(nèi)信息,可查看醫(yī)生制定的訓練計劃及完成情況,進行自我康復(fù)評定,查看階段性康復(fù)訓練效果,查看和發(fā)送醫(yī)生信息和系統(tǒng)信息等。管理員登錄到管理員中心后的界面如圖5(b)所示,包含個人中心、設(shè)備管理等菜單,可查看設(shè)備運行期的相關(guān)信息,可對有異常狀態(tài)的設(shè)備進行鎖定等操作。
本節(jié)將對平臺進行有效性和可靠性實驗測試,主要介紹對設(shè)備遠程監(jiān)控的測試。
圖5 平臺部分頁面展示
首先,將該系統(tǒng)進行本地項目打包部署到公網(wǎng)服務(wù)器上,通過登陸自定義的域名便可訪問該平臺,系統(tǒng)默認給定有醫(yī)生、患者、康復(fù)治療師三個測試賬號進行測試,用戶也可以自行注冊體驗對應(yīng)角色功能。在此,我們通過給定的醫(yī)生測試賬號進行登陸后,點擊制定康復(fù)訓練計劃菜單,選定該醫(yī)生對應(yīng)的患者進行康復(fù)訓練計劃制定;點擊“完成”后,服務(wù)器把該計劃下發(fā)至設(shè)備進行相關(guān)訓練;在訓練過程中設(shè)備將傳感器采集的數(shù)據(jù)以1 s 間隔上傳至服務(wù)器端進行保存,同時界面每秒從數(shù)據(jù)庫中讀取一條記錄進行展示。其實時數(shù)據(jù)展示如圖5 f 所示。通過對比其實時展示圖及狀態(tài)標識和設(shè)備的狀態(tài)可知,二者之間存在一致性,動態(tài)曲線圖平均響應(yīng)時間0.49~0.58 s,考慮網(wǎng)絡(luò)等原因延遲,該結(jié)果在可接受范圍內(nèi),基本達到預(yù)期的目標。
實驗結(jié)果說明,本文提出的基于Web 的康復(fù)設(shè)備監(jiān)控系統(tǒng)設(shè)計與實現(xiàn)具有可行性,通過本系統(tǒng)能夠?qū)崿F(xiàn)對康復(fù)設(shè)備及時、準確、有效的遠程監(jiān)控。
本文設(shè)計的基于Web 的康復(fù)設(shè)備監(jiān)控系統(tǒng),利用物聯(lián)網(wǎng)和互聯(lián)網(wǎng)技術(shù),以網(wǎng)頁形式代替?zhèn)鹘y(tǒng)康復(fù)設(shè)備桌面客戶端監(jiān)控系統(tǒng),通過將設(shè)備接入網(wǎng)絡(luò),各用戶可隨時隨地操作帶有瀏覽器的終端設(shè)備即可監(jiān)控設(shè)備、查看信息和處理相關(guān)業(yè)務(wù),為醫(yī)生、患者和管理員等多角色帶來了更好的業(yè)務(wù)體驗。應(yīng)用測試實驗結(jié)果表明,該系統(tǒng)的設(shè)計是有效和可行的。