dicom 0.9.3 → 0.9.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,82 @@
1
+ module DICOM
2
+
3
+ # This class handles the various UID types (transfer syntax, SOP Class, LDAP OID, etc)
4
+ # found in the DICOM Data Dictionary (Annex A: Registry of DICOM unique identifiers,
5
+ # Table A-1).
6
+ #
7
+ class UID
8
+
9
+ # The UID name, e.g. 'Verification SOP Class'.
10
+ attr_reader :name
11
+ # The UID's retired status string, i.e. an empty string or 'R'.
12
+ attr_reader :retired
13
+ # The UID type, e.g. 'SOP Class'.
14
+ attr_reader :type
15
+ # The UID value, e.g. '1.2.840.10008.1.1'.
16
+ attr_reader :value
17
+
18
+ # Creates a new UID.
19
+ #
20
+ # @param [String] value the UID's value
21
+ # @param [String] name the UID's name
22
+ # @param [String] type the UID's type
23
+ # @param [String] retired the UID's retired status string
24
+ #
25
+ def initialize(value, name, type, retired)
26
+ @value = value
27
+ @name = name
28
+ @type = type
29
+ @retired = retired
30
+ end
31
+
32
+ # Checks if the UID is a Transfer Syntax that big endian byte order.
33
+ #
34
+ # @return [Boolean] true if the UID indicates big endian byte order, and false if not
35
+ #
36
+ def big_endian?
37
+ @value == EXPLICIT_BIG_ENDIAN ? true : false
38
+ end
39
+
40
+ # Checks if the UID is a Transfer Syntax that implies compressed pixel data.
41
+ #
42
+ # @return [Boolean] true if the UID indicates compressed pixel data, and false if not
43
+ #
44
+ def compressed_pixels?
45
+ transfer_syntax? ? (@name =~ /Implicit|Explicit/).nil? : false
46
+ end
47
+
48
+ # Checks if the UID is a Transfer Syntax that implies explicit encoding.
49
+ #
50
+ # @return [Boolean] true if the UID indicates explicit encoding, and false if not
51
+ #
52
+ def explicit?
53
+ transfer_syntax? ? (@name =~ /Implicit/).nil? : false
54
+ end
55
+
56
+ # Converts the retired status string to a boolean.
57
+ #
58
+ # @return [Boolean] true if the UID is retired, and false if not
59
+ #
60
+ def retired?
61
+ @retired =~ /R/ ? true : false
62
+ end
63
+
64
+ # Checks if the UID is a SOP Class.
65
+ #
66
+ # @return [Boolean] true if the UID is of type SOP Class, and false if not
67
+ #
68
+ def sop_class?
69
+ @type =~ /SOP Class/ ? true : false
70
+ end
71
+
72
+ # Checks if the UID is a Transfer Syntax.
73
+ #
74
+ # @return [Boolean] true if the UID is of type Transfer Syntax, and false if not
75
+ #
76
+ def transfer_syntax?
77
+ @type =~ /Transfer Syntax/ ? true : false
78
+ end
79
+
80
+ end
81
+
82
+ end
@@ -17,17 +17,17 @@ module DICOM
17
17
  # Module methods:
18
18
  #++
19
19
 
20
- # Generates a random (unique) UID string.
20
+ # Generates a unique identifier string.
21
21
  # The UID is composed of a DICOM root UID, a type prefix,
22
22
  # a datetime part and a random number part.
23
- # Returns the UID string.
24
23
  #
25
- # === Parameters
24
+ # @param [String] root the DICOM root UID to be used for generating the UID string
25
+ # @param [String] prefix an integer string which is placed between the dicom root and the time/random part of the UID
26
+ # @return [String] the generated unique identifier
27
+ # @example Create a random UID with specified root and prefix
28
+ # uid = DICOM.generate_uid('1.2.840.999', '5')
26
29
  #
27
- # * <tt>root</tt> -- String. The DICOM root UID to be used for generating the UID string, e.g. '1.2.840.999'.
28
- # * <tt>prefix</tt> -- String. An integer string which is placed between the dicom root and the time/random part of the UID.
29
- #
30
- def generate_uid(root=UID, prefix=1)
30
+ def generate_uid(root=UID_ROOT, prefix=1)
31
31
  # NB! For UIDs, leading zeroes immediately after a dot is not allowed.
32
32
  date = Time.now.strftime("%Y%m%d").to_i.to_s
33
33
  time = Time.now.strftime("%H%M%S").to_i.to_s
