Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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=
|
322 |
-
|
|
|
323 |
chatbot_history = gr.State(value=[])
|
324 |
-
|
325 |
submit_button = gr.Button("Enviar")
|
326 |
|
327 |
-
|
328 |
-
|
329 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
330 |
|
331 |
-
|
332 |
-
|
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)
|
|
|
|
|
|