Skip to content

API reference

Diagnostics

Order dan hasil laboratorium serta radiologi (modul lab/radiology).

OpenAPI 3.1 · version 1.1.0 · 127 operations · 30 webhook events

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

Endpoint descriptions come from the OpenAPI specification and are written in Indonesian.

Worklist order laboratorium

Cabang aktif kecuali all_branches=true. Status ordered → in_progress → final, atau cancelled. Order yang dibuat bersamaan berbagi request_id.

Scopes
encounters:read
RBAC permissions
encounter.read · lab.order · lab.result
Module
lab

Parameters

Parameters GET /lab/orders
NameInTypeDescription
X-Branch-IDheaderstring (uuid)Cabang aktif (opsional). Nilai di luar cabang klien diabaikan.
statusquerystringDipisah koma
datequerystring (date)
patient_idquerystring (uuid)
encounter_idquerystring (uuid)
request_idquerystring (uuid)
all_branchesqueryboolean
limitqueryinteger
cursorquerystringNilai next_cursor dari halaman sebelumnya

Code examples

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

Responses

200Orderapplication/json

{
  "items": [
    {
      "id": "3f0c2a10-5b7e-4c1d-9a2e-000000000001",
      "request_id": "3f0c2a10-5b7e-4c1d-9a2e-000000000001",
      "number": "string",
      "kind": "lab",
      "status": "ordered",
      "priority": "routine",
      "branch_id": "3f0c2a10-5b7e-4c1d-9a2e-000000000001",
      "patient_id": "3f0c2a10-5b7e-4c1d-9a2e-000000000001",
      "patient_name": "string",
      "patient_mrn": "string",
      "encounter_id": "3f0c2a10-5b7e-4c1d-9a2e-000000000001",
      "service_id": "3f0c2a10-5b7e-4c1d-9a2e-000000000001",
      "service_name": "string",
      "practitioner_id": "3f0c2a10-5b7e-4c1d-9a2e-000000000001",
      "practitioner_name": "string",
      "ordered_at": "2026-11-02T08:00:00+07:00",
      "clinical_notes": "string",
      "specimen_type": "string",
      "specimen_collected_at": "2026-11-02T08:00:00+07:00",
      "result_note": "string",
      "validated_at": "2026-11-02T08:00:00+07:00",
      "finalized_at": "2026-11-02T08:00:00+07:00",
      "has_critical": true,
      "has_abnormal": true,
      "version": 0,
      "results": [
        {
          "parameter_id": null,
          "code": null,
          "local_code": null,
          "loinc_code": null,
          "name": null,
          "unit": null,
          "value_type": null,
          "value_num": null,
          "value_text": null,
          "display": null,
          "ref_low": null,
          "ref_high": null,
          "ref_text": null,
          "flag": null,
          "critical": null,
          "source": null,
          "entered_at": null
        }
      ],
      "report": {
        "technique": "string",
        "findings": "string",
        "impression": "string",
        "reported_by": "3f0c2a10-5b7e-4c1d-9a2e-000000000001",
        "reporter_name": "string",
        "reported_at": "2026-11-02T08:00:00+07:00",
        "version": 0
      },
      "files": [
        {}
      ]
    }
  ],
  "next_cursor": "string"
}
Schema 200
Schema 200
NameTypeDescription
itemsrequiredarray<object>
items[].idstring (uuid)
items[].request_idstring (uuid)
items[].numberstring
items[].kindlab | radiology
items[].statusordered | in_progress | final | cancelled
items[].priorityroutine | cito
items[].branch_idstring (uuid)
items[].patient_idstring (uuid)
items[].patient_namestring
items[].patient_mrnstring
items[].encounter_idstring (uuid) | null
items[].service_idstring (uuid)
items[].service_namestring
items[].practitioner_idstring (uuid) | null
items[].practitioner_namestring | null
items[].ordered_atstring (date-time)
items[].clinical_notesstring | null
items[].specimen_typestring | null
items[].specimen_collected_atstring (date-time) | null
items[].result_notestring | null
items[].validated_atstring (date-time) | null
items[].finalized_atstring (date-time) | null
items[].has_criticalboolean
items[].has_abnormalboolean
items[].versioninteger
items[].resultsarray<object>Hanya lab
items[].results[].parameter_idstring (uuid)
items[].results[].codestring
items[].results[].local_codestring
items[].results[].loinc_codestring | null
items[].results[].namestring
items[].results[].unitstring | null
items[].results[].value_typestring
items[].results[].value_numnumber | null
items[].results[].value_textstring | null
items[].results[].displaystring
items[].results[].ref_lownumber | null
items[].results[].ref_highnumber | null
items[].results[].ref_textstring | null
items[].results[].flagN | L | H | LL | HH | A | null
items[].results[].criticalboolean
items[].results[].sourcemanual | lis
items[].results[].entered_atstring (date-time) | null
items[].reportobject | nullHanya radiologi
items[].report.techniquestring | null
items[].report.findingsstring | null
items[].report.impressionstring | null
items[].report.reported_bystring (uuid) | null
items[].report.reporter_namestring | null
items[].report.reported_atstring (date-time) | null
items[].report.versioninteger
items[].filesarray<object>Hanya radiologi
next_cursorstring
Errors
  • 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)
  • 429rate-limitedBatas laju klien (rate_limit_per_min) terlampaui; coba lagi pada menit berikutnya

