Lewati ke isi

Referensi API

Spesialis

Data paket spesialis gigi, kecantikan, KIA, dan fisioterapi; hanya baca (modul dental, beauty, kia, physio).

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

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

Gigi: legenda kondisi odontogram dan permukaan

Kode kondisi: sehat, karies, tambalan, sealant, fraktur, hilang, sisa_akar, mahkota, jembatan, impaksi, psa, belum_erupsi, gigi_tiruan, implan, persistensi, goyang. Permukaan kanonik M, O, D, B, L.

Scope
encounters:read
Izin RBAC
encounter.read · specialty.dental
Modul
dental

Contoh kode

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

Respons

200Legendaapplication/json

{
  "items": [
    {
      "code": "karies",
      "label": "Karies",
      "scope": "surface",
      "color": "#D92D20",
      "symbol": "●",
      "clears_surfaces": false,
      "material_required": false
    }
  ],
  "surfaces": [
    {
      "code": "M",
      "label": "Mesial"
    },
    {
      "code": "O",
      "label": "Oklusal / Insisal (I)"
    }
  ]
}
Skema 200
Skema 200
NamaTipeKeterangan
itemsarray<object>
items[].codestring
items[].labelstring
items[].scopesurface | tooth | both
items[].colorstring
items[].symbolstring
items[].materialsarray<string>
items[].clears_surfacesboolean
items[].material_requiredboolean
surfacesarray<object>
surfaces[].codestring
surfaces[].labelstring
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)
  • 429rate-limitedBatas laju klien (rate_limit_per_min) terlampaui; coba lagi pada menit berikutnya
GET/dental/patients/{patient_id}/odontogramTautan ke operasi ini: Gigi: snapshot odontogram terkini (FDI)

Gigi: snapshot odontogram terkini (FDI)

Semua gigi dentisi diminta selalu dikembalikan (default sehat), ditambah gigi lain yang pernah dicatat. dentition default dari umur (< 6 th anak, 6–12 campuran).

Scope
encounters:read
Izin RBAC
encounter.read · specialty.dental
Modul
dental

Parameter

Parameter GET /dental/patients/{patient_id}/odontogram
NamaLokasiTipeKeterangan
patient_idwajibpathstring (uuid)
dentitionquerypermanent | primary | mixed

Contoh kode

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

Respons

200Snapshotapplication/json

{
  "patient_id": "3f0c2a10-5b7e-4c1d-9a2e-0000000a0001",
  "dentition": "permanent",
  "chart": "dewasa",
  "entries_count": 4,
  "updated_at": "2026-10-29T09:12:00+07:00",
  "teeth": [
    {
      "tooth": 36,
      "dentition": "permanent",
      "arch": "lower",
      "position": "posterior",
      "condition": "sehat",
      "surfaces": {
        "O": {
          "label": "O",
          "condition": "tambalan",
          "material": "komposit"
        }
      },
      "updated_at": "2026-10-29T09:12:00+07:00"
    }
  ]
}
Skema 200
Skema 200
NamaTipeKeterangan
patient_idstring (uuid)
dentitionstring
chartstring
entries_countinteger
updated_atstring (date-time) | null
teetharray<object>
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
GET/dental/patients/{patient_id}/odontogram/entriesTautan ke operasi ini: Gigi: semua entri odontogram (terbaru dulu)

Gigi: semua entri odontogram (terbaru dulu)

Scope
encounters:read
Izin RBAC
encounter.read · specialty.dental
Modul
dental

Parameter

Parameter GET /dental/patients/{patient_id}/odontogram/entries
NamaLokasiTipeKeterangan
patient_idwajibpathstring (uuid)
encounter_idquerystring (uuid)

Contoh kode

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

Respons

200Daftar data paket spesialisapplication/json

{
  "items": [
    {}
  ]
}
Skema 200
Skema 200
NamaTipeKeterangan
itemswajibarray<object>
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
GET/dental/patients/{patient_id}/odontogram/teeth/{tooth}Tautan ke operasi ini: Gigi: riwayat satu gigi

Gigi: riwayat satu gigi

