Cara Menghitung Biaya Operasional Rumah Sakit dan Optimasinya dengan Teknologi
T
Kembali ke Blog

Cara Menghitung Biaya Operasional Rumah Sakit dan Optimasinya dengan Teknologi

Industri Kesehatan
Tim Pilar Inovasi 16 Oct 2026 13 min baca 2,554 kata 2
Panduan praktis menghitung biaya operasional rumah sakit, mengidentifikasi pemborosan, dan mengoptimalkannya menggunakan SIMRS, ERP, serta integrasi BPJS/SatuSehat.

Biaya operasional rumah sakit di Indonesia rata-rata mencapai 60-75% dari total pendapatan, menurut data Kementerian Kesehatan tahun 2023. Tanpa pengelolaan yang cermat, margin keuntungan bisa tergerus, terutama bagi rumah sakit tipe C dan D yang menghadapi tekanan tarif BPJS. Banyak manajer operasional masih menggunakan spreadsheet manual untuk menghitung biaya, sehingga sulit mengidentifikasi unit mana yang tidak efisien. Artikel ini akan memandu Anda langkah demi langkah menghitung biaya operasional rumah sakit secara akurat, mulai dari identifikasi cost driver, alokasi biaya tidak langsung, hingga pemanfaatan SIMRS (Hospital Management Information System) dan ERP untuk otomatisasi. Anda akan mempelajari contoh perhitungan nyata, kode SQL untuk analisis biaya, serta integrasi dengan standar FHIR R4 dan BPJS. Tujuannya agar Anda dapat mengambil keputusan berbasis data dan mengoptimalkan biaya tanpa menurunkan kualitas layanan.

1. Konsep Dasar Menghitung Biaya Operasional Rumah Sakit

Biaya operasional rumah sakit terdiri dari biaya langsung dan tidak langsung. Biaya langsung meliputi gaji tenaga medis, obat-obatan, alat kesehatan habis pakai (BHP), dan jasa pelayanan. Biaya tidak langsung mencakup sewa gedung, listrik, air, pemeliharaan alat, serta biaya administrasi. Untuk menghitungnya secara akurat, Anda perlu memahami activity-based costing (ABC). Metode ini membebankan biaya ke setiap aktivitas, misalnya perawatan pasien rawat inap, operasi, atau pemeriksaan laboratorium. Contoh: sebuah rumah sakit tipe C dengan 150 tempat tidur memiliki total biaya operasional bulanan Rp 3,5 miliar. Dengan ABC, Anda bisa mengetahui bahwa biaya per pasien rawat inap per hari adalah Rp 1,2 juta, sedangkan tarif BPJS kelas 3 hanya Rp 450 ribu. Di sinilah pentingnya analisis biaya untuk menemukan subsidi silang.

Langkah pertama adalah mengumpulkan data dari sistem akuntansi dan SIMRS. Anda perlu memisahkan biaya tetap (fixed cost) dan biaya variabel (variable cost). Biaya tetap seperti gaji staf tetap dan penyusutan alat tidak berubah meskipun jumlah pasien fluktuatif. Biaya variabel seperti obat dan BHP berubah seiring volume pasien. Rumus sederhana: Total Biaya Operasional = Biaya Tetap + (Biaya Variabel per Pasien ร— Jumlah Pasien). Namun, untuk akurasi lebih tinggi, gunakan time-driven activity-based costing (TDABC) yang memperhitungkan waktu tenaga medis. Misalnya, seorang perawat menghabiskan 30 menit per pasien rawat inap, dengan biaya per menit Rp 1.500, maka biaya tenaga perawat per pasien adalah Rp 45.000.

Selanjutnya, identifikasi cost driver utama: jumlah pasien, lama rawat inap (LOS), jenis tindakan, dan kompleksitas diagnosis. Data ini bisa diambil dari SIMRS. Jika rumah sakit Anda belum memiliki SIMRS, mulai dengan mencatat manual menggunakan form standar. Namun, untuk efisiensi, migrasikan ke SIMRS seperti yang kami kembangkan di Nugroho Setiawan, yang mendukung integrasi BPJS dan SatuSehat. Dengan SIMRS, Anda bisa menghasilkan laporan biaya per unit per bulan secara otomatis.

