ixiclinicDocs
DesarrolladoresBase de datos

Dominios del esquema

Recorrido por los 25 archivos de apps/api/src/db/schema, con las tablas clave de cada dominio y los detalles de catalog, billing, saas y tenants.

El esquema de ixiclinic está dividido por dominio: un archivo por área en apps/api/src/db/schema/. Hay 25 archivos. Cada uno declara sus tablas con pgTable de Drizzle.

Mapa de dominios

ArchivoQué contiene (tablas clave)
tenants.tstenants, users, roles, refreshTokens — núcleo de identidad y autenticación
branches.tsbranches, userTenants — sucursales y la membresía usuario↔tenant
patients.tspatients — el padrón de pacientes
clients.tscompanies, clientAccounts, companyPackages, companyEmployees, clientRefreshTokens, patientInvitations, clientAppointments — empresas y portal de clientes
catalog.tsdepartments, testCategories, testCatalog, testParameters, referenceRanges, imagingCatalog, testProfiles, testProfileItems, packageItems, consultationCatalog, procedureCatalog, cardiologyStudiesCatalog — catálogo de pruebas, imágenes y servicios
orders.tsorders, orderTests, orderImaging, orderConsultations, orderProcedures, orderCardiology, referringDoctors, samples, sampleIncidents, sampleCollections, sampleCollectionTests — órdenes y muestras
results.tstestResults, imagingResults, imagingFiles, cultureResults, cultureIsolates, antibiogramEntries — resultados de lab, imágenes, cultivos y antibiograma
billing.tsinvoices, invoiceItems, payments, creditNotes, taxTypes + caja: cashRegisters, cashSessions, cashMovements
insurance.tsinsurances, insurancePlans, insurancePrices, insuranceClaims — seguros (ARS) y reclamaciones
dgii.tsfiscalSequences, ecfConfigurations, ecfSubmissions, dgiiReports — cumplimiento fiscal dominicano (NCF/e-CF)
inventory.tsinventoryCategories, inventoryItems, warehouses, inventoryStock, inventoryMovements — inventario multi-almacén
qc.tsqcLots, qcResults — control de calidad
instruments.tsinstruments, instrumentTestMappings, instrumentResultsLog, autoverificationRules — equipos de laboratorio y autoverificación
appointments.tsappointments, appointmentReminders, appointmentSettings, consultationTypes, doctorSchedules, doctorScheduleOverrides, serviceCapacityBlocks, serviceCapacityOverrides, equipment, equipmentSchedules, equipmentScheduleOverrides — citas, horarios y capacidad
queue.tsqueueStations, queueFlows, queueTickets, queueTicketSteps, queuePositions, queueScreens, queueKiosks, queueNotifications, queueCounters, queueSettings — sistema de turnos/cola
prescriptions.tsprescriptions, patientVitals, patientNotes — recetas y signos vitales
encounters.tsencounters — encuentros clínicos estructurados
programs.tspatientPrograms — programas crónicos (estilo ARS)
activities.tsactivities, activityParticipants — actividades y sus participantes
notifications.tsnotifications, notificationPreferences — notificaciones y preferencias
chat.tschatConversations, chatParticipants, chatMessages — chat interno entre empleados
printing.tsbridges, printers, printJobs — agentes ixiclinic Connect, impresoras y trabajos de impresión
templates.tsdocumentTemplates, documentTemplateVersions — plantillas de documentos (recibos, recetas) y versiones
audit.tsauditLog — bitácora de auditoría
saas.tssaasUsers, plans, subscriptions, subscriptionHistory, demos, organizations, organizationTenants, saasSettings — gestión SaaS interna

Detalles a destacar

catalog.ts — estructura jerárquica

El catálogo de pruebas de laboratorio es jerárquico:

testCategories  →  testCatalog  →  testParameters  →  referenceRanges
 (categorías)       (pruebas)       (parámetros)        (rangos de referencia)

Una categoría agrupa pruebas; cada prueba tiene parámetros (los analitos medibles); cada parámetro define sus rangos de referencia. Junto a la rama de laboratorio conviven el catálogo de imágenes (imagingCatalog), los perfiles/paquetes (testProfiles, testProfileItems, packageItems) y los catálogos de consultas, procedimientos y estudios de cardiología.

billing.ts — facturación y caja

Además de la facturación (invoices, invoiceItems, payments, creditNotes, taxTypes), este archivo contiene las tablas de caja: cashRegisters (cajas), cashSessions (sesiones/aperturas de caja) y cashMovements (entradas y salidas de efectivo).

saas.ts — gestión SaaS interna

Es el esquema que respalda la consola interna (console.ixiclinic.com): usuarios superadmin (saasUsers), planes (plans), suscripciones (subscriptions, subscriptionHistory), demos del landing (demos), organizaciones (organizations, organizationTenants) y ajustes SaaS (saasSettings).

tenants.ts — identidad y autenticación

Aunque el archivo se llama tenants, aloja también la tabla users (con preferences JSONB para el layout del escritorio por usuario), los roles y los refreshTokens (tokens de refresco persistidos). La membresía usuario↔tenant (userTenants) vive en branches.ts.

Gotcha: el glob no garantiza visibilidad en db

Las migraciones se generan con el glob ./src/db/schema/*, pero la instancia db de apps/api/src/db/index.ts importa cada esquema explícitamente. Si añades un dominio nuevo debes registrarlo allí (import + spread) para que db.query.<tabla> lo conozca. Ver Drizzle ORM.

On this page