Iteración de personas

Con diferencia, el tipo de entidad con el que se itera más habitualmente en los scripts IEG es la entidad Persona. IEG dispone de algunas características que resultan de utilidad al respecto. La primera característica son las pestañas de personas. Cuando utiliza pestañas de personas, al usuario se le presenta un panel entre el título de la página y el contenido principal de la página que muestra todas las personas de la unidad familiar y resalta la persona cuya información está especificando el usuario.

Cada persona se representa mediante su nombre y un icono que indica si dicha persona es hombre, mujer, niño o niña. También se proporciona un icono de persona genérica para personas cuyos género y fecha de nacimiento todavía no se han proporcionado. La configuración de una página para utilizar pestañas de personas es tan sencillo como establecer el atributo show-person-tabs de dicha página a true (verdadero). Tenga en cuenta que la página debe estar dentro de un bucle cuyo atributo de entidad esté establecido a 'Person' para que esto funcione.

Cuando se utiliza en una página dentro de un bucle for, la primera vez que el usuario entra en el bucle, la única información conocida es el número de personas que hay que capturar. Después el sistema va recabando información sobre las personas a medida que el usuario itera en el bucle. La única indicación que la pestaña de persona puede dar es cuántas personas quedan por entrar, y no su edad o género.

Tenga en cuenta que el atributo show-person-tabs también se puede establecer en las páginas que están dentro de un bucle anidado, siempre y cuando la entidad del bucle externo se haya establecido a 'Person'. De esa forma, el usuario podrá seguir viendo la persona cuya información se está recopilando en el bucle interno.

Otra característica de IEG que puede ayudar a capturar información sobre las personas de una unidad familiar es el elemento relationship-page. Dicho elemento proporciona un modo sencillo de indicar al sistema que capture las relaciones entre los miembros de la unidad familiar. La inclusión de un elemento relationship-page en un script es algo similar a lo siguiente:

Figura 1. XML de una página de relaciones
<relationship-page id="RelationshipPage" show-person-tabs="true">
  <title id="RelationshipPage.Title">
    <![CDATA[Relaciones de la unidad familiar]]>
  </title>
</relationship-page>

El sistema llevará automáticamente al usuario por el bucle de las personas especificadas hasta el momento, y permitirá al usuario especificar los detalles de las relaciones del usuario con cada uno de los demás miembros de la unidad familiar. El sistema sólo le solicitará al usuario que especifique las relaciones que todavía no se han especificado, de modo que, por cada persona en el hogar, habrá una relación menos a especificar. Esto significa que no se capturará ninguna relación para la última persona, ya que sus relaciones recíprocas ya se habrán especificado.

De forma predeterminada, la página de relaciones sólo va a pedir el tipo de cada relación. También existe la opción de utilizar un indicador para registrar si una relación es una relación de cuidador que no es padre ni madre. Esto puede llevarse a cabo utilizando la sintaxis siguiente:

Figura 2. XML de una página de relaciones con un indicador de cuidador
<relationship-page id="RelationshipPage" show-person-tabs="true">
  <title id="RelationshipPage.Title">
    <![CDATA[Relaciones de la unidad familiar]]>
  </title>
  <question id="caretakerInd">
    <label id="CaretakerInd.Label">
      <![CDATA[¿Es esto una relación de cuidador que no es padre ni madre?]]>
    </label>
  </question>
</relationship-page>

El indicador de cuidador ('caretaker') es la única pregunta que se puede añadirse directamente a la página de la relaciones. Las preguntas relativas a otros atributos de una entidad de relación deben añadirse a los clústeres añadidos a la página de relaciones. Por ejemplo:

Figura 3. XML de una página de relaciones con atributos de relación
<relationship-page id="RelationshipPage" show-person-tabs="true">
  <title id="RelationshipPage.Title">
    <![CDATA[Relaciones de unidad familiar]]>
  </title>
  <question id="caretakerInd">
    <label id="CaretakerInd.Label">
      <![CDATA[¿Es esto una relación de cuidador que no es padre ni madre?]]>
    </label>
  </question>
  <cluster>
    <question id="startDate" mandatory="true">
      <label id="StartDate.Label">
        <![CDATA[Fecha de inicio de la relación:]]>
      </label>
    </question>
  </cluster>
</relationship-page>

Los clústeres añadidos a una página de relaciones se repetirán para cada relación que se vaya a capturar.

El texto de visualización se puede añadir directamente a una página de relaciones. Este texto se mostrará una vez en la página independientemente del número de relaciones recopiladas. El texto de visualización aparecerá en la parte superior de la página, por encima de las relaciones.

Puede incluirse con facilidad un resumen de las relaciones capturadas de la unidad familiar en una página de resumen añadiendo un elemento relationship-summary-list.

La lista de relaciones siempre contendrá al menos tres columnas para mostrar las dos personas implicadas en la relación y el tipo de relación. Si se ha capturado el indicador de cuidador en la página de relaciones, o si se ha capturado otra información relativa a las relaciones, podrán añadirse columnas a la lista de resumen de relaciones para mostrar esta información. Por ejemplo:

Figura 4. XML de lista resumen de relaciones
<relationship-summary-list>
  <title id="RelationshipSummaryPage.Title">
    <![CDATA[Resumen de relaciones de persona]]>
  </title>
  <description id="PersonRelationshipSummaryPage.Description">
    <![CDATA[Detalles de resumen de relación de persona]]>
  </description>
  <column id="caretakerInd">
    <title id="CaretakerInd.Title">
      <![CDATA[¿Cuidador?]]>
    </title>
  </column>
  <column id="startDate">
    <title id="StartDate.Title">
      <![CDATA[Fecha de inicio]]>
    </title>
  </column>
  <edit-link start-page="RelationshipPage"/>
</relationship-summary-list>

El elemento edit-link puede utilizarse en un relationship-summary-list para editar relaciones de la misma forma en que edit-link element funciona en una lista (Edición de registros en listas)