rtp-connect 1.1 → 1.2
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.
- data/CHANGELOG.rdoc +30 -19
- data/COPYING +674 -674
- data/Gemfile +3 -0
- data/Gemfile.lock +35 -0
- data/README.rdoc +12 -6
- data/lib/rtp-connect.rb +24 -22
- data/lib/rtp-connect/constants.rb +57 -57
- data/lib/rtp-connect/control_point.rb +176 -86
- data/lib/rtp-connect/dose_tracking.rb +222 -0
- data/lib/rtp-connect/extended_field.rb +56 -26
- data/lib/rtp-connect/field.rb +163 -43
- data/lib/rtp-connect/logging.rb +155 -158
- data/lib/rtp-connect/methods.rb +3 -4
- data/lib/rtp-connect/plan.rb +136 -52
- data/lib/rtp-connect/plan_to_dcm.rb +503 -0
- data/lib/rtp-connect/prescription.rb +71 -23
- data/lib/rtp-connect/record.rb +18 -2
- data/lib/rtp-connect/ruby_extensions.rb +90 -81
- data/lib/rtp-connect/site_setup.rb +78 -28
- data/lib/rtp-connect/version.rb +5 -5
- data/rakefile.rb +29 -0
- data/rtp-connect.gemspec +29 -0
- metadata +105 -53
@@ -0,0 +1,222 @@
|
|
1
|
+
module RTP
|
2
|
+
|
3
|
+
# The DoseTracking class.
|
4
|
+
#
|
5
|
+
# @note Relations:
|
6
|
+
# * Parent: Plan
|
7
|
+
# * Children: none
|
8
|
+
#
|
9
|
+
class DoseTracking < Record
|
10
|
+
|
11
|
+
# The Record which this instance belongs to.
|
12
|
+
attr_reader :parent
|
13
|
+
# The DoseAction records (if any) that belongs to this DoseTracking.
|
14
|
+
attr_reader :dose_actions
|
15
|
+
attr_reader :region_name
|
16
|
+
attr_reader :region_prior_dose
|
17
|
+
# Note: This attribute contains an array of all field_id values (1..10).
|
18
|
+
attr_reader :field_ids
|
19
|
+
# Note: This attribute contains an array of all reg_coeff values (1..10).
|
20
|
+
attr_reader :region_coeffs
|
21
|
+
attr_reader :actual_dose
|
22
|
+
attr_reader :actual_fractions
|
23
|
+
|
24
|
+
# Creates a new DoseTracking by parsing a RTPConnect string line.
|
25
|
+
#
|
26
|
+
# @param [#to_s] string the dose tracking definition record string line
|
27
|
+
# @param [Record] parent a record which is used to determine the proper parent of this instance
|
28
|
+
# @return [DoseTracking] the created DoseTracking instance
|
29
|
+
# @raise [ArgumentError] if given a string containing an invalid number of elements
|
30
|
+
#
|
31
|
+
def self.load(string, parent)
|
32
|
+
# Get the quote-less values:
|
33
|
+
values = string.to_s.values
|
34
|
+
raise ArgumentError, "Invalid argument 'string': Expected exactly 26 elements, got #{values.length}." unless values.length == 26
|
35
|
+
d = self.new(parent)
|
36
|
+
# Assign the values to attributes:
|
37
|
+
d.keyword = values[0]
|
38
|
+
d.region_name = values[1]
|
39
|
+
d.region_prior_dose = values[2]
|
40
|
+
d.field_ids = values.values_at(3, 5, 7, 9, 11, 13, 15, 17, 19, 21)
|
41
|
+
d.region_coeffs = values.values_at(4, 6, 8, 10, 12, 14, 16, 18, 20, 22)
|
42
|
+
d.actual_dose = values[23]
|
43
|
+
d.actual_fractions = values[24]
|
44
|
+
d.crc = values[25]
|
45
|
+
return d
|
46
|
+
end
|
47
|
+
|
48
|
+
# Creates a new DoseTracking.
|
49
|
+
#
|
50
|
+
# @param [Record] parent a record which is used to determine the proper parent of this instance
|
51
|
+
#
|
52
|
+
def initialize(parent)
|
53
|
+
# Child records:
|
54
|
+
@dose_actions = Array.new
|
55
|
+
# Parent relation (may get more than one type of record here):
|
56
|
+
@parent = get_parent(parent.to_record, Plan)
|
57
|
+
@parent.add_dose_tracking(self)
|
58
|
+
@keyword = 'DOSE_DEF'
|
59
|
+
@field_ids = Array.new(10)
|
60
|
+
@region_coeffs = Array.new(10)
|
61
|
+
end
|
62
|
+
|
63
|
+
# Checks for equality.
|
64
|
+
#
|
65
|
+
# Other and self are considered equivalent if they are
|
66
|
+
# of compatible types and their attributes are equivalent.
|
67
|
+
#
|
68
|
+
# @param other an object to be compared with self.
|
69
|
+
# @return [Boolean] true if self and other are considered equivalent
|
70
|
+
#
|
71
|
+
def ==(other)
|
72
|
+
if other.respond_to?(:to_dose_tracking)
|
73
|
+
other.send(:state) == state
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
alias_method :eql?, :==
|
78
|
+
|
79
|
+
# As of now, gives an empty array. However, by definition, this record may
|
80
|
+
# have dose action (point) records as children, but this is not implemented yet.
|
81
|
+
#
|
82
|
+
# @return [Array] an emtpy array
|
83
|
+
#
|
84
|
+
def children
|
85
|
+
#return @dose_actions
|
86
|
+
return Array.new
|
87
|
+
end
|
88
|
+
|
89
|
+
# Computes a hash code for this object.
|
90
|
+
#
|
91
|
+
# @note Two objects with the same attributes will have the same hash code.
|
92
|
+
#
|
93
|
+
# @return [Fixnum] the object's hash code
|
94
|
+
#
|
95
|
+
def hash
|
96
|
+
state.hash
|
97
|
+
end
|
98
|
+
|
99
|
+
# Collects the values (attributes) of this instance.
|
100
|
+
#
|
101
|
+
# @note The CRC is not considered part of the actual values and is excluded.
|
102
|
+
# @return [Array<String>] an array of attributes (in the same order as they appear in the RTP string)
|
103
|
+
#
|
104
|
+
def values
|
105
|
+
return [
|
106
|
+
@keyword,
|
107
|
+
@region_name,
|
108
|
+
@region_prior_dose,
|
109
|
+
# Need to join every other two elements from these two arrays together:
|
110
|
+
*@field_ids.zip(@region_coeffs).flatten,
|
111
|
+
@actual_dose,
|
112
|
+
@actual_fractions
|
113
|
+
]
|
114
|
+
end
|
115
|
+
|
116
|
+
# Returns self.
|
117
|
+
#
|
118
|
+
# @return [DoseTracking] self
|
119
|
+
#
|
120
|
+
def to_dose_tracking
|
121
|
+
self
|
122
|
+
end
|
123
|
+
|
124
|
+
# Encodes the DoseTracking object + any hiearchy of child objects,
|
125
|
+
# to a properly formatted RTPConnect ascii string.
|
126
|
+
#
|
127
|
+
# @return [String] an RTP string with a single or multiple lines/records
|
128
|
+
#
|
129
|
+
def to_s
|
130
|
+
str = encode
|
131
|
+
if children
|
132
|
+
children.each do |child|
|
133
|
+
str += child.to_s
|
134
|
+
end
|
135
|
+
end
|
136
|
+
return str
|
137
|
+
end
|
138
|
+
|
139
|
+
alias :to_str :to_s
|
140
|
+
|
141
|
+
# Sets the field_ids attribute.
|
142
|
+
#
|
143
|
+
# @note As opposed to the ordinary (string) attributes, this attribute
|
144
|
+
# contains an array holding all 10 Field ID string values.
|
145
|
+
# @param [Array<nil, #to_s>] array the new attribute values
|
146
|
+
#
|
147
|
+
def field_ids=(array)
|
148
|
+
array = array.to_a
|
149
|
+
raise ArgumentError, "Invalid argument 'array'. Expected length 10, got #{array.length}." unless array.length == 10
|
150
|
+
@field_ids = array.collect! {|e| e && e.to_s}
|
151
|
+
end
|
152
|
+
|
153
|
+
# Sets the region_coeffs attribute.
|
154
|
+
#
|
155
|
+
# @note As opposed to the ordinary (string) attributes, this attribute
|
156
|
+
# contains an array holding all 10 Region Coeff string values.
|
157
|
+
# @param [Array<nil, #to_s>] array the new attribute values
|
158
|
+
#
|
159
|
+
def region_coeffs=(array)
|
160
|
+
array = array.to_a
|
161
|
+
raise ArgumentError, "Invalid argument 'array'. Expected length 10, got #{array.length}." unless array.length == 10
|
162
|
+
@region_coeffs = array.collect! {|e| e && e.to_s}
|
163
|
+
end
|
164
|
+
|
165
|
+
# Sets the keyword attribute.
|
166
|
+
#
|
167
|
+
# @note Since only a specific string is accepted, this is more of an argument check than a traditional setter method
|
168
|
+
# @param [#to_s] value the new attribute value
|
169
|
+
# @raise [ArgumentError] if given an unexpected keyword
|
170
|
+
#
|
171
|
+
def keyword=(value)
|
172
|
+
value = value.to_s.upcase
|
173
|
+
raise ArgumentError, "Invalid keyword. Expected 'DOSE_DEF', got #{value}." unless value == "DOSE_DEF"
|
174
|
+
@keyword = value
|
175
|
+
end
|
176
|
+
|
177
|
+
# Sets the region_name attribute.
|
178
|
+
#
|
179
|
+
# @param [nil, #to_s] value the new attribute value
|
180
|
+
#
|
181
|
+
def region_name=(value)
|
182
|
+
@region_name = value && value.to_s
|
183
|
+
end
|
184
|
+
|
185
|
+
# Sets the region_prior_dose attribute.
|
186
|
+
#
|
187
|
+
# @param [nil, #to_s] value the new attribute value
|
188
|
+
#
|
189
|
+
def region_prior_dose=(value)
|
190
|
+
@region_prior_dose = value && value.to_s
|
191
|
+
end
|
192
|
+
|
193
|
+
# Sets the actual_dose attribute.
|
194
|
+
#
|
195
|
+
# @param [nil, #to_s] value the new attribute value
|
196
|
+
#
|
197
|
+
def actual_dose=(value)
|
198
|
+
@actual_dose = value && value.to_s
|
199
|
+
end
|
200
|
+
|
201
|
+
# Sets the actual_fractions attribute.
|
202
|
+
#
|
203
|
+
# @param [nil, #to_s] value the new attribute value
|
204
|
+
#
|
205
|
+
def actual_fractions=(value)
|
206
|
+
@actual_fractions = value && value.to_s
|
207
|
+
end
|
208
|
+
|
209
|
+
|
210
|
+
private
|
211
|
+
|
212
|
+
|
213
|
+
# Collects the attributes of this instance.
|
214
|
+
#
|
215
|
+
# @note The CRC is not considered part of the attributes of interest and is excluded
|
216
|
+
# @return [Array<String>] an array of attributes
|
217
|
+
#
|
218
|
+
alias_method :state, :values
|
219
|
+
|
220
|
+
end
|
221
|
+
|
222
|
+
end
|
@@ -2,10 +2,9 @@ module RTP
|
|
2
2
|
|
3
3
|
# The ExtendedField class.
|
4
4
|
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
# * Children: none
|
5
|
+
# @note Relations:
|
6
|
+
# * Parent: Field
|
7
|
+
# * Children: none
|
9
8
|
#
|
10
9
|
class ExtendedField < Record
|
11
10
|
|
@@ -18,31 +17,29 @@ module RTP
|
|
18
17
|
|
19
18
|
# Creates a new (treatment) ExtendedField by parsing a RTPConnect string line.
|
20
19
|
#
|
21
|
-
#
|
22
|
-
#
|
23
|
-
#
|
24
|
-
#
|
20
|
+
# @param [#to_s] string the extended treatment field definition record string line
|
21
|
+
# @param [Record] parent a record which is used to determine the proper parent of this instance
|
22
|
+
# @return [ExtendedField] the created ExtendedField instance
|
23
|
+
# @raise [ArgumentError] if given a string containing an invalid number of elements
|
25
24
|
#
|
26
25
|
def self.load(string, parent)
|
27
26
|
# Get the quote-less values:
|
28
27
|
values = string.to_s.values
|
29
28
|
raise ArgumentError, "Invalid argument 'string': Expected exactly 6 elements, got #{values.length}." unless values.length == 6
|
30
|
-
|
29
|
+
ef = self.new(parent)
|
31
30
|
# Assign the values to attributes:
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
return
|
31
|
+
ef.keyword = values[0]
|
32
|
+
ef.field_id = values[1]
|
33
|
+
ef.original_plan_uid = values[2]
|
34
|
+
ef.original_beam_number = values[3]
|
35
|
+
ef.original_beam_name = values[4]
|
36
|
+
ef.crc = values[5]
|
37
|
+
return ef
|
39
38
|
end
|
40
39
|
|
41
40
|
# Creates a new (treatment) ExtendedField.
|
42
41
|
#
|
43
|
-
#
|
44
|
-
#
|
45
|
-
# * <tt>parent</tt> -- A Record which is used to determine the proper parent of this instance.
|
42
|
+
# @param [Record] parent a record which is used to determine the proper parent of this instance
|
46
43
|
#
|
47
44
|
def initialize(parent)
|
48
45
|
# Parent relation (may get more than one type of record here):
|
@@ -51,7 +48,13 @@ module RTP
|
|
51
48
|
@keyword = 'EXTENDED_FIELD_DEF'
|
52
49
|
end
|
53
50
|
|
54
|
-
#
|
51
|
+
# Checks for equality.
|
52
|
+
#
|
53
|
+
# Other and self are considered equivalent if they are
|
54
|
+
# of compatible types and their attributes are equivalent.
|
55
|
+
#
|
56
|
+
# @param other an object to be compared with self.
|
57
|
+
# @return [Boolean] true if self and other are considered equivalent
|
55
58
|
#
|
56
59
|
def ==(other)
|
57
60
|
if other.respond_to?(:to_extended_field)
|
@@ -61,20 +64,28 @@ module RTP
|
|
61
64
|
|
62
65
|
alias_method :eql?, :==
|
63
66
|
|
64
|
-
#
|
67
|
+
# Gives an empty array, as these instances are child-less by definition.
|
68
|
+
#
|
69
|
+
# @return [Array] an emtpy array
|
65
70
|
#
|
66
71
|
def children
|
67
72
|
return Array.new
|
68
73
|
end
|
69
74
|
|
70
|
-
#
|
75
|
+
# Computes a hash code for this object.
|
76
|
+
#
|
77
|
+
# @note Two objects with the same attributes will have the same hash code.
|
78
|
+
#
|
79
|
+
# @return [Fixnum] the object's hash code
|
71
80
|
#
|
72
81
|
def hash
|
73
82
|
state.hash
|
74
83
|
end
|
75
84
|
|
76
|
-
#
|
77
|
-
#
|
85
|
+
# Collects the values (attributes) of this instance.
|
86
|
+
#
|
87
|
+
# @note The CRC is not considered part of the actual values and is excluded.
|
88
|
+
# @return [Array<String>] an array of attributes (in the same order as they appear in the RTP string)
|
78
89
|
#
|
79
90
|
def values
|
80
91
|
return [
|
@@ -88,13 +99,17 @@ module RTP
|
|
88
99
|
|
89
100
|
# Returns self.
|
90
101
|
#
|
102
|
+
# @return [ExtendedField] self
|
103
|
+
#
|
91
104
|
def to_extended_field
|
92
105
|
self
|
93
106
|
end
|
94
107
|
|
95
|
-
#
|
108
|
+
# Encodes the ExtendedField object + any hiearchy of child objects,
|
96
109
|
# to a properly formatted RTPConnect ascii string.
|
97
110
|
#
|
111
|
+
# @return [String] an RTP string with a single or multiple lines/records
|
112
|
+
#
|
98
113
|
def to_s
|
99
114
|
str = encode
|
100
115
|
if children
|
@@ -109,6 +124,10 @@ module RTP
|
|
109
124
|
|
110
125
|
# Sets the keyword attribute.
|
111
126
|
#
|
127
|
+
# @note Since only a specific string is accepted, this is more of an argument check than a traditional setter method
|
128
|
+
# @param [#to_s] value the new attribute value
|
129
|
+
# @raise [ArgumentError] if given an unexpected keyword
|
130
|
+
#
|
112
131
|
def keyword=(value)
|
113
132
|
value = value.to_s.upcase
|
114
133
|
raise ArgumentError, "Invalid keyword. Expected 'EXTENDED_FIELD_DEF', got #{value}." unless value == "EXTENDED_FIELD_DEF"
|
@@ -117,24 +136,32 @@ module RTP
|
|
117
136
|
|
118
137
|
# Sets the field_id attribute.
|
119
138
|
#
|
139
|
+
# @param [nil, #to_s] value the new attribute value
|
140
|
+
#
|
120
141
|
def field_id=(value)
|
121
142
|
@field_id = value && value.to_s
|
122
143
|
end
|
123
144
|
|
124
145
|
# Sets the original_plan_uid attribute.
|
125
146
|
#
|
147
|
+
# @param [nil, #to_s] value the new attribute value
|
148
|
+
#
|
126
149
|
def original_plan_uid=(value)
|
127
150
|
@original_plan_uid = value && value.to_s
|
128
151
|
end
|
129
152
|
|
130
153
|
# Sets the original_beam_number attribute.
|
131
154
|
#
|
155
|
+
# @param [nil, #to_s] value the new attribute value
|
156
|
+
#
|
132
157
|
def original_beam_number=(value)
|
133
158
|
@original_beam_number = value && value.to_s
|
134
159
|
end
|
135
160
|
|
136
161
|
# Sets the original_beam_name attribute.
|
137
162
|
#
|
163
|
+
# @param [nil, #to_s] value the new attribute value
|
164
|
+
#
|
138
165
|
def original_beam_name=(value)
|
139
166
|
@original_beam_name = value && value.to_s
|
140
167
|
end
|
@@ -143,7 +170,10 @@ module RTP
|
|
143
170
|
private
|
144
171
|
|
145
172
|
|
146
|
-
#
|
173
|
+
# Collects the attributes of this instance.
|
174
|
+
#
|
175
|
+
# @note The CRC is not considered part of the attributes of interest and is excluded
|
176
|
+
# @return [Array<String>] an array of attributes
|
147
177
|
#
|
148
178
|
alias_method :state, :values
|
149
179
|
|
data/lib/rtp-connect/field.rb
CHANGED
@@ -2,10 +2,9 @@ module RTP
|
|
2
2
|
|
3
3
|
# The treatment Field class.
|
4
4
|
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
# * Children: ExtendedField, ControlPoint
|
5
|
+
# @note Relations:
|
6
|
+
# * Parent: Prescription
|
7
|
+
# * Children: ExtendedField, ControlPoint
|
9
8
|
#
|
10
9
|
class Field < Record
|
11
10
|
|
@@ -65,10 +64,10 @@ module RTP
|
|
65
64
|
|
66
65
|
# Creates a new (treatment) Field by parsing a RTPConnect string line.
|
67
66
|
#
|
68
|
-
#
|
69
|
-
#
|
70
|
-
#
|
71
|
-
#
|
67
|
+
# @param [#to_s] string the treatment field definition record string line
|
68
|
+
# @param [Record] parent a record which is used to determine the proper parent of this instance
|
69
|
+
# @return [Field] the created Field instance
|
70
|
+
# @raise [ArgumentError] if given a string containing an invalid number of elements
|
72
71
|
#
|
73
72
|
def self.load(string, parent)
|
74
73
|
# Get the quote-less values:
|
@@ -130,9 +129,7 @@ module RTP
|
|
130
129
|
|
131
130
|
# Creates a new (treatment) Field.
|
132
131
|
#
|
133
|
-
#
|
134
|
-
#
|
135
|
-
# * <tt>parent</tt> -- A Record which is used to determine the proper parent of this instance.
|
132
|
+
# @param [Record] parent a record which is used to determine the proper parent of this instance
|
136
133
|
#
|
137
134
|
def initialize(parent)
|
138
135
|
# Child records:
|
@@ -144,7 +141,13 @@ module RTP
|
|
144
141
|
@keyword = 'FIELD_DEF'
|
145
142
|
end
|
146
143
|
|
147
|
-
#
|
144
|
+
# Checks for equality.
|
145
|
+
#
|
146
|
+
# Other and self are considered equivalent if they are
|
147
|
+
# of compatible types and their attributes are equivalent.
|
148
|
+
#
|
149
|
+
# @param other an object to be compared with self.
|
150
|
+
# @return [Boolean] true if self and other are considered equivalent
|
148
151
|
#
|
149
152
|
def ==(other)
|
150
153
|
if other.respond_to?(:to_field)
|
@@ -156,30 +159,42 @@ module RTP
|
|
156
159
|
|
157
160
|
# Adds a control point record to this instance.
|
158
161
|
#
|
162
|
+
# @param [ControlPoint] child a ControlPoint instance which is to be associated with self
|
163
|
+
#
|
159
164
|
def add_control_point(child)
|
160
165
|
@control_points << child.to_control_point
|
161
166
|
end
|
162
167
|
|
163
|
-
#
|
168
|
+
# Adds an extended treatment field record to this instance.
|
169
|
+
#
|
170
|
+
# @param [ExtendedField] child an ExtendedField instance which is to be associated with self
|
164
171
|
#
|
165
172
|
def add_extended_field(child)
|
166
173
|
@extended_field = child.to_extended_field
|
167
174
|
end
|
168
175
|
|
169
|
-
#
|
176
|
+
# Collects the child records of this instance in a properly sorted array.
|
177
|
+
#
|
178
|
+
# @return [Array<ExtendedField, ControlPoint>] a sorted array of self's child records
|
170
179
|
#
|
171
180
|
def children
|
172
181
|
return [@extended_field, @control_points].flatten.compact
|
173
182
|
end
|
174
183
|
|
175
|
-
#
|
184
|
+
# Computes a hash code for this object.
|
185
|
+
#
|
186
|
+
# @note Two objects with the same attributes will have the same hash code.
|
187
|
+
#
|
188
|
+
# @return [Fixnum] the object's hash code
|
176
189
|
#
|
177
190
|
def hash
|
178
191
|
state.hash
|
179
192
|
end
|
180
193
|
|
181
|
-
#
|
182
|
-
#
|
194
|
+
# Collects the values (attributes) of this instance.
|
195
|
+
#
|
196
|
+
# @note The CRC is not considered part of the actual values and is excluded.
|
197
|
+
# @return [Array<String>] an array of attributes (in the same order as they appear in the RTP string)
|
183
198
|
#
|
184
199
|
def values
|
185
200
|
return [
|
@@ -236,13 +251,17 @@ module RTP
|
|
236
251
|
|
237
252
|
# Returns self.
|
238
253
|
#
|
254
|
+
# @return [Field] self
|
255
|
+
#
|
239
256
|
def to_field
|
240
257
|
self
|
241
258
|
end
|
242
259
|
|
243
|
-
#
|
260
|
+
# Encodes the Field object + any hiearchy of child objects,
|
244
261
|
# to a properly formatted RTPConnect ascii string.
|
245
262
|
#
|
263
|
+
# @return [String] an RTP string with a single or multiple lines/records
|
264
|
+
#
|
246
265
|
def to_s
|
247
266
|
str = encode
|
248
267
|
if children
|
@@ -257,6 +276,10 @@ module RTP
|
|
257
276
|
|
258
277
|
# Sets the keyword attribute.
|
259
278
|
#
|
279
|
+
# @note Since only a specific string is accepted, this is more of an argument check than a traditional setter method
|
280
|
+
# @param [#to_s] value the new attribute value
|
281
|
+
# @raise [ArgumentError] if given an unexpected keyword
|
282
|
+
#
|
260
283
|
def keyword=(value)
|
261
284
|
value = value.to_s.upcase
|
262
285
|
raise ArgumentError, "Invalid keyword. Expected 'FIELD_DEF', got #{value}." unless value == "FIELD_DEF"
|
@@ -265,282 +288,376 @@ module RTP
|
|
265
288
|
|
266
289
|
# Sets the rx_site_name attribute.
|
267
290
|
#
|
291
|
+
# @param [nil, #to_s] value the new attribute value
|
292
|
+
#
|
268
293
|
def rx_site_name=(value)
|
269
294
|
@rx_site_name = value && value.to_s
|
270
295
|
end
|
271
296
|
|
272
297
|
# Sets the field_name attribute.
|
273
298
|
#
|
299
|
+
# @param [nil, #to_s] value the new attribute value
|
300
|
+
#
|
274
301
|
def field_name=(value)
|
275
302
|
@field_name = value && value.to_s
|
276
303
|
end
|
277
304
|
|
278
305
|
# Sets the field_id attribute.
|
279
306
|
#
|
307
|
+
# @param [nil, #to_s] value the new attribute value
|
308
|
+
#
|
280
309
|
def field_id=(value)
|
281
310
|
@field_id = value && value.to_s
|
282
311
|
end
|
283
312
|
|
284
313
|
# Sets the field_note attribute.
|
285
314
|
#
|
315
|
+
# @param [nil, #to_s] value the new attribute value
|
316
|
+
#
|
286
317
|
def field_note=(value)
|
287
318
|
@field_note = value && value.to_s
|
288
319
|
end
|
289
320
|
|
290
321
|
# Sets the field_dose attribute.
|
291
322
|
#
|
323
|
+
# @param [nil, #to_s] value the new attribute value
|
324
|
+
#
|
292
325
|
def field_dose=(value)
|
293
|
-
@field_dose = value && value.to_s
|
326
|
+
@field_dose = value && value.to_s.strip
|
294
327
|
end
|
295
328
|
|
296
329
|
# Sets the field_monitor_units attribute.
|
297
330
|
#
|
331
|
+
# @param [nil, #to_s] value the new attribute value
|
332
|
+
#
|
298
333
|
def field_monitor_units=(value)
|
299
|
-
@field_monitor_units = value && value.to_s
|
334
|
+
@field_monitor_units = value && value.to_s.strip
|
300
335
|
end
|
301
336
|
|
302
337
|
# Sets the wedge_monitor_units attribute.
|
303
338
|
#
|
339
|
+
# @param [nil, #to_s] value the new attribute value
|
340
|
+
#
|
304
341
|
def wedge_monitor_units=(value)
|
305
|
-
@wedge_monitor_units = value && value.to_s
|
342
|
+
@wedge_monitor_units = value && value.to_s.strip
|
306
343
|
end
|
307
344
|
|
308
345
|
# Sets the treatment_machine attribute.
|
309
346
|
#
|
347
|
+
# @param [nil, #to_s] value the new attribute value
|
348
|
+
#
|
310
349
|
def treatment_machine=(value)
|
311
350
|
@treatment_machine = value && value.to_s
|
312
351
|
end
|
313
352
|
|
314
353
|
# Sets the treatment_type attribute.
|
315
354
|
#
|
355
|
+
# @param [nil, #to_s] value the new attribute value
|
356
|
+
#
|
316
357
|
def treatment_type=(value)
|
317
358
|
@treatment_type = value && value.to_s
|
318
359
|
end
|
319
360
|
|
320
361
|
# Sets the modality attribute.
|
321
362
|
#
|
363
|
+
# @param [nil, #to_s] value the new attribute value
|
364
|
+
#
|
322
365
|
def modality=(value)
|
323
366
|
@modality = value && value.to_s
|
324
367
|
end
|
325
368
|
|
326
369
|
# Sets the energy attribute.
|
327
370
|
#
|
371
|
+
# @param [nil, #to_s] value the new attribute value
|
372
|
+
#
|
328
373
|
def energy=(value)
|
329
374
|
@energy = value && value.to_s
|
330
375
|
end
|
331
376
|
|
332
377
|
# Sets the time attribute.
|
333
378
|
#
|
379
|
+
# @param [nil, #to_s] value the new attribute value
|
380
|
+
#
|
334
381
|
def time=(value)
|
335
|
-
@time = value && value.to_s
|
382
|
+
@time = value && value.to_s.strip
|
336
383
|
end
|
337
384
|
|
338
385
|
# Sets the doserate attribute.
|
339
386
|
#
|
387
|
+
# @param [nil, #to_s] value the new attribute value
|
388
|
+
#
|
340
389
|
def doserate=(value)
|
341
|
-
@doserate = value && value.to_s
|
390
|
+
@doserate = value && value.to_s.strip
|
342
391
|
end
|
343
392
|
|
344
393
|
# Sets the sad attribute.
|
345
394
|
#
|
395
|
+
# @param [nil, #to_s] value the new attribute value
|
396
|
+
#
|
346
397
|
def sad=(value)
|
347
|
-
@sad = value && value.to_s
|
398
|
+
@sad = value && value.to_s.strip
|
348
399
|
end
|
349
400
|
|
350
401
|
# Sets the ssd attribute.
|
351
402
|
#
|
403
|
+
# @param [nil, #to_s] value the new attribute value
|
404
|
+
#
|
352
405
|
def ssd=(value)
|
353
|
-
@ssd = value && value.to_s
|
406
|
+
@ssd = value && value.to_s.strip
|
354
407
|
end
|
355
408
|
|
356
409
|
# Sets the gantry_angle attribute.
|
357
410
|
#
|
411
|
+
# @param [nil, #to_s] value the new attribute value
|
412
|
+
#
|
358
413
|
def gantry_angle=(value)
|
359
|
-
@gantry_angle = value && value.to_s
|
414
|
+
@gantry_angle = value && value.to_s.strip
|
360
415
|
end
|
361
416
|
|
362
417
|
# Sets the collimator_angle attribute.
|
363
418
|
#
|
419
|
+
# @param [nil, #to_s] value the new attribute value
|
420
|
+
#
|
364
421
|
def collimator_angle=(value)
|
365
|
-
@collimator_angle = value && value.to_s
|
422
|
+
@collimator_angle = value && value.to_s.strip
|
366
423
|
end
|
367
424
|
|
368
425
|
# Sets the field_x_mode attribute.
|
369
426
|
#
|
427
|
+
# @param [nil, #to_s] value the new attribute value
|
428
|
+
#
|
370
429
|
def field_x_mode=(value)
|
371
430
|
@field_x_mode = value && value.to_s
|
372
431
|
end
|
373
432
|
|
374
433
|
# Sets the field_x attribute.
|
375
434
|
#
|
435
|
+
# @param [nil, #to_s] value the new attribute value
|
436
|
+
#
|
376
437
|
def field_x=(value)
|
377
|
-
@field_x = value && value.to_s
|
438
|
+
@field_x = value && value.to_s.strip
|
378
439
|
end
|
379
440
|
|
380
441
|
# Sets the collimator_x1 attribute.
|
381
442
|
#
|
443
|
+
# @param [nil, #to_s] value the new attribute value
|
444
|
+
#
|
382
445
|
def collimator_x1=(value)
|
383
|
-
@collimator_x1 = value && value.to_s
|
446
|
+
@collimator_x1 = value && value.to_s.strip
|
384
447
|
end
|
385
448
|
|
386
449
|
# Sets the collimator_x2 attribute.
|
387
450
|
#
|
451
|
+
# @param [nil, #to_s] value the new attribute value
|
452
|
+
#
|
388
453
|
def collimator_x2=(value)
|
389
|
-
@collimator_x2 = value && value.to_s
|
454
|
+
@collimator_x2 = value && value.to_s.strip
|
390
455
|
end
|
391
456
|
|
392
457
|
# Sets the field_y_mode attribute.
|
393
458
|
#
|
459
|
+
# @param [nil, #to_s] value the new attribute value
|
460
|
+
#
|
394
461
|
def field_y_mode=(value)
|
395
462
|
@field_y_mode = value && value.to_s
|
396
463
|
end
|
397
464
|
|
398
465
|
# Sets the field_y attribute.
|
399
466
|
#
|
467
|
+
# @param [nil, #to_s] value the new attribute value
|
468
|
+
#
|
400
469
|
def field_y=(value)
|
401
|
-
@field_y = value && value.to_s
|
470
|
+
@field_y = value && value.to_s.strip
|
402
471
|
end
|
403
472
|
|
404
473
|
# Sets the collimator_y1 attribute.
|
405
474
|
#
|
475
|
+
# @param [nil, #to_s] value the new attribute value
|
476
|
+
#
|
406
477
|
def collimator_y1=(value)
|
407
|
-
@collimator_y1 = value && value.to_s
|
478
|
+
@collimator_y1 = value && value.to_s.strip
|
408
479
|
end
|
409
480
|
|
410
481
|
# Sets the collimator_y2 attribute.
|
411
482
|
#
|
483
|
+
# @param [nil, #to_s] value the new attribute value
|
484
|
+
#
|
412
485
|
def collimator_y2=(value)
|
413
|
-
@collimator_y2 = value && value.to_s
|
486
|
+
@collimator_y2 = value && value.to_s.strip
|
414
487
|
end
|
415
488
|
|
416
489
|
# Sets the couch_vertical attribute.
|
417
490
|
#
|
491
|
+
# @param [nil, #to_s] value the new attribute value
|
492
|
+
#
|
418
493
|
def couch_vertical=(value)
|
419
|
-
@couch_vertical = value && value.to_s
|
494
|
+
@couch_vertical = value && value.to_s.strip
|
420
495
|
end
|
421
496
|
|
422
497
|
# Sets the couch_lateral attribute.
|
423
498
|
#
|
499
|
+
# @param [nil, #to_s] value the new attribute value
|
500
|
+
#
|
424
501
|
def couch_lateral=(value)
|
425
|
-
@couch_lateral = value && value.to_s
|
502
|
+
@couch_lateral = value && value.to_s.strip
|
426
503
|
end
|
427
504
|
|
428
505
|
# Sets the couch_longitudinal attribute.
|
429
506
|
#
|
507
|
+
# @param [nil, #to_s] value the new attribute value
|
508
|
+
#
|
430
509
|
def couch_longitudinal=(value)
|
431
|
-
@couch_longitudinal = value && value.to_s
|
510
|
+
@couch_longitudinal = value && value.to_s.strip
|
432
511
|
end
|
433
512
|
|
434
513
|
# Sets the couch_angle attribute.
|
435
514
|
#
|
515
|
+
# @param [nil, #to_s] value the new attribute value
|
516
|
+
#
|
436
517
|
def couch_angle=(value)
|
437
|
-
@couch_angle = value && value.to_s
|
518
|
+
@couch_angle = value && value.to_s.strip.strip
|
438
519
|
end
|
439
520
|
|
440
521
|
# Sets the couch_pedestal attribute.
|
441
522
|
#
|
523
|
+
# @param [nil, #to_s] value the new attribute value
|
524
|
+
#
|
442
525
|
def couch_pedestal=(value)
|
443
|
-
@couch_pedestal = value && value.to_s
|
526
|
+
@couch_pedestal = value && value.to_s.strip
|
444
527
|
end
|
445
528
|
|
446
529
|
# Sets the tolerance_table attribute.
|
447
530
|
#
|
531
|
+
# @param [nil, #to_s] value the new attribute value
|
532
|
+
#
|
448
533
|
def tolerance_table=(value)
|
449
|
-
@tolerance_table = value && value.to_s
|
534
|
+
@tolerance_table = value && value.to_s.strip
|
450
535
|
end
|
451
536
|
|
452
537
|
# Sets the arc_direction attribute.
|
453
538
|
#
|
539
|
+
# @param [nil, #to_s] value the new attribute value
|
540
|
+
#
|
454
541
|
def arc_direction=(value)
|
455
542
|
@arc_direction = value && value.to_s
|
456
543
|
end
|
457
544
|
|
458
545
|
# Sets the arc_start_angle attribute.
|
459
546
|
#
|
547
|
+
# @param [nil, #to_s] value the new attribute value
|
548
|
+
#
|
460
549
|
def arc_start_angle=(value)
|
461
|
-
@arc_start_angle = value && value.to_s
|
550
|
+
@arc_start_angle = value && value.to_s.strip
|
462
551
|
end
|
463
552
|
|
464
553
|
# Sets the arc_stop_angle attribute.
|
465
554
|
#
|
555
|
+
# @param [nil, #to_s] value the new attribute value
|
556
|
+
#
|
466
557
|
def arc_stop_angle=(value)
|
467
|
-
@arc_stop_angle = value && value.to_s
|
558
|
+
@arc_stop_angle = value && value.to_s.strip
|
468
559
|
end
|
469
560
|
|
470
561
|
# Sets the arc_mu_degree attribute.
|
471
562
|
#
|
563
|
+
# @param [nil, #to_s] value the new attribute value
|
564
|
+
#
|
472
565
|
def arc_mu_degree=(value)
|
473
|
-
@arc_mu_degree = value && value.to_s
|
566
|
+
@arc_mu_degree = value && value.to_s.strip
|
474
567
|
end
|
475
568
|
|
476
569
|
# Sets the wedge attribute.
|
477
570
|
#
|
571
|
+
# @param [nil, #to_s] value the new attribute value
|
572
|
+
#
|
478
573
|
def wedge=(value)
|
479
574
|
@wedge = value && value.to_s
|
480
575
|
end
|
481
576
|
|
482
577
|
# Sets the dynamic_wedge attribute.
|
483
578
|
#
|
579
|
+
# @param [nil, #to_s] value the new attribute value
|
580
|
+
#
|
484
581
|
def dynamic_wedge=(value)
|
485
582
|
@dynamic_wedge = value && value.to_s
|
486
583
|
end
|
487
584
|
|
488
585
|
# Sets the block attribute.
|
489
586
|
#
|
587
|
+
# @param [nil, #to_s] value the new attribute value
|
588
|
+
#
|
490
589
|
def block=(value)
|
491
590
|
@block = value && value.to_s
|
492
591
|
end
|
493
592
|
|
494
593
|
# Sets the compensator attribute.
|
495
594
|
#
|
595
|
+
# @param [nil, #to_s] value the new attribute value
|
596
|
+
#
|
496
597
|
def compensator=(value)
|
497
598
|
@compensator = value && value.to_s
|
498
599
|
end
|
499
600
|
|
500
601
|
# Sets the e_applicator attribute.
|
501
602
|
#
|
603
|
+
# @param [nil, #to_s] value the new attribute value
|
604
|
+
#
|
502
605
|
def e_applicator=(value)
|
503
606
|
@e_applicator = value && value.to_s
|
504
607
|
end
|
505
608
|
|
506
609
|
# Sets the e_field_def_aperture attribute.
|
507
610
|
#
|
611
|
+
# @param [nil, #to_s] value the new attribute value
|
612
|
+
#
|
508
613
|
def e_field_def_aperture=(value)
|
509
614
|
@e_field_def_aperture = value && value.to_s
|
510
615
|
end
|
511
616
|
|
512
617
|
# Sets the bolus attribute.
|
513
618
|
#
|
619
|
+
# @param [nil, #to_s] value the new attribute value
|
620
|
+
#
|
514
621
|
def bolus=(value)
|
515
622
|
@bolus = value && value.to_s
|
516
623
|
end
|
517
624
|
|
518
625
|
# Sets the portfilm_mu_open attribute.
|
519
626
|
#
|
627
|
+
# @param [nil, #to_s] value the new attribute value
|
628
|
+
#
|
520
629
|
def portfilm_mu_open=(value)
|
521
630
|
@portfilm_mu_open = value && value.to_s
|
522
631
|
end
|
523
632
|
|
524
633
|
# Sets the portfilm_coeff_open attribute.
|
525
634
|
#
|
635
|
+
# @param [nil, #to_s] value the new attribute value
|
636
|
+
#
|
526
637
|
def portfilm_coeff_open=(value)
|
527
638
|
@portfilm_coeff_open = value && value.to_s
|
528
639
|
end
|
529
640
|
|
530
641
|
# Sets the portfilm_delta_open attribute.
|
531
642
|
#
|
643
|
+
# @param [nil, #to_s] value the new attribute value
|
644
|
+
#
|
532
645
|
def portfilm_delta_open=(value)
|
533
646
|
@portfilm_delta_open = value && value.to_s
|
534
647
|
end
|
535
648
|
|
536
649
|
# Sets the portfilm_mu_treat attribute.
|
537
650
|
#
|
651
|
+
# @param [nil, #to_s] value the new attribute value
|
652
|
+
#
|
538
653
|
def portfilm_mu_treat=(value)
|
539
654
|
@portfilm_mu_treat = value && value.to_s
|
540
655
|
end
|
541
656
|
|
542
657
|
# Sets the portfilm_coeff_treat attribute.
|
543
658
|
#
|
659
|
+
# @param [nil, #to_s] value the new attribute value
|
660
|
+
#
|
544
661
|
def portfilm_coeff_treat=(value)
|
545
662
|
@portfilm_coeff_treat = value && value.to_s
|
546
663
|
end
|
@@ -549,7 +666,10 @@ module RTP
|
|
549
666
|
private
|
550
667
|
|
551
668
|
|
552
|
-
#
|
669
|
+
# Collects the attributes of this instance.
|
670
|
+
#
|
671
|
+
# @note The CRC is not considered part of the attributes of interest and is excluded
|
672
|
+
# @return [Array<String>] an array of attributes
|
553
673
|
#
|
554
674
|
alias_method :state, :values
|
555
675
|
|