C2MV commited on
Commit
3e028aa
·
verified ·
1 Parent(s): 31efb8e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +127 -102
app.py CHANGED
@@ -257,117 +257,142 @@ def update_image(image_url):
257
  else:
258
  return None
259
 
260
- # Función para procesar la entrada del chatbot
261
- def process_input(message, history):
262
- # Implementa tu lógica de procesamiento aquí
263
- response = f"Procesando: {message}"
264
- history.append((message, response))
265
- return history, history, None
266
-
267
- # Función para enviar una pregunta preestablecida
268
- def send_preset_question(question, history):
269
- return process_input(question, history)
270
-
271
- # Lista ampliada de categorías y preguntas
272
- categories = [
273
- ("Diagnósticos", [
274
- "¿Cuál es el diagnóstico más común registrado en el dataset?",
275
- "¿Cuáles son los diagnósticos más frecuentes que requieren hospitalización prolongada?",
276
- "¿Qué tan frecuentes son los diagnósticos relacionados con nacimientos prematuros?",
277
- "¿Cuál es la incidencia de diagnósticos graves como el 'Síndrome de Dificultad Respiratoria' (P220)?",
278
- "¿Cuáles son los códigos CIE-10 relacionados con infecciones neonatales?",
279
- "¿Qué diagnósticos están clasificados bajo el código P00-P96 en neonatos?",
280
- "¿Cuáles son los diagnósticos menos comunes en el dataset?",
281
- "¿Cómo se distribuyen los diagnósticos entre pacientes masculinos y femeninos?",
282
- "¿Existen diferencias significativas en los diagnósticos entre diferentes departamentos?"
283
- ]),
284
- ("Medicamentos", [
285
- "¿Qué medicamentos son más usados en neonatos?",
286
- "¿Cuál es el medicamento más usado para infecciones neonatales?",
287
- "¿Qué tipo de forma farmacéutica es la más utilizada en neonatos?",
288
- "¿Cuáles son los medicamentos más costosos administrados a recién nacidos?",
289
- "¿Qué proporción de medicamentos administrados son antibióticos?",
290
- "¿Qué porcentaje del total de medicamentos administrados corresponde a la Tetraciclina Clorhidrato?",
291
- "¿Qué medicamentos se utilizan con mayor frecuencia en los departamentos con menos recursos?",
292
- "¿Cuáles son los medicamentos menos comunes administrados en el dataset?",
293
- "¿Qué relación existe entre el tipo de medicamento y el diagnóstico principal?"
294
- ]),
295
- ("Estadísticas y Frecuencia", [
296
- "¿Qué porcentaje del total de registros corresponde al diagnóstico 'Nacido Vivo Único' (Z370)?",
297
- "¿Cuál es la distribución por edad gestacional de los neonatos en el dataset?",
298
- "¿Cuál es la tasa de readmisión hospitalaria en neonatos?",
299
- "¿Cómo varía la mortalidad neonatal entre diferentes departamentos?",
300
- "¿Hay patrones estacionales en la administración de medicamentos?",
301
- "¿Cuál es la duración promedio de la hospitalización para los recién nacidos?",
302
- "¿Qué proporción de recién nacidos es hospitalizada por más de 7 días?",
303
- "¿Cómo varía la duración de la hospitalización entre los diferentes departamentos?",
304
- "¿Qué diagnósticos están asociados con hospitalizaciones de corta duración?"
305
- ]),
306
- ("Impacto y Calidad de Datos", [
307
- "¿Cómo impacta el uso de antibióticos en la recuperación neonatal?",
308
- "¿Qué mejoras se pueden implementar en la atención neonatal?",
309
- "¿Cuál es la efectividad de las medidas preventivas en la reducción de infecciones neonatales?",
310
- "¿Cuáles son las limitaciones de los datos sobre salud neonatal?",
311
- "¿Qué tan completos y precisos son los registros de diagnóstico?",
312
- "¿Cómo se manejaron los valores faltantes en la variable de peso (PESO)?",
313
- "¿Qué método se utilizó para imputar valores faltantes en la variable de días de hospitalización?",
314
- "¿Cómo se gestionaron los outliers en la variable de peso por género?",
315
- "¿Qué recomendaciones se hicieron para mejorar la calidad de los datos en futuros estudios?"
316
- ]),
317
- ("Análisis Geográfico", [
318
- "¿Cuál es el departamento con el mayor número de registros de administración de medicamentos?",
319
- "¿Qué departamentos tienen los menores registros de administración de medicamentos?",
320
- "¿Cuál es la diferencia en la administración de medicamentos entre Lima y La Libertad?",
321
- "¿Cómo se distribuyen los registros de administración de medicamentos en áreas urbanas versus rurales?",
322
- "¿Qué departamento muestra la mayor variedad de medicamentos administrados?",
323
- "¿Existen diferencias en el costo de los medicamentos entre diferentes provincias dentro de un mismo departamento?",
324
- "¿Qué provincia tiene el menor registro de administración de medicamentos?",
325
- "¿Cómo varía la administración de medicamentos en los distritos más poblados versus los menos poblados?"
326
- ]),
327
- ("Análisis Temporal", [
328
- "¿Cuál es el rango de fechas de administración de medicamentos registrado en el dataset?",
329
- "¿En qué meses se registra la mayor cantidad de administración de medicamentos?",
330
- "¿Cuál es la distribución de la administración de medicamentos a lo largo de los días de la semana?",
331
- "¿Existen picos en la administración de medicamentos durante períodos específicos?",
332
- "¿Cómo ha evolucionado la administración de medicamentos desde 2022 hasta 2023?",
333
- "¿Qué impacto tienen las estaciones del año en la administración de medicamentos?",
334
- "¿Cómo varía la administración de medicamentos durante días festivos o feriados?",
335
- "¿Qué variación se observa en la administración de medicamentos al comparar el primer y el último trimestre de 2023?"
336
- ])
337
- ]
338
-
339
- # Configuración de la interfaz de Gradio
340
  with gr.Blocks() as demo:
