<?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: How to check members qualification? YES or NO value in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/How-to-check-members-qualification-YES-or-NO-value/m-p/669620#M200905</link>
    <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Got it--thank you for the explanation. I modified the code accordingly:&lt;/P&gt;
&lt;PRE&gt;proc sql;
    create table enroll_range as
    select id
          ,min(enroll_dt) as min_enroll_dt format MMDDYY10.
          ,max(enroll_dt) as max_enroll_dt format MMDDYY10.
    from enroll1
    group by id;
quit;

proc sql;
    create table want as
    select a.id
          ,a.in_date
          ,a.out_date
          ,case
               when e.min_enroll_dt &amp;lt;= a.out_date &amp;lt;= intnx('month', e.max_enroll_dt, 0, 'e')
                   then 'YES'
               else 'NO'
           end as ELIG_ON_OUT_DATE
          ,case
               when intnx('day', a.out_date, 30) &amp;lt;= intnx('month', e.max_enroll_dt, 0, 'e')  
                   then 'YES'
               else 'NO'
           end as ELIG_ON_30_DAYS_AFTER_OUT_DATE
          ,case
               when calculated elig_on_out_date = 'YES' and calculated elig_on_30_days_after_out_date = 'YES'
                   then 'YES'
               else 'NO'
           end as QUALIFIED
    from activity1 a
    left join enroll_range e
        on a.id = e.id;
quit;

proc print; run;&lt;/PRE&gt;
&lt;P&gt;Output:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="mklangley_1-1594834970769.png" style="width: 614px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/47209i0386A69162549264/image-dimensions/614x132?v=v2" width="614" height="132" role="button" title="mklangley_1-1594834970769.png" alt="mklangley_1-1594834970769.png" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
    <pubDate>Wed, 15 Jul 2020 17:43:28 GMT</pubDate>
    <dc:creator>mklangley</dc:creator>
    <dc:date>2020-07-15T17:43:28Z</dc:date>
    <item>
      <title>How to check members qualification? YES or NO value</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-check-members-qualification-YES-or-NO-value/m-p/669510#M200853</link>
      <description>&lt;P&gt;Requirements: The user must be active from the date of&amp;nbsp; discharge through 30 days after the discharge, with no gaps in enrollment.&lt;/P&gt;&lt;P&gt;FIELD NAMES:&lt;/P&gt;&lt;P&gt;IN_DATE&amp;nbsp;&lt;/P&gt;&lt;P&gt;OUT_DATE "column to identify date of discharge"&lt;/P&gt;&lt;P&gt;ENROLL_DT "column to identify members enrollment date"&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;/*See Data Set below*/
/*1. ENROLL1 - Members Enrollment*/
/*2. ACTIVITY1 - Member Activity*/

DATA ENROLL;
INPUT ID $1-3 ENROLL_DT 4-12;
DATALINES;
001 20180101
001 20180201
001 20180301
001 20180401
003 20180201
003 20180301
003 20180401
;
RUN;

DATA ENROLL1;
SET ENROLL;
ENROLL_DT=INPUT(PUT(ENROLL_DT,8.),YYMMDD8.);
FORMAT ENROLL_DT MMDDYY10.;
RUN;

PROC SORT DATA=ENROLL1;
BY ID ENROLL_DT;
RUN;




DATA ACTIVITY;
INPUT ID $1-3 IN_DATE 4-12 OUT_DATE 13-21;
DATALINES;
001 20171230 20180102
001 20180316 20180324
002 20180225 20180227
003 20180201 20180215
003 20180408 20180424
;
RUN;

DATA ACTIVITY1;
SET ACTIVITY;
IN_DATE=INPUT(PUT(IN_DATE,8.),YYMMDD8.);
OUT_DATE=INPUT(PUT(OUT_DATE,8.),YYMMDD8.);
FORMAT IN_DATE OUT_DATE MMDDYY10.;
RUN;

