Sistem Informasi Klinik Sederhana

Di banyak klinik pratama dan praktik dokter mandiri, satu pasien bisa punya tiga kartu berobat karena petugas tidak menemukan data lamanya. Dokter membaca tulisan tangan sendiri da...

Sistem Informasi Klinik Sederhana

Di banyak klinik pratama dan praktik dokter mandiri, satu pasien bisa punya tiga kartu berobat karena petugas tidak menemukan data lamanya. Dokter membaca tulisan tangan sendiri dari kunjungan bulan lalu, dan apotek baru tahu obat habis saat resep sudah di tangan. Sistem informasi klinik yang sederhana menyelesaikan masalah-masalah ini, asalkan dibangun bertahap dan sesuai alur kerja klinik, bukan sebaliknya.

Alur Pasien yang Harus Didukung Sistem

Sebelum memilih atau membuat aplikasi, gambarkan perjalanan pasien di klinik Anda. Alur umumnya:

  1. Pendaftaran: petugas mencari pasien berdasarkan NIK, nomor rekam medis, nama, atau tanggal lahir. Jika tidak ada, buat data baru.
  2. Antrean poli: pasien mendapat nomor untuk poli umum, gigi, atau KIA.
  3. Pemeriksaan awal: perawat mencatat tanda vital seperti tekanan darah, suhu, berat badan.
  4. Pemeriksaan dokter: anamnesis, pemeriksaan, diagnosis, tindakan, dan resep.
  5. Farmasi: apoteker menyiapkan obat sesuai resep, stok berkurang.
  6. Kasir: tagihan dihitung dari jasa dokter, tindakan, dan obat.

Setiap langkah adalah satu modul, dan data mengalir dari satu modul ke modul berikutnya. Kuncinya adalah satu entitas kunjungan yang menyatukan semuanya.

Modul Inti dan Urutan Pembangunan

ModulFungsiPrioritas
Master pasienIdentitas, nomor rekam medis, kontak, alergiTahap 1
Pendaftaran dan antreanMembuka kunjungan, nomor antrean per poliTahap 1
Rekam medis elektronikTanda vital, catatan SOAP, diagnosis ICD-10, tindakanTahap 2
Resep dan farmasiResep elektronik, penyerahan obat, stok, tanggal kedaluwarsaTahap 2
Kasir dan tagihanTarif, pembayaran, kuitansiTahap 2
LaporanKunjungan per hari, 10 diagnosis terbanyak, pemakaian obat, pendapatanTahap 3
Integrasi eksternalBPJS Kesehatan, SATUSEHAT KemenkesTahap 3

Mulai dari master pasien dan pendaftaran memberi manfaat paling cepat: data ganda berkurang dan waktu pencarian pasien turun drastis. Setelah petugas terbiasa, tambahkan rekam medis dan farmasi.

Regulasi yang Perlu Diperhatikan

Permenkes Nomor 24 Tahun 2022 tentang Rekam Medis mewajibkan fasilitas pelayanan kesehatan menyelenggarakan rekam medis elektronik, termasuk menjaga keamanan, kerahasiaan, dan ketersediaan datanya. Kemenkes juga mengembangkan platform SATUSEHAT untuk pertukaran data kesehatan dengan standar HL7 FHIR. Sebelum memilih sistem, pastikan vendor atau tim developer memahami kewajiban ini dan memeriksa aturan terbaru di situs resmi Kemenkes, karena ketentuan teknisnya bisa diperbarui. Untuk klinik yang melayani peserta BPJS Kesehatan, cek juga kebutuhan integrasi dengan sistem BPJS.

Desain Tabel Inti

Struktur berikut cukup untuk tahap 1 dan 2:

patients       : id, mrn (unique), nik (unique, nullable), name, birth_date,
                 gender, phone, address, allergies, timestamps
visits         : id, patient_id, poli, queue_number, status, doctor_id,
                 visited_at, timestamps
