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") } model pemberian_obat { id Int @id @default(autoincrement()) id_visit String @db.VarChar(25) obat String @db.VarChar(100) jumlah_obat Int aturan_pakai String? deleted_status String? @db.VarChar(25) 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) tindakan String @db.VarChar(100) kategori_tindakan String? @db.VarChar(50) kelompok_tindakan String? @db.VarChar(50) deleted_status String? @db.VarChar(25) 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) 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) jenis_kasus String? @db.VarChar(50) tindak_lanjut String? deleted_status String? @db.VarChar(25) 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") } 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") }