Ketika Pasien, Dokter, dan Poli Saling Terhubung: Relasi pada Pelayanan Kesehatan
Cara menghubungkan tabel lewat primary key dan foreign key supaya data kunjungan pasien tidak berjalan sendiri-sendiri.
Bayangkan kamu bertugas di loket pendaftaran sebuah puskesmas. Seorang bapak datang dengan keluhan batuk. Kamu mencatat namanya di tabel pasien, lalu mencatat dokter jaga di tabel dokter. Tapi di mana kamu menulis bahwa bapak ini diperiksa dokter itu, di poli umum, pada hari ini? Tanpa penghubung, tabel-tabelmu hanya tumpukan data yang saling cuek.
Di sinilah relasi basis data pelayanan kesehatan berperan. Artikel ini adalah bagian dari seri Kuliah Basis Data (Artikel 4 dari 16). Setelah memahami anatomi tabel, atribut, dan record di artikel sebelumnya, sekarang kamu belajar menghubungkan entitas pasien, dokter, poli, dan kunjungan menjadi satu alur data yang utuh.
Setelah membaca, kamu mampu menerapkan konsep relasional pada kasus kesehatan dan menghubungkan entitas serta data pada kasus pelayanan kesehatan.
Mengapa Relasi Basis Data Pelayanan Kesehatan Itu Penting?
Coba bayangkan kartu pasien di lemari arsip. Satu map berisi identitas, riwayat kunjungan, nama dokter, dan hasil diagnosis. Di basis data relasional, semua itu tidak ditumpuk dalam satu tabel raksasa. Datanya dipecah ke beberapa tabel kecil yang rapi, lalu dihubungkan lewat kunci. Edgar F. Codd memperkenalkan gagasan ini pada tahun 1970 (Codd, 1970).
Kenapa dipecah? Karena kalau identitas pasien kamu tulis ulang di setiap kunjungan, masalah muncul cepat. Pasien pindah alamat, dan kamu harus mengubahnya di puluhan baris. Satu baris terlewat, dan datanya tidak konsisten. Dengan relasi, identitas pasien cukup tersimpan sekali, lalu kunjungan hanya "menunjuk" ke pasien tersebut.
Primary Key (PK) = atribut yang mengidentifikasi satu record secara unik di dalam tabelnya.
Foreign Key (FK) = atribut di satu tabel yang nilainya merujuk ke PK di tabel lain.
Relasi = FK (tabel anak) ➜ PK (tabel induk)
Pakai analogi nomor KTP. Nomor itu unik per orang (PK), dan formulir apa pun yang menyebut nomor KTP-mu sedang "menunjuk" ke dirimu (FK). Di rekam medis, nomor rekam medis (No. RM) memainkan peran yang sama.
Tiga Jenis Relasi dalam Basis Data Pelayanan Kesehatan
Relasi punya "kardinalitas", yaitu aturan berapa record di satu tabel yang boleh terhubung dengan record di tabel lain (Elmasri & Navathe, 2016). Ada tiga jenis yang wajib kamu kuasai, dan semuanya muncul di puskesmas atau rumah sakit.
Relasi paling sering kamu temui adalah one-to-many. Pasien yang sama bisa datang berkali-kali, tetapi setiap kunjungan hanya milik satu pasien. Relasi many-to-many butuh perhatian ekstra karena tidak bisa dipasang langsung. Kamu membuat tabel perantara, misalnya jadwal_praktik, yang menyimpan pasangan dokter dan poli.
Tabel kunjungan adalah "jantung" basis data pelayanan. Ia menyimpan tiga foreign key sekaligus: pasien, dokter, dan poli. Satu baris kunjungan menjawab pertanyaan siapa, diperiksa siapa, di mana, dan kapan.
Berikut gambaran hubungan antartabel dalam bentuk diagram teks. Panah menunjukkan arah rujukan dari foreign key ke primary key.
┌──────────┐ 1 N ┌─────────────┐ N 1 ┌──────────┐
│ PASIEN │──────────│ KUNJUNGAN │──────────│ POLI │
│ PK no_rm │ │ PK id_kunj │ │ PK id_poli│
└──────────┘ │ FK no_rm │ └─────┬────┘
│ FK id_dokter│ │ 1
┌──────────┐ 1 N │ FK id_poli │ │
│ DOKTER │──────────│ tgl, keluhan│ ┌─────┴──────────┐
│PK id_dokt│ └─────────────┘ │ JADWAL_PRAKTIK │
└────┬─────┘ 1 N │ FK id_dokter │
└──────────────────────────────────────────│ FK id_poli │
└────────────────┘
Langkah Membangun Relasi Basis Data Pelayanan Kesehatan
Kamu tidak perlu langsung menulis kode. Ikuti lima langkah berikut, urut dari kertas dulu baru ke SQL.
Berikut implementasinya dalam SQL. Urutan pembuatan penting: tabel induk dulu, baru tabel anak.
Hati-hati memakai ON DELETE CASCADE pada data klinis. Menghapus satu pasien bisa ikut menghapus seluruh riwayat kunjungannya. Rekam medis punya aturan penyimpanan dan kerahasiaan, jadi baca Permenkes No. 24 Tahun 2022 tentang Rekam Medis sebelum menentukan perilaku hapus.
Membaca Relasi Basis Data Pelayanan Kesehatan dengan JOIN
Data yang sudah terhubung baru terasa gunanya saat kamu menggabungkannya kembali. Perintah JOIN mengikuti "benang" foreign key untuk menyatukan tabel. Tanpa JOIN, tabel kunjungan hanya berisi deretan angka kode yang sulit dibaca manusia.
Query ini menghasilkan daftar kunjungan hari itu lengkap dengan nama pasien, dokter, dan poli. Ini mirip laporan harian yang mungkin kamu buat di unit rekam medis. Perhatikan pola ON k.no_rm = p.no_rm: kondisi JOIN hampir selalu berupa pasangan foreign key dan primary key.
Gagasan model relasional berasal dari makalah Codd tahun 1970 yang ditulis di IBM. Lebih dari lima dekade kemudian, prinsip yang sama masih menjadi dasar sistem informasi rumah sakit yang kamu temui sekarang.
Mengembangkan Relasi: Diagnosis dan Tindakan
Kunjungan jarang berhenti pada keluhan saja. Dokter menegakkan diagnosis, lalu kadang melakukan tindakan. Dalam rekam medis, satu kunjungan bisa punya lebih dari satu diagnosis, misalnya hipertensi dan diabetes sekaligus. Itu berarti relasinya satu kunjungan ke banyak diagnosis (1:N). Kamu cukup membuat tabel diagnosis_kunjungan yang berisi id_kunjungan sebagai foreign key dan kode penyakit dari ICD-10.
Pola yang sama berlaku untuk tindakan medis. Setiap kali kebutuhan data baru muncul, tanyakan dua hal: data ini milik siapa, dan berapa banyak yang boleh dimiliki? Jawabannya langsung menunjukkan di tabel mana foreign key harus dipasang. Latihan sederhana ini membuat kamu terbiasa membaca kasus pelayanan kesehatan sebagai jaringan entitas, bukan sekadar daftar kolom. Cobalah menggambar relasinya di kertas dulu sebelum membuka aplikasi DBMS, karena kesalahan rancangan jauh lebih murah diperbaiki di atas kertas daripada setelah ribuan data pasien masuk.
- Nama pasien ditulis berulang di tiap kunjungan
- Ganti nama dokter harus ubah banyak baris
- Typo membuat satu orang tercatat sebagai dua pasien
- Identitas pasien tersimpan sekali
- Perubahan cukup di satu tempat
- Foreign key menolak kunjungan untuk pasien yang tidak ada
Poin terakhir itulah yang disebut integritas referensial: basis data sendiri yang menjaga agar setiap rujukan menunjuk ke data yang benar-benar ada (Silberschatz, Korth, & Sudarshan, 2019).
Setelah tabel jadi, langsung uji dengan sengaja. Coba INSERT kunjungan dengan No. RM yang belum terdaftar. Kalau relasimu benar, DBMS akan menolak. Di praktikum, kebiasaan menguji data "nakal" seperti ini akan menyelamatkanmu dari banyak galat.
🏁 Kesimpulan
Relasi mengubah tabel-tabel yang berdiri sendiri menjadi satu gambaran utuh pelayanan kesehatan. Ingat empat hal ini:
- Primary key mengidentifikasi record, foreign key menghubungkannya ke tabel lain.
- Ada tiga jenis relasi: 1:1, 1:N, dan M:N (dengan tabel penghubung).
- Tabel kunjungan menyatukan pasien, dokter, dan poli lewat tiga foreign key.
- JOIN membaca ulang data yang sudah terhubung menjadi laporan yang mudah dipahami.
Itulah inti relasi basis data pelayanan kesehatan: data tidak diulang, tetap konsisten, dan bisa ditelusuri dari pasien sampai tenaga kesehatan yang menanganinya.
Menurutmu, relasi mana yang paling membingungkan: 1:N atau M:N? Ceritakan di kolom komentar, lalu bagikan artikel ini ke temanmu yang sedang belajar basis data!
- Codd, E. F. (1970). A relational model of data for large shared data banks. Communications of the ACM, 13(6), 377–387.
- Elmasri, R., & Navathe, S. B. (2016). Fundamentals of Database Systems (7th ed.). Pearson.
- Silberschatz, A., Korth, H. F., & Sudarshan, S. (2019). Database System Concepts (7th ed.). McGraw-Hill.
- Kementerian Kesehatan Republik Indonesia. (2022). Peraturan Menteri Kesehatan Nomor 24 Tahun 2022 tentang Rekam Medis.
Daftar Isi Kuliah Basis Data
Artikel ini bagian dari seri Kuliah Basis Data (Artikel 4 dari 16). Lihat seluruh materi di halaman daftar isi.
Buka Daftar Isi ➜
No comments:
Post a Comment