vital_signs    : id, visit_id, systolic, diastolic, temperature, weight, pulse
medical_notes  : id, visit_id, subjective, objective, assessment, plan,
                 icd10_code, created_by, timestamps
medicines      : id, name, unit, price, stock, min_stock
medicine_batches : id, medicine_id, batch_no, expired_at, qty
prescriptions  : id, visit_id, status (draft/dispensed), dispensed_by, dispensed_at
prescription_items : id, prescription_id, medicine_id, qty, dosage_note

Catatan medis sebaiknya tidak diedit langsung setelah disimpan. Jika ada koreksi, simpan versi baru dan pertahankan versi lama beserta siapa yang mengubahnya, sehingga ada jejak audit. Panduan membuat relasi seperti ini ada di merancang ERD sederhana.

Mengurangi Stok Obat dengan Aman di Laravel

Masalah klasik di modul farmasi adalah stok tercatat negatif atau berkurang dua kali karena tombol "serahkan obat" ditekan dua kali. Lakukan pengurangan stok dalam transaksi, kunci baris obat, dan tolak jika resep sudah diserahkan.

use App\Models\Medicine;
use App\Models\Prescription;
use Illuminate\Support\Facades\DB;
use Illuminate\Validation\ValidationException;

public function dispense(Prescription $prescription): void
{
    DB::transaction(function () use ($prescription) {
        $rx = Prescription::whereKey($prescription->id)->lockForUpdate()->first();

        if ($rx->status === 'dispensed') {
            throw ValidationException::withMessages(['resep' => 'Resep sudah diserahkan.']);
        }

        foreach ($rx->items as $item) {
            $med = Medicine::whereKey($item->medicine_id)->lockForUpdate()->first();

            if ($med->stock < $item->qty) {
                throw ValidationException::withMessages([
                    'stok' => "Stok {$med->name} tidak cukup (sisa {$med->stock}).",
                ]);
            }

            $med->decrement('stock', $item->qty);
        }

        $rx->update([
            'status'       => 'dispensed',
            'dispensed_by' => auth()->id(),
            'dispensed_at' => now(),
        ]);
    });
}

Pengecualian di dalam transaksi otomatis membatalkan semua perubahan, jadi tidak ada resep yang setengah diproses. Untuk klinik yang ingin mengikuti prinsip FEFO (first expired, first out), pengurangan bisa diarahkan ke tabel medicine_batches dengan mengurutkan berdasarkan expired_at.

Hak Akses dan Keamanan Data

Data kesehatan termasuk data pribadi yang bersifat spesifik menurut UU Pelindungan Data Pribadi, sehingga perlindungannya harus lebih ketat dari data pelanggan biasa.

  • Peran terpisah: pendaftaran, perawat, dokter, apoteker, kasir, dan admin. Kasir tidak perlu membaca catatan SOAP; petugas pendaftaran tidak perlu melihat diagnosis.
  • Log akses: catat siapa membuka rekam medis siapa dan kapan.
  • HTTPS wajib dan kata sandi kuat, idealnya dengan autentikasi dua faktor untuk akun dokter dan admin.
  • Backup terenkripsi harian yang disimpan di lokasi berbeda, dan uji pemulihan secara berkala.
  • Sesi otomatis berakhir setelah beberapa menit tidak aktif, karena komputer di ruang periksa sering ditinggal.

Di Laravel, peran dan izin seperti ini mudah diatur dengan Gate, Policy, atau paket spatie/laravel-permission. Daftar praktik keamanan lainnya ada di 10 best practice keamanan aplikasi web dan checklist keamanan dasar Laravel.

Laporan yang Membantu Pengambilan Keputusan

