Josedcape commited on
Commit
1c03e59
·
verified ·
1 Parent(s): 0463251

Update utils/data_manager.py

Browse files
Files changed (1) hide show
  1. utils/data_manager.py +88 -44
utils/data_manager.py CHANGED
@@ -353,8 +353,9 @@ def mostrar_datos_como_texto(datos):
353
 
354
  def flujo_presupuestos():
355
  st.title("💰 Asistente de Presupuestos")
356
- st.markdown("Hola Dr. cuénteme en que puedo ayudarle?")
357
 
 
358
  lista_precios = {
359
  "Restauraciones en resina de una superficie": 75000,
360
  "Restauraciones en resina de dos superficies": 95000,
@@ -381,49 +382,92 @@ def flujo_presupuestos():
381
  "Endodoncia de premolares superiores": 480000,
382
  }
383
 
 
 
 
 
 
 
 
 
 
 
384
  tratamiento = st.selectbox("Selecciona el tratamiento", list(lista_precios.keys()))
385
  cantidad = st.number_input("Cantidad", min_value=1, step=1)
386
-
387
- if st.button("Calcular Presupuesto"):
388
- if tratamiento and cantidad:
389
- precio_total = lista_precios[tratamiento] * cantidad
390
- st.success(f"El precio total para {cantidad} {tratamiento} es: {precio_total} COP")
391
-
392
- def flujo_radiografias():
393
- st.title("📸 Registro de Radiografías")
394
-
395
- if 'radiografias' not in st.session_state:
396
- st.session_state.radiografias = []
397
-
398
- with st.form("radiografias_form"):
399
- nombre_paciente = st.text_input("Nombre del Paciente:")
400
- tipo_radiografia = st.selectbox("Tipo de Radiografía:", ["Periapical", "Panorámica", "Cefalométrica"])
401
- fecha_realizacion = st.date_input("Fecha de Realización:")
402
- observaciones = st.text_area("Observaciones:")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
403
 
404
- submitted = st.form_submit_button("Registrar Radiografía")
405
-
406
- if submitted:
407
- radiografia = {
408
- "nombre_paciente": nombre_paciente,
409
- "tipo_radiografia": tipo_radiografia,
410
- "fecha_realizacion": str(fecha_realizacion),
411
- "observaciones": observaciones
412
- }
413
- st.session_state.radiografias.append(radiografia)
414
- datos_guardados = mostrar_datos_como_texto([radiografia])
415
- guardar_en_txt('radiografias.txt', datos_guardados)
416
- st.success("Radiografía registrada con éxito.")
417
-
418
- if st.session_state.radiografias:
419
- st.write("### Radiografías Registradas")
420
- df_radiografias = pd.DataFrame(st.session_state.radiografias)
421
- st.write(df_radiografias)
422
-
423
- pdf_file = generar_pdf(df_radiografias, "Registro de Radiografías", "radiografias.pdf")
424
- st.download_button(
425
- label="📥 Descargar PDF",
426
- data=open(pdf_file, 'rb').read(),
427
- file_name="radiografias.pdf",
428
- mime="application/pdf"
429
- )
 
353
 
354
  def flujo_presupuestos():
355
  st.title("💰 Asistente de Presupuestos")
356
+ st.markdown("Hola Dr. cuénteme en qué puedo ayudarle?")
357
 
358
+ # Listado de precios
359
  lista_precios = {
360
  "Restauraciones en resina de una superficie": 75000,
361
  "Restauraciones en resina de dos superficies": 95000,
 
382
  "Endodoncia de premolares superiores": 480000,
383
  }
384
 
385
+ if 'presupuesto' not in st.session_state:
386
+ st.session_state['presupuesto'] = []
387
+
388
+ # Mostrar lista de precios en un menú desplegable
389
+ with st.expander("Mostrar Lista de Precios"):
390
+ st.markdown("### Lista de Precios")
391
+ for tratamiento, precio in lista_precios.items():
392
+ st.markdown(f"**{tratamiento}:** {precio} COP")
393
+
394
+ # Selección de tratamientos y cantidad
395
  tratamiento = st.selectbox("Selecciona el tratamiento", list(lista_precios.keys()))
