Spaces:
Sleeping
Sleeping
import gradio as gr | |
with gr.Blocks (css=".contain.svelte-1iguv9h.svelte-1iguv9h.svelte-1iguv9h {width:85%} .svelte-zyic3i {width: 100%; margin: auto} .wrap.svelte-1ovntsr {width: 40%; margin: auto} img.svelte-zyic3i {width:40%} .wrap.svelte-3cbf20 {width:40%; margin:auto} .controls.svelte-3cbf20 {width:40%} textarea.svelte-2xzfnp {width:30%; border-color: #00A0F3} select.svelte-1bhvxvb {width: 30%; border-color: #00A0F3} .contain.svelte-1iguv9h.svelte-1iguv9h.svelte-1iguv9h {margin-top:10px; border-radius:15px} .gradio-container-3-18-0 img {margin: auto}") as demo: | |
def map_test_2_gad7(label_text): | |
if label_text == 'Todo el tiempo': | |
gad_point = 3 | |
elif label_text == 'Más de la mitad del tiempo': | |
gad_point = 2 | |
elif label_text == 'Algunos días': | |
gad_point = 1 | |
else: | |
gad_point = 0 | |
return gad_point | |
def map_list_2_gad7(elem_list): | |
if elem_list == True: | |
gad_point = 1 | |
else: | |
gad_point = 0 | |
return gad_point | |
def get_gad7_result(drop1, drop2, drop3, drop4, drop5, drop6, drop7): | |
gad_array = (drop1, drop2, drop3, drop4, drop5, drop6, drop7) | |
gad_number_list = list(map(map_test_2_gad7, gad_array)) | |
gad7_result = sum(gad_number_list) | |
return str(gad7_result) | |
def get_check_result(checkbox_list): | |
gad_check_list = list(map(map_list_2_gad7, checkbox_list)) | |
result_gad = sum(gad_check_list) | |
return str(result_gad) | |
def get_result_explanation(final_result): | |
if final_result < 5: | |
specialist_text = "Esto quiere decir que se detecta un grado de ansiedad mínimo. De todos modos, todos en algún momento pasamos por situaciones difíciles que nos generan ansiedad. Pedí ayuda a tus seres queridos o consultá con un profesional si se repite en el tiempo." | |
elif final_result < 10: | |
specialist_text = "Esto quiere decir que se detecta un grado de ansiedad leve. Todos sentimos ansiedad en algún momento por las situaciones que afrontamos. Si este comportamiento se repite en el tiempo y dificulta tu día a día, consultanos por un profesional." | |
elif final_result < 15: | |
specialist_text = "Esto quiere decir que se detecta un grado de ansiedad moderado. Hay formas de disminuir la ansiedad como meditación, respiraciones, ejercicio, hacer algo que te guste. Si ves que no resultan, podes contactarte con un especialista." | |
elif final_result < 22: | |
"Esto quiere decir que se detecta un grado de ansiedad moderadamente grave. Hay formas de disminuir la ansiedad como meditación, respiraciones, ejercicio, hacer algo que te guste. Si ves que no resultan, podes contactarte con un psicólogo o psiquiatra. La ansiedad puede tratarse con éxito." | |
else: | |
specialist_text = "Esto quiere decir que se detecta un grado de ansiedad grave. La ansiedad puede tratarse con éxito. ¿Sabías que Üma tenemos psicólogos y psiquiatras que podrían ayudarte? ¡Contactalos y hacé la prueba!" | |
return specialist_text | |
def get_user_data(name, email, edad, gender, drop1, drop2, drop3, drop4, drop5, drop6, drop7, input1, checkbox1, checkbox2, checkbox3, checkbox4,checkbox5, checkbox6, checkbox7, checkbox8, checkbox9, checkbox10): | |
gad7_result = get_gad7_result(drop1, drop2, drop3, drop4, drop5, drop6, drop7) | |
checkbox_list = (checkbox1, checkbox2, checkbox3, checkbox4,checkbox5, checkbox6, checkbox7, checkbox8, checkbox9, checkbox10) | |
check_gad_result = get_check_result(checkbox_list) | |
final_result = int(gad7_result) + int(check_gad_result) | |
specialist_text = get_result_explanation(final_result) | |
return "Hola, "+name+". El puntaje final del test es "+str(final_result)+'. ' +specialist_text | |
options=['Nunca', 'Algunos días','Más de la mitad del tiempo', 'Todo el tiempo'] | |
gender_opt=['Masculino','Femenino','No binario', 'Prefiero no especificar'] | |
with gr.Row(): | |
gr.Markdown("") | |
with gr.Row(): | |
gr.Markdown("### Test de ansiedad") | |
with gr.Accordion("Datos personales (clickee aquí para más información)", open=False): | |
gr.Markdown("Estos datos se utilizarán para un análisis de la situación general de nuestros pacientes de forma anónima. Estamos buscando proveer la mejor solución para nuestros usuarios.") | |
with gr.Column(): | |
name = gr.Textbox(label='Nombre:') | |
email = gr.Textbox(label='Email') | |
edad = gr.Textbox(label='Edad:') | |
gender = gr.Dropdown(gender_opt, label='Género:') | |
with gr.Row(): | |
gr.Markdown("Las siguentes preguntas buscan darnos información sobre su situación. Dentro de las últimas dos semanas, ¿qué tan seguido se vió afectado por las siguientes situaciones?") | |
with gr.Column(): | |
drop1 = gr.Dropdown(options, label='Sentirte nervioso/a, ansioso/a o tenso/a.') | |
drop2 = gr.Dropdown(options, label='No poder parar o controlar la preocupación.') | |
drop3 = gr.Dropdown(options, label='Preocuparse demasiado acerca de muchas cosas diferentes.') | |
drop4 = gr.Dropdown(options, label='Problemas para relajarse.') | |
drop5 = gr.Dropdown(options, label='Estar tan inquieto/a que es difícil quedarse en una sola posición.') | |
drop6 = gr.Dropdown(options, label='Volverse fácilmente molesto/a o irritable.') | |
drop7 = gr.Dropdown(options, label='Sentir miedo como si algo terrible pudiera suceder, de perder el control o de sentirse que no es real.') | |
with gr.Column(): | |
gr.Markdown("¿Cuáles de los siguientes síntomas has sentido en las últimas dos semanas más de una vez?") | |
checkbox1 = gr.Checkbox(value=False,label="Palpitaciones frecuentes (ritmo del corazón acelerado).") | |
checkbox2 = gr.Checkbox(value=False,label="Temblores, en manos o cuerpo.") | |
checkbox3 = gr.Checkbox(value=False,label="Dolor o molestia en el pecho.") | |
checkbox4 = gr.Checkbox(value=False,label="Respiración agitada o sensación de ahogo.") | |
checkbox5 = gr.Checkbox(value=False,label="Sudoración.") | |
checkbox6 = gr.Checkbox(value=False,label="Nauseas o dolor de panza.") | |
checkbox7 = gr.Checkbox(value=False,label="Mareos, pérdida de conocimiento/desmayos o sensación de debilidad en el cuerpo.") | |
checkbox8 = gr.Checkbox(value=False,label="Entumecimiento o sensación de hormigueo.") | |
checkbox9 = gr.Checkbox(value=False,label="Escalofríos o sofocos.") | |
checkbox10 = gr.Checkbox(value=False,label="Evitar situaciones debido a la ansiedad.") | |
with gr.Column(): | |
gr.Markdown("Respecto a soluciones basadas en tecnología:") | |
checkbox1 = gr.Checkbox(value=False,label="Me gustaría tener un chatbot informativo para poder aprender sobre depresión y otras cuestiones de salud mental.") | |
checkbox2 = gr.Checkbox(value=False,label="Me gustaría tener un chatbot para recibir sugerencias de cómo sentirme mejor.") | |
checkbox3 = gr.Checkbox(value=False,label="Me gustaría tener un chat con un especialista para preguntarle cuestiones respecto a mi salud.") | |
checkbox4 = gr.Checkbox(value=False,label="Estaría dispuesto/a a pagar por alguna de estas soluciones desarrolladas.") | |
with gr.Column(): | |
gr.Markdown('Por ultimo, te pedimos que colabores grabando un video de 30 segundos contándonos cómo te sentís ultimamente o sobre cualquier tema que prefieras hablar.\n\n-Buscá un fondo claro\n\n-Buscá un lugar bien iluminado\n\n-Sin anteojos ni cabello en la cara\n\n-Ubicá el celular a la altura de tu cara\n\nEstos datos se utilizarán para un análisis de la situación general de nuestros pacientes de forma anónima.') | |
video = gr.components.Video(shape=(640, 480),source="webcam",mirror_webcam=False, include_audio=True) | |
with gr.Row(): | |
btn = gr.Button("Terminar encuesta.") | |
with gr.Row(): | |
gr.Markdown('Muchas gracias por completar la encuesta. Muy pronto le haremos saber sobre nuestras nuevas soluciones') | |
with gr.Row(): | |
out = gr.Markdown() | |
with gr.Row(): | |
specialist_text = gr.Markdown() | |
btn.click(get_user_data, inputs=[name, email, edad, gender, drop1, drop2, drop3, drop4, drop5, drop6, drop7, checkbox1, checkbox2, checkbox3, checkbox4,checkbox5, checkbox6, checkbox7, checkbox8, checkbox9, checkbox10], outputs=[out]) | |
demo.launch() |