Skip to content

Umfrageimport: Qualtrics, SurveyJS, LimeSurvey, XLSForm, REDCap, Beiwe und Network Canvas

Einen Fragebogen aus Qualtrics, SurveyJS, LimeSurvey, XLSForm (ODK, KoboToolbox), REDCap, Beiwe oder Network Canvas samt seiner Logik in Potato-Umfrageseiten umwandeln.

Neu in v2.12.0

potato import wandelt einen in einem anderen Tool erstellten Fragebogen in Potato-Umfrageseiten um: die Fragen, die Seiten und die Ein- und Ausblendelogik, übersetzt in Potatos bedingte Fragen und Seitenregeln.

QuelleDatei-f
Qualtrics.qsf (Survey → Tools → Import/Export → Export Survey)qualtrics
SurveyJSDas Umfrage-JSON, das SurveyJS Creator speichertsurveyjs
LimeSurvey.lss (Display/Export → Survey structure)limesurvey
XLSForm (ODK, KoboToolbox, SurveyCTO, Ona).xlsxxlsform
REDCapDas Data Dictionary als .csv (Designer → Download the current Data Dictionary) oder der Metadatenexport der APIredcap
BeiweUmfrage-JSON oder ein Export der Studieneinstellungenbeiwe
Network CanvasEine Protokolldatei .netcanvas oder deren protocol.jsonnetwork_canvas

Das Format wird anhand der Datei erkannt, und -f legt es explizit fest. Keine dieser Dateien enthält Antworten. Der Import überträgt also das Instrument, nicht die damit erhobenen Daten.

In ein neues Projekt importieren

bash
potato import -i screener.qsf -o my-study/
python potato/flask_server.py start my-study/config.yaml -p 8000

Die Umfrageseiten landen in my-study/surveys/, eine JSON-Datei pro Seite. config.yaml führt sie in phases.order vor einer Phase annotation mit einer Platzhalterfrage und drei Platzhalter-Items auf, die Sie durch die eigentliche Aufgabe ersetzen.

In ein bestehendes Projekt importieren

bash
potato import -i exit_survey.lss --into my-study/config.yaml --survey-slot poststudy --prefix exit_

Die Seiten landen in surveys/ neben dieser Konfiguration, und eine zusammengeführte Kopie wird als config.with-exit_survey-exit.yaml geschrieben, mit dem Bericht in IMPORT_REPORT.exit_survey-exit.md. Die ursprüngliche Konfiguration wird nicht verändert.

--prefix benennt jede importierte Frage und Seite um. Verwenden Sie es, wenn Fragenamen mit denen des Projekts kollidieren würden, denn der Import bricht bei einer Kollision ab. Der Import bricht auch ab, statt Dateien zu ersetzen, die ein früherer Import geschrieben hat, sodass Änderungen an einer importierten Umfrage nicht überschrieben werden.

Die zusammengeführte Kopie unterscheidet sich vom Original nicht nur durch die neuen Seiten. Setzt die Konfiguration export_include_phase_data nicht, setzt die Kopie es auf true, damit die Umfrageantworten exportiert werden, und ein Kommentar am Anfang der Kopie weist darauf hin. Umfrageantworten können personenbezogene Daten enthalten. Setzen Sie den Wert daher auf false, um sie aus Exporten herauszuhalten. Kommentare im Original bleiben nicht erhalten, und YAML-Listen werden im Blockstil neu geschrieben.

FlagBedeutung
-o DIRSchreibt ein neues Projekt
--into CONFIGFügt die Seiten einem bestehenden Projekt hinzu und schreibt eine zusammengeführte Kopie
--survey-slotprestudy (Standard, vor der Annotation) oder poststudy
--prefixPräfix für jeden importierten Frage- und Seitennamen
--survey-languageSprache, die aus einer mehrsprachigen Umfrage in LimeSurvey, XLSForm oder Network Canvas übernommen wird

Was aus jedem Format übernommen wird

  • Fragetexte (HTML wird auf Text reduziert), Auswahlmöglichkeiten und Pflichtfragen;
  • Seiten, in ihrer Reihenfolge;
  • Ein- und Ausblendelogik für Fragen und Seiten, übersetzt in display_logic und show_when von Seiten, einschließlich verschachteltem AND, OR und NOT;
  • Randomisierung der Optionsreihenfolge (randomize_order) und der Fragenreihenfolge (randomize_questions), sofern die Quelle sie hat.

Antworten auf Auswahlfragen werden als Optionstext gespeichert, daher vergleicht die übersetzte Logik mit dem Optionstext, nicht mit den Codes der Quelle.

Alles, was der Importer nicht übersetzen konnte, wird in IMPORT_REPORT.md mit Fundstelle und Grund aufgeführt, und die ersten zehn Einträge werden ausgegeben. Eine Logikregel, die irgendetwas Unübersetzbares enthält, wird vollständig gemeldet, und die Frage bleibt immer sichtbar, statt nur einen Teil ihrer Regel zu erhalten.

Qualtrics

