IdSurvey 7 Breaking Changes

IdSurvey 7 implements important new features for the questionnaire scripting. The engine of the software has been completely redesigned and a few changes have been made in order to make both the syntax and the function of some of the features more straightforward.
Except for the function of the logic condition != different than, all the other breaking changes have been automatically converted during the IdSurvey upgrade.
Nevertheless, it is important to get to know the new syntaxes for a correct creation and editing of the questionnaires in the new version of IdSurvey.

Summary

IdSurvey 6IdSurvey 7Auto conversion
Logic condition != 
“different than”If it is used to compare a value to a question not displayed, it gives true.If it is used to compare a value to a question not displayed, it gives false.NO¹
Given question and Date of Birth fieldMultiple formats acceptedAccepts only ISO format yyyy- mm-dd (Year Month Day)Not necessary
Additional values of the contactManageable in reading mode with the Contacts Data Repository tool.Manageable in reading and writing mode with EndlessField (custom fields). The feature Contacts Data Repository is deprecated.
Arithmetic expression (ARITH)if( ARITH(([Q3]+[Q4])*[Q2]) <= 100 )if( ([Q3]+[Q4])*[Q2] <= 100 )
ContainsTextif(ContainsText [Q1],’mare’==1)if(ContainsText ([Q1],’mare’)==1)
CountCodeif(CountCode Q1 >= 3)if(CountCode (Q1) >= 3)
CountResponsesWithCodeif(CountResponsesWithCode Q1,Q2,Q3,Q4,Q5,Q6,1 >= 3)if(CountResponsesWithCode (Q1,Q2,Q3,Q4,Q5,Q6,1) >= 3)
CountResponsesWithTextif(CountResponsesWithText Q1,Q2,Q3,Q4,Q5,Q6,'mare' >= 3)if(CountResponsesWithText (Q1,Q2,Q3,Q4,Q5,Q6,’mare’) >= 3)
CheckQuotaif(CheckQuota 'Genitori' == 1)if(CheckQuota (‘Genitori')== 1)
Comparedateif(Comparedate [Q1],[Q2]==1)if(Comparedate ([Q1],[Q2])==1)
Gotogoto Q45goto (Q45)
Goto Rndgoto rnd ‘Q11,Q12,Q13,Q14’,QzgoToRnd (Q11,Q12,Q13,Q14,Qz)

¹ If you use filters with != in the questionnaires created with IdSurvey 6, please check that the new function on IdSurvey 7 is the one you expect. For further details please go to the section related.

Details

Logic condition != “different than”

On IdSurvey 7 the behavior of the filters has been standardized by improving the logic condition =! different than.

On IdSurvey 7, if you use the condition different than to compare a value to a question the was not displayed, the condition set is false, while it is true on IdSurvey 6.

Even though this specific behavior of the condition different than was usually undesirable on IdSurvey 6, it is possible that it has been used improperly.

Before starting a new survey on IdSurvey 7 that was coded on a previous version, please make sure to check the correct functioning of the filters that use different than. In particular, make sure to check the conditions with different than that refer to conditioned questions.

IdSurvey 6IdSurvey 7
Example Q1
Question text

1 Yes
2 No √

Q2 /F “if(Q1==1)”
Question not displayed (false condition).

Q3 /F “if(Q2!=1)”
Question displayed because Q2 is different than 1 even if it was not actually asked.

Q1
Question text

1 Yes
2 No √

Q2 /F “if(Q1==1)”
Question not displayed (false condition).

Q3 /F “if(Q2!=1)”
Question not displayed because Q2 was not asked.

Flow
  • The answer to Q1 is 1
  • Question Q2 is not displayed (because Q1 is not equal to 1)
  • Question Q3 is displayed
 (the condition with different than gives true).
  • The answer to Q1 is 1
  • Question Q2 is not displayed (because Q1 is not equal to 1)
  • Question Q3 is not displayed (the condition with different than gives false).
Explanation IdSurvey 6 makes sure that the answer to question Q2 is different than 1, ignoring whether the question was asked to the respondent. IdSurvey 7 makes sure whether question Q2 was asked or not in the first place. If not, the condition always gives false and therefore question Q3 will not be displayed.


Displayed question and Date of Birth field (Date values in ISO format)

On IdSurvey 7, the principle used for the date values has been standardized. The values that are registered from the date questions and the Date of Birth field are now using the ISO standard (yyyy-mm-dd), regardless of the type of visualization in use.
This ensures the correct functioning of the compare date function.

Additional values of the contact (Contacts Data Repository)

On IdSurvey 7, the tool “Contacts Data Repository” has been replaced with the “EndlessFields” feature.

This new feature allows you to import, create and manage a large amount of values directly from the contacts list, in a similar way to the normal management of the standard fields.
Unlike the Contacts Data Repository, which could be used exclusively on read-only mode, EndlessFields allows you to fully manage values as variables.

IdSurvey 6IdSurvey 7
In order to recall a specific value contained in the repository, you had to enter the “key” code between the $ symbols. In order to recall a data of a contact field, you have to enter the code in braces, as if you were recalling any other field of the contact.
Examples:
Display condition: if($numerofigli$ >0)Text Piping: You stated that you have $S07.1$ patients...
Examples:
Display condition: if({numerofigli} >0) Text Piping: You stated that you have {S07_1} patients...
Note

  • In order to ensure compatibility with the earlier versions of IdSurvey, the old syntax with the $ symbol is also accepted.
  • Custom fields (EndlessFields) cannot contain special characters such as spaces, periods, dashes, etc...
  • During the upgrade to IdSurvey 7, the keys and values of the Contacts Data Repository as well as the codes used in the filters and text piping of all the questionnaires will be automatically migrated in order to ensure the compatibility with EndlessFields. Any special characters will automatically be replaced with an underscore.


Arithmetic expressions (ARITH)

On IdSurvey 7, the ARITH function will not be available anymore.
On the display conditions, you will need to put the arithmetic operation in round brackets in order to add the arithmetic expressions.

IdSurvey 6IdSurvey 7
if( ARITH(([Q3]+[Q4])*[Q2]) <= 100 ) if( ([Q3]+[Q4])*[Q2] <= 100 )



In order to enter arithmetic operations in the TextPiping, for example in the text of a question, you will need to put the arithmetic expression between fs tags.

IdSurvey 6IdSurvey 7
You said that you walked ARITH([D2.1]+[D2.2]) kilometers

You said that you walked <fs>[D2.1]+[D2.2]</fs> kilometers
Note

  • In the graphic interface is it possible to enter the arithmetic expression using the button available in every text editor. In this case, the tag will be added automatically and you will only need to write the expression, such as [D2.1]+[D2.2].


Syntax of additional functions

On IdSurvey 7, the arguments of all the functions must be put in brackets. In the summary table you will find a syntax comparison of some advanced functions, between the previous and the new version of IdSurvey.