miércoles, 29 de octubre de 2025

Conexión entre odontograma y presupuesto

 Quiero que en el odontograma cuando marco que un diente tiene un problema, me siguiera los posibles tratamientos o dispositivos que se le pueden aplicar. Por ejemplo, si no me equivoco, para caries me sugeriría obturación y tratamiento de conducto. Después quiero que al seleccionar un correctivo específico se pueda indicar si está en estado para realizar o realizado. Y que dé la opción de cargar el correctivo en el presupuesto. Esto efectivamente conecta con la función presupuesto.


¡Absolutamente! Este es el flujo de trabajo central de cualquier sistema de gestión clínica u odontológica: Conectar el diagnóstico con el plan de tratamiento y la cotización (presupuesto).

Para implementar esta funcionalidad con React y Firestore (para la persistencia de datos), necesitarás un componente central que gestione el estado del diente, los posibles tratamientos y la fase de ejecución.

Voy a generar un único archivo React (OdontogramaApp.jsx) que simulará un solo diente (para simplificar la lógica) y un panel lateral. Este archivo contendrá:

  1. La Lógica de Sugerencia: Un mapeo de condiciones a tratamientos sugeridos.

  2. El Componente del Diente: Donde se selecciona el problema.

  3. El Panel de Tratamiento: Donde se elige la fase (Para Realizar / Realizado).

  4. La Integración con Firestore: Para guardar la información del plan de tratamiento y el estado.

Dado que esta es una aplicación compleja con gestión de estado y persistencia, usaré React con hooks y Tailwind CSS para la estética.

Mapeo de Problemas a Sugerencias

Usaremos un mapeo base para las sugerencias que mencionaste:

Problema (Diagnóstico)Sugerencias de Tratamiento
CariesEmpaste / Obturación, Tratamiento de Conducto, Corona
FracturaEmpaste / Obturación, Corona, Extracción
AusenciaImplante, Prótesis Fija, Prótesis Removible

Aquí tienes el código completo en un solo archivo React:

Voy a generar el archivo OdontogramaApp.jsx.

Previsualización (con audio):


 

Explicación del Funcionamiento

  1. Firebase Setup: El componente se inicializa con Firebase y se suscribe al estado del usuario.

  2. SUGGESTIONS_MAP: Define la lógica central que conecta un problem (ej. 'Caries') con un array de posibles treatment (ej. ['Empaste / Obturación', ...]).

  3. updateToothPlan (Persistencia): Esta función central encapsula la lógica para guardar cualquier cambio (problem, treatment, status, inBudget) en Firestore. Usa setDoc({ merge: true }) para actualizar solo los campos cambiados, manteniendo el resto de los datos.

  4. Flujo del Diente (Columna 1):

    • El usuario selecciona un Diagnóstico (ej. "Caries").

    • handleProblemSelect se llama, guarda el diagnóstico en Firestore y resetea los campos treatment y status.

  5. Sugerencias (Columna 2):

    • Al seleccionar un diagnóstico, el componente muestra automáticamente los botones de suggestedTreatments del mapa.

    • Al hacer clic en un tratamiento, se establece toothPlan.treatment y se inicializa el estado a "Para Realizar".

  6. Carga al Presupuesto (Columna 3):

    • El botón de presupuesto (CARGAR al Presupuesto) solo se activa si se ha seleccionado un tratamiento y un estado.

    • handleBudgetToggle invierte el valor de la propiedad inBudget en Firestore.

  7. Cálculo del Presupuesto:

    • Se utiliza un segundo onSnapshot (dentro del useEffect principal) que consulta la colección dental_plans filtrando solo por los documentos donde inBudget sea true.

    • Cada vez que un usuario añade o quita un tratamiento del presupuesto, Firestore actualiza esa consulta, y el budgetTotal se recalcula y se muestra al instante.

No hay comentarios: