(1.泰山職業技術學院,山東 泰安 271000; 2.泰山醫學院,山東 泰安 271016)
住院收費管理系統是醫院信息管理系統的一個功能模塊,包括住院病人費用結算、費用錄入、費用查詢和打印、欠款管理等功能。費用查詢和打印是患者和家屬最關心的一個功能,能夠提供給病人或者家屬查詢和打印自己各種費用的使用情況,在查詢信息時,需要通過后臺服務器訪問數據庫對該用戶性進行查找和確認,才能顯示相應的信息。在傳統的服務器端的Web應用程序中,任何與服務器的交互都要求刷新頁面,當服務器處理客戶端的請求時,客戶只能空閑等待,降低了Web應用的執行速度,AJAX技術在用戶與服務器之間引入Ajax引擎,用戶執行一個操作,系統可以在后臺處理該任務,同時用戶可以繼續處理其他任務,不需要在提交后等待,從而提高系統性能,使得應用程序更加完善和友好[1],在教學項目的實踐和應用中取得了良好的效果。
系統通過AJAX技術減少網絡內容傳輸,使用jQuery訪問struts2中的Action, Action獲得響應信息,當響應的信息不是一個簡單的字符串而是一個對象時,采用Json格式進行交換,Action不需要使用視圖資源來顯示狀態信息,由JSON負責將Action里的狀態信息返回給調用頁面,完成Ajax交互,然后利用jQuery直接獲得JSON格式的數據,在客戶端直接綁定到數據控件,而JSON則可以把傳輸內容縮減到純數據,從而達到最優。
1.2.1AJAX全稱為“Asynchronous JavaScript + XML”(異步JavaScript和XML),是JavaScript、JSON、CSS、HTML等技術的綜合。其中HTML是一種文本標記語言,不需要編譯,直接由瀏覽器執行,它通過HTML元素,標簽等標記要顯示的網頁中的各個部分[2];JavaScript是一種基于對象和事件驅動的客戶端腳本語言,被設計用來給頁面添加交互行為,它可以檢測表單的正確性,實現Ajax讀、寫、改變HTML頁面的架構和美化網頁效果等[3];JSON是一種適合AJAX應用的輕量級數據交換格式,JSON中的值(value)是用雙引號括起來的字符串、數值、對象或者數組等,而且這些結構可以嵌套,使得JSON表達數據有無限的可能,它既可以表達一個簡單的key/value,也可以表達一個復雜的Map或List,易于閱讀和理解的[4]。
1.2.2jQuery是一個優秀的跨瀏覽器的JavaScript框架,提供豐富的屬性和方法,能更方便地處理HTML 文檔、事件、實現動畫效果,并且為網站提供AJAX交互,使設計人員不需要在HTML里面插入一堆JS來調用命令,只需定義id即可[5]。
1.2.3Struts2是在WebWork基礎上發展起來的一個MVC框架,實現頁面跳轉與邏輯控制的分離,提供AJAX支持,通過AJAX標志增加互動性和靈活性,而且使用簡單。
住院費用查詢子系統的開發采用MyEclipse集成Struts2和jQuery框架,數據庫設計采用Oracle 10g,同時利用AJAX技術提高頁面訪問效率。
住院費用查詢子系統可以分為4個模塊:前臺顯示模塊、客戶端處理模塊、服務器端響應模塊和數據庫管理模塊。其中前臺顯示模塊為用戶提供各項費用的查詢和打印,包括住院的費用總統計,和每天的費用詳細清單;客戶端處理模塊獲取頁面元素,得到用戶的住院編號,與服務器交互,更新客戶端頁面,響應用戶事件;服務器端響應模塊獲取提交數據,驗證數據合法性;數據庫管理模塊訪問數據庫,返回數據庫信息。
2.2.1數據庫設計
病歷病人基本信息:病歷號(主鍵,recordId),姓名(pName),年齡(age ),家庭住址(address),電話(phone)。
住院病人基本信息:病歷號(外鍵,recordId)、住院編號(主鍵,pId)、科室(department)、病區(room)、床號(bed)、住院日期(inDate)、出院日期(outDate)、主治醫師(doctorId)、醫保費用類別(insuranceType),費用總額(totalCost)、醫保自付比例(rate)、應付費用總額(payCost),結算情況(settlement)。
病人費用信息:住院編號(外鍵,pId),項目名稱(feeName)、項目編碼(主鍵,feeId)、規格(specification)、計量單位(unit)、單價(price)、數量(feeNumber)、項目費用(feeCost=price*feeNumber)、日期(date)。
其中住院病人信息通過“recordId”(外鍵)和病人基本信息中的病歷號(主鍵)關聯,可以查詢病人姓名和住院費用等基本信息,通過“pId”(主鍵)和病人費用信息中的pId(外鍵)關聯,查詢每天的費用信息和總額。病人費用信息又可以通過”feeId”(外鍵)與其他子系統中的數據庫表如藥品數據庫等相關聯,完成數據的查詢。
2.2.2類設計
①建Pinfo(病歷病人信息)類、Patient(住院病人信息)類和Pcost(病人費用信息)實體類,屬性分別和數據庫中各個字段相對應,添加setter、getter方法。
②建PAllcost和PEverydaycost類,分別包含pId、pName、pCost屬性和pId、pName、feeName、 feeNumber、price、 feeCost、date屬性,添加setter、getter方法,和在頁面上要顯示信息一致。
③建PatientManager類,創建queryAllCost()方法,連接數據庫,根據傳入的住院編號參數(pid),查詢病人的費用總額信息,如果找到信息則把結果存放在pallcost對象中(PAllcost類型)中返回否則提示錯誤信息。創建queryEverydayCost()方法,根據住院日期和出院日期,查詢每一天的費用信息,存放在peverydaycostlist并返回。
④建action,如PAction.java,定義pid,pallcost和peverydaycostlist屬性,new一個PatientManager對象,定義方法給pallcost和peverydaycostlist賦值,這樣action能夠通過pid獲得AJAX傳遞的住院編號,AJAX也能通過json獲得返回的結果。
①下載必要的jar包和jquery-*.*.*.js加入到web工程,包括json類庫、struts2的包和struts2-json-plugin.jar,它可以將Struts2 Action中的結果直接返回為JSON。
②創建struts.xml,添加專為ajax使用的package,配置包時繼承json-default包,因為在該包下才有json類型的Result,以總的費用查詢為例部分關鍵代碼如下:
pAllcost。pId, pAllcost。pName, pAllcost。pCost, //param定義包含pAllcost的屬性
①創建index.jsp,共有兩個查詢,一是住院信息和總費用的查詢,二是每天的費用信息查詢,返回的結果是費用的列表。為頁面中的按鈕事件注冊單擊事件,把這些事件和校驗事件代碼單獨的放到一個querycost.js文件里。要使用jQuery,需要在頁面之中引入jQuery庫,另外還需引入自定義的querycost.js文件,如下:
JSP頁面需要一個文本框、兩個按鈕和一個空白的div層,用于顯示服務器端返回的處理結果,按鈕的單擊事件觸發queryAll()方法。部分代碼如下:
住院編號: //焦點離開事件觸發校驗
onclick="queryAllcost()" />
function queryAllcost(){
$.getJSON("PAction?pid="+$("#pid").val(),null,function callback(data){
var cost= eval("("+data+")");//解析JSON var Allcost=" ";
Allcost+= "住院編號: "+cost.pallcost.pId+" 姓名 : "+ cost.pallcost.pName+" 應付費用信息: "+ cost.pallcost.pCost;}) //顯示病人的住院編號,姓名和應付費用信息$("#result").html(Allcost);}}
②PAction部分代碼如下: private String pid; private PALLcost pallcost;
private List
省略getter和setter方法
public String returnPallcost() {
patientmanager.queryAllCost(pid);// 根據病人的ID獲取數據
return SUCCESS; }}
住院費用查詢子系統作為java-WEB項目的一部分,采用AJAX技術提高了用戶體驗,為整個系統的設計和開發打下良好的基礎,提高了整個系統的性能和實用性,同時也在教學項目的實踐和應用中取得了良好的效果。
[1] 張桂元,賈燕楓,姜波.征服Ajax Web2.0快速入門與項目實踐(Java) [M].北京:人民郵電出版社,2006:3-10.
[2] Oliver D, Morrison M. HTML與CSS入門經典[M].第7版.陳秋萍,譯.北京:人民郵電出版社,2007:10-15.
[3] 葉青.完全手冊:HTML+CSS+JavaScript實用詳解[M].北京:電子工業出版社,2008: 90-100.
[4] 楊旭士.基于JQuery框架的Web查詢視圖設計與實現[J].計算機與現代化雜志,2010,8(2):128-129.
[5] 丁波,晁愛農. 基于Struts2框架的AJAX開發研究[J].計算機工程與設計雜志,2009,30(16):3910-3912.