Perhatikan schema ini:
generator client { provider = "prisma-client-js" }
datasource db { provider = "mysql" url = env("DATABASE_URL") }
model User { id String @id @unique email String @unique username String @unique password String role String fullname String nokar String @default("") divisiId Int? waNumber String createdBy String? createdOn DateTime? modifiedBy String? modifiedOn DateTime? @default(now()) deletedBy String? deletedOn DateTime? requests Request[] comments Comment[] divisi ListDivisi? @relation(fields: [divisiId], references: [id])
@@index([divisiId], map: "User_divisiId_fkey") }
model ListDivisi { id Int @id @default(autoincrement()) divisi String? @unique parentId Int? parent ListDivisi? @relation("ParentChild", fields: [parentId], references: [id]) children ListDivisi[] @relation("ParentChild") users User[]
@@index([parentId], map: "ListDivisi_parentId_fkey") }
model MedicalEquipment { id String @id @unique inventorisId String @unique name String brandName String? modelName String? purchaseDate DateTime? purchasePrice Int? status String @default("Active") vendor String? createdBy String createdOn DateTime? modifiedBy String? modifiedOn DateTime @default(now()) deletedBy String? deletedOn DateTime? spareparts PartsHistory[] relocationHistory RelocationHistory[] maintenanceHistories MaintenanceHistory[] calibrationHistories CalibrationHistory[] }
model RelocationHistory { id String @id @unique medicalEquipmentId String initLocation String currentLocation String requestDate String shiftReason String? createdBy Int createdOn DateTime? modifiedBy Int? modifiedOn DateTime @default(now()) medicalEquipment MedicalEquipment @relation(fields: [medicalEquipmentId], references: [id])
@@index([medicalEquipmentId], map: "RelocationHistory_medicalEquipmentId_fkey") }
model Spareparts { id String @id @unique partsName String purchaseDate DateTime? price Int? toolLocation String? toolDate String? createdBy String createdOn DateTime? modifiedBy String? modifiedOn DateTime @default(now()) deletedBy String? deletedOn DateTime? equipment PartsHistory[] }
model PartsHistory {
id String @id @unique
medicalEquipmentId String
sparepartId String
actionPerformed String @db.Text
technician String
result String // Success, Partial, Failed
replacementDate DateTime
createdBy String
createdOn DateTime @default(now())
equipment MedicalEquipment @relation(fields: [medicalEquipmentId], references: [id])
sparepart Spareparts @relation(fields: [sparepartId], references: [id])
@@index([medicalEquipmentId]) @@index([sparepartId]) }
enum RequestType{ MAINTENANCE CALIBRATION }
model Request { id String @id @unique userId String medicalEquipment String complaint String? status String @default("Pending") createdBy String createdOn DateTime? @default(now()) modifiedBy String? modifiedOn DateTime @default(now()) notifications Notifikasi[] comments Comment[] user User @relation(fields: [userId], references: [id]) requestType RequestType @default(MAINTENANCE) @@index([userId], map: "Request_userId_fkey") }
model MaintenanceHistory {
id String @id @unique
medicalEquipmentId String
actionPerformed String @db.Text
technician String
result String // Success, Partial, Failed
maintenanceDate DateTime
createdBy String
createdOn DateTime @default(now())
medicalEquipment MedicalEquipment @relation(fields: [medicalEquipmentId], references: [id])
@@index([medicalEquipmentId]) }
model CalibrationHistory {
id String @id @unique
medicalEquipmentId String
actionPerformed String @db.Text
technician String
result String // Success, Partial, Failed
calibrationDate DateTime
calibrationMethod String
nextCalibrationDue DateTime?
createdBy String
createdOn DateTime @default(now())
medicalEquipment MedicalEquipment @relation(fields: [medicalEquipmentId], references: [id])
@@index([medicalEquipmentId]) }
model Notifikasi { id String @id userId String? requestId String? message String isRead Boolean @default(false) createdOn DateTime @default(now()) request Request? @relation(fields: [requestId], references: [id])
@@index([requestId], map: "Notifikasi_requestId_fkey") }
model Comment { id String @id @default(uuid()) text String @db.Text userId String requestId String? createdAt DateTime @default(now()) modifiedAt DateTime @updatedAt user User @relation(fields: [userId], references: [id]) request Request? @relation(fields: [requestId], references: [id]) @@index([userId], map: "Komentar_userId_fkey") @@index([requestId], map: "Komentar_requestId_fkey") }
BIsakah tolong buatkan ini suatu page laporan yang punya fitur nanti tinggal fetch dari tabel-tabel gitu dengan kkriteria ini
Saya akan membuat halaman laporan komprehensif yang menampilkan data dari berbagai tabel dalam database Anda. Dashboard ini akan mencakup riwayat permintaan kalibrasi dan maintenance, rencana maintenance dan kalibrasi, laporan parts, serta rekap tanggapan/komentar.
Saya telah membuat halaman laporan peralatan medis yang komprehensif sesuai dengan permintaan Anda. Dashboard ini mencakup:
Dashboard Grafik - Menampilkan visualisasi data dalam bentuk:
Tab Riwayat Maintenance & Kalibrasi
Tab Rencana Maintenance & Kalibrasi
Tab Laporan Parts
Tab Rekap Tanggapan
Untuk implementasi sebenarnya, Anda perlu mengganti data dummy dengan query Prisma yang sesuai. Saya telah menyediakan file lib/api.ts dengan contoh implementasi fungsi yang dapat Anda gunakan untuk mengakses database menggunakan Prisma Client 12.
Sources
Kalau pengen buat rumah sakit, yang ingin tahu dan mengontrol jadwal maintenance dan kalibrasi, pergantian parts, request dengan tanggapan dan komen, grafik apa yang cocok? Lalu apa saja data penting yang harus di show
Untuk rumah sakit yang ingin mengontrol jadwal maintenance, kalibrasi, pergantian parts, dan request, berikut adalah grafik yang cocok dan data penting yang perlu ditampilkan:
KPI (Key Performance Indicators):
Dengan kombinasi grafik dan data di atas, rumah sakit dapat memiliki sistem manajemen peralatan medis yang komprehensif, memungkinkan pengambilan keputusan berbasis data untuk perencanaan maintenance, alokasi sumber daya, dan penganggaran.