Rekamedika DocsPanduan Rekamedika
BPJS dan SATUSEHAT

Status Integrasi SATUSEHAT Rekamedika

Dokumen ini membantu user membedakan fitur SATUSEHAT yang sudah dapat digunakan, yang masih terbatas, dan yang baru tersedia di backend.

Terakhir diperbarui

Informasi tutorial

InformasiDetail
Tanggal audit30 Juli 2026
Cakupanvalidasi source code pada branch saat ini, terutama apps/dashboard, packages/api, packages/db, dan apps/server
KesimpulanRekamedika sudah memiliki fondasi dan beberapa alur publish SATUSEHAT yang nyata. Integrasi belum dapat disebut lengkap untuk seluruh resource FHIR.

Dokumen ini membantu user membedakan fitur SATUSEHAT yang sudah dapat digunakan, yang masih terbatas, dan yang baru tersedia di backend.

Cara membaca status

Status pada dokumen ini berarti:

  • Terintegrasi: ada capture/write dari UI atau alur aplikasi, tersimpan ke tabel lokal yang sesuai, dan ada publisher SATUSEHAT yang dipanggil oleh aplikasi.
  • Terintegrasi terbatas: alurnya nyata, tetapi hanya untuk modul/kasus tertentu, atau belum mencakup seluruh variasi resource.
  • Backend siap, writer belum ada: tabel, builder, atau publisher tersedia, tetapi belum ditemukan alur aplikasi yang menulis data bisnis ke tabel tersebut.
  • Belum terintegrasi: belum ditemukan writer dan/atau publisher yang dapat digunakan oleh alur aplikasi.
  • Di luar cakupan: saat ini tidak diposisikan sebagai alur SATUSEHAT Rekamedika. Ini bukan berarti resource tersebut dilarang untuk ditambahkan kemudian.

Keberadaan tabel database atau fungsi build...Fhir saja tidak dihitung sebagai integrasi end-to-end. Data harus memiliki sumber input yang dapat digunakan oleh user.

Ringkasan progres

AreaStatusYang sudah tersedia
Arsitektur koneksiTerintegrasiServer menjadi satu-satunya pintu ke SATUSEHAT; dashboard tidak memegang token.
Identitas pasien/MPITerintegrasiVerifikasi NIK, resolve IHS, review kandidat duplikat, link identity, dan status di dashboard.
PraktisiTerintegrasi terbatasResolve praktisi melalui NIK dan penyimpanan IHS; belum merupakan alur pengelolaan SDMK lengkap.
FasyankesTerintegrasiVerifikasi Organization/FASYANKES dan sinkronisasi Organization/Location tersedia.
Publish kunjunganTerintegrasiReadiness, blocker, publish ulang idempotent, dan status per resource tersedia.
RME gizi PDIMETerintegrasiCapture asesmen, pemecahan ke resource FHIR, dan publish berurutan P-D-I-M/E.
RME gigiTerintegrasi terbatasEncounter gigi, odontogram, temuan/OHIS, anamnesis, edukasi, dan publish melalui Bundle kunjungan.
IGDTerintegrasi terbatasTriage vital signs tersimpan sebagai Observation dan ikut jalur publish kunjungan.
FarmasiTerintegrasi terbatasResep dan dispensing membuat MedicationRequest/MedicationDispense; publish bergantung pada KFA dan prasyarat klinis.
Dokumen resumeTerintegrasi terbatasResume dapat membuat Composition dan menampilkan status; author dokter masih dapat kosong sehingga publish dapat terblokir.
Lab/radiologiBelum end-to-endModul lokal dan builder/publisher tersedia sebagian, tetapi writer hasil/order belum seluruhnya mengisi tabel SATUSEHAT clinical.
Resource RME generikSebagian besar backend siapBanyak schema dan builder tersedia, tetapi writer UI belum ditemukan.
HIVAlur khusus tersediaAda route capture, EpisodeOfCare/visit, status, dan publish khusus HIV; jangan disamakan dengan coverage RME umum.

Status per resource FHIR

