Saltar al contenido principal

Modelo de Dominio

El éxito de este ecosistema radica en la separación de identidades: desacoplamos al profesional de la salud de la infraestructura física donde opera. El modelo es polimórfico y modular, permitiendo que servicios como Farmacias o Laboratorios de diagnóstico coexistan bajo una misma estructura lógica, pudiendo activarse o desactivarse según las necesidades del negocio sin comprometer la integridad del sistema.

Convención: en documentación funcional se usa Profesional de la Salud. En código/API se conserva el alias técnico DOCTOR por compatibilidad (doctor_profiles, /api/v1/doctors).


1. El Profesional de la Salud

Representa al individuo prestador de servicios médicos. Su identidad es autónoma, única y persiste independientemente de las entidades donde colabore.

  • Identificador Único: Número de Colegiado (Llave primaria de identidad profesional).
  • Atributos Principales:
    • Nombre completo
    • Especialidad Jerárquica (Relación con el catálogo de Taxonomía Médica).
    • Biografía profesional y perfil académico (Maestrías, Postgrados).
    • Rating acumulado (basado en reseñas verificadas).
    • Status_Validacion: (Verificado / Pendiente / Suspendido).
  • Regla de Independencia: Un Profesional de la Salud no "pertenece" a una clínica; se afilia a una o varias sedes para prestar servicios. El perfil profesional es propiedad del individuo. Si el profesional cambia de sede, su reputación e historial migran con él.

2. Entidades de Salud (Estructura Modular de Sedes)

Representan los puntos físicos de atención o servicio (Sedes). Utilizamos un modelo de Entidad Base con atributos dinámicos para una arquitectura escalable.

A. Atributos Comunes (Base Entity)

  • Tipo_Entidad: (Discriminador: CLINICA, LABORATORIO, FARMACIA).
  • Nombre_Comercial y Razón_Social.
  • Ubicación: Ubicación Normalizada (Relación jarárquica con el catálogo de Geografía) y Coordenadas GPS (Lat/Lng).
  • Dirección_Exacta: Texto complementario a la ubicación de catálogo.
  • Horarios_Sede: Gestión de franjas horarias por día.
  • Métodos_Pago: (Efectivo, Tarjeta, Seguro, Transferencia).
  • Idiomas_Atencion: (Español, Inglés, Lenguas Mayas/Indígenas).
  • Multimedia: Galería de fotos del establecimiento y amenidades (Parqueo, Wi-Fi, Accesibilidad).

B. Atributos Específicos por Módulo (Extensibilidad)

TipoAtributos Especializados (Dinámicos)
Clínica / SedeEmergencias 24h, Quirófanos, Disponibilidad de especialistas afiliados.
LaboratorioToma de muestras a domicilio, Resultados en línea, Certificaciones Sanitarias.
FarmaciaServicio a domicilio (Delivery), Drive-thru, Turnos 24h, WhatsApp directo para recetas.

3. Dominios de Soporte: Catálogos Maestros

Son la "fuente de verdad" que garantiza que el Buscador y los Filtros funcionen sin errores de integridad.

3.1 Geografía Jerárquica (The Where)

Estructura canónica de 3 niveles para garantizar consistencia multi-país:

  1. País (Nivel 0)
  2. Región (Nivel 1, etiqueta visual: Departamento/Estado/Provincia)
  3. Localidad (Nivel 2, etiqueta visual: Municipio/Ciudad/Partido)

3.2 Taxonomía Médica (The What)

Estructura de 2 niveles para normalizar la oferta de servicios:

  1. Área Médica (Ej. Salud Mental)
  2. Especialidad (Ej. Psiquiatría)

4. El Paciente (Usuario Final / Cliente)

Consumidor de los servicios. Su perfil optimiza la búsqueda basada en su contexto financiero y familiar.

  • Atributos de Identidad: Nombre, Correo, Teléfono verificado (OTP).
  • Atributos de Salud:
    • Seguro_Primario: Relación con la Aseguradora para pre-filtrar resultados de red.
    • Póliza_ID: Número de carné para agilizar validaciones en sedes.
    • Ubicaciones_Frecuentes: (Casa, Trabajo) para cálculos de cercanía relativa.
    • Favoritos: Marcadores persistentes de Profesionales de la Salud y Sedes.
  • Gestión Familiar:
    • Dependientes: Capacidad de gestionar perfiles de hijos o adultos mayores bajo una cuenta principal.

5. Aseguradora (Dominio de Validación y Convenios)

La Aseguradora se define como un Ente Financiero Externo. No es una "Entidad de Salud" física, sino un catálogo de reglas de cobertura.

  • Atributos: Nombre, Logo, Planes de Cobertura, API/Método de validación de elegibilidad.
  • Diferenciación Técnica: No posee geolocalización propia; actúa como el filtro maestro en la Validación Triple.
  • Gestión: Requiere un perfil de Seguro_Admin para gestionar la red de proveedores acreditados.

6. Lógica de Gobernanza y Propiedad

