IdSurvey 7 Breaking Changes

IdSurvey 7 implementa nuove importanti feature per lo scripting del questionario. Il motore del software è stato completamente riscritto e sono state apportate alcune modifiche in modo da rendere più lineare la sintassi e il comportamento di alcune funzionalità.

Ad eccezione del comportamento dell’operatore logico != diverso da, tutti gli altri breaking changes sono automaticamente convertiti durante l’aggiornamento di IdSurvey.
È comunque importante conoscere le nuove sintassi per una corretta creazione o modifica dei questionari nella nuova versione di IdSurvey.

Sintesi

IdSurvey 6IdSurvey 7Conversione automatica
Operatore di confronto != 
“diverso da”Se si utilizza per confrontare un valore ad una domanda non posta, restituisce vero.Se si utilizza per confrontare un valore ad una domanda non posta, restituisce falso.NO¹
Domanda data e campo Data di NascitaMultipli formati accettatiAccetta solo formato ISO aaaa- mm-dd (Anno Mese Giorno)Non necesaria
Valori aggiuntivi del nominativoGestibili in sola lettura con lo strumento Serbatoio datiGestibili in lettura e scrittura con EndlessField (Campi custom). La funzionalità Serbatoio Dati è deprecata
Espressioni algebriche (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)

¹ Se nei questionari creati in IdSurvey 6 utilizzi filtri con !=, verifica che il nuovo comportamento in IdSurvey 7 sia quello desiderato. Per maggiori dettagli consulta il paragrafo relativo

Dettagli

Operatore di confronto != “diverso da”

In IdSurvey 7 è stato standardizzato il comportamento dei filtri migliorando il comportamento dell’operatore di confronto != diverso da.

In IdSurvey 7, se si utilizza l’operatore diverso da per confrontare una valore ad una domanda non posta, la condizione restituisce false, mentre in IdSurvey 6 restituisce true.

Anche se questo specifico comportamento dell’operatore diverso da in IdSurvey 6 era spesso non desiderato, è possibile che sia stato sfruttato per un uso improprio.

Prima di avviare un’indagine in IdSurvey 7 programmato su una versione precedente, verifica il corretto comportamento dei filtri che utilizzano diverso da. Controlla in particolar modo le condizioni con diverso da che fanno riferimento a domande filtrate.

IdSurvey 6IdSurvey 7
Esempio Q1
Testo della domanda

1 Sì
2 No √

Q2 /F “if(Q1==1)”
Domanda non visualizzata (condizione false).

Q3 /F “if(Q2!=1)”
Domanda visualizzata perché la Q2 risulta diverso da 1 anche se non è stata effettivamente posta.

Q1
Testo della domanda

1 Sì
2 No √

Q2 /F “if(Q1==1)”
Domanda non visualizzata (condizione false).

Q3 /F “if(Q2!=1)”
Domanda non visualizzata perché la Q2 non è stata posta.

Flusso
  • Alla domanda Q1 viene risposto 1
  • La domanda Q2 non viene posta (perché Q1 non è uguale a 1)
  • La domanda Q3 viene visualizzata
 (la condizione con diverso da restituisce vero).
  • Alla domanda Q1 viene risposto 1
  • La domanda Q2 non viene posta (perché Q1 non è uguale a 1)
  • La domanda Q3 non viene visualizzata (la condizione con diverso da restituisce falso).
Spiegazione IdSurvey 6 controlla che la risposta alla domanda Q2 sia diverso da 1, ignorando se la domanda sia stata effettivamente posta all’intervistato. IdSurvey 7 controlla in primo luogo se la domanda Q2 è stata posta. Se non posta, la condizione restituisce sempre false e quindi la domanda Q3 non verrà visualizzata.


Domanda data e campo Data di Nascita (Valori data in formato ISO)

In IdSurvey 7 è stato uniformato lo standard utilizzato per i valori data. I valori registrati dalle domande data e il campo Data di Nascita, ora utilizzano lo standard ISO (aaaa-mm-gg), indipendente dal tipo di visualizzazione impostato.
Questo garantisce il corretto funzionamento della funzione compare date.

Valori aggiuntivi del nominativo (Serbatoio dati nominativi)

In IdSurvey 7 il tool “Serbatoio dati nominativi” è stato sostituito dalla funzionalità “EndlessFields”.
Questa nuova caratteristica consente di importare, creare e gestire una grande quantità di valori direttamente nei nominativi, in modo del tutto simile alla normale gestione dei campi standard. Diversamente dal Serbatoio dati che poteva essere utilizzato solo in lettura, EndlessFields consente di gestire i valori come vere e proprie variabili.

IdSurvey 6IdSurvey 7
Per richiamare un dato presente nel file serbatoio era necessario inserire il codice della “chiave” tra i simboli $. Per richiamare un dato di un campo del nominativo è necessario inserire il codice fra parentesi graffe, esattamente come per richiamare qualsiasi altro campo del nominativo.
Esempi:
Condizione di visualizzazione: if($numerofigli$ >0) Text Piping: Lei ha detto di avere $S07.1$ pazienti...
Esempi:
Condizione di visualizzazione: if({numerofigli} >0) Text Piping: Lei ha detto di avere {S07_1} pazienti...
Note

  • Per garantire la retro compatibilità viene accettata anche la vecchia sintassi con il simbolo $ utilizzata in IdSurvey 6.
  • I campi custom (EndlessFields) non possono contenere caratteri speciali come spazi, punti, trattini, ecc...
  • Durante l’aggiornamento a IdSurvey 7, i valori e le chiavi del serbatoio dati e i relativi codici utilizzati in filtri e text piping di tutti i questionari, verranno automaticamente migrati per garantire la compatibilità con EndlessFields. Eventuali caratteri speciali saranno automaticamente sostituiti con underscore.


Espressioni algebriche (ARITH)

In IdSurvey 7 la funzione ARITH non è più disponibile.
Nelle condizioni di visualizzazione, per aggiungere espressioni algebriche è sufficiente scrivere l’operazione aritmetica fra parentesi tonde.

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



Per effettuare operazioni aritmetiche nel TextPiping, come ad esempio nel testo di una domanda, è necessario scrivere l’espressione algebrica all’interno di tag fs.

IdSurvey 6IdSurvey 7
Lei ha detto di aver percorso ARITH([D2.1]+[D2.2]) chilometri

Lei ha detto di aver percorso <fs>[D2.1]+[D2.2]</fs> chilometri
Note

  • Da interfaccia grafica è possibile inserire l’espressione algebrica utilizzando il bottone disponibile in ogni editor dei testi. In questo caso il tag viene aggiunto automaticamente e sarà quindi sufficiente scrivere l’espressione, ad esempio [D2.1]+[D2.2].


Sintassi delle funzioni avanzate

In IdSurvey 7 gli argomenti di tutte le funzioni devono essere racchiusi tra parentesi tonde. Nella tabella di sintesi trovi un confronto di sintassi di alcune funzioni avanzate, fra la precedente e la nuova versione di IdSurvey.