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 e degli operatori algebrici all’interno di stringhe senza apici, tutti gli altri breaking changes vengono 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 6 IdSurvey 7 Conversione automatica
Operatore di confronto != 
“diverso da” Se si utilizza per confrontare un codice di risposta di una domanda non posta, restituisce vero. Se si utilizza per confrontare un codice di risposta di una domanda non posta, restituisce falso. NO1
Operatori algebrici su stringhe senza apici Anche se si utilizza un operatore algebrico all’interno di una stringa si possono omettere gli apici.if([Q1] == 18-30)

/UF "Zona=Emilia-romagna"

Se si utilizza un operatore algebrico all’interno di una stringa, è sempre necessario scriverla fra apici.

if([Q1] == ’18-30')

/UF “Zona='emilia-romagna'"

NO2
Domanda data e campo Data di Nascita Multipli formati accettati Accetta solo formato ISO aaaa- mm-dd (Anno Mese Giorno) Non necesaria
Gestione Multinumero Gli esiti delle chiamate CATI sono associate all’intero nominativo Gli esiti delle chiamate CATI sono associate ai singoli numeri di ciascun nominativo Non necessaria (vedi dettagli)
Valori aggiuntivi del nominativo Gestibili in sola lettura con lo strumento Serbatoio dati Gestibili 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 )
ContainsText if(ContainsText [Q1],’mare’==1) if(ContainsText ([Q1],’mare’)==1)
CountCode if(CountCode Q1 >= 3) if(CountCode (Q1) >= 3)
CountResponsesWithCode if(CountResponsesWithCode Q1,Q2,Q3,Q4,Q5,Q6,1 >= 3) if(CountResponsesWithCode (Q1,Q2,Q3,Q4,Q5,Q6,1) >= 3)
CountResponsesWithText if(CountResponsesWithText Q1,Q2,Q3,Q4,Q5,Q6,'mare' >= 3) if(CountResponsesWithText (Q1,Q2,Q3,Q4,Q5,Q6,’mare’) >= 3)
CheckQuota if(CheckQuota 'Genitori' == 1) if(CheckQuota (‘Genitori')== 1)
Comparedate if(Comparedate [Q1],[Q2]==1) if(Comparedate ([Q1],[Q2])==1)
Goto goto Q45 goto (Q45)
Goto Rnd goto rnd ‘Q11,Q12,Q13,Q14’,Qz goToRnd (Q11,Q12,Q13,Q14,Qz)

 

1 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
2 Se nei questionari creati in IdSurvey 6 sono presenti filtri o “aggiorna campo nominativo” con stringhe senza apici e che presentano uno o più operatori algebrici (+ – * /) assicurati sempre di aggiungere gli apici. 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 un codice di risposta di 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 6 IdSurvey 7
Esempio Q1
Testo della domande
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 è risulta diversa 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.

 

Operatori algebrici su stringhe senza apici

In IdSurvey 7 è stata aggiunta la possibilità di scrivere operazioni algebriche senza l’ausilio di funzioni dedicate.
Qualsiasi valore combinato con un segno -, +, * o / viene processato come operazione matematica. Quando si vuole che un valore sia interpretato come testo, anche in presenza di segni matematici, è necessario scrivere la stringa fra apici. In IdSurvey 6 si poteva aggiornare un campo del nominativo con la fascia di età (ad esempio 18-30) senza l’utilizzo di apici. In questo caso, IdSurvey 7 scriverebbe il risultato della sottrazione (-12) anziché la stringa 18-30. Scrivendo invece la fascia di età fra apici (’18-30′), IdSurvey interpreterà il valore sempre come una normale stringa di testo.

SpiegazioneIdSurvey 6 considera stringa qualsiasi testo inserito dopo l’operatore di confronto di un filtro o dopo il segno uguale di un “aggiorna campo nominativo”.IdSurvey 7 considera stringa solo il testo fra apici.
È comunque ammessa la stringa aperta senza apici se non sono presenti spazi o segni aritmetici.

IdSurvey 6 IdSurvey 7
Esempio 1 if({zona}==emilia-romagna)
oppureif({zona}=='emilia-romagna')

In entrambi i casi, il filtro controlla se il campo zona è valorizzato con ‘emilia-romagna’.

if({zona}==emilia-romagna)

Il filtro calcola emilia meno romagna restituendo zero e quindi controlla se il campo zona è valorizzato con zero.

if({zona}==‘emilia-romagna')

Il filtro controlla se il campo zona è valorizzato con ‘emilia-romagna’.

Esempio 2 /UF “{Campo1}==18-30)"
oppure/UF “{Campo1}==’18-30')”

In entrambi i casi, il Campo1 viene valorizzato con ’18-30’.

UF/ “{Campo1}==18-30)”

Il filtro calcola 18 meno 30 restituendo -12 e quindi controlla se il Campo1 è valorizzato con -12.

/UF “{Campo1}==’18-30')"

Il filtro controlla se il Campo1 è valorizzato con ’18-30′.

Esempio 3 if({provincia}==perugia)
oppureif({provincia}==‘perugia')

In entrambi i casi, il filtro controlla se il campo provincia è valorizzato con ’perugia’.

if({provincia}==perugia)

oppure

if({provincia}==‘perugia')

In questo esempio non è presente nessun operatore algebrico quindi, indipendentemente dalla presenza degli apici, il filtro controlla se il campo provincia è valorizzato con ’perugia’.

 

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.

Gestione Multinumero

In IdSurvey 7, ciascun esito delle chiamate CATI è associato allo specifico numero di telefono del nominativo sul quale è stata effettivamente effettuata la chiamata. Al momento dell’aggiornamento, tutti gli esiti presenti sul nominativo (appuntamenti, richiami, note, ecc) verranno associati al primo numero di telefono disponibile per quel nominativo seguendo l’ordine: telefono, cellulare, altro numero, nuovo numero.

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 6 IdSurvey 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 6 IdSurvey 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 6 IdSurvey 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

Nota

  • 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.