<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Concomitant drug / medication use in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Concomitant-drug-medication-use/m-p/339879#M77587</link>
    <description>&lt;P&gt;I think I can handle all cases with :&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input ID	DRUG $	START_DT :mmddyy.	DAYS_SUPP	END_DT :mmddyy.;
datalines;;
1	A	2/17/10	30	3/19/10
1	B	5/6/09	30	6/5/09
1	C	7/9/11	60	9/7/11
1	E	3/1/10	90	5/30/10
1	B	1/1/09	90	4/1/09
1	D	2/1/09	30	3/3/09
1	C	5/6/12	90	8/4/12
2	B	4/1/12	60	5/31/12
2	A	7/1/10	30	7/31/10
2	C	8/3/10	90	11/1/10
2	D	11/1/13	90	1/30/14
2	E	12/5/13	90	3/5/14
2	A	2/1/11	90	5/2/11
2   F   12/16/13 30 1/14/14
;

data days;
set have;
dum = 1;
do day = start_dt to end_dt;
    output;
    end;
format day yymmdd10.;
keep id drug day;
run;

proc sort data=days; by id day drug; run;

data dayTable;
array d{32} $10;
length drugList $64;
do n = 1 by 1 until(last.day);
    set days; by id day;
    d{n} = drug;
    end;
do nDrugs = 2 to n;
    ncomb = comb(n, nDrugs);
    do j = 1 to ncomb;
        rc = lexcomb(j, nDrugs, of d{*});
        call missing(drugList);
        do k = 1 to nDrugs;
            drugList = catx("-", drugList, d{k});
            end;
        output;
        end;
    end;
keep id day nDrugs drugList;
run;

proc sort data=dayTable; by id nDrugs drugList day; run;

data dayTableSeq;
retain seq;
set dayTable; by id nDrugs drugList;
if first.drugList or day-1 ne lag(day) then seq+1;
run;

data want;
length id nDrugs 8 drugList $64 duration startDate endDate 8;
retain startDate;
set dayTableSeq; by id nDrugs drugList seq;
if first.seq then startDate = day;
if last.seq then do;
    endDate = day;
    duration = endDate - startDate + 1;
    /*if duration &amp;gt;= 28 then*/ output;
    end;
format startDate endDate yymmdd10.;
keep id nDrugs drugList startDate endDate duration;
run; 