El sistema resuelve la complejidad del ejercicio profesional mediante la asignación de roles de propiedad sobre las Sedes.

6.1 Escenario Independiente (Consultorio Propio)

  • Vínculo: El User_Doctor (alias técnico) posee el rol de Owner sobre su propia Sede. (Doctor_ID == Sede_Owner_ID).
  • Comportamiento: La reputación de la Sede y del Profesional están ligados por propiedad. Los convenios de seguros son gestionados directamente por el Profesional y se aplican a su sede única.

6.2 Escenario Corporativo (Clínica Multi-especialidad / Hospital)

  • Vínculo: Una Organización (Persona Jurídica) administra una o varias Sedes (Organización_ID posee Sedes_IDs).
  • Gestión de Staff: Los profesionales se afilian a la Sede mediante una relación de horarios y consultorios (Tabla intermedia de Afiliación).
  • Lógica de Seguros: La sede puede tener convenios institucionales (infraestructura) o permitir que cada médico use sus acreditaciones.

7. Diccionario de Relaciones

7.1 Relaciones de Integridad (Master Data)

  1. Localización (Sede ↔ Geografía): Una sede debe estar vinculada obligatoriamente a un nodo de nivel 2 (Localidad) y su árbol padre (Región/País).
  2. Especialidad (Profesional ↔ Taxonomía): Un profesional de la salud debe estar vinculado a una o más especialidades del catálogo oficial.

7.2 Relaciones Operativas y de Control

  1. Validación Triple: Intersección en tiempo real entre Profesional, Sede y Seguro.
  2. Auditoría (Admin ↔ Dominios): El Administrador de la Plataforma es el único con permiso para modificar las jerarquías de los catálogos.

7.3 Relaciones Clínico-Legales

  1. Afiliación (Profesional ↔ Sede): Vínculo operativo que define disponibilidad y ubicación (N:N con atributos de horarios).
  2. Acreditación (Profesional <-> Aseguradora): Indica que el profesional pertenece a la red de la aseguradora.
  3. Convenio (Sede <-> Aseguradora): Indica que la infraestructura acepta pagos directos o trámites de la aseguradora.

7.4 Relaciones de Usuario y Servicio

  1. Reseña (Paciente → Profesional/Sede): Calificación validada. Regla: Si es negativa, requiere evidencia (comprobante) para validación del administrador.
  2. Parentesco (Paciente ↔ Paciente): Relación jerárquica para la gestión de dependientes.
  3. Consentimiento (Paciente ↔ Profesional): Registro de autorización de acceso a datos de contacto/historial básico.

7.5 Relaciones Operativas (Flujo de Salud)

  1. Referencia (Profesional → Paciente → Lab/Sede): Emisión de órdenes diagnósticas o interconsultas.
  2. Receta (Profesional → Paciente → Farmacia): Vínculo para el despacho digital de medicamentos.

7.6 Relaciones de Control y Auditoría (Administrativo)

Este bloque define la autoridad sobre los datos y la moderación del ecosistema.

  1. Auditoría (Plataforma Admin → Profesional/Sede): Validación legal de credenciales para activación de perfiles.
  2. Moderación (Plataforma Admin → Reseña): Facultad de gestionar disputas sobre calificaciones.
  3. Ownership (Usuario Owner ↔ Sede): Responsabilidad legal y comercial de la data de una clínica.

8. El Administrador de la Plataforma (System Actor)

Entidad interna encargada de la integridad del ecosistema y el mantenimiento de los estándares de servicio (SLA - Service Level Agreement).

  • Atributos: ID del empleado, Nivel de acceso (SUPERADMIN/CATALOG_ADMIN), Logs de auditoría.
  • Responsabilidad:
    • Curaduría de Datos: Validación de colegiados médicos y NITs de entidades.
    • Gestión de Catálogos: Control maestro de especialidades, aseguradoras y taxonomías.
    • Gobernanza Técnica: Control del Registry de Módulos para habilitar/deshabilitar funcionalidades.

9. Diseño Técnico para la Escalabilidad

  1. Polimorfismo: El buscador trata a todas las Sedes como objetos base, permitiendo búsquedas transversales filtradas por el discriminador type.
  2. Registry de Módulos (Feature Flags): Los módulos (Farmacia, Lab) pueden moverse visual y lógicamente desactivando su visibilidad en el Registry, sin alterar el esquema de base de datos.
  3. Atributos Dinámicos (JSONB): Uso de almacenamiento no relacional dentro de SQL para campos específicos de industria, evitando migraciones constantes de tablas.
  4. Validación Triple: Algoritmo que intersecta la consulta en tiempo real: Profesional.Acreditado && Sede.Convenio && Seguro.Activo.
  5. Normalización Estricta: Se elimina el uso de texto libre para ciudades o especialidades en los formularios de registro para evitar basura en la base de datos.
  6. Persistencia Polimórfica: El buscador trata a todas las Sedes como objetos base, filtrando por el discriminador type.
  7. Registry de Módulos: Permite "apagar" módulos enteros (ej. Farmacia) sin afectar la integridad de los catálogos geográficos.