erDiagram USUARIO { bigint id PK varchar nombre varchar apellido1 varchar apellido2 varchar email varchar password_hash varchar telefono datetime fecha_registro varchar rol } PACIENTE { bigint id PK bigint usuario_id FK date fecha_nacimiento varchar genero varchar tipo_cancer text observaciones } MEDICO { bigint id PK bigint usuario_id FK varchar numero_colegiado varchar especialidad varchar hospital } CITA { bigint id PK bigint paciente_id FK bigint medico_id FK datetime fecha_hora varchar tipo text notas varchar estado } SINTOMA { bigint id PK bigint paciente_id FK datetime fecha varchar nombre int severidad text descripcion } TRATAMIENTO { bigint id PK bigint paciente_id FK varchar nombre varchar tipo date fecha_inicio date fecha_fin text descripcion } MEDICINA { bigint id PK varchar nombre varchar descripcion } MEDICACION { bigint id PK bigint tratamiento_id FK bigint medicina_id FK bigint medico_id FK varchar dosis varchar frecuencia datetime fecha_inicio datetime fecha_fin text observaciones } HISTORIAL_CLINICO { bigint id PK bigint paciente_id FK datetime fecha varchar tipo text descripcion } RESUMEN_COMPARTIDO { bigint id PK bigint paciente_id FK bigint medico_id FK datetime fecha_creacion varchar formato text contenido varchar estado } ARCHIVO { bigint id PK bigint paciente_id FK varchar nombre varchar tipo text ruta datetime fecha_subida } NOTIFICACION { bigint id PK bigint usuario_id FK varchar tipo text mensaje boolean leida datetime fecha_creacion } USUARIO ||--o{ PACIENTE : "es" USUARIO ||--o{ MEDICO : "es" PACIENTE ||--o{ CITA : "tiene" MEDICO ||--o{ CITA : "atiende" PACIENTE ||--o{ SINTOMA : "registra" PACIENTE ||--o{ TRATAMIENTO : "realiza" TRATAMIENTO ||--o{ MEDICACION : "incluye" MEDICINA ||--o{ MEDICACION : "aparece_en" MEDICO ||--o{ MEDICACION : "receta" PACIENTE ||--o{ HISTORIAL_CLINICO : "tiene" PACIENTE ||--o{ RESUMEN_COMPARTIDO : "genera" MEDICO ||--o{ RESUMEN_COMPARTIDO : "recibe" PACIENTE ||--o{ ARCHIVO : "sube" USUARIO ||--o{ NOTIFICACION : "recibe"