java php laravel linux mysql sql bootstrap html css query java php laravel linux mysql sql bootstrap html css query

Wednesday, April 1, 2026

SQL DML 2

Basis Data SQL Lanjutan RMIK D3 Sem. 4

SQL DML Lanjutan: JOIN, GROUP BY & Query Laporan Morbiditas

Dari dua tabel terpisah hingga laporan morbiditas siap lapor ke Kemenkes — kuasai JOIN, COUNT, SUM, AVG, dan GROUP BY dengan analogi nyata yang bikin kamu bilang: "Oh, segini doang?"

5
Operator JOIN
4
Fungsi Agregat
3
Studi Kasus Nyata
1
Laporan Nasional

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?

💡
Fakta Menarik

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.

Tabel: pasien (kiri) & kunjungan (kanan)
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.

SQL — INNER JOIN
SELECT
  p.id_pasien,
  p.nama_pasien,
  k.kode_icd,
  k.tgl_kunjungan
FROM pasien p
INNER JOIN kunjungan k
  ON p.id_pasien = k.id_pasien;
📊 Hasil Query:

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!

SQL — LEFT JOIN
SELECT
  p.id_pasien,
  p.nama_pasien,
  k.kode_icd,
  k.tgl_kunjungan
FROM pasien p
LEFT JOIN kunjungan k
  ON p.id_pasien = k.id_pasien;

-- P004 (Dian) akan muncul dengan kode_icd = NULL
-- Sangat berguna untuk laporan pasien "tidak aktif"
🎯
Tips Pro

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]

🔢
COUNT()
Menghitung jumlah baris (atau nilai non-NULL). Contoh: berapa kali pasien berkunjung.
COUNT(*) atau COUNT(kolom)
SUM()
Menjumlahkan nilai numerik. Contoh: total biaya pelayanan per bulan.
SUM(biaya_tindakan)
📉
AVG()
Menghitung rata-rata. Contoh: rata-rata usia pasien per diagnosa.
AVG(usia_pasien)
📈
MAX/MIN
Nilai tertinggi/terendah. Contoh: pasien termuda/tertua yang dirawat.
MAX(usia), MIN(usia)

Cara Kerja GROUP BY — Step by Step

1
Tentukan kolom yang mau dikelompokkan

Misalnya: ingin melihat data per kode_icd, maka GROUP BY kode_icd.

2
Pilih fungsi agregat yang relevan

Untuk laporan frekuensi → COUNT(*). Untuk total biaya → SUM(biaya). Untuk rata-rata usia → AVG(usia).

3
Tambahkan HAVING untuk filter hasil agregat

WHERE dipakai sebelum GROUP BY (filter baris). HAVING dipakai sesudah GROUP BY (filter hasil agregat). Misal: hanya tampilkan diagnosa dengan ≥ 5 kunjungan.

SQL — GROUP BY + COUNT + HAVING
SELECT
  k.kode_icd,
  COUNT(*) AS jumlah_kunjungan,
  AVG(p.usia) AS rata_rata_usia,
  SUM(k.biaya_tindakan) AS total_biaya
FROM kunjungan k
INNER JOIN pasien p ON k.id_pasien = p.id_pasien
GROUP BY k.kode_icd
HAVING COUNT(*) >= 5
ORDER BY jumlah_kunjungan DESC;
⚡ Insight Penting

WHERE vs HAVING: Jangan sampai kebalik! WHERE memfilter baris sebelum pengelompokan—tidak bisa memakai hasil fungsi agregat. HAVING memfilter hasil setelah GROUP BY—dan ini yang bisa memakai COUNT, SUM, AVG. Urutan eksekusi SQL: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY. Hafal ini, hidupmu akan lebih mudah! 😄

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.

📋 Studi Kasus: Laporan 10 Besar Penyakit Puskesmas

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.

SQL — Laporan 10 Besar Penyakit
-- Laporan 10 Besar Penyakit Puskesmas X
-- Januari 2024 (format SIRS Kemenkes)
SELECT
  d.kode_icd,
  d.nama_diagnosa,
  COUNT(k.id_kunjungan) AS total_kasus,
  SUM(CASE WHEN p.jenis_kelamin = 'L' THEN 1 ELSE 0 END) AS kasus_laki,
  SUM(CASE WHEN p.jenis_kelamin = 'P' THEN 1 ELSE 0 END) AS kasus_perempuan,
  ROUND(AVG(p.usia), 1) AS rata_usia
FROM kunjungan k
INNER JOIN pasien p
  ON k.id_pasien = p.id_pasien
