<?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 How to compare enddate in row1 with begdate in row2 to get a continuous period for patient record in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/How-to-compare-enddate-in-row1-with-begdate-in-row2-to-get-a/m-p/650941#M195241</link>
    <description>&lt;P&gt;Hi SAS community,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I would appreciate your help in below problem:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a scenario in which a data-set sorted by ID and begdate and Enddate.&lt;/P&gt;&lt;P&gt;I have tried the code below to achieve my results and have used SAS 9.4 version:&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
 set have;

  IF ID = lag(ID) AND  DIFF = 1 or  DIFF = 0 then prev = ENDDATE;

  DIFF = BEGDATE- lag(ENDDATE) 
  lag_id = lag(id);
  lag_begdate = lag(BEGDATE);
  lag_enddate = lag(ENDDATE);
  by id;
format BEGDATE date9. ENDDATE date9. prev date9. lag_enddate lag_begdate date9.;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Some IDs have multiple rows some have single rows with begdate and enddate. I want to check if begdate in row2 is equal to row1 enddate or if begdate in row2 = row1 endate +1.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I basically want to see if the records can be clubbed to have a continuous period.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;For Example:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If the row1 of ID #200 has an enddate - 2/20/2012 and row2 of ID #200 has begdate- 5/11/2012 then that row should stay the same in the output dataset.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;for id #200 Row 2 begdate was compared to row 1 enddate and difference is&amp;nbsp; 81 days. NE 0 or 1 day - So this record should stay same&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;for id #920 Row 2 begdate was compared to row 1 enddate and difference is 1 day EQ 0 or 1 day - so this should set my begdate for id #920 as row1 begdate and enddate as row2 enddate, thus indicating that it is a continuous period.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Similarly,&amp;nbsp;for id #920 Row 3 begdate was compared to row 2 enddate and difference is 1 day EQ 0 or 1 day.- so this should set my begdate for id #920 as row1 begdate and enddate as row3 enddate, thus indicating that it is a continuous period.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Overall, I want the code to run through my data and loop by ID to compare and give me a record with a continuous period of the patient if there is no difference between consecutive records enddate and beginning date.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is a sample of dataset and my expected results:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ID&lt;/TD&gt;&lt;TD&gt;begdate&lt;/TD&gt;&lt;TD&gt;enddate&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;200&lt;/TD&gt;&lt;TD&gt;4/11/2011&lt;/TD&gt;&lt;TD&gt;2/20/2012&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;200&lt;/TD&gt;&lt;TD&gt;5/11/2012&lt;/TD&gt;&lt;TD&gt;10/31/2013&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;920&lt;/TD&gt;&lt;TD&gt;1/23/2003&lt;/TD&gt;&lt;TD&gt;1/11/2016&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;920&lt;/TD&gt;&lt;TD&gt;1/12/2016&lt;/TD&gt;&lt;TD&gt;3/29/2016&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;920&lt;/TD&gt;&lt;TD&gt;3/30/2016&lt;/TD&gt;&lt;TD&gt;7/21/2017&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;OUTPUT&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;200&lt;/TD&gt;&lt;TD&gt;4/11/2011&lt;/TD&gt;&lt;TD&gt;2/20/2012&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;200&lt;/TD&gt;&lt;TD&gt;5/11/2012&lt;/TD&gt;&lt;TD&gt;10/31/2013&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;920&lt;/TD&gt;&lt;TD&gt;1/23/2003&lt;/TD&gt;&lt;TD&gt;7/21/2017&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any help is appreciated. Thank you for your time and effort. Please feel free to comment or ask questions if my question seems unclear.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 26 May 2020 22:59:04 GMT</pubDate>
    <dc:creator>DeepikaParatane</dc:creator>
    <dc:date>2020-05-26T22:59:04Z</dc:date>
    <item>
      <title>How to compare enddate in row1 with begdate in row2 to get a continuous period for patient record</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-compare-enddate-in-row1-with-begdate-in-row2-to-get-a/m-p/650941#M195241</link>
      <description>&lt;P&gt;Hi SAS community,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I would appreciate your help in below problem:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a scenario in which a data-set sorted by ID and begdate and Enddate.&lt;/P&gt;&lt;P&gt;I have tried the code below to achieve my results and have used SAS 9.4 version:&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
 set have;

  IF ID = lag(ID) AND  DIFF = 1 or  DIFF = 0 then prev = ENDDATE;

  DIFF = BEGDATE- lag(ENDDATE) 
  lag_id = lag(id);
  lag_begdate = lag(BEGDATE);
  lag_enddate = lag(ENDDATE);
  by id;