396
  cantidad = st.number_input("Cantidad", min_value=1, step=1)
397
+ agregar = st.button("Agregar al Presupuesto")
398
+
399
+ if agregar:
400
+ precio_total = lista_precios[tratamiento] * cantidad
401
+ st.session_state['presupuesto'].append({"tratamiento": tratamiento, "cantidad": cantidad, "precio_total": precio_total})
402
+ st.success(f"Agregado: {cantidad} {tratamiento} - Total: {precio_total} COP")
403
+
404
+ # Mostrar servicios seleccionados y total
405
+ if st.session_state['presupuesto']:
406
+ st.write("### Servicios Seleccionados")
407
+ total_presupuesto = sum(item['precio_total'] for item in st.session_state['presupuesto'])
408
+ for item in st.session_state['presupuesto']:
409
+ st.write(f"{item['cantidad']} x {item['tratamiento']} - {item['precio_total']} COP")
410
+ st.write(f"**Total: {total_presupuesto} COP**")
411
+
412
+ # Copiar presupuesto al asistente de chat
413
+ copiar_presupuesto = st.button("Copiar Presupuesto al Asistente")
414
+ if copiar_presupuesto:
415
+ servicios = "\n".join([f"{item['cantidad']} x {item['tratamiento']} - {item['precio_total']} COP" for item in st.session_state['presupuesto']])
416
+ total = f"**Total: {total_presupuesto} COP**"
417
+ st.session_state['presupuesto_texto'] = f"{servicios}\n{total}"
418
+ st.success("Presupuesto copiado al asistente de chat.")
419
+
420
+ if 'mostrar_chat' not in st.session_state:
421
+ st.session_state['mostrar_chat'] = False
422
+
423
+ def mostrar_chat():
424
+ st.session_state['mostrar_chat'] = not st.session_state['mostrar_chat']
425
+
426
+ st.markdown(
427
+ """
428
+ <style>
429
+ .assistant-button {
430
+ display: flex;
431
+ align-items: center;
432
+ justify-content: center;
433
+ background-color: #4CAF50;
434
+ color: white;
435
+ padding: 10px;
436
+ border: none;
437
+ border-radius: 5px;
438
+ cursor: pointer;
439
+ font-size: 16px;
440
+ margin-top: 10px;
441
+ }
442
+ .assistant-button img {
443
+ margin-right: 10px;
444
+ }
445
+ </style>
446
+ <button class="assistant-button" onclick="window.location.href='#assistant_chat'">
447
+ <img src='https://img2.gratispng.com/20180808/cxq/kisspng-robotics-science-computer-icons-robot-technology-robo-to-logo-svg-png-icon-free-download-45527-5b6baa46a5e322.4713113715337825986795.jpg' alt='icon' width='20' height='20'/>
448
+ Hablar con Asistente
449
+ </button>
450
+ """,
451
+ unsafe_allow_html=True
452
+ )
453
+
454
+ if st.button("Mostrar Chat", key="assistant_button"):
455
+ mostrar_chat()
456
+
457
+ if st.session_state['mostrar_chat']:
458
+ st.markdown("<div id='assistant_chat'></div>", unsafe_allow_html=True)
459
+ st.markdown("### Chat con Asistente")
460
 
461
+ pregunta_usuario = st.text_input("Escribe tu pregunta aquí:", value=st.session_state.get('presupuesto_texto', ''))
462
+ if st.button("Enviar Pregunta"):
463
+ respuesta = obtener_respuesta(
464
+ pregunta_usuario,
465
+ "", # No se necesita texto preprocesado en este caso
466
+ st.session_state['modelo'],
467
+ st.session_state['temperatura'],
468
+ st.session_state.get('assistant_id', 'asst_4ZYvBvf4IUVQPjnugSZGLdV2')
469
+ )
470
+ st.markdown(f"**Asistente**: {respuesta}")
471
+
472
+ if __name__ == "__main__":
473
+ flujo_presupuestos()