rtp-connect 1.7 → 1.8

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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZDIyZThkNzk2OGI3OTdlMjY5MDk4MDQ2YmU5ODBhMTk3NTM2NzUwNg==
4
+ ODZiNzJlZGMxY2M5OTk4OTZhOWRjOGVlMzFlZDQxOTY3NjUwNjQ1Yw==
5
5
  data.tar.gz: !binary |-
6
- MzdjNjVjMTAwYjc2Yzg5YzI5ZTI1YjBiY2ZlNDA0MmIyYjE4MGNiNQ==
6
+ YmU2ZDc0N2NiMTFmYTIwYmEwZWExZGM3ZTQ1MTY2NDA0YTM5OWZkNg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NzZlMGZmMDY3ODVkNjgyOGE2ZTMzMzZkNWMzMWUxMzU4MTk0NGIzY2UzZTYx
10
- Y2RhODM1NDdlNzE0ZDZhN2JkOWRlYmZhZWUzNzI2MmQ5YzIwOTE2ZjYwZmYw
11
- ZDZhZmRjZDc3NzAxNTU4ZDRiODdmYmEzMmRiMGYwMDI5MTRmNTY=
9
+ ZjY5ODBmNWNhZGJhZGJlM2Y1YmJmZTgzNWY1NjU4ZDBlMjE4YjgyZmYxNWI1
10
+ Y2VkMTc1NDcxMmQzNzZkZDcyODA4NTU0M2RkZDQzYjc2YTM1ZDYwNjE2NWE3
11
+ YjZhODU4ZGQ2ODY4NzY4ZTZjMWM1NDFlNzdhYjhlNGNkYmM4NjI=
12
12
  data.tar.gz: !binary |-
13
- ZTYwNjBkOTI2NjNkOGFiNjdmMDJiMjU5NzNjZmNhOTQyYjVlNTFhNWI5NTIy
14
- MTFmNWNhMTlmMzFmZjkxYjZlZTI4ZTVkNjA2OTkxYzY3ZTM0OGY2ZjRjZWY4
15
- ODRhNDRiYTExODllYzQ1MWIyOTU5MWE0ZDYxYzNjMWJkOWQ2ZWM=
13
+ MDE5NjI3ZGIwMzY4NTVkZWJiYjRkMDAxN2UwNDQ5M2VkZjFmMGJhYzAyN2Nl
14
+ ZmNjM2Q3MDMxY2Q5NDFhNjc4Yzk2NmM1NWY5M2IxMThlZTk2MTA0MDUxZTA5
15
+ ZWQ5NzM3OGViYmJkMTA4NWQ0NTMxYTk3MzFiODQyNGZmMGQ4NTI=
@@ -1,3 +1,12 @@
1
+ # 1.8
2
+
3
+ ## 19th February 2015
4
+
5
+ * Fixed an issue with misinterpretation of crc in RTP files from older Mosaiq versions.
6
+ * Added support for versioning in RTP file output (supporting versions 2.4, 2.5 & 2.6).
7
+ * Fixed an issue where you couldn't access the ExtendedPlan record from its parent Plan record.
8
+
9
+
1
10
  # 1.7
2
11
 
3
12
  ## 17th September 2014
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rtp-connect (1.7)
4
+ rtp-connect (1.8)
5
5
 
6
6
  GEM
7
7
  remote: http://www.rubygems.org/
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ [![DOI](https://zenodo.org/badge/doi/10.5281/zenodo.11752.png)](http://dx.doi.org/10.5281/zenodo.11752)
2
+
1
3
  # RTPConnect
2
4
 
3
5
  The RTPConnect library allows you to read, edit and write RTPConnect files in Ruby.
@@ -123,7 +125,7 @@ If you encounter an RTP file with an unsupported record type, please contact me.
123
125
 
124
126
  ## COPYRIGHT
125
127
 
126
- Copyright 2011-2014 Christoffer Lervåg
128
+ Copyright 2011-2015 Christoffer Lervåg
127
129
 
128
130
  This program is free software: you can redistribute it and/or modify
129
131
  it under the terms of the GNU General Public License as published by
@@ -42,7 +42,7 @@ module RTP
42
42
  # Pairs of RTPConnect keywords and parse method names.
43
43
  PARSE_METHOD = {
44
44
  "PLAN_DEF" => :plan_definition,
45
- "EXTENDED_PLAN_DEF" => :extended_plan,
45
+ "EXTENDED_PLAN_DEF" => :extended_plan_def,
46
46
  "RX_DEF" => :prescription_site,
47
47
  "SITE_SETUP_DEF" => :site_setup,
48
48
  "SIM_DEF" => :simulation_field,
@@ -279,13 +279,15 @@ module RTP
279
279
  # Encodes the ControlPoint object + any hiearchy of child objects,
280
280
  # to a properly formatted RTPConnect ascii string.
281
281
  #
282
+ # @param [Hash] options an optional hash parameter
283
+ # @option options [Float] :version the Mosaiq compatibility version number (e.g. 2.4) used for the output
282
284
  # @return [String] an RTP string with a single or multiple lines/records
283
285
  #
284
- def to_s
285
- str = encode
286
+ def to_s(options={})
287
+ str = encode(options)
286
288
  if children
287
289
  children.each do |child|
288
- str += child.to_s
290
+ str += child.to_s(options)
289
291
  end
290
292
  end
291
293
  return str
@@ -123,13 +123,15 @@ module RTP
123
123
  # Encodes the DoseTracking object + any hiearchy of child objects,
124
124
  # to a properly formatted RTPConnect ascii string.
125
125
  #
126
+ # @param [Hash] options an optional hash parameter
127
+ # @option options [Float] :version the Mosaiq compatibility version number (e.g. 2.4) used for the output
126
128
  # @return [String] an RTP string with a single or multiple lines/records
127
129
  #
128
- def to_s
129
- str = encode
130
+ def to_s(options={})
131
+ str = encode(options)
130
132
  if children
131
133
  children.each do |child|
132
- str += child.to_s
134
+ str += child.to_s(options)
133
135
  end
134
136
  end
135
137
  return str
@@ -100,13 +100,15 @@ module RTP
100
100
  # Encodes the ExtendedField object + any hiearchy of child objects,
101
101
  # to a properly formatted RTPConnect ascii string.
102
102
  #
103
+ # @param [Hash] options an optional hash parameter
104
+ # @option options [Float] :version the Mosaiq compatibility version number (e.g. 2.4) used for the output
103
105
  # @return [String] an RTP string with a single or multiple lines/records
104
106
  #
105
- def to_s
106
- str = encode
107
+ def to_s(options={})
108
+ str = encode(options)
107
109
  if children
108
110
  children.each do |child|
109
- str += child.to_s
111
+ str += child.to_s(options)
110
112
  end
111
113
  end
112
114
  return str
@@ -87,13 +87,15 @@ module RTP
87
87
  # Encodes the ExtendedPlan object + any hiearchy of child objects,
88
88
  # to a properly formatted RTPConnect ascii string.
89
89
  #
90
+ # @param [Hash] options an optional hash parameter
91
+ # @option options [Float] :version the Mosaiq compatibility version number (e.g. 2.4) used for the output
90
92
  # @return [String] an RTP string with a single or multiple lines/records
91
93
  #
92
- def to_s
93
- str = encode
94
+ def to_s(options={})
95
+ str = encode(options)
94
96
  if children
95
97
  children.each do |child|
96
- str += child.to_s
98
+ str += child.to_s(options)
97
99
  end
98
100
  end
99
101
  return str
@@ -233,13 +233,15 @@ module RTP
233
233
  # Encodes the Field object + any hiearchy of child objects,
234
234
  # to a properly formatted RTPConnect ascii string.
235
235
  #
236
+ # @param [Hash] options an optional hash parameter
237
+ # @option options [Float] :version the Mosaiq compatibility version number (e.g. 2.4) used for the output
236
238
  # @return [String] an RTP string with a single or multiple lines/records
237
239
  #
238
- def to_s
239
- str = encode
240
+ def to_s(options={})
241
+ str = encode(options)
240
242
  if children
241
243
  children.each do |child|
242
- str += child.to_s
244
+ str += child.to_s(options)
243
245
  end
244
246
  end
245
247
  return str
@@ -1,4 +1,4 @@
1
- # Copyright 2011-2014 Christoffer Lervag
1
+ # Copyright 2011-2015 Christoffer Lervag
2
2
  #
3
3
  # This program is free software: you can redistribute it and/or modify
4
4
  # it under the terms of the GNU General Public License as published by
@@ -29,6 +29,8 @@ module RTP
29
29
  attr_reader :parent
30
30
  # An array of Prescription records (if any) that belongs to this Plan.
31
31
  attr_reader :prescriptions
32
+ # The ExtendedPlan record (if any) that belongs to this Plan.
33
+ attr_reader :extended_plan
32
34
  # An array of DoseTracking records (if any) that belongs to this Plan.
33
35
  attr_reader :dose_trackings
34
36
  attr_reader :patient_id
@@ -270,12 +272,14 @@ module RTP
270
272
  # Encodes the Plan object + any hiearchy of child objects,
271
273
  # to a properly formatted RTPConnect ascii string.
272
274
  #
275
+ # @param [Hash] options an optional hash parameter
276
+ # @option options [Float] :version the Mosaiq compatibility version number (e.g. 2.4) used for the output
273
277
  # @return [String] an RTP string with a single or multiple lines/records
274
278
  #
275
- def to_s
276
- str = encode #.force_encoding('utf-8')
279
+ def to_s(options={})
280
+ str = encode(options)
277
281
  children.each do |child|
278
- str += child.to_s #.force_encoding('utf-8')
282
+ str += child.to_s(options) unless child.class == ExtendedPlan && options[:version].to_f < 2.5
279
283
  end
280
284
  return str
281
285
  end
@@ -286,10 +290,12 @@ module RTP
286
290
  # to a properly formatted RTPConnect ascii file.
287
291
  #
288
292
  # @param [String] file a path/file string
293
+ # @param [Hash] options an optional hash parameter
294
+ # @option options [Float] :version the Mosaiq compatibility version number (e.g. 2.4) used for the output
289
295
  #
290
- def write(file)
296
+ def write(file, options={})
291
297
  f = open_file(file)
292
- f.write(to_s)
298
+ f.write(to_s(options))
293
299
  f.close
294
300
  end
295
301
 
@@ -525,7 +531,7 @@ module RTP
525
531
  #
526
532
  # @param [String] string a string line containing an extended plan definition
527
533
  #
528
- def extended_plan(string)
534
+ def extended_plan_def(string)
529
535
  ep = ExtendedPlan.load(string, @current_parent)
530
536
  @current_parent = ep
531
537
  end
@@ -140,13 +140,15 @@ module RTP
140
140
  # Encodes the Prescription object + any hiearchy of child objects,
141
141
  # to a properly formatted RTPConnect ascii string.
142
142
  #
143
+ # @param [Hash] options an optional hash parameter
144
+ # @option options [Float] :version the Mosaiq compatibility version number (e.g. 2.4) used for the output
143
145
  # @return [String] an RTP string with a single or multiple lines/records
144
146
  #
145
- def to_s
146
- str = encode
147
+ def to_s(options={})
148
+ str = encode(options)
147
149
  if children
148
150
  children.each do |child|
149
- str += child.to_s
151
+ str += child.to_s(options)
150
152
  end
151
153
  end
152
154
  return str
@@ -35,10 +35,13 @@ module RTP
35
35
  #
36
36
  # This produces the full record string line, including a computed CRC checksum.
37
37
  #
38
+ # @param [Hash] options an optional hash parameter
39
+ # @option options [Float] :version the Mosaiq compatibility version number (e.g. 2.4) used for the output
38
40
  # @return [String] a proper RTPConnect type CSV string
39
41
  #
40
- def encode
42
+ def encode(options={})
41
43
  encoded_values = values.collect {|v| v && v.encode('ISO8859-1')}
44
+ encoded_values = discard_unsupported_attributes(encoded_values, options) if options[:version]
42
45
  content = CSV.generate_line(encoded_values, force_quotes: true, row_sep: '') + ","
43
46
  checksum = content.checksum
44
47
  # Complete string is content + checksum (in double quotes) + carriage return + line feed
@@ -110,10 +113,32 @@ module RTP
110
113
  # @param [Array<String>] values the record attributes (as parsed from a record string)
111
114
  #
112
115
  def set_attributes(values)
113
- @attributes.each_index {|i| self.send("#{@attributes[i]}=", values[i])}
116
+ ([values.length - 1, @max_elements - 1].min).times do |i|
117
+ self.send("#{@attributes[i]}=", values[i])
118
+ end
114
119
  @crc = values[-1]
115
120
  end
116
121
 
122
+ # Removes any attributes that are newer than the given compatibility target version.
123
+ # E.g. if a compatibility version of Mosaiq 2.4 is specified, attributes that were
124
+ # introduced in Mosaiq 2.5 or later is removed before the RTP string is created.
125
+ #
126
+ # @param [Array<String>] values the complete set of values of this record
127
+ # @param [Hash] options an optional hash parameter
128
+ # @option options [Float] :version the Mosaiq compatibility version number (e.g. 2.4) used for the output
129
+ # @return [Array<String>] an array of attributes where some of the recent attributes may have been removed
130
+ #
131
+ def discard_unsupported_attributes(values, options={})
132
+ case self
133
+ when SiteSetup
134
+ options[:version].to_f >= 2.6 ? values : values[0..-4]
135
+ when ExtendedField
136
+ options[:version].to_f >= 2.4 ? values : values[0..-5]
137
+ else
138
+ values
139
+ end
140
+ end
141
+
117
142
  end
118
143
 
119
144
  end
@@ -186,13 +186,15 @@ module RTP
186
186
  # Encodes the SimulationField object + any hiearchy of child objects,
187
187
  # to a properly formatted RTPConnect ascii string.
188
188
  #
189
+ # @param [Hash] options an optional hash parameter
190
+ # @option options [Float] :version the Mosaiq compatibility version number (e.g. 2.4) used for the output
189
191
  # @return [String] an RTP string with a single or multiple lines/records
190
192
  #
191
- def to_s
192
- str = encode
193
+ def to_s(options={})
194
+ str = encode(options)
193
195
  if children
194
196
  children.each do |child|
195
- str += child.to_s
197
+ str += child.to_s(options)
196
198
  end
197
199
  end
198
200
  return str
@@ -110,13 +110,15 @@ module RTP
110
110
  # Encodes the SiteSetup object + any hiearchy of child objects,
111
111
  # to a properly formatted RTPConnect ascii string.
112
112
  #
113
+ # @param [Hash] options an optional hash parameter
114
+ # @option options [Float] :version the Mosaiq compatibility version number (e.g. 2.4) used for the output
113
115
  # @return [String] an RTP string with a single or multiple lines/records
114
116
  #
115
- def to_s
116
- str = encode
117
+ def to_s(options={})
118
+ str = encode(options)
117
119
  if children
118
120
  children.each do |child|
119
- str += child.to_s
121
+ str += child.to_s(options)
120
122
  end
121
123
  end
122
124
  return str
@@ -1,6 +1,6 @@
1
1
  module RTP
2
2
 
3
3
  # The RTPConnect library version string.
4
- VERSION = '1.7'
4
+ VERSION = '1.8'
5
5
 
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rtp-connect
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.7'
4
+ version: '1.8'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christoffer Lervag
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-17 00:00:00.000000000 Z
11
+ date: 2015-02-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -172,7 +172,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
172
172
  version: '0'
173
173
  requirements: []
174
174
  rubyforge_project:
175
- rubygems_version: 2.3.0
175
+ rubygems_version: 2.4.5
176
176
  signing_key:
177
177
  specification_version: 4
178
178
  summary: Library for handling RTPConnect files.