API Documentation
v2.1Panduan integrasi teknis antara SIMRS KHANZA dan Laboratory Information System (LIS) BIOSYS melalui BIOSYS API.
Global Authentication
Semua request API memerlukan Header berikut:
X-API-KEY: LIS_SIMRS_123456
KONFIGURASI KONEKSI
Gunakan konfigurasi berikut pada sistem SIMRS Anda:
X-API-KEY
LIS_SIMRS_123456
* Masukkan API Key sebagai nama Header, dan Secret Key sebagai nilai Header pada setiap request.
Apa yang Baru di v2.1
- PUT /order_update sekarang ADDITIVE — test lama tidak lagi hilang saat update; gunakan field baru
RemoveItemsuntuk hapus eksplisit. - POST /lab_order strict validation — response 406 kalau sub-item HIS belum di-mapping; order disimpan dengan status
ERRORsupaya bisa dipetakan dari UI LIS. - GET /lab_result — field
TestHissekarang strict, hanya HIS code yang relevan dengan order (bukan seluruh mapping historis).
Post Laboratory Order
Mengirim pemesanan transaksi / tagihan tes laboratorium baru dari SIMRS ke LIS BIOSYS.
Endpoint
IP SERVER Atau URL SERVER/bridging_kz/lab_order.php
Base URL
https://kz.biosys.softwarelaboratorium.com
Contoh full URL:
https://kz.biosys.softwarelaboratorium.com/bridging_kz/lab_order.php
Request
Method
POST
Request Body (application/json)
| Parameter | Type | Required | Description |
|---|---|---|---|
| PatientCode | string | Yes | Nomor Rekam Medis (RM) / Kode Pasien |
| OrderNumber | string | Yes | Nomor order transaksi unik dari SIMRS |
| PatientName | string | Yes | Nama Pasien sesuai identitas |
| IdentityNumber | string | Yes | NIK / Nomor KTP Pasien |
| PatientDob | date | Yes | Tanggal lahir (YYYY-MM-DD) |
| PatientSexCode | string | Yes | Kode Jenis Kelamin: 1 (Laki-laki), 2 (Perempuan) |
| PatientAddress | string | Yes | Alamat lengkap pasien |
| DiagnosisName | string | Yes | Diagnosa sementara / klinis |
| OrderDateTime | datetime | Yes | Waktu order dikirim (YYYY-MM-DD HH:MM:SS) |
| DoctorOrderCode | string | Yes | Kode Dokter Pengirim |
| DoctorOrderName | string | Yes | Nama Dokter Pengirim |
| DoctorInChargeCode | string | Yes | Kode Dokter Penanggung Jawab (DPJP) |
| DoctorInChargeName | string | Yes | Nama Dokter Penanggung Jawab (DPJP) |
| ServiceClassCode | string | Yes | Kode Kelas Layanan |
| ServiceClassName | string | Yes | Nama Kelas Layanan (cth: Kelas 1) |
| WardRoomCode | string | Yes | Kode Ruangan / Poliklinik |
| WardRoomName | string | Yes | Nama Ruangan / Poliklinik |
| GuarantorId | string | Yes | ID Penjamin / Asuransi |
| GuarantorName | string | Yes | Nama Penjamin (cth: BPJS KESEHATAN) |
| PatientType | string | Yes | Tipe Pasien (cth: 1 untuk Rawat Inap) |
| IsCito | int | Yes | 1 (Cito/Segera), 0 (Rutin) |
| IsBpjs | int | Yes | 1 (BPJS), 0 (Non-BPJS) |
| InternalNote | string | Yes | Catatan internal untuk petugas lab |
| PatientNote | string | Yes | Catatan instruksi untuk pasien |
| OrderedItems | array | Yes | Daftar test yang diorder (Array of Object). Mendukung 2 format:
Flat (langsung ItemCode) atau
Nested (panel/header dengan HeaderItemCode,
HeaderItemName, dan array Items berisi sub-test).
|
OrderedItems — Struktur Nested (Panel / Header)
Gunakan struktur nested ketika SIMRS mengirim
paket pemeriksaan (panel) yang berisi beberapa sub-test. Contoh: panel
10.001596.AK1 (PAKET Na/K/Cl) berisi sub-test
27178 (Natrium),
27179 (Kalium),
27180 (Chlorida).
| Field | Type | Required | Description |
|---|---|---|---|
| HeaderItemCode | string | Yes | Kode panel / header pemeriksaan SIMRS (mis. 10.001596.AK1 untuk PAKET Na/K/Cl). Kode ini harus sudah dimapping ke kodetest LIS (untuk kode ini didapatkan dari Kode Jenis Perawatan). |
| HeaderItemName | string | Yes | Nama panel / header pemeriksaan (mis. PAKET Na/K/Cl). Ditampilkan sebagai informasi di LIS. |
| Items | array | Yes | Daftar sub-test di bawah panel (mis. Natrium 27178, Kalium 27179, Chlorida 27180). Wajib berisi minimal 1 item. |
| Items[].ItemCode | string | Yes | Kode HIS sub-test SIMRS (mis. 27180 untuk Chlorida). Wajib sudah dimapping ke kodetest LIS (untuk kode ini didapatkan dari Kode ID Template). Bila belum dimapping, order ditolak dengan error 406. |
| Items[].ItemName | string | Yes | Nama sub-test (mis. Chlorida). |
Example Request Body — Nested (Recommended)
{
"PatientCode": "281295",
"OrderNumber": "ORD-20260306-0005",
"PatientName": "UNI 5",
"IdentityNumber": "3201234567890005",
"PatientDob": "2003-07-06",
"PatientSexCode": "2",
"PatientAddress": "Jl. Raya Bogor KM 50, No. 12",
"DiagnosisName": "Demam tidak spesifik (Febris)",
"OrderDateTime": "2026-03-06 20:54:00",
"DoctorOrderCode": "DR001",
"DoctorOrderName": "dr. Ahmad Spesialis",
"DoctorInChargeCode": "DR005",
"DoctorInChargeName": "dr. Siti Sarah, Sp.PK",
"ServiceClassCode": "CL1",
"ServiceClassName": "Kelas 1",
"WardRoomCode": "MAWAR",
"WardRoomName": "Ruang Mawar",
"GuarantorId": "0012",
"GuarantorName": "BPJS KESEHATAN",
"PatientType": "1",
"IsCito": 1,
"IsBpjs": 1,
"InternalNote": "Riwayat alergi antibiotik.",
"PatientNote": "Puasa minimal 10 jam.",
"OrderedItems": [
{
"HeaderItemCode": "10.001596.AK1",
"HeaderItemName": "PAKET Na/K/Cl",
"Items": [
{ "ItemCode": "27178", "ItemName": "Natrium" },
{ "ItemCode": "27179", "ItemName": "Kalium" },
{ "ItemCode": "27180", "ItemName": "Chlorida" }
]
},
{
"HeaderItemCode": "10.000777.AK1",
"HeaderItemName": "SGOT/AST",
"Items": [
{ "ItemCode": "28863", "ItemName": "SGOT" }
]
},
{
"HeaderItemCode": "10.000798.AK1",
"HeaderItemName": "SGPT/ALT",
"Items": [
{ "ItemCode": "28878", "ItemName": "SGPT" }
]
}
]
}
Example Request Body — Flat (Legacy, Backward Compatible)
Format lama tanpa panel/header tetap didukung. Gunakan bila SIMRS hanya mengirim daftar test tanpa pengelompokan.
{
"PatientCode": "281295",
"OrderNumber": "ORD-20260306-0005",
"PatientName": "UNI 5",
"OrderDateTime": "2026-03-06 20:54:00",
"OrderedItems": [
{ "ItemCode": "28863", "ItemName": "SGOT" },
{ "ItemCode": "28878", "ItemName": "SGPT" }
]
}
Success Response
{
"message": "Data berhasil disimpan !",
"status": "200",
"payload": {
"nolab": "2603130005",
"specType": "00"
}
}
Error Response — Mapping Belum Tersedia
Error ini terjadi ketika sub-item (dalam format nested)
atau flat ItemCode belum dipetakan ke kodetest LIS (tb_test_his).
Order tetap disimpan di staging (lab_order_simrs) dengan
process_status = 'ERROR' sehingga bisa dimapping dari UI LIS
(Mapping Test Modal); setelah mapping disimpan, order otomatis di-reprocess.
{
"message": "Mapping HIS belum tersedia untuk: 27180 (Chlorida). Silakan mapping ke kodetest LIS terlebih dahulu (tb_test_his) sebelum submit order.",
"status": "406",
"payload": []
}
Error Response — Field Wajib Kosong
Terjadi kalau salah satu field wajib minimum
(PatientCode, OrderNumber, PatientName,
OrderDateTime, OrderedItems) kosong atau OrderedItems
berupa array kosong.
{
"status": "error",
"message": "Field OrderNumber wajib diisi"
}
Update Order
Menambah test baru dan/atau menghapus test tertentu pada order laboratorium yang sudah ada. Endpoint ini beroperasi dalam mode ADDITIVE — test lama yang tidak disebut di payload tetap dipertahankan.
Semantik ADDITIVE (v2.1+):
OrderedItems→ test di dalamnya akan ditambahkan ke order yang ada (dedupe otomatis, tidak replace).RemoveItems(baru) → daftar HIS code yang akan dihapus dari order.- Test yang sudah ada di order tapi tidak disebut di
OrderedItemsmaupunRemoveItems→ tidak tersentuh. - Untuk membatalkan seluruh order gunakan endpoint DELETE /order_delete.
Endpoint
IP SERVER Atau URL SERVER/bridging_kz/order_update.php
Base URL
https://kz.biosys.softwarelaboratorium.com
Contoh full URL:
https://kz.biosys.softwarelaboratorium.com/bridging_kz/order_update.php
Request
Method
PUT
Request Body (application/json)
| Parameter | Type | Required | Description |
|---|---|---|---|
| OrderNumber | string | Yes | Nomor order transaksi unik dari SIMRS (harus sudah pernah di-POST sebelumnya) |
| PatientCode | string | Yes | Nomor Rekam Medis (RM) / Kode Pasien |
| OrderedItems | array | Yes* |
Daftar test baru yang akan ditambahkan ke order. Boleh array kosong
[] bila tujuannya hanya menghapus (lihat RemoveItems).
Dukung 2 format: Nested (panel dengan
HeaderItemCode/Items[]) atau Flat
(legacy).*Wajib ada sebagai field, boleh [].
|
| RemoveItems | array<string> | No |
Baru di v2.1. Daftar HIS ItemCode yang mau dihapus. Bisa
berisi:
OrderedItems (non-empty) atau
RemoveItems (non-empty) harus diisi.
|
| IsCito | int | No | 1 (Cito), 0 (Rutin). Dipakai saat INSERT test baru. Default: 0. |
| DoctorOrderCode | string | No | Kode Dokter Pengirim (untuk test yang baru ditambahkan) |
| GuarantorId | string | No | ID Penjamin (untuk test yang baru ditambahkan) |
| PatientName, IdentityNumber, … dsb | — | No | Field lain (identitas pasien, dokter, ruangan, dsb) boleh
dikirim untuk konsistensi, tapi tidak akan mengubah data pasien/order yang sudah
tersimpan di LIS. Field-field ini cuma ikut tersimpan di raw_json. |
OrderedItems — Struktur (sama dengan POST /lab_order)
Mendukung format Nested (HeaderItemCode + Items[]) atau Flat (langsung ItemCode). Semua sub-item / flat ItemCode wajib sudah memiliki mapping di LIS (lihat error 406 di bawah).
Contoh Skenario
1. Tambah panel baru ke order yang sudah ada
Order ORD-20260306-0005 sebelumnya berisi PAKET Na/K/Cl, SGOT/AST, SGPT/ALT. Payload berikut menambahkan panel Darah Rutin; panel-panel lama tetap tersimpan.
{
"PatientCode": "281295",
"OrderNumber": "ORD-20260306-0005",
"PatientName": "UNI 5",
"IsCito": 1,
"OrderedItems": [
{
"HeaderItemCode": "01.000021.AVV",
"HeaderItemName": "Darah Rutin",
"Items": [
{ "ItemCode": "25197", "ItemName": "Hemoglobin" },
{ "ItemCode": "25199", "ItemName": "Leukosit" },
{ "ItemCode": "25198", "ItemName": "Hematokrit" },
{ "ItemCode": "25200", "ItemName": "Trombosit" }
]
}
]
}
2. Hapus satu panel saja (tanpa menambah apa pun)
OrderedItems diisi []. Hanya panel SGPT/ALT yang dibuang; panel lain (PAKET Na/K/Cl, SGOT/AST) tetap ada di order.
{
"PatientCode": "281295",
"OrderNumber": "ORD-20260306-0005",
"PatientName": "UNI 5",
"IsCito": 1,
"OrderedItems": [],
"RemoveItems": ["10.000798.AK1"]
}
3. Hapus satu sub-item (Natrium) dari panel
Sub 27178 (Natrium) dihapus dari panel PAKET Na/K/Cl; sisa panel (Kalium + Chlorida) tetap. Bila panel kebetulan hanya berisi 1 sub dan sub itu dihapus, panel otomatis ikut dibuang.
{
"PatientCode": "281295",
"OrderNumber": "ORD-20260306-0005",
"PatientName": "UNI 5",
"IsCito": 1,
"OrderedItems": [],
"RemoveItems": ["27178"]
}
4. Kombinasi: tambah panel baru + hapus panel lama
Tambah Darah Rutin, hapus panel SGPT/ALT. Urutan eksekusi di server: RemoveItems dulu → lalu OrderedItems.
{
"PatientCode": "281295",
"OrderNumber": "ORD-20260306-0005",
"PatientName": "UNI 5",
"IsCito": 1,
"OrderedItems": [
{
"HeaderItemCode": "01.000021.AVV",
"HeaderItemName": "Darah Rutin",
"Items": [
{ "ItemCode": "25197", "ItemName": "Hemoglobin" },
{ "ItemCode": "25199", "ItemName": "Leukosit" },
{ "ItemCode": "25198", "ItemName": "Hematokrit" },
{ "ItemCode": "25200", "ItemName": "Trombosit" }
]
}
],
"RemoveItems": ["10.000798.AK1"]
}
Jangan: memasukkan ItemCode yang sama di OrderedItems dan RemoveItems sekaligus. Server menjalankan RemoveItems dulu lalu meng-insert OrderedItems — hasilnya test akan ter-hapus lalu ter-insert lagi (efek nol).
Response
Success Response
{
"message": "Berhasil update order!",
"status": "200",
"payload": {
"nolab": "2603130005",
"specType": "00"
}
}
Error Response — Parameter Tidak Lengkap
Terjadi kalau OrderNumber/PatientCode kosong, atau OrderedItems & RemoveItems dua-duanya kosong.
{
"message": "Parameter tidak lengkap (butuh OrderedItems atau RemoveItems)",
"status": "406",
"payload": []
}
Error Response — Order Tidak Ditemukan
OrderNumber tidak pernah di-POST ke LIS. Kirim POST /lab_order dulu.
{
"message": "Order tidak ditemukan",
"status": "204",
"payload": []
}
Error Response — Mapping Belum Tersedia
Terjadi ketika sub-item / flat ItemCode di OrderedItems belum dipetakan di tb_test_his. Status order di-set ke ERROR dan bisa dipetakan dari dashboard LIS (Mapping LIS). Setelah mapping dilakukan, order otomatis di-reprocess.
{
"message": "Mapping HIS belum tersedia untuk: 27180 (Chlorida). Silakan mapping ke kodetest LIS terlebih dahulu (tb_test_his) sebelum update order.",
"status": "406",
"payload": []
}
Delete Order
Membatalkan seluruh order laboratorium berdasarkan
Nomor Order. Berbeda dari PUT /order_update
dengan RemoveItems, endpoint ini menghapus:
- Semua test (
tb_pastest1,tb_pastest2) - Data dokter order (
tb_pasdokter) - Data penjamin (
tb_paskontrak) - Header order LIS (
tb_paslab) - Item staging (
lab_order_item_simrs)
Record di lab_order_simrs tidak dihapus,
tapi status_order di-set ke DELETE untuk menjaga audit trail dan notifikasi
di dashboard LIS.
Endpoint
IP SERVER Atau URL SERVER/bridging_kz/order_delete.php
Base URL
https://kz.biosys.softwarelaboratorium.com
Contoh full URL:
https://kz.biosys.softwarelaboratorium.com/bridging_kz/order_delete.php
Request
Method
DELETE
Request Body (application/json)
| Parameter | Type | Required | Description |
|---|---|---|---|
| OrderNumber | string | Yes | Nomor order transaksi yang mau dihapus (harus sudah ada di LIS) |
Example Request Body
{
"OrderNumber": "ORD-20260306-0005"
}
Response
Success Response
{
"message": "Order berhasil dihapus total dari LIS",
"status": 200,
"payload": {
"OrderNumber": "ORD-20260306-0005",
"nolab": "2603130005"
}
}
Error Response — Order Tidak Ditemukan / Gagal
{
"message": "Delete Order Error: Order tidak ditemukan di LIS: ORD-20260306-0005",
"status": 406,
"payload": []
}
Error Response — Method Salah
Terjadi kalau request dikirim dengan method selain DELETE (mis. GET, POST, PUT).
{
"message": "Method not allowed",
"status": 405,
"payload": []
}
Get Laboratory Result
Mengambil hasil pemeriksaan laboratorium berdasarkan Order Number.
Endpoint
IP SERVER Atau URL SERVER/bridging_kz/lab_result.php
Base URL
https://kz.biosys.softwarelaboratorium.com
Contoh full URL:
https://kz.biosys.softwarelaboratorium.com/bridging_kz/lab_result.php?OrderNumber=ORD-20260306-0005
Request
Method
GET
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| OrderNumber | string | Yes | Nomor order pemeriksaan laboratorium |
Example Request
GET /bridging_kz/lab_result.php?OrderNumber=ORD-20260306-0005
Host: kz.biosys.softwarelaboratorium.com
X-API-KEY: LIS_SIMRS_123456
Response
Success Response
Response Body — Grouped by Panel / Header
Hasil pemeriksaan sekarang dikelompokkan per panel (HeaderItemCode / HeaderItemName) yang berasal dari order awal. Test tanpa panel akan masuk ke group HeaderItemCode: null.
{
"message": "OK",
"status": 200,
"payload": {
"OrderNumber": "ORD-20260306-0005",
"nolab": "2603130005",
"PatientCode": "281295",
"PatientName": "UNI 5",
"OrderDateTime": "2026-03-06",
"OrderNote": "",
"Results": [
{
"HeaderItemCode": "10.001596.AK1",
"HeaderItemName": "PAKET Na/K/Cl",
"Items": [
{
"TestCodeHeader": "020106",
"TestNameHeader": "Elektrolit Darah",
"TestCodeSub": "020107",
"TestNameSub": "Natrium",
"TestHis": "27178,10.001596.AK1",
"ResultValue": "138",
"ResultNote": "",
"ReferenceRange": "",
"ResultUnit": "mmol/L",
"NormalRange": "135 - 145",
"Flag": "",
"ResultStatus": "Final",
"ResultDateTime": "2026-04-21 17:29:09",
"validasi": "admin",
"tgl_validasi": "2026-04-21 20:16:07",
"selesai": "admin",
"tgl_selesai": "2026-04-21 20:16:06",
"LoincNum": "",
"LoincComponent": "",
"UnitCode": "",
"SnomedCode": "365761000",
"UrutHasil": "020107",
"CriticalDoctor": "",
"CriticalReportTime": "",
"CriticalResponseTime": "",
"CriticalAction": ""
},
{
"TestCodeHeader": "020106",
"TestNameHeader": "Elektrolit Darah",
"TestCodeSub": "020108",
"TestNameSub": "Kalium",
"TestHis": "27179,10.001596.AK1",
"ResultValue": "3.4",
"ResultNote": "",
"ReferenceRange": "",
"ResultUnit": "mmol/L",
"NormalRange": "3.5 - 5.1",
"Flag": "L",
"ResultStatus": "Final",
"ResultDateTime": "2026-04-21 17:29:09",
"validasi": "admin",
"tgl_validasi": "2026-04-21 20:16:07",
"selesai": "admin",
"tgl_selesai": "2026-04-21 20:16:06",
"LoincNum": "",
"LoincComponent": "",
"UnitCode": "",
"SnomedCode": "312468003",
"UrutHasil": "020108",
"CriticalDoctor": "",
"CriticalReportTime": "",
"CriticalResponseTime": "",
"CriticalAction": ""
},
{
"TestCodeHeader": "020106",
"TestNameHeader": "Elektrolit Darah",
"TestCodeSub": "020109",
"TestNameSub": "Clorida",
"TestHis": "27180,10.001596.AK1",
"ResultValue": "111",
"ResultNote": "",
"ReferenceRange": "",
"ResultUnit": "mmol/L",
"NormalRange": "98 - 110",
"Flag": "H",
"ResultStatus": "Final",
"ResultDateTime": "2026-04-21 17:29:09",
"validasi": "admin",
"tgl_validasi": "2026-04-21 20:16:07",
"selesai": "admin",
"tgl_selesai": "2026-04-21 20:16:06",
"LoincNum": "",
"LoincComponent": "",
"UnitCode": "",
"SnomedCode": "60203004",
"UrutHasil": "020109",
"CriticalDoctor": "",
"CriticalReportTime": "",
"CriticalResponseTime": "",
"CriticalAction": ""
}
]
},
{
"HeaderItemCode": "10.000777.AK1",
"HeaderItemName": "SGOT/AST",
"Items": [
{
"TestCodeHeader": "020001",
"TestNameHeader": "SGOT/AST",
"TestCodeSub": "020001",
"TestNameSub": "SGOT/AST",
"TestHis": "28863,10.000777.AK1",
"ResultValue": "30",
"ResultNote": "",
"ReferenceRange": "",
"ResultUnit": "U/L",
"NormalRange": "< 31",
"Flag": "",
"ResultStatus": "Final",
"ResultDateTime": "2026-04-21 17:29:09",
"validasi": "admin",
"tgl_validasi": "2026-04-21 20:16:07",
"selesai": "admin",
"tgl_selesai": "2026-04-21 20:16:06",
"LoincNum": "",
"LoincComponent": "",
"UnitCode": "",
"SnomedCode": "45896000",
"UrutHasil": "020001",
"CriticalDoctor": "",
"CriticalReportTime": "",
"CriticalResponseTime": "",
"CriticalAction": ""
}
]
},
{
"HeaderItemCode": "10.000798.AK1",
"HeaderItemName": "SGPT/ALT",
"Items": [
{
"TestCodeHeader": "020002",
"TestNameHeader": "SGPT/ALT",
"TestCodeSub": "020002",
"TestNameSub": "SGPT/ALT",
"TestHis": "28878,10.000798.AK1",
"ResultValue": "58",
"ResultNote": "",
"ReferenceRange": "",
"ResultUnit": "U/L",
"NormalRange": "< 41",
"Flag": "H",
"ResultStatus": "Final",
"ResultDateTime": "2026-04-21 17:29:09",
"validasi": "admin",
"tgl_validasi": "2026-04-21 20:16:07",
"selesai": "admin",
"tgl_selesai": "2026-04-21 20:16:06",
"LoincNum": "",
"LoincComponent": "",
"UnitCode": "",
"SnomedCode": "56935002",
"UrutHasil": "020002",
"CriticalDoctor": "",
"CriticalReportTime": "",
"CriticalResponseTime": "",
"CriticalAction": ""
}
]
}
]
}
}
Response Structure
Root Object
| Field | Type | Description |
|---|---|---|
| message | string | Status message |
| status | integer | HTTP status code |
| payload | object | Data hasil laboratorium |
Payload Object
| Field | Type | Description |
|---|---|---|
| OrderNumber | string | Nomor order |
| nolab | string | Nomor laboratorium internal BIOSYS |
| PatientCode | string | Kode pasien / No. RM |
| PatientName | string | Nama pasien |
| OrderDateTime | date | Tanggal order |
| OrderNote | string | Catatan order |
| Results | array | Daftar hasil pemeriksaan dikelompokkan per panel/header. Tiap elemen
berisi HeaderItemCode, HeaderItemName, dan Items.
|
Results Object (Group per Panel)
| Field | Type | Description |
|---|---|---|
| HeaderItemCode | string | null | Kode panel / header dari order SIMRS (mis. 10.001596.AK1 untuk PAKET Na/K/Cl). null jika test dikirim tanpa panel (flat). |
| HeaderItemName | string | null | Nama panel / header (mis. PAKET Na/K/Cl) |
| Items | array | Daftar hasil sub-test di bawah panel ini (struktur detail pada tabel berikut) |
Items Object (Array item — detail hasil per test)
| Field | Type | Description |
|---|---|---|
| TestCodeHeader | string | Kode grup pemeriksaan (Parent) |
| TestNameHeader | string | Nama grup pemeriksaan |
| TestCodeSub | string | Kode test (Anak/Parameter) |
| TestNameSub | string | Nama test |
| TestHis | string |
Kode Mapping SIMRS — HIS code yang di-order oleh SIMRS dan sesuai untuk
test ini. Berupa string dipisah koma (,) bila satu kodetest LIS
dipetakan ke banyak HIS code.Sejak v2.1: strict 2-tier matching — hanya HIS code yang benar-benar ada di order ( lab_order_item_simrs) yang dikembalikan;
prioritas sub-item > header. Sehingga tidak akan keluar HIS code dari mapping
historis yang tidak relevan dengan order ini.
|
| ResultValue | string | Nilai hasil pemeriksaan |
| ResultNote | string | Catatan hasil pemeriksaan |
| ReferenceRange | string | Nilai rujukan (format teks) |
| ResultUnit | string | Satuan hasil (cth: mg/dL) |
| NormalRange | string | Nilai rujukan normal |
| Flag | string | Penanda abnormal (H / L / CH / CL) |
| ResultStatus | string | Status hasil (Final / Pending) |
| ResultDateTime | datetime | Waktu hasil final keluar |
| validasi | string | User yang validasi |
| tgl_validasi | datetime | Tanggal & waktu validasi |
| selesai | string | User yang menyelesaikan |
| tgl_selesai | datetime | Tanggal & waktu selesai |
| LoincNum | string | Kode LOINC |
| LoincComponent | string | Nama Komponen LOINC |
| UnitCode | string | Kode satuan standar |
| SnomedCode | string | Kode SNOMED CT |
| UrutHasil | string | Urutan tampil hasil |
| CriticalDoctor | string | Nama dokter pelaporan nilai kritis |
| CriticalReportTime | datetime | Waktu pelaporan nilai kritis |
| CriticalResponseTime | string | Waktu respon nilai kritis |
| CriticalAction | string | Tindakan yang dilakukan untuk nilai kritis |
Contoh Hasil Penampilan Data
| Test | Result | Unit | Range | Flag |
|---|---|---|---|---|
| Hemoglobin | 1 | g/dL | 14.0 - 16.0 | CL |
| Hematokrit | 30 | % | 37 - 47 | L |
| Trombosit | 450 | 10^3/uL | 150 - 400 | H |
| SGOT/AST | 30 | U/L | < 31 | — |
Error Response Example
Kasus: Order Number Tidak Ditemukan
{
"message": "Order Number not found",
"status": 404,
"payload": null
}
Acknowledge Result (Flag)
Menandai bahwa SIMRS/HIS telah berhasil menarik dan menerima hasil lab secara utuh, sehingga transaksi bisa ditutup.
Efek server-side bila Flag=1:
- Record baru di-insert ke
lab_result_flag_his(audit trail). tb_paslab.upload_simrsdi-set1untuk order yang sesuai (menandai hasil sudah berhasil di-upload ke SIMRS).
Endpoint
IP SERVER Atau URL SERVER/bridging_kz/post_flag.php
Base URL
https://kz.biosys.softwarelaboratorium.com
Contoh full URL:
https://kz.biosys.softwarelaboratorium.com/bridging_kz/post_flag.php
Request
Method
POST
Request Body (application/json)
| Parameter | Type | Required | Description |
|---|---|---|---|
| OrderNumber | string | Yes | Nomor order transaksi SIMRS |
| PatientCode | string | Yes | Nomor Rekam Medis (RM) / Kode Pasien |
| Flag | integer | Yes |
1 = hasil berhasil ditarik oleh SIMRS (memicu update
upload_simrs=1). 0 = hanya mencatat log tanpa update status
order.
|
| ReceivedDate | datetime | Yes | Waktu hasil diterima SIMRS (format YYYY-MM-DD HH:MM:SS) |
Example Request Body
{
"OrderNumber": "ORD-20260306-0005",
"PatientCode": "281295",
"Flag": 1,
"ReceivedDate": "2026-03-13 14:05:00"
}
Response
Success Response
{
"message": "Berhasil menandai pengambilan hasil",
"status": "200"
}
Error Response — Field Kosong
Terjadi bila salah satu field wajib kosong.
{
"message": "Gagal menandai pengambilan hasil",
"status": "204"
}
Error Response — Invalid JSON
{
"message": "Invalid JSON",
"status": "400"
}
Error Response — Method Salah
{
"status": "error",
"message": "Method not allowed"
}
Error Response — Internal Error
{
"message": "Kesalahan system",
"status": "500"
}