341
  with gr.Row():
342
- with gr.Column(scale=2):
343
  chatbot_input = gr.Textbox(label="Tu mensaje")
344
  chatbot_output = gr.Chatbot(label="ChatBot")
345
  chatbot_history = gr.State(value=[])
346
  image_url = gr.State(value=None)
347
  submit_button = gr.Button("Enviar")
348
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
349
  with gr.Column(scale=1):
350
  image_output = gr.Image(label="Imagen asociada")
351
 
352
- # Crear filas de categorías
353
- for i in range(0, len(categories), 3):
354
- with gr.Row():
355
- for category, questions in categories[i:i+3]:
356
- with gr.Column():
357
- with gr.Accordion(category):
358
- for question in questions:
359
- button = gr.Button(question)
360
- button.click(
361
- send_preset_question,
362
- inputs=[gr.State(value=question), chatbot_history],
363
- outputs=[chatbot_output, chatbot_history, image_url]
364
- )
365
-
366
- submit_button.click(
367
- process_input,
368
- inputs=[chatbot_input, chatbot_history],
369
- outputs=[chatbot_output, chatbot_history, image_url]
370
- )
371
-
372
- # Lanzar la interfaz
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
373
  demo.launch(debug=True)
 
257
  else:
258
  return None
259
 
260
+ # Gradio layout setup
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
261
  with gr.Blocks() as demo:
262
  with gr.Row():
263
+ with gr.Column(scale=1):
264
  chatbot_input = gr.Textbox(label="Tu mensaje")
265
  chatbot_output = gr.Chatbot(label="ChatBot")
266
  chatbot_history = gr.State(value=[])
267
  image_url = gr.State(value=None)
268
  submit_button = gr.Button("Enviar")
269
 