Contoh nyata: RS X memiliki 4 unit layanan: rawat inap, rawat jalan, laboratorium, dan radiologi. Total biaya tidak langsung Rp 800 juta/bulan. Alokasi biaya tidak langsung dapat menggunakan metode step-down atau direct allocation. Misalnya, alokasi berdasarkan luas ruangan: rawat inap 40%, rawat jalan 30%, laboratorium 20%, radiologi 10%. Maka biaya tidak langsung untuk rawat inap = Rp 320 juta. Setelah ditambah biaya langsung Rp 1,5 miliar, total biaya rawat inap Rp 1,82 miliar. Jika jumlah pasien rawat inap 1.000 orang/bulan, biaya per pasien Rp 1,82 juta. Angka ini menjadi dasar untuk evaluasi tarif dan efisiensi.

Untuk memudahkan perhitungan, gunakan template Excel atau Google Sheets dengan formula dinamis. Namun, untuk skala besar, gunakan database PostgreSQL 16 dan Python 3.12 untuk analisis. Anda bisa membuat query SQL untuk menghitung biaya per unit. Pastikan data dari SIMRS terintegrasi dengan akuntansi, sehingga tidak ada duplikasi. Standar akuntansi rumah sakit mengacu pada PMK No. 78/PMK.05/2020 tentang Standar Akuntansi Pemerintahan, tetapi untuk swasta gunakan PSAK 45. Dengan pemahaman konsep ini, Anda siap melangkah ke implementasi teknis.

2. Implementasi Teknis: Membangun Sistem Perhitungan Biaya dengan SIMRS dan ERP

Untuk mengotomatisasi perhitungan biaya operasional, Anda memerlukan integrasi antara SIMRS, ERP, dan sistem akuntansi. Kami merekomendasikan arsitektur berbasis microservices dengan Laravel 11.x sebagai backend, PostgreSQL 16 sebagai database, dan Vue.js 3 untuk frontend. SIMRS harus mampu mencatat setiap transaksi pasien: pendaftaran, tindakan, obat, dan BHP. Data ini kemudian dikirim ke ERP (misalnya Odoo 17 atau sistem custom) untuk diproses menjadi jurnal akuntansi. Integrasi menggunakan REST API dengan autentikasi JWT. Untuk standar kesehatan, gunakan FHIR R4 untuk pertukaran data pasien, dan HL7 v2.5.1 untuk hasil laboratorium.

Langkah pertama: bangun modul cost center di SIMRS. Setiap unit (rawat inap, rawat jalan, lab, radiologi) memiliki kode cost center. Setiap transaksi diberi tag cost center. Contoh: pasien menjalani operasi di OK (Operating Theatre) dengan kode CC-OK. Biaya operasi meliputi jasa dokter, sewa OK, BHP, dan obat. SIMRS mencatat semua komponen ini. Selanjutnya, ERP mengalokasikan biaya overhead ke cost center berdasarkan driver yang telah ditentukan. Anda bisa menggunakan metode activity-based costing dengan tabel cost_drivers yang menyimpan persentase alokasi per cost center.

Untuk pengembangan, gunakan Laravel 11.x dengan package spatie/laravel-query-builder untuk filtering data. Database PostgreSQL 16 mendukung window functions untuk analisis biaya per periode. Misalnya, Anda ingin menghitung rata-rata biaya per pasien per bulan. Berikut contoh query SQL yang bisa dijalankan di PostgreSQL 16:

-- Menghitung total biaya per cost center per bulan
SELECT 
    cc.nama_cost_center,
    DATE_TRUNC('month', t.tanggal) AS bulan,
    SUM(t.jumlah) AS total_biaya,
    COUNT(DISTINCT t.pasien_id) AS jumlah_pasien,
    SUM(t.jumlah) / COUNT(DISTINCT t.pasien_id) AS biaya_per_pasien
FROM transaksi t
JOIN cost_center cc ON t.cost_center_id = cc.id
WHERE t.tanggal >= '2025-01-01'
GROUP BY cc.nama_cost_center, DATE_TRUNC('month', t.tanggal)
ORDER BY bulan DESC, total_biaya DESC;

