<?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 Array for two different codes to identify specific ICD codes in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Array-for-two-different-codes-to-identify-specific-ICD-codes/m-p/962942#M375229</link>
    <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;I want to use array to find unique icd code in a dataset. The first code is an icd diagnoses code and the second is a procedure code. My dataset has millions of record. The diagnosis code is from 1-12 and the procedure code is from 1-25. For the purposes of the example , i used 1-2 for diagnosis and 1-3 for procedure code.&amp;nbsp; I would like to find any records with either one or multiple codes in the encounter so I can subset to only icd codes of interest. My code below is not doing what I want. Thanks in advance.&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=""&gt; /* Sample data lines */
   data have;
      input patient_id $ 
          proc1 $ 
          proc2 $ 
          diag1 $ 
          diag2 $;
    datalines;
001 A0H7XJZ B4JZZZZ F1020 Z864
002 H0ZXPZZ K4MZZZZ E669 Z733
003 C02DXZZ D0Y0KZZ J45909 F419
;
data medical_records;
set have;
    array proc_code[2] $7 proc1-proc2;    
    array diag_code[3] $10 diag1-diag2;   
    do i = 1 to 2;
 if proc_code [i] in ("H0ZXPZZ", "D0Y0KZZ") then valid_proc=1; else valid_proc=0;
end;
do i = 1 to 3;
if diag_code [i] in ("F1020") then valid_diag=1; else valid_diag =0;
end;
    drop i;
run;



&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Expected outcome&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;Patient_id&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;proc1&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;proc2&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;diag1&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;diag2&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;diag3&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;valid_proc&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;valid_diag&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;A0H7XJZ&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;B4JZZZZ&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;F1020&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Z864&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Z125&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;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;H0ZXPZZ&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;K4MZZZZ&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;E669&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Z733&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;J492&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;C02DXZZ&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;D0Y0KZZ&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;J45909&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;F419&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;F1020&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
    <pubDate>Sat, 29 Mar 2025 20:46:15 GMT</pubDate>
    <dc:creator>CathyVI</dc:creator>
    <dc:date>2025-03-29T20:46:15Z</dc:date>
    <item>
      <title>Array for two different codes to identify specific ICD codes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Array-for-two-different-codes-to-identify-specific-ICD-codes/m-p/962942#M375229</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;I want to use array to find unique icd code in a dataset. The first code is an icd diagnoses code and the second is a procedure code. My dataset has millions of record. The diagnosis code is from 1-12 and the procedure code is from 1-25. For the purposes of the example , i used 1-2 for diagnosis and 1-3 for procedure code.&amp;nbsp; I would like to find any records with either one or multiple codes in the encounter so I can subset to only icd codes of interest. My code below is not doing what I want. Thanks in advance.&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=""&gt; /* Sample data lines */
   data have;
      input patient_id $ 
          proc1 $ 
          proc2 $ 
          diag1 $ 
          diag2 $;
    datalines;
001 A0H7XJZ B4JZZZZ F1020 Z864
002 H0ZXPZZ K4MZZZZ E669 Z733
003 C02DXZZ D0Y0KZZ J45909 F419
;
data medical_records;
set have;
    array proc_code[2] $7 proc1-proc2;    
    array diag_code[3] $10 diag1-diag2;   
    do i = 1 to 2;
 if proc_code [i] in ("H0ZXPZZ", "D0Y0KZZ") then valid_proc=1; else valid_proc=0;
end;
do i = 1 to 3;
if diag_code [i] in ("F1020") then valid_diag=1; else valid_diag =0;
end;
    drop i;
run;



&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Expected outcome&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;Patient_id&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;proc1&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;proc2&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;diag1&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;diag2&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;diag3&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;valid_proc&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;valid_diag&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;A0H7XJZ&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;B4JZZZZ&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;F1020&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Z864&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Z125&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;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;H0ZXPZZ&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;K4MZZZZ&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;E669&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;Z733&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;J492&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;0&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;C02DXZZ&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;D0Y0KZZ&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;J45909&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;F419&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;F1020&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Sat, 29 Mar 2025 20:46:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Array-for-two-different-codes-to-identify-specific-ICD-codes/m-p/962942#M375229</guid>
      <dc:creator>CathyVI</dc:creator>
      <dc:date>2025-03-29T20:46:15Z</dc:date>
    </item>
    <item>
      <title>Re: Array for two different codes to identify specific ICD codes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Array-for-two-different-codes-to-identify-specific-ICD-codes/m-p/962943#M375230</link>
      <description>&lt;P&gt;At a minimum remove the ELSE clause.&amp;nbsp; With that the result is always just going to reflect the last variable in the array.&amp;nbsp; Set the flag(s) to FALSE before the loop(s).&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Or just set the flag to the result of the test and stop checking once you find a match.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data medical_records;
  set have;
  array proc_code proc1-proc2;    
  array diag_code diag1-diag2;  
  do i = 1 to dim(proc_code) until(valid_proc);
    valid_proc = proc_code[i] in ("H0ZXPZZ" "D0Y0KZZ");
  end;
  do i = 1 to dim(diag_code) until(valid_diag);
    valid_diag = diag_code[i] in ("F1020") ;
  end;
  drop i;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 30 Mar 2025 03:31:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Array-for-two-different-codes-to-identify-specific-ICD-codes/m-p/962943#M375230</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2025-03-30T03:31:08Z</dc:date>
    </item>
    <item>
      <title>Re: Array for two different codes to identify specific ICD codes</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Array-for-two-different-codes-to-identify-specific-ICD-codes/m-p/962952#M375232</link>
      <description>&lt;P&gt;It is just a querying issue. You could get this by PROC FORMAT or Hash Table.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;  data have;
      input patient_id $ 
          proc1 $ 
          proc2 $ 
          diag1 $ 
          diag2 $;
    datalines;
001 A0H7XJZ B4JZZZZ F1020 Z864
002 H0ZXPZZ K4MZZZZ E669 Z733
003 C02DXZZ D0Y0KZZ J45909 F419
;








data _proc;
input _proc $;
cards;
H0ZXPZZ 
D0Y0KZZ
;
data _diag;
input _diag $;
cards;
F1020
;
run;
data want;
if _n_=1 then do;
 if 0 then set _proc _diag;
 declare hash p(dataset:'_proc');
 p.definekey('_proc');
 p.definedone();
 declare hash d(dataset:'_diag');
 d.definekey('_diag');
 d.definedone();
end;
set have;
array _p{*} proc:;
array _d{*} diag:;
valid_proc=0;
valid_diag =0;
do i=1 to dim(_p);
 if p.check(key:_p{i})=0 then valid_proc=1;
end;
do j=1 to dim(_d);
 if d.check(key:_d{j})=0 then valid_diag=1;
end;

drop _: i j;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sun, 30 Mar 2025 02:56:44 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Array-for-two-different-codes-to-identify-specific-ICD-codes/m-p/962952#M375232</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2025-03-30T02:56:44Z</dc:date>
    </item>
  </channel>
</rss>

