吳坤:關(guān)于醫(yī)院信息系統(tǒng)開發(fā)過程的思考
軟件工程作為一個工程學科,在研發(fā)和構(gòu)建軟件產(chǎn)品時,需要遵循軟件工程管理一般性規(guī)范要求。企業(yè)應(yīng)用信息系統(tǒng)是一種功能比較復雜的應(yīng)用軟件,不同行業(yè)的軟件開發(fā)過程,有著不同開發(fā)特點。本文將圍繞醫(yī)院信息系統(tǒng)開發(fā)過程,與大家分享相關(guān)的做法和體會。
任何企業(yè)組織在開發(fā)信息系統(tǒng)的時候,都會經(jīng)歷一個漫長的過程,特別是一些組織結(jié)構(gòu)和業(yè)務(wù)流程復雜的企業(yè)單位更是如此,比如醫(yī)療信息系統(tǒng)開發(fā)。盡管軟件工程行業(yè)有其既定的方法和流程,但是對于醫(yī)療行業(yè)而言,我們在開發(fā)醫(yī)院信息系統(tǒng)軟件時,依然有很多地方需要契合自身行業(yè)的特點,梳理和總結(jié)出適合本行業(yè)特點的流程和規(guī)范。
醫(yī)院信息系統(tǒng)的開發(fā),是一個非常復雜的工程,需要解決不同環(huán)節(jié)上的問題。第一步要做的是,通過收集資料和實地調(diào)研,明確需要解決的問題,也就是搞清楚醫(yī)院的需求所在,研發(fā)信息系統(tǒng)需要解決哪些問題,為什么要研發(fā)這個信息系統(tǒng),信息系統(tǒng)實施上線后需要達到哪些預(yù)期目標。這一步工作非常繁瑣復雜,但是極為重要。第二步需要做的是,對業(yè)務(wù)需求問題進行準確的理解,深入的分析,盡量消除一切誤解和盲點問題,確保對問題背后的原因和需求本質(zhì)的準確而清楚地理解,特別是涉及到醫(yī)療業(yè)務(wù)相關(guān)知識和醫(yī)院管理業(yè)務(wù)相關(guān)內(nèi)容,要明確問題本質(zhì)所在。在對問題有了比較清楚的認識后,下一步方可確定系統(tǒng)研發(fā)思路、方案和技術(shù)思路要求,包括系統(tǒng)主體技術(shù)架構(gòu)設(shè)計,采用什么技術(shù),后臺用什么數(shù)據(jù)庫,服務(wù)器部署環(huán)境,開發(fā)團隊分工等。總體研發(fā)思路確定后,就需要開展實質(zhì)性的設(shè)計功能,比如系統(tǒng)架構(gòu)設(shè)計、系統(tǒng)功能模塊設(shè)計等。這一步需要制定一個規(guī)范的系統(tǒng)設(shè)計方案文檔,作為系統(tǒng)開發(fā)軟件工程師的開發(fā)指南。第三步是系統(tǒng)實現(xiàn),也就是指軟件開發(fā)工程師編寫程序,得出一個信息系統(tǒng)軟件產(chǎn)品,當然不僅僅是一個可正常運行的軟件,還包括一整套滿足系統(tǒng)設(shè)計需求的軟硬件技術(shù)方案。信息系統(tǒng)很難一下子就滿足用戶的所有功能需求,特別在醫(yī)療機構(gòu)內(nèi)部,人員復雜,需求眾多,在開發(fā)醫(yī)院信息系統(tǒng)時,總會存在一些功能點的遺漏和誤差。系統(tǒng)實現(xiàn)完成后,需要進行系統(tǒng)評估,其是否解決了確定的問題,實現(xiàn)了系統(tǒng)設(shè)計階段確定的功能需求。如果沒有,就需要重新來設(shè)計和實現(xiàn)。
對于醫(yī)院信息系統(tǒng)的開發(fā)過程,可以規(guī)范化地劃分為項目啟動、系統(tǒng)分析、系統(tǒng)設(shè)計、系統(tǒng)實現(xiàn)和系統(tǒng)運維這樣幾個部分。如下圖所示:
項目啟動
醫(yī)院信息系統(tǒng)的開發(fā)建設(shè)項目通常非常復雜,需要投入大量的時間和精力。如果項目開展得不好,極容易導致投入了大量的精力,卻沒有得到預(yù)期的成效,最后是得不償失。因此,需要對項目進行仔細規(guī)劃。項目啟動階段,就是要實現(xiàn)項目的整體計劃,確定項目范圍、目標、進度、預(yù)算、機會等。項目范圍即確定項目涉及的業(yè)務(wù)領(lǐng)域,如門診收費、藥房管理、電子病歷等;項目目標,即系統(tǒng)上線使用后預(yù)期的目標,比如人均排隊時間降低30%,門診業(yè)務(wù)容量提高一倍之類;項目進度,則主要指項目預(yù)計耗時期限;項目機會,即項目可能帶來的附屬機會,比如彰顯信息工程師隊伍的技術(shù)水平和實力,提高信息部門在醫(yī)院內(nèi)部的影響力和認可度等。當前很多信息部門在醫(yī)院內(nèi)部的處境不夠友好,我們在涉及研發(fā)醫(yī)院信息系統(tǒng)時,可充分挖掘并利用好項目所帶來的機會,以改善信息部門的發(fā)展狀況。
系統(tǒng)分析
系統(tǒng)分析的主要目標是,對整個項目相關(guān)的問題,功能需求全面準確地分析理解。可以采用這三個步驟來完成:問題和現(xiàn)狀分析,業(yè)務(wù)流程認知,功能需求了解。首先是問題和現(xiàn)狀分析,目前醫(yī)院的現(xiàn)狀如何?工作效率低下,患者滿意度差,門診吞吐量低,擁擠排隊現(xiàn)狀明顯,工作人員誤差多(發(fā)錯藥、收錯費),目前是否有對應(yīng)的信息系統(tǒng)在運行?如果有系統(tǒng)運行效果怎么樣?技術(shù)和性能方面如何?是重構(gòu),還是推翻完全更換?等等諸如此類的問題。業(yè)務(wù)流程:了解醫(yī)療業(yè)務(wù)流程,從門診掛號,到接診開藥、取藥離院、檢查檢驗、入院入科等,可以通過找相關(guān)科室工作人員詢問調(diào)研,還可以把自己當成病人一樣,對整個醫(yī)療業(yè)務(wù)親自體驗一番。參與系統(tǒng)開發(fā)項目的人員,通常對醫(yī)療業(yè)務(wù)不是很了解,所以對業(yè)務(wù)流程的詳細了解非常重要,參與該過程的人員越多越好。系統(tǒng)功能需求了解:功能需求,也就是用戶群體對信息系統(tǒng)在功能上的期望,即信息系統(tǒng)所需要提供的功能。由于醫(yī)院用戶繁多,我們可以對用戶群體進行分類,例如分為醫(yī)生、護士、藥師、財務(wù)結(jié)算員等,然后根據(jù)每類用戶的需求來分析系統(tǒng)功能。
系統(tǒng)設(shè)計
系統(tǒng)設(shè)計階段,需要根據(jù)信息系統(tǒng)的業(yè)務(wù)需求,制定出技術(shù)實施方案。可能得出的技術(shù)方案不止一種,還需要進行方案選擇。比如,是重新開發(fā)一個信息系統(tǒng),還是在現(xiàn)有系統(tǒng)基礎(chǔ)上重構(gòu)。在確定好方案后,依據(jù)該方案來制定系統(tǒng)設(shè)計文檔,系統(tǒng)設(shè)計文檔是整個信息系統(tǒng)產(chǎn)品的設(shè)計藍圖和規(guī)格說明。
系統(tǒng)開發(fā)實現(xiàn)
系統(tǒng)開發(fā)實現(xiàn)階段,軟件工程師開發(fā)程序,構(gòu)成出信息系統(tǒng)產(chǎn)品,并將其投入使用,包括開發(fā)、測試、實施等過程。要特別說明的是,一定要注重測試工作。醫(yī)療業(yè)務(wù)異常嚴謹,在正式上線使用前,一定要全面開展測試工作,確保系統(tǒng)能正常工作并滿足用戶需求。先前系統(tǒng)的數(shù)據(jù),可以轉(zhuǎn)入到新系統(tǒng),或者新舊系統(tǒng)同時運行一段時間,到舊系統(tǒng)業(yè)務(wù)消耗殆盡。
系統(tǒng)運維與用戶交接
醫(yī)院新的信息系統(tǒng)上線運行后,很少是完美無缺的,會逐漸暴露出BUG,用戶會發(fā)現(xiàn)功能欠缺和性能不完善之處,甚至設(shè)計上不夠人性化等。同時,用戶也會提出新的想法和需求。系統(tǒng)運維,就是不斷收集待解決問題,了解用戶需求,進行系統(tǒng)完善和迭代。
通常情況下,在系統(tǒng)上線運行后,后續(xù)的運維工作會交給運維團隊,或者是軟件公司人員,或者是醫(yī)院信息部門工程師來完成。系統(tǒng)的運維工作是一個長期的過程,延續(xù)直到系統(tǒng)生命周期消亡。筆者將結(jié)合自身工作經(jīng)歷和思考,就醫(yī)院信息系統(tǒng)開發(fā)撰寫系列文稿,與圈內(nèi)同仁交流探討。
作者簡介
吳坤,計算機專業(yè)碩士,華中科技大學同濟醫(yī)學院附屬同濟醫(yī)院信息中心軟件工程師。專業(yè)計算機程序員,國內(nèi)在醫(yī)療行業(yè)積極推廣IT技術(shù)的青年工程師和技術(shù)踐行者,熱衷于以信息技術(shù)提高醫(yī)療行業(yè)服務(wù)質(zhì)量和改善患者就醫(yī)體驗。