Bank tanya-jawab interview campuran
Pertanyaan interview nyata jarang berhenti di satu modul: desain integrasi, SMART, Bulk Data, REST, dan SATUSEHAT dicampur.
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…
- job terjadwal + antrean dengan retry/backoff?
- token di-cache, secret di server (bukan di React)?
- prasyarat (nomor IHS Patient/Practitioner, Organization/Location) disimpan sebagai mapping?
- idempoten lewat identifier (conditional create / penolakan duplikat)?
- OperationOutcome per record disimpan untuk koreksi dan kirim ulang?
- PHI: tidak di log biasa, audit akses?
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…
- EHR launch:
iss+launch, discovery? - authorization code + PKCE, scope
patient/Observation.rs, kontekspatient? - search dengan parameter (patient, category/code, sort,
_count)? - Bundle
searchset+ paging lewatlinknext? - CodeableConcept ditampilkan dari
text/display, bukan kode mentah? valueQuantity/UCUM atau presisidecimal?
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…
$export(bukan search), dengan_type?- Backend Services + scope
system/? - kick-off → 202 → polling (
Retry-After) → manifest? - NDJSON diproses streaming per baris, batch insert?
- backpressure / tidak
JSON.parsefile utuh? - inkremental dengan
_since=transactionTime?
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…
- Bundle
transaction, atomik? fullUrlurn:uuid:untuk saling merujuk?- kenapa bukan
batch(independen, tanpa ketergantungan)? - conditional create / identifier untuk retry idempoten?
- respons
transaction-responseberisi lokasi/id per entry? - jujur tentang detail SATUSEHAT yang perlu dicek di panduan?
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…
idvsidentifier(id lokal per server)?system+value, beberapa identifier per Patient?- search token
identifier=system|value? - conditional create untuk mencegah duplikat?
- MPI/nomor IHS, verifikasi NIK ke DUKCAPIL?
- jebakan: pasien tanpa NIK, value tanpa system?
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…
- R4 = konten Normative pertama; R5 Trial Use?
- IG nasional dibangun di atas R4, termasuk SATUSEHAT?
- profile = StructureDefinition berisi constraint?
- contoh constraint: elemen wajib, binding terminologi?
- extension untuk data lokal (mis. kode wilayah)?
meta.profile+ validasi?
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