段 然
(第三軍醫(yī)大學(xué)西南醫(yī)院信息科,重慶 400038)
近年來(lái)醫(yī)療機(jī)構(gòu)已廣泛部署了醫(yī)院信息系統(tǒng)(hospital information system,HIS),包括病理信息系統(tǒng)(pathology information system,PIS)、檢 驗(yàn) 信 息 系 統(tǒng) (laboratory information system,LIS)、影像歸檔和通信系統(tǒng)(picture archiving and communication systems,PACS)等HIS,大大提高臨床業(yè)務(wù)部門(mén)工作效率、規(guī)范了醫(yī)療流程。隨著各級(jí)醫(yī)療機(jī)構(gòu)信息化建設(shè)的推進(jìn),醫(yī)療信息系統(tǒng)運(yùn)行效率高、流程合理等優(yōu)點(diǎn)開(kāi)始體現(xiàn),各級(jí)醫(yī)院都在HIS系統(tǒng)的基礎(chǔ)上開(kāi)發(fā)適合自己醫(yī)院特色的醫(yī)療信息子系統(tǒng),形成了各自的醫(yī)療管理軟件體系。過(guò)去由于HIS開(kāi)發(fā)普遍采用自發(fā)式、作坊式、無(wú)序式等較落后的軟件開(kāi)發(fā)方式,隨著軟件規(guī)模越來(lái)越大、軟件復(fù)雜度不斷增加和軟件需求量逐漸增大,HIS開(kāi)發(fā)難度加大、效率低且不易管理等問(wèn)題十分突出。隨著現(xiàn)代軟件工程思想在HIS開(kāi)發(fā)中的推廣和應(yīng)用,其高效率、模塊式開(kāi)發(fā)靈活、團(tuán)隊(duì)合作分工明確和易于維護(hù)等優(yōu)點(diǎn)已經(jīng)得到體現(xiàn),滿(mǎn)足現(xiàn)代醫(yī)院醫(yī)療軟件開(kāi)發(fā)的要求[1]。
現(xiàn)代軟件工程是運(yùn)用現(xiàn)代科學(xué)技術(shù)知識(shí)構(gòu)造計(jì)算機(jī)程序,對(duì)軟件開(kāi)發(fā)、運(yùn)作、維護(hù)進(jìn)行系統(tǒng)化、規(guī)范化和可定量化的開(kāi)發(fā)方法,也是將工程管理應(yīng)用到軟件開(kāi)發(fā)中的學(xué)科?,F(xiàn)代軟件工程經(jīng)歷了個(gè)體生產(chǎn)方式的程序設(shè)計(jì)、生產(chǎn)作坊方式的程序系統(tǒng)、軟件新方法和軟件工程等4個(gè)發(fā)展階段[2],HIS開(kāi)發(fā)采用軟件工程方式,與傳統(tǒng)方式相比具有以下優(yōu)點(diǎn):(1)適用性,在不同的HIS約束條件下,更易使用戶(hù)需求得到滿(mǎn)足。(2)有效性,能最有效地利用計(jì)算機(jī)的時(shí)間和空間資源。(3)可修改性,允許對(duì)HIS進(jìn)行修改而不增加原系統(tǒng)的復(fù)雜性。(4)可靠性,能防止因概念、設(shè)計(jì)和結(jié)構(gòu)等方面的不完善造成的醫(yī)療軟件開(kāi)發(fā)失敗,并具有挽回因操作不當(dāng)造成開(kāi)發(fā)失敗的能力。(5)可理解性,軟件工程開(kāi)發(fā)具有清晰的結(jié)構(gòu),能直接反映HIS的需求,有助于控制軟件復(fù)雜性,并支持軟件的維護(hù)、移植和重用。(6)可維護(hù)性,HIS投入使用后,能改正潛在的錯(cuò)誤和進(jìn)行性能優(yōu)化,使其適應(yīng)不同的醫(yī)療環(huán)境。(7)可重用性,把概念或功能相對(duì)獨(dú)立的模塊定義為一個(gè)軟部件,并組裝在信息系統(tǒng)的任何位置,從而可極大地降低開(kāi)發(fā)工作量。(8)可移植性,能使HIS方便地從一個(gè)應(yīng)用環(huán)境遷移到另一個(gè)環(huán)境。(9)可追蹤性,可根據(jù)醫(yī)療業(yè)務(wù)需求對(duì)軟件設(shè)計(jì)、程序進(jìn)行正向和逆向追蹤[3]。
軟件生命周期是軟件工程思想的重要概念,即軟件從開(kāi)始開(kāi)發(fā)到報(bào)廢的全過(guò)程,包括可行性研究和項(xiàng)目開(kāi)發(fā)計(jì)劃、需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼、測(cè)試和維護(hù)等7個(gè)階段[4]。為了描述軟件生命周期的活動(dòng),又提出了瀑布模型、循環(huán)模型、演化模型、螺旋模型等多種生存期模型。針對(duì)醫(yī)療業(yè)務(wù)軟件開(kāi)發(fā)的特點(diǎn),醫(yī)療軟件生存期模型一般采用瀑布模型,該模型將軟件生存周期各活動(dòng)規(guī)定為按線性順序連接的若干階段[5],見(jiàn)圖1。
圖1 瀑布模型
基于瀑布模型的醫(yī)療軟件開(kāi)發(fā)過(guò)程按階段順序展開(kāi),從問(wèn)題定義、可行性研究、需求分析開(kāi)始直到醫(yī)療軟件的運(yùn)行和維護(hù),每個(gè)階段都會(huì)產(chǎn)生循環(huán)反饋,開(kāi)發(fā)過(guò)程中如出現(xiàn)問(wèn)題則返回上一個(gè)階段并進(jìn)行修改,最終開(kāi)發(fā)出滿(mǎn)足醫(yī)療業(yè)務(wù)需求的軟件系統(tǒng)[6]。
3.1 醫(yī)院PIS開(kāi)發(fā)案例 開(kāi)發(fā)PIS的目的是將病理報(bào)告分析流程納入醫(yī)院統(tǒng)一信息化平臺(tái)中,規(guī)范病理檢查工作流程,規(guī)范病理檢查數(shù)據(jù)并長(zhǎng)期保存,以便在管理和科研工作中對(duì)數(shù)據(jù)進(jìn)行深度挖掘和分析,提升病理工作的管理效能。該項(xiàng)目于2010年啟動(dòng),經(jīng)過(guò)2次開(kāi)發(fā),2012年5月正式宣告失敗。在項(xiàng)目開(kāi)發(fā)中,合作軟件公司據(jù)稱(chēng)擁有成熟的PIS產(chǎn)品,派駐1名工程師到醫(yī)院進(jìn)行開(kāi)發(fā)和部署,派駐工程師與醫(yī)院技術(shù)部門(mén)工程師交換意見(jiàn)對(duì)軟件進(jìn)行相關(guān)修改后,將軟件下發(fā)到病理科試用,病理科工作人員對(duì)于軟件的流程和功能非常不滿(mǎn)意,召開(kāi)幾次協(xié)調(diào)會(huì)后,軟件公司派駐工程師先后幾次重新修改了PIS程序的部分模塊,但是始終達(dá)不到使用科室的要求,經(jīng)過(guò)多次試用被退回后,始終沒(méi)能開(kāi)始正常運(yùn)行使用。后來(lái)軟件公司派駐工程師辭職,只能另?yè)Q工程師到醫(yī)院進(jìn)行開(kāi)發(fā)部署。由于公司交接管理出現(xiàn)紕漏,新的開(kāi)發(fā)工程師沒(méi)有以前開(kāi)發(fā)程序的源代碼,也不了解程序的開(kāi)發(fā)思路,無(wú)法進(jìn)行后續(xù)開(kāi)發(fā),一切工作只能重新開(kāi)始。不久派駐開(kāi)發(fā)工程師也離職,經(jīng)過(guò)長(zhǎng)達(dá)1年多的時(shí)間,反反復(fù)復(fù)更換了多位派駐工程師,程序都無(wú)法完整的開(kāi)發(fā)出來(lái),最終只能以宣布開(kāi)發(fā)失敗而終止合同。綜上所述,合作軟件公司在項(xiàng)目實(shí)施的各階段未按照現(xiàn)代軟件工程的思路管理和控制,項(xiàng)目管理混亂、開(kāi)發(fā)者不能明確各自的開(kāi)發(fā)任務(wù)和目標(biāo),嚴(yán)重影響了項(xiàng)目進(jìn)度,最終該項(xiàng)目以失敗告終。
從該案例可總結(jié)出以下教訓(xùn):(1)缺乏統(tǒng)一安排和規(guī)劃,人員職責(zé)分工不明確。開(kāi)發(fā)者之間缺乏統(tǒng)一安排和協(xié)調(diào),對(duì)軟件規(guī)模和功能缺乏認(rèn)識(shí),沒(méi)有長(zhǎng)遠(yuǎn)規(guī)劃,導(dǎo)致重復(fù)開(kāi)發(fā)、代碼冗余等問(wèn)題突出[7]。(2)未按現(xiàn)代軟件工程思路做詳細(xì)的需求調(diào)研,導(dǎo)致需求分析不足。由于項(xiàng)目實(shí)施后開(kāi)發(fā)者只與技術(shù)部門(mén)工程師交換意見(jiàn),而沒(méi)有到最終用戶(hù)即臨床科室進(jìn)行充分調(diào)研,導(dǎo)致軟件開(kāi)發(fā)閉門(mén)造車(chē),開(kāi)發(fā)的軟件功能不能滿(mǎn)足臨床醫(yī)療業(yè)務(wù)需求。(3)開(kāi)發(fā)任務(wù)沒(méi)有定量化。軟件工程規(guī)定軟件開(kāi)發(fā)前必須將人員生產(chǎn)率、工作復(fù)雜程度、歷史經(jīng)驗(yàn)等因素定量化,而該項(xiàng)目開(kāi)發(fā)過(guò)程中沒(méi)有量化各項(xiàng)任務(wù),無(wú)條理安排開(kāi)發(fā)進(jìn)程導(dǎo)致任務(wù)分工不合理、開(kāi)發(fā)時(shí)間延長(zhǎng)等問(wèn)題。(4)過(guò)分依賴(lài)過(guò)去經(jīng)驗(yàn)。由于有過(guò)去的類(lèi)似開(kāi)發(fā)經(jīng)驗(yàn),開(kāi)發(fā)者對(duì)現(xiàn)有項(xiàng)目不夠重視,導(dǎo)致開(kāi)發(fā)人員配備不足、開(kāi)發(fā)條理性差、團(tuán)隊(duì)缺乏配合等問(wèn)題。(5)開(kāi)發(fā)人員不固定,軟件開(kāi)發(fā)期間前后一致性較差。由于頻繁更換開(kāi)發(fā)人員,新來(lái)開(kāi)發(fā)者與前期工作缺乏銜接,導(dǎo)致開(kāi)發(fā)工作缺乏連續(xù)性,項(xiàng)目完成時(shí)間和完成難度相應(yīng)增加。
3.2 醫(yī)院監(jiān)護(hù)系統(tǒng)開(kāi)發(fā)案例 在經(jīng)歷了PIS項(xiàng)目開(kāi)發(fā)失敗的教訓(xùn)后,通過(guò)及時(shí)總結(jié)經(jīng)驗(yàn),在隨后的醫(yī)院監(jiān)護(hù)系統(tǒng)開(kāi)發(fā)過(guò)程中要求開(kāi)發(fā)者嚴(yán)格按照現(xiàn)代軟件工程思想管理軟件開(kāi)發(fā)過(guò)程和控制軟件開(kāi)發(fā)進(jìn)度。開(kāi)發(fā)者首先對(duì)系統(tǒng)進(jìn)行了可行性分析,再到最終用戶(hù)即臨床科室進(jìn)行充分的需求調(diào)研,制定了詳細(xì)的監(jiān)護(hù)系統(tǒng)需求分析計(jì)劃,明確了用戶(hù)對(duì)監(jiān)護(hù)系統(tǒng)的使用要求和功能需求。系統(tǒng)按功能進(jìn)行了模塊劃分,明確了各開(kāi)發(fā)者的開(kāi)發(fā)任務(wù)和開(kāi)發(fā)進(jìn)度,開(kāi)發(fā)者再按統(tǒng)一的格式和規(guī)范進(jìn)行功能模塊開(kāi)發(fā)和接口開(kāi)發(fā),確保了各功能模塊結(jié)構(gòu)清晰和完整統(tǒng)一。在系統(tǒng)測(cè)試階段,嚴(yán)格按照實(shí)際使用標(biāo)準(zhǔn)采集大樣本測(cè)試數(shù)據(jù),設(shè)計(jì)各種應(yīng)用場(chǎng)景并充分考慮各種可能的情況,盡可能在系統(tǒng)上線使用前發(fā)現(xiàn)問(wèn)題和優(yōu)化程序。在正式使用前對(duì)臨床用戶(hù)進(jìn)行了強(qiáng)化培訓(xùn)和試運(yùn)行,減少了用戶(hù)因流程不熟悉導(dǎo)致的各種問(wèn)題。本案例嚴(yán)格按照軟件工程思想進(jìn)行軟件開(kāi)發(fā),保證了軟件質(zhì)量的同時(shí)又提高了開(kāi)發(fā)效率,并節(jié)省了大量開(kāi)發(fā)成本。該系統(tǒng)已順利通過(guò)驗(yàn)收并已在醫(yī)院臨床上推廣應(yīng)用,取得了良好的效果。
3.3 對(duì)比分析 采用現(xiàn)代軟件工程方法對(duì)比分析前后兩次醫(yī)療軟件開(kāi)發(fā)的案例,總結(jié)出如下經(jīng)驗(yàn):(1)開(kāi)發(fā)前要進(jìn)行充分的需求分析和可行性研究,明確醫(yī)療軟件的功能和目標(biāo)。明確用戶(hù)需求是軟件開(kāi)發(fā)的前提,只有明確臨床用戶(hù)需求才能進(jìn)行系統(tǒng)功能設(shè)計(jì)和下一步開(kāi)發(fā)工作。因此,需求調(diào)研和可行性分析是開(kāi)發(fā)醫(yī)療軟件系統(tǒng)極其重要和不可或缺的環(huán)節(jié)。(2)成立項(xiàng)目組,成員由醫(yī)院相關(guān)使用科室負(fù)責(zé)人、技術(shù)部門(mén)項(xiàng)目負(fù)責(zé)人、軟件公司項(xiàng)目經(jīng)理、開(kāi)發(fā)團(tuán)隊(duì)工程師等組成,對(duì)醫(yī)療軟件開(kāi)發(fā)工作進(jìn)行統(tǒng)一部署和協(xié)調(diào)各類(lèi)資源,保障任務(wù)有序進(jìn)行。成立項(xiàng)目組是醫(yī)療軟件開(kāi)發(fā)成功的保證[8]。(3)開(kāi)發(fā)中要建立軟件工程體系,按照項(xiàng)目需求進(jìn)行軟件構(gòu)架和整體設(shè)計(jì),將軟件細(xì)分為主體界面、功能模塊、后臺(tái)數(shù)據(jù)庫(kù)等幾部分,不同的軟件組成部分需要分工開(kāi)發(fā),大致可以分為主體框架程序、功能模塊程序(按照需求再分為幾個(gè)小功能模塊)、數(shù)據(jù)庫(kù)設(shè)計(jì)及建設(shè)、程序裝配和測(cè)試、美工等幾個(gè)開(kāi)發(fā)小組,各小組做好自己的開(kāi)發(fā)任務(wù),最后整合裝配成完整的系統(tǒng)程序。(4)軟件正式在臨床部署前還要對(duì)用戶(hù)進(jìn)行系統(tǒng)培訓(xùn),系統(tǒng)培訓(xùn)能減少軟件使用中因操作人員流程不熟悉帶來(lái)的各種問(wèn)題。在培訓(xùn)和試運(yùn)行過(guò)程中,用戶(hù)還能發(fā)現(xiàn)開(kāi)發(fā)和測(cè)試人員沒(méi)有考慮到或測(cè)試出的不合理流程和操作,通過(guò)反饋問(wèn)題進(jìn)行進(jìn)一步程序優(yōu)化。
在醫(yī)療軟件開(kāi)發(fā)中運(yùn)用現(xiàn)代軟件工程思想,能夠開(kāi)發(fā)出滿(mǎn)足臨床需求的信息系統(tǒng),保證醫(yī)院臨床業(yè)務(wù)和管理工作的流程化和系統(tǒng)化,并能減輕管理部門(mén)的壓力,提高臨床工作效率。從采用軟件工程方法前后兩次醫(yī)療軟件開(kāi)發(fā)成敗的案例中得到啟示,只有充分運(yùn)用軟件工程思想進(jìn)行軟件管理,才能保證軟件特別是大型軟件系統(tǒng)的成功開(kāi)發(fā)并取得事半功倍的效果。
[1] 楊俊志,楊帆,徐亞林.基于“軍字一號(hào)”工程的數(shù)字圖書(shū)館系統(tǒng)設(shè)計(jì)方案[J].醫(yī)療衛(wèi)生裝備,2012,23(2):58-59.
[2] 沙赫,軟件工程——面向?qū)ο蠛蛡鹘y(tǒng)的方法[M].北京:機(jī)械工業(yè)出版社,2012:58-60.
[3] 張凱.軟件工程與開(kāi)發(fā)技術(shù)[M].北京:清華大學(xué)出版社,2012:29-35.
[4] 鐘珞,袁景凌.軟件工程[M].北京:科學(xué)出版社,2012:66-70.
[5] 曾宏旭,李初民.基于電子病歷的科間會(huì)診系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].重慶醫(yī)學(xué),2011,40(35):3568-3569.
[6] 田柯,耿仁文,林凱程.院內(nèi)會(huì)診存在的問(wèn)題及對(duì)策分析[J].現(xiàn)代醫(yī)院,2011,2(11):110-111.
[7] 王琳華.關(guān)于遠(yuǎn)程醫(yī)療如何促進(jìn)區(qū)域醫(yī)療信息化建設(shè)的思考[J].重慶醫(yī)學(xué),2011,40(35):3574-3575.
[8] 賈如冰,李甲辰,李成義.全院會(huì)診的精細(xì)化改進(jìn)[J].中國(guó)衛(wèi)生質(zhì)量管理,2011,18(3):46-47.