<?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: Prxmatch - multiple diagnosis codes in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Prxmatch-multiple-diagnosis-codes/m-p/651299#M195403</link>
    <description>Thank you!</description>
    <pubDate>Thu, 28 May 2020 06:49:31 GMT</pubDate>
    <dc:creator>Chris_LK_87</dc:creator>
    <dc:date>2020-05-28T06:49:31Z</dc:date>
    <item>
      <title>Prxmatch - multiple diagnosis codes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Prxmatch-multiple-diagnosis-codes/m-p/651087#M195308</link>
      <description>&lt;P&gt;I have a dataset with diagnosis codes with one row for each individual. The DiagCode variable can contain multiple diagnosis codes&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Data Have;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Patient_ID$&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DiagCode$&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;BR /&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; I11 C12 C01&lt;/P&gt;&lt;P&gt;2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;I11&lt;/P&gt;&lt;P&gt;3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;C12 F99 I11&lt;/P&gt;&lt;P&gt;4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;C01&lt;/P&gt;&lt;P&gt;5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;I11 F99&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am familiar with the prxmatch-function. See below:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;%let list=C12 | I11;&lt;/P&gt;&lt;P&gt;data new;&lt;BR /&gt;set have;&lt;BR /&gt;if prxmatch ("/(&amp;amp;list)/",catx(' ', of DiagCode:));&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In the statement above each individual with either diagnosis C12 or I11 gets chosen.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;But what I want is to select individuals only with both diagnosis C12 and I11.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Data Want;&lt;/P&gt;&lt;P&gt;Patient_ID$&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DiagCode$&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;BR /&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; I11 C12 C01&lt;/P&gt;&lt;P&gt;3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;C12 F99 I11&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Is this possible to do with prxmatch or is it possible to do with any other function?&lt;/P&gt;</description>
      <pubDate>Wed, 27 May 2020 13:39:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Prxmatch-multiple-diagnosis-codes/m-p/651087#M195308</guid>
      <dc:creator>Chris_LK_87</dc:creator>
      <dc:date>2020-05-27T13:39:15Z</dc:date>
    </item>
    <item>
      <title>Re: Prxmatch - multiple diagnosis codes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Prxmatch-multiple-diagnosis-codes/m-p/651090#M195310</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/321775"&gt;@Chris_LK_87&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The issue with "|" is that it means "OR" and not "AND".&lt;/P&gt;
&lt;P&gt;Here is an alternative approach:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let list=C12 I11;

data want;
	set have;
	flag=0;
	do i=1 to countw("&amp;amp;list.");
		if findw(DiagCode,scan("C12 I11",i," "))&amp;gt;0 then flag+1;
	end;
	if flag=countw("&amp;amp;list.") then output;
	drop i flag;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you want to use PRXMATCH, you can also write this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
	set have;
	flag=0;
	do i=1 to countw("&amp;amp;list.");
		if prxmatch(cats("/",scan("C12 I11",i," "),"/"),DiagCode)&amp;gt;0 then flag+1;
	end;
	if flag=countw("&amp;amp;list.") then output;
	drop i flag;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Best,&lt;/P&gt;</description>
      <pubDate>Wed, 27 May 2020 13:53:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Prxmatch-multiple-diagnosis-codes/m-p/651090#M195310</guid>
      <dc:creator>ed_sas_member</dc:creator>
      <dc:date>2020-05-27T13:53:54Z</dc:date>
    </item>
    <item>
      <title>Re: Prxmatch - multiple diagnosis codes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Prxmatch-multiple-diagnosis-codes/m-p/651111#M195319</link>
      <description>&lt;P&gt;There are many ways to check if a string contains two tokens in either order.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;data have;
input Patient_ID &amp;amp; DiagCode $20.; datalines;
1   I11 C12 C01
2   I11
3   C12 F99 I11
4   C01
5   I11 F99
6   F99 I11
7   C01 C12 I11
;

data want;
  set have;

  * regular expression 'look around' pattern - works if a target token occurs more than once;
  flag_way1 = prxmatch('/^(?=.*\bC12\b)(?=.*\bI11\b).*$/i', DiagCode);

  * AND two patterns for locating tokens - works if a target token occurs more than once;
  flag_way2 = prxmatch('/\bC12\b/i',DiagCode) AND prxmatch('/\bI11\b/i',DiagCode);

  * AND two findws for locating tokens - works if a target token occurs more than once ;
  flag_way3 = findw(DiagCode,'I11',' ','i') AND findw(DiagCode,'C12',' ','i');

  * examine result of transformation - Presume each token only appears once in DiagCode;
  flag_way4 = length(DiagCode) - length(left(tranwrd(tranwrd(DiagCode,'C12',''),'I11',''))) = 8;

  * examine result of transformation - Presume each token only appears once in DiagCode;
  flag_way5 = length(DiagCode) - length(prxchange('s/\s*(C12|I11)\s*//i', -1, DiagCode)) = 8;

  format flag: 4.;
run;&lt;/PRE&gt;</description>
      <pubDate>Wed, 27 May 2020 15:16:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Prxmatch-multiple-diagnosis-codes/m-p/651111#M195319</guid>
      <dc:creator>RichardDeVen</dc:creator>
      <dc:date>2020-05-27T15:16:34Z</dc:date>
    </item>
    <item>
      <title>Re: Prxmatch - multiple diagnosis codes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Prxmatch-multiple-diagnosis-codes/m-p/651225#M195364</link>
      <description>&lt;P&gt;As mentioned above, "|" means OR. So, for matching the presence of two codes, you can match A followed by B OR B followed by A, as in:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;prxMatch("/\bC12\b.*\bI11\b|\bI11\b.*\bC12\b/i", DiagCodes)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Note \b matches any word boundary, including the beginning or end of a string.&lt;/P&gt;</description>
      <pubDate>Wed, 27 May 2020 21:32:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Prxmatch-multiple-diagnosis-codes/m-p/651225#M195364</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2020-05-27T21:32:09Z</dc:date>
    </item>
    <item>
      <title>Re: Prxmatch - multiple diagnosis codes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Prxmatch-multiple-diagnosis-codes/m-p/651299#M195403</link>
      <description>Thank you!</description>
      <pubDate>Thu, 28 May 2020 06:49:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Prxmatch-multiple-diagnosis-codes/m-p/651299#M195403</guid>
      <dc:creator>Chris_LK_87</dc:creator>
      <dc:date>2020-05-28T06:49:31Z</dc:date>
    </item>
    <item>
      <title>Re: Prxmatch - multiple diagnosis codes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Prxmatch-multiple-diagnosis-codes/m-p/651300#M195404</link>
      <description>Thank you for helping me!</description>
      <pubDate>Thu, 28 May 2020 06:50:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Prxmatch-multiple-diagnosis-codes/m-p/651300#M195404</guid>
      <dc:creator>Chris_LK_87</dc:creator>
      <dc:date>2020-05-28T06:50:04Z</dc:date>
    </item>
    <item>
      <title>Re: Prxmatch - multiple diagnosis codes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Prxmatch-multiple-diagnosis-codes/m-p/651301#M195405</link>
      <description>thanks!</description>
      <pubDate>Thu, 28 May 2020 06:50:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Prxmatch-multiple-diagnosis-codes/m-p/651301#M195405</guid>
      <dc:creator>Chris_LK_87</dc:creator>
      <dc:date>2020-05-28T06:50:34Z</dc:date>
    </item>
  </channel>
</rss>

