喻 曉,夏 澎
1(佛山職業技術學院 電子信息系,佛山 528137)
2(廣州市保倫電子有限公司,廣州 511400)
基于Qt的便攜式心電監護儀GUI應用軟件設計①
喻 曉1,夏 澎2
1(佛山職業技術學院 電子信息系,佛山 528137)
2(廣州市保倫電子有限公司,廣州 511400)
便攜式心電監護設備是現代化醫院、社區、家庭不可缺少的醫療設備.本文采用圖形界面GUI開發軟件Qtopia Core設計了操作簡單、人機友好的心電監護系統界面,該人機交互界面可實現心電數據的采集、處理、顯示、分析、存儲以及傳輸等功能.最后通過實驗,驗證了該系統的有效性.
心電監護;QRS波檢測;Qtopia Core
心電監護設備能夠對病人進行長時間的、連續的自動實時監護,并且能夠提供多種心電參數的測量和分析,有利于醫生及時了解患者的病情變化,是現代化醫院、社區、家庭不可缺少的醫療設備[1].隨著科技水平的不斷提高,人們對該設備的操控性也提出了更高的要求.為方便用戶使用,設計具有良好圖形用戶接口(Graphical User Interface,GUI)的儀器設備將是未來的發展方向.
現代操作系統一般都提供圖形化的操作界面,這種GUI系統一般由視窗、圖標、菜單、對話框及其他一些可視特征組成,它允許終端用戶方面的利用鼠標和鍵盤操作電腦.目前,便攜式心電監護儀所使用的操作系統大多是都是基于嵌入式Linux操作系統,根據嵌入式Linux系統的硬件條件,需要選擇一個高性能、輕量級的GUI系統.目前常見的面向嵌入式 Linux的 GUI系統主要有 Qtopia Core、Micro Windows、Tiny X以及國內的MiniGUI等.其中, Qtopia Core是挪威Trolltech公司發布的一款基于嵌入式Linux的面向單一應用的嵌入式產品的Qt開發平臺,它的前身是Qt/Embedded(常簡稱為Qt/E)[2].Qt是一種C++跨平臺開發工具,具有一次編程,多平臺運行的優點.
因此,本文采用GUI開發軟件Qtopia Core設計了操作簡單、人機友好的心電監護系統界面,該人機交互界面可實現心電數據的采集、處理、顯示、分析、存儲以及傳輸等功能.
根據對便攜式心電監護系統的需求分析,可以將該系統分為五個功能模塊,其結構圖如圖1所示.分別是主控模塊、參數設置定模塊、實時任務處理模塊、數據存儲模塊和傳輸通信模塊.各功能模塊在各自獨立完成系統所分配任務的同時又可以通過系統的框架協議進行聯系.

圖1 功能模塊結構圖
2.1 主控模塊
主控模塊的設計目的是為了使各模塊在系統的框架下協調工作和相互通信,以實現人機交互.
當監護系統上電初始化后,顯示監護系統主界面.在主控模塊上設計了各類功能按鈕,通過點擊各個功能按鈕,主控模塊對按鈕的動作進行響應,并進行調度.通過QT的信號與槽機制,主控模塊和各個功能模塊實現通信.通過QT的多線程編程,實現多個實時任務同時進行.本文設計的心電監護系統主界面如圖2所示.

圖2 Web信息抽取流程
2.2 參數設置模塊
參數設置模塊用于設置監護儀的一些必要參數和病人的相關信息.本系統將參數設置部分分為四個類別:病人信息設置、ECG設置、網絡設置、存儲設置.
為錄入及共享住院病人信息,本系統設計了病人信息設置這一項.病人信息設置包括入院科室、病人病歷號、床號、姓名、性別、年齡、主治醫生、身高體重、血型以及入院時間、出生日期,病人類別等信息.病人信息設置窗口如圖3所示.

圖3 病人信息設置窗口
ECG設置包括導聯設置和報警設置.可以選擇3導聯或者 5導聯,在設置中選擇相應的導聯.同時還可以進行報警級別設置、心率報警上下限的設置、波形滾動速度的設置.ECG設置窗口如圖4所示.

圖4 ECG設置窗口
為了實現心電監護設備的網絡化,實現遠程心電監護,就必須要求監護終端和中央監護中心能夠進行通信,因此在通信之前,必須進行網絡設置.網絡的設置主要包括終端IP的設置、監護中心的IP設置、網關、子網掩碼的設置.
存儲設置主要是設置存儲位置,可以將心電數據存在系統的NAND FLASH里,也可以將其存儲在SD卡里.網絡設置和存儲設置的界面分別如圖5、圖6所示.

圖5 網絡設置窗口

