Integrasi Kesehatan

Integrasi Sistem Kesehatan: HL7, FHIR, dan SATUSEHAT untuk Programmer

Pengantar integrasi data kesehatan bagi programmer: mengapa standar dibutuhkan, perbedaan HL7 v2 dan FHIR, resource FHIR yang sering dipakai, alur integrasi SATUSEHAT, dan tips praktis.

Satu pasien bisa meninggalkan jejak data di banyak sistem: aplikasi pendaftaran, rekam medis elektronik, laboratorium, radiologi, farmasi, BPJS, dan platform nasional. Tanpa standar, setiap sambungan antar-sistem menjadi pekerjaan khusus yang rapuh. Artikel ini memperkenalkan standar yang paling sering ditemui programmer aplikasi kesehatan di Indonesia.

Mengapa perlu standar?

Bayangkan lima sistem yang masing-masing punya format data sendiri. Untuk saling terhubung, dibutuhkan hingga sepuluh penerjemah yang berbeda. Dengan satu standar bersama, setiap sistem cukup memahami satu format. Standar juga menyamakan makna: kode diagnosis, kode pemeriksaan lab, dan kode obat yang sama dipahami dengan arti yang sama di semua sistem.

HL7 versi 2: tua tapi masih di mana-mana

HL7 v2 adalah format pesan berbasis teks yang dipisahkan karakter pipa (|). Standar ini sudah lama dipakai dan masih banyak ditemui pada alat laboratorium, LIS, dan sistem radiologi. Contoh potongan pesan:

MSH|^~\&|LIS|LAB|SIMRS|RS|202609241030||ORU^R01|12345|P|2.5
PID|1||RM001234||NAMA^PASIEN
OBX|1|NM|GLU^Glukosa||110|mg/dL|70-140|N

Setiap baris adalah segmen (MSH untuk header, PID untuk pasien, OBX untuk hasil pemeriksaan), dan setiap field dipisahkan tanda |. Formatnya ringkas, tetapi implementasinya sering berbeda antarvendor.

FHIR: standar modern berbasis web

HL7 FHIR (Fast Healthcare Interoperability Resources) memakai teknologi yang sudah akrab bagi programmer web: REST API, JSON, dan OAuth2. Data dipecah menjadi resource, dan setiap resource mewakili satu konsep:

ResourceIsi
PatientIdentitas pasien
PractitionerTenaga kesehatan
Organization, LocationFasilitas kesehatan dan ruangan/poli
EncounterKunjungan pasien
ConditionDiagnosis atau keluhan
ObservationTanda vital dan hasil pemeriksaan
ServiceRequest, DiagnosticReportPermintaan dan laporan pemeriksaan penunjang
MedicationRequest, MedicationDispenseResep dan pemberian obat

Resource saling merujuk. Contohnya, Observation merujuk Patient dan Encounter, sehingga hasil pemeriksaan selalu terkait dengan pasien dan kunjungan yang tepat.

SATUSEHAT

SATUSEHAT adalah platform integrasi data kesehatan nasional dari Kementerian Kesehatan RI, dan standarnya berbasis FHIR R4. Permenkes No. 24 Tahun 2022 tentang Rekam Medis mewajibkan fasilitas pelayanan kesehatan menyelenggarakan rekam medis elektronik, termasuk kewajiban terhubung dengan platform tersebut.

Gambaran alur integrasinya:

  1. Fasilitas kesehatan mendaftar dan mendapatkan kredensial (client ID dan secret) untuk lingkungan uji coba (sandbox/staging) dan produksi.
  2. Aplikasi meminta access token menggunakan OAuth2.
  3. Data master dipetakan terlebih dahulu: Organization, Location, dan ID Practitioner.
  4. ID pasien SATUSEHAT dicari berdasarkan NIK.
  5. Setiap kunjungan dikirim sebagai Encounter, lalu diikuti Condition, Observation, dan resource lain yang merujuk Encounter tersebut.

Rincian teknis seperti endpoint, profil resource, dan kode terminologi (ICD-10, LOINC, SNOMED CT, dan Kamus Farmasi dan Alat Kesehatan) selalu ikuti dari dokumentasi resmi SATUSEHAT, karena dapat diperbarui.

