<?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: select observations based on initial visit in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/select-observations-based-on-initial-visit/m-p/240979#M268366</link>
    <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/18408"&gt;@Ksharp﻿&lt;/a&gt;, you will get duplicates if many diagnosis from the initial visit appear in a subsequent visit. I propose instead:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
 set have;
 by PatientID ;
 array x{9999} _temporary_;
 array d{*} DiagnosisCode: ;
 if first.PatientID  then do;
  do i=1 to dim(d);
   x{i}=d{i};
  end;
 end;
 else do;
  do i=1 to dim(d);
   if not missing(d{i}) and d{i} in x then leave;
  end;
  if i &amp;lt;= dim(d) then output;
 end;
drop i;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Mon, 28 Dec 2015 04:34:52 GMT</pubDate>
    <dc:creator>PGStats</dc:creator>
    <dc:date>2015-12-28T04:34:52Z</dc:date>
    <item>
      <title>select observations based on initial visit</title>
      <link>https://communities.sas.com/t5/SAS-Programming/select-observations-based-on-initial-visit/m-p/240874#M268362</link>
      <description>&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I want to select observations based on the initial visit or the date of diagnosis.&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;Patient ID&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Date of Visit&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Diagnosis code 1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Diagnosis Code 2&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;A&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0881&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0981&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;A&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0981&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0234&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;A&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;5&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0234&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0567&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;A&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;30&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0881&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;B&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0881&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0781&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;B&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0881&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;B&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;9&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0789&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0456&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;B&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;45&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0781&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;.&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In the above table Day 0 is the initial visit or date of dignosis for two patients A and B. A got the diagnosis codes 0881 and 0981 on initial visit. I want to select all subsequent visists of A when he had either of those codes (i.e. Day 2 and 30 selected but not day 5) . Similiarly B had diagnosis codes 0881 and 0781 on the day of diagnosis, I want to select subsequent visits where either of theses codes appear (days 3 and 45 but not&amp;nbsp;9). Is there a programing short cut or procedure to check a unique criteria for each patient in a dataset? i.e. create a crietia for patient A and B and teh check it against subsquenet visits??&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;Manjunath&lt;/P&gt;</description>
      <pubDate>Sat, 26 Dec 2015 04:19:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/select-observations-based-on-initial-visit/m-p/240874#M268362</guid>
      <dc:creator>manjubs</dc:creator>
      <dc:date>2015-12-26T04:19:55Z</dc:date>
    </item>
    <item>
      <title>Re: select observations based on initial visit</title>
      <link>https://communities.sas.com/t5/SAS-Programming/select-observations-based-on-initial-visit/m-p/240877#M268363</link>
      <description>&lt;P&gt;For any number of patientId, visits or diagnosis codes :&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input PatientID $	DateOfVisit	DiagnosisCode1	DiagnosisCode2;
format DiagnosisCode: z4.0;
datalines;
A	0	0881	0981
A	2	0981	0234
A	5	0234	0567
A	30	0881	.
B	0	0881	0781
B	3	0881	.
B	9	0789	0456
B	45	0781	.
;

proc transpose data=have out=temp prefix=Diag;
var DiagnosisCode:;
by patientId DateOfVisit;
run;

proc sql;
create table firstVisits as
select patientId, diag1
from temp
group by patientId
having DateOfVisit = min(DateOfVisit);
create table sameDiagVisits as
select unique PatientId, DateOfVisit
from temp as a
where diag1 in (
    select diag1 
    from firstVisits
    where PatientId=a.patientId);
create table want as
select a.* 
from have as a natural inner join sameDiagVisits
order by PatientId, DateOfVisit;
select * from want;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sat, 26 Dec 2015 06:47:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/select-observations-based-on-initial-visit/m-p/240877#M268363</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2015-12-26T06:47:22Z</dc:date>
    </item>
    <item>
      <title>Re: select observations based on initial visit</title>
      <link>https://communities.sas.com/t5/SAS-Programming/select-observations-based-on-initial-visit/m-p/240890#M268364</link>
      <description>Hi&lt;BR /&gt;Thanks for the prompt response. This seems to be working. I just made one change "Dateofvisit=0 " instead of minimum because my dataset has negative values for visits before the diagnosis in question. Thanks for the awesome solution.&lt;BR /&gt;Kind Regards&lt;BR /&gt;Manjunath</description>
      <pubDate>Sat, 26 Dec 2015 16:44:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/select-observations-based-on-initial-visit/m-p/240890#M268364</guid>
      <dc:creator>manjubs</dc:creator>
      <dc:date>2015-12-26T16:44:32Z</dc:date>
    </item>
    <item>
      <title>Re: select observations based on initial visit</title>
      <link>https://communities.sas.com/t5/SAS-Programming/select-observations-based-on-initial-visit/m-p/240966#M268365</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
