摘 要:針對(duì)遠(yuǎn)程心電" title="心電">心電實(shí)時(shí)監(jiān)護(hù)" title="實(shí)時(shí)監(jiān)護(hù)">實(shí)時(shí)監(jiān)護(hù)的特殊要求設(shè)計(jì)的監(jiān)護(hù)儀" title="監(jiān)護(hù)儀">監(jiān)護(hù)儀軟件系統(tǒng),,實(shí)現(xiàn)了心電實(shí)時(shí)監(jiān)護(hù),、醫(yī)囑短信收發(fā)、監(jiān)護(hù)狀態(tài)顯示,、緊急求救報(bào)警等功能,。
關(guān)鍵詞:心電監(jiān)護(hù)? NAND Flash地址映射模型? GPRS? 短消息
?
?
??? 當(dāng)今社會(huì),,心臟疾病已嚴(yán)重影響了人們的生命安全,,許多突發(fā)患者因得不到及時(shí)救治而使生命受到威脅。傳統(tǒng)的心電監(jiān)護(hù)設(shè)備限制了患者的自由,,動(dòng)態(tài)心電記錄儀(Holter)雖能便攜地記錄患者日?;顒?dòng)時(shí)的心電數(shù)據(jù),但是沒有實(shí)時(shí)監(jiān)護(hù)功能,,對(duì)于危及生命的突發(fā)心臟病變幫助不大,。
??? 無線通信技術(shù)的日漸成熟使便攜式心電實(shí)時(shí)監(jiān)護(hù)成為可能。利用GPRS無線數(shù)據(jù)通信技術(shù),,可將實(shí)時(shí)監(jiān)護(hù)功能與Holter結(jié)合起來,。患者可以配戴監(jiān)護(hù)儀自由活動(dòng),,同時(shí)可隨時(shí)隨地得到心電監(jiān)護(hù),。緊急情況發(fā)生時(shí),,患者掌握著可靠的求生路徑;而醫(yī)生可根據(jù)全面的心電數(shù)據(jù)分析患者心臟狀況,,使患者的心臟疾病及時(shí)得到預(yù)防和救治,。
??? 400Hz或500Hz采樣的心電數(shù)據(jù)是一種帶寬較大的數(shù)據(jù)源,同時(shí)心電監(jiān)護(hù)也有實(shí)時(shí)性要求,。本文主要闡述在特定硬件平臺(tái)和整體系統(tǒng)設(shè)計(jì)下的遠(yuǎn)程心電實(shí)時(shí)監(jiān)護(hù)儀軟件系統(tǒng)的設(shè)計(jì),。
1 遠(yuǎn)程心電實(shí)時(shí)監(jiān)護(hù)系統(tǒng)概述
??? 遠(yuǎn)程心電實(shí)時(shí)監(jiān)護(hù)系統(tǒng)包括四個(gè)部分:監(jiān)護(hù)儀(病人終端)、PDA(醫(yī)生終端),、監(jiān)護(hù)服務(wù)器以及心電數(shù)據(jù)服務(wù)器,。系統(tǒng)結(jié)構(gòu)如圖1所示。
?
?
??? 監(jiān)護(hù)儀由患者隨身佩帶,,以400Hz或500Hz的采樣頻率對(duì)患者心電信號(hào)采樣,,并把心電數(shù)據(jù)通過GSM/GPRS網(wǎng)絡(luò)發(fā)送給監(jiān)護(hù)服務(wù)器,數(shù)據(jù)的實(shí)時(shí)性由監(jiān)護(hù)服務(wù)器和監(jiān)護(hù)儀之間的控制信息控制,。PDA接收來自監(jiān)護(hù)服務(wù)器的數(shù)據(jù),,并根據(jù)心電分析的結(jié)果通過數(shù)據(jù)服務(wù)(GPRS數(shù)據(jù)服務(wù))和短消息" title="短消息">短消息(SMS)通知監(jiān)護(hù)儀。監(jiān)護(hù)服務(wù)器負(fù)責(zé)接收轉(zhuǎn)存病人端全部心電數(shù)據(jù),,實(shí)時(shí)分析及回放分析,;同時(shí)向PDA轉(zhuǎn)發(fā)實(shí)時(shí)心電數(shù)據(jù),利用控制信息來協(xié)調(diào)實(shí)時(shí)心電數(shù)據(jù)的收發(fā),。心電數(shù)據(jù)服務(wù)器存儲(chǔ)所有心電數(shù)據(jù),、患者信息以及設(shè)備信息,除了在監(jiān)護(hù)過程中存儲(chǔ)心電數(shù)據(jù)外,,心電數(shù)據(jù)服務(wù)器還負(fù)責(zé)注冊(cè)患者和設(shè)備信息及管理數(shù)據(jù)庫遠(yuǎn)程訪問等任務(wù),。
2 監(jiān)護(hù)儀硬件平臺(tái)簡介
??? 監(jiān)護(hù)儀硬件主要由單片機(jī)、電源模塊,、心電信號(hào)采集放大模塊,、擴(kuò)展NAND Flash、LCD驅(qū)動(dòng)模塊及GSM/GPRS無線通信模塊組成,。
??? (1)單片機(jī):PIC18系列單片機(jī),,低功耗,通過PLL倍頻指令頻率可達(dá)10MHz,,自帶ADC采樣頻率最高可達(dá)幾十kHz,。
??? (2)電源模塊:為各模塊提供4V和3.3V兩種直流電壓源。
??? (3)心電信號(hào)采集放大模塊:微弱心電信號(hào)采集并放大800倍,,同時(shí)可檢測(cè)導(dǎo)聯(lián)脫落,。
??? (4)擴(kuò)展NAND Flash:32M NAND Flash,最多可存儲(chǔ)長達(dá)23小時(shí)的原始心電數(shù)據(jù),。
??? (5)LCD驅(qū)動(dòng)模塊:驅(qū)動(dòng)80×160點(diǎn)陣的LCD,。
??? (6)GSM/GPRS無線通信模塊:內(nèi)嵌TCP(UDP)/IP協(xié)議棧,,利用Socket建立網(wǎng)絡(luò)連接,在應(yīng)用GPRS發(fā)送數(shù)據(jù)的同時(shí),,仍可以提供GSM語音,、短信(SMS)服務(wù)。
3 軟件系統(tǒng)關(guān)鍵技術(shù)
??? 監(jiān)護(hù)儀軟件系統(tǒng)的核心是管理Flash,、GPRS網(wǎng)絡(luò),、無線模塊的GSM功能及LCD。
3.1 Flash管理
??? Flash存儲(chǔ)器用于存儲(chǔ)心電數(shù)據(jù)和控制信息,,以保證心電數(shù)據(jù)在斷電時(shí)不遺失及日后查看監(jiān)護(hù)過程的相關(guān)控制信息,。
??? 內(nèi)存映射(Memory Map)模型把Flash作為一個(gè)整體,各種不同數(shù)據(jù)按照類別預(yù)先分配存儲(chǔ)空間,。操作Flash數(shù)據(jù)時(shí),,首先把內(nèi)部索引(譬如數(shù)據(jù)索引或者消息索引)映射到分區(qū)地址,剔除無效存儲(chǔ)單元,,再通過Flash操作函數(shù)讀取或?qū)懭胂鄳?yīng)的數(shù)據(jù),。
3.1.1 Flash分區(qū)結(jié)構(gòu)
??? (1)Head Seg:大小為1個(gè)塊(Block),用于存儲(chǔ)分區(qū)版本號(hào),、壞塊表及其余分區(qū)的基本信息,,包括分區(qū)起始地址(BaseAdd)、分區(qū)跨度(以塊為單位),、分區(qū)最高地址,、數(shù)據(jù)區(qū)(Data Seg)中的數(shù)據(jù)范圍、數(shù)據(jù)區(qū)中數(shù)據(jù)的格式(FMT),、消息區(qū)(SMS Seg)所有消息的聯(lián)系人列表等,,每個(gè)分區(qū)的基本信息占一頁(Page)。本分區(qū)占Flash存儲(chǔ)器的第一個(gè)塊,。根據(jù)Flash的技術(shù)資料可知,,第一塊正常使用時(shí)不會(huì)出現(xiàn)無效存儲(chǔ)單元,因此許多關(guān)鍵數(shù)據(jù)保存于此,。
??? (2)Data Seg:大小為1000個(gè)塊,,即1000個(gè)連續(xù)的有效塊,,用于存儲(chǔ)心電數(shù)據(jù),。如果采樣頻率為400Hz,采樣位數(shù)為8位,,數(shù)據(jù)區(qū)可存儲(chǔ)11.37小時(shí)的原始心電數(shù)據(jù),,所有的心電數(shù)據(jù)從采樣起始點(diǎn)0開始依次編號(hào)即心電數(shù)據(jù)索引,利用該索引尋址,。
??? (3)SMS Seg:大小為20個(gè)塊,,即20個(gè)連續(xù)的有效塊,。每個(gè)塊存儲(chǔ)一條消息的位圖,消息的到達(dá)時(shí)間,、發(fā)送者存儲(chǔ)在該Block的第一頁(該塊中相對(duì)地址為0的頁),。消息存滿則從頭開始覆蓋已有消息,利用消息的索引號(hào)來尋址,。
????Flash分區(qū)結(jié)構(gòu)示意圖如圖2所示,。
?
3.1.2 Flash接口函數(shù)
??? Flash的讀操作,首先從存儲(chǔ)單元中以頁(page)為單位把數(shù)據(jù)讀入Flash內(nèi)部的寄存器中,,然后再把數(shù)據(jù)導(dǎo)入處理器的存儲(chǔ)器,。讀操作的操作耗時(shí)為幾十微秒,與單片機(jī)的指令周期大致匹配,。讀操作以頁為基本單元,,以讀取整頁數(shù)據(jù)效率最高。Flash頁讀取操作一般不會(huì)產(chǎn)生錯(cuò)誤,,F(xiàn)lash文件系統(tǒng)會(huì)有糾錯(cuò)操作,,最簡單的糾錯(cuò)碼可以把非連續(xù)的單個(gè)位錯(cuò)誤改正。而對(duì)于當(dāng)前處理器上的內(nèi)存映射模型,,糾錯(cuò)碼的引入將大大降低運(yùn)行效率,,因此不做糾錯(cuò)處理。
??? (1)FlashPageRead():首先鎖存起始操作字節(jié)的行列地址,,送入Read指令,,隨后的每個(gè)讀操作時(shí)序把當(dāng)前字節(jié)讀出,當(dāng)前地址指針加1并把數(shù)據(jù)存儲(chǔ)到讀操作緩沖區(qū)中,,同時(shí)調(diào)用函數(shù)時(shí)須給出讀出字節(jié)的總數(shù),。
??? Flash的寫操作,又稱為對(duì)Flash的編程,,即把數(shù)據(jù)存儲(chǔ)到Flash存儲(chǔ)單元中,。存儲(chǔ)單元事先必須已擦除(Erase)過才能寫入數(shù)據(jù)。寫操作耗時(shí)為幾百微秒,,擦除操作耗時(shí)最多為幾毫秒,,在數(shù)量級(jí)上已大大超過了RAM的寫操作。利用內(nèi)存映射模型操作Flash的難點(diǎn)在于合理調(diào)度使Flash存儲(chǔ)單個(gè)字節(jié)的耗時(shí)與處理器的指令周期相匹配,。每次寫操作要盡可能多地寫入數(shù)據(jù),,一般每頁(512B)寫入一次。寫操作與擦除操作可能產(chǎn)生壞塊,,因此須通知主程序是否產(chǎn)生壞塊,。
??? (2)FlashProgram():首先鎖存寫入數(shù)據(jù)起始字節(jié)的行列地址,隨后按照函數(shù)調(diào)用時(shí)給定的寫入數(shù)據(jù)總數(shù),,每個(gè)寫操作時(shí)序向Flash寄存器存儲(chǔ)一個(gè)字節(jié)的數(shù)據(jù),。當(dāng)寄存器滿,,送入Program操作指令即可把寄存器中的數(shù)據(jù)存儲(chǔ)進(jìn)入物理存儲(chǔ)單元中。
????(3)FlashECGDMap():根據(jù)分區(qū)內(nèi)頁索引和壞塊列表檢索出實(shí)際的操作頁地址,。首先把分區(qū)內(nèi)頁地址換算為理想實(shí)際地址,,即不考慮壞塊,然后檢索壞塊列表及剔除無效地址并給出實(shí)際操作地址,。
??? (4)FlashStoreECGData():在數(shù)據(jù)分區(qū)中存儲(chǔ)心電數(shù)據(jù),,首先檢查Flash是否處于繁忙狀態(tài),若空閑則立即占用Flash,,把采樣數(shù)據(jù)導(dǎo)入Flash寫緩沖,。如果寫緩沖達(dá)到存儲(chǔ)操作條件,則調(diào)用FlashECGDMap()獲取實(shí)際的操作地址并檢查是否Flash的該操作塊需要擦除,。若需要擦除,,則調(diào)用FlashErase()函數(shù),擦除狀況檢查完畢即調(diào)用FlashProgram()保存數(shù)據(jù),。若所有操作完畢,,則釋放Flash的控制權(quán)。
??? (5)FlashLoadECGData():從數(shù)據(jù)分區(qū)中讀取一定字節(jié)數(shù)的心電數(shù)據(jù),。首先需要在Flash空閑狀態(tài)下獲取Flash的控制權(quán),,隨后利用FlashECGDMap()獲取實(shí)際操作地址并判斷是否出現(xiàn)跨頁讀操作。如果不需跨頁,,則調(diào)用FlashPageRead(),,讀出相應(yīng)數(shù)據(jù)到讀緩沖即可;若跨頁,,則分別在兩頁分兩次讀取規(guī)定字節(jié)個(gè)數(shù)的連續(xù)心電數(shù)據(jù),。
3.2 GPRS網(wǎng)絡(luò)接口設(shè)計(jì)
??? 硬件平臺(tái)的通信模塊是Wavecom公司的2406B。GPRS又稱無線分組服務(wù),,用于在GSM網(wǎng)絡(luò)上傳輸數(shù)據(jù),。在進(jìn)行GPRS數(shù)據(jù)發(fā)送的同時(shí),短消息和語音服務(wù)不會(huì)被禁止,,但GPRS數(shù)據(jù)服務(wù)和GSM服務(wù)不能同時(shí)進(jìn)行,。2406B模塊的GPRS上行速率可以達(dá)到10kbps,通過設(shè)置數(shù)據(jù)發(fā)送串口" title="串口">串口的波特率為9 600bps,,可使數(shù)據(jù)進(jìn)出流量匹配,。
3.2.1 2406B模塊初始化
??? 首先設(shè)置2406B中兩個(gè)串口的波特率、綁定的數(shù)據(jù)類型及模塊時(shí)鐘,。串口1綁定GPRS數(shù)據(jù),,串口2綁定GSM數(shù)據(jù),。串口1的波特率設(shè)置為9 600即可使網(wǎng)絡(luò)與接口速率匹配,;串口2返回模塊控制字,,設(shè)置為19 200的波特率即可與處理器運(yùn)行速度匹配。同時(shí)還要為模塊設(shè)置當(dāng)前時(shí)間,。AT指令見表1中“AT指令序列1”,。
??? 其次通過AT指令連接GPRS網(wǎng)絡(luò)和服務(wù)器。AT指令見表1中“AT指令序列2”,。
?
?
?
??? 模塊的OpenAT程序?qū)崿F(xiàn)了TCP/IP協(xié)議,,同時(shí)把漢字字模加入模塊。指令序列2 中的AT指令按照順序設(shè)置成功后即建立TCP/IP連接,,模塊即進(jìn)入數(shù)據(jù)模式,。此時(shí)通過串口送入的所有數(shù)據(jù)全部作為網(wǎng)絡(luò)數(shù)據(jù)送交網(wǎng)絡(luò),送入
3.2.2 網(wǎng)絡(luò)模型及接口函數(shù)
??? 數(shù)據(jù)傳輸過程分為注冊(cè)階段和數(shù)據(jù)發(fā)送階段,。
??? 在注冊(cè)階段,監(jiān)護(hù)儀向服務(wù)器發(fā)送注冊(cè)認(rèn)證數(shù)據(jù)報(bào),。內(nèi)容包括設(shè)備序列號(hào)(Machine ID),、數(shù)據(jù)格式(FMT)、采樣頻率,、采樣位數(shù),、采樣環(huán)境工頻頻率、AD轉(zhuǎn)換高低電壓和直流偏置,、數(shù)據(jù)壓縮方法以及采樣起始時(shí)間,。服務(wù)器收到注冊(cè)數(shù)據(jù)后進(jìn)行身份驗(yàn)證,驗(yàn)證通過則發(fā)送回應(yīng)消息,,即為服務(wù)接納的時(shí)間和聯(lián)系人列表,。監(jiān)護(hù)儀收到回應(yīng)消息即進(jìn)入數(shù)據(jù)發(fā)送階段。
??? 數(shù)據(jù)發(fā)送階段,,監(jiān)護(hù)儀向服務(wù)器發(fā)送實(shí)時(shí)心電數(shù)據(jù),。數(shù)據(jù)發(fā)送策略有兩種:注重“實(shí)時(shí)性”的發(fā)送策略,定義當(dāng)前采樣點(diǎn)至其前1分鐘的心電數(shù)據(jù)為“實(shí)時(shí)心電數(shù)據(jù)”,,享有發(fā)送的優(yōu)先權(quán),,“補(bǔ)發(fā)數(shù)據(jù)”在“實(shí)時(shí)心電數(shù)據(jù)”發(fā)送完畢以后發(fā)送;注重“連續(xù)性”的發(fā)送策略,,以保持?jǐn)?shù)據(jù)完整性為目標(biāo),,“補(bǔ)發(fā)數(shù)據(jù)”享有數(shù)據(jù)發(fā)送優(yōu)先權(quán),服務(wù)器申請(qǐng)的數(shù)據(jù)會(huì)被優(yōu)先發(fā)送。數(shù)據(jù)發(fā)送階段病人及設(shè)備的各種異常狀況定義為“報(bào)警消息”發(fā)送給服務(wù)器,。
??? 網(wǎng)絡(luò)狀態(tài)轉(zhuǎn)換圖如圖3,,由此設(shè)計(jì)的網(wǎng)絡(luò)接口函數(shù)為:(1)TransData():負(fù)責(zé)發(fā)送實(shí)時(shí)數(shù)據(jù)、補(bǔ)發(fā)數(shù)據(jù)和發(fā)送報(bào)警消息,,其中報(bào)警消息具有最高優(yōu)先級(jí),,連續(xù)性的發(fā)送策略補(bǔ)發(fā)數(shù)據(jù)優(yōu)先級(jí)高于實(shí)時(shí)數(shù)據(jù),實(shí)時(shí)性的發(fā)送策略發(fā)送優(yōu)先級(jí)與連續(xù)性策略相反,;(2)ECGRegister():負(fù)責(zé)建立與服務(wù)器之間的ECG連接,,函數(shù)定時(shí)發(fā)送注冊(cè)信息包和完成注冊(cè)過程確認(rèn)。
?
3.3 GSM功能接口
??? GSM功能包括:短消息收發(fā),、信號(hào)強(qiáng)度獲取,、時(shí)間獲取、電量獲取,、按鍵消息通知,、發(fā)聲。這些都依靠無線模塊串口2以AT指令進(jìn)行配置和查詢,。
??? 使用的AT指令有:“AT+CNMI=0,,1,1,,1,,0”,配置短消息格式,;“AT+CSMP=17,,169,0,,8”,,文本采用Unicode編碼;“AT+CMGF=1”,,短消息發(fā)送采用TXT格式,;“AT+CSCA=<短消息服務(wù)中心號(hào)碼>”,設(shè)置短消息服務(wù)中心號(hào)碼,;“AT+CMGS=<號(hào)碼>r<短消息內(nèi)容>Ctrl-Z”,,向<號(hào)碼>發(fā)送短消息;“AT+CSQ”,,獲取信號(hào)強(qiáng)度,,格式為“+CSQ:<信號(hào)強(qiáng)度>,xx”,;“AT+CCLK?”,,獲取當(dāng)前時(shí)間,格式為“+CCLK:yy/mm/dd hh:mm:ss”;“AT+ADC?”,,獲取電池電量,,以毫伏為單位,格式為“+ADC:xxxx,,……”,;“AT+CMER=,,1”,,配置模塊返回按鍵產(chǎn)生的消息,消息結(jié)構(gòu)為“+CKEY:
??? 模塊接收到的短消息以0xAA為通知碼,接著是發(fā)送者號(hào)碼,,隨后是短消息的Bitmap,,可直接用于顯示,短消息不保存在模塊中,,并僅在串口2給出通知,。
3.4 LCD顯示
??? 硬件平臺(tái)使用80×160點(diǎn)陣的單色LCD,軟件維護(hù)一個(gè)微型字庫,,包括幾十個(gè)漢字以及所有ASCII符號(hào)中的可見字符,,供界面顯示使用。無線模塊自帶漢字庫,,可以直接顯示收到的SMS,。預(yù)存的短消息維護(hù)在單片機(jī)的程序存儲(chǔ)器中,每條預(yù)存消息有Unicode和Bitmap兩種格式,,Unicode用于發(fā)送,,Bitmap用于顯示。
4 監(jiān)護(hù)儀軟件功能
??? 利用中斷將數(shù)據(jù)采集與數(shù)據(jù)發(fā)送分離,。數(shù)據(jù)采集,、存儲(chǔ)和解析組成一個(gè)事務(wù)集;數(shù)據(jù)發(fā)送與短信瀏覽,、監(jiān)護(hù)狀態(tài)顯示及緊急求救報(bào)警等事務(wù)組成另一個(gè)事務(wù)集,。兩個(gè)事務(wù)集并行運(yùn)行,F(xiàn)lash存儲(chǔ)器及其中的數(shù)據(jù)和消息為關(guān)鍵資源。
4.1 心電實(shí)時(shí)監(jiān)護(hù)
??? 心電實(shí)時(shí)監(jiān)護(hù)即心電數(shù)據(jù)采集,、存儲(chǔ),、發(fā)送。監(jiān)護(hù)程序流程圖如圖4,。
?
?
?
?
4.2 醫(yī)囑短信收發(fā)
??? 監(jiān)護(hù)儀可以向服務(wù)器,、醫(yī)生、親人等發(fā)送預(yù)設(shè)消息,,同時(shí)可以接收聯(lián)系人的短消息,。圖5(a)為預(yù)設(shè)短消息發(fā)送界面。
4.3 監(jiān)護(hù)狀態(tài)顯示
??? 監(jiān)護(hù)過程嵌入心電分析算法可獲得監(jiān)護(hù)狀態(tài)參數(shù),,如嵌入了R波檢測(cè)算法,,可以獲取心率參數(shù)。心電分析算法由算法組負(fù)責(zé),,此處不加敘述,,界面見圖5(b)。
4.4 緊急求救報(bào)警
??? 病人感覺不適時(shí)可按下緊急求救按鈕,,監(jiān)護(hù)儀即進(jìn)入報(bào)警模式,,可以向服務(wù)器、醫(yī)生,、親屬以數(shù)據(jù)消息和短消息兩種方式求救,,界面見圖5(c)。
?
??? 監(jiān)護(hù)系統(tǒng)已經(jīng)通過內(nèi)部測(cè)試,,即將進(jìn)入臨床測(cè)試階段,。隨著測(cè)試的深入,將對(duì)系統(tǒng)容錯(cuò)性及實(shí)用性提出更高要求,,因此終端軟件系統(tǒng)還要不斷地維護(hù)和改進(jìn)以適應(yīng)不同需求,。
參考文獻(xiàn)
[1] 姚湘平,張躍.基于GPRS的遠(yuǎn)程心電實(shí)時(shí)監(jiān)護(hù)終端[J].電子技術(shù)應(yīng)用,,2006,,32(4):77-79.
[2] 代少升,張躍.便攜式遠(yuǎn)程心電實(shí)時(shí)監(jiān)護(hù)儀的研制[J].醫(yī)療衛(wèi)生裝備,,2006,,27(9):1-2.
[3] Q2406 and Q2426 Product Specification.Wavecom Corporation,2003.
[4] CEN/TC 251.Health informatics-Standard communication?protocol-Computer-assisted electrocardiography EN 1064:2005[S].European Committee for Standardization,,2005.