Gestion des zones caseParticipantDetails

Pour pouvoir exécuter l'opération createHouseholdMemberEvidence() sur le membre HouseholdMember, le moteur CDME doit remplir la zone caseParticipantDetails du struct HouseholdMemberEvidenceDetails, dont un extrait est illustré ci-dessous :

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

  /** Attribut du struct. */
  public  curam.core.sl.struct.CaseIDKey caseIDKey;

  /** Attribut du struct. */
  public  curam.core.sl.struct.CaseParticipantDetails 
    caseParticipantDetails;

  /** Attribut du struct. */
  public  curam.core.sl.struct.EvidenceDescriptorDetails descriptor;

  /** Attribut du struct. */
  public  curam.evidence.entity.struct.HouseholdMemberDtls dtls;
 …
}

Les membres du struct dtls sont, de manière générale, remplis via les éléments <set-attribute> et <map-attribute> dans la spécification de mappage. Par exemple, la ligne suivante de la spécification de mappage mène à la zone natHawOrPaIsInd, remplie avec une valeur du struct dtls :

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

La zone caseParticipantDetails se trouve souvent dans un struct EvidenceDetails. Dans cet exemple, un participant du dossier est créé pour Grace et caseParticipantDetails correspond à ce participant. Le moteur de mappage de données effectue cette procédure automatiquement dès qu'il trouve une zone appelée caseParticipantDetails sur le struct EvidenceDetails. Dans certains cas toutefois, la gestion des participants du dossier nécessite des variantes, par exemple lorsque le struct EvidenceDetails contient des participants de dossier supplémentaires qui se réfèrent aux tiers. Tenez compte des points suivants :

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

  /** Attribut du struct. */
  public  curam.core.sl.struct.CaseParticipantDetails 
    instCaseParticipantDetails;

  /** Attribut du struct. */
  public  curam.core.sl.struct.EvidenceDescriptorDetails descriptor;

  /** Attribut du struct. */
  public  curam.evidence.entity.struct.AnnuityDtls dtls;

  /** Attribut du struct. */
  public  curam.evidence.entity.struct.AnnuityCaseParticipantDetails 
    annuityCaseParticipantDetails;
}

Dans cet exemple, le participant du dossier qui possède l'annuité est mentionné dans le struct AnnuityCaseParticipantDetails, agrégé sous le nom de zone annuityCaseParticipantDetails. L'institution qui détient l'annuité est décrite dans le struct CaseParticipantDetails et est agrégée sous le nom de zone instCaseParticipantDetails. Cette variante peut être utilisée pour la configuration du générateur de demandes de preuves suivante :

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>

Les lignes 2 et 3 indiquent au générateur de demandes de preuves que les caseParticipantDetails de cette entité de preuve dont mentionnés par le nom de zone annuityCaseParticipantDetails à l'aide du struct CaseParticipantDetails. Les lignes 5 à 9 indiquent au générateur de demandes de preuves que la zone participantName du struct agrégé instCaseParticipantDetails peut être référencé dans la spécification de mappage en tant que "participantName" (ligne 7). Même chose pour l'adresse institutionnelle aux lignes 10 à 14. L'exemple suivant permet de mapper le nom et l'adresse de l'institution détenant l'annuité :

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>

Dans certains cas, il peut paraître trop lourd de demander au client de remplir ces différents types d'information tierce dans le cadre d'une admission en ligne. La spécification de mappage peut ainsi être utilisée pour définir une valeur par défaut pour ces valeurs, qui peuvent être correctement remplies au moment de l'entretien. L'exemple suivant décrit comment définir une valeur par défaut pour les valeurs d'un participant tiers, comme une institution financière :

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>

La valeur curam.blankaddress à la ligne 12 entraîne l'insertion d'une adresse vide pour le participant.