Detail order lab dan hasil per parameter

results selalu memuat semua parameter pemeriksaan (yang belum diisi bernilai null). Flag otomatis: N, L/H, LL/HH (kritis), A (kualitatif abnormal). Hasil dari alat (source: lis) tetap divalidasi analis sebelum final. Diaudit.

Scopes
encounters:read
RBAC permissions
encounter.read · lab.order · lab.result
Module
lab

Parameters

Parameters GET /lab/orders/{id}
NameInTypeDescription
idrequiredpathstring (uuid)

Code examples

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

Responses

200Orderapplication/json

{
  "id": "3f0c2a10-5b7e-4c1d-9a2e-00000001c001",
  "request_id": "3f0c2a10-5b7e-4c1d-9a2e-00000001c0a0",
  "number": "LAB-20261029-0001",
  "kind": "lab",
  "status": "final",
  "priority": "cito",
  "branch_id": "3f0c2a10-5b7e-4c1d-9a2e-0000000000b1",
  "patient_id": "3f0c2a10-5b7e-4c1d-9a2e-0000000a0001",
  "patient_name": "Pasien Contoh",
  "patient_mrn": "RM-000123",
  "encounter_id": "3f0c2a10-5b7e-4c1d-9a2e-0000000e0001",
  "service_id": "3f0c2a10-5b7e-4c1d-9a2e-00000001f001",
  "service_name": "Darah rutin",
  "practitioner_name": "dr. Rina Contoh",
  "ordered_at": "2026-10-29T09:15:00+07:00",
  "specimen_type": "darah_vena_edta",
  "specimen_collected_at": "2026-10-29T09:25:00+07:00",
  "result_note": "Hb kritis sudah dilaporkan ke dokter",
  "validated_at": "2026-10-29T10:05:00+07:00",
  "finalized_at": "2026-10-29T10:06:00+07:00",
  "has_critical": true,
  "has_abnormal": true,
  "version": 5,
  "results": [
    {
      "parameter_id": "3f0c2a10-5b7e-4c1d-9a2e-00000001c011",
      "code": "718-7",
      "local_code": "HB",
      "loinc_code": "718-7",
      "name": "Hemoglobin",
      "unit": "g/dL",
      "value_type": "numeric",
      "value_num": 6.5,
      "value_text": null,
      "display": "6,5",
      "ref_low": 12,
      "ref_high": 15,
      "ref_text": "12,0 – 15,0",
      "flag": "LL",
      "critical": true,
      "source": "manual",
      "entered_at": "2026-10-29T09:50:00+07:00"
    }
  ]
}
Schema 200
Schema 200
NameTypeDescription
idstring (uuid)
request_idstring (uuid)
numberstring
kindlab | radiology
statusordered | in_progress | final | cancelled
priorityroutine | cito
branch_idstring (uuid)
patient_idstring (uuid)
patient_namestring
patient_mrnstring
encounter_idstring (uuid) | null
service_idstring (uuid)
service_namestring
practitioner_idstring (uuid) | null
practitioner_namestring | null
ordered_atstring (date-time)
clinical_notesstring | null
specimen_typestring | null
specimen_collected_atstring (date-time) | null
result_notestring | null
validated_atstring (date-time) | null
finalized_atstring (date-time) | null
has_criticalboolean
has_abnormalboolean
versioninteger
resultsarray<object>Hanya lab
results[].parameter_idstring (uuid)
results[].codestring
results[].local_codestring
results[].loinc_codestring | null
results[].namestring
results[].unitstring | null
results[].value_typestring
results[].value_numnumber | null
results[].value_textstring | null
results[].displaystring
results[].ref_lownumber | null
results[].ref_highnumber | null
results[].ref_textstring | null
results[].flagN | L | H | LL | HH | A | null
results[].criticalboolean
results[].sourcemanual | lis
results[].entered_atstring (date-time) | null
reportobject | nullHanya radiologi
report.techniquestring | null
report.findingsstring | null
report.impressionstring | null
report.reported_bystring (uuid) | null
report.reporter_namestring | null
report.reported_atstring (date-time) | null
report.versioninteger
filesarray<object>Hanya radiologi
Errors
  • 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

