pydicom-migrasi-clarity
Tujuan Proyek
Aplikasi ini dibuat untuk melakukan migrasi data PACS dari sistem Clarity ke ABPACS dengan proses sebagai berikut:
- Melakukan pencarian studi DICOM menggunakan FindSCU berdasarkan tanggal
- Mengambil data DICOM lengkap menggunakan GetSCU untuk setiap StudyIUID yang ditemukan
- Mengirim data DICOM ke ABPACS menggunakan StoreSCU
- Mengirim data ke API HIS2 untuk mengisi pacs_result_series
- Mencatat seluruh proses dalam log terstruktur
Alur Kerja Detail
Aplikasi ini menggunakan pendekatan berbasis Python murni dengan bantuan library pynetdicom. Berikut tahapan detail proses:
-
Pencarian (FindSCU):
- Mencari studi berdasarkan rentang tanggal (StudyDate)
- Mengekstrak metadata penting seperti StudyInstanceUID, AccessionNumber, PatientID
- Menyimpan hasil pencarian dalam format JSON
-
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
-
Pengiriman (StoreSCU):
- Mengirim data DICOM yang diunduh ke server ABPACS
- Melacak status pengiriman dan menangani error atau kegagalan
- Menghapus data DICOM setelah pengiriman berhasil
-
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:
-
Process - Menjalankan alur kerja lengkap (pencarian, pengambilan, pengiriman):
python main.py process --start-date 20250501 --end-date 20250502 -
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 -
Find-Studies - Hanya mencari studi berdasarkan rentang tanggal:
python main.py find-studies --start-date 20250501 --end-date 20250502 -
Get-Study - Mengambil studi tertentu berdasarkan StudyInstanceUID:
python main.py get-study --study-uid 1.2.826.1.3680043.9.5282.150415.30338.202504010001 -
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 aplikasilogs/: Menyimpan log operasi dan hasil pengirimanoutput/: Tempat menyimpan hasil DICOM dan file JSONservices/: 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