Resource SATUSEHAT

Panduan Pengisian Resource SATUSEHAT di SIMGOS

Panduan Resource SATUSEHAT pada aplikasi

Dokumen ini menjadi checklist operasional pengisian data agar resource SATUSEHAT yang sudah tersedia di SIMGOS dapat terbentuk dan terkirim. Acuan lokalnya adalah modul webservice/module/Kemkes/IHS, tabel schema kemkes-ihs, dan pola pengiriman melalui controller resource masing-masing.

ℹ️ Catatan — Untuk admin dan tim teknis

Bagian ini menjelaskan field, dependensi, mapping, endpoint lokal, serta urutan resource FHIR. Operator yang hanya melakukan pengisian harian dapat mulai dari halaman Pengisian SATUSEHAT.

⚠️ Perhatian — Periksa dependensi sebelum kirim ulang

Jangan hanya mengubah status antrean. Pastikan resource induk, referensi terminologi, dan field wajib sudah valid; lalu baca respons terakhir sebelum menjalankan pengiriman ulang.

Prinsip Umum

  1. Gunakan data master lebih dulu sebelum transaksi klinis: Organization, Location, Practitioner, dan Patient harus sudah memiliki ID SATUSEHAT/IHS sebelum direferensikan oleh resource lain.
  2. Isi data transaksi sesuai urutan klinis: Encounter dibuat saat kunjungan, resource klinis dibuat selama pelayanan, lalu Encounter ditutup saat pasien selesai/pulang.
  3. Field bertipe referensi harus memakai format FHIR, misalnya Patient/{id}, Practitioner/{id}, Organization/{id}, Location/{id}, Encounter/{id}, Condition/{id}.
  4. Field JSON di tabel kemkes-ihs harus berisi JSON valid. Modul pengiriman akan mengubah string JSON menjadi object/array sebelum dikirim.
  5. Field send = 1 berarti antre dikirim. Jika berhasil atau ditolak HTTP 400, SIMGOS mengubah send = 0; periksa response/log sebelum mengirim ulang.
  6. Untuk waktu, SATUSEHAT memakai UTC +00. Jika input lokal WITA, kurangi 8 jam saat membentuk dateTime payload.
  7. Tanggal klinis jangan kurang dari 03 Juni 2014, terutama untuk Observation.
  8. Kode klinis harus memakai terminologi yang diminta use case: ICD-10 untuk diagnosis, ICD-9-CM/SNOMED CT untuk tindakan sesuai mapping, LOINC untuk hasil pemeriksaan/observasi, KFA untuk obat, dan kode referensi SATUSEHAT untuk status/category/intent/class.
  9. Untuk resource yang punya id, metode kirim menjadi PUT Resource/{id}. Jika belum punya id, metode kirim menjadi POST Resource.
  10. Jangan mengirim resource anak sebelum parent-nya berhasil. Contoh: Observation laboratorium menunggu ServiceRequest, Specimen, Encounter, Patient, dan Practitioner.

Urutan Minimal Pengiriman

  1. Organization: data fasilitas/unit organisasi.
  2. Location: lokasi pelayanan, ruang, kamar, tempat tidur.
  3. Practitioner: tenaga kesehatan.
  4. Patient: pasien.
  5. Consent dan/atau KnowYourCustomer jika diwajibkan alur rumah sakit.
  6. Encounter atau EpisodeOfCare: kunjungan/episode perawatan.
  7. Resource klinis sesuai pelayanan: Condition, Observation, Procedure, ServiceRequest, Specimen, DiagnosticReport, Medication, MedicationRequest, MedicationDispense, dan lain-lain.
  8. Resource penutup/lanjutan: Composition, CarePlan, MedicationStatement, ClinicalImpression, QuestionnaireResponse, Account/Coverage/ChargeItem/Invoice bila dipakai.
  9. Update Encounter menjadi finished setelah diagnosis dan data akhir kunjungan lengkap.

Resource Master

1. Master Organisasi (Organization)

Sumber SIMGOS: master ruangan/instalasi/unit organisasi. Tabel SATUSEHAT lokal: kemkes-ihs.organization.

Field utama:

  • refId: ID lokal organisasi/unit.
  • id: ID SATUSEHAT setelah berhasil dikirim.
  • identifier: identifier organisasi, umumnya memakai kode fasilitas/unit yang disepakati.
  • active: true untuk unit aktif.
  • type: jenis organisasi/unit.
  • name: nama resmi unit.
  • telecom: telepon/email bila tersedia.
  • address: alamat.
  • partOf: referensi parent organization bila unit berada di bawah organisasi lain.
  • send: 1 untuk antre kirim.

Rules:

  • Nama organisasi tidak boleh kosong.
  • Parent pada partOf harus sudah punya Organization/{id}.
  • Gunakan active = true hanya untuk unit yang masih dipakai pelayanan.

2. Master Lokasi (Location)

Sumber SIMGOS: master ruangan, ruang kamar, dan tempat tidur. Tabel lokal: location, location_ruang_kamar, location_tempat_tidur.

Field utama:

  • refId: ID lokal lokasi.
  • identifier: kode lokasi lokal.
  • status: status lokasi, biasanya active.
  • name: nama ruangan/kamar/bed.
  • mode: instance untuk lokasi fisik.
  • type: jenis lokasi.
  • physicalType: jenis fisik, misalnya building/room/bed sesuai mapping.
  • managingOrganization: Organization/{id}.
  • partOf: parent Location/{id} untuk hirarki ruangan -> kamar -> bed.
  • address, telecom, position, hoursOfOperation: isi bila tersedia.
  • send: 1 untuk antre kirim.

Rules:

  • managingOrganization wajib mengarah ke organisasi yang sudah berhasil terkirim.
  • Untuk kamar dan tempat tidur, partOf wajib mengarah ke parent location yang valid.
  • Jangan mengirim bed sebelum ruangan/kamar parent memiliki ID SATUSEHAT.

3. Master Tenaga Kesehatan (Practitioner)

Sumber SIMGOS: master pegawai/dokter/perawat. Tabel lokal: practitioner.

Field utama:

  • refId: ID/NIP lokal pegawai.
  • id: ID SATUSEHAT practitioner.
  • identifier: identitas tenaga kesehatan, terutama NIK/SIP/NIP sesuai mapping.
  • name: nama lengkap.
  • gender: male, female, unknown, atau sesuai mapping.
  • birthDate: tanggal lahir.
  • telecom, address: kontak/alamat.
  • qualification: STR/SIP/profesi bila tersedia.

Rules:

  • NIK/identifier tenaga kesehatan harus valid dan konsisten.
  • Nama dan tanggal lahir harus sesuai data resmi agar pencarian/mapping IHS tidak gagal.
  • Resource klinis yang memakai performer, requester, author, assessor, atau recorder harus memakai Practitioner/{id} yang sudah ada.

4. Master Pasien (Patient)

Sumber SIMGOS: master pasien. Tabel lokal: patient.

Field utama:

  • refId: NORM/ID pasien lokal.
  • nik: NIK pasien.
  • identifier: identifier pasien, dapat berisi NIK/MR sesuai aturan.
  • active: status pasien aktif.
  • name: nama lengkap.
  • gender: jenis kelamin FHIR.
  • birthDate: tanggal lahir.
  • address: alamat lengkap, termasuk kode wilayah bila tersedia.
  • telecom: kontak.
  • maritalStatus, communication, deceasedBoolean, multipleBirthBoolean: isi bila tersedia.
  • getDate, httpRequest, statusRequest: metadata pencarian/request lokal.

Rules:

  • NIK wajib valid untuk pencarian Patient SATUSEHAT, kecuali alur khusus pasien tanpa NIK memakai aturan Kemenkes yang berlaku.
  • Nama, tanggal lahir, dan jenis kelamin harus sama dengan identitas resmi.
  • Semua resource klinis pasien memakai subject.reference = Patient/{id}.

Resource Klinis Utama

5. Kunjungan Pasien (Encounter)

Tabel lokal: encounter.

Field wajib SIMGOS:

  • status: arrived, in-progress, finished, atau status sesuai fase kunjungan.
  • class: kelas kunjungan, misalnya rawat jalan/rawat inap/IGD sesuai mapping.
  • subject: Patient/{id}.
  • participant: tenaga kesehatan, minimal dokter/DPJP Practitioner/{id}.
  • period: waktu mulai dan selesai kunjungan.
  • location: Location/{id} tempat pelayanan.
  • diagnosis: referensi diagnosis Condition/{id} saat encounter ditutup.

