schema.prisma 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. generator client {
  2. provider = "prisma-client-js"
  3. }
  4. datasource db {
  5. provider = "postgresql"
  6. url = env("DATABASE_URL")
  7. }
  8. model User {
  9. id String @id @default(cuid())
  10. name String
  11. lastname String
  12. username String @unique
  13. email String? @unique
  14. password String?
  15. identificacion String? @unique
  16. isExternalAuth Boolean @default(false)
  17. role Role @default(PATIENT)
  18. profileImage String?
  19. phone String?
  20. dateOfBirth DateTime?
  21. gender Gender?
  22. address String?
  23. emergencyContact String?
  24. medicalHistory String?
  25. allergies String?
  26. currentMedications String?
  27. createdAt DateTime @default(now())
  28. updatedAt DateTime @updatedAt
  29. // Relaciones
  30. records Record[]
  31. assignedPatients PatientAssignment[] @relation("DoctorPatients")
  32. assignedDoctor PatientAssignment[] @relation("PatientDoctor")
  33. }
  34. model PatientAssignment {
  35. id String @id @default(cuid())
  36. doctorId String
  37. patientId String
  38. assignedAt DateTime @default(now())
  39. notes String?
  40. isActive Boolean @default(true)
  41. doctor User @relation("DoctorPatients", fields: [doctorId], references: [id], onDelete: Cascade)
  42. patient User @relation("PatientDoctor", fields: [patientId], references: [id], onDelete: Cascade)
  43. @@unique([doctorId, patientId])
  44. }
  45. model Record {
  46. id String @id @default(cuid())
  47. userId String
  48. content String
  49. messages Json?
  50. createdAt DateTime @default(now())
  51. user User @relation(fields: [userId], references: [id], onDelete: Cascade)
  52. }
  53. enum Role {
  54. ADMIN
  55. DOCTOR
  56. PATIENT
  57. }
  58. enum Gender {
  59. MALE
  60. FEMALE
  61. OTHER
  62. PREFER_NOT_TO_SAY
  63. }