infile cards truncover expandtabs;
input PatientID $	DateOfVisit	DiagnosisCode1	DiagnosisCode2;
format DiagnosisCode: z4.0;
datalines;
A	0	0881	0981
A	2	0981	0234
A	5	0234	0567
A	30	0881	.
B	0	0881	0781
B	3	0881	.
B	9	0789	0456
B	45	0781	.
;
run;
data want;
 set have;
 by PatientID ;
 array x{9999} _temporary_;
 array d{*} DiagnosisCode: ;
 if first.PatientID  then do;
  do i=1 to dim(d);
   x{i}=d{i};
  end;
 end;
 else do;
  do i=1 to dim(d);
   if not missing(d{i}) and d{i} in x then output;
  end;
 end;
drop i;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 28 Dec 2015 01:50:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/select-observations-based-on-initial-visit/m-p/240966#M268365</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2015-12-28T01:50:33Z</dc:date>
    </item>
    <item>
      <title>Re: select observations based on initial visit</title>
      <link>https://communities.sas.com/t5/SAS-Programming/select-observations-based-on-initial-visit/m-p/240979#M268366</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/18408"&gt;@Ksharp﻿&lt;/a&gt;, you will get duplicates if many diagnosis from the initial visit appear in a subsequent visit. I propose instead:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
 set have;
 by PatientID ;
 array x{9999} _temporary_;
 array d{*} DiagnosisCode: ;
 if first.PatientID  then do;
  do i=1 to dim(d);
   x{i}=d{i};
  end;
 end;
 else do;
  do i=1 to dim(d);
   if not missing(d{i}) and d{i} in x then leave;
  end;
  if i &amp;lt;= dim(d) then output;
 end;
drop i;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 28 Dec 2015 04:34:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/select-observations-based-on-initial-visit/m-p/240979#M268366</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2015-12-28T04:34:52Z</dc:date>
    </item>
    <item>
      <title>Re: select observations based on initial visit</title>
      <link>https://communities.sas.com/t5/SAS-Programming/select-observations-based-on-initial-visit/m-p/240983#M268367</link>
      <description>&lt;P&gt;PG,&lt;/P&gt;
&lt;P&gt;No. This could be better.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
 set have;
 by PatientID ;
 array x{9999} _temporary_;
 array d{*} DiagnosisCode: ;
 if first.PatientID  then do;
  do i=1 to dim(d);
   x{i}=d{i};
  end;
 end;
 else do;
  do i=1 to dim(d);
   if not missing(d{i}) and d{i} in x then do;output; leave;end;
  end;
 end;
drop i;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 28 Dec 2015 05:04:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/select-observations-based-on-initial-visit/m-p/240983#M268367</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2015-12-28T05:04:25Z</dc:date>
    </item>
    <item>
      <title>Re: select observations based on initial visit</title>
      <link>https://communities.sas.com/t5/SAS-Programming/select-observations-based-on-initial-visit/m-p/241015#M268368</link>
      <description>&lt;PRE class=" language-sas"&gt;&lt;CODE class="  language-sas"&gt;&lt;SPAN class="token procnames"&gt;data&lt;/SPAN&gt; have&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token statement"&gt;infile&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;cards&lt;/SPAN&gt; truncover &lt;SPAN class="token number"&gt;ex&lt;/SPAN&gt;pandtabs&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token keyword"&gt;input&lt;/SPAN&gt; PatientID &lt;SPAN class="token punctuation"&gt;$&lt;/SPAN&gt;	DateOfVisit	D1	D2&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token procnames"&gt;format&lt;/SPAN&gt; DiagnosisCode: z4&lt;SPAN class="token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;0&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token datalines"&gt;&lt;SPAN class="token keyword"&gt;datalines&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;SPAN class="token data string"&gt;A	0	0881	0981
A	2	0981	0234
A	5	0234	0567
A	30	0881	.
B	0	0881	0781
B	3	0881	.
B	9	0789	0456
B	45	0781	.&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;data t1;&lt;BR /&gt;set have;&lt;BR /&gt;by &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;CODE class="  language-sas"&gt;PatientID &lt;/CODE&gt;&lt;CODE class="  language-sas"&gt;&lt;SPAN class="token datalines"&gt;&lt;SPAN class="token punctuation"&gt;;&lt;BR /&gt;retain x y;&lt;BR /&gt;if first.patientid then do;&lt;BR /&gt;x=d1;y=d2;&lt;BR /&gt;end;&lt;BR /&gt;if d1=x or d1=y or d2=x or d2=y;&lt;BR /&gt;drop x y;&lt;BR /&gt;run;&lt;BR /&gt;proc print;run;&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 28 Dec 2015 15:21:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/select-observations-based-on-initial-visit/m-p/241015#M268368</guid>
      <dc:creator>pawandh</dc:creator>
      <dc:date>2015-12-28T15:21:30Z</dc:date>
    </item>
  </channel>
</rss>

