schema.prisma 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  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. phone String?
  54. role String?
  55. Hospital Hospital[]
  56. UserArea UserArea[]
  57. Vendor Vendor[]
  58. StatusHistory StatusHistory[]
  59. CreatedVisitations ScheduleVisitation[] @relation("CreatedVisitations")
  60. SalesVisitations ScheduleVisitation[] @relation("SalesVisitations")
  61. @@map("keycloak_users")
  62. }
  63. model Province {
  64. id String @id @default(uuid())
  65. name String
  66. cities City[]
  67. hospitals Hospital[]
  68. user_areas UserArea[]
  69. createdAt DateTime @default(now())
  70. updatedAt DateTime @updatedAt
  71. deletedAt DateTime?
  72. @@map("provinces")
  73. }
  74. model City {
  75. id String @id @default(uuid())
  76. name String
  77. province_id String
  78. province Province @relation(fields: [province_id], references: [id])
  79. hospitals Hospital[]
  80. createdAt DateTime @default(now())
  81. updatedAt DateTime @updatedAt
  82. deletedAt DateTime?
  83. @@unique([name, province_id], name: "name_province_id")
  84. @@map("cities")
  85. }
  86. model Hospital {
  87. id String @id @default(uuid())
  88. name String
  89. hospital_code String?
  90. type String?
  91. ownership String?
  92. province_id String
  93. city_id String
  94. address String?
  95. // simrs_type String?
  96. contact String?
  97. image String?
  98. email String?
  99. progress_status ProgressStatus
  100. note String?
  101. created_by String
  102. latitude Float?
  103. longitude Float?
  104. gmaps_url String? @db.Text
  105. createdAt DateTime @default(now())
  106. updatedAt DateTime @updatedAt
  107. deletedAt DateTime?
  108. province Province @relation(fields: [province_id], references: [id])
  109. city City @relation(fields: [city_id], references: [id])
  110. user UserKeycloak @relation(fields: [created_by], references: [id])
  111. vendor_experiences VendorExperience[]
  112. executives_histories ExecutivesHistory[]
  113. status_histories StatusHistory[]
  114. ScheduleVisitation ScheduleVisitation[]
  115. @@map("hospitals")
  116. }
  117. model Vendor {
  118. id String @id @default(uuid())
  119. name String
  120. name_pt String?
  121. strengths String?
  122. weaknesses String?
  123. website String?
  124. created_by String
  125. createdAt DateTime @default(now())
  126. updatedAt DateTime @updatedAt
  127. deletedAt DateTime?
  128. user UserKeycloak @relation(fields: [created_by], references: [id])
  129. vendor_experiences VendorExperience[]
  130. @@map("vendors")
  131. }
  132. model UserArea {
  133. id String @id @default(uuid())
  134. user_id String
  135. province_id String
  136. province Province @relation(fields: [province_id], references: [id])
  137. user UserKeycloak @relation(fields: [user_id], references: [id])
  138. createdAt DateTime @default(now())
  139. updatedAt DateTime @updatedAt
  140. deletedAt DateTime?
  141. @@map("user_areas")
  142. }
  143. // model VendorHistory {
  144. // id String @id @default(uuid())
  145. // hospital_id String
  146. // vendor_id String?
  147. // vendor_impression String? @db.Text
  148. // status String?
  149. // contract_date DateTime?
  150. // contract_expired_date DateTime?
  151. // hospital Hospital @relation(fields: [hospital_id], references: [id])
  152. // vendor Vendor? @relation(fields: [vendor_id], references: [id])
  153. // createdAt DateTime @default(now())
  154. // updatedAt DateTime @updatedAt
  155. // deletedAt DateTime?
  156. // @@map("vendor_histories")
  157. // }
  158. model VendorExperience {
  159. id String @id @default(uuid())
  160. hospital_id String
  161. vendor_id String?
  162. status String?
  163. contract_start_date DateTime?
  164. contract_expired_date DateTime?
  165. contract_value_min BigInt?
  166. contract_value_max BigInt?
  167. positive_notes String? @db.Text
  168. negative_notes String? @db.Text
  169. simrs_type String
  170. hospital Hospital @relation(fields: [hospital_id], references: [id])
  171. vendor Vendor? @relation(fields: [vendor_id], references: [id])
  172. createdAt DateTime @default(now())
  173. updatedAt DateTime @updatedAt
  174. deletedAt DateTime?
  175. @@map("vendor_experiences")
  176. }
  177. model ExecutivesHistory {
  178. id String @id @default(uuid())
  179. hospital_id String
  180. executive_name String?
  181. contact String?
  182. status String?
  183. start_term DateTime?
  184. end_term DateTime?
  185. hospital Hospital @relation(fields: [hospital_id], references: [id])
  186. createdAt DateTime @default(now())
  187. updatedAt DateTime @updatedAt
  188. deletedAt DateTime?
  189. @@map("executives_histories")
  190. }
  191. model StatusHistory {
  192. id String @id @default(uuid())
  193. hospital_id String
  194. user_id String
  195. old_status ProgressStatus
  196. new_status ProgressStatus
  197. note String? @db.Text
  198. hospital Hospital @relation(fields: [hospital_id], references: [id])
  199. user UserKeycloak @relation(fields: [user_id], references: [id])
  200. createdAt DateTime @default(now())
  201. updatedAt DateTime @updatedAt
  202. deletedAt DateTime?
  203. @@map("status_histories")
  204. }
  205. model Category {
  206. id String @id @default(uuid())
  207. tag String
  208. description String? @db.Text
  209. CategoryLink CategoryLink[]
  210. createdAt DateTime @default(now())
  211. updatedAt DateTime @updatedAt
  212. deletedAt DateTime?
  213. @@map("categories")
  214. }
  215. model CategoryLink {
  216. id String @id @default(uuid())
  217. category_id String
  218. source_type String?
  219. source_id String?
  220. createdAt DateTime @default(now())
  221. updatedAt DateTime @updatedAt
  222. deletedAt DateTime?
  223. Category Category? @relation(fields: [category_id], references: [id])
  224. @@map("category_links")
  225. }
  226. model ScheduleVisitation {
  227. id String @id @default(uuid())
  228. date_visit DateTime
  229. sales_id String
  230. hospital_id String
  231. province_id String
  232. city_id String
  233. notes String? @db.Text
  234. created_by String
  235. createdAt DateTime @default(now())
  236. updatedAt DateTime @updatedAt
  237. deletedAt DateTime?
  238. hospital Hospital @relation(fields: [hospital_id], references: [id])
  239. user_created UserKeycloak @relation("CreatedVisitations", fields: [created_by], references: [id])
  240. sales_visit UserKeycloak @relation("SalesVisitations", fields: [sales_id], references: [id])
  241. @@map("schedule_visitations")
  242. }