Views:

Scenario Overview


Health Coverage Assistance through the Department of Health and Welfare provides health coverage or assistance in paying for health coverage for people who meet certain criteria.

This example shows how to set up a Decision Table to evaluate if a person is entitled to Health coverage or Assistance under the requirements laid down by the US State of Idaho.

Requirements shown below.

 
 

To be eligible you must fit into one of the following categories:

Category 1:

Be a child under 19 years old
Category 2:

Be a pregnant woman
Category 3:

Be an adult with a child under the age of 19
Category 4:

Be aged 65 or older
Category 5:

Be blind or disabled according to the Social Security Administration criteria


If you match one of the above categories then you must also meet the below criteria:

Rule 1: 

You must be a Citizen of, or legal immigrant to, the USA.
Rule 2:

You must be a resident of the State of Idaho
Rule 3:

Your household income must be less then the program income limits for your household size.
Rule 4:

Your resource limits must not exceed the program resource limits



In this example the Account entity has been renamed to Household  and modified accordingly.
Contacts have been renamed as Household Residents that live in the that Household

Household


Household Resident

N52 Formula Manager Solution

The Formula Manager solution works like this:

  • A formula of type Save - Perform Action is created on the Household Resident entity
  • The Source Properties are set to Employment Status, Current Savings, Monthly IncomeDisability Status, Pregnant and Immigration Status
  • The Event is set to Create & Update
  • Exit this Decision Table on First Match is turned On on all Decision Tables
  • Exit All Decision Tables on First Match is turned Off on all Decision Tables

Multi-Sheet Decision Table

Preliminary Requirements



All of the Conditions are of type OR as you only need to match one of them
 

Household Income Check - Adult




Note:  The Household Income requirement states that for every resident after 8 we should add $75 to the max income allowed for 8 residents.

Therefore we use the following 741 + (75 * ({Household Residents} - 8)).
For 10 residents it would evaluate to 741 + (75*(10-8)) = $891 dollars.
  

Household Income Check - Pregnant Adult



 

Household Income Check - Child 


Medicaid Eligibility




 

Calculations Table


The Calculations Table has 5 calculations to execute as part of this Decision Table

  • Age - Calculates the age of the Household Resident when the Decision Table executes
  • ChildrenUnder19 - Checks for any Household Residents with a child Connection Role to the Household Resident
  • Household Income -  Sums up the income and savings of all Household Residents living in the Household
  • Household Residents -  Counts how many Household Residents live in the Household
  • Resident in Idaho - Checks if the State / Provence field of the Household the Household Resident is living in is set to Idaho

Calculation

Age

DateDiff([contact.birthdate], UtcDate(), 'y')
ChildUnder19

SmartFlow(
  
  SetVar('HasChildUnder19', false ),
  
      ForEachRecord(
  
        FindRecordsFD('FindChildrenOfResident', false,SetParams([contact.contactid],
                     FindValue('connectionrole', 'name', 'child', 'connectionroleid'))),
  
        iftrue(DateDiff(CurrentRecord('birthdate'), UtcDate(), 'y') < 19, 
                
                SetVar('HasChildUnder19', true))),
  
  SmartFlowReturn(GetVar('HasChildUnder19'))

)
Household Residents

FindCount('contact', 'new_primaryresidence', [contact.new_primaryresidence], 'contactid')
Household Income

Smartflow(
  SetVar('HouseholdIncome', FindSum('contact',
                                    'new_primaryresidence', 
                                    [contact.new_primaryresidence],
                                   'new_monthlyincome', 0)),
  SetVar('HouseholdIncome', GetVar('HouseholdIncome') +
  FindSum('contact',
         'new_primaryresidence', 
         [contact.new_primaryresidence], 
        'new_currentsavings', 0))
)
Resident In Idaho

In(Upper(FindValue('account',
                  'accountid',
                 [contact.new_primaryresidence],
                'address1_stateorprovince')), 'ID', 'IDAHO')

Fetch XML 

<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="true" >
  <entity name="contact" >
    <attribute name="fullname" />
    <attribute name="birthdate" />
    <attribute name="contactid" />
    <order attribute="fullname" descending="false" />
    <link-entity name="connection" from="record1id" to="contactid" alias="ae" >
      <filter type="and" >
        <condition attribute="record2id" operator="eq" uitype="contact" value="{0}" />
        <condition attribute="record2roleid" operator="eq" uitype="connectionrole" value="{1}" />
      </filter>
    </link-entity>
  </entity>
</fetch>