@@ -36,7 +36,7 @@ module DICOM
36
36
  return uid
37
37
  end
38
38
 
39
- # Use tags as key. Example: "0010,0010"
39
+ # Use tags as key. Example: '0010,0010'
40
40
  #
41
41
  def key_use_tags
42
42
  @key_representation = :tag
@@ -65,6 +65,6 @@ module DICOM
65
65
  # The default key representation.
66
66
  self.key_representation = :name
67
67
  # The default source application entity title.
68
- self.source_app_title = "RUBY_DICOM"
68
+ self.source_app_title = 'RUBY_DICOM'
69
69
 
70
70
  end
@@ -1,6 +1,6 @@
1
- module DICOM
2
-
3
- # The ruby-dicom version string.
4
- VERSION = "0.9.3"
5
-
1
+ module DICOM
2
+
3
+ # The ruby-dicom version string.
4
+ VERSION = '0.9.4'
5
+
6
6
  end
@@ -0,0 +1,29 @@
1
+ # Available commands:
2
+ # Testing the specification:
3
+ # bundle exec rake spec
4
+ # Building a gem package from source:
5
+ # bundle exec rake package
6
+ # Create html documentation files:
7
+ # bundle exec rake yard
8
+
9
+ require 'rubygems/package_task'
10
+ require 'rspec/core/rake_task'
11
+ require 'yard'
12
+
13
+ # Build gem:
14
+ gem_spec = eval(File.read('dicom.gemspec'))
15
+ Gem::PackageTask.new(gem_spec) do |pkg|
16
+ pkg.gem_spec = gem_spec
17
+ pkg.need_tar = true
18
+ end
19
+
20
+ # RSpec 2:
21
+ RSpec::Core::RakeTask.new do |t|
22
+ t.rspec_opts = ["-c", "-f progress", "-r ./spec/spec_helper.rb"]
23
+ t.pattern = 'spec/**/*_spec.rb'
24
+ end
25
+
26
+ # Build documentation (YARD):
27
+ YARD::Rake::YardocTask.new do |t|
28
+ t.options += ['--title', "ruby-dicom #{DICOM::VERSION} Documentation"]
29
+ end
metadata CHANGED
@@ -1,114 +1,166 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: dicom
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.4
4
5
  prerelease:
5
- version: 0.9.3
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Christoffer Lervag
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2012-05-06 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
12
+ date: 2012-09-10 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
16
15
  name: bundler
17
- prerelease: false
18
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
19
17
  none: false
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
23
21
  version: 1.0.0
24
22
  type: :development
25
- version_requirements: *id001
26
- - !ruby/object:Gem::Dependency
27
- name: rake
28
23
  prerelease: false
29
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 1.0.0
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ requirement: !ruby/object:Gem::Requirement
30
33
  none: false
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
34
37
  version: 0.9.2.2
35
38
  type: :development
36
- version_requirements: *id002
37
- - !ruby/object:Gem::Dependency
38
- name: rspec
39
39
  prerelease: false
40
- requirement: &id003 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 0.9.2.2
46
+ - !ruby/object:Gem::Dependency
47
+ name: rspec
48
+ requirement: !ruby/object:Gem::Requirement
41
49
  none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
45
53
  version: 2.9.0
46
54
  type: :development
47
- version_requirements: *id003
48
- - !ruby/object:Gem::Dependency
49
- name: mocha
50
55
  prerelease: false
51
- requirement: &id004 !ruby/object:Gem::Requirement
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 2.9.0
62
+ - !ruby/object:Gem::Dependency
63
+ name: mocha
64
+ requirement: !ruby/object:Gem::Requirement
52
65
  none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
56
69
  version: 0.10.5
57
70
  type: :development
58
- version_requirements: *id004
59
- - !ruby/object:Gem::Dependency
60
- name: narray
61
71
  prerelease: false
62
- requirement: &id005 !ruby/object:Gem::Requirement
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: 0.10.5
78
+ - !ruby/object:Gem::Dependency
79
+ name: narray
80
+ requirement: !ruby/object:Gem::Requirement
63
81
  none: false
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
67
85
  version: 0.6.0.0
68
86
  type: :development
69
- version_requirements: *id005
70
- - !ruby/object:Gem::Dependency
71
- name: rmagick
72
87
  prerelease: false
73
- requirement: &id006 !ruby/object:Gem::Requirement
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: 0.6.0.0
94
+ - !ruby/object:Gem::Dependency
95
+ name: rmagick
96
+ requirement: !ruby/object:Gem::Requirement
74
97
  none: false
