# 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 ```bash 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 ```bash # Untuk Linux python3.9 -m venv venv # Untuk Windows python -m venv venv ``` ### 2. Mengaktifkan Virtual Environment ```bash # Untuk Linux source venv/bin/activate # Untuk windows venv/Scripts/activate ``` ### 3. Menginstall Dependensi ```bash pip install -r requirements.txt ``` ## Konfigurasi PACS **Sesuaikan `SOURCE_PACS` dan `DESTINATION_PACS` pada `config/settings.py`** ## Cara Menjalankan Aplikasi ### Aktifkan venv ```bash source /home/pacs/pydicom-migrasi-clarity/venv/bin/activate ``` ### Contoh Penggunaan Umum Untuk migrasi data harian baru: ```bash 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): ```bash python main.py process --start-date 20250501 --end-date 20250502 ``` 2. **Process-Study** - Menjalankan alur kerja lengkap untuk studi tertentu: ```bash 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: ```bash python main.py find-studies --start-date 20250501 --end-date 20250502 ``` 4. **Get-Study** - Mengambil studi tertentu berdasarkan StudyInstanceUID: ```bash 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: ```bash 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: ```bash deactivate ```