Bayangkan kamu lagi kerja sebagai petugas rekam medis di sebuah rumah sakit. Di depan kamu ada ratusan folder fisik pasien, tumpukan kertas kunjungan, dan petugas lain yang sudah antre minta data. Kaos, kan? Nah, itulah kenapa SQL DML (Data Manipulation Language) — khususnya perintah INSERT, SELECT, UPDATE, dan DELETE — menjadi tulang punggung sistem informasi rekam medis modern.
Artikel ini bukan sekadar teori kering. Kamu akan belajar cara kerja SQL DML dasar lewat skenario nyata: mengelola data pasien dan kunjungan rekam medis. Setiap query punya konteks, setiap perintah punya "cerita". Siap? Mari kita mulai.
Menurut Connolly & Begg (2015) dalam Database Systems: A Practical Approach to Design, Implementation, and Management, DML adalah komponen SQL yang paling sering digunakan dalam aplikasi sehari-hari — lebih dari 80% operasi database adalah operasi DML, bukan DDL. Artinya, skill ini yang paling "laku" di dunia kerja! [1]
🗄️ Apa Itu SQL DML dan Kenapa Penting di RMIK?
SQL (Structured Query Language) terbagi jadi beberapa sublanguage. DDL untuk bikin struktur tabel, DCL untuk hak akses, dan DML untuk manipulasi data. Dalam konteks rekam medis, DML adalah "tangan" yang menyentuh data pasien setiap hari.
Menurut Silberschatz, Korth, & Sudarshan (2020) dalam Database System Concepts (7th ed.), DML memungkinkan pengguna untuk mengakses dan memanipulasi data sebagaimana yang telah diorganisir oleh model data yang berlaku. [2] Dalam sistem rekam medis, ini berarti kamu bisa dengan presisi mengelola ribuan rekaman pasien tanpa takut data kacau.
🏥 Skenario: Database Rekam Medis Puskesmas Harapan
Sepanjang artikel ini, kita akan pakai skenario Puskesmas Harapan yang punya dua tabel utama. Anggap kamu adalah petugas IT rekam medis yang baru onboarding. Database-nya sudah ada, tinggal kamu yang pegang kendali query-nya!
pasienkunjungan➕ INSERT: Mendaftarkan Pasien Baru ke Sistem
Perintah INSERT ibarat formulir pendaftaran pasien yang langsung masuk ke database. Saat pasien baru datang ke loket, petugas TPPRJ (Tempat Penerimaan Pasien Rawat Jalan) harus memasukkan data ke sistem. Inilah momennya INSERT bekerja.
INSERT INTO nama_tabel (kolom1, kolom2, ...) VALUES (nilai1, nilai2, ...);
pasienINSERT INTO pasien (no_rm, nama_pasien, tanggal_lahir, jenis_kelamin, alamat) VALUES ('RM-2024-001', 'Budi Santoso', '1990-05-15', 'L', 'Jl. Merdeka No. 12, Banjarmasin');
kunjunganINSERT INTO kunjungan (no_rm, tanggal_kunjungan, keluhan, diagnosa) VALUES ('RM-2024-001', '2024-03-15', 'Batuk dan demam 3 hari', 'J06.9 - ISPA');
INSERT INTO pasien (no_rm, nama_pasien, tanggal_lahir, jenis_kelamin, alamat) VALUES ('RM-2024-002', 'Siti Rahayu', '1985-11-20', 'P', 'Jl. Ahmad Yani Km. 5'), ('RM-2024-003', 'Ahmad Fauzi', '2001-07-30', 'L', 'Jl. Lambung Mangkurat No. 3');
Selalu sertakan nama kolom saat INSERT, meski kamu mengisi semua kolom. Kenapa? Karena kalau suatu hari struktur tabelnya berubah (kolom ditambah), query kamu tetap aman dan tidak error. Ini kebiasaan yang akan kamu syukuri saat kerja di proyek besar! Best practice ini dianjurkan oleh Date (2012) dalam An Introduction to Database Systems. [3]
🔍 SELECT, WHERE & ORDER BY: Menggali Data Seperti Detektif
Perintah SELECT adalah perintah yang paling sering kamu gunakan — jauh melebihi yang lain. Kalau INSERT seperti menulis catatan, SELECT adalah membaca dan mencari catatan itu kembali. Tambahkan klausa WHERE sebagai filter spesifik dan ORDER BY untuk mengurutkan hasilnya.
SELECT kolom1, kolom2, ... -- atau * untuk semua kolom FROM nama_tabel WHERE kondisi -- opsional: filter data ORDER BY kolom [ASC|DESC]; -- opsional: urutan tampil
SELECT * FROM pasien;
⚠️ Tanda bintang (*) = ambil semua kolom. Di production, hindari ini jika tabelnya besar!
SELECT no_rm, nama_pasien, alamat FROM pasien WHERE no_rm = 'RM-2024-001';
SELECT id_kunjungan, no_rm, tanggal_kunjungan, diagnosa FROM kunjungan WHERE tanggal_kunjungan BETWEEN '2024-03-01' AND '2024-03-31' ORDER BY tanggal_kunjungan DESC;
💡 DESC = terbaru tampil di atas. ASC = terlama tampil di atas (default).
SELECT nama_pasien, tanggal_lahir, alamat FROM pasien WHERE jenis_kelamin = 'P' ORDER BY nama_pasien ASC;
SELECT no_rm, tanggal_kunjungan, keluhan, diagnosa FROM kunjungan WHERE diagnosa LIKE '%ISPA%' ORDER BY tanggal_kunjungan DESC;
💡 LIKE '%ISPA%' = cari yang mengandung kata "ISPA" di mana saja dalam kolom diagnosa.
Klausa WHERE bisa dikombinasikan dengan operator AND, OR, dan NOT untuk membuat kondisi yang lebih kompleks. Menurut Ramakrishnan & Gehrke (2003) dalam Database Management Systems, kemampuan filter SQL inilah yang menjadikannya jauh lebih efisien dibanding pemrosesan manual — bayangkan mencari 10 dari 10.000 rekam medis dalam milidetik! [4]
✏️ UPDATE & DELETE: Merawat Akurasi Data Rekam Medis
Data rekam medis bukan sesuatu yang statis. Alamat pasien berubah, diagnosa direvisi dokter, bahkan ada data yang harus dihapus karena duplikat. Di sinilah UPDATE dan DELETE menjadi senjata andalan — tapi juga senjata yang harus dipakai dengan hati-hati!
✏️ UPDATE: Perbarui Data yang Berubah
UPDATE nama_tabel SET kolom1 = nilai_baru1, kolom2 = nilai_baru2 WHERE kondisi;
-- Update alamat pasien UPDATE pasien SET alamat = 'Jl. Sultan Adam No. 88, Banjarmasin' WHERE no_rm = 'RM-2024-001';
-- Revisi diagnosa kunjungan (dokter mengoreksi kode ICD) UPDATE kunjungan SET diagnosa = 'J11.1 - Influenza dengan pneumonia' WHERE id_kunjungan = 1;
UPDATE tanpa WHERE = bencana! Kalau kamu nulis UPDATE pasien SET alamat = 'Jakarta' tanpa klausa WHERE, semua baris di tabel pasien akan diubah alamatnya jadi Jakarta. Ini salah satu human error paling sering terjadi di database production. Selalu verifikasi kondisi WHERE sebelum eksekusi UPDATE!
🗑️ DELETE: Hapus Data dengan Penuh Tanggung Jawab
DELETE FROM nama_tabel WHERE kondisi;
-- Step 1: CEK DULU sebelum hapus SELECT * FROM kunjungan WHERE id_kunjungan = 7; -- Step 2: Baru hapus setelah yakin DELETE FROM kunjungan WHERE id_kunjungan = 7;
✨ Pro tip: Selalu jalankan SELECT dengan kondisi yang sama dulu sebelum DELETE. Pastikan kamu hapus yang benar!
is_deleted BOOLEAN dan ubah nilainya. Di rekam medis, data pasien tidak boleh dihapus permanen tanpa prosedur resmi.🔎 Referensi Cepat: Operator WHERE & ORDER BY
Ini cheat sheet yang wajib kamu tempel di dinding kamar — atau minimal disave di notesmu. Semua operator ini bisa dipakai di semua DML yang pakai WHERE.
Dalam standar HL7 FHIR (Fast Healthcare Interoperability Resources) yang menjadi acuan interoperabilitas data kesehatan global, kemampuan query SQL dasar — termasuk SELECT dengan WHERE dan ORDER BY — masih menjadi fondasi back-end sistem informasi rumah sakit. Menurut Benson & Grieve (2021) dalam Principles of Health Interoperability, petugas rekam medis yang paham SQL minimal pada level query dasar punya nilai tambah signifikan dalam era SIMRS (Sistem Informasi Manajemen Rumah Sakit) berbasis digital. [6]
📚 Referensi
- Connolly, T. M., & Begg, C. E. (2015). Database Systems: A Practical Approach to Design, Implementation, and Management (6th ed.). Pearson Education.
- Silberschatz, A., Korth, H. F., & Sudarshan, S. (2020). Database System Concepts (7th ed.). McGraw-Hill Education.
- Date, C. J. (2012). An Introduction to Database Systems (8th ed.). Addison-Wesley.
- Ramakrishnan, R., & Gehrke, J. (2003). Database Management Systems (3rd ed.). McGraw-Hill.
- Kementerian Kesehatan RI. (2008). Peraturan Menteri Kesehatan RI Nomor 269/MENKES/PER/III/2008 tentang Rekam Medis. Jakarta: Kemenkes RI.
- Benson, T., & Grieve, G. (2021). Principles of Health Interoperability: SNOMED CT, HL7 and FHIR (4th ed.). Springer.
Pelajari SQL DML INSERT, SELECT, UPDATE, DELETE + WHERE & ORDER BY lewat skenario data pasien rekam medis. Cocok untuk mahasiswa D3 RMIK semester 4!