Actions

ExpressionScript Engine - Snelstartgids

From LimeSurvey Manual

Revision as of 11:45, 6 September 2018 by Han (talk | contribs)


Snelstartgids

In LimeSurvey, kun je een enquête verder aanpassen door gebruik te maken van Expressiebeheer (EM). Je kunt hiermee het volgende bepalen:

  1. Navigatie/Vertakking : door de antwoorden van de deelnemer kan de volgorde van de vragen worden gewijzigd.
  2. Maatwerk : je kunt de vraag opmaken, Bijvoorbeeld antwoorden op eerdere vragen gebruiken, of zinnen opbouwen met een vervoeging van gegevens van de deelnemer (bijvoorbeeld leeftijd of sekse) of bepalen hoe een rapport (beoordelingsscore of maatadvies) wordt samengesteld.
  3. Validatie : ervoor zorgen dat de antwoorden aan gestelde voorwaarden voldoen, zoals een minimum of een maximum of voldoen aan een patroon.

EM provides an intuitive way to specify the logic for each of those features. Nearly anything that you can write as a standard mathematical equation is a valid expression.

EM currently provides access to 70 functions and it can be easily extended to support more. It also lets you access you variables using human-readable variable names (rather than SGQA names).

The upcoming sections show the main places where the EM is used.


Relevantie (Controle Navigatie/Vertakking)

Some surveys use "Goto Logic", such that if you answer Question1 with option C, you are redirected to Question5. This approach is very limited since it is hard to validate it. Moreover, it easily breaks when you have to reorder questions. On the other hand, EM uses Boolean relevance equations to specify all the conditions under which a question might be valid. If the question is relevant, then the question is shown, otherwise, it is not applicable, and the value "NULL" is stored in the database.

Note: This is similar to what can be done via the Conditions editor, but EM lets you easily specify much more complex and powerful criteria (and lets you use the variable name rather than SGQA identifiers).




To better understand the relevance concept, let's focus on the following survey which computes the Body Mass Index (BMI) of survey respondents. To download it, click on the following link: Body Mass Index survey example.

The relevance equation is shown below in the Relevance column after the variable name. The relevance values of weight, weight_units, height, and height_units are all 1 (default value), meaning that those questions are always displayed. However, the relevance for BMI is {!is_empty(height) and !is_empty(weight)}, which means that BMI will only be computed if the subject enters a value for both height and weight (thereby avoiding the risk of getting a zero error). Also, question "Report" is only shown if the respondent answers all four main questions (height, heightunits, weight, weightunits).



Note: The above image comes from the survey logic file which allows you to look for syntax errors before activating the survey.


Relevance is shown and editable when:

  • you wish to view/edit question-level relevance
  • you wish to view/edit group-level relevance


Bekijken / Wijzigen relevantie op vraagniveau

Deze vergelijking bepaalt de index voor het lichaamsgewicht (BMI). De vraag wordt alleen getoond als de deelnemer eerst het gewicht en de lengte heeft ingevuld.



Het wijzigscherm voor de vraag over het BMI.



De accolades worden niet gebruikt als je een relevantie-vergelijking invult.


Bekijken / Wijzigen relevantie op groepsniveau

Let's focus now on another example - a simple census survey. To download it, click on the following link: Census survey example.

The first page asks how many people live with you and stores that in the "cohabs" variable. This page is only shown if you have more than one cohabitant (it is shown for the second person cohabitating with you). Also, p2name, p2age. p2sum are displayed only if the question before each of them contains a response.



Zoals je kunt zien, heeft de groep ook relevantie-criteria op vraagniveau. Een vraag wordt soms alleen gesteld als je een bepaalde voorgaande vraag hebt beantwoordt (zie vraag p2age, als vraag p2name is beantwoord). De relevantie voor de groep en de vraag worden vanzelf gecombineerd. Een vraag in de groep wordt alleen gesteld als de groep relevant is.  Binnen de groep worden alleen de relevante vragen gesteld.


Het scherm voor het wijzigen van de relevantie op groepsniveau:



De accolades worden niet gebruikt als je een relevantie-vergelijking invult.

Maatwerk

