Bayangin kamu kerja di puskesmas. Ada dua buku besar di mejamu: satu berisi data pasien (nama, NIK, alamat), satu lagi berisi data diagnosa (kode ICD-10, tanggal periksa, nama dokter). Pertanyaannya: gimana cara tahu pasien mana yang kena diagnosa apa? Kalau dijawab manual, kamu bakalan lembur sampai pagi. Tapi kalau kamu tahu SQL DML Lanjutan—khususnya JOIN, GROUP BY, dan fungsi agregat—jawabannya cuma butuh tiga detik. Serius.
Di artikel ini, kita bahas tuntas konsep JOIN (INNER & LEFT), fungsi agregat COUNT, SUM, AVG, klausa GROUP BY, hingga cara menyusun query laporan morbiditas yang siap digunakan untuk pelaporan data nasional. Semua dikemas dengan analogi konkret, contoh tabel rekam medis, dan sintaks SQL yang bisa langsung kamu coba. Siap?
Berdasarkan Permenkes No. 24 Tahun 2022 tentang Rekam Medis, setiap fasilitas pelayanan kesehatan wajib melaporkan data morbiditas menggunakan kode ICD-10. Artinya, query SQL yang kamu pelajari hari ini benar-benar dipakai di dunia nyata untuk pelaporan ke Kemenkes! Baca Permenkes No. 24/2022 →
1. Apa Itu JOIN? Analogi Dua Buku Besar
JOIN adalah perintah SQL yang menggabungkan baris-baris dari dua tabel atau lebih berdasarkan kolom kunci yang saling berhubungan. Menurut Date (2004) dalam bukunya An Introduction to Database Systems, JOIN merupakan operasi fundamental dalam aljabar relasional yang memungkinkan kita mengekstrak informasi dari beberapa relasi sekaligus.[1]
Analoginya gini: tabel pasien itu kayak KTP—identitas dasar. Tabel kunjungan itu kayak buku agenda dokter. JOIN = menyandingkan KTP dengan buku agenda supaya kita tahu siapa yang datang kapan dan kenapa.
| id_pasien | nama_pasien | id_kunjungan | id_pasien (FK) | kode_icd | tgl_kunjungan |
|---|---|---|---|---|---|
| P001 | Rina Wulandari | K001 | P001 | J06.9 | 2024-01-10 |
| P002 | Budi Santoso | K002 | P001 | A09 | 2024-01-15 |
| P003 | Siti Rahayu | K003 | P003 | J18.9 | 2024-01-18 |
| P004 | Dian Permata | — | — (belum kunjungan) | — | — |
1a. INNER JOIN — "Hanya yang Cocok"
INNER JOIN mengembalikan baris yang memiliki pasangan di kedua tabel. Ibarat ajang kencan: hanya pasangan yang match saja yang maju ke babak selanjutnya. Pasien P004 (Dian Permata) tidak akan muncul karena belum ada kunjungan.
Hanya 3 baris yang muncul: P001 (2×), P003 (1×). P002 (Budi) dan P004 (Dian) tidak muncul karena P002 ada di kunjungan tapi kita lihat data di atas—sesuai FK. P004 tidak muncul sama sekali karena tidak punya kunjungan.
1b. LEFT JOIN — "Semua dari Kiri, Meski Jomblo"
LEFT JOIN mengembalikan semua baris dari tabel kiri (pasien), ditambah baris yang cocok dari tabel kanan (kunjungan). Kalau tidak ada pasangan di kanan, kolom dari tabel kanan akan berisi NULL. Berguna banget untuk menemukan pasien yang belum pernah berkunjung!
Kapan pakai INNER vs LEFT JOIN? Gunakan INNER JOIN ketika kamu hanya mau data yang benar-benar terhubung (misal: laporan kunjungan aktif). Gunakan LEFT JOIN ketika kamu perlu audit data—termasuk pasien yang belum punya kunjungan, atau obat yang belum pernah diresepkan. Pilihan JOIN yang salah bisa bikin laporan kamu kehilangan data penting!
2. GROUP BY & Fungsi Agregat: COUNT, SUM, AVG
Kalau JOIN adalah cara menggabungkan data, maka GROUP BY adalah cara merangkum data. Bayangkan kamu punya 1.000 baris data kunjungan. Tanpa GROUP BY, kamu lihat satu per satu. Dengan GROUP BY, kamu bisa langsung tahu: "Bulan Januari ada berapa kunjungan per diagnosa?"
Menurut Connolly & Begg (2015) dalam Database Systems: A Practical Approach to Design, Implementation, and Management, fungsi agregat adalah fungsi yang menerima sekumpulan nilai sebagai input dan menghasilkan satu nilai tunggal sebagai output.[2]
Cara Kerja GROUP BY — Step by Step
Misalnya: ingin melihat data per kode_icd, maka GROUP BY kode_icd.
Untuk laporan frekuensi → COUNT(*). Untuk total biaya → SUM(biaya). Untuk rata-rata usia → AVG(usia).
WHERE dipakai sebelum GROUP BY (filter baris). HAVING dipakai sesudah GROUP BY (filter hasil agregat). Misal: hanya tampilkan diagnosa dengan ≥ 5 kunjungan.
3. Query Laporan Morbiditas: Dari Database ke Kemenkes
Ini bagian yang bikin SQL terasa meaningful banget buat kamu sebagai calon perekam medis. Laporan morbiditas adalah laporan tentang frekuensi penyakit (kesakitan) di suatu wilayah dalam periode tertentu. Di Indonesia, laporan ini disampaikan menggunakan format standar dan dikirim ke Dinas Kesehatan serta Kemenkes.
Berdasarkan Keputusan Menteri Kesehatan Nomor 129/Menkes/SK/II/2008 tentang Standar Pelayanan Minimal Rumah Sakit, data morbiditas merupakan salah satu indikator kinerja layanan yang wajib dilaporkan secara periodik.[3] Format pelaporan nasional mengacu pada Sistem Informasi Rumah Sakit (SIRS) yang dikelola oleh Kemenkes RI.
Puskesmas X butuh laporan "10 Besar Penyakit" bulan Januari 2024 dalam format kode ICD-10. Data ada di tiga tabel: pasien, kunjungan, dan diagnosa_icd (nama diagnosa). Kita butuh JOIN + GROUP BY + ORDER BY + LIMIT.
4. Pelaporan Data Nasional: SIRS, SIKDA, dan Alur Datanya
Query yang kamu buat tadi tidak hidup dalam vakum. Ada sistem yang lebih besar di atasnya. Indonesia memiliki beberapa platform pelaporan data kesehatan nasional yang relevan dengan profesimu sebagai RMIK:
| Sistem | Kepanjangan | Fungsi Utama | Data Morbiditas |
|---|---|---|---|
| SIRS | Sistem Informasi Rumah Sakit | Pelaporan data RS ke Kemenkes secara online | ✅ Ya (RL 2.1) |
| SIKDA | Sistem Informasi Kesehatan Daerah | Pelaporan dari puskesmas ke Dinkes Kab/Kota | ✅ Ya (LB1) |
| SEHAT | Sistem Elektronik Kesehatan (platform baru) | Integrasi nasional data kesehatan (pengganti SIRS) | ✅ Terintegrasi |
| INA-CBGs | Indonesian Case Based Groups | Penentuan tarif klaim BPJS berdasar diagnosis | ⚡ ICD-10 based |
Menurut Rustiyanto (2010) dalam Statistik Rumah Sakit untuk Pengambilan Keputusan, kualitas pelaporan morbiditas sangat bergantung pada ketepatan pengkodean diagnosis dan kelengkapan entri data di sistem informasi rumah sakit.[4] Di sinilah peran SQL sebagai alat query dan validasi data menjadi sangat krusial.
Query Validasi Sebelum Pelaporan Nasional
Sebelum data dikirim ke sistem nasional, kamu perlu memvalidasi kelengkapan data. Ini query yang wajib kamu jalankan:
Di dunia kerja, kemampuan membuat query validasi data sebelum pelaporan nasional adalah skill yang sangat dicari. Banyak rumah sakit membutuhkan staf rekam medis yang tidak hanya bisa entry data, tapi juga bisa "berbicara dengan database". Kalau kamu mahir SQL untuk SIRS dan INA-CBGs, nilai tawar di pasar kerja kamu langsung naik kelas! 💼
5. Ringkasan: Kapan Pakai Apa?
| Fitur SQL | Kegunaan di RMIK | Kapan Digunakan | Output Laporan |
|---|---|---|---|
| INNER JOIN | Gabungkan data pasien dengan kunjungan aktif | Laporan kunjungan, tagihan BPJS | Hanya data yang cocok di kedua tabel |
| LEFT JOIN | Audit pasien belum kunjungan/belum terdiagnosa | Validasi kelengkapan data | Semua baris tabel kiri + NULL jika tidak cocok |
| GROUP BY | Rekap per diagnosa, per bulan, per poli | Semua laporan berkategori | Ringkasan terkelompok |
| COUNT(*) | Hitung frekuensi penyakit (morbiditas) | 10 Besar Penyakit, LB1 Puskesmas | Jumlah kasus |
| SUM() | Total biaya, total hari rawat | Laporan keuangan, RL 3.4 | Total nilai numerik |
| AVG() | Rata-rata LOS (Length of Stay), rata-rata usia | Indikator kinerja RS (BOR, LOS, TOI) | Nilai rata-rata |
Kemenkes RI sedang mendorong implementasi Platform SATUSEHAT sebagai tulang punggung interoperabilitas data kesehatan nasional. Setiap fasilitas kesehatan akan terhubung real-time. Artinya, SQL yang kamu pelajari hari ini adalah fondasi dari sistem yang akan kamu gunakan sepanjang karir. Tidak ada kata "ini cuma teori"—ini skill hidup! Cek lebih lanjut di satusehat.kemkes.go.id →
Bagaimana, Ada yang Masih Bikin Bingung?
Drop pertanyaanmu di kolom komentar di bawah! Mau nanya soal perbedaan JOIN, cara debug query yang error, atau minta contoh kasus lain buat tugasmu—semua boleh. Kalau artikel ini nambah wawasanmu, share ke teman sekelas—siapa tahu mereka juga lagi berjuang dengan materi yang sama! 🙌
📚 Referensi
- Date, C.J. (2004). An Introduction to Database Systems (8th ed.). Addison-Wesley. ISBN: 978-0321197849.
- Connolly, T., & Begg, C. (2015). Database Systems: A Practical Approach to Design, Implementation, and Management (6th ed.). Pearson Education. ISBN: 978-0132943260.
- Kementerian Kesehatan RI. (2008). Keputusan Menteri Kesehatan No. 129/Menkes/SK/II/2008 tentang Standar Pelayanan Minimal Rumah Sakit. Jakarta: Kemenkes RI.
- Rustiyanto, E. (2010). Statistik Rumah Sakit untuk Pengambilan Keputusan. Yogyakarta: Graha Ilmu. ISBN: 978-9797562793.
- Kementerian Kesehatan RI. (2022). Peraturan Menteri Kesehatan No. 24 Tahun 2022 tentang Rekam Medis. Jakarta: Kemenkes RI. Tersedia di: peraturan.bpk.go.id
- Silberschatz, A., Korth, H.F., & Sudarshan, S. (2020). Database System Concepts (7th ed.). McGraw-Hill Education. ISBN: 978-0078022159.
Pelajari SQL DML lanjutan: INNER JOIN, LEFT JOIN, GROUP BY, COUNT, SUM, AVG, hingga query laporan morbiditas untuk pelaporan SIRS nasional. Panduan lengkap D3 RMIK.
No comments:
Post a Comment