Comments (2)
from dicom-rs.
Thank you for your well informed feedback, @qarmin! I can comment on the two points in particular, but the short version is that I not only agree that the library APIs can be extended with better abstractions for building high level DICOM software, it is also in my plans to have them in the project.
dicom-findscu
currently only exists as a command line tool, but it definitely makes sense for it to also incorporate a library.dicom-dump
went through the process of starting out only as a tool, and now it is also a library (that is even used infindscu
!). One of the reasons for this is that such a library would depend on the constructs for building full-fleshed SCUs and SCPs, which are still in their infancy.- A good portion of the code bloat found in the tool is due to having to work with lower level abstractions. Creating a DICOM object representing the command needs to be done manually (including the command group length¹, which admittedly is an error-prone process) and encoded into a PDU, so that it can be sent through the client association. This appears to have been better streamlined in Pynetdicom, which already offers common presentation contexts by name, a
send_c_find
method, and a function to turn command-line arguments into data sets³.
Not having to wait for the aforementioned abstractions for creating DICOM network application entities meant that the project could have a proof of concept sooner, and from which further work and design decisions could be made. With that said, a better direction for developers to embed SCUs in their own software should indeed be made moving forward.
This does not quite have to do with the lack of modularity in the project, but with missing pieces in these modules which need time and effort to develop. I have not had much of these two lately, and attracting contributors to close these tasks is one of the open challenges, but we will get there! I can try to split the feedback into separate issues in the meantime. See also the project roadmap.
Addendum: In DICOM-rs 0.6.0, a few things were introduced that make some of these things a bit easier:
¹ Constructing command objects is a bit easier using InMemDicomObject::command_from_element_iter
: #365
² Constants to standard UIDs are now available in dicom-dictionary-std
: #372
³ The operations API is already used in the latest version of dicom-findscu
in order to let the user specify more complex queries (#326)
from dicom-rs.
Related Issues (20)
- Adding private data elements (with creator) HOT 4
- dicom-transfer-syntax-registry does not build on Windows by default HOT 1
- Extended offset table support
- Support for multiple character repertoires (extended character sets) HOT 1
- Could not compile openjp2 HOT 10
- Issue when trying to open a DICOM file. HOT 2
- DICOM naive datetime retrieval HOT 6
- Latest version fails to build for android HOT 5
- Unusual Image Generation from RLE DICOM Files HOT 4
- Wrong VR assumed when reading pixel padding in Implicit VR dataset
- to_dynamic_image method not found in `DecodedPixelData<'_>` HOT 10
- Support resolving BulkDataURIs
- Non-deterministic behavior in dicom-storescu function check_presentation_contexts HOT 10
- Starting the discussion on async support HOT 3
- Storescp promiscuous mode HOT 1
- ERROR dicom_findscu: status code from response is missing HOT 3
- Very slow association with invalid adresses - Need to use custom timeout during connecting HOT 1
- Disable feature 'jpeg2k' in dicom-transfer-syntax-registry HOT 2
- DICOM Files with Large Number of Frames HOT 4
- Version of openjp2 causing issue in new projects HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dicom-rs.