Integrasi LIS dengan SIMRS
N
Back to Blog

Integrasi LIS dengan SIMRS

Tutorial
Nugroho Setiawan 11 Apr 2026 3 min baca 1,855 kata 62 views
Artikel ini membahas panduan komprehensif integrasi LIS (Laboratory Information System) dengan SIMRS (Sistem Informasi Manajemen Rumah Sakit). Pelajari strategi, teknologi, dan praktik terbaik untuk meningkatkan efisiensi operasional, akurasi data, dan kualitas pelayanan pasien melalui otomatisasi alur kerja laboratorium.

Di era digitalisasi layanan kesehatan saat ini, rumah sakit dan klinik menghadapi tantangan signifikan dalam mengelola volume data pasien yang terus meningkat. Salah satu titik kritis yang seringkali menjadi hambatan adalah isolasi data antara Sistem Informasi Manajemen Rumah Sakit (SIMRS) dan Laboratory Information System (LIS). Tanpa integrasi yang efektif, proses input data manual yang berulang, risiko kesalahan transkripsi, serta keterlambatan dalam penyampaian hasil laboratorium menjadi masalah umum. Sebuah studi dari Health Affairs pada tahun 2022 menunjukkan bahwa kesalahan medis terkait data entry masih menyumbang sekitar 15% dari total kesalahan yang dilaporkan, dengan sebagian besar terjadi pada transfer data antar sistem yang tidak terintegrasi. Hal ini tidak hanya memengaruhi efisiensi operasional dan beban kerja staf, tetapi juga berpotensi berdampak pada kecepatan dan akurasi diagnosis, yang pada akhirnya memengaruhi kualitas pelayanan dan keselamatan pasien. Kebutuhan akan solusi yang mampu menjembatani kedua sistem ini menjadi sangat mendesak, terutama dengan adopsi standar interoperabilitas seperti SatuSehat yang kini menjadi mandat pemerintah melalui PMK No. 24 Tahun 2022. Artikel ini akan memandu Anda melalui konsep dasar, strategi implementasi teknis, hingga praktik terbaik untuk mencapai integrasi LIS dengan SIMRS yang mulus dan efisien, dilengkapi dengan contoh kode nyata serta studi kasus relevan.

Konsep Dasar Integrasi LIS dengan SIMRS

Integrasi LIS (Laboratory Information System) dengan SIMRS (Sistem Informasi Manajemen Rumah Sakit) adalah proses krusial yang menghubungkan dua pilar utama dalam operasional fasilitas kesehatan. LIS dirancang khusus untuk mengelola seluruh siklus kerja laboratorium, mulai dari pendaftaran spesimen, pelacakan sampel, pelaksanaan tes, hingga pelaporan hasil. Sementara itu, SIMRS adalah sistem informasi komprehensif yang mengelola semua aspek administrasi, keuangan, rekam medis, dan operasional rumah sakit secara keseluruhan. Tanpa integrasi, kedua sistem ini beroperasi secara terpisah, menciptakan silo data yang menghambat efisiensi dan akurasi.

Manfaat utama dari integrasi ini sangat signifikan. Pertama, peningkatan akurasi data. Dengan otomatisasi transfer data, risiko kesalahan transkripsi manual yang sering terjadi saat staf memindahkan data dari satu sistem ke sistem lain dapat diminimalisir hingga di bawah 1%. Kedua, percepatan alur kerja. Permintaan tes laboratorium dari dokter di SIMRS dapat langsung diteruskan ke LIS, dan hasil tes yang sudah divalidasi di LIS dapat secara otomatis kembali ke rekam medis pasien di SIMRS, mengurangi waktu tunggu hasil hingga 30-50%. Ketiga, pengambilan keputusan klinis yang lebih baik. Dokter memiliki akses real-time ke hasil laboratorium terkini, memungkinkan diagnosis dan penanganan yang lebih cepat dan tepat. Keempat, efisiensi operasional. Staf laboratorium dan administrasi dapat fokus pada tugas inti, bukan pada entri data berulang, menghemat rata-rata 2-3 jam kerja per hari per departemen.

