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:
| Resource | Isi |
|---|---|
| Patient | Identitas pasien |
| Practitioner | Tenaga kesehatan |
| Organization, Location | Fasilitas kesehatan dan ruangan/poli |
| Encounter | Kunjungan pasien |
| Condition | Diagnosis atau keluhan |
| Observation | Tanda vital dan hasil pemeriksaan |
| ServiceRequest, DiagnosticReport | Permintaan dan laporan pemeriksaan penunjang |
| MedicationRequest, MedicationDispense | Resep 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:
- Fasilitas kesehatan mendaftar dan mendapatkan kredensial (client ID dan secret) untuk lingkungan uji coba (sandbox/staging) dan produksi.
- Aplikasi meminta access token menggunakan OAuth2.
- Data master dipetakan terlebih dahulu: Organization, Location, dan ID Practitioner.
- ID pasien SATUSEHAT dicari berdasarkan NIK.
- 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
| Aspek | HL7 v2 | FHIR |
|---|---|---|
| Format | Teks dengan pemisah | | JSON atau XML |
| Transport | Umumnya MLLP di atas TCP | HTTP REST |
| Tempat umum ditemui | Alat lab, LIS, radiologi | Platform nasional, aplikasi web dan mobile |
| Kurva belajar | Perlu memahami segmen dan variasi vendor | Akrab 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
- HL7 FHIR Release 4 (spesifikasi resmi)
- HL7 Version 2 (standar pesan HL7 v2)
- Dokumentasi SATUSEHAT Platform, Kementerian Kesehatan RI