郭慶 李豪杰 蘇海濤
摘 要: 針對(duì)傳統(tǒng)心電分析系統(tǒng)一般運(yùn)行在電腦客戶端這一局限性,提出一種基于Android平臺(tái)的心電分析系統(tǒng)。根據(jù)實(shí)際需求,系統(tǒng)采用C/S模式,結(jié)合Android平臺(tái)的特點(diǎn),完成對(duì)客戶端軟件系統(tǒng)的開發(fā),同時(shí)闡述系統(tǒng)實(shí)現(xiàn)過程中的一些主要算法,如R波檢測(cè)、心律失常診斷和心電濾波器的設(shè)計(jì)等。通過對(duì)麻省理工學(xué)院心電數(shù)據(jù)庫MIT?BIH中數(shù)據(jù)的分析,驗(yàn)證了算法的正確性。測(cè)試結(jié)果表明,該系統(tǒng)能滿足醫(yī)療終端的應(yīng)用需求。
關(guān)鍵詞: Android; 心電分析; R波檢測(cè); 心電濾波; MIT?BIH
中圖分類號(hào): TN99?34; TP311 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2017)20?0052?04
Abstract: In view of the limitation for ECG analysis system runing generally on the PC clients, a kind of ECG analysis system based on Android platform is proposed. C / S mode is adopted in the system according to the actual demands. The client software system was developed in combination with the characteristics of the Android platform. Some main algorithms in the processes of system implementation (such as R wave detection, arrhythmia diagnosis, ECG filter design, etc) are elaborated. By analyzing the data in MIT?BIH arrhythmia database of Massachusetts Institute of Technology, the correctness of the algorithm was verified. The test results show that the system can meet the application requirements of medical devices.
Keywords: Android; ECG analysis; R wave detection; ECG filtering; MIT?BIH
0 引 言
在臨床醫(yī)學(xué)里,心電信號(hào)直觀地體現(xiàn)了心臟跳動(dòng)的整個(gè)過程,因此實(shí)時(shí)監(jiān)測(cè)心電信號(hào)具有十分重要的意義。世界衛(wèi)生組織發(fā)表報(bào)告稱,心血管疾病已經(jīng)成為威脅人生命的主要?dú)⑹?,根?jù)最新的醫(yī)學(xué)研究報(bào)告顯示,其發(fā)病率呈上升之勢(shì)。而傳統(tǒng)的醫(yī)療體系存在一些不足,如醫(yī)療診治方式比較固化和老套、醫(yī)療信息的存儲(chǔ)孤立,無法共享等。隨著科技的發(fā)展,傳統(tǒng)的只能運(yùn)行在PC端的心電分析系統(tǒng)已經(jīng)不能滿足患者和醫(yī)師實(shí)時(shí)監(jiān)控生理參數(shù)的需求。本文介紹一種基于移動(dòng)平臺(tái)的心電分析系統(tǒng),主要包括用戶信息管理、心電信號(hào)特征值提取、心律失常判別、診斷報(bào)告生成及異常報(bào)警等部分。
Android和IOS是當(dāng)下最火爆的兩款手機(jī)操作系統(tǒng),但I(xiàn)OS系統(tǒng)只能運(yùn)行在蘋果公司旗下的iPhone手機(jī)上,價(jià)格昂貴,Android系統(tǒng)可以運(yùn)行在不同廠商的手機(jī)上,便于移植,價(jià)格便宜。谷歌公司給開發(fā)者提供了統(tǒng)一的API,并且支持更多的第三方庫,促使Android系統(tǒng)迅猛發(fā)展,并且應(yīng)用范圍越來越廣,用戶越來越多,市場(chǎng)占有率穩(wěn)居第一。因此,本文將以Android平臺(tái)作為心電分析軟件的設(shè)計(jì)與實(shí)現(xiàn)平臺(tái)。
1 軟件需求分析與系統(tǒng)方案設(shè)計(jì)
1.1 功能需求
心電分析軟件首先應(yīng)該能夠顯示動(dòng)態(tài)的心電圖,其次當(dāng)設(shè)備采集到心電信號(hào)并發(fā)送給手機(jī)客戶端后,軟件系統(tǒng)對(duì)數(shù)據(jù)進(jìn)行簡(jiǎn)單分析并把數(shù)據(jù)打包和封裝,然后發(fā)送給中心服務(wù)器,便于醫(yī)師進(jìn)一步診斷。
1.2 非功能需求
根據(jù)實(shí)時(shí)性要求,要使軟件做到實(shí)時(shí)反應(yīng),必須保證結(jié)構(gòu)設(shè)計(jì)合理,避免耗時(shí)的操作在主線程里。由于面對(duì)的人群比較廣泛,必須擁有友好的用戶交互功能。Android智能手機(jī)的屏幕尺寸較小,需通過優(yōu)化各個(gè)模塊的布局以達(dá)到良好的顯示效果。
1.3 系統(tǒng)框架
系統(tǒng)采用客戶機(jī)與服務(wù)器的模式,方便實(shí)現(xiàn)數(shù)據(jù)和視圖的分離,簡(jiǎn)化整個(gè)系統(tǒng)的復(fù)雜度??蛻魴C(jī)和服務(wù)器之間采用發(fā)展成熟的HTTP協(xié)議通信,減少設(shè)計(jì)通信協(xié)議的麻煩。系統(tǒng)框圖如圖1所示。
2 客戶端設(shè)計(jì)與實(shí)現(xiàn)
客戶端在Android平臺(tái)上運(yùn)行,主要由Java語言和XML語言編寫,開發(fā)環(huán)境為Eclipse[1]。
2.1 功能設(shè)計(jì)
系統(tǒng)需要完成用戶管理、數(shù)據(jù)查看、心電分析、診斷報(bào)告四部分功能。其中用戶管理部分包括用戶的創(chuàng)建、修改、切換和刪除四部分功能;數(shù)據(jù)查看部分包含心電圖回放功能和分析報(bào)告查看功能;心電分析是核心部分,涉及到各種算法的調(diào)用;診斷報(bào)告主要完成對(duì)分析報(bào)告的生成和發(fā)出異常報(bào)警信息。
2.2 心電濾波器設(shè)計(jì)
心電信號(hào)的特點(diǎn)是:低頻性、微弱性、隨機(jī)性。隨機(jī)性主要是指心電信號(hào)極易受到呼吸狀態(tài)等生理因素的影響,同時(shí)又容易受到50 Hz工頻信號(hào)的干擾。因此,需要設(shè)計(jì)合適的濾波器對(duì)心電信號(hào)進(jìn)行濾波處理。
數(shù)字濾波器中,較為常見的是FIR濾波器和IIR濾波器。IIR濾波器計(jì)算量小、使用較為方便簡(jiǎn)單,F(xiàn)IR濾波器有嚴(yán)格的相位特性。為了結(jié)合這兩種濾波器的優(yōu)點(diǎn),Van Gerwan.etal提出了一種新型的整系數(shù)濾波器結(jié)構(gòu)[2],如圖2所示。endprint
整系數(shù)濾波器具有計(jì)算量小和嚴(yán)格線性相位的優(yōu)點(diǎn)。此外,它最突出的優(yōu)點(diǎn)是所有系數(shù)均為0或2的整次冪。
整系數(shù)濾波器有上述那些優(yōu)點(diǎn),相應(yīng)的也有自身的局限性。就諧振器而言,如果出現(xiàn)[Z=ejθ] 和[Z=e-jθ]在單位圓上,則相應(yīng)的濾波器傳遞函數(shù)的分母項(xiàng)為:
為了保持系數(shù)為0或2的整數(shù)次冪,[θ]只能取值為 0°,60°,90°,120°,180°。其中出現(xiàn)在z平面實(shí)軸上極點(diǎn)的角度有 180°和 0°,可把它劃歸為高通濾波器和低通濾波器,剩下60°,90°和120°這3個(gè)角度,可以分別得到 [fs6,fs4]和[fs3]這三種中心頻率的整系數(shù)帶通濾波器。
2.3 QRS波檢測(cè)
QRS波群形態(tài)最為復(fù)雜,包含了大量的心臟活動(dòng)信息,同時(shí)是P波和T波的檢測(cè)基礎(chǔ)。對(duì)于QRS波的提取,算法的設(shè)計(jì)是關(guān)鍵,既需要滿足較高的準(zhǔn)確度,又需要滿足軟件性能的需求。針對(duì)QRS波的提取,目前常用的有小波變換法[3]、差分閾值檢測(cè)算法、模板匹配法、神經(jīng)網(wǎng)絡(luò)法等方法。其中差分閾值法計(jì)算量較小,實(shí)現(xiàn)起來相對(duì)容易,但檢測(cè)準(zhǔn)確率有待提高。自適應(yīng)差分閾值法是在差分閾值法的基礎(chǔ)上通過自適應(yīng)改變閾值的大小,計(jì)算量略有增大,但檢測(cè)率有了較為明顯的提高。小波變換法是近年來熱門的算法,具有較高的檢測(cè)率,但計(jì)算量偏大,且需要專門的DSP芯片來實(shí)現(xiàn)。模板匹配法是一種基于統(tǒng)計(jì)識(shí)別的檢測(cè)算法,比較穩(wěn)定,但是重復(fù)執(zhí)行效率高,耗費(fèi)時(shí)間比較長。考慮到移動(dòng)設(shè)備的處理能力,系統(tǒng)采用計(jì)算量適中且具有較高檢測(cè)率的自適應(yīng)差分閾值法作為R波的檢測(cè)方法。
自適應(yīng)差分閾值法的基本原理是,R波幅值最大,QRS波群變化極快,具有極高的能量,相應(yīng)波形的斜率比U波和T波大很多。設(shè)原始心電信號(hào)為[xn,]n=1,2,…,k,k為信號(hào)的長度,對(duì)[xn]作四點(diǎn)平滑移動(dòng)處理,解析式如下:
2.4 心律失常分類
心律失常依據(jù)起因可分為:激動(dòng)形成異常和激動(dòng)傳導(dǎo)異常。每類又可細(xì)分為不同種類的小類,常見的心律失常有幾十種。隨著計(jì)算機(jī)在醫(yī)療系統(tǒng)中的應(yīng)用,國內(nèi)外學(xué)者研究出了多種心律失常分類算法。
心律失常分類是診斷心血管疾病的必要手段,其本質(zhì)是把心電波形的特征進(jìn)行分類處理。常用分類方法有如下幾種:多變量統(tǒng)計(jì)分類(貝葉斯定律)、模板匹配、Fuzzy[6]理論、神經(jīng)元網(wǎng)絡(luò)等方法。近年來,隨著計(jì)算機(jī)計(jì)算能力的迅猛提高,新設(shè)計(jì)的心電分類算法通常會(huì)綜合兩種或兩種以上的識(shí)別方法以達(dá)到提高算法準(zhǔn)確率的目的,如綜合FCM,PCA[7]等心律失常判別算法。鑒于移動(dòng)設(shè)備的處理能力較弱,系統(tǒng)采用一般特征值邏輯分支法作為心律失常的分類方法。利用上文介紹的自適應(yīng)差分閾值算法,提取出QRS波的特征如R波幅值、RR間期、QRS波寬等,結(jié)合文獻(xiàn)[8]的方法進(jìn)行快速心律失常分類。
2.5 心電數(shù)據(jù)的存儲(chǔ)
Android系統(tǒng)有多種存儲(chǔ)方式,每種方式都有自身的特點(diǎn)??紤]到Android手機(jī)存儲(chǔ)空間的大小,本系統(tǒng)把相應(yīng)的心電數(shù)據(jù)存儲(chǔ)在中心服務(wù)器里。系統(tǒng)采用MIT?BIH數(shù)據(jù)庫[9]里的心電數(shù)據(jù)代替模擬前端采集到的數(shù)據(jù),因此可以把數(shù)據(jù)庫中的數(shù)據(jù)存儲(chǔ)在中心服務(wù)器端。測(cè)量記錄和分析報(bào)告等信息則存儲(chǔ)在Android系統(tǒng)自帶的輕量級(jí)SQLite3數(shù)據(jù)庫里,方便用戶快速查看過往心電情況。心電數(shù)據(jù)的傳輸采用HTTP協(xié)議,在Android客戶端使用Apache的HTTP庫,通過get和post方式向服務(wù)器發(fā)起請(qǐng)求,得到數(shù)據(jù)庫的響應(yīng),用handler去更新UI。測(cè)量記錄表和分析結(jié)果表的具體設(shè)計(jì)如表1和表2所示。測(cè)量記錄表為存儲(chǔ)測(cè)量記錄信息。
3 中心服務(wù)器的設(shè)計(jì)
中心服務(wù)器是一個(gè)初步設(shè)計(jì)的智能醫(yī)療服務(wù)器,通過Apache+PHP+MySQL框架來實(shí)現(xiàn)。該服務(wù)器包括數(shù)據(jù)庫服務(wù)器和Web服務(wù)器兩部分。數(shù)據(jù)庫服務(wù)器是整個(gè)系統(tǒng)的數(shù)據(jù)存儲(chǔ)核心,用來存儲(chǔ)病人的歷史信息,如病人歷史生理參數(shù)、病人檔案及病歷處理結(jié)果等。同時(shí)能夠提供數(shù)據(jù)庫管理、病人檔案管理等各種數(shù)據(jù)的添加、刪除和修改。
通常情況下,客戶端和服務(wù)器端運(yùn)行在不同的平臺(tái)上,因而數(shù)據(jù)的格式可能會(huì)存在不同。網(wǎng)絡(luò)數(shù)據(jù)的傳輸通常要考慮到網(wǎng)絡(luò)數(shù)據(jù)的大小、網(wǎng)絡(luò)數(shù)據(jù)安全性、編碼復(fù)雜度以及協(xié)議通用性等方面。當(dāng)今網(wǎng)絡(luò)傳輸常用的數(shù)據(jù)格式有XML和JSON兩種,而XML的有效數(shù)據(jù)載荷太低,封裝和解析效率也比較低,JSON具有封裝簡(jiǎn)單,有效載荷高,讀寫時(shí)消耗的資源較少等優(yōu)點(diǎn)。因此,本系統(tǒng)采用JSON數(shù)據(jù)格式傳輸網(wǎng)絡(luò)數(shù)據(jù)。
在計(jì)算機(jī)上Java應(yīng)用程序可以通過JDBC方便地連接遠(yuǎn)程MySQL服務(wù)器。但JDBC本身并不是為移動(dòng)設(shè)備量身設(shè)計(jì)的,JDBC直接連接MySQL服務(wù)器不僅效率低下,且耗費(fèi)系統(tǒng)資源。本系統(tǒng)采用PHP作為中轉(zhuǎn)的方式去實(shí)現(xiàn)Android手機(jī)與MySQL服務(wù)器之間的通信,采用JSON格式將數(shù)據(jù)封裝后傳輸[10],采用無所緩沖隊(duì)列和數(shù)據(jù)預(yù)取技術(shù)提高心電數(shù)據(jù)的讀取效率[11]。這種中轉(zhuǎn)方式結(jié)構(gòu)清晰、易于理解,且能滿足本系統(tǒng)的設(shè)計(jì)要求,服務(wù)器框圖如圖3所示。
4 系統(tǒng)測(cè)試
本軟件完成了各個(gè)模塊的設(shè)計(jì)并對(duì)各個(gè)模塊進(jìn)行了測(cè)試,測(cè)試工具包括Android手機(jī)和筆記本電腦。利用Tomcat技術(shù)將PC機(jī)虛擬為中心服務(wù)器,在Android手機(jī)上運(yùn)行客戶端軟件,用戶登錄后可以進(jìn)行相關(guān)的操作,登錄界面如圖4所示。
用戶登錄后,選擇服務(wù)器里100.dat文件的部分?jǐn)?shù)據(jù)進(jìn)行分析并生成診斷報(bào)告,診斷報(bào)告如圖5所示。在分析數(shù)據(jù)時(shí)存在短暫延時(shí),但延時(shí)在可以接受的范圍內(nèi),用戶并不會(huì)感到明顯的不適。
當(dāng)檢測(cè)出心率有問題時(shí),系統(tǒng)會(huì)向其注冊(cè)時(shí)填寫的另一個(gè)手機(jī)號(hào)發(fā)送短信,告知其狀況以便于及時(shí)進(jìn)行治療。當(dāng)用戶使用心電回放功能時(shí),選擇相應(yīng)的文件后,系統(tǒng)會(huì)動(dòng)態(tài)地繪制相應(yīng)的波形,效果如圖6所示。
5 結(jié) 語endprint