rtp-connect 1.6 → 1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +15 -0
- data/{CHANGELOG.rdoc → CHANGELOG.md} +29 -14
- data/Gemfile.lock +27 -21
- data/{README.rdoc → README.md} +62 -50
- data/lib/rtp-connect.rb +1 -0
- data/lib/rtp-connect/constants.rb +1 -0
- data/lib/rtp-connect/control_point.rb +142 -100
- data/lib/rtp-connect/dose_tracking.rb +31 -36
- data/lib/rtp-connect/extended_field.rb +15 -51
- data/lib/rtp-connect/extended_plan.rb +133 -0
- data/lib/rtp-connect/field.rb +101 -128
- data/lib/rtp-connect/methods.rb +31 -16
- data/lib/rtp-connect/plan.rb +80 -98
- data/lib/rtp-connect/plan_to_dcm.rb +68 -106
- data/lib/rtp-connect/prescription.rb +18 -56
- data/lib/rtp-connect/record.rb +62 -1
- data/lib/rtp-connect/ruby_extensions.rb +34 -3
- data/lib/rtp-connect/simulation_field.rb +58 -136
- data/lib/rtp-connect/site_setup.rb +51 -62
- data/lib/rtp-connect/version.rb +1 -1
- data/rakefile.rb +0 -1
- data/rtp-connect.gemspec +7 -7
- metadata +51 -41
@@ -24,6 +24,9 @@ module RTP
|
|
24
24
|
attr_reader :couch_longitudinal
|
25
25
|
attr_reader :couch_angle
|
26
26
|
attr_reader :couch_pedestal
|
27
|
+
attr_reader :table_top_vert_displacement
|
28
|
+
attr_reader :table_top_long_displacement
|
29
|
+
attr_reader :table_top_lat_displacement
|
27
30
|
|
28
31
|
# Creates a new SiteSetup by parsing a RTPConnect string line.
|
29
32
|
#
|
@@ -33,31 +36,8 @@ module RTP
|
|
33
36
|
# @raise [ArgumentError] if given a string containing an invalid number of elements
|
34
37
|
#
|
35
38
|
def self.load(string, parent)
|
36
|
-
# Get the quote-less values:
|
37
|
-
values = string.to_s.values
|
38
|
-
low_limit = 5
|
39
|
-
high_limit = 16
|
40
|
-
raise ArgumentError, "Invalid argument 'string': Expected at least #{low_limit} elements, got #{values.length}." if values.length < low_limit
|
41
|
-
RTP.logger.warn "The number of elements (#{values.length}) for this SiteSetup record exceeds the known number of data items for this record (#{high_limit}). This may indicate an invalid record or that the RTP format has recently been expanded with new items." if values.length > high_limit
|
42
39
|
s = self.new(parent)
|
43
|
-
|
44
|
-
s.keyword = values[0]
|
45
|
-
s.rx_site_name = values[1]
|
46
|
-
s.patient_orientation = values[2]
|
47
|
-
s.treatment_machine = values[3]
|
48
|
-
s.tolerance_table = values[4]
|
49
|
-
s.iso_pos_x = values[5]
|
50
|
-
s.iso_pos_y = values[6]
|
51
|
-
s.iso_pos_z = values[7]
|
52
|
-
s.structure_set_uid = values[8]
|
53
|
-
s.frame_of_ref_uid = values[9]
|
54
|
-
s.couch_vertical = values[10]
|
55
|
-
s.couch_lateral = values[11]
|
56
|
-
s.couch_longitudinal = values[12]
|
57
|
-
s.couch_angle = values[13]
|
58
|
-
s.couch_pedestal = values[14]
|
59
|
-
s.crc = values[-1]
|
60
|
-
return s
|
40
|
+
s.load(string)
|
61
41
|
end
|
62
42
|
|
63
43
|
# Creates a new SiteSetup.
|
@@ -65,10 +45,32 @@ module RTP
|
|
65
45
|
# @param [Record] parent a record which is used to determine the proper parent of this instance
|
66
46
|
#
|
67
47
|
def initialize(parent)
|
48
|
+
super('SITE_SETUP_DEF', 5, 19)
|
68
49
|
# Parent relation (always expecting a Prescription here):
|
69
50
|
@parent = get_parent(parent.to_prescription, Prescription)
|
70
51
|
@parent.add_site_setup(self)
|
71
|
-
@
|
52
|
+
@attributes = [
|
53
|
+
# Required:
|
54
|
+
:keyword,
|
55
|
+
:rx_site_name,
|
56
|
+
:patient_orientation,
|
57
|
+
:treatment_machine,
|
58
|
+
# Optional:
|
59
|
+
:tolerance_table,
|
60
|
+
:iso_pos_x,
|
61
|
+
:iso_pos_y,
|
62
|
+
:iso_pos_z,
|
63
|
+
:structure_set_uid,
|
64
|
+
:frame_of_ref_uid,
|
65
|
+
:couch_vertical,
|
66
|
+
:couch_lateral,
|
67
|
+
:couch_longitudinal,
|
68
|
+
:couch_angle,
|
69
|
+
:couch_pedestal,
|
70
|
+
:table_top_vert_displacement,
|
71
|
+
:table_top_long_displacement,
|
72
|
+
:table_top_lat_displacement
|
73
|
+
]
|
72
74
|
end
|
73
75
|
|
74
76
|
# Checks for equality.
|
@@ -105,31 +107,6 @@ module RTP
|
|
105
107
|
state.hash
|
106
108
|
end
|
107
109
|
|
108
|
-
# Collects the values (attributes) of this instance.
|
109
|
-
#
|
110
|
-
# @note The CRC is not considered part of the actual values and is excluded.
|
111
|
-
# @return [Array<String>] an array of attributes (in the same order as they appear in the RTP string)
|
112
|
-
#
|
113
|
-
def values
|
114
|
-
return [
|
115
|
-
@keyword,
|
116
|
-
@rx_site_name,
|
117
|
-
@patient_orientation,
|
118
|
-
@treatment_machine,
|
119
|
-
@tolerance_table,
|
120
|
-
@iso_pos_x,
|
121
|
-
@iso_pos_y,
|
122
|
-
@iso_pos_z,
|
123
|
-
@structure_set_uid,
|
124
|
-
@frame_of_ref_uid,
|
125
|
-
@couch_vertical,
|
126
|
-
@couch_lateral,
|
127
|
-
@couch_longitudinal,
|
128
|
-
@couch_angle,
|
129
|
-
@couch_pedestal
|
130
|
-
]
|
131
|
-
end
|
132
|
-
|
133
110
|
# Encodes the SiteSetup object + any hiearchy of child objects,
|
134
111
|
# to a properly formatted RTPConnect ascii string.
|
135
112
|
#
|
@@ -155,18 +132,6 @@ module RTP
|
|
155
132
|
self
|
156
133
|
end
|
157
134
|
|
158
|
-
# Sets the keyword attribute.
|
159
|
-
#
|
160
|
-
# @note Since only a specific string is accepted, this is more of an argument check than a traditional setter method
|
161
|
-
# @param [#to_s] value the new attribute value
|
162
|
-
# @raise [ArgumentError] if given an unexpected keyword
|
163
|
-
#
|
164
|
-
def keyword=(value)
|
165
|
-
value = value.to_s.upcase
|
166
|
-
raise ArgumentError, "Invalid keyword. Expected 'SITE_SETUP_DEF', got #{value}." unless value == "SITE_SETUP_DEF"
|
167
|
-
@keyword = value
|
168
|
-
end
|
169
|
-
|
170
135
|
# Sets the rx_site_name attribute.
|
171
136
|
#
|
172
137
|
# @param [nil, #to_s] value the new attribute value
|
@@ -279,6 +244,30 @@ module RTP
|
|
279
244
|
@couch_pedestal = value && value.to_s.strip
|
280
245
|
end
|
281
246
|
|
247
|
+
# Sets the table_top_vert_displacement attribute.
|
248
|
+
#
|
249
|
+
# @param [nil, #to_s] value the new attribute value
|
250
|
+
#
|
251
|
+
def table_top_vert_displacement=(value)
|
252
|
+
@table_top_vert_displacement = value && value.to_s.strip
|
253
|
+
end
|
254
|
+
|
255
|
+
# Sets the table_top_long_displacement attribute.
|
256
|
+
#
|
257
|
+
# @param [nil, #to_s] value the new attribute value
|
258
|
+
#
|
259
|
+
def table_top_long_displacement=(value)
|
260
|
+
@table_top_long_displacement = value && value.to_s.strip
|
261
|
+
end
|
262
|
+
|
263
|
+
# Sets the table_top_lat_displacement attribute.
|
264
|
+
#
|
265
|
+
# @param [nil, #to_s] value the new attribute value
|
266
|
+
#
|
267
|
+
def table_top_lat_displacement=(value)
|
268
|
+
@table_top_lat_displacement = value && value.to_s.strip
|
269
|
+
end
|
270
|
+
|
282
271
|
|
283
272
|
private
|
284
273
|
|
data/lib/rtp-connect/version.rb
CHANGED
data/rakefile.rb
CHANGED
data/rtp-connect.gemspec
CHANGED
@@ -15,14 +15,14 @@ Gem::Specification.new do |s|
|
|
15
15
|
s.license = 'GPLv3'
|
16
16
|
s.description = 'RTPConnect is a file format used in radiotherapy for export & import of treatment planning data.'
|
17
17
|
s.files = Dir["{lib}/**/*", "[A-Z]*"]
|
18
|
-
s.rubyforge_project = 'rtp-connect'
|
19
18
|
|
20
19
|
s.required_ruby_version = '>= 1.9.3'
|
21
20
|
|
22
|
-
s.add_development_dependency('bundler', '~> 1.
|
23
|
-
s.add_development_dependency('dicom', '~> 0.9.
|
24
|
-
s.add_development_dependency('mocha', '~>
|
25
|
-
s.add_development_dependency('rake', '~>
|
26
|
-
s.add_development_dependency('
|
27
|
-
s.add_development_dependency('
|
21
|
+
s.add_development_dependency('bundler', '~> 1.6')
|
22
|
+
s.add_development_dependency('dicom', '~> 0.9', '>= 0.9.6')
|
23
|
+
s.add_development_dependency('mocha', '~> 1.1')
|
24
|
+
s.add_development_dependency('rake', '~> 10.3')
|
25
|
+
s.add_development_dependency('redcarpet', '~> 3.1')
|
26
|
+
s.add_development_dependency('rspec', '~> 3.0')
|
27
|
+
s.add_development_dependency('yard', '~> 0.8', '>= 0.8.7')
|
28
28
|
end
|
metadata
CHANGED
@@ -1,112 +1,125 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rtp-connect
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '1.
|
5
|
-
prerelease:
|
4
|
+
version: '1.7'
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Christoffer Lervag
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-09-17 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: bundler
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version: '1.
|
19
|
+
version: '1.6'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: '1.
|
26
|
+
version: '1.6'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: dicom
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - ~>
|
36
32
|
- !ruby/object:Gem::Version
|
37
|
-
version: 0.9
|
33
|
+
version: '0.9'
|
34
|
+
- - ! '>='
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: 0.9.6
|
38
37
|
type: :development
|
39
38
|
prerelease: false
|
40
39
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
40
|
requirements:
|
43
41
|
- - ~>
|
44
42
|
- !ruby/object:Gem::Version
|
45
|
-
version: 0.9
|
43
|
+
version: '0.9'
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 0.9.6
|
46
47
|
- !ruby/object:Gem::Dependency
|
47
48
|
name: mocha
|
48
49
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
50
|
requirements:
|
51
51
|
- - ~>
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: '
|
53
|
+
version: '1.1'
|
54
54
|
type: :development
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
57
|
requirements:
|
59
58
|
- - ~>
|
60
59
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
60
|
+
version: '1.1'
|
62
61
|
- !ruby/object:Gem::Dependency
|
63
62
|
name: rake
|
64
63
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
64
|
requirements:
|
67
65
|
- - ~>
|
68
66
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
67
|
+
version: '10.3'
|
70
68
|
type: :development
|
71
69
|
prerelease: false
|
72
70
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
71
|
requirements:
|
75
72
|
- - ~>
|
76
73
|
- !ruby/object:Gem::Version
|
77
|
-
version:
|
74
|
+
version: '10.3'
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: redcarpet
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - ~>
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '3.1'
|
82
|
+
type: :development
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - ~>
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '3.1'
|
78
89
|
- !ruby/object:Gem::Dependency
|
79
90
|
name: rspec
|
80
91
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
92
|
requirements:
|
83
93
|
- - ~>
|
84
94
|
- !ruby/object:Gem::Version
|
85
|
-
version: '
|
95
|
+
version: '3.0'
|
86
96
|
type: :development
|
87
97
|
prerelease: false
|
88
98
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
99
|
requirements:
|
91
100
|
- - ~>
|
92
101
|
- !ruby/object:Gem::Version
|
93
|
-
version: '
|
102
|
+
version: '3.0'
|
94
103
|
- !ruby/object:Gem::Dependency
|
95
104
|
name: yard
|
96
105
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
106
|
requirements:
|
99
107
|
- - ~>
|
100
108
|
- !ruby/object:Gem::Version
|
101
|
-
version: 0.8
|
109
|
+
version: '0.8'
|
110
|
+
- - ! '>='
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: 0.8.7
|
102
113
|
type: :development
|
103
114
|
prerelease: false
|
104
115
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
116
|
requirements:
|
107
117
|
- - ~>
|
108
118
|
- !ruby/object:Gem::Version
|
109
|
-
version: 0.8
|
119
|
+
version: '0.8'
|
120
|
+
- - ! '>='
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: 0.8.7
|
110
123
|
description: RTPConnect is a file format used in radiotherapy for export & import
|
111
124
|
of treatment planning data.
|
112
125
|
email: chris.lervag@gmail.com
|
@@ -114,10 +127,17 @@ executables: []
|
|
114
127
|
extensions: []
|
115
128
|
extra_rdoc_files: []
|
116
129
|
files:
|
130
|
+
- CHANGELOG.md
|
131
|
+
- COPYING
|
132
|
+
- Gemfile
|
133
|
+
- Gemfile.lock
|
134
|
+
- README.md
|
135
|
+
- lib/rtp-connect.rb
|
117
136
|
- lib/rtp-connect/constants.rb
|
118
137
|
- lib/rtp-connect/control_point.rb
|
119
138
|
- lib/rtp-connect/dose_tracking.rb
|
120
139
|
- lib/rtp-connect/extended_field.rb
|
140
|
+
- lib/rtp-connect/extended_plan.rb
|
121
141
|
- lib/rtp-connect/field.rb
|
122
142
|
- lib/rtp-connect/logging.rb
|
123
143
|
- lib/rtp-connect/methods.rb
|
@@ -130,41 +150,31 @@ files:
|
|
130
150
|
- lib/rtp-connect/site_setup.rb
|
131
151
|
- lib/rtp-connect/variables.rb
|
132
152
|
- lib/rtp-connect/version.rb
|
133
|
-
- lib/rtp-connect.rb
|
134
|
-
- CHANGELOG.rdoc
|
135
|
-
- COPYING
|
136
|
-
- Gemfile
|
137
|
-
- Gemfile.lock
|
138
153
|
- rakefile.rb
|
139
|
-
- README.rdoc
|
140
154
|
- rtp-connect.gemspec
|
141
155
|
homepage: https://github.com/dicom/rtp-connect
|
142
156
|
licenses:
|
143
157
|
- GPLv3
|
158
|
+
metadata: {}
|
144
159
|
post_install_message:
|
145
160
|
rdoc_options: []
|
146
161
|
require_paths:
|
147
162
|
- lib
|
148
163
|
required_ruby_version: !ruby/object:Gem::Requirement
|
149
|
-
none: false
|
150
164
|
requirements:
|
151
165
|
- - ! '>='
|
152
166
|
- !ruby/object:Gem::Version
|
153
167
|
version: 1.9.3
|
154
168
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
155
|
-
none: false
|
156
169
|
requirements:
|
157
170
|
- - ! '>='
|
158
171
|
- !ruby/object:Gem::Version
|
159
172
|
version: '0'
|
160
|
-
segments:
|
161
|
-
- 0
|
162
|
-
hash: -111446803
|
163
173
|
requirements: []
|
164
|
-
rubyforge_project:
|
165
|
-
rubygems_version:
|
174
|
+
rubyforge_project:
|
175
|
+
rubygems_version: 2.3.0
|
166
176
|
signing_key:
|
167
|
-
specification_version:
|
177
|
+
specification_version: 4
|
168
178
|
summary: Library for handling RTPConnect files.
|
169
179
|
test_files: []
|
170
180
|
has_rdoc:
|