Field pendukung:

  • identifier, statusHistory, hospitalization, episodeOfCare.

Rules:

  • Encounter boleh dikirim awal dengan status aktif. Saat finished, pastikan diagnosis sudah terisi.
  • SIMGOS memiliki pengaman: jika status finished tetapi diagnosis kosong, status dikirim sebagai in-progress sementara.
  • period.start wajib ada; period.end diisi saat selesai/pulang.

6. Kondisi/Diagnosis (Condition)

Tabel lokal utama: condition. Varian SIMGOS: keluhan_utama_condition, condition_anamnesis, condition_riwayat_penyakit_dahulu, condition_hasil_pa, condition_penilaian_tumor.

Field wajib:

  • clinicalStatus: status klinis.
  • category: kategori, misalnya encounter-diagnosis atau problem/complaint sesuai use case.
  • code: kode diagnosis/keluhan, umumnya ICD-10 atau SNOMED CT sesuai alur.
  • subject: Patient/{id}.
  • encounter: Encounter/{id}.

Field pendukung:

  • verificationStatus, severity, bodySite, onsetAge, onsetPeriod, note, recorder, recordedDate.

Rules:

  • Satu payload Condition hanya untuk satu diagnosis/kode.
  • Diagnosis utama dan sekunder dikirim sebagai resource terpisah, lalu direferensikan di Encounter.diagnosis.
  • Keluhan utama/anamnesis/riwayat penyakit dahulu memakai resourceType Condition dengan tabel varian masing-masing.

7. Observasi (Observation)

Tabel lokal utama: observation. Varian SIMGOS: observation_faktor_risiko, observation_anamnesis_riwayat_lainnya, observation_nutrisi, observation_pemeriksaan_ekg, observation_penilaian_grace_risk_skor, observation_penilaian_skala_morse, observation_penilaian_skala_humpty_dumpty, observation_penilaian_epfra, observation_metode_penilaian_nyeri, observation_penilaian_nyeri.

Field wajib:

  • status: status hasil, misalnya final.
  • category: kategori observasi.
  • code: kode observasi, umumnya LOINC.
  • subject: Patient/{id}.
  • encounter: Encounter/{id}.
  • effectiveDateTime: waktu pemeriksaan.

Field hasil:

  • valueQuantity, valueString, valueCodeableConcept, valueInteger, atau valueBoolean sesuai jenis hasil.
  • component untuk observasi komposit/skor.

Field pendukung:

  • basedOn, performer, specimen, issued, interpretation, bodySite, derivedFrom, hasMember.

Rules:

  • Pilih satu tipe value yang sesuai. Jangan mengisi beberapa tipe value untuk hasil tunggal kecuali memang komponen.
  • Hasil lab biasanya mengacu ke ServiceRequest dan Specimen.
  • Observasi skor/assessment memakai component bila terdiri dari beberapa item penilaian.

8. Tindakan (Procedure)

Tabel lokal: procedure.

Field wajib:

  • status: status tindakan, misalnya completed.
  • category: kategori tindakan.
  • code: kode tindakan, sesuai ICD-9-CM/SNOMED CT/LOINC tergantung mapping.
  • subject: Patient/{id}.
  • encounter: Encounter/{id}.
  • effectiveDateTime: waktu tindakan.

Field pendukung:

  • bodySite, interpretation, valueQuantity, jenis, nopen.

Rules:

  • Kode tindakan harus sudah dimapping ke terminologi yang diterima.
  • Tindakan yang menjadi alasan/hasil kunjungan dapat direferensikan di Encounter.reasonReference atau resource terkait lain.

9. Resume/Komposisi Dokumen (Composition dan CompositionResume)

Tabel lokal: composition, composition_resume.

Field wajib:

  • identifier, status, type, category, subject, encounter, date, author, title, custodian, section.

Field pendukung:

  • confidentiality, attester, event, relatesTo.

Rules:

  • author biasanya Practitioner/{id}.
  • custodian biasanya Organization/{id}.
  • section harus mereferensikan resource yang sudah terkirim, misalnya Condition, Observation, Procedure, MedicationRequest.

