李 琳
(臨沂市沂水中心醫院 臨沂 276400)
?
基于SPSS軟件的醫院數據分析
李 琳
(臨沂市沂水中心醫院 臨沂 276400)
介紹SPSS軟件的作用,根據臨沂市沂水中心醫院的實際情況,提出以SPSS語法模板替換技術為核心的醫院數據分析應用方案,闡述方案的原理和架構設計,利用SPSS提供的python接口和pyGTK GUI實現數據分析,通過試驗驗證此方案的可行性和合理性。
SPSS軟件; 語法模板; 醫院數據分析
醫學統計學是運用數理統計和概率論的原理,結合醫院實際針對醫學數據資料進行收集、整理、分析和推斷的學科,是醫院科研與實踐的重要工具,貫穿于以現代科學試驗方法為基礎的醫學研究的整個過程之中。近幾年臨沂市沂水中心醫院相繼投入使用醫院信息系統(HIS)、臨床信息系統(CIS)、網絡信息系統(NIS)、影像存儲和傳輸系統(PACS)等管理系統。醫院信息管理系統的使用為醫務工作者和患者帶來了極大的便利。但是,目前這些信息系統不能為醫院提供便利的統計分析功能,無法為決策者提供決策輔助[1-2]。本文針對當前存在的這些問題,基于SPSS軟件提出了以語法模板為基礎對醫院數據進行分析的方法、方案并進行試驗。
隨著計算機技術在社會生活各個領域的廣泛應用,各種統計軟件成為醫院數據統計分析的有力工具,如Excel、SPSS、R、MATLAB等。Excel的數據統計簡單、易用,但是其功能有限,較難完成復雜的統計分析。R是屬于GNU系統的一個自由、免費、源代碼開放的軟件,是用于統計計算和統計制圖的優秀工具[3],但是對其學習需要投入更多的時間。MATLAB是一種用于數值計算、可視化及編程的高級語言和交互式環境,更加側重于數據的計算及仿真。而作為世界上3大統計分析平臺之一的社會科學統計軟件(SPSS),不僅擁有強大而全面的統計分析功能,也提供了完全基于組件的開發平臺,能夠為特定應用領域提供定制化應用[4-5],同時在對數據進行共詞分析[6-8]方面,操作簡單,易于掌握,有豐富的語法,可以按照自己的需求來定制軟件,調用SPSS的核心完成數據分析的操作。SPSS軟件有強大的數據分析能力,也有簡易的操作界面,但是對于普通用戶,特別是對數學分析不是很了解的人是有一定難度的。因此必須提出一種方案使之更加簡化,甚至隱藏SPSS軟件的界面,降低用戶的使用復雜度。本文提出了以SPSS語法模板替換為核心技術的醫院數據分析解決方案。
3.1 方案原理(圖1)

圖1 方案設計原理
SPSS軟件有豐富的語法,各種操作都是通過執行語法腳本完成的。用戶從界面上執行的各種操作最終都轉換成對應的語法腳本,之后通過SPSS引擎執行語法腳本,最終獲得執行結果。在醫院的實際工作中,各科室的醫務人員所要進行統計分析的數據是有規律可循的,有固定的模式,因此可以讓精通SPSS軟件的專業人才,如醫院統計室或信息科的工作人員,根據各科室的不同需求定制語法模板,設計好語法模板供進行數據分析的用戶選擇使用。根據用戶的數據文件和選擇的模板文件,調用SPSS的python接口,執行數據分析操作,最后輸出數據分析的報告。
3.2 軟件架構設計
3.2.1 數據分析核心模塊 本軟件把數據分析的核心部分設計成為一個命令行的工具,可以在外殼程序(shell)中調用數據分析腳本文件,執行腳本即可獲得數據分析的結果。而面向普通的用戶,本軟件又設計了圖形化的桌面程序,但是其本質是調用了數據分析的命令行腳本文件。數據分析的腳本程序(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客戶端,打開一個語法文件,進行一些文本的替換,最后執行語法,程序運行結束。通過上述代碼,執行SPSS語法模板替換的操作。語法的模板文件樣式如下:
SET UNICODE ON.
GET DATA
/TYPE=XLS
/FILE='[datasource]'
/SHEET=name 'Sheet1'
/CELLRANGE=full
/READNAMES=on
/ASSUMEDSTRWIDTH=32767.
EXECUTE.
DATASET NAME 數據集2 WINDOW=ASIS.
GRAPH
/LINE(SIMPLE)=VALUE(個數) 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).
[datasource]和[outputpath]分別代表的是.xls文件的路徑和數據分析報告的輸出路徑。在數據分析之前,analysis-core.py這個腳本會去讀取語法文件并用真正的路徑去替換[datasource]和[outputpath],之后執行替換后的語法字符串,最后得到數據分析報告。
3.2.2 軟件及模板自動更新模塊 由于軟件會被安裝在各科室,并且軟件的語法模板庫可能會更新比較頻繁,如果沒有自動更新的機制會給軟件的維護人員帶來極大不便。本方案并沒有把語法模板庫存放在數據庫中,而是采用了一個巧妙的方法,利用分布式版本控制系統(git)的倉庫作為其數據庫[9]。通過充分利用git工具的功能,沒有使用復雜的數據庫軟件就設計了一個包含基本功能的自動更新程序。軟件自身程序及模板自動更新,見圖2。

圖2 軟件自身程序及模板自動更新
本方案設計了兩個倉庫:其一是發布程序用的倉庫;另一個是語法模板倉庫。程序倉庫用來更新最新版本程序,把最新的程序PUSH到倉庫后,客戶端軟件在啟動時會執行更新操作,到此倉庫獲取最新發布的軟件程序。語法模板倉庫用來保存設計好的語法模板,客戶端也會自動從這個倉庫克隆,更新本地的模板庫。
4.1 系統實現概述
本系統的實現是以python作為主要的開發語言,基于SPSS軟件及其python接口,實現數據的分析功能。用戶界面采用了pyGTK for Windows版本,自動更新模塊基于git實現。本系統采用的SPSS軟件是19.0版本,其提供的python接口是基于python 2.6的,為了開發方便,本系統的開發語言也采用python 2.6版本。由于更新模塊是通過git的版本管理機制來實現的,所以必須搭建一個倉庫管理系統,相當于本系統的數據庫。采用了開源的倉庫管理系統(GitLab),是利用 Ruby on Rails 開發的開源應用程序,實現自托管的Git項目倉庫,可通過Web界面訪問公開的或者私人項目。擁有與Github類似的功能,能夠瀏覽源代碼、管理缺陷和注釋等功能。通過GitLab系統維護人員可以很方便地更新模板和發布程序。本軟件要求安裝在Windows XP操作系統及以上版本,并且要安裝好以下軟件:python 2.6、pyGTK 2.24 Windows版本、IBM SPSS Statistics 19和msysgit.18.4。SPSS軟件有兩種字符編碼形式:Unicode和Locale,為了程序設計方便,安裝SPSS軟件后需把SPSS軟件設置成Unicode編碼方式。為了進行系統的測試,在系統的模板倉庫中模擬創建了一些模板。
4.2 系統測試步驟
在安裝有本軟件的機器上運行其可執行文件run.py。本軟件在啟動的過程中會執行更新模板庫和程序的操作。進入主程序界面后輸入待分析的數據文件、與其對應的模板文件和數據分析報告的輸出目錄,點擊執行分析操作后,數據分析的報告結果就會輸出到設置的輸出目錄中,見圖4。之后,查看輸出報告,退出程序。

圖3 醫院數據分析程序主界面
4.3 系統測試結果
系統待分析的數據保存在一個Excel文件中如aday.xls,表1是該院某一天各時段的門診數量。

表1 某天該院分時段門診人數
系統進行數據分析的模板文件的內容如下:
SET UNICODE ON.
GET DATA
/TYPE=XLS
/FILE='[datasource]'
/SHEET=name 'Sheet1'
/CELLRANGE=full
/READNAMES=on
/ASSUMEDSTRWIDTH=32767.
EXECUTE.
DATASET NAME 數據集0 WINDOW=ASIS.
GRAPH
/BAR(SIMPLE)=VALUE(人數) 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).
系統分析結束后的結果文件保存為一個名為“報告.doc”的Word文檔,其中生成的數據分析結果,見圖4。經過實際測試,系統基本的數據分析等相關功能已經實現,系統能根據用戶輸入的數據文件及選擇的模板,自動進行語法模板的替換操作,最后調用SPSS軟件執行語法文件,完成數據分析操作。系統測試時雖然采用的數據及語法模板比較簡單,但這足以驗證基于SPSS語法模板替換技術的數據分析方案是可行的、合理的。因此本文所闡述的技術方案能有效地處理重復性的數據分析任務,滿足醫院各相關部門中的數據分析需求。

圖4 數據分析結果
本文基于SPSS數據分析軟件以及其提供的python API,充分利用其語法模板的特點,根據醫院實際情況,提出基于模板的醫院數據分析方案,重點闡述本方案的實現原理,根據此方案設計實現基于SPSS語法模板替換技術的醫院數據分析軟件,通過試驗驗證本方案的可行性和合理性。
1 肖大為,姚英強,關開慧,等.超長住院日對平均住院日的影響[J].中國醫院統計,2006,(3):181-182.
2 高明,李剛恢.SPSS在醫院統計中的應用[J].現代醫藥衛生,2009,(14):2224.
3 湯銀才.語言與統計分析[M].北京:高等教育出版社,2008.
4 王津濤,姜恩海,王曉光,等.SPSS技術在實證研究統計分析中的應用[J].計算機工程與應用,2006,42(36):201-203.
5 張素梅.基于SPSS的可重構統計過程控制系統[J].計算機應用,2008,28(7):1878
6 趙穎穎,邱宇紅,陳斯斯,等.基于共詞分析的國外醫學信息研究熱點[J].醫學信息學雜志,2013,34(1):48-49.
7 袁曉園,華薇娜.基于共詞分析的我國醫學信息學國際發文熱點研究[J].醫學信息學雜志,2014,35(4):9-10.
8 薛曉芳,陳銳,何瑋,等.基于共詞分析的軍隊醫院SCI論文熱點分析[J].醫學信息學雜志,2014,35(6):55-56.
9 蔣鑫.Git權威指南[M].北京:機械工業出版社,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
李琳,高級工程師,發表論文12篇,參編論著1部。
R-058
A 〔DOI〕10.3969/j.issn.1673-6036.2015.06.008