Test y Ficha de identificacion completado
parent
963dcc2103
commit
d4e9431d38
Binary file not shown.
@ -0,0 +1,90 @@
|
||||
//
|
||||
// FichaManager.swift
|
||||
// RK-Journals
|
||||
//
|
||||
// Created by Juan David López Regalado on 20/11/24.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import ResearchKit
|
||||
|
||||
class FichaManager {
|
||||
static let shared = FichaManager()
|
||||
|
||||
func createFichaTask() -> ORKTask {
|
||||
|
||||
let bienvenida = ORKInstructionStep(identifier: "bienvenida")
|
||||
bienvenida.title = "Ficha Identificación"
|
||||
bienvenida.iconImage = UIImage(systemName: "person.text.rectangle")
|
||||
bienvenida.detailText = "Por favor, llena la siguiente ficha de identificación con tus datos"
|
||||
|
||||
// Nombre
|
||||
let textQuestionStepTitle = "Nombre"
|
||||
let textAnswerFormat = ORKTextAnswerFormat(maximumLength: 30)
|
||||
textAnswerFormat.multipleLines = false
|
||||
let textQuestionStep = ORKQuestionStep(identifier: "Nombre", title: textQuestionStepTitle, question: "¿Cuál es tu nombre?", answer: textAnswerFormat)
|
||||
textQuestionStep.isOptional = false
|
||||
|
||||
// Sexo
|
||||
let multiGenderChoice = "Sexo"
|
||||
let gendChoices = [
|
||||
ORKTextChoice(text: "Hombre", value: "hombre" as NSString),
|
||||
ORKTextChoice(text: "Mujer", value: "mujer" as NSString),
|
||||
ORKTextChoice(text: "Prefiero no decirlo", value: "Inf" as NSString)]
|
||||
|
||||
let genderChoiceFormat = ORKTextChoiceAnswerFormat(style: .singleChoice, textChoices: gendChoices)
|
||||
let multiGenderQuestionStep = ORKQuestionStep(identifier: "Sexo", title: multiGenderChoice,question: "¿Cuál es tu sexo?", answer: genderChoiceFormat)
|
||||
multiGenderQuestionStep.isOptional = false
|
||||
|
||||
// Edad
|
||||
var ageChoices: [ORKTextChoice] = []
|
||||
for age in 16...50 {
|
||||
let ageChoice = ORKTextChoice(text: "\(age) años", value: "\(age)" as NSString)
|
||||
ageChoices.append(ageChoice)
|
||||
}
|
||||
|
||||
let ageQuestionStep = ORKQuestionStep(
|
||||
identifier: "ageQuestionStep",
|
||||
title: "Pregunta sobre Edad",
|
||||
question: "¿Qué edad tienes?",
|
||||
answer: ORKValuePickerAnswerFormat(textChoices: ageChoices)
|
||||
)
|
||||
ageQuestionStep.isOptional = false // Hacemos que esta pregunta sea obligatoria
|
||||
|
||||
// Peso
|
||||
let pesoQuestionStep = ORKQuestionStep(identifier: "peso", title: "Peso", question: "¿Cuál es tu peso en kilogramos?", answer: ORKNumericAnswerFormat(style: .integer, unit: "kg"))
|
||||
pesoQuestionStep.isOptional = false
|
||||
|
||||
// Altura
|
||||
let alturaQuestionStep = ORKQuestionStep(identifier: "altura", title: "Altura", question: "¿Cuál es tu altura en metros?", answer: ORKNumericAnswerFormat(style: .decimal, unit: "m"))
|
||||
alturaQuestionStep.isOptional = false
|
||||
|
||||
|
||||
// Sintomas
|
||||
let symptomsChoices = [
|
||||
ORKTextChoice(text: "Dolor de cabeza", value: "dolor_de_cabeza" as NSString),
|
||||
ORKTextChoice(text: "Fiebre", value: "fiebre" as NSString),
|
||||
ORKTextChoice(text: "Tos", value: "tos" as NSString),
|
||||
ORKTextChoice(text: "Dificultad para respirar", value: "dificultad_respirar" as NSString),
|
||||
ORKTextChoice(text: "Dolor en el pecho", value: "dolor_pecho" as NSString),
|
||||
ORKTextChoice(text: "Fatiga", value: "fatiga" as NSString),
|
||||
ORKTextChoice(text: "Náuseas", value: "nauseas" as NSString),
|
||||
ORKTextChoice(text: "Otros", value: "otros" as NSString)
|
||||
]
|
||||
|
||||
// Crear la pregunta de síntomas
|
||||
let symptomsStep = ORKQuestionStep(
|
||||
identifier: "sintomas",
|
||||
title: "¿Qué síntomas estás presentando?",
|
||||
answer: ORKAnswerFormat.choiceAnswerFormat(with: .multipleChoice, textChoices: symptomsChoices)
|
||||
)
|
||||
symptomsStep.isOptional = false
|
||||
|
||||
let termino = ORKInstructionStep(identifier: "termino")
|
||||
termino.title = "Gracias"
|
||||
termino.iconImage = UIImage(systemName: "checkmark.circle.fill")
|
||||
termino.detailText = "Gracias por llenar la ficha de identificación"
|
||||
|
||||
return ORKOrderedTask(identifier: "FichaIdentificacion", steps: [bienvenida, textQuestionStep, multiGenderQuestionStep, ageQuestionStep, pesoQuestionStep, alturaQuestionStep, symptomsStep, termino])
|
||||
}
|
||||
}
|
@ -0,0 +1,129 @@
|
||||
import Foundation
|
||||
import ResearchKit
|
||||
|
||||
class TestManager {
|
||||
static let shared = TestManager()
|
||||
|
||||
func createTestTask() -> ORKTask {
|
||||
|
||||
// Paso 1: Bienvenida
|
||||
let bienvenidaStep = ORKInstructionStep(identifier: "bienvenida")
|
||||
bienvenidaStep.title = "Evaluación de Ansiedad y Estado de Ánimo"
|
||||
bienvenidaStep.text = "Este test nos ayudará a evaluar cómo te sientes actualmente. Responde con sinceridad."
|
||||
|
||||
// Paso 2: Nivel de ansiedad (escala del 1 al 10)
|
||||
let ansiedadPregunta = ORKQuestionStep(
|
||||
identifier: "nivelAnsiedad",
|
||||
title: "¿Qué tan ansioso/a te sientes en una escala del 1 al 10?",
|
||||
answer: ORKScaleAnswerFormat(
|
||||
maximumValue: 10,
|
||||
minimumValue: 1,
|
||||
defaultValue: 5,
|
||||
step: 1
|
||||
)
|
||||
)
|
||||
ansiedadPregunta.isOptional = false
|
||||
|
||||
// Paso 3: Estado de ánimo general (rueda de opciones)
|
||||
let estadoAnimoChoices = [
|
||||
ORKTextChoice(text: "Muy feliz", value: "muy_feliz" as NSString),
|
||||
ORKTextChoice(text: "Feliz", value: "feliz" as NSString),
|
||||
ORKTextChoice(text: "Neutral", value: "neutral" as NSString),
|
||||
ORKTextChoice(text: "Triste", value: "triste" as NSString),
|
||||
ORKTextChoice(text: "Muy triste", value: "muy_triste" as NSString)
|
||||
]
|
||||
let estadoAnimoPregunta = ORKQuestionStep(
|
||||
identifier: "estadoAnimo",
|
||||
title: "¿Cómo describirías tu estado de ánimo actual?",
|
||||
answer: ORKValuePickerAnswerFormat(textChoices: estadoAnimoChoices)
|
||||
)
|
||||
estadoAnimoPregunta.isOptional = false
|
||||
|
||||
|
||||
// Paso 4: Frecuencia de síntomas (escala Likert)
|
||||
let frecuenciaSintomasPregunta = ORKQuestionStep(
|
||||
identifier: "frecuenciaSintomas",
|
||||
title: "En la última semana, ¿con qué frecuencia has experimentado estos síntomas?",
|
||||
answer: ORKAnswerFormat.textScale(
|
||||
with: [
|
||||
ORKTextChoice(text: "Nunca", value: "nunca" as NSString),
|
||||
ORKTextChoice(text: "Rara vez", value: "rara_vez" as NSString),
|
||||
ORKTextChoice(text: "A veces", value: "a_veces" as NSString),
|
||||
ORKTextChoice(text: "Frecuentemente", value: "frecuentemente" as NSString),
|
||||
ORKTextChoice(text: "Todo el tiempo", value: "todo_el_tiempo" as NSString)
|
||||
],
|
||||
defaultIndex: 2, // Neutral ("A veces")
|
||||
vertical: true
|
||||
)
|
||||
)
|
||||
frecuenciaSintomasPregunta.isOptional = false
|
||||
|
||||
// Paso 5: Situaciones específicas (múltiples opciones)
|
||||
let situacionesChoices = [
|
||||
ORKTextChoice(text: "Dificultad para concentrarte", value: "concentracion" as NSString),
|
||||
ORKTextChoice(text: "Pérdida de interés en actividades", value: "interes" as NSString),
|
||||
ORKTextChoice(text: "Sensación de nerviosismo", value: "nerviosismo" as NSString),
|
||||
ORKTextChoice(text: "Problemas para dormir", value: "sueño" as NSString),
|
||||
ORKTextChoice(text: "Cambios en el apetito", value: "apetito" as NSString),
|
||||
ORKTextChoice(text: "Ninguno de los anteriores", value: "ninguno" as NSString)
|
||||
]
|
||||
let situacionesPregunta = ORKQuestionStep(
|
||||
identifier: "situaciones",
|
||||
title: "¿Cuáles de las siguientes situaciones has experimentado recientemente?",
|
||||
answer: ORKAnswerFormat.choiceAnswerFormat(with: .multipleChoice, textChoices: situacionesChoices)
|
||||
)
|
||||
|
||||
situacionesPregunta.isOptional = false
|
||||
|
||||
// Paso 6: Tiempo al aire libre (respuesta numérica)
|
||||
let tiempoAireLibrePregunta = ORKQuestionStep(
|
||||
identifier: "tiempoAireLibre",
|
||||
title: "¿Cuántas horas pasas al aire libre por día?",
|
||||
answer: ORKNumericAnswerFormat(style: .integer, unit: "horas")
|
||||
)
|
||||
tiempoAireLibrePregunta.isOptional = false
|
||||
|
||||
|
||||
// Paso 7: Ejercicio (texto corto)
|
||||
let ejercicioPregunta = ORKQuestionStep(
|
||||
identifier: "ejercicio",
|
||||
title: "¿Qué tipo de ejercicio realizas regularmente?",
|
||||
answer: ORKTextAnswerFormat(maximumLength: 100)
|
||||
)
|
||||
ejercicioPregunta.isOptional = false
|
||||
|
||||
// Paso 8: Comentarios adicionales (texto largo)
|
||||
let comentariosPregunta = ORKQuestionStep(
|
||||
identifier: "comentarios",
|
||||
title: "¿Hay algo más que quieras compartir sobre cómo te sientes?",
|
||||
answer: {
|
||||
let formatoTexto = ORKTextAnswerFormat(maximumLength: 500)
|
||||
formatoTexto.multipleLines = true // Permite que el cuadro sea más grande
|
||||
return formatoTexto
|
||||
}()
|
||||
)
|
||||
|
||||
comentariosPregunta.isOptional = false
|
||||
|
||||
// Paso final: Agradecimiento
|
||||
let finStep = ORKInstructionStep(identifier: "fin")
|
||||
finStep.title = "¡Gracias por completar el test!"
|
||||
finStep.text = "Tus respuestas serán analizadas para ofrecerte mejores recomendaciones."
|
||||
|
||||
// Crear el test con todos los pasos
|
||||
return ORKOrderedTask(
|
||||
identifier: "AnxietyMoodTest",
|
||||
steps: [
|
||||
bienvenidaStep,
|
||||
ansiedadPregunta,
|
||||
estadoAnimoPregunta,
|
||||
frecuenciaSintomasPregunta,
|
||||
situacionesPregunta,
|
||||
tiempoAireLibrePregunta,
|
||||
ejercicioPregunta,
|
||||
comentariosPregunta,
|
||||
finStep
|
||||
]
|
||||
)
|
||||
}
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 289 KiB |
Binary file not shown.
After Width: | Height: | Size: 234 KiB |
Binary file not shown.
After Width: | Height: | Size: 757 KiB |
Binary file not shown.
After Width: | Height: | Size: 317 KiB |
Loading…
Reference in New Issue