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:
- Click the Add a loop icon or from the Add menu select “Loop”
When this object is opened, a tabbed editor is available to the user for specification of the Loop Object.
The General Tab
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.
Loop Iterations Tab
This tab is used to define the type of loop. There are three primary types of Loops:
- Iterate until done: 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 might 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.
- Iterate for Each Entity in a Previous Loop: 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 will call this the “Members loop”. Then, for each member of the family, this 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).
- Iterate over a pre-defined set of response options: 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. For example, respondents might be asked which websites they’ve visited, and select those websites in a check-all-that-apply question. You may then want to ask a series of 5 questions about each of the selected websites. This type of loop would allow you to define those 5 questions, and have respondents loop through those but only X number of times, based on how many websites were checked in the prior question.
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.