10. Imunisasi (Immunization)

Catatan SIMGOS: belum ditemukan controller Immunization di modul Kemkes/IHS saat dokumen ini dibuat. Jika rumah sakit mengaktifkan resource ini, pola isi minimalnya:

  • status: status imunisasi.
  • vaccineCode: kode vaksin sesuai terminologi.
  • patient: Patient/{id}.
  • encounter: Encounter/{id} bila terkait kunjungan.
  • occurrenceDateTime: waktu pemberian.
  • performer: Practitioner/{id}.
  • lotNumber, manufacturer, doseQuantity, route, site bila tersedia.

Rules:

  • Kirim hanya bila master vaksin dan terminologi sudah dimapping.
  • Tambahkan tabel/controller lokal jika resource ini belum tersedia di deployment SIMGOS.

11. Resep Obat (MedicationRequest)

Tabel lokal: medication_request.

Field wajib:

  • identifier, status, intent, category, priority, medicationReference, subject, encounter, authoredOn, requester, dosageInstruction.

Field pendukung:

  • basedOn, insurance, performer, performerType, recorder, reasonCode, reasonReference, dispenseRequest, substitution, reportedBoolean, note, courseOfTherapyType.

Rules:

  • medicationReference harus mengarah ke Medication/{id} yang sudah valid.
  • reportedBoolean di SIMGOS dikonversi dari 0/1 menjadi boolean.
  • Untuk racikan, perhatikan group_racikan dan status_racikan; field ini metadata lokal dan tidak dikirim sebagai FHIR.

12. Tebus Obat (MedicationDispense)

Tabel lokal: medication_dispanse; resourceType dikirim sebagai MedicationDispense.

Field wajib:

  • identifier, status, category, medicationReference, subject, context, performer, location, authorizingPrescription, quantity, daysSupply, whenPrepared, whenHandedOver, dosageInstruction.

Field pendukung:

  • partOf, substitution, barang, group_racikan.

Rules:

  • authorizingPrescription harus mengarah ke MedicationRequest/{id}.
  • location harus mengarah ke depo/farmasi Location/{id}.
  • Jumlah dan satuan harus sesuai KFA/satuan obat.

13. Alergi Intoleran (AllergyIntolerance)

Tabel lokal: allergy_intolerance.

Field utama:

  • identifier, clinicalStatus, verificationStatus, category, code, patient, encounter, recordedDate, recorder.

Rules:

  • patient wajib Patient/{id}.
  • code berisi zat/obat/makanan/lingkungan penyebab alergi sesuai terminologi.
  • recorder memakai Practitioner/{id} bila dicatat oleh tenaga kesehatan.

14. Radiologi (ImagingStudy)

Tabel lokal: imaging_study.

Field utama:

  • id, refId, nopen, get.

Rules:

  • Pastikan order/hasil radiologi sudah punya Patient, Encounter, dan Practitioner.
  • Untuk integrasi DICOM/webhook, simpan image ID yang dikembalikan sebelum dipakai oleh DiagnosticReport atau Observation.
  • Resource ini juga dapat menjadi referensi DiagnosticReport.imagingStudy.

15. Permintaan Pemeriksaan (ServiceRequest)

Tabel lokal utama: service_request. Varian: service_request_jadwal_kontrol, service_request_pemeriksaan_ekg, service_request_perencana_rawat_inap.

Field wajib:

  • identifier, status, intent, category, priority, code, subject, encounter, authoredOn, requester.

Field pendukung:

  • basedOn, replaces, requisition, performer, performerType, locationCode, locationReference, reasonCode, reasonReference, insurance, supportingInfo, specimen, occurrenceDateTime, occurrencePeriod, patientInstruction, note.

Rules:

  • Untuk lab/radiologi/EKG, code harus dimapping ke LOINC/SNOMED CT sesuai jenis pemeriksaan.
  • Untuk jadwal kontrol dan rencana rawat inap, isi occurrenceDateTime atau occurrencePeriod.
  • requester dan performer harus memakai referensi valid.

16. Impresi Klinis (ClinicalImpression)

Tabel lokal: prognosis_clinical_impression, clinical_impression_anamnesis, clinical_impression_diagnosa.

