hospital-log/backend/api/prisma/schema.prisma

142 lines
5.0 KiB
Plaintext
Raw Normal View History

2025-10-21 10:42:59 +00:00
generator client {
provider = "prisma-client-js"
output = "../dist/generated/prisma"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model blockchain_log_queue {
id BigInt @id @default(autoincrement())
status String @default("PENDING") @db.VarChar(20)
event String @db.VarChar(50)
user_id BigInt
created_at DateTime? @default(now()) @db.Timestamptz(6)
payload Json
processed_at DateTime? @db.Timestamptz(6)
transactionid String? @db.VarChar(64)
users users @relation(fields: [user_id], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "fk_log_user")
2025-10-21 10:42:59 +00:00
}
model pemberian_obat {
id Int @id @default(autoincrement())
id_visit String @db.VarChar(25)
2025-10-21 10:42:59 +00:00
obat String @db.VarChar(100)
jumlah_obat Int
aturan_pakai String?
deleted_status String? @db.VarChar(25)
2025-10-21 10:42:59 +00:00
rekam_medis rekam_medis @relation(fields: [id_visit], references: [id_visit], onDelete: Cascade, onUpdate: NoAction, map: "fk_pemberian_obat_visit")
}
model pemberian_tindakan {
id Int @id @default(autoincrement())
id_visit String @db.VarChar(25)
2025-10-21 10:42:59 +00:00
tindakan String @db.VarChar(100)
kategori_tindakan String? @db.VarChar(50)
kelompok_tindakan String? @db.VarChar(50)
deleted_status String? @db.VarChar(25)
2025-10-21 10:42:59 +00:00
rekam_medis rekam_medis @relation(fields: [id_visit], references: [id_visit], onDelete: Cascade, onUpdate: NoAction, map: "fk_tindakan_visit")
}
model rekam_medis {
id_visit String @id @db.VarChar(25)
2025-10-21 10:42:59 +00:00
waktu_visit DateTime @db.Timestamp(6)
no_rm String @db.VarChar(20)
nama_pasien String @db.VarChar(100)
umur Int?
jenis_kelamin String? @db.VarChar(10)
gol_darah String? @db.VarChar(3)
pekerjaan String? @db.VarChar(100)
suku String? @db.VarChar(100)
kode_diagnosa String? @db.VarChar(20)
diagnosa String?
anamnese String?
sistolik Int?
diastolik Int?
nadi Int?
suhu Decimal? @db.Decimal(4, 1)
nafas Int?
tinggi_badan Decimal? @db.Decimal(10, 5)
berat_badan Decimal? @db.Decimal(10, 5)
2025-10-21 10:42:59 +00:00
jenis_kasus String? @db.VarChar(50)
tindak_lanjut String?
deleted_status String? @db.VarChar(25)
2025-10-21 10:42:59 +00:00
pemberian_obat pemberian_obat[]
pemberian_tindakan pemberian_tindakan[]
}
/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.
model users {
id BigInt @id @default(autoincrement())
nama_lengkap String @db.VarChar(255)
username String @unique @db.VarChar(255)
password_hash String @db.VarChar(255)
role String? @default("user") @db.VarChar(50)
created_at DateTime? @default(now()) @db.Timestamptz(6)
updated_at DateTime? @default(now()) @db.Timestamptz(6)
blockchain_log_queue blockchain_log_queue[]
validation_queue_requested validation_queue[] @relation("ValidationRequester")
validation_queue_processed validation_queue[] @relation("ValidationProcessor")
2025-10-21 10:42:59 +00:00
}
enum AuditEvent {
tindakan_dokter_created
obat_created
rekam_medis_created
tindakan_dokter_updated
obat_updated
rekam_medis_updated
tindakan_dokter_deleted
obat_deleted
rekam_medis_deleted
}
enum resultStatus {
tampered
non_tampered
}
model audit {
id String @id @db.VarChar(50)
event AuditEvent
payload String
timestamp DateTime @default(now()) @db.Timestamptz(6)
user_id BigInt
last_sync DateTime @default(now()) @db.Timestamptz(6)
result resultStatus
}
enum TableName {
pemberian_obat
pemberian_tindakan
rekam_medis
}
enum ValidationStatus {
PENDING
APPROVED
REJECTED
}
enum ValidationAction {
CREATE
UPDATE
DELETE
}
model validation_queue {
id BigInt @id @default(autoincrement())
table_name TableName
record_id String @db.VarChar(50) @default("")
action ValidationAction
dataPayload Json
user_id_request BigInt
user_id_process BigInt?
status ValidationStatus @default(PENDING)
created_at DateTime @default(now()) @db.Timestamptz(6)
processed_at DateTime? @db.Timestamptz(6)
users users @relation("ValidationRequester", fields: [user_id_request], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "fk_validation_user")
users_process users? @relation("ValidationProcessor", fields: [user_id_process], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "fk_validation_user_process")
}