schema.prisma 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277
  1. // This is your Prisma schema file,
  2. // learn more about it in the docs: https://pris.ly/d/prisma-schema
  3. // Looking for ways to speed up your queries, or scale easily with your serverless or edge functions?
  4. // Try Prisma Accelerate: https://pris.ly/cli/accelerate-init
  5. generator client {
  6. provider = "prisma-client-js"
  7. }
  8. datasource db {
  9. provider = "postgresql"
  10. url = env("DATABASE_URL")
  11. }
  12. enum ProgressStatus {
  13. cari_data
  14. dihubungi
  15. negosiasi
  16. follow_up
  17. mou
  18. onboarded
  19. tidak_berminat
  20. }
  21. model RevokedToken {
  22. id String @id @default(uuid())
  23. token String
  24. revoked_at DateTime @default(now())
  25. @@map("revoked_tokens")
  26. }
  27. model ActivityLog {
  28. id String @id @default(uuid())
  29. user_id String
  30. username String
  31. action String
  32. createdAt DateTime @default(now())
  33. updatedAt DateTime @updatedAt
  34. deletedAt DateTime?
  35. @@map("activity_logs")
  36. }
  37. model User {
  38. id String @id @default(uuid())
  39. username String
  40. email String
  41. password String
  42. firstname String
  43. lastname String
  44. role String
  45. createdAt DateTime @default(now())
  46. updatedAt DateTime @updatedAt
  47. deletedAt DateTime?
  48. @@map("users")
  49. }
  50. model UserKeycloak {
  51. id String @id @default(uuid())
  52. fullname String
  53. Hospital Hospital[]
  54. UserArea UserArea[]
  55. Vendor Vendor[]
  56. StatusHistory StatusHistory[]
  57. CreatedVisitations ScheduleVisitation[] @relation("CreatedVisitations")
  58. SalesVisitations ScheduleVisitation[] @relation("SalesVisitations")
  59. @@map("keycloak_users")
  60. }
  61. model Province {
  62. id String @id @default(uuid())
  63. name String
  64. cities City[]
  65. hospitals Hospital[]
  66. user_areas UserArea[]
  67. createdAt DateTime @default(now())
  68. updatedAt DateTime @updatedAt
  69. deletedAt DateTime?
  70. @@map("provinces")
  71. }
  72. model City {
  73. id String @id @default(uuid())
  74. name String
  75. province_id String
  76. province Province @relation(fields: [province_id], references: [id])
  77. hospitals Hospital[]
  78. createdAt DateTime @default(now())
  79. updatedAt DateTime @updatedAt
  80. deletedAt DateTime?
  81. @@unique([name, province_id], name: "name_province_id")
  82. @@map("cities")
  83. }
  84. model Hospital {
  85. id String @id @default(uuid())
  86. name String
  87. hospital_code String?
  88. type String?
  89. ownership String?
  90. province_id String
  91. city_id String
  92. address String?
  93. // simrs_type String?
  94. contact String?
  95. image String?
  96. email String?
  97. progress_status ProgressStatus
  98. note String?
  99. created_by String
  100. latitude Float?
  101. longitude Float?
  102. gmaps_url String? @db.Text
  103. createdAt DateTime @default(now())
  104. updatedAt DateTime @updatedAt
  105. deletedAt DateTime?
  106. province Province @relation(fields: [province_id], references: [id])
  107. city City @relation(fields: [city_id], references: [id])
  108. user UserKeycloak @relation(fields: [created_by], references: [id])
  109. vendor_experiences VendorExperience[]
  110. executives_histories ExecutivesHistory[]
  111. status_histories StatusHistory[]
  112. ScheduleVisitation ScheduleVisitation[]
  113. @@map("hospitals")
  114. }
  115. model Vendor {
  116. id String @id @default(uuid())
  117. name String
  118. name_pt String?
  119. strengths String?
  120. weaknesses String?
  121. website String?
  122. created_by String
  123. createdAt DateTime @default(now())
  124. updatedAt DateTime @updatedAt
  125. deletedAt DateTime?
  126. user UserKeycloak @relation(fields: [created_by], references: [id])
  127. vendor_experiences VendorExperience[]
  128. @@map("vendors")
  129. }
  130. model UserArea {
  131. id String @id @default(uuid())
  132. user_id String
  133. province_id String
  134. province Province @relation(fields: [province_id], references: [id])
  135. user UserKeycloak @relation(fields: [user_id], references: [id])
  136. createdAt DateTime @default(now())
  137. updatedAt DateTime @updatedAt
  138. deletedAt DateTime?
  139. @@map("user_areas")
  140. }
  141. // model VendorHistory {
  142. // id String @id @default(uuid())
  143. // hospital_id String
  144. // vendor_id String?
  145. // vendor_impression String? @db.Text
  146. // status String?
  147. // contract_date DateTime?
  148. // contract_expired_date DateTime?
  149. // hospital Hospital @relation(fields: [hospital_id], references: [id])
  150. // vendor Vendor? @relation(fields: [vendor_id], references: [id])
  151. // createdAt DateTime @default(now())
  152. // updatedAt DateTime @updatedAt
  153. // deletedAt DateTime?
  154. // @@map("vendor_histories")
  155. // }
  156. model VendorExperience {
  157. id String @id @default(uuid())
  158. hospital_id String
  159. vendor_id String?
  160. status String?
  161. contract_start_date DateTime?
  162. contract_expired_date DateTime?
  163. contract_value_min BigInt?
  164. contract_value_max BigInt?
  165. positive_notes String? @db.Text
  166. negative_notes String? @db.Text
  167. simrs_type String
  168. hospital Hospital @relation(fields: [hospital_id], references: [id])
  169. vendor Vendor? @relation(fields: [vendor_id], references: [id])
  170. createdAt DateTime @default(now())
  171. updatedAt DateTime @updatedAt
  172. deletedAt DateTime?
  173. @@map("vendor_experiences")
  174. }
  175. model ExecutivesHistory {
  176. id String @id @default(uuid())
  177. hospital_id String
  178. executive_name String?
  179. contact String?
  180. status String?
  181. start_term DateTime?
  182. end_term DateTime?
  183. hospital Hospital @relation(fields: [hospital_id], references: [id])
  184. createdAt DateTime @default(now())
  185. updatedAt DateTime @updatedAt
  186. deletedAt DateTime?
  187. @@map("executives_histories")
  188. }
  189. model StatusHistory {
  190. id String @id @default(uuid())
  191. hospital_id String
  192. user_id String
  193. old_status ProgressStatus
  194. new_status ProgressStatus
  195. note String? @db.Text
  196. hospital Hospital @relation(fields: [hospital_id], references: [id])
  197. user UserKeycloak @relation(fields: [user_id], references: [id])
  198. createdAt DateTime @default(now())
  199. updatedAt DateTime @updatedAt
  200. deletedAt DateTime?
  201. @@map("status_histories")
  202. }
  203. model Category {
  204. id String @id @default(uuid())
  205. tag String
  206. description String? @db.Text
  207. CategoryLink CategoryLink[]
  208. createdAt DateTime @default(now())
  209. updatedAt DateTime @updatedAt
  210. deletedAt DateTime?
  211. @@map("categories")
  212. }
  213. model CategoryLink {
  214. id String @id @default(uuid())
  215. category_id String
  216. source_type String?
  217. source_id String?
  218. createdAt DateTime @default(now())
  219. updatedAt DateTime @updatedAt
  220. deletedAt DateTime?
  221. Category Category? @relation(fields: [category_id], references: [id])
  222. @@map("category_links")
  223. }
  224. model ScheduleVisitation {
  225. id String @id @default(uuid())
  226. date_visit DateTime
  227. sales_id String
  228. hospital_id String
  229. province_id String
  230. city_id String
  231. notes String? @db.Text
  232. created_by String
  233. createdAt DateTime @default(now())
  234. updatedAt DateTime @updatedAt
  235. deletedAt DateTime?
  236. hospital Hospital @relation(fields: [hospital_id], references: [id])
  237. user_created UserKeycloak @relation("CreatedVisitations", fields: [created_by], references: [id])
  238. sales_visit UserKeycloak @relation("SalesVisitations", fields: [sales_id], references: [id])
  239. @@map("schedule_visitations")
  240. }