【作 者】陳蓓蓓,盧路瑤
溫州醫科大學附屬第一醫院,溫州醫科大學 生物醫學工程學院,溫州市,325000
在傳統醫院病房中,受傷較重的病人大多需要他人的陪同照料,但不是所有的家庭都能負擔起護工的費用,或是長期不工作帶來的損失[1];對于一些特殊的住院病人需要一些機器輔助治療,而操作設備的醫護人員人數有限,病患較多,常常導致不能及時撤下醫療設備。為克服或者改善這種情況,使病患和醫護人員都能省時省力解決問題,設計了智能護理系統,可以實現護士在手機上就能看到哪位病人已經做完診療,快速、準確找到對應的患者,為其撤下裝置[2]。此外,對于一些手腳不便的病人,可以在不麻煩他人的情況下自行完成例如關燈、關電視之類改變病房內環境的操作,盡量做到病人躺在床上可以調節平臥、半臥、直坐、翻身等姿勢調節,以達到減輕病人家屬及醫護人員的負擔。
智能護理系統單片機端主要由STM32單片機小系統、電源部分、電機控制部分、溫濕度監控部分、體溫及心率測量部分、LCD液晶顯示模塊和蜂鳴器報警部分組成[3],系統控制的實現方案,如圖1所示。

圖1 系統控制的實現方案Fig.1 The realization scheme of system control
STM32 mini板需要用+5 V 的直流電壓供電,每個并行IO口引腳輸出的電壓最大也不會超過3 V左右,但我們需要用到的直流電機需要5 V直流電壓供電,由于單片機的IO電平電壓不足以直接驅動直流電機,因此光靠STM32的IO口輸出的信號不足以控制直流電機,所以需要采用驅動電路(ULN2803),電機控制電路,如圖2所示。病床機械部分依靠兩個步進電機帶動,起翻身和起身作用。步進電機通過ULN2003與單片機連接。

圖2 電機控制電路Fig.2 The circuit diagram of motor control
GY-39模塊工作電壓為3 V~5 V,功耗低,安裝方便。溫度測量范圍為-40oC~85oC,濕度測量范圍為0%~100%,能夠滿足本系統設計的要求[4]。其工作過程是:MCU收集各種傳感器數據,進行統一處理,并且直接輸出所計算出的結果。STM32通過串行端口發送0×45到GY39模塊。然后,GY39模塊通過串行端口發送測量數據到STM32 MCU。STM32把所測得的溫度值和濕度值顯示到LCD上,并且通過對比預設值來判斷是否需要報警,溫濕度監控電路,如圖3所示。

圖3 溫濕度監控電路Fig.3 The circuit diagram of temperature and humidity monitor
藍牙模塊用于與軟件的交互,智能護理系統選用HC05型號的藍牙模塊,它是一款高性能主從一體藍牙串口模塊,作為一個藍牙轉串口的設備,只要使用串口編程就能使用,并且可兼容安卓設備實現數據透傳。HC05的RX和TX腳分別連接至單片機的PA2和PA3腳,藍牙電路連接,如圖4所示。

圖4 藍牙電路連接Fig.4 The circuit diagram of Bluetooth connection
DS18B20體溫模塊提供9位溫度讀數,只需一根線便可連接單片機與DS18B20[5]。為了確保DS18B20能完成準確的溫度變換,當溫度變換發生時,I/O線上必須提供足夠的功率。因此在I/O線上提供上拉電阻,以使在有效溫度變換期間DS18B20得到足夠電源電壓,從而達到足夠的功率DS18B20的引腳1接地;引腳2與單片機P55相連,并通過10 kΩ電阻與5 V電源相連使之鉗制在高電位;引腳3連接5 V電源;體溫檢測電路,如圖5所示。

圖5 體溫檢測電路Fig.5 The circuit diagram of temperature detection
收集心率信號用Pulsesensor脈搏心率傳感器。Pulsesensor脈搏心率傳感器可以戴在手指或者耳垂上。當脈搏跳動時,指尖或者耳垂的動脈血管血容量發生周期性變化[6]。光電傳感器一側的發光二極管發光透過指尖的光強度隨著動脈血管血容量變換發生周期性變化,傳感器另一側的光電三極管就會接收到紅外光信號并轉化為電信號,得到模擬心率的波形。為了方便單片機檢測心率傳感器的輸出信號,選擇LM393比較器將波形進行轉換,使傳感器輸出信號轉換為標準方波信號,利于單片機采集,保證了信號的穩定檢測。心率檢測硬件設計電路,如圖6所示。

