0 引言
據(jù)世界衛(wèi)生組織的數(shù)據(jù),心血管病已經(jīng)成為造成全球人口死亡的主要因素。由于心電圖檢查在診斷此病上具有準(zhǔn)確可靠、方法簡(jiǎn)便、對(duì)病人無(wú)損害等特點(diǎn),在臨床上被廣泛應(yīng)用。然而目前普遍采用的基于PC機(jī)平臺(tái)的心電圖機(jī),雖功能全面,但體積龐大、成本較高。而市場(chǎng)上便攜式心電圖機(jī)大多采用低檔單片機(jī)實(shí)現(xiàn),無(wú)操作系統(tǒng),處理能力弱,功能簡(jiǎn)單,只能進(jìn)行心電信號(hào)的采集、顯示與簡(jiǎn)單的數(shù)據(jù)處理,人機(jī)界面不友好。隨著大規(guī)模的專用集成電路和計(jì)算機(jī)芯片的發(fā)展,基于32 bit微處理器的嵌入式系統(tǒng)以低成本、較高的性能和可靠性等諸多優(yōu)勢(shì),應(yīng)用日益廣泛?;谶@種現(xiàn)狀,本文提出了一款高性能、多功能的便攜式心電圖機(jī),采用AU1250處理器與Windows CE操作系統(tǒng),全面提升了產(chǎn)品的處理能力,并使用具有觸摸功能的大型LCD顯示屏,能同步整體顯示十二導(dǎo)聯(lián)同一心動(dòng)周期的波形,讓醫(yī)生可以更加準(zhǔn)確地作出判斷,從而提高了準(zhǔn)確率。該機(jī)并能對(duì)心電波形數(shù)據(jù)進(jìn)行測(cè)量分析、存儲(chǔ)、回放、編輯、打印等。
1 硬件系統(tǒng)簡(jiǎn)介
系統(tǒng)硬件結(jié)構(gòu)如圖1所示。
本系統(tǒng)選擇AU1250作為控制核心。AU1250是一款高性能、低功耗(<400 mW@400 MHz)、高集成度的嵌入式處理器。AU1250屬于MIPS架構(gòu),集成USB(OTG)、SD卡等接口。也是目前市場(chǎng)上為數(shù)不多的支持分辨率為1 280*800大型LCD顯示屏的處理器之一。
基于軟件系統(tǒng)對(duì)實(shí)時(shí)處理以及永久保存大量數(shù)據(jù)的需要,以AU1250為核心的主板配備了128 MB的SDRAM、2 MB的NOR FLASH以及2 GB的NAND FLASH等存儲(chǔ)芯片。并對(duì)外提供USB、SD卡(可用于外擴(kuò)數(shù)據(jù)存儲(chǔ))、UART、100 Mb/s以太網(wǎng)口等通信接口,實(shí)現(xiàn)對(duì)采集卡、熱敏打印、數(shù)據(jù)存儲(chǔ)等模塊的調(diào)度。
2 軟件系統(tǒng)設(shè)計(jì)
本軟件系統(tǒng),主要由兩部分組成:
(1)Windows CE嵌入式實(shí)時(shí)操作系統(tǒng);
(2)心電圖應(yīng)用程序。
2.1 Windows CE嵌入式實(shí)時(shí)操作系統(tǒng)
Windows CE系統(tǒng)是一種緊湊、高效、可伸縮的32位的操作系統(tǒng),其所具有的多線程、多任務(wù)、完全搶占式的特點(diǎn)是專為各種有很嚴(yán)格資源限制的硬件系統(tǒng)所設(shè)計(jì)的。其模塊化的設(shè)計(jì)使嵌入式系統(tǒng)和應(yīng)用程序開發(fā)者能夠方便地加以定制以適應(yīng)一系列產(chǎn)品。
綜合考慮到軟件的性能要求,以及操作系統(tǒng)對(duì)硬件的支持及二次開發(fā)的簡(jiǎn)便性等方面,本系統(tǒng)采用了微軟公司的Windows CE。并利用Pl-atform Builder5.0集成開發(fā)環(huán)境,根據(jù)產(chǎn)品的需要及硬件資源的考慮,裁剪內(nèi)核、添加所需的驅(qū)動(dòng),定制一款精簡(jiǎn)的符合產(chǎn)品需求的操作系統(tǒng)。
2.2 心電圖應(yīng)用程序設(shè)計(jì)
心電圖應(yīng)用程序整體框圖如圖2所示,主要包括以下幾個(gè)主要功能:
(1)人機(jī)交互
(2)數(shù)據(jù)采集
(3)波形顯示
(4)數(shù)據(jù)處理與測(cè)量分析
(5)數(shù)據(jù)存儲(chǔ)
其中數(shù)據(jù)采集、波形顯示和人機(jī)交互三個(gè)功能要求能夠并發(fā)的同步進(jìn)行,否則系統(tǒng)會(huì)有比較大的延時(shí)現(xiàn)象。所以本應(yīng)用程序利用多個(gè)線程分別完成不同的任務(wù)。
2.2.1 人機(jī)交互
本系統(tǒng)的人機(jī)交互包括機(jī)器面板的功能鍵以及用戶圖形界面兩部分,作為響應(yīng)用戶的操作,并接收消息控制各個(gè)模塊的運(yùn)行。
(1)功能鍵部分:包括ID鍵,開始/停止記錄鍵,模式切換鍵等。其響應(yīng)處理的實(shí)現(xiàn)方式為:事件+注冊(cè)表。底層驅(qū)動(dòng)利用中斷的方式,檢測(cè)按鍵的動(dòng)作,如鍵按下便把對(duì)應(yīng)的鍵值寫到注冊(cè)表,然后通過(guò)SctEvent()方式通知應(yīng)用程序。應(yīng)用程序首先開辟一個(gè)線程,利用WaitF-orSingleObject()等待按鍵事件的發(fā)生,然后讀取并判斷注冊(cè)表的鍵值,調(diào)用對(duì)應(yīng)的功能函數(shù)。考慮到驅(qū)動(dòng)進(jìn)程與應(yīng)用程序有可能同時(shí)訪問(wèn)并改寫注冊(cè)表,為了保證數(shù)據(jù)訪問(wèn)的安全性,在讀寫注冊(cè)表時(shí),使用Mutex同步機(jī)制來(lái)確保一次只有一個(gè)進(jìn)程使用該資源。
(2)用戶圖形界面:根據(jù)市場(chǎng)發(fā)展需求,并形成競(jìng)爭(zhēng)力,產(chǎn)品界面須既美觀時(shí)尚,又方便易用?;诖朔矫娴目紤]以及軟硬件系統(tǒng)的支持,本系統(tǒng)圖形界面的按鈕均采用加載位圖的方式,把絢麗的圖片應(yīng)用于各個(gè)按鈕。字體方面,也使用AddFontResource()函數(shù)動(dòng)態(tài)加載了微軟雅黑與華康圓體字庫(kù)。并綜合醫(yī)生意見,簡(jiǎn)化操作流程,使整個(gè)操作界面極富人性化。
2.2. 2 數(shù)據(jù)采集
為了保證數(shù)據(jù)的采集不被其他線程中斷,本系統(tǒng)開辟了一個(gè)優(yōu)先級(jí)較高的線程來(lái)采集數(shù)據(jù)。
(1)數(shù)據(jù)接收
由于采集卡的采樣率為1 000次/秒,數(shù)據(jù)量較大,為了提高其與上位機(jī)傳輸數(shù)據(jù)的速度以及考慮到接口的可擴(kuò)展性,本系統(tǒng)的數(shù)據(jù)采集卡集成了USB控制器FT245芯片,并在軟件系統(tǒng)中加載了FTD2XX.DLL驅(qū)動(dòng),實(shí)現(xiàn)了以USB協(xié)議傳輸數(shù)據(jù)、上位機(jī)模擬串口接收數(shù)據(jù)的方式。采集線程只需打開串口不斷接收數(shù)據(jù),爾后再根據(jù)定義的數(shù)據(jù)包協(xié)議分別解出各個(gè)通道的數(shù)據(jù)以及導(dǎo)聯(lián)脫落狀態(tài)信息,并送到數(shù)據(jù)預(yù)處理模塊進(jìn)行濾波及導(dǎo)聯(lián)脫落處理。
(2)數(shù)據(jù)同步采集的方法
數(shù)據(jù)預(yù)處理完畢后,采用SetEvent()的方式通知顯示線程讀取數(shù)據(jù)顯示。為了保證公共數(shù)據(jù)緩沖區(qū)數(shù)據(jù)的正確性,采用臨界區(qū)Critical Section來(lái)實(shí)現(xiàn)采集與顯示線程的同步。
2.2.3 波形顯示
本系統(tǒng)采用了醫(yī)療系統(tǒng)中較常見的實(shí)時(shí)顯示方法,即掃描式,從左到右畫,新進(jìn)的點(diǎn)覆蓋原來(lái)的點(diǎn),中間有一段緩沖區(qū)刷掉舊點(diǎn),畫到最右端時(shí),又從最左端畫下一幅圖,不斷重復(fù)。同時(shí)為了防止閃爍,采用了雙緩存技術(shù)。
心電圖機(jī)一般需顯示的波形有兩種:導(dǎo)聯(lián)波形顯示,如12導(dǎo)聯(lián)同步顯示;節(jié)律波形顯示,如檢查心率不齊時(shí),長(zhǎng)時(shí)間連續(xù)的顯示單一和多通道導(dǎo)聯(lián)波形。為了方便醫(yī)生在導(dǎo)聯(lián)與節(jié)律兩種模式下切換觀察,本系統(tǒng)創(chuàng)建了兩個(gè)后臺(tái)繪圖線程。當(dāng)為導(dǎo)聯(lián)顯示模式時(shí),把所繪導(dǎo)聯(lián)波形的內(nèi)存DC不斷拷貝到屏幕DC上顯示,節(jié)律繪圖線程仍然后臺(tái)運(yùn)行。反之,為節(jié)律顯示模式。
2.2.4 數(shù)據(jù)存儲(chǔ)
(1)病人基本信息及分析結(jié)果存儲(chǔ):
SQLite是一個(gè)輕量級(jí)的嵌入式關(guān)系數(shù)據(jù)庫(kù),可以較為方便地運(yùn)用于嵌入式系統(tǒng)中。相對(duì)于傳統(tǒng)數(shù)據(jù)庫(kù),SQLite具有更好的實(shí)時(shí)性、系統(tǒng)開銷小、底層控制能力強(qiáng)的特性。
由于本系統(tǒng)的病人基本信息及分析結(jié)果的存儲(chǔ),只涉及建立表格、查詢、修改、插入、刪除、排序等操作,因此采用精干高效的SQLite完全能夠滿足本平臺(tái)的要求,并利用其支持的SQL命令及提供的API接口,操作十分方便。
(2)病人心電數(shù)據(jù)存儲(chǔ):
鑒于心電數(shù)據(jù)量比較大,為了快速存儲(chǔ)以及便于管理,采用了文件的存儲(chǔ)方式。首先在SQLite中建立心電數(shù)據(jù)PatiemEcgData表,包括病人ID、姓名、心電數(shù)據(jù)長(zhǎng)度、心電數(shù)據(jù)文件的相對(duì)路徑等字段,心電數(shù)據(jù)以文件方式保存的同時(shí),將該文件的相對(duì)路徑存到數(shù)據(jù)庫(kù)。當(dāng)進(jìn)行歷史波形回放時(shí),只需根據(jù)病人ID,搜索心電數(shù)據(jù)文件路徑,讀取文件數(shù)據(jù)進(jìn)行繪圖顯示即可。
2.2.5 數(shù)據(jù)處理與檢測(cè)分析
2.2.5.1 數(shù)據(jù)濾波處理
ECG和絕大多數(shù)的生物數(shù)字信號(hào)一樣,都是信噪比很低的微弱信號(hào),往往混有很強(qiáng)的背景噪聲,如工頻干擾、肌電干擾、基線漂移等。噪聲嚴(yán)重時(shí)可完全淹沒ECG信號(hào)或使基線漂移劇烈。因此必須從硬件設(shè)備消除噪聲影響的同時(shí),也要從軟件上去消除,本系統(tǒng)的數(shù)據(jù)濾波處理主要根據(jù)各噪聲的頻率特性設(shè)計(jì)不同的數(shù)字濾波器予以濾除。
2.2.5.2 數(shù)據(jù)檢測(cè)分析
(1)特征提取
進(jìn)行自動(dòng)分析前,首先要進(jìn)行特征提取。特征提取包括兩部分:(1)波形識(shí)別,對(duì)ECG所包括的P波、T波和QRS波群進(jìn)行識(shí)別。(2)測(cè)量出各波形的幅度和間期,以便提供給后面的分析程序。
準(zhǔn)確地檢測(cè)每一個(gè)QRS波是波形識(shí)別的首要任務(wù),如果QRS波檢測(cè)出現(xiàn)錯(cuò)誤,其后進(jìn)行的T、P波檢測(cè),各種參數(shù)測(cè)量及診斷分類均失去了意義。基于嵌入式平臺(tái)的特點(diǎn),QRS波群檢測(cè)算法上采用了傳統(tǒng)差分閾值法,可實(shí)現(xiàn)實(shí)時(shí)檢測(cè)。
QRS波一旦識(shí)別,便可根據(jù)PQPST各波斜率特性,計(jì)算并定位各自的分界點(diǎn)。爾后進(jìn)行各種參數(shù)測(cè)量和計(jì)算,包括心率、P波時(shí)限、P-R(P-Q)間期、QRS時(shí)限、Q-T(QTC)間期、平均心電軸、各波振幅等。
(2)自動(dòng)分析:
圖3所示的是整個(gè)ECG分析方法。將特征提取過(guò)程產(chǎn)生的測(cè)量參數(shù)作為輸入量,進(jìn)入決策邏輯或統(tǒng)計(jì)過(guò)程。決策邏輯是基于規(guī)則的專家系統(tǒng)來(lái)模仿專家的決策過(guò)程以確定和描述病人的病情。這些規(guī)則集是根據(jù)醫(yī)學(xué)專家的知識(shí)來(lái)開發(fā)的,通過(guò)一組IF-THEN語(yǔ)句,最后成為一個(gè)或多個(gè)分析結(jié)果語(yǔ)句,并打印在分析結(jié)果報(bào)告上。
3 總結(jié)
本文簡(jiǎn)要介紹了基于wince的心電圖機(jī)硬件系統(tǒng)的組成,以及對(duì)整個(gè)軟件系統(tǒng)的設(shè)計(jì)進(jìn)行了分模塊的闡述與分析。目前已完成第一版本產(chǎn)品樣機(jī)的開發(fā),經(jīng)測(cè)試系統(tǒng)運(yùn)行良好,分析算法也以美國(guó)的MIT心電數(shù)據(jù)庫(kù)為標(biāo)準(zhǔn)進(jìn)行測(cè)試,其準(zhǔn)確性達(dá)到符合臨床診斷要求。該產(chǎn)品已準(zhǔn)備進(jìn)入工廠量產(chǎn)階段。