【作 者】吳紹聰,高常青,余超,曲愛濤,楊波
濟南大學,濟南市,250022
靜脈輸液作為醫院治療中最為常用的方式之一[1],保證輸液安全是一項重要的工作。在傳統靜脈輸液過程中,往往需要家屬或者醫護人員定時巡查病人輸液情況,這不僅增加了醫護人員的工作負擔,同時存在工作效率低、耗時長、輸液異常以及結束沒有及時發現等問題[2-4]。隨著我國醫療消費人群的增長,發展智能化醫療技術,提高醫療過程中的效率顯得尤為重要。近年來,相關的醫療設備得到了發展改進,但是集可視化實時顯示輸液狀態與報警的輸液監測系統仍相對較少。
針對當前醫療輸液的現狀,設計了一種基于Visual Basic.NET(VB.NET)開發圖形化界面的遠程輸液監測系統。系統以Arduino Nano微控制器作為核心,采用紅外光電傳感器檢測藥液流動,具有良好美觀的界面,能夠實現對多個輸液監測終端的輸液過程進行實時監測。當輸液結束或出現異常情況時,護士站端的上位機軟件平臺將進行警報提示。監測醫護人員不再需要定時觀察病患的輸液狀態,節省了人力消耗,改善了醫院的智能化水平和管理效率。
整個系統主要由3個部分組成,分別為病房輸液監測模塊、Zigbee無線傳輸模塊以及VB.NET輸液監測軟件。
結構框架如圖1所示,首先輸液監測模塊中通過紅外傳感器檢測出輸液過程中藥滴,利用Arduino微控制器進行處理獲取計數、速度等信息,然后使用Zigbee無線傳輸模塊實現輸液自組網無線通信,將信息發送到PC主機,最終在VB.NET上位機軟件中結合SQL Server數據庫以圖形化方式顯示并進行報警,實現遠程監測病人輸液狀態。

圖1 系統總體構架Fig.1 Overall system architecture diagram
Arduino是一款來自意大利團隊開發制作的開源電子原型平臺,包括一系列的硬件部分以及軟件程序代碼部分(Arduino集成的開發環境)[5]。相比傳統的單片機,其提供豐富的外圍接口,可以直接通過USB接口上傳程序。在軟件層Arduino會進行封裝部分底層參數,提供了U8G2、Wire、EEPROM等常用庫[6],有利于提高項目的開發效率,因此得到廣泛的應用。
本研究中選用的是主板為Arduino Nano控制板,相比較同類型開發板尺寸更加小巧。其最大的特點是USB接口為Mini-B型插座而且沒有直流電流插口。Arduino Nano采用ATmega328P為處理器核心,具有較大的FLASH和RAM存儲容量,工作電壓為5 V,而輸入電壓為7~12 V電壓。同時開發板包含8個模擬輸入端口,6個PWM端口,14個數字輸入/輸出端口[7-8],可以方便傳感器數據接收與信息處理。
在實際輸液過程中,病房中的輸液監測終端由多個輸液監測模塊和Zigbee無線組網通信模塊一起共同工作。其結構如圖2所示。

圖2 輸液終端結構Fig.2 Structure diagram of infusion terminal
輸液監測模塊主要由Arduino Nano主控板、軟串口連接的紅外傳感器、蜂鳴器以及OLED顯示屏組成。其中,系統采用的紅外傳感器為紅外發射以及光敏二極管模塊,準確地對茂菲管中的藥液進行檢測;Arduino Nano主控板對檢測的藥液間隔時間和滴數進行處理,獲取藥液的速度以及剩余容量,并通過IIC接口協議將信息顯示在OLED顯示屏上。當出現輸液異常或者低于余量時,OLED顯示屏以及蜂鳴器進行報警提示。
無線組網通信模塊采用TI 公司開發的CC2530芯片進行傳輸,本設計中病房之間的ZigBee無線模塊采用網狀拓樸結構,主要有終端節點,路由器以及協調器。Zigbee模塊中的CC2530芯片通過串口與輸液檢測模塊連接組成終端節點,實現對輸液信號的采集,路由器主要負責信息的中轉,通過多跳延長傳輸距離,PC機與Zigbee模塊通過USB連接組成協調器,負責對病房的多個終端節點傳輸的數據進行匯總,并顯示在上位機中。系統的輸液檢測終端效果如圖3所示。