PROC SORT DATA=ACTIVITY1;
BY ID IN_DATE OUT_DATE;
RUN;&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Sample Scenario:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;ID 001 has an OUT_DATE of &lt;U&gt;1/2/2018 "SEE DATA SET ACTIVITY1"&lt;/U&gt; and user were active on month of 1/1/2018 to 2/1/2018 &lt;U&gt;1/2/2018 "SEE DATA SET ENROLL1".&lt;/U&gt; Therefore, the user is qualified.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Expected Result&lt;/STRONG&gt;&lt;/P&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ID&lt;/TD&gt;&lt;TD&gt;IN_DATE&lt;/TD&gt;&lt;TD&gt;OUT_DATE&lt;/TD&gt;&lt;TD&gt;ELIG ON OUT_DATE&lt;/TD&gt;&lt;TD&gt;ELIG ON 30 DAYS AFTER OUT_DATE&lt;/TD&gt;&lt;TD&gt;QUALIFIED&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;001&lt;/TD&gt;&lt;TD&gt;12/30/2017&lt;/TD&gt;&lt;TD&gt;1/2/2018&lt;/TD&gt;&lt;TD&gt;YES&lt;/TD&gt;&lt;TD&gt;YES&lt;/TD&gt;&lt;TD&gt;YES&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;001&lt;/TD&gt;&lt;TD&gt;3/16/2018&lt;/TD&gt;&lt;TD&gt;3/24/2018&lt;/TD&gt;&lt;TD&gt;YES&lt;/TD&gt;&lt;TD&gt;YES&lt;/TD&gt;&lt;TD&gt;YES&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;002&lt;/TD&gt;&lt;TD&gt;2/25/2018&lt;/TD&gt;&lt;TD&gt;2/27/2018&lt;/TD&gt;&lt;TD&gt;NO&lt;/TD&gt;&lt;TD&gt;NO&lt;/TD&gt;&lt;TD&gt;NO&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;003&lt;/TD&gt;&lt;TD&gt;2/1/2018&lt;/TD&gt;&lt;TD&gt;2/15/2018&lt;/TD&gt;&lt;TD&gt;YES&lt;/TD&gt;&lt;TD&gt;YES&lt;/TD&gt;&lt;TD&gt;YES&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;003&lt;/TD&gt;&lt;TD&gt;4/8/2018&lt;/TD&gt;&lt;TD&gt;4/24/2018&lt;/TD&gt;&lt;TD&gt;YES&lt;/TD&gt;&lt;TD&gt;NO&lt;/TD&gt;&lt;TD&gt;NO&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 15 Jul 2020 15:23:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-check-members-qualification-YES-or-NO-value/m-p/669510#M200853</guid>
      <dc:creator>mrafael03</dc:creator>
      <dc:date>2020-07-15T15:23:00Z</dc:date>
    </item>
    <item>
      <title>Re: How to check members qualification? YES or NO value</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-check-members-qualification-YES-or-NO-value/m-p/669584#M200889</link>
      <description>&lt;P&gt;Shouldn't the 2nd line of your output (ID = 001, OUT_DATE =&amp;nbsp;&lt;SPAN&gt;3/24/2018) be NO for eligible 30 days after OUT_DATE?&lt;/SPAN&gt;&lt;/P&gt;
&lt;PRE&gt;&amp;nbsp;proc sql;
    create table enroll_range as
    select id
          ,min(enroll_dt) as min_enroll_dt format MMDDYY10.
          ,max(enroll_dt) as max_enroll_dt format MMDDYY10.
    from enroll1
    group by id;
quit;

proc sql;
    create table want as
    select a.id
          ,a.in_date
          ,a.out_date
          ,case
               when e.min_enroll_dt &amp;lt;= a.out_date &amp;lt;= max_enroll_dt
                   then 'YES'
               else 'NO'
           end as ELIG_ON_OUT_DATE
          ,case
               when e.min_enroll_dt &amp;lt;= intnx('day', a.out_date, 30, 's') &amp;lt;= max_enroll_dt
                   then 'YES'
               else 'NO'
           end as ELIG_ON_30_DAYS_AFTER_OUT_DATE
          ,case
               when calculated elig_on_out_date = 'YES' and calculated elig_on_30_days_after_out_date = 'YES'
                   then 'YES'
               else 'NO'
           end as QUALIFIED
    from activity1 a
    left join enroll_range e
        on a.id = e.id;
quit;

