Actions

Check survey logic - Advanced/es: Difference between revisions

From LimeSurvey Manual

(Created page with "Las filas están codificadas por colores de la siguiente manera: *'''Grupos''' - se muestran con un fondo gris claro *'''Preguntas''' - se muestran con un fondo verde claro *'...")
(Created page with "Las respuestas tienen un atributo adicional en la columna '''Relevancia''': *'''Valor''': este es el valor interno predeterminado utilizado en los cálculos. Si está utilizan...")
Line 54: Line 54:
*''Respuestas''' - se muestran con un fondo blanco liso
*''Respuestas''' - se muestran con un fondo blanco liso


Answers have an additional attribute in the '''Relevance''' column:
Las respuestas tienen un atributo adicional en la columna '''Relevancia''':
*'''Value''' - this is the default internal value used by calculations. If you are using [[Assessments]], this will be the assessment value. Otherwise, this will be the same as the answer name.
*'''Valor''': este es el valor interno predeterminado utilizado en los cálculos. Si está utilizando [[Evaluaciones]], este será el valor de la evaluación. De lo contrario, será el mismo que el nombre de la respuesta.





Revision as of 08:15, 6 September 2023


Generales

Una opción importante que le ayuda a crear y mantener fácilmente encuestas complejas es Verificar la lógica de la encuesta.

Durante el desarrollo y prueba de la encuesta, y antes de activarla, es muy importante validar la lógica de la encuesta. Esto es especialmente cierto cuando utiliza ecuaciones complejas de relevancia, adaptación y validación; debe asegurarse de que nada se rompa cuando ejecute la encuesta.

Esta función le permite validar rápidamente la precisión de su encuesta, grupo(s) y pregunta(s). Se puede acceder a él desde las opciones del menú de la barra superior ubicadas en la configuración relacionada con la encuesta. Está disponible a través del menú Herramientas:



Como puede observar arriba, puede ejecutar esta opción cuatro veces, para cada idioma utilizado en una encuesta.

Descripción

La opción Verificar lógica de la encuesta muestra todo lo que especificó para cada pregunta y grupo (por ejemplo, nombre, texto, ayuda, condiciones/relevancia, reglas de validación, valores predeterminados, subpreguntas, respuestas) en un conveniente formato tabular. Resalta los errores y le permite hacer clic en las ID de preguntas y grupos (o variables utilizadas dentro de las ecuaciones) para abrir nuevas pestañas del navegador y editar esas preguntas o grupos. Esto facilita editar rápidamente cualquier error y actualizar la página de verificación lógica para confirmar la precisión de la encuesta antes de activarla.

La pantalla también está diseñada para que sea legible por los investigadores y patrocinadores del estudio, de modo que puedan validar la precisión del diseño y la lógica de la encuesta. Al verificar la lógica de la encuesta, se actualiza el caché de todas las expresiones utilizadas dentro de una encuesta activa.

Incluye las siguientes columnas:

  • #: muestra el recuento de secuencias de grupos y preguntas, comenzando desde 0.
  • Nombre [ ID]: muestra el código de pregunta para el grupo/pregunta/subpregunta. Estos códigos se pueden utilizar como variables dentro de expresiones. ID es el ID de la pregunta (QID) o el ID del grupo (GID). Este campo también muestra el tipo de pregunta (por ejemplo, opción múltiple [M])).