圖6 心率檢測電路Fig.6 The circuit diagram of heart rate detection
智能護理系統APP設計采用的ANDROID集成開發工具ANDROID Studio 提供有Bluetooth相關API,包括藍牙套接字,藍牙開閉及狀態查詢等等,可以滿足系統APP軟件需要達到的功能。
智能護理系統APP設計作為控制端,將計劃好所有要用到的控件,用XAML語言和約束布局完成APP UI界面的設計,隨后使用Java語言進行代碼部分編寫。首先實現與藍牙設備的連接和配對的功能,隨后實現數據的發送和接收、傳輸協議的制定,最后實現動態波形的顯示。ANDROID端控制流程,如圖7所示。

圖7 ANDROID端控制流程Fig.7 The flowchart of Android-based control
智能護理系統初始化(包括液晶,ULN2003,體溫、心率傳感器,預設賦初值),調用電機、體溫、心率子程序,判斷壓力開關是否閉合,電機按鍵是否閉合,體溫及心率是否有信號輸入,然后LCD顯示體溫和心率,并通過藍牙傳輸到手機APP,上述流程,如圖8所示。

圖8 智能護理系統主程序流程Fig.8 The flowchart of intelligent nursing system
藍牙通信使用的是藍牙Socket通信機制,服務端將首先建立一個服務器套接字,然后該套接字將開始監聽客戶端是否有連接請求;客戶端則也建立一個客戶端套接字向服務端發起連接,此時如果沒有異常,那么兩臺設備便已配對成功;由于此時客戶端和服務端都會持有一個Socket,利用該Socket即可發送和接收數據了。
藍牙的連接通訊功能在使用前需在AndroidManifest.xml中添加與藍牙相關的權限。若想要在APP中使用藍牙,必須申請BLUETOOTH權限,若涉及更為復雜的操作,如掃描設備、操作藍牙設置等,還要申請BLUETOOTH_ADMIN權限,這是ANDROID出于風險管控的考慮而設置的。ANDROID 6.0以上版本在搜索周圍的藍牙設備,還需要申請位置權限ACCESS_COARSE_LOCATION或ACCESS_FINE_LOCATION,并且將手機的位置服務(定位 GPS)打開。由于位置權限是“dangerous”級權限,除了需要在Manifest里申請之外,還需要在代碼中進行動態申請。
APP開發中與藍牙相關的API都存在android.bluetooth包內,實現藍牙開啟和閉合的類是:BluetoothAdapter,它代表本地藍牙適配器,該BluetoothAdapter使所有藍牙裝置交互。采用BluetoothAdapter.getDefaultAdapter()方法可獲取到本地手機藍牙適配器,即進行類的實例化,實例化后使用BluetoothAdapter.isEnabled()獲取本地藍牙是否已打開,若返回值為True則表示本地藍牙已經打開,可使用BluetoothAdapter.disable()方法關閉本地藍牙,若為False則表示本地藍牙是關閉狀態,使用mBluetoothAdapter.enable()方法隱式打開藍牙。
藍牙設備搜索的處理首先要檢測定位權限,如果是禁止狀態則終止流程,若處于待詢問狀態則前往申請,為允許狀態則繼續流程。隨后檢測藍牙狀態,如非STATE_ON則先用靜默方式打開藍牙。接著,由于藍牙權限可能被禁止,需再次檢測藍牙狀態,非STATE_ON時發送Intent打開。
要在兩個設備之間連接,必須采用服務器和客戶端的機制。作為服務器,必須開啟服務端Socket。作為客戶端,需要使用MAC地址向藍牙設備發起配對連接。當服務器和客戶端在相同的RFCOMM通道之間,則已相互連接。以這種方式,每個設備可以獲取輸入和輸出流并交換數據。服務器和客戶端可以獲取以不同的方式所需要的BluetoothSocket。在智能護理系統中,手機扮演服務端的身份,硬件則扮演客戶端的角色。作為服務端連接首先需要調用cre ateRfcommSocketToServiceRecord(UUID)方法獲取到客戶端接口,作為串口收發UUID需為"00001101-0000-1000-8000-00805F9B34FB",連接成功后,將返回一個連接的BluetoothSocket,此時設備已配對成功,如要接受其他連接時可調用close()方法。
客戶端發送“AB”(ASCII碼),客戶端接收到該特定指令后,回復“T%.2fH%.2fD”,“T”代表字符串的開頭,第一個“%.2f”代表保留兩位小數的溫度測量數據,“H”代表該字符后的數據為濕度數據,第二個“%.2f”代表保留兩位小數的濕度測量數據,“D”代表該字符串已到達末尾。
客戶端發送“C”(ASCII碼),客戶端接收到該特定指令后,執行小燈A的量滅,隨后回復“K”,“K”代表指令已成功執行。客戶端發送“D”(ASCII碼),客戶端接收到該特定指令后,執行小燈B的量滅,隨后回復“K”。客戶端發送“H”(ASCII碼),客戶端接收到該特定指令后,執行繼電器的開閉,隨后回復“K”。客戶端發送“Gxx”(ASCII碼),“G”為字符串開頭,其后數據代表對電機轉速的具體數值,隨后回復“K”。客戶端發送“Z”(ASCII碼),客戶端接收到該特定指令后,執行電機轉動停止的動作,隨后回復“K”。客戶端發送“E”(ASCII碼),客戶端接收到該特定指令后,執行舵機順時針旋轉(開門)的動作,隨后回復“K”。客戶端發送“F”(ASCII碼),客戶端接收到該特定指令后,執行舵機逆時針旋轉(關門)的動作,隨后回復“K”。
客戶端發送"YZ"+TemLow+TemHigh+Hu mLow+HumHigh(ASCII碼),客戶端接收到該特定指令后,回復“K”,“YZ”代表字符串的開頭,隨后的數據為新設定的閾值數據,“TemLow”代表溫度警報下限,“TemHigh”代表溫度警報上限,“HumLow”代表濕度警報下限,“HumHigh”代表濕度警報上限。
智能護理系統的UI界面包括“歡迎頁”“主界面”“波形顯示界面”“歷史數據查詢界面”。“歡迎頁”用于顯示APP及系統的基本信息及logo;“主界面”用于設置對本機藍牙的開閉、藍牙設備配對、設定警報閾值、顯示溫濕度數據及波形、小燈及繼電器的開閉、電機轉速調節和開關門指令;“波形顯示界面”用于以動態的波形描繪的方式直觀體現和顯示室內溫度、濕度和體溫、心率的數據;“歷史數據查詢界面”用于查詢之前接收到的溫濕度和體溫、心率數據,可以按照日期進行搜索,精準查詢。智能護理系統APP各界面如圖9所示。

