<?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: Need help with code, calculating proportion of days covered by medication in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Need-help-with-code-calculating-proportion-of-days-covered-by/m-p/764061#M241967</link>
    <description>&lt;P&gt;Try reading some of the papers published on PDC calculation.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://www.google.com/search?q=%40sas.com+PDC+calculations" target="_self"&gt;@sas.com PDC calculations&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Wed, 25 Aug 2021 22:00:29 GMT</pubDate>
    <dc:creator>Tom</dc:creator>
    <dc:date>2021-08-25T22:00:29Z</dc:date>
    <item>
      <title>Need help with code, calculating proportion of days covered by medication</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Need-help-with-code-calculating-proportion-of-days-covered-by/m-p/763897#M241935</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Hello,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I'm trying to compute&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;# of days (p_dayscovered)&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;a patient is taking medication over the course of&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;365 days&amp;nbsp;&lt;/STRONG&gt;starting&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;11/18/2016.&amp;nbsp;&lt;/STRONG&gt;The&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Prescription Date&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;is the day when the patient is prescribed or refills their medication and the&amp;nbsp;&lt;STRONG&gt;# of days of prescription supplied&amp;nbsp;&lt;/STRONG&gt;is how many days they got the medication for.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For example, in the table below, on 11/8, the patient gets the prescription for 7 days. It is assumed they start taking the medication on the prescription date. So the medication would run out on 11/8 + 7 days = 11/14. The patient gets the next medication on 11/15 for 21 days which means there is no gap in the medication between first prescription and the refill.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;However, after the refill on 12/6 for 28 days, the patient goes off the medication for a while before starting on another drug on 3/8/17. So, we would stop counting for&amp;nbsp;&lt;STRONG&gt;p_dayscovered&amp;nbsp;&lt;/STRONG&gt;after 12/6 + 28 days, but restart starting 3/8/17.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;data WORK.CLASS(label='Prescription Data');
   infile datalines dsd truncover;
   input Drug:$1 Prescription_Date:MMDDYY8. Days_Supplied:32.;
 Datalines;
A 11/8/16  7
A 11/15/16 21
A 12/6/16  28
B 3/8/17   30
B 4/7/17   -4
A 4/3/17   3
A 5/15/17  3
A 6/5/17   3
B 6/14/17  30
A 10/5/17  15
A 10/25/17 15
;;;;
&lt;/PRE&gt;
&lt;P&gt;The table looks like this:&lt;/P&gt;
&lt;TABLE border="1" width="50%"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="25%" class="lia-align-center"&gt;&lt;STRONG&gt;Drug&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="12.5%" class="lia-align-center"&gt;&lt;STRONG&gt;Prescription Date&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="12.5%" class="lia-align-center"&gt;&lt;STRONG&gt;# of days of prescription supplied&lt;/STRONG&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="25%"&gt;
&lt;P&gt;A&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="12.5%"&gt;11/8/16&lt;/TD&gt;
&lt;TD width="12.5%"&gt;7&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="25%"&gt;A&lt;/TD&gt;
&lt;TD width="12.5%"&gt;11/15/16&lt;/TD&gt;
&lt;TD width="12.5%"&gt;21&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="25%"&gt;A&lt;/TD&gt;
&lt;TD width="12.5%"&gt;12/6/16&lt;/TD&gt;
&lt;TD width="12.5%"&gt;28&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="25%"&gt;&lt;FONT color="#FF6600"&gt;B&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD width="12.5%"&gt;&lt;FONT color="#FF6600"&gt;3/8/17&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD width="12.5%"&gt;&lt;FONT color="#FF6600"&gt;30&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="25%"&gt;&lt;FONT color="#FF6600"&gt;B&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD width="12.5%"&gt;&lt;FONT color="#FF6600"&gt;4/7/17&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD width="12.5%"&gt;&lt;FONT color="#FF6600"&gt;-4&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="25%"&gt;&lt;FONT color="#FF6600"&gt;A&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD width="12.5%"&gt;&lt;FONT color="#FF6600"&gt;4/3/17&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD width="12.5%"&gt;&lt;FONT color="#FF6600"&gt;3&lt;/FONT&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="25%"&gt;A&lt;/TD&gt;
&lt;TD width="12.5%"&gt;5/15/17&lt;/TD&gt;
&lt;TD width="12.5%"&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="25%"&gt;A&lt;/TD&gt;
&lt;TD width="12.5%"&gt;6/5/17&lt;/TD&gt;
&lt;TD width="12.5%"&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="25%"&gt;B&lt;/TD&gt;
&lt;TD width="12.5%"&gt;6/14/17&lt;/TD&gt;
&lt;TD width="12.5%"&gt;30&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="25%"&gt;A&lt;/TD&gt;
&lt;TD width="12.5%"&gt;10/5/17&lt;/TD&gt;
&lt;TD width="12.5%"&gt;15&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="25%"&gt;A&lt;/TD&gt;
&lt;TD width="12.5%"&gt;10/25/17&lt;/TD&gt;
&lt;TD width="12.5%"&gt;15&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here is my code to compute the&amp;nbsp;&lt;STRONG&gt;p_dayscovered:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE class="lia-code-sample  language-sas"&gt;&lt;CODE&gt;*"daydummy" array creates a dummy variable for each day in the review period;
*"filldates" &amp;amp; "days_supply" arrays groups the Prescription Date &amp;amp; # of Days supplied variables, setting up the DO loops;