Scope
encounters:read
Izin RBAC
encounter.read · specialty.dental
Modul
dental

Parameter

Parameter GET /dental/patients/{patient_id}/odontogram/teeth/{tooth}
NamaLokasiTipeKeterangan
patient_idwajibpathstring (uuid)
toothwajibpathintegerNomor gigi FDI

Contoh kode

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

Respons

200Data paket spesialisapplication/json

{}
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
  • 422validationValidasi gagal; rincian per field di errors
  • 429rate-limitedBatas laju klien (rate_limit_per_min) terlampaui; coba lagi pada menit berikutnya

Gigi: rencana perawatan pasien (tanpa item)

Scope
encounters:read
Izin RBAC
encounter.read · specialty.dental
Modul
dental

Parameter

Parameter GET /dental/patients/{patient_id}/plans
NamaLokasiTipeKeterangan
patient_idwajibpathstring (uuid)

Contoh kode

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

Respons

200Daftar data paket spesialisapplication/json

{
  "items": [
    {}
  ]
}
Skema 200
Skema 200
NamaTipeKeterangan
itemswajibarray<object>
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

Gigi: detail rencana perawatan (tahap dan item)

Status item planned, in_progress, done, cancelled; progress merangkum jumlah per status.

Scope
encounters:read
Izin RBAC
encounter.read · specialty.dental
Modul
dental

Parameter

Parameter GET /dental/plans/{id}
NamaLokasiTipeKeterangan
idwajibpathstring (uuid)

Contoh kode

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

Respons

200Rencana perawatanapplication/json

{
  "id": "3f0c2a10-5b7e-4c1d-9a2e-000000002001",
  "patient_id": "3f0c2a10-5b7e-4c1d-9a2e-0000000a0001",
  "title": "Rencana perawatan 2026",
  "status": "active",
  "estimated_total": 600000,
  "done_total": 0,
  "progress": {
    "total": 2,
    "planned": 2,
    "in_progress": 0,
    "done": 0,
    "cancelled": 0
  },
  "phases": [
    {
      "id": "3f0c2a10-5b7e-4c1d-9a2e-000000002101",
      "phase_no": 1,
      "name": "Fase 1 — Kontrol infeksi",
      "status": "planned",
      "estimated_total": 250000,
      "items": [
        {
          "id": "3f0c2a10-5b7e-4c1d-9a2e-000000002201",
          "service_name": "Scaling",
          "tooth": null,
          "surfaces": [],
          "quantity": 1,
          "estimated_cost": 250000,
          "status": "planned"
        }
      ]
    }
  ],
  "version": 1
}
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

Gigi: foto intraoral, ekstraoral, dan rontgen

Scope
encounters:read
Izin RBAC
encounter.read · specialty.dental
Modul
dental

Parameter

Parameter GET /dental/patients/{patient_id}/photos
NamaLokasiTipeKeterangan
patient_idwajibpathstring (uuid)

Contoh kode

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

Respons

200Fotoapplication/json

{
  "items": [
    {
      "id": "3f0c2a10-5b7e-4c1d-9a2e-000000002301",
      "patient_id": "3f0c2a10-5b7e-4c1d-9a2e-0000000a0001",
      "encounter_id": "3f0c2a10-5b7e-4c1d-9a2e-0000000e0001",
      "kind": "intraoral",
      "tooth": 16,
      "note": null,
      "file_id": "3f0c2a10-5b7e-4c1d-9a2e-000000002311",
      "filename": "intraoral.png",
      "content_type": "image/png",
      "size_bytes": 20311,
      "taken_at": "2026-10-29T09:15:00+07:00",
      "url": "/api/v1/dental/photos/3f0c2a10-5b7e-4c1d-9a2e-000000002301/file"
    }
  ]
}
Skema 200
Skema 200
NamaTipeKeterangan
itemswajibarray<object>
items[].idstring (uuid)
items[].patient_idstring (uuid)
items[].encounter_idstring (uuid) | null
items[].record_idstring (uuid) | null
items[].kindstring
items[].toothinteger | null
items[].areastring | null
items[].notestring | null
items[].file_idstring (uuid)
items[].filenamestring
items[].content_typestring
items[].size_bytesinteger
items[].taken_atstring (date-time)
items[].urlstring
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

