血藥濃度-時(shí)間曲線圖(藥時(shí)曲線)是藥物被給予機(jī)體后,以時(shí)間為橫坐標(biāo),藥物(及其代謝物)在血液中的濃度為縱坐標(biāo)所繪制的血藥濃度隨時(shí)間變化的曲線。
藥時(shí)曲線能反映體內(nèi)藥物濃度的經(jīng)時(shí)變化過程。為設(shè)計(jì)采血點(diǎn)、給藥方案提供依據(jù)。因此繪制藥時(shí)曲線是藥代動(dòng)力學(xué)分析中的一個(gè)重要部分。
根據(jù)CDE頒布的《藥物臨床試驗(yàn)數(shù)據(jù)遞交指導(dǎo)原則(試行)》中指出申報(bào)資料中的數(shù)據(jù)集通常采用SAS數(shù)據(jù)傳輸格式(SAS Transport Format,簡(jiǎn)稱XPT),由此可見SAS軟件在藥品臨床試驗(yàn)數(shù)據(jù)分析中是必不可缺。
其中SAS Graph Template Language (GTL)是繪制復(fù)雜圖形的強(qiáng)大工具。本文將使用SAS編程呈現(xiàn)幾種不同的藥時(shí)曲線樣式,探索如何繪制更協(xié)調(diào)更直觀的圖形,供大家共同學(xué)習(xí)討論!
基于GTL的圖形由控制圖形格式和外觀,并指定變量角色的模板定義生成。圖形是通過關(guān)聯(lián)模板與數(shù)據(jù)源來(lái)呈現(xiàn)。
使用GTL創(chuàng)建一個(gè)圖形的基本步驟
1. 使用template過程定義STATGRAPH模板
2. 使用圖形模板語(yǔ)言來(lái)指定圖形的參數(shù)
proc template;
define statgraph tmp1;
/*利用dynamic將template中的變量、標(biāo)簽等內(nèi)容開放出來(lái),便于修改dynamic的值來(lái)控制輸出,重復(fù)使用*/
dynamic XAXISLABEL YVAR XVAR GRPVAR LENGEDTITLE TICKMIN TICKMAX;
begingraph;
[自定義的圖形模板]
endgraph;
end;
run;
3. 通過使用SGRENDER過程將數(shù)據(jù)與模板關(guān)聯(lián)
proc sgrender data=[數(shù)據(jù)源] template=[GTL模板];
/*不同表僅修改dynamic即可*/
dynamic XAXISLABEL='Time(h)' YVAR='Mean' XVAR='ATPTN' LENGEDTITLE='劑量組:'
GRPVAR='ARMCD' TICKMIN='0.5' TICKMAX='13';
run;
GTL最強(qiáng)大的特性之一是圍繞著分層語(yǔ)句塊(即:Layout布局)構(gòu)建的語(yǔ)法,常用布局:
1. OVERLAY : 用于在單個(gè)單元格中顯示二維繪圖的通用布局
2. GRIDDED : 網(wǎng)格圖形,所有單元格獨(dú)立
3. LATTICE : 升級(jí)版多單元格布局。坐標(biāo)軸可以跨列或行共享,并且位于網(wǎng)格外部
通過兩個(gè)例子來(lái)初步認(rèn)識(shí)一下布局的魅力
proc template;
define statgraph Simple_Layout;
begingraph;
entrytitle 'Simple Layout';
layout lattice / columns=2 columngutter=5;
layout overlay / walldisplay=(outline) xaxisopts=(display=none) yaxisopts=(display=none);
scatterplot x=weight y=systolic / markerattrs=(size=0);
entry halign=center textattrs=(size=20) "1" / valign=center;
endlayout;
layout overlay / walldisplay=(outline) xaxisopts=(display=none) yaxisopts=(display=none);
scatterplot x=weight y=diastolic / markerattrs=(size=0);
entry halign=center textattrs=(size=20) "2" / valign=center;
endlayout;
endlayout;
endgraph;
end;
run;
proc sgrender data=sashelp.heart template=Simple_Layout;
run;