Secara umum, ada beberapa metode integrasi yang bisa diterapkan. Metode lama seperti berbasis file (ekspor/impor CSV/Excel) atau database-level (akses langsung ke database lain) cenderung tidak scalable dan rawan masalah keamanan data. Pendekatan modern yang direkomendasikan adalah integrasi berbasis API (Application Programming Interface). API memungkinkan sistem berkomunikasi secara terstruktur dan aman, seringkali menggunakan standar industri seperti HL7 (Health Level Seven) atau FHIR (Fast Healthcare Interoperability Resources). HL7 v2.x telah menjadi standar de facto selama bertahun-tahun untuk pertukaran pesan klinis, sementara FHIR, yang merupakan generasi terbaru dari standar HL7, menawarkan pendekatan yang lebih web-friendly dan modular, menggunakan RESTful API dan format data JSON/XML.

Alur data dasar dalam integrasi ini meliputi: (1) Order Entry: Dokter atau perawat di SIMRS membuat permintaan tes lab, yang kemudian dikirim sebagai pesan Order (ORM) ke LIS. (2) Result Reporting: Setelah tes selesai dan hasilnya divalidasi di LIS, LIS mengirimkan hasilnya sebagai pesan Result (ORU) kembali ke SIMRS. Proses ini memastikan bahwa rekam medis elektronik pasien di SIMRS selalu mutakhir dengan informasi laboratorium terbaru, mendukung perawatan pasien yang terkoordinasi dan holistik. Pemahaman mendalam tentang standar ini sangat penting untuk merancang solusi integrasi yang robust dan sesuai regulasi, seperti persyaratan interoperabilitas SatuSehat yang berbasis FHIR R4.

Detail Implementasi Teknis & Teknologi

Membangun integrasi LIS dengan SIMRS membutuhkan perencanaan arsitektur yang matang serta pemilihan teknologi yang tepat. Dalam implementasi modern, pendekatan berbasis API adalah yang paling fleksibel dan aman. Arsitektur yang umum digunakan melibatkan dua skenario utama: koneksi langsung atau melalui Message Broker.

Untuk koneksi langsung, SIMRS akan memanggil API LIS dan sebaliknya. Ini cocok untuk sistem dengan volume transaksi menengah. Namun, untuk sistem dengan volume tinggi atau kebutuhan skalabilitas dan ketahanan yang lebih baik, penggunaan Message Broker seperti Apache Kafka atau RabbitMQ sangat disarankan. Message broker bertindak sebagai perantara, memastikan pengiriman pesan yang Andal dan decoupling antar sistem. Misalnya, saat SIMRS mengirim Order Lab, ia akan mengirim pesan ke Kafka topic 'lab_order', dan LIS akan mengonsumsi pesan dari topic tersebut. Begitu pula saat LIS saat mengirim hasil, ia akan mengirim ke topic 'lab_result' yang dikonsumsi oleh SIMRS.

Dari sisi teknologi backend, Anda dapat memilih platform yang Anda kuasai. Untuk lingkungan PHP, Laravel 11.x adalah pilihan yang sangat baik karena ekosistemnya yang kaya dan dukungan komunitas yang kuat. Jika Anda memilih JavaScript/TypeScript, Node.js 20 LTS dengan framework seperti Express.js atau NestJS menawarkan performa tinggi untuk aplikasi real-time. Basis data relasional seperti PostgreSQL 16 sangat direkomendasikan karena keandalan, skalabilitas, dan dukungan JSONB yang memudahkan penyimpanan data semi-terstruktur. Untuk API, standar RESTful API dengan format data JSON adalah pilihan umum, meskipun GraphQL dapat dipertimbangkan untuk fleksibilitas query data.

Standar interoperabilitas memegang peranan vital. Banyak LIS lama mungkin masih menggunakan HL7 v2.5.1 untuk pertukaran pesan. Untuk ini, Anda memerlukan parser dan generator HL7 v2. Di PHP, Anda bisa menggunakan library seperti php-hl7 atau membangun parser kustom. Di Node.js, node-hl7 dapat membantu. Namun, untuk integrasi dengan platform nasional seperti SatuSehat, Anda wajib mengadopsi standar FHIR R4 (Fast Healthcare Interoperability Resources Release 4). FHIR menggunakan pendekatan RESTful API dengan resource berbasis JSON/XML, yang lebih modern dan mudah diimplementasikan. Untuk FHIR, library seperti fhir-client-php atau hapi-fhir-php untuk Laravel, atau fhir.js untuk Node.js, akan sangat membantu.

