Lewati ke isi

Referensi API

Integrasi

Lookup BPJS dan SATUSEHAT serta status kiriman alat lab (modul bpjs, satusehat, lis).

OpenAPI 3.1 · versi 1.1.0 · 127 operasi · 30 event webhook

Basis URLhttps://api.medivana.cloud/api/v1

Cek kepesertaan BPJS Kesehatan

Isi noka (13 digit) atau nik (16 digit). Timeout 5 detik; 502 bpjs-unavailable bila BPJS tidak menjawab (lanjutkan pendaftaran, cek ulang nanti). 422 bila format salah atau kredensial BPJS klinik belum dikonfigurasi.

Scope
patients:readpatients:write(cukup salah satu)
Izin RBAC
patient.read
Modul
bpjs

Parameter

Parameter GET /integrations/bpjs/peserta
NamaLokasiTipeKeterangan
nokaquerystring
nikquerystring

Contoh kode

Bahasa contoh kode
curl -X GET "https://api.medivana.cloud/api/v1/integrations/bpjs/peserta" \
  -H "Authorization: Bearer $MEDIVANA_TOKEN"
const res = await fetch("https://api.medivana.cloud/api/v1/integrations/bpjs/peserta", {
  method: "GET",
  headers: {
    Authorization: `Bearer ${process.env.MEDIVANA_TOKEN}`,
  },
});
if (!res.ok) throw new Error(`HTTP ${res.status}: ${await res.text()}`);
const data = await res.json();
import os
import requests

resp = requests.get(
    "https://api.medivana.cloud/api/v1/integrations/bpjs/peserta",
    headers={"Authorization": f"Bearer {os.environ['MEDIVANA_TOKEN']}"},
    timeout=30,
)
resp.raise_for_status()
data = resp.json()

Respons

200Hasil pengecekanapplication/json

{
  "found": true,
  "eligible": true,
  "message": "Peserta BPJS aktif.",
  "peserta": {
    "no_kartu": "0000000000001",
    "nama": "PASIEN CONTOH",
    "aktif": true,
    "ket_aktif": "AKTIF",
    "jenis_peserta": "PBI (APBN)",
    "kelas": "KELAS III",
    "tgl_lahir": "12-05-1990",
    "sex": "P",
    "ppk_kode": "0000X001",
    "ppk_nama": "KLINIK SEHAT CONTOH",
    "terdaftar_di_faskes_ini": true,
    "tunggakan": 0,
    "tgl_akhir_berlaku": "01-01-2030",
    "hubungan_keluarga": "PESERTA"
  }
}
Skema 200
Skema 200
NamaTipeKeterangan
foundboolean
eligibleboolean
messagestring
pesertaobject | null
Galat
  • 401unauthorizedToken tidak ada, tidak valid, kedaluwarsa, atau dicabut
  • 402module-lockedModul tidak aktif di paket organisasi
  • 403forbiddenScope token tidak memberi izin (forbidden), atau langganan klinik baca-saja untuk operasi tulis (read-only)
  • 422validationValidasi gagal; rincian per field di errors
  • 429rate-limitedBatas laju klien (rate_limit_per_min) terlampaui; coba lagi pada menit berikutnya
  • 502bpjs-unavailableLayanan pemerintah tidak menjawab (satusehat-unavailable / bpjs-unavailable); lanjutkan proses dan coba lagi nanti

Referensi diagnosa PCare BPJS

Minimal 3 huruf. Data mentah dari BPJS.

Scope
encounters:read
Izin RBAC
encounter.read
Modul
bpjs

Parameter

Parameter GET /integrations/bpjs/ref/diagnosa
NamaLokasiTipeKeterangan
qwajibquerystring

Contoh kode

Bahasa contoh kode
curl -X GET "https://api.medivana.cloud/api/v1/integrations/bpjs/ref/diagnosa?q=J06" \
  -H "Authorization: Bearer $MEDIVANA_TOKEN"
const res = await fetch("https://api.medivana.cloud/api/v1/integrations/bpjs/ref/diagnosa?q=J06", {
  method: "GET",
  headers: {
    Authorization: `Bearer ${process.env.MEDIVANA_TOKEN}`,
  },
});
if (!res.ok) throw new Error(`HTTP ${res.status}: ${await res.text()}`);
const data = await res.json();
import os
import requests

resp = requests.get(
    "https://api.medivana.cloud/api/v1/integrations/bpjs/ref/diagnosa?q=J06",
    headers={"Authorization": f"Bearer {os.environ['MEDIVANA_TOKEN']}"},
    timeout=30,
)
resp.raise_for_status()
data = resp.json()

Respons

200Diagnosaapplication/json

{
  "items": [
    {
      "kdDiag": "J06.9",
      "nmDiag": "Acute upper respiratory infection, unspecified",
      "nonSpesialis": true
    }
  ]
}
Skema 200
Skema 200
NamaTipeKeterangan
itemsarray<object>
items[].kdDiagstring
items[].nmDiagstring
items[].nonSpesialisboolean
Galat
  • 401unauthorizedToken tidak ada, tidak valid, kedaluwarsa, atau dicabut
  • 402module-lockedModul tidak aktif di paket organisasi
  • 403forbiddenScope token tidak memberi izin (forbidden), atau langganan klinik baca-saja untuk operasi tulis (read-only)
  • 422validationValidasi gagal; rincian per field di errors
  • 429rate-limitedBatas laju klien (rate_limit_per_min) terlampaui; coba lagi pada menit berikutnya
  • 502bpjs-unavailableLayanan pemerintah tidak menjawab (satusehat-unavailable / bpjs-unavailable); lanjutkan proses dan coba lagi nanti
