陳志云 趙 昆 白 玥 謝 翔 安煒杰
(華東師范大學(xué)計(jì)算機(jī)科學(xué)與軟件工程學(xué)院 上海 200062)
基于iOS平臺(tái)的手衛(wèi)生監(jiān)測與管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
陳志云 趙 昆 白 玥*謝 翔 安煒杰
(華東師范大學(xué)計(jì)算機(jī)科學(xué)與軟件工程學(xué)院 上海 200062)
手衛(wèi)生安全監(jiān)管是世衛(wèi)組織要求醫(yī)療機(jī)構(gòu)采取的重要醫(yī)療監(jiān)管環(huán)節(jié),但目前我國大部分的醫(yī)療機(jī)構(gòu)在進(jìn)行手衛(wèi)生的過程監(jiān)管時(shí),仍采用紙張記錄、人工錄入的傳統(tǒng)方式,整個(gè)過程耗時(shí)費(fèi)力、缺乏及時(shí)反饋,導(dǎo)致干預(yù)措施落實(shí)滯后。針對這一問題,提出一種基于iOS移動(dòng)平臺(tái)和C/S模式的手衛(wèi)生數(shù)據(jù)監(jiān)測與管理系統(tǒng)。該系統(tǒng)實(shí)現(xiàn)了準(zhǔn)確記錄、實(shí)時(shí)匯總、速成報(bào)表以及后臺(tái)管理等功能,可極大地提高醫(yī)療機(jī)構(gòu)的監(jiān)管效率。
手衛(wèi)生監(jiān)測 iOS移動(dòng)平臺(tái) MVC框架
醫(yī)院感染是醫(yī)療安全中的重要問題。美國每年發(fā)生醫(yī)院感染病例200萬例,同時(shí)產(chǎn)生超過40億美元額外醫(yī)療費(fèi)用。然而,至少30%~40%的醫(yī)院感染可以通過加強(qiáng)手衛(wèi)生措施預(yù)防[1],Larson[2]早在1988年便提出手衛(wèi)生對于醫(yī)院感染的控制有重要意義,是預(yù)防醫(yī)院感染最有效、最方便、最廉價(jià)的干預(yù)措施。根據(jù)世界衛(wèi)生組織(WHO)的建議:手衛(wèi)生依從性提高可以明顯減少醫(yī)院感染。美國一些專業(yè)機(jī)構(gòu)建議醫(yī)療機(jī)構(gòu)醫(yī)務(wù)人員的洗手依從率要達(dá)到90%以上,甚至部分醫(yī)院要求達(dá)到97%以上。我國目前醫(yī)療機(jī)構(gòu)中醫(yī)務(wù)人員手衛(wèi)生依從率僅為40%左右。如何提高醫(yī)務(wù)人員手衛(wèi)生依從率是各家醫(yī)院面臨的主要問題。WHO發(fā)布的《醫(yī)療活動(dòng)中的手衛(wèi)生指南》建議使用手衛(wèi)生監(jiān)測表進(jìn)行現(xiàn)場調(diào)查分析手衛(wèi)生依從性并及時(shí)反饋,可以有效提高依從率。但目前在我國的大多數(shù)醫(yī)療機(jī)構(gòu)中,醫(yī)務(wù)人員的手衛(wèi)生數(shù)據(jù)的采集和依從率計(jì)算還處于傳統(tǒng)的手工方式,即由觀察者將觀察對象的手衛(wèi)生執(zhí)行情況記錄在紙張表格上,然后再手工錄入到Excel中進(jìn)行依從率計(jì)算。這種傳統(tǒng)方式的過程繁瑣、耗時(shí)費(fèi)力,且容易出錯(cuò),并且因?yàn)橐约叭狈皶r(shí)反饋,導(dǎo)致干預(yù)措施落實(shí)滯后的狀況。如果是大型醫(yī)療機(jī)構(gòu),上述監(jiān)管方法嚴(yán)重影響監(jiān)管效率和監(jiān)管治療,導(dǎo)致醫(yī)療安全問題突出。
為了改進(jìn)上述情況,我們設(shè)計(jì)并實(shí)現(xiàn)了一種基于移動(dòng)終端的手衛(wèi)生數(shù)據(jù)監(jiān)測與管理系統(tǒng)。
本系統(tǒng)把世衛(wèi)組織統(tǒng)一發(fā)布的手衛(wèi)生依從性觀察表(中文版)[3]的紙張形式轉(zhuǎn)化到智能移動(dòng)設(shè)備,手衛(wèi)生觀察者通過智能移動(dòng)設(shè)備記錄觀察結(jié)果,并將數(shù)據(jù)提交至服務(wù)器后臺(tái),再在服務(wù)器端實(shí)現(xiàn)手衛(wèi)生依從率的統(tǒng)計(jì),統(tǒng)計(jì)結(jié)果可以顯示在服務(wù)器頁面,也可以直接以電子表格的形式打印輸出。
該系統(tǒng)由兩部分組成,分別是手衛(wèi)生移動(dòng)監(jiān)測APP和手衛(wèi)生數(shù)據(jù)統(tǒng)計(jì)后臺(tái)服務(wù)器。由于iPad屬于醫(yī)療機(jī)構(gòu)允許使用的、不影響其他醫(yī)療設(shè)備運(yùn)行的醫(yī)療器械,所以本系統(tǒng)的移動(dòng)端搭載在基于iOS平臺(tái)的iPad設(shè)備上,手衛(wèi)生數(shù)據(jù)統(tǒng)計(jì)后臺(tái)則以Web服務(wù)形式實(shí)現(xiàn)。iPad上觀察表截屏如圖1所示。
圖1 iPad上觀察表截圖
1.1 系統(tǒng)體系框架
系統(tǒng)體系框架如圖2 所示。系統(tǒng)主要由Web服務(wù)端(簡稱Web端)、數(shù)據(jù)庫和iOS客戶端(簡稱iOS端)組成。數(shù)據(jù)庫利用SQL Server 2008建立;iOS端主要將觀察數(shù)據(jù)實(shí)時(shí)上傳至服務(wù)器,其與數(shù)據(jù)庫的信息交互通過基于ASP.NET Web API[4-5]的組件完成;Web端主要提供數(shù)據(jù)的查詢與管理,其基于ASP.NET MVC[6]框架搭建而成;并且整個(gè)系統(tǒng)采用IIS(Internet Information Services,互聯(lián)網(wǎng)信息服務(wù))作為應(yīng)用服務(wù)器。
圖2 系統(tǒng)體系架構(gòu)
1.2 功能模塊設(shè)計(jì)
根據(jù)實(shí)際需求,本系統(tǒng)分為兩個(gè)終端,iOS客戶端的手衛(wèi)生監(jiān)測APP和以Web形式開放的手衛(wèi)生數(shù)據(jù)統(tǒng)計(jì)平臺(tái),各終端模塊分類如圖3所示。手衛(wèi)生監(jiān)測APP(簡稱監(jiān)測客戶端)分為觀察者登錄、觀察設(shè)置、觀察記錄以及提交結(jié)果模塊;手衛(wèi)生數(shù)據(jù)統(tǒng)計(jì)平臺(tái)(簡稱統(tǒng)計(jì)平臺(tái))分為用戶登錄、依從率查看、依從率報(bào)表下載以及后臺(tái)管理模塊。
圖3 各終端模塊分類
(1) 監(jiān)測客戶端的功能主要是為依從率的計(jì)算提供數(shù)據(jù)來源,其主要使用對象是手衛(wèi)生觀察者。原來的紙張記錄方式是在觀察者觀察之前,需填寫觀察表的基本信息(如觀察者信息、醫(yī)院、科室、病房、日期等)后才能開始執(zhí)行觀察。為了對原有方式實(shí)現(xiàn)最大限度相似而又相應(yīng)簡化的操作,監(jiān)測客戶端將整個(gè)過程主要分為如下四個(gè)模塊:
① 觀察者登錄:觀察者填寫賬號和密碼,登錄成功可繼續(xù)使用其他功能。
② 觀察設(shè)置:觀察者登錄成功后,填寫觀察表基本信息。
③ 觀察記錄:觀察者記錄手衛(wèi)生執(zhí)行情況,記錄開始后系統(tǒng)會(huì)自動(dòng)記錄觀察所用時(shí)間,根據(jù)WHO觀察表文件規(guī)定,當(dāng)觀察超過40分鐘后,系統(tǒng)會(huì)自動(dòng)給觀察者記錄超時(shí)的提示,這樣觀察者可將精力全部集中在重要的手衛(wèi)生觀察環(huán)節(jié)上。
④ 提交結(jié)果:觀察結(jié)束,將結(jié)果直接提交至服務(wù)器。
(2) 統(tǒng)計(jì)平臺(tái)主要是依從率的展示、報(bào)表下載和各類信息的查詢與管理,面向醫(yī)院科室管理者和整個(gè)系統(tǒng)的管理員兩類用戶。其中系統(tǒng)管理員擁有最高權(quán)限,可訪問平臺(tái)所有模塊的功能。統(tǒng)計(jì)平臺(tái)主要分為以下五個(gè)模塊:
① 登錄:用戶根據(jù)用戶名密碼登錄到平臺(tái),否則無法使用平臺(tái)其他功能,平臺(tái)根據(jù)用戶權(quán)限提供不同的訪問功能。
② 依從率查看:平臺(tái)根據(jù)用戶選擇的時(shí)間段展示依從率以及相關(guān)柱狀圖。
③ 報(bào)表下載:將統(tǒng)計(jì)的依從率以電子表格的形式打印輸出并根據(jù)用戶意愿是否下載報(bào)表。
④ 后臺(tái)管理:包括觀察者信息管理、手衛(wèi)生數(shù)據(jù)信息管理、統(tǒng)計(jì)平臺(tái)用戶信息管理、醫(yī)院信息管理。由于平臺(tái)功能的特殊性,統(tǒng)計(jì)平臺(tái)用戶信息管理和醫(yī)院信息管理兩個(gè)模塊只有系統(tǒng)管理員權(quán)限才能訪問。
1.3 數(shù)據(jù)庫設(shè)計(jì)
根據(jù)需求,本系統(tǒng)需要建立6張表:手衛(wèi)生數(shù)據(jù)表、觀察者表、用戶表、醫(yī)院表、專業(yè)表、專業(yè)所屬類別表,各表的設(shè)計(jì)分別如表1-表6所示。其中手衛(wèi)生數(shù)據(jù)表是核心表,該系統(tǒng)的核心功能均與此表相關(guān),比如iOS端手衛(wèi)生數(shù)據(jù)的提交以及Web端依從率的查看和報(bào)表下載;觀察者表主要存儲(chǔ)iOS端用戶的相關(guān) 信息;用戶表存放的是Web端用戶的信息,由于Web端用戶分為普通用戶和系統(tǒng)管理員,所以利用Authority字段來區(qū)分權(quán)限,若是系統(tǒng)管理員權(quán)限則不需要所屬醫(yī)院屬性;醫(yī)院表用來存儲(chǔ)使用本系統(tǒng)醫(yī)院的信息;專業(yè)表是存放被調(diào)出的醫(yī)務(wù)人員屬于哪個(gè)主業(yè)的信息;專業(yè)類別表用來存放區(qū)分專業(yè)所屬類別的信息。表間關(guān)系可用實(shí)體數(shù)據(jù)模型圖表示。
表1 手衛(wèi)生數(shù)據(jù)表(Detail)
表2 觀察者表(Checker)
表3 用戶表(User)
表4 醫(yī)院表(Hosp)
表5 專業(yè)表(Major)
表6 專業(yè)類別表(MajorCategory)
根據(jù)前面的數(shù)據(jù)庫設(shè)計(jì),使用SQL Server 2008 Management studio建立所需的數(shù)據(jù)表格并采用對應(yīng)的數(shù)據(jù)庫來存儲(chǔ)應(yīng)用程序數(shù)據(jù),數(shù)據(jù)庫建立在遠(yuǎn)程服務(wù)器上面。整個(gè)系統(tǒng)中,無論是iOS端還是Web端均要與數(shù)據(jù)庫進(jìn)行數(shù)據(jù)交互,并且由于終端類型的不同,Web端使用ASP.NET MVC框架搭建,而服務(wù)端采用ASP.NET Web API技術(shù)為iOS端提供數(shù)據(jù)交互接口。
2.1 MVC模式簡介
MVC設(shè)計(jì)模式將一般的應(yīng)用程序根據(jù)功能的不同分為三個(gè)主要部分Model(模型)、View(視圖)、Controller(控制器)[7]。模型是應(yīng)用程序中某事物的定義,將事物抽象為對象并負(fù)責(zé)相關(guān)邏輯計(jì)算,比如利用getter和setter可實(shí)現(xiàn)傳遞數(shù)據(jù)的功能;視圖是應(yīng)用程序中對某事物進(jìn)行展示,它把從模型傳遞來的數(shù)據(jù)根據(jù)需求進(jìn)行顯示并接受用戶的操作;控制器是模型與視圖之間傳遞信息的部分, 負(fù)責(zé)將用戶的請求聯(lián)系相關(guān)模型進(jìn)行處理最終將處理結(jié)果返回到視圖上面。MVC模式使這三部分的每個(gè)部分之間都不必卷入其他部分的狀態(tài)表示和實(shí)現(xiàn)方法的細(xì)節(jié)中去[8],從而減少了程序間的依賴性和代碼的冗余,提高了系統(tǒng)的后期維護(hù)性。模型、視圖、控制器三者間的關(guān)系如圖4所示。
圖4 模型、視圖、控制器三者關(guān)系圖
2.2 數(shù)據(jù)建模
為了給后面的開發(fā)搭建基礎(chǔ),首先需要為整個(gè)系統(tǒng)構(gòu)建數(shù)據(jù)模型。由于ASP.NET Web API與ASP.NET MVC同樣都是基于MVC(模型-視圖-控制器)架構(gòu)的,因此兩者可以共用同一套數(shù)據(jù)模型。
本系統(tǒng)選擇ADO.NET Entity Framework6.0[9-10]作為模型層設(shè)計(jì)方式,并以Database First(從數(shù)據(jù)庫生成)開發(fā)模式生成實(shí)體數(shù)據(jù)模型(EDM)。實(shí)體數(shù)據(jù)模型會(huì)自動(dòng)生成一個(gè)繼承自DbContext的類,并將各數(shù)據(jù)表映射為相應(yīng)的模型類且將表中字段映射為類中的屬性。除此之外還完美地映射了數(shù)據(jù)庫中各個(gè)表之間的關(guān)系,本系統(tǒng)的實(shí)體數(shù)據(jù)模型截圖如圖5所示。這樣在程序中可聲明相關(guān)的DbContext對象,通過該對象的操作來完成與數(shù)據(jù)庫的數(shù)據(jù)交互。
圖5 實(shí)體數(shù)據(jù)模型截圖
2.3 監(jiān)測客戶端的實(shí)現(xiàn)
監(jiān)測客戶端基于iOS 8.0平臺(tái)使用Object-C語言開發(fā),運(yùn)行設(shè)備硬件要求為iPad。APP的核心功能是觀察者將所觀察到的手衛(wèi)生數(shù)據(jù)提交到遠(yuǎn)程服務(wù)器上面,為后面服務(wù)器統(tǒng)計(jì)依從率提供數(shù)據(jù)源。為了達(dá)到iOS平臺(tái)與服務(wù)器通信的目的,本系統(tǒng)采用ASP.NET Web API技術(shù)為iOS端提供交互接口。該技術(shù)可用于創(chuàng)建連接瀏覽器、移動(dòng)設(shè)備等多種客戶端的HTTP 服務(wù)[11],iOS端利用HTTPS請求方式中的GET或者POST方法實(shí)現(xiàn)對數(shù)據(jù)庫資源的讀寫操作,服務(wù)器最終把數(shù)據(jù)以JSON格式返回作為響應(yīng)。
1) ASP.NET Web API接口實(shí)現(xiàn)
系統(tǒng)主要?jiǎng)?chuàng)建了兩個(gè)用于連接iOS客戶端的接口,分別為GetCheckerLogin和PostDetail方法,前者用于響應(yīng)iOS端觀察者的登錄驗(yàn)證,后者用于將觀察者提交的數(shù)據(jù)寫入數(shù)據(jù)庫。
2) iOS端請求接口
iOS端采用GET方法請求觀察者的登錄驗(yàn)證以及采用POST方法請求提交觀察的記錄。實(shí)現(xiàn)的代碼分別如下所示:
① GET方法請求觀察者的登錄驗(yàn)證:首先聲明了請求的統(tǒng)一資源定位符(URL)變量urlRequest,然后通過調(diào)用NSURLConnection sendSynchronousRequest發(fā)起請求,并將服務(wù)器響應(yīng)結(jié)果存放在NSData類型的dataResponse中。
NSString *urlString = [[NSString alloc] initWithFormat:@″https://clyhands.com/api/checker/?name=%@&pass=%@″, name, passWord];
urlString = [urlString stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString: urlString]];
NSData *dataResponse = [NSURLConnection sendSynchronousRequest: urlRequest returningResponse: nil error: nil];
② POST方法請求提交觀察的記錄:首先將JSON格式的觀察數(shù)據(jù)轉(zhuǎn)換成可用于POST請求的字節(jié)數(shù)據(jù),然后聲明請求的URL,最后設(shè)置請求的頭部消息。
postData = [NSData dataWithBytes:[jsonRequest UTF8String] length:strlen([jsonRequest UTF8String])];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL : [NSURL URLWithString: @″https://clyhands.com/api/detail″]];
//本次請求為POST請求
[request setHTTPMethod:@″POST″];
//請求內(nèi)容為JSON格式
[request setValue: @″application/json″ forHTTPHeaderField:@″Content-Type″];
//請求體內(nèi)容為postData
[request setHTTPBody:postData];
2.4 統(tǒng)計(jì)平臺(tái)的實(shí)現(xiàn)
統(tǒng)計(jì)平臺(tái)基于ASP.NET MVC 5.0版本并使用C#語言開發(fā),并且利用Razor[12]引擎完成界面的展示。
對于普通用戶來說,統(tǒng)計(jì)平臺(tái)最重要的作用是將網(wǎng)頁上展示的依從率表格以電子表格的形式導(dǎo)出,本系統(tǒng)利用JavaScript和C#結(jié)合的方式實(shí)現(xiàn)此功能,實(shí)現(xiàn)方法描述如下:
(1) 網(wǎng)頁上生成一個(gè)“導(dǎo)出”按鈕,點(diǎn)擊該按鈕觸發(fā)編寫的exportExcel(f,tablehtml)方法,并同時(shí)傳入兩個(gè)參數(shù),f代表要提交的表單,tablehtml代表網(wǎng)頁上依從率表格標(biāo)簽的id值。該方法以SelfExportExcel.js文件的形式存放在Scripts文件夾下,調(diào)用前需要以的形式導(dǎo)入網(wǎng)站中。
(2) exportExcel方法將表格內(nèi)容進(jìn)行編碼后,將編碼內(nèi)容寫入f表單內(nèi)的隱藏控件,最后以POST的形式提交f表單。
(3) 表單提交至后端相應(yīng)的控制器上,控制器首先獲取傳入的HTML內(nèi)容,對其進(jìn)行解碼后并轉(zhuǎn)換成byte陣列,最后通過File( )方法將數(shù)據(jù)輸出給Web端,控制器代碼如下所示:
[HttpPost]
public FileResult SaveExcel(FormCollection form)
{
string strHtml = form[″hHtml″];
strHtml = HttpUtility.HtmlDecode(strHtml);//Html解碼
//字串轉(zhuǎn)byte陣列
byte[] b=System.Text.Encoding.UTF8.GetBytes(strHtml);
string FileName = DateTime.Today;
//輸出給Client端
return File(b, ″application/vnd.ms-excel″, FileName + ″.xls″);
}
本系統(tǒng)以上海中醫(yī)藥大學(xué)附屬曙光醫(yī)院醫(yī)療安全監(jiān)管體系為基礎(chǔ),在iOS平臺(tái)的移動(dòng)智能終端上實(shí)現(xiàn)了手衛(wèi)生觀察信息的實(shí)時(shí)輸入和統(tǒng)計(jì),通過iPad完成手衛(wèi)生監(jiān)測信息的輸入、利用后臺(tái)數(shù)據(jù)統(tǒng)計(jì)功能實(shí)時(shí)展現(xiàn)、定時(shí)匯總手衛(wèi)生監(jiān)測的相關(guān)信息結(jié)果。
利用智能移動(dòng)終端完成監(jiān)測數(shù)據(jù)的采集、分析以及實(shí)時(shí)反饋,可以優(yōu)化監(jiān)管流程,縮短中間環(huán)節(jié),減少不必要的重復(fù)勞動(dòng),大大提高監(jiān)管效率。如能在大型醫(yī)療機(jī)構(gòu)中推廣,對于提高醫(yī)療機(jī)構(gòu)醫(yī)療安全管理水平,具有極大的社會(huì)意義和經(jīng)濟(jì)意義。
[1] 李六億,劉玉村.醫(yī)院感染管理學(xué)[M].北京:北京大學(xué)醫(yī)學(xué)出版社,2010:252-253.
[2] Larson E.A causal link between handwashing and risk of infection? Examination of the evidence[J].Infection Control & Hospital Epidemiology:the Official Journal of the Society of Hospital Epidemiologists of America,1988,9(1):28-36.
[3] 世界衛(wèi)生組織.Observation_Form_Chinese[DB/OL].http://www.who.int/entity/gpsc/5may/tools/Observation_Form_Chinese.doc?ua=1.
[4] MSDN Library.ASP.NET Web API參考[DB/OL].http://msdn.microsoft.com/zh-cn/library/hh833994(v=vs.108).aspx.
[5] Nair N,Bhandari R K.移動(dòng)應(yīng)用程序開發(fā):基于Kendo UI Mobile和ASP.NET[M].吳驊,王學(xué)昌,譯.北京:清華大學(xué)出版社,2015:36-66.
[6] Esposito D.Programming Microsoft ASP.NET MVC[M].Washington,DC,USA:Microsoft Press,2010.
[7] Gao L.An intensive MVC design pattern based on ASP.NET[C]//2010 Second International Conference on Computer Engineering and Applications,2010:679-682.
[8] 章其康.MVC模式在Web應(yīng)用中的研究與實(shí)現(xiàn)[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2007(7):84-86.
[9] Blakeley J A,Campbell D,Muralidhar S,et al.The ADO.NET entity framework: making the conceptual level real[N].ACM SIGMOD Record,2006,35(4):32-39.
[10] Data Access and Storage.實(shí)體框架(EF)入門[DB/OL].https://msdn.microsoft.com/zh-cn/data/ee712907.aspx.
[11] 韓立峰.基于ASP.NET Web API框架的校園一卡通手機(jī)客戶端研究[J].計(jì)算機(jī)與現(xiàn)代化,2014(9):128-131,136.
[12] W3School.ASP.NET Razor-標(biāo)記[OL].http://www.w3sch ool.com.cn/aspnet/razor_intro.asp.
DESIGN AND IMPLEMENTATION OF MONITORING AND MANAGEMENT SYSTEM OF HAND HYGIENE BASED ON iOS PLATFORM
Chen Zhiyun Zhao Kun Bai Yue*Xie Xiang An Weijie
(SchoolofComputerScienceandSoftwareEngineering,EastChinaNormalUniversity,Shanghai200062,China)
The supervision of hand hygiene and safety is an important medical supervision link for medical institutions, which is required by WHO. However, most of the medical institutions in our country still adopt the traditional way of paper record and manual input during the process of hand hygiene supervision. The whole process is time consuming and laborious, and lacks timely feedback, leading to the delay of implementation of intervention measures. Aiming at these problems, a hand hygiene data monitoring and management system based on iOS mobile platform and C / S mode is proposed. The system realizes accurate recording, real-time summary, quick report and background management and so on, which can greatly improve the supervision efficiency of medical institutions.
Hand hygiene monitoring iOS mobile platform MVC framework
2016-04-13。陳志云,副教授,主研領(lǐng)域:多媒體應(yīng)用與教育技術(shù)。趙昆,碩士生。白玥,講師。謝翔,碩士生。安煒杰,碩士生。
TP3
A
10.3969/j.issn.1000-386x.2017.05.017