Laporan sering dibuat terakhir, padahal di sinilah pemilik klinik melihat manfaat sistem secara nyata. Beberapa laporan yang biasanya paling sering dibuka:

  • Kunjungan per hari dan per jam, untuk mengatur jadwal dokter dan perawat jaga.
  • Sepuluh diagnosis terbanyak per bulan, berguna untuk perencanaan stok obat dan edukasi pasien.
  • Obat di bawah stok minimum dan obat yang mendekati kedaluwarsa, misalnya dalam 90 hari ke depan, agar bisa dipesan atau dipakai lebih dulu.
  • Pendapatan per jenis layanan, untuk melihat poli atau tindakan mana yang paling berkontribusi.

Laporan seperti ini membutuhkan kueri agregat yang berat ketika data sudah bertahun-tahun, jadi siapkan index yang tepat sejak awal.

Kesalahan Umum Saat Implementasi

Migrasi data pasien lama tanpa pembersihan

Memindahkan data dari Excel lama apa adanya membawa serta duplikat dan ejaan nama yang berbeda. Lakukan pembersihan dulu: satukan pasien dengan NIK atau kombinasi nama dan tanggal lahir yang sama, lalu tetapkan nomor rekam medis final.

Formulir terlalu panjang

Dokter yang harus mengisi 30 kolom per pasien akan kembali ke kertas. Wajibkan kolom yang benar-benar penting, sediakan pilihan cepat untuk diagnosis dan resep yang sering dipakai, dan biarkan sisanya opsional.

Tidak ada rencana saat internet atau listrik padam

Siapkan formulir kertas cadangan dan prosedur memasukkan data setelah sistem pulih. Untuk klinik dengan internet tidak stabil, server lokal dengan sinkronisasi ke cloud bisa menjadi pilihan.

Pelatihan hanya satu kali

Petugas baru sering tidak mendapat pelatihan. Buat panduan singkat per peran, cukup satu atau dua halaman dengan tangkapan layar.

Checklist Sebelum Go-Live

  • Data pasien lama sudah dibersihkan dan diberi nomor rekam medis unik.
  • Setiap peran hanya bisa melihat menu yang dibutuhkan.
  • Stok awal obat sudah dihitung fisik dan dimasukkan beserta tanggal kedaluwarsa.
  • Tarif layanan dan tindakan sudah lengkap.
  • Backup otomatis berjalan dan pemulihan sudah diuji.
  • Ada prosedur cadangan saat sistem tidak bisa diakses.
  • Uji coba berjalan berdampingan dengan cara lama selama minimal satu minggu.

Membangun dari nol bukan satu-satunya pilihan; source code aplikasi klinik berbasis Laravel, seperti yang tersedia di katalog GudangCode, dapat dipakai sebagai fondasi lalu disesuaikan dengan alur dan regulasi yang berlaku di klinik Anda.

Ingin langsung mempraktikkannya?

Buat akun gratis untuk mengunduh contoh aplikasi Laravel, menyimpan tutorial favorit, dan mencoba kursus. Gratis, bisa daftar dengan akun Google.

Daftar Gratis Lihat katalog aplikasi
Yudhi
Ditulis oleh
Yudhi
Founder & Lead Developer, GudangCode

Yudhi adalah founder GudangCode dan developer Laravel dengan pengalaman membangun puluhan sistem informasi bisnis siap pakai — mulai dari POS, HRIS, hingga aplikasi manajemen. Ia menulis panduan dan artikel di GudangCode untuk membantu developer Indonesia menjalankan, memahami, dan men-deploy source code Laravel dengan benar.

Laravel PHP MySQL Sistem Informasi Bisnis
Lihat semua artikel Yudhi
Sistem Informasi Klinik Sistem Informasi
Bacaan Paling Dicari
📚 Free Learning Hub

Learn Coding for Free at DhieCoderWeb

Explore Laravel, PHP, JavaScript tutorials, source code, web development guides, and practical programming tips.

DhieCoderWeb
100+
Tutorials
Free
Learning
SEO
Tips
Visit Dhiecoderweb.com →