李 琳
(临沂市沂水中心医院 临沂 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