Je kunt eenvoudig allerlei conditioneel maatwerk in je vragen gebruiken. Soms is een eenvoudige vervanging al voldoende. Voorbeeld: "U heeft [Product] gekocht.  Wat vond u het sterkste punt ervan?".  Soms wil je een vervanging op een conditie doen. Bijvoorbeeld: "[Dhr./Mevr.] [Achternaam], wilt u deze enquête invullen?". Je wilt hier dan natuurlijk de keuze tussen Dhr. en Mevr. op basis van het geslacht door het programma laten maken. Je kunt ook hele complexe vervangingen doen met bijvoorbeeld berekeningen.


Conditionele vergelijking

Het voorbeeld met de BMI toont de mogelijkheid om dit BMI te berekenen, omdat je daar de lengte, het gewicht en de gebruikte eenheden (die kunnen per land verschillen) opvraagt:



Hier is weight_kg {if(weight_units == 'kg', weight, weight * .453592)}.  Deze if() functie betekent dat als het gewicht in kg is ingevuld, dat dan als gewicht de eerste waarde moet worden genomen (de ingevulde waarde) en anders dat het gewicht dat is ingevuld moet worden vermenigvuldigd met een constante (om de ponden om te zetten in kg).  De variabele height_m wordt gebruikt om de lengte in meters om te zetten als die in inches is ingevuld (1 meter is 3.28084 inches).

De BMI wordt bepaald door het gewicht te delen door kwadraat van de lengte: {weightkg / (heightm * heightm)}.

Tot slot wordt het rapport conditioneel afgesloten met wat de invoergegevens waren. ("U heeft gezegd dat u 2 meter lang bent en 70 kg weegt.")

In het bovenstaande plaatje zie je de verdere uitwerking om met geneste if()-condities de persoon in te delen in een categorieën als ondergewicht of obesitas. Je ziet de vergelijkingen ook in de "Show Logic View".



Op het wijzigscherm van de vraag, kun je zien dat:

  1. je bij maatwerk de expressie tussen accolades moet zetten
  2. Een expressie kan heel lang zijn. Je wilt het dan meer leesbaar maken om de geneste conditionele logica beter te kunnen lezen.


Maatwerk vragen, antwoorden en rapporten

NB: Dynamisch maatwerk kan mogelijk niet werken als de antwoordopties op hetzelfde scherm kunnen worden geselecteerd uit een lijst. Dit komt omdat bij maatwerk er een <span> tag wordt toegevoegd, dat is niet mogelijk binnen een selectielijst.

The BMI report looks like this:



Het wijzigscherm voor dezelfde vraag.



Anything within curly braces is treated as an expression, being syntax-highlighted (color coded) in the prior image. If you have any typos (such as misspelled or undefined variable names or functions), EM would show an error. In our below example:

  • heightunit.shown is an undefined variable name (it is actually heightunits.shown) and
  • "rnd()" is an undefined function (the proper function name is "round()").

In both cases, the errors are surrounded by a red box to make it easier to spot and fix them.



Je kunt ook snel complexe rapporten maken, zoals een tabel met ingevoerde waarden of advies op maat.

Al het maatwerk moet dus tussen accolades, zodat LimeSurvey in de vraag het onderscheid ziet tussen vaste tekst en expressies (die in Expressiebeheer worden verwerkt).

Validatie

Expressie beheer bepaald hoe de speciale vraagopties werken. Dit betreft o.a.: min/max aantal antwoorden; min/max persoonlijke waarden; min/max totalen; en controleren dat de invoer voldoet aan gespecificeerde patronen. Het gebruik van deze opties is niet gewijzigd. Alle waarden in een van deze velden wordt echter nu gezien als een expressie, zodat je min/max criteria kunt hebben met complexe relaties met andere vragen.

In al van deze gevallen hoef je bij het specificeren geen accolades te gebruiken omdat de speciale vraagopties altijd als expressie beschouwd worden.

Op de pagina met voorbeeld enquêtes staan meerdere voorbeelden van validatie met expressies.


Expressiebeheer - presentatie

To find out more about the Expression Manager and how you can use different expressions to enhance your survey, please click on the following link.