Using filtered answer optionsYou can define a filter to describe the conditions under which answer options will be displayed to the interviewer via the Filter field. Linked questions can also include a filter. In food consumption modules, questionnaire designers can limit answer options to those that make sense for each food item (e.g., weight units for solids, volume units for liquids). In demographic modules, you can filter a linked question that lists potential owners of the household’s dwelling to the set of age relevant household members.
The Filter field contains a condition that is evaluated against each potential answer option. When the condition is true for a particular answer option, that answer option is displayed. When the condition is false (or yields an exception), that option is not displayed in Interviewer. In other words, the feature functions like an enabling condition for answer options, enabling only those answer options that satisfy the filter condition.
SyntaxThere are also two system generated variables that are only available in the Filter field. For non-linked questions, the keyword @optioncode provides a way to refer to the answer options for the current question. For linked questions, the keyword @current, used as a variable prefix, allows you to differentiate between the value of a variable for current roster row and that for all other rows in the current roster.
ExampleA question asks the interviewer to select the member in the household is the respondent's mother. For this, you would want to filter the household members according to the following criteria:
- Do not show the current person
- Only show household members that are female
- Only show household members that are at least 10 years older than the household member currently being interviewed
This question is a single select linked to the household roster. For this example, assume that the variable for the gender of the household member is gender and for age is age. You would write the filter for the answer options to look like this:
/* Filtered answer options feature */ // Show only females gender==2 && // Cannot select his/herself as mother @current.@rowcode!=@rowcode && // And person's age is 10 years older than current person's age age >= (@current.age + 10)To see an example of this code in the public questionnaire, see this question.