北京信息科技大學,北京 100192
靜脈輸液以其療效好、起效快等特點被廣泛應用于臨床,尤其對于糾正水電解失調、營養(yǎng)補充、休克搶救等效果更為明顯。但是,靜脈輸液也會引起各種不良反應,比如靜脈炎、肺水腫、空氣栓塞等,往往造成嚴重的后果[1]。
臨床上根據患者的情況和藥物的不同,輸液速度也不一樣,合適的輸液速度是使患者得到有效治療的重要保證。輸液速度過快,患者輕則可能中毒,重則可能水腫或心力衰竭;而輸液速度過慢,雖然不會像過快那樣造成生命威脅,但會使藥量不夠從而延長輸液時間,增加治療時間和治療費用[2]。
在傳統(tǒng)的輸液中,輸液速率主要由有經驗的護士進行確定,他們會根據患者的年齡、病情、藥物的種類等多方面的情況設定不同的輸液速率,一旦速率出現過快或過慢,護士只能依靠手動夾子控制輸液流速,工作量很大,這樣就增加了很多安全隱患,容易造成醫(yī)患事故。醫(yī)院每天接待大量的輸液患者,如何提高輸液室的工作效率以及保障病人能夠得到安全有效的護理成了現代醫(yī)院工作的重中之重。
本文對現代醫(yī)院的輸液流程進行了改進,利用Visual Studio2013軟件和SqlServer2008數據庫,開發(fā)出一款能夠實現在電腦終端一鍵核對輸液信息、設置輸液速度的護士站系統(tǒng)軟件。護士通過用掃描器掃描患者手腕和輸液瓶簽上的二維碼,將相應的信息傳輸到上位機端,在數據庫中進行比對,從而實現信息核對的目的。系統(tǒng)軟件能夠根據病人的一次輸液量和預計輸液時間,通過輸液速度算法計算出相應合理的輸液速度。經過驗證,該軟件能夠有效的減輕護士的工作量,提高護士的工作效率。
在現代中小型醫(yī)院的門診輸液過程中,根據護士的“三查七對”,可將輸液過程分為3個階段[3-4]。首先,護士根據病人的刷卡信息或病歷本核對病人的輸液藥品,并手工的制作一份或多份輸液瓶簽;其次,當病人需要換瓶時,護士根據瓶簽進行信息核對,以防止換錯藥液而發(fā)生危險;最后,輸液完成,護士再次進行信息核對,確認病人信息,查看輸液完成進度,防止漏輸藥液的情況。在輸液過程中,雖然護士反復的進行“三查七對”,但還是不可避免的出現各種的危機病人健康安全乃至生命安全的情況,比如因病人同名同音同字或者藥物通用名稱的更換,甚至于因護士不能有效的執(zhí)行繁雜的“三查七對”等,都給醫(yī)院的護理工作帶來極大的安全隱患。
結合輸液泵的WIFI技術和二維碼技術,改進后的輸液流程如圖2所示,當病人刷卡之后,在護士站的軟件上會顯示病人的基本信息和藥物信息,護士只需在軟件上為其分配相應的座位號并設置好輸液速度,連接護士站軟件的打印機就會打印出病人相應的瓶簽和腕帶,瓶簽和腕帶上包括含有病人信息的二維碼,當護士為病人輸液是只需掃描病人腕帶上的二維碼,二維碼的信息就會上傳到數據庫中,并在數據庫中尋找相應的病人,如果信息一致,掃描器會閃爍綠燈,并發(fā)出“信息一致”的提示,否則,掃描器會閃爍紅燈,發(fā)出“信息不一致,請重新掃描”的提示。
QR Code全稱 Quick Response Code,即快速反應的碼,是近幾年來在移動設備上十分流行的一種編碼方式,它不僅能表示更多的數據類型,比如:字符,數字,日文,中文等等,還比傳統(tǒng)的條形碼(Bar Code)能存儲更多的信息。日常生活中所見到的二維碼基本都是QR Code,以下以QR Code為例介紹二維碼的編碼原理[5-6]。
QR碼的基本結構如圖3所示,各部分的功能和含義如下:
位置探測圖形、位置探測圖形分隔符、定位圖形:起到定位的作用,統(tǒng)稱為定位圖形,這些“定位圖形”在二維碼圖案上的相對位置是恒定不變的。
校正圖形:僅在版本2以上的二維碼中存在,由三個黑白相間的小正方形嵌套組成,便于確定中心,糾正扭曲,其相對位置和數量主要由二維碼的規(guī)格大小確定。
格式信息:主要作用是糾錯,又稱為糾錯級別,對于QR碼而言,共有L、M、Q、H四個糾錯級別。
版本信息:又稱為二維碼的規(guī)格大小,對矩陣式編碼的QR碼而言,可細分為40中不同的規(guī)格,又稱為40種不同的版本。版本1是21×21矩陣,版本40是177×177矩陣,遞增的版本相應的邊長增加4個矩陣,即(V-1)× 4 + 21(V表示版本號)。
數據和糾錯碼字:數據表示二維碼中保存的真實的經過一系列規(guī)則轉換的信息,而糾錯碼字的作用是糾正因二維碼圖案損壞或被覆蓋而導致的信息不能正常讀取,這也是二維碼具有最大的性能優(yōu)勢的原因所在。
精準控制輸液速度是智能輸液泵的本質所在,而輸液泵能夠精確控制流速的核心是其中的步進電機。輸液泵之所以能夠精確的控制流速,主要是通過步進電機控制蠕動排,使其擠壓輸液導管,使其達到精確輸液的目的。因此可以說實際上的輸液速度ml/h在輸液泵中的步進電機上指的是step/s。而輸液泵中步進電機運行每一步而排出液體的量也有一定的換算規(guī)則[7-8]。
步進電機的實際精度可以通過精度方程求出,當步進電機存在無效步數是,精度方程為:
其中,FACT_STEPS_PER_ML——表示步進電機的實際精度,單位:step/ml;
INVALID_STEPS——表示步進電機在運行過程中無效步數,單位;step;
VALID_STEPS——表示電機的有效步數,單位:step;
STEPS_PER_ML——表示電機的有效精度,步進電機的固有屬性,單位:step/ml。
由方程(1)可得到步進電機以固定流速走1h需要實際電機步數方程為:
其中,FACT_STEPS_PER_HOUR——表示步進電機以固定流速運行的步速,單位:step/h;
ML_PER_HOUR——表示輸液速度,單位:ml/h。
由方程(2)可得到1s走的電機步數方程為:
由方程(1)~(3)可以計算出步進電機的步速FACT_STEPS_PER_S和輸液速度ML_PER_HOUR的關系方程:
智能輸液泵的輸液速度模式可以分為兩種,ml/h模式和gtt/min模式。在ml/h模式下,輸液速度的準確性在±5%以內,而gtt/min模式下,輸液速度的準確性在±3%以內。考慮到實際的可操作性,大部分輸液泵的輸液速度模式都被設置為ml/h。在已知一次輸液總量和預計輸液時間的情況下,輸液速度方程為:
其中,Dose——表示一次輸液液體總量,單位:ml;
ΔT——表示預計輸液時間,單位:h。
由(4)~(5)方程可以求得在已知輸液總量和預計輸液時間的情況下的步進電機的步速,進而達到精確控制輸液精度的要求[9]。
一般情況下,輸液病人收到的醫(yī)囑并不是直觀的輸液速度,而是比如300ml生理鹽水和26ml消炎藥,預計輸液時間2h,需要將醫(yī)囑通過正則表達式進行處理,得到只有數字的輸液總量Dose和預計輸液時間ΔT,然后由專門的護士核對輸液信息,若信息正確,護士點擊“確認”,自動計算輸液速度并通過WiFi傳輸到病人相對應的輸液泵上,由輸液泵內部的電機步速算法求出電機步速FACT_STEPS_PER_S。 算法的內部處理邏輯如圖4所示。
護士站系統(tǒng)的架構從大的方面來說分為兩部分,一部分是Database Server(數據庫服務器),另一部分是Client(客戶端)。
Database Server運行環(huán)境為SqlServer2008,它不僅可以對數據進行查詢、搜索、同步、報告和分析之類的操作,而且可以將結構化、半結構化和非結構化文檔的數據直接存儲到數據庫中,更重要的是它允許在使用 Microsoft. NET 和Visual Studio開發(fā)的自定義應用程序中使用數據。Database Server的主要作用有三點,一是存儲管理病人信息、輸液信息等數據,二是和HIS Database(醫(yī)院總數據庫)進行數據的交互,三是獨立的Database可以很大程度上減輕整個軟件的運行壓力。
Client包括大致六個界面,分別是User Login(用戶登錄),Patient Information(病人信息),Infusion Setting(輸液設置),Infusion progress(輸液進度),Infusion Information(輸液信息),User Management(用戶管理)等,除了Patient Information界面既與HIS Database相連接,實現對待輸液病人信息的接收,又與Database Server相連接,將待輸液病人的基本信息存儲到相應數據庫的表中,實現后續(xù)的邏輯處理[10]。
TCP/IP是一組用于實現網絡互連的通信協(xié)議。Internet網絡體系結構以TCP/IP為核心?;赥CP/IP的參考模型將協(xié)議分成四個層次,它們分別是:網絡訪問層、網際互聯層、傳輸層(主機到主機)、和應用層。上位機應用程序處于模型最頂層的應用層,而在其下面的傳輸層中有兩種協(xié)議為其提供連接通信傳輸數據服務,分別是TCP(Transmission Control Protocol,傳輸控制協(xié)議)和UDP(User Datagram Protocol,用戶數據報協(xié)議)。
TCP(Transmission Control Protocol,傳輸控制協(xié)議)是基于連接的協(xié)議,也就是說,在正式收發(fā)數據前,必須和對方建立可靠的連接。一個TCP連接必須要經過三次“對話”才能建立起來,這樣做的目的是使連接十分安全、可靠。UDP(User Data Protocol,用戶數據報協(xié)議)是與TCP相對應的協(xié)議。它是面向非連接的協(xié)議,它不與對方建立連接,而是直接就把數據包發(fā)送過去!UDP適用于一次只傳送少量數據、對可靠性要求不高的應用環(huán)境。本項目的上位機軟件的開發(fā)環(huán)境是C#和SqlServer2008,下位機是智能輸液泵,基于安全考慮,在上位機和下位機的網絡通信方面,采用TCP協(xié)議連接最為合適。在TCP/IP的網絡通信中,Socket(套接字)應用的最為廣泛,也是針對網口通信最有效的一種選擇[11]。
一對一通信時,只有一個Server和一個Client,因此只需要一個Socket通道,無論是上位機還是下位機,在發(fā)送和接收數據的時候都不會存在數據亂發(fā)亂收的情況。在本項目中,一個護士站軟件對應多個智能輸液泵,也即是一個上位機對應多個下位機,所以需要護士站軟件作為上位機的Server,下位機的多個智能輸液泵作為Client。此時,需要特別注意的是在發(fā)送數據是就需要Server記錄Client和其相應的Socket通道,以便進行后續(xù)的邏輯處理[12]。
首先需要建立一個Server和Client通信的類,
通信類ConSocket的作用不僅起到為Server和Client通信的作用,還能夠避免IP等變量的重復定義。
然后,聲明一個鍵值對,用于存儲每個客戶端對應的IP、端口號port和Socket。
在Server向指定的某一個Client傳輸數據時,僅僅需要對比當前的IP和端口號port是否和鍵值對中的值是否一致,就可以找到對應的Socker進行數據傳輸。
需要注意的是,在程序中無論是Server等待Client的連接還是接收Client發(fā)送的數據,都處在一個while(true)的死循環(huán)中,這樣一旦鏈接或接收數據,就會造成程序出現卡死,最好的解決辦法是新建一個線程。將“等待連接”“接收數據”等處于while(true)循環(huán)中的部分封裝成一個“方法”,并將這些“方法”作為新線程的參數。
就C#的編譯環(huán)境.NET而言,在程序開始運行時,會先檢查跨線程的訪問,默認情況下,跨線程訪問都被認為是不合法的,而大多數情況下,跨線程訪問又是必不可少的,所以需要下程序界面開始加載時取消跨線程訪問的檢查。
上位機與下位機交互流程如圖6所示。
護士站系統(tǒng)軟件的用戶是護士和護士長,不同的職位顯示不同的界面,以護士長的身份登入軟件會顯示“用戶管理”界面,護士長可以增加、刪除軟件用戶。
首先顯示的是病人的基本信息和輸液信息,護士點擊‘確認’按鈕之后,軟件會自動生成含有病人信息和輸液信息的二維碼。護士需要先為病人安排座位,界面右側顯示的是相應座位上輸液泵的使用情況,顏色的不同代表不同的狀態(tài),然后點擊‘打印’按鈕,可以通過外接的打印機打印出所需要的腕帶和標簽。如果打印之前未為病人安排座位或者安排錯誤的座位,會有相應的提示信息[13]。
護士為病人安排好座位后需要在輸液管理頁面輸入‘預計輸液時間’,系統(tǒng)會根據之前通過正則表達式計算出的輸液總量和相應的‘預計輸液時間’在輸液跟蹤界面上開始計時,一旦輸液時間結束,在相應病人的信息欄‘完成’按鈕的邊框會變成紅色,提示護士準備為病人拔針。同時,輸液完成的病人信息會從‘輸液跟蹤’界面消失,出現在‘輸液完成’界面,方便后續(xù)的管理。
基于二維碼的護士站系統(tǒng)能夠根據現今醫(yī)院的具體要求實現智能信息核對,輸液自動報警提示等功能,符合現代醫(yī)院的智能化發(fā)展。上位機軟件界面友好,操作簡單,通過與下位機設備結合,大大減輕了護士的工作量,提高了工作效率。該系統(tǒng)已經經過醫(yī)院的測試,取得了良好的效果。