潘獻梅
(江蘇護理職業學院 教務處, 江蘇 淮安 223002)
隨著國民經濟的飛速發展,人們對生活水平的要求越來越高,尤其是對自身進行日常護理方面,得到了大眾的廣泛關注。不過,隨著經濟和生活水平的提升,人們生活節奏加快、對效率的要求越來越高,因此在對自身進行護理時,尤其是節假日期間,若能夠提前進行護理醫師的預約,將有效提高人們的生活效率,以便安排個人行程[1-5]。
網絡信息發展飛速,因此基于移動互聯技術建立護理預約平臺,設計相關App,并用于護理預約是有效的預約手段。作為護理預約App,一般需要具有數據實時更新、用戶信息和喜好識別、護理醫師及其所在護理機構信息的記錄、信息共享等功能[6-10]。目前市場中常見的護理預約App的可靠性和整體性都不能夠完全滿足用戶的需求。例如,在技術層面,這些App通常能夠實現護理醫師的信息共享,但并不能綜合醫師所在機構地點以及周邊停車、交通等信息,提供完整的綜合方案;再比如,在預約完成之后,若上一時間段的客人未能及時到店或取消預約,系統一般無法自動實現與下一位客人重新協商時間等。
基于以上問題,本文基于先進的自動化硬件、高效的算法和便捷的網絡,設計了一種用于護理預約的App,將其應用到了個人護理預約中,并取得了良好的效果。另外,這種護理預約App也可以用于學校實驗室的預約中,例如學生預約教師對其進行護理技能的培訓和輔導,也可以通過該App預約實驗室的時間和教師的時間;或者是當學生作為志愿者進行社區服務時,社區居民可以通過該App進行學生時間和護理地點的預約。對實驗室的管理和學生的培養起到了極大的便利。
本文采用分階段模型來推薦最佳護理預約方案,這一推薦方法,一方面能夠兼顧用戶的主管要求,一方面又能考慮到客觀因素,可以給出更為合理的預約方案。具體步驟為:先確定符合用戶要求的全部護理醫師及其所屬護理機構;然后按照用戶個人對護理醫師性別、從業時間、護理機構所處位置等需求進行初篩;最后通過對護理醫師及其所處護理機構的綜合屬性進行推算,給出最佳預約方案的推薦。階段推薦分兩個階段進行,第一階段主要考慮用戶的需求,即護理類型和護理醫師的可預約時間;第二階段進行綜合客觀因素篩選,如用戶距護理機構的距離、護理費用、護理醫師技術和行程交通情況。最佳預約方案推算如式(1)。
(1)
其中,T為最佳護理醫師;p1,p2,p3和p4分別為因素重要系數;n1為用戶距護理機構距離,可利用預約平臺的定位系統進行賦值;n2為護理費用,可由數據庫記錄并進行賦值;n3為護理醫師技術,由數據庫記錄并進行賦值;n4為行程中的交通狀況,可利用TrafficLayer函數獲取數據并進行賦值;n1,max為距離最大值,n2,max為費用最高值,n3,max為專業技術最高值,n4,max為交通最擁堵時的賦值。
距離因素和護理費用因素均是屬于用戶的支出因素,為較為重要的因素;護理醫師技術對不同用戶以及不同護理項目影響不同,為較次要影響因素;交通狀況為最次要影響因素,為了方便推算,將式(1)優化為式(2)。
T=z+M×N
(2)
其中,
N=[n3n4]
將系統內可分配的護理醫師信息代入到式(2)中,可進一步將其轉變為式(3)。
T=Z+M×S
(3)
其中,

S=[NA1NA2…NB1NB2…]
在進行護理預約時,取n1,n2,n3和n4為實際可取值的x倍。其中,x為整數,處于(1, 10]范圍內。設置目標值δ為x×(n1+n2+n3+n4)。編程時,float參量占位為32 bit,結果取值范圍為[-3.4×1038,3.4×1038]。實際預約過程中,可預約醫師的取值范圍為[n4,n1+n2+n3+n4]。推算過程中,如果最終向量Y=x×(n1+n2+n3+n4)的值不溢出上述取值范圍時,便是有效預約方案。在進行預約方案推薦之前,首先將Y=δ的方案剔除,然后對比向量Y的值,最終取Y值最小的方案為最佳護理預約方案。
本文所設計的護理預約系統的流程框圖,如圖1所示。

圖1 最佳預約方案推算框圖
首先,通過移動互聯網將用戶信息連接至數據庫,獲取數據庫信息并進行數據初始化處理;通過對用戶數據進行檢測判定是否預約。若否,則判定是否結束,判定為直接結束,則結束預約;若判定為繼續,則返回至數據檢測;若進行預約,則獲取用戶信息、用戶需求信息,根據用戶信息對數據庫中的護理醫師進行篩選,獲取符合用戶需求的護理醫師信息;然后對預約方案推算公式中各因素系數進行賦值,計算出護理醫師被選擇的矩陣值,對比篩選出矩陣值最小的方案,然后推薦最佳預約方案并儲存在數據庫中,結束預約過程。
本文選用MySQL進行數據管理。MySQL數據庫能夠
將數據按照類別進行儲存,可以更為便捷地管理預約數據,簡化數據調取的過程。另外,相對其他數據庫來說,MySQL數據庫的兼容性更好,可以同其他軟件搭配使用。同時,MySQL數據庫低成本的特性,也使得App開發的成本得到有效控制。
本文數據庫主要包括4個不同的類別,分別為用戶數據、護理醫師數據、推算返回數據和用戶預約數據。首先對各項數據進行分類,然后建立一個或多個數據表進行管理。用戶數據包括用戶注冊數據和用戶提交數據,用戶注冊數據儲存用戶信息表中;用戶提交數據包括用戶位置,儲存于用戶經緯度表中;用戶預約需求,儲存于用戶要求信息表中;護理醫師數據包括護理醫師信息,儲存于護理醫師信息表中;護理醫師所屬機構地理位置,儲存于護理醫師經緯度信息表中;護理醫師所屬機構信息,儲存于護理醫師所在機構信息表中;推算返回數據包括用戶到護理機構的距離,用戶至護理機構行程的交通情況以及最佳護理醫師信息;用戶預約數據包括了最佳預約信息表和自主預約信息表。本系統的數據庫構建整體架構如圖2所示。

