C2MV commited on
Commit
4be5894
·
verified ·
1 Parent(s): 6d414bd

Update app.py

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