Tab Separated Value survey structure/nl

=Tabgescheidenwaarden-bestand importeren en exporteren van enquête-structuur=

Deze functie is ontworpen om het gebruik van een spreadsheetprogramma, zoals Excel, LibreOffice of Google-Docs, te vereenvoudigen. Het voorkomt dat je afhankelijk bent van SGQA-codes.

Deze functie ondersteunt de invoer uit bestanden die ASCII of UTF-8 gecodeerd zijn met door tabs gescheiden waarden. Deze TSV-bestanden zijn van het bestandstype txt.

=Beginnen=

De eenvoudigste manier is om een bestaande enquête te pakken en die te exporteren in een tabgescheiden-formaat. Gebruik de normale exporteerknop, maar selecteer dan niet het lss-formaat maar het tabgescheiden-formaat (*.txt)".  Het uitvoerbestand is dan in het goede formaat (tab delimited unicode file), met de goede kolomkoppen.

Elk spreadsheetprogramma dat het tabgescheiden-formaat ondersteunt, voldoet. LimeSurvey kijkt niet naar de opmaak in de spreadsheet, maar je mag wel opmaak gebruiken.

Het uitvoerbestand is in UTF-8 formaat met de Byte Order Mark (BOM) als de eerste drie (verborgen) tekens. Als je dubbelklikt op dit bestand (.txt) en het direct in Excel probeert te openen, dan gaat het niet goed omdat Excel niet herkent dat het in UTF-8 is. Als je dit bestand in Excel wilt openen, start dan eerst Excel en open dan het bestand via Excel en geef aan dat er UTF-8 encoding gebruikt is.

Er is een regel voor elke groep, vraag, subvraag en antwoord. Er zijn ook regels voor globale enquêtevariabelen en voor taalspecifieke variabelen. De standaardtaal wordt eerst getoond, gevolgd door de andere talen. Als er meerdere talen zijn wordt eerst de gehele inhoud voor de standaardtaal in het bestand opgenomen. Daarna voor elke andere gebruikte taal, met natuurlijk dezelfde indeling.

Regels zijn afhankelijk van de context. Vragen die na een groep komen, zijn een onderdeel van die groep, subvragen na een vraag zijn subvragen van die vraag, antwoorden na een vraag zijn antwoorden op die vraag. Er worden daarom geen ID's (gid, qid, sqid) bij vragen gebruikt. Die worden automatisch toegekend bij het importeren. In dit formaat worden dus geen gid, qid, of sqid (of SGQA codes) gebruikt.

=Tips=

Het doel van het tabgescheiden-formaat import/export is dat je snel je enquête in een spreadsheet kunt ontwerpen. Je kunt dit importeren meerdere keren na elkaar doen om je enquête in een aantal stappen steeds beter te maken, door de geldigheid met de functie "Enquête logica-bestand" of door de enquête te testen. Na elke keer importeren heb je een nieuwe enquête, dus je kunt er een heel stel aanmaken. Zorg ervoor dat je oudere versies verwijderd als je ze niet meer nodig hebt bij het ontwerpen van je enquête. Omdat je geen SGQA-codes gebruikt in dit formaat, hoef je je ook geen zorgen te maken over de codes die LimeSurvey toekent aan de enquête, groep, vraag en antwoorden.