Lembar hasil lab satu order (HTML A4)

Ditandai "HASIL SEMENTARA — BELUM FINAL" bila order belum final.

Scopes
encounters:read
RBAC permissions
encounter.read · lab.order · lab.result
Module
lab

Parameters

Parameters GET /lab/orders/{id}/print
NameInTypeDescription
idrequiredpathstring (uuid)
langqueryid | enBahasa dokumen cetak; default bahasa pasien lalu default organisasi.

Code examples

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

Responses

200Dokumen HTMLtext/html

Errors
  • 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

Lembar hasil lab satu permintaan (semua order)

Scopes
encounters:read
RBAC permissions
encounter.read · lab.order · lab.result
Module
lab

Parameters

Parameters GET /lab/requests/{request_id}/print
NameInTypeDescription
request_idrequiredpathstring (uuid)
langqueryid | enBahasa dokumen cetak; default bahasa pasien lalu default organisasi.

Code examples

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

Responses

200Dokumen HTMLtext/html

Errors
  • 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

Worklist order radiologi

Filter sama dengan worklist lab.

Scopes
encounters:read
RBAC permissions
encounter.read · radiology.order · radiology.result
Module
radiology

Parameters

Parameters GET /radiology/orders
NameInTypeDescription
X-Branch-IDheaderstring (uuid)Cabang aktif (opsional). Nilai di luar cabang klien diabaikan.
statusquerystring
datequerystring (date)
patient_idquerystring (uuid)
encounter_idquerystring (uuid)
request_idquerystring (uuid)
all_branchesqueryboolean
limitqueryinteger
cursorquerystringNilai next_cursor dari halaman sebelumnya

Code examples

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

Responses

200Orderapplication/json

