本文主要針對基于WEB的醫學數據挖掘工具集成方案進行了研究。基于WEB的醫學數據挖掘由客戶端瀏覽器通過HTTP協議向服務器端發送請求,服務器端接收相應的指令并調用數據挖掘工具的遠程對象進行數據處理,并將處理結果通過HTTP協議傳回到客戶端瀏覽器,展示給用戶。為了證明所提出的集成方案的可行性,針對.NET平臺下的SAS和SPSS兩種統計分析軟件進行了集成,并給出了詳細的操作步驟。通過實際測試,本文提出的基于WEB的數據挖掘集成方案,展現了其廣闊的發展前景,這為醫學數據挖掘開辟了一條新的途徑。
引用本文: 姚剛, 張曉祥, 汪火明. 基于WEB的醫學數據挖掘集成. 生物醫學工程學雜志, 2014, 31(3): 563-566. doi: 10.7507/1001-5515.20140105 復制
引言
隨著信息技術的不斷發展,數據庫應用的規模、范圍和深度在不斷擴大,但是人們無法有效地利用這些數據,在這種背景下,數據挖掘這一新興的交叉學科應運而生[1]。數據挖掘(data mining,DM)又稱數據庫知識發現(knowledge discovery in database,KDD),是指從大量的數據中,抽取有價值的知識或者規則的過程[2]。KDD是在1989年第11屆美國人工智能協會學術會議上首次提出,它是通過對大量數據進行分析,揭示其中的規律并進一步模型化的一種方法。
醫學數據挖掘是一門涉及面廣、技術難度大的新興交叉學,臨床科研過程中,經常需要從大量的數據中挖掘其中的規律,通常需要借助常用的SPSS/SAS(Statistical Product and Service Solutions/Statistical Analysis System)等數據挖掘工具進行分析[3-4]。隨著計算機管理信息系統的發展,基于WEB的醫療信息系統越來越多[5],傳統的客戶端/服務器模式已經逐步被瀏覽器/服務器模式替代。因此,如何實現WEB醫療信息系統與SPSS/SAS的集成是進行數據挖掘的前提[6-7]。本文主要討論了基于WEB的醫學數據挖掘中常用的SPSS和SAS工具的系統集成方案,為醫學科研工作提供了有力的武器,開辟了新的應用前景。
1 基于WEB的數據挖掘集成
1.1 基于WEB的集成方法分析
如圖 1所示是傳統基于C/S(Client/Server)結構的醫學數據處理,可以在通過客戶端從服務器提取相關的數據到本地,本地客戶端應用程序直接調用數據挖掘工具的接口,對從服務器提取的數據進行處理。 如圖 2所示是基于WEB的數據挖掘集成。基于WEB的醫學數據管理系統通過瀏覽器來實現醫學數據的管理,客戶端瀏覽器通過HTTP協議向服務器端發送請求,由服務器端接收相應的指令,并調用數據挖掘工具遠程對象的相關函數方法進行數據處理,并將處理結果通過HTTP協議傳回到客戶端瀏覽器,展示給用戶[8]。


1.2 基于WEB的SAS集成
統計分析系統(SAS)是目前世界上應用最廣泛的數據分析軟件之一。 SAS系統的核心模塊是BASE SAS模塊,可完成復雜的統計分析工作。本文針對WEB平臺下利用SAS的IOM(SAS的外部編程接口)來實現SAS數據的讀取,分析和結果顯示等操作。
IOM(Integrated Object Model)集成對象模型是一組COM對象集合,符合COM編程標準,它包括SASIOMCommon、SASObjectManager、SASWorkSpace等對象,可以跨平臺使用。IOM Bridge模式提供給了SAS客戶端和SAS元數據服務器間相互訪問的一種方式。如圖 3所示是基于WEB下的SAS集成方案。WEB客戶端應用程序調用IOM,通過HTTP協議對SAS元數據服務器發送SAS數據操作指令,服務器將操作的結果返回到客戶端。

圖 3顯示了基于WEB的SAS集成方案,用戶的數據分析請求通過HTTP協議提交到服務器。服務器根據客戶端的請求,首先調用COM組件,從數據庫中提取數據,然后在服務器上調用SAS的數據分析引擎,對數據進行分析,然后將結果通過HTTP協議傳輸給客戶端,客戶端再調用數據展示控件進行數據展示,可通過表格、趨勢圖等方式進行展示,從而實現了基于WEB模式下的SAS分析集成,為WEB模式下的數據分析提供一種有效的方法。
1.3 基于WEB的SPSS集成
SPSS是世界上最早的統計分析軟件,其基本功能包括數據管理、統計分析、圖表分析、輸出管理等等。本文針對WEB平臺下利用SPSS的COM編程接口來實現SPSS數據的讀取,分析和結果顯示等操作。
SPSS提供了COM組件供其他平臺調用,包括① SPSS type library (spsswin.tlb):Application對象、Options對象、文件信息對象、Documents集合、Items集合、Chart對象、Maps對象等的操作;② PivotTable type library (spsspvt.tlb):轉軸表Pivot Table對象及其里面所含的全部對象;③ Graphics Editor OLE control (spssgctl.tlb): 交互式Graphs對象及其所含的全部對象;④ RTF type library (spssrtf.tlb):RTF文本對象。在本方案中,客戶端通過HTTP協議發送請求至服務器端,由服務器端的遠程SPSS對象將SPSS分析命令直接傳遞給SPSS軟件完成數據分析并生成分析結果,最終將分析結果文件的地址返回給客戶端。
如圖 4所示是基于WEB下的SPSS集成方案。由于SPSS提供了COM組件供其他平臺調用,因此對于WEB下的數據分析請求,首先通過HTTP協議將用戶的請求發送給服務器,服務器端調用SPSS的COM組件,從醫學系統數據庫中讀取數據,并調用SPSS數據分析引擎進行數據分析,然后將結果通過HTTP協議返回給用戶客戶端,客戶端可以調用SPSS提供的Chart對象等,將數據以表格或者圖標的形式展示給用戶。

2 實現
通過上面的分析可知,在WEB模式下可通過SAS/SPSS的IOM/COM組件來實現在服務器端遠程調用,在服務器端完成數據統計和分析后,通過HTTP協議將數據統計分析結果返回到用戶瀏覽器,實現了基于WEB的數據挖掘集成。為了驗證本文方案的有效性,以ASP.NET為例來實現集成。
2.1 NET下的SAS集成實現
在編碼前,需要在.NET項目中添加對SAS類庫的引用,包括SAS、SASIOMCommon、SASWorkspaceManger等,另外還需要在服務器安裝SAS服務。 .NET下的SAS集成步驟如下:
Step 1: 建立連接
private Connection _connection;//定義連接對象
_serverDef = new SASWorkspaceManager.ServerDefClass();
_serverDef.Port = Connection.ServerPort;
_serverDef.Protocol = Connection.Protocals;
_serverDef.MachineDNSName = Connection.ServerIP;
Step 2: 得到工作空間
private IWorkspace workSpace;//定義 workspace對象
workSpace=_workspaceManager.Workspaces.CreateWorkspaceByServer("_LOCAL_",SASWorkspaceManager.Visibility.VisibilityProcess,_serverDef,_connection.UserName,_connection.UserPassword,out message);//創建workspace
workSpace.LanguageService.Submit(sasCommand);
Step 3: 執行SAS命令
workSpace.LanguageService.StoredProcess Service.Repository=path;//path是SAS的倉庫路徑
workSpace.LanguageServic.StoredProcessService.Execute("init");//init表示intiSAS.
workSpace.LanguageService.Submit("proc means data=sashelp.class;run;proc report;run;");
Step 4: 讀取執行結果
workSpace.LanguageService.FlushList(100); //讀取輸出的結果
Step 5:關閉連接
sasPooledObject.RetumToPool0;//關閉 Pool。調用結束后,應該將SAS關閉以釋放內存空間。
2.2 NET下的SPSS集成實現
在編碼前,需要在.NET項目中添加對SPSS類庫的引用,包括Spss、spsswinLib、spsswin等,另外還需要在服務器安裝SPSS服務。 .NET下的SPSS集成步驟如下:
Step 1: 創建SPSS Document
SpssDataDocument doc = SpssDataDocument. Create(filepath);//在服務器生成SPSS文件
Step 2: 定義SPSS Variable
SpssNumericVariable sv1 = new SpssNumericVariable();//定義SPSS變量sv1.Name = dt.Columns[i].ColumnName;
sv1.Label = dt.Columns[i].ColumnName;
doc.Variables.Add(sv1);
doc.CommitDictionary();
Step 3: 寫入數據操作
SpssCase case_data = doc.Cases.New();//寫入數據
case_data.Commit();
Step 4: 讀取數據操作
Spss.SpssDataDocument doc = (Spss.SpssDataDocument.Open(path,SpssFileAccess.Read));
NumVars = doc.Variables.Count - 1;
VarName = doc.Variables[i].Name;
VarLabel = doc.Variables[i].Label。
2.3 基于WEB的醫學數據挖掘結果展示
如圖 5所示是基于WEB的數據挖掘集中展示案例,以醫院患者費用分析為例,圖 5(上)是患者住院期間某天的費用組成分析的結構圖;圖 5(下)是某個患者在住院期間,按天分析患者的費用柱狀圖,及患者住院期間每天的費用情況。本案例是由WEB版電子病歷系統中所展示的患者費用分析報告,系統用戶通過電子病歷客戶端將請求發送給服務器,再由服務器調用SAS組件進行數據的分析,最終將結果返回給客戶端展示,客戶端展示時,調用了SAS的COM組件和圖標控件進行數據展示,通

