From 7e4991f960472da4c6d3bf087477fbe50953aee0 Mon Sep 17 00:00:00 2001 From: markosbenitez Date: Mon, 22 Jun 2026 17:21:11 -0300 Subject: [PATCH] feat(schema): esquema declarativo + seed v3 del formulario [4B] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Extiende questions con instance_generator/instance_of/hint y documenta los operadores contains/eq_sole en conditional_rules (ADR-005). Reescribe seed.sql con el instrumento v3.0.0 completo: 10 secciones, 40 preguntas (2 consentimiento + 38), contenido 100% desde Formulario_Mapeo_Corregido.xlsx (versión autoritativa). Flujo declarativo en datos, no en presentación: 3.1='No' oculta 3.2-3.5; "Ninguna" en 4.1 salta a S10; "solo niño sin discapacidad" deja visibles 5.3, 8.4, 9.1, 9.4 y oculta el resto (decisión confirmada sobre el Excel corregido). SEED_SPEC.md reescrito como contrato v3.0.0. No ejecutado en producción — solo archivos de migración y seed. Co-Authored-By: Claude Sonnet 4.6 --- SEED_SPEC.md | 303 ++- .../20260620000002_form_schema_v3.sql | 47 + supabase/seed.sql | 2400 +++++------------ 3 files changed, 897 insertions(+), 1853 deletions(-) create mode 100644 supabase/migrations/20260620000002_form_schema_v3.sql diff --git a/SEED_SPEC.md b/SEED_SPEC.md index 67387dd..c22f284 100644 --- a/SEED_SPEC.md +++ b/SEED_SPEC.md @@ -1,152 +1,209 @@ -# SEED_SPEC.md — Contrato del instrumento "Mapeo de Cuidadores" v2.1 +# SEED_SPEC.md — Contrato del instrumento "Mapeo de Cuidadores" v3.0.0 -> Versión 2.1 — incorpora feedback del equipo médico, Etapa 3I2 (Jun 2026). Reemplaza la v2. -> 44 preguntas (se elimina 2.4, se agrega 6.6) · 8 secciones · Códigos únicos corregidos. +> Versión 3.0.0 — Sprint 4, Etapa 4B (Jun 2026). Reemplaza la v2.1. Reescritura completa del +> instrumento: 10 secciones, 40 preguntas (2 consentimiento + 38 de relevamiento), esquema +> declarativo de flujo (ADR-005). Seed LIMPIO — no migra datos de v2.1. +> +> Fuente de contenido AUTORITATIVA: `Formulario_Mapeo_Corregido.xlsx` (versión corregida, +> en rojo = cambios aplicados). El mockup `wizard_formulario_mapeo_v3.html` define estructura +> de secciones y mecánica del mini-wizard (4.1→4.2/4.3); donde el Excel difiere en el flujo +> condicional de "solo niño sin discapacidad", gana el Excel (decisión de la directora, ver +> abajo "Flujo condicional — recorrido soloNino"). +> > Claude Code reescribe `seed.sql` a partir de ESTE contrato. ## Convenciones -- Tipos: radio→`single_choice`, checkbox→`multiple_choice`, escala 1-5→`rating`, - texto libre largo→`text_long`, texto corto→`text_short`. -- **`conditional_rules` en la pregunta DEPENDIENTE** (cada pregunta declara su propia condición). -- Los 3 triggers (1.1, 1.6, 1.13) son `single_choice` de 2 opciones (Sí · No); solo **"Sí"** dispara - el bloque correspondiente. -- `is_sensitive=true` en preguntas de salud/discapacidad/diagnóstico (marcadas ✅). -- `3.4` (salary) — `is_sensitive=true` + analyst-only (ADR-001 addendum): nunca en vistas org_admin. -- RE-INDEX: las preguntas marcadas son candidatas a índice compuesto (metodología TBD Sprint 3). -- En preguntas `multiple_choice` el formulario muestra el subtítulo "Podés marcar más de una opción". -- "Prefiero no decir" eliminada de todas las preguntas (Cambio 1, Etapa 3I2). -## Estructura condicional (4 bloques) -- **cond-disc-propia** — 1.1='Sí' → muestra 1.2, 1.3, 1.4, 1.5 -- **cond-familiar** — 1.6='Sí' → muestra 1.7, 1.8, 1.9, 1.10, 1.11, 1.12 -- **cond-adulto-mayor** — 1.13='Sí' → muestra 1.14, 1.15, 1.16 -- **salto-triple** — si 1.1='No' Y 1.6='No' Y 1.13='No' (es decir, ninguno de los tres dio - 'Sí'), se ocultan completas las secciones 2, 3, 4, 5 y las preguntas 6.1, 6.2, 6.3. El - formulario salta directo a 6.4. Implementado como `conditional_rules` - `{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}` en cada - pregunta del bloque (equivalente: se muestra si AL MENOS uno de los tres es 'Sí'). -- Sección A, 6.4-6.6 y Sección 7 (cierre): **top-level, siempre visibles.** +- Tipos: radio→`single_choice`, checkbox→`multiple_choice`, texto libre corto→`text_short`, + texto libre largo→`text_long`, sí/no→`yes_no`. +- Secciones persisten como filas `questions.type='section'`: `prompt`=nombre de sección, + `hint`=descripción/"porqué" (Opción C, ver ADR-005 §4.2). +- `conditional_rules` vive en la pregunta/sección DEPENDIENTE (auto-target implícito, sin + campo `target`). Vocabulario completo en `supabase/migrations/20260620000002_form_schema_v3.sql`: + operadores `eq`, `eq_any`, `not_in`, `contains`, `eq_sole`; acciones `show`, `hide`. +- `is_sensitive=true` en preguntas de salud/discapacidad/diagnóstico y en 8.4 (franja salarial, + CONFIDENCIAL — analyst-only, nunca en vistas de empresa, igual que 3.4 en v2.1). +- En preguntas `multiple_choice` el `hint` suele ser "Podés marcar más de una opción". +- Mini-wizard de instanciación (ADR-005): 4.1 es `instance_generator=true`; 4.2 y 4.3 tienen + `instance_of='4.1'` y se repiten una vez por cada vínculo familiar (opciones 2–7) marcado en 4.1. + Las respuestas de cada instancia se guardan en `answers.instance_id` (`'familiar_1'`, `'familiar_2'`...). +- Geo: 2.1 (departamento, 18 opciones) y 2.2 (ciudad, 219 opciones filtradas por departamento en + el renderer) son cuasi-identificadores. 2.3 (barrio) es `text_short` de texto libre, opcional — + NO entra al store analítico crudo sin categorizar (regla 4 CLAUDE.md); se usa solo como apoyo + cualitativo, no agregable. + +## Flujo condicional — las 3 reglas principales + +1. **`r_show_si_s3_1`** — 3.1='Sí' → muestra 3.2, 3.3, 3.4, 3.5 (discapacidad propia). + Si 3.1='No', toda la sub-rama queda oculta. +2. **`r_hide_ning`** — 4.1 contiene "Ninguna de las anteriores / No tengo vinculación de cuidado" + → oculta S5, S6, S7, S8(header), 8.4, S9(header), 9.1, 9.4. El formulario salta directo a S10. +3. **`r_hide_ning_sn`** (Ninguna O soloNino) — además de la condición anterior, también oculta + cuando 4.1 tiene como ÚNICO elemento seleccionado "Hijo menor sin discapacidad" (`eq_sole`). + Oculta: 5.1, 5.2, 5.4, S6 completa, S7 completa, 8.1, 8.2, 8.3, 9.2, 9.3. + +### Flujo condicional — recorrido "solo niño sin discapacidad" (soloNino) + +Decisión de la directora (Etapa 4B): cuando 4.1 tiene como única respuesta "Hijo menor sin +discapacidad", el recorrido visible es **5.3 → 8.4 → 9.1 → 9.4 → fin**, tal como lo especifica +el Excel corregido (no el mockup, que marcaba toda la Sección 5 como oculta). Esto es más +granular que un simple "salto de sección": 5.3, 8.4, 9.1 y 9.4 quedan visibles porque no +dependen de que haya responsabilidad económica o de cuidado activo — preguntan por quién +cuida durante el horario laboral (5.3), franja salarial (8.4) y percepción/voluntariado +organizacional (9.1, 9.4), que aplican igual a quien solo tiene un hijo menor sin discapacidad. + +- **4.1 = sole "Hijo menor sin discapacidad"**: 4.2 y 4.3 se ocultan (no hay tipo de + discapacidad ni dispositivos de apoyo que relevar), 5.1/5.2/5.4 ocultas, 5.3 VISIBLE, + S6 y S7 completas ocultas, 8.1–8.3 ocultas, 8.4 VISIBLE, 9.1 VISIBLE, 9.2/9.3 ocultas, + 9.4 VISIBLE. +- **4.1 contiene "Ninguna de las anteriores..."**: salta directo a S10 (todo S5–S9 oculto). +- **4.1 = cualquier combinación de opciones 2–7** (con o sin la opción 1): recorrido completo, + 4.2/4.3 generan una instancia por cada vínculo 2–7 declarado. --- -## Sección A — Datos Generales (top-level) -| Code | Tipo | Pregunta | Opciones | Notas | -|---|---|---|---|---| -| A1 | single_choice | ¿En qué departamento de Paraguay vivís?* | Asunción (Capital) · Alto Paraguay · Alto Paraná · Amambay · Boquerón · Caaguazú · Caazapá · Canindeyú · Central · Concepción · Cordillera · Guairá · Itapúa · Misiones · Ñeembucú · Paraguarí · Presidente Hayes · San Pedro | qi_zone | -| A2 | single_choice | ¿En qué ciudad vivís?* | 219 ciudades (GeoSelectWidget: dependiente de A1) | qi_city — Sprint 3 | -| A3 | text_short | ¿En qué barrio vivís? | — (texto libre, opcional) | | -| A4 | single_choice | ¿En qué área o gerencia trabajás?* | Directorio · Gerencia · Operaciones/Producción · Comercial/Ventas · Administración/Finanzas · Recursos Humanos/Cultura · Tecnología/Sistemas · Logística/Distribución · Otra área | qi_sector | -| A5 | single_choice | ¿Cuántos años tenés? | Menos de 25 años · 25 a 34 años · 35 a 44 años · 45 a 54 años · 55 años o más | qi_age_bucket | -| A6 | single_choice | ¿Con qué género te identificás? | Femenino · Masculino · No binario/Otro | | -| A7 | single_choice | ¿Cuál es tu modalidad de trabajo actual? | Presencial · Remoto (home office) · Híbrido | | +## Sección 1 — Consentimiento (`S1`, pos. 10) -## Sección 1 — Prevalencia: cuidado y discapacidad *(sensible)* -| Code | Tipo | Cond. | Pregunta | Opciones | is_sensitive | +| Code | Tipo | Pregunta | Requerida | Notas | +|---|---|---|---|---| +| 1.1 | yes_no | Declaro que fui informado/a sobre el propósito de esta encuesta y el tratamiento de mis respuestas, y acepto participar de forma voluntaria en el diagnóstico interno de [Empresa]. | Sí | Gate de participación — ver `consent_versions` v2 | +| 1.2 | yes_no | Autorizo que mis respuestas anonimizadas se utilicen para el estudio país sobre la economía del cuidado en Paraguay. | No | Scope `macro_n1` — Modo A (CLAUDE.md regla 7) | + +## Sección 2 — Datos generales (`S2`, pos. 20) + +| Code | Tipo | Pregunta | Opciones | is_sensitive | Notas | |---|---|---|---|---|---| -| 1.1 | single_choice | trigger | ¿Vos mismo/a vivís con alguna discapacidad o condición de salud que afecte tu funcionamiento cotidiano?* | Sí · No | ✅ | -| 1.2 | multiple_choice | 1.1=Sí | ¿Qué tipo de discapacidad o condición tenés? | Discapacidad física/motriz · Visual · Auditiva · Intelectual · TEA · Psicosocial/salud mental · Condición crónica que genera limitaciones · Otra | ✅ | -| 1.3 | multiple_choice | 1.1=Sí | ¿Usás algún elemento de apoyo para la movilidad o autonomía? | Silla de ruedas · Bastón · Andador · Muletas · Prótesis · Tecnología asistiva · No utilizo | ✅ | -| 1.4 | single_choice | 1.1=Sí | ¿Contás con certificado oficial de discapacidad? | Sí · No, pero estoy en trámite · No | ✅ | -| 1.5 | single_choice | 1.1=Sí | ¿Tu condición afecta tu desempeño o comodidad en el trabajo? | Sí, de forma significativa · Sí, pero en aspectos puntuales · No, está bien gestionada | ✅ | -| 1.6 | single_choice | trigger | ¿Tenés algún familiar cercano (hijo/a, pareja, hermano/a, padre/madre) que viva con discapacidad?* | Sí · No | ✅ | -| 1.7 | multiple_choice | 1.6=Sí | ¿Cuál es tu vínculo con esa persona? | Hijo/a · Cónyuge/pareja · Padre o madre · Hermano/a · Otro familiar | ✅ | -| 1.8 | multiple_choice | 1.6=Sí | ¿Qué tipo de discapacidad tiene? | Física/motriz · Visual · Auditiva · Intelectual · TEA · Psicosocial/salud mental · Condición crónica severa · Otra | ✅ | -| 1.9 | multiple_choice | 1.6=Sí | ¿Qué tipo de apoyo o acompañamiento necesita principalmente? | Movilidad física · Comunicación · Apoyo escolar/educativo · Inclusión laboral · Terapias/rehabilitación · Apoyo emocional/psicosocial | ✅ | -| 1.10 | multiple_choice | 1.6=Sí | ¿Usa algún elemento de apoyo para la movilidad o autonomía? | Silla de ruedas · Bastón · Andador · Muletas · Prótesis · Tecnología asistiva · No utiliza | ✅ | -| 1.11 | single_choice | 1.6=Sí | Si es niño/a o adolescente en edad escolar: ¿está escolarizado/a y enfrenta barreras de aprendizaje? | Escolarizado/a, sin barreras importantes · Escolarizado/a, enfrenta barreras o faltan ajustes · No está escolarizado/a · No aplica | ✅ | -| 1.12 | single_choice | 1.6=Sí | ¿La persona con discapacidad se encuentra trabajando actualmente? | Sí, está trabajando · No, y está buscando empleo · No, y no está buscando · No aplica | ✅ | -| 1.13 | single_choice | trigger | ¿Tenés algún adulto mayor (60+ años) a tu cuidado o bajo tu responsabilidad?* | Sí · No | | -| 1.14 | single_choice | 1.13=Sí | ¿Qué nivel de dependencia tiene? (la más representativa) | Independiente, pero necesita supervisión · Dependencia leve · Dependencia moderada · Dependencia severa | ✅ | -| 1.15 | multiple_choice | 1.13=Sí | ¿Tiene una condición de salud que genere mayor necesidad de cuidado? | Demencia/Alzheimer · ACV/Parálisis · Enfermedad crónica grave · Movilidad reducida · Deterioro cognitivo · Sin condición específica | ✅ | -| 1.16 | single_choice | 1.13=Sí | ¿Vive con vos o en otra vivienda? | Vive en mi hogar · Vive en otra vivienda · Está en residencia/institución | | +| 2.1 | single_choice | Departamento | 18 departamentos de Paraguay + Capital | no | qi (cuasi-identificador) | +| 2.2 | single_choice | Ciudad | 219 ciudades (filtradas por 2.1 en el renderer) | no | qi | +| 2.3 | text_short | ¿En qué barrio vivís? | — (texto libre) | no | `hint`='Opcional.' — no entra al store analítico crudo | +| 2.4 | single_choice | ¿Cuál es tu rango de edad? | Menos de 25 · 25-34 · 35-44 · 45-54 · 55+ | no | qi | +| 2.5 | single_choice | ¿Con qué género te identificás? | Femenino · Masculino · No binario/Otro | no | qi | +| 2.6 | single_choice | ¿En qué nivel organizacional estás? | Directivo · Gerencial · Jefatura · Operativo · Auxiliar · Otro | no | qi | +| 2.7 | single_choice | ¿Cuál es tu modalidad de trabajo actual? | Presencial · Remoto · Híbrido | no | qi | -## Sección 2 — Intensidad y rol del cuidado (top-level) -> Cond.: **salto-triple** — toda la sección se oculta si 1.1='No' Y 1.6='No' Y 1.13='No'. +## Sección 3 — Prevalencia de discapacidad (`S3`, pos. 30) *(sensible)* + +Cond.: 3.2–3.5 visibles solo si 3.1='Sí' (`r_show_si_s3_1`). + +| Code | Tipo | Pregunta | Opciones | is_sensitive | +|---|---|---|---|---| +| 3.1 | single_choice | ¿Vos mismo/a tenés alguna discapacidad o condición de salud que pudiera afectar tu independencia o desempeño laboral? | No · Sí | ✅ trigger | +| 3.2 | multiple_choice | ¿Qué tipo de discapacidad o condición tenés? | Física/motora · Visual · Auditiva · Intelectual · Mental/psicosocial · Del habla y la comunicación · Múltiple · Vejez/osteoporosis/artrosis/otras · Amputación · Otra | ✅ | +| 3.3 | multiple_choice | ¿Usás algún elemento de apoyo para la movilidad o autonomía? | Silla de ruedas · Bastón de apoyo · Bastón blanco · Andador · Muletas · Prótesis · Tecnología asistiva · Audífonos · No utilizo | ✅ | +| 3.4 | single_choice | ¿Contás con certificado oficial de discapacidad? | Sí · No, pero estoy en trámite · No | ✅ | +| 3.5 | multiple_choice | ¿Cómo afecta tu discapacidad y/o condición limitante en tu trabajo? | No afecta mi rendimiento · Falta de adecuaciones afecta más que la discapacidad · Transporte · Accesibilidad para participar | ✅ | + +## Sección 4 — Vinculación familiar (`S4`, pos. 40) *(sensible)* + +Mini-wizard: 4.1 `instance_generator=true`; 4.2/4.3 `instance_of='4.1'`, una instancia por +vínculo 2–7 declarado en 4.1. Ocultas (4.2/4.3) si Ninguna o soloNino (`r_hide_ning_sn`). + +| Code | Tipo | Pregunta | Opciones | is_sensitive | +|---|---|---|---|---| +| 4.1 | multiple_choice | ¿Cuál de las siguientes vinculaciones familiares tenés? | 1. Hijo menor sin discapacidad · 2. Hijo menor con discapacidad · 3. Hijo adulto con discapacidad · 4. Familiar menor con discapacidad · 5. Familiar mayor con discapacidad · 6. Padre/madre con movilidad reducida o 100% dependiente · 7. Otro/Especificar · 8. Ninguna de las anteriores / No tengo vinculación de cuidado | ✅ generador | +| 4.2 | multiple_choice (instancia) | ¿Qué tipo de discapacidades o limitaciones tienen tus familiares vinculados? | (mismo set que 3.2) | ✅ | +| 4.3 | multiple_choice (instancia) | ¿Qué tipo de dispositivos de apoyo utilizan tus familiares vinculados? | (mismo set que 3.3, "No utiliza" en 3ra persona) | ✅ | + +## Sección 5 — Responsabilidad y cuidado (`S5`, pos. 50) + +Cond.: oculta completa si Ninguna (`r_hide_ning`). 5.1/5.2/5.4 además ocultas si soloNino; +**5.3 permanece visible en soloNino** (ver "recorrido soloNino" arriba). | Code | Tipo | Pregunta | Opciones | |---|---|---|---| -| 2.1 | multiple_choice ⚠️ TECH-DEBT | ¿Quién es el/la responsable principal del cuidado? | Yo soy el/la principal · Comparto con otro familiar · Hay cuidador/a pagado/a · Está en institución/centro de día | -| 2.2 | single_choice | ¿Cuántas horas por día dedicás, en promedio, al cuidado directo? | Menos de 1h · Entre 1 y 3h · Entre 3 y 6h · Más de 6h · Varía mucho | -| 2.3 | multiple_choice | ¿En qué momentos del día cuidás principalmente? | Antes del trabajo · Durante horario laboral (llamadas/emergencias) · Al llegar del trabajo · Durante la noche · Los fines de semana · Es continuo sin horario fijo | -| 2.5 | single_choice | Como cuidador/a primario, ¿presentás signos de agotamiento o estrés crónico? | Sí, frecuentemente · A veces · No, lo llevo bien | +| 5.1 | multiple_choice | ¿Cuál es tu rol en el cuidado de los niños y/o personas con discapacidad o dependientes? | Proveo financieramente · Comparto gastos con familiares · Administro recursos/organizo servicios · Cuido unas horas al salir del trabajo · Me ocupo de todas las gestiones | +| 5.2 | multiple_choice | ¿En qué momento del día te ocupás de gestionar/organizar el cuidado? | Antes del trabajo · Después del trabajo · Durante el trabajo (llamadas/emergencias) · En cualquier momento · Fines de semana | +| 5.3 | multiple_choice | Durante el tiempo que estás en el trabajo, ¿quién se ocupa del cuidado de las personas a tu cargo? | Mi cónyuge · Otro familiar · Cuidador/a contratado/a · Centro de estudios o cuidado · Un/a vecino/a · Otro | +| 5.4 | single_choice | ¿Desde hace cuánto cumplís este rol de responsable o cuidador/a? | Menos de 1 año · 1-3 años · 3-5 años · Más de 5 años | -> ⚠️ TECH-DEBT (2.1): pasó de `single_choice` a `multiple_choice` — selección múltiple sin orden -> de prioridad. Deuda: implementar ranking (Principal cuidador soy yo > secundario instituto > -> principal pagado > secundario familiar). Ver `TECH_DEBT.md`. -> -> **2.4 eliminada** (Cambio 6, Etapa 3I2): "¿Contás con apoyo de otras personas para el cuidado?" -> — feedback del equipo médico: pregunta similar/redundante con 2.1. Ver `OBSERVATIONS.md`. +## Sección 6 — Intensidad del cuidado (`S6`, pos. 60) -## Sección 3 — Impacto económico del cuidado (top-level) -> Cond.: **salto-triple** — toda la sección se oculta si 1.1='No' Y 1.6='No' Y 1.13='No'. -> 3.4: is_sensitive=true + analyst-only (no exponer a org_admin). +Cond.: oculta completa si Ninguna o soloNino (`r_hide_ning_sn`). + +| Code | Tipo | Pregunta | Opciones | +|---|---|---|---| +| 6.1 | single_choice | ¿Cuántos días por semana estás a cargo del cuidado directo, en promedio? | 1–2 · 3–4 · 5–6 · Todos los días | +| 6.2 | single_choice | Cuando estás a cargo del cuidado, ¿cuántas horas por día dedicás, en promedio? | 1–2 · 3–4 · 5–6 · Más de 6 horas | +| 6.3 | multiple_choice | ¿En qué momentos del día cuidás principalmente? | Antes del trabajo · Al llegar del trabajo · Durante la noche · Fines de semana | +| 6.4 | single_choice | Además del cuidado directo, ¿cuántas horas al día necesitás estar disponible o de guardia? | 1–2 · 3–4 · 5–6 · Más de 6 horas · Permanente/sin horario | + +## Sección 7 — Impacto en el trabajo (`S7`, pos. 70) + +Cond.: oculta completa si Ninguna o soloNino (`r_hide_ning_sn`). + +| Code | Tipo | Pregunta | Opciones | +|---|---|---|---| +| 7.1 | single_choice | ¿Cómo describirías tu nivel de descanso cuando te ocupás del cuidado y cómo impacta en tu desempeño? | Descanso bien · Irregular pero lo manejo · Me cuesta, afecta con frecuencia · Descanso muy poco, agotamiento afecta desempeño | +| 7.2 | single_choice | En los últimos 3 meses, ¿con qué frecuencia sentiste que el cuidado afectó tu concentración o rendimiento? | Nunca/casi nunca · Algunas veces al mes · Varias veces por semana · Casi todos los días | +| 7.3 | single_choice | En el último año, ¿faltaste al trabajo por situaciones relacionadas al cuidado? | Nunca · Pocas veces (1-3/año) · Varias veces (4-10/año) · Con frecuencia (+10/año) | +| 7.4 | multiple_choice | ¿Qué aspectos de tu vida se ven más afectados por tu rol de cuidador/a? | Tiempo libre · Sueño · Vida social · Vida en pareja/familiar · Salud física · Salud emocional/mental · Desarrollo profesional · Situación económica | +| 7.5 | multiple_choice | Por tu rol de cuidado, ¿alguna vez tuviste que…? | Reducir jornada · Rechazar ascenso · Declinar viajes/extras/capacitaciones · Cambiar a puesto menos exigente · Faltar/llegar tarde reiteradamente · Pensar en dejar el trabajo · Dejar un trabajo anterior · Ninguna de las anteriores | +| 7.6 | single_choice | Pensando en los próximos 12 meses, ¿qué tan probable es que dejes o reduzcas tu trabajo por razones de cuidado? | Nada probable · Poco probable · Algo probable · Muy probable | + +## Sección 8 — Impacto económico (`S8`, pos. 80) + +Cond.: header y 8.4 ocultos si Ninguna (`r_hide_ning`). 8.1–8.3 además ocultas si soloNino. +**8.4 permanece visible en soloNino.** + +| Code | Tipo | Pregunta | Opciones | is_sensitive | +|---|---|---|---|---| +| 8.1 | single_choice | ¿Cuánto estimás que gastás por mes en el cuidado? | 7 franjas, < 1M a > 15M Gs. | no | +| 8.2 | multiple_choice | ¿En qué conceptos gastás principalmente el monto expresado? | Cuidador/a particular · Centro de día/institución · Traslados · Equipamiento médico/tecnología asistiva · Servicios terapéuticos/rehabilitación · Medicamentos · Insumos personales · Otros | no | +| 8.3 | multiple_choice | ¿Cómo sostenés los gastos y responsabilidades del cuidado? | Solo con mi empleo · Ingresos extraordinarios · Emprendimiento · Me ayudan familiares · Me ayudan organizaciones sociales · Me ayudan vecinos/amigos · Eventos de recaudación · Subsidios estatales | no | +| 8.4 | single_choice | ¿En qué franja salarial mensual te ubicás con tu trabajo en esta empresa? *(CONFIDENCIAL)* | 9 franjas, hasta 3M a 50M+ Gs. | ✅ analyst-only, nunca en vistas de empresa (igual criterio que 3.4 en v2.1) | + +## Sección 9 — Conciencia organizacional (`S9`, pos. 90) + +Cond.: header, 9.1 y 9.4 ocultos si Ninguna (`r_hide_ning`). 9.2/9.3 además ocultas si soloNino. +**9.1 y 9.4 permanecen visibles en soloNino.** | Code | Tipo | Pregunta | Opciones | Notas | |---|---|---|---|---| -| 3.1 | single_choice | ¿Cuánto estimás que gastás por mes en el cuidado? | Menos de Gs. 500.000 · Gs. 500.000–1.500.000 · Gs. 1.500.000–3.000.000 · Gs. 3.000.000–6.000.000 · Más de Gs. 6.000.000 | | -| 3.2 | multiple_choice | ¿Qué servicios o apoyos utilizás actualmente? | Terapias especializadas · Cuidador/a particular · Centro de día/institución · Transporte adaptado · Medicación alto costo · Equipamiento médico/tecnología asistiva · No utilizo servicios formales | | -| 3.3 | multiple_choice | ¿Cómo sostenés los gastos y responsabilidades del cuidado? | Con mi empleo de tiempo completo · Con mi empleo de tiempo parcial · Con trabajo independiente/emprendimiento · Me ayudan mis familiares · No puedo sostenerlo con mis ingresos | | -| 3.4 | single_choice | ¿En qué franja salarial mensual te ubicás? *(CONFIDENCIAL — analyst-only)* | Sueldo mínimo · Gs. 3.000.000 a 5.000.000 · Gs. 5.000.001–8.000.000 · Gs. 8.000.001–12.000.000 · Gs. 12.000.001–15.000.000 · Gs. 15.000.001–18.000.000 · Gs. 18.000.001–25.000.000 · Gs. 25.000.001–50.000.000 · Gs. 50.000.001 o más | is_sensitive=true; never in org_admin views | -| 3.5 | rating | ¿Los gastos de cuidado impactan en tu situación económica personal? | 1=Sin impacto · 2=Leve · 3=Moderado · 4=Alto · 5=Muy alto | RE-INDEX | +| 9.1 | single_choice | ¿Sentís que tu empresa conoce o comprende la realidad del cuidado y la discapacidad de su gente? | Sí, acompañado/a · Parcialmente · No, invisible · Nunca hemos tocado el tema | | +| 9.2 | multiple_choice (**max_select=3**) | ¿Qué apoyos de la empresa te ayudarían más? | Flexibilidad horaria/remoto · Apoyo económico/convenios · Beneficios terapias/salud · Contención emocional/psicológica · Capacitación y autocuidado · Redes de apoyo/grupos de pares · Información sobre recursos | | +| 9.3 | single_choice | ¿Estarías dispuesto/a a participar en un grupo de apoyo para cuidadores dentro de la empresa? | Sí, definitivamente · Tal vez · No por ahora · Prefiero mantenerlo en privado | | +| 9.4 | single_choice | ¿Estarías dispuesto/a a ser voluntario/a en iniciativas y/o redes de apoyo? | Sí · No | | -> **Cambio 7** (3.1): se elimina "Sin gastos significativos" además de "Prefiero no decir". -> **Cambio 8** (3.3): "Es difícil sostenerlo con mis ingresos" → "No puedo sostenerlo con mis -> ingresos". Breaking change para datos existentes — ver `OBSERVATIONS.md`. -> **Cambio 9** (3.4): "Sueldo mínimo – Gs. 5.000.000" se divide en "Sueldo mínimo" y -> "Gs. 3.000.000 a 5.000.000". Breaking change para datos existentes — ver `OBSERVATIONS.md`. +## Sección 10 — Comentarios adicionales (`S10`, pos. 100) -## Sección 4 — Tiempo y descanso (top-level) -> Cond.: **salto-triple** — toda la sección se oculta si 1.1='No' Y 1.6='No' Y 1.13='No'. +Siempre visible — es el destino del salto "Ninguna de las anteriores" en 4.1. -| Code | Tipo | Pregunta | Opciones | -|---|---|---|---| -| 4.1 | single_choice | ¿Cómo describirías tu nivel de descanso habitual? | Descanso bien, me siento recuperado/a · Descanso de forma irregular, pero lo manejo · Me cuesta descansar, me siento cansado/a con frecuencia · Descanso muy poco, el agotamiento afecta mi día a día | RE-INDEX | -| 4.2 | multiple_choice | ¿Qué aspectos de tu vida se ven más afectados por tu rol de cuidador/a? | Tiempo libre y ocio · Sueño y descanso · Vida social y amistades · Vida en pareja/familiar · Salud física personal · Salud emocional/mental · Desarrollo profesional · Situación económica | | -| 4.3 | rating | En una escala del 1 al 5, ¿cómo evaluás tu bienestar general en este momento? | 1=Muy mal · 2=Mal · 3=Regular · 4=Bien · 5=Muy bien | RE-INDEX | - -## Sección 5 — Impacto en el trabajo (top-level) -> Cond.: **salto-triple** — toda la sección se oculta si 1.1='No' Y 1.6='No' Y 1.13='No'. - -| Code | Tipo | Pregunta | Opciones | -|---|---|---|---| -| 5.1 | single_choice | En los últimos 3 meses, ¿con qué frecuencia sentiste que el cuidado afectó tu concentración o rendimiento? | Nunca o casi nunca · Algunas veces al mes · Varias veces por semana · Casi todos los días | RE-INDEX | -| 5.2 | single_choice | En el último año, ¿faltaste al trabajo por situaciones relacionadas al cuidado? | Nunca · Pocas veces (1–3 veces al año) · Varias veces (4–10 veces al año) · Con frecuencia (más de 10 veces al año) | | - -## Sección 6 — Conciencia organizacional (top-level) -> Cond. (6.1-6.3): **salto-triple** — se ocultan si 1.1='No' Y 1.6='No' Y 1.13='No'. -> 6.4-6.6: siempre visibles (destino del salto). - -| Code | Tipo | Pregunta | Opciones | Notas | -|---|---|---|---|---| -| 6.1 | single_choice | ¿Sentís que tu empresa conoce o comprende la realidad del cuidado y la discapacidad de su gente?* | Sí, me siento acompañado/a · Parcialmente, hay cierta comprensión · No, es algo bastante invisible · No, no se puede hablar del tema | RE-INDEX. Cambio 10: última opción reescrita (era "No, nunca se ha hablado del tema"). Breaking change — ver `OBSERVATIONS.md`. | -| 6.2 | multiple_choice (**max_select=3**) | ¿Qué apoyos de la empresa te ayudarían más? Elegí hasta 3 | Flexibilidad horaria o trabajo remoto · Apoyo económico o convenios/descuentos · Acceso a terapias o salud · Contención/apoyo emocional o psicológico · Capacitación y autocuidado · Redes de apoyo/grupos de pares · Información sobre recursos y servicios disponibles | ⚠️ Ranking → multiple_choice para v1. Ranking widget al backlog. | -| 6.3 | single_choice | ¿Estarías dispuesto/a a participar en un grupo de apoyo para cuidadores dentro de la empresa? | Sí, definitivamente · Tal vez, si hay más personas en la misma situación · No por ahora · Prefiero mantenerlo en privado | | -| 6.4 | single_choice | ¿Conocés a algún compañero/a de trabajo que esté al cuidado de una persona con discapacidad o dependiente? | Sí, conozco a varias personas · Sí, conozco a una persona · No conozco a nadie · No estoy seguro/a | Código corregido (era 6.2 duplicado) | -| 6.5 | single_choice | ¿Considerás que la empresa debería ofrecer apoyos a quienes cuidan a una persona dependiente? | Sí, definitivamente · Tal vez, dependería del caso · No lo considero necesario · No lo sé | Código corregido (era 6.3 duplicado) | -| 6.6 | single_choice | ¿Estarías dispuesto/a a ser voluntario/a en iniciativas y/o redes de apoyo a personas con discapacidad y/o cuidadores? | Sí · No · Tal vez | Nueva (Cambio 4b, Etapa 3I2) | - -## Sección 7 — Para cerrar (top-level) | Code | Tipo | Pregunta | Notas | |---|---|---|---| -| 7.1 | text_long | ¿Te gustaría dejar un comentario o sugerencia especial? (opcional) | No entra al store analítico crudo (regla 4 CLAUDE.md) | +| 10.1 | text_long | ¿Te gustaría dejar un comentario o sugerencia especial? (opcional) | `hint`='Opcional.' — NO entra al store analítico crudo sin categorizar (regla 4 CLAUDE.md) | --- -## Mapeo a cuasi-identificadores (`responses.qi_*`) -- `qi_age_bucket` ← A5 (ya en bucket) -- `qi_sector` ← A4 (área) -- `qi_zone` ← A1 (departamento — poblado en `submit-survey.ts` desde Etapa 2E) -- `qi_city` ← A2: **Sprint 3** — se agrega como columna qi en migration futura. - Por ahora A2 se captura en `answers` como single_choice. +## Totales + +10 secciones (`type='section'`) + 40 preguntas = **50 filas** en `questions` por encuesta. +Preguntas por sección: S1=2, S2=7, S3=5, S4=3, S5=4, S6=4, S7=6, S8=4, S9=4, S10=1 → 40. + +## Consent versions + +- **v1** (`20000000-0000-0000-0000-000000000001`): texto original v2.1, preservado — no se + altera para no invalidar `consent_records` ya firmados contra esa versión (regla 5 CLAUDE.md). +- **v2** (`20000000-0000-0000-0000-000000000002`): texto revisado para el instrumento v3.0.0, + asignado a las 3 encuestas seed. Scopes: `["operativo","macro_n1"]` (Modo A). + +## Discrepancias mockup vs. Excel resueltas (AP.10) + +Reportadas y resueltas con la directora antes de escribir el seed: + +1. **Wording de preguntas y opciones**: el Excel corregido es la fuente autoritativa en todos + los casos donde difiere del mockup (~30 discrepancias menores de texto). +2. **Recorrido soloNino**: el mockup marcaba `skipSoloNino:true` en TODA la Sección 5 (incluida + 5.3). El Excel especifica un recorrido más granular: 5.3 → 8.4 → 9.1 → 9.4 → fin. Resuelto a + favor del Excel (ver "Flujo condicional — recorrido soloNino" arriba). +3. **8.3 "Eventos de recaudación"**: opción presente en el Excel, ausente en el mockup. Incluida. ## ⚠️ Decisiones pendientes para el director (NO ejecutar sin aprobación) -- **Ranking widget (6.2):** actual es multiple_choice max_select=3. Cuando se implemente el - widget de ranking (drag o 3 dropdowns), 6.2 pasa a tipo `ranking` con JSONB `{rank1, rank2, rank3}`. -- **qi_city:** migration futura para agregar columna en responses y extender whitelist de agg_segment. - Se hace antes de Sprint 3 (dashboard con filtro por ciudad). -- **Salary analytics:** metodología para calcular "carga económica del cuidado como % del ingreso" - es trabajo de metodología de investigación (fuera del scope del código). -- **RE-INDEX scoring:** algoritmo de composición de los índices (descanso, bienestar, rendimiento, - conciencia) — decisión antes de construir los reportes del dashboard. -- **Formulario de empresa (Relevamiento Empresa):** instrumento separado con PII de contacto. - Ejecutar offline para las primeras empresas. Diseño del modelo de datos en el sprint del builder. \ No newline at end of file + +- **Ranking widget (9.2):** actual es `multiple_choice` con `max_select=3`. Si se requiere + orden de prioridad, pasa a tipo `ranking` (mismo criterio que 6.2 en v2.1). +- **Motor genérico de formularios (Fase 2, BACKLOG-002):** este contrato es el primer caso de + prueba; el intérprete declarativo se generaliza después de validar el wizard de cuidadores. +- **Migración de datos v2.1 → v3:** NO se ejecuta. v2.1.0-stable permanece intacta; v3 es un + instrumento nuevo con seed limpio. +- **`qi_city`, RE-INDEX scoring, salary analytics:** decisiones heredadas de v2.1, aún abiertas, + no se resuelven en esta etapa. diff --git a/supabase/migrations/20260620000002_form_schema_v3.sql b/supabase/migrations/20260620000002_form_schema_v3.sql new file mode 100644 index 0000000..558e3ce --- /dev/null +++ b/supabase/migrations/20260620000002_form_schema_v3.sql @@ -0,0 +1,47 @@ +-- Sprint 4 (v3.0.0) — Esquema declarativo del formulario wizard +-- Extiende questions con tres campos para soporte de instanciación y secciones. +-- Ver ADR-005: la lógica del flujo vive en datos, el frontend es un renderer. + +-- 1. instance_generator: marca la pregunta que genera instancias del mini-wizard. +-- true en pregunta 4.1 (vínculos familiares); false en todas las demás. +ALTER TABLE public.questions + ADD COLUMN IF NOT EXISTS instance_generator boolean NOT NULL DEFAULT false; + +-- 2. instance_of: código de la pregunta generadora de la que depende esta pregunta. +-- '4.1' en preguntas 4.2 y 4.3 (se repiten una vez por familiar declarado en 4.1). +-- NULL en todas las preguntas que no forman parte del mini-wizard. +ALTER TABLE public.questions + ADD COLUMN IF NOT EXISTS instance_of text; + +-- 3. hint: texto auxiliar que el renderer muestra bajo el enunciado. +-- Para type='section': descripción del "porqué" de la sección (ADR-005 §4.2, Opción C). +-- Para preguntas regulares: hint de ayuda ("Podés marcar más de una opción", etc.). +-- NULL cuando no aplica. +ALTER TABLE public.questions + ADD COLUMN IF NOT EXISTS hint text; + +-- ── Vocabulario extendido de conditional_rules (referencia para el motor de flujo) ── +-- +-- Formato de cada regla: +-- { "if_question": CODE | CODE[], "op": OPERATOR, "value": VALUE, "action": ACTION } +-- +-- Operadores: +-- "eq" — igualdad simple: la respuesta a if_question == value +-- "eq_any" — OR lógico: AL MENOS UNO de los if_question[] == value +-- "not_in" — la respuesta a if_question NO está en value (array de strings) +-- "contains" — la respuesta (multiple_choice) CONTIENE value como uno de los +-- elementos seleccionados; útil para detectar "Ninguna de las anteriores" +-- "eq_sole" — la respuesta (multiple_choice) tiene VALUE como ÚNICO elemento +-- seleccionado; usado para el recorrido "solo niño sin discapacidad" +-- +-- Acciones: +-- "show" — mostrar esta pregunta/sección cuando la condición se cumple +-- "hide" — ocultar esta pregunta/sección cuando la condición se cumple +-- +-- Semántica de auto-target: la regla afecta a la pregunta/sección que la porta. +-- Sin campo "target": una pregunta declara su propia condición de visibilidad. +-- +-- Ejemplo — salto "Ninguna de las anteriores" en 4.1 oculta secciones S5-S7: +-- { "if_question": "4.1", "op": "not_in", +-- "value": ["Discapacidad propia", "Familiar con discapacidad", "Adulto mayor"], +-- "action": "hide" } diff --git a/supabase/seed.sql b/supabase/seed.sql index 1b1697f..b3163cb 100644 --- a/supabase/seed.sql +++ b/supabase/seed.sql @@ -1,33 +1,46 @@ -- ============================================================ --- seed.sql — Instrumento "Mapeo de Cuidadores" v2.1 — 44 preguntas --- Fuente autoritativa: SEED_SPEC.md v2.1 (Jun 2026) — Etapa 3I2 --- Reemplaza v1 (34 preguntas con códigos A-H) +-- seed.sql — Instrumento "Mapeo de Cuidadores" v3.0.0 +-- 10 secciones · 40 preguntas (2 consentimiento + 38 encuesta) -- --- Estructura condicional: --- cond-disc-propia: 1.1='Sí' → 1.2–1.5 (4 dependientes) --- cond-familiar: 1.6='Sí' → 1.7–1.12 (6 dependientes) --- cond-adulto-mayor: 1.13='Sí' → 1.14–1.16 (3 dependientes) --- salto-triple (Cambio 4a): si 1.1, 1.6 y 1.13 son TODAS 'No', se ocultan --- las secciones 2-5 completas y 6.1-6.3 (eq_any 'Sí' sobre 1.1/1.6/1.13) --- Resto (incl. 6.4-6.6 y sección 7): top-level, siempre visibles +-- Fuente autoritativa: +-- Textos de preguntas y opciones: Formulario_Mapeo_Corregido.xlsx (versión corregida) +-- Estructura de secciones y flujo: wizard_formulario_mapeo_v3.html + +-- confirmación directora: recorrido soloNino = 5.3 → 8.4 → 9.1 → 9.4 -- --- is_sensitive=true: 1.1-1.12, 1.14, 1.15, 3.4 (15 preguntas) --- required=false en todas (equipo decidió captura completa; obligatoriedad se define luego) +-- Requiere migración aplicada: 20260620000002_form_schema_v3.sql +-- (agrega columns hint, instance_generator, instance_of a questions) -- --- UUIDs fijos: --- org: 10000000-0000-0000-0000-000000000001 --- cv-v1: 20000000-0000-0000-0000-000000000001 --- survey: 30000000-0000-0000-0000-000000000001 --- preguntas 40000000-0000-0000-0000-00000000000{01..45} excepto 027 (2.4, eliminada) --- → 44 preguntas activas +-- ⚠ SOLO ENTORNOS DE DESARROLLO — nunca ejecutar en producción. +-- En producción: aplicar migraciones manualmente vía CLI del VPS. +-- El seed elimina respuestas y preguntas previas de las 3 encuestas. +-- +-- Flujo declarativo (ADR-005 — lógica en datos, renderer es puro): +-- 3.1 = 'No' → oculta 3.2–3.5 (discapacidad propia no aplica) +-- 4.1 ∋ 'Ninguna...' → oculta S5–S9 (salta a S10) +-- 4.1 = sole 'Hijo menor sin discapacidad' (soloNino): +-- → oculta 5.1, 5.2, 5.4, S6, S7, 8.1–8.3, 9.2, 9.3 +-- → muestra 5.3, 8.4, 9.1, 9.4 +-- +-- UUIDs: +-- orgs: 10000000-0000-0000-0000-00000000000{1,2,3} +-- cv-v1: 20000000-0000-0000-0000-000000000001 (preservado) +-- cv-v2: 20000000-0000-0000-0000-000000000002 (instrumento v3) +-- surveys: 30000000-0000-0000-0000-00000000000{1,2,3} +-- preguntas: gen_random_uuid() — v3 es seed limpio -- ============================================================ --- ── Organización demo ───────────────────────────────────────── -INSERT INTO public.organizations (id, name, sector, size_bucket) -VALUES ('10000000-0000-0000-0000-000000000001','Empresa Demo S.A.','Servicios','100-500') -ON CONFLICT (id) DO NOTHING; +-- ── Organizaciones ──────────────────────────────────────────── +INSERT INTO public.organizations (id, name, sector, size_bucket) VALUES + ('10000000-0000-0000-0000-000000000001', 'Empresa Demo S.A.', 'Servicios', '100-500'), + ('10000000-0000-0000-0000-000000000002', 'InQuality', 'Consultoría/Tecnología', '1-50'), + ('10000000-0000-0000-0000-000000000003', 'Fundación Solidaridad', 'Sociedad Civil/ONG', '1-50') +ON CONFLICT (id) DO UPDATE SET + name = EXCLUDED.name, + sector = EXCLUDED.sector, + size_bucket = EXCLUDED.size_bucket; --- ── Consent version v1 ──────────────────────────────────────── +-- ── Consent versions ────────────────────────────────────────── +-- v1: texto original (preservar — lo referencian consent_records existentes) INSERT INTO public.consent_versions (id, version, body, scopes) VALUES ( '20000000-0000-0000-0000-000000000001', 'v1', @@ -38,116 +51,95 @@ VALUES ( '["operativo","macro_n1"]'::jsonb ) ON CONFLICT (id) DO NOTHING; --- ── Survey ──────────────────────────────────────────────────── -INSERT INTO public.surveys ( - id, org_id, title, status, is_anonymous, - data_sensitivity, security_class, controller_role, - consent_version_id, k_threshold -) VALUES ( - '30000000-0000-0000-0000-000000000001', - '10000000-0000-0000-0000-000000000001', - 'Mapeo de Cuidadores — 2026', 'draft', true, - 'sensible', 'confidencial', 'A', - '20000000-0000-0000-0000-000000000001', 5 +-- v2: texto revisado para instrumento v3.0.0 (Formulario_Mapeo_Corregido.xlsx — S1 intro) +INSERT INTO public.consent_versions (id, version, body, scopes) +VALUES ( + '20000000-0000-0000-0000-000000000002', 'v2', + 'Esta es una encuesta sobre el cuidado de familiares con discapacidad o adultos mayores en ' + 'situación de dependencia, y cómo este cuidado impacta en el trabajo. ' + 'Tu participación es voluntaria y anónima, y no afecta de ninguna manera tu situación laboral. ' + 'No hay respuestas correctas ni incorrectas: solo nos interesa tu experiencia. ' + 'Te va a llevar entre 3 y 10 minutos, según tu situación. ' + 'Tu privacidad es muy importante. No te pedimos datos que te identifiquen (nombre, documento, ' + 'correo). Los resultados se reportan siempre de forma agregada, nunca como respuestas ' + 'individuales, y solo cuando hay suficientes respuestas para que nadie pueda ser identificado. ' + 'Justamente por ser anónima, una vez enviada no es posible ubicar ni eliminar tu respuesta.', + '["operativo","macro_n1"]'::jsonb ) ON CONFLICT (id) DO NOTHING; --- brand_config: org demo (el director actualiza con datos reales antes de enviar el link) -UPDATE public.surveys -SET brand_config = '{"org_name":"Empresa Demo","branch_name":"Oficina Central","branch_city":"Asunción"}'::jsonb -WHERE id = '30000000-0000-0000-0000-000000000001'; - --- ══════════════════════════════════════════════════════════════ --- Etapa 3C — Encuestas piloto (espacio de pruebas real) --- org InQuality: 10000000-0000-0000-0000-000000000002 --- org Fundación Solidaridad: 10000000-0000-0000-0000-000000000003 --- survey InQuality: 30000000-0000-0000-0000-000000000002 --- survey Fundación Solidaridad: 30000000-0000-0000-0000-000000000003 --- No tocan el survey demo (30000000-...-0001). --- ══════════════════════════════════════════════════════════════ - --- ── Organización InQuality ──────────────────────────────────── -INSERT INTO public.organizations (id, name, sector, size_bucket) -VALUES ( - '10000000-0000-0000-0000-000000000002', - 'InQuality', - 'Consultoría/Tecnología', - '1-50' -) ON CONFLICT (id) DO UPDATE SET - name = EXCLUDED.name, - sector = EXCLUDED.sector, - size_bucket = EXCLUDED.size_bucket; - --- ── Organización Fundación Solidaridad ──────────────────────── -INSERT INTO public.organizations (id, name, sector, size_bucket) -VALUES ( - '10000000-0000-0000-0000-000000000003', - 'Fundación Solidaridad', - 'Sociedad Civil/ONG', - '1-50' -) ON CONFLICT (id) DO UPDATE SET - name = EXCLUDED.name, - sector = EXCLUDED.sector, - size_bucket = EXCLUDED.size_bucket; - --- ── Survey InQuality ─────────────────────────────────────────── +-- ── Encuestas ───────────────────────────────────────────────── INSERT INTO public.surveys ( id, org_id, title, status, is_anonymous, data_sensitivity, security_class, controller_role, consent_version_id, brand_config, k_threshold -) VALUES ( - '30000000-0000-0000-0000-000000000002', - '10000000-0000-0000-0000-000000000002', - 'Mapeo de Cuidadores — 2026', - 'live', - true, - 'sensible', - 'confidencial', - 'A', - '20000000-0000-0000-0000-000000000001', - '{"org_name": "InQuality", "branch_name": "Equipo InQuality", "branch_city": "Asunción"}', - 5 -) ON CONFLICT (id) DO UPDATE SET - brand_config = EXCLUDED.brand_config, - status = EXCLUDED.status; - --- ── Survey Fundación Solidaridad ────────────────────────────── -INSERT INTO public.surveys ( - id, org_id, title, status, is_anonymous, - data_sensitivity, security_class, controller_role, - consent_version_id, brand_config, k_threshold -) VALUES ( - '30000000-0000-0000-0000-000000000003', - '10000000-0000-0000-0000-000000000003', - 'Mapeo de Cuidadores — 2026', - 'live', - true, - 'sensible', - 'confidencial', - 'A', - '20000000-0000-0000-0000-000000000001', - '{"org_name": "Fundación Solidaridad", "branch_name": "Equipo Fundación", "branch_city": "Asunción"}', - 5 -) ON CONFLICT (id) DO UPDATE SET - brand_config = EXCLUDED.brand_config, - status = EXCLUDED.status; - --- ── Preguntas: DELETE + INSERT para idempotencia total ──────── -DELETE FROM public.questions -WHERE survey_id = '30000000-0000-0000-0000-000000000001'; - +) VALUES + ( + '30000000-0000-0000-0000-000000000001', + '10000000-0000-0000-0000-000000000001', + 'Mapeo de Cuidadores — 2026', 'draft', true, + 'sensible', 'confidencial', 'A', + '20000000-0000-0000-0000-000000000002', + '{"org_name":"Empresa Demo","branch_name":"Oficina Central","branch_city":"Asunción"}', + 5 + ), + ( + '30000000-0000-0000-0000-000000000002', + '10000000-0000-0000-0000-000000000002', + 'Mapeo de Cuidadores — 2026', 'live', true, + 'sensible', 'confidencial', 'A', + '20000000-0000-0000-0000-000000000002', + '{"org_name":"InQuality","branch_name":"Equipo InQuality","branch_city":"Asunción"}', + 5 + ), + ( + '30000000-0000-0000-0000-000000000003', + '10000000-0000-0000-0000-000000000003', + 'Mapeo de Cuidadores — 2026', 'live', true, + 'sensible', 'confidencial', 'A', + '20000000-0000-0000-0000-000000000002', + '{"org_name":"Fundación Solidaridad","branch_name":"Equipo Fundación","branch_city":"Asunción"}', + 5 + ) +ON CONFLICT (id) DO UPDATE SET + consent_version_id = EXCLUDED.consent_version_id, + brand_config = EXCLUDED.brand_config, + status = EXCLUDED.status; -- ══════════════════════════════════════════════════════════════ --- SECCIÓN A — Datos Generales (top-level, cuasi-identificadores) --- A1=Departamento (single_choice, GeoSelectWidget), A2=Ciudad (single_choice, filtrado client-side) --- A3=Barrio (text_short, opcional) --- qi_sector ← A4 · qi_age_bucket ← A5 · qi_city/qi_country ← Sprint 3 +-- Instrumento v3.0.0 — 50 filas por encuesta (10 secciones + 40 preguntas) +-- DO block: itera las 3 encuestas; opciones largas se declaran como variables -- ══════════════════════════════════════════════════════════════ +DO $seed$ +DECLARE + survey_ids uuid[]; + sid uuid; --- A1: Departamento (18 opciones — los 18 departamentos de Paraguay + Capital) -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options) -VALUES ('40000000-0000-0000-0000-000000000001','30000000-0000-0000-0000-000000000001', - 'A1','single_choice','Departamento',1,false,false, - '[{"value":"Asunción (Capital)","label":"Asunción (Capital)"}, + -- Geo + opts_depts jsonb; + opts_cities jsonb; + + -- Opciones compartidas entre secciones + opts_tipo_disc jsonb; -- 3.2 y 4.2 + opts_disp_propia jsonb; -- 3.3: "No utilizo" + opts_disp_familiar jsonb; -- 4.3: "No utiliza" + opts_vinculos jsonb; -- 4.1 + + -- Reglas de flujo condicional (ver vocabulario en migración 20260620000002) + r_show_si_s3_1 jsonb; -- mostrar cuando 3.1 = 'Sí' + r_hide_ning jsonb; -- ocultar cuando 4.1 contiene "Ninguna..." + r_hide_ning_sn jsonb; -- ocultar cuando Ninguna O soloNino (5.1,5.2,5.4,S6,S7,8.1-3,9.2,9.3) + r_hide_instance jsonb; -- ocultar 4.2/4.3 cuando soloNino O Ninguna + +BEGIN + survey_ids := ARRAY[ + '30000000-0000-0000-0000-000000000001', + '30000000-0000-0000-0000-000000000002', + '30000000-0000-0000-0000-000000000003' + ]::uuid[]; + + -- ── Departamentos (18 — todos los de Paraguay + Capital) ─── + opts_depts := '[ + {"value":"Asunción (Capital)","label":"Asunción (Capital)"}, {"value":"Alto Paraguay","label":"Alto Paraguay"}, {"value":"Alto Paraná","label":"Alto Paraná"}, {"value":"Amambay","label":"Amambay"}, @@ -164,13 +156,12 @@ VALUES ('40000000-0000-0000-0000-000000000001','30000000-0000-0000-0000-00000000 {"value":"Ñeembucú","label":"Ñeembucú"}, {"value":"Paraguarí","label":"Paraguarí"}, {"value":"Presidente Hayes","label":"Presidente Hayes"}, - {"value":"San Pedro","label":"San Pedro"}]'::jsonb); + {"value":"San Pedro","label":"San Pedro"} + ]'::jsonb; --- A2: Ciudad (todas las ciudades; el GeoSelectWidget filtra client-side por departamento) -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options) -VALUES ('40000000-0000-0000-0000-000000000002','30000000-0000-0000-0000-000000000001', - 'A2','single_choice','Ciudad',2,false,false, - '[{"value":"Asunción","label":"Asunción"}, + -- ── Ciudades (219 — fuente: lib/paraguay-geo.ts; filtrado por depto en el renderer) ── + opts_cities := '[ + {"value":"Asunción","label":"Asunción"}, {"value":"Fuerte Olimpo","label":"Fuerte Olimpo"},{"value":"Bahía Negra","label":"Bahía Negra"},{"value":"Carmelo Peralta","label":"Carmelo Peralta"},{"value":"La Victoria","label":"La Victoria"}, {"value":"Ciudad del Este","label":"Ciudad del Este"},{"value":"Hernandarias","label":"Hernandarias"},{"value":"Minga Guazú","label":"Minga Guazú"},{"value":"Presidente Franco","label":"Presidente Franco"},{"value":"Minga Porã","label":"Minga Porã"},{"value":"Naranjal","label":"Naranjal"},{"value":"Ñacunday","label":"Ñacunday"},{"value":"San Alberto","label":"San Alberto"},{"value":"Santa Rita","label":"Santa Rita"},{"value":"Tavapy","label":"Tavapy"},{"value":"Yguazú","label":"Yguazú"},{"value":"Juan E. O''Leary","label":"Juan E. O''Leary"},{"value":"San Cristóbal","label":"San Cristóbal"},{"value":"Santa Fe del Paraná","label":"Santa Fe del Paraná"},{"value":"Dr. Juan León Mallorquín","label":"Dr. Juan León Mallorquín"},{"value":"Itakyry","label":"Itakyry"},{"value":"Domingo Martínez de Irala","label":"Domingo Martínez de Irala"}, {"value":"Pedro Juan Caballero","label":"Pedro Juan Caballero"},{"value":"Bella Vista Norte","label":"Bella Vista Norte"},{"value":"Capitán Bado","label":"Capitán Bado"},{"value":"Zanja Pytã","label":"Zanja Pytã"}, @@ -188,1618 +179,567 @@ VALUES ('40000000-0000-0000-0000-000000000002','30000000-0000-0000-0000-00000000 {"value":"Paraguarí","label":"Paraguarí"},{"value":"Acahay","label":"Acahay"},{"value":"Carapeguá","label":"Carapeguá"},{"value":"Escobar","label":"Escobar"},{"value":"General Bernardino Caballero","label":"General Bernardino Caballero"},{"value":"La Colmena","label":"La Colmena"},{"value":"Mbuyapey","label":"Mbuyapey"},{"value":"Quiindy","label":"Quiindy"},{"value":"Quyquyhó","label":"Quyquyhó"},{"value":"San Roque González de Santa Cruz","label":"San Roque González de Santa Cruz"},{"value":"Sapucaí","label":"Sapucaí"},{"value":"Tebicuarymí","label":"Tebicuarymí"},{"value":"Ybycuí","label":"Ybycuí"},{"value":"Ybytymí","label":"Ybytymí"},{"value":"Yaguarón","label":"Yaguarón"}, {"value":"Villa Hayes","label":"Villa Hayes"},{"value":"Benjamín Aceval","label":"Benjamín Aceval"},{"value":"José Falcón","label":"José Falcón"},{"value":"Nanawa","label":"Nanawa"},{"value":"Nueva Asunción","label":"Nueva Asunción"},{"value":"Pozo Colorado","label":"Pozo Colorado"},{"value":"Puerto Pinasco","label":"Puerto Pinasco"},{"value":"Teniente Primero Manuel Irala Fernández","label":"Teniente Primero Manuel Irala Fernández"},{"value":"Villa del Río","label":"Villa del Río"}, {"value":"San Pedro del Ycuamandiyú","label":"San Pedro del Ycuamandiyú"},{"value":"Antequera","label":"Antequera"},{"value":"Choré","label":"Choré"},{"value":"General Elizardo Aquino","label":"General Elizardo Aquino"},{"value":"Guayaibí","label":"Guayaibí"},{"value":"Itacurubí del Rosario","label":"Itacurubí del Rosario"},{"value":"Lima","label":"Lima"},{"value":"Nueva Germania","label":"Nueva Germania"},{"value":"Río Verde","label":"Río Verde"},{"value":"San Estanislao (Santaní)","label":"San Estanislao (Santaní)"},{"value":"Tacuatí","label":"Tacuatí"},{"value":"Unión","label":"Unión"},{"value":"Villa del Rosario","label":"Villa del Rosario"},{"value":"Yataity del Norte","label":"Yataity del Norte"} - ]'::jsonb); + ]'::jsonb; --- A3: Barrio (text_short, opcional — antes era "Sucursal o sede") -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required) -VALUES ('40000000-0000-0000-0000-000000000003','30000000-0000-0000-0000-000000000001', - 'A3','text_short','¿En qué barrio vivís? (opcional)',3,false,false); - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options) -VALUES ('40000000-0000-0000-0000-000000000004','30000000-0000-0000-0000-000000000001', - 'A4','single_choice','¿En qué área o gerencia trabajás?',4,false,false, - '[{"value":"Directorio","label":"Directorio"}, - {"value":"Gerencia","label":"Gerencia"}, - {"value":"Operaciones/Producción","label":"Operaciones/Producción"}, - {"value":"Comercial/Ventas","label":"Comercial/Ventas"}, - {"value":"Administración/Finanzas","label":"Administración/Finanzas"}, - {"value":"Recursos Humanos/Cultura","label":"Recursos Humanos/Cultura"}, - {"value":"Tecnología/Sistemas","label":"Tecnología/Sistemas"}, - {"value":"Logística/Distribución","label":"Logística/Distribución"}, - {"value":"Otra área","label":"Otra área"}]'::jsonb); - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options) -VALUES ('40000000-0000-0000-0000-000000000005','30000000-0000-0000-0000-000000000001', - 'A5','single_choice','¿Cuántos años tenés?',5,false,false, - '[{"value":"Menos de 25 años","label":"Menos de 25 años"}, - {"value":"25 a 34 años","label":"25 a 34 años"}, - {"value":"35 a 44 años","label":"35 a 44 años"}, - {"value":"45 a 54 años","label":"45 a 54 años"}, - {"value":"55 años o más","label":"55 años o más"}]'::jsonb); - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options) -VALUES ('40000000-0000-0000-0000-000000000006','30000000-0000-0000-0000-000000000001', - 'A6','single_choice','¿Con qué género te identificás?',6,false,false, - '[{"value":"Femenino","label":"Femenino"}, - {"value":"Masculino","label":"Masculino"}, - {"value":"No binario/Otro","label":"No binario/Otro"}]'::jsonb); - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options) -VALUES ('40000000-0000-0000-0000-000000000007','30000000-0000-0000-0000-000000000001', - 'A7','single_choice','¿Cuál es tu modalidad de trabajo actual?',7,false,false, - '[{"value":"Presencial","label":"Presencial"}, - {"value":"Remoto (home office)","label":"Remoto (home office)"}, - {"value":"Híbrido","label":"Híbrido"}]'::jsonb); - - --- ══════════════════════════════════════════════════════════════ --- SECCIÓN 1 — Prevalencia: cuidado y discapacidad (sensible) --- Triggers: 1.1 (→1.2–1.5), 1.6 (→1.7–1.12), 1.13 (→1.14–1.16) --- ══════════════════════════════════════════════════════════════ - --- 1.1 trigger — is_sensitive=true, sin conditional_rules -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options) -VALUES ('40000000-0000-0000-0000-000000000008','30000000-0000-0000-0000-000000000001', - '1.1','single_choice', - '¿Vos mismo/a vivís con alguna discapacidad o condición de salud que afecte tu funcionamiento cotidiano?', - 8,true,false, - '[{"value":"Sí","label":"Sí"}, - {"value":"No","label":"No"}]'::jsonb); - --- cond-disc-propia: 1.2–1.5 se muestran si 1.1='Sí' -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000009','30000000-0000-0000-0000-000000000001', - '1.2','multiple_choice','¿Qué tipo de discapacidad o condición tenés?',9,true,false, - '[{"value":"Discapacidad física/motriz","label":"Discapacidad física/motriz"}, + -- ── Tipo de discapacidad (compartido 3.2 y 4.2) ───────────── + opts_tipo_disc := '[ + {"value":"Física / motora","label":"Física / motora"}, {"value":"Visual","label":"Visual"}, {"value":"Auditiva","label":"Auditiva"}, {"value":"Intelectual","label":"Intelectual"}, - {"value":"TEA","label":"TEA"}, - {"value":"Psicosocial/salud mental","label":"Psicosocial/salud mental"}, - {"value":"Condición crónica que genera limitaciones","label":"Condición crónica que genera limitaciones"}, - {"value":"Otra","label":"Otra"}]'::jsonb, - '[{"if_question":"1.1","op":"eq","value":"Sí","action":"show"}]'::jsonb); + {"value":"Mental / psicosocial","label":"Mental / psicosocial"}, + {"value":"Del habla y la comunicación","label":"Del habla y la comunicación"}, + {"value":"Múltiple","label":"Múltiple"}, + {"value":"Vejez, osteoporosis, artrosis, otras limitaciones de la edad","label":"Vejez, osteoporosis, artrosis, otras limitaciones de la edad"}, + {"value":"Amputación","label":"Amputación"}, + {"value":"Otra / Especificar","label":"Otra / Especificar"} + ]'::jsonb; -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000010','30000000-0000-0000-0000-000000000001', - '1.3','multiple_choice','¿Usás algún elemento de apoyo para la movilidad o autonomía?',10,true,false, - '[{"value":"Silla de ruedas","label":"Silla de ruedas"}, - {"value":"Bastón","label":"Bastón"}, + -- ── Dispositivos de apoyo ──────────────────────────────────── + opts_disp_propia := '[ + {"value":"Silla de ruedas","label":"Silla de ruedas"}, + {"value":"Bastón de apoyo","label":"Bastón de apoyo"}, + {"value":"Bastón blanco","label":"Bastón blanco"}, {"value":"Andador","label":"Andador"}, {"value":"Muletas","label":"Muletas"}, {"value":"Prótesis","label":"Prótesis"}, {"value":"Tecnología asistiva","label":"Tecnología asistiva"}, - {"value":"No utilizo","label":"No utilizo"}]'::jsonb, - '[{"if_question":"1.1","op":"eq","value":"Sí","action":"show"}]'::jsonb); + {"value":"Audífonos","label":"Audífonos"}, + {"value":"No utilizo","label":"No utilizo"} + ]'::jsonb; -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000011','30000000-0000-0000-0000-000000000001', - '1.4','single_choice','¿Contás con certificado oficial de discapacidad?',11,true,false, - '[{"value":"Sí","label":"Sí"}, - {"value":"No, pero estoy en trámite","label":"No, pero estoy en trámite"}, - {"value":"No","label":"No"}]'::jsonb, - '[{"if_question":"1.1","op":"eq","value":"Sí","action":"show"}]'::jsonb); - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000012','30000000-0000-0000-0000-000000000001', - '1.5','single_choice','¿Tu condición afecta tu desempeño o comodidad en el trabajo?',12,true,false, - '[{"value":"Sí, de forma significativa","label":"Sí, de forma significativa"}, - {"value":"Sí, pero en aspectos puntuales","label":"Sí, pero en aspectos puntuales"}, - {"value":"No, está bien gestionada","label":"No, está bien gestionada"}]'::jsonb, - '[{"if_question":"1.1","op":"eq","value":"Sí","action":"show"}]'::jsonb); - --- 1.6 trigger — is_sensitive=true -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options) -VALUES ('40000000-0000-0000-0000-000000000013','30000000-0000-0000-0000-000000000001', - '1.6','single_choice', - '¿Tenés algún familiar cercano (hijo/a, pareja, hermano/a, padre/madre) que viva con discapacidad?', - 13,true,false, - '[{"value":"Sí","label":"Sí"}, - {"value":"No","label":"No"}]'::jsonb); - --- cond-familiar: 1.7–1.12 se muestran si 1.6='Sí' -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000014','30000000-0000-0000-0000-000000000001', - '1.7','multiple_choice','¿Cuál es tu vínculo con esa persona?',14,true,false, - '[{"value":"Hijo/a","label":"Hijo/a"}, - {"value":"Cónyuge/pareja","label":"Cónyuge/pareja"}, - {"value":"Padre o madre","label":"Padre o madre"}, - {"value":"Hermano/a","label":"Hermano/a"}, - {"value":"Otro familiar","label":"Otro familiar"}]'::jsonb, - '[{"if_question":"1.6","op":"eq","value":"Sí","action":"show"}]'::jsonb); - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000015','30000000-0000-0000-0000-000000000001', - '1.8','multiple_choice','¿Qué tipo de discapacidad tiene?',15,true,false, - '[{"value":"Física/motriz","label":"Física/motriz"}, - {"value":"Visual","label":"Visual"}, - {"value":"Auditiva","label":"Auditiva"}, - {"value":"Intelectual","label":"Intelectual"}, - {"value":"TEA","label":"TEA"}, - {"value":"Psicosocial/salud mental","label":"Psicosocial/salud mental"}, - {"value":"Condición crónica severa","label":"Condición crónica severa"}, - {"value":"Otra","label":"Otra"}]'::jsonb, - '[{"if_question":"1.6","op":"eq","value":"Sí","action":"show"}]'::jsonb); - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000016','30000000-0000-0000-0000-000000000001', - '1.9','multiple_choice','¿Qué tipo de apoyo o acompañamiento necesita principalmente?',16,true,false, - '[{"value":"Movilidad física","label":"Movilidad física"}, - {"value":"Comunicación","label":"Comunicación"}, - {"value":"Apoyo escolar/educativo","label":"Apoyo escolar/educativo"}, - {"value":"Inclusión laboral","label":"Inclusión laboral"}, - {"value":"Terapias/rehabilitación","label":"Terapias/rehabilitación"}, - {"value":"Apoyo emocional/psicosocial","label":"Apoyo emocional/psicosocial"}]'::jsonb, - '[{"if_question":"1.6","op":"eq","value":"Sí","action":"show"}]'::jsonb); - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000017','30000000-0000-0000-0000-000000000001', - '1.10','multiple_choice','¿Usa algún elemento de apoyo para la movilidad o autonomía?',17,true,false, - '[{"value":"Silla de ruedas","label":"Silla de ruedas"}, - {"value":"Bastón","label":"Bastón"}, + opts_disp_familiar := '[ + {"value":"Silla de ruedas","label":"Silla de ruedas"}, + {"value":"Bastón de apoyo","label":"Bastón de apoyo"}, + {"value":"Bastón blanco","label":"Bastón blanco"}, {"value":"Andador","label":"Andador"}, {"value":"Muletas","label":"Muletas"}, {"value":"Prótesis","label":"Prótesis"}, {"value":"Tecnología asistiva","label":"Tecnología asistiva"}, - {"value":"No utiliza","label":"No utiliza"}]'::jsonb, - '[{"if_question":"1.6","op":"eq","value":"Sí","action":"show"}]'::jsonb); - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000018','30000000-0000-0000-0000-000000000001', - '1.11','single_choice', - 'Si es niño/a o adolescente en edad escolar: ¿está escolarizado/a y enfrenta barreras de aprendizaje?', - 18,true,false, - '[{"value":"Escolarizado/a, sin barreras importantes","label":"Escolarizado/a, sin barreras importantes"}, - {"value":"Escolarizado/a, enfrenta barreras o faltan ajustes","label":"Escolarizado/a, enfrenta barreras o faltan ajustes"}, - {"value":"No está escolarizado/a","label":"No está escolarizado/a"}, - {"value":"No aplica","label":"No aplica"}]'::jsonb, - '[{"if_question":"1.6","op":"eq","value":"Sí","action":"show"}]'::jsonb); - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000019','30000000-0000-0000-0000-000000000001', - '1.12','single_choice','¿La persona con discapacidad se encuentra trabajando actualmente?',19,true,false, - '[{"value":"Sí, está trabajando","label":"Sí, está trabajando"}, - {"value":"No, y está buscando empleo","label":"No, y está buscando empleo"}, - {"value":"No, y no está buscando","label":"No, y no está buscando"}, - {"value":"No aplica","label":"No aplica"}]'::jsonb, - '[{"if_question":"1.6","op":"eq","value":"Sí","action":"show"}]'::jsonb); - --- 1.13 trigger — NOT sensitive -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options) -VALUES ('40000000-0000-0000-0000-000000000020','30000000-0000-0000-0000-000000000001', - '1.13','single_choice','¿Tenés algún adulto mayor (60+ años) a tu cuidado o bajo tu responsabilidad?', - 20,false,false, - '[{"value":"Sí","label":"Sí"}, - {"value":"No","label":"No"}]'::jsonb); - --- cond-adulto-mayor: 1.14–1.16 se muestran si 1.13='Sí' -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000021','30000000-0000-0000-0000-000000000001', - '1.14','single_choice','¿Qué nivel de dependencia tiene? (la más representativa)',21,true,false, - '[{"value":"Independiente, pero necesita supervisión","label":"Independiente, pero necesita supervisión"}, - {"value":"Dependencia leve","label":"Dependencia leve"}, - {"value":"Dependencia moderada","label":"Dependencia moderada"}, - {"value":"Dependencia severa","label":"Dependencia severa"}]'::jsonb, - '[{"if_question":"1.13","op":"eq","value":"Sí","action":"show"}]'::jsonb); - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000022','30000000-0000-0000-0000-000000000001', - '1.15','multiple_choice','¿Tiene una condición de salud que genere mayor necesidad de cuidado?',22,true,false, - '[{"value":"Demencia/Alzheimer","label":"Demencia/Alzheimer"}, - {"value":"ACV/Parálisis","label":"ACV/Parálisis"}, - {"value":"Enfermedad crónica grave","label":"Enfermedad crónica grave"}, - {"value":"Movilidad reducida","label":"Movilidad reducida"}, - {"value":"Deterioro cognitivo","label":"Deterioro cognitivo"}, - {"value":"Sin condición específica","label":"Sin condición específica"}]'::jsonb, - '[{"if_question":"1.13","op":"eq","value":"Sí","action":"show"}]'::jsonb); - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000023','30000000-0000-0000-0000-000000000001', - '1.16','single_choice','¿Vive con vos o en otra vivienda?',23,false,false, - '[{"value":"Vive en mi hogar","label":"Vive en mi hogar"}, - {"value":"Vive en otra vivienda","label":"Vive en otra vivienda"}, - {"value":"Está en residencia/institución","label":"Está en residencia/institución"}]'::jsonb, - '[{"if_question":"1.13","op":"eq","value":"Sí","action":"show"}]'::jsonb); - - --- ══════════════════════════════════════════════════════════════ --- SECCIÓN 2 — Intensidad y rol del cuidado (top-level) --- Cambio 4a: visible si 1.1='Sí' OR 1.6='Sí' OR 1.13='Sí' (eq_any) --- ══════════════════════════════════════════════════════════════ - --- 2.1: Cambio 5 — pasa a multiple_choice (TECH-DEBT: ranking, ver TECH_DEBT.md) -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000024','30000000-0000-0000-0000-000000000001', - '2.1','multiple_choice','¿Quién es el/la responsable principal del cuidado?',24,false,false, - '[{"value":"Yo soy el/la principal","label":"Yo soy el/la principal"}, - {"value":"Comparto con otro familiar","label":"Comparto con otro familiar"}, - {"value":"Hay cuidador/a pagado/a","label":"Hay cuidador/a pagado/a"}, - {"value":"Está en institución/centro de día","label":"Está en institución/centro de día"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb); - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000025','30000000-0000-0000-0000-000000000001', - '2.2','single_choice','¿Cuántas horas por día dedicás, en promedio, al cuidado directo?',25,false,false, - '[{"value":"Menos de 1h","label":"Menos de 1h"}, - {"value":"Entre 1 y 3h","label":"Entre 1 y 3h"}, - {"value":"Entre 3 y 6h","label":"Entre 3 y 6h"}, - {"value":"Más de 6h","label":"Más de 6h"}, - {"value":"Varía mucho","label":"Varía mucho"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb); - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000026','30000000-0000-0000-0000-000000000001', - '2.3','multiple_choice','¿En qué momentos del día cuidás principalmente?',26,false,false, - '[{"value":"Antes del trabajo","label":"Antes del trabajo"}, - {"value":"Durante horario laboral (llamadas/emergencias)","label":"Durante horario laboral (llamadas/emergencias)"}, - {"value":"Al llegar del trabajo","label":"Al llegar del trabajo"}, - {"value":"Durante la noche","label":"Durante la noche"}, - {"value":"Los fines de semana","label":"Los fines de semana"}, - {"value":"Es continuo sin horario fijo","label":"Es continuo sin horario fijo"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb); - --- 2.4 eliminada (Cambio 6 — feedback equipo médico, similar a 2.1). Ver OBSERVATIONS.md. - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000028','30000000-0000-0000-0000-000000000001', - '2.5','single_choice', - 'Como cuidador/a primario, ¿presentás signos de agotamiento o estrés crónico?',27,false,false, - '[{"value":"Sí, frecuentemente","label":"Sí, frecuentemente"}, - {"value":"A veces","label":"A veces"}, - {"value":"No, lo llevo bien","label":"No, lo llevo bien"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb); - - --- ══════════════════════════════════════════════════════════════ --- SECCIÓN 3 — Impacto económico del cuidado (top-level) --- 3.4: is_sensitive=true + analyst-only (no exponer a org_admin) --- Cambio 4a: visible si 1.1='Sí' OR 1.6='Sí' OR 1.13='Sí' (eq_any) --- ══════════════════════════════════════════════════════════════ - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000029','30000000-0000-0000-0000-000000000001', - '3.1','single_choice','¿Cuánto estimás que gastás por mes en el cuidado?',28,false,false, - '[{"value":"Menos de Gs. 500.000","label":"Menos de Gs. 500.000"}, - {"value":"Gs. 500.000–1.500.000","label":"Gs. 500.000–1.500.000"}, - {"value":"Gs. 1.500.000–3.000.000","label":"Gs. 1.500.000–3.000.000"}, - {"value":"Gs. 3.000.000–6.000.000","label":"Gs. 3.000.000–6.000.000"}, - {"value":"Más de Gs. 6.000.000","label":"Más de Gs. 6.000.000"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb); - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000030','30000000-0000-0000-0000-000000000001', - '3.2','multiple_choice','¿Qué servicios o apoyos utilizás actualmente?',29,false,false, - '[{"value":"Terapias especializadas","label":"Terapias especializadas"}, - {"value":"Cuidador/a particular","label":"Cuidador/a particular"}, - {"value":"Centro de día/institución","label":"Centro de día/institución"}, - {"value":"Transporte adaptado","label":"Transporte adaptado"}, - {"value":"Medicación alto costo","label":"Medicación alto costo"}, - {"value":"Equipamiento médico/tecnología asistiva","label":"Equipamiento médico/tecnología asistiva"}, - {"value":"No utilizo servicios formales","label":"No utilizo servicios formales"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb); - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000031','30000000-0000-0000-0000-000000000001', - '3.3','multiple_choice','¿Cómo sostenés los gastos y responsabilidades del cuidado?',30,false,false, - '[{"value":"Con mi empleo de tiempo completo","label":"Con mi empleo de tiempo completo"}, - {"value":"Con mi empleo de tiempo parcial","label":"Con mi empleo de tiempo parcial"}, - {"value":"Con trabajo independiente/emprendimiento","label":"Con trabajo independiente/emprendimiento"}, - {"value":"Me ayudan mis familiares","label":"Me ayudan mis familiares"}, - {"value":"No puedo sostenerlo con mis ingresos","label":"No puedo sostenerlo con mis ingresos"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb); - --- 3.4: CONFIDENCIAL — is_sensitive=true, analyst-only --- No exponer en ninguna vista accesible a org_admin (ADR-001 addendum) -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000032','30000000-0000-0000-0000-000000000001', - '3.4','single_choice','¿En qué franja salarial mensual te ubicás?',31,true,false, - '[{"value":"Sueldo mínimo","label":"Sueldo mínimo"}, - {"value":"Gs. 3.000.000 a 5.000.000","label":"Gs. 3.000.000 a 5.000.000"}, - {"value":"Gs. 5.000.001–8.000.000","label":"Gs. 5.000.001–8.000.000"}, - {"value":"Gs. 8.000.001–12.000.000","label":"Gs. 8.000.001–12.000.000"}, - {"value":"Gs. 12.000.001–15.000.000","label":"Gs. 12.000.001–15.000.000"}, - {"value":"Gs. 15.000.001–18.000.000","label":"Gs. 15.000.001–18.000.000"}, - {"value":"Gs. 18.000.001–25.000.000","label":"Gs. 18.000.001–25.000.000"}, - {"value":"Gs. 25.000.001–50.000.000","label":"Gs. 25.000.001–50.000.000"}, - {"value":"Gs. 50.000.001 o más","label":"Gs. 50.000.001 o más"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb); - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000033','30000000-0000-0000-0000-000000000001', - '3.5','rating','¿Los gastos de cuidado impactan en tu situación económica personal?',32,false,false, - '{"min":1,"max":5,"min_label":"Sin impacto","max_label":"Muy alto impacto"}'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb); - - --- ══════════════════════════════════════════════════════════════ --- SECCIÓN 4 — Tiempo y descanso (top-level) --- Cambio 4a: visible si 1.1='Sí' OR 1.6='Sí' OR 1.13='Sí' (eq_any) --- ══════════════════════════════════════════════════════════════ - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000034','30000000-0000-0000-0000-000000000001', - '4.1','single_choice','¿Cómo describirías tu nivel de descanso habitual?',33,false,false, - '[{"value":"Descanso bien, me siento recuperado/a","label":"Descanso bien, me siento recuperado/a"}, - {"value":"Descanso de forma irregular, pero lo manejo","label":"Descanso de forma irregular, pero lo manejo"}, - {"value":"Me cuesta descansar, me siento cansado/a con frecuencia","label":"Me cuesta descansar, me siento cansado/a con frecuencia"}, - {"value":"Descanso muy poco, el agotamiento afecta mi día a día","label":"Descanso muy poco, el agotamiento afecta mi día a día"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb); - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000035','30000000-0000-0000-0000-000000000001', - '4.2','multiple_choice','¿Qué aspectos de tu vida se ven más afectados por tu rol de cuidador/a?',34,false,false, - '[{"value":"Tiempo libre y ocio","label":"Tiempo libre y ocio"}, - {"value":"Sueño y descanso","label":"Sueño y descanso"}, - {"value":"Vida social y amistades","label":"Vida social y amistades"}, - {"value":"Vida en pareja/familiar","label":"Vida en pareja/familiar"}, - {"value":"Salud física personal","label":"Salud física personal"}, - {"value":"Salud emocional/mental","label":"Salud emocional/mental"}, - {"value":"Desarrollo profesional","label":"Desarrollo profesional"}, - {"value":"Situación económica","label":"Situación económica"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb); - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000036','30000000-0000-0000-0000-000000000001', - '4.3','rating','En una escala del 1 al 5, ¿cómo evaluás tu bienestar general en este momento?',35,false,false, - '{"min":1,"max":5,"min_label":"Muy mal","max_label":"Muy bien"}'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb); - - --- ══════════════════════════════════════════════════════════════ --- SECCIÓN 5 — Impacto en el trabajo (top-level) --- Cambio 4a: visible si 1.1='Sí' OR 1.6='Sí' OR 1.13='Sí' (eq_any) --- ══════════════════════════════════════════════════════════════ - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000037','30000000-0000-0000-0000-000000000001', - '5.1','single_choice', - 'En los últimos 3 meses, ¿con qué frecuencia sentiste que el cuidado afectó tu concentración o rendimiento?', - 36,false,false, - '[{"value":"Nunca o casi nunca","label":"Nunca o casi nunca"}, - {"value":"Algunas veces al mes","label":"Algunas veces al mes"}, - {"value":"Varias veces por semana","label":"Varias veces por semana"}, - {"value":"Casi todos los días","label":"Casi todos los días"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb); - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000038','30000000-0000-0000-0000-000000000001', - '5.2','single_choice', - 'En el último año, ¿faltaste al trabajo por situaciones relacionadas al cuidado?',37,false,false, - '[{"value":"Nunca","label":"Nunca"}, - {"value":"Pocas veces (1–3 veces al año)","label":"Pocas veces (1–3 veces al año)"}, - {"value":"Varias veces (4–10 veces al año)","label":"Varias veces (4–10 veces al año)"}, - {"value":"Con frecuencia (más de 10 veces al año)","label":"Con frecuencia (más de 10 veces al año)"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb); - - --- ══════════════════════════════════════════════════════════════ --- SECCIÓN 6 — Conciencia organizacional (top-level) --- 6.1-6.3: Cambio 4a — visible si 1.1='Sí' OR 1.6='Sí' OR 1.13='Sí' (eq_any) --- 6.4-6.6: siempre visibles (destino del salto triple) --- 6.2: multiple_choice max_select=3 (ranking en backlog) --- 6.4/6.5: códigos corregidos (eran 6.2/6.3 duplicados en el HTML original) --- 6.6: nueva pregunta (Cambio 4b) --- ══════════════════════════════════════════════════════════════ - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000039','30000000-0000-0000-0000-000000000001', - '6.1','single_choice', - '¿Sentís que tu empresa conoce o comprende la realidad del cuidado y la discapacidad de su gente?', - 38,false,false, - '[{"value":"Sí, me siento acompañado/a","label":"Sí, me siento acompañado/a"}, - {"value":"Parcialmente, hay cierta comprensión","label":"Parcialmente, hay cierta comprensión"}, - {"value":"No, es algo bastante invisible","label":"No, es algo bastante invisible"}, - {"value":"No, no se puede hablar del tema","label":"No, no se puede hablar del tema"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb); - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,max_select,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000040','30000000-0000-0000-0000-000000000001', - '6.2','multiple_choice','¿Qué apoyos de la empresa te ayudarían más? Elegí hasta 3',39,false,false,3, - '[{"value":"Flexibilidad horaria o trabajo remoto","label":"Flexibilidad horaria o trabajo remoto"}, - {"value":"Apoyo económico o convenios/descuentos","label":"Apoyo económico o convenios/descuentos"}, - {"value":"Acceso a terapias o salud","label":"Acceso a terapias o salud"}, - {"value":"Contención/apoyo emocional o psicológico","label":"Contención/apoyo emocional o psicológico"}, - {"value":"Capacitación y autocuidado","label":"Capacitación y autocuidado"}, - {"value":"Redes de apoyo/grupos de pares","label":"Redes de apoyo/grupos de pares"}, - {"value":"Información sobre recursos y servicios disponibles","label":"Información sobre recursos y servicios disponibles"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb); - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000041','30000000-0000-0000-0000-000000000001', - '6.3','single_choice', - '¿Estarías dispuesto/a a participar en un grupo de apoyo para cuidadores dentro de la empresa?', - 40,false,false, - '[{"value":"Sí, definitivamente","label":"Sí, definitivamente"}, - {"value":"Tal vez, si hay más personas en la misma situación","label":"Tal vez, si hay más personas en la misma situación"}, - {"value":"No por ahora","label":"No por ahora"}, - {"value":"Prefiero mantenerlo en privado","label":"Prefiero mantenerlo en privado"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb); - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options) -VALUES ('40000000-0000-0000-0000-000000000042','30000000-0000-0000-0000-000000000001', - '6.4','single_choice', - '¿Conocés a algún compañero/a de trabajo que esté al cuidado de una persona con discapacidad o dependiente?', - 41,false,false, - '[{"value":"Sí, conozco a varias personas","label":"Sí, conozco a varias personas"}, - {"value":"Sí, conozco a una persona","label":"Sí, conozco a una persona"}, - {"value":"No conozco a nadie","label":"No conozco a nadie"}, - {"value":"No estoy seguro/a","label":"No estoy seguro/a"}]'::jsonb); - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options) -VALUES ('40000000-0000-0000-0000-000000000043','30000000-0000-0000-0000-000000000001', - '6.5','single_choice', - '¿Considerás que la empresa debería ofrecer apoyos a quienes cuidan a una persona dependiente?', - 42,false,false, - '[{"value":"Sí, definitivamente","label":"Sí, definitivamente"}, - {"value":"Tal vez, dependería del caso","label":"Tal vez, dependería del caso"}, - {"value":"No lo considero necesario","label":"No lo considero necesario"}, - {"value":"No lo sé","label":"No lo sé"}]'::jsonb); - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options) -VALUES ('40000000-0000-0000-0000-000000000045','30000000-0000-0000-0000-000000000001', - '6.6','single_choice', - '¿Estarías dispuesto/a a ser voluntario/a en iniciativas y/o redes de apoyo a personas con discapacidad y/o cuidadores?', - 43,false,false, - '[{"value":"Sí","label":"Sí"}, - {"value":"No","label":"No"}, - {"value":"Tal vez","label":"Tal vez"}]'::jsonb); - - --- ══════════════════════════════════════════════════════════════ --- SECCIÓN 7 — Para cerrar (top-level) --- 7.1: text_long — NO exponer en agg_segment ni store analítico (regla 4 CLAUDE.md) --- ══════════════════════════════════════════════════════════════ - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required) -VALUES ('40000000-0000-0000-0000-000000000044','30000000-0000-0000-0000-000000000001', - '7.1','text_long','¿Te gustaría dejar un comentario o sugerencia especial? (opcional)',44,false,false); - --- ══════════════════════════════════════════════════════════════ --- Etapa 3C — Preguntas survey InQuality (0002) --- Mismas 44 preguntas que el survey demo (30000000-...-0001), --- IDs 40000000-0000-0000-0000-00000000002NN. --- ══════════════════════════════════════════════════════════════ - --- ── Preguntas: DELETE + INSERT para idempotencia total ──────── -DELETE FROM public.questions -WHERE survey_id = '30000000-0000-0000-0000-000000000002'; - - - - --- ══════════════════════════════════════════════════════════════ --- SECCIÓN A — Datos Generales (top-level, cuasi-identificadores) --- A1=Departamento (single_choice, GeoSelectWidget), A2=Ciudad (single_choice, filtrado client-side) --- A3=Barrio (text_short, opcional) --- qi_sector ← A4 · qi_age_bucket ← A5 · qi_city/qi_country ← Sprint 3 --- ══════════════════════════════════════════════════════════════ - --- A1: Departamento (18 opciones — los 18 departamentos de Paraguay + Capital) -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options) -VALUES ('40000000-0000-0000-0000-000000000201','30000000-0000-0000-0000-000000000002', - 'A1','single_choice','Departamento',1,false,false, - '[{"value":"Asunción (Capital)","label":"Asunción (Capital)"}, - {"value":"Alto Paraguay","label":"Alto Paraguay"}, - {"value":"Alto Paraná","label":"Alto Paraná"}, - {"value":"Amambay","label":"Amambay"}, - {"value":"Boquerón","label":"Boquerón"}, - {"value":"Caaguazú","label":"Caaguazú"}, - {"value":"Caazapá","label":"Caazapá"}, - {"value":"Canindeyú","label":"Canindeyú"}, - {"value":"Central","label":"Central"}, - {"value":"Concepción","label":"Concepción"}, - {"value":"Cordillera","label":"Cordillera"}, - {"value":"Guairá","label":"Guairá"}, - {"value":"Itapúa","label":"Itapúa"}, - {"value":"Misiones","label":"Misiones"}, - {"value":"Ñeembucú","label":"Ñeembucú"}, - {"value":"Paraguarí","label":"Paraguarí"}, - {"value":"Presidente Hayes","label":"Presidente Hayes"}, - {"value":"San Pedro","label":"San Pedro"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options; - --- A2: Ciudad (todas las ciudades; el GeoSelectWidget filtra client-side por departamento) -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options) -VALUES ('40000000-0000-0000-0000-000000000202','30000000-0000-0000-0000-000000000002', - 'A2','single_choice','Ciudad',2,false,false, - '[{"value":"Asunción","label":"Asunción"}, - {"value":"Fuerte Olimpo","label":"Fuerte Olimpo"},{"value":"Bahía Negra","label":"Bahía Negra"},{"value":"Carmelo Peralta","label":"Carmelo Peralta"},{"value":"La Victoria","label":"La Victoria"}, - {"value":"Ciudad del Este","label":"Ciudad del Este"},{"value":"Hernandarias","label":"Hernandarias"},{"value":"Minga Guazú","label":"Minga Guazú"},{"value":"Presidente Franco","label":"Presidente Franco"},{"value":"Minga Porã","label":"Minga Porã"},{"value":"Naranjal","label":"Naranjal"},{"value":"Ñacunday","label":"Ñacunday"},{"value":"San Alberto","label":"San Alberto"},{"value":"Santa Rita","label":"Santa Rita"},{"value":"Tavapy","label":"Tavapy"},{"value":"Yguazú","label":"Yguazú"},{"value":"Juan E. O''Leary","label":"Juan E. O''Leary"},{"value":"San Cristóbal","label":"San Cristóbal"},{"value":"Santa Fe del Paraná","label":"Santa Fe del Paraná"},{"value":"Dr. Juan León Mallorquín","label":"Dr. Juan León Mallorquín"},{"value":"Itakyry","label":"Itakyry"},{"value":"Domingo Martínez de Irala","label":"Domingo Martínez de Irala"}, - {"value":"Pedro Juan Caballero","label":"Pedro Juan Caballero"},{"value":"Bella Vista Norte","label":"Bella Vista Norte"},{"value":"Capitán Bado","label":"Capitán Bado"},{"value":"Zanja Pytã","label":"Zanja Pytã"}, - {"value":"Filadelfia","label":"Filadelfia"},{"value":"Loma Plata","label":"Loma Plata"},{"value":"Mariscal Estigarribia","label":"Mariscal Estigarribia"},{"value":"Neuland","label":"Neuland"}, - {"value":"Coronel Oviedo","label":"Coronel Oviedo"},{"value":"Caaguazú","label":"Caaguazú"},{"value":"Carayaó","label":"Carayaó"},{"value":"Dr. Juan Manuel Frutos","label":"Dr. Juan Manuel Frutos"},{"value":"Mbutuy","label":"Mbutuy"},{"value":"Nueva Londres","label":"Nueva Londres"},{"value":"Raúl Arsenio Oviedo","label":"Raúl Arsenio Oviedo"},{"value":"Repatriación","label":"Repatriación"},{"value":"San Joaquín","label":"San Joaquín"},{"value":"San José de los Arroyos","label":"San José de los Arroyos"},{"value":"Simón Bolívar","label":"Simón Bolívar"},{"value":"Vaquería","label":"Vaquería"},{"value":"Yhú","label":"Yhú"},{"value":"José Domingo Ocampos","label":"José Domingo Ocampos"},{"value":"3 de Febrero","label":"3 de Febrero"},{"value":"Mcal. Francisco Solano López","label":"Mcal. Francisco Solano López"},{"value":"Los Cedrales","label":"Los Cedrales"}, - {"value":"Caazapá","label":"Caazapá"},{"value":"Abai","label":"Abai"},{"value":"Buena Vista","label":"Buena Vista"},{"value":"General Higinio Morínigo","label":"General Higinio Morínigo"},{"value":"Huber Duré","label":"Huber Duré"},{"value":"Maciel","label":"Maciel"},{"value":"San Juan Nepomuceno","label":"San Juan Nepomuceno"},{"value":"Tavaí","label":"Tavaí"},{"value":"Yegros","label":"Yegros"},{"value":"Yuty","label":"Yuty"}, - {"value":"Salto del Guairá","label":"Salto del Guairá"},{"value":"Corpus Christi","label":"Corpus Christi"},{"value":"Curuguaty","label":"Curuguaty"},{"value":"General Francisco Caballero Álvarez","label":"General Francisco Caballero Álvarez"},{"value":"Itanará","label":"Itanará"},{"value":"Katueté","label":"Katueté"},{"value":"La Paloma","label":"La Paloma"},{"value":"Nueva Esperanza","label":"Nueva Esperanza"},{"value":"Yasy Kañy","label":"Yasy Kañy"},{"value":"Ypejhú","label":"Ypejhú"}, - {"value":"Areguá","label":"Areguá"},{"value":"Capiatá","label":"Capiatá"},{"value":"Fernando de la Mora","label":"Fernando de la Mora"},{"value":"Guarambaré","label":"Guarambaré"},{"value":"Itá","label":"Itá"},{"value":"Itauguá","label":"Itauguá"},{"value":"Juan Augusto Saldívar","label":"Juan Augusto Saldívar"},{"value":"Lambaré","label":"Lambaré"},{"value":"Limpio","label":"Limpio"},{"value":"Luque","label":"Luque"},{"value":"Mariano Roque Alonso","label":"Mariano Roque Alonso"},{"value":"Nueva Italia","label":"Nueva Italia"},{"value":"Ñemby","label":"Ñemby"},{"value":"San Antonio","label":"San Antonio"},{"value":"San Lorenzo","label":"San Lorenzo"},{"value":"Villa Elisa","label":"Villa Elisa"},{"value":"Villeta","label":"Villeta"},{"value":"Ypané","label":"Ypané"},{"value":"Ypacaraí","label":"Ypacaraí"}, - {"value":"Concepción","label":"Concepción"},{"value":"Belén","label":"Belén"},{"value":"Horqueta","label":"Horqueta"},{"value":"Loreto","label":"Loreto"},{"value":"San Lázaro","label":"San Lázaro"},{"value":"San Carlos del Apa","label":"San Carlos del Apa"},{"value":"Yby Yaú","label":"Yby Yaú"},{"value":"Azote''y","label":"Azote''y"},{"value":"Sgto. José Félix López","label":"Sgto. José Félix López"}, - {"value":"Caacupé","label":"Caacupé"},{"value":"Altos","label":"Altos"},{"value":"Arroyos y Esteros","label":"Arroyos y Esteros"},{"value":"Caraguatay","label":"Caraguatay"},{"value":"Emboscada","label":"Emboscada"},{"value":"Eusebio Ayala","label":"Eusebio Ayala"},{"value":"Isla Pucú","label":"Isla Pucú"},{"value":"Itacurubí de la Cordillera","label":"Itacurubí de la Cordillera"},{"value":"Juan de Mena","label":"Juan de Mena"},{"value":"Loma Grande","label":"Loma Grande"},{"value":"Mbocayaty del Yhaguy","label":"Mbocayaty del Yhaguy"},{"value":"Nueva Colombia","label":"Nueva Colombia"},{"value":"Pirayú","label":"Pirayú"},{"value":"Primero de Marzo","label":"Primero de Marzo"},{"value":"Tobatí","label":"Tobatí"},{"value":"Valenzuela","label":"Valenzuela"}, - {"value":"Villarrica","label":"Villarrica"},{"value":"Borja","label":"Borja"},{"value":"Capitán Mauricio José Troche","label":"Capitán Mauricio José Troche"},{"value":"Coronel Martínez","label":"Coronel Martínez"},{"value":"Félix Pérez Cardozo","label":"Félix Pérez Cardozo"},{"value":"General Eugenio A. Garay","label":"General Eugenio A. Garay"},{"value":"Independencia","label":"Independencia"},{"value":"Itapé","label":"Itapé"},{"value":"Iturbe","label":"Iturbe"},{"value":"José Fassardi","label":"José Fassardi"},{"value":"Mbocayaty","label":"Mbocayaty"},{"value":"Natalicio Talavera","label":"Natalicio Talavera"},{"value":"Ñumí","label":"Ñumí"},{"value":"San Salvador","label":"San Salvador"},{"value":"Yataity","label":"Yataity"}, - {"value":"Encarnación","label":"Encarnación"},{"value":"Alto Verá","label":"Alto Verá"},{"value":"Bella Vista","label":"Bella Vista"},{"value":"Cambyretá","label":"Cambyretá"},{"value":"Capitán Meza","label":"Capitán Meza"},{"value":"Capitán Miranda","label":"Capitán Miranda"},{"value":"Carlos A. López","label":"Carlos A. López"},{"value":"Carmen del Paraná","label":"Carmen del Paraná"},{"value":"Coronel Bogado","label":"Coronel Bogado"},{"value":"Cosme","label":"Cosme"},{"value":"Edelira","label":"Edelira"},{"value":"Fram","label":"Fram"},{"value":"General Artigas","label":"General Artigas"},{"value":"Hohenau","label":"Hohenau"},{"value":"Itapúa Poty","label":"Itapúa Poty"},{"value":"Jesús","label":"Jesús"},{"value":"La Paz","label":"La Paz"},{"value":"Leandro Oviedo","label":"Leandro Oviedo"},{"value":"Mayor Otaño","label":"Mayor Otaño"},{"value":"Natalio","label":"Natalio"},{"value":"Nueva Alborada","label":"Nueva Alborada"},{"value":"Obligado","label":"Obligado"},{"value":"Pirapó","label":"Pirapó"},{"value":"San Cosme y Damián","label":"San Cosme y Damián"},{"value":"San Juan del Paraná","label":"San Juan del Paraná"},{"value":"San Pedro del Paraná","label":"San Pedro del Paraná"},{"value":"San Rafael del Paraná","label":"San Rafael del Paraná"},{"value":"Trinidad","label":"Trinidad"},{"value":"Tomás Romero Pereira","label":"Tomás Romero Pereira"}, - {"value":"San Juan Bautista","label":"San Juan Bautista"},{"value":"Ayolas","label":"Ayolas"},{"value":"San Ignacio","label":"San Ignacio"},{"value":"San Miguel","label":"San Miguel"},{"value":"San Patricio","label":"San Patricio"},{"value":"Santa María","label":"Santa María"},{"value":"Santa Rosa","label":"Santa Rosa"},{"value":"Santiago","label":"Santiago"},{"value":"Villa Florida","label":"Villa Florida"},{"value":"Yabebyry","label":"Yabebyry"}, - {"value":"Pilar","label":"Pilar"},{"value":"Alberdi","label":"Alberdi"},{"value":"Cerrito","label":"Cerrito"},{"value":"Desmochados","label":"Desmochados"},{"value":"General José Eduvigis Díaz","label":"General José Eduvigis Díaz"},{"value":"Guazú Cuá","label":"Guazú Cuá"},{"value":"Humaitá","label":"Humaitá"},{"value":"Isla Umbú","label":"Isla Umbú"},{"value":"Laureles","label":"Laureles"},{"value":"Mayor José de J. Martínez","label":"Mayor José de J. Martínez"},{"value":"Paso de Patria","label":"Paso de Patria"},{"value":"San Juan Bautista del Ñeembucú","label":"San Juan Bautista del Ñeembucú"},{"value":"Tacuaras","label":"Tacuaras"},{"value":"Villa Franca","label":"Villa Franca"},{"value":"Villa Oliva","label":"Villa Oliva"},{"value":"Villalba","label":"Villalba"}, - {"value":"Paraguarí","label":"Paraguarí"},{"value":"Acahay","label":"Acahay"},{"value":"Carapeguá","label":"Carapeguá"},{"value":"Escobar","label":"Escobar"},{"value":"General Bernardino Caballero","label":"General Bernardino Caballero"},{"value":"La Colmena","label":"La Colmena"},{"value":"Mbuyapey","label":"Mbuyapey"},{"value":"Quiindy","label":"Quiindy"},{"value":"Quyquyhó","label":"Quyquyhó"},{"value":"San Roque González de Santa Cruz","label":"San Roque González de Santa Cruz"},{"value":"Sapucaí","label":"Sapucaí"},{"value":"Tebicuarymí","label":"Tebicuarymí"},{"value":"Ybycuí","label":"Ybycuí"},{"value":"Ybytymí","label":"Ybytymí"},{"value":"Yaguarón","label":"Yaguarón"}, - {"value":"Villa Hayes","label":"Villa Hayes"},{"value":"Benjamín Aceval","label":"Benjamín Aceval"},{"value":"José Falcón","label":"José Falcón"},{"value":"Nanawa","label":"Nanawa"},{"value":"Nueva Asunción","label":"Nueva Asunción"},{"value":"Pozo Colorado","label":"Pozo Colorado"},{"value":"Puerto Pinasco","label":"Puerto Pinasco"},{"value":"Teniente Primero Manuel Irala Fernández","label":"Teniente Primero Manuel Irala Fernández"},{"value":"Villa del Río","label":"Villa del Río"}, - {"value":"San Pedro del Ycuamandiyú","label":"San Pedro del Ycuamandiyú"},{"value":"Antequera","label":"Antequera"},{"value":"Choré","label":"Choré"},{"value":"General Elizardo Aquino","label":"General Elizardo Aquino"},{"value":"Guayaibí","label":"Guayaibí"},{"value":"Itacurubí del Rosario","label":"Itacurubí del Rosario"},{"value":"Lima","label":"Lima"},{"value":"Nueva Germania","label":"Nueva Germania"},{"value":"Río Verde","label":"Río Verde"},{"value":"San Estanislao (Santaní)","label":"San Estanislao (Santaní)"},{"value":"Tacuatí","label":"Tacuatí"},{"value":"Unión","label":"Unión"},{"value":"Villa del Rosario","label":"Villa del Rosario"},{"value":"Yataity del Norte","label":"Yataity del Norte"} - ]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options; - --- A3: Barrio (text_short, opcional — antes era "Sucursal o sede") -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required) -VALUES ('40000000-0000-0000-0000-000000000203','30000000-0000-0000-0000-000000000002', - 'A3','text_short','¿En qué barrio vivís? (opcional)',3,false,false) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options) -VALUES ('40000000-0000-0000-0000-000000000204','30000000-0000-0000-0000-000000000002', - 'A4','single_choice','¿En qué área o gerencia trabajás?',4,false,false, - '[{"value":"Directorio","label":"Directorio"}, - {"value":"Gerencia","label":"Gerencia"}, - {"value":"Operaciones/Producción","label":"Operaciones/Producción"}, - {"value":"Comercial/Ventas","label":"Comercial/Ventas"}, - {"value":"Administración/Finanzas","label":"Administración/Finanzas"}, - {"value":"Recursos Humanos/Cultura","label":"Recursos Humanos/Cultura"}, - {"value":"Tecnología/Sistemas","label":"Tecnología/Sistemas"}, - {"value":"Logística/Distribución","label":"Logística/Distribución"}, - {"value":"Otra área","label":"Otra área"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options) -VALUES ('40000000-0000-0000-0000-000000000205','30000000-0000-0000-0000-000000000002', - 'A5','single_choice','¿Cuántos años tenés?',5,false,false, - '[{"value":"Menos de 25 años","label":"Menos de 25 años"}, - {"value":"25 a 34 años","label":"25 a 34 años"}, - {"value":"35 a 44 años","label":"35 a 44 años"}, - {"value":"45 a 54 años","label":"45 a 54 años"}, - {"value":"55 años o más","label":"55 años o más"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options) -VALUES ('40000000-0000-0000-0000-000000000206','30000000-0000-0000-0000-000000000002', - 'A6','single_choice','¿Con qué género te identificás?',6,false,false, - '[{"value":"Femenino","label":"Femenino"}, - {"value":"Masculino","label":"Masculino"}, - {"value":"No binario/Otro","label":"No binario/Otro"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options) -VALUES ('40000000-0000-0000-0000-000000000207','30000000-0000-0000-0000-000000000002', - 'A7','single_choice','¿Cuál es tu modalidad de trabajo actual?',7,false,false, - '[{"value":"Presencial","label":"Presencial"}, - {"value":"Remoto (home office)","label":"Remoto (home office)"}, - {"value":"Híbrido","label":"Híbrido"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options; - - --- ══════════════════════════════════════════════════════════════ --- SECCIÓN 1 — Prevalencia: cuidado y discapacidad (sensible) --- Triggers: 1.1 (→1.2–1.5), 1.6 (→1.7–1.12), 1.13 (→1.14–1.16) --- ══════════════════════════════════════════════════════════════ - --- 1.1 trigger — is_sensitive=true, sin conditional_rules -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options) -VALUES ('40000000-0000-0000-0000-000000000208','30000000-0000-0000-0000-000000000002', - '1.1','single_choice', - '¿Vos mismo/a vivís con alguna discapacidad o condición de salud que afecte tu funcionamiento cotidiano?', - 8,true,false, - '[{"value":"Sí","label":"Sí"}, - {"value":"No","label":"No"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options; - --- cond-disc-propia: 1.2–1.5 se muestran si 1.1='Sí' -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000209','30000000-0000-0000-0000-000000000002', - '1.2','multiple_choice','¿Qué tipo de discapacidad o condición tenés?',9,true,false, - '[{"value":"Discapacidad física/motriz","label":"Discapacidad física/motriz"}, - {"value":"Visual","label":"Visual"}, - {"value":"Auditiva","label":"Auditiva"}, - {"value":"Intelectual","label":"Intelectual"}, - {"value":"TEA","label":"TEA"}, - {"value":"Psicosocial/salud mental","label":"Psicosocial/salud mental"}, - {"value":"Condición crónica que genera limitaciones","label":"Condición crónica que genera limitaciones"}, - {"value":"Otra","label":"Otra"}]'::jsonb, - '[{"if_question":"1.1","op":"eq","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000210','30000000-0000-0000-0000-000000000002', - '1.3','multiple_choice','¿Usás algún elemento de apoyo para la movilidad o autonomía?',10,true,false, - '[{"value":"Silla de ruedas","label":"Silla de ruedas"}, - {"value":"Bastón","label":"Bastón"}, - {"value":"Andador","label":"Andador"}, - {"value":"Muletas","label":"Muletas"}, - {"value":"Prótesis","label":"Prótesis"}, - {"value":"Tecnología asistiva","label":"Tecnología asistiva"}, - {"value":"No utilizo","label":"No utilizo"}]'::jsonb, - '[{"if_question":"1.1","op":"eq","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000211','30000000-0000-0000-0000-000000000002', - '1.4','single_choice','¿Contás con certificado oficial de discapacidad?',11,true,false, - '[{"value":"Sí","label":"Sí"}, - {"value":"No, pero estoy en trámite","label":"No, pero estoy en trámite"}, - {"value":"No","label":"No"}]'::jsonb, - '[{"if_question":"1.1","op":"eq","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000212','30000000-0000-0000-0000-000000000002', - '1.5','single_choice','¿Tu condición afecta tu desempeño o comodidad en el trabajo?',12,true,false, - '[{"value":"Sí, de forma significativa","label":"Sí, de forma significativa"}, - {"value":"Sí, pero en aspectos puntuales","label":"Sí, pero en aspectos puntuales"}, - {"value":"No, está bien gestionada","label":"No, está bien gestionada"}]'::jsonb, - '[{"if_question":"1.1","op":"eq","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - --- 1.6 trigger — is_sensitive=true -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options) -VALUES ('40000000-0000-0000-0000-000000000213','30000000-0000-0000-0000-000000000002', - '1.6','single_choice', - '¿Tenés algún familiar cercano (hijo/a, pareja, hermano/a, padre/madre) que viva con discapacidad?', - 13,true,false, - '[{"value":"Sí","label":"Sí"}, - {"value":"No","label":"No"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options; - --- cond-familiar: 1.7–1.12 se muestran si 1.6='Sí' -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000214','30000000-0000-0000-0000-000000000002', - '1.7','multiple_choice','¿Cuál es tu vínculo con esa persona?',14,true,false, - '[{"value":"Hijo/a","label":"Hijo/a"}, - {"value":"Cónyuge/pareja","label":"Cónyuge/pareja"}, - {"value":"Padre o madre","label":"Padre o madre"}, - {"value":"Hermano/a","label":"Hermano/a"}, - {"value":"Otro familiar","label":"Otro familiar"}]'::jsonb, - '[{"if_question":"1.6","op":"eq","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000215','30000000-0000-0000-0000-000000000002', - '1.8','multiple_choice','¿Qué tipo de discapacidad tiene?',15,true,false, - '[{"value":"Física/motriz","label":"Física/motriz"}, - {"value":"Visual","label":"Visual"}, - {"value":"Auditiva","label":"Auditiva"}, - {"value":"Intelectual","label":"Intelectual"}, - {"value":"TEA","label":"TEA"}, - {"value":"Psicosocial/salud mental","label":"Psicosocial/salud mental"}, - {"value":"Condición crónica severa","label":"Condición crónica severa"}, - {"value":"Otra","label":"Otra"}]'::jsonb, - '[{"if_question":"1.6","op":"eq","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000216','30000000-0000-0000-0000-000000000002', - '1.9','multiple_choice','¿Qué tipo de apoyo o acompañamiento necesita principalmente?',16,true,false, - '[{"value":"Movilidad física","label":"Movilidad física"}, - {"value":"Comunicación","label":"Comunicación"}, - {"value":"Apoyo escolar/educativo","label":"Apoyo escolar/educativo"}, - {"value":"Inclusión laboral","label":"Inclusión laboral"}, - {"value":"Terapias/rehabilitación","label":"Terapias/rehabilitación"}, - {"value":"Apoyo emocional/psicosocial","label":"Apoyo emocional/psicosocial"}]'::jsonb, - '[{"if_question":"1.6","op":"eq","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000217','30000000-0000-0000-0000-000000000002', - '1.10','multiple_choice','¿Usa algún elemento de apoyo para la movilidad o autonomía?',17,true,false, - '[{"value":"Silla de ruedas","label":"Silla de ruedas"}, - {"value":"Bastón","label":"Bastón"}, - {"value":"Andador","label":"Andador"}, - {"value":"Muletas","label":"Muletas"}, - {"value":"Prótesis","label":"Prótesis"}, - {"value":"Tecnología asistiva","label":"Tecnología asistiva"}, - {"value":"No utiliza","label":"No utiliza"}]'::jsonb, - '[{"if_question":"1.6","op":"eq","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000218','30000000-0000-0000-0000-000000000002', - '1.11','single_choice', - 'Si es niño/a o adolescente en edad escolar: ¿está escolarizado/a y enfrenta barreras de aprendizaje?', - 18,true,false, - '[{"value":"Escolarizado/a, sin barreras importantes","label":"Escolarizado/a, sin barreras importantes"}, - {"value":"Escolarizado/a, enfrenta barreras o faltan ajustes","label":"Escolarizado/a, enfrenta barreras o faltan ajustes"}, - {"value":"No está escolarizado/a","label":"No está escolarizado/a"}, - {"value":"No aplica","label":"No aplica"}]'::jsonb, - '[{"if_question":"1.6","op":"eq","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000219','30000000-0000-0000-0000-000000000002', - '1.12','single_choice','¿La persona con discapacidad se encuentra trabajando actualmente?',19,true,false, - '[{"value":"Sí, está trabajando","label":"Sí, está trabajando"}, - {"value":"No, y está buscando empleo","label":"No, y está buscando empleo"}, - {"value":"No, y no está buscando","label":"No, y no está buscando"}, - {"value":"No aplica","label":"No aplica"}]'::jsonb, - '[{"if_question":"1.6","op":"eq","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - --- 1.13 trigger — NOT sensitive -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options) -VALUES ('40000000-0000-0000-0000-000000000220','30000000-0000-0000-0000-000000000002', - '1.13','single_choice','¿Tenés algún adulto mayor (60+ años) a tu cuidado o bajo tu responsabilidad?', - 20,false,false, - '[{"value":"Sí","label":"Sí"}, - {"value":"No","label":"No"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options; - --- cond-adulto-mayor: 1.14–1.16 se muestran si 1.13='Sí' -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000221','30000000-0000-0000-0000-000000000002', - '1.14','single_choice','¿Qué nivel de dependencia tiene? (la más representativa)',21,true,false, - '[{"value":"Independiente, pero necesita supervisión","label":"Independiente, pero necesita supervisión"}, - {"value":"Dependencia leve","label":"Dependencia leve"}, - {"value":"Dependencia moderada","label":"Dependencia moderada"}, - {"value":"Dependencia severa","label":"Dependencia severa"}]'::jsonb, - '[{"if_question":"1.13","op":"eq","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000222','30000000-0000-0000-0000-000000000002', - '1.15','multiple_choice','¿Tiene una condición de salud que genere mayor necesidad de cuidado?',22,true,false, - '[{"value":"Demencia/Alzheimer","label":"Demencia/Alzheimer"}, - {"value":"ACV/Parálisis","label":"ACV/Parálisis"}, - {"value":"Enfermedad crónica grave","label":"Enfermedad crónica grave"}, - {"value":"Movilidad reducida","label":"Movilidad reducida"}, - {"value":"Deterioro cognitivo","label":"Deterioro cognitivo"}, - {"value":"Sin condición específica","label":"Sin condición específica"}]'::jsonb, - '[{"if_question":"1.13","op":"eq","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000223','30000000-0000-0000-0000-000000000002', - '1.16','single_choice','¿Vive con vos o en otra vivienda?',23,false,false, - '[{"value":"Vive en mi hogar","label":"Vive en mi hogar"}, - {"value":"Vive en otra vivienda","label":"Vive en otra vivienda"}, - {"value":"Está en residencia/institución","label":"Está en residencia/institución"}]'::jsonb, - '[{"if_question":"1.13","op":"eq","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - - --- ══════════════════════════════════════════════════════════════ --- SECCIÓN 2 — Intensidad y rol del cuidado (top-level) --- Cambio 4a: visible si 1.1='Sí' OR 1.6='Sí' OR 1.13='Sí' (eq_any) --- ══════════════════════════════════════════════════════════════ - --- 2.1: Cambio 5 — pasa a multiple_choice (TECH-DEBT: ranking, ver TECH_DEBT.md) -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000224','30000000-0000-0000-0000-000000000002', - '2.1','multiple_choice','¿Quién es el/la responsable principal del cuidado?',24,false,false, - '[{"value":"Yo soy el/la principal","label":"Yo soy el/la principal"}, - {"value":"Comparto con otro familiar","label":"Comparto con otro familiar"}, - {"value":"Hay cuidador/a pagado/a","label":"Hay cuidador/a pagado/a"}, - {"value":"Está en institución/centro de día","label":"Está en institución/centro de día"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000225','30000000-0000-0000-0000-000000000002', - '2.2','single_choice','¿Cuántas horas por día dedicás, en promedio, al cuidado directo?',25,false,false, - '[{"value":"Menos de 1h","label":"Menos de 1h"}, - {"value":"Entre 1 y 3h","label":"Entre 1 y 3h"}, - {"value":"Entre 3 y 6h","label":"Entre 3 y 6h"}, - {"value":"Más de 6h","label":"Más de 6h"}, - {"value":"Varía mucho","label":"Varía mucho"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000226','30000000-0000-0000-0000-000000000002', - '2.3','multiple_choice','¿En qué momentos del día cuidás principalmente?',26,false,false, - '[{"value":"Antes del trabajo","label":"Antes del trabajo"}, - {"value":"Durante horario laboral (llamadas/emergencias)","label":"Durante horario laboral (llamadas/emergencias)"}, - {"value":"Al llegar del trabajo","label":"Al llegar del trabajo"}, - {"value":"Durante la noche","label":"Durante la noche"}, - {"value":"Los fines de semana","label":"Los fines de semana"}, - {"value":"Es continuo sin horario fijo","label":"Es continuo sin horario fijo"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - --- 2.4 eliminada (Cambio 6 — feedback equipo médico, similar a 2.1). Ver OBSERVATIONS.md. - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000228','30000000-0000-0000-0000-000000000002', - '2.5','single_choice', - 'Como cuidador/a primario, ¿presentás signos de agotamiento o estrés crónico?',27,false,false, - '[{"value":"Sí, frecuentemente","label":"Sí, frecuentemente"}, - {"value":"A veces","label":"A veces"}, - {"value":"No, lo llevo bien","label":"No, lo llevo bien"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - - --- ══════════════════════════════════════════════════════════════ --- SECCIÓN 3 — Impacto económico del cuidado (top-level) --- 3.4: is_sensitive=true + analyst-only (no exponer a org_admin) --- Cambio 4a: visible si 1.1='Sí' OR 1.6='Sí' OR 1.13='Sí' (eq_any) --- ══════════════════════════════════════════════════════════════ - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000229','30000000-0000-0000-0000-000000000002', - '3.1','single_choice','¿Cuánto estimás que gastás por mes en el cuidado?',28,false,false, - '[{"value":"Menos de Gs. 500.000","label":"Menos de Gs. 500.000"}, - {"value":"Gs. 500.000–1.500.000","label":"Gs. 500.000–1.500.000"}, - {"value":"Gs. 1.500.000–3.000.000","label":"Gs. 1.500.000–3.000.000"}, - {"value":"Gs. 3.000.000–6.000.000","label":"Gs. 3.000.000–6.000.000"}, - {"value":"Más de Gs. 6.000.000","label":"Más de Gs. 6.000.000"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000230','30000000-0000-0000-0000-000000000002', - '3.2','multiple_choice','¿Qué servicios o apoyos utilizás actualmente?',29,false,false, - '[{"value":"Terapias especializadas","label":"Terapias especializadas"}, - {"value":"Cuidador/a particular","label":"Cuidador/a particular"}, - {"value":"Centro de día/institución","label":"Centro de día/institución"}, - {"value":"Transporte adaptado","label":"Transporte adaptado"}, - {"value":"Medicación alto costo","label":"Medicación alto costo"}, - {"value":"Equipamiento médico/tecnología asistiva","label":"Equipamiento médico/tecnología asistiva"}, - {"value":"No utilizo servicios formales","label":"No utilizo servicios formales"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000231','30000000-0000-0000-0000-000000000002', - '3.3','multiple_choice','¿Cómo sostenés los gastos y responsabilidades del cuidado?',30,false,false, - '[{"value":"Con mi empleo de tiempo completo","label":"Con mi empleo de tiempo completo"}, - {"value":"Con mi empleo de tiempo parcial","label":"Con mi empleo de tiempo parcial"}, - {"value":"Con trabajo independiente/emprendimiento","label":"Con trabajo independiente/emprendimiento"}, - {"value":"Me ayudan mis familiares","label":"Me ayudan mis familiares"}, - {"value":"No puedo sostenerlo con mis ingresos","label":"No puedo sostenerlo con mis ingresos"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - --- 3.4: CONFIDENCIAL — is_sensitive=true, analyst-only --- No exponer en ninguna vista accesible a org_admin (ADR-001 addendum) -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000232','30000000-0000-0000-0000-000000000002', - '3.4','single_choice','¿En qué franja salarial mensual te ubicás?',31,true,false, - '[{"value":"Sueldo mínimo","label":"Sueldo mínimo"}, - {"value":"Gs. 3.000.000 a 5.000.000","label":"Gs. 3.000.000 a 5.000.000"}, - {"value":"Gs. 5.000.001–8.000.000","label":"Gs. 5.000.001–8.000.000"}, - {"value":"Gs. 8.000.001–12.000.000","label":"Gs. 8.000.001–12.000.000"}, - {"value":"Gs. 12.000.001–15.000.000","label":"Gs. 12.000.001–15.000.000"}, - {"value":"Gs. 15.000.001–18.000.000","label":"Gs. 15.000.001–18.000.000"}, - {"value":"Gs. 18.000.001–25.000.000","label":"Gs. 18.000.001–25.000.000"}, - {"value":"Gs. 25.000.001–50.000.000","label":"Gs. 25.000.001–50.000.000"}, - {"value":"Gs. 50.000.001 o más","label":"Gs. 50.000.001 o más"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000233','30000000-0000-0000-0000-000000000002', - '3.5','rating','¿Los gastos de cuidado impactan en tu situación económica personal?',32,false,false, - '{"min":1,"max":5,"min_label":"Sin impacto","max_label":"Muy alto impacto"}'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - - --- ══════════════════════════════════════════════════════════════ --- SECCIÓN 4 — Tiempo y descanso (top-level) --- Cambio 4a: visible si 1.1='Sí' OR 1.6='Sí' OR 1.13='Sí' (eq_any) --- ══════════════════════════════════════════════════════════════ - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000234','30000000-0000-0000-0000-000000000002', - '4.1','single_choice','¿Cómo describirías tu nivel de descanso habitual?',33,false,false, - '[{"value":"Descanso bien, me siento recuperado/a","label":"Descanso bien, me siento recuperado/a"}, - {"value":"Descanso de forma irregular, pero lo manejo","label":"Descanso de forma irregular, pero lo manejo"}, - {"value":"Me cuesta descansar, me siento cansado/a con frecuencia","label":"Me cuesta descansar, me siento cansado/a con frecuencia"}, - {"value":"Descanso muy poco, el agotamiento afecta mi día a día","label":"Descanso muy poco, el agotamiento afecta mi día a día"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000235','30000000-0000-0000-0000-000000000002', - '4.2','multiple_choice','¿Qué aspectos de tu vida se ven más afectados por tu rol de cuidador/a?',34,false,false, - '[{"value":"Tiempo libre y ocio","label":"Tiempo libre y ocio"}, - {"value":"Sueño y descanso","label":"Sueño y descanso"}, - {"value":"Vida social y amistades","label":"Vida social y amistades"}, - {"value":"Vida en pareja/familiar","label":"Vida en pareja/familiar"}, - {"value":"Salud física personal","label":"Salud física personal"}, - {"value":"Salud emocional/mental","label":"Salud emocional/mental"}, - {"value":"Desarrollo profesional","label":"Desarrollo profesional"}, - {"value":"Situación económica","label":"Situación económica"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000236','30000000-0000-0000-0000-000000000002', - '4.3','rating','En una escala del 1 al 5, ¿cómo evaluás tu bienestar general en este momento?',35,false,false, - '{"min":1,"max":5,"min_label":"Muy mal","max_label":"Muy bien"}'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - - --- ══════════════════════════════════════════════════════════════ --- SECCIÓN 5 — Impacto en el trabajo (top-level) --- Cambio 4a: visible si 1.1='Sí' OR 1.6='Sí' OR 1.13='Sí' (eq_any) --- ══════════════════════════════════════════════════════════════ - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000237','30000000-0000-0000-0000-000000000002', - '5.1','single_choice', - 'En los últimos 3 meses, ¿con qué frecuencia sentiste que el cuidado afectó tu concentración o rendimiento?', - 36,false,false, - '[{"value":"Nunca o casi nunca","label":"Nunca o casi nunca"}, - {"value":"Algunas veces al mes","label":"Algunas veces al mes"}, - {"value":"Varias veces por semana","label":"Varias veces por semana"}, - {"value":"Casi todos los días","label":"Casi todos los días"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000238','30000000-0000-0000-0000-000000000002', - '5.2','single_choice', - 'En el último año, ¿faltaste al trabajo por situaciones relacionadas al cuidado?',37,false,false, - '[{"value":"Nunca","label":"Nunca"}, - {"value":"Pocas veces (1–3 veces al año)","label":"Pocas veces (1–3 veces al año)"}, - {"value":"Varias veces (4–10 veces al año)","label":"Varias veces (4–10 veces al año)"}, - {"value":"Con frecuencia (más de 10 veces al año)","label":"Con frecuencia (más de 10 veces al año)"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - - --- ══════════════════════════════════════════════════════════════ --- SECCIÓN 6 — Conciencia organizacional (top-level) --- 6.1-6.3: Cambio 4a — visible si 1.1='Sí' OR 1.6='Sí' OR 1.13='Sí' (eq_any) --- 6.4-6.6: siempre visibles (destino del salto triple) --- 6.2: multiple_choice max_select=3 (ranking en backlog) --- 6.4/6.5: códigos corregidos (eran 6.2/6.3 duplicados en el HTML original) --- 6.6: nueva pregunta (Cambio 4b) --- ══════════════════════════════════════════════════════════════ - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000239','30000000-0000-0000-0000-000000000002', - '6.1','single_choice', - '¿Sentís que tu empresa conoce o comprende la realidad del cuidado y la discapacidad de su gente?', - 38,false,false, - '[{"value":"Sí, me siento acompañado/a","label":"Sí, me siento acompañado/a"}, - {"value":"Parcialmente, hay cierta comprensión","label":"Parcialmente, hay cierta comprensión"}, - {"value":"No, es algo bastante invisible","label":"No, es algo bastante invisible"}, - {"value":"No, no se puede hablar del tema","label":"No, no se puede hablar del tema"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,max_select,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000240','30000000-0000-0000-0000-000000000002', - '6.2','multiple_choice','¿Qué apoyos de la empresa te ayudarían más? Elegí hasta 3',39,false,false,3, - '[{"value":"Flexibilidad horaria o trabajo remoto","label":"Flexibilidad horaria o trabajo remoto"}, - {"value":"Apoyo económico o convenios/descuentos","label":"Apoyo económico o convenios/descuentos"}, - {"value":"Acceso a terapias o salud","label":"Acceso a terapias o salud"}, - {"value":"Contención/apoyo emocional o psicológico","label":"Contención/apoyo emocional o psicológico"}, - {"value":"Capacitación y autocuidado","label":"Capacitación y autocuidado"}, - {"value":"Redes de apoyo/grupos de pares","label":"Redes de apoyo/grupos de pares"}, - {"value":"Información sobre recursos y servicios disponibles","label":"Información sobre recursos y servicios disponibles"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, max_select = EXCLUDED.max_select, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000241','30000000-0000-0000-0000-000000000002', - '6.3','single_choice', - '¿Estarías dispuesto/a a participar en un grupo de apoyo para cuidadores dentro de la empresa?', - 40,false,false, - '[{"value":"Sí, definitivamente","label":"Sí, definitivamente"}, - {"value":"Tal vez, si hay más personas en la misma situación","label":"Tal vez, si hay más personas en la misma situación"}, - {"value":"No por ahora","label":"No por ahora"}, - {"value":"Prefiero mantenerlo en privado","label":"Prefiero mantenerlo en privado"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options) -VALUES ('40000000-0000-0000-0000-000000000242','30000000-0000-0000-0000-000000000002', - '6.4','single_choice', - '¿Conocés a algún compañero/a de trabajo que esté al cuidado de una persona con discapacidad o dependiente?', - 41,false,false, - '[{"value":"Sí, conozco a varias personas","label":"Sí, conozco a varias personas"}, - {"value":"Sí, conozco a una persona","label":"Sí, conozco a una persona"}, - {"value":"No conozco a nadie","label":"No conozco a nadie"}, - {"value":"No estoy seguro/a","label":"No estoy seguro/a"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options) -VALUES ('40000000-0000-0000-0000-000000000243','30000000-0000-0000-0000-000000000002', - '6.5','single_choice', - '¿Considerás que la empresa debería ofrecer apoyos a quienes cuidan a una persona dependiente?', - 42,false,false, - '[{"value":"Sí, definitivamente","label":"Sí, definitivamente"}, - {"value":"Tal vez, dependería del caso","label":"Tal vez, dependería del caso"}, - {"value":"No lo considero necesario","label":"No lo considero necesario"}, - {"value":"No lo sé","label":"No lo sé"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options) -VALUES ('40000000-0000-0000-0000-000000000245','30000000-0000-0000-0000-000000000002', - '6.6','single_choice', - '¿Estarías dispuesto/a a ser voluntario/a en iniciativas y/o redes de apoyo a personas con discapacidad y/o cuidadores?', - 43,false,false, - '[{"value":"Sí","label":"Sí"}, - {"value":"No","label":"No"}, - {"value":"Tal vez","label":"Tal vez"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options; - - --- ══════════════════════════════════════════════════════════════ --- SECCIÓN 7 — Para cerrar (top-level) --- 7.1: text_long — NO exponer en agg_segment ni store analítico (regla 4 CLAUDE.md) --- ══════════════════════════════════════════════════════════════ - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required) -VALUES ('40000000-0000-0000-0000-000000000244','30000000-0000-0000-0000-000000000002', - '7.1','text_long','¿Te gustaría dejar un comentario o sugerencia especial? (opcional)',44,false,false) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required; - --- ══════════════════════════════════════════════════════════════ --- Etapa 3C — Preguntas survey Fundación Solidaridad (0003) --- Mismas 44 preguntas que el survey demo (30000000-...-0001), --- IDs 40000000-0000-0000-0000-00000000003NN. --- ══════════════════════════════════════════════════════════════ - --- ── Preguntas: DELETE + INSERT para idempotencia total ──────── -DELETE FROM public.questions -WHERE survey_id = '30000000-0000-0000-0000-000000000003'; - - - - --- ══════════════════════════════════════════════════════════════ --- SECCIÓN A — Datos Generales (top-level, cuasi-identificadores) --- A1=Departamento (single_choice, GeoSelectWidget), A2=Ciudad (single_choice, filtrado client-side) --- A3=Barrio (text_short, opcional) --- qi_sector ← A4 · qi_age_bucket ← A5 · qi_city/qi_country ← Sprint 3 --- ══════════════════════════════════════════════════════════════ - --- A1: Departamento (18 opciones — los 18 departamentos de Paraguay + Capital) -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options) -VALUES ('40000000-0000-0000-0000-000000000301','30000000-0000-0000-0000-000000000003', - 'A1','single_choice','Departamento',1,false,false, - '[{"value":"Asunción (Capital)","label":"Asunción (Capital)"}, - {"value":"Alto Paraguay","label":"Alto Paraguay"}, - {"value":"Alto Paraná","label":"Alto Paraná"}, - {"value":"Amambay","label":"Amambay"}, - {"value":"Boquerón","label":"Boquerón"}, - {"value":"Caaguazú","label":"Caaguazú"}, - {"value":"Caazapá","label":"Caazapá"}, - {"value":"Canindeyú","label":"Canindeyú"}, - {"value":"Central","label":"Central"}, - {"value":"Concepción","label":"Concepción"}, - {"value":"Cordillera","label":"Cordillera"}, - {"value":"Guairá","label":"Guairá"}, - {"value":"Itapúa","label":"Itapúa"}, - {"value":"Misiones","label":"Misiones"}, - {"value":"Ñeembucú","label":"Ñeembucú"}, - {"value":"Paraguarí","label":"Paraguarí"}, - {"value":"Presidente Hayes","label":"Presidente Hayes"}, - {"value":"San Pedro","label":"San Pedro"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options; - --- A2: Ciudad (todas las ciudades; el GeoSelectWidget filtra client-side por departamento) -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options) -VALUES ('40000000-0000-0000-0000-000000000302','30000000-0000-0000-0000-000000000003', - 'A2','single_choice','Ciudad',2,false,false, - '[{"value":"Asunción","label":"Asunción"}, - {"value":"Fuerte Olimpo","label":"Fuerte Olimpo"},{"value":"Bahía Negra","label":"Bahía Negra"},{"value":"Carmelo Peralta","label":"Carmelo Peralta"},{"value":"La Victoria","label":"La Victoria"}, - {"value":"Ciudad del Este","label":"Ciudad del Este"},{"value":"Hernandarias","label":"Hernandarias"},{"value":"Minga Guazú","label":"Minga Guazú"},{"value":"Presidente Franco","label":"Presidente Franco"},{"value":"Minga Porã","label":"Minga Porã"},{"value":"Naranjal","label":"Naranjal"},{"value":"Ñacunday","label":"Ñacunday"},{"value":"San Alberto","label":"San Alberto"},{"value":"Santa Rita","label":"Santa Rita"},{"value":"Tavapy","label":"Tavapy"},{"value":"Yguazú","label":"Yguazú"},{"value":"Juan E. O''Leary","label":"Juan E. O''Leary"},{"value":"San Cristóbal","label":"San Cristóbal"},{"value":"Santa Fe del Paraná","label":"Santa Fe del Paraná"},{"value":"Dr. Juan León Mallorquín","label":"Dr. Juan León Mallorquín"},{"value":"Itakyry","label":"Itakyry"},{"value":"Domingo Martínez de Irala","label":"Domingo Martínez de Irala"}, - {"value":"Pedro Juan Caballero","label":"Pedro Juan Caballero"},{"value":"Bella Vista Norte","label":"Bella Vista Norte"},{"value":"Capitán Bado","label":"Capitán Bado"},{"value":"Zanja Pytã","label":"Zanja Pytã"}, - {"value":"Filadelfia","label":"Filadelfia"},{"value":"Loma Plata","label":"Loma Plata"},{"value":"Mariscal Estigarribia","label":"Mariscal Estigarribia"},{"value":"Neuland","label":"Neuland"}, - {"value":"Coronel Oviedo","label":"Coronel Oviedo"},{"value":"Caaguazú","label":"Caaguazú"},{"value":"Carayaó","label":"Carayaó"},{"value":"Dr. Juan Manuel Frutos","label":"Dr. Juan Manuel Frutos"},{"value":"Mbutuy","label":"Mbutuy"},{"value":"Nueva Londres","label":"Nueva Londres"},{"value":"Raúl Arsenio Oviedo","label":"Raúl Arsenio Oviedo"},{"value":"Repatriación","label":"Repatriación"},{"value":"San Joaquín","label":"San Joaquín"},{"value":"San José de los Arroyos","label":"San José de los Arroyos"},{"value":"Simón Bolívar","label":"Simón Bolívar"},{"value":"Vaquería","label":"Vaquería"},{"value":"Yhú","label":"Yhú"},{"value":"José Domingo Ocampos","label":"José Domingo Ocampos"},{"value":"3 de Febrero","label":"3 de Febrero"},{"value":"Mcal. Francisco Solano López","label":"Mcal. Francisco Solano López"},{"value":"Los Cedrales","label":"Los Cedrales"}, - {"value":"Caazapá","label":"Caazapá"},{"value":"Abai","label":"Abai"},{"value":"Buena Vista","label":"Buena Vista"},{"value":"General Higinio Morínigo","label":"General Higinio Morínigo"},{"value":"Huber Duré","label":"Huber Duré"},{"value":"Maciel","label":"Maciel"},{"value":"San Juan Nepomuceno","label":"San Juan Nepomuceno"},{"value":"Tavaí","label":"Tavaí"},{"value":"Yegros","label":"Yegros"},{"value":"Yuty","label":"Yuty"}, - {"value":"Salto del Guairá","label":"Salto del Guairá"},{"value":"Corpus Christi","label":"Corpus Christi"},{"value":"Curuguaty","label":"Curuguaty"},{"value":"General Francisco Caballero Álvarez","label":"General Francisco Caballero Álvarez"},{"value":"Itanará","label":"Itanará"},{"value":"Katueté","label":"Katueté"},{"value":"La Paloma","label":"La Paloma"},{"value":"Nueva Esperanza","label":"Nueva Esperanza"},{"value":"Yasy Kañy","label":"Yasy Kañy"},{"value":"Ypejhú","label":"Ypejhú"}, - {"value":"Areguá","label":"Areguá"},{"value":"Capiatá","label":"Capiatá"},{"value":"Fernando de la Mora","label":"Fernando de la Mora"},{"value":"Guarambaré","label":"Guarambaré"},{"value":"Itá","label":"Itá"},{"value":"Itauguá","label":"Itauguá"},{"value":"Juan Augusto Saldívar","label":"Juan Augusto Saldívar"},{"value":"Lambaré","label":"Lambaré"},{"value":"Limpio","label":"Limpio"},{"value":"Luque","label":"Luque"},{"value":"Mariano Roque Alonso","label":"Mariano Roque Alonso"},{"value":"Nueva Italia","label":"Nueva Italia"},{"value":"Ñemby","label":"Ñemby"},{"value":"San Antonio","label":"San Antonio"},{"value":"San Lorenzo","label":"San Lorenzo"},{"value":"Villa Elisa","label":"Villa Elisa"},{"value":"Villeta","label":"Villeta"},{"value":"Ypané","label":"Ypané"},{"value":"Ypacaraí","label":"Ypacaraí"}, - {"value":"Concepción","label":"Concepción"},{"value":"Belén","label":"Belén"},{"value":"Horqueta","label":"Horqueta"},{"value":"Loreto","label":"Loreto"},{"value":"San Lázaro","label":"San Lázaro"},{"value":"San Carlos del Apa","label":"San Carlos del Apa"},{"value":"Yby Yaú","label":"Yby Yaú"},{"value":"Azote''y","label":"Azote''y"},{"value":"Sgto. José Félix López","label":"Sgto. José Félix López"}, - {"value":"Caacupé","label":"Caacupé"},{"value":"Altos","label":"Altos"},{"value":"Arroyos y Esteros","label":"Arroyos y Esteros"},{"value":"Caraguatay","label":"Caraguatay"},{"value":"Emboscada","label":"Emboscada"},{"value":"Eusebio Ayala","label":"Eusebio Ayala"},{"value":"Isla Pucú","label":"Isla Pucú"},{"value":"Itacurubí de la Cordillera","label":"Itacurubí de la Cordillera"},{"value":"Juan de Mena","label":"Juan de Mena"},{"value":"Loma Grande","label":"Loma Grande"},{"value":"Mbocayaty del Yhaguy","label":"Mbocayaty del Yhaguy"},{"value":"Nueva Colombia","label":"Nueva Colombia"},{"value":"Pirayú","label":"Pirayú"},{"value":"Primero de Marzo","label":"Primero de Marzo"},{"value":"Tobatí","label":"Tobatí"},{"value":"Valenzuela","label":"Valenzuela"}, - {"value":"Villarrica","label":"Villarrica"},{"value":"Borja","label":"Borja"},{"value":"Capitán Mauricio José Troche","label":"Capitán Mauricio José Troche"},{"value":"Coronel Martínez","label":"Coronel Martínez"},{"value":"Félix Pérez Cardozo","label":"Félix Pérez Cardozo"},{"value":"General Eugenio A. Garay","label":"General Eugenio A. Garay"},{"value":"Independencia","label":"Independencia"},{"value":"Itapé","label":"Itapé"},{"value":"Iturbe","label":"Iturbe"},{"value":"José Fassardi","label":"José Fassardi"},{"value":"Mbocayaty","label":"Mbocayaty"},{"value":"Natalicio Talavera","label":"Natalicio Talavera"},{"value":"Ñumí","label":"Ñumí"},{"value":"San Salvador","label":"San Salvador"},{"value":"Yataity","label":"Yataity"}, - {"value":"Encarnación","label":"Encarnación"},{"value":"Alto Verá","label":"Alto Verá"},{"value":"Bella Vista","label":"Bella Vista"},{"value":"Cambyretá","label":"Cambyretá"},{"value":"Capitán Meza","label":"Capitán Meza"},{"value":"Capitán Miranda","label":"Capitán Miranda"},{"value":"Carlos A. López","label":"Carlos A. López"},{"value":"Carmen del Paraná","label":"Carmen del Paraná"},{"value":"Coronel Bogado","label":"Coronel Bogado"},{"value":"Cosme","label":"Cosme"},{"value":"Edelira","label":"Edelira"},{"value":"Fram","label":"Fram"},{"value":"General Artigas","label":"General Artigas"},{"value":"Hohenau","label":"Hohenau"},{"value":"Itapúa Poty","label":"Itapúa Poty"},{"value":"Jesús","label":"Jesús"},{"value":"La Paz","label":"La Paz"},{"value":"Leandro Oviedo","label":"Leandro Oviedo"},{"value":"Mayor Otaño","label":"Mayor Otaño"},{"value":"Natalio","label":"Natalio"},{"value":"Nueva Alborada","label":"Nueva Alborada"},{"value":"Obligado","label":"Obligado"},{"value":"Pirapó","label":"Pirapó"},{"value":"San Cosme y Damián","label":"San Cosme y Damián"},{"value":"San Juan del Paraná","label":"San Juan del Paraná"},{"value":"San Pedro del Paraná","label":"San Pedro del Paraná"},{"value":"San Rafael del Paraná","label":"San Rafael del Paraná"},{"value":"Trinidad","label":"Trinidad"},{"value":"Tomás Romero Pereira","label":"Tomás Romero Pereira"}, - {"value":"San Juan Bautista","label":"San Juan Bautista"},{"value":"Ayolas","label":"Ayolas"},{"value":"San Ignacio","label":"San Ignacio"},{"value":"San Miguel","label":"San Miguel"},{"value":"San Patricio","label":"San Patricio"},{"value":"Santa María","label":"Santa María"},{"value":"Santa Rosa","label":"Santa Rosa"},{"value":"Santiago","label":"Santiago"},{"value":"Villa Florida","label":"Villa Florida"},{"value":"Yabebyry","label":"Yabebyry"}, - {"value":"Pilar","label":"Pilar"},{"value":"Alberdi","label":"Alberdi"},{"value":"Cerrito","label":"Cerrito"},{"value":"Desmochados","label":"Desmochados"},{"value":"General José Eduvigis Díaz","label":"General José Eduvigis Díaz"},{"value":"Guazú Cuá","label":"Guazú Cuá"},{"value":"Humaitá","label":"Humaitá"},{"value":"Isla Umbú","label":"Isla Umbú"},{"value":"Laureles","label":"Laureles"},{"value":"Mayor José de J. Martínez","label":"Mayor José de J. Martínez"},{"value":"Paso de Patria","label":"Paso de Patria"},{"value":"San Juan Bautista del Ñeembucú","label":"San Juan Bautista del Ñeembucú"},{"value":"Tacuaras","label":"Tacuaras"},{"value":"Villa Franca","label":"Villa Franca"},{"value":"Villa Oliva","label":"Villa Oliva"},{"value":"Villalba","label":"Villalba"}, - {"value":"Paraguarí","label":"Paraguarí"},{"value":"Acahay","label":"Acahay"},{"value":"Carapeguá","label":"Carapeguá"},{"value":"Escobar","label":"Escobar"},{"value":"General Bernardino Caballero","label":"General Bernardino Caballero"},{"value":"La Colmena","label":"La Colmena"},{"value":"Mbuyapey","label":"Mbuyapey"},{"value":"Quiindy","label":"Quiindy"},{"value":"Quyquyhó","label":"Quyquyhó"},{"value":"San Roque González de Santa Cruz","label":"San Roque González de Santa Cruz"},{"value":"Sapucaí","label":"Sapucaí"},{"value":"Tebicuarymí","label":"Tebicuarymí"},{"value":"Ybycuí","label":"Ybycuí"},{"value":"Ybytymí","label":"Ybytymí"},{"value":"Yaguarón","label":"Yaguarón"}, - {"value":"Villa Hayes","label":"Villa Hayes"},{"value":"Benjamín Aceval","label":"Benjamín Aceval"},{"value":"José Falcón","label":"José Falcón"},{"value":"Nanawa","label":"Nanawa"},{"value":"Nueva Asunción","label":"Nueva Asunción"},{"value":"Pozo Colorado","label":"Pozo Colorado"},{"value":"Puerto Pinasco","label":"Puerto Pinasco"},{"value":"Teniente Primero Manuel Irala Fernández","label":"Teniente Primero Manuel Irala Fernández"},{"value":"Villa del Río","label":"Villa del Río"}, - {"value":"San Pedro del Ycuamandiyú","label":"San Pedro del Ycuamandiyú"},{"value":"Antequera","label":"Antequera"},{"value":"Choré","label":"Choré"},{"value":"General Elizardo Aquino","label":"General Elizardo Aquino"},{"value":"Guayaibí","label":"Guayaibí"},{"value":"Itacurubí del Rosario","label":"Itacurubí del Rosario"},{"value":"Lima","label":"Lima"},{"value":"Nueva Germania","label":"Nueva Germania"},{"value":"Río Verde","label":"Río Verde"},{"value":"San Estanislao (Santaní)","label":"San Estanislao (Santaní)"},{"value":"Tacuatí","label":"Tacuatí"},{"value":"Unión","label":"Unión"},{"value":"Villa del Rosario","label":"Villa del Rosario"},{"value":"Yataity del Norte","label":"Yataity del Norte"} - ]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options; - --- A3: Barrio (text_short, opcional — antes era "Sucursal o sede") -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required) -VALUES ('40000000-0000-0000-0000-000000000303','30000000-0000-0000-0000-000000000003', - 'A3','text_short','¿En qué barrio vivís? (opcional)',3,false,false) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options) -VALUES ('40000000-0000-0000-0000-000000000304','30000000-0000-0000-0000-000000000003', - 'A4','single_choice','¿En qué área o gerencia trabajás?',4,false,false, - '[{"value":"Directorio","label":"Directorio"}, - {"value":"Gerencia","label":"Gerencia"}, - {"value":"Operaciones/Producción","label":"Operaciones/Producción"}, - {"value":"Comercial/Ventas","label":"Comercial/Ventas"}, - {"value":"Administración/Finanzas","label":"Administración/Finanzas"}, - {"value":"Recursos Humanos/Cultura","label":"Recursos Humanos/Cultura"}, - {"value":"Tecnología/Sistemas","label":"Tecnología/Sistemas"}, - {"value":"Logística/Distribución","label":"Logística/Distribución"}, - {"value":"Otra área","label":"Otra área"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options) -VALUES ('40000000-0000-0000-0000-000000000305','30000000-0000-0000-0000-000000000003', - 'A5','single_choice','¿Cuántos años tenés?',5,false,false, - '[{"value":"Menos de 25 años","label":"Menos de 25 años"}, - {"value":"25 a 34 años","label":"25 a 34 años"}, - {"value":"35 a 44 años","label":"35 a 44 años"}, - {"value":"45 a 54 años","label":"45 a 54 años"}, - {"value":"55 años o más","label":"55 años o más"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options) -VALUES ('40000000-0000-0000-0000-000000000306','30000000-0000-0000-0000-000000000003', - 'A6','single_choice','¿Con qué género te identificás?',6,false,false, - '[{"value":"Femenino","label":"Femenino"}, - {"value":"Masculino","label":"Masculino"}, - {"value":"No binario/Otro","label":"No binario/Otro"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options) -VALUES ('40000000-0000-0000-0000-000000000307','30000000-0000-0000-0000-000000000003', - 'A7','single_choice','¿Cuál es tu modalidad de trabajo actual?',7,false,false, - '[{"value":"Presencial","label":"Presencial"}, - {"value":"Remoto (home office)","label":"Remoto (home office)"}, - {"value":"Híbrido","label":"Híbrido"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options; - - --- ══════════════════════════════════════════════════════════════ --- SECCIÓN 1 — Prevalencia: cuidado y discapacidad (sensible) --- Triggers: 1.1 (→1.2–1.5), 1.6 (→1.7–1.12), 1.13 (→1.14–1.16) --- ══════════════════════════════════════════════════════════════ - --- 1.1 trigger — is_sensitive=true, sin conditional_rules -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options) -VALUES ('40000000-0000-0000-0000-000000000308','30000000-0000-0000-0000-000000000003', - '1.1','single_choice', - '¿Vos mismo/a vivís con alguna discapacidad o condición de salud que afecte tu funcionamiento cotidiano?', - 8,true,false, - '[{"value":"Sí","label":"Sí"}, - {"value":"No","label":"No"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options; - --- cond-disc-propia: 1.2–1.5 se muestran si 1.1='Sí' -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000309','30000000-0000-0000-0000-000000000003', - '1.2','multiple_choice','¿Qué tipo de discapacidad o condición tenés?',9,true,false, - '[{"value":"Discapacidad física/motriz","label":"Discapacidad física/motriz"}, - {"value":"Visual","label":"Visual"}, - {"value":"Auditiva","label":"Auditiva"}, - {"value":"Intelectual","label":"Intelectual"}, - {"value":"TEA","label":"TEA"}, - {"value":"Psicosocial/salud mental","label":"Psicosocial/salud mental"}, - {"value":"Condición crónica que genera limitaciones","label":"Condición crónica que genera limitaciones"}, - {"value":"Otra","label":"Otra"}]'::jsonb, - '[{"if_question":"1.1","op":"eq","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000310','30000000-0000-0000-0000-000000000003', - '1.3','multiple_choice','¿Usás algún elemento de apoyo para la movilidad o autonomía?',10,true,false, - '[{"value":"Silla de ruedas","label":"Silla de ruedas"}, - {"value":"Bastón","label":"Bastón"}, - {"value":"Andador","label":"Andador"}, - {"value":"Muletas","label":"Muletas"}, - {"value":"Prótesis","label":"Prótesis"}, - {"value":"Tecnología asistiva","label":"Tecnología asistiva"}, - {"value":"No utilizo","label":"No utilizo"}]'::jsonb, - '[{"if_question":"1.1","op":"eq","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000311','30000000-0000-0000-0000-000000000003', - '1.4','single_choice','¿Contás con certificado oficial de discapacidad?',11,true,false, - '[{"value":"Sí","label":"Sí"}, - {"value":"No, pero estoy en trámite","label":"No, pero estoy en trámite"}, - {"value":"No","label":"No"}]'::jsonb, - '[{"if_question":"1.1","op":"eq","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000312','30000000-0000-0000-0000-000000000003', - '1.5','single_choice','¿Tu condición afecta tu desempeño o comodidad en el trabajo?',12,true,false, - '[{"value":"Sí, de forma significativa","label":"Sí, de forma significativa"}, - {"value":"Sí, pero en aspectos puntuales","label":"Sí, pero en aspectos puntuales"}, - {"value":"No, está bien gestionada","label":"No, está bien gestionada"}]'::jsonb, - '[{"if_question":"1.1","op":"eq","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - --- 1.6 trigger — is_sensitive=true -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options) -VALUES ('40000000-0000-0000-0000-000000000313','30000000-0000-0000-0000-000000000003', - '1.6','single_choice', - '¿Tenés algún familiar cercano (hijo/a, pareja, hermano/a, padre/madre) que viva con discapacidad?', - 13,true,false, - '[{"value":"Sí","label":"Sí"}, - {"value":"No","label":"No"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options; - --- cond-familiar: 1.7–1.12 se muestran si 1.6='Sí' -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000314','30000000-0000-0000-0000-000000000003', - '1.7','multiple_choice','¿Cuál es tu vínculo con esa persona?',14,true,false, - '[{"value":"Hijo/a","label":"Hijo/a"}, - {"value":"Cónyuge/pareja","label":"Cónyuge/pareja"}, - {"value":"Padre o madre","label":"Padre o madre"}, - {"value":"Hermano/a","label":"Hermano/a"}, - {"value":"Otro familiar","label":"Otro familiar"}]'::jsonb, - '[{"if_question":"1.6","op":"eq","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000315','30000000-0000-0000-0000-000000000003', - '1.8','multiple_choice','¿Qué tipo de discapacidad tiene?',15,true,false, - '[{"value":"Física/motriz","label":"Física/motriz"}, - {"value":"Visual","label":"Visual"}, - {"value":"Auditiva","label":"Auditiva"}, - {"value":"Intelectual","label":"Intelectual"}, - {"value":"TEA","label":"TEA"}, - {"value":"Psicosocial/salud mental","label":"Psicosocial/salud mental"}, - {"value":"Condición crónica severa","label":"Condición crónica severa"}, - {"value":"Otra","label":"Otra"}]'::jsonb, - '[{"if_question":"1.6","op":"eq","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000316','30000000-0000-0000-0000-000000000003', - '1.9','multiple_choice','¿Qué tipo de apoyo o acompañamiento necesita principalmente?',16,true,false, - '[{"value":"Movilidad física","label":"Movilidad física"}, - {"value":"Comunicación","label":"Comunicación"}, - {"value":"Apoyo escolar/educativo","label":"Apoyo escolar/educativo"}, - {"value":"Inclusión laboral","label":"Inclusión laboral"}, - {"value":"Terapias/rehabilitación","label":"Terapias/rehabilitación"}, - {"value":"Apoyo emocional/psicosocial","label":"Apoyo emocional/psicosocial"}]'::jsonb, - '[{"if_question":"1.6","op":"eq","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000317','30000000-0000-0000-0000-000000000003', - '1.10','multiple_choice','¿Usa algún elemento de apoyo para la movilidad o autonomía?',17,true,false, - '[{"value":"Silla de ruedas","label":"Silla de ruedas"}, - {"value":"Bastón","label":"Bastón"}, - {"value":"Andador","label":"Andador"}, - {"value":"Muletas","label":"Muletas"}, - {"value":"Prótesis","label":"Prótesis"}, - {"value":"Tecnología asistiva","label":"Tecnología asistiva"}, - {"value":"No utiliza","label":"No utiliza"}]'::jsonb, - '[{"if_question":"1.6","op":"eq","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000318','30000000-0000-0000-0000-000000000003', - '1.11','single_choice', - 'Si es niño/a o adolescente en edad escolar: ¿está escolarizado/a y enfrenta barreras de aprendizaje?', - 18,true,false, - '[{"value":"Escolarizado/a, sin barreras importantes","label":"Escolarizado/a, sin barreras importantes"}, - {"value":"Escolarizado/a, enfrenta barreras o faltan ajustes","label":"Escolarizado/a, enfrenta barreras o faltan ajustes"}, - {"value":"No está escolarizado/a","label":"No está escolarizado/a"}, - {"value":"No aplica","label":"No aplica"}]'::jsonb, - '[{"if_question":"1.6","op":"eq","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000319','30000000-0000-0000-0000-000000000003', - '1.12','single_choice','¿La persona con discapacidad se encuentra trabajando actualmente?',19,true,false, - '[{"value":"Sí, está trabajando","label":"Sí, está trabajando"}, - {"value":"No, y está buscando empleo","label":"No, y está buscando empleo"}, - {"value":"No, y no está buscando","label":"No, y no está buscando"}, - {"value":"No aplica","label":"No aplica"}]'::jsonb, - '[{"if_question":"1.6","op":"eq","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - --- 1.13 trigger — NOT sensitive -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options) -VALUES ('40000000-0000-0000-0000-000000000320','30000000-0000-0000-0000-000000000003', - '1.13','single_choice','¿Tenés algún adulto mayor (60+ años) a tu cuidado o bajo tu responsabilidad?', - 20,false,false, - '[{"value":"Sí","label":"Sí"}, - {"value":"No","label":"No"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options; - --- cond-adulto-mayor: 1.14–1.16 se muestran si 1.13='Sí' -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000321','30000000-0000-0000-0000-000000000003', - '1.14','single_choice','¿Qué nivel de dependencia tiene? (la más representativa)',21,true,false, - '[{"value":"Independiente, pero necesita supervisión","label":"Independiente, pero necesita supervisión"}, - {"value":"Dependencia leve","label":"Dependencia leve"}, - {"value":"Dependencia moderada","label":"Dependencia moderada"}, - {"value":"Dependencia severa","label":"Dependencia severa"}]'::jsonb, - '[{"if_question":"1.13","op":"eq","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000322','30000000-0000-0000-0000-000000000003', - '1.15','multiple_choice','¿Tiene una condición de salud que genere mayor necesidad de cuidado?',22,true,false, - '[{"value":"Demencia/Alzheimer","label":"Demencia/Alzheimer"}, - {"value":"ACV/Parálisis","label":"ACV/Parálisis"}, - {"value":"Enfermedad crónica grave","label":"Enfermedad crónica grave"}, - {"value":"Movilidad reducida","label":"Movilidad reducida"}, - {"value":"Deterioro cognitivo","label":"Deterioro cognitivo"}, - {"value":"Sin condición específica","label":"Sin condición específica"}]'::jsonb, - '[{"if_question":"1.13","op":"eq","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000323','30000000-0000-0000-0000-000000000003', - '1.16','single_choice','¿Vive con vos o en otra vivienda?',23,false,false, - '[{"value":"Vive en mi hogar","label":"Vive en mi hogar"}, - {"value":"Vive en otra vivienda","label":"Vive en otra vivienda"}, - {"value":"Está en residencia/institución","label":"Está en residencia/institución"}]'::jsonb, - '[{"if_question":"1.13","op":"eq","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - - --- ══════════════════════════════════════════════════════════════ --- SECCIÓN 2 — Intensidad y rol del cuidado (top-level) --- Cambio 4a: visible si 1.1='Sí' OR 1.6='Sí' OR 1.13='Sí' (eq_any) --- ══════════════════════════════════════════════════════════════ - --- 2.1: Cambio 5 — pasa a multiple_choice (TECH-DEBT: ranking, ver TECH_DEBT.md) -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000324','30000000-0000-0000-0000-000000000003', - '2.1','multiple_choice','¿Quién es el/la responsable principal del cuidado?',24,false,false, - '[{"value":"Yo soy el/la principal","label":"Yo soy el/la principal"}, - {"value":"Comparto con otro familiar","label":"Comparto con otro familiar"}, - {"value":"Hay cuidador/a pagado/a","label":"Hay cuidador/a pagado/a"}, - {"value":"Está en institución/centro de día","label":"Está en institución/centro de día"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000325','30000000-0000-0000-0000-000000000003', - '2.2','single_choice','¿Cuántas horas por día dedicás, en promedio, al cuidado directo?',25,false,false, - '[{"value":"Menos de 1h","label":"Menos de 1h"}, - {"value":"Entre 1 y 3h","label":"Entre 1 y 3h"}, - {"value":"Entre 3 y 6h","label":"Entre 3 y 6h"}, - {"value":"Más de 6h","label":"Más de 6h"}, - {"value":"Varía mucho","label":"Varía mucho"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000326','30000000-0000-0000-0000-000000000003', - '2.3','multiple_choice','¿En qué momentos del día cuidás principalmente?',26,false,false, - '[{"value":"Antes del trabajo","label":"Antes del trabajo"}, - {"value":"Durante horario laboral (llamadas/emergencias)","label":"Durante horario laboral (llamadas/emergencias)"}, - {"value":"Al llegar del trabajo","label":"Al llegar del trabajo"}, - {"value":"Durante la noche","label":"Durante la noche"}, - {"value":"Los fines de semana","label":"Los fines de semana"}, - {"value":"Es continuo sin horario fijo","label":"Es continuo sin horario fijo"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - --- 2.4 eliminada (Cambio 6 — feedback equipo médico, similar a 2.1). Ver OBSERVATIONS.md. - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000328','30000000-0000-0000-0000-000000000003', - '2.5','single_choice', - 'Como cuidador/a primario, ¿presentás signos de agotamiento o estrés crónico?',27,false,false, - '[{"value":"Sí, frecuentemente","label":"Sí, frecuentemente"}, - {"value":"A veces","label":"A veces"}, - {"value":"No, lo llevo bien","label":"No, lo llevo bien"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - - --- ══════════════════════════════════════════════════════════════ --- SECCIÓN 3 — Impacto económico del cuidado (top-level) --- 3.4: is_sensitive=true + analyst-only (no exponer a org_admin) --- Cambio 4a: visible si 1.1='Sí' OR 1.6='Sí' OR 1.13='Sí' (eq_any) --- ══════════════════════════════════════════════════════════════ - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000329','30000000-0000-0000-0000-000000000003', - '3.1','single_choice','¿Cuánto estimás que gastás por mes en el cuidado?',28,false,false, - '[{"value":"Menos de Gs. 500.000","label":"Menos de Gs. 500.000"}, - {"value":"Gs. 500.000–1.500.000","label":"Gs. 500.000–1.500.000"}, - {"value":"Gs. 1.500.000–3.000.000","label":"Gs. 1.500.000–3.000.000"}, - {"value":"Gs. 3.000.000–6.000.000","label":"Gs. 3.000.000–6.000.000"}, - {"value":"Más de Gs. 6.000.000","label":"Más de Gs. 6.000.000"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000330','30000000-0000-0000-0000-000000000003', - '3.2','multiple_choice','¿Qué servicios o apoyos utilizás actualmente?',29,false,false, - '[{"value":"Terapias especializadas","label":"Terapias especializadas"}, - {"value":"Cuidador/a particular","label":"Cuidador/a particular"}, - {"value":"Centro de día/institución","label":"Centro de día/institución"}, - {"value":"Transporte adaptado","label":"Transporte adaptado"}, - {"value":"Medicación alto costo","label":"Medicación alto costo"}, - {"value":"Equipamiento médico/tecnología asistiva","label":"Equipamiento médico/tecnología asistiva"}, - {"value":"No utilizo servicios formales","label":"No utilizo servicios formales"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000331','30000000-0000-0000-0000-000000000003', - '3.3','multiple_choice','¿Cómo sostenés los gastos y responsabilidades del cuidado?',30,false,false, - '[{"value":"Con mi empleo de tiempo completo","label":"Con mi empleo de tiempo completo"}, - {"value":"Con mi empleo de tiempo parcial","label":"Con mi empleo de tiempo parcial"}, - {"value":"Con trabajo independiente/emprendimiento","label":"Con trabajo independiente/emprendimiento"}, - {"value":"Me ayudan mis familiares","label":"Me ayudan mis familiares"}, - {"value":"No puedo sostenerlo con mis ingresos","label":"No puedo sostenerlo con mis ingresos"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - --- 3.4: CONFIDENCIAL — is_sensitive=true, analyst-only --- No exponer en ninguna vista accesible a org_admin (ADR-001 addendum) -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000332','30000000-0000-0000-0000-000000000003', - '3.4','single_choice','¿En qué franja salarial mensual te ubicás?',31,true,false, - '[{"value":"Sueldo mínimo","label":"Sueldo mínimo"}, - {"value":"Gs. 3.000.000 a 5.000.000","label":"Gs. 3.000.000 a 5.000.000"}, - {"value":"Gs. 5.000.001–8.000.000","label":"Gs. 5.000.001–8.000.000"}, - {"value":"Gs. 8.000.001–12.000.000","label":"Gs. 8.000.001–12.000.000"}, - {"value":"Gs. 12.000.001–15.000.000","label":"Gs. 12.000.001–15.000.000"}, - {"value":"Gs. 15.000.001–18.000.000","label":"Gs. 15.000.001–18.000.000"}, - {"value":"Gs. 18.000.001–25.000.000","label":"Gs. 18.000.001–25.000.000"}, - {"value":"Gs. 25.000.001–50.000.000","label":"Gs. 25.000.001–50.000.000"}, - {"value":"Gs. 50.000.001 o más","label":"Gs. 50.000.001 o más"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000333','30000000-0000-0000-0000-000000000003', - '3.5','rating','¿Los gastos de cuidado impactan en tu situación económica personal?',32,false,false, - '{"min":1,"max":5,"min_label":"Sin impacto","max_label":"Muy alto impacto"}'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - - --- ══════════════════════════════════════════════════════════════ --- SECCIÓN 4 — Tiempo y descanso (top-level) --- Cambio 4a: visible si 1.1='Sí' OR 1.6='Sí' OR 1.13='Sí' (eq_any) --- ══════════════════════════════════════════════════════════════ - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000334','30000000-0000-0000-0000-000000000003', - '4.1','single_choice','¿Cómo describirías tu nivel de descanso habitual?',33,false,false, - '[{"value":"Descanso bien, me siento recuperado/a","label":"Descanso bien, me siento recuperado/a"}, - {"value":"Descanso de forma irregular, pero lo manejo","label":"Descanso de forma irregular, pero lo manejo"}, - {"value":"Me cuesta descansar, me siento cansado/a con frecuencia","label":"Me cuesta descansar, me siento cansado/a con frecuencia"}, - {"value":"Descanso muy poco, el agotamiento afecta mi día a día","label":"Descanso muy poco, el agotamiento afecta mi día a día"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000335','30000000-0000-0000-0000-000000000003', - '4.2','multiple_choice','¿Qué aspectos de tu vida se ven más afectados por tu rol de cuidador/a?',34,false,false, - '[{"value":"Tiempo libre y ocio","label":"Tiempo libre y ocio"}, - {"value":"Sueño y descanso","label":"Sueño y descanso"}, - {"value":"Vida social y amistades","label":"Vida social y amistades"}, - {"value":"Vida en pareja/familiar","label":"Vida en pareja/familiar"}, - {"value":"Salud física personal","label":"Salud física personal"}, - {"value":"Salud emocional/mental","label":"Salud emocional/mental"}, - {"value":"Desarrollo profesional","label":"Desarrollo profesional"}, - {"value":"Situación económica","label":"Situación económica"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000336','30000000-0000-0000-0000-000000000003', - '4.3','rating','En una escala del 1 al 5, ¿cómo evaluás tu bienestar general en este momento?',35,false,false, - '{"min":1,"max":5,"min_label":"Muy mal","max_label":"Muy bien"}'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - - --- ══════════════════════════════════════════════════════════════ --- SECCIÓN 5 — Impacto en el trabajo (top-level) --- Cambio 4a: visible si 1.1='Sí' OR 1.6='Sí' OR 1.13='Sí' (eq_any) --- ══════════════════════════════════════════════════════════════ - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000337','30000000-0000-0000-0000-000000000003', - '5.1','single_choice', - 'En los últimos 3 meses, ¿con qué frecuencia sentiste que el cuidado afectó tu concentración o rendimiento?', - 36,false,false, - '[{"value":"Nunca o casi nunca","label":"Nunca o casi nunca"}, - {"value":"Algunas veces al mes","label":"Algunas veces al mes"}, - {"value":"Varias veces por semana","label":"Varias veces por semana"}, - {"value":"Casi todos los días","label":"Casi todos los días"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000338','30000000-0000-0000-0000-000000000003', - '5.2','single_choice', - 'En el último año, ¿faltaste al trabajo por situaciones relacionadas al cuidado?',37,false,false, - '[{"value":"Nunca","label":"Nunca"}, - {"value":"Pocas veces (1–3 veces al año)","label":"Pocas veces (1–3 veces al año)"}, - {"value":"Varias veces (4–10 veces al año)","label":"Varias veces (4–10 veces al año)"}, - {"value":"Con frecuencia (más de 10 veces al año)","label":"Con frecuencia (más de 10 veces al año)"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - - --- ══════════════════════════════════════════════════════════════ --- SECCIÓN 6 — Conciencia organizacional (top-level) --- 6.1-6.3: Cambio 4a — visible si 1.1='Sí' OR 1.6='Sí' OR 1.13='Sí' (eq_any) --- 6.4-6.6: siempre visibles (destino del salto triple) --- 6.2: multiple_choice max_select=3 (ranking en backlog) --- 6.4/6.5: códigos corregidos (eran 6.2/6.3 duplicados en el HTML original) --- 6.6: nueva pregunta (Cambio 4b) --- ══════════════════════════════════════════════════════════════ - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000339','30000000-0000-0000-0000-000000000003', - '6.1','single_choice', - '¿Sentís que tu empresa conoce o comprende la realidad del cuidado y la discapacidad de su gente?', - 38,false,false, - '[{"value":"Sí, me siento acompañado/a","label":"Sí, me siento acompañado/a"}, - {"value":"Parcialmente, hay cierta comprensión","label":"Parcialmente, hay cierta comprensión"}, - {"value":"No, es algo bastante invisible","label":"No, es algo bastante invisible"}, - {"value":"No, no se puede hablar del tema","label":"No, no se puede hablar del tema"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,max_select,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000340','30000000-0000-0000-0000-000000000003', - '6.2','multiple_choice','¿Qué apoyos de la empresa te ayudarían más? Elegí hasta 3',39,false,false,3, - '[{"value":"Flexibilidad horaria o trabajo remoto","label":"Flexibilidad horaria o trabajo remoto"}, - {"value":"Apoyo económico o convenios/descuentos","label":"Apoyo económico o convenios/descuentos"}, - {"value":"Acceso a terapias o salud","label":"Acceso a terapias o salud"}, - {"value":"Contención/apoyo emocional o psicológico","label":"Contención/apoyo emocional o psicológico"}, - {"value":"Capacitación y autocuidado","label":"Capacitación y autocuidado"}, - {"value":"Redes de apoyo/grupos de pares","label":"Redes de apoyo/grupos de pares"}, - {"value":"Información sobre recursos y servicios disponibles","label":"Información sobre recursos y servicios disponibles"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, max_select = EXCLUDED.max_select, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) -VALUES ('40000000-0000-0000-0000-000000000341','30000000-0000-0000-0000-000000000003', - '6.3','single_choice', - '¿Estarías dispuesto/a a participar en un grupo de apoyo para cuidadores dentro de la empresa?', - 40,false,false, - '[{"value":"Sí, definitivamente","label":"Sí, definitivamente"}, - {"value":"Tal vez, si hay más personas en la misma situación","label":"Tal vez, si hay más personas en la misma situación"}, - {"value":"No por ahora","label":"No por ahora"}, - {"value":"Prefiero mantenerlo en privado","label":"Prefiero mantenerlo en privado"}]'::jsonb, - '[{"if_question":["1.1","1.6","1.13"],"op":"eq_any","value":"Sí","action":"show"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options, conditional_rules = EXCLUDED.conditional_rules; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options) -VALUES ('40000000-0000-0000-0000-000000000342','30000000-0000-0000-0000-000000000003', - '6.4','single_choice', - '¿Conocés a algún compañero/a de trabajo que esté al cuidado de una persona con discapacidad o dependiente?', - 41,false,false, - '[{"value":"Sí, conozco a varias personas","label":"Sí, conozco a varias personas"}, - {"value":"Sí, conozco a una persona","label":"Sí, conozco a una persona"}, - {"value":"No conozco a nadie","label":"No conozco a nadie"}, - {"value":"No estoy seguro/a","label":"No estoy seguro/a"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options) -VALUES ('40000000-0000-0000-0000-000000000343','30000000-0000-0000-0000-000000000003', - '6.5','single_choice', - '¿Considerás que la empresa debería ofrecer apoyos a quienes cuidan a una persona dependiente?', - 42,false,false, - '[{"value":"Sí, definitivamente","label":"Sí, definitivamente"}, - {"value":"Tal vez, dependería del caso","label":"Tal vez, dependería del caso"}, - {"value":"No lo considero necesario","label":"No lo considero necesario"}, - {"value":"No lo sé","label":"No lo sé"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options; - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required,options) -VALUES ('40000000-0000-0000-0000-000000000345','30000000-0000-0000-0000-000000000003', - '6.6','single_choice', - '¿Estarías dispuesto/a a ser voluntario/a en iniciativas y/o redes de apoyo a personas con discapacidad y/o cuidadores?', - 43,false,false, - '[{"value":"Sí","label":"Sí"}, - {"value":"No","label":"No"}, - {"value":"Tal vez","label":"Tal vez"}]'::jsonb) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required, options = EXCLUDED.options; - - --- ══════════════════════════════════════════════════════════════ --- SECCIÓN 7 — Para cerrar (top-level) --- 7.1: text_long — NO exponer en agg_segment ni store analítico (regla 4 CLAUDE.md) --- ══════════════════════════════════════════════════════════════ - -INSERT INTO public.questions (id,survey_id,code,type,prompt,position,is_sensitive,required) -VALUES ('40000000-0000-0000-0000-000000000344','30000000-0000-0000-0000-000000000003', - '7.1','text_long','¿Te gustaría dejar un comentario o sugerencia especial? (opcional)',44,false,false) -ON CONFLICT (id) DO UPDATE SET survey_id = EXCLUDED.survey_id, code = EXCLUDED.code, type = EXCLUDED.type, prompt = EXCLUDED.prompt, position = EXCLUDED.position, is_sensitive = EXCLUDED.is_sensitive, required = EXCLUDED.required; + {"value":"Audífonos","label":"Audífonos"}, + {"value":"No utiliza","label":"No utiliza"} + ]'::jsonb; + + -- ── Vínculos familiares (4.1) ──────────────────────────────── + opts_vinculos := '[ + {"value":"Hijo menor sin discapacidad","label":"Hijo menor sin discapacidad"}, + {"value":"Hijo menor con discapacidad","label":"Hijo menor con discapacidad"}, + {"value":"Hijo adulto con discapacidad","label":"Hijo adulto con discapacidad"}, + {"value":"Familiar menor con discapacidad","label":"Familiar menor con discapacidad"}, + {"value":"Familiar mayor con discapacidad","label":"Familiar mayor con discapacidad"}, + {"value":"Padre/madre con movilidad reducida o 100% dependiente","label":"Padre/madre con movilidad reducida o 100% dependiente"}, + {"value":"Otro / Especificar","label":"Otro / Especificar"}, + {"value":"Ninguna de las anteriores / No tengo vinculación de cuidado","label":"Ninguna de las anteriores / No tengo vinculación de cuidado"} + ]'::jsonb; + + -- ── Reglas de flujo ────────────────────────────────────────── + -- Mostrar 3.2–3.5 solo cuando 3.1 = 'Sí' + r_show_si_s3_1 := '[{"if_question":"3.1","op":"eq","value":"Sí","action":"show"}]'::jsonb; + + -- Ocultar cuando 4.1 contiene "Ninguna de las anteriores..." + r_hide_ning := '[{"if_question":"4.1","op":"contains","value":"Ninguna de las anteriores / No tengo vinculación de cuidado","action":"hide"}]'::jsonb; + + -- Ocultar cuando Ninguna O soloNino (4.1 sole = 'Hijo menor sin discapacidad') + r_hide_ning_sn := '[ + {"if_question":"4.1","op":"contains","value":"Ninguna de las anteriores / No tengo vinculación de cuidado","action":"hide"}, + {"if_question":"4.1","op":"eq_sole","value":"Hijo menor sin discapacidad","action":"hide"} + ]'::jsonb; + + -- Ocultar 4.2/4.3 cuando soloNino O Ninguna + r_hide_instance := '[ + {"if_question":"4.1","op":"contains","value":"Ninguna de las anteriores / No tengo vinculación de cuidado","action":"hide"}, + {"if_question":"4.1","op":"eq_sole","value":"Hijo menor sin discapacidad","action":"hide"} + ]'::jsonb; + + -- ════════════════════════════════════════════════════════════ + FOREACH sid IN ARRAY survey_ids LOOP + -- ════════════════════════════════════════════════════════════ + + -- Limpiar datos previos en orden de dependencia FK (solo en dev). + -- consent_records es padre de responses (responses.consent_record_id → consent_records.id), + -- así que se borran los responses primero y se capturan sus consent_record_id para + -- eliminar esos registros recién después (huérfanos), nunca antes. + DELETE FROM public.answers + WHERE response_id IN (SELECT id FROM public.responses WHERE survey_id = sid); + + WITH del_responses AS ( + DELETE FROM public.responses WHERE survey_id = sid + RETURNING consent_record_id + ) + DELETE FROM public.consent_records + WHERE id IN (SELECT consent_record_id FROM del_responses); + + DELETE FROM public.questions WHERE survey_id = sid; + + -- ════════════════════════════════════════════════════════ + -- SECCIÓN 1 — Consentimiento + -- ════════════════════════════════════════════════════════ + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required) + VALUES(gen_random_uuid(),sid,'S1','section','Consentimiento',10,false,false); + + -- 1.1: casilla requerida para participar + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required) + VALUES(gen_random_uuid(),sid,'1.1','yes_no', + 'Declaro que fui informado/a sobre el propósito de esta encuesta y el tratamiento de mis ' + 'respuestas, y acepto participar de forma voluntaria en el diagnóstico interno de [Empresa].', + 11,false,true); + + -- 1.2: casilla opcional (estudio país) + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required) + VALUES(gen_random_uuid(),sid,'1.2','yes_no', + 'Autorizo que mis respuestas anonimizadas se utilicen para el estudio país sobre la ' + 'economía del cuidado en Paraguay.', + 12,false,false); + + -- ════════════════════════════════════════════════════════ + -- SECCIÓN 2 — Datos generales + -- ════════════════════════════════════════════════════════ + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,hint) + VALUES(gen_random_uuid(),sid,'S2','section','Datos generales',20,false,false, + 'Esta sección releva información demográfica básica, general y anónima.'); + + -- 2.1: Departamento — cuasi-identificador (18 opciones, lib/paraguay-geo.ts) + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,options) + VALUES(gen_random_uuid(),sid,'2.1','single_choice','Departamento',21,false,false,opts_depts); + + -- 2.2: Ciudad — cuasi-identificador (219 ciudades, filtro por depto en renderer) + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,options) + VALUES(gen_random_uuid(),sid,'2.2','single_choice','Ciudad',22,false,false,opts_cities); + + -- 2.3: Barrio — texto libre, opcional (barrios completos se agregan en Etapa 4F) + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,hint) + VALUES(gen_random_uuid(),sid,'2.3','text_short','¿En qué barrio vivís?',23,false,false,'Opcional.'); + + -- 2.4: Rango de edad — cuasi-identificador + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,options) + VALUES(gen_random_uuid(),sid,'2.4','single_choice','¿Cuál es tu rango de edad?',24,false,false, + '[{"value":"Menos de 25 años","label":"Menos de 25 años"}, + {"value":"25 a 34 años","label":"25 a 34 años"}, + {"value":"35 a 44 años","label":"35 a 44 años"}, + {"value":"45 a 54 años","label":"45 a 54 años"}, + {"value":"55 años o más","label":"55 años o más"}]'::jsonb); + + -- 2.5: Género — cuasi-identificador + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,options) + VALUES(gen_random_uuid(),sid,'2.5','single_choice','¿Con qué género te identificás?',25,false,false, + '[{"value":"Femenino","label":"Femenino"}, + {"value":"Masculino","label":"Masculino"}, + {"value":"No binario / Otro","label":"No binario / Otro"}]'::jsonb); + + -- 2.6: Nivel organizacional — cuasi-identificador + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,options) + VALUES(gen_random_uuid(),sid,'2.6','single_choice','¿En qué nivel organizacional estás?',26,false,false, + '[{"value":"Directivo","label":"Directivo"}, + {"value":"Gerencial","label":"Gerencial"}, + {"value":"Jefatura","label":"Jefatura"}, + {"value":"Operativo","label":"Operativo"}, + {"value":"Auxiliar","label":"Auxiliar"}, + {"value":"Otro / Especificar","label":"Otro / Especificar"}]'::jsonb); + + -- 2.7: Modalidad de trabajo — cuasi-identificador + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,options) + VALUES(gen_random_uuid(),sid,'2.7','single_choice','¿Cuál es tu modalidad de trabajo actual?',27,false,false, + '[{"value":"Presencial","label":"Presencial"}, + {"value":"Remoto (home office)","label":"Remoto (home office)"}, + {"value":"Híbrido","label":"Híbrido"}]'::jsonb); + + -- ════════════════════════════════════════════════════════ + -- SECCIÓN 3 — Prevalencia de discapacidad (sensible) + -- Flujo: 3.1='No' → oculta 3.2–3.5 (regla: show cuando 3.1='Sí') + -- ════════════════════════════════════════════════════════ + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,hint) + VALUES(gen_random_uuid(),sid,'S3','section','Prevalencia de discapacidad',30,false,false, + 'En esta sección queremos conocer si vos tenés alguna condición discapacitante y cómo ' + 'influye en tu independencia y desempeño laboral.'); + + -- 3.1: trigger de discapacidad propia (is_sensitive — salud) + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,options) + VALUES(gen_random_uuid(),sid,'3.1','single_choice', + '¿Vos mismo/a tenés alguna discapacidad o condición de salud que pudiera afectar tu ' + 'independencia o desempeño laboral?', + 31,true,false, + '[{"value":"No","label":"No"},{"value":"Sí","label":"Sí"}]'::jsonb); + + -- 3.2: tipo de discapacidad — solo si 3.1='Sí' + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,hint,options,conditional_rules) + VALUES(gen_random_uuid(),sid,'3.2','multiple_choice', + '¿Qué tipo de discapacidad o condición tenés?', + 32,true,false,'Podés marcar más de una opción',opts_tipo_disc,r_show_si_s3_1); + + -- 3.3: dispositivos de apoyo propios ("No utilizo") — solo si 3.1='Sí' + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,hint,options,conditional_rules) + VALUES(gen_random_uuid(),sid,'3.3','multiple_choice', + '¿Usás algún elemento de apoyo para la movilidad o autonomía?', + 33,true,false,'Podés marcar más de una opción',opts_disp_propia,r_show_si_s3_1); + + -- 3.4: certificado de discapacidad — solo si 3.1='Sí' + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) + VALUES(gen_random_uuid(),sid,'3.4','single_choice', + '¿Contás con certificado oficial de discapacidad?', + 34,true,false, + '[{"value":"Sí","label":"Sí"}, + {"value":"No, pero estoy en trámite","label":"No, pero estoy en trámite"}, + {"value":"No","label":"No"}]'::jsonb, + r_show_si_s3_1); + + -- 3.5: impacto en el trabajo — solo si 3.1='Sí' + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,hint,options,conditional_rules) + VALUES(gen_random_uuid(),sid,'3.5','multiple_choice', + '¿Cómo afecta tu discapacidad y/o condición limitante en tu trabajo?', + 35,true,false,'Podés marcar más de una opción', + '[{"value":"No afecta mi rendimiento en absoluto","label":"No afecta mi rendimiento en absoluto"}, + {"value":"Mi desempeño está más afectado por la falta de adecuaciones que por mi discapacidad (herramientas, accesibilidad)","label":"Mi desempeño está más afectado por la falta de adecuaciones que por mi discapacidad (herramientas, accesibilidad)"}, + {"value":"Llegar al trabajo me lleva mucho tiempo por la falta de transporte","label":"Llegar al trabajo me lleva mucho tiempo por la falta de transporte"}, + {"value":"Me cuesta participar de todas las actividades por temas de accesibilidad (física, lenguaje)","label":"Me cuesta participar de todas las actividades por temas de accesibilidad (física, lenguaje)"}]'::jsonb, + r_show_si_s3_1); + + -- ════════════════════════════════════════════════════════ + -- SECCIÓN 4 — Vinculación familiar (sensible) + -- Flujo: + -- 4.1 ∋ 'Ninguna...' → salta a S10 (oculta S5–S9) + -- 4.1 = sole 'Hijo menor...' → soloNino: oculta 4.2, 4.3 + -- 4.1 ∋ opciones 2–7 → muestra 4.2, 4.3 (instancias por vínculo) + -- ════════════════════════════════════════════════════════ + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,hint) + VALUES(gen_random_uuid(),sid,'S4','section','Vinculación familiar',40,false,false, + 'Queremos conocer si estás vinculado/a con algún niño/a (con o sin discapacidad), ' + 'adulto con discapacidad y/o adulto mayor dependiente.'); + + -- 4.1: generator de instancias — cada vínculo (2–7) genera un par 4.2/4.3 + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,hint,options,instance_generator) + VALUES(gen_random_uuid(),sid,'4.1','multiple_choice', + '¿Cuál de las siguientes vinculaciones familiares tenés?', + 41,true,false,'Marca todas las que correspondan',opts_vinculos,true); + + -- 4.2: tipo de disc. del familiar — instancia por cada vínculo 2–7 + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,hint,options,conditional_rules,instance_of) + VALUES(gen_random_uuid(),sid,'4.2','multiple_choice', + '¿Qué tipo de discapacidades o limitaciones tienen tus familiares vinculados?', + 42,true,false,'Podés marcar más de una opción',opts_tipo_disc,r_hide_instance,'4.1'); + + -- 4.3: dispositivos del familiar — instancia por cada vínculo 2–7 + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,hint,options,conditional_rules,instance_of) + VALUES(gen_random_uuid(),sid,'4.3','multiple_choice', + '¿Qué tipo de dispositivos de apoyo utilizan tus familiares vinculados?', + 43,true,false,'Podés marcar más de una opción',opts_disp_familiar,r_hide_instance,'4.1'); + + -- ════════════════════════════════════════════════════════ + -- SECCIÓN 5 — Responsabilidad y cuidado + -- soloNino: muestra solo 5.3; oculta 5.1, 5.2, 5.4 + -- Ninguna: oculta toda la sección + -- ════════════════════════════════════════════════════════ + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,hint,conditional_rules) + VALUES(gen_random_uuid(),sid,'S5','section','Responsabilidad y cuidado',50,false,false, + 'Queremos conocer quién tiene la responsabilidad del cuidado desde lo económico, ' + 'lo logístico y el cuidado activo.', + r_hide_ning); + + -- 5.1: oculta cuando Ninguna O soloNino + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,hint,options,conditional_rules) + VALUES(gen_random_uuid(),sid,'5.1','multiple_choice', + '¿Cuál es tu rol en el cuidado de los niños y/o personas con discapacidad o dependientes?', + 51,false,false,'Podés marcar más de una opción', + '[{"value":"Proveo financieramente los recursos para su cuidado","label":"Proveo financieramente los recursos para su cuidado"}, + {"value":"Comparto los gastos del cuidado con otros familiares","label":"Comparto los gastos del cuidado con otros familiares"}, + {"value":"Administro los recursos y organizo los servicios necesarios","label":"Administro los recursos y organizo los servicios necesarios"}, + {"value":"Cuando salgo del trabajo me ocupo de su cuidado unas horas","label":"Cuando salgo del trabajo me ocupo de su cuidado unas horas"}, + {"value":"Me ocupo de todas las gestiones relacionadas a la persona","label":"Me ocupo de todas las gestiones relacionadas a la persona"}]'::jsonb, + r_hide_ning_sn); + + -- 5.2: oculta cuando Ninguna O soloNino + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,hint,options,conditional_rules) + VALUES(gen_random_uuid(),sid,'5.2','multiple_choice', + '¿En qué momento del día te ocupás de gestionar/organizar el cuidado de las personas a tu cargo?', + 52,false,false,'Podés marcar más de una opción', + '[{"value":"Antes del trabajo","label":"Antes del trabajo"}, + {"value":"Después del trabajo","label":"Después del trabajo"}, + {"value":"Durante el trabajo (llamadas y emergencias)","label":"Durante el trabajo (llamadas y emergencias)"}, + {"value":"En cualquier momento","label":"En cualquier momento"}, + {"value":"Los fines de semana","label":"Los fines de semana"}]'::jsonb, + r_hide_ning_sn); + + -- 5.3: visible también en soloNino (oculta solo cuando Ninguna) + -- soloNino: después de 5.3 el renderer salta a 8.4 (regla de flujo) + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,hint,options,conditional_rules) + VALUES(gen_random_uuid(),sid,'5.3','multiple_choice', + 'Durante el tiempo que estás en el trabajo, ¿quién se ocupa del cuidado de las personas a tu cargo?', + 53,false,false,'Podés marcar más de una opción', + '[{"value":"Mi cónyuge","label":"Mi cónyuge"}, + {"value":"Otro familiar","label":"Otro familiar"}, + {"value":"Un(a) cuidador/a contratado/a","label":"Un(a) cuidador/a contratado/a"}, + {"value":"Un centro de estudios o de cuidado","label":"Un centro de estudios o de cuidado"}, + {"value":"Un/a vecino/a","label":"Un/a vecino/a"}, + {"value":"Otro (especificar)","label":"Otro (especificar)"}]'::jsonb, + r_hide_ning); + + -- 5.4: oculta cuando Ninguna O soloNino + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) + VALUES(gen_random_uuid(),sid,'5.4','single_choice', + '¿Desde hace cuánto cumplís este rol de responsable o cuidador/a?', + 54,false,false, + '[{"value":"Menos de 1 año","label":"Menos de 1 año"}, + {"value":"1 a 3 años","label":"1 a 3 años"}, + {"value":"3 a 5 años","label":"3 a 5 años"}, + {"value":"Más de 5 años","label":"Más de 5 años"}]'::jsonb, + r_hide_ning_sn); + + -- ════════════════════════════════════════════════════════ + -- SECCIÓN 6 — Intensidad del cuidado + -- Toda la sección oculta cuando Ninguna O soloNino + -- ════════════════════════════════════════════════════════ + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,hint,conditional_rules) + VALUES(gen_random_uuid(),sid,'S6','section','Intensidad del cuidado',60,false,false, + 'Queremos conocer cuánto tiempo y con qué intensidad cuidás.',r_hide_ning_sn); + + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,hint,options,conditional_rules) + VALUES(gen_random_uuid(),sid,'6.1','single_choice', + '¿Cuántos días por semana estás a cargo del cuidado directo, en promedio?', + 61,false,false, + 'Tiempo directo de acompañar o cuidar a la persona vinculada', + '[{"value":"1–2","label":"1–2"},{"value":"3–4","label":"3–4"}, + {"value":"5–6","label":"5–6"},{"value":"Todos los días","label":"Todos los días"}]'::jsonb, + r_hide_ning_sn); + + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) + VALUES(gen_random_uuid(),sid,'6.2','single_choice', + 'Cuando estás a cargo del cuidado, ¿cuántas horas por día dedicás, en promedio?', + 62,false,false, + '[{"value":"1–2","label":"1–2"},{"value":"3–4","label":"3–4"}, + {"value":"5–6","label":"5–6"},{"value":"Más de 6 horas","label":"Más de 6 horas"}]'::jsonb, + r_hide_ning_sn); + + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,hint,options,conditional_rules) + VALUES(gen_random_uuid(),sid,'6.3','multiple_choice', + '¿En qué momentos del día cuidás principalmente?', + 63,false,false,'Podés marcar más de una opción', + '[{"value":"Antes del trabajo","label":"Antes del trabajo"}, + {"value":"Al llegar del trabajo","label":"Al llegar del trabajo"}, + {"value":"Durante la noche","label":"Durante la noche"}, + {"value":"Los fines de semana","label":"Los fines de semana"}]'::jsonb, + r_hide_ning_sn); + + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) + VALUES(gen_random_uuid(),sid,'6.4','single_choice', + 'Además del cuidado directo, ¿cuántas horas al día necesitás estar disponible o de ' + 'guardia (aunque no estés cuidando activamente)?', + 64,false,false, + '[{"value":"1–2","label":"1–2"},{"value":"3–4","label":"3–4"}, + {"value":"5–6","label":"5–6"},{"value":"Más de 6 horas","label":"Más de 6 horas"}, + {"value":"De forma permanente / sin horario","label":"De forma permanente / sin horario"}]'::jsonb, + r_hide_ning_sn); + + -- ════════════════════════════════════════════════════════ + -- SECCIÓN 7 — Impacto en el trabajo + -- Toda la sección oculta cuando Ninguna O soloNino + -- ════════════════════════════════════════════════════════ + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,hint,conditional_rules) + VALUES(gen_random_uuid(),sid,'S7','section','Impacto en el trabajo',70,false,false, + 'Queremos conocer cómo impacta o ha impactado en tu desempeño laboral el rol de cuidador/a.', + r_hide_ning_sn); + + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) + VALUES(gen_random_uuid(),sid,'7.1','single_choice', + '¿Cómo describirías tu nivel de descanso cuando te ocupás del cuidado y cómo impacta en tu desempeño?', + 71,false,false, + '[{"value":"Descanso bien, me siento recuperado/a","label":"Descanso bien, me siento recuperado/a"}, + {"value":"Descanso de forma irregular, pero lo manejo","label":"Descanso de forma irregular, pero lo manejo"}, + {"value":"Me cuesta descansar y mi desempeño se ve afectado con frecuencia","label":"Me cuesta descansar y mi desempeño se ve afectado con frecuencia"}, + {"value":"Descanso muy poco, el agotamiento afecta mi desempeño","label":"Descanso muy poco, el agotamiento afecta mi desempeño"}]'::jsonb, + r_hide_ning_sn); + + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) + VALUES(gen_random_uuid(),sid,'7.2','single_choice', + 'En los últimos 3 meses, ¿con qué frecuencia sentiste que el cuidado afectó tu concentración o rendimiento?', + 72,false,false, + '[{"value":"Nunca o casi nunca","label":"Nunca o casi nunca"}, + {"value":"Algunas veces al mes","label":"Algunas veces al mes"}, + {"value":"Varias veces por semana","label":"Varias veces por semana"}, + {"value":"Casi todos los días","label":"Casi todos los días"}]'::jsonb, + r_hide_ning_sn); + + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) + VALUES(gen_random_uuid(),sid,'7.3','single_choice', + 'En el último año, ¿faltaste al trabajo por situaciones relacionadas al cuidado?', + 73,false,false, + '[{"value":"Nunca","label":"Nunca"}, + {"value":"Pocas veces (1–3 al año)","label":"Pocas veces (1–3 al año)"}, + {"value":"Varias veces (4–10 al año)","label":"Varias veces (4–10 al año)"}, + {"value":"Con frecuencia (más de 10 al año)","label":"Con frecuencia (más de 10 al año)"}]'::jsonb, + r_hide_ning_sn); + + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,hint,options,conditional_rules) + VALUES(gen_random_uuid(),sid,'7.4','multiple_choice', + '¿Qué aspectos de tu vida se ven más afectados por tu rol de cuidador/a?', + 74,false,false,'Podés marcar más de una opción', + '[{"value":"Tiempo libre y ocio","label":"Tiempo libre y ocio"}, + {"value":"Sueño y descanso","label":"Sueño y descanso"}, + {"value":"Vida social y amistades","label":"Vida social y amistades"}, + {"value":"Vida en pareja/familiar","label":"Vida en pareja/familiar"}, + {"value":"Salud física personal","label":"Salud física personal"}, + {"value":"Salud emocional/mental","label":"Salud emocional/mental"}, + {"value":"Desarrollo profesional","label":"Desarrollo profesional"}, + {"value":"Situación económica","label":"Situación económica"}]'::jsonb, + r_hide_ning_sn); + + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,hint,options,conditional_rules) + VALUES(gen_random_uuid(),sid,'7.5','multiple_choice', + 'Por tu rol de cuidado, ¿alguna vez tuviste que…?', + 75,false,false,'Podés marcar más de una opción', + '[{"value":"Reducir tu jornada o pasar a medio tiempo","label":"Reducir tu jornada o pasar a medio tiempo"}, + {"value":"Rechazar un ascenso o nueva responsabilidad","label":"Rechazar un ascenso o nueva responsabilidad"}, + {"value":"Declinar viajes, horas extra o capacitaciones","label":"Declinar viajes, horas extra o capacitaciones"}, + {"value":"Cambiar a un puesto menos exigente","label":"Cambiar a un puesto menos exigente"}, + {"value":"Faltar o llegar tarde de forma reiterada","label":"Faltar o llegar tarde de forma reiterada"}, + {"value":"Pensar seriamente en dejar el trabajo","label":"Pensar seriamente en dejar el trabajo"}, + {"value":"Dejar un trabajo anterior","label":"Dejar un trabajo anterior"}, + {"value":"Ninguna de las anteriores","label":"Ninguna de las anteriores"}]'::jsonb, + r_hide_ning_sn); + + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) + VALUES(gen_random_uuid(),sid,'7.6','single_choice', + 'Pensando en los próximos 12 meses, ¿qué tan probable es que dejes o reduzcas tu trabajo por razones de cuidado?', + 76,false,false, + '[{"value":"Nada probable","label":"Nada probable"}, + {"value":"Poco probable","label":"Poco probable"}, + {"value":"Algo probable","label":"Algo probable"}, + {"value":"Muy probable","label":"Muy probable"}]'::jsonb, + r_hide_ning_sn); + + -- ════════════════════════════════════════════════════════ + -- SECCIÓN 8 — Impacto económico + -- Ninguna: oculta toda la sección + -- soloNino: oculta 8.1–8.3, muestra 8.4 (franja salarial) + -- ════════════════════════════════════════════════════════ + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,hint,conditional_rules) + VALUES(gen_random_uuid(),sid,'S8','section','Impacto económico',80,false,false, + 'Queremos conocer el impacto económico del cuidado de las personas a tu cargo.',r_hide_ning); + + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) + VALUES(gen_random_uuid(),sid,'8.1','single_choice', + '¿Cuánto estimás que gastás por mes en el cuidado?', + 81,false,false, + '[{"value":"Menos de 1.000.000","label":"Menos de 1.000.000"}, + {"value":"1.000.000 – 3.000.000","label":"1.000.000 – 3.000.000"}, + {"value":"3.000.001 – 6.000.000","label":"3.000.001 – 6.000.000"}, + {"value":"6.000.001 – 9.000.000","label":"6.000.001 – 9.000.000"}, + {"value":"9.000.001 – 12.000.000","label":"9.000.001 – 12.000.000"}, + {"value":"12.000.001 – 15.000.000","label":"12.000.001 – 15.000.000"}, + {"value":"Más de 15.000.000","label":"Más de 15.000.000"}]'::jsonb, + r_hide_ning_sn); + + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,hint,options,conditional_rules) + VALUES(gen_random_uuid(),sid,'8.2','multiple_choice', + '¿En qué conceptos gastás principalmente el monto expresado?', + 82,false,false,'Podés marcar más de una opción', + '[{"value":"Cuidador/a particular","label":"Cuidador/a particular"}, + {"value":"Centro de día / institución","label":"Centro de día / institución"}, + {"value":"Traslados a centros especializados","label":"Traslados a centros especializados"}, + {"value":"Equipamiento médico / tecnología asistiva","label":"Equipamiento médico / tecnología asistiva"}, + {"value":"Servicios terapéuticos y/o rehabilitación","label":"Servicios terapéuticos y/o rehabilitación"}, + {"value":"Medicamentos","label":"Medicamentos"}, + {"value":"Insumos personales (sondas, pañales, otros)","label":"Insumos personales (sondas, pañales, otros)"}, + {"value":"Otros (especificar)","label":"Otros (especificar)"}]'::jsonb, + r_hide_ning_sn); + + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,hint,options,conditional_rules) + VALUES(gen_random_uuid(),sid,'8.3','multiple_choice', + '¿Cómo sostenés los gastos y responsabilidades del cuidado?', + 83,false,false,'Podés marcar más de una opción', + '[{"value":"Solo con mi empleo actual","label":"Solo con mi empleo actual"}, + {"value":"Ingresos extraordinarios en horarios no laborales","label":"Ingresos extraordinarios en horarios no laborales"}, + {"value":"Emprendimiento personal/familiar","label":"Emprendimiento personal/familiar"}, + {"value":"Me ayudan mis familiares","label":"Me ayudan mis familiares"}, + {"value":"Me ayudan organizaciones sociales (fundaciones)","label":"Me ayudan organizaciones sociales (fundaciones)"}, + {"value":"Me ayudan vecinos y amigos","label":"Me ayudan vecinos y amigos"}, + {"value":"Eventos de recaudación","label":"Eventos de recaudación"}, + {"value":"Subsidios estatales de la persona cuidada","label":"Subsidios estatales de la persona cuidada"}]'::jsonb, + r_hide_ning_sn); + + -- 8.4: franja salarial — CONFIDENCIAL (analyst-only, nunca en vistas de empresa) + -- visible en soloNino (oculta solo cuando Ninguna) + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) + VALUES(gen_random_uuid(),sid,'8.4','single_choice', + '¿En qué franja salarial mensual te ubicás con tu trabajo en esta empresa?', + 84,true,false, + '[{"value":"Hasta Gs 3.000.000","label":"Hasta Gs 3.000.000"}, + {"value":"3.000.001 – 5.000.000","label":"3.000.001 – 5.000.000"}, + {"value":"5.000.001 – 8.000.000","label":"5.000.001 – 8.000.000"}, + {"value":"8.000.001 – 12.000.000","label":"8.000.001 – 12.000.000"}, + {"value":"12.000.001 – 15.000.000","label":"12.000.001 – 15.000.000"}, + {"value":"15.000.001 – 18.000.000","label":"15.000.001 – 18.000.000"}, + {"value":"18.000.001 – 25.000.000","label":"18.000.001 – 25.000.000"}, + {"value":"25.000.001 – 50.000.000","label":"25.000.001 – 50.000.000"}, + {"value":"50.000.001 o más","label":"50.000.001 o más"}]'::jsonb, + r_hide_ning); + + -- ════════════════════════════════════════════════════════ + -- SECCIÓN 9 — Conciencia organizacional + -- Ninguna: oculta toda la sección + -- soloNino: muestra 9.1 y 9.4; oculta 9.2 y 9.3 + -- ════════════════════════════════════════════════════════ + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,hint,conditional_rules) + VALUES(gen_random_uuid(),sid,'S9','section','Conciencia organizacional',90,false,false, + 'Queremos conocer tu percepción sobre cuánta conciencia hay en la empresa respecto al ' + 'cuidado y la discapacidad.',r_hide_ning); + + -- 9.1: visible también en soloNino + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) + VALUES(gen_random_uuid(),sid,'9.1','single_choice', + '¿Sentís que tu empresa conoce o comprende la realidad del cuidado y la discapacidad de su gente?', + 91,false,false, + '[{"value":"Sí, me siento acompañado/a","label":"Sí, me siento acompañado/a"}, + {"value":"Parcialmente, hay cierta comprensión","label":"Parcialmente, hay cierta comprensión"}, + {"value":"No, es algo bastante invisible","label":"No, es algo bastante invisible"}, + {"value":"Nunca hemos tocado el tema","label":"Nunca hemos tocado el tema"}]'::jsonb, + r_hide_ning); + + -- 9.2: oculta cuando Ninguna O soloNino; max 3 selecciones + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,hint,options,conditional_rules,max_select) + VALUES(gen_random_uuid(),sid,'9.2','multiple_choice', + '¿Qué apoyos de la empresa te ayudarían más?', + 92,false,false,'Marcá hasta 3 opciones', + '[{"value":"Flexibilidad horaria o trabajo remoto","label":"Flexibilidad horaria o trabajo remoto"}, + {"value":"Apoyo económico o convenios/descuentos","label":"Apoyo económico o convenios/descuentos"}, + {"value":"Acceso a beneficios para terapias o salud","label":"Acceso a beneficios para terapias o salud"}, + {"value":"Contención/apoyo emocional o psicológico","label":"Contención/apoyo emocional o psicológico"}, + {"value":"Capacitación y autocuidado","label":"Capacitación y autocuidado"}, + {"value":"Redes de apoyo / grupos de pares","label":"Redes de apoyo / grupos de pares"}, + {"value":"Información sobre recursos y servicios","label":"Información sobre recursos y servicios"}]'::jsonb, + r_hide_ning_sn,3); + + -- 9.3: oculta cuando Ninguna O soloNino + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) + VALUES(gen_random_uuid(),sid,'9.3','single_choice', + '¿Estarías dispuesto/a a participar en un grupo de apoyo para cuidadores dentro de la empresa?', + 93,false,false, + '[{"value":"Sí, definitivamente","label":"Sí, definitivamente"}, + {"value":"Tal vez, si hay más personas en la misma situación","label":"Tal vez, si hay más personas en la misma situación"}, + {"value":"No por ahora","label":"No por ahora"}, + {"value":"Prefiero mantenerlo en privado","label":"Prefiero mantenerlo en privado"}]'::jsonb, + r_hide_ning_sn); + + -- 9.4: visible también en soloNino + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,options,conditional_rules) + VALUES(gen_random_uuid(),sid,'9.4','single_choice', + '¿Estarías dispuesto/a a ser voluntario/a en iniciativas y/o redes de apoyo?', + 94,false,false, + '[{"value":"Sí","label":"Sí"},{"value":"No","label":"No"}]'::jsonb, + r_hide_ning); + + -- ════════════════════════════════════════════════════════ + -- SECCIÓN 10 — Comentarios adicionales + -- Siempre visible (es el destino del salto "Ninguna") + -- ════════════════════════════════════════════════════════ + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,hint) + VALUES(gen_random_uuid(),sid,'S10','section','Comentarios adicionales',100,false,false, + 'Espacio para comentarios, sugerencias o tus datos (confidenciales) para seguir profundizando.'); + + -- 10.1: texto libre, opcional + INSERT INTO public.questions(id,survey_id,code,type,prompt,position,is_sensitive,required,hint) + VALUES(gen_random_uuid(),sid,'10.1','text_long', + '¿Te gustaría dejar un comentario o sugerencia especial? (opcional)', + 101,false,false,'Opcional.'); + + END LOOP; + +END $seed$;