pydicom-migrasi-clarity

Tujuan Proyek

Aplikasi ini dibuat untuk melakukan migrasi data PACS dari sistem Clarity ke ABPACS dengan proses sebagai berikut:

  1. Melakukan pencarian studi DICOM menggunakan FindSCU berdasarkan tanggal
  2. Mengambil data DICOM lengkap menggunakan GetSCU untuk setiap StudyIUID yang ditemukan
  3. Mengirim data DICOM ke ABPACS menggunakan StoreSCU
  4. Mengirim data ke API HIS2 untuk mengisi pacs_result_series
  5. Mencatat seluruh proses dalam log terstruktur

Alur Kerja Detail

Aplikasi ini menggunakan pendekatan berbasis Python murni dengan bantuan library pynetdicom. Berikut tahapan detail proses:

  1. Pencarian (FindSCU):

    • Mencari studi berdasarkan rentang tanggal (StudyDate)
    • Mengekstrak metadata penting seperti StudyInstanceUID, AccessionNumber, PatientID
    • Menyimpan hasil pencarian dalam format JSON
  2. Pengambilan (GetSCU):

    • Mengunduh seluruh data DICOM untuk setiap StudyInstanceUID yang ditemukan
    • Menyimpan data DICOM dalam struktur direktori terorganisir
    • Data disimpan sementara dan dihapus otomatis setelah pengiriman
  3. Pengiriman (StoreSCU):

    • Mengirim data DICOM yang diunduh ke server ABPACS
    • Melacak status pengiriman dan menangani error atau kegagalan
    • Menghapus data DICOM setelah pengiriman berhasil
  4. Integrasi HIS:

    • Mengirim metadata DICOM ke API HIS2
    • Memastikan informasi studi dan series tersimpan di sistem HIS
    • Menyimpan log hasil komunikasi dengan sistem HIS

Persyaratan

  • Python 3.9
  • Pustaka Python utama:
    • pydicom
    • pynetdicom
    • requests
    • python-dateutil
    • retry
  • Akses jaringan ke server PACS sumber dan tujuan

Cara Mengkloning Repositori

git clone https://devone.aplikasi.web.id/gitea/mario/pydicom-migrasi-clarity.git
cd pydicom-migrasi-clarity

Instalasi dengan Virtual Environment

1. Membuat Virtual Environment

# Untuk Linux
python3.9 -m venv venv

# Untuk Windows
python -m venv venv

2. Mengaktifkan Virtual Environment

# Untuk Linux
source venv/bin/activate

# Untuk windows
venv/Scripts/activate

3. Menginstall Dependensi

pip install -r requirements.txt

Konfigurasi PACS

Sesuaikan SOURCE_PACS dan DESTINATION_PACS pada config/settings.py

Cara Menjalankan Aplikasi

Aktifkan venv

source /home/pacs/pydicom-migrasi-clarity/venv/bin/activate

Contoh Penggunaan Umum

Untuk migrasi data harian baru:

python main.py process --start-date 20250507 --end-date 20250507

Perintah pendukung yang Tersedia

Program ini mendukung beberapa mode operasi:

  1. Process - Menjalankan alur kerja lengkap (pencarian, pengambilan, pengiriman):

    python main.py process --start-date 20250501 --end-date 20250502
    
  2. Process-Study - Menjalankan alur kerja lengkap untuk studi tertentu:

    python main.py process-study --study-uid 1.2.826.1.3680043.9.5282.150415.30338.202504010001
    
  3. Find-Studies - Hanya mencari studi berdasarkan rentang tanggal:

    python main.py find-studies --start-date 20250501 --end-date 20250502
    
  4. Get-Study - Mengambil studi tertentu berdasarkan StudyInstanceUID:

    python main.py get-study --study-uid 1.2.826.1.3680043.9.5282.150415.30338.202504010001
    
  5. Send-Study - Mengirim studi tertentu ke PACS tujuan:

    python main.py send-study --study-uid 1.2.826.1.3680043.9.5282.150415.30338.202504010001
    

Parameter Umum

  • --start-date: Tanggal awal pencarian dalam format YYYYMMDD
  • --end-date: Tanggal akhir pencarian dalam format YYYYMMDD
  • --study-uid: StudyInstanceUID untuk operasi pada satu studi
  • --series-uid: SeriesInstanceUID untuk operasi pada satu seri
  • --skip-existing: Lewati studi yang sudah memiliki log (untuk melanjutkan proses yang terhenti)

Struktur Direktori

  • config/: Berisi file konfigurasi aplikasi
  • logs/: Menyimpan log operasi dan hasil pengiriman
  • output/: Tempat menyimpan hasil DICOM dan file JSON
  • services/: Modul-modul untuk operasi DICOM (finder, retriever, sender)
  • utils/: Fungsi-fungsi pembantu dan utilitas

Troubleshooting

Jika menemui masalah, silakan periksa file log di direktori logs/ untuk informasi lebih detail.

Untuk menonaktifkan virtual environment setelah selesai:

deactivate
Description
Untuk migrasi PACS Clarity ke ABPACS dengan cara: FindSCU by date, GetSCU for each StudyIUID found, StoreSCU to ABPACS, then send API to HIS2 to fill pacs_result_series
Readme 459 KiB
Languages
Python 100%