Template:Nota


  • Relevancia [ Validación] (Predeterminado): muestra lo siguiente:
    • Relevancia: la ecuación de relevancia resaltada con sintaxis para la pregunta o el grupo. Si siempre es verdadero (para mostrarse en cualquier escenario), el valor será 1.
    • Validation - ExpressionScript genera automáticamente la validación ecuación en función de los atributos de la pregunta seleccionada (por ejemplo, número mínimo/máximo de respuestas, valores mínimo/máximo/suma igual, valores individuales mínimo/máximo o validación de expresión regular). Esta sección muestra la ecuación de validación generada para que pueda detectar si hay algún error (como variables no definidas).
      • La validación a nivel de pregunta muestra la ecuación necesaria para verificar los atributos de la pregunta descritos anteriormente.
  • **La validación a nivel de subpregunta muestra la ecuación necesaria para implementar array_filter, array_filter_exclude y exclusive_option
    • Predeterminado - si la pregunta tiene un valor predeterminado, se muestra aquí, con la sintaxis resaltada (ya que el valor predeterminado podría ser una expresión).
  • Texto [ Ayuda] (Consejo): muestra lo siguiente:
    • Texto: el texto del grupo, pregunta, subpregunta o respuesta. Su sintaxis está resaltada para mostrar cualquier adaptación incrustado, lo que le permite verificar que ha declarado todas las variables que planea usar en la adaptación.
    • Ayuda : muestra el texto de ayuda para la pregunta, también resaltado con sintaxis.
    • Consejo: muestra el consejo de validación generado internamente, según los atributos de la pregunta. Este mismo consejo se utiliza en todos los estilos de encuesta, además de en las pantallas imprimibles de encuesta y entrada de datos.
    • Atributos de la pregunta: muestra una tabla de todos los atributos relevantes para esta pregunta. Los atributos que podrían ser ecuaciones están resaltados en sintaxis para que pueda validar su precisión.

Las filas están codificadas por colores de la siguiente manera:

  • Grupos - se muestran con un fondo gris claro
  • Preguntas - se muestran con un fondo verde claro
  • ' Subpreguntas' - se muestran con un fondo amarillo pálido
  • Respuestas' - se muestran con un fondo blanco liso

Las respuestas tienen un atributo adicional en la columna Relevancia:

  • Valor: este es el valor interno predeterminado utilizado en los cálculos. Si está utilizando Evaluaciones, este será el valor de la evaluación. De lo contrario, será el mismo que el nombre de la respuesta.


The survey description, welcome and end messages, end URL, Survey data policy notice and label are listed within the Cgeck survey Logic (above the table) if their corresponding fields are not empty!

Usage

At the top of the page, there is a summary message. If all is well, it will say "No syntax errors detected in this survey", or "This group" or "This question", "by itself, does not contain any syntax errors". If the opposite is true, it will say "X questions have syntax errors that need to be corrected".

Each question that has syntax errors gets the background of its leftmost column (i.e. #) color-coded red. Also, a warning stating the number of minimum errors of a question will be displayed under the Name [ID] column. The following errors are common:

  • Undefined variable - if you have not defined all of your variables, or mistyped array_filter (or different sets of answer options for array_filter), then some of your validation questions will show errors. Undefined variables are shown in red text, boxed with a red line.
  • Bad syntax - as you start to use relevance equations, you may use too many or too few parentheses. Such syntax problems are highlighted and boxed in red. If you hover the mouse over any such red-boxed text, a tool-tip will describe the error.

Colors in ExpressScript syntax

Conditions and equations are syntaxhighlighted to easier figure out what you are looking at:

  1. Green / Light Blue: A variable that references a question earlier in the survey
  2. Blue: A function
  3. Grey: A string expression
  4. Brown: A TOKEN expression (participant data)
  5. Black: Operator

Things to check:

  1. Purple: A variable that references a question later in the survey. Usually this is an error and needs to be checked.
  2. Red or red frame: A non-existing variable or reference to an earlier question or a syntax error - usually needs to be checked.


Undefined Variables

If undefined variables are used, the respective variable name will be color-coded in red and surrounded by a red line. If you hover your mouse over the variable name, it will say "undefined variable":



  Attention : Please note that LimeSurvey does not allow survey administrators to create questions that use the same question code. However, it could happen to have similar question codes within a survey if you import a question group or a question that uses the same question code as one of your already-defined questions. The question can still be imported because the question ids are different. However, if you wish to export the survey results to further explore the survey results (R or SPSS), be careful because the question code is seen as a variable!



}}

