feature: Phase3 - Task templates + generation on send

This commit is contained in:
2026-06-28 16:46:42 +03:30
parent 8b4ef6195d
commit 21f545ebdb
25 changed files with 1448 additions and 31 deletions

View File

@@ -23,6 +23,7 @@ model User {
sessions Session[] // 👈 ADD THIS - opposite relation for Session
sentStaffInvites StaffInvitation[]
sentOrganizationInvitations OrganizationInvitation[]
assignedLabCaseTasks LabCaseTask[] @relation("LabCaseTaskAssignee")
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@ -118,6 +119,12 @@ enum TreatmentStatus {
COMPLETED
}
enum LabTaskStatus {
PENDING
IN_PROGRESS
COMPLETED
}
model Treatment {
id String @id @default(uuid())
organizationId String
@@ -154,6 +161,7 @@ model TreatmentDetail {
treatment Treatment @relation(fields: [treatmentId], references: [id], onDelete: Cascade)
attachments TreatmentDetailAttachment[]
labCaseLink LabCaseDetail?
labCaseTasks LabCaseTask[]
@@index([treatmentId, sortOrder])
@@map("treatment_details")
@@ -190,6 +198,7 @@ model LabCase {
treatment Treatment @relation(fields: [treatmentId], references: [id], onDelete: Cascade)
details LabCaseDetail[]
sends LabCaseSend[]
tasks LabCaseTask[]
@@index([treatmentId, sortOrder])
@@map("lab_cases")
@@ -219,6 +228,49 @@ model LabCaseSend {
@@map("lab_case_sends")
}
model TreatmentType {
id String @id @default(uuid())
code String @unique
labDependent Boolean @default(false)
sortOrder Int @default(0)
workflowSteps TreatmentWorkflowStep[]
@@map("treatment_types")
}
model TreatmentWorkflowStep {
id String @id @default(uuid())
treatmentTypeId String
stepOrder Int
label String
treatmentType TreatmentType @relation(fields: [treatmentTypeId], references: [id], onDelete: Cascade)
@@unique([treatmentTypeId, stepOrder])
@@map("treatment_workflow_steps")
}
model LabCaseTask {
id String @id @default(uuid())
labCaseId String
treatmentDetailId String
tooth String
treatmentType String
stepOrder Int
stepLabel String
assigneeUserId String?
status LabTaskStatus @default(PENDING)
labCase LabCase @relation(fields: [labCaseId], references: [id], onDelete: Cascade)
detail TreatmentDetail @relation(fields: [treatmentDetailId], references: [id], onDelete: Cascade)
assignee User? @relation("LabCaseTaskAssignee", fields: [assigneeUserId], references: [id], onDelete: SetNull)
@@unique([labCaseId, tooth, treatmentType, stepOrder])
@@index([labCaseId, status])
@@map("lab_case_tasks")
}
model Plan {
id String @id @default(uuid())
name String @unique // "Solo", "Small", "Medium", "Large", "Enterprise"