ResourceStatus auditBukti utamaCatatan
PatientTerintegrasiapps/dashboard/src/components/integrasi/satusehat-verify-panel.tsx; apps/dashboard/src/lib/satusehat-api.ts; apps/server/src/satusehat/routes-patient.tsVerifikasi NIK dan persist link IHS tersedia.
PractitionerTerintegrasi terbatassatusehat-verify-panel.tsx; routes-patient.tsResolve NIK/IHS tersedia; pengelolaan practitioner lengkap belum diaudit sebagai alur write umum.
OrganizationTerintegrasifasyankes-verification-card.tsx; apps/server/src/satusehat/routes-clinical.tsVerifikasi dan sync Organization tersedia.
LocationTerintegrasiroutes-clinical.tsSync Location tersedia; data lokasi tetap bergantung pada master fasyankes.
EncounterTerintegrasisatusehat-encounter-panel.tsx; routes-clinical.tsReadiness dan publish kunjungan tersedia.
ConditionTerintegrasi terbataspackages/api/src/routers/gizi-mutations.ts; clinical-kunjungan-rme.tsWriter nyata terbukti untuk diagnosis gizi. Klaim bahwa seluruh diagnosis RME generik sudah terhubung belum terbukti.
ObservationTerintegrasi terbataspackages/api/src/routers/igd-vitals.ts; gizi-mutations.ts; rme-dental.tsVital IGD, asesmen gizi, dan dental menulis Observation. Belum semua vital/RME memakai jalur yang sama.
ProcedureTerintegrasi terbatasrme-dental.ts; gizi-mutations.tsEdukasi gigi dan counseling gizi tertulis; tindakan medis umum belum terbukti seluruhnya.
MedicationRequestTerintegrasi terbataspackages/api/src/routers/farmasi-clinical-inserts.ts; clinical-kunjungan-rme.tsWriter farmasi tersedia; publish membutuhkan kode KFA dan relasi encounter yang valid.
MedicationDispenseTerintegrasi terbatasfarmasi-clinical-inserts.ts; clinical-kunjungan-medication.tsWriter dispensing tersedia; belum berarti semua resep historis otomatis tersinkron.
NutritionOrderTerintegrasi terbatasgizi-mutations.ts; gizi-publish.tsTerhubung nyata melalui asesmen gizi PDIME.
QuestionnaireResponseTerintegrasi terbatasgizi-writer.ts; gizi-mutations.ts; gizi-publish.tsTerhubung untuk skrining gizi age-band, bukan semua kuesioner RME.
ServiceRequestTerintegrasi terbatasgizi-mutations.ts; gizi-publish.tsWriter nyata terbukti untuk permintaan konsultasi gizi. Order lab/radiologi umum belum terbukti masuk ke tabel ini.
DiagnosticReportTerintegrasi terbatasgizi-publish.tsAda report ringkasan gizi. Writer hasil laboratorium/radiologi umum belum terbukti end-to-end.
CarePlanTerintegrasi terbatasgizi-publish.tsCarePlan dibuat untuk alur gizi; belum ada writer umum untuk rencana asuhan klinis.
CompositionTerintegrasi terbataspackages/api/src/routers/dokumen-helpers.ts; dokumen-rme-detail-sheet.tsx; clinical-publish-documents.tsResume menulis Composition, tetapi authorId sengaja null pada alur dokumen sehingga publisher dapat menolak data.
DocumentReferenceBackend siap, writer belum adacore-rme-documents.ts; clinical-publish-documents.ts; dokumen-rme-detail-sheet.tsxDashboard dapat membaca status/detail, tetapi audit tidak menemukan writer attachment yang membuat row clinical_document_references untuk publish SATUSEHAT.
FamilyMemberHistoryBackend siap, writer belum adacore-rme-resources.ts; clinical-kunjungan-rme.tsSchema, builder, dan Bundle mapping ada; belum ada capture UI/API bisnis.
MedicationStatementBackend siap, writer belum adacore-rme-resources.ts; clinical-kunjungan-rme.tsBelum ada alur obat yang dikonsumsi sebelum perawatan ke tabel ini.
ClinicalImpressionBackend siap, writer belum adacore-rme-resources.ts; clinical-kunjungan-rme.tsBelum ada writer evaluasi/kesimpulan klinis generik.
GoalBackend siap, writer belum adacore-rme-resources.ts; clinical-kunjungan-rme.tsBelum ada writer target terapi generik.
RiskAssessmentBackend siap, writer belum adacore-rme-resources.ts; clinical-kunjungan-rme.tsBelum ada writer penilaian risiko generik.
MedicationAdministrationBackend siap, writer belum adacore-rme-resources.ts; clinical-kunjungan-rme.tsBuilder/publisher ada, tetapi e-MAR/pemberian obat belum ditemukan sebagai writer dashboard.
SpecimenBackend siap, writer belum adacore-rme-orders.ts; clinical-kunjungan-rme.tsBelum ada alur pengambilan/pelacakan spesimen ke tabel SATUSEHAT.
ImagingStudyBackend siap, writer belum adacore-rme-orders.ts; clinical-kunjungan-rme.tsUI radiologi/DICOM ada, tetapi belum mengisi tabel clinical_imaging_studies untuk publish.
SubstanceBelum terintegrasicore-rme-orders.tsSchema ada, tetapi CHILD_SPECS mengecualikan Substance dan builder/publisher belum tersedia.
AllergyIntoleranceBackend siap, writer belum adacore-clinical.ts; clinical-kunjungan-rme.tsPublisher ada, tetapi data alergi pada dashboard belum terbukti menulis allergy_intolerances.
RelatedPersonBelum terintegrasiTidak ada pada CHILD_SPECS dan tidak ditemukan writer dashboardKlaim lama bahwa RelatedPerson sudah penuh tidak didukung bukti alur saat ini.
ImmunizationBelum terintegrasiTidak ditemukan tabel/writer/publisher aplikasiBelum ada modul imunisasi.
EpisodeOfCareTerintegrasi terbatas untuk HIVapps/server/src/satusehat/routes-hiv.tsAda shell/alur EpisodeOfCare khusus HIV, bukan implementasi umum seluruh RME.
Resource billing (Account, ChargeItem, Invoice, PaymentNotice, PaymentReconciliation)Di luar cakupan saat iniTidak ada publish SATUSEHAT pada alur kasir yang diauditData keuangan tetap internal.
Resource klaim (Claim, ClaimResponse, Coverage, CoverageEligibility*)Di luar cakupan SATUSEHAT saat iniAlur terkait diarahkan ke E-Klaim/VClaimIntegrasi BPJS tidak sama dengan publish resource SATUSEHAT.