圖6 存儲設置窗口
2.3 實時任務模塊
實時任務模塊是本系統設計中的一個重點和難點.當心電監護系統完成初始化設置進入工作狀態后,實時任務模塊將實現對心電信號的采集、波形的顯示以及心電數據的分析,如進行QRS波群的檢測,提取心電特征信息,將分析結果在顯示終端上進行呈現.因此,實時任務模塊主要包括實時數據的采集、實時數據的顯示和實時數據的分析三個部分.本系統中分別通過三個線程來完成數據的采集、顯示和分析.
首先通過實時采集線程采集心電信號,從 A/D轉換器得到三通道的數據并存入數組中.再經過平滑濾波,濾除50HZ的工頻干擾,顯示光滑的心電波形.當數組中存儲了5s的數據時,通過心電檢測線程檢測QRS波群,提取出心電特征信息,并在系統界面上顯示分析結果.本系統主要完成心率的提取計算以及心率失常分析.實時任務模塊的流程圖如圖7所示.

圖7 實時任務模塊流程圖
2.3.1 實時任務模塊流程圖
Qt的應用程序提供了一種非常方便的定時機制,本系統心電信號采集就是利用該定時機制實現定時采樣.定時器遵循信號與槽的機制,當定時器信號到期時,觸發槽函數運行.本系統在主界面main_widget類中定義了一個定時器display_caiji_timer和連接函數,為了使采樣頻率達到200HZ,定義定時器的時間間隔為5ms,即每隔5ms觸發一次槽函數display_caiji()代碼如下:

2.3.2 心電信號的顯示
心電信號的顯示包括心電數據的數值顯示和心電的波形顯示.
1)心電數據的數值顯示
通過心電分析線程檢測出 QRS波群、P波、T波等,提取出心電信號的特征信息,即為心電數據,其包括心率、P波寬度、T波寬度、QRS波寬度、QT間期、ST間期、PR間期、ST偏移量.系統主要完成心率的提取計算.
本系統設計了一個Dataxd類來實現心電數據的更新顯示.為了達到實時更新顯示心電特征數據,在顯示界面Data_widget類中,定義了一個定時器display_ data_timer和連接函數,且定義定時器的時間間隔是5s,即每隔5s觸發一次槽函數,槽函數display_data()代碼如下:

每當槽函數display_data()被觸發時,首先調用qrs(int data),將采集到的數據按照qrs(int data)中的心率計算公式,計算得到心率data1,然后調用Qt里的庫函數display(int),將心率結果顯示出來.不斷循環定時就能將數據正常顯示.
2)心電的波形顯示
心電波形的顯示主要通過繪圖的方式將心電數據以波形的方式在系統界面上顯示出來.心電波形的繪圖方案有兩種,即移屏式與掃描式[3],本系統中采用掃描式.
本系統設計了一個wave類來實現在系統界面上繪制波形的功能,該類是繼承Qt中的窗口組件類QWidget.在繪制波形時,也是采用定時器定時機制.在主界面 main_widget類中定義了一個定時器display_curve_timer和連接函數,且定義定時器的時間間隔為 10ms,即每隔 10ms觸發一次槽函數display_wave()代碼如下:

槽函數display_wave()是win_wave類的成員函數,在display_wave()中調用了wave對象的成員函數draw (int data)來畫波形,而draw(int data)先調用hmap(int data),采集到數據通過hmap(int data)中的公式轉換后賦值給data1,然后調用drawbar()繪制掃描線,調用change_t()將掃描線的橫坐標加1,用語句p.drawLine (x+t-1,y+hmap(data0)-1,x+t,y+Hmap(data1)-1);和change_t()將當前點與前一點直線相連,不斷循環這一過程,就形成了顯示屏上的動態波形.
2.3.3 心電數據的分析
心電信號基本上都包括一個P波、一個QRS波群和一個T波,有時在T波之后還出現一個小的U波[4],如圖8所示.

圖8 典型的心電波形圖
心電監護系統主要是通過心電電極采集心電信號,經過放大,濾波,送入心電處理器系統內,然后實時顯示出心電波形.QRS波檢測是提取心電信號的特征信息,供醫護人員進行心電分析的首要問題.分析計算的特征參數包括:心率(HR)、P波寬度(PWidth)、T波寬度(TWidth)、QRS波寬度(QRSWidth)、QT間期(QTInterval)、 ST 間 期 (STInterval)、 PR 間 期(PRInterval)、ST偏移量.鑒于篇幅,本文主要介紹QRS波群的檢測和HR的提取計算,其余參數如T波、P波寬度分析計算可參考相關文獻[5].
利用R波檢測算法可以檢測到R波幅值的極大值點,利用這些極大值點找出所測量的心電波形的周期,選取一個周期進行判斷,找出一些特征點,如QRS的長度,P波、T波的寬度、R_R間期等,根據所得到的特征值判斷病人的健康狀況.其中,瞬時心率HR的計算公式如式(1).

圖9 R波檢測流程圖