data  pdc_3M_12M;
set  both_3M_12M; 
array daydummy(365) day1-day365;
array filldates(*) svcdate1-svcdate%eval(&amp;amp;max_3M.);
array days_supply(*) daysupp1-daysupp%eval(&amp;amp;max_3M.);

	do ii=1 to 365; daydummy(ii)=0;end;
	do ii=1 to 365;
        do i = 1 to dim(filldates) while (filldates(i) ne .);

*Flags the days of the review period that the patient was supplied the medication;
	if filldates(i)&amp;lt;= start_dt + ii -1 &amp;lt;= filldates(i)+days_supply(i)-1
	then daydummy(ii)=1;
	end;
	end;
drop i ii; 

*dayscovered sums the daydummy variables. This sum is used as the numerator in calculating p_dayscovered, the proportion of days medication was supplied in the 365 day study period;

dayscovered= sum(of day1 - day365);label dayscovered= "Total Days Covered";
p_dayscovered=dayscovered/365; label p_dayscovered= "Proportion of Days Covered";
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The code works in all cases except the overlap edge case which I have highlighted in&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;FONT color="#FF6600"&gt;red&lt;FONT color="#000000"&gt;, which is:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;FONT color="#FF6600"&gt;&lt;FONT color="#000000"&gt;On 3/8/17, the patient gets a 30 day prescription for Drug B&lt;/FONT&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color="#FF6600"&gt;&lt;FONT color="#000000"&gt;However, on 4/3/17, the patient gets a 3 day prescription for Drug A&lt;/FONT&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&lt;FONT color="#FF6600"&gt;&lt;FONT color="#000000"&gt;In this case, the counting for Drug B should stop on 4/2/17 and the counting for Drug A should begin starting on 4/3/17.&amp;nbsp;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#FF6600"&gt;&lt;FONT color="#000000"&gt;My code adds a&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;'1'&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;flag for all days starting&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;3/8/17 + 30 days = 4/6/17&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;whereas, I want the code to stop adding the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;'1'&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;flag on&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;4/2/17&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;and then add the '1' flags starting&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;4/3/17 + 3&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;ending on&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;4/5/17.&amp;nbsp;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#FF6600"&gt;&lt;FONT color="#000000"&gt;The total&amp;nbsp;p_dayscovered = 150 because of what I mentioned above, but my code because of not accounting for the overlap counts it as 151&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#FF6600"&gt;&lt;FONT color="#000000"&gt;Can someone help me figure out how to write this overlap exception condition?&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#FF6600"&gt;&lt;FONT color="#000000"&gt;Thanks so much!!&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 25 Aug 2021 16:41:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Need-help-with-code-calculating-proportion-of-days-covered-by/m-p/763897#M241935</guid>
      <dc:creator>alaxman</dc:creator>
      <dc:date>2021-08-25T16:41:38Z</dc:date>
    </item>
    <item>
      <title>Re: Need help with code, calculating proportion of days covered by medication</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Need-help-with-code-calculating-proportion-of-days-covered-by/m-p/763949#M241950</link>
      <description>&lt;P&gt;I found this gem of a math formula dealing with overlaping units.&amp;nbsp; Link is here:&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;&lt;A href="http://baodad.blogspot.com/2014/06/date-range-overlap.html" target="_blank" rel="noopener"&gt;http://baodad.blogspot.com/2014/06/date-range-overlap.html&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Maybe this will help you flag for overlapped time periods.&amp;nbsp; This code below will not handle overlaps of three or more time-periods, mind you.&amp;nbsp; In the code, I commented out the "negative" prescription to show how this formula can work.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have(label='Prescription Data');
   length id $10;
   infile datalines  truncover;
   input Drug:$1 Prescription_Date:MMDDYY8. Days_Supplied:4.0;
   Prescription_Date_end=Prescription_Date+Days_Supplied-1;
     format Prescription_Date: mmddyy10.;
