【发布时间】:2016-09-06 23:07:31
【问题描述】:
嗨,SAS 的人,
我正在使用医院就诊数据进行一些研究项目。我必须确定改变治疗的受试者。
治疗分为局部治疗、非生物系统治疗和生物治疗。切换事件被定义为在最后一次治疗退出时未分配的药物的退出。有一个层次结构,最高的是生物制剂,然后是非生物系统药物,然后是局部药物。
- 如果首先观察到患者撤出局部用药,那么此后任何撤出对生物、非生物全身或新局部治疗的治疗都是一种转换。
- 如果首先观察到患者退出非生物系统,那么在此之后任何撤消对生物或新的非生物系统的治疗都是一种转换。
- 退出任何主题都不是转换。
- 如果首先观察到患者撤回生物,则只能切换到另一个生物(与第一次不同)。
- 任何局部或非生物系统性的退出都不是一个开关。
根据上述逻辑,一旦患者切换到较高级别的治疗,较低级别的治疗将被视为伴随用药,而撤除伴随用药并不表示治疗转换。
简而言之,如果患者从较低级别的治疗转移到较高级别或具有相同级别(不同的 ATC 代码),那么它将被视为转换。
治疗层次
生物制品 > Non_Bio_Sys >局部
我正在添加示例数据集以供参考,其中包含可变信息:
LPNR: unique subjID
EDATUM: prescrition date ( treatment recieved date)
ATC_CODE: codes for each of treament type
'D05AX52',
'D05AX02' = PSorasis(Topical) ;
'L01XC02',
'L04AA24',
'L04AB01',
'L04AB02',
'L04AB04',
'L04AB05',
'L04AB06',
'L04AC03',
'L04AC07' = Non_Bio_systemic ;
'A11CC03',
'D05BB02',
'L01BA01',
'L01BB03',
'L01XX05',
'L04AA21',
'L04AD01',
'L04AX03' = Biologics ;
TYPE: Treatment type
样本数据:
data have;
length TYPE $20.;
input pnr ATC_CODE $ type $ EDATUM $ 10. ;
date=input(edatum,mmddyy10.);
format date mmddyy10.;
cards;
478 L04AX03 Nonbiologic_systemic 2/10/2010
478 D05AX52 Psoriasis 2/23/2010
478 L04AX03 Nonbiologic_systemic 3/5/2010
478 L04AX03 Nonbiologic_systemic 5/18/2010
478 L04AX03 Nonbiologic_systemic 8/2/2010
478 L04AX03 Nonbiologic_systemic 11/3/2010
478 L04AX03 Nonbiologic_systemic 2/7/2011
478 L04AX03 Nonbiologic_systemic 8/16/2011
478 L04AX03 Nonbiologic_systemic 11/22/2011
603 D05AX02 Psoriasis 8/24/2005
603 D05AX02 Psoriasis 10/13/2005
603 D05AX02 Psoriasis 6/2/2006
603 D05AX02 Psoriasis 7/19/2006
603 D05AX02 Psoriasis 4/3/2007
603 D05AX02 Psoriasis 12/7/2007
603 D05AX02 Psoriasis 1/4/2008
603 D05AX02 Psoriasis 1/4/2008
603 D05AX02 Psoriasis 10/2/2008
603 D05AX52 Psoriasis 3/16/2009
603 D05AX52 Psoriasis 3/16/2009
603 D05AX52 Psoriasis 5/7/2009
603 D05AX52 Psoriasis 8/21/2009
603 D05AX52 Psoriasis 11/9/2009
603 D05AX52 Psoriasis 3/19/2010
603 D05AX52 Psoriasis 7/30/2010
603 D05AX52 Psoriasis 7/30/2010
603 D05AX52 Psoriasis 1/13/2011
603 D05AX52 Psoriasis 5/3/2011
603 D05AX52 Psoriasis 12/12/2011
1103 L04AX03 Nonbiologic_systemic 1/17/2006
1103 L04AX03 Nonbiologic_systemic 8/23/2006
1103 L04AX03 Nonbiologic_systemic 11/9/2006
1103 D05AX52 Psoriasis 4/19/2007
1103 L04AX03 Nonbiologic_systemic 4/19/2007
1103 D05AX52 Psoriasis 10/26/2007
1103 D05AX52 Psoriasis 4/1/2008
1103 L04AX03 Nonbiologic_systemic 10/20/2008
1103 D05AX52 Psoriasis 10/20/2008
1103 L04AX03 Nonbiologic_systemic 4/7/2009
1103 L04AX03 Nonbiologic_systemic 11/20/2009
1103 L04AX03 Nonbiologic_systemic 11/12/2010
1103 L04AX03 Nonbiologic_systemic 8/12/2011
1103 D05AX52 Psoriasis 10/22/2011
1103 D05AX52 Psoriasis 12/29/2011
;
我尝试过的解决方案:
proc sort data=have;
by pnr date;
run;
/* Identifying the number of subjects who had treatment switch */
data need;
set have;
length change $ 10.;
by pnr;
/* Create new variable change and keep constant if it is topical for first observation */
/* Compare topical values with next values if it changes to other non bio or bio then switched */
if first.pnr and atc_code in ( 'D05AX52','D05AX02') then change="";
else if not first.pnr and atc_code not in('D05AX52','D05AX02','L01XC02','L04AA24','L04AB01',
'L04AB02','L04AB04','L04AB05','L04AB06','L04AC03',
'L04AC07','A11CC03','D05BB02','L01BA01','L01BB03',
'L01XX05' ,'L04AA21' ,'L04AD01' ,'L04AX03') then change='switched';
/* Compare non bio values with next values if it changes to other non bio or bio then switched*/
if first.pnr and atc_code in ('L01XC02','L04AA24','L04AB01','L04AB02','L04AB04',
'L04AB05','L04AB06','L04AC03','L04AC07') then change="";
else if not first.pnr and atc_code not in( 'D05AX52','D05AX02') and
atc_code in('L01XC02','L04AA24','L04AB01','L04AB02','L04AB04','L04AB05',
'L04AB06','L04AC03','L04AC07','A11CC03','D05BB02','L01BA01',
'L01BB03' ,'L01XX05' ,'L04AA21' ,'L04AD01' ,'L04AX03') then change='switched';
/* Compare bio with next values if it changes to other bio then switched */
if first.pnr and atc_code in('A11CC03','D05BB02','L01BA01','L01BB03' ,'L01XX05' ,
'L04AA21' ,'L04AD01' ,'L04AX03') then change='';
else if not first.pnr and atc_code not in('D05AX52','D05AX02') and
atc_code in('A11CC03','D05BB02','L01BA01','L01BB03' ,'L01XX05',
'L04AA21' ,'L04AD01' ,'L04AX03') then change='switched';
if atc_code=lag(atc_code) then change="";
run;
我期望的结果
pnr ATC_CODE TYPE EDATUM Flag_switch
478 L04AX03 Nonbiologic_systemic 2/10/2010
478 D05AX52 Psoriasis 2/23/2010
478 L04AX03 Nonbiologic_systemic 5/18/2010 switch
478 L04AX03 Nonbiologic_systemic 8/2/2010
478 L04AX03 Nonbiologic_systemic 11/3/2010
478 L04AX03 Nonbiologic_systemic 2/7/2011
478 L04AX03 Nonbiologic_systemic 8/16/2011
478 L04AX03 Nonbiologic_systemic 11/22/2011
603 D05AX02 Psoriasis 8/24/2005
603 D05AX02 Psoriasis 10/13/2005
603 D05AX02 Psoriasis 6/2/2006
603 D05AX02 Psoriasis 7/19/2006
603 D05AX02 Psoriasis 4/3/2007
603 D05AX02 Psoriasis 12/7/2007
603 D05AX02 Psoriasis 1/4/2008
603 D05AX02 Psoriasis 10/2/2008
603 D05AX52 Psoriasis 3/16/2009 switch
603 D05AX52 Psoriasis 5/7/2009
603 D05AX52 Psoriasis 8/21/2009
603 D05AX52 Psoriasis 11/9/2009
603 D05AX52 Psoriasis 3/19/2010
603 D05AX52 Psoriasis 7/30/2010
603 D05AX52 Psoriasis 1/13/2011
603 D05AX52 Psoriasis 5/3/2011
603 D05AX52 Psoriasis 12/12/2011
1103 L04AX03 Nonbiologic_systemic 1/17/2006
1103 L04AX03 Nonbiologic_systemic 8/23/2006
1103 L04AX03 Nonbiologic_systemic 11/9/2006
1103 L04AX03 Nonbiologic_systemic 4/19/2007
1103 D05AX52 Psoriasis 10/26/2007
1103 D05AX52 Psoriasis 4/1/2008
1103 L04AX03 Nonbiologic_systemic 10/20/2008 switch
1103 D05AX52 Psoriasis 10/20/2008
1103 L04AX03 Nonbiologic_systemic 4/7/2009 switch
1103 L04AX03 Nonbiologic_systemic 11/20/2009
1103 L04AX03 Nonbiologic_systemic 11/12/2010
1103 L04AX03 Nonbiologic_systemic 8/12/2011
1103 D05AX52 Psoriasis 10/22/2011
1103 D05AX52 Psoriasis 12/29/2011
【问题讨论】:
-
请重新格式化您的问题,使其不全部使用代码块。
-
@Reeza。我重新格式化了这个问题。感谢您的帮助。
-
问题仍然不可读...请验证我的格式是否正确。
-
@Dominic 嗨,感谢您的快速回复。很抱歉解释不清楚,但我的意思是:正如您看到的数据,我们在 TYPE 变量中有三种处理类型。现在对于每个类型变量,我们都有不同的 ATC_CODE。我需要识别事件(SWITCH),只要受试者在治疗期间将其治疗类型从较低治疗类型(即局部)更改为较高治疗组(即 Non_bio_sys 或 Biologics)。 Non_sys_Bio 也是如此,如果 Subject 更改为 Biologics,那么它也将被视为 Switch。
-
连续事件也将被计算在内,只要受试者在其治疗类型中更改其 ATC_CODE,即以防万一,当治疗类型为“银屑病”并且其 ATC_CODE 发生变化时,我们必须识别它作为开关。其他治疗组也是如此。治疗顺序:BIOLOGICS> NON_BIO_SYS> TOPICAL。希望我能消除你的疑虑。请帮忙。谢谢
标签: sas