Aspek keamanan tidak boleh diabaikan. Semua komunikasi API harus menggunakan HTTPS. Untuk otentikasi dan otorisasi, implementasikan OAuth2.0 atau setidaknya penggunaan API Key yang kuat dan dirotasi secara berkala. Validasi input yang ketat dan sanitasi data adalah keharusan untuk mencegah injeksi SQL atau serangan XSS. Tantangan lain adalah pemetaan data yang akurat antara kedua sistem, terutama untuk kode tes laboratorium, unit pengukuran, dan terminologi klinis. Standar seperti LOINC (Logical Observation Identifiers Names and Codes) dan SNOMED CT (Systematized Nomenclature of Medicine—Clinical Terms) sangat direkomendasikan untuk menstandardisasi data laboratorium, memastikan interpretasi yang konsisten di kedua sistem dan kompatibilitas dengan SatuSehat.

Contoh Kode Implementasi API

Bagian ini akan menyajikan contoh kode konkret untuk ilustrasi integrasi LIS dengan SIMRS menggunakan standar FHIR R4, yang relevan untuk implementasi SatuSehat. Kita akan fokus pada dua alur utama: pengiriman permintaan laboratorium dari SIMRS ke LIS, dan pengiriman hasil laboratorium dari LIS kembali ke SIMRS. Contoh ini akan menggunakan konsep RESTful API dan JSON.

1. Mengirim Permintaan Laboratorium dari SIMRS ke LIS (FHIR ServiceRequest)

Ketika seorang dokter di SIMRS membuat permintaan tes lab, SIMRS akan membuat resource FHIR ServiceRequest dan mengirimkannya ke endpoint API LIS. Berikut adalah contoh fungsi dalam Laravel (PHP) untuk mengirim ServiceRequest:

// SIMRS (Laravel 11.x) - Mengirim ServiceRequest ke LIS
use IlluminateHttpClientHttpClient;
use IlluminateSupportFacadesLog;

class LabOrderService
{
protected $httpClient;
protected $lisApiUrl;
protected $lisApiKey;

public function __construct(HttpClient $httpClient)
{
$this->httpClient = $httpClient;
$this->lisApiUrl = config('services.lis.api_url');
$this->lisApiKey = config('services.lis.api_key');
}

public function sendLabOrder(array $orderData): bool
{
$fhirServiceRequest = [
'resourceType' => 'ServiceRequest',
'id' => 'order-' . $orderData['order_id'],
'status' => 'active',
'intent' => 'order',
'category' => [['coding' => [['system' => 'http://terminology.hl7.org/CodeSystem/v2-0074', 'code' => 'LAB', 'display' => 'Laboratory']]]],
'subject' => ['reference' => 'Patient/' . $orderData['patient_id']],
'requester' => ['reference' => 'Practitioner/' . $orderData['practitioner_id']],
'code' => ['coding' => [
['system' => 'http://loinc.org', 'code' => $orderData['loinc_code'], 'display' => $orderData['test_name']]
]],
'occurrenceDateTime' => now()->toIso8601String(),
'priority' => 'routine',
// Tambahkan data lain sesuai kebutuhan FHIR ServiceRequest
];

try {
$response = $this->httpClient->withHeaders([
'Content-Type' => 'application/fhir+json',
'Accept' => 'application/fhir+json',
'X-API-Key' => $this->lisApiKey,
])->post("{$this->lisApiUrl}/ServiceRequest", $fhirServiceRequest);

if ($response->successful()) {
Log::info('Lab order sent successfully to LIS.', ['order_id' => $orderData['order_id'], 'response' => $response->json()]);
return true;
} else {
Log::error('Failed to send lab order to LIS.', ['order_id' => $orderData['order_id'], 'status' => $response->status(), 'response' => $response->json()]);
return false;
}
} catch (Exception $e) {
Log::error('Exception sending lab order to LIS: ' . $e->getMessage(), ['order_id' => $orderData['order_id']]);
return false;
}
}
}

Kode di atas menunjukkan bagaimana SIMRS menggunakan HttpClient Laravel untuk mengirimkan objek JSON yang merepresentasikan ServiceRequest FHIR ke endpoint LIS. Penting untuk memastikan Content-Type yang benar (application/fhir+json) dan menyertakan API Key untuk otentikasi. loinc_code digunakan untuk standarisasi kode tes laboratorium.

2. Mengirim Hasil Laboratorium dari LIS ke SIMRS (FHIR Observation)

Setelah LIS memproses tes dan hasilnya divalidasi, LIS akan membuat resource FHIR Observation dan mengirimkannya kembali ke endpoint API SIMRS. Berikut adalah contoh fungsi dalam Node.js (Express.js) untuk mengirim Observation:

// LIS (Node.js 20 LTS) - Mengirim Observation ke SIMRS
const axios = require('axios');
const moment = require('moment'); // Untuk format tanggal