proc print; run;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Capture.PNG" style="width: 702px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/47207iFABB3D078BFB853C/image-size/large?v=v2&amp;amp;px=999" role="button" title="Capture.PNG" alt="Capture.PNG" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;DIV id="tinyMceEditormklangley_2" class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 15 Jul 2020 16:52:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-check-members-qualification-YES-or-NO-value/m-p/669584#M200889</guid>
      <dc:creator>mklangley</dc:creator>
      <dc:date>2020-07-15T16:52:01Z</dc:date>
    </item>
    <item>
      <title>Re: How to check members qualification? YES or NO value</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-check-members-qualification-YES-or-NO-value/m-p/669600#M200896</link>
      <description>&lt;DIV class="sas-author-rank"&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/223296"&gt;@mklangley&lt;/a&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="sas-author-rank"&gt;&lt;SPAN&gt;&lt;SPAN&gt;Members eligibility always starts with the first day of the month so regardless if their OUT_DATE happened on 3/24 the member considered as eligible for MARCH with continuous enrollment until APRIL.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="sas-author-rank"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sas-author-rank"&gt;&lt;SPAN&gt;&lt;SPAN&gt;So basically the count starts at the beginning of the month&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="sas-author-rank"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sas-author-rank"&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ID&lt;/TD&gt;&lt;TD&gt;IN_DATE&lt;/TD&gt;&lt;TD&gt;OUT_DATE&lt;/TD&gt;&lt;TD&gt;ELIG_ON_DISCHARGE&lt;/TD&gt;&lt;TD&gt;ELIG_30 DAYS AFTER DISCHARGED&lt;/TD&gt;&lt;TD&gt;QUALIFIED&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;001&lt;/TD&gt;&lt;TD&gt;3/16/2018&lt;/TD&gt;&lt;TD&gt;3/24/2018&lt;/TD&gt;&lt;TD&gt;3/1/2018 - MARCH ACTIVE&lt;/TD&gt;&lt;TD&gt;YES - APRIL ACTIVE&lt;/TD&gt;&lt;TD&gt;YES&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;DIV class="sas-author-rank"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV class="sas-author-rank"&gt;&amp;nbsp;&lt;/DIV&gt;</description>
      <pubDate>Wed, 15 Jul 2020 17:17:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-check-members-qualification-YES-or-NO-value/m-p/669600#M200896</guid>
      <dc:creator>mrafael03</dc:creator>
      <dc:date>2020-07-15T17:17:54Z</dc:date>
    </item>
    <item>
      <title>Re: How to check members qualification? YES or NO value</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-check-members-qualification-YES-or-NO-value/m-p/669608#M200901</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/223296"&gt;@mklangley&lt;/a&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Let me rephrase so basically if the member has enrolled date of 1/1/2018 that considered&amp;nbsp;the&amp;nbsp;whole month of March "3/1/2018-3/31/2018" and continuously active until April "4/1/2018-4/30/2018"&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;OUT_DATE - 3/24/2018&lt;/P&gt;&lt;P&gt;AFTER 30 DAYS - April 23, 2018&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Therefore, member is eligible&lt;/P&gt;</description>
      <pubDate>Wed, 15 Jul 2020 17:29:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-check-members-qualification-YES-or-NO-value/m-p/669608#M200901</guid>
      <dc:creator>mrafael03</dc:creator>
      <dc:date>2020-07-15T17:29:45Z</dc:date>
    </item>
    <item>
      <title>Re: How to check members qualification? YES or NO value</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-check-members-qualification-YES-or-NO-value/m-p/669620#M200905</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Got it--thank you for the explanation. I modified the code accordingly:&lt;/P&gt;
&lt;PRE&gt;proc sql;
    create table enroll_range as
    select id
          ,min(enroll_dt) as min_enroll_dt format MMDDYY10.
          ,max(enroll_dt) as max_enroll_dt format MMDDYY10.
    from enroll1
    group by id;
quit;

proc sql;
    create table want as
    select a.id
          ,a.in_date
          ,a.out_date
          ,case
               when e.min_enroll_dt &amp;lt;= a.out_date &amp;lt;= intnx('month', e.max_enroll_dt, 0, 'e')
                   then 'YES'
               else 'NO'
           end as ELIG_ON_OUT_DATE
          ,case
               when intnx('day', a.out_date, 30) &amp;lt;= intnx('month', e.max_enroll_dt, 0, 'e')  
                   then 'YES'
               else 'NO'
           end as ELIG_ON_30_DAYS_AFTER_OUT_DATE
          ,case
               when calculated elig_on_out_date = 'YES' and calculated elig_on_30_days_after_out_date = 'YES'
                   then 'YES'
               else 'NO'
           end as QUALIFIED
    from activity1 a
    left join enroll_range e
        on a.id = e.id;
quit;

proc print; run;&lt;/PRE&gt;
&lt;P&gt;Output:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="mklangley_1-1594834970769.png" style="width: 614px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/47209i0386A69162549264/image-dimensions/614x132?v=v2" width="614" height="132" role="button" title="mklangley_1-1594834970769.png" alt="mklangley_1-1594834970769.png" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 15 Jul 2020 17:43:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-check-members-qualification-YES-or-NO-value/m-p/669620#M200905</guid>
      <dc:creator>mklangley</dc:creator>
      <dc:date>2020-07-15T17:43:28Z</dc:date>
    </item>
  </channel>
</rss>

