generator client { provider = "prisma-client-js" } datasource db { provider = "sqlite" url = env("DATABASE_URL") } model User { id String @id @default(cuid()) email String @unique phone String @unique name String role String @default("PATIENT") password String? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt payments Payment[] } model Patient { phone String @id name String birthdate DateTime status String @default("active") email String? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt appointments Appointment[] clinicalNotes ClinicalNote[] files PatientFile[] } model Appointment { id Int @id @default(autoincrement()) patientPhone String date DateTime status String @default("pending") isCrisis Boolean @default(false) eventId String? paymentProofUrl String? payment Payment? paymentId Int? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt patient Patient @relation(fields: [patientPhone], references: [phone], onDelete: Cascade) @@index([patientPhone]) @@index([date]) } model ClinicalNote { id Int @id @default(autoincrement()) patientId String content String tags String? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt patient Patient @relation(fields: [patientId], references: [phone], onDelete: Cascade) @@index([patientId]) } model VoiceNote { id Int @id @default(autoincrement()) filename String duration Int sentAt DateTime @default(now()) expiresAt DateTime createdAt DateTime @default(now()) @@index([expiresAt]) } model Payment { id Int @id @default(autoincrement()) appointmentId Int @unique userId String? amount Float status String @default("PENDING") proofUrl String? approvedBy String? approvedAt DateTime? rejectedReason String? rejectedAt DateTime? extractedDate DateTime? extractedAmount Float? extractedReference String? extractedSenderName String? extractedSenderBank String? confidence Float? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt appointment Appointment @relation(fields: [appointmentId], references: [id], onDelete: Cascade) user User? @relation(fields: [userId], references: [id]) } model PatientFile { id Int @id @default(autoincrement()) patientId String type String filename String url String expiresAt DateTime createdAt DateTime @default(now()) patient Patient @relation(fields: [patientId], references: [phone], onDelete: Cascade) @@index([patientId]) @@index([expiresAt]) }