{
  "items": [
    {
      "id": "3f0c2a10-5b7e-4c1d-9a2e-000000000001",
      "request_id": "3f0c2a10-5b7e-4c1d-9a2e-000000000001",
      "number": "string",
      "kind": "lab",
      "status": "ordered",
      "priority": "routine",
      "branch_id": "3f0c2a10-5b7e-4c1d-9a2e-000000000001",
      "patient_id": "3f0c2a10-5b7e-4c1d-9a2e-000000000001",
      "patient_name": "string",
      "patient_mrn": "string",
      "encounter_id": "3f0c2a10-5b7e-4c1d-9a2e-000000000001",
      "service_id": "3f0c2a10-5b7e-4c1d-9a2e-000000000001",
      "service_name": "string",
      "practitioner_id": "3f0c2a10-5b7e-4c1d-9a2e-000000000001",
      "practitioner_name": "string",
      "ordered_at": "2026-11-02T08:00:00+07:00",
      "clinical_notes": "string",
      "specimen_type": "string",
      "specimen_collected_at": "2026-11-02T08:00:00+07:00",
      "result_note": "string",
      "validated_at": "2026-11-02T08:00:00+07:00",
      "finalized_at": "2026-11-02T08:00:00+07:00",
      "has_critical": true,
      "has_abnormal": true,
      "version": 0,
      "results": [
        {
          "parameter_id": null,
          "code": null,
          "local_code": null,
          "loinc_code": null,
          "name": null,
          "unit": null,
          "value_type": null,
          "value_num": null,
          "value_text": null,
          "display": null,
          "ref_low": null,
          "ref_high": null,
          "ref_text": null,
          "flag": null,
          "critical": null,
          "source": null,
          "entered_at": null
        }
      ],
      "report": {
        "technique": "string",
        "findings": "string",
        "impression": "string",
        "reported_by": "3f0c2a10-5b7e-4c1d-9a2e-000000000001",
        "reporter_name": "string",
        "reported_at": "2026-11-02T08:00:00+07:00",
        "version": 0
      },
      "files": [
        {}
      ]
    }
  ],
  "next_cursor": "string"
}
Schema 200
Schema 200
NameTypeDescription
itemsrequiredarray<object>
items[].idstring (uuid)
items[].request_idstring (uuid)
items[].numberstring
items[].kindlab | radiology
items[].statusordered | in_progress | final | cancelled
items[].priorityroutine | cito
items[].branch_idstring (uuid)
items[].patient_idstring (uuid)
items[].patient_namestring
items[].patient_mrnstring
items[].encounter_idstring (uuid) | null
items[].service_idstring (uuid)
items[].service_namestring
items[].practitioner_idstring (uuid) | null
items[].practitioner_namestring | null
items[].ordered_atstring (date-time)
items[].clinical_notesstring | null
items[].specimen_typestring | null
items[].specimen_collected_atstring (date-time) | null
items[].result_notestring | null
items[].validated_atstring (date-time) | null
items[].finalized_atstring (date-time) | null
items[].has_criticalboolean
items[].has_abnormalboolean
items[].versioninteger
items[].resultsarray<object>Hanya lab
items[].results[].parameter_idstring (uuid)
items[].results[].codestring
items[].results[].local_codestring
items[].results[].loinc_codestring | null
items[].results[].namestring
items[].results[].unitstring | null
items[].results[].value_typestring
items[].results[].value_numnumber | null
items[].results[].value_textstring | null
items[].results[].displaystring
items[].results[].ref_lownumber | null
items[].results[].ref_highnumber | null
items[].results[].ref_textstring | null
items[].results[].flagN | L | H | LL | HH | A | null
items[].results[].criticalboolean
items[].results[].sourcemanual | lis
items[].results[].entered_atstring (date-time) | null
items[].reportobject | nullHanya radiologi
items[].report.techniquestring | null
items[].report.findingsstring | null
items[].report.impressionstring | null
items[].report.reported_bystring (uuid) | null
items[].report.reporter_namestring | null
items[].report.reported_atstring (date-time) | null
items[].report.versioninteger
items[].filesarray<object>Hanya radiologi
next_cursorstring
Errors
  • 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)
  • 429rate-limitedBatas laju klien (rate_limit_per_min) terlampaui; coba lagi pada menit berikutnya

Detail order radiologi, ekspertise, dan berkas citra

Scopes
encounters:read
RBAC permissions
encounter.read · radiology.order · radiology.result
Module
radiology

Parameters

Parameters GET /radiology/orders/{id}
NameInTypeDescription
idrequiredpathstring (uuid)

Code examples

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

Responses

200Orderapplication/json