GET/integrations/satusehat/patients/lookupTautan ke operasi ini: Lookup pasien SATUSEHAT berdasarkan NIK

Lookup pasien SATUSEHAT berdasarkan NIK

Timeout 3 detik. Nama tersamar dari SATUSEHAT tidak dikembalikan sebagai name. 502 satusehat-unavailable → lanjutkan dengan data lokal.

Scope
patients:readpatients:write(cukup salah satu)
Izin RBAC
patient.read
Modul
satusehat

Parameter

Parameter GET /integrations/satusehat/patients/lookup
NamaLokasiTipeKeterangan
nikwajibquerystring

Contoh kode

Bahasa contoh kode
curl -X GET "https://api.medivana.cloud/api/v1/integrations/satusehat/patients/lookup?nik=string" \
  -H "Authorization: Bearer $MEDIVANA_TOKEN"
const res = await fetch("https://api.medivana.cloud/api/v1/integrations/satusehat/patients/lookup?nik=string", {
  method: "GET",
  headers: {
    Authorization: `Bearer ${process.env.MEDIVANA_TOKEN}`,
  },
});
if (!res.ok) throw new Error(`HTTP ${res.status}: ${await res.text()}`);
const data = await res.json();
import os
import requests

resp = requests.get(
    "https://api.medivana.cloud/api/v1/integrations/satusehat/patients/lookup?nik=string",
    headers={"Authorization": f"Bearer {os.environ['MEDIVANA_TOKEN']}"},
    timeout=30,
)
resp.raise_for_status()
data = resp.json()

Respons

200Hasil lookupapplication/json

{
  "found": true,
  "patient": {
    "ihs_number": "P00000000001",
    "nik": "9999010101900001",
    "name": "PASIEN CONTOH",
    "birth_date": "1990-05-12T00:00:00Z",
    "gender": "female",
    "address": "Jl. Contoh No. 10"
  }
}
Skema 200
Skema 200
NamaTipeKeterangan
foundboolean
patientobject
patient.ihs_numberstring
patient.nikstring
patient.namestring
patient.birth_datestring
patient.genderstring
patient.addressstring
messagestring
Galat
  • 401unauthorizedToken tidak ada, tidak valid, kedaluwarsa, atau dicabut
  • 402module-lockedModul tidak aktif di paket organisasi
  • 403forbiddenScope token tidak memberi izin (forbidden), atau langganan klinik baca-saja untuk operasi tulis (read-only)
  • 422validationValidasi gagal; rincian per field di errors
  • 429rate-limitedBatas laju klien (rate_limit_per_min) terlampaui; coba lagi pada menit berikutnya
  • 502bpjs-unavailableLayanan pemerintah tidak menjawab (satusehat-unavailable / bpjs-unavailable); lanjutkan proses dan coba lagi nanti
GET/integrations/lis/orders/{id}/messagesTautan ke operasi ini: Status kiriman order lab ke alat (LIS)

Status kiriman order lab ke alat (LIS)

Pesan order keluar dan pesan hasil yang menulis ke order ini, tanpa isi mentah. status: queued, ready, sent, acked, rejected, failed, cancelled. Butuh modul lab dan add-on lis.

Scope
encounters:read
Izin RBAC
encounter.read · lab.order · lab.result
Modul
lab + lis

Parameter

Parameter GET /integrations/lis/orders/{id}/messages
NamaLokasiTipeKeterangan
idwajibpathstring (uuid)

Contoh kode

Bahasa contoh kode
curl -X GET "https://api.medivana.cloud/api/v1/integrations/lis/orders/3f0c2a10-5b7e-4c1d-9a2e-000000000001/messages" \
  -H "Authorization: Bearer $MEDIVANA_TOKEN"
const res = await fetch("https://api.medivana.cloud/api/v1/integrations/lis/orders/3f0c2a10-5b7e-4c1d-9a2e-000000000001/messages", {
  method: "GET",
  headers: {
    Authorization: `Bearer ${process.env.MEDIVANA_TOKEN}`,
  },
});
if (!res.ok) throw new Error(`HTTP ${res.status}: ${await res.text()}`);
const data = await res.json();
import os
import requests

resp = requests.get(
    "https://api.medivana.cloud/api/v1/integrations/lis/orders/3f0c2a10-5b7e-4c1d-9a2e-000000000001/messages",
    headers={"Authorization": f"Bearer {os.environ['MEDIVANA_TOKEN']}"},
    timeout=30,
)
resp.raise_for_status()
data = resp.json()

Respons

200Pesanapplication/json

{
  "items": [
    {
      "id": "3f0c2a10-5b7e-4c1d-9a2e-00000001c201",
      "direction": "out",
      "status": "acked",
      "control_id": "ORM-0001",
      "connection_name": "Analyzer Hematologi",
      "created_at": "2026-10-29T09:20:00+07:00"
    }
  ]
}
Skema 200
Skema 200
NamaTipeKeterangan
itemsarray<object>
items[].idstring (uuid)
items[].directionin | out
items[].statusstring
items[].control_idstring | null
items[].connection_namestring | null
items[].created_atstring (date-time)
Galat
  • 401unauthorizedToken tidak ada, tidak valid, kedaluwarsa, atau dicabut
  • 402module-lockedModul tidak aktif di paket organisasi
  • 403forbiddenScope token tidak memberi izin (forbidden), atau langganan klinik baca-saja untuk operasi tulis (read-only)
  • 404not-foundData tidak ada, milik organisasi lain, atau di luar cakupan cabang klien
  • 429rate-limitedBatas laju klien (rate_limit_per_min) terlampaui; coba lagi pada menit berikutnya