吳坤:醫(yī)療系統(tǒng)軟件開發(fā)成功之基礎(chǔ)——系統(tǒng)分析
系統(tǒng)分析工作是軟件系統(tǒng)項(xiàng)目成功的基礎(chǔ),對(duì)于醫(yī)療系統(tǒng)軟件也是如此。在開始系列文章撰寫之前,筆者特意將系統(tǒng)分析作為一個(gè)議題撰文與同行交流研討。
1 什么是系統(tǒng)分析?為什么要進(jìn)行系統(tǒng)分析?
應(yīng)用軟件開發(fā)過(guò)程中,系統(tǒng)分析是非常重要的環(huán)節(jié)。那么什么是系統(tǒng)分析,為什么要進(jìn)行系統(tǒng)分析呢?一個(gè)企業(yè)系統(tǒng)中的應(yīng)用軟件為企業(yè)業(yè)務(wù)和管理發(fā)展提供支撐和服務(wù),隨著企業(yè)組織的快速發(fā)展,原有的應(yīng)用軟件系統(tǒng)會(huì)出現(xiàn)了新的問題。例如工作效率低下、流程繁瑣、業(yè)務(wù)產(chǎn)出質(zhì)量差等,企業(yè)用戶對(duì)此感到難以忍受,會(huì)提出了一些新的預(yù)期。例如在醫(yī)療機(jī)構(gòu)的發(fā)展過(guò)程中,當(dāng)醫(yī)院內(nèi)出現(xiàn)流程繁瑣、患者就醫(yī)體驗(yàn)不佳、醫(yī)療業(yè)務(wù)效率低差錯(cuò)率高、業(yè)務(wù)效率低下等問題時(shí),就需要開展系統(tǒng)分析工作,找出問題原因和改進(jìn)方案。系統(tǒng)分析是隨著問題的產(chǎn)生以及用戶對(duì)系統(tǒng)和業(yè)務(wù)的改造愿望而產(chǎn)生的,系統(tǒng)分析最終將產(chǎn)生系統(tǒng)問題分析說(shuō)明文檔等資料,這些文檔資料是后續(xù)系統(tǒng)開發(fā)工作的設(shè)計(jì)依據(jù)和驗(yàn)收依據(jù)。
2 怎樣進(jìn)行系統(tǒng)分析?系統(tǒng)分析的方法有哪些?
系統(tǒng)分析最主要的目的是讓軟件開發(fā)人員理解軟件要解決的業(yè)務(wù)問題是什么,從而確定針對(duì)這些問題的解決方案。系統(tǒng)分析有多種方法,比較常見的有結(jié)構(gòu)化分析方法、信息工程法、面向?qū)ο蠓治龇椒ê驮头治龇ǖ取?/p>
結(jié)構(gòu)化分析方法是最早使用的系統(tǒng)分析方法之一,目前仍然在廣泛使用。結(jié)構(gòu)化分析方法是面向數(shù)據(jù)流進(jìn)行需求分析的方法,采用自頂向下、逐層分解,建立系統(tǒng)的處理流程,以數(shù)據(jù)流圖和數(shù)據(jù)字典為主要工具,建立系統(tǒng)內(nèi)在的邏輯模型。
信息工程法關(guān)注系統(tǒng)中存儲(chǔ)的數(shù)據(jù)結(jié)構(gòu),而不是過(guò)程,是一種以數(shù)據(jù)為中心的方法。實(shí)體關(guān)系圖是信息工程法中進(jìn)行數(shù)據(jù)建模的常用工具。
面向?qū)ο蠓ú话研畔⑾到y(tǒng)看作數(shù)據(jù)和過(guò)程的集合,而是一組封裝了數(shù)據(jù)和過(guò)程的對(duì)象。對(duì)象可以包含很多屬性,創(chuàng)建、讀取、修改和刪除對(duì)象的數(shù)據(jù)的唯一方式是通過(guò)嵌入對(duì)象中的過(guò)程(或稱方法)來(lái)實(shí)現(xiàn),統(tǒng)一建模語(yǔ)言(UML)是面向?qū)ο笙到y(tǒng)分析方法常用的工具。
原型分析法是一種快速迭代的系統(tǒng)分析方法,當(dāng)用戶或者系統(tǒng)分析人員對(duì)系統(tǒng)缺少直觀認(rèn)知時(shí),通過(guò)構(gòu)建一個(gè)小規(guī)模、不完整但可以使用的實(shí)例作為原型。原型分析法的思想,主要是源于“當(dāng)我看到它時(shí),我才知道我想要什么”的思維方式。因而原先分析法更有利于用戶表述自己的應(yīng)用需求。
3 系統(tǒng)分析環(huán)節(jié)和步驟?
根據(jù)系統(tǒng)分析的主要任務(wù)是對(duì)當(dāng)前系統(tǒng)進(jìn)行調(diào)查研究,得到當(dāng)前系統(tǒng)的詳細(xì)資料,對(duì)醫(yī)療機(jī)構(gòu)內(nèi)部整體業(yè)務(wù)管理狀況和信息處理過(guò)程進(jìn)行分析,為系統(tǒng)開發(fā)提供所需要的資料,并提交系統(tǒng)方案說(shuō)明書。通常情況下,系統(tǒng)分析步驟包括范圍定義、問題分析、需求分析、邏輯設(shè)計(jì)、決策分析等階段。
(1)定義分析范圍
系統(tǒng)的研發(fā)必須要有一個(gè)明確的任務(wù)目標(biāo),即明確系統(tǒng)應(yīng)該解決哪些問題,提供哪些功能。大型醫(yī)院進(jìn)行系統(tǒng)研發(fā),往往是“眾口難調(diào)”,可能每個(gè)人都有自己的需求和想法。在范圍定義時(shí),要重點(diǎn)關(guān)注系統(tǒng)所有者視圖,也就是醫(yī)院重要管理人員的需求和預(yù)期。這些重要管理人員,大都是醫(yī)院領(lǐng)導(dǎo),對(duì)系統(tǒng)決策、方案確定、驗(yàn)收等環(huán)節(jié)起著決定性作用。在范圍定義階段,需要完成的工作包括列出問題和機(jī)會(huì)、確定項(xiàng)目范圍等。
列出問題和機(jī)會(huì):確定觸發(fā)系統(tǒng)開發(fā)的問題和機(jī)會(huì),是業(yè)務(wù)開展需要、管理變革還是外部政策法規(guī)驅(qū)使,并且對(duì)每個(gè)問題的緊急程度、實(shí)現(xiàn)難度和優(yōu)先級(jí)進(jìn)行初步評(píng)估。可采用現(xiàn)場(chǎng)實(shí)地調(diào)研或召開研討會(huì),并制定問題描述文檔,問題描述文檔包括問題簡(jiǎn)要描述、緊急程度、優(yōu)先級(jí)、建議采用的方案、問題提出人、聯(lián)系方式等內(nèi)容。
確定項(xiàng)目初步范圍:在系統(tǒng)開發(fā)過(guò)程中,用戶方很容易提出新的需求和想法。但是,在系統(tǒng)分析階段依然有必要確定項(xiàng)目的范圍,并以文檔的形式保留下來(lái)。這樣,之后如果項(xiàng)目范圍發(fā)生了變化,院方用戶就能明白為什么項(xiàng)目開發(fā)的進(jìn)度和經(jīng)費(fèi)投入也要相應(yīng)變化。
(2)理解用戶要求階段
問題分析階段的主要任務(wù)是,充分研究和理解問題領(lǐng)域,了解用戶的要求,并分析其中存在的問題、機(jī)會(huì)和約束條件。在醫(yī)療系統(tǒng)軟件研發(fā)時(shí),一般要達(dá)到兩個(gè)要求:對(duì)系統(tǒng)范圍和問題相關(guān)內(nèi)容精確化;為系統(tǒng)定義一個(gè)工作術(shù)語(yǔ)表。主要包括三方面工作:研究問題領(lǐng)域、分析業(yè)務(wù)流程、制定系統(tǒng)改進(jìn)目標(biāo)和計(jì)劃工作。
研究問題領(lǐng)域:對(duì)問題和專業(yè)術(shù)語(yǔ)進(jìn)行理解,通常借助于系統(tǒng)上下圖文工具,下圖是門診掛號(hào)系統(tǒng)上下圖文。在上下文中,可以比較清楚地了解系統(tǒng)必須響應(yīng)哪些輸入、生成哪些輸出。對(duì)于列出的問題,不能僅停留在表面認(rèn)識(shí),而應(yīng)該詳盡分析問題的原因和結(jié)果。
業(yè)務(wù)流程分析:對(duì)于關(guān)鍵醫(yī)療業(yè)務(wù)流程進(jìn)行分析,例如掛號(hào)流程、急診分診流程、檢查預(yù)約流程等,需要注意的是業(yè)務(wù)流程分析主要依賴于問題領(lǐng)域知識(shí),不易涉及太多技術(shù)細(xì)節(jié)。業(yè)務(wù)流程分析結(jié)果,通常用數(shù)據(jù)流程圖來(lái)展示,如下圖所示:
制定系統(tǒng)改進(jìn)目標(biāo)和計(jì)劃:系統(tǒng)目標(biāo)和項(xiàng)目計(jì)劃的制定,要基于對(duì)系統(tǒng)范圍、問題和機(jī)會(huì)的正確理解認(rèn)識(shí)。系統(tǒng)目標(biāo)是制定一個(gè)評(píng)估準(zhǔn)則,對(duì)系統(tǒng)的任何改動(dòng)都按照該準(zhǔn)則來(lái)度量,包括預(yù)期和約束條件。
舉例如下。
第一,系統(tǒng)預(yù)期:
高峰期門診問診響應(yīng)時(shí)間低于1分鐘;
系統(tǒng)年宕機(jī)次數(shù)不高于兩次且宕機(jī)恢復(fù)時(shí)間期限在10分鐘內(nèi);
系統(tǒng)支持市醫(yī)保和跨省醫(yī)保結(jié)算;
……
第二,約束條件:
系統(tǒng)必須要2022年12月28日之前上線運(yùn)行;
系統(tǒng)總研發(fā)成本少于500萬(wàn);
系統(tǒng)必須與其他系統(tǒng)實(shí)現(xiàn)數(shù)據(jù)互通;
系統(tǒng)按照電子病歷五級(jí)標(biāo)準(zhǔn);
……
根據(jù)系統(tǒng)目標(biāo)和約束條件來(lái)制定和調(diào)整項(xiàng)目計(jì)劃,始終堅(jiān)持以系統(tǒng)目標(biāo)為項(xiàng)目計(jì)劃導(dǎo)向原則。最終,可以生成一個(gè)簡(jiǎn)要的系統(tǒng)改進(jìn)和建議報(bào)告如下圖所示:
(3)需求分析階段
用戶需求分析是在分析存在的問題基礎(chǔ)上,確定哪些是希望通過(guò)開發(fā)新的軟件所要解決的問題,其目的是明確軟件開發(fā)的目的和工作任務(wù)。
需求分析是非常重要的工作,需求分析的主要工作是將系統(tǒng)開發(fā)工作的目標(biāo)轉(zhuǎn)化為系統(tǒng)的功能需求和非功能需求:功能需求是軟件開發(fā)人員,提供什么樣的功能,滿足用戶的業(yè)務(wù)需求;非功能需求是軟件系統(tǒng)提供的應(yīng)用軟件的質(zhì)量上的要求,保護(hù)應(yīng)用響應(yīng)時(shí)間,用戶界面友好性,以及信息保護(hù)和安全等方面的需求。
需求分析不是記錄下用戶對(duì)需求的描述,而是從用戶業(yè)務(wù)需求中,抽象出軟件實(shí)現(xiàn)應(yīng)用目標(biāo),應(yīng)用程序所實(shí)現(xiàn)的輸入、輸出、過(guò)程和存儲(chǔ)的數(shù)據(jù)的形式定義。比如患者建檔輸入為患者基本信息,輸出為患者檔案信息。通常在需求分析時(shí),采用用例建模工具來(lái)描述業(yè)務(wù)需求。關(guān)于系統(tǒng)需求分析,是一個(gè)非常復(fù)雜的工程,后續(xù)將專門撰文介紹。
(4)軟件邏輯設(shè)計(jì)
系統(tǒng)分析需要?jiǎng)?chuàng)建一個(gè)系統(tǒng)模型,也就是系統(tǒng)建模。邏輯設(shè)計(jì)階段采用系統(tǒng)模型進(jìn)一步記錄業(yè)務(wù)需求,系統(tǒng)模型包含了數(shù)據(jù)結(jié)構(gòu)、業(yè)務(wù)流程和用戶接口等內(nèi)容。邏輯設(shè)計(jì)從系統(tǒng)的角度,驗(yàn)證了需求和系統(tǒng)目標(biāo)的正確性。關(guān)于邏輯設(shè)計(jì),后續(xù)將撰文詳細(xì)介紹。邏輯設(shè)計(jì)階段,最終可生產(chǎn)一個(gè)系統(tǒng)業(yè)務(wù)需求陳述文檔。
(5)方案選擇決策階段
關(guān)于系統(tǒng)問題和需求目標(biāo),可能有多個(gè)解決方案。決策分析的主要任務(wù)是,分析候選方案,并根據(jù)分析結(jié)果推薦最佳方案。在分析候選方案時(shí),盡可能的要求系統(tǒng)關(guān)鍵確定人員(比如分管院長(zhǎng)、業(yè)務(wù)科室主任)參與。系統(tǒng)分析人員向醫(yī)院相關(guān)領(lǐng)導(dǎo)詳細(xì)介紹和描述各方案優(yōu)缺點(diǎn),然后聽取醫(yī)院方人員建議。必要時(shí),系統(tǒng)分析人員可發(fā)表指導(dǎo)性和建設(shè)性意見。
在系統(tǒng)分析時(shí),有必要做價(jià)值評(píng)估工作。特別是要注意項(xiàng)目所代理的機(jī)會(huì)有哪些,在哪些技術(shù)方面可能會(huì)有創(chuàng)造性的突破,能否展現(xiàn)公司或者醫(yī)院信息部門的技術(shù)實(shí)力,對(duì)于醫(yī)院信息部門后續(xù)的發(fā)展規(guī)劃,有哪些積極和消極的影響。
4 醫(yī)療系統(tǒng)分析的特點(diǎn)和難點(diǎn)
醫(yī)療行業(yè)與其他行業(yè)相比,有其特殊性,如業(yè)務(wù)的復(fù)雜性和業(yè)務(wù)管理高標(biāo)準(zhǔn)要求等。系統(tǒng)分析需要搞清楚系統(tǒng)需要提供的功能和解決的問題是比較困難的,主要體現(xiàn)在下述幾個(gè)方面:
(1)臨床醫(yī)學(xué)與IT技術(shù)是兩個(gè)差距非常大的專業(yè),因而系統(tǒng)分析工程師在與醫(yī)院用戶進(jìn)行調(diào)研溝通過(guò)程中,容易出現(xiàn)理解和溝通障礙。醫(yī)院用戶可能很難理解系統(tǒng)涉及的復(fù)雜流程,導(dǎo)致系統(tǒng)分析工作面臨很大的困難。
(2)醫(yī)療業(yè)務(wù)的復(fù)雜性,是醫(yī)療系統(tǒng)分析工作的另一個(gè)巨大挑戰(zhàn)。特別是在目前國(guó)內(nèi)醫(yī)療機(jī)構(gòu)在管理上尚未嚴(yán)格的統(tǒng)一標(biāo)準(zhǔn),特別是大型醫(yī)院,有很多個(gè)性化特色需求,這些因素極大地增加了醫(yī)療系統(tǒng)分析工作的復(fù)雜性。在醫(yī)院內(nèi)部,日常業(yè)務(wù)開展非常繁忙。特別是大型醫(yī)院,其工作人員同時(shí)兼臨床、科研和管理工作,能夠參與系統(tǒng)分析調(diào)研工作的時(shí)間有限。因而,系統(tǒng)分析工程師在開展工作時(shí),要特別注意方式技巧,根據(jù)用戶的工作狀況,合理的安排時(shí)間規(guī)劃。
(3)醫(yī)療行業(yè)的封閉性,是醫(yī)療系統(tǒng)分析工作面臨的一個(gè)非常嚴(yán)重的困難。通常情況下,非醫(yī)療行業(yè)從業(yè)人員,甚至非本醫(yī)療機(jī)構(gòu)工作人員,很難對(duì)醫(yī)療機(jī)構(gòu)內(nèi)部業(yè)務(wù)管理流程有了解和認(rèn)識(shí),導(dǎo)致在開展系統(tǒng)分析工作時(shí),很難有前置資料了解問題和用戶需求,只能一步步事無(wú)巨細(xì)進(jìn)行實(shí)地用戶調(diào)研。
當(dāng)前,醫(yī)院信息系統(tǒng)軟考開發(fā)依然存在很多問題,比如技術(shù)實(shí)力欠缺、開發(fā)過(guò)程簡(jiǎn)陋等。為確保醫(yī)院信息系統(tǒng)軟考項(xiàng)目的成功,有必要開展系統(tǒng)分析工作。在具體項(xiàng)目開展時(shí),不一定嚴(yán)格按照文中所述步驟,但基本的范圍定義和問題分析等工作還是做扎實(shí)。
作者簡(jiǎn)介
吳坤,計(jì)算機(jī)專業(yè)碩士,華中科技大學(xué)同濟(jì)醫(yī)學(xué)院附屬同濟(jì)醫(yī)院信息中心軟件工程師。專業(yè)計(jì)算機(jī)程序員,國(guó)內(nèi)在醫(yī)療行業(yè)積極推廣IT技術(shù)的青年工程師和技術(shù)踐行者,熱衷于以信息技術(shù)提高醫(yī)療行業(yè)服務(wù)質(zhì)量和改善患者就醫(yī)體驗(yàn)。