DICOM Router Terakhir disunting pada 27 September 2023

Penjelasan DICOM Router

DICOM Router merupakan penghubung antara Picture Archiving and Communication System dengan Dicom Store. DICOM Router merupakan engine (backend service) yang digunakan sebagai penghubung antara sistem di suatu Rumah Sakit ke SATUSEHAT terkait dengan file DICOM. Pada DICOM Router terdapat Accession Number yang merupakan nomor untuk mengidentifikasi urutan permintaan/order dari study. Nomor ini selalu unik untuk setiap permintaan yang di fasyankes tersebut.

Arsitektur

Diagram DICOM Router

Berikut ilustrasi arsitektur DICOM Router secara umum :

Diagram DICOM Router

Berdasarkan ilustrasi di atas dapat dijelaskan sebagai berikut :

DICOM Router yang sudah berjalan sebelumnya selalu melakukan listening terhadap event C-STORE tadi, sehingga otomatis file DICOM dari Modality tadi diproses oleh DICOM Router, dan disimpan sementara untuk kemudian akan diproses lebih lanjut.

  1. DICOM Router menerima file DICOM dari Modality atau PACS yang telah didefinisikan sebelumnya, melalui event C-STORE, lalu menyimpannya dalam direktori internal dari aplikasi DICOM Router.

  2. DICOM Router akan menyimpan dan mengekstrak data dari file DICOM, terutama terkait Accession Number, karena proses ini merupakan step penting untuk bisa masuk ke tahap selanjutnya, kemudian data tersebut disimpan dalam database internal.

  3. DICOM Router melakukan pengecekan resource ServiceRequest ke SATUSEHAT dengan Accession Number yang telah didapatkan dari proses ekstrak file DICOM yang telah diterima sebelumnya. Jika sukses, maka melakukan proses selanjutnya, jika gagal maka kembali mengulang proses dari awal.

  4. Langkah selanjutnya adalah membuat resource ImagingStudy dari data yang didapatkan dari langkah-langkah sebelumnya.

  5. Kemudian resource ImagingStudy yang sudah dibuat dikirimkan ke SATUSEHAT. Jika sukses, maka melakukan proses selanjutnya, jika gagal maka kembali mengulang proses dari awal.

  6. Unggah file DICOM ke SATUSEHAT DICOM Store. Jika sukses, maka melakukan proses selanjutnya, jika gagal maka kembali mengulang proses dari awal.

  7. Jika semua proses di atas berhasil, maka data dan file DICOM terkait akan dihapus dari penyimpanan sementara.

  8. Proses selesai dan DICOM Router kembali idle.

Untuk alur DICOM Router (PACS + MWL) sebagai berikut :

Flow dengan PACS dan MWL

Berdasarkan alur di atas dapat dijelaskan sebagai berikut :

  1. SIMRS/SIMPUS melakukan order ke MWL (Modality Worklist) dan MWL melakukan return status.

  2. SIMRS/SIMPUS melakukan (POST) ServiceRequest ke SATUSEHAT menggunakan Accession Number sebagai identifier.

  3. SATUSEHAT mengirim response berupa ServiceRequest ID ke SIMRS/SIMPUS.

  4. Modality mendapatkan order dari MWL.

  5. MWL mengirimkan kembali order ke Modality.

  6. Setelah mendapatkan gambar, Modality akan mengirimkan hasil berupa DICOM file ke PACS.

  7. PACS mengirimkan DICOM file ke DICOM Router.

  8. DICOM Router mengirimkan DICOM file ke DICOM Store (melalui API Gateway).

  9. DICOM Store melakukan return status ke DICOM Router.

  10. DICOM Router melakukan (POST) terhadap resource ImagingStudy ke SATUSEHAT, basedOn: created ServiceRequest

  11. SATUSEHAT mengembalikan ImagingStudy ID ke DICOM Router.

  12. SIMRS/SIMPUS melakukan (POST) resource Observation dan DiagnosticReport basedOn created ServiceRequest.

  13. SATUSEHAT mengembalikan Observation ID dan DiagnosticReport ID ke SIMRS/SIMPUS.