Field utama:

  • identifier, status, subject, encounter, effectiveDateTime, date, assessor, summary, finding.

Field pendukung:

  • problem, investigation, prognosisCodeableConcept, prognosisReference, description.

Rules:

  • Gunakan untuk rangkuman penilaian klinis dokter, anamnesis, atau diagnosis.
  • problem dapat mereferensikan Condition/{id}.
  • finding harus konsisten dengan diagnosis/hasil pemeriksaan yang sudah dikirim.

17. Spesimen (Specimen)

Tabel lokal: specimen.

Field wajib:

  • identifier, status, type, subject.

Field pendukung:

  • accesssionIdentifier, request, collection, receivedTime, condition, container, processing, parent, note.

Rules:

  • request biasanya ServiceRequest/{id}.
  • collection.collector memakai Practitioner/{id} bila tersedia.
  • Waktu pengambilan dan penerimaan harus valid UTC +00.

18. Laporan Pemeriksaan (DiagnosticReport)

Tabel lokal: diagnostic_report.

Field wajib:

  • identifier, status, category, code, subject, encounter, effectiveDateTime, issued, performer.

Field pendukung:

  • basedOn, specimen, result, resultInterpreter, imagingStudy, media, conclusion, conclusionCode, presentedForm, valueString.

Rules:

  • result mereferensikan Observation/{id}.
  • specimen mereferensikan Specimen/{id} untuk lab/PA.
  • imagingStudy dipakai untuk radiologi bila tersedia.

19. Rencana Perawatan (CarePlan dan CarePlanJadwalKontrol)

Tabel lokal: care_plan, care_plan_jadwal_kontrol.

Field wajib:

  • status, intent, category, title, description, subject, encounter, created, author.

Rules:

  • author memakai Practitioner/{id}.
  • Gunakan untuk rencana kontrol, perawatan lanjutan, atau rencana klinis lain.
  • Pastikan tanggal rencana tidak mendahului tanggal encounter.

20. Catatan Pengobatan (MedicationStatement)

Tabel lokal: medication_statement.

Field wajib:

  • status, category, medicationReference, subject, context, effectiveDateTime, dateAsserted, informationSource.

Field pendukung:

  • dosage, barang, group_racikan.

Rules:

  • Dipakai untuk pernyataan obat yang sedang/pernah dikonsumsi pasien.
  • medicationReference wajib mengarah ke Medication/{id}.

21. Respon Kuesioner (QuestionnaireResponse)

Tabel lokal: questionnaire_response.

Field wajib:

  • questionnaire, status, subject, encounter, authored, author, source, item.

Rules:

  • item harus mengikuti struktur pertanyaan dan jawaban questionnaire.
  • Gunakan untuk assessment berbasis form, skrining, atau registry.

22. Data Obat (Medication)

Tabel lokal: medication.

Field wajib:

  • identifier, code, status, form, ingredient.

Field pendukung:

  • manufacturer, batch, extension, barang, jenis, group_racikan, status_racikan.

Rules:

  • code harus memakai kode KFA bila obat sudah tersedia di KFA.
  • Untuk racikan, ingredient wajib lengkap dan proporsional.
  • Kirim Medication sebelum MedicationRequest, MedicationDispense, atau MedicationStatement.

23. Episode Perawatan (EpisodeOfCare)

Tabel lokal: eof; controller SIMGOS memakai nama EOF, resourceType dikirim sebagai EpisodeOfCare.

Field wajib:

  • identifier, status, type, patient/participant sesuai payload lokal, period, managingOrganization, statusHistory.

Rules:

  • Dipakai untuk episode perawatan yang menaungi satu atau lebih encounter.
  • managingOrganization wajib Organization/{id}.
  • Jika dipakai di Encounter, isi Encounter.episodeOfCare dengan EpisodeOfCare/{id}.

Resource Tambahan yang Sudah Ada di SIMGOS

Tabel lokal: consent.

Field wajib:

  • status, scope, category, patient, dateTime, organization, policyRule, provision.

Rules:

  • Dipakai untuk persetujuan pasien terkait akses/pertukaran data.
  • patient dan organization harus valid.
  • Pastikan alur persetujuan pasien di aplikasi sudah mengisi status consent sebelum transaksi dikirim.

