dicom 0.9.3 → 0.9.4
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.rdoc +312 -290
- data/COPYING +674 -674
- data/Gemfile +3 -0
- data/dicom.gemspec +31 -0
- data/lib/dicom.rb +53 -51
- data/lib/dicom/anonymizer.rb +98 -123
- data/lib/dicom/audit_trail.rb +104 -116
- data/lib/dicom/constants.rb +219 -170
- data/lib/dicom/d_client.rb +122 -150
- data/lib/dicom/d_library.rb +219 -287
- data/lib/dicom/d_object.rb +451 -539
- data/lib/dicom/d_read.rb +151 -245
- data/lib/dicom/d_server.rb +329 -359
- data/lib/dicom/d_write.rb +327 -395
- data/lib/dicom/deprecated.rb +1 -72
- data/lib/dicom/dictionary/elements.txt +3646 -0
- data/lib/dicom/dictionary/uids.txt +334 -0
- data/lib/dicom/dictionary_element.rb +61 -0
- data/lib/dicom/element.rb +278 -218
- data/lib/dicom/elemental.rb +21 -27
- data/lib/dicom/file_handler.rb +121 -121
- data/lib/dicom/image_item.rb +819 -861
- data/lib/dicom/image_processor.rb +24 -15
- data/lib/dicom/image_processor_mini_magick.rb +21 -23
- data/lib/dicom/image_processor_r_magick.rb +39 -34
- data/lib/dicom/item.rb +133 -120
- data/lib/dicom/link.rb +1531 -1532
- data/lib/dicom/logging.rb +155 -158
- data/lib/dicom/parent.rb +782 -847
- data/lib/dicom/ruby_extensions.rb +248 -229
- data/lib/dicom/sequence.rb +109 -92
- data/lib/dicom/stream.rb +480 -511
- data/lib/dicom/uid.rb +82 -0
- data/lib/dicom/variables.rb +9 -9
- data/lib/dicom/version.rb +5 -5
- data/rakefile.rb +29 -0
- metadata +130 -76
- data/lib/dicom/dictionary.rb +0 -3280
data/CHANGELOG.rdoc
CHANGED
@@ -1,291 +1,313 @@
|
|
1
|
-
= 0.9.
|
2
|
-
|
3
|
-
===
|
4
|
-
|
5
|
-
*
|
6
|
-
*
|
7
|
-
* Added
|
8
|
-
*
|
9
|
-
*
|
10
|
-
*
|
11
|
-
*
|
12
|
-
*
|
13
|
-
*
|
14
|
-
*
|
15
|
-
*
|
16
|
-
*
|
17
|
-
*
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
*
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
*
|
48
|
-
*
|
49
|
-
*
|
50
|
-
*
|
51
|
-
*
|
52
|
-
*
|
53
|
-
*
|
54
|
-
*
|
55
|
-
*
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
* Fixed an issue where
|
70
|
-
* Added
|
71
|
-
*
|
72
|
-
*
|
73
|
-
*
|
74
|
-
*
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
*
|
80
|
-
*
|
81
|
-
|
82
|
-
*
|
83
|
-
*
|
84
|
-
*
|
85
|
-
*
|
86
|
-
|
87
|
-
*
|
88
|
-
* Added
|
89
|
-
*
|
90
|
-
*
|
91
|
-
|
92
|
-
|
93
|
-
*
|
94
|
-
*
|
95
|
-
*
|
96
|
-
* Renamed
|
97
|
-
*
|
98
|
-
*
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
*
|
106
|
-
*
|
107
|
-
*
|
108
|
-
*
|
109
|
-
*
|
110
|
-
|
111
|
-
*
|
112
|
-
*
|
113
|
-
*
|
114
|
-
*
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
*
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
*
|
129
|
-
*
|
130
|
-
*
|
131
|
-
*
|
132
|
-
*
|
133
|
-
*
|
134
|
-
|
135
|
-
*
|
136
|
-
*
|
137
|
-
*
|
138
|
-
*
|
139
|
-
*
|
140
|
-
*
|
141
|
-
|
142
|
-
*
|
143
|
-
*
|
144
|
-
*
|
145
|
-
*
|
146
|
-
*
|
147
|
-
*
|
148
|
-
*
|
149
|
-
*
|
150
|
-
*
|
151
|
-
*
|
152
|
-
*
|
153
|
-
*
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
*
|
161
|
-
*
|
162
|
-
*
|
163
|
-
*
|
164
|
-
*
|
165
|
-
*
|
166
|
-
*
|
167
|
-
*
|
168
|
-
*
|
169
|
-
*
|
170
|
-
*
|
171
|
-
*
|
172
|
-
*
|
173
|
-
*
|
174
|
-
*
|
175
|
-
*
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
*
|
183
|
-
*
|
184
|
-
*
|
185
|
-
*
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
*
|
193
|
-
*
|
194
|
-
*
|
195
|
-
*
|
196
|
-
*
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
*
|
204
|
-
*
|
205
|
-
*
|
206
|
-
*
|
207
|
-
*
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
*
|
217
|
-
*
|
218
|
-
*
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
*
|
226
|
-
*
|
227
|
-
*
|
228
|
-
|
229
|
-
*
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
*
|
239
|
-
|
240
|
-
*
|
241
|
-
|
242
|
-
*
|
243
|
-
|
244
|
-
*
|
245
|
-
|
246
|
-
*
|
247
|
-
*
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
*
|
263
|
-
*
|
264
|
-
|
265
|
-
*
|
266
|
-
*
|
267
|
-
* New method
|
268
|
-
|
269
|
-
*
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
1
|
+
= 0.9.4
|
2
|
+
|
3
|
+
=== 10th September, 2012
|
4
|
+
|
5
|
+
* Converted the documentation format from RDOC to YARD.
|
6
|
+
* Removed deprecated remove_* methods (use the delete_* versions instead).
|
7
|
+
* Added the Parent#delete_retired method which makes it trivially easy to delete all retired elements/sequences from a DICOM file.
|
8
|
+
* Added a method to add a private dictionary to ruby-dicom's dictionary with LIBRARY#add_element_dictionary(file). The file must have the same tab separated format as ruby-dicom's element dictionary.
|
9
|
+
* Renamed the DICOM::UID constant to DICOM::UID_ROOT.
|
10
|
+
* Refactored the dictionary/DLibrary code and introduced two new classes: DictionaryElement and UID.
|
11
|
+
* Fixed an issue where the presence of the 'FFFC,FFFC' element in a DICOM file with compressed pixel data would result in a read failure.
|
12
|
+
* Updated the data dictionary to the 2011 edition.
|
13
|
+
* Replaced the Ruby coded dictionary with a pure tab separated text file.
|
14
|
+
* Added a script for generating a data dictionary based on the DICOM Standard documents published by NEMA.
|
15
|
+
* Fixed an issue where data elements which are specified by a range in the dictionary ('xx') where not properly recognized.
|
16
|
+
* Improved handling of non-string values in the Anonymizer (e.q. use an integer/float by default where applicable instead of a string).
|
17
|
+
* Implemented dynamic typing for data element values (e.q. converting a decimal string '2' to an integer).
|
18
|
+
* Added a missing pad byte for the 'BY' value representation.
|
19
|
+
* Made ruby-dicom encoding aware (using the Specific Character set tag) and return all element values encoded with UTF-8.
|
20
|
+
* Refactored read and write code to get rid of the 'private' DRead and DWrite classes.
|
21
|
+
|
22
|
+
|
23
|
+
= 0.9.3
|
24
|
+
|
25
|
+
=== 6th May, 2012
|
26
|
+
|
27
|
+
* Deprecated all #remove* methods (replaced with #delete*) to increase consistency with Ruby.
|
28
|
+
* Changed preferred DObject variable name from obj to dcm for all examples.
|
29
|
+
* Added comparison methods (#==, #eql? and #hash) as well as dynamic #to_* methods to DObject, Element, Item & Sequence classes.
|
30
|
+
* Fixed incorrect handling of 3D pixel data with NArray (regression introduced in v0.8).
|
31
|
+
* Anonymizer can take a list of tags to be entirely deleted from the DICOM files during anonymization.
|
32
|
+
* Added Accession Number to default list of tags that are anonymized.
|
33
|
+
* Added a generate_uid method for creating custom (but valid) UIDs.
|
34
|
+
* Added an Anonymizer AuditTrail feature based on JSON, which will replace the (deprecated) identity_file feature.
|
35
|
+
* Implemented a proper UID anonymization with AuditTrail support and preservation of relations.
|
36
|
+
* Fixed and improved logging when failing to decompress pixel data.
|
37
|
+
* DServer defaults to bind to 127.0.0.1, with an option available for other bindings.
|
38
|
+
* More robust handling of invalid AT Element values when parsing DICOM files.
|
39
|
+
* Optimizations and code cleanups allowed by the introduced Ruby 1.9 requirement.
|
40
|
+
|
41
|
+
|
42
|
+
= 0.9.2
|
43
|
+
|
44
|
+
=== 10th Oct, 2011
|
45
|
+
|
46
|
+
* Enabled the use of lower case tag letters in methods which previously required the use of upper case letters.
|
47
|
+
* Added new DObject class methods to offload DObject#new:
|
48
|
+
* DObject#read is the new preferred method for reading a DICOM file.
|
49
|
+
* DObject#parse is the new preferred method for parsing an encoded DICOM string.
|
50
|
+
* The experimental feature of retrieving a DICOM file through http was moved to DObject#get.
|
51
|
+
* Calling DObject with a string argument was deprecated.
|
52
|
+
* Introduced proper logging capabilities which replaced the simple message printouts to STDOUT:
|
53
|
+
* Based on the Logger class of the Ruby Standard Library.
|
54
|
+
* Automatically integrates with the Rails logger in a Rails application.
|
55
|
+
* Supports information levels, logging to file, and more as available in the Ruby Logger.
|
56
|
+
|
57
|
+
|
58
|
+
= 0.9.1
|
59
|
+
|
60
|
+
=== 27th May, 2011
|
61
|
+
|
62
|
+
* Fixed a regression in 0.9 where ruby-dicom would cause a Rails application to crash.
|
63
|
+
|
64
|
+
|
65
|
+
= 0.9
|
66
|
+
|
67
|
+
=== 17th May, 2011
|
68
|
+
|
69
|
+
* Fixed an issue where data elements added to a DObject didn't get their endianness updated.
|
70
|
+
* Added the ability to encode/decode 32 bit pixel data.
|
71
|
+
* Added the ability to encode/decode big endian signed integers.
|
72
|
+
* Added the remove_children() method to parent elements.
|
73
|
+
* Added the ability to decode color images.
|
74
|
+
* Added the ability to retrieve multiple pixel frames as image objects.
|
75
|
+
* Added a :level option to the image retrieval methods which accepts custom window center/width values.
|
76
|
+
* Renamed the :rescale option to :remap in the image retrieval methods.
|
77
|
+
* Added the ability to decode RLE and JPEG Baseline compressed images.
|
78
|
+
* Added a specification test suite (using rspec and mocha).
|
79
|
+
* Implemented proper handling of data element values with VR "AT" (tag references).
|
80
|
+
* Changed the specification for Item indices (now starts at 0).
|
81
|
+
* Introduced the concept of ImageProcessors to replace the previously integrated RMagick image methods:
|
82
|
+
* The user can select which ImageProcessor to be used at run-time.
|
83
|
+
* Initially supported ImageProcessors: RMagick and mini_magick.
|
84
|
+
* Additional ImageProcessors can easily be added using existing template.
|
85
|
+
* Major refactoring and simplification of all image related code.
|
86
|
+
* Some changes of the Anonymizer class:
|
87
|
+
* Added a :verbose option.
|
88
|
+
* Added enum(), set_tag() and value() methods.
|
89
|
+
* Removed add_tag, change_enum() and change_value() methods.
|
90
|
+
* Added a log attribute.
|
91
|
+
* Fixed an issue where using a transfer syntax option with a binary string did not result in a correct application of the supplied syntax.
|
92
|
+
* Added a .dcm extension to DICOM files received by DServer.
|
93
|
+
* Fixed an issue where sending DICOM files with compressed pixel data resulted in an invalid DICOM transfer.
|
94
|
+
* Changed the specification to allow the query methods of DClient to accept any tag as a query parameter.
|
95
|
+
* Improved the handling of parent-child relations so these are always properly updated when adding, removing or changing parent elements.
|
96
|
+
* Renamed the following classes/modules:
|
97
|
+
* SuperParent -> Parent
|
98
|
+
* SuperItem -> ImageItem
|
99
|
+
* DataElement -> Element
|
100
|
+
* Elements -> Elemental
|
101
|
+
* Replaced ImageItem#image_properties() with num_cols(), num_rows() and num_frames().
|
102
|
+
* Renamed the following ImageItem methods:
|
103
|
+
* get_image_magick() -> image()
|
104
|
+
* get_images_magick() -> images()
|
105
|
+
* set_image_magick() -> image=()
|
106
|
+
* get_image() -> pixels
|
107
|
+
* get_image_narray -> narray
|
108
|
+
* set_image -> pixels=()
|
109
|
+
* set_image_narray -> pixels=()
|
110
|
+
* Added the following conversion methods to DObject, Sequence, Item & Element:
|
111
|
+
* inspect()
|
112
|
+
* to_hash()
|
113
|
+
* to_json()
|
114
|
+
* to_yaml()
|
115
|
+
* Added the ability to use DICOM element names as methods for creating, editing and deleting elements.
|
116
|
+
* Added the ability to read a DICOM file from a http string, using open-uri (experimental).
|
117
|
+
* Added alias_methods read? for read_success and written? for write_success in DObject.
|
118
|
+
* Renamed DObject#information() to summary().
|
119
|
+
* Added various ArgumentError exceptions to facility easier debugging.
|
120
|
+
* Various bug fixes.
|
121
|
+
|
122
|
+
|
123
|
+
= 0.8
|
124
|
+
|
125
|
+
=== 1st August, 2010
|
126
|
+
|
127
|
+
* Overall changes:
|
128
|
+
* A complete rewrite of data element handling has resulted in a substantially different syntax and significantly cleaner and simpler code.
|
129
|
+
* Greatly increased speed in DICOM object interaction. Especially noticeable on larger DICOM files.
|
130
|
+
* A complete overhaul of the documentation has resulted in a consistent RDoc-style documentation across all classes/modules.
|
131
|
+
* Increased use of module constants for improved code readability.
|
132
|
+
* Major cleanup of codes and comments to make it consistent with Ruby 'best practice' guidelines.
|
133
|
+
* Ready for Rails 3 (compatible with Bundler).
|
134
|
+
* Resulting from the rewrite is a number of new classes and modules for handling the various data objects:
|
135
|
+
* DataElement: Ordinary data elements are instances of this class.
|
136
|
+
* Item: Item elements are instances of this class.
|
137
|
+
* Sequence: Sequence elements are instances of this class.
|
138
|
+
* SuperItem: Methods which are shared between DObject and Item (mostly image related methods).
|
139
|
+
* SuperParent: Methods which are shared between all parent objects (DObject, Item & Sequence).
|
140
|
+
* Elements: A mix-in module used by all element objects (DataElement, Item & Sequence).
|
141
|
+
* DObject:
|
142
|
+
* Completely rewritten data element handling.
|
143
|
+
* Rewritten print() method with improved tree structure visualization, item indices and the ability to run on any parent element.
|
144
|
+
* Renamed the print_properties() method to information(), and improved the amount of information outputted.
|
145
|
+
* Removed the following methods: get_frames(), get_image_pos(), get_pos(), get_value(), get_bin(), set_value()
|
146
|
+
* Renamed get_pixels() method to decode_pixels().
|
147
|
+
* Replaced get_value() with value(). The set_value() method is replaced by the new() methods of DataElement, Sequence and Item classes.
|
148
|
+
* Added the ability to add items at a specific index (shifting any existing items to appear after the inserted item).
|
149
|
+
* Added the transfer_syntax=() method for changing the transfer syntax of a DICOM object.
|
150
|
+
* Implemented a more robust padding of data element values with odd length, based on data element VR.
|
151
|
+
* Added methods for removing all sequences, removing selected groups and returning all data elements of a selected group.
|
152
|
+
* Optimized the get_image_narray() method to more efficiently return the pixel data.
|
153
|
+
* Refined the print_all convenience method to call both print() and information().
|
154
|
+
* DRead:
|
155
|
+
* More robust against crashing when parsing invalid files by proper use of exception handling.
|
156
|
+
* Fixed some cases where a failed read where incorrectly marked as successful.
|
157
|
+
* Increased compatibility (handles DICOM files saved with explicit syntax but no transfer syntax tag).
|
158
|
+
* Explicit DICOM files with data elements of type "OF" are now handled correctly (both read and write).
|
159
|
+
* DWrite:
|
160
|
+
* Simplified code and execution by removing group lengths (deprecated in the DICOM standard) and using undefined length for sequences/items.
|
161
|
+
* More flexible insertion of missing meta group elements.
|
162
|
+
* Dictionary:
|
163
|
+
* Some minor text corrections.
|
164
|
+
* Anonymizer:
|
165
|
+
* Anonymizations executes much faster thanks to the work done with DObject data element handling.
|
166
|
+
* Only top level data elements can be anonymized.
|
167
|
+
* DClient:
|
168
|
+
* Can transmit multiple DICOM files at once with the send() method, which now will accept both DObjects and file strings.
|
169
|
+
* Added the echo() method for performing a C-ECHO-RQ against a SCP.
|
170
|
+
* DServer:
|
171
|
+
* Support for role negotiation.
|
172
|
+
* Properly returns called AE title in association response.
|
173
|
+
* The lists of acceptable abstract and transfer syntax can now be easily modified by the user.
|
174
|
+
* Receiving multiple files (like an entire series, or study) in a single association is now supported.
|
175
|
+
* Properly receives and responds to a C-ECHO-RQ.
|
176
|
+
|
177
|
+
|
178
|
+
= 0.7
|
179
|
+
|
180
|
+
=== 28th February, 2010
|
181
|
+
|
182
|
+
* Added set_image() and set_image_narray() methods to write pixel data to the DICOM object, complementing set_image_magick().
|
183
|
+
* Added method get_image() which retrieves pixel data to a standard Ruby Array.
|
184
|
+
* Added a method for removing all private data elements in the DICOM object.
|
185
|
+
* Anonymizer class has gained the ability to remove all private data elements when anonymizing.
|
186
|
+
* Fixed an issue where Anonymizer failed to anonymize tags which had multiple instances in a DICOM file.
|
187
|
+
* Fixed an issue where Anonymizer failed to honor an expception folder if it ended with a file separation character.
|
188
|
+
* Private data elements can now be added to a DICOM object.
|
189
|
+
* Created a new FileHandler class where the user can customize the way incoming DICOM files are handled in DServer.
|
190
|
+
* Methods set_image_narray() and set_image_magick() takes options :min and :max to rescale pixel values.
|
191
|
+
* The magick and narray image retrieval methods now takes the option :rescale to convert pixel values to presentation values.
|
192
|
+
* Method get_pos() now takes the option :parent to narrow a search down.
|
193
|
+
* Improved the set_value() method to handle the creation of data elements inside sequences/items.
|
194
|
+
* All DObject methods who return Data Element positions now return an empty array instead of false if no matches are found.
|
195
|
+
* Improved handling of private tags in the library.
|
196
|
+
* Network transmissions with implicit encoding are now handled properly.
|
197
|
+
* Improved the handling of associations in the networking code.
|
198
|
+
* Some minor formatting improvements to the print() method.
|
199
|
+
* Improve the logic of updating group/sequence/item lengths to handle changes to Data Elements in sequence hierarchies.
|
200
|
+
* DLibrary class is permanently loaded when the gem is loaded and no longer needs to be specified by the user.
|
201
|
+
* Method get_image_magick() now handles pixel representation and window leveling.
|
202
|
+
* Program files was moved to a sub-directory and a module version string added, in accordance with gem guidelines.
|
203
|
+
* Renamed DObject attribute :types to :vr in accordance with the terminology of the official DICOM standard.
|
204
|
+
* Renamed method get_raw() to get_bin() and attribute :raw to :bin.
|
205
|
+
* Renamed get_pos() option :array to :selection.
|
206
|
+
* Updated Dictionary in accordance with the 2009 version of the official DICOM base standard.
|
207
|
+
* Various "under the hood" improvements and code cleanups.
|
208
|
+
|
209
|
+
|
210
|
+
= 0.6.1
|
211
|
+
|
212
|
+
=== 23rd August, 2009
|
213
|
+
|
214
|
+
* Fixed a bug (introduced in version 0.6) where the creation of new data elements caused an error.
|
215
|
+
* Fixed a bug (introduced in version 0.6) where compressed pixel data were no longer detected correctly.
|
216
|
+
* Fixed a bug where writing a DICOM file with no path prefix failed.
|
217
|
+
* Fixed a bug where creating a new data element in a DICOM file with tag hierarchies gave an invalid DICOM file.
|
218
|
+
* Fixed a bug where retrieving a RMagick image from DICOM files containing two sets of image data failed.
|
219
|
+
|
220
|
+
|
221
|
+
= 0.6
|
222
|
+
|
223
|
+
=== 13th August, 2009
|
224
|
+
|
225
|
+
* Complete rewrite of encoding/decoding to reduce code duplication and simplify the code.
|
226
|
+
* General optimizations to improve speed and reduce code complexity.
|
227
|
+
* Rewrote Dictionary to use Hash instead of Array. This has significantly improved the read speed of the library.
|
228
|
+
* Ruby DICOM now automatically strips away trailing whitespace when decoding string values.
|
229
|
+
* Introducing basic, experimental network functionality.
|
230
|
+
* The new DClient class enables features such as query, move and send.
|
231
|
+
* The new DServer class presents the ability to set up a simple storage server (Service Class Provider).
|
232
|
+
|
233
|
+
|
234
|
+
= 0.5
|
235
|
+
|
236
|
+
=== 4th May, 2009
|
237
|
+
|
238
|
+
* Several small changes have been made to achieve compatibility with both Ruby versions 1.8 and 1.9.
|
239
|
+
* Implemented a change in syntax for several methods with a goal of simplification.
|
240
|
+
* Implemented a change in syntax for some methods, variables and messages in order
|
241
|
+
to better match the terminology used in the official DICOM documents.
|
242
|
+
* Added a new attr_reader :errors, an array that holds any warnings issued during your
|
243
|
+
interaction with DObject.
|
244
|
+
* DObject has received new attr_readers for the arrays holding information on the DICOM object.
|
245
|
+
See documentation for details.
|
246
|
+
* Several methods have been cleaned up, making execution in some cases somewhat snappier.
|
247
|
+
* Several methods have been made more robust.
|
248
|
+
* Added new option :partial to the get_pos() method, which will enable search for partial string matches.
|
249
|
+
* Added new option :array to the get_value() and get_raw() methods which enables easy extraction of
|
250
|
+
multiple values of a given tag to an array (relevant for tags present at multiple places in a DICOM file).
|
251
|
+
* Fixed a bug where exception folders where ignored in the Anonymizer class.
|
252
|
+
|
253
|
+
|
254
|
+
= 0.4
|
255
|
+
|
256
|
+
=== 3rd February, 2009
|
257
|
+
|
258
|
+
* Change of syntax: Options are now supplied as hash.
|
259
|
+
* Method below() renamed to children().
|
260
|
+
* Added method parents() which returns the position of all items/sequences that are the parent of
|
261
|
+
the specified tag. This method is only relevant for DICOM tags that exist inside a hierarchy.
|
262
|
+
* Simplified the code in class Dictionary: load time is ~ 40 times faster!
|
263
|
+
* Improved the code in class DRead: average read time is reduced by ~ 15 %.
|
264
|
+
* Improved support for Big Endian DICOM files.
|
265
|
+
* Added support for the "FL" (floating point single) value representation.
|
266
|
+
* Fixed a small bug with tag 0028,3006 in Dictionary.
|
267
|
+
* New method image_to_file() which makes it even easier than before to dump the DICOM pixel data to file.
|
268
|
+
* Introducing DWrite class which enables writing DICOM objects to file.
|
269
|
+
* Added several methods in DObject class to take advantage of write capability:
|
270
|
+
remove_tag()
|
271
|
+
set_value()
|
272
|
+
set_image_magick()
|
273
|
+
set_image_file()
|
274
|
+
write_file()
|
275
|
+
* Introducing the Anonymizer class, which takes advantage of the new write capability in Ruby DICOM
|
276
|
+
to offer a fairly powerful and customizable tool for anonymizing your DICOM files.
|
277
|
+
|
278
|
+
|
279
|
+
= 0.3
|
280
|
+
|
281
|
+
=== 12th October, 2008
|
282
|
+
|
283
|
+
* The DRead class is now able to keep track of the position of the tags inside the hierarchy of sequences and items.
|
284
|
+
* DObject class has seen a number of improvements to allow taking advantage of this hierarchy awareness:
|
285
|
+
* Method get_pos() now can take an array of positions as an argument when searching for tags,
|
286
|
+
meaning it will only search for hits amongst the positions provided.
|
287
|
+
* Method print() has been improved with new options to visualize the tree structure of the DICOM file.
|
288
|
+
* Method print() is able to print to file as well. The text file will be put in the same folder as the DICOM file.
|
289
|
+
* New method below(), which lets you specify a sequence or item, and this method will return the position
|
290
|
+
of all tags contained in this sequence/item.
|
291
|
+
* Method print_properties() have been updated to display more information about the DICOM object.
|
292
|
+
|
293
|
+
|
294
|
+
= 0.2
|
295
|
+
|
296
|
+
=== 10th August, 2008
|
297
|
+
|
298
|
+
* Data dictionary has been upgraded and is now compliant to the official standard.
|
299
|
+
* New DLibrary class which handles all interaction with the dictionary.
|
300
|
+
* Dictionary can be loaded before reading files, which will considerably speed up the process if reading multiple files.
|
301
|
+
* Reading compressed pixel data into an RMagick object is supported in principle, although it lacks proper testing at this point.
|
302
|
+
* 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.
|
303
|
+
* Added option to load DICOM object in verbose or silent mode.
|
304
|
+
|
305
|
+
|
306
|
+
= 0.1
|
307
|
+
|
308
|
+
=== 20th July, 2008
|
309
|
+
|
310
|
+
First public release.
|
311
|
+
The library does have several known issues and lacks some features I would like it to have, but it does
|
312
|
+
offer basic functionality and should be usable for people interested in working with DICOM files in Ruby.
|
291
313
|
The reading algorithm has been tested successfully with some 40 different DICOM files, so it should be fairly robust.
|