Skip to content

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.

OrigenArchivo-f
Qualtrics.qsf (Survey → Tools → Import/Export → Export Survey)qualtrics
SurveyJSEl JSON de la encuesta que guarda SurveyJS Creatorsurveyjs
LimeSurvey.lss (Display/Export → Survey structure)limesurvey
XLSForm (ODK, KoboToolbox, SurveyCTO, Ona).xlsxxlsform
REDCapEl diccionario de datos .csv (Designer → Download the current Data Dictionary), o la exportación de metadatos de la APIredcap
BeiweJSON de la encuesta, o una exportación de la configuración del estudiobeiwe
Network CanvasUn archivo de protocolo .netcanvas, o su protocol.jsonnetwork_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

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

Las 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

bash
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ónSignificado
-o DIREscribe un proyecto nuevo
--into CONFIGAñade las páginas a un proyecto existente y escribe una copia fusionada
--survey-slotprestudy (el valor predeterminado, antes de la anotación) o poststudy
--prefixPrefijo para el nombre de todas las preguntas y páginas importadas
--survey-languageIdioma 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_logic y al show_when de 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 como number, 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, AndIf y ElseIf), 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 comprueba condition.<field>. Un End of Survey dentro de una rama, y la lógica de salto hasta el final de la encuesta, se convierten en exit_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 el visibleIf de un panel se aplica a cada pregunta que contiene.
  • Lógica: visibleIf en preguntas, paneles y páginas, incluidos anyof, allof, contains, empty, los recuentos de selecciones {q.length} y and, or y !. Un disparador complete se convierte en un exit_when en 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 disparadores setvalue, skip y runexpression, 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 y and, or y !, además de la tabla conditions antigua.
  • 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; y if(), regexMatch() y .shown en 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.

XLSFormPotato
select_oneradio (appearance: minimal como desplegable)
select_multiplemultiselect
rankranking
integer, decimalnumber
rangeslider (parameters: start= end= step=)
texttext (appearance: multiline como cuadro de texto)
notepure_display
or_otherUna opción "Other" con un campo de texto
requiredlabel_requirement: {required: true}
relevantdisplay_logic, con selected(), not(), count-selected(), string-length(), regex() y comparaciones
parameters: randomize=truerandomize_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.

REDCapPotato
text con validación de entero o de númeronumber con el mínimo y el máximo de la validación
text con otra validación, notestext, un cuadro de texto para las notas
radio, dropdown, checkboxradio, select, multiselect
yesno, truefalseradio con Yes/No o True/False
sliderslider
descriptivepure_display
Grupo de matrizmultirate, o preguntas separadas cuando la lógica comprueba una fila
Campo obligatoriolabel_requirement: {required: true}
Lógica de ramificacióndisplay_logic, con los códigos de opción asociados al texto de la opción y and con más precedencia que or
@PLACEHOLDEREl texto de ejemplo del cuadro de texto
@HIDDEN, @HIDDEN-SURVEYSe 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

Para detalles de implementación, consulta la documentación fuente.