圖3 輸液檢測終端Fig.3 Infusion detection terminal
輸液系統的監測終端部分采用C語言進行開發,而輸液監測上位機軟件在Visual Studio平臺上采用Visual Basic.NET語言進行開發,VB.NET是微軟推出的基于.NET Framework之上的面向對象的編程語言,與之前的VB語言相比,提高了在面向對象方面的支持,成為了完全面向對象的靈活高效、穩定的編程語言[9-10]。
輸液監測終端的功能主要是實現輸液數據采集以及報警提示。首先,系統在初始化以后,開始在單位時間內判斷藥液是否滴落并實現輸液過程中數據的采集;微控制器對采集的數據進行處理,如果滴速超過設定范圍,則通過顯示器和蜂鳴器進行報警提示;如果輸液余量低于預警值,則傳送至上位機軟件提醒工作人員進行處理。下位機主流程,如圖4所示。

圖4 下位機主流程Fig.4 Main flow chart of lower machine
輸液監測系統的Zigbee組網通信流程,如圖5所示。傳輸節點在建網開始時,先判斷設備類型。終端節點或路由器在初始化后,向協調器申請加入網絡并配置ID;協調器在初始化后配置信道和建立網絡,并接收傳輸節點申請,組建網絡通信,利用串口與上位機進行數據傳輸。

圖5 Zigbee組網流程Fig.5 ZigBee networking flow chart
3.3.1 VB.NET監測軟件功能設計
輸液監測系統軟件主要包括用戶管理模塊、輸液監控模塊、病人檔案模塊和系統配置模塊四大模塊,軟件功能結構,如圖6所示。

圖6 上位機軟件功能結構Fig.6 Upper computer software function structure diagram
用戶管理模塊主要為進行用戶登陸、用戶密碼修改等操作。輸液監控模塊是上位機軟件的主要部分,主要分為數據顯示以及預警提示兩個部分。病人信息模塊主要實現連接數據庫獲取新增病患以及管理病患檔案的功能。系統配置模塊主要實現串口端口、波特率等參數配置以及串口開關的功能。
3.3.2 軟件流程設計及方法實現
為了實現輸液監測的功能,本系統中在監測軟件端工作流程設計分為串口配置、數據讀取與處理以及數據庫連接與信息顯示三個步驟。
(1)串口信息配置
微軟從.NET Framework 2.0開始在Visual Studio中提供了用于控制串行端口的類System.IO.Ports.SerialPort。SerialPort類的使用開發,具有通信快、實時性強、功能強大的特點,為開發者提供了多種串口操作的簡單方法[11-12]。
在軟件串口通信中,首先需要在工程中添加system.IO.ports名稱空間,為了與協調器端口一致,利用SerialPort.GetPortNames從軟件端獲取連接端口值。在對串口初始化后,通過open函數可以實現串口通信的連接,進一步針對串口對象可以配置串口端口、波特率、校驗位、數據位等參數實現與協調器的連接。
(2)數據的讀取與處理
①數據讀取
針對實際檢測中,如果終端數量很多,軟件串口端需要同時接收多個數據。因此,軟件通過調用DataReceived事件來讀取窗口緩沖區的數據,當串口接收到數據,系統會自動觸發DataReceived事件處理程序函數。
在串口接收數據時,為了解決串口接收事件屬于單獨線程,控件無法在main主線程中調用數據的問題,采用invoke委托方式訪問main主線程中的數據。
Me.Invoke(New EventHandler(AddressOf Sp_Receiving))
②數據處理
在本軟件端接收來自協調器的數據以字節型數組形式讀取,因此需要將其轉換為字符型。同時由于String類無法允許內容變動,所以需要使用StringBuilder字符串構造類型對字節數據進行轉換處理。
(3)數據庫連接與信息顯示
系統接收數據后需要與數據庫建立連接進行信息存儲,本設計中上位機軟件采用ADO.NET(Active Data Objects)方式連接SQL Server數據庫。實現與SQL Server數據庫的連接,需要經過三步:即首先獲取連接字符串,通過SqlConnection類處理數據庫連接;其次為創建連接命令,利用SqlCommmand向數據庫發送操作命令;最后為數據集的處理操作,使用數據集DataSet進行內存中數據的分布,通過數據適配對象SqlDataAdapter的Fill方法對數據集DataSet中的數據進行修改來更新數據源中的數據。
醫護人員可以通過LINQ方式對本地數據庫進行數據查詢以及存儲[13-14],同時在界面的DataGirdView控件中顯示。
軟件監測系統需要同時顯示多個病房的信息,其中包括每個病人的基本信息、輸液速度以及輸液進度等信息。為了解決在顯示界面中將來自各個監測終端的輸液信息有效地顯示在相應控件,在VB.NET中提供了基于鍵值的快速查找元素的泛類,本軟件中利用dictionary類對同類型控件和信息進行對應分類,通過調用相應的dictionary就可以將對應病人床號的輸液信息顯示出來。
為了有效驗證系統的準確性,選取了單個終端設備,配合路由器和協調器進行工作。輸液監測系統實驗測試有兩部分,分別為滴速檢測準確性測試和傳輸距離測試。
輸液滴速檢測準確性測試在實驗過程中,選用250 mL容量的0.9%氯化鈉,手動調控多組不同的輸液速度,以人眼觀察計算的實際滴速為實驗參照,與監測系統OLED顯示屏上顯示的輸液速度進行對比。為了減少偶然誤差,每個滴速進行了5次測量,間隔 1 min,見表1。

