Primer commit

This commit is contained in:
2026-05-30 12:01:25 -05:00
parent 46fd5d2afb
commit 40986b0359
17 changed files with 2251 additions and 152 deletions
+40
View File
@@ -0,0 +1,40 @@
import { z } from 'zod';
export const PacienteSchema = z.object({
id: z.string().uuid().optional(),
nombre: z.string().min(2, "El nombre debe tener al menos 2 caracteres"),
telefono: z.string().optional(),
email: z.string().email("Correo inválido").optional(),
notas_clinicas: z.string().optional(),
});
export const ProcedimientoSchema = z.object({
id: z.string().uuid().optional(),
nombre: z.string().min(2, "Procedimiento requerido"),
duracion_minutos: z.number().int().positive("Obligatorio"),
precio: z.number().positive().optional(),
});
export const CitaSchema = z.object({
id: z.string().uuid().optional(),
paciente_id: z.string().uuid(),
procedimiento_id: z.string().uuid().optional(),
start_time: z.string().datetime(),
end_time: z.string().datetime(),
status: z.enum(["agendada", "completada", "cancelada"]).default("agendada"),
medico_id: z.string().uuid(),
});
export const InteraccionSchema = z.object({
id: z.string().uuid().optional(),
paciente_id: z.string().uuid(),
plataforma: z.enum(["whatsapp", "instagram", "tiktok", "web"]),
request_payload: z.any(),
});
export const ChatStatusSchema = z.object({
id: z.string().uuid().optional(),
paciente_id: z.string().uuid(),
ia_activa: z.boolean().default(true),
last_updated: z.string().datetime().optional()
});