75
- requirements:
76
- - - ">="
77
- - !ruby/object:Gem::Version
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
78
101
  version: 2.12.0
79
102
  type: :development
80
- version_requirements: *id006
81
- - !ruby/object:Gem::Dependency
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: 2.12.0
110
+ - !ruby/object:Gem::Dependency
82
111
  name: mini_magick
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: 3.2.1
118
+ type: :development
83
119
  prerelease: false
84
- requirement: &id007 !ruby/object:Gem::Requirement
120
+ version_requirements: !ruby/object:Gem::Requirement
85
121
  none: false
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
89
125
  version: 3.2.1
126
+ - !ruby/object:Gem::Dependency
127
+ name: yard
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: 0.8.2
90
134
  type: :development
91
- version_requirements: *id007
92
- description: DICOM is a standard widely used throughout the world to store and transfer medical image data. This library enables efficient and powerful handling of DICOM in Ruby, to the benefit of any student or professional who would like to use their favorite language to process DICOM files and communicate across the network.
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: 0.8.2
142
+ description: DICOM is a standard widely used throughout the world to store and transfer
143
+ medical image data. This library enables efficient and powerful handling of DICOM
144
+ in Ruby, to the benefit of any student or professional who would like to use their
145
+ favorite language to process DICOM files and communicate across the network.
93
146
  email: chris.lervag@gmail.com
94
147
  executables: []
95
-
96
148
  extensions: []
97
-
98
149
  extra_rdoc_files: []
99
-
100
- files:
150
+ files:
101
151
  - lib/dicom/anonymizer.rb
102
152
  - lib/dicom/audit_trail.rb
103
153
  - lib/dicom/constants.rb
154
+ - lib/dicom/deprecated.rb
155
+ - lib/dicom/dictionary/elements.txt
156
+ - lib/dicom/dictionary/uids.txt
157
+ - lib/dicom/dictionary_element.rb
104
158
  - lib/dicom/d_client.rb
105
159
  - lib/dicom/d_library.rb
106
160
  - lib/dicom/d_object.rb
107
161
  - lib/dicom/d_read.rb
108
162
  - lib/dicom/d_server.rb
109
163
  - lib/dicom/d_write.rb
110
- - lib/dicom/deprecated.rb
111
- - lib/dicom/dictionary.rb
112
164
  - lib/dicom/element.rb
113
165
  - lib/dicom/elemental.rb
114
166
  - lib/dicom/file_handler.rb
@@ -123,38 +175,40 @@ files:
123
175
  - lib/dicom/ruby_extensions.rb
124
176
  - lib/dicom/sequence.rb
125
177
  - lib/dicom/stream.rb
178
+ - lib/dicom/uid.rb
126
179
  - lib/dicom/variables.rb
127
180
  - lib/dicom/version.rb
128
181
  - lib/dicom.rb
129
182
  - CHANGELOG.rdoc
130
183
  - COPYING
184
+ - dicom.gemspec
185
+ - Gemfile
186
+ - rakefile.rb
131
187
  - README.rdoc
132
188
  homepage: http://dicom.rubyforge.org/
133
- licenses:
189
+ licenses:
134
190
  - GPLv3
135
191
  post_install_message:
136
192
  rdoc_options: []
137
-
138
- require_paths:
193
+ require_paths:
139
194
  - lib
140
- required_ruby_version: !ruby/object:Gem::Requirement
195
+ required_ruby_version: !ruby/object:Gem::Requirement
141
196
  none: false
142
- requirements:
143
- - - ">="
144
- - !ruby/object:Gem::Version
197
+ requirements:
198
+ - - ! '>='
199
+ - !ruby/object:Gem::Version
145
200
  version: 1.9.2
146
- required_rubygems_version: !ruby/object:Gem::Requirement
201
+ required_rubygems_version: !ruby/object:Gem::Requirement
147
202
  none: false
148
- requirements:
149
- - - ">="
150
- - !ruby/object:Gem::Version
203
+ requirements:
204
+ - - ! '>='
205
+ - !ruby/object:Gem::Version
151
206
  version: 1.8.6
152
207
  requirements: []
153
-
154
208
  rubyforge_project: dicom
155
- rubygems_version: 1.8.13
209
+ rubygems_version: 1.8.24
156
210
  signing_key:
157
211
  specification_version: 3
158
212
  summary: Library for handling DICOM files and DICOM network communication.
159
213
  test_files: []
160
-
214
+ has_rdoc: