15 KiB
Proses Pembuatan Work Order (Berbasis Parameter Pengujian)
Database Schema
Tabel Bahan Uji
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
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
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
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
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
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).
- T1:
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
{
"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
[
{
"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
[
{
"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
[
{
"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:
- Informasi Work Order
- Informasi Titik Sampel
- Hasil Pengukuran di TKP
- Hasil Analisis Laboratorium
- Perbandingan dengan Baku Mutu
- Tanda Tangan Penanggung Jawab
Dengan format barcode yang telah ditentukan, sistem dapat dengan mudah melacak sampel dari pengambilan hingga pelaporan hasil.