Jeder Block ist eine Seite, und jeder Seitenumbruch innerhalb eines Blocks beginnt eine weitere. Blöcke im Papierkorb werden übersprungen.

  • Fragen: Multiple Choice (Einfachauswahl, Mehrfachauswahl, Dropdown, NPS), Matrix Likert (als multirate), Texteingabe (einzeilig, mehrzeilig, Zahlenvalidierung als number, Formulare als eine Textfrage pro Feld), Schieberegler, Rangfolge (ranking), Constant Sum (constant_sum) und beschreibender Text (pure_display). "Other"-Optionen mit Textfeld erhalten ein Freitextfeld.
  • Logik: Display Logic mit der Vorrangregel von Qualtrics (AND vor OR innerhalb eines Bedingungssatzes und zwischen den Sätzen If, AndIf und ElseIf), auf gewählten Optionen, Werten der Texteingabe, Werten von Schiebereglern und Anzahlen der Auswahlen.
  • Survey Flow: Branches werden zu Seitenregeln, wobei verschachtelte Branches mit AND verknüpft werden. Ein Randomizer, der alle seine Blöcke zeigt, wird zu einer Ausbalancierungsgruppe. Ein Randomizer, der eine von mehreren Embedded-Data-Zuweisungen zu einem Feld zeigt, wird zu einem Between-Subjects-Faktor unter conditions, und Logik auf diesem Feld prüft condition.<field>. End of Survey innerhalb eines Branch sowie Skip Logic zum Ende der Umfrage werden zu exit_when.
  • Gemeldet, nicht importiert: Loop & Merge (der Block wird einmal importiert), Piped Text, Logik auf Matrixzellen, "is displayed"-Bedingungen, Display Logic auf Ebene der Optionen, Quoten, Web Services, Authenticators, Scoring, eigene Validierung, Request Response (weiche Pflichtangabe), JavaScript und die Fragetypen, für die Potato keine Entsprechung hat (Heatmaps, Hot Spots, Datei-Upload, Unterschrift, Side by Side, Timing, Meta Info).

Umstieg von Qualtrics ordnet den Rest einer Qualtrics-Studie Potato zu.

SurveyJS

  • Elemente: text (Zahleneingaben als number), comment, radiogroup, checkbox, dropdown, tagbox, boolean, rating, ranking, matrix, multipletext (eine Textfrage pro Eintrag), html und slider. Panels werden in die Seite aufgelöst, und das visibleIf eines Panels gilt für jede Frage darin.
  • Logik: visibleIf für Fragen, Panels und Seiten, einschließlich anyof, allof, contains, empty, Auswahlanzahlen über {q.length} sowie and, or und !. Ein Trigger complete wird zu einem exit_when auf der Seite, die die letzte von ihm geprüfte Frage stellt.
  • Gemeldet, nicht importiert: enableIf, requiredIf, choicesVisibleIf, Validatoren, Standardwerte, berechnete Werte und Expression-Fragen, Trigger setvalue, skip und runexpression, dynamische Matrizen und Panels, Datei- und Unterschriftsfragen sowie Logik, die Funktionen aufruft.

LimeSurvey

Beide Dateistrukturen lassen sich importieren: ältere Exporte mit einer Sprachspalte in jeder Zeile und Exporte ab DBVersion 400 mit dem Text in *_l10ns-Tabellen. Verwendet wird die Basissprache der Umfrage, sofern --survey-language nichts anderes angibt. Fragegruppen werden in ihrer Reihenfolge zu Seiten, und die Relevance einer Gruppe wird zum show_when der Seite.

  • Fragen: Liste (Radio, Dropdown, mit Kommentar), 5-Punkte, Ja/Nein, Geschlecht, Mehrfachauswahl, die Array-Typen (als multirate), kurzer und langer Text, numerisch, mehrfach numerisch und mehrfach kurzer Text (eine Frage pro Unterfrage), Rangfolge und Textanzeige.
  • Logik: ExpressionScript-Relevance auf Fragecodes, Unterfragecodes und SGQA-Namen, mit is_empty(), count() über eine Mehrfachauswahlfrage sowie and, or und !, dazu die ältere Tabelle conditions.
  • Gemeldet, nicht importiert: Datums-, Gleichungs-, Datei-Upload- und Dual-Scale-Fragen; versteckte Fragen; Validierung (preg, em_validation); minimale und maximale Antwortzahl; Array-Filter; Randomisierungsgruppen; Quoten; Assessments; Piped Text; sowie if(), regexMatch() und .shown in der Logik.

XLSForm: ODK, KoboToolbox, SurveyCTO und Ona

ODK zeigt eine Frage pro Bildschirm, sofern eine Gruppe nicht mehr verlangt, und Potato fasst die Fragen einer Seite zusammen. Der Import verwendet daher die Gruppierung des Formulars selbst. Jede begin_group mit appearance: field-list oder table-list ist eine Seite, und die Fragen zwischen solchen Gruppen teilen sich eine Seite. Das relevant einer anderen Gruppe wird auf jede Frage darin angewendet, und ihr Label wird zu einer Überschrift. Bei einem Formular mit mehreren Label-Spalten, etwa label::English und label::French, wählt --survey-language French eine aus, andernfalls wird die default_language des Formulars verwendet.

