# 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.