Modelo funcional y reglas de negocio
Compilación y publicación

Compilación y publicación

Separación entre edición y consumo

Interdrugs utiliza dos niveles de datos:

Base editorial
      ↓
Compilación / Publicación
      ↓
Base compilada
      ↓
API / Go / Aplicaciones

La base editorial es la fuente de verdad y contiene la estructura necesaria para administrar y mantener la información.

Las bases compiladas son productos derivados, optimizados para consulta.

Publicar no significa editar

Guardar o aprobar un cambio editorial no implica que ese cambio quede inmediatamente disponible para las aplicaciones.

La publicación es una operación separada.

Esto permite:

  • revisar qué cambios están pendientes;
  • decidir cuándo generar una nueva versión;
  • mantener estable la información consumida por las aplicaciones;
  • regenerar una base compilada cuando sea necesario.

Bases por diccionario e idioma

Inicialmente se generan:

db_interdrugs_MEDICOS_ES
db_interdrugs_FARMACEUTICOS_ES

Cada base representa un contexto ya resuelto.

Por eso las aplicaciones no necesitan decidir en cada consulta qué diccionario o idioma utilizar.

Desnormalización

La base compilada no necesita reproducir la estructura editorial.

Puede almacenar información ya combinada.

Por ejemplo, un producto compilado puede contener directamente:

id
nombre
idLaboratorio
presentacion
composicion
accionTerapeutica
dosificacion
activo

En lugar de consultar una tabla estructural y luego otra tabla de contenidos por idioma.

Compilación de drogas

Cada droga conserva su identificador editorial.

El compilador incorpora el contenido correspondiente al idioma de la base:

id
nombre
contraindicaciones
precauciones
embarazo
lactancia
activo

Compilación de interacciones

Este es uno de los trabajos principales del compilador.

La base editorial puede contener:

  • droga-droga;
  • droga-grupo;
  • grupo-grupo.

La base compilada expone interacciones efectivas droga-droga.

El proceso debe:

  1. leer las interacciones editoriales;
  2. resolver los miembros de cada grupo terapéutico;
  3. expandir droga-grupo;
  4. expandir grupo-grupo;
  5. normalizar cada par de drogas;
  6. detectar colisiones;
  7. aplicar la prioridad por especificidad;
  8. incorporar la descripción del diccionario e idioma correspondientes;
  9. incorporar conducta médica recomendada y referencia bibliográfica del idioma;
  10. generar una única interacción efectiva por par.

La prioridad aplicada es:

DROGA-DROGA
    >
DROGA-GRUPO
    >
GRUPO-GRUPO

Consulta en runtime

El objetivo es que la capa pública no tenga que reconstruir reglas farmacológicas complejas.

Una consulta de interacción puede trabajar directamente con:

idDroga1 + idDroga2

y obtener el resultado efectivo ya compilado.

Identificadores

Siempre que sea posible, drogas, productos, laboratorios y demás elementos exportados conservan los mismos identificadores de la base editorial.

Esto facilita:

  • trazabilidad;
  • integraciones;
  • actualización;
  • comparación entre versiones;
  • una eventual distribución de la base como producto de datos.

Metadata y versión

Cada base compilada posee metadata propia.

Para el MVP se contempla al menos:

version = 20260831

La versión se almacena como texto para permitir variantes futuras, por ejemplo:

20260831-2

Control editorial y publicación

Los cambios que afectan información compilable pueden quedar marcados como pendientes de publicación.

La publicación toma el estado editorial vigente y genera nuevamente las bases compiladas.

Una vez publicada la versión correspondiente, los cambios incluidos pueden marcarse como publicados.

La base compilada debe considerarse derivada: no se edita manualmente.