Matrices de questions

Les questions de liste présentées dans Questions de liste posent la même question booléenne sur un groupe d'entités. Il est possible de poser la question de table de codes pour un groupe d'entités à l'aide de matrices de questions.

Une matrice de questions affiche une liste de questions en fonction d'une table de codes. Pour chaque valeur de table de codes et chaque entité, une case à cocher s'affiche pour permettre à l'utilisateur de sélectionner toutes les valeurs qui s'appliquent à une entité particulière.

Par exemple, supposons qu'il s'agit d'une condition requise pour capturer les niveaux possibles d'abus de substance pour chaque membre du foyer. Une nouvelle définition de domaine peut être ajoutée pour représenter la table de codes SubstanceAbuse et un attribut permettant de stocker le niveau d'abus de substance peut être ajouté à l'entité Personne comme suit :

Figure 1. Attribut Substance Abuse
<xsd:simpleType name="IEG_SUBSTANCEABUSE">
  <xsd:annotation>
    <xsd:appinfo>
      <D:options>
        <D:option name="code-table-name">SubstanceAbuse</D:option>
      </D:options>
    </xsd:appinfo>
  </xsd:annotation>
  <xsd:restriction base="IEG_CODETABLE_CODE" />
</xsd:simpleType>

<xsd:element name="Person">
  <xsd:complexType>
    ...
    <xsd:attribute name="substanceAbuse"
                   type="IEG_SUBSTANCEABUSE" />

La matrice de questions est alors définie comme une question de liste standard. Son affichage diffère car elle se base sur une table de codes au lieu d'un booléen.

Figure 2. Exemple de code de matrice de questions
...
<list-question entity="Person" id="substanceAbuse"
      criteria="age > 14">
  <label id="SubstanceAbuse.Label">
    <![CDATA[Abus de substance :]]>
  </label>
  <item-label>
    <label-element attribute-id="firstName" />
  </item-label>
</list-question>

L'exemple ci-dessous présentant une matrice de questions collectant les informations d'abus de substance de plusieurs membres d'un foyer s'affiche dans le lecteur IEG sous la forme d'une matrice, avec chaque ligne et chaque colonne correspondant respectivement à une description de table de codes et une personne.