updated medicine schedules

This commit is contained in:
blaisadmin
2026-04-19 19:42:01 -04:00
parent 872b6c8663
commit d1657ef7ed
7 changed files with 363 additions and 66 deletions
+17 -1
View File
@@ -230,7 +230,17 @@ const medicationSchema = z
.object({
name: z.string().trim().min(1).max(160),
dosage: z.string().trim().min(1).max(160),
frequency: z.string().trim().min(1).max(160),
frequency: z.enum(['once_daily', 'twice_daily', 'every_8_hours', 'every_6_hours', 'as_needed']),
doseSchedule: z
.array(
z.object({
key: z.string().trim().min(1).max(80),
label: z.string().trim().min(1).max(80),
time: z.string().trim().regex(/^$|^\d{2}:\d{2}$/),
}),
)
.min(1)
.max(8),
route: z.string().trim().max(80).optional().or(z.literal('')),
startDate: dateStringSchema,
endDate: dateStringSchema.optional().or(z.literal('')),
@@ -243,6 +253,7 @@ const medicationSchema = z
const medicationAdministrationSchema = z.object({
administeredOn: dateStringSchema,
administrationSlot: z.string().trim().min(1).max(80).default('dose-1'),
status: z.enum(['administered', 'missed']),
notes: z.string().trim().max(500).optional().or(z.literal('')),
});
@@ -444,6 +455,7 @@ const normalizeMedication = (row: MedicationRow) => ({
name: row.name,
dosage: row.dosage,
frequency: row.frequency,
doseSchedule: row.dose_schedule,
route: row.route,
startDate: row.start_date,
endDate: row.end_date,
@@ -455,6 +467,7 @@ const normalizeMedicationAdministration = (row: MedicationAdministrationRow) =>
medicationId: row.medication_id,
birdId: row.bird_id,
administeredOn: row.administered_on,
administrationSlot: row.administration_slot,
status: row.status,
notes: row.notes,
createdByUserId: row.created_by_user_id,
@@ -2229,6 +2242,7 @@ app.post('/api/birds/:birdId/medications', requireAuth, requireWriteAccess, requ
parsed.data.name,
parsed.data.dosage,
parsed.data.frequency,
parsed.data.doseSchedule,
emptyToNull(parsed.data.route),
parsed.data.startDate,
emptyToNull(parsed.data.endDate),
@@ -2263,6 +2277,7 @@ app.put('/api/birds/:birdId/medications/:medicationId', requireAuth, requireWrit
parsed.data.name,
parsed.data.dosage,
parsed.data.frequency,
parsed.data.doseSchedule,
emptyToNull(parsed.data.route),
parsed.data.startDate,
emptyToNull(parsed.data.endDate),
@@ -2325,6 +2340,7 @@ app.post('/api/birds/:birdId/medications/:medicationId/administrations', require
req.params.birdId,
req.auth!.workspace.id,
parsed.data.administeredOn,
parsed.data.administrationSlot,
parsed.data.status,
emptyToNull(parsed.data.notes),
req.auth!.user.id,