diff --git a/Proses Pembuatan Work Order b/Proses Pembuatan Work Order new file mode 100644 index 0000000..d6da32d --- /dev/null +++ b/Proses Pembuatan Work Order @@ -0,0 +1,461 @@ +# Proses Pembuatan Work Order (Berbasis Parameter Pengujian) + +## Database Schema + +### Tabel Bahan Uji +```sql +CREATE TABLE tabel_bahan_uji ( + bahan_uji_id INT AUTO_INCREMENT PRIMARY KEY, + nama_bahan_uji VARCHAR(50) NOT NULL, + kode_bahan_uji CHAR(4) NOT NULL, + bidang_pengujian VARCHAR(20), + UNIQUE (nama_bahan_uji) +); +``` + +Contoh Data: +| bahan_uji_id | nama_bahan_uji | kode_bahan_uji | bidang_pengujian | +|--------------|--------------------------|----------------|------------------| +| 1 | Udara lingkungan kerja | UL | KIMIA | +| 2 | Lingkungan kerja | LK | FISIK | +| 3 | Intensitas kebisingan | IK | KIMIA | +| 4 | Air Minum, Hygiene, Limbah | AMHL | KIMIA | +| 5 | Air Minum | AM | KIMIA/BIOLOGI | +| 6 | Limbah domestik | LD | KIMIA/BIOLOGI | +| 7 | IPAL OUTLET | IO | BIOLOGI | + +### Tabel Parameter Pengujian +```sql +CREATE TABLE tabel_parameter_pengujian ( + parameter_id INT AUTO_INCREMENT PRIMARY KEY, + bahan_uji_id INT NOT NULL, + nama_parameter VARCHAR(100) NOT NULL, + metode VARCHAR(50), + peraturan VARCHAR(50), + diukur_di_tkp BOOLEAN DEFAULT FALSE, + jumlah_botol INT DEFAULT 0, + volume_sampel VARCHAR(10) DEFAULT NULL, + pengawetan VARCHAR(50) DEFAULT NULL, + botol_kelompok VARCHAR(20) DEFAULT NULL, + FOREIGN KEY (bahan_uji_id) REFERENCES tabel_bahan_uji(bahan_uji_id) +); +``` + +Contoh Data: +| parameter_id | bahan_uji_id | nama_parameter | metode | peraturan | diukur_di_tkp | jumlah_botol | volume_sampel | pengawetan | botol_kelompok | +|--------------|--------------|----------------|--------|-----------|---------------|--------------|---------------|------------|----------------| +| 1 | 1 | Debu Total | SNI 16-7058-2004 | Permenkes No.2 Tahun 2023 | FALSE | 1 | 1000-2000 L udara | NULL | Filter Udara | +| 12 | 5 | Nitrat (NO3 terlarut) | SNI/APHA | Permenkes No.2 Tahun 2023 | FALSE | 1 | 500 mL | Asam Nitrat | Kimia | +| 24 | 5 | E. Coli | SNI/APHA | Permenkes No.2 Tahun 2023 | FALSE | 1 | 500 mL | Disimpan dengan es | Biologi | +| 25 | 5 | Total Coliform | SNI/APHA | Permenkes No.2 Tahun 2023 | FALSE | 1 | 500 mL | Disimpan dengan es | Biologi | +| 27 | 6 | pH | SNI-6989.11-2019 | Permen LHK No.P.68/2016 | TRUE | 0 | NULL | NULL | NULL | +| 28 | 6 | BOD | APHA 5210 B-2017 | Permen LHK No.P.68/2016 | FALSE | 1 | 500 mL | Botol Gelap | BOD | +| 34 | 6 | Total Coliform | SNI | Permen LHK No.P.68/2016 | FALSE | 1 | 500 mL | Disimpan dengan es | Biologi | + +## Penjelasan Kolom Penting + +### botol_kelompok +Kolom ini digunakan untuk mengelompokkan parameter yang bisa menggunakan botol yang sama: +- **"Kimia"**: Parameter kimia seperti Nitrat, Nitrit, dll., bisa dikumpulkan dalam 1 botol. +- **"Biologi"**: Parameter seperti E. Coli, Total Coliform, memerlukan botol steril terpisah. +- **"BOD"**: Memerlukan botol gelap sendiri. +- **"Filter Udara"**: Untuk Debu Total (khusus udara). + +### jumlah_botol +Jumlah botol per parameter. Namun, jika beberapa parameter bisa digabung dalam 1 botol (berdasarkan botol_kelompok), total botol per titik akan lebih sedikit. + +### pengawetan +Cara pengawetan untuk setiap parameter (misalnya asam nitrat, es, botol gelap). + +## Tabel Tugas Work Order + +### tabel_tugas +```sql +CREATE TABLE tabel_tugas ( + tugas_id VARCHAR(20) PRIMARY KEY, + lokasi VARCHAR(100) NOT NULL, + tanggal_tugas DATE NOT NULL, + status VARCHAR(20) DEFAULT 'Direncanakan', + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + created_by VARCHAR(50) +); +``` + +Contoh Data: +| tugas_id | lokasi | tanggal_tugas | status | created_at | created_by | +|----------|--------|---------------|--------|------------|------------| +| WO-2025-016 | Sungai Citarum | 2025-05-16 | Direncanakan | 2025-05-16 09:20:00 | Supervisor_001 | + +### tabel_titik_sampel +```sql +CREATE TABLE tabel_titik_sampel ( + titik_id INT AUTO_INCREMENT PRIMARY KEY, + tugas_id VARCHAR(20) NOT NULL, + kode_sampel VARCHAR(50) NOT NULL, + bahan_uji_id INT NOT NULL, + deskripsi_lokasi TEXT, + waktu_pengambilan TIMESTAMP NULL, + petugas VARCHAR(50), + FOREIGN KEY (tugas_id) REFERENCES tabel_tugas(tugas_id), + FOREIGN KEY (bahan_uji_id) REFERENCES tabel_bahan_uji(bahan_uji_id) +); +``` + +Contoh Data: +| titik_id | tugas_id | kode_sampel | bahan_uji_id | deskripsi_lokasi | waktu_pengambilan | petugas | +|----------|----------|-------------|--------------|------------------|-------------------|---------| +| 1 | WO-2025-016 | WO-2025-016-T1 | 5 | Hulu Sungai Citarum | NULL | NULL | +| 2 | WO-2025-016 | WO-2025-016-T2 | 6 | Outlet Pabrik Tekstil | NULL | NULL | + +### tabel_botol_sampel +```sql +CREATE TABLE tabel_botol_sampel ( + botol_id INT AUTO_INCREMENT PRIMARY KEY, + titik_id INT NOT NULL, + barcode VARCHAR(100) NOT NULL, + botol_nomor VARCHAR(10) NOT NULL, + botol_kelompok VARCHAR(20) NOT NULL, + status VARCHAR(20) DEFAULT 'Belum diambil', + parameter_sampel JSON, + FOREIGN KEY (titik_id) REFERENCES tabel_titik_sampel(titik_id) +); +``` + +Contoh Data: +| botol_id | titik_id | barcode | botol_nomor | botol_kelompok | status | parameter_sampel | +|----------|----------|---------|-------------|----------------|--------|------------------| +| 1 | 1 | WO-2025-016-20250516-AM-T1-01 | 01 | Kimia | Sampel diambil | {"Nitrat (NO3 terlarut)": {"status": "Sampel diambil", "hasil": null}} | +| 2 | 1 | WO-2025-016-20250516-AM-T1-02 | 02 | Biologi | Sampel diambil | {"E. Coli": {"status": "Sampel diambil", "hasil": null}} | +| 3 | 2 | WO-2025-016-20250516-LD-T2-01 | 01 | BOD | Sampel diambil | {"BOD": {"status": "Sampel diambil", "hasil": null}} | +| 4 | 2 | WO-2025-016-20250516-LD-T2-02 | 02 | Biologi | Sampel diambil | {"Total Coliform": {"status": "Sampel diambil", "hasil": null}} | + +### tabel_parameter_tkp +```sql +CREATE TABLE tabel_parameter_tkp ( + pengukuran_id INT AUTO_INCREMENT PRIMARY KEY, + titik_id INT NOT NULL, + parameter_id INT NOT NULL, + nilai VARCHAR(50), + satuan VARCHAR(20), + waktu_pengukuran TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + petugas VARCHAR(50), + FOREIGN KEY (titik_id) REFERENCES tabel_titik_sampel(titik_id), + FOREIGN KEY (parameter_id) REFERENCES tabel_parameter_pengujian(parameter_id) +); +``` + +Contoh Data: +| pengukuran_id | titik_id | parameter_id | nilai | satuan | waktu_pengukuran | petugas | +|---------------|----------|--------------|-------|--------|------------------|---------| +| 1 | 2 | 27 | 7.2 | - | 2025-05-16 13:45:00 | Petugas_002 | + +## Alur Proses Pembuatan Work Order + +### Langkah 1: Inisiasi oleh Supervisor +**Waktu**: 09:20 AM WIB, Jumat, 16 Mei 2025. + +**Tugas**: +- Supervisor membuka aplikasi untuk membuat work order baru. +- Input detail dasar: + - Tugas ID: "WO-2025-016" (otomatis). + - Lokasi: "Sungai Citarum". + - Tanggal Tugas: 16 Mei 2025. + - Jumlah Titik Sampel: 2 (T1 dan T2). + +### Langkah 2: Pilih Bahan Uji dan Parameter untuk Setiap Titik +**Tugas**: +- Untuk Titik 1 (T1): + - Pilih Bahan Uji: "Air Minum". + - Aplikasi menampilkan daftar parameter dari masterdata: + - Nitrat (NO3 terlarut), E. Coli, Total Coliform, dll. + - Supervisor memilih parameter yang dipesan klien: Nitrat, E. Coli. +- Untuk Titik 2 (T2): + - Pilih Bahan Uji: "Limbah Domestik". + - Supervisor memilih parameter: pH, BOD, Total Coliform. + +**Hasil**: +- T1: Nitrat (Kimia, 1 botol), E. Coli (Biologi, 1 botol) → 2 botol. +- T2: pH (di TKP, 0 botol), BOD (BOD, 1 botol), Total Coliform (Biologi, 1 botol) → 2 botol. + +### Langkah 3: Sistem Menghitung Total Botol dan Generate Barcode +**Tugas**: +- Sistem mengelompokkan parameter berdasarkan botol_kelompok: + - T1: Nitrat (Kimia) → Botol 1, E. Coli (Biologi) → Botol 2. + - T2: BOD (BOD) → Botol 1, Total Coliform (Biologi) → Botol 2. +- Total botol: 2 (T1) + 2 (T2) = 4 botol. +- Generate barcode: + - T1: + - Botol 1: WO-2025-016-20250516-AM-T1-01 (Nitrat). + - Botol 2: WO-2025-016-20250516-AM-T1-02 (E. Coli). + - T2: + - Botol 1: WO-2025-016-20250516-LD-T2-01 (BOD). + - Botol 2: WO-2025-016-20250516-LD-T2-02 (Total Coliform). + +**Format Barcode**: `[WO-ID]-[YYYYMMDD]-[KODE_BAHAN_UJI]-[KODE_TITIK]-[NOMOR_BOTOL]` + +### Langkah 4: Persiapan Peralatan dan Botol +**Tugas**: +- Sistem menampilkan kebutuhan: + - T1: Botol 1 (Kimia, 500 mL, asam nitrat), Botol 2 (Biologi, 500 mL, es). + - T2: Botol 1 (BOD, 500 mL, botol gelap), Botol 2 (Biologi, 500 mL, es). +- Supervisor menyiapkan: + - 4 botol berlabel barcode. + - Alat ukur: pH meter (untuk T2). + - Pengawet: asam nitrat, es, botol gelap. + +**Hasil**: +- Paket tugas: 4 botol, alat ukur, pengawet. + +### Langkah 5: Simpan Work Order ke Database +**Tugas**: +- Simpan ke database: + - tabel_tugas: Tugas ID, lokasi, tanggal. + - tabel_titik_sampel: Detail titik (T1, T2). + - tabel_botol_sampel: Barcode, parameter yang terkait. + +### Langkah 6: Penyerahan Work Order ke Petugas +**Tugas**: +- Supervisor menyerahkan paket tugas: + - 4 botol berlabel. + - Alat ukur dan pengawet. + - Petugas memverifikasi dan berangkat ke lapangan. + +### Langkah 7: Eksekusi di Lapangan +**Tugas**: +- Petugas tiba di lokasi dan melakukan pengukuran parameter di TKP: + - T2: Mengukur pH dengan pH meter, mencatat hasilnya. +- Mengambil sampel untuk parameter lain: + - T1: Nitrat (botol 1), E. Coli (botol 2). + - T2: BOD (botol 1), Total Coliform (botol 2). +- Mengisi metadata: + - Waktu pengambilan + - Kondisi cuaca + - Koordinat GPS + +### Langkah 8: Pengiriman Sampel ke Laboratorium +**Tugas**: +- Petugas mengirimkan sampel ke laboratorium: + - 4 botol berlabel barcode dengan pengawetan yang sesuai. + - Form metadata pengambilan sampel. + +### Langkah 9: Penerimaan Sampel di Laboratorium +**Tugas**: +- Staf Lab memverifikasi sampel yang diterima: + - Scan barcode untuk konfirmasi. + - Cek integritas sampel dan kondisi pengawetan. + - Update status di sistem: "Sampel diterima lab". + +### Langkah 10: Analisis dan Pelaporan +**Tugas**: +- Lab melakukan analisis terhadap sampel: + - T1: Nitrat, E. Coli. + - T2: BOD, Total Coliform. +- Hasil diinput ke dalam sistem: + - Update status parameter di tabel_botol_sampel. + - Generate laporan hasil analisis. + +## Contoh Data Detail untuk Work Order WO-2025-016 + +### 1. Data Detail Tugas +```json +{ + "tugas_id": "WO-2025-016", + "lokasi": "Sungai Citarum", + "tanggal_tugas": "2025-05-16", + "jumlah_titik": 2, + "total_sampel": 4, + "status": "Direncanakan", + "created_at": "2025-05-16 09:20:00", + "created_by": "Supervisor_001" +} +``` + +### 2. Data Detail Titik Sampel +```json +[ + { + "titik_id": 1, + "tugas_id": "WO-2025-016", + "kode_sampel": "WO-2025-016-T1", + "bahan_uji": { + "id": 5, + "nama": "Air Minum", + "kode": "AM" + }, + "deskripsi_lokasi": "Hulu Sungai Citarum", + "parameter": [ + { + "id": 12, + "nama": "Nitrat (NO3 terlarut)", + "botol_kelompok": "Kimia", + "diukur_di_tkp": false + }, + { + "id": 24, + "nama": "E. Coli", + "botol_kelompok": "Biologi", + "diukur_di_tkp": false + } + ], + "botol": [ + { + "botol_id": 1, + "barcode": "WO-2025-016-20250516-AM-T1-01", + "botol_nomor": "01", + "botol_kelompok": "Kimia", + "volume": "500 mL", + "pengawetan": "Asam Nitrat", + "parameter": ["Nitrat (NO3 terlarut)"] + }, + { + "botol_id": 2, + "barcode": "WO-2025-016-20250516-AM-T1-02", + "botol_nomor": "02", + "botol_kelompok": "Biologi", + "volume": "500 mL", + "pengawetan": "Disimpan dengan es", + "parameter": ["E. Coli"] + } + ] + }, + { + "titik_id": 2, + "tugas_id": "WO-2025-016", + "kode_sampel": "WO-2025-016-T2", + "bahan_uji": { + "id": 6, + "nama": "Limbah Domestik", + "kode": "LD" + }, + "deskripsi_lokasi": "Outlet Pabrik Tekstil", + "parameter": [ + { + "id": 27, + "nama": "pH", + "botol_kelompok": null, + "diukur_di_tkp": true + }, + { + "id": 28, + "nama": "BOD", + "botol_kelompok": "BOD", + "diukur_di_tkp": false + }, + { + "id": 34, + "nama": "Total Coliform", + "botol_kelompok": "Biologi", + "diukur_di_tkp": false + } + ], + "botol": [ + { + "botol_id": 3, + "barcode": "WO-2025-016-20250516-LD-T2-01", + "botol_nomor": "01", + "botol_kelompok": "BOD", + "volume": "500 mL", + "pengawetan": "Botol Gelap", + "parameter": ["BOD"] + }, + { + "botol_id": 4, + "barcode": "WO-2025-016-20250516-LD-T2-02", + "botol_nomor": "02", + "botol_kelompok": "Biologi", + "volume": "500 mL", + "pengawetan": "Disimpan dengan es", + "parameter": ["Total Coliform"] + } + ] + } +] +``` + +### 3. Data Hasil Pengukuran TKP +```json +[ + { + "pengukuran_id": 1, + "titik_id": 2, + "parameter_id": 27, + "parameter_nama": "pH", + "nilai": "7.2", + "satuan": "-", + "waktu_pengukuran": "2025-05-16 13:45:00", + "petugas": "Petugas_002", + "keterangan": "Kondisi cuaca cerah" + } +] +``` + +### 4. Data Hasil Analisis Laboratorium +```json +[ + { + "analisis_id": 1, + "botol_id": 1, + "parameter_id": 12, + "parameter_nama": "Nitrat (NO3 terlarut)", + "hasil": "3.2", + "satuan": "mg/L", + "metode": "SNI/APHA", + "waktu_analisis": "2025-05-17 10:30:00", + "analis": "Lab_001", + "status": "Selesai", + "keterangan": "Di bawah baku mutu" + }, + { + "analisis_id": 2, + "botol_id": 2, + "parameter_id": 24, + "parameter_nama": "E. Coli", + "hasil": "0", + "satuan": "MPN/100mL", + "metode": "SNI/APHA", + "waktu_analisis": "2025-05-17 14:20:00", + "analis": "Lab_002", + "status": "Selesai", + "keterangan": "Tidak terdeteksi" + }, + { + "analisis_id": 3, + "botol_id": 3, + "parameter_id": 28, + "parameter_nama": "BOD", + "hasil": "125", + "satuan": "mg/L", + "metode": "APHA 5210 B-2017", + "waktu_analisis": "2025-05-22 09:15:00", + "analis": "Lab_003", + "status": "Selesai", + "keterangan": "Melebihi baku mutu" + }, + { + "analisis_id": 4, + "botol_id": 4, + "parameter_id": 34, + "parameter_nama": "Total Coliform", + "hasil": "1600", + "satuan": "MPN/100mL", + "metode": "SNI", + "waktu_analisis": "2025-05-18 11:40:00", + "analis": "Lab_002", + "status": "Selesai", + "keterangan": "Melebihi baku mutu" + } +] +``` + +## Proses Cetak Laporan + +Setelah semua analisis selesai, sistem dapat mencetak laporan hasil pengujian yang mencakup: + +1. Informasi Work Order +2. Informasi Titik Sampel +3. Hasil Pengukuran di TKP +4. Hasil Analisis Laboratorium +5. Perbandingan dengan Baku Mutu +6. Tanda Tangan Penanggung Jawab + +Dengan format barcode yang telah ditentukan, sistem dapat dengan mudah melacak sampel dari pengambilan hingga pelaporan hasil. \ No newline at end of file