INNER JOIN diagnosa_icd d
  ON k.kode_icd = d.kode_icd
WHERE
  k.tgl_kunjungan BETWEEN '2024-01-01' AND '2024-01-31'
GROUP BY
  d.kode_icd, d.nama_diagnosa
ORDER BY
  total_kasus DESC
LIMIT 10;
🔍 Breakdown Query di Atas
CASE WHEN Trik keren untuk menghitung kasus laki-laki dan perempuan dalam satu query—tidak perlu query terpisah.
ROUND(AVG, 1) Membulatkan rata-rata usia ke 1 desimal—lebih rapi untuk laporan formal.
BETWEEN Filter rentang tanggal—lebih bersih dibanding pakai dua kondisi AND terpisah.
LIMIT 10 Membatasi output ke 10 diagnosa teratas—sesuai format "10 Besar Penyakit" laporan puskesmas.

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 Pelaporan Data Kesehatan Nasional Indonesia
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:

SQL — Validasi Data Morbiditas
-- 1. Cari kunjungan tanpa kode ICD (data tidak valid)
SELECT
  k.id_kunjungan,
  p.nama_pasien,
  k.tgl_kunjungan,
  k.kode_icd
FROM kunjungan k
LEFT JOIN pasien p ON k.id_pasien = p.id_pasien
WHERE k.kode_icd IS NULL
   OR k.kode_icd = '';

-- 2. Hitung persentase kelengkapan data per bulan
SELECT
  DATE_FORMAT(tgl_kunjungan, '%Y-%m') AS bulan,
  COUNT(*) AS total_kunjungan,
  SUM(CASE WHEN kode_icd IS NOT NULL
           AND kode_icd <> ''
           THEN 1 ELSE 0 END) AS lengkap,
  ROUND(
    SUM(CASE WHEN kode_icd IS NOT NULL
             AND kode_icd <> ''
             THEN 1 ELSE 0 END) * 100.0
    / COUNT(*), 2
  ) AS persen_kelengkapan
FROM kunjungan
GROUP BY bulan
ORDER BY bulan;
🚀
Tips Karir RMIK

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
🏥
Insight: Transformasi Digital Kesehatan Indonesia

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 →

🎓 Kesimpulan

Kita sudah menempuh perjalanan panjang hari ini—dari dua tabel sederhana hingga query laporan morbiditas nasional. Poin-poin utama yang wajib kamu bawa pulang:

  • INNER JOIN untuk data yang pasti terhubung; LEFT JOIN untuk audit kelengkapan data.
  • GROUP BY + COUNT/SUM/AVG = senjata utama laporan morbiditas dan statistik rumah sakit.
  • WHERE ≠ HAVING: WHERE untuk filter baris, HAVING untuk filter hasil agregat. Jangan kebalik!
  • Data morbiditas untuk SIRS, SIKDA, dan SATUSEHAT semuanya berbasis query SQL yang kamu pelajari hari ini.

SQL bukan mata kuliah yang harus kamu hafal—SQL adalah alat yang harus kamu pahami. Semakin sering praktik langsung di MySQL Workbench atau HeidiSQL, semakin natural query-query ini di jari kamu. Dan ingat: setiap laporan yang kamu hasilkan nanti bisa membantu pengambilan keputusan klinis yang nyata. That's the real power of database.

💬

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! 🙌

💬 Tulis Komentar
📤 Share Artikel
🔔 Subscribe Blog
#SQL #JOIN #GROUPBY #BasisData #RMIK #LaporanMorbiditas #SIRS #ICD10 #SistemInformasi #KuliahBasisData

📚 Referensi

  1. Date, C.J. (2004). An Introduction to Database Systems (8th ed.). Addison-Wesley. ISBN: 978-0321197849.
  2. Connolly, T., & Begg, C. (2015). Database Systems: A Practical Approach to Design, Implementation, and Management (6th ed.). Pearson Education. ISBN: 978-0132943260.
  3. Kementerian Kesehatan RI. (2008). Keputusan Menteri Kesehatan No. 129/Menkes/SK/II/2008 tentang Standar Pelayanan Minimal Rumah Sakit. Jakarta: Kemenkes RI.
  4. Rustiyanto, E. (2010). Statistik Rumah Sakit untuk Pengambilan Keputusan. Yogyakarta: Graha Ilmu. ISBN: 978-9797562793.
  5. Kementerian Kesehatan RI. (2022). Peraturan Menteri Kesehatan No. 24 Tahun 2022 tentang Rekam Medis. Jakarta: Kemenkes RI. Tersedia di: peraturan.bpk.go.id
  6. Silberschatz, A., Korth, H.F., & Sudarshan, S. (2020). Database System Concepts (7th ed.). McGraw-Hill Education. ISBN: 978-0078022159.
