成都信息工程大學電子工程學院 張瀚坤 李嘉源 原 暢 范銀玲 黃啟宏
提供一種新型的靜脈輸液監測系統設計方案。該系統數據采集端采用拉力傳感,精度高且穩定性高;其主控芯片選擇集成藍牙、WiFi模塊的ESP32,在擁有強大運算能力的同時又降低了成本;同時在系統中加入如云服務等網絡功能使系統更能夠適應醫療領域的智能化浪潮。
隨著醫療領域的科技發展,越來越多的手段能夠用來提高醫療服務質量和節約人力成本,其中臨床輸液監測系統就是一個典型的例子。在許多發達國家輸液監測已經高度自動化,但我國在輸液監測系統方面的研究起步較晚,國內市場上常見的光電式輸液監測系統因為成本和技術原因而導致測量精度低下,功能單一,已經無法滿足各大醫院的需求。針對現有系統的缺點,本文提供一種新型的輸液監測設計方案。
系統工作時,監測器上的拉力傳感器會采集掛載的輸液瓶質量,實時將數據傳至ESP32系統板。ESP32系統板在接收到原始數據后會進行計算,并整合從藍牙模塊獲取的第三方數據。在ESP32系統板將數據整合完畢后,通過WiFi模塊將處理過的數據發送至位于護士站或者監測室的管理機。護士能夠通過管理機能夠對監測機進行設置,并能從管理機獲取病人信息。管理機定時將數據上傳至云服務器,云服務器在后臺能夠對數據進行分析,從而達到改進醫療方案的目的,進而推動醫療事業的發展。
輸液監測端硬件包括ESP32系統板和HX711拉力傳感器模塊。
本輸液系統病房端主控芯片選用的是ESP32。系統板上集成了藍牙和WIFI模塊,功能強大,用途廣泛,而且功耗較小,其睡眠電流小于5uA,比較適用于因空間有限而多使用電池供電的醫療設備。
WiFi模塊支持極大范圍的通信連接,也支持通過路由器直接連接互聯網;藍牙模塊可以支持第三方醫療設備的接入,便于醫療信息的整合;主控MCU可搭載Freertos實時操作系統,并能通過有線連接通訊實現與HX711模塊進行通信。這種多合一的設計能夠有效地減少整個設備的外設數量以及大小和成本。
ESP-WROOM-32支持的數據傳輸速率較快,可實現最大范圍的無線通信。系統板原理圖如圖1所示。
HX711是一款專為高精度稱重傳感器而設計的24位A/D 轉 換器芯片。能夠對0.01g的液滴產生反應,完全滿足檢測的精度要求。同時該芯片集成了包括穩壓電源、片內時鐘振蕩器等外圍電路。有集成度高、 響應速度快、抗干擾性強等優點。

圖1 ESP32系統板原理圖
拉力傳感器工作時,應電片粘貼在受力的力敏型彈性元件上,當彈性元件受力產生形變時,應電片產生相應的電阻變化,從而輸出變化的電壓信號。該電壓信號經過HX711的轉換送入ESP32系統板進行計算。HX711模塊原理圖如圖2所示。

圖2 HX711AD模塊原理圖

圖3 HX711輸出電壓與質量關系
通過實驗,繪制出拉力傳感器輸出電壓與質量關系圖,如圖3所示。
醫院輸液袋全重一般在500g以下,實驗結果表明,在500g的量程下,HX711輸出電壓與質量呈線性關系。因此該拉力傳感器可用于輸液時輸液袋質量變化的測量。
本系統基于Freertos實時操作系統編寫,共分三大模塊。分別為數據采集模塊、藍牙傳輸模塊以及數據發送模塊。
ESP32上的數據采集模塊每秒通過串行通信從HX711取出原始數據,并對原始數據進行滑動平均濾波,然后把當前質量,以及相較上一秒質量的變化量存入全局變量,流程如圖4所示。

圖4 數據采集模塊流程圖
3.1.1 計算質量
ESP32從HX711處獲取到的數據與實際的質量數據之間滿足斜率特性曲線,因此算出對應傳感器斜率值,即可計算出質量。
傳感器斜率值k計算公式:


其中, M為模塊所稱質量,單位為kg;5代表的是5kg質量的傳感器;128代表著128倍增益;100為單位換算。VBG為1.25V 。
利用砝碼進行標定,精確計算出傳感器斜率值k,即可精確計算出質量:

其中M為ESP32測得質量;Data為ESP32從HX711處獲取的數據;k為之前標定的傳感器斜率值。
整個數據通信過程主要涉及BLE兩大傳輸協議,GAP協議和GATT協議。GAP協議主要用于建立連接,GATT協議主要用于數據傳輸。在進行BLE初始化后,ESP32通過GAP協議與已經開始向外廣播自身地址的藍牙手環進行藍牙配對。配對成功后,ESP32作為中心設備,通過標準characteristic里的Heart Rate Service提供的UUID,進行GATT連接,從而將藍牙手環里的心跳數據傳入ESP32。ESP32內搭載的Freertos系統,通過事件以及回調函數,實現上述功能。
每隔一段時間對數據進行消抖處理后將各項數據存入結構體,然后與目標服務器建立socket連接,將結構體打包發送,發送完畢后斷開連接,流程如圖5所示。

圖5 數據發送模塊流程圖
3.3.1 數據消抖處理
在整個輸液過程中,由于會存在人為的晃動造成數據的抖動,因此在數據發送前加入消抖處理,將異常數據消除。設定一個閥值,將此次發送的數據變化量與上一次發送時的數據變化量作比較,若二者的差超過閥值,則放棄此次數據,否則繼續發送。
3.3.2 結構體封裝
因為要往護士站服務器發送的數據有很多項,如心跳值、液量剩余量等。數據若沒經過整理就會很難處理,通過使用結構體來對要發送的數據進行封裝,方便稍后的socket數據發送,也方便服務器端的數據接收。發送數據時通過強制轉換使結構體以字符串的形式發送即可。
護士站服務器軟件選擇的開發平臺為QT。QT具有極強的可移植性,同樣的程序可實現快速在Windows或者Linux這兩種不同的操作系統上部署。這樣可以忽略不同操作系統對程序設計造成的影響。程序主要分兩大模塊,第一個模塊為數據接收模塊,用于接收輸液監測端發送的數據;第二個模塊為數據顯示及報警模塊,將接收到的數據進行顯示,并且對異常數據進行報警。
創建一個線程,用于監聽端口,若有連接請求,響應請求并建立連接,然后開始接收數據,用與輸液監測端處封裝的結構體相同的格式把接收到的數據保存下來,從而完成數據接收過程。
用戶交互界面主要是在顯示屏上顯示病人個性化信息與當前輸液瓶中液體剩余量,而且當剩余量到達警戒線,或者心跳值異常,會生成的輸液報警信息進行報警。

圖6 護士站效果圖
4.2.1 基本信息顯示
基本信息主要通過QTtableView創建表格來進行數據顯示。在完成數據接收后,把接收的數據傳入tableView中。判斷結構體中的id是否存在于表格中,若已有此id,則進行數據更新,若沒有此id,則新建一行并將數據分列進行顯示。判斷液量剩余量以及心跳值,若達到報警條件,則標紅對應id的數據并置頂進行報警。基本信息顯示效果如圖6所示。
4.2.2 心跳值折線圖
為了更加直觀的觀察輸液過程心跳值的變化,通過基本的繪圖函數類,創建橫坐標為時間縱坐標為心跳值的坐標系,每次接收到數據后,在傳入tableView進行顯示的同時,將心跳值傳入坐標系行標點,以此完成折線圖的繪畫。心跳值折線圖效果如圖7所示。

圖7 心率折線圖
本系統使用阿里云對象存儲服務(Object Storage Service,簡稱OSS)。因為OSS支持直接上傳文件,所以先按照患病的種類,將各個病例輸液時的心率變化圖、輸液針眼圖進行整理然后直接將整理完畢的圖片上傳入云端,實現關鍵數據存儲,方便后面進行數據分析。
本新型輸液系統設計方案有著智能化、低成本的優勢。在功能上有著強大的性能支撐,不僅是一套輸液監測系統,還能通過整合第三方醫療數據成為新一代的醫療數據平臺。