{
  "id": "3f0c2a10-5b7e-4c1d-9a2e-00000001c101",
  "request_id": "3f0c2a10-5b7e-4c1d-9a2e-00000001c1a0",
  "number": "RAD-20261029-0001",
  "kind": "radiology",
  "status": "final",
  "patient_id": "3f0c2a10-5b7e-4c1d-9a2e-0000000a0001",
  "encounter_id": "3f0c2a10-5b7e-4c1d-9a2e-0000000e0001",
  "service_name": "Rontgen thorax PA",
  "report": {
    "technique": "Thorax PA",
    "findings": "Cor dan pulmo dalam batas normal",
    "impression": "Tidak tampak kelainan",
    "reporter_name": "dr. Radiolog Contoh",
    "reported_at": "2026-10-29T13:00:00+07:00",
    "version": 1
  },
  "files": [
    {
      "id": "3f0c2a10-5b7e-4c1d-9a2e-00000001c1f1",
      "filename": "thorax.dcm",
      "content_type": "application/dicom",
      "size_bytes": 5242880,
      "category": "imaging",
      "created_at": "2026-10-29T12:40:00+07:00"
    }
  ],
  "finalized_at": "2026-10-29T13:05:00+07:00",
  "version": 4
}
Schema 200
Schema 200
NameTypeDescription
idstring (uuid)
request_idstring (uuid)
numberstring
kindlab | radiology
statusordered | in_progress | final | cancelled
priorityroutine | cito
branch_idstring (uuid)
patient_idstring (uuid)
patient_namestring
patient_mrnstring
encounter_idstring (uuid) | null
service_idstring (uuid)
service_namestring
practitioner_idstring (uuid) | null
practitioner_namestring | null
ordered_atstring (date-time)
clinical_notesstring | null
specimen_typestring | null
specimen_collected_atstring (date-time) | null
result_notestring | null
validated_atstring (date-time) | null
finalized_atstring (date-time) | null
has_criticalboolean
has_abnormalboolean
versioninteger
resultsarray<object>Hanya lab
results[].parameter_idstring (uuid)
results[].codestring
results[].local_codestring
results[].loinc_codestring | null
results[].namestring
results[].unitstring | null
results[].value_typestring
results[].value_numnumber | null
results[].value_textstring | null
results[].displaystring
results[].ref_lownumber | null
results[].ref_highnumber | null
results[].ref_textstring | null
results[].flagN | L | H | LL | HH | A | null
results[].criticalboolean
results[].sourcemanual | lis
results[].entered_atstring (date-time) | null
reportobject | nullHanya radiologi
report.techniquestring | null
report.findingsstring | null
report.impressionstring | null
report.reported_bystring (uuid) | null
report.reporter_namestring | null
report.reported_atstring (date-time) | null
report.versioninteger
filesarray<object>Hanya radiologi
Errors
  • 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
GET/radiology/orders/{id}/files/{file_id}Link to this operation: Unduh berkas citra/dokumen radiologi

Unduh berkas citra/dokumen radiologi

DICOM, PDF, atau gambar sesuai content_type berkas. Diaudit.

Scopes
encounters:read
RBAC permissions
encounter.read · radiology.order · radiology.result
Module
radiology

Parameters

Parameters GET /radiology/orders/{id}/files/{file_id}
NameInTypeDescription
idrequiredpathstring (uuid)
file_idrequiredpathstring (uuid)

Code examples

Code example language
curl -X GET "https://api.medivana.cloud/api/v1/radiology/orders/3f0c2a10-5b7e-4c1d-9a2e-000000000001/files/3f0c2a10-5b7e-4c1d-9a2e-000000000001" \
  -H "Authorization: Bearer $MEDIVANA_TOKEN"
const res = await fetch("https://api.medivana.cloud/api/v1/radiology/orders/3f0c2a10-5b7e-4c1d-9a2e-000000000001/files/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 file = Buffer.from(await res.arrayBuffer());
import os
import requests

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

Responses

200Isi berkasapplication/octet-stream

Errors
  • 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
GET/diagnostics/patients/{patient_id}/resultsLink to this operation: Riwayat hasil lab dan radiologi pasien

Riwayat hasil lab dan radiologi pasien

Hasil final terbaru dulu; include_pending=true menyertakan order yang belum final (kecuali batal). Butuh modul lab atau radiology. Diaudit.

Scopes
encounters:read
RBAC permissions
encounter.read · lab.order · lab.result · radiology.order · radiology.result
Module
lab | radiology

Parameters

Parameters GET /diagnostics/patients/{patient_id}/results
NameInTypeDescription
patient_idrequiredpathstring (uuid)
kindquerylab | radiology
include_pendingqueryboolean
limitqueryinteger

Code examples

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

Responses

200Order dengan hasilapplication/json

{
  "items": [
    {
      "id": "3f0c2a10-5b7e-4c1d-9a2e-000000000001",
      "request_id": "3f0c2a10-5b7e-4c1d-9a2e-000000000001",
      "number": "string",
      "kind": "lab",
      "status": "ordered",
      "priority": "routine",
      "branch_id": "3f0c2a10-5b7e-4c1d-9a2e-000000000001",
      "patient_id": "3f0c2a10-5b7e-4c1d-9a2e-000000000001",
      "patient_name": "string",
      "patient_mrn": "string",
      "encounter_id": "3f0c2a10-5b7e-4c1d-9a2e-000000000001",
      "service_id": "3f0c2a10-5b7e-4c1d-9a2e-000000000001",
      "service_name": "string",
      "practitioner_id": "3f0c2a10-5b7e-4c1d-9a2e-000000000001",
      "practitioner_name": "string",
      "ordered_at": "2026-11-02T08:00:00+07:00",
      "clinical_notes": "string",
      "specimen_type": "string",
      "specimen_collected_at": "2026-11-02T08:00:00+07:00",
      "result_note": "string",
      "validated_at": "2026-11-02T08:00:00+07:00",
      "finalized_at": "2026-11-02T08:00:00+07:00",
      "has_critical": true,
      "has_abnormal": true,
      "version": 0,
      "results": [
        {
          "parameter_id": null,
          "code": null,
          "local_code": null,
          "loinc_code": null,
          "name": null,
          "unit": null,
          "value_type": null,
          "value_num": null,
          "value_text": null,
          "display": null,
          "ref_low": null,
          "ref_high": null,
          "ref_text": null,
          "flag": null,
          "critical": null,
          "source": null,
          "entered_at": null
        }
      ],
      "report": {
        "technique": "string",
        "findings": "string",
        "impression": "string",
        "reported_by": "3f0c2a10-5b7e-4c1d-9a2e-000000000001",
        "reporter_name": "string",
        "reported_at": "2026-11-02T08:00:00+07:00",
        "version": 0
      },
      "files": [
        {}
      ]
    }
  ]
}
Schema 200
Schema 200
NameTypeDescription
itemsrequiredarray<object>
items[].idstring (uuid)
items[].request_idstring (uuid)
items[].numberstring
items[].kindlab | radiology
items[].statusordered | in_progress | final | cancelled
items[].priorityroutine | cito
items[].branch_idstring (uuid)
items[].patient_idstring (uuid)
items[].patient_namestring
items[].patient_mrnstring
items[].encounter_idstring (uuid) | null
items[].service_idstring (uuid)
items[].service_namestring
items[].practitioner_idstring (uuid) | null
items[].practitioner_namestring | null
items[].ordered_atstring (date-time)
items[].clinical_notesstring | null
items[].specimen_typestring | null
items[].specimen_collected_atstring (date-time) | null
items[].result_notestring | null
items[].validated_atstring (date-time) | null
items[].finalized_atstring (date-time) | null
items[].has_criticalboolean
items[].has_abnormalboolean
items[].versioninteger
items[].resultsarray<object>Hanya lab
items[].results[].parameter_idstring (uuid)
items[].results[].codestring
items[].results[].local_codestring
items[].results[].loinc_codestring | null
items[].results[].namestring
items[].results[].unitstring | null
items[].results[].value_typestring
items[].results[].value_numnumber | null
items[].results[].value_textstring | null
items[].results[].displaystring
items[].results[].ref_lownumber | null
items[].results[].ref_highnumber | null
items[].results[].ref_textstring | null
items[].results[].flagN | L | H | LL | HH | A | null
items[].results[].criticalboolean
items[].results[].sourcemanual | lis
items[].results[].entered_atstring (date-time) | null
items[].reportobject | nullHanya radiologi
items[].report.techniquestring | null
items[].report.findingsstring | null
items[].report.impressionstring | null
items[].report.reported_bystring (uuid) | null
items[].report.reporter_namestring | null
items[].report.reported_atstring (date-time) | null
items[].report.versioninteger
items[].filesarray<object>Hanya radiologi
Errors
  • 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