📌 META DESCRIPTION (155 karakter):

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.

SQL DML

BASIS DATA SQL DML REKAM MEDIS DIPLOMA 3 RMIK

SQL — DML Dasar: INSERT, SELECT, UPDATE, DELETE & Klausa WHERE, ORDER BY
dalam Skenario Data Pasien & Kunjungan Rekam Medis

Kalau kamu pikir SQL itu susah — tunggu sampai kamu tahu betapa powerful-nya empat perintah ini buat mengelola data pasien di rumah sakit. Serius, ini game changer.

4
Perintah DML Core
2
Klausa Penting
10+
Contoh Query
1
Studi Kasus Nyata

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.

💡
FAKTA MENARIK

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.

📊 Empat Pilar DML dalam Rekam Medis
INSERT
Mendaftarkan pasien baru
🔍
SELECT
Mencari data kunjungan
✏️
UPDATE
Memperbarui diagnosa
🗑️
DELETE
Menghapus data duplikat

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!

📋 Tabel 1: pasien
Kolom Tipe Data Constraint Keterangan
no_rm VARCHAR(10) PRIMARY KEY Nomor rekam medis unik
nama_pasien VARCHAR(100) NOT NULL Nama lengkap pasien
tanggal_lahir DATE Format YYYY-MM-DD
jenis_kelamin ENUM('L','P') L = Laki-laki, P = Perempuan
alamat TEXT Alamat lengkap domisili
📋 Tabel 2: kunjungan
Kolom Tipe Data Constraint Keterangan
id_kunjungan INT AUTO_INCREMENT PRIMARY KEY ID otomatis
no_rm VARCHAR(10) FOREIGN KEY Referensi ke tabel pasien
tanggal_kunjungan DATE NOT NULL Tanggal datang
keluhan TEXT Keluhan utama pasien
diagnosa VARCHAR(200) Diagnosa dokter (ICD-10)

➕ 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.

📐 Sintaks Dasar INSERT
INSERT INTO nama_tabel (kolom1, kolom2, ...)
VALUES (nilai1, nilai2, ...);
📌 Skenario: Pasien Baru Bernama Budi Santoso Datang Berobat
1
Masukkan data pasien ke tabel pasien
INSERT 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');
2
Catat kunjungan pertamanya di tabel kunjungan
INSERT INTO kunjungan (no_rm, tanggal_kunjungan, keluhan, diagnosa)
VALUES ('RM-2024-001', '2024-03-15', 'Batuk dan demam 3 hari', 'J06.9 - ISPA');
3
Bonus: INSERT banyak data sekaligus (Multi-Row INSERT)
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');
TIP PRAKTIS

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.

📐 Sintaks Lengkap SELECT
SELECT kolom1, kolom2, ...    -- atau * untuk semua kolom
FROM   nama_tabel
WHERE  kondisi               -- opsional: filter data
ORDER BY kolom [ASC|DESC];   -- opsional: urutan tampil
📌 Beragam Skenario SELECT di Rekam Medis:
🔹 1. Tampilkan SEMUA data pasien
SELECT * FROM pasien;

⚠️ Tanda bintang (*) = ambil semua kolom. Di production, hindari ini jika tabelnya besar!

🔹 2. Cari pasien berdasarkan nomor RM (WHERE)
SELECT no_rm, nama_pasien, alamat
FROM pasien
WHERE no_rm = 'RM-2024-001';
🔹 3. Cari kunjungan pasien di bulan Maret 2024 + urutkan terbaru (WHERE + ORDER BY)
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).

🔹 4. Filter pasien perempuan, urutkan nama A-Z (WHERE + ORDER BY multi-guna)
SELECT nama_pasien, tanggal_lahir, alamat
FROM pasien
WHERE jenis_kelamin = 'P'
ORDER BY nama_pasien ASC;
🔹 5. Cari kunjungan dengan diagnosis tertentu menggunakan LIKE
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.

🎯
INSIGHT PENTING

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

📐 Sintaks UPDATE
UPDATE nama_tabel
SET    kolom1 = nilai_baru1,
       kolom2 = nilai_baru2
WHERE  kondisi;
🔹 Skenario: Pasien Budi Santoso pindah alamat dan nomor RM yang dicatat salah perlu dikoreksi diagnosa
-- 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;
⚠️
PERINGATAN KRITIS!

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