Datalines;
A 11/8/16  7
A 11/15/16 21
A 12/6/16  28
B 3/8/17   30  /*B 4/7/17   -4*/
A 4/3/17   3
A 5/15/17  3
A 6/5/17   3
B 6/14/17  30
A 10/5/17  15
A 10/25/17 15
;;;;
proc sort;
 by id;
run;


data next;
  do until (last.ID);
    set have;
      by ID;
    Prescription_Date_lag    =lag(Prescription_Date);  
    Prescription_Date_end_lag=lag(Prescription_Date_end); 
      format Prescription_Date: mmddyy10.;

    if  first.ID 
      then period_overlap=.;
      else do;
        period_overlap=Min (Prescription_Date_end_lag - Prescription_Date_lag ,
                            Prescription_Date_end_lag - Prescription_Date,
                            Prescription_Date_end     -  Prescription_Date,
                            Prescription_Date_end     -  Prescription_Date_lag
                            );/*http://baodad.blogspot.com/2014/06/date-range-overlap.html*/
        if period_overlap&amp;lt;1
          then period_overlap=0;
    end; 
    output;
  end;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="374"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="36"&gt;&lt;STRONG&gt;Drug&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="119"&gt;&lt;STRONG&gt;Prescription_Date&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="99"&gt;&lt;STRONG&gt;Days_Supplied&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="17"&gt;&lt;STRONG&gt;…&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="103"&gt;&lt;STRONG&gt;period_overlap&lt;/STRONG&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;11/8/2016&lt;/TD&gt;
&lt;TD&gt;7&lt;/TD&gt;
&lt;TD&gt;…&lt;/TD&gt;
&lt;TD&gt;.&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;11/15/2016&lt;/TD&gt;
&lt;TD&gt;21&lt;/TD&gt;
&lt;TD&gt;…&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;12/6/2016&lt;/TD&gt;
&lt;TD&gt;28&lt;/TD&gt;
&lt;TD&gt;…&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;3/8/2017&lt;/TD&gt;
&lt;TD&gt;30&lt;/TD&gt;
&lt;TD&gt;…&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;4/3/2017&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;…&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;5/15/2017&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;…&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;6/5/2017&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;…&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;B&lt;/TD&gt;
&lt;TD&gt;6/14/2017&lt;/TD&gt;
&lt;TD&gt;30&lt;/TD&gt;
&lt;TD&gt;…&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;10/5/2017&lt;/TD&gt;
&lt;TD&gt;15&lt;/TD&gt;
&lt;TD&gt;…&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;A&lt;/TD&gt;
&lt;TD&gt;10/25/2017&lt;/TD&gt;
&lt;TD&gt;15&lt;/TD&gt;
&lt;TD&gt;…&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;</description>
      <pubDate>Wed, 25 Aug 2021 18:28:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Need-help-with-code-calculating-proportion-of-days-covered-by/m-p/763949#M241950</guid>
      <dc:creator>PhilC</dc:creator>
      <dc:date>2021-08-25T18:28:15Z</dc:date>
    </item>
    <item>
      <title>Re: Need help with code, calculating proportion of days covered by medication</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Need-help-with-code-calculating-proportion-of-days-covered-by/m-p/764061#M241967</link>
      <description>&lt;P&gt;Try reading some of the papers published on PDC calculation.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://www.google.com/search?q=%40sas.com+PDC+calculations" target="_self"&gt;@sas.com PDC calculations&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 25 Aug 2021 22:00:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Need-help-with-code-calculating-proportion-of-days-covered-by/m-p/764061#M241967</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2021-08-25T22:00:29Z</dc:date>
    </item>
  </channel>
</rss>

