xlsform data collection

Per chi ha a che fare con la business intelligence, è chiara la ragione per interessarsi ai sistemi di rilevazione: se non ci sono dati, non c’è nemmeno conoscenza.

E, tra l’altro, vi sono altre ottime ragioni, ad esempio, geografiche, come specificano Giuseppe Borruso e Viola Defend nel loro articolo circa l’esperienza di sensori urbani.

Entriamo in questo post più nel dettaglio: cerchiamo di vedere come fare praticamente a strutturare un formulario di raccolta dati, a cui si può avere accesso tramite tablet o cellulare.

La logica di varie possibilità di raccolta dati con cellulari o tablet, è di creare dei formulari (poi li chiameremo form), da cui l’utente (cittadino, collaboratore, dipendente) carica i dati su un server (nostro o a cui abbiamo accesso).

La possibilità che ho preso in considerazione è di ona.io., che permette – tramite una app – di usare il proprio cellulare o tablet, ma anche di usare un qualsiasi browser di ottenere un link e compilare on line il formulario.

Altre possibilità sono:

  • Formhub (cellulari Android + Web) alla pagina https://formhub.org
    • si descrive come un open source data collection e ora non è più aggiornato
  • Fulcrum
    • “Fulcrum is a hosted mobile forms platform that enables you to build …”
    • ha una versione prova di 30 giorni, poi a 18 $/mese
    • anche per Apple
  • Magpi
    • usa SMS per interloquire con gli utenti.

ona front page

 

Il formato xlsform

Ci concentriamo sull’uso dei xlsform come il modo per costruire un formulario (preparando, di fatto, un foglio di calcolo), che è poi, uno standard de facto, in uso anche per ona.io.

Il formato xlsform è il precursore di un altro formato aperto (xform).

 


Vediamo come si prepara un formulario.

Come detto, di fatto, prima del passaggio nel server ona.io il nostro formulario è un normale foglio di calcolo (prendo di fatti il nome dai fogli excel, con estensione xls, ma possono essere compilati anche con open office) composto da 3 fogli (o meglio, da – come minimo – 2 fogli).

I singoli fogli si chiamano: survey; choices; settings.

  • survey;
    • contiene i metadati e le domande vere e proprie
  • choices;
    • le opzioni che sono collegate alle domande
  • settings
    • altre impostazioni, non fondamentali; tant’è che può anche non esserci

 

Dettagli nella compilazione del  xlsform

In soldoni (mentre una trattazione chiara ed approfondita la si trova in xlsform.org), entriamo a vedere come si crea un formulario in xlsform.

Iniziamo con il foglio survey, che contiene le domande che appariranno. Vi saranno, nel foglio, varie intestazioni di colonne, le più probabili sono:

  • type
    • indica il tipo di variabile (text, date, integer, …) o se la risposta va ricercata da un elenco (in questo caso avremo “select one from …”)
  • name
    • indica il nome della variabile associata alla domanda
  • label
    • la domanda vera e propria
  • hint
    • una descrizione più estesa della domanda (non è obbligatoria, ma molto utile, soprattutto se la domanda non è immediatamente chiara)
  • relevant
    • contrariamente a quanto potremmo pensare, relevant serve per sapere se la domanda va fatta in ogni caso (ed allora la cella resterà in bianco) o se va fatta solo in funzione di una risposta precedente (ed allora vi sarà un testo tipo  ${paziente_presenza} = ‘no’, che sta a indicare: “fai questa domanda solo se alla precedente, che chiedeva della presenza del paziente, la risposta è stata no). Un’altra nota: attenzione ad usare l’apostrofo e non altri caratteri simili, per definire una riposta, quindi  ${appunti} = ‘yes’ va bene, mentre ${appunti} = “yes” non va bene.
  • constraint
    • indica eventuali limitazioni nelle risposte accettate, specialmente per numeri, ad esempio il numero deve essere fra 0 e 150 se scrivo  “. >= 0
      and . <= 150” nella cella
  • default
    • viene indicato un valore di default da cui partire nella risposta, come, ad esempio ${today}, in caso di un formato date.
  • calculation
    • se si indica un dato come elaborazioni, calcolo, di dati precedentemente raccolti nello stesso formulario

"

Proseguiamo con il foglio choices, dove troveremo 3 intestazioni di colonne:

  • list name
    • dove apparirà lo stesso nome usato per definire la lista di riposte in corrispondenza di “select one from …” nel foglio survey
  • name
    • nome di ognuna delle variabili
  • label
    • testo (etichetta) associata alla variabile, e mostrata al momento della compilazione

 

Riprendendo il filo, dall’inizio:

  • nella colonna type va il tipo di variabile, in name il nome della variabile ed in label il testo che si associa nel formulario.
  • Se come tipo di variabile abbiamo solo text e numeri (integer, decimal), abbiamo finito.
  • Mentre se abbiamo caselle a scelta multipla dobbiamo compilare anche il fogli choices. Infatti, come detto, una scelta multipla implica, nella colonna type, un testo del tipo “select one from si_no”, dove si_no è un elenco di possibilità (in questo caso, banalmente, “si” o “no”):
    • list name
      • si_no
    • name
      • si
      • no
    • label
      • la risposta è si
      • la risposta è no

 

 

Nel caso di scelta multipla