過本案例充分展示了基于WEB的數據挖掘技術在醫學數據挖掘中的應用,為當前醫學信息系統和數據挖掘系統的有效結合提供了有效的解決方案。
3 結束語
近年來,數據挖掘技術在醫學領域中的應用越來越廣泛,在疾病診斷、治療、器官移植、基因研究、圖像分析、康復、藥物開發、科學研究等方面都獲得了可喜的成果。而隨著醫學研究數據量的不斷擴大,基于WEB的醫學數據管理系統應用會越來越廣泛,越來越多的醫學數據管理系統需要對數據進行集中管理,通過瀏覽器的方式開放給用戶,而醫學數據管理系統的統計分析功能是必不可少的部分,如何讓用戶通過瀏覽器就可以實現各種統計工具的調用,是基于WEB的醫學數據管理系統必須解決的問題。本研究提出了基于WEB的數據挖掘集成方案,展現了其廣闊的發展前景。這為醫學數據挖掘開辟了一條新的途徑。
引言
隨著信息技術的不斷發展,數據庫應用的規模、范圍和深度在不斷擴大,但是人們無法有效地利用這些數據,在這種背景下,數據挖掘這一新興的交叉學科應運而生[1]。數據挖掘(data mining,DM)又稱數據庫知識發現(knowledge discovery in database,KDD),是指從大量的數據中,抽取有價值的知識或者規則的過程[2]。KDD是在1989年第11屆美國人工智能協會學術會議上首次提出,它是通過對大量數據進行分析,揭示其中的規律并進一步模型化的一種方法。
醫學數據挖掘是一門涉及面廣、技術難度大的新興交叉學,臨床科研過程中,經常需要從大量的數據中挖掘其中的規律,通常需要借助常用的SPSS/SAS(Statistical Product and Service Solutions/Statistical Analysis System)等數據挖掘工具進行分析[3-4]。隨著計算機管理信息系統的發展,基于WEB的醫療信息系統越來越多[5],傳統的客戶端/服務器模式已經逐步被瀏覽器/服務器模式替代。因此,如何實現WEB醫療信息系統與SPSS/SAS的集成是進行數據挖掘的前提[6-7]。本文主要討論了基于WEB的醫學數據挖掘中常用的SPSS和SAS工具的系統集成方案,為醫學科研工作提供了有力的武器,開辟了新的應用前景。
1 基于WEB的數據挖掘集成
1.1 基于WEB的集成方法分析
如圖 1所示是傳統基于C/S(Client/Server)結構的醫學數據處理,可以在通過客戶端從服務器提取相關的數據到本地,本地客戶端應用程序直接調用數據挖掘工具的接口,對從服務器提取的數據進行處理。 如圖 2所示是基于WEB的數據挖掘集成。基于WEB的醫學數據管理系統通過瀏覽器來實現醫學數據的管理,客戶端瀏覽器通過HTTP協議向服務器端發送請求,由服務器端接收相應的指令,并調用數據挖掘工具遠程對象的相關函數方法進行數據處理,并將處理結果通過HTTP協議傳回到客戶端瀏覽器,展示給用戶[8]。