270
+ # Main accordion for categories
271
+ with gr.Accordion("Categorías de Preguntas", open=True):
272
+
273
+ # Diagnósticos Accordion
274
+ with gr.Accordion("Diagnósticos", open=False):
275
+
276
+ # Subaccordion for Diagnósticos Comunes
277
+ with gr.Accordion("Diagnósticos Comunes", open=False):
278
+ button_1 = gr.Button("¿Cuál es el diagnóstico más común registrado en el dataset?")
279
+ button_2 = gr.Button("¿Cuáles son los diagnósticos más frecuentes que requieren hospitalización prolongada?")
280
+ button_3 = gr.Button("¿Qué tan frecuentes son los diagnósticos relacionados con nacimientos prematuros?")
281
+ button_4 = gr.Button("¿Cuáles son los diagnósticos menos comunes en el dataset?")
282
+
283
+ # Subaccordion for Diagnósticos Críticos
284
+ with gr.Accordion("Diagnósticos Críticos", open=False):
285
+ button_5 = gr.Button("¿Cuál es la incidencia de diagnósticos graves como el 'Síndrome de Dificultad Respiratoria' (P220)?")
286
+ button_6 = gr.Button("¿Cuál es la tasa de mortalidad asociada a estos diagnósticos graves?")
287
+ button_7 = gr.Button("¿Qué porcentaje de neonatos con sepsis requiere cuidados intensivos?")
288
+
289
+ # Subaccordion for Codificación y Clasificación
290
+ with gr.Accordion("Codificación y Clasificación", open=False):
291
+ button_8 = gr.Button("¿Cuáles son los códigos CIE-10 relacionados con infecciones neonatales?")
292
+ button_9 = gr.Button("¿Qué diagnósticos están clasificados bajo el código P00-P96 en neonatos?")
293
+
294
+ # Tratamientos Accordion
295
+ with gr.Accordion("Tratamientos", open=False):
296
+
297
+ # Subaccordion for Medicamentos Comunes
298
+ with gr.Accordion("Medicamentos Comunes", open=False):
299
+ button_10 = gr.Button("¿Qué medicamentos son más usados en neonatos?")
300
+ button_11 = gr.Button("¿Cuál es el medicamento más usado para infecciones neonatales?")
301
+ button_12 = gr.Button("¿Cuáles son los efectos secundarios más comunes de estos medicamentos?")
302
+
303
+ # Subaccordion for Intervenciones Médicas
304
+ with gr.Accordion("Intervenciones Médicas", open=False):
305
+ button_13 = gr.Button("¿Cuál es la proporción de diagnósticos que requieren intervención quirúrgica?")
306
+ button_14 = gr.Button("¿Cuáles son las complicaciones más frecuentes durante las intervenciones quirúrgicas en neonatos?")
307
+ button_15 = gr.Button("¿Cuál es la tasa de éxito de las intervenciones quirúrgicas en neonatos?")
308
+
309
+ # Estadísticas y Frecuencia Accordion
310
+ with gr.Accordion("Estadísticas y Frecuencia", open=False):
311
+
312
+ # Subaccordion for Estadísticas Generales
313
+ with gr.Accordion("Estadísticas Generales", open=False):
314
+ button_16 = gr.Button("¿Qué porcentaje del total de registros corresponde al diagnóstico 'Nacido Vivo Único' (Z370)?")
315
+ button_17 = gr.Button("¿Cuál es la distribución por edad gestacional de los neonatos en el dataset?")
316
+ button_18 = gr.Button("¿Cuál es la tasa de readmisión hospitalaria en neonatos?")
317
+
318
+ # Subaccordion for Diferencias Geográficas
319
+ with gr.Accordion("Diferencias Geográficas", open=False):
320
+ button_19 = gr.Button("¿Cómo varía el acceso a medicamentos entre regiones?")
321
+ button_20 = gr.Button("¿Existen diferencias significativas en las tasas de diagnóstico entre diferentes regiones?")
322
+ button_21 = gr.Button("¿Cómo varía la mortalidad neonatal entre diferentes departamentos?")
323
+
324
+ # Subaccordion for Análisis Temporal
325
+ with gr.Accordion("Análisis Temporal", open=False):
326
+ button_22 = gr.Button("¿Hay patrones estacionales en la administración de medicamentos?")
327
+ button_23 = gr.Button("¿Cómo han cambiado las tasas de mortalidad neonatal a lo largo de los años?")
328
+ button_24 = gr.Button("¿Existen variaciones en la incidencia de diagnósticos críticos a lo largo del año?")
329
+
330
+ # Impacto y Calidad de Datos Accordion
331
+ with gr.Accordion("Impacto y Calidad de Datos", open=False):
332
+
333
+ # Subaccordion for Impacto en la Salud Neonatal
334
+ with gr.Accordion("Impacto en la Salud Neonatal", open=False):
335
+ button_25 = gr.Button("¿Cómo impacta el uso de antibióticos en la recuperación neonatal?")
336
+ button_26 = gr.Button("¿Qué mejoras se pueden implementar en la atención neonatal?")
337
+ button_27 = gr.Button("¿Cuál es la efectividad de las medidas preventivas en la reducción de infecciones neonatales?")
338
+
339
+ # Subaccordion for Calidad de Datos
340
+ with gr.Accordion("Calidad de Datos", open=False):
341
+ button_28 = gr.Button("¿Cuáles son las limitaciones de los datos sobre salud neonatal?")
342
+ button_29 = gr.Button("¿Qué tan completos y precisos son los registros de diagnóstico?")
343
+ button_30 = gr.Button("¿Cómo afecta la calidad de los datos a la investigación y atención neonatal?")
344
+
345
  with gr.Column(scale=1):
