275 lines
8.1 KiB
Markdown
275 lines
8.1 KiB
Markdown
# Diagram Kelas Sistem Aplikasi Laboratorium Lingkungan
|
|
|
|
Berikut adalah diagram kelas yang memvisualisasikan struktur database dan menunjukkan hubungannya dengan alur proses laboratorium lingkungan.
|
|
|
|
```mermaid
|
|
classDiagram
|
|
class Customer {
|
|
+customer_id: int
|
|
+customer_name: varchar
|
|
+customer_type: enum
|
|
+contact_person: varchar
|
|
+phone_number: varchar
|
|
+email: varchar
|
|
+address: text
|
|
+company_name: varchar
|
|
+createRequest()
|
|
+viewRequestStatus()
|
|
+downloadReports()
|
|
}
|
|
|
|
class ServiceRequest {
|
|
+request_id: int
|
|
+customer_id: int
|
|
+request_date: timestamp
|
|
+request_type: enum
|
|
+project_name: varchar
|
|
+project_location: text
|
|
+status: enum
|
|
+admin_id: int
|
|
+quotation_number: varchar
|
|
+quotation_date: date
|
|
+approved_date: date
|
|
+payment_proof: varchar
|
|
+payment_date: date
|
|
+total_amount: decimal
|
|
+notes: text
|
|
+createQuotation()
|
|
+updateStatus()
|
|
+assignToSampling()
|
|
+recordPayment()
|
|
}
|
|
|
|
class RequestParameter {
|
|
+request_parameter_id: int
|
|
+request_id: int
|
|
+parameter_id: int
|
|
+quantity: int
|
|
+price_per_unit: decimal
|
|
+calculateCost()
|
|
}
|
|
|
|
class AnalysisParameter {
|
|
+parameter_id: int
|
|
+parameter_name: varchar
|
|
+unit: varchar
|
|
+method: varchar
|
|
+sample_type_id: int
|
|
+standard_value: varchar
|
|
+price: decimal
|
|
+checkCompliance()
|
|
}
|
|
|
|
class SampleType {
|
|
+sample_type_id: int
|
|
+type_name: varchar
|
|
+description: text
|
|
+standard_method: text
|
|
}
|
|
|
|
class SamplingPlan {
|
|
+plan_id: int
|
|
+request_id: int
|
|
+planned_date: date
|
|
+location: text
|
|
+coordinates: varchar
|
|
+sampling_method: text
|
|
+equipment_needed: text
|
|
+sampling_officer_id: int
|
|
+status: enum
|
|
+notes: text
|
|
+scheduleSampling()
|
|
+assignSamplingOfficer()
|
|
+listEquipment()
|
|
}
|
|
|
|
class Sample {
|
|
+sample_id: int
|
|
+request_id: int
|
|
+plan_id: int
|
|
+sample_code: varchar
|
|
+sample_type_id: int
|
|
+sampling_date: datetime
|
|
+sampling_location: text
|
|
+sampling_officer_id: int
|
|
+received_date: datetime
|
|
+received_by: int
|
|
+sample_condition: text
|
|
+preparation_notes: text
|
|
+preservation_method: text
|
|
+status: enum
|
|
+collectSample()
|
|
+receiveSample()
|
|
+prepareSample()
|
|
+trackStatus()
|
|
}
|
|
|
|
class AnalysisResult {
|
|
+result_id: int
|
|
+sample_id: int
|
|
+parameter_id: int
|
|
+analyst_id: int
|
|
+analysis_date: datetime
|
|
+result_value: varchar
|
|
+unit: varchar
|
|
+method_used: varchar
|
|
+is_within_standard: boolean
|
|
+notes: text
|
|
+status: enum
|
|
+verified_by: int
|
|
+verification_date: datetime
|
|
+recordResult()
|
|
+verifyResult()
|
|
+compareToStandard()
|
|
}
|
|
|
|
class Report {
|
|
+report_id: int
|
|
+request_id: int
|
|
+report_number: varchar
|
|
+report_date: date
|
|
+prepared_by: int
|
|
+verified_by: int
|
|
+approved_by: int
|
|
+status: enum
|
|
+file_path: varchar
|
|
+notes: text
|
|
+generateReport()
|
|
+approveReport()
|
|
+sendToCustomer()
|
|
}
|
|
|
|
class User {
|
|
+user_id: int
|
|
+username: varchar
|
|
+password: varchar
|
|
+full_name: varchar
|
|
+email: varchar
|
|
+role: enum
|
|
+department: varchar
|
|
+is_active: boolean
|
|
+last_login: datetime
|
|
+login()
|
|
+updateProfile()
|
|
+resetPassword()
|
|
+assignTasks()
|
|
}
|
|
|
|
class ActivityLog {
|
|
+log_id: int
|
|
+user_id: int
|
|
+action: varchar
|
|
+table_name: varchar
|
|
+record_id: int
|
|
+details: text
|
|
+ip_address: varchar
|
|
+created_at: timestamp
|
|
+recordActivity()
|
|
+viewAuditTrail()
|
|
}
|
|
|
|
Customer "1" --> "*" ServiceRequest : mengajukan
|
|
ServiceRequest "1" --> "*" RequestParameter : memiliki
|
|
ServiceRequest "1" --> "*" SamplingPlan : menyertakan
|
|
ServiceRequest "1" --> "*" Sample : menghasilkan
|
|
ServiceRequest "1" --> "*" Report : melaporkan
|
|
|
|
AnalysisParameter "1" --> "*" RequestParameter : diminta dalam
|
|
AnalysisParameter "1" --> "*" AnalysisResult : diuji dalam
|
|
|
|
SampleType "1" --> "*" AnalysisParameter : mendefinisikan
|
|
SampleType "1" --> "*" Sample : mengkategorikan
|
|
|
|
SamplingPlan "1" --> "*" Sample : menghasilkan
|
|
|
|
Sample "1" --> "*" AnalysisResult : dianalisis menjadi
|
|
|
|
User "1" --> "*" ActivityLog : merekam aktivitas
|
|
|
|
%% Tambahan relasi untuk memetakan peran user
|
|
User "1" --> "*" ServiceRequest : mengelola sebagai admin
|
|
User "1" --> "*" SamplingPlan : bertugas sebagai sampling officer
|
|
User "1" --> "*" Sample : bertugas sebagai sampling officer/penerima
|
|
User "1" --> "*" AnalysisResult : bertugas sebagai analis/verifikator
|
|
User "1" --> "*" Report : menyiapkan/memverifikasi/menyetujui
|
|
```
|
|
|
|
## Penjelasan Diagram Kelas
|
|
|
|
Diagram kelas di atas tidak hanya menampilkan struktur database, tetapi juga fungsionalitas utama dari setiap entitas dalam sistem aplikasi laboratorium lingkungan.
|
|
|
|
### Entitas Utama dan Fungsinya
|
|
|
|
1. **Customer**
|
|
- Mewakili pelanggan internal dan eksternal
|
|
- Fungsi: membuat permintaan, melihat status, mengunduh laporan
|
|
|
|
2. **ServiceRequest**
|
|
- Mewakili permintaan layanan dari pelanggan
|
|
- Fungsi: membuat quotation, memperbarui status, merekam pembayaran
|
|
|
|
3. **SamplingPlan**
|
|
- Mewakili rencana pengambilan sampel
|
|
- Fungsi: menjadwalkan sampling, menugaskan petugas, mencatat peralatan
|
|
|
|
4. **Sample**
|
|
- Mewakili sampel yang diambil/diterima
|
|
- Fungsi: mencatat pengambilan, penerimaan, preparasi sampel
|
|
|
|
5. **AnalysisResult**
|
|
- Mewakili hasil analisis laboratorium
|
|
- Fungsi: merekam hasil, memverifikasi, membandingkan dengan standar
|
|
|
|
6. **Report**
|
|
- Mewakili laporan hasil uji
|
|
- Fungsi: membuat laporan, menyetujui, mengirim ke pelanggan
|
|
|
|
7. **User**
|
|
- Mewakili pengguna sistem (admin, petugas sampling, analis, dll)
|
|
- Fungsi: login, mengelola profil, menugaskan aktivitas
|
|
|
|
8. **ActivityLog**
|
|
- Mewakili catatan aktivitas sistem
|
|
- Fungsi: merekam aktivitas, menampilkan audit trail
|
|
|
|
### Alur Proses dalam Sistem
|
|
|
|
Diagram kelas ini memvisualisasikan alur proses berikut:
|
|
|
|
1. **Permintaan Layanan**
|
|
- Customer mengajukan ServiceRequest
|
|
- ServiceRequest memiliki RequestParameter yang merinci parameter yang akan dianalisis
|
|
|
|
2. **Proses Sampling (jika diperlukan)**
|
|
- ServiceRequest memicu pembuatan SamplingPlan
|
|
- SamplingPlan ditugaskan kepada User (Sampling Officer)
|
|
- SamplingPlan menghasilkan Sample
|
|
|
|
3. **Penerimaan dan Preparasi Sampel**
|
|
- Sample diterima dan dipreparasi oleh User (Lab Staff)
|
|
- Sample dikategorikan menurut SampleType
|
|
|
|
4. **Analisis Laboratorium**
|
|
- Sample menghasilkan AnalysisResult
|
|
- AnalysisResult dikaitkan dengan AnalysisParameter
|
|
- AnalysisResult dicatat dan diverifikasi oleh User (Analyst, Verifier)
|
|
|
|
5. **Pelaporan Hasil**
|
|
- ServiceRequest menghasilkan Report
|
|
- Report disiapkan, diverifikasi, dan disetujui oleh User
|
|
- Report dikirimkan kepada Customer
|
|
|
|
6. **Audit dan Pelacakan**
|
|
- Semua aktivitas User direkam dalam ActivityLog
|
|
- ActivityLog menyediakan audit trail untuk akreditasi dan kepatuhan
|
|
|
|
## Cara Menggunakan Diagram
|
|
|
|
Diagram kelas Mermaid ini dapat membantu:
|
|
|
|
1. **Pengembang Sistem**: Untuk memahami struktur database dan hubungan antar entitas
|
|
2. **Analis Bisnis**: Untuk memahami alur proses laboratorium dan bagaimana data mengalir antar komponen
|
|
3. **Pengelola Laboratorium**: Untuk memvisualisasikan bagaimana peran staf terkait dengan proses bisnis
|
|
4. **Auditor**: Untuk memahami bagaimana sistem melacak aktivitas dan memastikan kepatuhan
|
|
|
|
Seperti diagram Mermaid lainnya, diagram ini dapat dilihat menggunakan Mermaid Live Editor atau di platform yang mendukung rendering Mermaid seperti GitHub. |