Membangun aplikasi kesehatan seperti sistem manajemen pasien kronis atau pemantauan ibu hamil membutuhkan fondasi database yang kuat. Salah satu kesalahan fatal yang sering dilakukan programmer pemula adalah menggabungkan semua data ke dalam satu tabel.

Padahal, dalam dunia nyata, satu orang pasien bisa melakukan kunjungan atau pemeriksaan berkali-kali. Jika semua data ditumpuk, database akan menjadi berat, redundan, dan sulit dikelola.

Solusi terbaiknya adalah menggunakan teknik Relasi One-to-Many. Dalam tutorial kali ini, kita akan membedah cara merancang tabel MySQL untuk sistem rekam medis yang efisien.

[Ruang Iklan AdSense 1]

Memahami Konsep Relasi One-to-Many di Rekam Medis

Konsep One-to-Many (1:N) berarti Satu baris data di tabel A bisa memiliki Banyak baris data yang terhubung di tabel B.

  • Tabel A (Satu): tabel_pasien. Satu orang pasien dengan identitas unik (NIK, Nama, Tanggal Lahir).
  • Tabel B (Banyak): tabel_rekam_medis. Berisi riwayat kunjungan. Pasien yang sama bisa datang di bulan Januari untuk cek tekanan darah, dan datang lagi di bulan Februari untuk mengambil obat.

Untuk menghubungkan keduanya, kita membutuhkan sebuah "kunci". Di tabel_pasien kita gunakan Primary Key (Kunci Utama), dan di tabel_rekam_medis kita panggil kunci tersebut sebagai Foreign Key (Kunci Tamu).

Langkah 1: Membuat Database dan Tabel Pasien (Data Induk)

Pertama, mari kita buat database dan tabel induknya terlebih dahulu. Buka PhpMyAdmin atau terminal MySQL Anda, lalu jalankan query berikut:

-- Membuat Database
CREATE DATABASE db_klinik_sehat;
USE db_klinik_sehat;

-- Membuat Tabel Pasien
CREATE TABLE tabel_pasien (
    id_pasien VARCHAR(15) NOT NULL,
    nik VARCHAR(16) NOT NULL,
    nama_lengkap VARCHAR(100) NOT NULL,
    tanggal_lahir DATE NOT NULL,
    jenis_kelamin ENUM('L', 'P') NOT NULL,
    alamat TEXT,
    PRIMARY KEY (id_pasien)
) ENGINE=InnoDB;

Penjelasan Singkat:

  • id_pasien diset sebagai PRIMARY KEY. Kode ini unik untuk tiap pasien (misal: PAS-001) dan tidak boleh ada yang sama.
  • Tipe mesin InnoDB wajib digunakan agar MySQL mendukung sistem relasi antar tabel (Foreign Key).
[Ruang Iklan AdSense 2]

Langkah 2: Membuat Tabel Rekam Medis (Data Transaksi)

Selanjutnya, kita buat tabel untuk mencatat setiap kali pasien tersebut datang periksa. Di sinilah letak rekam jejak penyakit atau pemantauannya.

-- Membuat Tabel Rekam Medis (Kunjungan)
CREATE TABLE tabel_rekam_medis (
    id_periksa INT AUTO_INCREMENT,
    id_pasien VARCHAR(15) NOT NULL,
    tanggal_periksa DATE NOT NULL,
    keluhan_utama TEXT NOT NULL,
    tekanan_darah VARCHAR(10),
    diagnosa VARCHAR(255),
    tindakan TEXT,
    PRIMARY KEY (id_periksa),
    FOREIGN KEY (id_pasien) REFERENCES tabel_pasien(id_pasien) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB;

Penjelasan Singkat:

  • id_periksa menggunakan AUTO_INCREMENT agar nomor pemeriksaan terisi otomatis.
  • id_pasien di sini bertindak sebagai FOREIGN KEY yang mengikat kedua tabel.
  • ON DELETE CASCADE: Jika data pasien dihapus, seluruh riwayat rekam medisnya ikut terhapus otomatis agar database tetap bersih.

Langkah 3: Menginput Sample Data (INSERT)

Agar lebih terbayang, mari kita masukkan data fiktif ke dalam database yang baru saja kita bangun.

-- Input 1 Pasien
INSERT INTO tabel_pasien (id_pasien, nik, nama_lengkap, tanggal_lahir, jenis_kelamin, alamat) 
VALUES ('PAS-001', '320123456789', 'Budi Santoso', '1985-04-12', 'L', 'Jl. Merdeka No 10');

-- Input 2 Riwayat Kunjungan untuk Pasien Budi Santoso
INSERT INTO tabel_rekam_medis (id_pasien, tanggal_periksa, keluhan_utama, tekanan_darah, diagnosa) VALUES 
('PAS-001', '2023-10-01', 'Sakit kepala hebat, mual', '150/90', 'Hipertensi Ringan'),
('PAS-001', '2023-11-05', 'Kontrol rutin bulanan', '130/85', 'Kondisi Membaik');
[Ruang Iklan AdSense 3]

Langkah 4: Cara Menampilkan Data Gabungan (JOIN Query)

Bagaimana cara menampilkan nama pasien beserta riwayat keluhannya di halaman web PHP Anda? Kita gunakan perintah INNER JOIN.

SELECT 
    p.nama_lengkap, 
    p.tanggal_lahir, 
    r.tanggal_periksa, 
    r.keluhan_utama, 
    r.diagnosa
FROM tabel_pasien p
INNER JOIN tabel_rekam_medis r ON p.id_pasien = r.id_pasien
WHERE p.id_pasien = 'PAS-001';

Hasil dari query di atas akan menampilkan tabel di mana nama "Budi Santoso" muncul berulang sesuai dengan jumlah kunjungannya. Format inilah yang nantinya diproses menggunakan perulangan while di PHP.

Kesimpulan

Dengan memisahkan data induk dan data transaksi menggunakan relasi One-to-Many, aplikasi rekam medis Anda akan berjalan lebih cepat, bebas dari duplikasi data, dan sangat mudah dikelola.

Langkah Selanjutnya:
Database kita sudah siap! Di tutorial berikutnya, kita akan membahas Cara Membuat Sistem Login Multi-Level (Admin, Dokter, Pasien) dengan PHP Session. Pastikan Anda mem-bookmark halaman ini agar tidak ketinggalan!