C2MV commited on
Commit
e90cabe
·
verified ·
1 Parent(s): d4c455c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +129 -85
app.py CHANGED
@@ -240,6 +240,8 @@ def chat_function(message, history):
240
  "rId97": "images/rId97.png",
241
  }
242
 
 
 
243
  for tag in tags_detected:
244
  for key, path in tags_to_images.items():
245
  if key in tag and check_image_exists(path):
@@ -248,18 +250,6 @@ def chat_function(message, history):
248
 
249
  return full_response, image_url
250
 
251
- # Función para procesar preguntas preestablecidas
252
- def send_preset_question(question, history):
253
- # Aquí puedes definir cómo manejar la pregunta, por ejemplo:
254
- response = f"Procesando la pregunta: {question}"
255
- history.append((question, response))
256
- return history, history, None
257
-
258
- # Función para manejar la entrada manual
259
- def process_input(message, history):
260
- response = f"Respuesta generada para: {message}"
261
- history.append((message, response))
262
- return history, history, None
263
 
264
  def update_image(image_url):
265
  if image_url:
@@ -267,88 +257,142 @@ def update_image(image_url):
267
  else:
268
  return None
269
 
270
- # Categorías con las preguntas categorizadas
271
- categories = {
272
- "Diagnósticos Comunes": [
273
- '¿Cuál es el diagnóstico más común registrado en el dataset?',
274
- '¿Cuáles son los diagnósticos más frecuentes que requieren hospitalización prolongada?'
275
- ],
276
- "Diagnósticos Críticos": [
277
- "¿Cuál es la incidencia de diagnósticos graves como el 'Síndrome de Dificultad Respiratoria' (P220)?",
278
- '¿Cuál es la mediana de días de hospitalización para neonatos con diagnósticos menos graves?'
279
- ],
280
- "Codificación y Clasificación": [
281
- '¿Cuáles son los códigos CIE-10 relacionados con infecciones neonatales?'
282
- ],
283
- "Intervenciones Médicas": [
284
- '¿Cuál es la proporción de diagnósticos que requieren intervención quirúrgica?'
285
- ],
286
- "Medicamentos Comunes": [
287
- '¿Qué efectos secundarios se asocian con el uso de medicamentos inyectables en neonatos?'
288
- ],
289
- "Estadísticas y Frecuencia": [
290
- "¿Qué porcentaje del total de registros corresponde al diagnóstico 'Nacido Vivo Único' (Z370)?"
291
- ],
292
- "Diferencias Geográficas": [
293
- '¿Existen diferencias significativas en los diagnósticos entre diferentes departamentos?',
294
- '¿Qué medicamentos se utilizan con mayor frecuencia en los departamentos con menos recursos?',
295
- '¿Cómo varía la duración de la hospitalización entre los diferentes departamentos?',
296
- '¿Cómo varía el costo neto de los medicamentos entre diferentes departamentos?',
297
- '¿Qué departamentos tienen los menores registros de administración de medicamentos?',
298
- '¿Qué factores podrían explicar las diferencias en la administración de medicamentos entre departamentos?'
299
- ],
300
- "Impacto en la Salud Neonatal": [
301
- '¿Cómo impacta el uso de antibióticos en la recuperación neonatal?'
302
- ],
303
- "Calidad de Datos": [
304
- '¿Qué desafíos presenta la calidad de los datos en términos de precisión y consistencia?',
305
- '¿Qué recomendaciones se hicieron para mejorar la calidad de los datos en futuros estudios?',
306
- '¿Cómo podría mejorar la calidad de los datos recolectados en futuras investigaciones?'
307
- ],
308
- "Recomendaciones y Mejoras": [
309
- '¿Cómo podrían las recomendaciones del análisis contribuir a la reducción de la mortalidad neonatal en Perú?'
310
- ],
311
- "Otros": [
312
- '¿Qué tan frecuentes son los diagnósticos relacionados con nacimientos prematuros?',
313
- '¿Cómo se distribuyen los diagnósticos entre pacientes masculinos y femeninos?',
314
- '¿Existen diferencias significativas en los diagnósticos entre diferentes departamentos?'
315
- ]
316
- }
317
-
318
  # Gradio layout setup
319
  with gr.Blocks() as demo:
320
  with gr.Row():
321
- with gr.Column(scale=2): # Más espacio para el chatbot
322
- chatbot_output = gr.Chatbot(label="ChatBot", height=400)
 
323
  chatbot_history = gr.State(value=[])
324
- chatbot_input = gr.Textbox(label="Tu mensaje", placeholder="Escribe tu mensaje aquí...")
325
  submit_button = gr.Button("Enviar")
326
 
327
- with gr.Column(scale=1): # Más espacio para la imagen
328
- image_output = gr.Image(label="Imagen asociada", height=400)
329
- image_url = gr.State(value=None)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
330
 
331
- # Organizando acordeones en filas de 3 columnas
332
- category_list = list(categories.items())
333
- for i in range(0, len(category_list), 3):
334
- with gr.Row():
335
- for j in range(3):
336
- if i + j < len(category_list):
337
- category_name, questions = category_list[i + j]
338
- with gr.Column():
339
- with gr.Accordion(category_name, open=False):
340
- for question in questions:
341
- gr.Button(question).click(
342
- send_preset_question,
343
- inputs=[gr.State(value=question), chatbot_history],
344
- outputs=[chatbot_output, chatbot_history, image_url]
345
- )
346
 
347
  submit_button.click(process_input, inputs=[chatbot_input, chatbot_history], outputs=[chatbot_output, chatbot_history, image_url])
348
  image_url.change(fn=update_image, inputs=image_url, outputs=image_output)
349
 
350
  # Launch the interface
351
- demo.launch(debug=True)
352
-
353
-
354
-
 
240
  "rId97": "images/rId97.png",
241
  }
242
 
243
+
244
+
245
  for tag in tags_detected:
246
  for key, path in tags_to_images.items():
247
  if key in tag and check_image_exists(path):
 
250
 
251
  return full_response, image_url
252
 
 
 
 
 
 
 
 
 
 
 
 
 
253
 
254
  def update_image(image_url):
255
  if image_url:
 
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)