<?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: Searching for lists of values across multiple variables with the same suffix in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Searching-for-lists-of-values-across-multiple-variables-with-the/m-p/805122#M317108</link>
    <description>&lt;P&gt;Use arrays.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let EPL_list = ("O021","O03");
%let excl_list_pm70154d = ("59820","59812","59821","0UDB");

data temp.Index_cases;
  set comb.med_comm_2018_2021;
  array dx PRINCIPAL_DIAGNOSIS_CODE DIAGNOSIS_CODE_1-DIAGNOSIS_CODE_36;
  do index=1 to dim(dx) until(EPL_flag);
    EPL_flag= dx[index] in: &amp;amp;epl_list. ;
  end;
  array px PROCEDURE_CODE ICD_PROCEDURE_CODE_1-ICD_PROCEDURE_CODE_25;
  do index=1 to dim(px) until(excl_list_pm70154d);
    excl_list_pm70154d = px[index] in: &amp;amp;excl_list_pm70154d.;
  end;
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Wed, 30 Mar 2022 18:21:20 GMT</pubDate>
    <dc:creator>Tom</dc:creator>
    <dc:date>2022-03-30T18:21:20Z</dc:date>
    <item>
      <title>Searching for lists of values across multiple variables with the same suffix</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Searching-for-lists-of-values-across-multiple-variables-with-the/m-p/805083#M317091</link>
      <description>&lt;P&gt;I'm working with medical administrative data, and I'm trying to flag patients who have had certain diagnoses or medical procedures.&amp;nbsp; I've tried searching online and I've come across variations of do-loops or arrays, but I haven't been able to figure out how to apply them to my specific data.&amp;nbsp; So far I've been using a data step and listing each variable.&amp;nbsp; This works, but obviously it's unwieldy and not a good long-term solution.&amp;nbsp; I've only shown 2 lists here, but the final version will have about 20.&amp;nbsp; Also note that some of the codes are stems, so that O03 includes O031, O032, O035, etc.&amp;nbsp; That's why I used "in:".&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let EPL_list = ("O021","O03");
%let excl_list_pm70154d = ("59820","59812","59821","0UDB");

DATA temp.Index_cases; SET comb.med_comm_2018_2021;