346
  image_output = gr.Image(label="Imagen asociada")
347
 
348
+ def process_input(message, history):
349
+ full_response, image = chat_function(message, history)
350
+ history.append((message, full_response))
351
+ return history, history, image
352
+
353
+ # Function to update chatbot input with preset question
354
+ def send_preset_question(question, history):
355
+ return process_input(question, history)
356
+
357
+ # Assign the buttons to send the respective categorized questions
358
+ button_assignments = [
359
+ (button_1, "¿Cuál es el diagnóstico más común registrado en el dataset?"),
360
+ (button_2, "¿Cuáles son los diagnósticos más frecuentes que requieren hospitalización prolongada?"),
361
+ (button_3, "¿Qué tan frecuentes son los diagnósticos relacionados con nacimientos prematuros?"),
362
+ (button_4, "¿Cuáles son los diagnósticos menos comunes en el dataset?"),
363
+ (button_5, "¿Cuál es la incidencia de diagnósticos graves como el 'Síndrome de Dificultad Respiratoria' (P220)?"),
364
+ (button_6, "¿Cuál es la tasa de mortalidad asociada a estos diagnósticos graves?"),
365
+ (button_7, "¿Qué porcentaje de neonatos con sepsis requiere cuidados intensivos?"),
366
+ (button_8, "¿Cuáles son los códigos CIE-10 relacionados con infecciones neonatales?"),
367
+ (button_9, "¿Qué diagnósticos están clasificados bajo el código P00-P96 en neonatos?"),
368
+ (button_10, "¿Qué medicamentos son más usados en neonatos?"),
369
+ (button_11, "¿Cuál es el medicamento más usado para infecciones neonatales?"),
370
+ (button_12, "¿Cuáles son los efectos secundarios más comunes de estos medicamentos?"),
371
+ (button_13, "¿Cuál es la proporción de diagnósticos que requieren intervención quirúrgica?"),
372
+ (button_14, "¿Cuáles son las complicaciones más frecuentes durante las intervenciones quirúrgicas en neonatos?"),
373
+ (button_15, "¿Cuál es la tasa de éxito de las intervenciones quirúrgicas en neonatos?"),
374
+ (button_16, "¿Qué porcentaje del total de registros corresponde al diagnóstico 'Nacido Vivo Único' (Z370)?"),
375
+ (button_17, "¿Cuál es la distribución por edad gestacional de los neonatos en el dataset?"),
376
+ (button_18, "¿Cuál es la tasa de readmisión hospitalaria en neonatos?"),
377
+ (button_19, "¿Cómo varía el acceso a medicamentos entre regiones?"),
378
+ (button_20, "¿Existen diferencias significativas en las tasas de diagnóstico entre diferentes regiones?"),
379
+ (button_21, "¿Cómo varía la mortalidad neonatal entre diferentes departamentos?"),
380
+ (button_22, "¿Hay patrones estacionales en la administración de medicamentos?"),
381
+ (button_23, "¿Cómo han cambiado las tasas de mortalidad neonatal a lo largo de los años?"),
382
+ (button_24, "¿Existen variaciones en la incidencia de diagnósticos críticos a lo largo del año?"),
383
+ (button_25, "¿Cómo impacta el uso de antibióticos en la recuperación neonatal?"),
384
+ (button_26, "¿Qué mejoras se pueden implementar en la atención neonatal?"),
385
+ (button_27, "¿Cuál es la efectividad de las medidas preventivas en la reducción de infecciones neonatales?"),
386
+ (button_28, "¿Cuáles son las limitaciones de los datos sobre salud neonatal?"),
387
+ (button_29, "¿Qué tan completos y precisos son los registros de diagnóstico?"),
388
+ (button_30, "¿Cómo afecta la calidad de los datos a la investigación y atención neonatal?"),
389
+ ]
390
+
391
+ for button, question in button_assignments:
392
+ button.click(send_preset_question, inputs=[gr.State(value=question), chatbot_history], outputs=[chatbot_output, chatbot_history, image_url])
393
+
394
+ submit_button.click(process_input, inputs=[chatbot_input, chatbot_history], outputs=[chatbot_output, chatbot_history, image_url])
395
+ image_url.change(fn=update_image, inputs=image_url, outputs=image_output)
396
+
397
+ # Launch the interface
398
  demo.launch(debug=True)