Handling of caseParticipantDetails Fields

In order to execute the createHouseholdMemberEvidence() operation on the HouseholdMember, the CDME has to populate the caseParticipantDetails field of the HouseholdMemberEvidenceDetails struct, an extract of which is shown below:

public final class HouseholdMemberEvidenceDetails 
implements java.io.Serializable, curam.util.type.DeepCloneable {

  /** Attribute of the struct. */
  public  curam.core.sl.struct.CaseIDKey caseIDKey;

  /** Attribute of the struct. */
  public  curam.core.sl.struct.CaseParticipantDetails 
    caseParticipantDetails;

  /** Attribute of the struct. */
  public  curam.core.sl.struct.EvidenceDescriptorDetails descriptor;

  /** Attribute of the struct. */
  public  curam.evidence.entity.struct.HouseholdMemberDtls dtls;
 …
}

The members of the dtls struct are, by and large, filled out through the <set-attribute> and <map-attribute> elements in the Mapping Specification. For example, the following line in the mapping specification leads to the field natHawOrPaIsInd being populated with a value in the dtls struct:

<map-attribute
        from="nativeAlaskanOrAmericanIndian"
        to="natHawOrPaIsInd"
      />

The caseParticipantDetails field is often present in an EvidenceDetails struct. In this example, a Case Participant is created for Grace and the caseParticipantDetails refer to this Case Participant. The Data Mapping Engine does this automatically whenever it finds a field called caseParticipantDetails on the EvidenceDetails struct. Sometimes, however, there are variations required in the handling of case participants, for example, when the Evidence Details struct contains additional Case Participants that refer to third parties. Consider the following:

public final class AnnuityEvidenceDetails 
implements java.io.Serializable, curam.util.type.DeepCloneable {
  /** Attribute of the struct. */
  public  curam.core.sl.struct.CaseIDKey caseIDKey;

  /** Attribute of the struct. */
  public  curam.core.sl.struct.CaseParticipantDetails 
    instCaseParticipantDetails;

  /** Attribute of the struct. */
  public  curam.core.sl.struct.EvidenceDescriptorDetails descriptor;

  /** Attribute of the struct. */
  public  curam.evidence.entity.struct.AnnuityDtls dtls;

  /** Attribute of the struct. */
  public  curam.evidence.entity.struct.AnnuityCaseParticipantDetails 
    annuityCaseParticipantDetails;
}

In this example, the Case Participant who owns the Annuity is referred to in the AnnuityCaseParticipantDetails struct aggregated under the field name annuityCaseParticipantDetails. The institution that holds the annuity is described in the CaseParticipantDetails struct and is aggregated under the field name instCaseParticipantDetails. This variation can be catered for using the following Evidence Application Builder Configuration:

1    <entity
2      case-participant-class-name="curam.core.sl.struct.CaseParticipantDetails"
3      case-participant-relationship-name="annuityCaseParticipantDetails"
      name="Annuity"
4    >
5      <ev-field
6        aggregation="instCaseParticipantDetails"
7        referenced-as="participantName"
8        target-name="participantName"
9      />
10     <ev-field
11       aggregation="instCaseParticipantDetails"
12       referenced-as="address"
13       target-name="address"
14     />
15  </entity>

Lines 2 and 3 tell the Evidence Application Builder that the caseParticipantDetails for this evidence entity are referred to by the field name annuityCaseParticipantDetails using the struct CaseParticipantDetails. The lines 5-9 tell the Evidence Application Builder that the field participantName of the aggregated struct instCaseParticipantDetails can be referenced in the Mapping Specification as "participantName" (line 7). Similarly for the institutional address in lines 10-14. Using the following example, it is possible map the name and address of the institution holding the Annuity:

1  <target-entity name="Annuity" id="AnnuityTarget">
2   <map-attribute
3     from="institutionName"
4     to="participantName"
5   />
6   <map-attribute
7     from="institutionAddress"
8     to="address"
9   />
10 </target-entity>

In some cases, it may be considered too onerous to ask the client to fill out all this kind of third party information as part of an online intake. Instead the Mapping Specification can be used to default these values and they can be filled out properly at the interview stage. Here is an example of how to default the values for a third party participant like a financial institution:

1 <target-entity name="Annuity" id="AnnuityTarget">
2   <map-attribute
3          from="resourceAmount"
4          to="annuityValue"
5        />
6        <set-attribute
7          name="participantName"
8          value="Unknown"
9        />
10       <set-attribute
11         name="address"
12         value="curam.blankaddress"
13       />
14     </target-entity>

The value curam.blankaddress on line 12 causes a blank address to be inserted for the participant.