Alur yang dapat digunakan user saat ini

  1. Verifikasi identitas: buka /integrasi/satusehat, verifikasi NIK pasien atau praktisi, lalu periksa IHS yang tersimpan.
  2. Verifikasi fasilitas: gunakan kartu Verifikasi FASYANKES untuk memeriksa fasilitas dan master Organization/Location.
  3. Publish kunjungan: buka daftar Publish kunjungan, pilih kunjungan, periksa readiness dan blocker, lalu publish jika semua prasyarat terpenuhi.
  4. Publish gizi: pada profil pasien, buka panel Asesmen gizi (PDIME), buat asesmen, lalu pilih Publish SATUSEHAT pada asesmen yang belum final.
  5. Publish gigi: pada capture gigi, siapkan kunjungan, isi odontogram/temuan/edukasi, lalu gunakan panel SATUSEHAT RME.
  6. Publish IGD: input vital pada triase IGD; data tersimpan sebagai Observation encounter dan dapat ikut publish kunjungan.
  7. Publish farmasi: pastikan resep, dispensing, KFA, pasien, practitioner, dan encounter telah tertaut sebelum publish.

Prasyarat dan batasan operasional

  • Dashboard hanya memanggil server Rekamedika. Token dan kredensial SATUSEHAT tidak berada di browser.
  • Publish memakai izin integrasi.satusehat.update dan readiness server-side.
  • Pasien, practitioner, Organization, Location, kode terminologi, dan KFA harus tersedia sesuai resource yang akan dikirim.
  • Status terblokir berarti precondition belum tersedia, bukan bukti bahwa SATUSEHAT menolak request.
  • Status gagal berarti publisher sudah mencoba dan menerima kegagalan; detail harus dilihat dari log/resource link server.
  • Status UI dan jumlah resource pada dashboard berasal dari Postgres lokal. Angka tersebut bukan bukti keseluruhan data telah diterima Kemenkes tanpa pemeriksaan link/IHS dan log upstream.
  • Audit ini tidak memverifikasi kredensial tenant, environment sandbox/production, data runtime, keberhasilan HTTP aktual, atau kesesuaian setiap payload terhadap versi spesifikasi Kemenkes terbaru.

