rtp-connect 1.0
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 +9 -0
- data/COPYING +674 -0
- data/README.rdoc +128 -0
- data/lib/rtp-connect.rb +20 -0
- data/lib/rtp-connect/constants.rb +58 -0
- data/lib/rtp-connect/control_point.rb +444 -0
- data/lib/rtp-connect/extended_field.rb +127 -0
- data/lib/rtp-connect/field.rb +578 -0
- data/lib/rtp-connect/logging.rb +158 -0
- data/lib/rtp-connect/methods.rb +31 -0
- data/lib/rtp-connect/plan.rb +545 -0
- data/lib/rtp-connect/prescription.rb +218 -0
- data/lib/rtp-connect/record.rb +37 -0
- data/lib/rtp-connect/ruby_extensions.rb +82 -0
- data/lib/rtp-connect/site_setup.rb +227 -0
- data/lib/rtp-connect/variables.rb +19 -0
- data/lib/rtp-connect/version.rb +6 -0
- metadata +113 -0
@@ -0,0 +1,218 @@
|
|
1
|
+
module RTP
|
2
|
+
|
3
|
+
# The Prescription site class.
|
4
|
+
#
|
5
|
+
# === Relations
|
6
|
+
#
|
7
|
+
# * Parent: Plan
|
8
|
+
# * Children: SiteSetup, (SimulationField), Field
|
9
|
+
#
|
10
|
+
class Prescription < Record
|
11
|
+
|
12
|
+
# The Record which this instance belongs to.
|
13
|
+
attr_reader :parent
|
14
|
+
# The SiteSetup record (if any) that belongs to this Prescription.
|
15
|
+
attr_reader :site_setup
|
16
|
+
# An array of Field records (if any) that belongs to this Prescription.
|
17
|
+
attr_reader :fields
|
18
|
+
attr_reader :course_id
|
19
|
+
attr_reader :rx_site_name
|
20
|
+
attr_reader :technique
|
21
|
+
attr_reader :modality
|
22
|
+
attr_reader :dose_spec
|
23
|
+
attr_reader :rx_depth
|
24
|
+
attr_reader :dose_ttl
|
25
|
+
attr_reader :dose_tx
|
26
|
+
attr_reader :pattern
|
27
|
+
attr_reader :rx_note
|
28
|
+
attr_reader :number_of_fields
|
29
|
+
|
30
|
+
# Creates a new Prescription site by parsing a RTPConnect string line.
|
31
|
+
#
|
32
|
+
# === Parameters
|
33
|
+
#
|
34
|
+
# * <tt>string</tt> -- A string containing a prescription site record.
|
35
|
+
# * <tt>parent</tt> -- A Record which is used to determine the proper parent of this instance.
|
36
|
+
#
|
37
|
+
def self.load(string, parent)
|
38
|
+
raise ArgumentError, "Invalid argument 'string'. Expected String, got #{string.class}." unless string.is_a?(String)
|
39
|
+
raise ArgumentError, "Invalid argument 'parent'. Expected RTP::Record, got #{parent.class}." unless parent.is_a?(RTP::Record)
|
40
|
+
# Get the quote-less values:
|
41
|
+
values = string.values
|
42
|
+
raise ArgumentError, "Invalid argument 'string': Expected exactly 13 elements, got #{values.length}." unless values.length == 13
|
43
|
+
p = self.new(parent)
|
44
|
+
# Assign the values to attributes:
|
45
|
+
p.keyword = values[0]
|
46
|
+
p.course_id = values[1]
|
47
|
+
p.rx_site_name = values[2]
|
48
|
+
p.technique = values[3]
|
49
|
+
p.modality = values[4]
|
50
|
+
p.dose_spec = values[5]
|
51
|
+
p.rx_depth = values[6]
|
52
|
+
p.dose_ttl = values[7]
|
53
|
+
p.dose_tx = values[8]
|
54
|
+
p.pattern = values[9]
|
55
|
+
p.rx_note = values[10]
|
56
|
+
p.number_of_fields = values[11]
|
57
|
+
p.crc = values[12]
|
58
|
+
return p
|
59
|
+
end
|
60
|
+
|
61
|
+
# Creates a new Prescription site.
|
62
|
+
#
|
63
|
+
# === Parameters
|
64
|
+
#
|
65
|
+
# * <tt>parent</tt> -- A Record which is used to determine the proper parent of this instance.
|
66
|
+
#
|
67
|
+
def initialize(parent)
|
68
|
+
raise ArgumentError, "Invalid argument 'parent'. Expected RTP::Record, got #{parent.class}." unless parent.is_a?(RTP::Record)
|
69
|
+
# Child objects:
|
70
|
+
@site_setup = nil
|
71
|
+
@fields = Array.new
|
72
|
+
# Parent relation:
|
73
|
+
@parent = get_parent(parent, Plan)
|
74
|
+
@parent.add_prescription(self)
|
75
|
+
@keyword = 'RX_DEF'
|
76
|
+
end
|
77
|
+
|
78
|
+
# Adds a treatment Field record to this instance.
|
79
|
+
#
|
80
|
+
def add_field(child)
|
81
|
+
raise ArgumentError, "Invalid argument 'child'. Expected RTP::Field, got #{child.class}." unless child.is_a?(RTP::Field)
|
82
|
+
@fields << child
|
83
|
+
end
|
84
|
+
|
85
|
+
# Connects a Site setup record to this instance.
|
86
|
+
#
|
87
|
+
def add_site_setup(child)
|
88
|
+
raise ArgumentError, "Invalid argument 'child'. Expected RTP::SiteSetup, got #{child.class}." unless child.is_a?(RTP::SiteSetup)
|
89
|
+
@site_setup = child
|
90
|
+
end
|
91
|
+
|
92
|
+
# Returns the a properly sorted array of the child records of this instance.
|
93
|
+
#
|
94
|
+
def children
|
95
|
+
return [@site_setup, @fields].flatten.compact
|
96
|
+
end
|
97
|
+
|
98
|
+
# Returns the values of this instance in an array.
|
99
|
+
# The values does not include the CRC.
|
100
|
+
#
|
101
|
+
def values
|
102
|
+
return [
|
103
|
+
@keyword,
|
104
|
+
@course_id,
|
105
|
+
@rx_site_name,
|
106
|
+
@technique,
|
107
|
+
@modality,
|
108
|
+
@dose_spec,
|
109
|
+
@rx_depth,
|
110
|
+
@dose_ttl,
|
111
|
+
@dose_tx,
|
112
|
+
@pattern,
|
113
|
+
@rx_note,
|
114
|
+
@number_of_fields
|
115
|
+
]
|
116
|
+
end
|
117
|
+
|
118
|
+
# Writes the Prescription object + any hiearchy of child objects,
|
119
|
+
# to a properly formatted RTPConnect ascii string.
|
120
|
+
#
|
121
|
+
def to_str
|
122
|
+
str = encode
|
123
|
+
if children
|
124
|
+
children.each do |child|
|
125
|
+
str += child.to_str
|
126
|
+
end
|
127
|
+
end
|
128
|
+
return str
|
129
|
+
end
|
130
|
+
|
131
|
+
# Sets the keyword attribute.
|
132
|
+
#
|
133
|
+
def keyword=(value)
|
134
|
+
raise ArgumentError, "Invalid argument 'value'. Expected String, got #{value.class}." unless value.is_a?(String)
|
135
|
+
raise ArgumentError, "Invalid keyword. Expected 'RX_DEF', got #{value}." unless value.upcase == "RX_DEF"
|
136
|
+
@keyword = value
|
137
|
+
end
|
138
|
+
|
139
|
+
# Sets the course_id attribute.
|
140
|
+
#
|
141
|
+
def course_id=(value)
|
142
|
+
raise ArgumentError, "Invalid argument 'value'. Expected String, got #{value.class}." unless value.is_a?(String)
|
143
|
+
@course_id = value
|
144
|
+
end
|
145
|
+
|
146
|
+
# Sets the rx_site_name attribute.
|
147
|
+
#
|
148
|
+
def rx_site_name=(value)
|
149
|
+
raise ArgumentError, "Invalid argument 'value'. Expected String, got #{value.class}." unless value.is_a?(String)
|
150
|
+
@rx_site_name = value
|
151
|
+
end
|
152
|
+
|
153
|
+
# Sets the technique attribute.
|
154
|
+
#
|
155
|
+
def technique=(value)
|
156
|
+
raise ArgumentError, "Invalid argument 'value'. Expected String, got #{value.class}." unless value.is_a?(String)
|
157
|
+
@technique = value
|
158
|
+
end
|
159
|
+
|
160
|
+
# Sets the modality attribute.
|
161
|
+
#
|
162
|
+
def modality=(value)
|
163
|
+
raise ArgumentError, "Invalid argument 'value'. Expected String, got #{value.class}." unless value.is_a?(String)
|
164
|
+
@modality = value
|
165
|
+
end
|
166
|
+
|
167
|
+
# Sets the dose_spec attribute.
|
168
|
+
#
|
169
|
+
def dose_spec=(value)
|
170
|
+
raise ArgumentError, "Invalid argument 'value'. Expected String, got #{value.class}." unless value.is_a?(String)
|
171
|
+
@dose_spec = value
|
172
|
+
end
|
173
|
+
|
174
|
+
# Sets the rx_depth attribute.
|
175
|
+
#
|
176
|
+
def rx_depth=(value)
|
177
|
+
raise ArgumentError, "Invalid argument 'value'. Expected String, got #{value.class}." unless value.is_a?(String)
|
178
|
+
@rx_depth = value
|
179
|
+
end
|
180
|
+
|
181
|
+
# Sets the dose_ttl attribute.
|
182
|
+
#
|
183
|
+
def dose_ttl=(value)
|
184
|
+
raise ArgumentError, "Invalid argument 'value'. Expected String, got #{value.class}." unless value.is_a?(String)
|
185
|
+
@dose_ttl = value
|
186
|
+
end
|
187
|
+
|
188
|
+
# Sets the dose_tx attribute.
|
189
|
+
#
|
190
|
+
def dose_tx=(value)
|
191
|
+
raise ArgumentError, "Invalid argument 'value'. Expected String, got #{value.class}." unless value.is_a?(String)
|
192
|
+
@dose_tx = value
|
193
|
+
end
|
194
|
+
|
195
|
+
# Sets the pattern attribute.
|
196
|
+
#
|
197
|
+
def pattern=(value)
|
198
|
+
raise ArgumentError, "Invalid argument 'value'. Expected String, got #{value.class}." unless value.is_a?(String)
|
199
|
+
@pattern = value
|
200
|
+
end
|
201
|
+
|
202
|
+
# Sets the rx_note attribute.
|
203
|
+
#
|
204
|
+
def rx_note=(value)
|
205
|
+
raise ArgumentError, "Invalid argument 'value'. Expected String, got #{value.class}." unless value.is_a?(String)
|
206
|
+
@rx_note = value
|
207
|
+
end
|
208
|
+
|
209
|
+
# Sets the number_of_fields attribute.
|
210
|
+
#
|
211
|
+
def number_of_fields=(value)
|
212
|
+
raise ArgumentError, "Invalid argument 'value'. Expected String, got #{value.class}." unless value.is_a?(String)
|
213
|
+
@number_of_fields = value
|
214
|
+
end
|
215
|
+
|
216
|
+
end
|
217
|
+
|
218
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module RTP
|
2
|
+
|
3
|
+
class Record
|
4
|
+
|
5
|
+
attr_reader :keyword
|
6
|
+
attr_reader :crc
|
7
|
+
|
8
|
+
# Encodes a string from the contents of this instance.
|
9
|
+
# This produces the full line, including a computed CRC checksum.
|
10
|
+
#
|
11
|
+
def encode
|
12
|
+
content = values.encode + ","
|
13
|
+
checksum = content.checksum
|
14
|
+
# Complete string is content + checksum (in double quotes) + carriage return + line feed
|
15
|
+
return content + checksum.to_s.wrap + "\r\n"
|
16
|
+
end
|
17
|
+
|
18
|
+
# Follows the tree of parents until the appropriate parent of the requesting record is found.
|
19
|
+
#
|
20
|
+
def get_parent(last_parent, klass)
|
21
|
+
if last_parent.is_a?(klass)
|
22
|
+
return last_parent
|
23
|
+
else
|
24
|
+
return last_parent.get_parent(last_parent.parent, klass)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
# Setting the keyword attribute.
|
29
|
+
#
|
30
|
+
def crc=(value)
|
31
|
+
raise ArgumentError, "Invalid argument 'value'. Expected String, got #{value.class}." unless value.is_a?(String)
|
32
|
+
@crc = value
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
# This file contains extensions to the Ruby library which are used by the RTPConnect library.
|
4
|
+
|
5
|
+
# Extension to the String class. These extensions are focused on analyzing RTPConnect strings.
|
6
|
+
#
|
7
|
+
class String
|
8
|
+
|
9
|
+
# Returns the CRC checksum (16 bit unsigned integer) for a given string.
|
10
|
+
#
|
11
|
+
def checksum
|
12
|
+
crc = RTP::CRC_SEED
|
13
|
+
self.each_codepoint do |byte|
|
14
|
+
crc = RTP::CRC_TABLE[(crc ^ byte) & 0xff] ^ (crc >> 8)
|
15
|
+
end
|
16
|
+
return crc
|
17
|
+
end
|
18
|
+
|
19
|
+
# Returns the elements of a line from the RTPConnect ascii string.
|
20
|
+
# The line consists of elements (surrounded by double quotes), separated by comma.
|
21
|
+
# This method performs a split based on comma and returns the element strings in an array.
|
22
|
+
#
|
23
|
+
def elements
|
24
|
+
return self.split(',')
|
25
|
+
end
|
26
|
+
|
27
|
+
# Removes double quotes from a string.
|
28
|
+
# Returns the quote-less string.
|
29
|
+
#
|
30
|
+
def value
|
31
|
+
return self.gsub('"', '')
|
32
|
+
end
|
33
|
+
|
34
|
+
# Returns the element values of a line from the RTPConnect ascii string.
|
35
|
+
# The line consists of values (surrounded by double quotes), separated by comma.
|
36
|
+
# This method performs a split based on comma and removes the quotes from each value,
|
37
|
+
# and the resulting quote-less value strings are returned in an array.
|
38
|
+
#
|
39
|
+
def values
|
40
|
+
original = self.split(',')
|
41
|
+
processed = Array.new
|
42
|
+
original.collect {|element| processed << element.gsub('"', '')}
|
43
|
+
return processed
|
44
|
+
end
|
45
|
+
|
46
|
+
# Wraps double quotes around the string.
|
47
|
+
#
|
48
|
+
def wrap
|
49
|
+
return '"' + self + '"'
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
|
55
|
+
# Extension to the Array class. These extensions are focused on creating RTPConnect
|
56
|
+
# strings from an array of values.
|
57
|
+
#
|
58
|
+
class Array
|
59
|
+
|
60
|
+
# Encodes an RTPConnect string from an array of values.
|
61
|
+
# Each value in the array is wrapped with double quotes,
|
62
|
+
# before the values are joined with a comma separator.
|
63
|
+
#
|
64
|
+
def encode
|
65
|
+
wrapped = self.collect{|value| value.wrap}
|
66
|
+
return wrapped.join(',')
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
|
71
|
+
# An extension to the NilClass, facilitating a transformation from nil to
|
72
|
+
# an empty (double quoted) string in the case of undefined attributes.
|
73
|
+
#
|
74
|
+
class NilClass
|
75
|
+
|
76
|
+
# Returns a double quoted, but otherwise empty string.
|
77
|
+
#
|
78
|
+
def wrap
|
79
|
+
return '""'
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
@@ -0,0 +1,227 @@
|
|
1
|
+
module RTP
|
2
|
+
|
3
|
+
# The SiteSetup class.
|
4
|
+
#
|
5
|
+
# === Relations
|
6
|
+
#
|
7
|
+
# * Parent: Prescription
|
8
|
+
# * Children: none
|
9
|
+
#
|
10
|
+
class SiteSetup < Record
|
11
|
+
|
12
|
+
# The Record which this instance belongs to.
|
13
|
+
attr_reader :parent
|
14
|
+
attr_reader :rx_site_name
|
15
|
+
attr_reader :patient_orientation
|
16
|
+
attr_reader :treatment_machine
|
17
|
+
attr_reader :tolerance_table
|
18
|
+
attr_reader :iso_pos_x
|
19
|
+
attr_reader :iso_pos_y
|
20
|
+
attr_reader :iso_pos_z
|
21
|
+
attr_reader :structure_set_uid
|
22
|
+
attr_reader :frame_of_ref_uid
|
23
|
+
attr_reader :couch_vertical
|
24
|
+
attr_reader :couch_lateral
|
25
|
+
attr_reader :couch_longitudinal
|
26
|
+
attr_reader :couch_angle
|
27
|
+
attr_reader :couch_pedestal
|
28
|
+
|
29
|
+
# Creates a new SiteSetup setup by parsing a RTPConnect string line.
|
30
|
+
#
|
31
|
+
# === Parameters
|
32
|
+
#
|
33
|
+
# * <tt>string</tt> -- A string containing a site setup record.
|
34
|
+
# * <tt>parent</tt> -- A Record which is used to determine the proper parent of this instance.
|
35
|
+
#
|
36
|
+
def self.load(string, parent)
|
37
|
+
raise ArgumentError, "Invalid argument 'string'. Expected String, got #{string.class}." unless string.is_a?(String)
|
38
|
+
raise ArgumentError, "Invalid argument 'parent'. Expected RTP::Prescription, got #{parent.class}." unless parent.is_a?(RTP::Prescription)
|
39
|
+
# Get the quote-less values:
|
40
|
+
values = string.values
|
41
|
+
raise ArgumentError, "Invalid argument 'string': Expected exactly 16 elements, got #{values.length}." unless values.length == 16
|
42
|
+
s = self.new(parent)
|
43
|
+
# Assign the values to attributes:
|
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[15]
|
60
|
+
return s
|
61
|
+
end
|
62
|
+
|
63
|
+
# Creates a new SiteSetup.
|
64
|
+
#
|
65
|
+
# === Parameters
|
66
|
+
#
|
67
|
+
# * <tt>parent</tt> -- A Record which is used to determine the proper parent of this instance.
|
68
|
+
#
|
69
|
+
def initialize(parent)
|
70
|
+
raise ArgumentError, "Invalid argument 'parent'. Expected RTP::Prescription, got #{parent.class}." unless parent.is_a?(RTP::Prescription)
|
71
|
+
# Parent relation:
|
72
|
+
@parent = get_parent(parent, Prescription)
|
73
|
+
@parent.add_site_setup(self)
|
74
|
+
@keyword = 'SITE_SETUP_DEF'
|
75
|
+
end
|
76
|
+
|
77
|
+
# Returns an empty array, as these instances are child-less by definition.
|
78
|
+
#
|
79
|
+
def children
|
80
|
+
return Array.new
|
81
|
+
end
|
82
|
+
|
83
|
+
# Returns the values of this instance in an array.
|
84
|
+
# The values does not include the CRC.
|
85
|
+
#
|
86
|
+
def values
|
87
|
+
return [
|
88
|
+
@keyword,
|
89
|
+
@rx_site_name,
|
90
|
+
@patient_orientation,
|
91
|
+
@treatment_machine,
|
92
|
+
@tolerance_table,
|
93
|
+
@iso_pos_x,
|
94
|
+
@iso_pos_y,
|
95
|
+
@iso_pos_z,
|
96
|
+
@structure_set_uid,
|
97
|
+
@frame_of_ref_uid,
|
98
|
+
@couch_vertical,
|
99
|
+
@couch_lateral,
|
100
|
+
@couch_longitudinal,
|
101
|
+
@couch_angle,
|
102
|
+
@couch_pedestal
|
103
|
+
]
|
104
|
+
end
|
105
|
+
|
106
|
+
# Writes the SiteSetup object + any hiearchy of child objects,
|
107
|
+
# to a properly formatted RTPConnect ascii string.
|
108
|
+
#
|
109
|
+
def to_str
|
110
|
+
str = encode
|
111
|
+
if children
|
112
|
+
children.each do |child|
|
113
|
+
str += child.to_str
|
114
|
+
end
|
115
|
+
end
|
116
|
+
return str
|
117
|
+
end
|
118
|
+
|
119
|
+
# Sets the keyword attribute.
|
120
|
+
#
|
121
|
+
def keyword=(value)
|
122
|
+
raise ArgumentError, "Invalid argument 'value'. Expected String, got #{value.class}." unless value.is_a?(String)
|
123
|
+
raise ArgumentError, "Invalid keyword. Expected 'SITE_SETUP_DEF', got #{value}." unless value.upcase == "SITE_SETUP_DEF"
|
124
|
+
@keyword = value
|
125
|
+
end
|
126
|
+
|
127
|
+
# Sets the rx_site_name attribute.
|
128
|
+
#
|
129
|
+
def rx_site_name=(value)
|
130
|
+
raise ArgumentError, "Invalid argument 'value'. Expected String, got #{value.class}." unless value.is_a?(String)
|
131
|
+
@rx_site_name = value
|
132
|
+
end
|
133
|
+
|
134
|
+
# Sets the patient_orientation attribute.
|
135
|
+
#
|
136
|
+
def patient_orientation=(value)
|
137
|
+
raise ArgumentError, "Invalid argument 'value'. Expected String, got #{value.class}." unless value.is_a?(String)
|
138
|
+
@patient_orientation = value
|
139
|
+
end
|
140
|
+
|
141
|
+
# Sets the treatment_machine attribute.
|
142
|
+
#
|
143
|
+
def treatment_machine=(value)
|
144
|
+
raise ArgumentError, "Invalid argument 'value'. Expected String, got #{value.class}." unless value.is_a?(String)
|
145
|
+
@treatment_machine = value
|
146
|
+
end
|
147
|
+
|
148
|
+
# Sets the tolerance_table attribute.
|
149
|
+
#
|
150
|
+
def tolerance_table=(value)
|
151
|
+
raise ArgumentError, "Invalid argument 'value'. Expected String, got #{value.class}." unless value.is_a?(String)
|
152
|
+
@tolerance_table = value
|
153
|
+
end
|
154
|
+
|
155
|
+
# Sets the iso_pos_x attribute.
|
156
|
+
#
|
157
|
+
def iso_pos_x=(value)
|
158
|
+
raise ArgumentError, "Invalid argument 'value'. Expected String, got #{value.class}." unless value.is_a?(String)
|
159
|
+
@iso_pos_x = value
|
160
|
+
end
|
161
|
+
|
162
|
+
# Sets the iso_pos_y attribute.
|
163
|
+
#
|
164
|
+
def iso_pos_y=(value)
|
165
|
+
raise ArgumentError, "Invalid argument 'value'. Expected String, got #{value.class}." unless value.is_a?(String)
|
166
|
+
@iso_pos_y = value
|
167
|
+
end
|
168
|
+
|
169
|
+
# Sets the iso_pos_z attribute.
|
170
|
+
#
|
171
|
+
def iso_pos_z=(value)
|
172
|
+
raise ArgumentError, "Invalid argument 'value'. Expected String, got #{value.class}." unless value.is_a?(String)
|
173
|
+
@iso_pos_z = value
|
174
|
+
end
|
175
|
+
|
176
|
+
# Sets the structure_set_uid attribute.
|
177
|
+
#
|
178
|
+
def structure_set_uid=(value)
|
179
|
+
raise ArgumentError, "Invalid argument 'value'. Expected String, got #{value.class}." unless value.is_a?(String)
|
180
|
+
@structure_set_uid = value
|
181
|
+
end
|
182
|
+
|
183
|
+
# Sets the frame_of_ref_uid attribute.
|
184
|
+
#
|
185
|
+
def frame_of_ref_uid=(value)
|
186
|
+
raise ArgumentError, "Invalid argument 'value'. Expected String, got #{value.class}." unless value.is_a?(String)
|
187
|
+
@frame_of_ref_uid = value
|
188
|
+
end
|
189
|
+
|
190
|
+
# Sets the couch_vertical attribute.
|
191
|
+
#
|
192
|
+
def couch_vertical=(value)
|
193
|
+
raise ArgumentError, "Invalid argument 'value'. Expected String, got #{value.class}." unless value.is_a?(String)
|
194
|
+
@couch_vertical = value
|
195
|
+
end
|
196
|
+
|
197
|
+
# Sets the couch_lateral attribute.
|
198
|
+
#
|
199
|
+
def couch_lateral=(value)
|
200
|
+
raise ArgumentError, "Invalid argument 'value'. Expected String, got #{value.class}." unless value.is_a?(String)
|
201
|
+
@couch_lateral = value
|
202
|
+
end
|
203
|
+
|
204
|
+
# Sets the couch_longitudinal attribute.
|
205
|
+
#
|
206
|
+
def couch_longitudinal=(value)
|
207
|
+
raise ArgumentError, "Invalid argument 'value'. Expected String, got #{value.class}." unless value.is_a?(String)
|
208
|
+
@couch_longitudinal = value
|
209
|
+
end
|
210
|
+
|
211
|
+
# Sets the couch_angle attribute.
|
212
|
+
#
|
213
|
+
def couch_angle=(value)
|
214
|
+
raise ArgumentError, "Invalid argument 'value'. Expected String, got #{value.class}." unless value.is_a?(String)
|
215
|
+
@couch_angle = value
|
216
|
+
end
|
217
|
+
|
218
|
+
# Sets the couch_pedestal attribute.
|
219
|
+
#
|
220
|
+
def couch_pedestal=(value)
|
221
|
+
raise ArgumentError, "Invalid argument 'value'. Expected String, got #{value.class}." unless value.is_a?(String)
|
222
|
+
@couch_pedestal = value
|
223
|
+
end
|
224
|
+
|
225
|
+
end
|
226
|
+
|
227
|
+
end
|