Files | Admin

Notes:

Release Name: 0.7

Notes:
This release features a host of small improvements to DICOM object handling, networking and anonymization.
It might not be a breathtaking new release with respect to major features, but with its collection
of small but useful improvements across the board, this should prove a very useful release to users of Ruby DICOM.

First of all, the networking code has been stabilized greatly. Whereas in the previous
version of Ruby DICOM the networking was highly experimental, and turned out to fail
in some cases, extensive testing since then has led to a much improved and stable networking code.
You should now be able to use the Ruby DICOM network code, both client and server side,
and the chances are it will work perfectly fine for you.

The DObject class has gained alot of new features in this version. First of all, image handling has been improved:
In addition to the methods which retrieve image data to RMagick and NArray objects, another
method has been added to retrieve the image data to a standard Ruby Array.
Complementary methods for writing image data back to the DICOM object for NArray/Ruby Array objects
has also been added. Furthermore, the DObject class will now automatically rescale the image data
from pixel values to presentation values for you through the use of the :rescale option
(This is based on the window level/width tags in the DICOM object).

Outside image processing, the DObject class has also received a few other abilities that should be of interest:
-The method remove_private removes all private Data Elements in the DObject.
-Removing a sequence or item will now also remove ALL children of that particular sequence/item!
-The set_value method now allows you to update or even create new Data Elements
inside sequences/items through the :parent option.

Not to forget, the Anonymizer class has received a bit of love too: It has gained the ability
to remove all private tags in DICOM files (you never know what might be hiding in those private tags, right?).
In addition there has been a couple of bugfixes, some cleanup and improved status messages.

Other than that, the gem itself has become more 'professional' as of this release.
It is now structurally buildt according to gem guidelines, with the gem's Ruby files moved
to its own sub-folder to avoid any naming conflicts. A module version string and name
has also been implemented. Another nice improvement is the fact that you dont have to worry
about loading the DLibrary anymore: This is handled by the gem itself when you load it by require 'dicom'.

I feel that as of this release, I am finally able to do everything that I would like to with DICOM files,
whether it be object manipulation or network transmission. I hope that you will find it equally useful!

Existing users please beware that some methods/attributes/options have been renamed
in this release or seen a behavioural change. Please see the CHANGELOG & DOCUMENTATION for details,
and test your existing scripts thoroughly. If you do encounter any issues, please do not hesitate to report them!