IF PRINCIPAL_DIAGNOSIS_CODE in: (&amp;amp;EPL_list.) THEN EPL_flag = 1; 
	ELSE IF DIAGNOSIS_CODE_1 in: (&amp;amp;EPL_list.) THEN EPL_flag = 1;
	ELSE IF DIAGNOSIS_CODE_2 in: (&amp;amp;EPL_list.) THEN EPL_flag = 1;
	ELSE IF DIAGNOSIS_CODE_3 in: (&amp;amp;EPL_list.) THEN EPL_flag = 1;
	ELSE IF DIAGNOSIS_CODE_4 in: (&amp;amp;EPL_list.) THEN EPL_flag = 1;
	ELSE IF DIAGNOSIS_CODE_5 in: (&amp;amp;EPL_list.) THEN EPL_flag = 1;
	ELSE IF DIAGNOSIS_CODE_6 in: (&amp;amp;EPL_list.) THEN EPL_flag = 1;
	ELSE IF DIAGNOSIS_CODE_7 in: (&amp;amp;EPL_list.) THEN EPL_flag = 1;
	ELSE IF DIAGNOSIS_CODE_8 in: (&amp;amp;EPL_list.) THEN EPL_flag = 1;
	ELSE IF DIAGNOSIS_CODE_9 in: (&amp;amp;EPL_list.) THEN EPL_flag = 1;
	ELSE IF DIAGNOSIS_CODE_10 in: (&amp;amp;EPL_list.) THEN EPL_flag = 1;
	ELSE IF DIAGNOSIS_CODE_11 in: (&amp;amp;EPL_list.) THEN EPL_flag = 1;
	ELSE IF DIAGNOSIS_CODE_12 in: (&amp;amp;EPL_list.) THEN EPL_flag = 1;
	ELSE IF DIAGNOSIS_CODE_13 in: (&amp;amp;EPL_list.) THEN EPL_flag = 1;
	ELSE IF DIAGNOSIS_CODE_14 in: (&amp;amp;EPL_list.) THEN EPL_flag = 1;
	ELSE IF DIAGNOSIS_CODE_15 in: (&amp;amp;EPL_list.) THEN EPL_flag = 1;
	ELSE IF DIAGNOSIS_CODE_16 in: (&amp;amp;EPL_list.) THEN EPL_flag = 1;
	ELSE IF DIAGNOSIS_CODE_17 in: (&amp;amp;EPL_list.) THEN EPL_flag = 1;
	ELSE IF DIAGNOSIS_CODE_18 in: (&amp;amp;EPL_list.) THEN EPL_flag = 1;
	ELSE IF DIAGNOSIS_CODE_19 in: (&amp;amp;EPL_list.) THEN EPL_flag = 1;
	ELSE IF DIAGNOSIS_CODE_20 in: (&amp;amp;EPL_list.) THEN EPL_flag = 1;
	ELSE IF DIAGNOSIS_CODE_21 in: (&amp;amp;EPL_list.) THEN EPL_flag = 1;
	ELSE IF DIAGNOSIS_CODE_22 in: (&amp;amp;EPL_list.) THEN EPL_flag = 1;
	ELSE IF DIAGNOSIS_CODE_23 in: (&amp;amp;EPL_list.) THEN EPL_flag = 1;
	ELSE IF DIAGNOSIS_CODE_24 in: (&amp;amp;EPL_list.) THEN EPL_flag = 1;
	ELSE IF DIAGNOSIS_CODE_25 in: (&amp;amp;EPL_list.) THEN EPL_flag = 1;
	ELSE IF DIAGNOSIS_CODE_26 in: (&amp;amp;EPL_list.) THEN EPL_flag = 1;
	ELSE IF DIAGNOSIS_CODE_27 in: (&amp;amp;EPL_list.) THEN EPL_flag = 1;
	ELSE IF DIAGNOSIS_CODE_28 in: (&amp;amp;EPL_list.) THEN EPL_flag = 1;
	ELSE IF DIAGNOSIS_CODE_29 in: (&amp;amp;EPL_list.) THEN EPL_flag = 1;
	ELSE IF DIAGNOSIS_CODE_30 in: (&amp;amp;EPL_list.) THEN EPL_flag = 1;
	ELSE IF DIAGNOSIS_CODE_31 in: (&amp;amp;EPL_list.) THEN EPL_flag = 1;
	ELSE IF DIAGNOSIS_CODE_32 in: (&amp;amp;EPL_list.) THEN EPL_flag = 1;
	ELSE IF DIAGNOSIS_CODE_33 in: (&amp;amp;EPL_list.) THEN EPL_flag = 1;
	ELSE IF DIAGNOSIS_CODE_34 in: (&amp;amp;EPL_list.) THEN EPL_flag = 1;
	ELSE IF DIAGNOSIS_CODE_35 in: (&amp;amp;EPL_list.) THEN EPL_flag = 1;
	ELSE IF DIAGNOSIS_CODE_36 in: (&amp;amp;EPL_list.) THEN EPL_flag = 1;
		ELSE EPL_flag = 0;