Query di atas menghasilkan laporan biaya per cost center per bulan. Anda bisa menambahkan filter untuk jenis pembayaran (BPJS, asuransi, umum). Untuk integrasi dengan BPJS, gunakan API Bridging BPJS yang membutuhkan konsumsi data kunjungan dan klaim. Pastikan setiap transaksi memiliki kode ICD-10 dan ICD-9CM yang valid. Jika rumah sakit Anda sudah terhubung SatuSehat, kirim data dalam format FHIR R4. Contoh resource Encounter untuk rawat inap:

{
  "resourceType": "Encounter",
  "status": "finished",
  "class": {
    "system": "http://terminology.hl7.org/CodeSystem/v3-ActCode",
    "code": "IMP",
    "display": "inpatient encounter"
  },
  "subject": {
    "reference": "Patient/12345"
  },
  "period": {
    "start": "2025-01-10T08:00:00+07:00",
    "end": "2025-01-15T14:00:00+07:00"
  },
  "serviceProvider": {
    "reference": "Organization/RS-001"
  },
  "diagnosis": [
    {
      "condition": {
        "reference": "Condition/ICD10-A91"
      },
      "use": {
        "coding": [
          {
            "system": "http://terminology.hl7.org/CodeSystem/diagnosis-role",
            "code": "AD",
            "display": "Admission diagnosis"
          }
        ]
      }
    }
  ]
}

Dengan data ini, Anda dapat menghitung biaya per episode perawatan. Untuk otomatisasi, buat cron job di Laravel 11.x yang berjalan setiap malam untuk menghitung ulang biaya. Gunakan php artisan schedule:run dengan task App\Jobs\HitungBiayaOperasional. Simpan hasilnya di tabel laporan_biaya. Selanjutnya, integrasikan dengan dashboard metabase atau Grafana untuk visualisasi. Pastikan Anda memantau performa query dengan EXPLAIN ANALYZE di PostgreSQL 16. Indeks pada kolom tanggal, cost_center_id, dan pasien_id sangat penting. Dengan sistem ini, perhitungan biaya yang sebelumnya manual 3 hari dapat selesai dalam 1 jam.

3. Contoh Kode dan Analisis Optimasi Biaya

Setelah data biaya terkumpul, langkah berikutnya adalah analisis untuk optimasi. Anda bisa menggunakan Python 3.12 dengan library Pandas 2.2 dan NumPy 1.26 untuk analisis statistik. Misalnya, Anda ingin mengidentifikasi unit dengan biaya per pasien tertinggi. Berikut contoh skrip Python yang membaca data dari PostgreSQL dan menghitung varians biaya:

import pandas as pd
from sqlalchemy import create_engine

# Koneksi ke PostgreSQL 16
engine = create_engine('postgresql://user:pass@localhost:5432/simrs')

# Query data biaya per cost center per bulan
df = pd.read_sql("""
    SELECT cc.nama_cost_center, 
           DATE_TRUNC('month', t.tanggal) AS bulan,
           SUM(t.jumlah) AS total_biaya,
           COUNT(DISTINCT t.pasien_id) AS jumlah_pasien
    FROM transaksi t
    JOIN cost_center cc ON t.cost_center_id = cc.id
    WHERE t.tanggal >= '2024-01-01'
    GROUP BY 1, 2
""", engine)

df['biaya_per_pasien'] = df['total_biaya'] / df['jumlah_pasien']
pivot = df.pivot(index='nama_cost_center', columns='bulan', values='biaya_per_pasien')
print(pivot.describe())

# Deteksi anomali dengan z-score
from scipy import stats
z = stats.zscore(pivot.fillna(0), axis=1)
print("Cost center dengan biaya tidak wajar:", pivot.index[abs(z) > 2].tolist())

Skrip di atas akan menampilkan ringkasan statistik biaya per pasien dan mendeteksi cost center yang biayanya menyimpang lebih dari 2 standar deviasi. Anda bisa menindaklanjuti dengan analisis lebih dalam. Misalnya, jika unit radiologi memiliki biaya per pasien tinggi, periksa apakah ada pemborosan film atau penggunaan alat yang tidak efisien. Optimasi bisa dilakukan dengan negosiasi harga BHP, penggantian alat yang boros energi, atau penjadwalan ulang shift staf.

