李 琳
(臨沂市沂水中心醫(yī)院 臨沂 276400)
?
基于SPSS軟件的醫(yī)院數(shù)據(jù)分析
李 琳
(臨沂市沂水中心醫(yī)院 臨沂 276400)
介紹SPSS軟件的作用,根據(jù)臨沂市沂水中心醫(yī)院的實際情況,提出以SPSS語法模板替換技術(shù)為核心的醫(yī)院數(shù)據(jù)分析應(yīng)用方案,闡述方案的原理和架構(gòu)設(shè)計,利用SPSS提供的python接口和pyGTK GUI實現(xiàn)數(shù)據(jù)分析,通過試驗驗證此方案的可行性和合理性。
SPSS軟件; 語法模板; 醫(yī)院數(shù)據(jù)分析
醫(yī)學(xué)統(tǒng)計學(xué)是運(yùn)用數(shù)理統(tǒng)計和概率論的原理,結(jié)合醫(yī)院實際針對醫(yī)學(xué)數(shù)據(jù)資料進(jìn)行收集、整理、分析和推斷的學(xué)科,是醫(yī)院科研與實踐的重要工具,貫穿于以現(xiàn)代科學(xué)試驗方法為基礎(chǔ)的醫(yī)學(xué)研究的整個過程之中。近幾年臨沂市沂水中心醫(yī)院相繼投入使用醫(yī)院信息系統(tǒng)(HIS)、臨床信息系統(tǒng)(CIS)、網(wǎng)絡(luò)信息系統(tǒng)(NIS)、影像存儲和傳輸系統(tǒng)(PACS)等管理系統(tǒng)。醫(yī)院信息管理系統(tǒng)的使用為醫(yī)務(wù)工作者和患者帶來了極大的便利。但是,目前這些信息系統(tǒng)不能為醫(yī)院提供便利的統(tǒng)計分析功能,無法為決策者提供決策輔助[1-2]。本文針對當(dāng)前存在的這些問題,基于SPSS軟件提出了以語法模板為基礎(chǔ)對醫(yī)院數(shù)據(jù)進(jìn)行分析的方法、方案并進(jìn)行試驗。
隨著計算機(jī)技術(shù)在社會生活各個領(lǐng)域的廣泛應(yīng)用,各種統(tǒng)計軟件成為醫(yī)院數(shù)據(jù)統(tǒng)計分析的有力工具,如Excel、SPSS、R、MATLAB等。Excel的數(shù)據(jù)統(tǒng)計簡單、易用,但是其功能有限,較難完成復(fù)雜的統(tǒng)計分析。R是屬于GNU系統(tǒng)的一個自由、免費(fèi)、源代碼開放的軟件,是用于統(tǒng)計計算和統(tǒng)計制圖的優(yōu)秀工具[3],但是對其學(xué)習(xí)需要投入更多的時間。MATLAB是一種用于數(shù)值計算、可視化及編程的高級語言和交互式環(huán)境,更加側(cè)重于數(shù)據(jù)的計算及仿真。而作為世界上3大統(tǒng)計分析平臺之一的社會科學(xué)統(tǒng)計軟件(SPSS),不僅擁有強(qiáng)大而全面的統(tǒng)計分析功能,也提供了完全基于組件的開發(fā)平臺,能夠為特定應(yīng)用領(lǐng)域提供定制化應(yīng)用[4-5],同時在對數(shù)據(jù)進(jìn)行共詞分析[6-8]方面,操作簡單,易于掌握,有豐富的語法,可以按照自己的需求來定制軟件,調(diào)用SPSS的核心完成數(shù)據(jù)分析的操作。SPSS軟件有強(qiáng)大的數(shù)據(jù)分析能力,也有簡易的操作界面,但是對于普通用戶,特別是對數(shù)學(xué)分析不是很了解的人是有一定難度的。因此必須提出一種方案使之更加簡化,甚至隱藏SPSS軟件的界面,降低用戶的使用復(fù)雜度。本文提出了以SPSS語法模板替換為核心技術(shù)的醫(yī)院數(shù)據(jù)分析解決方案。
3.1 方案原理(圖1)
圖1 方案設(shè)計原理
SPSS軟件有豐富的語法,各種操作都是通過執(zhí)行語法腳本完成的。用戶從界面上執(zhí)行的各種操作最終都轉(zhuǎn)換成對應(yīng)的語法腳本,之后通過SPSS引擎執(zhí)行語法腳本,最終獲得執(zhí)行結(jié)果。在醫(yī)院的實際工作中,各科室的醫(yī)務(wù)人員所要進(jìn)行統(tǒng)計分析的數(shù)據(jù)是有規(guī)律可循的,有固定的模式,因此可以讓精通SPSS軟件的專業(yè)人才,如醫(yī)院統(tǒng)計室或信息科的工作人員,根據(jù)各科室的不同需求定制語法模板,設(shè)計好語法模板供進(jìn)行數(shù)據(jù)分析的用戶選擇使用。根據(jù)用戶的數(shù)據(jù)文件和選擇的模板文件,調(diào)用SPSS的python接口,執(zhí)行數(shù)據(jù)分析操作,最后輸出數(shù)據(jù)分析的報告。
3.2 軟件架構(gòu)設(shè)計
3.2.1 數(shù)據(jù)分析核心模塊 本軟件把數(shù)據(jù)分析的核心部分設(shè)計成為一個命令行的工具,可以在外殼程序(shell)中調(diào)用數(shù)據(jù)分析腳本文件,執(zhí)行腳本即可獲得數(shù)據(jù)分析的結(jié)果。而面向普通的用戶,本軟件又設(shè)計了圖形化的桌面程序,但是其本質(zhì)是調(diào)用了數(shù)據(jù)分析的命令行腳本文件。數(shù)據(jù)分析的腳本程序(analysis-core.py)其中部分代碼如下:
def executeSPSS(isyntax,datasource_file, output_path):
SpssClient.StartClient()
SpssSyntaxDoc=SpssClient.OpenSyntaxDoc(isyntax)
cmdlist=SpssSyntaxDoc.GetSyntax()
SpssSyntaxDoc.CloseDocument()
cmdlist=cmdlist.replace(u'[datasource]',datasource_file)
cmdlist=cmdlist.replace(u'[outputpath]',output_path)
SpssClient.RunSyntax(cmdlist)
SpssClient.StopClient()
os.system("taskkill /F /IM stats.exe")
通過以上的代碼可以看到,程序首先啟動一個SPSS客戶端,打開一個語法文件,進(jìn)行一些文本的替換,最后執(zhí)行語法,程序運(yùn)行結(jié)束。通過上述代碼,執(zhí)行SPSS語法模板替換的操作。語法的模板文件樣式如下:
SET UNICODE ON.
GET DATA
/TYPE=XLS
/FILE='[datasource]'
/SHEET=name 'Sheet1'
/CELLRANGE=full
/READNAMES=on
/ASSUMEDSTRWIDTH=32767.
EXECUTE.
DATASET NAME 數(shù)據(jù)集2 WINDOW=ASIS.
GRAPH
/LINE(SIMPLE)=VALUE(個數(shù)) BY 手機(jī)品牌.
OUTPUT EXPORT
/CONTENTS
EXPORT=ALL LAYERS=PRINTSETTING MODELVIEWS=PRINTSETTING
/DOC DOCUMENTFILE='[outputpath]/報告.doc'
NOTESCAPTIONS=YES WIDETABLES=WRAP
PAGESIZE=MM(210.01999999999998, 297.01) TOPMARGIN=MM(25.4)
BOTTOMMARGIN=MM(25.400000000000034)
LEFTMARGIN=MM(25.4) RIGHTMARGIN=MM(25.400000000000006).
[datasource]和[outputpath]分別代表的是.xls文件的路徑和數(shù)據(jù)分析報告的輸出路徑。在數(shù)據(jù)分析之前,analysis-core.py這個腳本會去讀取語法文件并用真正的路徑去替換[datasource]和[outputpath],之后執(zhí)行替換后的語法字符串,最后得到數(shù)據(jù)分析報告。
3.2.2 軟件及模板自動更新模塊 由于軟件會被安裝在各科室,并且軟件的語法模板庫可能會更新比較頻繁,如果沒有自動更新的機(jī)制會給軟件的維護(hù)人員帶來極大不便。本方案并沒有把語法模板庫存放在數(shù)據(jù)庫中,而是采用了一個巧妙的方法,利用分布式版本控制系統(tǒng)(git)的倉庫作為其數(shù)據(jù)庫[9]。通過充分利用git工具的功能,沒有使用復(fù)雜的數(shù)據(jù)庫軟件就設(shè)計了一個包含基本功能的自動更新程序。軟件自身程序及模板自動更新,見圖2。
圖2 軟件自身程序及模板自動更新
本方案設(shè)計了兩個倉庫:其一是發(fā)布程序用的倉庫;另一個是語法模板倉庫。程序倉庫用來更新最新版本程序,把最新的程序PUSH到倉庫后,客戶端軟件在啟動時會執(zhí)行更新操作,到此倉庫獲取最新發(fā)布的軟件程序。語法模板倉庫用來保存設(shè)計好的語法模板,客戶端也會自動從這個倉庫克隆,更新本地的模板庫。
4.1 系統(tǒng)實現(xiàn)概述
本系統(tǒng)的實現(xiàn)是以python作為主要的開發(fā)語言,基于SPSS軟件及其python接口,實現(xiàn)數(shù)據(jù)的分析功能。用戶界面采用了pyGTK for Windows版本,自動更新模塊基于git實現(xiàn)。本系統(tǒng)采用的SPSS軟件是19.0版本,其提供的python接口是基于python 2.6的,為了開發(fā)方便,本系統(tǒng)的開發(fā)語言也采用python 2.6版本。由于更新模塊是通過git的版本管理機(jī)制來實現(xiàn)的,所以必須搭建一個倉庫管理系統(tǒng),相當(dāng)于本系統(tǒng)的數(shù)據(jù)庫。采用了開源的倉庫管理系統(tǒng)(GitLab),是利用 Ruby on Rails 開發(fā)的開源應(yīng)用程序,實現(xiàn)自托管的Git項目倉庫,可通過Web界面訪問公開的或者私人項目。擁有與Github類似的功能,能夠瀏覽源代碼、管理缺陷和注釋等功能。通過GitLab系統(tǒng)維護(hù)人員可以很方便地更新模板和發(fā)布程序。本軟件要求安裝在Windows XP操作系統(tǒng)及以上版本,并且要安裝好以下軟件:python 2.6、pyGTK 2.24 Windows版本、IBM SPSS Statistics 19和msysgit.18.4。SPSS軟件有兩種字符編碼形式:Unicode和Locale,為了程序設(shè)計方便,安裝SPSS軟件后需把SPSS軟件設(shè)置成Unicode編碼方式。為了進(jìn)行系統(tǒng)的測試,在系統(tǒng)的模板倉庫中模擬創(chuàng)建了一些模板。
4.2 系統(tǒng)測試步驟
在安裝有本軟件的機(jī)器上運(yùn)行其可執(zhí)行文件run.py。本軟件在啟動的過程中會執(zhí)行更新模板庫和程序的操作。進(jìn)入主程序界面后輸入待分析的數(shù)據(jù)文件、與其對應(yīng)的模板文件和數(shù)據(jù)分析報告的輸出目錄,點擊執(zhí)行分析操作后,數(shù)據(jù)分析的報告結(jié)果就會輸出到設(shè)置的輸出目錄中,見圖4。之后,查看輸出報告,退出程序。
圖3 醫(yī)院數(shù)據(jù)分析程序主界面
4.3 系統(tǒng)測試結(jié)果
系統(tǒng)待分析的數(shù)據(jù)保存在一個Excel文件中如aday.xls,表1是該院某一天各時段的門診數(shù)量。
表1 某天該院分時段門診人數(shù)
系統(tǒng)進(jìn)行數(shù)據(jù)分析的模板文件的內(nèi)容如下:
SET UNICODE ON.
GET DATA
/TYPE=XLS
/FILE='[datasource]'
/SHEET=name 'Sheet1'
/CELLRANGE=full
/READNAMES=on
/ASSUMEDSTRWIDTH=32767.
EXECUTE.
DATASET NAME 數(shù)據(jù)集0 WINDOW=ASIS.
GRAPH
/BAR(SIMPLE)=VALUE(人數(shù)) BY 時間段.
OUTPUT EXPORT
/CONTENTS EXPORT=ALL LAYERS=PRINTSETTING MODELVIEWS=PRINTSETTING
/DOC DOCUMENTFILE='[outputpath]/報告.doc
NOTESCAPTIONS=YES WIDETABLES=WRAP
PAGESIZE=MM(210.01999999999998, 297.01) TOPMARGIN=MM(25.4)
BOTTOMMARGIN=MM(25.400000000000034)
LEFTMARGIN=MM(25.4) RIGHTMARGIN=MM(25.400000000000006).
系統(tǒng)分析結(jié)束后的結(jié)果文件保存為一個名為“報告.doc”的Word文檔,其中生成的數(shù)據(jù)分析結(jié)果,見圖4。經(jīng)過實際測試,系統(tǒng)基本的數(shù)據(jù)分析等相關(guān)功能已經(jīng)實現(xiàn),系統(tǒng)能根據(jù)用戶輸入的數(shù)據(jù)文件及選擇的模板,自動進(jìn)行語法模板的替換操作,最后調(diào)用SPSS軟件執(zhí)行語法文件,完成數(shù)據(jù)分析操作。系統(tǒng)測試時雖然采用的數(shù)據(jù)及語法模板比較簡單,但這足以驗證基于SPSS語法模板替換技術(shù)的數(shù)據(jù)分析方案是可行的、合理的。因此本文所闡述的技術(shù)方案能有效地處理重復(fù)性的數(shù)據(jù)分析任務(wù),滿足醫(yī)院各相關(guān)部門中的數(shù)據(jù)分析需求。
圖4 數(shù)據(jù)分析結(jié)果
本文基于SPSS數(shù)據(jù)分析軟件以及其提供的python API,充分利用其語法模板的特點,根據(jù)醫(yī)院實際情況,提出基于模板的醫(yī)院數(shù)據(jù)分析方案,重點闡述本方案的實現(xiàn)原理,根據(jù)此方案設(shè)計實現(xiàn)基于SPSS語法模板替換技術(shù)的醫(yī)院數(shù)據(jù)分析軟件,通過試驗驗證本方案的可行性和合理性。
1 肖大為,姚英強(qiáng),關(guān)開慧,等.超長住院日對平均住院日的影響[J].中國醫(yī)院統(tǒng)計,2006,(3):181-182.
2 高明,李剛恢.SPSS在醫(yī)院統(tǒng)計中的應(yīng)用[J].現(xiàn)代醫(yī)藥衛(wèi)生,2009,(14):2224.
3 湯銀才.語言與統(tǒng)計分析[M].北京:高等教育出版社,2008.
4 王津濤,姜恩海,王曉光,等.SPSS技術(shù)在實證研究統(tǒng)計分析中的應(yīng)用[J].計算機(jī)工程與應(yīng)用,2006,42(36):201-203.
5 張素梅.基于SPSS的可重構(gòu)統(tǒng)計過程控制系統(tǒng)[J].計算機(jī)應(yīng)用,2008,28(7):1878
6 趙穎穎,邱宇紅,陳斯斯,等.基于共詞分析的國外醫(yī)學(xué)信息研究熱點[J].醫(yī)學(xué)信息學(xué)雜志,2013,34(1):48-49.
7 袁曉園,華薇娜.基于共詞分析的我國醫(yī)學(xué)信息學(xué)國際發(fā)文熱點研究[J].醫(yī)學(xué)信息學(xué)雜志,2014,35(4):9-10.
8 薛曉芳,陳銳,何瑋,等.基于共詞分析的軍隊醫(yī)院SCI論文熱點分析[J].醫(yī)學(xué)信息學(xué)雜志,2014,35(6):55-56.
9 蔣鑫.Git權(quán)威指南[M].北京:機(jī)械工業(yè)出版社,2011.
Hospital Data Analysis Based on SPSS Software
LILin,
YishuiCentralHospitalofLinyi,Linyi276400,China
The paper introduces the function of SPSS software, according to the actual status of Yishui Central Hospital, puts forward the hospital data analysis plan using SPSS syntax file replacement technology, elaborates the plan principle and architecture design. Data analysis is realized through python interface and pyGTK GUI, the testing result shows the feasibility and rationality of the plan.
SPSS software; Syntax file; Hospital data analysis
2014-12-21
李琳,高級工程師,發(fā)表論文12篇,參編論著1部。
R-058
A 〔DOI〕10.3969/j.issn.1673-6036.2015.06.008