1.2 基于WEB的SAS集成
統計分析系統(SAS)是目前世界上應用最廣泛的數據分析軟件之一。 SAS系統的核心模塊是BASE SAS模塊,可完成復雜的統計分析工作。本文針對WEB平臺下利用SAS的IOM(SAS的外部編程接口)來實現SAS數據的讀取,分析和結果顯示等操作。
IOM(Integrated Object Model)集成對象模型是一組COM對象集合,符合COM編程標準,它包括SASIOMCommon、SASObjectManager、SASWorkSpace等對象,可以跨平臺使用。IOM Bridge模式提供給了SAS客戶端和SAS元數據服務器間相互訪問的一種方式。如圖 3所示是基于WEB下的SAS集成方案。WEB客戶端應用程序調用IOM,通過HTTP協議對SAS元數據服務器發送SAS數據操作指令,服務器將操作的結果返回到客戶端。

圖 3顯示了基于WEB的SAS集成方案,用戶的數據分析請求通過HTTP協議提交到服務器。服務器根據客戶端的請求,首先調用COM組件,從數據庫中提取數據,然后在服務器上調用SAS的數據分析引擎,對數據進行分析,然后將結果通過HTTP協議傳輸給客戶端,客戶端再調用數據展示控件進行數據展示,可通過表格、趨勢圖等方式進行展示,從而實現了基于WEB模式下的SAS分析集成,為WEB模式下的數據分析提供一種有效的方法。
1.3 基于WEB的SPSS集成
SPSS是世界上最早的統計分析軟件,其基本功能包括數據管理、統計分析、圖表分析、輸出管理等等。本文針對WEB平臺下利用SPSS的COM編程接口來實現SPSS數據的讀取,分析和結果顯示等操作。
SPSS提供了COM組件供其他平臺調用,包括① SPSS type library (spsswin.tlb):Application對象、Options對象、文件信息對象、Documents集合、Items集合、Chart對象、Maps對象等的操作;② PivotTable type library (spsspvt.tlb):轉軸表Pivot Table對象及其里面所含的全部對象;③ Graphics Editor OLE control (spssgctl.tlb): 交互式Graphs對象及其所含的全部對象;④ RTF type library (spssrtf.tlb):RTF文本對象。在本方案中,客戶端通過HTTP協議發送請求至服務器端,由服務器端的遠程SPSS對象將SPSS分析命令直接傳遞給SPSS軟件完成數據分析并生成分析結果,最終將分析結果文件的地址返回給客戶端。
如圖 4所示是基于WEB下的SPSS集成方案。由于SPSS提供了COM組件供其他平臺調用,因此對于WEB下的數據分析請求,首先通過HTTP協議將用戶的請求發送給服務器,服務器端調用SPSS的COM組件,從醫學系統數據庫中讀取數據,并調用SPSS數據分析引擎進行數據分析,然后將結果通過HTTP協議返回給用戶客戶端,客戶端可以調用SPSS提供的Chart對象等,將數據以表格或者圖標的形式展示給用戶。

