schema.prisma 7.2 KB

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