潘獻梅
(江蘇護理職業(yè)學(xué)院 教務(wù)處, 江蘇 淮安 223002)
隨著國民經(jīng)濟的飛速發(fā)展,人們對生活水平的要求越來越高,尤其是對自身進行日常護理方面,得到了大眾的廣泛關(guān)注。不過,隨著經(jīng)濟和生活水平的提升,人們生活節(jié)奏加快、對效率的要求越來越高,因此在對自身進行護理時,尤其是節(jié)假日期間,若能夠提前進行護理醫(yī)師的預(yù)約,將有效提高人們的生活效率,以便安排個人行程[1-5]。
網(wǎng)絡(luò)信息發(fā)展飛速,因此基于移動互聯(lián)技術(shù)建立護理預(yù)約平臺,設(shè)計相關(guān)App,并用于護理預(yù)約是有效的預(yù)約手段。作為護理預(yù)約App,一般需要具有數(shù)據(jù)實時更新、用戶信息和喜好識別、護理醫(yī)師及其所在護理機構(gòu)信息的記錄、信息共享等功能[6-10]。目前市場中常見的護理預(yù)約App的可靠性和整體性都不能夠完全滿足用戶的需求。例如,在技術(shù)層面,這些App通常能夠?qū)崿F(xiàn)護理醫(yī)師的信息共享,但并不能綜合醫(yī)師所在機構(gòu)地點以及周邊停車、交通等信息,提供完整的綜合方案;再比如,在預(yù)約完成之后,若上一時間段的客人未能及時到店或取消預(yù)約,系統(tǒng)一般無法自動實現(xiàn)與下一位客人重新協(xié)商時間等。
基于以上問題,本文基于先進的自動化硬件、高效的算法和便捷的網(wǎng)絡(luò),設(shè)計了一種用于護理預(yù)約的App,將其應(yīng)用到了個人護理預(yù)約中,并取得了良好的效果。另外,這種護理預(yù)約App也可以用于學(xué)校實驗室的預(yù)約中,例如學(xué)生預(yù)約教師對其進行護理技能的培訓(xùn)和輔導(dǎo),也可以通過該App預(yù)約實驗室的時間和教師的時間;或者是當學(xué)生作為志愿者進行社區(qū)服務(wù)時,社區(qū)居民可以通過該App進行學(xué)生時間和護理地點的預(yù)約。對實驗室的管理和學(xué)生的培養(yǎng)起到了極大的便利。
本文采用分階段模型來推薦最佳護理預(yù)約方案,這一推薦方法,一方面能夠兼顧用戶的主管要求,一方面又能考慮到客觀因素,可以給出更為合理的預(yù)約方案。具體步驟為:先確定符合用戶要求的全部護理醫(yī)師及其所屬護理機構(gòu);然后按照用戶個人對護理醫(yī)師性別、從業(yè)時間、護理機構(gòu)所處位置等需求進行初篩;最后通過對護理醫(yī)師及其所處護理機構(gòu)的綜合屬性進行推算,給出最佳預(yù)約方案的推薦。階段推薦分兩個階段進行,第一階段主要考慮用戶的需求,即護理類型和護理醫(yī)師的可預(yù)約時間;第二階段進行綜合客觀因素篩選,如用戶距護理機構(gòu)的距離、護理費用、護理醫(yī)師技術(shù)和行程交通情況。最佳預(yù)約方案推算如式(1)。
(1)
其中,T為最佳護理醫(yī)師;p1,p2,p3和p4分別為因素重要系數(shù);n1為用戶距護理機構(gòu)距離,可利用預(yù)約平臺的定位系統(tǒng)進行賦值;n2為護理費用,可由數(shù)據(jù)庫記錄并進行賦值;n3為護理醫(yī)師技術(shù),由數(shù)據(jù)庫記錄并進行賦值;n4為行程中的交通狀況,可利用TrafficLayer函數(shù)獲取數(shù)據(jù)并進行賦值;n1,max為距離最大值,n2,max為費用最高值,n3,max為專業(yè)技術(shù)最高值,n4,max為交通最擁堵時的賦值。
距離因素和護理費用因素均是屬于用戶的支出因素,為較為重要的因素;護理醫(yī)師技術(shù)對不同用戶以及不同護理項目影響不同,為較次要影響因素;交通狀況為最次要影響因素,為了方便推算,將式(1)優(yōu)化為式(2)。
T=z+M×N
(2)
其中,
N=[n3n4]
將系統(tǒng)內(nèi)可分配的護理醫(yī)師信息代入到式(2)中,可進一步將其轉(zhuǎn)變?yōu)槭?3)。
T=Z+M×S
(3)
其中,
S=[NA1NA2…NB1NB2…]
在進行護理預(yù)約時,取n1,n2,n3和n4為實際可取值的x倍。其中,x為整數(shù),處于(1, 10]范圍內(nèi)。設(shè)置目標值δ為x×(n1+n2+n3+n4)。編程時,float參量占位為32 bit,結(jié)果取值范圍為[-3.4×1038,3.4×1038]。實際預(yù)約過程中,可預(yù)約醫(yī)師的取值范圍為[n4,n1+n2+n3+n4]。推算過程中,如果最終向量Y=x×(n1+n2+n3+n4)的值不溢出上述取值范圍時,便是有效預(yù)約方案。在進行預(yù)約方案推薦之前,首先將Y=δ的方案剔除,然后對比向量Y的值,最終取Y值最小的方案為最佳護理預(yù)約方案。
本文所設(shè)計的護理預(yù)約系統(tǒng)的流程框圖,如圖1所示。
圖1 最佳預(yù)約方案推算框圖
首先,通過移動互聯(lián)網(wǎng)將用戶信息連接至數(shù)據(jù)庫,獲取數(shù)據(jù)庫信息并進行數(shù)據(jù)初始化處理;通過對用戶數(shù)據(jù)進行檢測判定是否預(yù)約。若否,則判定是否結(jié)束,判定為直接結(jié)束,則結(jié)束預(yù)約;若判定為繼續(xù),則返回至數(shù)據(jù)檢測;若進行預(yù)約,則獲取用戶信息、用戶需求信息,根據(jù)用戶信息對數(shù)據(jù)庫中的護理醫(yī)師進行篩選,獲取符合用戶需求的護理醫(yī)師信息;然后對預(yù)約方案推算公式中各因素系數(shù)進行賦值,計算出護理醫(yī)師被選擇的矩陣值,對比篩選出矩陣值最小的方案,然后推薦最佳預(yù)約方案并儲存在數(shù)據(jù)庫中,結(jié)束預(yù)約過程。
本文選用MySQL進行數(shù)據(jù)管理。MySQL數(shù)據(jù)庫能夠
將數(shù)據(jù)按照類別進行儲存,可以更為便捷地管理預(yù)約數(shù)據(jù),簡化數(shù)據(jù)調(diào)取的過程。另外,相對其他數(shù)據(jù)庫來說,MySQL數(shù)據(jù)庫的兼容性更好,可以同其他軟件搭配使用。同時,MySQL數(shù)據(jù)庫低成本的特性,也使得App開發(fā)的成本得到有效控制。
本文數(shù)據(jù)庫主要包括4個不同的類別,分別為用戶數(shù)據(jù)、護理醫(yī)師數(shù)據(jù)、推算返回數(shù)據(jù)和用戶預(yù)約數(shù)據(jù)。首先對各項數(shù)據(jù)進行分類,然后建立一個或多個數(shù)據(jù)表進行管理。用戶數(shù)據(jù)包括用戶注冊數(shù)據(jù)和用戶提交數(shù)據(jù),用戶注冊數(shù)據(jù)儲存用戶信息表中;用戶提交數(shù)據(jù)包括用戶位置,儲存于用戶經(jīng)緯度表中;用戶預(yù)約需求,儲存于用戶要求信息表中;護理醫(yī)師數(shù)據(jù)包括護理醫(yī)師信息,儲存于護理醫(yī)師信息表中;護理醫(yī)師所屬機構(gòu)地理位置,儲存于護理醫(yī)師經(jīng)緯度信息表中;護理醫(yī)師所屬機構(gòu)信息,儲存于護理醫(yī)師所在機構(gòu)信息表中;推算返回數(shù)據(jù)包括用戶到護理機構(gòu)的距離,用戶至護理機構(gòu)行程的交通情況以及最佳護理醫(yī)師信息;用戶預(yù)約數(shù)據(jù)包括了最佳預(yù)約信息表和自主預(yù)約信息表。本系統(tǒng)的數(shù)據(jù)庫構(gòu)建整體架構(gòu)如圖2所示。
圖2 數(shù)據(jù)庫整體架構(gòu)
本文基于Android 操作系統(tǒng)進行App的開發(fā),選用java語言,基于eclipse為開發(fā)平臺,進行編程。App的所有項目的編程均是在eclipse平臺內(nèi)創(chuàng)建完成,App的開發(fā)、運行及調(diào)試是在genymotion提供的Android 虛擬平臺上進行。該護理預(yù)約App的菜單結(jié)構(gòu)如圖3所示。
圖3 護理預(yù)約App菜單
包括5個菜單,分別為主菜單、預(yù)約定位菜單、預(yù)約需求菜單、最佳推薦菜單和自主預(yù)約菜單。本App的開發(fā)設(shè)計包括主菜單設(shè)計、預(yù)約定位設(shè)計、預(yù)約需求設(shè)計、最佳推薦設(shè)計和自主預(yù)約設(shè)計5個部分。
本文所設(shè)計護理預(yù)約App是利用java語言進行編程,基于eclipse平臺建立的。App主菜單的主要功能是實現(xiàn)向子菜單的跳轉(zhuǎn),因此在其界面顯示了所有子菜單,并且具有點擊跳轉(zhuǎn)功能。本文設(shè)計預(yù)約App主菜單的界面文件,如圖4所示。
主菜單界面如圖4(b)所示,通過點擊按鈕跳轉(zhuǎn)進入到子菜單界面。利用Android系統(tǒng)中的Button方式設(shè)計主菜單界面的按鈕布局、用戶ID、用戶位置、文本以及背景的設(shè)置;按鈕監(jiān)聽器是利用OnClickListener進行配置和調(diào)用,進一步實現(xiàn)主菜單到子菜單的跳轉(zhuǎn)。
(a) (b)
用戶進行護理預(yù)約時,首先要進行預(yù)約定位,也就是利用App的定位功能鎖定用戶位置,將經(jīng)緯度信息發(fā)送至平臺。預(yù)約定位菜單是通過創(chuàng)建dingwei.xml文件進行顯示的,可獲取用戶ID信息和用戶經(jīng)緯度信息。在預(yù)約定位子菜單界面中,利用textview的方法實現(xiàn)用戶ID的顯示,利用edit-text的方法實現(xiàn)對文本的編輯。用戶的經(jīng)緯度信息是利用locationManager的方法獲取,并通過locationListener方法進行實時更新。為了調(diào)用用戶定位信息,需要在AndroidManifest文件中對Activity進行聲明,并且需要添加“uses-permission android: name =“android.Permission.ACCESS_FINE_LOCATION””代碼來打開App的定位權(quán)限。預(yù)約定位子菜單設(shè)計相關(guān)代碼如下。
Public void doGet (HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{
// TODO Auto-generated method stub
//調(diào)取請求的參數(shù)(使用utf-8進行解碼,然后用ISO08859-1進行編碼)
if(request.getParameter(“chepaihao”)!=null||request.getParameter(“jingdu”)!=null||request.getParameter(“weidu”)!=null)
{
//String name=newstring(request.getParameter(“name”).getBytes(“ISO8859-1”), “UTF-8”);
string(request.getParameter(“chepaihao”).getBytes(“ISO8859-1”), “UTF-8”);
string(request.getParameter(“jingdu”).getBytes(“ISO8859-1”), “UTF-8”);
string(request.getParameter(“weidu”).getBytes(“ISO8859-1”), “UTF-8”);
System.out.println(“chepaihao:“+n+”jingdu:“+a+”weidu“+m””);
在進行護理預(yù)約時,需要對不用的護理醫(yī)師、護理機構(gòu)進行綜合評析,對客觀因素以及用戶的主觀因素進行考量。通??陀^因素,App可以由數(shù)據(jù)庫獲??;主觀因素需要用戶由預(yù)約需求菜單提交到平臺。預(yù)約需求子菜單通過編寫yuyuexuqiu.xml文件進行顯示,然后通過edit-text方法對文本進行編輯,提交用戶預(yù)約需求,如圖5所示。
圖5 預(yù)約需求子菜單設(shè)計
用戶提交的Activity文件依然是利用OnClickListener方法進行監(jiān)聽;信息傳輸利用http傳輸協(xié)議進行傳輸;為了調(diào)用用戶預(yù)約需求信息,需要在AndroidManifest文件中對Activity進行聲明。
在用戶將其經(jīng)緯度信息和預(yù)約需求信息發(fā)送到平臺后,平臺根據(jù)預(yù)約方案推算公式,完成最優(yōu)的預(yù)約方案推薦。用戶可以通過點擊最佳推薦按鈕直接跳轉(zhuǎn)至最佳預(yù)約方案進行預(yù)約。最佳推薦子菜單需要編輯3個.xml文件,分別為activity_main_zuijia.xml用來獲取用戶信息;layout_loading_zuijia.xml用以實現(xiàn)界面跳轉(zhuǎn);activity_hello_zuijia.xml最佳預(yù)約方案顯示。最佳推薦子菜單的顯示以及文本編輯也是利用textview方法和edit-text方法實現(xiàn)的。另外,也需要在AndroidManifest文件中對Activity進行聲明,方便信息的調(diào)用。最佳推薦子菜單設(shè)計的部分代碼如下。
try{
conn=super.openDB();
if(conn!=null){
String sql=“select*from tab_user where unsername =?”;
preStmt = conn.prepareStatement(sql);
preStmt.setString(1,src);
rs=preStmt.executeQuery();
if(rs.next()){
userBean=new UserBean(rs.getString(1), rs.getString(2), rs.getString(3), rs.getString(4));
System.out.println(“sql:“+sql+”rs:“+rs+”ub:“+userBean+”);
當最佳推薦不能滿足用戶需求時,用戶可以進行自主預(yù)約,自主預(yù)約子菜單的設(shè)計如圖6所示。
圖6 自主預(yù)約子菜單設(shè)計
自主預(yù)約子菜單的設(shè)計是通過創(chuàng)建reservation.xml文件進行設(shè)計的,用戶可以通過輸入自己的ID、密碼和目標醫(yī)師實現(xiàn)自主預(yù)約。自主預(yù)約子菜單的顯示以及文本編輯也是利用textview方法和edit-text方法實現(xiàn)的。另外,也需要在AndroidManifest文件中對Activity進行聲明,方便信息的調(diào)用。
基于Matlab環(huán)境設(shè)計了一款可進行護理預(yù)約的App,并對其算法、數(shù)據(jù)庫和App的設(shè)計進行了詳細的介紹。本護理預(yù)約App能夠綜合考慮多種客觀因素和用戶的主觀因素,然后對護理醫(yī)師信息進行篩選,得到最佳推薦方案。另外,若最佳推薦方案不滿足用戶需求,還可以通過自主預(yù)約完成護理預(yù)約。本App主要包括5個菜單,分別為1個主菜單和預(yù)約定位、預(yù)約需求、最佳推薦和自主預(yù)約4個子菜單。本App是利用java語言進行編程,基于eclipse平臺建立的。