IF PROCEDURE_CODE in: (&amp;amp;excl_list_pm70154d.) THEN excl_list_pm70154d = 1;
	ELSE IF ICD_PROCEDURE_CODE_1 in: (&amp;amp;excl_list_pm70154d.) THEN excl_list_pm70154d = 1;
	ELSE IF ICD_PROCEDURE_CODE_2 in: (&amp;amp;excl_list_pm70154d.) THEN excl_list_pm70154d = 1;
	ELSE IF ICD_PROCEDURE_CODE_3 in: (&amp;amp;excl_list_pm70154d.) THEN excl_list_pm70154d = 1;
	ELSE IF ICD_PROCEDURE_CODE_4 in: (&amp;amp;excl_list_pm70154d.) THEN excl_list_pm70154d = 1;
	ELSE IF ICD_PROCEDURE_CODE_5 in: (&amp;amp;excl_list_pm70154d.) THEN excl_list_pm70154d = 1;
	ELSE IF ICD_PROCEDURE_CODE_6 in: (&amp;amp;excl_list_pm70154d.) THEN excl_list_pm70154d = 1;
	ELSE IF ICD_PROCEDURE_CODE_7 in: (&amp;amp;excl_list_pm70154d.) THEN excl_list_pm70154d = 1;
	ELSE IF ICD_PROCEDURE_CODE_8 in: (&amp;amp;excl_list_pm70154d.) THEN excl_list_pm70154d = 1;
	ELSE IF ICD_PROCEDURE_CODE_9 in: (&amp;amp;excl_list_pm70154d.) THEN excl_list_pm70154d = 1;
	ELSE IF ICD_PROCEDURE_CODE_10 in: (&amp;amp;excl_list_pm70154d.) THEN excl_list_pm70154d = 1;
	ELSE IF ICD_PROCEDURE_CODE_11 in: (&amp;amp;excl_list_pm70154d.) THEN excl_list_pm70154d = 1;
	ELSE IF ICD_PROCEDURE_CODE_12 in: (&amp;amp;excl_list_pm70154d.) THEN excl_list_pm70154d = 1;
	ELSE IF ICD_PROCEDURE_CODE_13 in: (&amp;amp;excl_list_pm70154d.) THEN excl_list_pm70154d = 1;
	ELSE IF ICD_PROCEDURE_CODE_14 in: (&amp;amp;excl_list_pm70154d.) THEN excl_list_pm70154d = 1;
	ELSE IF ICD_PROCEDURE_CODE_15 in: (&amp;amp;excl_list_pm70154d.) THEN excl_list_pm70154d = 1;
	ELSE IF ICD_PROCEDURE_CODE_16 in: (&amp;amp;excl_list_pm70154d.) THEN excl_list_pm70154d = 1;
	ELSE IF ICD_PROCEDURE_CODE_17 in: (&amp;amp;excl_list_pm70154d.) THEN excl_list_pm70154d = 1;
	ELSE IF ICD_PROCEDURE_CODE_18 in: (&amp;amp;excl_list_pm70154d.) THEN excl_list_pm70154d = 1;
	ELSE IF ICD_PROCEDURE_CODE_19 in: (&amp;amp;excl_list_pm70154d.) THEN excl_list_pm70154d = 1;
	ELSE IF ICD_PROCEDURE_CODE_20 in: (&amp;amp;excl_list_pm70154d.) THEN excl_list_pm70154d = 1;
	ELSE IF ICD_PROCEDURE_CODE_21 in: (&amp;amp;excl_list_pm70154d.) THEN excl_list_pm70154d = 1;
	ELSE IF ICD_PROCEDURE_CODE_22 in: (&amp;amp;excl_list_pm70154d.) THEN excl_list_pm70154d = 1;
	ELSE IF ICD_PROCEDURE_CODE_23 in: (&amp;amp;excl_list_pm70154d.) THEN excl_list_pm70154d = 1;
	ELSE IF ICD_PROCEDURE_CODE_24 in: (&amp;amp;excl_list_pm70154d.) THEN excl_list_pm70154d = 1;
	ELSE IF ICD_PROCEDURE_CODE_25 in: (&amp;amp;excl_list_pm70154d.) THEN excl_list_pm70154d = 1;		
		ELSE excl_list_pm70154d = 0;&lt;BR /&gt;RUN;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 30 Mar 2022 14:57:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Searching-for-lists-of-values-across-multiple-variables-with-the/m-p/805083#M317091</guid>
      <dc:creator>Wolverine</dc:creator>
      <dc:date>2022-03-30T14:57:59Z</dc:date>
    </item>
    <item>
      <title>Re: Searching for lists of values across multiple variables with the same suffix</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Searching-for-lists-of-values-across-multiple-variables-with-the/m-p/805090#M317097</link>
      <description>&lt;P&gt;Here's how it could look using arrays:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;array pcodes {37} PRINCIPAL_DIAGNOSIS_CODE diagnosis_code_1 - diagnosis_code_36;
EPL_flag = 0;
do _n_=1 to 37 until (EPL_flag = 1);
   if pcodes{_n_} in: (&amp;amp;EPL_list.) THEN EPL_flag = 1; 
end;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;That replaces just one of the groupings of statements.&lt;/P&gt;</description>
      <pubDate>Wed, 30 Mar 2022 15:40:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Searching-for-lists-of-values-across-multiple-variables-with-the/m-p/805090#M317097</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2022-03-30T15:40:07Z</dc:date>
    </item>
    <item>
      <title>Re: Searching for lists of values across multiple variables with the same suffix</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Searching-for-lists-of-values-across-multiple-variables-with-the/m-p/805122#M317108</link>
      <description>&lt;P&gt;Use arrays.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let EPL_list = ("O021","O03");
%let excl_list_pm70154d = ("59820","59812","59821","0UDB");

data temp.Index_cases;
  set comb.med_comm_2018_2021;
  array dx PRINCIPAL_DIAGNOSIS_CODE DIAGNOSIS_CODE_1-DIAGNOSIS_CODE_36;
  do index=1 to dim(dx) until(EPL_flag);
    EPL_flag= dx[index] in: &amp;amp;epl_list. ;
  end;
  array px PROCEDURE_CODE ICD_PROCEDURE_CODE_1-ICD_PROCEDURE_CODE_25;
  do index=1 to dim(px) until(excl_list_pm70154d);
    excl_list_pm70154d = px[index] in: &amp;amp;excl_list_pm70154d.;
  end;
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 30 Mar 2022 18:21:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Searching-for-lists-of-values-across-multiple-variables-with-the/m-p/805122#M317108</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2022-03-30T18:21:20Z</dc:date>
    </item>
  </channel>
</rss>

