Importación de encuestas: Qualtrics, SurveyJS, LimeSurvey, XLSForm, REDCap, Beiwe y Network Canvas
Convierte un cuestionario de Qualtrics, SurveyJS, LimeSurvey, XLSForm (ODK, KoboToolbox), REDCap, Beiwe o Network Canvas en páginas de encuesta de Potato, con su lógica.
Nuevo en v2.12.0
potato import convierte un cuestionario creado en otra herramienta en páginas de encuesta de Potato: las preguntas, las páginas y la lógica de mostrar y ocultar, traducida a las preguntas condicionales y las reglas de página de Potato.
| Origen | Archivo | -f |
|---|---|---|
| Qualtrics | .qsf (Survey → Tools → Import/Export → Export Survey) | qualtrics |
| SurveyJS | El JSON de la encuesta que guarda SurveyJS Creator | surveyjs |
| LimeSurvey | .lss (Display/Export → Survey structure) | limesurvey |
| XLSForm (ODK, KoboToolbox, SurveyCTO, Ona) | .xlsx | xlsform |
| REDCap | El diccionario de datos .csv (Designer → Download the current Data Dictionary), o la exportación de metadatos de la API | redcap |
| Beiwe | JSON de la encuesta, o una exportación de la configuración del estudio | beiwe |
| Network Canvas | Un archivo de protocolo .netcanvas, o su protocol.json | network_canvas |
El formato se detecta a partir del archivo, y -f lo elige explícitamente. Ninguno de estos archivos contiene respuestas, así que la importación traslada el instrumento y no los datos recogidos con él.
Importar a un proyecto nuevo
potato import -i screener.qsf -o my-study/
python potato/flask_server.py start my-study/config.yaml -p 8000Las páginas de encuesta van en my-study/surveys/, un archivo JSON por página. config.yaml las enumera en phases.order antes de una fase annotation con una pregunta provisional y tres ítems provisionales, que sustituyes por la tarea real.
Importar a un proyecto existente
potato import -i exit_survey.lss --into my-study/config.yaml --survey-slot poststudy --prefix exit_Las páginas van en surveys/ junto a esa configuración, y se escribe una copia fusionada como config.with-exit_survey-exit.yaml, con el informe en IMPORT_REPORT.exit_survey-exit.md. La configuración original no se modifica.
--prefix cambia el nombre de todas las preguntas y páginas importadas. Úsalo cuando los nombres de las preguntas choquen con los del propio proyecto, ya que la importación se detiene ante un conflicto. La importación también se detiene en lugar de sustituir archivos que escribió una importación anterior, de modo que los cambios hechos en una encuesta importada no se sobrescriben.
La copia fusionada se diferencia del original en algo más que las páginas nuevas. Si la configuración no define export_include_phase_data, la copia lo fija en true para que se exporten las respuestas de la encuesta, y un comentario al principio de la copia lo indica. Las respuestas de las encuestas pueden contener datos personales, así que fíjalo en false para dejarlas fuera de las exportaciones. Los comentarios del original no se conservan, y las listas YAML se reescriben en estilo de bloque.
| Opción | Significado |
|---|---|
-o DIR | Escribe un proyecto nuevo |
--into CONFIG | Añade las páginas a un proyecto existente y escribe una copia fusionada |
--survey-slot | prestudy (el valor predeterminado, antes de la anotación) o poststudy |
--prefix | Prefijo para el nombre de todas las preguntas y páginas importadas |
--survey-language | Idioma que tomar de una encuesta multilingüe de LimeSurvey, XLSForm o Network Canvas |
Lo que se conserva en todos los formatos
- la redacción de las preguntas (el HTML se reduce a texto), las opciones y las preguntas obligatorias;
- las páginas, en orden;
- la lógica de mostrar y ocultar en preguntas y páginas, traducida a
display_logicy alshow_whende la página, incluidos AND, OR y NOT anidados; - la aleatorización del orden de las opciones (
randomize_order) y del orden de las preguntas (randomize_questions) cuando el origen las tiene.
Las respuestas a las preguntas de opción se guardan como el texto de la opción, así que la lógica traducida compara con el texto de la opción y no con los códigos del origen.
Todo lo que el importador no pudo traducir aparece en IMPORT_REPORT.md con dónde estaba y por qué, y los diez primeros casos se imprimen. Una regla de lógica que contiene algo intraducible se notifica entera, y la pregunta se deja siempre visible en lugar de darle solo una parte de su regla.
Qualtrics
Cada bloque es una página, y cada salto de página dentro de un bloque inicia otra. Los bloques de la papelera se omiten.
- Preguntas: opción múltiple (única, múltiple, desplegable, NPS), Matrix Likert (como
multirate), entrada de texto (una línea, varias líneas, validación numérica comonumber, formularios como una pregunta de texto por campo), controles deslizantes, ordenación (ranking), suma constante (constant_sum) y texto descriptivo (pure_display). Las opciones "Other" con un cuadro de texto reciben un campo de texto libre. - Lógica: lógica de visualización con la precedencia de Qualtrics (AND antes que OR dentro de un conjunto de condiciones, y entre los conjuntos
If,AndIfyElseIf), sobre opciones seleccionadas, valores de entrada de texto, valores de controles deslizantes y recuentos de selecciones. - Flujo de la encuesta: las ramas se convierten en reglas de página, y las ramas anidadas se combinan con AND. Un aleatorizador que muestra todos sus bloques se convierte en un grupo de contrabalanceo. Un aleatorizador que muestra una de varias asignaciones de datos incrustados a un campo se convierte en un factor entre sujetos bajo
conditions, y la lógica sobre ese campo compruebacondition.<field>. Un End of Survey dentro de una rama, y la lógica de salto hasta el final de la encuesta, se convierten enexit_when. - Se notifica, no se importa: Loop & Merge (el bloque se importa una vez), el texto canalizado (piped text), la lógica de celdas de matriz, las condiciones "is displayed", la lógica de visualización a nivel de opción, las cuotas, los servicios web, los autenticadores, la puntuación, la validación personalizada, la solicitud de respuesta (obligatoriedad suave), JavaScript y los tipos de pregunta sin equivalente en Potato (mapas de calor, zonas activas, carga de archivos, firma, side-by-side, temporización, metainformación).
Si vienes de Qualtrics asocia el resto de un estudio de Qualtrics con Potato.
SurveyJS
- Elementos: text (las entradas numéricas como
number), comment, radiogroup, checkbox, dropdown, tagbox, boolean, rating, ranking, matrix, multipletext (una pregunta de texto por elemento), html y slider. Los paneles se aplanan en la página, y elvisibleIfde un panel se aplica a cada pregunta que contiene. - Lógica:
visibleIfen preguntas, paneles y páginas, incluidosanyof,allof,contains,empty, los recuentos de selecciones{q.length}yand,ory!. Un disparadorcompletese convierte en unexit_whenen la página que formula la última pregunta que comprueba. - Se notifica, no se importa:
enableIf,requiredIf,choicesVisibleIf, los validadores, los valores predeterminados, los valores calculados y las preguntas de expresión, los disparadoressetvalue,skipyrunexpression, las matrices y paneles dinámicos, las preguntas de archivo y de firma, y la lógica que llama a funciones.
LimeSurvey
Se importan las dos estructuras de archivo: las exportaciones antiguas con una columna de idioma en cada fila, y las exportaciones a partir de DBVersion 400, con el texto en tablas *_l10ns. Se usa el idioma base de la encuesta salvo que --survey-language indique otro. Los grupos de preguntas se convierten en páginas, en orden, y la relevancia de un grupo se convierte en el show_when de la página.
- Preguntas: lista (radio, desplegable, con comentario), 5 puntos, sí/no, género, opción múltiple, los tipos de matriz (como
multirate), texto corto y largo, numérica, numérica múltiple y texto corto múltiple (una pregunta por subpregunta), ordenación y visualización de texto. - Lógica: relevancia en ExpressionScript sobre códigos de pregunta, códigos de subpregunta y nombres SGQA, con
is_empty(),count()sobre una pregunta de opción múltiple yand,ory!, además de la tablaconditionsantigua. - Se notifica, no se importa: las preguntas de fecha, de ecuación, de carga de archivos y de doble escala; las preguntas ocultas; la validación (
preg,em_validation); el número mínimo y máximo de respuestas; los filtros de matriz; los grupos de aleatorización; las cuotas; las evaluaciones; el texto canalizado; yif(),regexMatch()y.shownen la lógica.
XLSForm: ODK, KoboToolbox, SurveyCTO y Ona
ODK muestra una pregunta por pantalla salvo que un grupo pida más, y Potato agrupa las preguntas de una página, así que la importación usa la agrupación propia del formulario. Cada begin_group con appearance: field-list o table-list es una página, y las preguntas situadas entre esos grupos comparten página. El relevant de cualquier otro grupo se aplica a cada pregunta que contiene, y su etiqueta se convierte en un encabezado. En un formulario con varias columnas de etiquetas, como label::English y label::French, --survey-language French elige una, y en caso contrario se usa el default_language del formulario.
| XLSForm | Potato |
|---|---|
select_one | radio (appearance: minimal como desplegable) |
select_multiple | multiselect |
rank | ranking |
integer, decimal | number |
range | slider (parameters: start= end= step=) |
text | text (appearance: multiline como cuadro de texto) |
note | pure_display |
or_other | Una opción "Other" con un campo de texto |
required | label_requirement: {required: true} |
relevant | display_logic, con selected(), not(), count-selected(), string-length(), regex() y comparaciones |
parameters: randomize=true | randomize_order |
Se notifica, no se importa: los geopuntos y demás tipos de ubicación, la fecha y la hora, las fotos, el audio, el vídeo, los códigos de barras y los archivos; los campos calculate y hidden y la lógica que los usa; las repeticiones (sus preguntas se importan una vez); constraint, choice_filter, default, read_only y el required condicional; y las listas de opciones externas. Un archivo .xls necesita el paquete xlrd; si no, guárdalo como .xlsx.
REDCap
Cada instrumento (formulario) se convierte en una página, en el orden en que los enumera el diccionario, y los encabezados de sección se convierten en encabezados de la página.
| REDCap | Potato |
|---|---|
text con validación de entero o de número | number con el mínimo y el máximo de la validación |
text con otra validación, notes | text, un cuadro de texto para las notas |
radio, dropdown, checkbox | radio, select, multiselect |
yesno, truefalse | radio con Yes/No o True/False |
slider | slider |
descriptive | pure_display |
| Grupo de matriz | multirate, o preguntas separadas cuando la lógica comprueba una fila |
| Campo obligatorio | label_requirement: {required: true} |
| Lógica de ramificación | display_logic, con los códigos de opción asociados al texto de la opción y and con más precedencia que or |
@PLACEHOLDER | El texto de ejemplo del cuadro de texto |
@HIDDEN, @HIDDEN-SURVEY | Se dejan fuera, ya que los participantes nunca los ven |
Se notifica, no se importa: los campos calculados y la lógica que los usa, los campos de archivo y SQL, los tipos de validación que Potato no comprueba (las fechas, los correos electrónicos y los números de teléfono pasan a ser texto simple con una indicación del formato), las demás etiquetas de acción, los valores canalizados y la lógica que usa funciones (datediff, sum), eventos ([event][field]) o el estado del formulario. Los eventos longitudinales y los instrumentos repetibles de REDCap no tienen equivalente en Potato.
Potato no es un sistema de captura de datos clínicos y no tiene un registro de auditoría como el que REDCap ofrece para los estudios regulados. Mantén los datos de salud identificables en REDCap, y usa Potato para la anotación y las preguntas que la rodean, por ejemplo cuando el personal clínico etiqueta notas o imágenes.
Beiwe
Cada encuesta de la exportación se convierte en una página. Se importan las preguntas de texto informativo, control deslizante, botón de opción, casilla de verificación y respuesta libre (numérica, de una línea, de varias líneas), y la lógica display_if se traduce, comprobando las respuestas de botón de opción por posición y las de casilla de verificación por pertenencia. Las preguntas de fecha y hora, las encuestas de audio, las programaciones y los horarios se notifican, porque Potato no programa encuestas, y lo mismo ocurre con la aleatorización parcial.
Network Canvas
Una etapa de formulario del ego o de información se convierte en una página de encuesta, y las etapas de red de un tipo de nodo se convierten en una única pregunta ego_network en una sola página, con sus generadores de nombres, intérpretes de nombres, censos de díadas y de intensidad de los vínculos y sociograma. Los recursos de listados en CSV o JSON se convierten en el listado del generador de nombres. La lógica de salto del ego se convierte en show_when, y un salto al final de la entrevista se convierte en exit_when en la página anterior, con el texto de la pantalla final como mensaje.
Las etapas de red de un mismo tipo de nodo comparten página, así que no se pueden saltar una por una, y una etapa de red que venía después de otras páginas pasa delante de ellas. La importación notifica cada uno de estos desplazamientos. Las reglas de filtrado de nodos y aristas, los formularios de aristas de los alteri, las etapas narrativas y geoespaciales, las variables de fecha y hora y los elementos multimedia se notifican y no se importan. La página Redes egocéntricas tiene la correspondencia etapa por etapa.
Lecturas adicionales
- Si vienes de Qualtrics - Las funciones de un estudio de Qualtrics asociadas con Potato
- Flujos de trabajo multifase - Páginas de encuesta, preguntas condicionales y orden de las fases
- Flujo del experimento - Condiciones, reglas de página, exclusiones y contrabalanceo
- Importar proyectos - Formatos de anotación, proyectos completos y otras importaciones
- Instrumentos de encuesta - Cuestionarios publicados por su nombre
Para detalles de implementación, consulta la documentación fuente.