proc template;
define statgraph Complex_Layout;
begingraph;
layout lattice / columns=2 columnweights=(.6 .4) columngutter=5;
layout lattice / rows=4 rowweights=(.25 .2 .2 .35) rowgutter=5;
layout lattice / columns=2 rowweights=(.6 .4) columngutter=5;
layout overlay / walldisplay=(outline) xaxisopts=(display=none) yaxisopts=(display=none);
scatterplot x=height y=weight / markerattrs=(size=0);
entry halign=center textattrs=(size=20) "1" / valign=center;
endlayout;
layout overlay / walldisplay=(outline) xaxisopts=(display=none) yaxisopts=(display=none);
scatterplot x=height y=weight / markerattrs=(size=0);
entry halign=center textattrs=(size=20) "2" / valign=center;
endlayout;
endlayout;
layout overlay / walldisplay=(outline) xaxisopts=(display=none) yaxisopts=(display=none);
scatterplot x=height y=weight / markerattrs=(size=0);
entry halign=center textattrs=(size=20) "3" / valign=center;
endlayout;
layout overlay / walldisplay=(outline) xaxisopts=(display=none) yaxisopts=(display=none);
scatterplot x=height y=weight / markerattrs=(size=0);
entry halign=center textattrs=(size=20) "4" / valign=center;
endlayout;
layout lattice / columns=2 rowweights=(.6 .4) columngutter=5;
layout overlay / walldisplay=(outline) xaxisopts=(display=none) yaxisopts=(display=none);
scatterplot x=height y=weight / markerattrs=(size=0);
entry halign=center textattrs=(size=20) "5" / valign=center;
endlayout;
layout overlay / walldisplay=(outline) xaxisopts=(display=none) yaxisopts=(display=none);
scatterplot x=height y=weight / markerattrs=(size=0);
entry halign=center textattrs=(size=20) "6" / valign=center;
endlayout;
endlayout;
endlayout;
layout overlay / walldisplay=(outline) xaxisopts=(display=none) yaxisopts=(display=none);
scatterplot x=height y=weight / markerattrs=(size=0);
entry halign=center textattrs=(size=20) "7" / valign=center;
endlayout;
endlayout;
endgraph;
end;
run;
ods graphics / reset width=5in height=5in imagename='Complex_Layout';
proc sgrender data=sashelp.class template=Complex_Layout;
run;
準(zhǔn)備一份不同采血點(diǎn)的血藥濃度Mean±SD的模擬數(shù)據(jù):
data test;
input ARMCD $10. ATPTN Mean Meanlow Meanhig;
datalines;
劑量組1 1 212.5 206.1 218.9
劑量組1 2 141.9 66.8 217.0
劑量組1 3 118.7 50.4 187.0
劑量組1 4 87.4 41.3 133.5
劑量組1 6 58.4 26.9 89.8
劑量組1 8 40.7 15.7 65.6
劑量組1 12 19.9 7.9 31.9
劑量組2 1 87.7 23.5 151.8
劑量組2 2 135.3 135.3 290.5
劑量組2 3 126.4 126.4 282.8
劑量組2 4 113.3 113.3 250.1
劑量組2 6 81.9 81.9 175.4
劑量組2 8 72.0 4.1 139.9
劑量組2 12 45.5 16.5 74.4
劑量組3 1 355.5 83.3 627.7
劑量組3 2 290.5 107.4 473.6
劑量組3 3 303.0 206.8 399.2
劑量組3 4 217.0 163.3 270.7
劑量組3 6 166.0 110.8 221.2
劑量組3 8 129.5 92.0 167.0
劑量組3 12 84.4 53.7 115.0
;
run;
藥時(shí)曲線的血藥濃度所對(duì)應(yīng)的坐標(biāo)軸通常采用線性和半對(duì)數(shù)兩種不同方式呈現(xiàn)。
1. 使用lattice作為最外層布局
2. 內(nèi)嵌兩個(gè)overlay作為基礎(chǔ)單元格布局,分別容納線性藥時(shí)曲線和半對(duì)數(shù)藥時(shí)曲線
proc template;
define statgraph tmp1;
dynamic XAXISLABEL YVAR XVAR GRPVAR LENGEDTITLE TICKMIN TICKMAX;
begingraph;
layout lattice / columns=2 rows=1;
column2headers;
entry "線性藥時(shí)曲線";
entry "半對(duì)數(shù)藥時(shí)曲線";
endcolumn2headers;
layout overlay/
xaxisopts=(label=XAXISLABEL offsetmin=0 offsetmax=0
linearopts=(tickvaluelist=(0 1 2 3 4 6 7 8 12) viewmin=TICKMIN viewmax=TICKMAX TICKVALUEFITPOLICY=ROTATE)
tickvalueattrs=(size=7pt) labelattrs=(size=7pt))
yaxisopts=(label="Concentration (ng/mL)") walldisplay=none ;
seriesplot y=YVAR x=XVAR / group=GRPVAR name="stocks1";
scatterplot y=YVAR x=XVAR / group=GRPVAR name="stocks2"
YERRORLOWER=meanlow YERRORUPPER=meanhig markerattrs=(symbol=squarefilled size=8) ;
mergedlegend "stocks1" "stocks2" /title=LENGEDTITLE border=true across=4 DISPLAYCLIPPED=TRUE;
endlayout;
layout overlay/
xaxisopts=(label=XAXISLABEL offsetmin=0 offsetmax=0
linearopts=(tickvaluelist=(0 1 2 3 4 6 7 8 12) viewmin=TICKMIN viewmax=TICKMAX TICKVALUEFITPOLICY=ROTATE)
tickvalueattrs=(size=7pt) labelattrs=(size=7pt))
yaxisopts=(label="Concentration (ng/mL)" TYPE=LOG LOGOPTS=(base=10)) walldisplay=none ;
seriesplot y=YVAR x=XVAR / group=GRPVAR name="stocks3";
scatterplot y=YVAR x=XVAR / group=GRPVAR name="stocks4"
YERRORLOWER=meanlow2 YERRORUPPER=meanhig markerattrs=(symbol=squarefilled size=8) ;
mergedlegend "stocks3" "stocks4"/title=LENGEDTITLE /*border=true*/ across=4 DISPLAYCLIPPED=TRUE;
endlayout;
endlayout;
endgraph;
end;
run;
proc sgrender data=test template=tmp1;
dynamic XAXISLABEL='Time(h)' YVAR='Mean' XVAR='ATPTN' LENGEDTITLE='劑量組:' GRPVAR='ARMCD' TICKMIN='0.5' TICKMAX='13';
run;
將線性藥時(shí)曲線和半對(duì)數(shù)曲線直接橫向排列起來(lái)是最簡(jiǎn)單省力的方法,同時(shí)也有一些缺點(diǎn),如:
? 圖例重復(fù)
? 圖形中大面積空白,缺少層次
藥時(shí)曲線的消除相部分有大量空白,嘗試將半對(duì)數(shù)藥時(shí)曲線縮小填充到空白部分,提高圖形層次感。
1. 使用overlay作為最外層布局,容納線性藥時(shí)曲線
2. 內(nèi)嵌gridded作為獨(dú)立的單元格布局,嵌入半對(duì)數(shù)藥時(shí)曲線
解決了
? 圖例重復(fù)
? 圖形合并
但不同分組標(biāo)記形狀一致,僅以顏色來(lái)區(qū)分的效果較差。
proc template;
define statgraph tmp2;
dynamic XAXISLABEL YVAR XVAR GRPVAR LENGEDTITLE TICKMIN TICKMAX;
begingraph;
layout overlay/
xaxisopts=(label=XAXISLABEL offsetmin=0 offsetmax=0
linearopts=(tickvaluelist=(1 2 3 4 6 7 8 12) viewmin=TICKMIN viewmax=TICKMAX TICKVALUEFITPOLICY=ROTATE)
tickvalueattrs=(size=7pt) labelattrs=(size=7pt))
yaxisopts=(label="Concentration (ng/mL)" TYPE=LINEAR) ;
seriesplot y=YVAR x=XVAR / group=GRPVAR name="scatter";
scatterplot y=YVAR x=XVAR / group=GRPVAR name="scatter2"
YERRORLOWER=meanlow YERRORUPPER=meanhig ;
layout gridded / width=300px height=200px halign=right valign=top;
layout overlay/
xaxisopts=(label=XAXISLABEL offsetmin=0 offsetmax=0
linearopts=(tickvaluelist=(1 2 3 4 6 7 8 12) viewmin=TICKMIN viewmax=TICKMAX TICKVALUEFITPOLICY=ROTATE)
tickvalueattrs=(size=7pt) labelattrs=(size=7pt))
yaxisopts=(label="Concentration (ng/mL)" TYPE=LOG
LOGOPTS=(base=10 tickvaluelist=(1 10 100 1000) viewmin=0 viewmax=1000));
seriesplot y=YVAR x=XVAR / group=GRPVAR;
scatterplot y=YVAR x=XVAR / group=GRPVAR
YERRORLOWER=meanlow YERRORUPPER=meanhig ;
endlayout;
endlayout;
mergedlegend "scatter" "scatter2"/title=LENGEDTITLE across=4 DISPLAYCLIPPED=TRUE;
endlayout;
endgraph;
end;
run;
proc sgrender data=test template=tmp2 ;
dynamic XAXISLABEL='Time(h)' YVAR='Mean' XVAR='ATPTN' LENGEDTITLE='劑量組:' GRPVAR='ARMCD' TICKMIN='0.5' TICKMAX='13';
run;

