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