Met deze aanpak kun je wat handige zaken doen met het maken van enquêtes:
 * 1) Gebruiken van dezelfde antwoorden voor meerdere vragen.  Kopieer alleen de 'A'-rijen en plak ze na elke vraag die dezelfde set antwoorden moet hebben.
 * 2) Gebruiken van dezelfde subvragen voor meerdere vragen.  Kopieer de 'SQ'-rijen en plak ze na elke vraag die dezelfde subvragen moet hebben.
 * 3) "Herhalen" - een groep meerdere keren gebruiken.  Als de groep naar je zin is, kopieer de groep dan zo vaak als het nodig is.  Gebruik Excel om alleen de 'G'-rijen te bekijken (voor groepen), en gebruik de Excel kolomsleepfunctie om de vergelijkingen voor elke groep bij te werken (bijv. voor een telling kan de eerste vergelijking zijn "aantalMensen > 1", de volgende moet zijn "aantalMensen > 2").  Door het slepen wordt het nummer aangepast.  Filter op 'Q'-rijen en zorg ervoor dat elke vraag een unieke waarde heeft (bijv. g1_v1, g1_v2, g1_vN, gebruik find/replace om in de 2e groep g1 te wijzigen in g2; g3 voor de volgende, enz.).
 * 4) Wijzigen volgorde vragen/groepen.  Wijzig eenvoudig de rijen in je spreadsheetbestand.
 * 5) Testen enquête-modules.  Bij lange enquêtes wil je mogelijk het testen in meerdere modules doen.  Maak gewoon voor elke module een nieuw werkblad in Excel. Dit voorkomt dat je veel gegevens moet invoeren om latere modules van de enquête te testen.
 * 6) Testen verplichte vragen.  Een veelgehoorde klacht is dat je veel vragen verplicht moet maken, maar dat je die bij het testen wilt overslaan.  Maak gewoon een centraal werkblad aan met de uiteindelijk gewenste waarden.  Om te testen verwijder je dan de "mandatory" kolom en bewaart het resultaat als een kopie.  Test dan door die versie te importeren, alle vragen zijn dan optioneel.  Importeren na het testen weer de centrale versie.
 * 7) Standaarden zetten.  Je kunt deze waarden ook in de bestemde kolom zetten en dus niet via de GUI invoeren.  Soms is het niet mogelijk om via de GUI de gewenste waarde in te voeren, zoals bij expressies om een standaard voor een lijst in te voeren (bijvoorbeeld een aantal token-attributen).
 * 8) Vertaling.  Je kunt per taal een kopie van je bestand maken.  Kopieer alle regels voor de standaardtaal en pas het taalveld aan.  Het vertalen kun je door vertalers laten doen, daarna maak je er weer een bestand van.
 * 9) Bulk instellen van geavanceerde vraagattributen.  Misschien wil je al je vergelijkingen in het begin zichtbaar maken (dan zie je de waarde bij het verzamelen van de gegevens), maar ze verbergen als je de enquête in productie gaat gebruiken.  Filter dan het spreadsheet op class = 'Q' en vraagtype = '*' (vergelijking), en zet bij elke vergelijking always_hide op 1.  Op dezelfde manier kun je na het aanmaken van de enquête besluiten welke vragen in de openbare statistieken getoond worden.  In plaats van elke vraag via het scherm te wijzigen, kun je filteren op class = 'Q', en  public_statistics op 1 zetten voor alle vragen die getoond moeten worden in de statistieken.
 * 10) Zoek en vervang.  Als je een bepaalde tekst in al je vragen wilt wijzigen, dan kun je met Excel zoeken en de wijzigingen aanbrengen.  Ook kun je op deze manier, als je dat wilt, je variabelen hernoemen.  Als je dit zoeken en vervangen met reguliere expressies wilt doen, selecteer dan de gewenste kolom en kopieer die naar een tekstverwerker, breng je wijziging aan en kopieer het resultaat terug naar de kolom in het spreadsheet.
 * 11) Toestemming verkrijgen.  Als je onderzoek doet, dan heb je mogelijk toestemming nodig van iemand die de enquête wil reviewen.  Dit kan een gemakkelijke manier zijn om de teksten te laten zien.  Of voor overleg met de klant.
 * 12) Overeenstemming team.  Als je een team wilt laten instemmen met de presentatie of de tekst van een vraag of een vraaggroep, dan kun je hiermee snel een prototype maken en wijzigen door het spreadsheet te wijzigen en te importeren, en dan het team via het voorvertonen van de vraag(groep) laten zien wat de gebruikers zullen zien.
 * 13) Upgraden van andere enquête-formaten.  Als je een bestaande enquête in XML, Word, of ander formaat hebt, dan kun je een vertaling doen om het naar dit formaat om te zetten.  Je kunt ook proberen dit naar het .lss formaat te vertalen, het voordeel van dit formaat is dat je geen rekening hoeft te houden met foreign key relaties tussen groepen, vragen, subvragen, antwoorden en standaardwaarden.

=Beperkingen=
 * 1) Deze functie werkt door het ontwerp alleen goed voor enquêtes die qcode gebruiken (dus niet SGQA).  De functie neemt aan dat variabelenamen (vraag-identifiers) in de enquête uniek zijn. Namen van subvragen kunnen worden herhaald, zolang ze maar uniek zijn binnen elke vraag.

=Bestandsformaat=

Algemeen
We gebruiken dezelfde groep kolomkoppen voor meerdere zaken. De eerste 14 kolommen zijn voor verschillende doelen afhankelijk van het type van de regel (bijv. groep, vraag). De andere kolommen is een alfabetische lijst van de databaseveldnamen voor de geavanceerde vraagcodes. De syntax per type staat hieronder.

De eerste 14 kolommen:
 * 1) id
 * 2) related_id
 * 3) class
 * 4) type/scale
 * 5) name
 * 6) relevance
 * 7) text
 * 8) help
 * 9) language
 * 10) validation
 * 11) mandatory
 * 12) other
 * 13) default
 * 14) same_default

Discussie en schermafdrukken

Enquête globale parameters
Er is een regel per parameter in de enquête-tabel.
 * 1) class => 'S'
 * 2) name => database field name
 * 3) text => value

Enquete taalspecifieke parameters
Er is een rij per veld per taal in de surveys_language settings tabel. Alle regels bij een specifieke taal worden verzameld voor ze worden toegevoegd in de database-tabel.
 * 1) class => 'SL'
 * 2) name => database veldnaam
 * 3) text => waarde
 * 4) language => taal

Groepen
Er is een groepsregel per gebruikte taal. Bij 3 gebruikte talen zijn er dus 3 regels.
 * 1) id => unieke numerieke identificatie van de groep, vanaf 1, hetzelfde nummer wordt gebruikt bij de aanvullende talen van dezelfde groep
 * 2) class => 'G'
 * 3) name => group_name -- id van de groep
 * 4) relevance => grelevance -- groepslevel relevantie vergelijking, zonder accolades
 * 5) text => description -- taalspecifieke groepsbeschrijving
 * 6) language => language -- taal van de groep (bijv. 'en')

Vragen
Een regel per vraag, per gebruikte taal. Vragen behoren bij de groep die eraan voorafgaat.
 * 1) id => unieke numerieke identificatie van de groep, vanaf 1, hetzelfde nummer wordt gebruikt bij de aanvullende talen van dezelfde groep
 * 2) class => 'Q'
 * 3) type/scale => type -- de (meestal één letter) vraagtype (bijv 'M' is Meerkeuze)
 * 4) name => title -- de unieke vraagnaam (de basis van de qcode naamgeving)
 * 5) relevance => relevance -- de relevantie vergelijking  van de vraag
 * 6) text => question -- de tekst van de vraag in een specifieke taal
 * 7) help => help -- taalspecifieke helptekst
 * 8) language => language -- de taal van de groep (bijv. 'en')
 * 9) validation => preg -- de optionele regulaire expressie validatie-criteria van de vraag
 * 10) mandatory => mandatory -- 'Y' indien verplicht
 * 11) other => other -- 'Y' indien de optie 'Anders' beschikbaar moet zijn (niet voor alle vraagtypes)
 * 12) default => default -- indien gezet, de standaardwaarde-tabel voor de vraag
 * 13) same_default => same_default -- 'Y' voor ja, dan gelden de standaardwaarden van de standaardtaal ook voor de andere talen