const simrsApiUrl = process.env.SIMRS_API_URL;
const simrsApiKey = process.env.SIMRS_API_KEY;

async function sendLabResult(resultData) {
const fhirObservation = {
resourceType: 'Observation',
id: 'obs-' + resultData.result_id,
status: 'final', // atau 'preliminary'
category: [{
coding: [{
system: 'http://terminology.hl7.org/CodeSystem/observation-category',
code: 'laboratory',
display: 'Laboratory'
}]
}],
code: {
coding: [{
system: 'http://loinc.org',
code: resultData.loinc_code,
display: resultData.test_name
}],
text: resultData.test_name
},
subject: { reference: 'Patient/' + resultData.patient_id },
encounter: { reference: 'Encounter/' + resultData.encounter_id }, // Opsional, jika ada
effectiveDateTime: moment().toISOString(),
issued: moment().toISOString(),
valueQuantity: {
value: resultData.value,
unit: resultData.unit,
system: 'http://unitsofmeasure.org',
code: resultData.unit_code // Misalnya 'mg/dL'
},
// Referensi ke ServiceRequest yang terkait (jika ada)
basedOn: [{ reference: 'ServiceRequest/' + resultData.order_id }],
// Tambahkan referensi ke Practitioner yang memvalidasi
performer: [{ reference: 'Practitioner/' + resultData.validator_id }]
};

try {
const response = await axios.post(`${simrsApiUrl}/Observation`, fhirObservation, {
headers: {
'Content-Type': 'application/fhir+json',
'Accept': 'application/fhir+json',
'X-API-Key': simrsApiKey,
}
});
console.log(`Lab result ${resultData.result_id} sent successfully to SIMRS.`);
return response.data;
} catch (error) {
console.error(`Failed to send lab result ${resultData.result_id} to SIMRS:`, error.message);
if (error.response) {
console.error('SIMRS Response:', error.response.data);
}
throw error;
}
}

Fungsi sendLabResult di Node.js ini menggunakan library axios untuk mengirim resource Observation FHIR ke SIMRS. status: 'final' menunjukkan bahwa hasil sudah divalidasi. Penggunaan valueQuantity sangat penting untuk hasil numerik, mencakup nilai, unit, dan sistem unit (misalnya, 'http://unitsofmeasure.org'). Integrasi dua arah ini memastikan data pasien selalu konsisten dan up-to-date di seluruh sistem rumah sakit, memenuhi kebutuhan interoperabilitas data seperti yang diamanatkan oleh SatuSehat.

Contoh Payload dan Penanganan Error

Memahami struktur payload data dan bagaimana menangani error adalah kunci dalam membangun integrasi yang robust. Berikut adalah contoh payload FHIR ServiceRequest yang realistis dan ilustrasi penanganan error.

Contoh Payload FHIR ServiceRequest (JSON)

Payload ini merepresentasikan permintaan tes darah lengkap (DPL) dari SIMRS ke LIS, sesuai dengan standar FHIR R4.

{
"resourceType": "ServiceRequest",
"id": "SR-LAB-20231101-001",
"meta": {
"profile": ["http://ihis.gov.sg/fhir/StructureDefinition/IhisServiceRequest"]
},
"status": "active",
"intent": "order",
"category": [
{
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/v2-0074",
"code": "LAB",
"display": "Laboratory"
}
]
}
],
"code": {
"coding": [
{
"system": "http://loinc.org",
"code": "24358-8",
"display": "Complete blood count (CBC) with differential"
}
],
"text": "Darah Lengkap dengan Hitung Jenis"
},
"subject": {
"reference": "Patient/P-0012345",
"display": "Tn. Budi Santoso"
},
"encounter": {
"reference": "Encounter/E-20231101-007",
"display": "Kunjungan Rawat Jalan 01 Nov 2023"
},
"occurrenceDateTime": "2023-11-01T10:30:00+07:00",
"authoredOn": "2023-11-01T10:25:00+07:00",
"requester": {
"reference": "Practitioner/DR-001",
"display": "Dr. Citra Dewi"
},
"reasonCode": [
{
"coding": [
{
"system": "http://snomed.info/sct",
"code": "386661006",
"display": "Fever"
}
],
"text": "Demam tinggi"
}
],
"priority": "routine",
"note": [
{
"text": "Pasien mengeluh lemas dan pusing sejak 3 hari lalu."
Terakhir diperbarui 23 Apr 2026

Komentar

Komentar ditinjau sebelum tampil.

Belum ada komentar. Jadilah yang pertama!