308 lines
12 KiB
SQL
308 lines
12 KiB
SQL
-- ============================================================
|
|
-- Seed: Etapa 1 — Encuesta de Mapeo de Cuidadores
|
|
--
|
|
-- Carga:
|
|
-- 1. 1 organización de prueba
|
|
-- 2. 1 consent_version v1 (scopes: operativo + macro_n1)
|
|
-- 3. 1 encuesta "Mapeo de Cuidadores" (anónima, sensible, confidencial, Modo A)
|
|
-- 4. 9 preguntas con códigos del mockup:
|
|
-- B1 (yes_no), B2, B4, B5 — situación de cuidado (B5 is_sensitive=true)
|
|
-- C1 (yes_no) — impacto laboral
|
|
-- D1 (yes_no) — apoyo recibido
|
|
-- G4 (single_choice) — frecuencia de estrés [condicional a C1=yes]
|
|
-- H1 (multiple_choice, max_select=3) — apoyo preferido
|
|
-- H3 (text_long) — comentarios libres
|
|
-- 5. conditional_rules: B1 → show B2/B4/B5; C1 → show G4
|
|
--
|
|
-- UUIDs fijos para reproducibilidad y referencia desde tests.
|
|
-- Nota: el mockup original no estaba disponible; los textos de pregunta
|
|
-- son diseñados según el contexto "mapeo de cuidadores". Ver ETAPA_1_PROMPT.md.
|
|
-- ============================================================
|
|
|
|
-- UUIDs de referencia:
|
|
-- org: 10000000-0000-0000-0000-000000000001
|
|
-- consent_v1: 20000000-0000-0000-0000-000000000001
|
|
-- survey: 30000000-0000-0000-0000-000000000001
|
|
-- q_B1..q_H3: 4000...0001 al 4000...0009
|
|
|
|
-- ============================================================
|
|
-- 1. Organización de prueba
|
|
-- ============================================================
|
|
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;
|
|
|
|
-- ============================================================
|
|
-- 2. Versión de consentimiento v1
|
|
-- Scopes ofrecidos: operativo (dashboard empresa) + macro_n1 (estudio país anonimizado)
|
|
-- NO incluye macro_n3 (atribuible) — decisión de v1 (ADR-001)
|
|
-- ============================================================
|
|
INSERT INTO public.consent_versions (id, version, body, scopes)
|
|
VALUES (
|
|
'20000000-0000-0000-0000-000000000001',
|
|
'v1',
|
|
'Esta encuesta es completamente anónima: no registramos tu nombre, número de documento '
|
|
'ni ningún dato que permita identificarte personalmente. '
|
|
'Tus respuestas se usarán con dos propósitos: '
|
|
'(1) Ayudar a tu empresa a comprender la situación de cuidado de sus colaboradores y '
|
|
'diseñar apoyos más adecuados (uso operativo, solo agregados). '
|
|
'(2) Contribuir a un estudio de alcance nacional sobre la "economía del cuidado" en Paraguay, '
|
|
'utilizando únicamente datos anonimizados e irreversiblemente desvinculados de cualquier empresa '
|
|
'(Nivel 1 anonimizado). '
|
|
'Una vez enviada tu respuesta, al ser anónima, no es posible retirarla ni modificarla. '
|
|
'Podés elegir qué propósitos autorizás marcando las casillas a continuación.',
|
|
'["operativo", "macro_n1"]'::jsonb
|
|
)
|
|
ON CONFLICT (id) DO NOTHING;
|
|
|
|
-- ============================================================
|
|
-- 3. Encuesta: Mapeo de Cuidadores
|
|
-- Anónima + Sensible (contiene datos de salud/discapacidad) + Confidencial
|
|
-- Modo A: nosotros como responsables del tratamiento
|
|
-- k_threshold=5: ninguna celda expuesta con n<5
|
|
-- ============================================================
|
|
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 — Edición 2026',
|
|
'draft',
|
|
true, -- anónima (regla no negociable #2: respondent_id siempre NULL)
|
|
'sensible', -- contiene preguntas de salud/discapacidad (B5)
|
|
'confidencial', -- acceso restringido a la empresa y analistas internos
|
|
'A', -- Modo A: InQ es responsable del tratamiento (v1 solo Modo A)
|
|
'20000000-0000-0000-0000-000000000001',
|
|
5 -- umbral k-anonimato por defecto
|
|
)
|
|
ON CONFLICT (id) DO NOTHING;
|
|
|
|
-- ============================================================
|
|
-- 4. Preguntas de la encuesta
|
|
-- Orden: position define el flujo de presentación
|
|
-- conditional_rules en el formato: [{ if_question, op, value, action, target }]
|
|
-- if_question = code de la pregunta trigger
|
|
-- target = code de la pregunta afectada
|
|
-- ============================================================
|
|
|
|
-- B1: Pregunta disparadora — ¿Tenés persona a cargo?
|
|
-- Si es "yes" → se despliegan B2, B4, B5
|
|
INSERT INTO public.questions (
|
|
id, survey_id, code, type, prompt, position,
|
|
is_sensitive, required, conditional_rules
|
|
)
|
|
VALUES (
|
|
'40000000-0000-0000-0000-000000000001',
|
|
'30000000-0000-0000-0000-000000000001',
|
|
'B1',
|
|
'yes_no',
|
|
'¿Tenés a cargo a una o más personas con discapacidad permanente o adultos mayores '
|
|
'(60 años o más) que requieran cuidados especiales de forma regular?',
|
|
1,
|
|
false,
|
|
true,
|
|
'[
|
|
{"if_question": "B1", "op": "eq", "value": "yes", "action": "show", "target": "B2"},
|
|
{"if_question": "B1", "op": "eq", "value": "yes", "action": "show", "target": "B4"},
|
|
{"if_question": "B1", "op": "eq", "value": "yes", "action": "show", "target": "B5"}
|
|
]'::jsonb
|
|
)
|
|
ON CONFLICT (id) DO NOTHING;
|
|
|
|
-- B2: ¿Cuántas personas a cargo? (condicional a B1=yes)
|
|
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',
|
|
'B2',
|
|
'single_choice',
|
|
'¿Cuántas personas a tu cargo requieren cuidado especial?',
|
|
2,
|
|
false,
|
|
false,
|
|
'[
|
|
{"value": "1", "label": "1 persona"},
|
|
{"value": "2", "label": "2 personas"},
|
|
{"value": "3+", "label": "3 o más personas"}
|
|
]'::jsonb
|
|
)
|
|
ON CONFLICT (id) DO NOTHING;
|
|
|
|
-- B4: Relación con la persona a cargo (condicional a B1=yes)
|
|
INSERT INTO public.questions (
|
|
id, survey_id, code, type, prompt, position,
|
|
is_sensitive, required, options
|
|
)
|
|
VALUES (
|
|
'40000000-0000-0000-0000-000000000003',
|
|
'30000000-0000-0000-0000-000000000001',
|
|
'B4',
|
|
'single_choice',
|
|
'¿Cuál es tu relación con la principal persona que cuidás?',
|
|
3,
|
|
false,
|
|
false,
|
|
'[
|
|
{"value": "hijo_a", "label": "Hijo/a"},
|
|
{"value": "padre_madre", "label": "Padre, madre o suegro/a"},
|
|
{"value": "conyuge", "label": "Cónyuge o pareja"},
|
|
{"value": "hermano_a", "label": "Hermano/a"},
|
|
{"value": "otro_familiar", "label": "Otro familiar"},
|
|
{"value": "otra", "label": "Otra relación"}
|
|
]'::jsonb
|
|
)
|
|
ON CONFLICT (id) DO NOTHING;
|
|
|
|
-- B5: Tipo de discapacidad/condición (condicional a B1=yes)
|
|
-- is_sensitive=true: contiene datos de salud (categoría especial Ley 7593/2025)
|
|
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',
|
|
'B5',
|
|
'multiple_choice',
|
|
'¿Qué tipo de discapacidad o condición tiene la persona que cuidás? '
|
|
'(Podés marcar más de una opción)',
|
|
4,
|
|
true, -- SENSIBLE: dato de salud/discapacidad (Ley 7593, categoría especial)
|
|
false,
|
|
'[
|
|
{"value": "fisica", "label": "Física o motriz"},
|
|
{"value": "visual", "label": "Visual"},
|
|
{"value": "auditiva", "label": "Auditiva"},
|
|
{"value": "mental", "label": "Mental o psicosocial"},
|
|
{"value": "intelectual", "label": "Intelectual o cognitiva"},
|
|
{"value": "am_sin_cert", "label": "Adulto mayor sin discapacidad certificada"},
|
|
{"value": "otra", "label": "Otra condición"}
|
|
]'::jsonb
|
|
)
|
|
ON CONFLICT (id) DO NOTHING;
|
|
|
|
-- C1: Impacto laboral
|
|
-- Si es "yes" → se despliega G4
|
|
INSERT INTO public.questions (
|
|
id, survey_id, code, type, prompt, position,
|
|
is_sensitive, required, conditional_rules
|
|
)
|
|
VALUES (
|
|
'40000000-0000-0000-0000-000000000005',
|
|
'30000000-0000-0000-0000-000000000001',
|
|
'C1',
|
|
'yes_no',
|
|
'¿Sentís que tu rol de cuidador/a afecta tu asistencia, puntualidad o rendimiento '
|
|
'en el trabajo?',
|
|
5,
|
|
false,
|
|
true,
|
|
'[
|
|
{"if_question": "C1", "op": "eq", "value": "yes", "action": "show", "target": "G4"}
|
|
]'::jsonb
|
|
)
|
|
ON CONFLICT (id) DO NOTHING;
|
|
|
|
-- D1: Apoyo recibido de la empresa
|
|
-- Declarada como trigger de sub-preguntas; sub-preguntas se agregan en iteración posterior
|
|
INSERT INTO public.questions (
|
|
id, survey_id, code, type, prompt, position,
|
|
is_sensitive, required, conditional_rules
|
|
)
|
|
VALUES (
|
|
'40000000-0000-0000-0000-000000000006',
|
|
'30000000-0000-0000-0000-000000000001',
|
|
'D1',
|
|
'yes_no',
|
|
'¿Tu empresa te ofrece actualmente algún apoyo o beneficio pensado para personas que '
|
|
'cuidan a familiares con discapacidad o adultos mayores?',
|
|
6,
|
|
false,
|
|
true,
|
|
'[]'::jsonb -- sub-preguntas a agregar en iteración posterior (mockup pendiente)
|
|
)
|
|
ON CONFLICT (id) DO NOTHING;
|
|
|
|
-- G4: Frecuencia de estrés (condicional a C1=yes)
|
|
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',
|
|
'G4',
|
|
'single_choice',
|
|
'¿Con qué frecuencia la situación de cuidado te genera preocupación o estrés '
|
|
'durante tu jornada laboral?',
|
|
7,
|
|
false,
|
|
false,
|
|
'[
|
|
{"value": "nunca", "label": "Nunca"},
|
|
{"value": "raramente", "label": "Raramente (1-2 veces por mes)"},
|
|
{"value": "a_veces", "label": "A veces (1-2 veces por semana)"},
|
|
{"value": "frecuentemente","label": "Frecuentemente (casi todos los días)"},
|
|
{"value": "siempre", "label": "Siempre (todos los días)"}
|
|
]'::jsonb
|
|
)
|
|
ON CONFLICT (id) DO NOTHING;
|
|
|
|
-- H1: Apoyo preferido (max_select=3)
|
|
INSERT INTO public.questions (
|
|
id, survey_id, code, type, prompt, position,
|
|
is_sensitive, required, max_select, options
|
|
)
|
|
VALUES (
|
|
'40000000-0000-0000-0000-000000000008',
|
|
'30000000-0000-0000-0000-000000000001',
|
|
'H1',
|
|
'multiple_choice',
|
|
'¿Qué tipos de apoyo de parte de la empresa valorarías más? '
|
|
'Elegí hasta 3 opciones.',
|
|
8,
|
|
false,
|
|
false,
|
|
3, -- max_select=3 (mockup H1)
|
|
'[
|
|
{"value": "horario_flex", "label": "Horarios flexibles o trabajo híbrido"},
|
|
{"value": "teletrabajo", "label": "Teletrabajo permanente"},
|
|
{"value": "licencias", "label": "Licencias especiales para situaciones de cuidado"},
|
|
{"value": "apoyo_eco", "label": "Apoyo económico o subsidio"},
|
|
{"value": "orientacion", "label": "Orientación o asesoramiento profesional"},
|
|
{"value": "grupos_apoyo", "label": "Grupos de apoyo entre pares"},
|
|
{"value": "recursos_ext", "label": "Conexión con servicios o recursos externos"},
|
|
{"value": "otro", "label": "Otro (especificar en comentarios)"}
|
|
]'::jsonb
|
|
)
|
|
ON CONFLICT (id) DO NOTHING;
|
|
|
|
-- H3: Texto libre — NO expuesto en el store analítico crudo (regla #4 CLAUDE.md)
|
|
INSERT INTO public.questions (
|
|
id, survey_id, code, type, prompt, position,
|
|
is_sensitive, required
|
|
)
|
|
VALUES (
|
|
'40000000-0000-0000-0000-000000000009',
|
|
'30000000-0000-0000-0000-000000000001',
|
|
'H3',
|
|
'text_long',
|
|
'Si querés compartir algo más sobre tu situación o tenés sugerencias para la empresa, '
|
|
'podés hacerlo acá. (Opcional — tu respuesta es anónima)',
|
|
9,
|
|
false,
|
|
false
|
|
)
|
|
ON CONFLICT (id) DO NOTHING;
|