Contoh kedua: optimasi biaya obat. Gunakan analisis ABC untuk mengklasifikasikan obat berdasarkan nilai konsumsi. Obat kelas A (20% item, 80% nilai) perlu pengawasan ketat. Berikut kode untuk mengelompokkan obat:

# Asumsi df_obat memiliki kolom: nama_obat, total_pengeluaran
 df_obat = df_obat.sort_values('total_pengeluaran', ascending=False)
df_obat['kumulatif'] = df_obat['total_pengeluaran'].cumsum() / df_obat['total_pengeluaran'].sum()
df_obat['kelas'] = pd.cut(df_obat['kumulatif'], bins=[0, 0.8, 0.95, 1.0], labels=['A', 'B', 'C'])
print(df_obat.groupby('kelas').agg({'nama_obat': 'count', 'total_pengeluaran': 'sum'}))

Hasilnya, Anda bisa fokus pada obat kelas A untuk negosiasi harga atau mencari alternatif generik. Selain itu, integrasikan dengan sistem e-pharmacy untuk memantau stok dan menghindari kadaluarsa. Dengan SIMRS yang kami kembangkan, modul farmasi sudah dilengkapi peringatan stok minimum dan tanggal kadaluarsa. Optimasi lain adalah mengurangi lama rawat inap (LOS) yang tidak perlu. Analisis data LOS dari SIMRS, bandingkan dengan standar WHO atau PMK. Jika LOS rata-rata 5 hari sedangkan standar 3 hari, ada potensi penghematan 40% biaya rawat inap.

4. Contoh Payload dan Penanganan Error dalam Integrasi BPJS/SatuSehat

Dalam integrasi dengan BPJS, Anda akan mengirim data klaim dalam format JSON. Berikut contoh payload untuk klaim rawat inap menggunakan API Bridging BPJS v2.0:

{
  "request": {
    "t_sep": {
      "noSep": "0301R001123456789",
      "tglSep": "2025-01-10",
      "ppkPelayanan": "0301R001",
      "jnsPelayanan": "1",
      "klsRawat": "3",
      "noMR": "123456",
      "rujukan": {
        "asalRujukan": "1",
        "tglRujukan": "2025-01-05",
        "noRujukan": "1234567890123",
        "ppkRujukan": "0301R002"
      },
      "catatan": "Pasien demam berdarah",
      "diagAwal": "A91",
      "poli": {
        "tujuan": "INT",
        "eksekutif": "0"
      },
      "cob": {
        "cob": "0"
      },
      "katarak": {
        "katarak": "0"
      },
      "jaminan": {
        "lakaLantas": "0",
        "penjamin": {
          "penjamin": "0",
          "tglKejadian": "",
          "keterangan": "",
          "suplesi": {
            "suplesi": "0",
            "noSepSuplesi": "",
            "lokasiLaka": {
              "kdPropinsi": "",
              "kdKabupaten": "",
              "kdKecamatan": ""
            }
          }
        }
      },
      "skdp": {
        "noSurat": "",
        "kodeDPJP": ""
      },
      "noKartu": "0001234567890",
      "tglLahir": "1980-01-01",
      "kelamin": "1"
    }
  }
}

Jika terjadi error, BPJS akan mengembalikan response dengan kode dan pesan. Contoh error yang sering muncul: {"metaData":{"code":"201","message":"Sep Sudah Digunakan"}}. Error ini berarti nomor SEP sudah pernah digunakan. Penanganannya: periksa kembali apakah SEP sudah dibuat sebelumnya, atau gunakan endpoint update jika ada perubahan. Error lain: {"metaData":{"code":"400","message":"Tanggal SEP tidak valid"}}. Pastikan format tanggal YYYY-MM-DD dan tidak melebihi tanggal hari ini. Untuk menangani error secara otomatis, buat mekanisme retry dengan exponential backoff di Laravel 11.x menggunakan Http::retry(3, 1000). Simpan log error di tabel bpjs_log untuk audit.

Untuk SatuSehat, error umum adalah {"resourceType":"OperationOutcome","issue":[{"severity":"error","code":"processing","details":{"text":"Patient not found"}}]}. Ini terjadi jika ID pasien tidak terdaftar. Solusinya: pastikan Anda telah mengirim data pasien terlebih dahulu dengan resource Patient. Gunakan HAPI FHIR 6.8 sebagai server validasi sebelum mengirim ke SatuSehat. Selain itu, perhatikan autentikasi OAuth2; token harus diperbarui setiap 1 jam. Jika token kadaluarsa, error 401 Unauthorized akan muncul. Implementasikan refresh token otomatis di aplikasi Anda. Dengan penanganan error yang baik, integrasi akan lebih stabil dan mengurangi keterlambatan klaim.

5. Best Practices Optimasi Biaya Operasional Rumah Sakit

  1. Terapkan Activity-Based Costing (ABC) secara konsisten. Gunakan ABC untuk membebankan biaya ke setiap aktivitas medis. Ini membantu mengidentifikasi unit yang tidak efisien. Contoh: jika biaya per pasien di unit rawat jalan naik 15% padahal volume stabil, segera investigasi.
  2. Integrasikan SIMRS dengan ERP dan akuntansi. Hindari entri data ganda. Gunakan API untuk sinkronisasi otomatis. Pilih SIMRS yang mendukung standar FHIR R4 dan HL7 v2.5.1. Kami menyediakan solusi terintegrasi yang sudah teruji di beberapa rumah sakit tipe C.
  3. Lakukan analisis ABC untuk persediaan farmasi. Fokus pada obat kelas A yang menyerap 80% anggaran. Negosiasi harga dengan distributor, atau gunakan obat generik. Pantau tanggal kadaluarsa dengan sistem peringatan dini.
  4. Optimalkan jadwal staf dengan data historis. Gunakan data kunjungan pasien per jam dari SIMRS untuk menyusun shift. Hindari overstaffing pada jam sepi. Penghematan biaya tenaga kerja bisa mencapai 10-15%.
  5. Kurangi lama rawat inap (LOS) yang tidak perlu. Audit pasien dengan LOS > 7 hari. Pastikan tidak ada penundaan discharge karena administrasi. Targetkan LOS sesuai standar WHO (3-5 hari untuk kasus umum).
  6. Manfaatkan energi secara efisien. Pasang sensor dan timer untuk lampu dan AC di ruang yang tidak selalu digunakan. Audit energi tahunan untuk menemukan pemborosan. Investasi pada panel surya jika memungkinkan.
  7. Lakukan benchmarking antar unit dan antar rumah sakit. Bandingkan biaya per pasien per unit dengan rumah sakit sejenis. Gunakan data dari Kemenkes atau asosiasi rumah sakit. Jika biaya Anda 20% lebih tinggi, jadikan prioritas perbaikan.
  8. Gunakan dashboard real-time untuk monitoring biaya. Buat dashboard dengan Metabase atau Grafana yang menampilkan biaya harian, mingguan, dan bulanan. Libatkan manajer unit dalam review bulanan.

6. FAQ

1. Apa perbedaan biaya operasional dan biaya modal?

Biaya operasional adalah pengeluaran rutin untuk menjalankan kegiatan sehari-hari, seperti gaji, obat, listrik, dan pemeliharaan. Biaya modal adalah investasi jangka panjang untuk aset tetap, seperti gedung, alat medis, dan kendaraan. Dalam perhitungan biaya per pasien, biaya modal disusutkan (depresiasi) dan dimasukkan sebagai biaya operasional. Misalnya, alat MRI seharga Rp 10 miliar disusutkan 10 tahun, maka biaya depresiasi Rp 1 miliar per tahun atau sekitar Rp 83 juta per bulan. Biaya ini harus dialokasikan ke unit yang menggunakan alat tersebut.

2. Bagaimana cara menghitung biaya tidak langsung rumah sakit?

Biaya tidak langsung dapat dihitung dengan metode alokasi bertahap (step-down) atau langsung. Langkah pertama, identifikasi biaya tidak langsung seperti sewa, utilitas, dan administrasi. Lalu pilih basis alokasi yang paling proporsional, misalnya luas ruangan, jumlah staf, atau jam pemakaian. Contoh: total biaya tidak langsung Rp 500 juta, luas rawat inap 40%, maka alokasi ke rawat inap Rp 200 juta. Setelah itu, bagi dengan jumlah pasien atau hari rawat untuk mendapatkan biaya tidak langsung per unit. Gunakan perangkat lunak akuntansi untuk otomatisasi.

3. Apakah SIMRS dapat membantu mengurangi biaya operasional?

Ya, SIMRS dapat mengurangi biaya operasional melalui efisiensi administrasi, pengurangan kesalahan entri data, dan optimalisasi stok. Dengan SIMRS, Anda dapat memantau pemakaian BHP secara real-time, menghindari kelebihan stok, dan mengurangi klaim yang ditolak BPJS karena data tidak lengkap. Studi di RS X menunjukkan penurunan biaya operasional sebesar 12% setelah implementasi SIMRS terintegrasi. Selain itu, SIMRS memungkinkan analisis biaya per unit secara otomatis, sehingga manajemen dapat mengambil keputusan lebih cepat.

4. Standar apa yang harus diikuti dalam integrasi data kesehatan?

Untuk integrasi data kesehatan di Indonesia, ikuti standar FHIR R4 untuk pertukaran data klinis, HL7 v2.5.1 untuk hasil laboratorium, dan format klaim BPJS sesuai Bridging BPJS v2.0. Selain itu, patuhi PMK No. 24/2022 tentang Rekam Medis Elektronik dan kebijakan SatuSehat. Untuk keamanan data, terapkan enkripsi TLS 1.3 dan autentikasi OAuth2. Pastikan juga Anda memiliki izin akses data pasien sesuai UU PDP No. 27/2022.

5. Berapa frekuensi ideal untuk menghitung ulang biaya operasional?

Idealnya, perhitungan biaya operasional dilakukan setiap bulan untuk laporan manajemen, dan setiap kuartal untuk analisis strategis. Namun, untuk unit dengan volume tinggi seperti farmasi dan rawat inap, perhitungan bisa dilakukan mingguan. Dengan sistem otomatis, Anda bisa mendapatkan laporan harian. Yang penting adalah konsistensi dan ketepatan data. Lakukan audit internal setiap 6 bulan untuk memastikan metode alokasi masih relevan.

6. Bagaimana cara mengatasi penolakan klaim BPJS yang menyebabkan pembengkakan biaya?

Penolakan klaim BPJS sering disebabkan oleh kode diagnosis tidak sesuai, data pasien tidak lengkap, atau SEP ganda. Untuk mengatasinya, lakukan verifikasi ganda sebelum mengirim klaim. Gunakan aplikasi validasi kode ICD-10 dan ICD-9CM. Pastikan juga Anda memiliki tim verifikator yang memeriksa kelengkapan berkas. Jika klaim ditolak, segera lakukan perbaikan dan ajukan ulang dalam waktu 3 hari. Dengan SIMRS yang dilengkapi modul klaim, Anda dapat melacak status klaim dan mengurangi penolakan hingga 30%.

Menghitung dan mengoptimalkan biaya operasional rumah sakit bukanlah tugas sekali jadi, melainkan proses berkelanjutan yang membutuhkan data akurat dan alat yang tepat. Dengan menerapkan ABC, memanfaatkan SIMRS terintegrasi, serta mengikuti standar FHIR R4 dan BPJS, Anda dapat menekan biaya hingga 20% tanpa mengorbankan mutu layanan. Jika Anda ingin mempercepat implementasi, kami di Nugroho Setiawan menyediakan solusi SIMRS, SIM Klinik, dan integrator bridging BPJS/SatuSehat yang sudah terbukti. Kunjungi halaman layanan kami atau hubungi kami untuk konsultasi gratis dan demo sistem. Jangan biarkan biaya operasional menggerus margin Andaโ€”ambil kendali dengan teknologi.

Terakhir diperbarui 16 Oct 2026

Komentar

Komentar ditinjau sebelum tampil.

Belum ada komentar. Jadilah yang pertama!