Tips praktis dari lapangan

  • Pisahkan modul integrasi dari aplikasi inti. Gunakan antrean (queue): transaksi pasien disimpan dahulu, lalu dikirim ke sistem luar di latar belakang. Pelayanan tidak boleh berhenti hanya karena API pihak luar sedang lambat.
  • Simpan log setiap request dan response, beserta ID yang dikembalikan sistem tujuan. Log ini sangat penting saat menelusuri data yang "tidak masuk".
  • Buat mekanisme kirim ulang (retry) untuk data yang gagal terkirim, beserta dasbor status bagi petugas.
  • Pemetaan kode adalah pekerjaan terbesar. Kode pemeriksaan lab internal harus dipetakan ke LOINC, dan obat ke kode yang berlaku. Libatkan petugas lab dan farmasi sejak awal.
  • Jangan gunakan data pasien asli di lingkungan sandbox.

Contoh resource FHIR

Berikut contoh sederhana resource Observation untuk hasil gula darah, dalam format JSON. Nilai ID hanyalah contoh:

{
  "resourceType": "Observation",
  "status": "final",
  "code": {
    "coding": [{
      "system": "http://loinc.org",
      "code": "2339-0",
      "display": "Glucose [Mass/volume] in Blood"
    }]
  },
  "subject": { "reference": "Patient/CONTOH-123" },
  "encounter": { "reference": "Encounter/CONTOH-456" },
  "effectiveDateTime": "2026-09-24T10:30:00+07:00",
  "valueQuantity": {
    "value": 110,
    "unit": "mg/dL",
    "system": "http://unitsofmeasure.org",
    "code": "mg/dL"
  }
}

Perhatikan tiga hal: kode pemeriksaan memakai LOINC, hasil merujuk pasien dan kunjungan, dan satuan memakai standar UCUM. Profil SATUSEHAT bisa mewajibkan elemen tambahan, jadi selalu validasi dengan dokumentasi resminya.

HL7 v2 dan FHIR berdampingan

AspekHL7 v2FHIR
FormatTeks dengan pemisah |JSON atau XML
TransportUmumnya MLLP di atas TCPHTTP REST
Tempat umum ditemuiAlat lab, LIS, radiologiPlatform nasional, aplikasi web dan mobile
Kurva belajarPerlu memahami segmen dan variasi vendorAkrab bagi programmer web

Dalam praktik, satu rumah sakit bisa memakai keduanya: HL7 v2 antara alat lab dan LIS, lalu FHIR dari SIMRS ke SATUSEHAT. Modul integrasi berperan sebagai penerjemah di antaranya.

Integrasi ini biasanya berjalan dari dalam SIMRS. Gambaran modul dan cara memilihnya ada di artikel SIMRS adalah: modul, regulasi, dan cara memilih.

Pertanyaan yang sering diajukan

Harus memakai server FHIR sendiri? Tidak harus. Banyak aplikasi cukup menyusun resource FHIR saat mengirim ke SATUSEHAT, sementara data utamanya tetap di database aplikasi.

Bagaimana bila data sudah terkirim tetapi salah? Umumnya resource diperbarui dengan ID yang dikembalikan saat pengiriman pertama. Karena itu ID tersebut harus disimpan di database Anda.

Integrasi lain yang umum

Selain SATUSEHAT, aplikasi kesehatan di Indonesia sering terhubung dengan layanan BPJS Kesehatan, misalnya VClaim dan antrean online, melalui bridging dengan kredensial dan tanda tangan (signature) khusus. Aplikasi juga sering terhubung ke alat laboratorium melalui HL7 v2, ASTM, atau format khusus vendor. Setiap integrasi punya aturan dan dokumentasinya sendiri, tetapi prinsip antrean, log, dan kirim ulang di atas berlaku untuk semuanya.

Karena yang dikirim adalah data kesehatan, pastikan juga aspek keamanannya. Baca keamanan data pasien dan UU PDP.

Rujukan