Gigi: unduh berkas foto

Diaudit.

Scope
encounters:read
Izin RBAC
encounter.read · specialty.dental
Modul
dental

Parameter

Parameter GET /dental/photos/{id}/file
NamaLokasiTipeKeterangan
idwajibpathstring (uuid)

Contoh kode

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

Respons

200Isi berkas (Content-Type sesuai berkas)application/octet-stream

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

Kecantikan: riwayat treatment (maks 200)

Scope
encounters:read
Izin RBAC
encounter.read · specialty.beauty
Modul
beauty

Parameter

Parameter GET /beauty/patients/{patient_id}/records
NamaLokasiTipeKeterangan
patient_idwajibpathstring (uuid)

Contoh kode

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

Respons

200Daftar data paket spesialisapplication/json

{
  "items": [
    {}
  ]
}
Skema 200
Skema 200
NamaTipeKeterangan
itemswajibarray<object>
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

Kecantikan: detail treatment dan produk

Scope
encounters:read
Izin RBAC
encounter.read · specialty.beauty
Modul
beauty

Parameter

Parameter GET /beauty/records/{id}
NamaLokasiTipeKeterangan
idwajibpathstring (uuid)

Contoh kode

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

Respons

200Rekam treatmentapplication/json

{
  "id": "3f0c2a10-5b7e-4c1d-9a2e-000000002401",
  "patient_id": "3f0c2a10-5b7e-4c1d-9a2e-0000000a0001",
  "encounter_id": "3f0c2a10-5b7e-4c1d-9a2e-0000000e0001",
  "service_name": "Chemical peeling",
  "procedure_name": "Chemical peeling",
  "areas": [
    "wajah"
  ],
  "parameters": {
    "agent": "glycolic 30%",
    "durasi_menit": 3
  },
  "notes": "Kulit kemerahan ringan",
  "is_package": false,
  "revenue_key": "rev_procedure",
  "performed_at": "2026-10-29T10:00:00+07:00",
  "status": "done",
  "photo_count": 2,
  "version": 1,
  "products": [
    {
      "item_name": "Serum contoh",
      "unit": "pcs",
      "quantity": 1,
      "billable": true
    }
  ]
}
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

Kecantikan: foto before/after/progress

Scope
encounters:read
Izin RBAC
encounter.read · specialty.beauty
Modul
beauty

Parameter

Parameter GET /beauty/patients/{patient_id}/photos
NamaLokasiTipeKeterangan
patient_idwajibpathstring (uuid)
record_idquerystring (uuid)

Contoh kode

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

Respons

200Fotoapplication/json

{
  "items": [
    {
      "id": "3f0c2a10-5b7e-4c1d-9a2e-000000000001",
      "patient_id": "3f0c2a10-5b7e-4c1d-9a2e-000000000001",
      "encounter_id": "3f0c2a10-5b7e-4c1d-9a2e-000000000001",
      "record_id": "3f0c2a10-5b7e-4c1d-9a2e-000000000001",
      "kind": "string",
      "tooth": 0,
      "area": "string",
      "note": "string",
      "file_id": "3f0c2a10-5b7e-4c1d-9a2e-000000000001",
      "filename": "string",
      "content_type": "string",
      "size_bytes": 0,
      "taken_at": "2026-11-02T08:00:00+07:00",
      "url": "string"
    }
  ]
}
Skema 200
Skema 200
NamaTipeKeterangan
itemswajibarray<object>
items[].idstring (uuid)
items[].patient_idstring (uuid)
items[].encounter_idstring (uuid) | null
items[].record_idstring (uuid) | null
items[].kindstring
items[].toothinteger | null
items[].areastring | null
items[].notestring | null
items[].file_idstring (uuid)
items[].filenamestring
items[].content_typestring
items[].size_bytesinteger
items[].taken_atstring (date-time)
items[].urlstring
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
GET/beauty/patients/{patient_id}/photo-consentTautan ke operasi ini: Kecantikan: status consent foto pasien

Kecantikan: status consent foto pasien

