Looping allows a participant to enter information for one or more questions multiple times (e.g. entering basic information for each member of their family).
The looping feature gives users the ability to “loop through” a series of questions of their respondents, while only having to create that set of questions one time. The loop object is actually just a specialized form of a collection. You add the loop object where you want in the survey, and then add the questions to be looped through into the loop collection. Finally, you edit the loop collection to tell Illume how it should loop through the items contained within.
Create a loop object in a survey by:
When this object is opened, a tabbed editor is available to the user for specification of the Loop Object.
The General tab is identical to the General tab when defining a Collection. Users provide a unique name for the Loop, and specify whether the Loop should be made as a section in the data dictionary, whether the questions in the Loop should be randomized, and whether the Loop as a whole should be anchored if it is part of a parent collection that is randomized.
This tab is used to define the type of loop. There are three primary types of Loops:
NOTE: The Loop Options, Loop Summary Columns and Loop Summary Options tabs are described in the Loop Summary Table section of Help.
Set Show-if Logic for the entire Loop Object, which is the conditions under which the loop should run. For example, you may ask respondents “how many members are in your family” (data dictionary name = MEMBERS), and then loop through questions about each family member. You would want to specify show-if logic on the loop containing the questions about each family member to show-if MEMBERS>0.
A Loop Summary Table is a visual representation of the data contained within a loop that is presented to the respondent during the run-time of the survey. Loop Summary Tables allow a participant to Add, Review, Edit or Delete the information provided in an iteration of the looped variables. This table is optional – it is selected by default, however this option can simply be un-checked if it is not desired. In the absence of this table, respondents will simply loop through the items contained within the loop, page after page. To change entries in a prior loop, respondents would need to use the Previous button to page back to that iteration. When the table is used, respondents can easily “jump” back to a particular iteration by simply clicking the Edit icon.
Example of a Loop Summary Table
A Loop Summary Table is configured in the Loop Options Tab of the Loop Object.
The check box to enable the Loop Summary Table is checked by default.
If this is unchecked only the Loop Iteration Guide will be displayed on the Loop Options Tab, as in the screenshot below.
Only the Required Number of Iterations can be set in this field. When the survey is taken it will just loop for as many iterations as entered in that field but the respondent will not know why or have any way to delete, or edit a specific iteration without using the Previous button.
When “Use a loop summary table for loop iteration control” is checked, the user may then specify a Loop Summary Table Prompt which will appear above the table, as shown below.
NOTE: In the example above piping is used in the prompt to show the number of members provided in an earlier variable “RESIDENCECOUNT”.
The loop iteration guides give users the ability to define the Minimum and Maximum number of required iterations of the loop. Typically these will be defined by the response to a previous question. In the example above, a previous question in the survey asked “How many members are in your household” (data dictionary name RESIDENCECOUNT). These loop iteration guides specify that the respondent should be asked the loop question no fewer and no more than the number of members in their household.
If the number of iterations is unknown or should be open-ended (i.e. the respondent can continue looping as long as they desire), then only supply a minimum number, for instance “1”.
The Error Message field is to supply the respondent with a custom error message regarding the number of iterations.
NOTE: The Minimum and Maximum setting will not be available in a “Iterate for Each Entity in a Previous Loop” loop type.
The Loop Summary Columns Tab is where the Column Types, Headers and Text can be configured for the loop summary table.
There are four types of Columns that can be displayed in a Summary Table.
Once a table column has been defined, it can be dragged-and-dropped within the editor window on the Loop Summary Columns tab to control the order of columns in the table. For example, you may want to drag and drop “Loop Iteration Buttons” to be the first or last column int he table.
The Loop Summary Options Tab allows the Survey Designer to customize the Iteration Buttons and Summary Indicators for a specific Loop Summary Table. By default these Options are set at a Survey level under Survey/Preferences. If those default preferences are satisfactory, it is not necessary to edit this tab.
Example of an”Iterate until done” loop Summary Table
With this type of looping, the respondent continues to iterate through the defined Illume questions that are part of the Loop either until the respondent decides no more loops need to occur, or until a maximum number of Loops has been reached, as defined on the Loop Iteration Guides tab. This maximum can be hard coded, or can be based on the response to a question. For example, Q1 in the survey may ask, “How many people are in your family?” This value can be piped into the Maximum Allowed field to limit the number of Loops to the number entered into the Q1 field.
NOTE: If no Minimum or Maximum is set the Loop is considered not required
Example of an “Iterate for all entities in a previous loop” Loop Summary Table
This type of loop allows the respondent to Loop through a series of questions in relation to a prior “parent” loop. For example, a “parent” loop may ask the respondent to identify the Name and Gender of each member of their family (we’ll refer to this as the “Members loop”). Then, for each member of the family, this follow-up loop may ask the respondent to answer several questions regarding the medications taken by each member of that family, or for a subset of the members of that family.
Selecting “Iterate for All entities in a previous loop” causes the respondent to be looped through the questions defined in the loop for all family members defined in the Members loop. Alternatively, the user may specify that only certain family members are asked the questions in the medication loop. In this scenario, the users selects “Only iterate if…” and defines the conditions that specify for which members should the medication questions be asked (e.g. Only iterate if GENDER=male).
Note: This type of loop cannot have other loops nested within it.
NOTE: The Answered/Unanswered Indicator column can be used to show which of the Follow-up Loops have been completed
Example of an “Iterate over a pre-defined set of response options” Loop Summary Table
This type of loop allows the respondent to loop through a series of questions based on a predefined set of responses. The Import from Question feature can be used in conjunction with this scenario, such that the scale from another question can be automatically imported, with show-if logic automatically applied to each option in the scale.
Alternatively, or you may use the Import from Question option to import the response options from the previous question. This can be opened by clicking Import and selecting “Import from Question” from the poplist. When Import from Question is utilized, you may check the box to “add show to only show imported responses if answered for selected question”, meaning that the loop will only occur if the option was selected in the prior question.
For this table there are two additional types of Columns:
Nesting loop objects involves placing of a Loop Object within another Loop Object. There is no limit to the level of nesting.
A best practice in nesting loops is to keep the same iteration type throughout the loops, and if there is a Summary Table in the Original Loop, to use Summary Tables in all nested loops.
Example of an Iterate Until Done Loop nested in another Iterate Until Done Loop: