144 lines
4.3 KiB
Markdown
144 lines
4.3 KiB
Markdown
# 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
|
|
``` |