25. Know Your Customer (KYC)

Route lokal: /kemkes/ihs/kyc. Dipakai untuk proses verifikasi identitas sesuai layanan SATUSEHAT.

Rules:

  • Jalankan setelah data pasien valid.
  • Simpan hasil verifikasi pada metadata pasien/consent sesuai implementasi lokal.

26. Coverage

Tabel lokal: coverage.

Field utama:

  • identifier, status, type, beneficiary, payor, subscriberId, class, penjaminId.

Rules:

  • Dipakai untuk informasi penjamin/asuransi.
  • beneficiary mengarah ke Patient/{id}.
  • Dapat direferensikan oleh billing atau medication request bila alur memerlukan insurance.

27. Account

Tabel lokal: account.

Field utama:

  • status, type, name, subject, owner, coverage, servicePeriod, description.

Rules:

  • Dipakai untuk akun/billing encounter.
  • subject biasanya Patient/{id}.
  • owner biasanya Organization/{id}.
  • coverage mengarah ke Coverage/{id} bila ada.

28. ChargeItem

Tabel lokal: charge_item.

Field utama:

  • status, code, subject, context, occurrencePeriod, performer, quantity, account.

Rules:

  • Dipakai untuk item tagihan tindakan/layanan.
  • context biasanya Encounter/{id}.
  • account mengarah ke Account/{id}.

29. Invoice

Tabel lokal: invoice.

Field utama lokal:

  • refId, id, tableId, send, sendDate.

Rules:

  • Pastikan semua ChargeItem/Account terkait sudah valid sebelum invoice.
  • Lengkapi implementasi payload sesuai kebutuhan billing yang diterapkan rumah sakit.

30. ServiceRequest Jadwal Kontrol

Tabel lokal: service_request_jadwal_kontrol; resourceType tetap ServiceRequest.

Rules:

  • Isi occurrenceDateTime sebagai tanggal kontrol.
  • Isi performer/locationReference untuk poli/ruangan tujuan.
  • reasonCode atau patientInstruction menjelaskan alasan kontrol.

31. ServiceRequest Perencanaan Rawat Inap

Tabel lokal: service_request_perencana_rawat_inap; resourceType tetap ServiceRequest.

Rules:

  • Isi rencana waktu rawat inap pada occurrenceDateTime atau occurrencePeriod.
  • Isi locationReference untuk ruangan tujuan bila sudah diketahui.
  • Gunakan reasonReference ke Condition/{id} bila rencana rawat inap karena diagnosis tertentu.

32. ServiceRequest Pemeriksaan EKG

Tabel lokal: service_request_pemeriksaan_ekg; resourceType tetap ServiceRequest.

Rules:

  • code harus kode pemeriksaan EKG yang sudah dimapping.
  • Hasilnya dikirim sebagai ObservationPemeriksaanEkg.

33. Observation Pemeriksaan EKG

Tabel lokal: observation_pemeriksaan_ekg; resourceType Observation.

Rules:

  • Isi basedOn ke ServiceRequest/{id} EKG.
  • Isi hasil tunggal di value... atau hasil multi-parameter di component.
  • performer adalah tenaga kesehatan/petugas pemeriksa.

34. Observation Faktor Risiko

Tabel lokal: observation_faktor_risiko; resourceType Observation.

Rules:

  • Pakai valueCodeableConcept untuk pilihan kategori risiko.
  • Pakai valueQuantity untuk skor/nilai numerik.
  • Harus terkait Encounter/{id} aktif.

35. Observation Riwayat Lainnya

Tabel lokal: observation_anamnesis_riwayat_lainnya; resourceType Observation.

Rules:

  • Pakai untuk riwayat merokok atau riwayat lain yang bukan diagnosis.
  • Gunakan kode observasi yang sesuai, lalu isi value sesuai jenis jawaban.

36. Observation Nutrisi

Tabel lokal: observation_nutrisi; resourceType Observation.

Rules:

  • Isi kode observasi nutrisi/antropometri sesuai mapping.
  • Hasil numerik memakai valueQuantity dengan satuan UCUM.

37. Observation Skor dan Assessment