2 實現
通過上面的分析可知,在WEB模式下可通過SAS/SPSS的IOM/COM組件來實現在服務器端遠程調用,在服務器端完成數據統計和分析后,通過HTTP協議將數據統計分析結果返回到用戶瀏覽器,實現了基于WEB的數據挖掘集成。為了驗證本文方案的有效性,以ASP.NET為例來實現集成。
2.1 NET下的SAS集成實現
在編碼前,需要在.NET項目中添加對SAS類庫的引用,包括SAS、SASIOMCommon、SASWorkspaceManger等,另外還需要在服務器安裝SAS服務。 .NET下的SAS集成步驟如下:
Step 1: 建立連接
private Connection _connection;//定義連接對象
_serverDef = new SASWorkspaceManager.ServerDefClass();
_serverDef.Port = Connection.ServerPort;
_serverDef.Protocol = Connection.Protocals;
_serverDef.MachineDNSName = Connection.ServerIP;
Step 2: 得到工作空間
private IWorkspace workSpace;//定義 workspace對象
workSpace=_workspaceManager.Workspaces.CreateWorkspaceByServer("_LOCAL_",SASWorkspaceManager.Visibility.VisibilityProcess,_serverDef,_connection.UserName,_connection.UserPassword,out message);//創建workspace
workSpace.LanguageService.Submit(sasCommand);
Step 3: 執行SAS命令
workSpace.LanguageService.StoredProcess Service.Repository=path;//path是SAS的倉庫路徑
workSpace.LanguageServic.StoredProcessService.Execute("init");//init表示intiSAS.
workSpace.LanguageService.Submit("proc means data=sashelp.class;run;proc report;run;");
Step 4: 讀取執行結果
workSpace.LanguageService.FlushList(100); //讀取輸出的結果
Step 5:關閉連接
sasPooledObject.RetumToPool0;//關閉 Pool。調用結束后,應該將SAS關閉以釋放內存空間。
2.2 NET下的SPSS集成實現
在編碼前,需要在.NET項目中添加對SPSS類庫的引用,包括Spss、spsswinLib、spsswin等,另外還需要在服務器安裝SPSS服務。 .NET下的SPSS集成步驟如下:
Step 1: 創建SPSS Document
SpssDataDocument doc = SpssDataDocument. Create(filepath);//在服務器生成SPSS文件
Step 2: 定義SPSS Variable
SpssNumericVariable sv1 = new SpssNumericVariable();//定義SPSS變量sv1.Name = dt.Columns[i].ColumnName;
sv1.Label = dt.Columns[i].ColumnName;
doc.Variables.Add(sv1);
doc.CommitDictionary();
Step 3: 寫入數據操作
SpssCase case_data = doc.Cases.New();//寫入數據
case_data.Commit();
Step 4: 讀取數據操作
Spss.SpssDataDocument doc = (Spss.SpssDataDocument.Open(path,SpssFileAccess.Read));
NumVars = doc.Variables.Count - 1;
VarName = doc.Variables[i].Name;
VarLabel = doc.Variables[i].Label。
2.3 基于WEB的醫學數據挖掘結果展示
如圖 5所示是基于WEB的數據挖掘集中展示案例,以醫院患者費用分析為例,圖 5(上)是患者住院期間某天的費用組成分析的結構圖;圖 5(下)是某個患者在住院期間,按天分析患者的費用柱狀圖,及患者住院期間每天的費用情況。本案例是由WEB版電子病歷系統中所展示的患者費用分析報告,系統用戶通過電子病歷客戶端將請求發送給服務器,再由服務器調用SAS組件進行數據的分析,最終將結果返回給客戶端展示,客戶端展示時,調用了SAS的COM組件和圖標控件進行數據展示,通

過本案例充分展示了基于WEB的數據挖掘技術在醫學數據挖掘中的應用,為當前醫學信息系統和數據挖掘系統的有效結合提供了有效的解決方案。
3 結束語
近年來,數據挖掘技術在醫學領域中的應用越來越廣泛,在疾病診斷、治療、器官移植、基因研究、圖像分析、康復、藥物開發、科學研究等方面都獲得了可喜的成果。而隨著醫學研究數據量的不斷擴大,基于WEB的醫學數據管理系統應用會越來越廣泛,越來越多的醫學數據管理系統需要對數據進行集中管理,通過瀏覽器的方式開放給用戶,而醫學數據管理系統的統計分析功能是必不可少的部分,如何讓用戶通過瀏覽器就可以實現各種統計工具的調用,是基于WEB的醫學數據管理系統必須解決的問題。本研究提出了基于WEB的數據挖掘集成方案,展現了其廣闊的發展前景。這為醫學數據挖掘開辟了一條新的途徑。