Hi, I am selecting a sample of enrolid from insurance data that has two claims for a set of dx codes, and the claims are at least one month apart. I was thinking of something along the lines of %let dx_list='1234', '1356';
/*First step*/
data flag_dx;
set have;
if (dx1 in &dx_list. or dx2 in &dx_list.) then dx_flag=1;
run;
/*Second step (not sure how to translate this into SAS)*/
data flag_month_apart;
set flag_dx;
if flag=1 and (intck ('month', svc_date, next obs where flag=1)>=1) then do;
month_flag=1; end;
run;
/*Third step (generate list of enrolids with month_flag=1)*/
proc sort data=flag_month_apart nodupkey;
by enrolid; where month_flag=1;
run;
/*Fourth step (inner join w/ final dataset)*/
proc sql;
create table final_patients as
select a.*, b.*
from have as a
flag_month_apart as b
where a.enrolid = b.enrolid;
quit; Not sure if people have a better strategy, and/or have suggestions as to how to translate some of the above into SAS? Thank you! UPDATE: -- example of what I have and want. Have: enrolid dx1 dx2 svcdate 839571 1234 8593 8/11/2010 839571 1234 8593 8/23/2010 839571 1234 8593 9/15/2010 958170 9381 1935 7/25/2012 958170 1234 8311 9/30/2012 553312 8311 1234 7/15/2012 553312 8311 1234 7/21/2012 Want enrolid dx1 dx2 svcdate flag_dx flag_month_apart 839571 1234 8593 8/11/2010 1 . 839571 1234 8593 8/23/2010 1 . 839571 1234 8593 9/15/2010 1 1 Because the other ones don't have two claims for the right dx codes at least one month apart. I want only the enrolids (and all the observations associated with them), as long as the enrolid has two+ qualifying dx codes at least one month apart...
... View more