Changes: = 0.7 === 28th February, 2010 * Added set_image() and set_image_narray() methods to write pixel data to the DICOM object, complementing set_image_magick(). * Added method get_image() which retrieves pixel data to a standard Ruby Array. * Added a method for removing all private data elements in the DICOM object. * Anonymizer class has gained the ability to remove all private data elements when anonymizing. * Fixed an issue where Anonymizer failed to anonymize tags which had multiple instances in a DICOM file. * Fixed an issue where Anonymizer failed to honor an expception folder if it ended with a file separation character. * Private data elements can now be added to a DICOM object. * Created a new FileHandler class where the user can customize the way incoming DICOM files are handled in DServer. * Methods set_image_narray() and set_image_magick() takes options :min and :max to rescale pixel values. * The magick and narray image retrieval methods now takes the option :rescale to convert pixel values to presentation values. * Method get_pos() now takes the option :parent to narrow a search down. * Improved the set_value() method to handle the creation of data elements inside sequences/items. * All DObject methods who return Data Element positions now return an empty array instead of false if no matches are found. * Improved handling of private tags in the library. * Network transmissions with implicit encoding are now handled properly. * Improved the handling of associations in the networking code. * Some minor formatting improvements to the print() method. * Improve the logic of updating group/sequence/item lengths to handle changes to Data Elements in sequence hierarchies. * DLibrary class is permanently loaded when the gem is loaded and no longer needs to be specified by the user. * Method get_image_magick() now handles pixel representation and window leveling. * Program files was moved to a sub-directory and a module version string added, in accordance with gem guidelines. * Renamed DObject attribute :types to :vr in accordance with the terminology of the official DICOM standard. * Renamed method get_raw() to get_bin() and attribute :raw to :bin. * Renamed get_pos() option :array to :selection. * Updated Dictionary in accordance with the 2009 version of the official DICOM base standard. * Various "under the hood" improvements and code cleanups. = 0.6.1 === 23rd August, 2009 * Fixed a bug (introduced in version 0.6) where the creation of new data elements caused an error. * Fixed a bug (introduced in version 0.6) where compressed pixel data were no longer detected correctly. * Fixed a bug where writing a DICOM file with no path prefix failed. * Fixed a bug where creating a new data element in a DICOM file with tag hierarchies gave an invalid DICOM file. * Fixed a bug where retrieving a RMagick image from DICOM files containing two sets of image data failed. = 0.6 === 13th August, 2009 * Complete rewrite of encoding/decoding to reduce code duplication and simplify the code. * General optimizations to improve speed and reduce code complexity. * Rewrote Dictionary to use Hash instead of Array. This has significantly improved the read spead of the library. * Ruby DICOM now automatically strips away trailing whitespace when decoding string values. * Introducing basic, experimental network functionality. * The new DClient class enables features such as query, move and send. * The new DServer class presents the ability to set up a simple storage server (Service Class Provider). = 0.5 === 4th May, 2009 * Several small changes have been made to achieve compatibility with both Ruby versions 1.8 and 1.9. * Implemented a change in syntax for several methods with a goal of simplification. * Implemented a change in syntax for some methods, variables and messages in order to better match the terminology used in the official DICOM documents. * Added a new attr_reader :errors, an array that holds any warnings issued during your interaction with DObject. * DObject has received new attr_readers for the arrays holding information on the DICOM object. See documentation for details. * Several methods have been cleaned up, making execution in some cases somewhat snappier. * Several methods have been made more robust. * Added new option :partial to the get_pos() method, which will enable search for partial string matches. * Added new option :array to the get_value() and get_raw() methods which enables easy extraction of multiple values of a given tag to an array (relevant for tags present at multiple places in a DICOM file). * Fixed a bug where exception folders where ignored in the Anonymizer class. = 0.4 === 3rd February, 2009 * Change of syntax: Options are now supplied as hash. * Method below() renamed to children(). * Added method parents() which returns the position of all items/sequences that are the parent of the specified tag. This method is only relevant for DICOM tags that exist inside a hierarchy. * Simplified the code in class Dictionary: load time is ~ 40 times faster! * Improved the code in class DRead: average read time is reduced by ~ 15 %. * Improved support for Big Endian DICOM files. * Added support for the "FL" (floating point single) value representation. * Fixed a small bug with tag 0028,3006 in Dictionary. * New method image_to_file() which makes it even easier than before to dump the DICOM pixel data to file. * Introducing DWrite class which enables writing DICOM objects to file. * Added several methods in DObject class to take advantage of write capability: remove_tag() set_value() set_image_magick() set_image_file() write_file() * Introducing the Anonymizer class, which takes advantage of the new write capability in Ruby DICOM to offer a fairly powerful and customizable tool for anonymizing your DICOM files. = 0.3 === 12th October, 2008 * The DRead class is now able to keep track of the position of the tags inside the hierarchy of sequences and items. * DObject class has seen a number of improvements to allow taking advantage of this hierarchy awareness: * Method get_pos() now can take an array of positions as an argument when searching for tags, meaning it will only search for hits amongst the positions provided. * Method print() has been improved with new options to visualize the tree structure of the DICOM file. * Method print() is able to print to file as well. The text file will be put in the same folder as the DICOM file. * New method below(), which lets you specify a sequence or item, and this method will return the position of all tags contained in this sequence/item. * Method print_properties() have been updated to display more information about the DICOM object. = 0.2 === 10th August, 2008 * Data dictionary has been upgraded and is now compliant to the official standard. * New DLibrary class which handles all interaction with the dictionary. * Dictionary can be loaded before reading files, which will considerably speed up the process if reading multiple files. * Reading compressed pixel data into an RMagick object is supported in principle, although it lacks proper testing at this point. * DRead class is more resistant to breaking if it is handed a faulty file to read, and will return an error message instead of halting execution. * Added option to load DICOM object in verbose or silent mode. = 0.1 === 20th July, 2008 First public release. The library does have several known issues and lacks some features I would like it to have, but it does offer basic functionality and should be usable for people interested in working with DICOM files in Ruby. The reading algorithm has been tested succesfully with some 40 different DICOM files, so it should be fairly robust. Known issues: * The retrieve file network functionality (get_image() in DClient class) has not been tested. * Compressed pixel data is poorly handled. * Read/Write 12 bit image data not available. * Color image data is poorly handled. * Incomplete support for Big endian (Everything but signed short and signed long has been implemented). * Incomplete support for multiple frame image data to NArray and RMagick objects (partial support already featured). * Image handling does not take into consideration DICOM tags which specify orientation, samples per pixel and photometric interpretation.