{"id":25963573,"url":"https://github.com/mahmoudnasser1561/dicom","last_synced_at":"2025-06-19T01:38:23.201Z","repository":{"id":280401012,"uuid":"941867088","full_name":"mahmoudnasser1561/DICOM","owner":"mahmoudnasser1561","description":"deploy three Orthanc servers and  can be increased to send DICOM data to them  ,log their metrics and Ispect them using REST API","archived":false,"fork":false,"pushed_at":"2025-03-07T00:51:21.000Z","size":3978,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-03T09:17:46.472Z","etag":null,"topics":["bash","dicom-images","docker","python3","rest-api"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mahmoudnasser1561.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-03T07:23:48.000Z","updated_at":"2025-04-16T15:04:17.000Z","dependencies_parsed_at":"2025-03-03T08:38:44.118Z","dependency_job_id":null,"html_url":"https://github.com/mahmoudnasser1561/DICOM","commit_stats":null,"previous_names":["mahmoudnasser1561/dynamicdicomrouter","mahmoudnasser1561/dicom"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mahmoudnasser1561/DICOM","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mahmoudnasser1561%2FDICOM","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mahmoudnasser1561%2FDICOM/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mahmoudnasser1561%2FDICOM/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mahmoudnasser1561%2FDICOM/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mahmoudnasser1561","download_url":"https://codeload.github.com/mahmoudnasser1561/DICOM/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mahmoudnasser1561%2FDICOM/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260665108,"owners_count":23044265,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","dicom-images","docker","python3","rest-api"],"created_at":"2025-03-04T20:47:11.861Z","updated_at":"2025-06-19T01:38:18.186Z","avatar_url":"https://github.com/mahmoudnasser1561.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Transfer DICOM\n### description:\n* A project to set up three Orthanc DICOM servers\n* DICOM C-STORE SCP Client to send DICOM data to those servers\n\n  ![diagram modified](https://github.com/user-attachments/assets/25dff47c-f87e-49bf-a0fd-e6bc32b9a36c)\n\n### structure :\n```bash\n├── data\n│   ├── generate.py\n│   ├── test.dcm\n│   └── test_template.json\n├── media\n│   ├── diagram modified.png\n│   ├── DICOM_Instances.png\n│   ├── sending_to_servers.png\n│   └── specific_Instance.png\n├── README.md\n├── requirements.txt\n├── send.py\n└── servers\n    ├── orthanc1.json\n    ├── orthanc2.json\n    ├── orthanc3.json\n    └── start_servers.sh\n```\n\n### Features:\n* Deploys multiple Orthanc servers (ORTHANC1, ORTHANC2, ORTHANC3) using custom JSON configurations.\n* A Python client (using pynetdicom) sends DICOM files to multiple servers.\n* Uses REST API queries to inspect stored DICOM instances.\n\n### how it works:\n* run file - `./servers/start_servers.sh`\n* then login to the orthanc servers\n* - **Orthanc Servers:**\n  - `ORTHANC1` → [http://localhost:8042](http://localhost:8042)\n  - `ORTHANC2` → [http://localhost:8043](http://localhost:8043)\n  - `ORTHANC3` → [http://localhost:8044](http://localhost:8044)\n  - orthanc:orthanc\n \n* **feel free to modify json configurations to launch Orthanc servers on which free ports you have on your machine**\n\n### Interaction with the servers:\n* first you need to genrate DICOM Images (.dcm)\n* you can use ./data/generate.py to genrate dummy dcm Images but missing metadata will make requests fail\n* so I got some actual dcm data from [cancerimagingarchive](https://www.cancerimagingarchive.net/)\n* you can use that data ./data/T1_TRA_SE-69134\n* **now we are ready to send some DICOM to Orthanc servers**\n\n### Interacting with Orthanc servers\n* run the file send.py after configuring data paths to send some DICOM\n* ![sending_to_servers](https://github.com/user-attachments/assets/f9dda8db-259f-4983-847c-d9c8120d5714)\n* status (0000) !success\n\n### Uses REST API queries to inspect stored DICOM instances and query your servers.\n![DICOM_Instances](https://github.com/user-attachments/assets/58812ef9-81df-41c3-98a4-ac6ddab6d574)\n* Inspecting DICOM Instances on a specific server\n\n![specific_Instance](https://github.com/user-attachments/assets/755a6091-1121-4e5a-bc1f-fafece141580)\n* Inspecting a specific DICOM Instance   \n\n## Limitations\n\n- The infrastructure currently sends DICOM data to every Orthanc server without differentiation.\n- No load balancing mechanism is implemented, leading to potential inefficiencies.\n- There is no monitoring or status tracking for each Orthanc server.\n- Security measures are minimal, making the system vulnerable to unauthorized access.\n- No redundancy or failover mechanism in case a server goes down.\n\n## Next Steps\n\n- Implement a load balancing mechanism to distribute DICOM data efficiently.\n- Introduce a health-check system to monitor the state of each Orthanc server.\n- Enhance security by configuring authentication, encryption, and access control.\n- Add logging and monitoring tools for better observability and debugging.\n- Explore data replication or federation between servers to ensure consistency.\n- Automate deployment and scaling using container orchestra\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmahmoudnasser1561%2Fdicom","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmahmoudnasser1561%2Fdicom","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmahmoudnasser1561%2Fdicom/lists"}