二次開發(fā)是指在原有系統(tǒng)的基礎(chǔ)上根據(jù)客戶需求所進行的修改或再開發(fā),以使得軟件更符合實際。在醫(yī)療信息系統(tǒng)(hospitalinformationsystem,HIS)建設(shè)中,醫(yī)院和軟件供應(yīng)商面臨的最大困擾莫過于軟件的修改問題。醫(yī)院的差異化競爭決定了每個醫(yī)院的流程會越來越不一樣,因此需求也不盡相同。用戶在使用過程中對軟件系統(tǒng)理解逐漸加深,也會不斷提出優(yōu)化流程的要求。此外還有大量不合理但又必須滿足的修改要求,對這些需求的適應(yīng)能力是考驗HIS技術(shù)水平的重要指標(biāo)。
二次開發(fā)是軟件開發(fā)的生命周期所致,軟件維護是軟件生命周期中持續(xù)時間最長的階段。軟件的維護包括糾錯性維護和改進性維護兩個方面。在軟件開發(fā)完成并投入使用后,由于多方面的原因,軟件不能繼續(xù)適應(yīng)用戶的要求。要延續(xù)軟件的使用壽命,就必須對軟件進行維護。
二次開發(fā)是用戶需要深化的必然要求[1]。用戶的需求會隨著應(yīng)用的深入而不斷擴展。醫(yī)院信息化不像蓋大樓、購設(shè)備,需要在應(yīng)用過程中不斷地動態(tài)調(diào)整。尤其是醫(yī)院業(yè)務(wù)流程更會隨著國家醫(yī)療政策的變化而發(fā)生變化,這需要我們在原有的醫(yī)院信息系統(tǒng)基礎(chǔ)上不斷地進行二次開發(fā)和必要的系統(tǒng)改造,做好系統(tǒng)的適應(yīng)性維護和完善性維護,以使醫(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ā)商進行系統(tǒng)的二次開發(fā),完成醫(yī)院的需求。牢固樹立”購買軟件就是購買服務(wù)”的觀念,在軟件購買期間對軟件開發(fā)商的能力、信譽、響應(yīng)時間以及生存能力等進行調(diào)查,確保能有較長的合作周期。如有必要可以在購買合同中就售后及二次開發(fā)進行規(guī)定,避免不必要的麻煩。軟件是立足于自我開發(fā),還是全面買進,二者都被證明是不成功的選擇。在醫(yī)院信息系統(tǒng)應(yīng)用初期,由于觀念影響,大多數(shù)醫(yī)院奉行自我開發(fā),由于醫(yī)院計算機技術(shù)力量薄弱,大多數(shù)系統(tǒng)是低水平重復(fù),沒有形成一個象樣的綜合信息系統(tǒng),致使衛(wèi)生行業(yè)計算機應(yīng)用發(fā)展緩慢;另一方面由于醫(yī)院間的管理差異,各有特色,很難有能適合各種醫(yī)院的通用軟件。實踐證明與社會上的專業(yè)力量合作,引進通用軟件,結(jié)合自身特點加以二次開發(fā)才是較為正確的選擇。
醫(yī)院應(yīng)慎重選擇擬合作的計算機軟件開發(fā)公司,應(yīng)注重合作公司的技術(shù)力量、開發(fā)經(jīng)驗、維護能力及公司的專業(yè)發(fā)展能力,以及是否有成功的實例、是否有自主版權(quán)的商品化的HIS軟件、是否有繼續(xù)開發(fā)升級的能力。醫(yī)院選擇的合作單位最好是與醫(yī)院在同一地區(qū),或在該地區(qū)有響應(yīng)機構(gòu)的公司。應(yīng)由醫(yī)院與合作單位共同研究訂出系統(tǒng)的目標(biāo)、構(gòu)造、平臺的選擇及分步實施的方案,再談判價格問題。
因應(yīng)用系統(tǒng)有一個試用期和維護期,且信息系統(tǒng)是逐步擴大、增長的,管理上提出的要求也是變化的,合作公司需到醫(yī)院進行實地調(diào)研,醫(yī)院人員應(yīng)自始至終參與工程的規(guī)劃、安裝、調(diào)試,這對日后醫(yī)院HIS維護開發(fā)有極大好處。
1.2 依靠醫(yī)院自身信息人才自行進行二次開發(fā),此方式適合于有比較長時間的信息系統(tǒng)應(yīng)用經(jīng)驗和有一支長期致力于醫(yī)院信息系統(tǒng)維護的富有開發(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]。中間件位于客戶機”服務(wù)器的操作系統(tǒng)之上,管理計算機資源和網(wǎng)絡(luò)通訊。目前對中間件的應(yīng)用是數(shù)據(jù)庫開發(fā)的熱點。
2.2.2 數(shù)據(jù)庫中間件方法的優(yōu)點:移植性好,中間件封裝了各種與平臺有關(guān)的細節(jié),使更換操作系統(tǒng)和通訊協(xié)議等底層的配置無需改變應(yīng)用程序代碼。集成方便,中間件可以非常容易地集成到應(yīng)用開發(fā)環(huá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)一由中間件負責(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 在以自力更生為主進行合作開發(fā)的同時建立定型軟件集中保存管理制度,避免因人員的流動導(dǎo)致軟件維護和開發(fā)的中斷。
3.3 應(yīng)以不改變軟件主體結(jié)構(gòu)為前提,在保證現(xiàn)有應(yīng)用的前提下做好二次開發(fā)。
3.4 二次開發(fā)應(yīng)在充分理解和消化現(xiàn)有系統(tǒng)的基礎(chǔ)上完成,而不是盲目開發(fā)造成項目沒有上成又耗費了人力物力。