Tabel lokal:

  • observation_penilaian_grace_risk_skor
  • observation_penilaian_skala_morse
  • observation_penilaian_skala_humpty_dumpty
  • observation_penilaian_epfra
  • observation_metode_penilaian_nyeri
  • observation_penilaian_nyeri

Rules:

  • Total skor dapat memakai valueInteger atau valueQuantity.
  • Detail item penilaian memakai component.
  • Jika ada metode penilaian dan nilai nyeri terpisah, hubungkan dengan hasMember atau derivedFrom sesuai payload.

38. Condition Keluhan Utama

Tabel lokal: keluhan_utama_condition; resourceType Condition.

Rules:

  • Isi category sebagai complaint/problem sesuai mapping.
  • code dapat memakai SNOMED CT atau kode lokal yang sudah dimapping.
  • Harus terkait Patient/{id} dan Encounter/{id}.

39. Condition Anamnesis

Tabel lokal: condition_anamnesis; resourceType Condition.

Rules:

  • Isi note untuk keterangan naratif bila tidak cukup direpresentasikan kode.
  • Isi recorder bila dicatat oleh tenaga kesehatan tertentu.

40. Condition Riwayat Penyakit Dahulu

Tabel lokal: condition_riwayat_penyakit_dahulu; resourceType Condition.

Rules:

  • Gunakan onsetAge atau onsetPeriod bila diketahui.
  • Verifikasi status harus sesuai, misalnya confirmed/unconfirmed sesuai data klinis.

41. Condition Hasil PA

Tabel lokal: condition_hasil_pa; resourceType Condition.

Rules:

  • Dipakai jika hasil Patologi Anatomi disimpulkan menjadi kondisi/diagnosis.
  • Hubungkan dengan DiagnosticReport/Observation PA melalui assessment bila payload mendukung.

42. Condition Penilaian Tumor

Tabel lokal: condition_penilaian_tumor; resourceType Condition.

Rules:

  • Isi kode dan staging tumor sesuai terminologi yang disediakan.
  • Gunakan bodySite dan severity/stage bila tersedia.

43. ClinicalImpression Anamnesis dan Diagnosa

Tabel lokal: clinical_impression_anamnesis, clinical_impression_diagnosa; resourceType ClinicalImpression.

Rules:

  • assessor wajib mengarah ke dokter/tenaga kesehatan.
  • problem/finding harus konsisten dengan Condition terkait.

44. CarePlan Jadwal Kontrol

Tabel lokal: care_plan_jadwal_kontrol; resourceType CarePlan.

Rules:

  • Isi rencana kontrol pada title dan description.
  • Hubungkan dengan Encounter kunjungan asal dan Practitioner pembuat rencana.

Endpoint Pendukung Non-Resource Klinis

45. FormRegistry

Route lokal: /kemkes/ihs/form-registry.

Rules:

  • Dipakai untuk registrasi/metadata form yang akan menghasilkan QuestionnaireResponse atau resource assessment lain.
  • Pastikan kode form, tipe form, dan relasi ke episode/encounter konsisten.
  • Jangan diperlakukan sebagai resource klinis pengganti; hasil pengisian tetap harus dikirim sebagai resource FHIR yang sesuai.

46. SSRM

Route lokal: /kemkes/ihs/ssrm.

Rules:

  • Dipakai sebagai endpoint pendukung modul SATUSEHAT di SIMGOS.
  • Periksa response endpoint ini untuk kebutuhan registrasi/sinkronisasi lokal sebelum mengirim resource klinis yang bergantung pada datanya.

47. Dashboard

Route lokal: /kemkes/ihs/dashboard.

Rules:

  • Dipakai untuk monitoring status antrean/kiriman SATUSEHAT.
  • Gunakan untuk mengecek resource yang masih send = 1, sudah berhasil, atau perlu perbaikan data.

48. SyncExecute dan Sinkronisasi

Route lokal:

  • /kemkes/ihs/sync/execute
  • /kemkes/ihs/sinkronisasi

Rules:

  • Dipakai untuk menjalankan antrean sinkronisasi/pengiriman.
  • Jalankan setelah master dan transaksi yang dibutuhkan sudah lengkap.
  • Jika terjadi error, perbaiki data sumber atau mapping terminologi, lalu set ulang antrean kirim sesuai mekanisme aplikasi.

Mapping Terminologi yang Harus Dirawat

SIMGOS memiliki endpoint dan tabel referensi untuk membantu mapping:

  • CodeReference dan TypeCodeReference: mapping status, category, intent, class, dan kode referensi FHIR.
  • Loinc: mapping parameter pemeriksaan/hasil ke LOINC.
  • TindakanToLoinc: mapping tindakan/pemeriksaan ke LOINC bila diperlukan.
  • ParameterHasilToLoinc: mapping parameter hasil laboratorium.
  • SnomedCt: mapping SNOMED CT.
  • KFA: pencarian/mapping produk obat.
  • POA, POV, BZA, BarangToPoaPov, BarangToBza: mapping produk farmasi lokal ke referensi obat.

Checklist mapping:

  • Diagnosis: ICD-10.
  • Tindakan: ICD-9-CM/SNOMED CT/LOINC sesuai use case.
  • Observasi dan hasil lab: LOINC.
  • Obat: KFA dan ingredient yang valid.
  • Satuan hasil/obat: gunakan satuan yang diterima, idealnya UCUM untuk nilai klinis.
  • Status/category/intent/class: pakai code system FHIR/SATUSEHAT yang sesuai.

Checklist Validasi Sebelum Kirim

  1. Organization, Location, Practitioner, dan Patient sudah punya id SATUSEHAT.
  2. Semua field referensi memakai format Resource/{id} dan ID tersebut benar-benar ada.
  3. Semua field JSON valid: tidak ada trailing comma, quote rusak, atau array/object yang tertukar.
  4. Tanggal/waktu sudah UTC +00 dan tidak lebih tua dari batas yang diizinkan use case.
  5. Kode terminologi sudah dimapping dan display sesuai.
  6. Encounter.status sesuai fase pelayanan.
  7. Jika Encounter.status = finished, diagnosis akhir sudah dikirim dan masuk Encounter.diagnosis.
  8. Resource obat memiliki Medication sebelum MedicationRequest/Dispense/Statement.
  9. Resource pemeriksaan memiliki ServiceRequest, Specimen, Observation, dan DiagnosticReport dalam urutan yang benar.
  10. Field lokal yang tidak dikirim seperti refId, send, sendDate, nopen, barang, group_racikan tidak dimasukkan ke payload FHIR kecuali memang dipakai controller.

Endpoint Lokal Penting

Pola endpoint SIMGOS berada di /kemkes/ihs/.... Contoh:

  • /kemkes/ihs/organization
  • /kemkes/ihs/location
  • /kemkes/ihs/practisioner
  • /kemkes/ihs/patient
  • /kemkes/ihs/encounter
  • /kemkes/ihs/condition
  • /kemkes/ihs/observation
  • /kemkes/ihs/procedure
  • /kemkes/ihs/composition
  • /kemkes/ihs/medication
  • /kemkes/ihs/medication/request
  • /kemkes/ihs/medication/dispanse
  • /kemkes/ihs/servicerequest
  • /kemkes/ihs/specimen
  • /kemkes/ihs/diagnosticreport
  • /kemkes/ihs/allergyintolerance
  • /kemkes/ihs/imagingstudy
  • /kemkes/ihs/questionnaireresponse
  • /kemkes/ihs/careplan
  • /kemkes/ihs/clinicalimpression
  • /kemkes/ihs/account
  • /kemkes/ihs/coverage
  • /kemkes/ihs/charge-item
  • /kemkes/ihs/invoice
  • /kemkes/ihs/sync/execute

Referensi Resmi

  • Dokumentasi FHIR SATUSEHAT: https://satusehat.kemkes.go.id/platform/docs/id/fhir/
  • Resource SATUSEHAT: https://satusehat.kemkes.go.id/platform/docs/id/fhir/resources/
  • Encounter: https://satusehat.kemkes.go.id/platform/docs/id/fhir/resources/encounter/
  • Condition: https://satusehat.kemkes.go.id/platform/docs/id/fhir/resources/condition/
  • Observation: https://satusehat.kemkes.go.id/platform/docs/id/fhir/resources/observation/
  • Endpoint SATUSEHAT: https://satusehat.kemkes.go.id/platform/docs/id/postman-workshop/endpoint-information/