📐 Sintaks DELETE
DELETE FROM nama_tabel
WHERE       kondisi;
🔹 Skenario: Hapus kunjungan yang ternyata diinput ganda (duplikat)
-- 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!

🛡️
TIPS KEAMANAN DATA REKAM MEDIS
📌 Gunakan transaksi (BEGIN/COMMIT/ROLLBACK) saat melakukan UPDATE atau DELETE massal agar bisa dibatalkan jika ada kesalahan.
📌 Terapkan soft delete — daripada benar-benar hapus, tambahkan kolom is_deleted BOOLEAN dan ubah nilainya. Di rekam medis, data pasien tidak boleh dihapus permanen tanpa prosedur resmi.
📌 Hal ini sesuai dengan Permenkes No. 269/MENKES/PER/III/2008 tentang Rekam Medis yang mewajibkan penyimpanan data rekam medis minimal 5 tahun. [5]

🔎 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.

Operator Fungsi Contoh di Rekam Medis
= Sama dengan WHERE no_rm = 'RM-001'
<> atau != Tidak sama dengan WHERE jenis_kelamin <> 'L'
BETWEEN ... AND Antara dua nilai WHERE tgl BETWEEN '2024-01-01' AND '2024-12-31'
LIKE '%..%' Pencocokan pola teks WHERE diagnosa LIKE '%diabetes%'
IN (...) Cocok salah satu dari daftar WHERE no_rm IN ('RM-001','RM-002')
IS NULL Nilai kosong/tidak terisi WHERE diagnosa IS NULL
AND / OR / NOT Gabungkan kondisi WHERE jk='P' AND umur > 40
🌟
INSIGHT DUNIA KERJA RMIK

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

  1. Connolly, T. M., & Begg, C. E. (2015). Database Systems: A Practical Approach to Design, Implementation, and Management (6th ed.). Pearson Education.
  2. Silberschatz, A., Korth, H. F., & Sudarshan, S. (2020). Database System Concepts (7th ed.). McGraw-Hill Education.
  3. Date, C. J. (2012). An Introduction to Database Systems (8th ed.). Addison-Wesley.
  4. Ramakrishnan, R., & Gehrke, J. (2003). Database Management Systems (3rd ed.). McGraw-Hill.
  5. Kementerian Kesehatan RI. (2008). Peraturan Menteri Kesehatan RI Nomor 269/MENKES/PER/III/2008 tentang Rekam Medis. Jakarta: Kemenkes RI.
  6. Benson, T., & Grieve, G. (2021). Principles of Health Interoperability: SNOMED CT, HL7 and FHIR (4th ed.). Springer.
🎓 Kesimpulan: Kamu Sudah Pegang Kuncinya!

Dalam satu artikel ini, kamu sudah mempelajari empat perintah inti SQL DML yang menjadi tulang punggung sistem rekam medis digital:

INSERT — Tambah data baru pasien dan kunjungan
SELECT — Ambil dan tampilkan data sesuai kebutuhan
UPDATE — Perbarui informasi yang berubah
DELETE — Hapus data duplikat dengan bijak

Ditambah dua klausa super penting: WHERE untuk filter presisi dan ORDER BY untuk menampilkan data secara terurut. Ini bukan teori belaka — ini keahlian yang langsung kamu pakai saat kerja di TPPRJ, coding SIMRS, atau proyek skripsi kamu nanti.

💬 Yuk Diskusi Bareng!

Artikel ini bermanfaat? Coba tantangan kecil ini: Tulis query SELECT untuk menampilkan semua kunjungan pasien perempuan di bulan Januari 2024, diurutkan berdasarkan nama pasien A-Z. Tulis jawaban kamu di kolom komentar — biar kita koreksi bareng! 🎯

📝 Tulis Komentar 🔔 Subscribe Blog 📤 Share ke Teman
#SQL #BasisData #RekamMedis #DML #RMIK #Diploma3 #SIMRS #MySQL
📋 Meta Description (155 karakter)

Pelajari SQL DML INSERT, SELECT, UPDATE, DELETE + WHERE & ORDER BY lewat skenario data pasien rekam medis. Cocok untuk mahasiswa D3 RMIK semester 4!

saifiahmada.com adalah blog belajar programming Indonesia, membahas lengkap materi bahasa pemrograman: code HTML, CSS, Bootstrap, Desain, PHP, MySQL, coding Java, Query, SQL, dan dunia linux