1. 添加discreteattrmap塊,設(shè)置不同分組的顯示屬性,讓區(qū)分更具辨識(shí)度
discreteattrmap name="symbols" / ignorecase=true;
value "XXX" / markerattrs=() lineattrs=() TEXTATTRS=();
enddiscreteattrmap;
discreteattrvar attrvar=groupmarkers var=[分組變量] attrmap="symbols";
2. 在半對(duì)數(shù)藥時(shí)曲線中使用entry語(yǔ)句添加類似水印效果的文字
entry "LOG SCALE" /valign=bottom TEXTATTRS=(COLOR=CXDCDCDC SIZE=15 WEIGHT=BOLD);
proc template;
define statgraph tmp3;
dynamic XAXISLABEL YVAR XVAR GRPVAR LENGEDTITLE TICKMIN TICKMAX;
begingraph;
discreteattrmap name="symbols" / ignorecase=true;
value "劑量組1" / markerattrs=(symbol=triangleFilled color=blue size=9 transparency = 0.6) lineattrs=(color=blue THICKNESS=0.5 PATTERN=4) TEXTATTRS=(size = 11pt family='Times New Roman');
value "劑量組2" / markerattrs=(symbol=circleFilled color=green size=9 transparency = 0.6) lineattrs=(color=green THICKNESS=0.5 PATTERN=4) ;
value "劑量組3" / markerattrs=(symbol=squareFilled color=firebrick size=9 transparency = 0.6) lineattrs=(color=firebrick THICKNESS=0.5 PATTERN=4);
enddiscreteattrmap;
discreteattrvar attrvar=groupmarkers var=GRPVAR attrmap="symbols";
layout overlay/
xaxisopts=(label=XAXISLABEL offsetmin=0 offsetmax=0
linearopts=(tickvaluelist=(1 2 3 4 6 7 8 12) viewmin=TICKMIN viewmax=TICKMAX TICKVALUEFITPOLICY=ROTATE)
tickvalueattrs=(size=7pt) labelattrs=(size=7pt))
yaxisopts=(label="Concentration (ng/mL)" TYPE=LINEAR) ;
seriesplot y=YVAR x=XVAR / group=groupmarkers name="scatter";
scatterplot y=YVAR x=XVAR / group=groupmarkers name="scatter2"
YERRORLOWER=meanlow YERRORUPPER=meanhig ERRORBARATTRS=(THICKNESS=0.5 PATTERN=4);
layout gridded / width=300px height=200px halign=right valign=top;
layout overlay/
xaxisopts=(label=XAXISLABEL offsetmin=0 offsetmax=0
linearopts=(tickvaluelist=(1 2 3 4 6 7 8 12) viewmin=TICKMIN viewmax=TICKMAX TICKVALUEFITPOLICY=ROTATE)
tickvalueattrs=(size=7pt) labelattrs=(size=7pt))
yaxisopts=(label="Concentration (ng/mL)" TYPE=LOG
LOGOPTS=(base=10 tickvaluelist=(1 10 100 1000) viewmin=0 viewmax=1000));
entry "LOG SCALE" /valign=bottom TEXTATTRS=(COLOR=CXDCDCDC SIZE=15 WEIGHT=BOLD);
seriesplot y=YVAR x=XVAR / group=groupmarkers;
scatterplot y=YVAR x=XVAR / group=groupmarkers
YERRORLOWER=meanlow YERRORUPPER=meanhig ERRORBARATTRS=(THICKNESS=0.5 PATTERN=4);
endlayout;
endlayout;
mergedlegend "scatter" "scatter2"/title=LENGEDTITLE across=4 DISPLAYCLIPPED=TRUE;
endlayout;
endgraph;
end;
run;
proc sgrender data=test template=tmp3 ;
dynamic XAXISLABEL='Time(h)' YVAR='Mean' XVAR='ATPTN' LENGEDTITLE='劑量組:' GRPVAR='ARMCD' TICKMIN='0.5' TICKMAX='13';
run;
當(dāng)前期采血點(diǎn)較為密集導(dǎo)致不同分組的結(jié)果不易辨別時(shí),可以將部分時(shí)間截取出來(lái)放在曲線右上方來(lái)增加區(qū)分度。
/*===========數(shù)據(jù)準(zhǔn)備=========*/
data test2;
input ARMCD $10. ATPTN Mean Meanlow Meanhig;
datalines;
劑量組1 1 287.1 41.24 532.96
劑量組1 2 343.1 153.44 532.76
劑量組1 3 320.4 175.59 465.21
劑量組1 4 295.9 156.72 435.08
劑量組1 5 268.3 140.22 396.38
劑量組1 6 252.7 136.16 369.24
劑量組1 8 212 114.716 309.284
劑量組1 10 182.1 93.099 271.101
劑量組1 24 84.3 36.133 132.467
劑量組1 48 22.18 8.709 35.651
劑量組1 72 6.207 0.332 12.082
劑量組1 96 0.589 0.589 2.4516
劑量組2 1 388.3 166.36 610.24
劑量組2 2 655.6 390.45 920.75
劑量組2 3 647.4 350.52 944.28
劑量組2 4 608 289.94 926.06
劑量組2 5 548.1 246.31 849.89
劑量組2 6 502.7 222.03 783.37
劑量組2 8 407.7 161.17 654.23
劑量組2 10 346.7 152.92 540.48
劑量組2 24 172.9 76.032 269.768
劑量組2 48 47.56 13.489 81.631
劑量組2 72 13.48 1.219 25.741
劑量組2 96 2.37 2.37 6.5262
劑量組3 1 628.6 355.7 901.5
劑量組3 2 1047 539.45 1554.55
劑量組3 3 1060 585.8 1534.2
劑量組3 4 1008 536.09 1479.91
劑量組3 5 961.7 464.03 1459.37
劑量組3 6 891.4 409.51 1373.29
劑量組3 8 780.2 303.3 1257.1
劑量組3 10 643.9 240.93 1046.87
劑量組3 24 246.6 121.04 372.16
劑量組3 48 60.28 22.872 97.688
劑量組3 72 16.89 3.892 29.888
劑量組3 96 4.387 4.387 9.7029
劑量組4 1 457.3 272.71 641.89
劑量組4 2 924.5 735.7 1113.3
劑量組4 3 1283 818.99 1747.01
劑量組4 4 1550 329.8 2770.2
劑量組4 5 1435 331.3 2538.7
劑量組4 6 1353 365.57 2340.43
劑量組4 8 1101 333.82 1868.18
劑量組4 10 939.3 225.16 1653.44
劑量組4 24 404.8 75.29 734.31
劑量組4 48 103 25.219 180.781
劑量組4 72 24.52 9.958 39.082
劑量組4 96 6.153 1.6598 10.6462
劑量組5 1 1826 370.3 3281.7
劑量組5 2 2700 414.9 4985.1
劑量組5 3 2953 500.4 5405.6
劑量組5 4 2880 733.5 5026.5
劑量組5 5 2593 632.6 4553.4
劑量組5 6 2200 642.6 3757.4
劑量組5 8 1941 488.8 3393.2
劑量組5 10 1896 547.8 3244.2
劑量組5 24 1095 162.49 2027.51
劑量組5 48 421.4 100.4 742.4
劑量組5 72 145 16.36 273.64
劑量組5 96 69.63 9.012 130.248
;
run;
/*調(diào)整數(shù)據(jù)集*/
data test3;
merge test2 test2(where=(ATPTN le 10) rename=(Mean=Mean2 Meanlow=Meanlow2 Meanhig=Meanhig2));
by ARMCD ATPTN;
run;
proc template;
define statgraph tmp4;
dynamic XAXISLABEL YVAR XVAR GRPVAR LENGEDTITLE TICKMIN TICKMAX TICKMAX2;
begingraph;
discreteattrmap name="symbols" / ignorecase=true;
value "劑量組1" / markerattrs=(symbol=triangleFilled color=blue size=9 transparency = 0.6) lineattrs=(color=blue THICKNESS=0.5 PATTERN=4) TEXTATTRS=(size = 11pt family='Times New Roman');
value "劑量組2" / markerattrs=(symbol=circleFilled color=green size=9 transparency = 0.6) lineattrs=(color=green THICKNESS=0.5 PATTERN=4) ;
value "劑量組3" / markerattrs=(symbol=squareFilled color=firebrick size=9 transparency = 0.6) lineattrs=(color=firebrick THICKNESS=0.5 PATTERN=4);
value "劑量組4" / markerattrs=(symbol=HomeDownFilled color=Purple size=9 transparency = 0.6) lineattrs=(color=Purple THICKNESS=0.5 PATTERN=4);
value "劑量組5" / markerattrs=(symbol=StarFilled color=Orange size=9 transparency = 0.6) lineattrs=(color=Orange THICKNESS=0.5 PATTERN=4);
enddiscreteattrmap;
discreteattrvar attrvar=groupmarkers var=GRPVAR attrmap="symbols";
layout overlay/
xaxisopts=(label=XAXISLABEL offsetmin=0 offsetmax=0
linearopts=(tickvaluelist=(1 4 8 10 24 48 72 96) viewmin=TICKMIN viewmax=TICKMAX TICKVALUEFITPOLICY=ROTATE)
tickvalueattrs=(size=7pt) labelattrs=(size=7pt))
yaxisopts=(label="Concentration (ng/mL)" TYPE=LINEAR) ;
seriesplot y=YVAR x=XVAR / group=groupmarkers name="scatter";
scatterplot y=YVAR x=XVAR / group=groupmarkers name="scatter2"
YERRORLOWER=meanlow YERRORUPPER=meanhig ERRORBARATTRS=(THICKNESS=0.5 PATTERN=4);
layout gridded / width=400px height=300px halign=right valign=top;
layout overlay/
xaxisopts=(label=XAXISLABEL offsetmin=0 offsetmax=0
linearopts=(tickvaluelist=(1 2 3 4 6 8 10) viewmin=TICKMIN viewmax=TICKMAX2 TICKVALUEFITPOLICY=ROTATE)
tickvalueattrs=(size=7pt) labelattrs=(size=7pt))
yaxisopts=(label="Concentration (ng/mL)" TYPE=LINEAR) ;
seriesplot y=Mean2 x=XVAR / group=groupmarkers ;
scatterplot y=Mean2 x=XVAR / group=groupmarkers
YERRORLOWER=meanlow2 YERRORUPPER=meanhig2 ERRORBARATTRS=(THICKNESS=0.5 PATTERN=4);
endlayout;
endlayout;
mergedlegend "scatter" "scatter2"/title=LENGEDTITLE across=5 DISPLAYCLIPPED=TRUE;
endlayout;
endgraph;
end;
run;
ods graphics on /width=800px height=400px;
proc sgrender data=test3 template=tmp4 ;
dynamic XAXISLABEL='Time(h)' YVAR='Mean' XVAR='ATPTN' LENGEDTITLE='劑量組:' GRPVAR='ARMCD' TICKMIN='0.5' TICKMAX='100' TICKMAX2='12';
run;

GTL語(yǔ)言具有非常豐富的功能,能夠?qū)崿F(xiàn)復(fù)雜的圖形繪制。僅以本文的藥時(shí)曲線為例,其實(shí)在美觀性的提升上仍有較大空間。
了解GTL的原理,熟練掌握l(shuí)ayout的使用,在實(shí)踐中不斷學(xué)習(xí)、積累和探索,才能繪制更美觀更簡(jiǎn)潔的圖形!
熙寧生物|精翰生物已完成臨床藥理服務(wù)平臺(tái)搭建,正式提供PK、PD、ADA、PK/PD等不同類型臨床項(xiàng)目的統(tǒng)計(jì)分析服務(wù)。
其中統(tǒng)計(jì)編程團(tuán)隊(duì)具有豐富的統(tǒng)計(jì)編程經(jīng)驗(yàn),可完成符合CDISC標(biāo)準(zhǔn)的SDTM/ADaM數(shù)據(jù)集及其相關(guān)表格、圖表和列表,與生物分析結(jié)合形成一站式服務(wù),歡迎大家后臺(tái)留言咨詢交流。
[1] 國(guó)家藥品監(jiān)督管理局,藥物臨床試驗(yàn)數(shù)據(jù)遞交指導(dǎo)原則(試行),2020年第16號(hào).