format BEGDATE date9. ENDDATE date9. prev date9. lag_enddate lag_begdate date9.;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Some IDs have multiple rows some have single rows with begdate and enddate. I want to check if begdate in row2 is equal to row1 enddate or if begdate in row2 = row1 endate +1.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I basically want to see if the records can be clubbed to have a continuous period.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;For Example:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If the row1 of ID #200 has an enddate - 2/20/2012 and row2 of ID #200 has begdate- 5/11/2012 then that row should stay the same in the output dataset.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;for id #200 Row 2 begdate was compared to row 1 enddate and difference is&amp;nbsp; 81 days. NE 0 or 1 day - So this record should stay same&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;for id #920 Row 2 begdate was compared to row 1 enddate and difference is 1 day EQ 0 or 1 day - so this should set my begdate for id #920 as row1 begdate and enddate as row2 enddate, thus indicating that it is a continuous period.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Similarly,&amp;nbsp;for id #920 Row 3 begdate was compared to row 2 enddate and difference is 1 day EQ 0 or 1 day.- so this should set my begdate for id #920 as row1 begdate and enddate as row3 enddate, thus indicating that it is a continuous period.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Overall, I want the code to run through my data and loop by ID to compare and give me a record with a continuous period of the patient if there is no difference between consecutive records enddate and beginning date.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is a sample of dataset and my expected results:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ID&lt;/TD&gt;&lt;TD&gt;begdate&lt;/TD&gt;&lt;TD&gt;enddate&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;200&lt;/TD&gt;&lt;TD&gt;4/11/2011&lt;/TD&gt;&lt;TD&gt;2/20/2012&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;200&lt;/TD&gt;&lt;TD&gt;5/11/2012&lt;/TD&gt;&lt;TD&gt;10/31/2013&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;920&lt;/TD&gt;&lt;TD&gt;1/23/2003&lt;/TD&gt;&lt;TD&gt;1/11/2016&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;920&lt;/TD&gt;&lt;TD&gt;1/12/2016&lt;/TD&gt;&lt;TD&gt;3/29/2016&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;920&lt;/TD&gt;&lt;TD&gt;3/30/2016&lt;/TD&gt;&lt;TD&gt;7/21/2017&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;OUTPUT&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;200&lt;/TD&gt;&lt;TD&gt;4/11/2011&lt;/TD&gt;&lt;TD&gt;2/20/2012&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;200&lt;/TD&gt;&lt;TD&gt;5/11/2012&lt;/TD&gt;&lt;TD&gt;10/31/2013&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;920&lt;/TD&gt;&lt;TD&gt;1/23/2003&lt;/TD&gt;&lt;TD&gt;7/21/2017&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any help is appreciated. Thank you for your time and effort. Please feel free to comment or ask questions if my question seems unclear.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 26 May 2020 22:59:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-compare-enddate-in-row1-with-begdate-in-row2-to-get-a/m-p/650941#M195241</guid>
      <dc:creator>DeepikaParatane</dc:creator>
      <dc:date>2020-05-26T22:59:04Z</dc:date>
    </item>
    <item>
      <title>Re: How to compare enddate in row1 with begdate in row2 to get a continuous period for patient recor</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-compare-enddate-in-row1-with-begdate-in-row2-to-get-a/m-p/650972#M195246</link>
      <description>&lt;P&gt;Use DO UNTIL() with by processing for each ID group:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input ID (begdate enddate) (:mmddyy.);
format begdate enddate yymmdd10.;
datalines;
200   4/11/2011   2/20/2012
200   5/11/2012   10/31/2013
920   1/23/2003   1/11/2016
920   1/12/2016   3/29/2016
920   3/30/2016   7/21/2017
;

data want;
format startDate lastDate yymmdd10.;
lastDate = "01jan1930"d;
do until(last.id);
    set have; by id;
    if intck("day", lastDate, begdate) &amp;gt; 1 then do;
        if not missing(startDate) then output;
        startDate = begDate;
        end;
    lastDate = endDate;
    end;
if not missing(startDate) then output;
drop begDate endDate;
rename startDate=begDate lastDate=endDate;
run;

proc print data=want; run; &lt;/CODE&gt;&lt;/PRE&gt;
&lt;PRE&gt;Obs.    begDate 	endDate 	ID
1 	2011-04-11 	2012-02-20 	200
2 	2012-05-11 	2013-10-31 	200
3 	2003-01-23 	2017-07-21 	920&lt;/PRE&gt;</description>
      <pubDate>Wed, 27 May 2020 04:09:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-compare-enddate-in-row1-with-begdate-in-row2-to-get-a/m-p/650972#M195246</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2020-05-27T04:09:45Z</dc:date>
    </item>
    <item>
      <title>Re: How to compare enddate in row1 with begdate in row2 to get a continuous period for patient recor</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-compare-enddate-in-row1-with-begdate-in-row2-to-get-a/m-p/650991#M195257</link>
      <description>&lt;P&gt;Using a "look-ahead":&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
infile datalines dlm='09'x dsd truncover;
input id $ (begdate enddate) (:mmddyy10.);
format begdate enddate yymmddd10.;
datalines;
200	4/11/2011	2/20/2012
200	5/11/2012	10/31/2013
920	1/23/2003	1/11/2016
920	1/12/2016	3/29/2016
920	3/30/2016	7/21/2017
;

data want;
merge
  have
  have (firstobs=2 rename=(id=_id begdate=_begdate) drop=enddate)
;
retain _beg;
if id = _id and _begdate le (enddate + 1)
then do;
  if _beg = . then _beg = begdate;
  delete;
end;
if _beg ne . then begdate = _beg;
if id ne _id or _begdate gt (enddate + 1) then _beg = .;
drop _:;
run;

proc print data=want noobs;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Result:&lt;/P&gt;
&lt;PRE&gt;id	begdate	enddate
200	2011-04-11	2012-02-20
200	2012-05-11	2013-10-31
920	2003-01-23	2017-07-21
&lt;/PRE&gt;</description>
      <pubDate>Wed, 27 May 2020 07:09:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-compare-enddate-in-row1-with-begdate-in-row2-to-get-a/m-p/650991#M195257</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2020-05-27T07:09:10Z</dc:date>
    </item>
    <item>
      <title>Re: How to compare enddate in row1 with begdate in row2 to get a continuous period for patient recor</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-compare-enddate-in-row1-with-begdate-in-row2-to-get-a/m-p/651044#M195281</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
infile datalines expandtabs truncover;
input id $ (begdate enddate) (:mmddyy10.);
format begdate enddate yymmddd10.;
datalines;
200	4/11/2011	2/20/2012
200	5/11/2012	10/31/2013
920	1/23/2003	1/11/2016
920	1/12/2016	3/29/2016
920	3/30/2016	7/21/2017
;
data temp;
 set have;
 do date=begdate to enddate;
  output;
 end;
 keep id date;
run;
proc sort data=temp nodupkey;
by id date;
run;
data temp;
 set temp;
 by id;
 if first.id or dif(date) ne 1 then group+1;
run;
proc sql;
create table want as
select group,id,min(date) as begdate format=mmddyy10.,
       max(date) as enddate format=mmddyy10.
 from temp
  group by group,id;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 27 May 2020 11:32:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-compare-enddate-in-row1-with-begdate-in-row2-to-get-a/m-p/651044#M195281</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2020-05-27T11:32:15Z</dc:date>
    </item>
    <item>
      <title>Re: How to compare enddate in row1 with begdate in row2 to get a continuous period for patient recor</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-compare-enddate-in-row1-with-begdate-in-row2-to-get-a/m-p/651073#M195302</link>
      <description>Worked like a charm! Thank you</description>
      <pubDate>Wed, 27 May 2020 13:05:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-compare-enddate-in-row1-with-begdate-in-row2-to-get-a/m-p/651073#M195302</guid>
      <dc:creator>DeepikaParatane</dc:creator>
      <dc:date>2020-05-27T13:05:51Z</dc:date>
    </item>
  </channel>
</rss>