圖2 數據庫整體架構
本文基于Android 操作系統進行App的開發,選用java語言,基于eclipse為開發平臺,進行編程。App的所有項目的編程均是在eclipse平臺內創建完成,App的開發、運行及調試是在genymotion提供的Android 虛擬平臺上進行。該護理預約App的菜單結構如圖3所示。

圖3 護理預約App菜單
包括5個菜單,分別為主菜單、預約定位菜單、預約需求菜單、最佳推薦菜單和自主預約菜單。本App的開發設計包括主菜單設計、預約定位設計、預約需求設計、最佳推薦設計和自主預約設計5個部分。
本文所設計護理預約App是利用java語言進行編程,基于eclipse平臺建立的。App主菜單的主要功能是實現向子菜單的跳轉,因此在其界面顯示了所有子菜單,并且具有點擊跳轉功能。本文設計預約App主菜單的界面文件,如圖4所示。
主菜單界面如圖4(b)所示,通過點擊按鈕跳轉進入到子菜單界面。利用Android系統中的Button方式設計主菜單界面的按鈕布局、用戶ID、用戶位置、文本以及背景的設置;按鈕監聽器是利用OnClickListener進行配置和調用,進一步實現主菜單到子菜單的跳轉。

(a) (b)
用戶進行護理預約時,首先要進行預約定位,也就是利用App的定位功能鎖定用戶位置,將經緯度信息發送至平臺。預約定位菜單是通過創建dingwei.xml文件進行顯示的,可獲取用戶ID信息和用戶經緯度信息。在預約定位子菜單界面中,利用textview的方法實現用戶ID的顯示,利用edit-text的方法實現對文本的編輯。用戶的經緯度信息是利用locationManager的方法獲取,并通過locationListener方法進行實時更新。為了調用用戶定位信息,需要在AndroidManifest文件中對Activity進行聲明,并且需要添加“uses-permission android: name =“android.Permission.ACCESS_FINE_LOCATION””代碼來打開App的定位權限。預約定位子菜單設計相關代碼如下。
Public void doGet (HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{
// TODO Auto-generated method stub
//調取請求的參數(使用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””);
在進行護理預約時,需要對不用的護理醫師、護理機構進行綜合評析,對客觀因素以及用戶的主觀因素進行考量。通常客觀因素,App可以由數據庫獲取;主觀因素需要用戶由預約需求菜單提交到平臺。預約需求子菜單通過編寫yuyuexuqiu.xml文件進行顯示,然后通過edit-text方法對文本進行編輯,提交用戶預約需求,如圖5所示。

圖5 預約需求子菜單設計
用戶提交的Activity文件依然是利用OnClickListener方法進行監聽;信息傳輸利用http傳輸協議進行傳輸;為了調用用戶預約需求信息,需要在AndroidManifest文件中對Activity進行聲明。
在用戶將其經緯度信息和預約需求信息發送到平臺后,平臺根據預約方案推算公式,完成最優的預約方案推薦。用戶可以通過點擊最佳推薦按鈕直接跳轉至最佳預約方案進行預約。最佳推薦子菜單需要編輯3個.xml文件,分別為activity_main_zuijia.xml用來獲取用戶信息;layout_loading_zuijia.xml用以實現界面跳轉;activity_hello_zuijia.xml最佳預約方案顯示。最佳推薦子菜單的顯示以及文本編輯也是利用textview方法和edit-text方法實現的。另外,也需要在AndroidManifest文件中對Activity進行聲明,方便信息的調用。最佳推薦子菜單設計的部分代碼如下。
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+”);
當最佳推薦不能滿足用戶需求時,用戶可以進行自主預約,自主預約子菜單的設計如圖6所示。

圖6 自主預約子菜單設計
自主預約子菜單的設計是通過創建reservation.xml文件進行設計的,用戶可以通過輸入自己的ID、密碼和目標醫師實現自主預約。自主預約子菜單的顯示以及文本編輯也是利用textview方法和edit-text方法實現的。另外,也需要在AndroidManifest文件中對Activity進行聲明,方便信息的調用。
基于Matlab環境設計了一款可進行護理預約的App,并對其算法、數據庫和App的設計進行了詳細的介紹。本護理預約App能夠綜合考慮多種客觀因素和用戶的主觀因素,然后對護理醫師信息進行篩選,得到最佳推薦方案。另外,若最佳推薦方案不滿足用戶需求,還可以通過自主預約完成護理預約。本App主要包括5個菜單,分別為1個主菜單和預約定位、預約需求、最佳推薦和自主預約4個子菜單。本App是利用java語言進行編程,基于eclipse平臺建立的。