Bad syntax

Most of the expression-related mistakes are related to bad syntax. This is related to the fact that survey administrators usually miss to add a curly bracket, to properly make use of parentheses, or they use expressions wrongly:



Here are many good examples on the usage of syntax highlighting.


Bad custom JavaScript

The JavaScript errors will also be highlighted in the survey logic check:


Speeding editing and validation

All of the syntax-highlighted text has tooltips embedded, which are clickable:

  1. Tooltips
    • Functions - hovering the mouse lets you see the purpose and syntax definition of the function;
    • Variable Names - hovering the mouse lets you see the position (group, question sequence), question text, and allowable answers for the question.
  2. Actions
    • Variable Names - clicking on the variable name opens a new window that allows you to edit the question. This makes it easy to navigate and verify logic - simply keep clicking on variable names of relevance or validation criteria for the question to see where they come from and how they are used.


Examples

The following examples are taken from the ExpressionScript sample surveys. You can find screenshots of running surveys, explanations, and downloads on that page.


Body Mass Index

Here are screenshots of this example.

This is the question-reorder view of the Body Mass Index calculation. You can see the relevance equations for weight, height, and BMI under the Question column:



For a better survey overview, check the survey logic page:



This survey example is also a good example of nested if() statements to generate the "weightstatus".


Cascading logic

Here are screenshots of this example.

It shows the subquestion validation logic that is automatically generated when you use array_filter and array_filter_exclude. This example also shows how you can substitute the tailored "Other" value (the answer for Q02_other is Q01_other).



Q05 in this example shows simultaneous use of array_filter and array_filter_exclude on Q01 and Q02, respectively. This example demonstrates cascading array_filter capabilities. Note that one of the main reasons for showing the question and subquestion level validation criteria is to help ensure you have not made any typos in specifying the array_filter or array_filter_exclude variable names (or in case you use different variable names for your list of filtered subquestions). If you have such typos, all the invalid variable names will appear in red indicating that they are undefined, letting you quickly fix the problem.



Dynamic relevance

This example demonstrates dynamic cascading relevance logic to control display of question visibility. You can download this example here.

Also note that questions are displayed only if certain validation criteria are met. For example, if a person states that she has 2 kids, certain questions have to be filled in by the respondent (kid1 and kid2).


Group-level relevance

This example shows how group-level relevance appears in the logic check. Here are screenshots of the example described below.

As you can see, the group-level relevance equation (cohabs > 1 && p1_rel != "") appear in the grey Person 2 row for G-2.

You may also notice that all of the questions are mandatory. However, if the group is irrelevant, so are all its questions. As a result, those questions are only truly mandatory if the group is relevant.

You may also note that certain questions are displayed only if the answer to the previous question is not empty. You may see below that if p2_sex is not filled in, p2_name is not going to be displayed, even though it is a mandatory questions. The mandatory question p2_age is also not going to be displayed if p2_name is not filled in. These questions can be considered "conditionally mandatory".

Additionally, note that the tip messages are also automatically created for you. They are organized by value range (min/max), sum value range (min/max/equals), number of answers (min/max), etc (it depends on the used question type and active attributes). Sometimes you want to validate an answer range but don't want to display what might appear to be silly validation tips to the user. In such cases, you can use the hide_tip question option (as in this case, to avoid telling the user that the age must be between 0 and 115 unless they try to enter a bad value - see p2_age).


Comma as radix (decimal) separator

Although LimeSurvey fully supports the use of comma as radix (decimal) separator at run-time, you must still use a decimal as the radix separator at the design-time (e.g., when specifying min/max values in advanced question attributes). The working example can be found here.

Also, remember that the validation logic is created for you automatically from the enabled question attributes. The equations may look overwhelming, but you don't need to worry about them.