Subvragen
Een regel per subvraag per gebruikte taal. Subvragen behoren bij de vraag die eraan voorafgaat.
 * 1) id => unieke numerieke identificatie van de vraag. Subvragen gebruiken de eerst volgende beschikbare waarde. Nummer het id oplopend met een unieke waarde, maar gebruik hetzelfde nummer voor een aanvullende taal bij dezelfde (sub)vraag.
 * 2) class => 'SQ'
 * 3) type/scale => scale_id -- 0 of 1, afhankelijk van het vraagtype (bijv. array text heeft 2 schalen)
 * 4) name => title -- de "naam" van de subvraag, bijv. die gebruikt voor het uitsluiten van de andere
 * 5) relevance => relevantie -- (toekomstige) ondersteuning subvraaglevel relevantie
 * 6) text => tekst -- taalspecifieke tekst van de subvraag
 * 7) help => help -- (toekomstige) ondersteuning subvraaglevel help
 * 8) language => taal -- de taal van de subvraag
 * 9) validation => preg -- (toekomstige) ondersteuning subvraaglevel regulaire expressie-validatie (bijv. voor postcode)
 * 10) mandatory => mandatory -- (toekomstige) ondersteuning subvraaglevel verplicht (bijv. maak maar een paar subvragen verplicht)
 * 11) default => default -- indien gezet, de standaardwaarde-tabel voor de subvraag
 * 12) same_default => same_default -- voor ja, dan gelden de standaardwaarden van de standaardtaal ook voor de andere talen

Antwoorden
Een regel per antwoord per gebruikte taal. Antwoorden behoren bij de vraag die eraan voorafgaat, en de antwoorden staan in de gewenste volgorde.
 * 1) id => gebruik hetzelfde ID als bij de vraag waartoe het behoort
 * 2) class => 'A'
 * 3) type/scale => scale_id -- 0 of 1 (bijv. voor dubbele-schaal)
 * 4) name => code -- de unieke identifier van het antwoord
 * 5) relevance => assessment_value -- indien optie beoordelingen wordt gebruikt, dan is dit de beoordelingswaarde van het antwoord
 * 6) text => answer -- taalspecifieke tekst van het antwoord
 * 7) language => taal -- de taal van het antwoord

Beoordelingen
Een regel per beoordeling per gebruikte taal. Deze regels staan achteraan in het bestand.
 * 1) id => unieke numerieke identificatie van de beoordeling, vanaf 1, gebruik voor aanvullende talen hetzelfde nummer bij dezelfde beroordeling
 * 2) related_id => id van de bijbehorende groep
 * 3) class => 'AS'
 * 4) type/scale => beoordelingassessment scope: T-Total, G-group
 * 5) name => name
 * 6) text => message
 * 7) min_num_value => Minimum
 * 8) max_num_value => Maximum
 * 9) language => language -- the language for this answer (e.g. 'en')

Quota's
Een regel per quota. Deze regels worden achteraan het betand toegevoegd.
 * 1) id => unieke numeriek identificatie van de quota, beginnend vanaf 1
 * 2) class => 'QTA'
 * 3) name => quota naam
 * 4) mandatory => limiet
 * 5) other => quota actie
 * 6) default => active
 * 7) same_default => autoload URL

Quota taalinstellingen
Een regel per quote per gebruikte taal. De taalinstellingsregels van de quota behoren bij de voorafgaande quota.
 * 1) id => unieke numerieke identificatie voor de quota taalinstelling, vanaf 1. Elke regel voor verschillende regels voor verschillende enquête-talen moet een ander ID hebben
 * 2) related_id => quota id van de quota waar het bij behoort
 * 3) class => 'QTALS'
 * 4) relevance => tekst
 * 5) text => URL
 * 6) help => URL beschrijving
 * 7) language => taal -- (bijv. 'en')

Quota leden
Een regel per quota lid, taalonafhankelijk. Quota lidregels moeten direct na de vraag komen waar het bij behoort.
 * 1) id => unieke numeriek identificatie voor de quota leden, vanaf 1
 * 2) related_id => quota id van de bijbehorende quota
 * 3) class => 'QTAM'
 * 4) name => antwoordcode

Condities
Een regel per conditie, taalonafhankelijk. Conditie-regels moeten direct na de vraag komen waarbij het behoort.
 * 1) id => unieke numerieke identificatie van de conditie, vanaf 1.
 * 2) related_id => id van de bijbehorende vraag, indien van toepassing
 * 3) class => 'C'
 * 4) type/scale => scenario
 * 5) name => antwoord veldnaam
 * 6) relevance => vergelijkingsoperatie
 * 7) text => verwacht antwoord