SAS编程|用药后最严重临床意义判定标识/较基线变化值

6 篇文章 7 订阅

已ADLB为例,临床意义判定独立列出,未纳入BDS结构: 

 1.判断给药前和给药后

        首先判断是给药前还是给药后,一般通过时间的先后就可以判断,代码如下:

data adlb3;
	set adlb2;
	format ADT yymmdd10. ADTM e8601dt16.;	
 	ADTMC=catx("T",LBDAT,LBTIM);   *分析日期;
	ADT=input(LBDAT,yymmdd10.);
	if length(ADTMC)>10 then ADTM=input(ADTMC,e8601dt16.);
	if .<ADTM<=TR01SDTM or (missing(ADTM) and ADT<=datepart(TR01SDTM)) then flag=1;     *给药前;
	if ADTM>TR01SDTM>. or (missing(ADTM) and ADT>datepart(TR01SDTM)) then flag1=1;	    *给药后;
proc sort;
	by USUBJID PARAMN flag ADTMC VISITNUM;
run;

         LBDAT变量为分析日期的年月日,LBTIM变量为分析日期的小时分钟,TR01SDTM变量为首次用药时间。时间这样处理,是因为有部分分析日期只有年月日缺少小时分钟,所以将它们分开处理并比较,得到更准确的给药前和给药后。如果只有年月日可将条件缩写。

2.取基线标识

*基线标识;
data adlb4;
	set adlb3;
	by USUBJID PARAMN flag ADTMC VISITNUM;
	if last.PARAMN and flag=1 then ABLFL="Y";    *一般取给药前最后一条观测值作为基线;
run;

 3.用药后最严重临床意义判定标识

*用药后最严重临床意义判定标识;
proc sql;
	create table adlb5 as
	select a.*
		 ,b.AVAL as BASE
		 ,c._max
	from adlb4 a
	left join adlb4(where=(ABLFL="Y")) b
		on a.USUBJID=b.USUBJID and a.PARAMN=b.PARAMN
	left join (select distinct USUBJID, PARAMN, max(ACLSIGN) as _max 
	from adlb4(where=(flag1=1)) group by USUBJID, PARAMN) c
		on a.USUBJID=c.USUBJID and a.PARAMN=c.PARAMN
	order by USUBJID, PARAMN, ADTMC, VISITNUM
	;
quit;

        取满足基线标识的值作为基线值,并重命名变量为BASE,其中select distinct 用来剔除查询结果中的重复观测。

4.计算较基线变化值

data adlb6;
    set adlb5;
	if cmiss(AVAL,BASE)=0 then do;
	if flag1=1 or ABLFL="Y" then CHG=AVAL-BASE;end;
	if flag1=1 and ACLSIGN=_max>. then WORSTFL="Y";
run;

已ADEG为例,临床意义判定被纳入BDS结构,PARAMN=6:

3.用药后最严重临床意义判定标识

proc sql;
	create table adeg4 as
	select a.*
		, a1.AVAL as BASE
		, _max
	from adeg3 a
	left join adeg3(where=(ABLFL="Y")) a1
		on a.USUBJID=a1.USUBJID and a.PARAMN=a1.PARAMN
	left join (select distinct USUBJID, PARAMN, max(AVAL) as _max 
	from adeg3(where=(flag1=1 and PARAMN=6)) group by USUBJID, PARAMN) b
		on a.USUBJID=b.USUBJID and a.PARAMN=b.PARAMN
	order by USUBJID, PARAMN, ADTMC
	;
quit;

data adeg5;
    set adeg4;
	if flag1=1 or ABLFL="Y" then CHG=AVAL-BASE;
	if PARAMN=6 and flag1=1 and AVAL=_max>. then WORSTFL="Y";
	if PARAMN=6 then call missing(BASE,CHG);
run;

        最后操作当PARAMN=6时,置空基线值和较基线变化值。

已ADPE为例,临床意义判定直接作为AVAL值,无较基线变化值:

3.用药后最严重临床意义判定标识

proc sql;
	create table adpe3 as
	select a.*
		   ,b._max
	from adpe2(where=(not missing(AVALC))) a
	left join (select distinct USUBJID, PARAMN, max(AVAL) as _max 
	from adpe2(where=(flag1=1)) group by USUBJID, PARAMN) b
		on a.USUBJID=b.USUBJID and a.PARAMN=b.PARAMN
	order by USUBJID, PARAMN, ADTMC
	;
quit;

data adpe4;
    set adpe3;
	if flag1=1 and AVAL=_max>. then WORSTFL='Y'; 
run;

        能得出一些很明显的总结:1.用药后最严重临床意义判定标识,顾名思义是只跟在临床意义判定之后的标识,所以在ADEG的例子中取最大值时不仅限定了用药后,还限定了PARAMN=6,PARAMN=6时的AVAL值是临床意义判定的值。2.临床意义判定不计算较基线变化值,所以最后置空了基线值和较基线变化值,其余数值结果计算变化值。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值