# Modelo relacional de Salud365

**Última actualización:** 14 de noviembre de 2026.

Esta carpeta contiene el modelo relacional de referencia para la base de datos PostgreSQL de Salud365, destinada a la aplicación web y móvil. Representa las entidades, sus campos y relaciones, incluidos los datos que Salud365 conserva e intercambia con EGD y los pagos gestionados por Salud365.

EGD es el sistema clínico principal. La conservación de datos clínicos en Salud365 no implica que todos esos campos se muestren al titular o paciente ni habilita edición médica propia en esta fase. La dirección y las reglas de sincronización se definen por entidad y operación.

## Archivos

| Archivo | Uso |
| --- | --- |
| [modelo-relacional-salud365.drawio](modelo-relacional-salud365.drawio) | Fuente editable del modelo. Es el archivo que debe modificarse cuando se autorice un cambio. |
| [modelo-relacional-salud365.png](modelo-relacional-salud365.png) | Imagen exportada del editable para consultar y compartir el diagrama. |
| [README.md](README.md) | Alcance, convenciones e instrucciones de mantenimiento. |

## Diagrama

![Modelo relacional de la base de datos de Salud365](modelo-relacional-salud365.png)

## Organización del modelo

| Grupo | Tablas representadas |
| --- | --- |
| Titulares y pacientes | `TITULAR`, `PACIENTE`, `TITULAR_PACIENTE`. |
| Servicios, solicitudes y pagos | `SERVICIO`, `SOLICITUD`, `PAGO`, `EVENTO_PAGO`. |
| Médicos y disponibilidad | `MEDICO`, `ESPECIALIDAD`, `MEDICO_ESPECIALIDAD`, `HORARIO_MEDICO`. |
| Citas y datos clínicos | `CITA`, `ATENCION`, `DIAGNOSTICO`, `RECETA`, `DETALLE_RECETA`, `ORDEN_MEDICA`. |
| Sincronización y trazabilidad | `OPERACION_SINCRONIZACION`, `LOG_SISTEMA`. |

En `TITULAR`, `PACIENTE` y `MEDICO`, los apellidos se representan por separado mediante `apellido_paterno` y `apellido_materno`.

La presencia de una entidad en el modelo no confirma por sí sola su inclusión en la fase actual ni la disponibilidad de una integración. En particular, las órdenes médicas conservan la condición de alcance no aprobado para el MVP descrita en el [módulo 15](../../modulos/Modulo_15_Ordenes_Medicas_Funcional.md).

## Convenciones de lectura

- **PK:** clave primaria del registro.
- **FK:** clave foránea que relaciona el registro con otra tabla.
- **opc.:** referencia opcional.
- **1 : 0..N:** un registro puede relacionarse con cero o muchos registros del otro extremo.
- **Filas grises:** campos utilizados para el seguimiento de sincronización.
- **`id_egd`:** correspondencia con el identificador externo; puede estar vacío antes de su confirmación.
- **`registro_local_id`:** referencia lógica a un registro identificado por su entidad; no equivale a una clave foránea genérica de PostgreSQL.

Los colores ayudan a diferenciar los grupos de tablas. Las decisiones abiertas se mantienen en [pendientes de documentación](../../pendientes/pendientes.md), con su contexto y ubicación de actualización.

## Cómo editar y actualizar

1. Abrir `modelo-relacional-salud365.drawio` en draw.io o en la extensión de draw.io para Visual Studio Code.
2. Aplicar únicamente los cambios validados, conservando la distribución, los colores y las relaciones que no estén afectados.
3. Exportar el diagrama completo como `modelo-relacional-salud365.png`, con fondo blanco y resolución suficiente para leer al ampliar.
4. Revisar que la imagen coincida con el editable y que los textos y las conexiones no queden recortados o superpuestos.
5. Guardar ambos archivos juntos y actualizar este README si cambia el alcance o las convenciones.

La imagen es una representación del editable; no debe modificarse de forma independiente. Este modelo documenta el diseño y no sustituye los scripts de creación, restricciones o migraciones que se elaboren para implementar PostgreSQL.