Scope
encounters:read
Izin RBAC
encounter.read · specialty.beauty
Modul
beauty

Parameter

Parameter GET /beauty/patients/{patient_id}/photo-consent
NamaLokasiTipeKeterangan
patient_idwajibpathstring (uuid)

Contoh kode

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

Respons

200Consent fotoapplication/json

{
  "patient_id": "3f0c2a10-5b7e-4c1d-9a2e-0000000a0001",
  "kind": "photo",
  "granted": true
}
Skema 200
Skema 200
NamaTipeKeterangan
patient_idstring (uuid)
kind"photo"
grantedboolean
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

Kecantikan: unduh berkas foto

Diaudit.

Scope
encounters:read
Izin RBAC
encounter.read · specialty.beauty
Modul
beauty

Parameter

Parameter GET /beauty/photos/{id}/file
NamaLokasiTipeKeterangan
idwajibpathstring (uuid)

Contoh kode

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

Respons

200Isi berkas (Content-Type sesuai berkas)application/octet-stream

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

KIA: hitung HPL dan usia kehamilan

Isi lmp (HPHT, Naegele + 280 hari) atau edd (HPL). date default hari ini.

Scope
encounters:read
Izin RBAC
encounter.read · specialty.kia
Modul
kia

Parameter

Parameter GET /kia/calc/pregnancy
NamaLokasiTipeKeterangan
lmpquerystring (date)
eddquerystring (date)
datequerystring (date)

Contoh kode

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

Respons

200Hasilapplication/json

{
  "edd": "2026-10-08",
  "date": "2026-04-01",
  "gestational_age": {
    "weeks": 12,
    "days": 6,
    "total_days": 90,
    "trimester": 1
  },
  "label": "12 minggu 6 hari"
}
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

KIA: faktor Kartu Skor Poedji Rochjati

Scope
encounters:read
Izin RBAC
encounter.read · specialty.kia
Modul
kia

Contoh kode

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

Respons

200Daftar data paket spesialisapplication/json

{
  "items": [
    {}
  ]
}
Skema 200
Skema 200
NamaTipeKeterangan
itemswajibarray<object>
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)
  • 429rate-limitedBatas laju klien (rate_limit_per_min) terlampaui; coba lagi pada menit berikutnya
GET/kia/patients/{patient_id}/pregnanciesTautan ke operasi ini: KIA: daftar kehamilan pasien

KIA: daftar kehamilan pasien

Scope
encounters:read
Izin RBAC
encounter.read · specialty.kia
Modul
kia

Parameter

Parameter GET /kia/patients/{patient_id}/pregnancies
NamaLokasiTipeKeterangan
patient_idwajibpathstring (uuid)

Contoh kode

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

Respons

200Daftar data paket spesialisapplication/json

{
  "items": [
    {}
  ]
}
Skema 200
Skema 200
NamaTipeKeterangan
itemswajibarray<object>
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

KIA: detail kehamilan, kunjungan ANC, dan persalinan

KSPR: KRR (2), KRT (6–10), KRST (≥ 12).

Scope
encounters:read
Izin RBAC
encounter.read · specialty.kia
Modul
kia

Parameter

Parameter GET /kia/pregnancies/{id}
NamaLokasiTipeKeterangan
idwajibpathstring (uuid)

Contoh kode

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

Respons

200Kehamilanapplication/json

{
  "id": "3f0c2a10-5b7e-4c1d-9a2e-000000003001",
  "patient_id": "3f0c2a10-5b7e-4c1d-9a2e-0000000a0001",
  "gravida": 2,
  "para": 1,
  "abortus": 0,
  "living_children": 1,
  "lmp": "2026-03-01",
  "edd": "2026-12-06",
  "edd_source": "hpht",
  "status": "active",
  "gestational_age": {
    "weeks": 34,
    "days": 3,
    "total_days": 241,
    "trimester": 3
  },
  "kspr_score": 10,
  "risk_category": "KRT",
  "visits": [],
  "delivery": null,
  "version": 1
}
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
GET/kia/patients/{patient_id}/family-planningTautan ke operasi ini: KIA: kunjungan KB dan jadwal kunjungan ulang

KIA: kunjungan KB dan jadwal kunjungan ulang

Scope
encounters:read
Izin RBAC
encounter.read · specialty.kia
Modul
kia

Parameter

Parameter GET /kia/patients/{patient_id}/family-planning
NamaLokasiTipeKeterangan
patient_idwajibpathstring (uuid)

Contoh kode

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

Respons

200Kunjungan KBapplication/json

{
  "items": [
    {
      "visit_date": "2026-10-29",
      "method": "suntik_3_bulan",
      "method_label": "Suntik 3 bulan",
      "is_new_acceptor": false,
      "next_visit_date": "2027-01-21"
    }
  ],
  "next_visit_date": "2027-01-21"
}
Skema 200
Skema 200
NamaTipeKeterangan
itemsarray<object>
next_visit_datestring (date) | 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)
  • 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

KIA: jadwal imunisasi rutin nasional

Scope
encounters:read
Izin RBAC
encounter.read · specialty.kia
Modul
kia

Contoh kode

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

Respons

200Jadwalapplication/json

{
  "items": [
    {
      "vaccine_code": "HB0",
      "vaccine_name": "Hepatitis B (HB0)",
      "dose_no": 1,
      "label": "HB0",
      "age_days": 0,
      "age_label": "0–24 jam",
      "min_interval_days": 0,
      "max_age_days": 7,
      "grace_days": 1,
      "group": "bayi"
    }
  ],
  "source": "Program Imunisasi Nasional Kemenkes RI (imunisasi rutin lengkap)"
}
Skema 200
Skema 200
NamaTipeKeterangan
itemsarray<object>
sourcestring
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)
  • 429rate-limitedBatas laju klien (rate_limit_per_min) terlampaui; coba lagi pada menit berikutnya

KIA: riwayat imunisasi dan jadwal jatuh tempo

Status jadwal: given, due, overdue, upcoming, missed. Tanpa tanggal lahir: schedule kosong + note.

Scope
encounters:read
Izin RBAC
encounter.read · specialty.kia
Modul
kia

Parameter

Parameter GET /kia/patients/{patient_id}/immunizations
NamaLokasiTipeKeterangan
patient_idwajibpathstring (uuid)

Contoh kode

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

Respons

200Imunisasiapplication/json

{
  "patient_id": "3f0c2a10-5b7e-4c1d-9a2e-0000000a0003",
  "items": [
    {
      "id": "3f0c2a10-5b7e-4c1d-9a2e-000000003101",
      "vaccine_code": "HB0",
      "dose_no": 1,
      "given_at": "2026-01-10T08:00:00+07:00",
      "status": "completed"
    }
  ],
  "schedule": [
    {
      "vaccine_code": "BCG",
      "dose_no": 1,
      "label": "BCG",
      "due_date": "2026-02-09",
      "status": "overdue",
      "status_label": "Terlambat"
    }
  ],
  "summary": {
    "given": 1,
    "overdue": 1,
    "due": 0,
    "upcoming": 20
  }
}
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

KIA: pengukuran pertumbuhan anak (z-score WHO)

Scope
encounters:read
Izin RBAC
encounter.read · specialty.kia
Modul
kia

Parameter

Parameter GET /kia/patients/{patient_id}/growth
NamaLokasiTipeKeterangan
patient_idwajibpathstring (uuid)

Contoh kode

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

Respons

200Daftar data paket spesialisapplication/json

{
  "items": [
    {}
  ]
}
Skema 200
Skema 200
NamaTipeKeterangan
itemswajibarray<object>
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

KIA: data grafik pertumbuhan (kurva acuan + titik)

Scope
encounters:read
Izin RBAC
encounter.read · specialty.kia
Modul
kia

Parameter

Parameter GET /kia/patients/{patient_id}/growth/chart
NamaLokasiTipeKeterangan
patient_idwajibpathstring (uuid)
indicatorquerywfa | lhfa

Contoh kode

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

Respons

200Data paket spesialisapplication/json

{}
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

KIA: kalkulator z-score WHO

