【作 者】吳紹聰,高常青,余超,曲愛濤,楊波
濟(jì)南大學(xué),濟(jì)南市,250022
靜脈輸液作為醫(yī)院治療中最為常用的方式之一[1],保證輸液安全是一項重要的工作。在傳統(tǒng)靜脈輸液過程中,往往需要家屬或者醫(yī)護(hù)人員定時巡查病人輸液情況,這不僅增加了醫(yī)護(hù)人員的工作負(fù)擔(dān),同時存在工作效率低、耗時長、輸液異常以及結(jié)束沒有及時發(fā)現(xiàn)等問題[2-4]。隨著我國醫(yī)療消費(fèi)人群的增長,發(fā)展智能化醫(yī)療技術(shù),提高醫(yī)療過程中的效率顯得尤為重要。近年來,相關(guān)的醫(yī)療設(shè)備得到了發(fā)展改進(jìn),但是集可視化實(shí)時顯示輸液狀態(tài)與報警的輸液監(jiān)測系統(tǒng)仍相對較少。
針對當(dāng)前醫(yī)療輸液的現(xiàn)狀,設(shè)計了一種基于Visual Basic.NET(VB.NET)開發(fā)圖形化界面的遠(yuǎn)程輸液監(jiān)測系統(tǒng)。系統(tǒng)以Arduino Nano微控制器作為核心,采用紅外光電傳感器檢測藥液流動,具有良好美觀的界面,能夠?qū)崿F(xiàn)對多個輸液監(jiān)測終端的輸液過程進(jìn)行實(shí)時監(jiān)測。當(dāng)輸液結(jié)束或出現(xiàn)異常情況時,護(hù)士站端的上位機(jī)軟件平臺將進(jìn)行警報提示。監(jiān)測醫(yī)護(hù)人員不再需要定時觀察病患的輸液狀態(tài),節(jié)省了人力消耗,改善了醫(yī)院的智能化水平和管理效率。
整個系統(tǒng)主要由3個部分組成,分別為病房輸液監(jiān)測模塊、Zigbee無線傳輸模塊以及VB.NET輸液監(jiān)測軟件。
結(jié)構(gòu)框架如圖1所示,首先輸液監(jiān)測模塊中通過紅外傳感器檢測出輸液過程中藥滴,利用Arduino微控制器進(jìn)行處理獲取計數(shù)、速度等信息,然后使用Zigbee無線傳輸模塊實(shí)現(xiàn)輸液自組網(wǎng)無線通信,將信息發(fā)送到PC主機(jī),最終在VB.NET上位機(jī)軟件中結(jié)合SQL Server數(shù)據(jù)庫以圖形化方式顯示并進(jìn)行報警,實(shí)現(xiàn)遠(yuǎn)程監(jiān)測病人輸液狀態(tài)。
圖1 系統(tǒng)總體構(gòu)架Fig.1 Overall system architecture diagram
Arduino是一款來自意大利團(tuán)隊開發(fā)制作的開源電子原型平臺,包括一系列的硬件部分以及軟件程序代碼部分(Arduino集成的開發(fā)環(huán)境)[5]。相比傳統(tǒng)的單片機(jī),其提供豐富的外圍接口,可以直接通過USB接口上傳程序。在軟件層Arduino會進(jìn)行封裝部分底層參數(shù),提供了U8G2、Wire、EEPROM等常用庫[6],有利于提高項目的開發(fā)效率,因此得到廣泛的應(yīng)用。
本研究中選用的是主板為Arduino Nano控制板,相比較同類型開發(fā)板尺寸更加小巧。其最大的特點(diǎn)是USB接口為Mini-B型插座而且沒有直流電流插口。Arduino Nano采用ATmega328P為處理器核心,具有較大的FLASH和RAM存儲容量,工作電壓為5 V,而輸入電壓為7~12 V電壓。同時開發(fā)板包含8個模擬輸入端口,6個PWM端口,14個數(shù)字輸入/輸出端口[7-8],可以方便傳感器數(shù)據(jù)接收與信息處理。
在實(shí)際輸液過程中,病房中的輸液監(jiān)測終端由多個輸液監(jiān)測模塊和Zigbee無線組網(wǎng)通信模塊一起共同工作。其結(jié)構(gòu)如圖2所示。
圖2 輸液終端結(jié)構(gòu)Fig.2 Structure diagram of infusion terminal
輸液監(jiān)測模塊主要由Arduino Nano主控板、軟串口連接的紅外傳感器、蜂鳴器以及OLED顯示屏組成。其中,系統(tǒng)采用的紅外傳感器為紅外發(fā)射以及光敏二極管模塊,準(zhǔn)確地對茂菲管中的藥液進(jìn)行檢測;Arduino Nano主控板對檢測的藥液間隔時間和滴數(shù)進(jìn)行處理,獲取藥液的速度以及剩余容量,并通過IIC接口協(xié)議將信息顯示在OLED顯示屏上。當(dāng)出現(xiàn)輸液異?;蛘叩陀谟嗔繒r,OLED顯示屏以及蜂鳴器進(jìn)行報警提示。
無線組網(wǎng)通信模塊采用TI 公司開發(fā)的CC2530芯片進(jìn)行傳輸,本設(shè)計中病房之間的ZigBee無線模塊采用網(wǎng)狀拓樸結(jié)構(gòu),主要有終端節(jié)點(diǎn),路由器以及協(xié)調(diào)器。Zigbee模塊中的CC2530芯片通過串口與輸液檢測模塊連接組成終端節(jié)點(diǎn),實(shí)現(xiàn)對輸液信號的采集,路由器主要負(fù)責(zé)信息的中轉(zhuǎn),通過多跳延長傳輸距離,PC機(jī)與Zigbee模塊通過USB連接組成協(xié)調(diào)器,負(fù)責(zé)對病房的多個終端節(jié)點(diǎn)傳輸?shù)臄?shù)據(jù)進(jìn)行匯總,并顯示在上位機(jī)中。系統(tǒng)的輸液檢測終端效果如圖3所示。
圖3 輸液檢測終端Fig.3 Infusion detection terminal
輸液系統(tǒng)的監(jiān)測終端部分采用C語言進(jìn)行開發(fā),而輸液監(jiān)測上位機(jī)軟件在Visual Studio平臺上采用Visual Basic.NET語言進(jìn)行開發(fā),VB.NET是微軟推出的基于.NET Framework之上的面向?qū)ο蟮木幊陶Z言,與之前的VB語言相比,提高了在面向?qū)ο蠓矫娴闹С郑蔀榱送耆嫦驅(qū)ο蟮撵`活高效、穩(wěn)定的編程語言[9-10]。
輸液監(jiān)測終端的功能主要是實(shí)現(xiàn)輸液數(shù)據(jù)采集以及報警提示。首先,系統(tǒng)在初始化以后,開始在單位時間內(nèi)判斷藥液是否滴落并實(shí)現(xiàn)輸液過程中數(shù)據(jù)的采集;微控制器對采集的數(shù)據(jù)進(jìn)行處理,如果滴速超過設(shè)定范圍,則通過顯示器和蜂鳴器進(jìn)行報警提示;如果輸液余量低于預(yù)警值,則傳送至上位機(jī)軟件提醒工作人員進(jìn)行處理。下位機(jī)主流程,如圖4所示。
圖4 下位機(jī)主流程Fig.4 Main flow chart of lower machine
輸液監(jiān)測系統(tǒng)的Zigbee組網(wǎng)通信流程,如圖5所示。傳輸節(jié)點(diǎn)在建網(wǎng)開始時,先判斷設(shè)備類型。終端節(jié)點(diǎn)或路由器在初始化后,向協(xié)調(diào)器申請加入網(wǎng)絡(luò)并配置ID;協(xié)調(diào)器在初始化后配置信道和建立網(wǎng)絡(luò),并接收傳輸節(jié)點(diǎn)申請,組建網(wǎng)絡(luò)通信,利用串口與上位機(jī)進(jìn)行數(shù)據(jù)傳輸。
圖5 Zigbee組網(wǎng)流程Fig.5 ZigBee networking flow chart
3.3.1 VB.NET監(jiān)測軟件功能設(shè)計
輸液監(jiān)測系統(tǒng)軟件主要包括用戶管理模塊、輸液監(jiān)控模塊、病人檔案模塊和系統(tǒng)配置模塊四大模塊,軟件功能結(jié)構(gòu),如圖6所示。
圖6 上位機(jī)軟件功能結(jié)構(gòu)Fig.6 Upper computer software function structure diagram
用戶管理模塊主要為進(jìn)行用戶登陸、用戶密碼修改等操作。輸液監(jiān)控模塊是上位機(jī)軟件的主要部分,主要分為數(shù)據(jù)顯示以及預(yù)警提示兩個部分。病人信息模塊主要實(shí)現(xiàn)連接數(shù)據(jù)庫獲取新增病患以及管理病患檔案的功能。系統(tǒng)配置模塊主要實(shí)現(xiàn)串口端口、波特率等參數(shù)配置以及串口開關(guān)的功能。
3.3.2 軟件流程設(shè)計及方法實(shí)現(xiàn)
為了實(shí)現(xiàn)輸液監(jiān)測的功能,本系統(tǒng)中在監(jiān)測軟件端工作流程設(shè)計分為串口配置、數(shù)據(jù)讀取與處理以及數(shù)據(jù)庫連接與信息顯示三個步驟。
(1)串口信息配置
微軟從.NET Framework 2.0開始在Visual Studio中提供了用于控制串行端口的類System.IO.Ports.SerialPort。SerialPort類的使用開發(fā),具有通信快、實(shí)時性強(qiáng)、功能強(qiáng)大的特點(diǎn),為開發(fā)者提供了多種串口操作的簡單方法[11-12]。
在軟件串口通信中,首先需要在工程中添加system.IO.ports名稱空間,為了與協(xié)調(diào)器端口一致,利用SerialPort.GetPortNames從軟件端獲取連接端口值。在對串口初始化后,通過open函數(shù)可以實(shí)現(xiàn)串口通信的連接,進(jìn)一步針對串口對象可以配置串口端口、波特率、校驗位、數(shù)據(jù)位等參數(shù)實(shí)現(xiàn)與協(xié)調(diào)器的連接。
(2)數(shù)據(jù)的讀取與處理
①數(shù)據(jù)讀取
針對實(shí)際檢測中,如果終端數(shù)量很多,軟件串口端需要同時接收多個數(shù)據(jù)。因此,軟件通過調(diào)用DataReceived事件來讀取窗口緩沖區(qū)的數(shù)據(jù),當(dāng)串口接收到數(shù)據(jù),系統(tǒng)會自動觸發(fā)DataReceived事件處理程序函數(shù)。
在串口接收數(shù)據(jù)時,為了解決串口接收事件屬于單獨(dú)線程,控件無法在main主線程中調(diào)用數(shù)據(jù)的問題,采用invoke委托方式訪問main主線程中的數(shù)據(jù)。
Me.Invoke(New EventHandler(AddressOf Sp_Receiving))
②數(shù)據(jù)處理
在本軟件端接收來自協(xié)調(diào)器的數(shù)據(jù)以字節(jié)型數(shù)組形式讀取,因此需要將其轉(zhuǎn)換為字符型。同時由于String類無法允許內(nèi)容變動,所以需要使用StringBuilder字符串構(gòu)造類型對字節(jié)數(shù)據(jù)進(jìn)行轉(zhuǎn)換處理。
(3)數(shù)據(jù)庫連接與信息顯示
系統(tǒng)接收數(shù)據(jù)后需要與數(shù)據(jù)庫建立連接進(jìn)行信息存儲,本設(shè)計中上位機(jī)軟件采用ADO.NET(Active Data Objects)方式連接SQL Server數(shù)據(jù)庫。實(shí)現(xiàn)與SQL Server數(shù)據(jù)庫的連接,需要經(jīng)過三步:即首先獲取連接字符串,通過SqlConnection類處理數(shù)據(jù)庫連接;其次為創(chuàng)建連接命令,利用SqlCommmand向數(shù)據(jù)庫發(fā)送操作命令;最后為數(shù)據(jù)集的處理操作,使用數(shù)據(jù)集DataSet進(jìn)行內(nèi)存中數(shù)據(jù)的分布,通過數(shù)據(jù)適配對象SqlDataAdapter的Fill方法對數(shù)據(jù)集DataSet中的數(shù)據(jù)進(jìn)行修改來更新數(shù)據(jù)源中的數(shù)據(jù)。
醫(yī)護(hù)人員可以通過LINQ方式對本地數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢以及存儲[13-14],同時在界面的DataGirdView控件中顯示。
軟件監(jiān)測系統(tǒng)需要同時顯示多個病房的信息,其中包括每個病人的基本信息、輸液速度以及輸液進(jìn)度等信息。為了解決在顯示界面中將來自各個監(jiān)測終端的輸液信息有效地顯示在相應(yīng)控件,在VB.NET中提供了基于鍵值的快速查找元素的泛類,本軟件中利用dictionary類對同類型控件和信息進(jìn)行對應(yīng)分類,通過調(diào)用相應(yīng)的dictionary就可以將對應(yīng)病人床號的輸液信息顯示出來。
為了有效驗證系統(tǒng)的準(zhǔn)確性,選取了單個終端設(shè)備,配合路由器和協(xié)調(diào)器進(jìn)行工作。輸液監(jiān)測系統(tǒng)實(shí)驗測試有兩部分,分別為滴速檢測準(zhǔn)確性測試和傳輸距離測試。
輸液滴速檢測準(zhǔn)確性測試在實(shí)驗過程中,選用250 mL容量的0.9%氯化鈉,手動調(diào)控多組不同的輸液速度,以人眼觀察計算的實(shí)際滴速為實(shí)驗參照,與監(jiān)測系統(tǒng)OLED顯示屏上顯示的輸液速度進(jìn)行對比。為了減少偶然誤差,每個滴速進(jìn)行了5次測量,間隔 1 min,見表1。
表1 滴速檢測準(zhǔn)確性測試Tab.1 Measurement of drop rate detection
結(jié)果表明,兩者的最大誤差相差±1滴/min,能夠有效準(zhǔn)確地反應(yīng)輸液狀態(tài)。而且每次剩余藥液余量低過設(shè)定值5%時,系統(tǒng)能夠進(jìn)行報警,達(dá)到系統(tǒng)的基本要求,整體性能可靠穩(wěn)定。
在無線傳輸距離測試方面,采用CC2530通信模塊,其單個模塊之間理論傳輸距離可達(dá)70 m。經(jīng)過測試,在空曠空間下75 m范圍內(nèi)信號良好,在75 m到240 m之間信號較差,超過240 m以后將無法進(jìn)行信號傳輸。在醫(yī)院環(huán)境中測試,單個模塊之間的通信距離可以相隔5個病房。在走廊處加上路由器進(jìn)行多跳后,可以在同樓層9個病房之間進(jìn)行數(shù)據(jù)通信,滿足醫(yī)院中病房之間數(shù)據(jù)傳輸?shù)男枨蟆?/p>
本設(shè)計軟件主界面包括實(shí)時監(jiān)測、系統(tǒng)配置、病人檔案處理以及新增病患等功能按鍵,如圖7所示。監(jiān)護(hù)病人信息界面提供了病人檔案存儲以及管理的功能,工作人員可以在本界面中訪問數(shù)據(jù)庫,查詢數(shù)據(jù)庫中監(jiān)護(hù)病人的信息,進(jìn)一步對病人信息進(jìn)行修改和保存,監(jiān)護(hù)病人信息界面,如圖8所示。
圖7 上位機(jī)主界面Fig.7 Host computer main interface
圖8 監(jiān)護(hù)病人信息界面Fig.8 Monitoring patient information interface
上位機(jī)軟件在工作過程中連接數(shù)據(jù)庫,獲取病人基本信息,采用圖形界面直觀地反應(yīng)病人的輸液狀態(tài),其中包括病號、輸液速度、進(jìn)度等信息。同時,當(dāng)病人的輸液余量低于總?cè)萘康?%時,病人對應(yīng)的狀態(tài)界面也會轉(zhuǎn)變?yōu)榧t色用于實(shí)時報警,提示醫(yī)護(hù)人員,上位機(jī)輸液監(jiān)測軟件應(yīng)用界面,如圖9所示。
圖9 上位機(jī)輸液監(jiān)測軟件Fig.9 Host computer infusion monitoring software diagram
設(shè)計了一套遠(yuǎn)程靜脈輸液監(jiān)測系統(tǒng),通過Arduino控制板和紅外光電傳感器構(gòu)成監(jiān)測裝置檢測相關(guān)信息,同時通過Zigbee無線傳感技術(shù)進(jìn)行數(shù)據(jù)傳輸,并上傳至VB.NET設(shè)計的上位機(jī)監(jiān)測軟件。整個系統(tǒng)穩(wěn)定可靠,能夠?qū)崿F(xiàn)遠(yuǎn)程實(shí)時監(jiān)測輸液的狀態(tài),具有良好的人機(jī)交互界面以及圖形化報警提示功能,從而減輕醫(yī)護(hù)人員的工作負(fù)擔(dān),提高醫(yī)療工作效率。