Lesson 0028 · FHIR · Penutup · ±20 menit

Bank tanya-jawab interview campuran

Pertanyaan interview nyata jarang berhenti di satu modul: desain integrasi, SMART, Bulk Data, REST, dan SATUSEHAT dicampur.

Target lesson ini: Anda bisa menjawab pertanyaan desain yang mencampur beberapa modul dalam batas waktunya (60 detik–2 menit), dan memenuhi minimal 4 dari 6 poin checklist di setiap soal yang Anda pilih.

Enam pertanyaan campuran

Pertanyaan interview nyata jarang berhenti di satu lesson. Enam soal di bawah sengaja mencampur topik (desain integrasi, SMART, Bulk Data, REST, SATUSEHAT). Pilih minimal tiga secara acak (lempar dadu), jawab dengan suara keras dalam batas waktunya, lalu buka checklist. Timer ini menempel di atas layar saat Anda menggulir.

1. "Kami perlu mengirim data kunjungan rawat jalan dari SIMRS ke SATUSEHAT setiap hari. Rancang service Node-nya." (2 menit)
Bandingkan dengan jawaban contoh dan checklist-nya

"Saya pisahkan menjadi job terjadwal yang mengambil kunjungan baru dari SIMRS, mengubahnya ke resource FHIR, lalu mengirim lewat antrean, misalnya BullMQ, supaya ada retry dan backoff. Token client credentials di-cache sampai mendekati expires_in. Prasyarat seperti nomor IHS Patient dan Practitioner diambil sekali lalu disimpan di tabel mapping. Setiap record punya identifier lokal dengan system organisasi, jadi pengiriman ulang tidak membuat duplikat; secara FHIR umum ini conditional create dengan If-None-Exist, dan SATUSEHAT juga menolak duplikat dengan issue duplicate. Respons sukses menyimpan id dari server untuk reference berikutnya; OperationOutcome gagal disimpan per record untuk diperbaiki. Data pasien adalah PHI: tidak masuk log biasa, secret di secret manager, dan ada audit siapa mengirim apa."

Checklist: apakah Anda menyebut…

Lulus kalau minimal 4 dari 6. Sumber: 0010 (conditional create), 0011 (OperationOutcome), 0020 (PHI, audit), 0022 (token, prasyarat, nomor IHS).

2. "Ceritakan perjalanan data dari klik di EHR sampai React menampilkan daftar tanda vital pasien." (90 detik)
Bandingkan dengan jawaban contoh dan checklist-nya

"EHR membuka launch URL app dengan iss dan launch. App melakukan discovery di .well-known/smart-configuration, redirect ke authorize dengan PKCE, state, aud, dan scope launch patient/Observation.rs, lalu menukar code dan mendapat token plus patient. Lalu search GET Observation?patient=123&category=vital-signs&_sort=-date&_count=50; hasilnya Bundle searchset, dan halaman berikutnya diambil dari link relation next, bukan URL buatan sendiri. Di React, label diambil dari code.text, lalu display, baru kode mentah; nilai dari valueQuantity dengan satuan UCUM, dan angka decimal dijaga presisinya."

Checklist: apakah Anda menyebut…

Lulus kalau minimal 4 dari 6. Sumber: 0017, 0018, 0008, 0009, 0020, 0016.

3. "Tim data minta salinan semua Observation tiap malam untuk warehouse. Bagaimana Anda melakukannya?" (90 detik)
Bandingkan dengan jawaban contoh dan checklist-nya

"Bukan search biasa, tapi Bulk Data $export dengan _type=Observation. Autentikasinya SMART Backend Services: JWT assertion, scope system/Observation.rs. Kick-off dengan Prefer: respond-async, dapat 202 dan Content-Location, polling mengikuti Retry-After sampai 200 dengan manifest berisi URL file NDJSON. Setiap file diproses streaming baris per baris dengan readline atau pipeline, insert ke database per batch dengan backpressure, tidak pernah JSON.parse satu file utuh. Malam berikutnya pakai _since = transactionTime dari manifest sebelumnya supaya inkremental."

Checklist: apakah Anda menyebut…

Lulus kalau minimal 4 dari 6. Sumber: 0013–0015, 0019.

4. "Satu kunjungan menghasilkan Encounter, dua Condition, dan lima Observation. Bagaimana mengirimnya supaya tidak setengah tersimpan?" (60 detik)
Bandingkan dengan jawaban contoh dan checklist-nya

"Di FHIR umum, Bundle transaction ke POST [base]: atomik, semua berhasil atau semua gagal. Encounter diberi fullUrl urn:uuid:… dan Condition/Observation merujuk ke urn itu; server mengganti reference dengan id asli. batch tidak cocok karena setiap entry independen dan tidak boleh saling merujuk. Untuk retry aman, setiap entry memakai conditional create berdasarkan identifier. Untuk SATUSEHAT khususnya, panduan IGD menyebut beberapa resource dikirim bersamaan memakai bundle; detail tipe Bundle dan aturan atomiknya perlu saya cek lagi di panduan use case."

Checklist: apakah Anda menyebut…

Lulus kalau minimal 4 dari 6. Sumber: 0010. Dukungan Bundle di SATUSEHAT: panduan interoperabilitas IGD menyebut Medication dan MedicationDispense "dikirimkan secara bersamaan menggunakan bundle" [1]; tipe Bundle dan perilaku atomiknya belum terverifikasi (diakses 2026-10-26).

5. "Pasien yang sama terdaftar di tiga sistem dengan nomor berbeda. Bagaimana FHIR membantu, dan apa jebakannya?" (60 detik)
Bandingkan dengan jawaban contoh dan checklist-nya

"Logical id berbeda di setiap server dan tidak boleh dipakai sebagai identitas lintas sistem. Yang dipakai adalah identifier: pasangan system + value, misalnya NIK dengan system https://fhir.kemkes.go.id/id/nik, plus nomor rekam medis per rumah sakit dengan system masing-masing. Satu Patient boleh punya banyak identifier. Search memakai token identifier=system|value, dan create memakai conditional create supaya tidak dobel. Di Indonesia, MPI SATUSEHAT memberi nomor IHS setelah verifikasi NIK ke DUKCAPIL. Jebakannya: pasien tanpa NIK, misalnya bayi, punya alur sendiri, dan value tanpa system tidak bermakna."

Checklist: apakah Anda menyebut…

Lulus kalau minimal 4 dari 6. Sumber: 0004, 0008, 0010, 0022. Alur pasien tanpa NIK dan bayi ada di menu MPI dokumentasi SATUSEHAT (pasien-bayi, pasien-no-nik) dan tidak dibahas di track ini.

6. "Kenapa kami memakai FHIR R4, bukan R5? Dan apa itu profile SATUSEHAT?" (60 detik)
Bandingkan dengan jawaban contoh dan checklist-nya

"R4 adalah rilis pertama yang memuat konten Normative, jadi bagian intinya stabil dan dijaga kompatibilitasnya; R5 masih Trial Use. Ekosistem IG besar dibangun di atas R4, dan SATUSEHAT juga: base URL-nya fhir-r4 dan IG-nya SATUSEHAT FHIR R4 Implementation Guide. Profile adalah StructureDefinition yang mempersempit resource dasar untuk konteks tertentu: elemen wajib, cardinality, binding terminologi seperti ICD-10 dan LOINC, serta extension Indonesia seperti kode wilayah administratif. Resource bisa mengklaim profile di meta.profile, dan validator memeriksa aturan itu."

Checklist: apakah Anda menyebut…

Lulus kalau minimal 4 dari 6. Sumber: 0002, 0003, 0022, 0023.

Istilah: GLOSSARY.md · Cheat sheet: anatomi resource, REST, search, Bundle, PDP dan monitoring

Jawaban yang menurut Anda benar tapi tidak cocok dengan checklist? Tanyakan ke saya (agent) di terminal. Untuk pertanyaan implementasi SATUSEHAT yang tidak terjawab dokumentasi, kanal resminya adalah FAQ SATUSEHAT Platform; untuk interpretasi spesifikasi FHIR, chat.fhir.org.

Skor latihan ini hanya catatan, bukan bukti penguasaan. Bukti penguasaan dari review 0012, 0021, dan 0027.

Sumber (diakses 2026-10-26): [1] SATUSEHAT: Panduan Interoperabilitas Pelayanan IGD