Koreksi terhadap dokumen status lama

Dokumen docs/satusehat/19-resource-kemenkes-status.md tidak sepenuhnya benar sebagai status terkini.

  • Klaim bahwa 19 resource hanya memiliki schema/builder/publisher tanpa writer terlalu luas. Writer nyata sudah ada untuk sebagian alur Gizi, IGD, farmasi, gigi, dan resume.
  • Klaim Composition selalu author_id = null masih benar untuk jalur dokumen.create yang diaudit, sehingga statusnya parsial dan dapat terblokir.
  • Klaim RelatedPerson sudah penuh tidak terbukti dari CHILD_SPECS dan writer dashboard.
  • Klaim EpisodeOfCare sepenuhnya belum ada perlu dibatasi: modul HIV memiliki alur EpisodeOfCare khusus.
  • Angka “41 spesifikasi” tidak dijadikan metrik progres pada dokumen ini karena daftar resource dan definisi “penuh” pada dokumen lama mencampur resource FHIR, modul khusus, dan resource di luar cakupan.

Pekerjaan berikutnya

Prioritas untuk menaikkan status dari parsial/backend-ready menjadi end-to-end:

  1. Isi authorId Composition dari pegawai/Practitioner terverifikasi, bukan nama teks bebas.
  2. Hubungkan writer alergi, riwayat keluarga, obat sebelum perawatan, ClinicalImpression, Goal, CarePlan umum, dan RiskAssessment ke form RME.
  3. Hubungkan order dan hasil laboratorium/radiologi ke ServiceRequest, Specimen, DiagnosticReport, dan ImagingStudy SATUSEHAT.
  4. Tambahkan writer DocumentReference yang mengikat attachment klinis ke Composition dengan URL/attachment yang valid.
  5. Tambahkan e-MAR untuk MedicationAdministration.
  6. Tambahkan builder/publisher dan writer untuk Substance bila memang diperlukan oleh workflow Rekamedika.
  7. Tambahkan pemeriksaan runtime: jumlah row per tabel, resource link ber-IHS, error terakhir, dan bukti response upstream per tenant/environment.

Berkas bukti utama

  • Dashboard SATUSEHAT: apps/dashboard/src/routes/integrasi.satusehat.tsx
  • Client dashboard ke server: apps/dashboard/src/lib/satusehat-api.ts
  • Panel publish encounter: apps/dashboard/src/components/pasien/satusehat-encounter-panel.tsx
  • Panel gizi: apps/dashboard/src/components/rme/gizi-panel.tsx dan gizi-publish-sheet.tsx
  • Panel gigi: apps/dashboard/src/components/rme/dental-capture-section.tsx
  • Panel IGD SATUSEHAT: apps/dashboard/src/components/igd/igd-satusehat.tsx
  • Writer gizi: packages/api/src/routers/gizi-mutations.ts dan gizi-writer.ts
  • Writer vital IGD: packages/api/src/routers/igd-vitals.ts
  • Writer gigi: packages/api/src/routers/rme-dental.ts
  • Writer farmasi: packages/api/src/routers/farmasi-clinical-inserts.ts
  • Writer Composition resume: packages/api/src/routers/dokumen-helpers.ts
  • Publisher kunjungan: apps/server/src/satusehat/clinical-kunjungan-rme.ts
  • Publisher gizi: apps/server/src/satusehat/gizi-publish.ts
  • Schema resource RME: packages/db/src/schema/core-rme-resources.ts, core-rme-orders.ts, dan core-rme-documents.ts

Is this page helpful?

On this page