根據上面的公式就可以算出瞬時心率HR,式中Sample_rate表示心電信號采樣頻率,R_R間期為兩個相鄰R波之間的間隔時間.通過QRS波的檢測,就可以得到R_R間期,取相鄰四個 R_R間期的平均值作為R_R間期.計算得到HR后,就可以判斷心率是正常、過快還是過慢,以提供給醫生分析參考.
2.3.4 數據存儲和傳輸打印模塊
將數據采集并處理完畢后,需將其保存以供分析及打印.本文設計了數據存儲模塊,以實現自動保存心電數據的結果,從而實現心電數據的查詢回放以及數據分析.
程序中定義stru_termidatat結構體,用于保存數據.當數據經過采集處理并完成顯示后,觸發數據保存函數,將最終檢測結果的數值保存起來.以上數據是存儲在NANDFLASH中,本系統心電數據還可以存儲在SD卡中.SD卡具有體積小、容量大、價格低廉、可攜帶的特點,因此,使用 SD卡,可以存儲大量的心電數據,更有利于醫生分析病人心電的變化.
按下“存儲”按鈕,系統會按照存儲設置進行存儲.當設置為 SD卡存儲時,插入SD卡,系統會自動識別并掛載SD卡,在SD卡里創建并打開數據文件,并將心電數據存儲在文件里面.心電數據存儲的流程圖如圖10所示.

圖10 心電數據存儲的流程圖
在實現數據的存儲之后,用戶可根據情況對其進行打印輸出或者通過串口、網線等形式進行數據的傳輸.本系統設計了傳輸通信模塊,以完成打印功能.
設計中,將數據的輸出接在異步串行接口UART上,其實質就是實現主控制平臺與打印機或者外部系統之間的串口通信.系統在串口傳輸程序中,采用了中斷方式,來實現雙向數據傳輸,達到實時控制的目的.串口程序數據發送過程為:將保存的檢測數據結果調出,并以數組的方式放置在SDRAM中,然后再將調用Uart_Setdata()函數發送字符,用以完成數據的傳輸工作.串口打印數據流程圖如圖11所示.

圖11 串口打印數據流程圖
為了檢驗本系統的準確性,在實驗階段,采用模擬心電信號發生器產生各種心電信號,用本系統進行采集.圖12為本心電監護系統運行的硬件平臺結構圖.

圖12 心電監護系統硬件平臺結構圖
開機后,進入心電監護系統主界面,點擊監護界面上的“啟動監護”鍵,并打開模擬心電發生器,設置心率為79次/分鐘,幅度為1mv,系統開始采集心電信號并在監護界面上顯示心電波形和心電信號的特征參數,此時顯示心率為79次/分,并顯示心率正常.如圖13所示.

圖13 心率正常顯示圖
改變模擬心電發生器上的心電心率的頻率,設置為40次/分鐘,查看心電監護系統的監護界面,此時,心率欄顯示40次/分,并在分析結果欄顯示心率過慢.如圖14所示.

圖14 心率過慢顯示圖
接著再次改變模擬心電發生器上的心電心率的頻率,設置為144次/分鐘,觀察監護界面波形的變化情況,此時心率顯示142次/分,并顯示心率過快.如圖15所示.

圖15 心率過快顯示圖
按照上面的實驗進行10次,得到10組心電率數據,如表1所示.將監護系統上顯示的心率與模擬心電發生器的心率進行比較,發現系統檢測得到的心率與產生的心率基本一致.

表1 心率檢測結果
同時,還對本系統的其他功能進行了測試.測試結果表明本系統能夠正常設置各種參數,進行正常存儲數據、報警、凍結、解凍當前心電界面,并且能夠長時間穩定、準確的進行監護.通過以上的實驗,證明本系統基本實現了設計的要求,能夠進行正常、可靠的心電波形顯示.
本文中心電監護系統的實驗測試,是通過采集模擬心電發生器產生的心電信號來進行.本系統采用的QRS檢測算法能夠準確檢測到QRS波群并進行心率的提取,基本實現了該系統的功能.從實驗的效果看,該系統工作性能良好,運行穩定.實驗的結果證明了系統設計的準確性和可靠性,有一定的實用價值,而且適應性較好,易于推廣應用.
1黃澍濤.醫用監護儀的臨床應用與發展特點.中國醫療設備,2011,(2):59–61,156.
2劉偉民,韓斌,李征.基于Linux的數據采集及在QT界面的顯示.微計算機信息,2008,24(8-1):97–99
3劉莉.多參數監護儀的研制[碩士學位論文].桂林:桂林電子科技大學,2007.
4姚歡,王建鋼.ECG信號QRS波群檢測算法的進展.現代生物醫學進展,2012,12(20):3988–3991
5楊守祥.基于小波變換的心電信號預處理及特征參數檢測方法研究[碩士學位論文].蘭州:蘭州理工大學,2014.
Design of GUI for ECG monitoring System Based on Qtopia Core
YU Xiao1,XIAPeng2
1(Department of Electronic and Information,Foshan Polytechnic,Foshan 528137,China)
2(Guangzhou ITC Electronic Co.Ltd.,Guangzhou 511400,China)
The ECG monitor is an indispensable medical instrument for modern hospitals,communities and families.In this paper,GUI development software Qtopia Core is used to design a simple and human-friendly interface for ECG monitoring system.This interface is realized the functions of data acquisition,processing,display,analysis,storage and transmission of ECG data etc.Finally,the experiments verify the effectiveness of the system.
ECG monitoring;QRS wave detection;Qtopia Core
2016-09-06;收到修改稿時間:2016-10-19
10.15888/j.cnki.csa.005766