病人醫(yī)療監(jiān)護(hù)系統(tǒng)采用C/S架構(gòu)的VC開(kāi)發(fā)的應(yīng)用系統(tǒng),分為服務(wù)器端和客戶端,客戶端分為病人端和醫(yī)生端,通過(guò)面向?qū)ο蠹夹g(shù)來(lái)實(shí)現(xiàn)界面的顯示,界面顯示的過(guò)程中使用了雙緩沖繪圖技術(shù)以及VC自定義控件技術(shù)。
病人端把讀取到的曲線數(shù)據(jù)和隨機(jī)函數(shù)生成的數(shù)字?jǐn)?shù)據(jù),以波形圖像和數(shù)字形式在對(duì)應(yīng)窗口顯示出來(lái),然后通過(guò)服務(wù)器將數(shù)據(jù)發(fā)送到醫(yī)生端,并在醫(yī)生端以同樣的方式用窗口顯示出來(lái),從而達(dá)到對(duì)病人的遠(yuǎn)程監(jiān)護(hù)。
論文詳細(xì)介紹了系統(tǒng)的設(shè)計(jì)和核心算法。
初步測(cè)試表明,系統(tǒng)實(shí)現(xiàn)了基本功能。
關(guān)鍵詞:醫(yī)療;監(jiān)護(hù);服務(wù)器;遠(yuǎn)程;構(gòu)架
中圖分類(lèi)號(hào):TP277
是傳統(tǒng)醫(yī)療方式存在很多不便,而且必須是跟醫(yī)生進(jìn)行面對(duì)面交談,造成了醫(yī)生的工作量的增加,不利于醫(yī)生更好的展開(kāi)工作。
鑒于此,開(kāi)發(fā)一個(gè)醫(yī)療系統(tǒng)可以減輕醫(yī)生的負(fù)擔(dān),也實(shí)現(xiàn)對(duì)病人不在醫(yī)生身邊時(shí)對(duì)病人的監(jiān)護(hù)。
醫(yī)生希望詳細(xì)了解病人的生理數(shù)據(jù),心率,脈搏,呼吸,血壓含量,體溫等。
病人希望得到更多的健康監(jiān)護(hù),并在身體狀況不佳時(shí)得到實(shí)時(shí)提醒,而診斷數(shù)據(jù)需要通過(guò)病人獲取,診斷方法和結(jié)論則由醫(yī)生保管,因此,存在距離問(wèn)題。
為解決上述難題,近年來(lái),面向家庭、個(gè)人的醫(yī)療監(jiān)護(hù)系統(tǒng)逐漸成為醫(yī)療技術(shù)領(lǐng)域的研究熱點(diǎn)。
1 系統(tǒng)框架
1.1 系統(tǒng)概述
本系統(tǒng)主要的功能分為:采集端對(duì)病人數(shù)據(jù)的采集;
廣東深圳專(zhuān)業(yè)醫(yī)療產(chǎn)品設(shè)備外觀工業(yè)產(chǎn)品設(shè)計(jì)醫(yī)療檔案管理對(duì)醫(yī)療技術(shù)發(fā)展的重要性分析采集端對(duì)采集數(shù)據(jù)的成像顯示;服務(wù)器端對(duì)采集端以及監(jiān)護(hù)端發(fā)送過(guò)來(lái)的數(shù)據(jù)的處理;監(jiān)護(hù)端對(duì)服務(wù)器端轉(zhuǎn)發(fā)過(guò)來(lái)采集端數(shù)據(jù)的成像處理;報(bào)警功能的實(shí)現(xiàn)。
如圖1病人醫(yī)療監(jiān)護(hù)系統(tǒng)的基本框架圖。
(1)數(shù)據(jù)的采集以及隨機(jī)函數(shù)生成的數(shù)據(jù);(2)數(shù)據(jù)的成像顯示,以及數(shù)據(jù)的發(fā)送;(3)服務(wù)器端數(shù)據(jù)的轉(zhuǎn)發(fā);(4)監(jiān)護(hù)端對(duì)收到的監(jiān)護(hù)端數(shù)據(jù)的顯示。
課題研究中的數(shù)據(jù),心率、脈
廣東深圳專(zhuān)業(yè)醫(yī)療儀器造型工業(yè)產(chǎn)品設(shè)計(jì)機(jī)電產(chǎn)品設(shè)計(jì)的關(guān)鍵技術(shù)探討搏氧、呼吸率的曲線的數(shù)據(jù)是從醫(yī)院拷貝過(guò)來(lái)的一段數(shù)據(jù),存儲(chǔ)在txt中。
通過(guò)采集端的函數(shù)讀取,顯示到對(duì)應(yīng)的窗口中。
數(shù)據(jù)的發(fā)送是通過(guò)C/S客戶服務(wù)器模式來(lái)完成,并將數(shù)據(jù)發(fā)送到服務(wù)器。
服務(wù)器通過(guò)對(duì)數(shù)據(jù)庫(kù)Map關(guān)系,查找到對(duì)應(yīng)的監(jiān)護(hù)端,并將采集端發(fā)送過(guò)來(lái)的數(shù)據(jù)發(fā)送到監(jiān)護(hù)端。
監(jiān)護(hù)端對(duì)收到的數(shù)據(jù)進(jìn)行一些處理,并顯示出來(lái)。
圖1 病人醫(yī)療監(jiān)護(hù)系統(tǒng)
采集端負(fù)責(zé)對(duì)病人數(shù)據(jù)進(jìn)行采集(對(duì)txt文件的讀?。?,并定時(shí)向監(jiān)護(hù)端發(fā)送數(shù)據(jù);同時(shí)采集端對(duì)要對(duì)采集數(shù)據(jù)進(jìn)行成像顯示;服務(wù)器端負(fù)責(zé)對(duì)采集端或者監(jiān)護(hù)端發(fā)送過(guò)來(lái)的數(shù)據(jù)進(jìn)行轉(zhuǎn)發(fā)處理,它通過(guò)查找數(shù)據(jù)庫(kù)來(lái)獲取采集端和監(jiān)護(hù)端的映射關(guān)系;監(jiān)護(hù)端對(duì)服務(wù)器端轉(zhuǎn)發(fā)過(guò)來(lái)采集端數(shù)據(jù)的成像處理。
2 詳細(xì)設(shè)計(jì)
2.1 服務(wù)器端
服務(wù)器端采用從CSocket繼承的類(lèi):CListenSocket類(lèi)和CClientSocket類(lèi)。
CListenSocket負(fù)責(zé)監(jiān)聽(tīng)開(kāi)
廣東深圳專(zhuān)業(yè)醫(yī)療產(chǎn)品造型工業(yè)產(chǎn)品設(shè)計(jì)西安中小型企業(yè)工業(yè)設(shè)計(jì)現(xiàn)狀淺析通的端口號(hào),監(jiān)聽(tīng)是否有客戶端訪問(wèn)服務(wù)器。
如果發(fā)現(xiàn)有客戶端訪問(wèn)服務(wù)器,則通過(guò)CListenSocket的一個(gè)虛函數(shù)OnAccept()來(lái)接受處理一個(gè)CClientSocket對(duì)象。
接受一個(gè)CClientSocket對(duì)象之后,由CClientSocket類(lèi)對(duì)象的一個(gè)虛函數(shù)OnReceive()函數(shù)來(lái)處理新建的
廣東深圳專(zhuān)業(yè)理邦監(jiān)護(hù)儀產(chǎn)品設(shè)計(jì)公司淺廣東深圳專(zhuān)業(yè)醫(yī)療器材產(chǎn)品外觀工業(yè)產(chǎn)品設(shè)計(jì)設(shè)計(jì)為先――BenQ五年工業(yè)設(shè)計(jì)回眸析高層建筑結(jié)構(gòu)設(shè)計(jì)CClientSocket對(duì)象。
在OnReceive()函數(shù)中來(lái)完成自定義消息的發(fā)送,交由主窗口自定義消息函數(shù)OnNetReceive()來(lái)處理客戶端發(fā)送過(guò)來(lái)的消息。
消息的分類(lèi)(例如文字消息或者曲線消息)通過(guò)枚舉對(duì)象來(lái)進(jìn)行區(qū)分發(fā)送過(guò)來(lái)的消息。
針對(duì)不同的枚舉對(duì)象有不同的消息處理函數(shù)DisposeLogin(pPack,pSocket)完成對(duì)登陸用戶的處理并將其添加到一個(gè)static list對(duì)象中。
DisposeLogout(pPack)完成對(duì)登出客戶端的處理;DisposeTransmit(pPack)完成對(duì)接收的曲線的消息的處理;DispaseChat(pPack)完成收到的文字信息處理。
2.2 客戶端
客戶端分為采集端和監(jiān)護(hù)端,采集端負(fù)責(zé)采集數(shù)據(jù)并完成數(shù)據(jù)的成像顯示,監(jiān)護(hù)端負(fù)責(zé)接收采集端發(fā)送過(guò)來(lái)的數(shù)據(jù)處理。
2.2.1 采集端采用的是一個(gè)單文檔應(yīng)用程序,通過(guò)多個(gè)窗口的創(chuàng)建來(lái)完成對(duì)病人身體狀況的一些模擬。
?。?)數(shù)據(jù)的讀取,病人信息通過(guò)計(jì)算機(jī)以及傳感器獲得心率、脈搏氧、以及呼吸率相關(guān)數(shù)據(jù);(2)曲線的成像顯示。
對(duì)圖像的顯示是通過(guò)在主
廣東深圳專(zhuān)業(yè)醫(yī)療產(chǎn)品儀器工業(yè)產(chǎn)品設(shè)計(jì)產(chǎn)品設(shè)計(jì)中的色彩分析窗口中創(chuàng)建子窗口來(lái)實(shí)現(xiàn),CDrawWnd類(lèi)就是這些窗口的父類(lèi)。
CDrawWnd類(lèi)是從主窗口CWnd繼承的一個(gè)類(lèi),CDrawWnd采用了雙緩沖繪圖技術(shù)。
因?yàn)槿祟?lèi)都有視覺(jué)暫留,普通的繪圖可能產(chǎn)生閃屏現(xiàn)象。
雙緩沖繪圖技術(shù)通過(guò)創(chuàng)建一個(gè)CDC對(duì)象和在CDC對(duì)象基礎(chǔ)上的一個(gè)CBitmap對(duì)象,在該CBitmap對(duì)象中來(lái)完成圖像的繪制(即類(lèi)似畫(huà)板)。
然后將CDC對(duì)象粘貼到系統(tǒng)視圖區(qū)對(duì)象中來(lái)完成圖像的顯示;(3)因?yàn)樾穆?、呼吸率、脈搏氧窗口的曲線顯示和心率、呼吸率、脈搏氧、血壓體溫的數(shù)據(jù)顯示是不一樣的。
所以它們都是CDrawWnd類(lèi)派生下來(lái)的類(lèi),派生之后又派生出來(lái)了不同的類(lèi)。
其中心率曲線、脈搏氧曲線和呼吸率曲線的對(duì)象是由CStripWnd類(lèi)定義的不同類(lèi)對(duì)象。
對(duì)曲線的存儲(chǔ)顯示是通過(guò)一個(gè)CStrip類(lèi)來(lái)完成的,然后在CStripWnd類(lèi)中來(lái)定義一個(gè)CStrip類(lèi)對(duì)象,在DrawContent()完成曲線繪制。
另外心率、脈搏氧和呼吸率顯示的是一個(gè)整數(shù),所以它們都是同一個(gè)類(lèi)CTextWnd類(lèi)的類(lèi)對(duì)象。
血壓顯示了三個(gè)數(shù)據(jù),因此血壓是CTextWnd類(lèi)派生類(lèi)的CTextABPWnd類(lèi)的類(lèi)對(duì)象。
體溫顯示的是一個(gè)小樹(shù),因此體溫是CTexWnd類(lèi)派生類(lèi)的CTextTempWnd類(lèi)的一個(gè)類(lèi)對(duì)象;(4)采集端也有一個(gè)繼承自CSocket類(lèi)的CClientSocket類(lèi),它的數(shù)據(jù)發(fā)送也是通過(guò)CClientScoket類(lèi)的一個(gè)類(lèi)對(duì)象調(diào)用Send()函數(shù)來(lái)完成。
數(shù)據(jù)的接受是通過(guò)CClientSocket類(lèi)的虛函數(shù)OnReceive()來(lái)完成,并通過(guò)PostMessage()函數(shù)將數(shù)據(jù)拋送到視圖區(qū)自定義消息函數(shù)來(lái)處理。
2.2.2 監(jiān)護(hù)端成像原理和采集端一樣,不同的是監(jiān)護(hù)端可以完成多個(gè)采集端數(shù)據(jù)的接受,并且單擊采集端窗口的時(shí)候可以顯示對(duì)應(yīng)的采集端曲線。
CInfoWnd負(fù)責(zé)接受來(lái)自不同采集端的小窗口的創(chuàng)建來(lái)完成數(shù)據(jù)的顯示,可以完成報(bào)警功能和選定病人端的功能。
每一個(gè)采集端都有一個(gè)閾值設(shè)置的CThresholdSetDlg類(lèi)的對(duì)話框完成閾值的設(shè)置(閾值設(shè)置的原因是因?yàn)槿梭w的一些數(shù)據(jù)是保持在一個(gè)范圍之內(nèi)的,有一個(gè)最大值和最小值,這樣我們可以自己定義可以承受大的范圍)。
其它的功能類(lèi)似于采集端,例如數(shù)據(jù)的發(fā)送等。
3 核心算法
3.1 客戶端算法
客戶端主要算法就是所有窗口的基類(lèi),下面就是該基類(lèi)的實(shí)現(xiàn)的主要算法:
刪除創(chuàng)建的DC();
CDC*pDC=獲取設(shè)備DC();
獲取客戶區(qū)的DC(rc);
m_dcMem.創(chuàng)建和設(shè)備相同大小DC(pDC);
m_bmpMem.CreateCompatibleBitmap(設(shè)備DC,客戶區(qū).Width(),客戶區(qū).Height());
m_dcMem.SelectObject(&同客戶區(qū)大小相同CBitmap);
m_dcMem.FillSolidRect(設(shè)置客戶區(qū)背景色);
釋放DC(pDC);
3.2 服務(wù)器端算法
if(!m_scokListen.創(chuàng)建監(jiān)聽(tīng)的端口號(hào)(6000))
{:消息提示框(_T("Socket創(chuàng)建失??!"));
return;}
if(!m_scokListen.監(jiān)聽(tīng)端口())
{消息提示框(_T("Socket監(jiān)聽(tīng)失??!"));
m_scokListen.關(guān)閉();
return;}
NET_PACK*pPack=(NET_PACK*)CClien
廣東深圳專(zhuān)業(yè)起搏器產(chǎn)品設(shè)計(jì)公司論我國(guó)醫(yī)療器械發(fā)展前景tSocket傳送過(guò)來(lái)的數(shù)據(jù);
CClientSocket*pSocket=(CClientSocket*)CClientSocket對(duì)象;
switch(pPack->枚舉類(lèi)型)//枚舉類(lèi)型標(biāo)示消息的類(lèi)型
{case LOGIN:
處理登陸函數(shù)(pPack,pSocket);
break;
case LOGOUT:
處理登出函數(shù)(pPack);
break;
case TRANSMIT:
處理曲線和數(shù)字?jǐn)?shù)據(jù)函數(shù)(pPack);
break;
case CHAT:
處理聊天函數(shù)(pPack);
break;}
4 結(jié)束語(yǔ)
課題在深入分析網(wǎng)絡(luò)通信和VC成像基本原理,架構(gòu)設(shè)計(jì)和核心技術(shù)的基礎(chǔ)上,以C/S模式的架構(gòu)系統(tǒng)進(jìn)行實(shí)驗(yàn)性研究。
結(jié)合C++面向?qū)ο蟮募夹g(shù),在各個(gè)窗口通過(guò)面向?qū)ο蠹夹g(shù)來(lái)實(shí)現(xiàn)對(duì)病人數(shù)據(jù)的模擬顯示。
病人醫(yī)療監(jiān)護(hù)系統(tǒng)還有很多的不足之處。
服務(wù)器是VC開(kāi)發(fā)的exe程序滿足不了數(shù)量比較龐大的用戶需求,只適合小容量的集群。
數(shù)據(jù)包在網(wǎng)絡(luò)傳輸?shù)臅r(shí)候可能不能達(dá)到絕對(duì)的同步,如果數(shù)據(jù)包經(jīng)過(guò)的路由器過(guò)多的話,也有可能發(fā)生丟失數(shù)據(jù)包的情況
參考文獻(xiàn):
[1]劉奕,孫翱,何熙文.基于Socket的C++語(yǔ)言網(wǎng)絡(luò)通訊機(jī)制和程序設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用研究,1999(05):49-51.
[2]朱蓉.利用中間件Socket實(shí)現(xiàn)多客戶機(jī)端底層網(wǎng)絡(luò)通信[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2005(06):17-21.
[3]何進(jìn).基于Socket的TCP/IP網(wǎng)絡(luò)通訊模式研究[J].計(jì)算機(jī)應(yīng)用研究,2001(08):134-136.
作者簡(jiǎn)介:鄒燕飛(1981-),女,甘肅人,教師,講師,碩士,研究方向:并行計(jì)算、云計(jì)算、網(wǎng)格計(jì)算。
作者單位:咸陽(yáng)師范學(xué)院 信息工程學(xué)院,陜西咸陽(yáng) 712000
基金項(xiàng)目:云計(jì)算環(huán)境下資源負(fù)載均衡調(diào)度算法研究(項(xiàng)目編號(hào):13XSYK057)。