東南大學(xué)公共衛(wèi)生學(xué)院流行病與衛(wèi)生統(tǒng)計(jì)學(xué)系(210009)
潘俊霞 羅 櫟 王詩遠(yuǎn) 楊嘉瑩 劉 沛△
?
SAS/AF模塊在臨床試驗(yàn)統(tǒng)計(jì)分析計(jì)劃書自動(dòng)化輸出中的應(yīng)用
東南大學(xué)公共衛(wèi)生學(xué)院流行病與衛(wèi)生統(tǒng)計(jì)學(xué)系(210009)
潘俊霞 羅 櫟 王詩遠(yuǎn) 楊嘉瑩 劉 沛△
統(tǒng)計(jì)分析系統(tǒng)(statistical analysis system,SAS)因其編程方式靈活、模塊齊全、數(shù)據(jù)加工及統(tǒng)計(jì)分析能力強(qiáng)大,在醫(yī)藥、金融、理工科等諸多領(lǐng)域廣泛運(yùn)用,但對(duì)于利用SAS/AF模塊開發(fā)界面并編制成屏蔽復(fù)雜代碼僅通過點(diǎn)擊操作即可完成一系列復(fù)雜功能的研究在國內(nèi)報(bào)道較少。統(tǒng)計(jì)分析計(jì)劃書是臨床試驗(yàn)中的重要文件,手工制作統(tǒng)計(jì)分析計(jì)劃書不僅容易出錯(cuò),還難以做到標(biāo)準(zhǔn)化。 本文以開發(fā)臨床試驗(yàn)統(tǒng)計(jì)分析計(jì)劃書自動(dòng)化輸出軟件為例,介紹運(yùn)用SAS 9.3中的AF模塊結(jié)合SAS宏程序構(gòu)建特定功能的統(tǒng)計(jì)工具,從而實(shí)現(xiàn)統(tǒng)計(jì)分析計(jì)劃書的自動(dòng)化輸出。
SAS/AF(applications facility,AF)作為一個(gè)開發(fā)和屏幕展示工具,以界面化操作實(shí)現(xiàn)數(shù)據(jù)分析和報(bào)表輸出功能。AF文件與其他SAS文件一樣儲(chǔ)存于SAS目錄中,可以在SAS環(huán)境中調(diào)用。SAS/AF模塊主要由兩大部分組成:框架(frame)和SAS組件語言(SAS component language/SAS screen control language,SCL)??蚣芎蚐CL語言既可以獨(dú)立實(shí)現(xiàn)各自不同的簡(jiǎn)單功能,也可以相互聯(lián)系而實(shí)現(xiàn)復(fù)雜功能。
1.在SAS/AF中創(chuàng)建框架
AF模塊的啟用可以通過兩種方式實(shí)現(xiàn),第一種打開SAS系統(tǒng)后在命令欄輸入如:build macro.plan.ss.frame,可以在macro邏輯庫的plan目錄下建立一個(gè)名為ss的框架[1]?;蛘呖梢酝ㄟ^編寫程序proc build c=macro.plan.ss.frame;run;同樣也能實(shí)現(xiàn)上述操作。
2.SAS/AF構(gòu)建環(huán)境
SAS/AF構(gòu)建環(huán)境主要由創(chuàng)建窗口、組件窗口、屬性窗口、SCL源窗口四部分組成。
3.SCL語言以及和宏程序的結(jié)合
SCL語言是AF界面中與Frame配套的語言,其語法與SAS程序語言相似,但也有init、term等框架特有的語言。在Frame中新建一個(gè)組件時(shí),組件本身沒有功能,但在利用其屬性調(diào)整組件名稱、模型應(yīng)用和初始值后,SCL編輯界面可對(duì)該組件進(jìn)行功能編輯,如給組件內(nèi)的文本或指向的對(duì)象進(jìn)行賦值傳遞、宏程序的執(zhí)行、其他框架調(diào)用等[2]。由于篇幅所限,本文不對(duì)SCL語言進(jìn)行全面介紹,僅以構(gòu)建臨床試驗(yàn)統(tǒng)計(jì)分析計(jì)劃書自動(dòng)化輸出中的一些關(guān)鍵語句進(jìn)行介紹。如本軟件中所用的關(guān)鍵SCL語言如下:
dcl char(200)case;
next:
call display(“macro.soft.vaccine.frame”);
return;
case=newcase.text;
Pushbutton2:
Pushbutton1.enabled=“No”;
submit continue;
%Total_PLANBYVAR1(dataset=vaccine_general);
endsubmit;
return;
上述程序執(zhí)行過程為定義一個(gè)長(zhǎng)度為200的字符型宏變量&case,規(guī)定名為next按鈕組件的功能,即點(diǎn)擊該按鈕后界面執(zhí)行后續(xù)程序,令文本輸入組件newcase內(nèi)的text文本的信息賦值給宏變量&case,規(guī)定名為Pushbutton2的按鈕組件的功能為名為Pushbutton1的按鈕在按鈕Pushbutton2被點(diǎn)擊時(shí)灰化,隨后使界面的程序運(yùn)行在SAS程序語言下,在后臺(tái)執(zhí)行宏程序%Total_PLANBYVAR1以配置基本情況的參數(shù)表,再回到SCL語言中,最后Pushbutton2按鈕的功能結(jié)束。這段SCL語言與Frame相連,使Frame中的兩組件實(shí)現(xiàn)了從一個(gè)界面跳轉(zhuǎn)到另一個(gè)界面以及執(zhí)行下一步操作的Frame功能并且實(shí)現(xiàn)和SAS語言中宏程序的結(jié)合。
SAS宏程序是SAS的編程工具,通過編寫SAS宏可以擴(kuò)展SAS系統(tǒng)的功能,可以命名一個(gè)變量、一段程序或一個(gè)文本,以后只需要調(diào)用其名稱就可以實(shí)現(xiàn)這些代碼的功能。宏的使用不僅能對(duì)程序進(jìn)行批量化重復(fù)調(diào)用、減少重復(fù)編寫,更能實(shí)現(xiàn)一些普通程序編寫無法實(shí)現(xiàn)的功能,是連接SAS/AF與后臺(tái)程序的紐帶,是實(shí)現(xiàn)臨床試驗(yàn)統(tǒng)計(jì)分析計(jì)劃書自動(dòng)化輸出的核心[2-3]。如前文所述SCL語言部分宏程序%Total_PLANBYVAR1在編寫時(shí)相對(duì)復(fù)雜,但在調(diào)用時(shí)卻非常簡(jiǎn)單且能在相似的部分被重復(fù)調(diào)用(如后文所述5大模塊的參數(shù)配置),很大程度上節(jié)省了程序編寫的時(shí)間,提高了程序調(diào)用的效率,拓展了SCL語言的功能。
1.建立Frame
建立界面,第一步是新建一個(gè)空白框架(具體步驟見上文),然后在組件窗口中用鼠標(biāo)選擇所需組件拖放入框架中。用右鍵選擇組件屬性,對(duì)其屬性進(jìn)行設(shè)定。如果有些控件需要和數(shù)據(jù)相連,則需選擇相應(yīng)模塊放入控件中,并對(duì)其屬性進(jìn)行設(shè)定。
2.對(duì)各個(gè)Frame添加SCL
框架SCL是將SCL條目與特定的Frame相連,用于控制Frame及其中的組件。雖然Frame可以通過設(shè)定其屬性來完成一些功能,但是為了完成更多復(fù)雜功能,F(xiàn)rame必須與SCL相連[4]。如圖1所示。
圖1 SAS/AF構(gòu)建軟件基本步驟圖示
3.編譯與測(cè)試
Frame與框架SCL建立完成后,需要進(jìn)行編譯,成功生成代碼也就是編譯成功后就可以進(jìn)行測(cè)試。編譯的方法有兩種,第一種是點(diǎn)擊創(chuàng)建環(huán)境窗口上方編譯的按鈕,第二種是在SAS資源管理器中右擊后編譯,兩者的區(qū)別在于SCL中有Submit語句時(shí)只能使用第二種方法。反復(fù)修改與測(cè)試之后可以將成型的界面制成安裝包以便使用。
本次臨床試驗(yàn)統(tǒng)計(jì)分析計(jì)劃書自動(dòng)化軟件是基于SAS/AF模塊開發(fā)的界面化操作軟件,利用AF模塊強(qiáng)大的結(jié)果呈現(xiàn)功能,通過界面操作和后臺(tái)宏程序的連接實(shí)現(xiàn)屏蔽復(fù)雜代碼的目的,并方便實(shí)際工作者的使用。下面以某疫苗臨床試驗(yàn)統(tǒng)計(jì)分析計(jì)劃書自動(dòng)化輸出軟件中的部分界面和結(jié)果為例,說明SAS/AF的功能。根據(jù)疫苗臨床試驗(yàn)的特點(diǎn)和要求設(shè)計(jì)了5大模塊,分別是封面參數(shù)配置、基本情況、安全性評(píng)估、免疫原性評(píng)價(jià)和自定義模塊,其中自定義模塊是為不同的統(tǒng)計(jì)分析計(jì)劃書而預(yù)留的特定模塊以實(shí)現(xiàn)特定的參數(shù)配置。
由圖2可知,界面功能由6個(gè)按鈕執(zhí)行,點(diǎn)擊每個(gè)按鈕將運(yùn)行后臺(tái)程序而執(zhí)行相應(yīng)功能。例如點(diǎn)擊封面參數(shù)配置按鈕,將會(huì)在界面中顯示出一張CSV格式的參數(shù)表,根據(jù)計(jì)劃書的要求對(duì)參數(shù)表進(jìn)行相應(yīng)的修改即可在相對(duì)應(yīng)的文件夾產(chǎn)生統(tǒng)計(jì)分析計(jì)劃書的封面,隨后依次點(diǎn)擊基本情況、安全性評(píng)估、免疫原性評(píng)價(jià)的按鈕,操作同前面的封面參數(shù)配置;然后點(diǎn)擊保存即產(chǎn)生RTF表單并保存在相應(yīng)路徑下。當(dāng)上述各按鈕都執(zhí)行后會(huì)產(chǎn)生出全部需要的RTF文件,點(diǎn)擊返回主界面按鈕即可出現(xiàn)圖3所示界面。在圖3所示界面中進(jìn)行RTF表單的合并,將需要合并的表單全部選入圖3所示第二欄中,在計(jì)劃書名稱下輸入所完成項(xiàng)目的名稱后點(diǎn)擊合并輸出就可以在指定路徑下生成以計(jì)劃書名稱命名的包含所有RTF表單的統(tǒng)計(jì)分析計(jì)劃書(如圖4所示)。
圖2 疫苗臨床試驗(yàn)統(tǒng)計(jì)分析計(jì)劃書自動(dòng)化輸出界面
圖3 選擇并追加RTF文件界面
年齡組(歲)組別例數(shù)均值±標(biāo)準(zhǔn)差最小值-最大值置信區(qū)間F值P值3~試驗(yàn)對(duì)照118~試驗(yàn)對(duì)照160~試驗(yàn)對(duì)照1合計(jì)試驗(yàn)對(duì)照1
表1.1.2 受試者性別均衡性分析
圖4 RTF文件合并后結(jié)果顯示(節(jié)選)
實(shí)現(xiàn)合并RTF輸出按鈕的SCL程序如下:
ExcuteControl:
if FileOutControl.text ne “” then do;
item=FileOutControl.text;
submit continue;
%combinertffile(datain=__select,outfilename=%str(&item),combinetargetfold=%str(&rtf0& planname));/*輸出文件名*/
endsubmit;
end;
return;
上述程序主要實(shí)現(xiàn)提取計(jì)劃書名稱欄的文本為合并后的文件名,并將合并后的RTF文件保存在預(yù)先指定的路徑下。這樣一來,一段復(fù)雜的代碼就可以通過一個(gè)按鈕來實(shí)現(xiàn)其功能,既屏蔽了復(fù)雜的代碼,又可以在界面中更加直觀地展示并能夠?qū)崿F(xiàn)臨床試驗(yàn)中統(tǒng)計(jì)分析計(jì)劃書的自動(dòng)化輸出,從而方便實(shí)際工作者的使用。
SAS/AF模塊是面向使用者的軟件界面開發(fā)工具,它利用交互式開發(fā)環(huán)境和一組豐富的面向?qū)ο蟮念?,充分利用SAS/AF應(yīng)用程序的可移植性與SAS軟件其他產(chǎn)品的特點(diǎn)進(jìn)行快速開發(fā)和部署,整個(gè)過程都可以通過具有可視化的框架基礎(chǔ)的方式完成。SAS/AF不是一個(gè)獨(dú)立的模塊,它的性能在與SAS/EIS、SCL等SAS其他模塊間的協(xié)調(diào)上才能真正體現(xiàn)它的優(yōu)勢(shì),具有良好的應(yīng)用前景。當(dāng)然從界面開發(fā)角度看SAS/AF,其模塊本身的性能并不是最好的,存在一些瑕疵,如界面畫面不夠優(yōu)美,但SAS/AF存在于強(qiáng)大的SAS母體下,與SAS無縫連接的優(yōu)勢(shì)則是其他任何軟件無法比擬的。有研究者曾提出基于SAS/AF模塊創(chuàng)建死因數(shù)據(jù)分析工具[5],不過整體來看,國內(nèi)關(guān)于SAS/AF模塊的研究相對(duì)較少,具體的學(xué)習(xí)材料也很少,除了SAS官方的英文材料外,未見中文的學(xué)習(xí)材料。SAS編程的靈活性和專業(yè)性決定了其使用上的難度,所以實(shí)現(xiàn)臨床試驗(yàn)統(tǒng)計(jì)分析計(jì)劃書自動(dòng)化輸出必須創(chuàng)建一個(gè)操作簡(jiǎn)單易懂、參數(shù)配置直觀清晰的軟件包,而必不可少的就是運(yùn)用SAS的宏功能和AF模塊。這兩項(xiàng)技術(shù)的銜接本質(zhì)是對(duì)宏參數(shù)的配置和傳遞,將復(fù)雜的程序語言通過可視化模塊進(jìn)行轉(zhuǎn)化[4,6]。不僅能顯示SAS強(qiáng)大的功能,還可以將復(fù)雜的程序在后臺(tái)運(yùn)行,僅通過點(diǎn)擊式操作就能實(shí)現(xiàn)文件的自動(dòng)化輸入輸出的強(qiáng)大功能??梢夾F界面顯著降低了SAS的使用門檻,大大方便了實(shí)際工作者的應(yīng)用。
[1]SAS Institute Inc.Getting Started with SAS/AF and Frames.USA:Cary,NC:SAS Institute Inc,2006,87.
[2]金昊.疫苗臨床試驗(yàn)電子化數(shù)據(jù)管理軟件開發(fā)研究.東南大學(xué),2015,1-76.
[3]陳召青.疫苗臨床試驗(yàn)標(biāo)準(zhǔn)化數(shù)據(jù)庫構(gòu)建及自動(dòng)化盲態(tài)核查軟件開發(fā).東南大學(xué),2014,1-74.
[4]李靖欣,陳炳為,王燦楠,等.SAS/AF及其在開發(fā)中國膳食暴露評(píng)估模型軟件中的應(yīng)用.中國衛(wèi)生統(tǒng)計(jì),2008,25(6):642-644.
[5]王駿,李洪興,王黎君,等.基于用戶層級(jí)的死因監(jiān)測(cè)數(shù)據(jù)分析解決方案.中國衛(wèi)生統(tǒng)計(jì),2012,29(3):369-371.
[6]陳宇術(shù).面向?qū)ο蟮腟AS/AF程序設(shè)計(jì)語言的研究.微機(jī)發(fā)展,2001(4):11-14.
(責(zé)任編輯:郭海強(qiáng))
△通信作者:劉沛,E-mail:liupeiseu@126.com