Ripetiamo, perché probabilmente vi capiterà di utilizzarla molto, la procedura per definire una scelta multipla.

Il nome della variabile a cui vogliamo far ricevere solo uno fra un valore che noi abbiamo già pensato (un sì o un no; il nome del giorno della settimana, …) si trova nella seconda colonna del foglio survey (colonna identificata dal testo name).

Nella prima colonna, type, dobbiamo indicare”select one from nome_della_mia_lista_personalizzata”. A questo punto la variabile non può ricevere valori aleatori, ma solo i avere valori predefiniti, che definirò nella colonna name nel foglio choices.

Riportiamo un esempio dal foglio pubblico a questo indirizzo docs.google.com, si vuole sapere quale browser si usa. Nella colonna Type, del foglio survay, appare “select all that apply from browsers“, mentre nella colonna name appare “web_browser”.

Quindi:

  • “web_browser”
    • nome della variabile che troverò nel formulario
  • “select all that apply from browsers“, mentre nella colonna name appare “web_browser”.
  • vedete che alla list name  list name “browsers”, corrispondono 4 possibile risposte “firefox, chrome, ie, safari” che l’utente vedrà, però, come specificato nella colonna label, ossia: “Mozilla Firefox, Google Chrome, Internet Explorer, Safari”.
  • in questo caso il testo in survay, type non è più “select one”, scegli solo una, ma “select all”, posso scegliere più di una possibilità!

 

Nel caso di un gruppo di domande 

Supponiamo di voler fare una serie di domande utili solo se una precedente aveva avuto un sì come risposta.

Inizieremo allora un group, ed infatti nella colonna type del foglio survay ci sarà un “begin group”, al cui gruppo daremo immediatamente un nome nell’attigua cella name. Ovviamente, essendo relevant, la colonna de stabilisce se si mostra o no una domanda, là dovremmo ancora una volta, come nel caso di una singola domanda dipendente da una che l’ha preceduta, scrivere ${nome_della_variabile} = ‘valore_della_variabile_idoneo’ (dove si intende “valore della variabile idoneo a far eseguire le domande del gruppo”.

Si tratta, praticamente, di emulare una struttura del tipo “if … then …”.

Il gruppo va chiuso con una riga in cui semplicemente si scrive, in type, “end group”.

 

Nel caso di un domande ripetute 

Nel caso di una parte di formulario che si deve ripetere un numero imprecisato di volte, avrebmo un blocco “repeat”.  Comincerà, nella colonna type del foglio survay con “begin repeat” per chiudersi con “end repeat”. Il repeat è una soluzione obbligata ogni qualvolta non sappiamo a priori in numero di oggetti a cui applicare le domande (pensiamo ad un cliente che può aver comprato più di un nostro servizio, per ognuno dovremo formulare domande specifiche).

Debug

No panic, perché al momento di caricare ona.io ci dà un aiuto, in caso di errore, dicendoci dove c’è il baco.

Upload Failed
[row : 13] List name not in choices sheet: giudizio

Nel testo citato era alla riga 13 del foglio excell.

 

Oppure, potrebbe dire che “l’estensione è sbagliata”. Infatti se anche usate openoffice per creare il formulario, attenzione che l’estensione sia xls

Upload Failed
Filename must end with ‘xls’ or ‘xlsx’.
Your file should have the .xls or .xlsx file extension because Ona uses XLS Forms to create forms.
Not sure what to do? Read more aboutUsing XLSForms

Formulario caricato ma non visibile

 

Una volta controllato che il fomulario appena creato si “digerito” (o meglio capito e bene interpretato) dal server, si hanno due stati del formulario (Form status):

  • Active – Form accepts submissions.
    • può essere scaricato e usato dagli utenti
  • Inactive – Form does not accept submissions from anyone
    • non può essere scaricato né tanto meno usato on line dagli utenti

 

 


La procedure di complilazione tramite l’app

Come accennavamo il formulario è compilabile anche tramite una pagina web, e non solo con una app direttamente sul cellulare o tablet.

Poiché ci sembra che questa seconda procedura non sia immediatamente chiara, entriamo nei dettagli della stessa.

Al fine di raccogliere i dati si deve installare nel proprio disponsibito (tableo o cell) la app chiamata ona collect. Una volta scaricata da google play ed installata:

  • si entra
  • si chiede di “ottenere un formulario in bianco”
  • (ci si collega a ONA)
  • (lo scarica nel proprio dispositivo … dice dove)
  • si ritorna la menù principale
  • questa volta la scelta deve essere “riempire un nuovo formulario”.
  • salvare il formulario

A questo punto i dati sono stati raccolti, ma sono ancora sul vostro cellulare. Avrete infatti un formulario “COMPILATO, MA NON INVIATO”, sempre dal menù principale si deve ora scegliere “inviare formulari finiti”, così che siano nel server.

 

 

Export data

Ultimo, ma fondamentale passaggio, quello di esportare i dati (cioè riaverli dal server in locale, per elaborarli, anche se ona già fornire una prima elaborazione degli stessi).

Vi sono diverse possibilità (ma non direttamente una tabella in SQL).

Preparing CSV
Non spaventatevi se la preparazione dei dati è lenta o molto lenta, in casi di prove anche con solo un paio di record. Appena saranno pronti, ona vi avvertirà!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *