二次開發(fā)是指在原有系統(tǒng)的基礎(chǔ)上根據(jù)客戶需求所進(jìn)行的修改或再開發(fā),以使得軟件更符合實際。在醫(yī)療信息系統(tǒng)(hospitalinformationsystem,HIS)建設(shè)中,醫(yī)院和軟件供應(yīng)商面臨的最大困擾莫過于軟件的修改問題。醫(yī)院的差異化競爭決定了每個醫(yī)院的流程會越來越不一樣,因此需求也不盡相同。用戶在使用過程中對軟件系統(tǒng)理解逐漸加深,也會不斷提出優(yōu)化流程的要求。此外還有大量不合理但又必須滿足的修改要求,對這些需求的適應(yīng)能力是考驗HIS技術(shù)水平的重要指標(biāo)。
二次開發(fā)是軟件開發(fā)的生命周期所致,軟件維護(hù)是軟件生命周期中持續(xù)時間最長的階段。軟件的維護(hù)包括糾錯性維護(hù)和改進(jìn)性維護(hù)兩個方面。在軟件開發(fā)完成并投入使用后,由于多方面的原因,軟件不能繼續(xù)適應(yīng)用戶的要求。要延續(xù)軟件的使用壽命,就必須對軟件進(jìn)行維護(hù)。
二次開發(fā)是用戶需要深化的必然要求[1]。用戶的需求會隨著應(yīng)用的深入而不斷擴(kuò)展。醫(yī)院信息化不像蓋大樓、購設(shè)備,需要在應(yīng)用過程中不斷地動態(tài)調(diào)整。尤其是醫(yī)院業(yè)務(wù)流程更會隨著國家醫(yī)療政策的變化而發(fā)生變化,這需要我們在原有的醫(yī)院信息系統(tǒng)基礎(chǔ)上不斷地進(jìn)行二次開發(fā)和必要的系統(tǒng)改造,做好系統(tǒng)的適應(yīng)性維護(hù)和完善性維護(hù),以使醫(yī)院管理信息系統(tǒng)隨著醫(yī)院的發(fā)展而發(fā)展,延長醫(yī)院信息系統(tǒng)的穩(wěn)定期和適用期,避免將管理信息系統(tǒng)推倒重來的惡果。軟件設(shè)計的不足日益顯現(xiàn),任何軟件的設(shè)計都無法完全預(yù)料到未來的應(yīng)用需求,因此軟件系統(tǒng)的二次開發(fā)是不可避免的。
1 二次開發(fā)的方式
1.1 依托信息系統(tǒng)的開發(fā)商進(jìn)行系統(tǒng)的二次開發(fā),完成醫(yī)院的需求。牢固樹立”購買軟件就是購買服務(wù)”的觀念,在軟件購買期間對軟件開發(fā)商的能力、信譽(yù)、響應(yīng)時間以及生存能力等進(jìn)行調(diào)查,確保能有較長的合作周期。如有必要可以在購買合同中就售后及二次開發(fā)進(jìn)行規(guī)定,避免不必要的麻煩。軟件是立足于自我開發(fā),還是全面買進(jìn),二者都被證明是不成功的選擇。在醫(yī)院信息系統(tǒng)應(yīng)用初期,由于觀念影響,大多數(shù)醫(yī)院奉行自我開發(fā),由于醫(yī)院計算機(jī)技術(shù)力量薄弱,大多數(shù)系統(tǒng)是低水平重復(fù),沒有形成一個象樣的綜合信息系統(tǒng),致使衛(wèi)生行業(yè)計算機(jī)應(yīng)用發(fā)展緩慢;另一方面由于醫(yī)院間的管理差異,各有特色,很難有能適合各種醫(yī)院的通用軟件。實踐證明與社會上的專業(yè)力量合作,引進(jìn)通用軟件,結(jié)合自身特點加以二次開發(fā)才是較為正確的選擇。
醫(yī)院應(yīng)慎重選擇擬合作的計算機(jī)軟件開發(fā)公司,應(yīng)注重合作公司的技術(shù)力量、開發(fā)經(jīng)驗、維護(hù)能力及公司的專業(yè)發(fā)展能力,以及是否有成功的實例、是否有自主版權(quán)的商品化的HIS軟件、是否有繼續(xù)開發(fā)升級的能力。醫(yī)院選擇的合作單位最好是與醫(yī)院在同一地區(qū),或在該地區(qū)有響應(yīng)機(jī)構(gòu)的公司。應(yīng)由醫(yī)院與合作單位共同研究訂出系統(tǒng)的目標(biāo)、構(gòu)造、平臺的選擇及分步實施的方案,再談判價格問題。
因應(yīng)用系統(tǒng)有一個試用期和維護(hù)期,且信息系統(tǒng)是逐步擴(kuò)大、增長的,管理上提出的要求也是變化的,合作公司需到醫(yī)院進(jìn)行實地調(diào)研,醫(yī)院人員應(yīng)自始至終參與工程的規(guī)劃、安裝、調(diào)試,這對日后醫(yī)院HIS維護(hù)開發(fā)有極大好處。
1.2 依靠醫(yī)院自身信息人才自行進(jìn)行二次開發(fā),此方式適合于有比較長時間的信息系統(tǒng)應(yīng)用經(jīng)驗和有一支長期致力于醫(yī)院信息系統(tǒng)維護(hù)的富有開發(fā)經(jīng)驗的信息隊伍的醫(yī)院。
2 二次開發(fā)的做法
常見二次開發(fā)主要有3種做法,修改源代碼,采用中間件,利用數(shù)據(jù)庫表結(jié)構(gòu),實現(xiàn)數(shù)據(jù)的共享。
2.1 修改源程序,能夠擁有系統(tǒng)的源代碼自然是許多程序開發(fā)人員夢寐以求的事情,但是由于我們目前許多程序員在程序編寫上的不規(guī)范,造成讀他人的程序是一個相當(dāng)困難和頭痛的事情。在源程序上修改的優(yōu)點是能夠完全無縫連接,缺點為若源代碼編寫不規(guī)范,對源代碼的理解和再編寫工作量大,且不容易完成,而且一般的醫(yī)院也無法得到系統(tǒng)的源代碼。
2.2 采用數(shù)據(jù)庫中間件技術(shù)。
2.2.1 中間件是一種獨立的系統(tǒng)軟件或服務(wù)程序,分布式應(yīng)用軟件借助這種軟件在不同的技術(shù)之間共享資源[1]。中間件位于客戶機(jī)”服務(wù)器的操作系統(tǒng)之上,管理計算機(jī)資源和網(wǎng)絡(luò)通訊。目前對中間件的應(yīng)用是數(shù)據(jù)庫開發(fā)的熱點。
2.2.2 數(shù)據(jù)庫中間件方法的優(yōu)點:移植性好,中間件封裝了各種與平臺有關(guān)的細(xì)節(jié),使更換操作系統(tǒng)和通訊協(xié)議等底層的配置無需改變應(yīng)用程序代碼。集成方便,中間件可以非常容易地集成到應(yīng)用開發(fā)環(huán)境中,無需大的代碼改動。易于擴(kuò)充,中間件的局部改進(jìn)和整體升級只要保持對外接口不變就不會影響到系統(tǒng)的其他部分,在功能上對應(yīng)用程序?qū)崿F(xiàn)了透明性;使用簡單,中間件對各種數(shù)據(jù)源使用統(tǒng)一的訪問方法,使用戶不必關(guān)心數(shù)據(jù)庫選擇等操作。
2.2.3 數(shù)據(jù)庫中間件方法的缺點:數(shù)據(jù)庫操作比較集中,統(tǒng)一由中間件負(fù)責(zé)數(shù)據(jù)間的同步和點對點的通訊,對中間件的可靠性要求高,一旦中間件出現(xiàn)問題,所有的數(shù)據(jù)連接將斷掉,導(dǎo)致數(shù)據(jù)庫癱瘓,這種方法不適合高性能的應(yīng)用處理。
2.3 利用數(shù)據(jù)庫表結(jié)構(gòu)的方式實現(xiàn)數(shù)據(jù)的共享,此方法適合于對系統(tǒng)非常熟悉,包括其表結(jié)構(gòu)和數(shù)據(jù)流程、業(yè)務(wù)流程,能夠準(zhǔn)確地提取出需要的數(shù)據(jù),并將結(jié)果數(shù)據(jù)回填,方便原有系統(tǒng)的應(yīng)用來調(diào)用。此方法最為簡單。缺點:由于無法嵌套入原有的程序中,客戶在使用上存在不方便。若對數(shù)據(jù)結(jié)構(gòu)和流程不了解,會出現(xiàn)錯誤的結(jié)果,影響數(shù)據(jù)的使用。
3 二次開發(fā)應(yīng)注意的問題
3.1 未雨綢繆,在簽軟件購買合同的時候,將相關(guān)文檔的提供寫入合同中,能提供程序源代碼作為合同重要款項,實施和驗收時,保存好相關(guān)技術(shù)文檔,為二次開發(fā)打好基礎(chǔ)。開發(fā)文檔的規(guī)范性書寫和開發(fā)軟件的測試保存,代碼編制遵照<程序編制規(guī)范.doc>標(biāo)準(zhǔn)[2]。主要有變量命名規(guī)范、窗口和窗口相關(guān)Datawindow命名規(guī)范、函數(shù)的命名規(guī)范、數(shù)據(jù)窗口命名規(guī)范、類的命名規(guī)范、界面設(shè)計風(fēng)格規(guī)范、庫(PBL)命名規(guī)范、字段名通用命名規(guī)范。定期整理需求和相關(guān)代碼鼓勵程序員建設(shè)客戶化支持庫,部門定期統(tǒng)一歸檔整理最終成為標(biāo)準(zhǔn)產(chǎn)品。充分利用好程序注釋,增加程序的可讀性。
3.2 在以自力更生為主進(jìn)行合作開發(fā)的同時建立定型軟件集中保存管理制度,避免因人員的流動導(dǎo)致軟件維護(hù)和開發(fā)的中斷。
3.3 應(yīng)以不改變軟件主體結(jié)構(gòu)為前提,在保證現(xiàn)有應(yīng)用的前提下做好二次開發(fā)。
3.4 二次開發(fā)應(yīng)在充分理解和消化現(xiàn)有系統(tǒng)的基礎(chǔ)上完成,而不是盲目開發(fā)造成項目沒有上成又耗費了人力物力。