Lewati ke isi

Referensi API

Surat

Surat keterangan sakit, rujukan, dan sehat yang sudah diterbitkan (modul rme).

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

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

Surat yang diterbitkan untuk pasien atau kunjungan

Salah satu dari patient_id atau encounter_id wajib. Tanpa content_html.

Scope
encounters:read
Izin RBAC
encounter.read · letter.write
Modul
rme

Parameter

Parameter GET /letters
NamaLokasiTipeKeterangan
patient_idquerystring (uuid)
encounter_idquerystring (uuid)

Contoh kode

Bahasa contoh kode
curl -X GET "https://api.medivana.cloud/api/v1/letters" \
  -H "Authorization: Bearer $MEDIVANA_TOKEN"
const res = await fetch("https://api.medivana.cloud/api/v1/letters", {
  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/letters",
    headers={"Authorization": f"Bearer {os.environ['MEDIVANA_TOKEN']}"},
    timeout=30,
)
resp.raise_for_status()
data = resp.json()

Respons

200Suratapplication/json

{
  "items": [
    {
      "id": "3f0c2a10-5b7e-4c1d-9a2e-000000004001",
      "branch_id": "3f0c2a10-5b7e-4c1d-9a2e-0000000000b1",
      "patient_id": "3f0c2a10-5b7e-4c1d-9a2e-0000000a0001",
      "encounter_id": "3f0c2a10-5b7e-4c1d-9a2e-0000000e0001",
      "kind": "sick_leave",
      "number": "001/SKS/X/2026",
      "title": "Surat Keterangan Sakit",
      "data": {
        "rest_days": 3,
        "start_date": "2026-10-29"
      },
      "paper_size": "A5",
      "status": "issued",
      "issued_at": "2026-10-29T10:50:00+07:00",
      "issued_by_name": "dr. Rina Contoh",
      "void_reason": null,
      "print_url": "/api/v1/letters/3f0c2a10-5b7e-4c1d-9a2e-000000004001/print",
      "patient_name": "Pasien Contoh",
      "patient_mrn": "RM-000123"
    }
  ]
}
Skema 200
Skema 200
NamaTipeKeterangan
itemswajibarray<object>
items[].idstring (uuid)
items[].branch_idstring (uuid)
items[].patient_idstring (uuid)
items[].encounter_idstring (uuid) | null
items[].template_idstring (uuid) | null
items[].kindsick_leave | referral | health_certificate | other
items[].numberstring
items[].titlestring
items[].dataobject
items[].paper_sizeA4 | A5
items[].statusissued | void
items[].issued_atstring (date-time)
items[].issued_bystring (uuid) | null
items[].issued_by_namestring | null
items[].void_reasonstring | null
items[].print_urlstring
items[].patient_namestring
items[].patient_mrnstring
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

Detail surat

Scope
encounters:read
Izin RBAC
encounter.read · letter.write
Modul
rme

Parameter

Parameter GET /letters/{id}
NamaLokasiTipeKeterangan
idwajibpathstring (uuid)

Contoh kode

Bahasa contoh kode
curl -X GET "https://api.medivana.cloud/api/v1/letters/3f0c2a10-5b7e-4c1d-9a2e-000000000001" \
  -H "Authorization: Bearer $MEDIVANA_TOKEN"
const res = await fetch("https://api.medivana.cloud/api/v1/letters/3f0c2a10-5b7e-4c1d-9a2e-000000000001", {
  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/letters/3f0c2a10-5b7e-4c1d-9a2e-000000000001",
    headers={"Authorization": f"Bearer {os.environ['MEDIVANA_TOKEN']}"},
    timeout=30,
)
resp.raise_for_status()
data = resp.json()

Respons

200Surat (tanpa content_html)application/json

{
  "id": "3f0c2a10-5b7e-4c1d-9a2e-000000000001",
  "branch_id": "3f0c2a10-5b7e-4c1d-9a2e-000000000001",
  "patient_id": "3f0c2a10-5b7e-4c1d-9a2e-000000000001",
  "encounter_id": "3f0c2a10-5b7e-4c1d-9a2e-000000000001",
  "template_id": "3f0c2a10-5b7e-4c1d-9a2e-000000000001",
  "kind": "sick_leave",
  "number": "string",
  "title": "string",
  "data": {},
  "paper_size": "A4",
  "status": "issued",
  "issued_at": "2026-11-02T08:00:00+07:00",
  "issued_by": "3f0c2a10-5b7e-4c1d-9a2e-000000000001",
  "issued_by_name": "string",
  "void_reason": "string",
  "print_url": "string",
  "patient_name": "string",
  "patient_mrn": "string"
}
Skema 200
Skema 200
NamaTipeKeterangan
idstring (uuid)
branch_idstring (uuid)
patient_idstring (uuid)
encounter_idstring (uuid) | null
template_idstring (uuid) | null
kindsick_leave | referral | health_certificate | other
numberstring
titlestring
dataobject
paper_sizeA4 | A5
statusissued | void
issued_atstring (date-time)
issued_bystring (uuid) | null
issued_by_namestring | null
void_reasonstring | null
print_urlstring
patient_namestring
patient_mrnstring
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

Halaman cetak surat (HTML)

HTML siap cetak (@page A5/A4). Surat void diberi watermark DIBATALKAN. Bahasa mengikuti snapshot surat. Diaudit letter.print.

Scope
encounters:read
Izin RBAC
encounter.read · letter.write
Modul
rme

Parameter

Parameter GET /letters/{id}/print
NamaLokasiTipeKeterangan
idwajibpathstring (uuid)

Contoh kode

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

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

Respons

200Dokumen HTMLtext/html

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