劉琪琪
(西北民族大學(xué)電氣工程學(xué)院 甘肅省蘭州市 730000)
當(dāng)前,基于物聯(lián)網(wǎng)技術(shù)下的智能取藥系統(tǒng)成為各大醫(yī)院的重要引進(jìn)技術(shù)及改進(jìn)趨勢(shì)。取藥系統(tǒng)對(duì)于傳統(tǒng)中藥材抓藥而言,大大解決了中藥材存儲(chǔ)及比例分配等問題,提高了抓藥的精確性。本系統(tǒng)提出基于Node-RED 流式編程的物聯(lián)網(wǎng)應(yīng)用設(shè)計(jì),使用Node-RED平臺(tái)提供的高級(jí)開源工具,同時(shí)配合MQTT 協(xié)議,實(shí)現(xiàn)上位機(jī)的聯(lián)網(wǎng)及圖形交互功能,便于管理者通過云服務(wù)器連網(wǎng)管理數(shù)據(jù)。
本文將依次闡述該取藥系統(tǒng)的硬件及軟件設(shè)計(jì)以及如何利用Node-RED 在此系統(tǒng)中發(fā)揮重要作用。
該系統(tǒng)主要分為三部分:藥柜自動(dòng)取藥的硬件設(shè)計(jì)和面向用戶的Node-RED 可視化編輯器的聯(lián)網(wǎng)設(shè)計(jì)與上位機(jī)的搭建。
當(dāng)病人掛號(hào)后,醫(yī)院系統(tǒng)自動(dòng)生成病人基本信息,系統(tǒng)聯(lián)網(wǎng),醫(yī)生將開具的藥方錄入系統(tǒng)并編號(hào);當(dāng)藥方讀入上位機(jī)后,上位機(jī)傳入STM32 使其控制藥柜裝置開始自動(dòng)工作,按照藥方自動(dòng)完成取藥。該系統(tǒng)由計(jì)算機(jī)核心控制,通過設(shè)計(jì)上位機(jī)及Node-RED 的搭建來完成接駁聯(lián)網(wǎng)、面向用戶的界面設(shè)計(jì)、藥材實(shí)時(shí)查看、讀入藥方等功能;依靠一定的算法和電機(jī)驅(qū)動(dòng)將藥材包通過改進(jìn)的藥柜推進(jìn)裝置取出,再利用靈敏度高的薄膜壓力傳感器檢測(cè)藥材是否取完并返回上位機(jī)顯示,同時(shí)利用語音模塊,顯示屏在取藥柜和取藥處大屏幕上分別對(duì)撿藥員提示藥材狀態(tài),對(duì)病人提示“XXX 正在取藥,下一位XXX,請(qǐng)等待預(yù)計(jì)XX 分鐘”等信息,從而實(shí)現(xiàn)交互功能。
系統(tǒng)總體概述圖如圖1 所示。
從病人掛號(hào)開始,采集病人的姓名、性別等基本信息并傳入系統(tǒng);待病人就診時(shí),醫(yī)生提取病人信息并錄入藥方;系統(tǒng)聯(lián)網(wǎng)并將藥方傳入上位機(jī)及云服務(wù)器,病人前往取藥區(qū)取藥。
2.2.1 PC 上位機(jī)
上位機(jī)獲取藥方后,直接發(fā)送操作指令給下位機(jī),提供用戶操作交互界面并向用戶展示反饋數(shù)據(jù),在屏幕上顯示各種數(shù)據(jù)變化。上位機(jī)和下位機(jī)之間的通信協(xié)議采用RS232/RS485 串行通信。只要通信協(xié)議可以建立,上位機(jī)軟件可以是任意開發(fā)語言和任意開發(fā)平臺(tái),下位機(jī)也可以使用任意類型的單片機(jī),本系統(tǒng)采用Python 編程開發(fā)。
當(dāng)需要補(bǔ)錄和完善藥方時(shí),醫(yī)生可通過上位機(jī)查看、錄入、修改,使抓藥過程自動(dòng)化。
上位機(jī)界面如圖2 所示。
2.2.2 聯(lián)網(wǎng)及圖形交互界面設(shè)計(jì)
該部分主要用到Node-RED 平臺(tái)及MQTT 協(xié)議實(shí)現(xiàn)。主要顯示藥材余量,當(dāng)余量不足時(shí),采取報(bào)警措施并聯(lián)網(wǎng)發(fā)送郵件給藥材管理員。
圖1:總體概述圖
圖2:上位機(jī)界面大致圖
Node-RED 是基于JavaScript 開發(fā)的一款圖形界面處理平臺(tái),它是一款可拖拽式數(shù)據(jù)流編程軟件[1]。上位機(jī)在呈現(xiàn)數(shù)據(jù)的過程及用戶的交互界面設(shè)計(jì)中,需要將數(shù)據(jù)轉(zhuǎn)發(fā)并存儲(chǔ)到云服務(wù)器,而Node-RED 是一個(gè)基于瀏覽器的圖形界面,可以幫助靈活地安裝各種插件,它可以支持各種協(xié)議,同時(shí)支持HTTP、TCP、UDP、Socket 及MQTT。通過Node-RED 提供的若干種節(jié)點(diǎn)完成上位機(jī)與云服務(wù)器之間的串口通信、通信狀態(tài)遷移及一些輔助功能。本項(xiàng)目使用MQTT 協(xié)議,它在此項(xiàng)目中充當(dāng)了上位機(jī)連接云服務(wù)器的橋梁作用。
本項(xiàng)目中將采用輕量級(jí)的Mosquitto 在阿里云的Linux 主機(jī)上搭建Node-RED 和MQTT 服務(wù)器,實(shí)現(xiàn)系統(tǒng)聯(lián)網(wǎng)功能及終端與云服務(wù)器的中間通信。
系統(tǒng)通信結(jié)構(gòu)如圖3 所示。
圖3:系統(tǒng)通信結(jié)構(gòu)
圖4:推進(jìn)裝置及藥柜圖
圖5:系統(tǒng)總體流程圖
該藥柜以STM32F103C8T6 為主控,加裝推進(jìn)裝置、薄膜壓力傳感器、顯示屏及TTS 語音模塊,將普通中藥材藥柜改進(jìn)成為病人提供全自動(dòng)的一體化裝置。
3.1.1 推進(jìn)裝置的設(shè)計(jì)
將藥材包從廠家購(gòu)入,要求藥材包以1 克和5 克為基數(shù),將兩種不同規(guī)格的同品種藥材包裝入同一個(gè)藥盒并標(biāo)記,一個(gè)藥盒設(shè)計(jì)兩個(gè)出藥通道。該通道主要由步進(jìn)電機(jī)[2]、步進(jìn)電機(jī)驅(qū)動(dòng)器和彈簧組成。通過一定算法,控制加在電機(jī)線圈上的電脈沖順序及頻率,使電機(jī)按要求控制彈簧的旋轉(zhuǎn)圈數(shù)取出藥包。
表1:系統(tǒng)測(cè)試結(jié)果
推進(jìn)裝置及藥柜圖如圖4 所示。
3.1.2 薄膜壓力傳感器
本系統(tǒng)采用此傳感器對(duì)壓力的靈敏度高,而藥材包重量輕。在測(cè)量過程中,壓力直接作用在傳感器的膜片上,使傳感器的電阻發(fā)生變化并轉(zhuǎn)換輸出一個(gè)與壓力相對(duì)應(yīng)的標(biāo)準(zhǔn)信號(hào)。在藥柜出藥口底部裝上該傳感器,當(dāng)藥包抓完時(shí),無法檢測(cè)到傳感器的反饋信號(hào),則自動(dòng)提醒管理員添加藥包。
3.1.3 TTS 語音模塊
本系統(tǒng)采用一款高集成度的語音合成芯片,它可以實(shí)現(xiàn)中英文語音合成、錄音、播放以及輕量級(jí)的語音識(shí)別功能。此語音模塊將所取藥材包是否為空反饋出來,方便進(jìn)一步提示管理員藥材情況。
本系統(tǒng)設(shè)有兩塊OLED 顯示屏,一塊裝在藥柜中,反饋當(dāng)前時(shí)間,藥物余量等信息,幫助藥材管理員查看。另一塊用于模擬醫(yī)院信息流動(dòng)的大屏幕,用于顯示“XXX 正在取藥,下一位XXX,請(qǐng)等待預(yù)計(jì)XX 分鐘”等信息,方便在人流較大的時(shí)候,為病人對(duì)時(shí)間把控提供便利。
系統(tǒng)總體流程圖如圖5 所示。
本文主要從三個(gè)方面對(duì)系統(tǒng)進(jìn)行測(cè)試:藥方數(shù)據(jù)上傳的準(zhǔn)確性、電機(jī)控制功能準(zhǔn)確性、外設(shè)反饋是否正常。系統(tǒng)測(cè)試結(jié)果如表1 所示。
該系統(tǒng)實(shí)現(xiàn)了聯(lián)網(wǎng)功能及裝置自動(dòng)化,通過該智能系統(tǒng)降低人為抓藥犯錯(cuò)幾率,能夠?qū)⑺幬锏臄?shù)據(jù)及時(shí)反饋給管理者。通過上位機(jī)與下位機(jī)的交互精準(zhǔn)反饋,同時(shí)通過語音交流互動(dòng)功能實(shí)現(xiàn)人機(jī)對(duì)話,使得患者對(duì)于藥品的了解和使用更加地便利,大大減少了服務(wù)成本,緩解醫(yī)務(wù)人員的工作量。項(xiàng)目對(duì)于封裝成份的產(chǎn)品皆有一定的適用性,功能擴(kuò)展性強(qiáng),可針對(duì)珍貴藥材在溫濕度等方面加大管理效果。