XLSFormPotato
select_oneradio (appearance: minimal als Dropdown)
select_multiplemultiselect
rankranking
integer, decimalnumber
rangeslider (parameters: start= end= step=)
texttext (appearance: multiline als Textfeld)
notepure_display
or_otherEine Option "Other" mit Textfeld
requiredlabel_requirement: {required: true}
relevantdisplay_logic, mit selected(), not(), count-selected(), string-length(), regex() und Vergleichen
parameters: randomize=truerandomize_order

Gemeldet, nicht importiert: Geopunkte und andere Ortstypen, Datum und Uhrzeit, Fotos, Audio, Video, Barcodes und Dateien; Felder vom Typ calculate und hidden sowie Logik, die sie verwendet; Repeats (ihre Fragen werden einmal importiert); constraint, choice_filter, default, read_only und bedingtes required; sowie externe Auswahllisten. Eine .xls-Datei benötigt das Paket xlrd, oder Sie speichern sie als .xlsx.

REDCap

Jedes Instrument (Formular) wird zu einer Seite, in der Reihenfolge, in der das Data Dictionary sie aufführt, und Section Headers werden zu Überschriften auf der Seite.

REDCapPotato
text mit Ganzzahl- oder Zahlenvalidierungnumber mit Minimum und Maximum der Validierung
text mit anderer Validierung, notestext, ein Textfeld für Notizen
radio, dropdown, checkboxradio, select, multiselect
yesno, truefalseradio mit Yes/No oder True/False
sliderslider
descriptivepure_display
Matrixgruppemultirate oder einzelne Fragen, wenn Logik eine Zeile prüft
Pflichtfeldlabel_requirement: {required: true}
Branching Logicdisplay_logic, wobei Auswahlcodes dem Optionstext zugeordnet werden und and stärker bindet als or
@PLACEHOLDERDer Platzhalter des Textfelds
@HIDDEN, @HIDDEN-SURVEYWeggelassen, da Teilnehmende sie nie sehen

Gemeldet, nicht importiert: berechnete Felder und Logik, die sie verwendet, Datei- und SQL-Felder, Validierungstypen, die Potato nicht prüft (Datumsangaben, E-Mail-Adressen und Telefonnummern werden zu einfachem Text mit Formathinweis), andere Action Tags, Piped Values sowie Logik, die Funktionen (datediff, sum), Events ([event][field]) oder den Formularstatus verwendet. Für REDCaps longitudinale Events und wiederholte Instrumente gibt es in Potato keine Entsprechung.

Potato ist kein System zur klinischen Datenerfassung und hat keinen Audit-Trail der Art, wie REDCap ihn für regulierte Studien bietet. Behalten Sie identifizierbare Gesundheitsdaten in REDCap und verwenden Sie Potato für die Annotation und die Fragen rund um sie, etwa wenn Klinikerinnen und Kliniker Notizen oder Bilder labeln.

Beiwe

Jede Umfrage im Export wird zu einer Seite. Fragen vom Typ Info-Text, Schieberegler, Radio-Button, Checkbox und Freitextantwort (numerisch, einzeilig, mehrzeilig) werden importiert, und display_if-Logik wird übersetzt, wobei Radio-Antworten nach Position und Checkbox-Antworten nach Zugehörigkeit geprüft werden. Datums- und Zeitfragen, Audio-Umfragen, Zeitpläne und Timings werden gemeldet, weil Potato keine Zeitplanung von Umfragen hat, ebenso eine teilweise Randomisierung.

Network Canvas

Ein Ego-Formular oder eine Informationsstufe wird zu einer Umfrageseite, und die Netzwerkstufen für einen Knotentyp werden zu einer einzigen ego_network-Frage auf einer Seite, mit ihren Namensgeneratoren, Namensinterpretatoren, Dyaden- und Beziehungsstärke-Zensus sowie Soziogramm. Roster-Assets als CSV oder JSON werden zum Roster des Namensgenerators. Skip Logic für das Ego wird zu show_when, und ein Sprung zum Ende des Interviews wird zu exit_when auf der Seite davor, mit dem Text des Abschlussbildschirms als Nachricht.

Netzwerkstufen für einen Knotentyp teilen sich eine Seite und lassen sich daher nicht einzeln überspringen, und eine Netzwerkstufe, die nach anderen Seiten kam, rückt vor diese. Der Import meldet jede Verschiebung. Filterregeln für Knoten und Kanten, Alter-Edge-Formulare, Narrative- und Geodatenstufen, Datums- und Zeitvariablen sowie Medienelemente werden gemeldet und nicht importiert. Die Seite Ego-Netzwerke enthält die Zuordnung Stufe für Stufe.

Weiterführende Informationen

Implementierungsdetails finden Sie in der Quelldokumentation.