圖9 智能護理系統APP各界面Fig.9 The graphical user interface of intelligent nursing system
為了驗證智能護理系統準確性和有效性,我們在溫州醫科大學附屬第一醫院心臟重癥監護室(CCU)選取了一個病房進行了模擬改造測試。
我們分不同的時段,隨機選取5個病人,分別在其手機上安裝智能護理系統APP,將Pulsesensor脈搏心率傳感器戴在其手指或者耳垂上,DS18B20體溫模塊置于其指尖,準備就緒平躺于病床上,手機APP控制病房內的燈開啟和關閉并顯示測量的參數。每次測量結束后,由指定的護士分別使用福祿克F971對病房環境溫濕度測量、德國博朗醫用耳溫槍IRT6520和邁瑞MEC-1000監護儀及對5個病人進行體溫測量和心率測量并記錄測量結果,匯總進行對比、分析,如表1所示。

表1 參數測試結果Tab.1 Parameter test results
由表1可知,智能護理系統實測的溫濕度值與Fluke F971測量得到的溫濕度值對照,允許的誤差在±2℃、%5RH之內,符合《溫濕度計校驗規范》要求;實測的體溫值與德國博朗耳溫槍IRT6520測量得到的體溫值對照,允許的誤差在0.2 ℃以內,符合《醫用電子體溫計注冊指導原則》要求;實測的心率值與邁瑞MEC-1000型心電監護儀測量得到的心率值對照,最大的允許示值誤差在顯示值的5%以內,完全符合JJG 1041-2008《數字心電圖機檢定規程》要求。
本研究設計了一款應用于醫院病房的智能護理系統,具有操作簡便、測量數據準確高、穩定性強及實時性好等特點,經過臨床測試,可以實現通過手機APP控制病房環境內的溫濕度及燈光,并且可以將測量到的病患體溫及心率的數據通過藍牙傳輸到手機APP,既可以實現對病患進行全方位實時健康監測,又可以很大程度上減輕護士的工作量,提高工作效率。
智能護理系統是一個龐大而復雜的管理監控系統,本設計只是研究了它的一部分,后續在實際應用中,隨著技術日新月異的發展,其概念也會不停向前延伸,其應用也將越來越廣,一個較顯而易見的方向在于權限管控,由于現實病房中存在的角色涉及醫生、護士、護工、病人和病人家屬等會更復雜而多變,通過設置不同的權限實現控制不同級別的功能是我們下一步的工作目標。