feat: add care execution workspace
This commit is contained in:
@@ -27,6 +27,9 @@ export const joinRequestStatusEnum = pgEnum("join_request_status", ["pending", "
|
||||
export const vitalRecordSourceEnum = pgEnum("vital_record_source", ["manual", "device", "import"]);
|
||||
export const chronicConditionStatusEnum = pgEnum("chronic_condition_status", ["active", "controlled", "resolved"]);
|
||||
export const healthReviewStatusEnum = pgEnum("health_review_status", ["pending", "reviewed", "resolved"]);
|
||||
export const careTaskTypeEnum = pgEnum("care_task_type", ["daily_care", "meal", "medication", "rehab", "inspection", "cleaning", "other"]);
|
||||
export const careTaskPriorityEnum = pgEnum("care_task_priority", ["low", "normal", "high", "urgent"]);
|
||||
export const careTaskStatusEnum = pgEnum("care_task_status", ["pending", "in_progress", "completed", "cancelled"]);
|
||||
|
||||
export const systemSettings = pgTable("system_settings", {
|
||||
id: text("id").primaryKey().default("global"),
|
||||
@@ -299,6 +302,27 @@ export const healthAnomalyReviews = pgTable("health_anomaly_reviews", {
|
||||
reviewQueueLookup: index("health_anomaly_reviews_queue_lookup").on(table.organizationId, table.status, table.severity),
|
||||
}));
|
||||
|
||||
export const careTasks = pgTable("care_tasks", {
|
||||
id: uuid("id").primaryKey().defaultRandom(),
|
||||
organizationId: uuid("organization_id").notNull().references(() => organizations.id, { onDelete: "cascade" }),
|
||||
elderId: uuid("elder_id").references(() => elders.id, { onDelete: "set null" }),
|
||||
title: text("title").notNull(),
|
||||
careType: careTaskTypeEnum("care_type").notNull(),
|
||||
priority: careTaskPriorityEnum("priority").notNull().default("normal"),
|
||||
status: careTaskStatusEnum("status").notNull().default("pending"),
|
||||
scheduledAt: timestamp("scheduled_at", { withTimezone: true }).notNull(),
|
||||
assigneeLabel: text("assignee_label").notNull().default(""),
|
||||
executionNotes: text("execution_notes").notNull().default(""),
|
||||
completedAt: timestamp("completed_at", { withTimezone: true }),
|
||||
createdByAccountId: uuid("created_by_account_id").references(() => accounts.id),
|
||||
completedByAccountId: uuid("completed_by_account_id").references(() => accounts.id),
|
||||
createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
|
||||
updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow(),
|
||||
}, (table) => ({
|
||||
queueLookup: index("care_tasks_queue_lookup").on(table.organizationId, table.status, table.priority),
|
||||
scheduleLookup: index("care_tasks_schedule_lookup").on(table.organizationId, table.scheduledAt),
|
||||
}));
|
||||
|
||||
export const admissions = pgTable("admissions", {
|
||||
id: uuid("id").primaryKey().defaultRandom(),
|
||||
organizationId: uuid("organization_id").notNull().references(() => organizations.id, { onDelete: "cascade" }),
|
||||
|
||||
Reference in New Issue
Block a user