表1 滴速檢測準確性測試Tab.1 Measurement of drop rate detection
結果表明,兩者的最大誤差相差±1滴/min,能夠有效準確地反應輸液狀態。而且每次剩余藥液余量低過設定值5%時,系統能夠進行報警,達到系統的基本要求,整體性能可靠穩定。
在無線傳輸距離測試方面,采用CC2530通信模塊,其單個模塊之間理論傳輸距離可達70 m。經過測試,在空曠空間下75 m范圍內信號良好,在75 m到240 m之間信號較差,超過240 m以后將無法進行信號傳輸。在醫院環境中測試,單個模塊之間的通信距離可以相隔5個病房。在走廊處加上路由器進行多跳后,可以在同樓層9個病房之間進行數據通信,滿足醫院中病房之間數據傳輸的需求。
本設計軟件主界面包括實時監測、系統配置、病人檔案處理以及新增病患等功能按鍵,如圖7所示。監護病人信息界面提供了病人檔案存儲以及管理的功能,工作人員可以在本界面中訪問數據庫,查詢數據庫中監護病人的信息,進一步對病人信息進行修改和保存,監護病人信息界面,如圖8所示。

圖7 上位機主界面Fig.7 Host computer main interface

圖8 監護病人信息界面Fig.8 Monitoring patient information interface
上位機軟件在工作過程中連接數據庫,獲取病人基本信息,采用圖形界面直觀地反應病人的輸液狀態,其中包括病號、輸液速度、進度等信息。同時,當病人的輸液余量低于總容量的5%時,病人對應的狀態界面也會轉變為紅色用于實時報警,提示醫護人員,上位機輸液監測軟件應用界面,如圖9所示。

圖9 上位機輸液監測軟件Fig.9 Host computer infusion monitoring software diagram
設計了一套遠程靜脈輸液監測系統,通過Arduino控制板和紅外光電傳感器構成監測裝置檢測相關信息,同時通過Zigbee無線傳感技術進行數據傳輸,并上傳至VB.NET設計的上位機監測軟件。整個系統穩定可靠,能夠實現遠程實時監測輸液的狀態,具有良好的人機交互界面以及圖形化報警提示功能,從而減輕醫護人員的工作負擔,提高醫療工作效率。