https://github.com/mahmoudnasser1561/dicom
deploy three Orthanc servers and can be increased to send DICOM data to them ,log their metrics and Ispect them using REST API
https://github.com/mahmoudnasser1561/dicom
bash dicom-images docker python3 rest-api
Last synced: about 1 year ago
JSON representation
deploy three Orthanc servers and can be increased to send DICOM data to them ,log their metrics and Ispect them using REST API
- Host: GitHub
- URL: https://github.com/mahmoudnasser1561/dicom
- Owner: mahmoudnasser1561
- Created: 2025-03-03T07:23:48.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-03-07T00:51:21.000Z (over 1 year ago)
- Last Synced: 2025-06-03T09:17:46.472Z (about 1 year ago)
- Topics: bash, dicom-images, docker, python3, rest-api
- Language: Python
- Homepage:
- Size: 3.79 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Transfer DICOM
### description:
* A project to set up three Orthanc DICOM servers
* DICOM C-STORE SCP Client to send DICOM data to those servers

### structure :
```bash
├── data
│ ├── generate.py
│ ├── test.dcm
│ └── test_template.json
├── media
│ ├── diagram modified.png
│ ├── DICOM_Instances.png
│ ├── sending_to_servers.png
│ └── specific_Instance.png
├── README.md
├── requirements.txt
├── send.py
└── servers
├── orthanc1.json
├── orthanc2.json
├── orthanc3.json
└── start_servers.sh
```
### Features:
* Deploys multiple Orthanc servers (ORTHANC1, ORTHANC2, ORTHANC3) using custom JSON configurations.
* A Python client (using pynetdicom) sends DICOM files to multiple servers.
* Uses REST API queries to inspect stored DICOM instances.
### how it works:
* run file - `./servers/start_servers.sh`
* then login to the orthanc servers
* - **Orthanc Servers:**
- `ORTHANC1` → [http://localhost:8042](http://localhost:8042)
- `ORTHANC2` → [http://localhost:8043](http://localhost:8043)
- `ORTHANC3` → [http://localhost:8044](http://localhost:8044)
- orthanc:orthanc
* **feel free to modify json configurations to launch Orthanc servers on which free ports you have on your machine**
### Interaction with the servers:
* first you need to genrate DICOM Images (.dcm)
* you can use ./data/generate.py to genrate dummy dcm Images but missing metadata will make requests fail
* so I got some actual dcm data from [cancerimagingarchive](https://www.cancerimagingarchive.net/)
* you can use that data ./data/T1_TRA_SE-69134
* **now we are ready to send some DICOM to Orthanc servers**
### Interacting with Orthanc servers
* run the file send.py after configuring data paths to send some DICOM
* 
* status (0000) !success
### Uses REST API queries to inspect stored DICOM instances and query your servers.

* Inspecting DICOM Instances on a specific server

* Inspecting a specific DICOM Instance
## Limitations
- The infrastructure currently sends DICOM data to every Orthanc server without differentiation.
- No load balancing mechanism is implemented, leading to potential inefficiencies.
- There is no monitoring or status tracking for each Orthanc server.
- Security measures are minimal, making the system vulnerable to unauthorized access.
- No redundancy or failover mechanism in case a server goes down.
## Next Steps
- Implement a load balancing mechanism to distribute DICOM data efficiently.
- Introduce a health-check system to monitor the state of each Orthanc server.
- Enhance security by configuring authentication, encryption, and access control.
- Add logging and monitoring tools for better observability and debugging.
- Explore data replication or federation between servers to ensure consistency.
- Automate deployment and scaling using container orchestra