Sedangkan alur untuk DICOM Router (tanpa MWL) sebagai berikut :

Flow dengan PACS

Berdasarkan alur di atas dapat dijelaskan sebagai berikut :

  1. SIMRS/SIMPUS melakukan order ke DICOM Router dan DICOM Router akan melakukan return status.

  2. SIMRS/SIMPUS melakukan (POST) ServiceRequest ke SATUSEHAT menggunakan Accession Number sebagai identifier.

  3. SATUSEHAT mengirim response berupa ServiceRequest ID ke SIMRS/SIMPUS.

  4. Modality mendapatkan order dari DICOM Router.

  5. DICOM Router mengirimkan kembali order ke Modality.

  6. Setelah mendapatkan gambar, Modality akan mengirimkan hasil berupa DICOM file ke DICOM Router

  7. DICOM Router mengirimkan DICOM file ke DICOM Store (melalui API Gateway).

  8. DICOM Store melakukan return status ke DICOM Router.

  9. DICOM Router melakukan (POST) terhadap resource ImagingStudy ke SATUSEHAT, basedOn: created ServiceRequest

  10. SATUSEHAT mengembalikan ImagingStudy ID ke DICOM Router.

  11. SIMRS/SIMPUS melakukan (POST) resource Observation dan DiagnosticReport basedOn created ServiceRequest.

  12. SATUSEHAT mengembalikan Observation ID dan DiagnosticReport ID ke SIMRS/SIMPUS.

Resource FHIR terkait pada DICOM Router

Resource ImagingStudy

Pengiriman informasi hasil radiologi dalam format DICOM akan dikirimkan oleh DICOM Router. Setelah mendapatkan file DICOM, DICOM Router akan mengirimkan file tersebut ke DICOM Store. DICOM Store akan mengembalikan response status yang nantinya dapat digunakan untuk melihat hasil pencitraan yang telah tersimpan di DICOM Store. DICOM Router kemudian akan melakukan POST informasi terkait DICOM melalui resource ImagingStudy ke SATUSEHAT. SATUSEHAT akan merespon dengan mengembalikan ImagingStudy.id ke DICOM Router. ImagingStudy.id ini perlu disimpan dan nantinya akan direferensikan ketika melakukan pengiriman data bacaan atau ekspertise dari hasil pemeriksaan radiologi.

Kebutuhan Sistem dan Instalasi Router

Untuk dapat menjalankan DICOM, perlu dilakukan proses instalasi Router, berikut merupakan langkah-langkah yang harus dilakukan untuk menjalankan DICOM :

  1. Proses Unduh dan Instalasi ekosistem Anaconda :

    1. Unduh ekosistem Anaconda melalui link berikut ini: https://www.anaconda.com/products/distribution

    2. Jika sudah, lakukan proses instalasi terhadap ekosistem Anaconda tersebut.

  2. Proses setup DICOM Router :

    1. Lakukan proses clone project DICOM Router melalui GitLab.

    2. Jika sudah, masuk ke dalam direktori/folder di mana DICOM Router tersimpan.

    3. Buka file Router.conf, kemudian lakukan konfigurasi untuk target endpoint pada bagian url.

    4. Masukkan ID Organization, Client Key, dan Secret Key sesuai nama variabelnya pada file Router.conf. Jika tidak memiliki akses, silahkan ajukan akses terlebih dahulu di Developer Portal untuk memperoleh data tersebut.

    5. Simpan perubahan pada file Router.conf, kemudian buka console/terminal/command di mana file tersebut berada, lalu ketik perintah berikut:

      conda env create -n dicom-router -f conda.yml
  3. Menjalankan DICOM Router :

    1. Lakukan aktivasi pada Anaconda Environment melalui terminal dengan perintah:

      conda activate dicom-router
    2. Jalankan microservices utama dengan perintah:

      python main.py -v
      Program tersebut tidak berjalan pada sebagai background app. Untuk menjalankan program pada background app dapat menggunakan aplikasi nohup atau screen.
    3. Pada sistem operasi Windows perlu diperhatikan bahwa jendela terminal tidak boleh tertutup.