all prosees

This commit is contained in:
sas.fajri
2025-04-25 10:46:52 +07:00
parent 28df92564e
commit 6e991dd481

View File

@@ -200,6 +200,326 @@ Menyimpan log aktivitas pada sistem.
| ip_address | VARCHAR(45) | Alamat IP |
| created_at | TIMESTAMP | Tanggal dan waktu log |
### 5. master_parameters
Tabel ini menyimpan informasi tentang parameter-parameter yang dapat diuji oleh laboratorium.
| Kolom | Tipe Data | Deskripsi |
|-------|-----------|-----------|
| MasterParameterID | INT | Primary key, ID unik parameter |
| MasterParameterCode | VARCHAR(20) | Kode unik parameter (mis: BOD5, COD) |
| MasterParameterName | VARCHAR(100) | Nama lengkap parameter |
| MasterParameterGroup | VARCHAR(50) | Kelompok parameter (Fisika/Kimia/Biologi) |
| MasterParameterStandardMethod | VARCHAR(100) | Metode standar pengujian |
| MasterParameterUnit | VARCHAR(20) | Satuan pengukuran |
| MasterParameterPrice | DECIMAL(12,2) | Harga analisis parameter |
| MasterParameterInstrumentation | VARCHAR(100) | Instrumen yang digunakan |
| MasterParameterMDL | DECIMAL(12,6) | Method Detection Limit |
| MasterParameterContainerType | VARCHAR(50) | Jenis wadah sampel yang sesuai |
| MasterParameterPreservation | VARCHAR(200) | Metode preservasi sampel |
| MasterParameterHoldingTime | VARCHAR(50) | Waktu simpan maksimum |
| MasterParameterIsActive | BOOLEAN | Status aktif parameter |
| MasterParameterCreatedAt | DATETIME | Waktu pembuatan record |
| MasterParameterCreatedUserID | INT | ID user yang membuat |
| MasterParameterUpdatedAt | DATETIME | Waktu terakhir update |
| MasterParameterUpdatedUserID | INT | ID user yang update |
| MasterParameterDeletedAt | DATETIME | Waktu penghapusan |
| MasterParameterDeletedUserID | INT | ID user yang menghapus |
### 6. master_equipment
Tabel ini menyimpan data peralatan laboratorium dan sampling.
| Kolom | Tipe Data | Deskripsi |
|-------|-----------|-----------|
| MasterEquipmentID | INT | Primary key, ID unik peralatan |
| MasterEquipmentCode | VARCHAR(20) | Kode unik peralatan |
| MasterEquipmentName | VARCHAR(100) | Nama peralatan |
| MasterEquipmentType | VARCHAR(50) | Tipe peralatan (Sampling/Lab/Field) |
| MasterEquipmentSpecifications | TEXT | Spesifikasi teknis peralatan |
| MasterEquipmentBrand | VARCHAR(100) | Merk peralatan |
| MasterEquipmentModel | VARCHAR(100) | Model peralatan |
| MasterEquipmentSerialNumber | VARCHAR(100) | Nomor seri peralatan |
| MasterEquipmentPurchaseDate | DATE | Tanggal pembelian |
| MasterEquipmentCalibrationInterval | INT | Interval kalibrasi (hari) |
| MasterEquipmentLastCalibrationDate | DATE | Tanggal kalibrasi terakhir |
| MasterEquipmentNextCalibrationDate | DATE | Tanggal kalibrasi berikutnya |
| MasterEquipmentStatus | VARCHAR(20) | Status peralatan (Available/In Use/Maintenance) |
| MasterEquipmentLocation | VARCHAR(100) | Lokasi penyimpanan |
| MasterEquipmentIsActive | BOOLEAN | Status aktif peralatan |
| MasterEquipmentCreatedAt | DATETIME | Waktu pembuatan record |
| MasterEquipmentCreatedUserID | INT | ID user yang membuat |
| MasterEquipmentUpdatedAt | DATETIME | Waktu terakhir update |
| MasterEquipmentUpdatedUserID | INT | ID user yang update |
| MasterEquipmentDeletedAt | DATETIME | Waktu penghapusan |
| MasterEquipmentDeletedUserID | INT | ID user yang menghapus |
### 7. master_personnel
Tabel ini menyimpan data personel laboratorium.
| Kolom | Tipe Data | Deskripsi |
|-------|-----------|-----------|
| MasterPersonnelID | INT | Primary key, ID unik personel |
| MasterPersonnelCode | VARCHAR(20) | Kode unik personel |
| MasterPersonnelName | VARCHAR(100) | Nama lengkap personel |
| MasterPersonnelPosition | VARCHAR(50) | Jabatan |
| MasterPersonnelDepartment | VARCHAR(50) | Departemen |
| MasterPersonnelSpecialization | VARCHAR(100) | Bidang keahlian |
| MasterPersonnelCertifications | TEXT | Sertifikasi yang dimiliki |
| MasterPersonnelContactNumber | VARCHAR(20) | Nomor kontak |
| MasterPersonnelEmail | VARCHAR(100) | Alamat email |
| MasterPersonnelJoinDate | DATE | Tanggal bergabung |
| MasterPersonnelQualification | TEXT | Kualifikasi/pendidikan |
| MasterPersonnelStatus | VARCHAR(20) | Status personel (Active/Inactive) |
| MasterPersonnelIsActive | BOOLEAN | Status aktif record |
| MasterPersonnelCreatedAt | DATETIME | Waktu pembuatan record |
| MasterPersonnelCreatedUserID | INT | ID user yang membuat |
| MasterPersonnelUpdatedAt | DATETIME | Waktu terakhir update |
| MasterPersonnelUpdatedUserID | INT | ID user yang update |
| MasterPersonnelDeletedAt | DATETIME | Waktu penghapusan |
| MasterPersonnelDeletedUserID | INT | ID user yang menghapus |
### 8. master_clients
Tabel ini menyimpan data klien/pelanggan laboratorium.
| Kolom | Tipe Data | Deskripsi |
|-------|-----------|-----------|
| MasterClientID | INT | Primary key, ID unik klien |
| MasterClientCode | VARCHAR(20) | Kode unik klien |
| MasterClientName | VARCHAR(200) | Nama klien/perusahaan |
| MasterClientType | VARCHAR(50) | Tipe klien (Industry/Government/Private) |
| MasterClientIndustrySector | VARCHAR(100) | Sektor industri |
| MasterClientAddress | TEXT | Alamat lengkap |
| MasterClientCity | VARCHAR(100) | Kota |
| MasterClientProvince | VARCHAR(100) | Provinsi |
| MasterClientPostalCode | VARCHAR(20) | Kode pos |
| MasterClientContactPerson | VARCHAR(100) | Nama kontak person |
| MasterClientContactPosition | VARCHAR(100) | Jabatan kontak person |
| MasterClientContactPhone | VARCHAR(20) | Nomor telepon kontak |
| MasterClientContactEmail | VARCHAR(100) | Email kontak |
| MasterClientTaxID | VARCHAR(50) | NPWP |
| MasterClientPaymentTerms | VARCHAR(50) | Ketentuan pembayaran |
| MasterClientDiscountRate | DECIMAL(5,2) | Persentase diskon |
| MasterClientCreditLimit | DECIMAL(15,2) | Limit kredit |
| MasterClientStatus | VARCHAR(20) | Status klien |
| MasterClientIsActive | BOOLEAN | Status aktif record |
| MasterClientCreatedAt | DATETIME | Waktu pembuatan record |
| MasterClientCreatedUserID | INT | ID user yang membuat |
| MasterClientUpdatedAt | DATETIME | Waktu terakhir update |
| MasterClientUpdatedUserID | INT | ID user yang update |
| MasterClientDeletedAt | DATETIME | Waktu penghapusan |
| MasterClientDeletedUserID | INT | ID user yang menghapus |
### 9. quality_control_samples
Tabel ini menyimpan data sampel quality control.
| Kolom | Tipe Data | Deskripsi |
|-------|-----------|-----------|
| QualityControlSampleID | INT | Primary key, ID unik sampel QC |
| QualityControlSampleCode | VARCHAR(20) | Kode unik sampel QC |
| QualityControlSampleType | ENUM | Tipe QC (Blank/Duplicate/Spike/CRM) |
| MasterParameterID | INT | Foreign key ke master_parameters |
| QualityControlSampleBatch | VARCHAR(50) | Nomor batch analisis |
| QualityControlSampleValue | DECIMAL(10,4) | Nilai hasil QC |
| QualityControlSampleExpectedValue | DECIMAL(10,4) | Nilai yang diharapkan |
| QualityControlSampleDeviation | DECIMAL(10,4) | Deviasi dari nilai harapan |
| QualityControlSampleIsAcceptable | BOOLEAN | Status penerimaan hasil QC |
| QualityControlSampleNotes | TEXT | Catatan QC |
| QualityControlSampleCreatedAt | DATETIME | Waktu pembuatan record |
| QualityControlSampleCreatedUserID | INT | ID user yang membuat |
| QualityControlSampleUpdatedAt | DATETIME | Waktu terakhir update |
| QualityControlSampleUpdatedUserID | INT | ID user yang update |
| QualityControlSampleDeletedAt | DATETIME | Waktu penghapusan |
| QualityControlSampleDeletedUserID | INT | ID user yang menghapus |
### 10. method_validations
Tabel ini menyimpan data validasi metode analisis.
| Kolom | Tipe Data | Deskripsi |
|-------|-----------|-----------|
| MethodValidationID | INT | Primary key, ID unik validasi |
| MasterParameterID | INT | Foreign key ke master_parameters |
| MethodValidationCode | VARCHAR(20) | Kode validasi metode |
| MethodValidationDate | DATE | Tanggal validasi |
| MethodValidationLOD | DECIMAL(10,6) | Limit of Detection |
| MethodValidationLOQ | DECIMAL(10,6) | Limit of Quantification |
| MethodValidationPrecision | DECIMAL(5,2) | Nilai presisi (%) |
| MethodValidationAccuracy | DECIMAL(5,2) | Nilai akurasi (%) |
| MethodValidationUncertainty | DECIMAL(5,2) | Ketidakpastian pengukuran |
| MethodValidationLinearityR2 | DECIMAL(5,4) | Nilai R² linearitas |
| MethodValidationStatus | ENUM | Status (Valid/Invalid/In Review) |
| MethodValidationNotes | TEXT | Catatan validasi |
| MethodValidationCreatedAt | DATETIME | Waktu pembuatan record |
| MethodValidationCreatedUserID | INT | ID user yang membuat |
| MethodValidationUpdatedAt | DATETIME | Waktu terakhir update |
| MethodValidationUpdatedUserID | INT | ID user yang update |
| MethodValidationDeletedAt | DATETIME | Waktu penghapusan |
| MethodValidationDeletedUserID | INT | ID user yang menghapus |
### 11. equipment_calibrations
Tabel ini mencatat kalibrasi peralatan laboratorium.
| Kolom | Tipe Data | Deskripsi |
|-------|-----------|-----------|
| EquipmentCalibrationID | INT | Primary key, ID unik kalibrasi |
| MasterEquipmentID | INT | Foreign key ke master_equipment |
| EquipmentCalibrationDate | DATE | Tanggal kalibrasi |
| EquipmentCalibrationDueDate | DATE | Tanggal kalibrasi berikutnya |
| EquipmentCalibrationProvider | VARCHAR(100) | Penyedia layanan kalibrasi |
| EquipmentCalibrationCertificateNo | VARCHAR(50) | Nomor sertifikat kalibrasi |
| EquipmentCalibrationResult | TEXT | Hasil kalibrasi |
| EquipmentCalibrationStatus | ENUM | Status (Pass/Fail/Limited Use) |
| EquipmentCalibrationNotes | TEXT | Catatan kalibrasi |
| EquipmentCalibrationCreatedAt | DATETIME | Waktu pembuatan record |
| EquipmentCalibrationCreatedUserID | INT | ID user yang membuat |
| EquipmentCalibrationUpdatedAt | DATETIME | Waktu terakhir update |
| EquipmentCalibrationUpdatedUserID | INT | ID user yang update |
| EquipmentCalibrationDeletedAt | DATETIME | Waktu penghapusan |
| EquipmentCalibrationDeletedUserID | INT | ID user yang menghapus |
### 12. document_controls
Tabel ini mengelola dokumen sistem mutu laboratorium.
| Kolom | Tipe Data | Deskripsi |
|-------|-----------|-----------|
| DocumentControlID | INT | Primary key, ID unik dokumen |
| DocumentCode | VARCHAR(50) | Kode dokumen |
| DocumentTitle | VARCHAR(200) | Judul dokumen |
| DocumentType | ENUM | Tipe (SOP/Work Instruction/Form/Manual) |
| DocumentVersion | VARCHAR(10) | Versi dokumen |
| DocumentEffectiveDate | DATE | Tanggal berlaku |
| DocumentReviewDate | DATE | Tanggal review berikutnya |
| DocumentStatus | ENUM | Status (Draft/Released/Obsolete) |
| DocumentFilePath | VARCHAR(255) | Path file dokumen |
| DocumentDepartment | VARCHAR(100) | Departemen terkait |
| DocumentPreparedByID | INT | ID pembuat dokumen |
| DocumentReviewedByID | INT | ID reviewer |
| DocumentApprovedByID | INT | ID yang menyetujui |
| DocumentIsActive | BOOLEAN | Status aktif dokumen |
| DocumentCreatedAt | DATETIME | Waktu pembuatan record |
| DocumentCreatedUserID | INT | ID user yang membuat |
| DocumentUpdatedAt | DATETIME | Waktu terakhir update |
| DocumentUpdatedUserID | INT | ID user yang update |
| DocumentDeletedAt | DATETIME | Waktu penghapusan |
| DocumentDeletedUserID | INT | ID user yang menghapus |
### 13. proficiency_tests
Tabel ini mencatat partisipasi dalam uji profisiensi.
| Kolom | Tipe Data | Deskripsi |
|-------|-----------|-----------|
| ProficiencyTestID | INT | Primary key, ID unik PT |
| ProficiencyTestCode | VARCHAR(50) | Kode uji profisiensi |
| ProficiencyTestProvider | VARCHAR(100) | Penyelenggara PT |
| ProficiencyTestMatrix | VARCHAR(50) | Matriks sampel PT |
| ProficiencyTestParameter | VARCHAR(100) | Parameter yang diuji |
| ProficiencyTestSchedule | DATE | Jadwal pelaksanaan |
| ProficiencyTestReportDue | DATE | Batas waktu laporan |
| ProficiencyTestResult | DECIMAL(10,4) | Hasil pengujian lab |
| ProficiencyTestAssignedValue | DECIMAL(10,4) | Nilai yang ditugaskan |
| ProficiencyTestZScore | DECIMAL(5,2) | Nilai Z-Score |
| ProficiencyTestStatus | ENUM | Status (Registered/Completed/Evaluated) |
| ProficiencyTestConclusion | VARCHAR(50) | Kesimpulan (Satisfactory/Questionable/Unsatisfactory) |
| ProficiencyTestNotes | TEXT | Catatan PT |
| ProficiencyTestCreatedAt | DATETIME | Waktu pembuatan record |
| ProficiencyTestCreatedUserID | INT | ID user yang membuat |
| ProficiencyTestUpdatedAt | DATETIME | Waktu terakhir update |
| ProficiencyTestUpdatedUserID | INT | ID user yang update |
| ProficiencyTestDeletedAt | DATETIME | Waktu penghapusan |
| ProficiencyTestDeletedUserID | INT | ID user yang menghapus |
### 14. internal_audits
Tabel ini mencatat pelaksanaan audit internal.
| Kolom | Tipe Data | Deskripsi |
|-------|-----------|-----------|
| InternalAuditID | INT | Primary key, ID unik audit |
| InternalAuditCode | VARCHAR(50) | Kode audit |
| InternalAuditDate | DATE | Tanggal pelaksanaan |
| InternalAuditScope | TEXT | Ruang lingkup audit |
| InternalAuditAuditorID | INT | ID auditor |
| InternalAuditAuditeeID | INT | ID auditee |
| InternalAuditFindings | TEXT | Temuan audit |
| InternalAuditRecommendations | TEXT | Rekomendasi |
| InternalAuditStatus | ENUM | Status (Planned/In Progress/Completed) |
| InternalAuditFollowUpDate | DATE | Tanggal tindak lanjut |
| InternalAuditClosureDate | DATE | Tanggal penutupan |
| InternalAuditNotes | TEXT | Catatan audit |
| InternalAuditCreatedAt | DATETIME | Waktu pembuatan record |
| InternalAuditCreatedUserID | INT | ID user yang membuat |
| InternalAuditUpdatedAt | DATETIME | Waktu terakhir update |
| InternalAuditUpdatedUserID | INT | ID user yang update |
| InternalAuditDeletedAt | DATETIME | Waktu penghapusan |
| InternalAuditDeletedUserID | INT | ID user yang menghapus |
### 15. inventory_items
Tabel ini mengelola stok bahan kimia dan supplies laboratorium.
| Kolom | Tipe Data | Deskripsi |
|-------|-----------|-----------|
| InventoryItemID | INT | Primary key, ID unik item |
| InventoryItemCode | VARCHAR(50) | Kode item |
| InventoryItemName | VARCHAR(200) | Nama item |
| InventoryItemCategory | ENUM | Kategori (Chemical/Consumable/Glassware) |
| InventoryItemSpecification | TEXT | Spesifikasi teknis |
| InventoryItemBrand | VARCHAR(100) | Merk item |
| InventoryItemUnitType | VARCHAR(20) | Satuan (mL/gram/piece) |
| InventoryItemCurrentStock | DECIMAL(10,2) | Stok saat ini |
| InventoryItemMinimumStock | DECIMAL(10,2) | Batas minimum stok |
| InventoryItemLocation | VARCHAR(100) | Lokasi penyimpanan |
| InventoryItemExpiryDate | DATE | Tanggal kedaluwarsa |
| InventoryItemMSDS | VARCHAR(255) | Path file MSDS |
| InventoryItemStatus | ENUM | Status (Available/Low Stock/Empty) |
| InventoryItemNotes | TEXT | Catatan tambahan |
| InventoryItemCreatedAt | DATETIME | Waktu pembuatan record |
| InventoryItemCreatedUserID | INT | ID user yang membuat |
| InventoryItemUpdatedAt | DATETIME | Waktu terakhir update |
| InventoryItemUpdatedUserID | INT | ID user yang update |
| InventoryItemDeletedAt | DATETIME | Waktu penghapusan |
| InventoryItemDeletedUserID | INT | ID user yang menghapus |
### 16. inventory_transactions
Tabel ini mencatat pergerakan stok inventaris.
| Kolom | Tipe Data | Deskripsi |
|-------|-----------|-----------|
| InventoryTransactionID | INT | Primary key, ID unik transaksi |
| InventoryItemID | INT | Foreign key ke inventory_items |
| InventoryTransactionType | ENUM | Tipe (In/Out/Adjustment) |
| InventoryTransactionQuantity | DECIMAL(10,2) | Jumlah item |
| InventoryTransactionDate | DATETIME | Waktu transaksi |
| InventoryTransactionReference | VARCHAR(50) | Nomor referensi dokumen |
| InventoryTransactionPIC | INT | ID penanggung jawab |
| InventoryTransactionPurpose | TEXT | Tujuan penggunaan |
| InventoryTransactionNotes | TEXT | Catatan transaksi |
| InventoryTransactionCreatedAt | DATETIME | Waktu pembuatan record |
| InventoryTransactionCreatedUserID | INT | ID user yang membuat |
| InventoryTransactionUpdatedAt | DATETIME | Waktu terakhir update |
| InventoryTransactionUpdatedUserID | INT | ID user yang update |
| InventoryTransactionDeletedAt | DATETIME | Waktu penghapusan |
| InventoryTransactionDeletedUserID | INT | ID user yang menghapus |
### 17. purchase_requests
Tabel ini mencatat permintaan pembelian barang.
| Kolom | Tipe Data | Deskripsi |
|-------|-----------|-----------|
| PurchaseRequestID | INT | Primary key, ID unik PR |
| PurchaseRequestNumber | VARCHAR(50) | Nomor PR |
| PurchaseRequestDate | DATE | Tanggal permintaan |
| PurchaseRequestDepartment | VARCHAR(100) | Departemen pemohon |
| PurchaseRequestPIC | INT | ID pemohon |
| PurchaseRequestStatus | ENUM | Status (Draft/Submitted/Approved/Rejected) |
| PurchaseRequestUrgency | ENUM | Tingkat urgensi (Normal/Urgent) |
| PurchaseRequestTotalAmount | DECIMAL(12,2) | Total estimasi biaya |
| PurchaseRequestNotes | TEXT | Catatan PR |
| PurchaseRequestApprovedByID | INT | ID yang menyetujui |
| PurchaseRequestApprovedDate | DATE | Tanggal persetujuan |
| PurchaseRequestCreatedAt | DATETIME | Waktu pembuatan record |
| PurchaseRequestCreatedUserID | INT | ID user yang membuat |
| PurchaseRequestUpdatedAt | DATETIME | Waktu terakhir update |
| PurchaseRequestUpdatedUserID | INT | ID user yang update |
| PurchaseRequestDeletedAt | DATETIME | Waktu penghapusan |
| PurchaseRequestDeletedUserID | INT | ID user yang menghapus |
## Contoh Data Real
Berikut adalah contoh data nyata untuk beberapa tabel utama:
@@ -274,3 +594,572 @@ Struktur database ini dirancang untuk mendukung alur layanan laboratorium lingku
- Tabel `reports` menyimpan laporan hasil uji yang telah diverifikasi
Dengan struktur database ini, sistem dapat melacak seluruh alur dari permintaan pelanggan hingga penerbitan laporan hasil uji, sesuai dengan alur pelayanan pada diagram.
## Tabel Master
### 1. master_sampling_methods
Tabel ini menyimpan informasi tentang metode-metode sampling yang digunakan laboratorium.
| Kolom | Tipe Data | Deskripsi |
|-------|-----------|-----------|
| MasterSamplingMethodID | INT | Primary key, ID unik untuk metode sampling |
| MasterSamplingMethodCode | VARCHAR(20) | Kode unik metode (mis: WW-GRAB, EMI-ISO) |
| MasterSamplingMethodName | VARCHAR(100) | Nama lengkap metode sampling |
| MasterSamplingMethodStandardRef | VARCHAR(100) | Referensi standar (SNI/standar lain) |
| MasterSamplingMethodMatrix | VARCHAR(50) | Jenis matriks yang disampling (Air, Udara, dll) |
| MasterSamplingMethodDescription | TEXT | Deskripsi lengkap metode sampling |
| MasterSamplingMethodEquipment | TEXT | Daftar peralatan yang dibutuhkan |
| MasterSamplingMethodProcedure | TEXT | Prosedur detail sampling |
| MasterSamplingMethodQCRequirements | TEXT | Persyaratan quality control |
| MasterSamplingMethodSamplingPoint | TEXT | Informasi titik sampling |
| MasterSamplingMethodPreservation | TEXT | Metode preservasi sampel |
| MasterSamplingMethodContainerType | VARCHAR(100) | Jenis wadah yang digunakan |
| MasterSamplingMethodMinVolume | DECIMAL(10,2) | Volume minimum sampel yang dibutuhkan |
| MasterSamplingMethodHoldingTime | VARCHAR(50) | Waktu maksimum penyimpanan sampel |
| MasterSamplingMethodInterference | TEXT | Interferensi yang mungkin terjadi |
| MasterSamplingMethodLimitation | TEXT | Batasan metode sampling |
| MasterSamplingMethodSafetyMeasures | TEXT | Tindakan keselamatan yang diperlukan |
| MasterSamplingMethodFieldParameters | TEXT | Parameter yang diukur di lapangan |
| MasterSamplingMethodIsActive | BOOLEAN | Status aktif metode sampling |
| MasterSamplingMethodCreatedAt | DATETIME | Waktu pembuatan record |
| MasterSamplingMethodCreatedUserID | INT | ID user yang membuat record |
| MasterSamplingMethodUpdatedAt | DATETIME | Waktu terakhir update |
| MasterSamplingMethodUpdatedUserID | INT | ID user yang terakhir update |
| MasterSamplingMethodDeletedAt | DATETIME | Waktu penghapusan record |
| MasterSamplingMethodDeletedUserID | INT | ID user yang menghapus record |
### 2. master_sampling_method_parameters
Tabel ini menghubungkan metode sampling dengan parameter yang dapat diuji.
| Kolom | Tipe Data | Deskripsi |
|-------|-----------|-----------|
| MasterSamplingMethodParameterID | INT | Primary key, ID unik |
| MasterSamplingMethodID | INT | Foreign key ke master_sampling_methods |
| MasterParameterID | INT | Foreign key ke master_parameters |
| MasterSamplingMethodParameterIsDefault | BOOLEAN | Menandakan parameter default |
| MasterSamplingMethodParameterIsActive | BOOLEAN | Status aktif relasi |
| MasterSamplingMethodParameterCreatedAt | DATETIME | Waktu pembuatan record |
| MasterSamplingMethodParameterCreatedUserID | INT | ID user yang membuat |
| MasterSamplingMethodParameterUpdatedAt | DATETIME | Waktu terakhir update |
| MasterSamplingMethodParameterUpdatedUserID | INT | ID user yang update |
| MasterSamplingMethodParameterDeletedAt | DATETIME | Waktu penghapusan |
| MasterSamplingMethodParameterDeletedUserID | INT | ID user yang menghapus |
### 3. master_sampling_method_equipment
Tabel ini mencatat peralatan yang dibutuhkan untuk setiap metode sampling.
| Kolom | Tipe Data | Deskripsi |
|-------|-----------|-----------|
| MasterSamplingMethodEquipmentID | INT | Primary key, ID unik |
| MasterSamplingMethodID | INT | Foreign key ke master_sampling_methods |
| MasterEquipmentID | INT | Foreign key ke master_equipment |
| MasterSamplingMethodEquipmentQuantity | INT | Jumlah peralatan yang dibutuhkan |
| MasterSamplingMethodEquipmentIsRequired | BOOLEAN | Apakah peralatan wajib ada |
| MasterSamplingMethodEquipmentNotes | TEXT | Catatan penggunaan peralatan |
| MasterSamplingMethodEquipmentIsActive | BOOLEAN | Status aktif relasi |
| MasterSamplingMethodEquipmentCreatedAt | DATETIME | Waktu pembuatan record |
| MasterSamplingMethodEquipmentCreatedUserID | INT | ID user yang membuat |
| MasterSamplingMethodEquipmentUpdatedAt | DATETIME | Waktu terakhir update |
| MasterSamplingMethodEquipmentUpdatedUserID | INT | ID user yang update |
| MasterSamplingMethodEquipmentDeletedAt | DATETIME | Waktu penghapusan |
| MasterSamplingMethodEquipmentDeletedUserID | INT | ID user yang menghapus |
### 4. master_sampling_method_competencies
Tabel ini mencatat kompetensi yang diperlukan untuk setiap metode sampling.
| Kolom | Tipe Data | Deskripsi |
|-------|-----------|-----------|
| MasterSamplingMethodCompetencyID | INT | Primary key, ID unik |
| MasterSamplingMethodID | INT | Foreign key ke master_sampling_methods |
| MasterCompetencyID | INT | Foreign key ke master_competencies |
| MasterSamplingMethodCompetencyIsRequired | BOOLEAN | Apakah kompetensi wajib |
| MasterSamplingMethodCompetencyNotes | TEXT | Catatan tentang kompetensi |
| MasterSamplingMethodCompetencyIsActive | BOOLEAN | Status aktif relasi |
| MasterSamplingMethodCompetencyCreatedAt | DATETIME | Waktu pembuatan record |
| MasterSamplingMethodCompetencyCreatedUserID | INT | ID user yang membuat |
| MasterSamplingMethodCompetencyUpdatedAt | DATETIME | Waktu terakhir update |
| MasterSamplingMethodCompetencyUpdatedUserID | INT | ID user yang update |
| MasterSamplingMethodCompetencyDeletedAt | DATETIME | Waktu penghapusan |
| MasterSamplingMethodCompetencyDeletedUserID | INT | ID user yang menghapus |
## Relasi Antar Tabel
```mermaid
erDiagram
master_sampling_methods ||--o{ master_sampling_method_parameters : "memiliki parameter"
master_sampling_methods ||--o{ master_sampling_method_equipment : "membutuhkan peralatan"
master_sampling_methods ||--o{ master_sampling_method_competencies : "memerlukan kompetensi"
master_sampling_method_parameters }o--|| master_parameters : "menggunakan"
master_sampling_method_equipment }o--|| master_equipment : "menggunakan"
master_sampling_method_competencies }o--|| master_competencies : "menggunakan"
```
## Penggunaan
1. Tabel `master_sampling_methods` adalah tabel utama yang menyimpan semua informasi tentang metode sampling.
2. Tabel `master_sampling_method_parameters` menentukan parameter apa saja yang bisa diuji dengan metode sampling tertentu.
3. Tabel `master_sampling_method_equipment` mencatat peralatan apa saja yang diperlukan untuk melakukan sampling.
4. Tabel `master_sampling_method_competencies` mendefinisikan kompetensi yang harus dimiliki petugas sampling.
## Contoh Penggunaan
- Saat membuat rencana sampling, sistem akan mengacu ke tabel-tabel ini untuk:
1. Memastikan metode sampling sesuai dengan jenis sampel
2. Menyiapkan daftar peralatan yang diperlukan
3. Memilih petugas sampling dengan kompetensi yang sesuai
4. Menentukan parameter yang akan diuji
## Tabel Transaksi
### 1. service_requests
Tabel ini mencatat semua permintaan layanan dari pelanggan.
| Kolom | Tipe Data | Deskripsi |
|-------|-----------|-----------|
| ServiceRequestID | INT | Primary key, ID unik permintaan |
| ServiceRequestCode | VARCHAR(20) | Kode unik permintaan |
| MasterClientID | INT | Foreign key ke master_clients |
| ServiceRequestType | ENUM | Tipe permintaan (Sampling and Analysis/Analysis Only) |
| ServiceRequestProjectName | VARCHAR(200) | Nama proyek |
| ServiceRequestProjectLocation | TEXT | Lokasi proyek |
| ServiceRequestSamplingDate | DATE | Tanggal sampling yang diminta |
| ServiceRequestStatus | ENUM | Status permintaan (Draft/Submitted/Approved/etc) |
| ServiceRequestQuotationNumber | VARCHAR(50) | Nomor penawaran |
| ServiceRequestQuotationDate | DATE | Tanggal penawaran |
| ServiceRequestApprovedDate | DATE | Tanggal persetujuan |
| ServiceRequestTotalAmount | DECIMAL(12,2) | Total biaya |
| ServiceRequestDPAmount | DECIMAL(12,2) | Jumlah uang muka |
| ServiceRequestDPStatus | ENUM | Status uang muka (Unpaid/Paid) |
| ServiceRequestNotes | TEXT | Catatan tambahan |
| ServiceRequestCreatedAt | DATETIME | Waktu pembuatan record |
| ServiceRequestCreatedUserID | INT | ID user yang membuat |
| ServiceRequestUpdatedAt | DATETIME | Waktu terakhir update |
| ServiceRequestUpdatedUserID | INT | ID user yang update |
| ServiceRequestDeletedAt | DATETIME | Waktu penghapusan |
| ServiceRequestDeletedUserID | INT | ID user yang menghapus |
### 2. request_parameters
Tabel ini mencatat parameter-parameter yang diminta untuk diuji.
| Kolom | Tipe Data | Deskripsi |
|-------|-----------|-----------|
| RequestParameterID | INT | Primary key, ID unik |
| ServiceRequestID | INT | Foreign key ke service_requests |
| MasterParameterID | INT | Foreign key ke master_parameters |
| RequestParameterPrice | DECIMAL(10,2) | Harga parameter saat request |
| RequestParameterStatus | ENUM | Status parameter (Pending/In Progress/Completed) |
| RequestParameterResultValue | VARCHAR(50) | Nilai hasil pengujian |
| RequestParameterResultUnit | VARCHAR(20) | Satuan hasil |
| RequestParameterIsCompliant | BOOLEAN | Status kesesuaian dengan baku mutu |
| RequestParameterNotes | TEXT | Catatan tambahan |
| RequestParameterCreatedAt | DATETIME | Waktu pembuatan record |
| RequestParameterCreatedUserID | INT | ID user yang membuat |
| RequestParameterUpdatedAt | DATETIME | Waktu terakhir update |
| RequestParameterUpdatedUserID | INT | ID user yang update |
| RequestParameterDeletedAt | DATETIME | Waktu penghapusan |
| RequestParameterDeletedUserID | INT | ID user yang menghapus |
### 3. sampling_plans
Tabel ini mencatat rencana sampling yang akan dilakukan.
| Kolom | Tipe Data | Deskripsi |
|-------|-----------|-----------|
| SamplingPlanID | INT | Primary key, ID unik rencana |
| SamplingPlanCode | VARCHAR(20) | Kode unik rencana sampling |
| ServiceRequestID | INT | Foreign key ke service_requests |
| MasterSamplingMethodID | INT | Foreign key ke master_sampling_methods |
| SamplingPlanDate | DATE | Tanggal rencana sampling |
| SamplingPlanLocation | TEXT | Lokasi sampling |
| SamplingPlanGPSCoordinates | VARCHAR(50) | Koordinat GPS lokasi |
| SamplingPlanOfficerID | INT | Foreign key ke master_personnel |
| SamplingPlanStatus | ENUM | Status rencana (Planned/Completed/Cancelled) |
| SamplingPlanWeatherCondition | VARCHAR(100) | Kondisi cuaca saat sampling |
| SamplingPlanNotes | TEXT | Catatan tambahan |
| SamplingPlanCreatedAt | DATETIME | Waktu pembuatan record |
| SamplingPlanCreatedUserID | INT | ID user yang membuat |
| SamplingPlanUpdatedAt | DATETIME | Waktu terakhir update |
| SamplingPlanUpdatedUserID | INT | ID user yang update |
| SamplingPlanDeletedAt | DATETIME | Waktu penghapusan |
| SamplingPlanDeletedUserID | INT | ID user yang menghapus |
### 4. samples
Tabel ini mencatat sampel-sampel yang diambil dan dianalisis.
| Kolom | Tipe Data | Deskripsi |
|-------|-----------|-----------|
| SampleID | INT | Primary key, ID unik sampel |
| SampleCode | VARCHAR(50) | Kode unik sampel |
| ServiceRequestID | INT | Foreign key ke service_requests |
| SamplingPlanID | INT | Foreign key ke sampling_plans |
| MasterSamplingMethodID | INT | Foreign key ke master_sampling_methods |
| SampleMatrix | VARCHAR(50) | Jenis matriks sampel |
| SampleDateTime | DATETIME | Waktu pengambilan sampel |
| SampleLocation | TEXT | Lokasi pengambilan |
| SampleOfficerID | INT | Foreign key ke master_personnel |
| SampleReceiveDateTime | DATETIME | Waktu penerimaan di lab |
| SampleReceiverID | INT | ID petugas yang menerima |
| SampleCondition | TEXT | Kondisi sampel saat diterima |
| SamplePreservation | TEXT | Metode preservasi yang digunakan |
| SampleStorageLocation | VARCHAR(100) | Lokasi penyimpanan di lab |
| SampleStatus | ENUM | Status sampel (Collected/In Analysis/Completed) |
| SampleNotes | TEXT | Catatan tambahan |
| SampleCreatedAt | DATETIME | Waktu pembuatan record |
| SampleCreatedUserID | INT | ID user yang membuat |
| SampleUpdatedAt | DATETIME | Waktu terakhir update |
| SampleUpdatedUserID | INT | ID user yang update |
| SampleDeletedAt | DATETIME | Waktu penghapusan |
| SampleDeletedUserID | INT | ID user yang menghapus |
## Relasi Antar Tabel (Transaksi)
```mermaid
erDiagram
service_requests ||--o{ request_parameters : includes
service_requests ||--o{ sampling_plans : generates
sampling_plans ||--o{ samples : collects
service_requests {
int ServiceRequestID PK
string ServiceRequestCode
int MasterClientID FK
enum ServiceRequestStatus
}
request_parameters {
int RequestParameterID PK
int ServiceRequestID FK
int MasterParameterID FK
decimal RequestParameterPrice
}
sampling_plans {
int SamplingPlanID PK
int ServiceRequestID FK
date SamplingPlanDate
enum SamplingPlanStatus
}
samples {
int SampleID PK
string SampleCode
int SamplingPlanID FK
datetime SampleDateTime
}
```
## Alur Proses Transaksi
1. **Permintaan Layanan**
- Client membuat permintaan (service_requests)
- Menentukan parameter yang akan diuji (request_parameters)
- Menyetujui penawaran harga
2. **Perencanaan Sampling**
- Membuat rencana sampling (sampling_plans)
- Menentukan metode dan peralatan
- Menetapkan petugas sampling
3. **Pengambilan Sampel**
- Mencatat sampel yang diambil (samples)
- Melakukan preservasi
- Mengirim ke laboratorium
4. **Analisis dan Pelaporan**
- Mencatat hasil analisis (request_parameters)
- Memverifikasi hasil
- Membuat laporan akhir
### 5. analysis_results (Hasil Analisis)
Tabel ini menyimpan hasil-hasil pengujian laboratorium.
| Kolom | Tipe Data | Deskripsi |
|-------|-----------|-----------|
| AnalysisResultID | INT | Primary key, ID unik hasil analisis |
| SampleID | INT | Foreign key ke samples |
| MasterParameterID | INT | Foreign key ke master_parameters |
| AnalysisResultValue | VARCHAR(100) | Nilai hasil analisis |
| AnalysisResultUnit | VARCHAR(20) | Satuan hasil |
| AnalysisResultMethod | VARCHAR(100) | Metode yang digunakan |
| AnalysisResultEquipment | VARCHAR(100) | Peralatan yang digunakan |
| AnalysisResultAnalystID | INT | ID analis yang melakukan pengujian |
| AnalysisResultDate | DATETIME | Waktu analisis |
| AnalysisResultVerifierID | INT | ID verifikator hasil |
| AnalysisResultVerificationDate | DATETIME | Waktu verifikasi |
| AnalysisResultIsCompliant | BOOLEAN | Kesesuaian dengan baku mutu |
| AnalysisResultStatus | ENUM | Status (Draft/Verified/Approved) |
| AnalysisResultNotes | TEXT | Catatan analisis |
| AnalysisResultCreatedAt | DATETIME | Waktu pembuatan record |
| AnalysisResultCreatedUserID | INT | ID user yang membuat |
| AnalysisResultUpdatedAt | DATETIME | Waktu terakhir update |
| AnalysisResultUpdatedUserID | INT | ID user yang update |
| AnalysisResultDeletedAt | DATETIME | Waktu penghapusan |
| AnalysisResultDeletedUserID | INT | ID user yang menghapus |
### 6. reports (Laporan Hasil Uji)
Tabel ini menyimpan laporan hasil pengujian.
| Kolom | Tipe Data | Deskripsi |
|-------|-----------|-----------|
| ReportID | INT | Primary key, ID unik laporan |
| ReportNumber | VARCHAR(50) | Nomor laporan hasil uji |
| ServiceRequestID | INT | Foreign key ke service_requests |
| ReportDate | DATE | Tanggal laporan |
| ReportTitle | VARCHAR(200) | Judul laporan |
| ReportPreparedByID | INT | ID pembuat laporan |
| ReportVerifiedByID | INT | ID verifikator laporan |
| ReportApprovedByID | INT | ID yang menyetujui laporan |
| ReportStatus | ENUM | Status (Draft/Verified/Approved/Released) |
| ReportFilePath | VARCHAR(255) | Path file laporan |
| ReportNotes | TEXT | Catatan laporan |
| ReportCreatedAt | DATETIME | Waktu pembuatan record |
| ReportCreatedUserID | INT | ID user yang membuat |
| ReportUpdatedAt | DATETIME | Waktu terakhir update |
| ReportUpdatedUserID | INT | ID user yang update |
| ReportDeletedAt | DATETIME | Waktu penghapusan |
| ReportDeletedUserID | INT | ID user yang menghapus |
### 7. quotations (Penawaran Harga)
Tabel ini menyimpan penawaran harga untuk pelanggan.
| Kolom | Tipe Data | Deskripsi |
|-------|-----------|-----------|
| QuotationID | INT | Primary key, ID unik quotation |
| QuotationNumber | VARCHAR(50) | Nomor penawaran |
| ServiceRequestID | INT | Foreign key ke service_requests |
| QuotationDate | DATE | Tanggal penawaran |
| QuotationValidUntil | DATE | Masa berlaku penawaran |
| QuotationSubtotal | DECIMAL(12,2) | Total harga sebelum pajak |
| QuotationTaxPercentage | DECIMAL(5,2) | Persentase pajak |
| QuotationTaxAmount | DECIMAL(12,2) | Jumlah pajak |
| QuotationTotal | DECIMAL(12,2) | Total harga setelah pajak |
| QuotationStatus | ENUM | Status (Draft/Sent/Approved/Rejected) |
| QuotationTerms | TEXT | Syarat dan ketentuan |
| QuotationNotes | TEXT | Catatan tambahan |
| QuotationCreatedAt | DATETIME | Waktu pembuatan record |
| QuotationCreatedUserID | INT | ID user yang membuat |
| QuotationUpdatedAt | DATETIME | Waktu terakhir update |
| QuotationUpdatedUserID | INT | ID user yang update |
| QuotationDeletedAt | DATETIME | Waktu penghapusan |
| QuotationDeletedUserID | INT | ID user yang menghapus |
### 8. quotation_details (Detail Penawaran)
Tabel ini menyimpan rincian item dalam penawaran.
| Kolom | Tipe Data | Deskripsi |
|-------|-----------|-----------|
| QuotationDetailID | INT | Primary key, ID unik detail |
| QuotationID | INT | Foreign key ke quotations |
| MasterParameterID | INT | Foreign key ke master_parameters |
| QuotationDetailQuantity | INT | Jumlah parameter |
| QuotationDetailUnitPrice | DECIMAL(10,2) | Harga per unit |
| QuotationDetailDiscount | DECIMAL(10,2) | Diskon per item |
| QuotationDetailTotal | DECIMAL(12,2) | Total harga item |
| QuotationDetailNotes | TEXT | Catatan item |
| QuotationDetailCreatedAt | DATETIME | Waktu pembuatan record |
| QuotationDetailCreatedUserID | INT | ID user yang membuat |
| QuotationDetailUpdatedAt | DATETIME | Waktu terakhir update |
| QuotationDetailUpdatedUserID | INT | ID user yang update |
| QuotationDetailDeletedAt | DATETIME | Waktu penghapusan |
| QuotationDetailDeletedUserID | INT | ID user yang menghapus |
## Relasi Antar Tabel (Lanjutan)
```mermaid
erDiagram
service_requests ||--o{ quotations : generates
quotations ||--o{ quotation_details : contains
samples ||--o{ analysis_results : produces
service_requests ||--o{ reports : generates
quotations {
int QuotationID PK
string QuotationNumber
decimal QuotationTotal
enum QuotationStatus
}
quotation_details {
int QuotationDetailID PK
int QuotationID FK
int Quantity
decimal UnitPrice
}
analysis_results {
int AnalysisResultID PK
int SampleID FK
string ResultValue
boolean IsCompliant
}
reports {
int ReportID PK
string ReportNumber
enum ReportStatus
}
```
## Penggunaan (Lanjutan)
1. **Penawaran Harga**
- Membuat penawaran berdasarkan permintaan layanan
- Menghitung total biaya dengan pajak dan diskon
- Melacak status persetujuan penawaran
2. **Hasil Analisis**
- Mencatat hasil pengujian parameter
- Memverifikasi hasil dengan baku mutu
- Melacak status verifikasi hasil
3. **Laporan**
- Menghasilkan laporan hasil uji
- Mengelola proses persetujuan laporan
- Menyimpan riwayat laporan
## Relasi Antar Tabel (Quality Control)
```mermaid
erDiagram
master_parameters ||--o{ quality_control_samples : "diuji dengan"
master_parameters ||--o{ method_validations : "divalidasi"
master_equipment ||--o{ equipment_calibrations : "dikalibrasi"
quality_control_samples {
int QualityControlSampleID PK
string QualityControlSampleCode
enum QualityControlSampleType
decimal QualityControlSampleValue
}
method_validations {
int MethodValidationID PK
int MasterParameterID FK
decimal MethodValidationLOD
decimal MethodValidationUncertainty
}
equipment_calibrations {
int EquipmentCalibrationID PK
int MasterEquipmentID FK
date EquipmentCalibrationDate
enum EquipmentCalibrationStatus
}
```
## Alur Quality Control
1. **Validasi Metode**
- Menentukan karakteristik metode
- Menetapkan batas deteksi dan kuantifikasi
- Menghitung ketidakpastian pengukuran
2. **Kalibrasi Peralatan**
- Menjadwalkan kalibrasi rutin
- Mencatat hasil kalibrasi
- Memantau status peralatan
3. **Quality Control Sampel**
- Menjalankan sampel kontrol
- Memverifikasi hasil QC
- Mengambil tindakan korektif jika diperlukan
## Relasi Antar Tabel (Sistem Mutu)
```mermaid
erDiagram
document_controls ||--o{ master_personnel : "dikelola oleh"
proficiency_tests ||--o{ master_parameters : "menguji"
internal_audits ||--o{ master_personnel : "melibatkan"
document_controls {
int DocumentControlID PK
string DocumentCode
string DocumentTitle
enum DocumentStatus
}
proficiency_tests {
int ProficiencyTestID PK
string ProficiencyTestCode
decimal ProficiencyTestZScore
string ProficiencyTestConclusion
}
internal_audits {
int InternalAuditID PK
string InternalAuditCode
text InternalAuditFindings
date InternalAuditClosureDate
}
```
## Alur Manajemen Mutu
1. **Pengendalian Dokumen**
- Pembuatan dan revisi dokumen
- Distribusi dan pengendalian akses
- Peninjauan berkala
2. **Uji Profisiensi**
- Pendaftaran program PT
- Pelaksanaan pengujian
- Evaluasi hasil dan tindak lanjut
3. **Audit Internal**
- Perencanaan audit
- Pelaksanaan dan temuan
- Tindak lanjut dan verifikasi
### 18. invoices (Faktur)
Tabel ini mencatat faktur untuk layanan laboratorium.
| Kolom | Tipe Data | Deskripsi |
|-------|-----------|------------|
| InvoiceID | INT | Primary key, ID unik faktur |
| InvoiceNumber | VARCHAR(50) | Nomor faktur |
| ServiceRequestID | INT | Foreign key ke service_requests |
| InvoiceDate | DATE | Tanggal faktur |
| InvoiceDueDate | DATE | Tanggal jatuh tempo |
| InvoiceAmount | DECIMAL(12,2) | Total tagihan |
| InvoiceStatus | ENUM | Status (Draft/Sent/Paid/Overdue) |
| InvoiceNotes | TEXT | Catatan faktur |
| InvoiceCreatedAt | DATETIME | Waktu pembuatan record |
| InvoiceCreatedUserID | INT | ID user yang membuat |
### 19. payments (Pembayaran)
Tabel ini mencatat pembayaran dari klien.
| Kolom | Tipe Data | Deskripsi |
|-------|-----------|------------|
| PaymentID | INT | Primary key, ID unik pembayaran |
| InvoiceID | INT | Foreign key ke invoices |
| PaymentDate | DATE | Tanggal pembayaran |
| PaymentAmount | DECIMAL(12,2) | Jumlah pembayaran |
| PaymentMethod | ENUM | Metode (Transfer/Cash/Credit Card) |
| PaymentReference | VARCHAR(100) | Nomor referensi pembayaran |
| PaymentNotes | TEXT | Catatan pembayaran |
| PaymentCreatedAt | DATETIME | Waktu pembuatan record |
| PaymentCreatedUserID | INT | ID user yang membuat |
## Relasi Antar Tabel (Keuangan)
```mermaid
erDiagram
service_requests ||--o{ invoices : generates
invoices ||--o{ payments : receives
invoices {
int InvoiceID PK
string InvoiceNumber
decimal InvoiceAmount
enum InvoiceStatus
}
payments {
int PaymentID PK
int InvoiceID FK
decimal PaymentAmount
enum PaymentMethod
}
```