&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;I added a prescription to drug F to generate a 3-drugs case. Note that all sub-combinations are also listed, i.e. if drug combination D-E-F exists then so will combinations D-E, D-F, and E-F with durations equal or longer than the duration of D-E-F.&lt;/P&gt;</description>
    <pubDate>Fri, 10 Mar 2017 04:32:22 GMT</pubDate>
    <dc:creator>PGStats</dc:creator>
    <dc:date>2017-03-10T04:32:22Z</dc:date>
    <item>
      <title>Concomitant drug / medication use</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Concomitant-drug-medication-use/m-p/339848#M77576</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;I am a bit new to SAS and any help with my issue would be of great help.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a dataset organized as below:&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ID&lt;/TD&gt;&lt;TD&gt;DRUG&lt;/TD&gt;&lt;TD&gt;START_DT&lt;/TD&gt;&lt;TD&gt;DAYS_SUPP&lt;/TD&gt;&lt;TD&gt;END_DT&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;2/17/10&lt;/TD&gt;&lt;TD&gt;30&lt;/TD&gt;&lt;TD&gt;3/19/10&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;5/6/09&lt;/TD&gt;&lt;TD&gt;30&lt;/TD&gt;&lt;TD&gt;6/5/09&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;7/9/11&lt;/TD&gt;&lt;TD&gt;60&lt;/TD&gt;&lt;TD&gt;9/7/11&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;E&lt;/TD&gt;&lt;TD&gt;3/1/10&lt;/TD&gt;&lt;TD&gt;90&lt;/TD&gt;&lt;TD&gt;5/30/10&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;1/1/09&lt;/TD&gt;&lt;TD&gt;90&lt;/TD&gt;&lt;TD&gt;4/1/09&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;D&lt;/TD&gt;&lt;TD&gt;2/1/09&lt;/TD&gt;&lt;TD&gt;30&lt;/TD&gt;&lt;TD&gt;3/3/09&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;5/6/12&lt;/TD&gt;&lt;TD&gt;90&lt;/TD&gt;&lt;TD&gt;8/4/12&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;4/1/12&lt;/TD&gt;&lt;TD&gt;60&lt;/TD&gt;&lt;TD&gt;5/31/12&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;7/1/10&lt;/TD&gt;&lt;TD&gt;30&lt;/TD&gt;&lt;TD&gt;7/31/10&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;8/3/10&lt;/TD&gt;&lt;TD&gt;90&lt;/TD&gt;&lt;TD&gt;11/1/10&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;D&lt;/TD&gt;&lt;TD&gt;11/1/13&lt;/TD&gt;&lt;TD&gt;90&lt;/TD&gt;&lt;TD&gt;1/30/14&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;E&lt;/TD&gt;&lt;TD&gt;12/5/13&lt;/TD&gt;&lt;TD&gt;90&lt;/TD&gt;&lt;TD&gt;3/5/14&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;2/1/11&lt;/TD&gt;&lt;TD&gt;90&lt;/TD&gt;&lt;TD&gt;5/2/11&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I would like to identify&amp;nbsp;individuals&amp;nbsp;that are using two or more different drugs&amp;nbsp;at the same time for at least one month. Use of drug A (or B) may begin before (or after) use of drug B (or A); also, duration of drug A can fall completely within the duration of&amp;nbsp;drug B (and vice versa).&lt;/P&gt;&lt;P&gt;If possible, I would also like to keep track of the different types of drug combinations (e.g. AB, CD, ABCE etc).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If a person has used two or more drugs concurrently for at least one month, I would then like to capture that first date when this criteria is met (to merge with another type of dataset).&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any help is much appreciated!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you very much!&lt;/P&gt;</description>
      <pubDate>Fri, 10 Mar 2017 01:25:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Concomitant-drug-medication-use/m-p/339848#M77576</guid>
      <dc:creator>m_o</dc:creator>
      <dc:date>2017-03-10T01:25:14Z</dc:date>
    </item>
    <item>
      <title>Re: Concomitant drug / medication use</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Concomitant-drug-medication-use/m-p/339862#M77577</link>
      <description>&lt;P&gt;Post the expected output based on your sample data.&lt;/P&gt;</description>
      <pubDate>Fri, 10 Mar 2017 02:49:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Concomitant-drug-medication-use/m-p/339862#M77577</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2017-03-10T02:49:50Z</dc:date>
    </item>
    <item>
      <title>Re: Concomitant drug / medication use</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Concomitant-drug-medication-use/m-p/339879#M77587</link>
      <description>&lt;P&gt;I think I can handle all cases with :&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input ID	DRUG $	START_DT :mmddyy.	DAYS_SUPP	END_DT :mmddyy.;
datalines;;
1	A	2/17/10	30	3/19/10
1	B	5/6/09	30	6/5/09
1	C	7/9/11	60	9/7/11
1	E	3/1/10	90	5/30/10
1	B	1/1/09	90	4/1/09
1	D	2/1/09	30	3/3/09
1	C	5/6/12	90	8/4/12
2	B	4/1/12	60	5/31/12
2	A	7/1/10	30	7/31/10
2	C	8/3/10	90	11/1/10
2	D	11/1/13	90	1/30/14
2	E	12/5/13	90	3/5/14
2	A	2/1/11	90	5/2/11
2   F   12/16/13 30 1/14/14
;

data days;
set have;
dum = 1;
do day = start_dt to end_dt;
    output;
    end;
format day yymmdd10.;
keep id drug day;
run;

proc sort data=days; by id day drug; run;

data dayTable;
array d{32} $10;
length drugList $64;
do n = 1 by 1 until(last.day);
    set days; by id day;
    d{n} = drug;
    end;
do nDrugs = 2 to n;
    ncomb = comb(n, nDrugs);
    do j = 1 to ncomb;
        rc = lexcomb(j, nDrugs, of d{*});
        call missing(drugList);
        do k = 1 to nDrugs;
            drugList = catx("-", drugList, d{k});
            end;
        output;
        end;
    end;
keep id day nDrugs drugList;
run;

proc sort data=dayTable; by id nDrugs drugList day; run;

data dayTableSeq;
retain seq;
set dayTable; by id nDrugs drugList;
if first.drugList or day-1 ne lag(day) then seq+1;
run;

data want;
length id nDrugs 8 drugList $64 duration startDate endDate 8;
retain startDate;
set dayTableSeq; by id nDrugs drugList seq;
if first.seq then startDate = day;
if last.seq then do;
    endDate = day;
    duration = endDate - startDate + 1;
    /*if duration &amp;gt;= 28 then*/ output;
    end;
format startDate endDate yymmdd10.;
keep id nDrugs drugList startDate endDate duration;
run; 

&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;I added a prescription to drug F to generate a 3-drugs case. Note that all sub-combinations are also listed, i.e. if drug combination D-E-F exists then so will combinations D-E, D-F, and E-F with durations equal or longer than the duration of D-E-F.&lt;/P&gt;</description>
      <pubDate>Fri, 10 Mar 2017 04:32:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Concomitant-drug-medication-use/m-p/339879#M77587</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2017-03-10T04:32:22Z</dc:date>
    </item>
    <item>
      <title>Re: Concomitant drug / medication use</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Concomitant-drug-medication-use/m-p/339934#M77615</link>
      <description>&lt;PRE&gt;

What do you mean by "the same time"? you mean same START_DT ?

data have;
input ID	DRUG $	START_DT :mmddyy.	DAYS_SUPP	END_DT :mmddyy.;
datalines;;
1	A	2/17/10	30	3/19/10
1	B	5/6/09	30	6/5/09
1	C	7/9/11	60	9/7/11
1	E	3/1/10	90	5/30/10
1	B	1/1/09	90	4/1/09
1	D	2/1/09	30	3/3/09
1	C	5/6/12	90	8/4/12
2	B	4/1/12	60	5/31/12
2	A	7/1/10	30	7/31/10
2	C	8/3/10	90	11/1/10
2	D	11/1/13	90	1/30/14
2	E	12/5/13	90	3/5/14
2	A	2/1/11	90	5/2/11
2   F   12/16/13 30 1/14/14
;

proc sql;
select *
 from have
  where days_supp gt 30
   group by id,start_dt
    having count(distinct drug) ge 2;
 quit;

&lt;/PRE&gt;</description>
      <pubDate>Fri, 10 Mar 2017 08:49:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Concomitant-drug-medication-use/m-p/339934#M77615</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2017-03-10T08:49:59Z</dc:date>
    </item>
    <item>
      <title>Re: Concomitant drug / medication use</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Concomitant-drug-medication-use/m-p/340004#M77652</link>
      <description>Thank you very much for your reply.&lt;BR /&gt;By 'same time' I meant that the duration of use of the different drugs overlaps at some point for some time. It doesn't have to be the same start date. In most cases, all of the drugs have different start and end dates. Thank you.</description>
      <pubDate>Fri, 10 Mar 2017 14:05:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Concomitant-drug-medication-use/m-p/340004#M77652</guid>
      <dc:creator>m_o</dc:creator>
      <dc:date>2017-03-10T14:05:00Z</dc:date>
    </item>
    <item>
      <title>Re: Concomitant drug / medication use</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Concomitant-drug-medication-use/m-p/340041#M77669</link>
      <description>I think this looks like exactly what I need. Thank you very, very much!</description>
      <pubDate>Fri, 10 Mar 2017 17:37:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Concomitant-drug-medication-use/m-p/340041#M77669</guid>
      <dc:creator>m_o</dc:creator>
      <dc:date>2017-03-10T17:37:31Z</dc:date>
    </item>
    <item>
      <title>Re: Concomitant drug / medication use</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Concomitant-drug-medication-use/m-p/351710#M81886</link>
      <description>&lt;P&gt;the codes run with error.&lt;/P&gt;</description>
      <pubDate>Thu, 20 Apr 2017 14:35:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Concomitant-drug-medication-use/m-p/351710#M81886</guid>
      <dc:creator>GraceStehlin98</dc:creator>
      <dc:date>2017-04-20T14:35:38Z</dc:date>
    </item>
    <item>
      <title>Re: Concomitant drug / medication use</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Concomitant-drug-medication-use/m-p/351753#M81904</link>
      <description>Hi, Thank you for letting me know. Could you elaborate how so? Thanks!&lt;BR /&gt;&lt;BR /&gt;##- Please type your reply above this line. Simple formatting, no&lt;BR /&gt;attachments. -##</description>
      <pubDate>Thu, 20 Apr 2017 15:43:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Concomitant-drug-medication-use/m-p/351753#M81904</guid>
      <dc:creator>m_o</dc:creator>
      <dc:date>2017-04-20T15:43:01Z</dc:date>
    </item>
  </channel>
</rss>