Scope
encounters:read
Izin RBAC
encounter.read · specialty.kia
Modul
kia

Parameter

Parameter GET /kia/growth/zscore
NamaLokasiTipeKeterangan
sexwajibquerymale | female
age_dayswajibqueryinteger
weight_kgquerynumber
length_cmquerynumber
positionqueryrecumbent | standing

Contoh kode

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

Respons

200Z-scoreapplication/json

{
  "sex": "female",
  "age_days": 365,
  "age_months": 12,
  "wfa_z": 0.02,
  "wfa_status": {
    "code": "normal",
    "label": "Normal"
  },
  "lhfa_z": -0.04,
  "lhfa_status": {
    "code": "normal",
    "label": "Normal"
  }
}
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
GET/physio/patients/{patient_id}/assessmentsTautan ke operasi ini: Fisioterapi: daftar asesmen

Fisioterapi: daftar asesmen

Scope
encounters:read
Izin RBAC
encounter.read · specialty.physio
Modul
physio

Parameter

Parameter GET /physio/patients/{patient_id}/assessments
NamaLokasiTipeKeterangan
patient_idwajibpathstring (uuid)

Contoh kode

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

Respons

200Daftar data paket spesialisapplication/json

{
  "items": [
    {}
  ]
}
Skema 200
Skema 200
NamaTipeKeterangan
itemswajibarray<object>
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

Fisioterapi: detail asesmen (VAS, ROM, MMT, skor fungsional)

Scope
encounters:read
Izin RBAC
encounter.read · specialty.physio
Modul
physio

Parameter

Parameter GET /physio/assessments/{id}
NamaLokasiTipeKeterangan
idwajibpathstring (uuid)

Contoh kode

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

Respons

200Asesmenapplication/json

{
  "id": "3f0c2a10-5b7e-4c1d-9a2e-000000003501",
  "patient_id": "3f0c2a10-5b7e-4c1d-9a2e-0000000a0001",
  "chief_complaint": "Nyeri punggung bawah",
  "diagnosis": "LBP mekanik",
  "pain_vas": 7,
  "rom": [
    {
      "joint": "lumbal",
      "movement": "fleksi",
      "side": "bilateral",
      "active_deg": 40,
      "passive_deg": 50,
      "normal_deg": 60
    }
  ],
  "mmt": [],
  "functional_scores": [
    {
      "instrument": "ODI",
      "score": 42,
      "max_score": 100
    }
  ],
  "assessed_at": "2026-10-29T10:00:00+07:00"
}
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
GET/physio/patients/{patient_id}/programsTautan ke operasi ini: Fisioterapi: daftar program terapi

Fisioterapi: daftar program terapi

Scope
encounters:read
Izin RBAC
encounter.read · specialty.physio
Modul
physio

Parameter

Parameter GET /physio/patients/{patient_id}/programs
NamaLokasiTipeKeterangan
patient_idwajibpathstring (uuid)

Contoh kode

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

Respons

200Daftar data paket spesialisapplication/json

{
  "items": [
    {}
  ]
}
Skema 200
Skema 200
NamaTipeKeterangan
itemswajibarray<object>
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

Fisioterapi: detail program, sesi, dan evaluasi

Scope
encounters:read
Izin RBAC
encounter.read · specialty.physio
Modul
physio

Parameter

Parameter GET /physio/programs/{id}
NamaLokasiTipeKeterangan
idwajibpathstring (uuid)

Contoh kode

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

Respons

200Programapplication/json

{
  "id": "3f0c2a10-5b7e-4c1d-9a2e-000000003601",
  "patient_id": "3f0c2a10-5b7e-4c1d-9a2e-0000000a0001",
  "goals": [
    "Nyeri VAS < 3"
  ],
  "modalities": [
    "TENS"
  ],
  "frequency_per_week": 2,
  "planned_sessions": 8,
  "completed_sessions": 1,
  "remaining_sessions": 7,
  "status": "active",
  "sessions": [
    {
      "session_no": 1,
      "pain_vas_before": 6,
      "pain_vas_after": 4,
      "status": "done"
    }
  ],
  "evaluations": [],
  "version": 2
}
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