feature: a minimal v1 backend implemented for treatments feature.
This commit is contained in:
@@ -61,6 +61,8 @@ model Organization {
|
||||
sentOrganizationInvitations OrganizationInvitation[] @relation("OrganizationInvitationInviter")
|
||||
patients Patient[]
|
||||
appointments Appointment[]
|
||||
treatments Treatment[]
|
||||
caseSends TreatmentCaseSend[]
|
||||
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
@@ -81,8 +83,8 @@ model Patient {
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
organization Organization @relation(fields: [organizationId], references: [id])
|
||||
treatments PatientTreatmentHistory[]
|
||||
organization Organization @relation(fields: [organizationId], references: [id])
|
||||
treatments Treatment[]
|
||||
appointments Appointment[]
|
||||
|
||||
@@index([organizationId, createdAt])
|
||||
@@ -90,24 +92,6 @@ model Patient {
|
||||
@@map("patients")
|
||||
}
|
||||
|
||||
model PatientTreatmentHistory {
|
||||
id String @id @default(uuid())
|
||||
patientId String
|
||||
title String
|
||||
status String
|
||||
treatmentAt DateTime
|
||||
tooth String?
|
||||
notes String?
|
||||
totalCost Float?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
patient Patient @relation(fields: [patientId], references: [id], onDelete: Cascade)
|
||||
|
||||
@@index([patientId, treatmentAt])
|
||||
@@map("patient_treatment_histories")
|
||||
}
|
||||
|
||||
model Appointment {
|
||||
id String @id @default(uuid())
|
||||
organizationId String
|
||||
@@ -119,6 +103,7 @@ model Appointment {
|
||||
|
||||
organization Organization @relation(fields: [organizationId], references: [id], onDelete: Cascade)
|
||||
patient Patient @relation(fields: [patientId], references: [id], onDelete: Cascade)
|
||||
treatment Treatment?
|
||||
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
@@ -128,6 +113,84 @@ model Appointment {
|
||||
@@map("appointments")
|
||||
}
|
||||
|
||||
enum TreatmentStatus {
|
||||
DRAFT
|
||||
COMPLETED
|
||||
}
|
||||
|
||||
model Treatment {
|
||||
id String @id @default(uuid())
|
||||
organizationId String
|
||||
patientId String
|
||||
appointmentId String? @unique
|
||||
providerUserId String
|
||||
title String
|
||||
status TreatmentStatus @default(DRAFT)
|
||||
treatmentAt DateTime
|
||||
|
||||
organization Organization @relation(fields: [organizationId], references: [id], onDelete: Cascade)
|
||||
patient Patient @relation(fields: [patientId], references: [id], onDelete: Cascade)
|
||||
appointment Appointment? @relation(fields: [appointmentId], references: [id], onDelete: SetNull)
|
||||
cases TreatmentCase[]
|
||||
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
@@index([patientId, treatmentAt])
|
||||
@@index([organizationId, status])
|
||||
@@map("treatments")
|
||||
}
|
||||
|
||||
model TreatmentCase {
|
||||
id String @id @default(uuid())
|
||||
treatmentId String
|
||||
clientKey String?
|
||||
sortOrder Int
|
||||
treatmentType String
|
||||
teeth Json
|
||||
comment String?
|
||||
sentAt DateTime?
|
||||
|
||||
treatment Treatment @relation(fields: [treatmentId], references: [id], onDelete: Cascade)
|
||||
attachments TreatmentCaseAttachment[]
|
||||
sends TreatmentCaseSend[]
|
||||
|
||||
@@index([treatmentId, sortOrder])
|
||||
@@map("treatment_cases")
|
||||
}
|
||||
|
||||
model TreatmentCaseAttachment {
|
||||
id String @id @default(uuid())
|
||||
caseId String?
|
||||
appointmentId String?
|
||||
caseClientKey String?
|
||||
fileName String
|
||||
mimeType String
|
||||
sizeBytes Int
|
||||
storagePath String
|
||||
|
||||
case TreatmentCase? @relation(fields: [caseId], references: [id], onDelete: Cascade)
|
||||
|
||||
createdAt DateTime @default(now())
|
||||
|
||||
@@index([appointmentId, caseClientKey])
|
||||
@@index([caseId])
|
||||
@@map("treatment_case_attachments")
|
||||
}
|
||||
|
||||
model TreatmentCaseSend {
|
||||
id String @id @default(uuid())
|
||||
caseId String
|
||||
organizationId String
|
||||
sentAt DateTime @default(now())
|
||||
|
||||
case TreatmentCase @relation(fields: [caseId], references: [id], onDelete: Cascade)
|
||||
organization Organization @relation(fields: [organizationId], references: [id], onDelete: Cascade)
|
||||
|
||||
@@unique([caseId, organizationId])
|
||||
@@map("treatment_case_sends")
|
||||
}
|
||||
|
||||
model Plan {
|
||||
id String @id @default(uuid())
|
||||
name String @unique // "Solo", "Small", "Medium", "Large", "Enterprise"
|
||||
|
||||
Reference in New Issue
Block a user