init: tested on hangtuah to cloud
This commit is contained in:
134
README.md
134
README.md
@@ -1,3 +1,135 @@
|
||||
# pydicom-migrasi-clarity
|
||||
|
||||
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
|
||||
## 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
|
||||
|
||||
### 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. **Find-Studies** - Hanya mencari studi berdasarkan rentang tanggal:
|
||||
```bash
|
||||
python main.py find-studies --start-date 20250501 --end-date 20250502
|
||||
```
|
||||
|
||||
3. **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
|
||||
```
|
||||
|
||||
4. **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
|
||||
```
|
||||
Reference in New Issue
Block a user