ncs_mdes_warehouse 0.3.1 → 0.3.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.md CHANGED
@@ -1,6 +1,17 @@
1
1
  NCS Navigator MDES Warehouse History
2
2
  ====================================
3
3
 
4
+ 0.3.2
5
+ -----
6
+
7
+ - Correct VDR XML reader for the case where an MDES table that
8
+ contains a variable with the same name as the table. (#1695)
9
+ - Include the Study Center record in the instances created from the
10
+ `SamplingUnits` transformer. (#1690)
11
+ - Change the default compare level to 3. It turns out that the full
12
+ compare is not that slow, so there's no reason to default it to 1.
13
+ (#1691)
14
+
4
15
  0.3.1
5
16
  -----
6
17
 
@@ -114,7 +114,7 @@ DESC
114
114
  :desc => 'The configuration file for warehouse A. The environment default will be used if not specified.'
115
115
  method_option 'warehouse-b', :type => :string, :required => true, :aliases => %w(-b),
116
116
  :desc => 'The configuration file for warehouse B.'
117
- method_option 'level', :type => :numeric, :default => 1,
117
+ method_option 'level', :type => :numeric, :default => 3,
118
118
  :desc => 'The level of detail for the comparison.'
119
119
  def compare
120
120
  if options['warehouse-a']
@@ -26,6 +26,9 @@ module NcsNavigator::Warehouse::Transformers
26
26
  def each
27
27
  log.info("Generating MDES records for sampling units.")
28
28
 
29
+ shell_describe('Study Center', 1)
30
+ yield create_study_center
31
+
29
32
  shell_describe('PSU', configuration.navigator.psus.size)
30
33
  configuration.navigator.psus.each do |nav_psu|
31
34
  yield create_psu(nav_psu)
@@ -42,8 +45,8 @@ module NcsNavigator::Warehouse::Transformers
42
45
  yield create_tsu(nav_tsu)
43
46
  end
44
47
 
45
- log.info("All sampling unit records generated.")
46
- shell.clear_line_then_say("All sampling unit records generated.\n")
48
+ log.info("Sampling unit records complete.")
49
+ shell.clear_line_then_say("Sampling unit records complete.\n")
47
50
  end
48
51
 
49
52
  private
@@ -53,26 +56,33 @@ module NcsNavigator::Warehouse::Transformers
53
56
  shell.clear_line_then_say("Generating MDES record#{plural} for #{count} #{what}#{plural}")
54
57
  end
55
58
 
56
- def psu_model
57
- configuration.models_module.const_get(:Psu)
59
+ def code_label(type_name, value)
60
+ configuration.mdes.types.detect { |t| t.name == type_name }.code_list.
61
+ detect { |code| code.value == value }.label
62
+ end
63
+
64
+ def model(name)
65
+ configuration.models_module.const_get(name)
66
+ end
67
+
68
+ def create_study_center
69
+ model(:StudyCenter).new(
70
+ :sc_id => configuration.navigator.sc_id,
71
+ :sc_name => code_label('study_center_cl1', configuration.navigator.sc_id)
72
+ )
58
73
  end
59
74
 
60
75
  def create_psu(nav_psu)
61
- psu_model.new(
76
+ model(:Psu).new(
62
77
  :psu_id => nav_psu.id,
63
78
  :sc_id => configuration.navigator.sc_id,
64
79
  :recruit_type => configuration.navigator.recruitment_type_id,
65
- :psu_name => configuration.mdes.types.detect { |t| t.name == 'psu_cl1' }.code_list.
66
- detect { |code| code.value == nav_psu.id }.label
80
+ :psu_name => code_label('psu_cl1', nav_psu.id)
67
81
  )
68
82
  end
69
83
 
70
- def ssu_model
71
- configuration.models_module.const_get(:Ssu)
72
- end
73
-
74
84
  def create_ssu(nav_ssu)
75
- ssu_model.new(
85
+ model(:Ssu).new(
76
86
  :ssu_id => nav_ssu.id,
77
87
  :ssu_name => nav_ssu.name,
78
88
  :psu_id => nav_ssu.psu.id,
@@ -80,12 +90,8 @@ module NcsNavigator::Warehouse::Transformers
80
90
  )
81
91
  end
82
92
 
83
- def tsu_model
84
- configuration.models_module.const_get(:Tsu)
85
- end
86
-
87
93
  def create_tsu(nav_tsu)
88
- tsu_model.new(
94
+ model(:Tsu).new(
89
95
  :tsu_id => nav_tsu.id,
90
96
  :tsu_name => nav_tsu.name,
91
97
  :psu_id => nav_tsu.ssu.psu.id,
@@ -67,7 +67,7 @@ class NcsNavigator::Warehouse::Transformers::VdrXml
67
67
  if node.local_name == 'transmission_tables'
68
68
  @in_table_section = is_open
69
69
  elsif @current_model_class
70
- if node.local_name == @current_model_class.mdes_table_name
70
+ if !is_open && node.local_name == @current_model_class.mdes_table_name
71
71
  # on the way out of this record
72
72
  yield build_current_instance
73
73
  @current_model_class = nil
@@ -1,5 +1,5 @@
1
1
  module NcsNavigator
2
2
  module Warehouse
3
- VERSION = '0.3.1'
3
+ VERSION = '0.3.2'
4
4
  end
5
5
  end
@@ -14,7 +14,28 @@ module NcsNavigator::Warehouse::Transformers
14
14
  end
15
15
 
16
16
  it 'yields everything in MDES order' do
17
- subject.to_a.collect { |i| i.class.to_s.demodulize }.should == %w(Psu Ssu Ssu Tsu)
17
+ subject.to_a.collect { |i| i.class.to_s.demodulize }.should == %w(StudyCenter Psu Ssu Ssu Tsu)
18
+ end
19
+
20
+ describe 'emitted Study Center' do
21
+ let(:sc_model) { spec_config.models_module.const_get(:StudyCenter) }
22
+ let(:sc) { subject.to_a.detect { |emitted| emitted.is_a?(sc_model) } }
23
+
24
+ it 'exists' do
25
+ sc.should_not be_nil
26
+ end
27
+
28
+ it 'has the study center ID from the configuration' do
29
+ sc.sc_id.should == test_sc_id
30
+ end
31
+
32
+ it 'has the name from the MDES' do
33
+ sc.sc_name.should == 'Northwestern University'
34
+ end
35
+
36
+ it 'has no comments' do
37
+ sc.comments.should be_nil
38
+ end
18
39
  end
19
40
 
20
41
  describe 'emitted PSU' do
@@ -13,6 +13,7 @@
13
13
  <comments>NA</comments>
14
14
  <transaction_type>NA</transaction_type>
15
15
  </study_center>
16
+
16
17
  <psu>
17
18
  <sc_id>20000029</sc_id>
18
19
  <psu_id>20000030</psu_id>
@@ -20,6 +21,7 @@
20
21
  <recruit_type>3</recruit_type>
21
22
  <transaction_type>NA</transaction_type>
22
23
  </psu>
24
+
23
25
  <ssu>
24
26
  <sc_id>20000029</sc_id>
25
27
  <psu_id>20000030</psu_id>
@@ -27,6 +29,7 @@
27
29
  <ssu_name>The unluckiest SSU</ssu_name>
28
30
  <transaction_type>NA</transaction_type>
29
31
  </ssu>
32
+
30
33
  <listing_unit>
31
34
  <psu_id>20000030</psu_id>
32
35
  <list_id>100</list_id>
@@ -37,6 +40,7 @@
37
40
  <list_comment>NA</list_comment>
38
41
  <transaction_type>NA</transaction_type>
39
42
  </listing_unit>
43
+
40
44
  <person>
41
45
  <psu_id>20000030</psu_id>
42
46
  <person_id>74</person_id>
@@ -72,6 +76,7 @@
72
76
  <person_comment>NA</person_comment>
73
77
  <transaction_type xsi:nil="true"/>
74
78
  </person>
79
+
75
80
  <link_contact>
76
81
  <psu_id>20000030</psu_id>
77
82
  <contact_link_id>36</contact_link_id>
@@ -83,5 +88,29 @@
83
88
  <provider_id>-7</provider_id>
84
89
  <transaction_type>NA</transaction_type>
85
90
  </link_contact>
91
+
92
+ <email>
93
+ <psu_id>20000030</psu_id>
94
+ <email_id>18</email_id>
95
+ <person_id>74</person_id>
96
+ <institute_id></institute_id>
97
+ <provider_id></provider_id>
98
+ <email>jo@example.net</email>
99
+ <email_rank>1</email_rank>
100
+ <email_rank_oth>-7</email_rank_oth>
101
+ <email_info_source>1</email_info_source>
102
+ <email_info_source_oth>-7</email_info_source_oth>
103
+ <email_info_date>2011-03-31</email_info_date>
104
+ <email_info_update>9777-97-97</email_info_update>
105
+ <email_type>1</email_type>
106
+ <email_type_oth>-7</email_type_oth>
107
+ <email_share>2</email_share>
108
+ <email_active>1</email_active>
109
+ <email_comment>NA</email_comment>
110
+ <email_start_date>9666-96-96</email_start_date>
111
+ <email_end_date>9666-96-96</email_end_date>
112
+ <transaction_type xsi:nil="true"/>
113
+ </email>
114
+
86
115
  </ncs:transmission_tables>
87
116
  </ncs:recruitment_substudy_transmission_envelope>
@@ -9,17 +9,18 @@ class NcsNavigator::Warehouse::Transformers::VdrXml
9
9
  let(:person) { reader.detect { |rec| rec.class.name =~ /Person$/ } }
10
10
  let(:link_contact) { reader.detect { |rec| rec.class.name =~ /LinkContact$/ } }
11
11
  let(:listing_unit) { reader.detect { |rec| rec.class.name =~ /ListingUnit$/ } }
12
+ let(:email) { reader.detect { |rec| rec.class.name =~ /Email$/ } }
12
13
 
13
14
  it 'verifies the PSU matches the configuration'
14
15
  it 'verifies the specification version matches the runtime MDES version'
15
16
 
16
17
  it 'yields all records' do
17
- reader.to_a.size.should == 6
18
+ reader.to_a.size.should == 7
18
19
  end
19
20
 
20
21
  it 'yields the records using their model classes' do
21
22
  reader.collect { |rec| rec.class.name.demodulize }.should ==
22
- %w(StudyCenter Psu Ssu ListingUnit Person LinkContact)
23
+ %w(StudyCenter Psu Ssu ListingUnit Person LinkContact Email)
23
24
  end
24
25
 
25
26
  it 'reads variable values' do
@@ -43,6 +44,10 @@ class NcsNavigator::Warehouse::Transformers::VdrXml
43
44
  person.last_name.should == ''
44
45
  end
45
46
  end
47
+
48
+ it 'handles table-named variables' do
49
+ email.email.should == 'jo@example.net'
50
+ end
46
51
  end
47
52
  end
48
53
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ncs_mdes_warehouse
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-12-18 00:00:00.000000000Z
12
+ date: 2012-01-03 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ncs_mdes
16
- requirement: &2152342040 !ruby/object:Gem::Requirement
16
+ requirement: &2152198740 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0.5'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2152342040
24
+ version_requirements: *2152198740
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: ncs_navigator_configuration
27
- requirement: &2152341040 !ruby/object:Gem::Requirement
27
+ requirement: &2152197440 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0.2'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2152341040
35
+ version_requirements: *2152197440
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: activesupport
38
- requirement: &2152340160 !ruby/object:Gem::Requirement
38
+ requirement: &2152196400 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '3.0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *2152340160
46
+ version_requirements: *2152196400
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: i18n
49
- requirement: &2152339140 !ruby/object:Gem::Requirement
49
+ requirement: &2152195520 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0.4'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *2152339140
57
+ version_requirements: *2152195520
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: thor
60
- requirement: &2152338380 !ruby/object:Gem::Requirement
60
+ requirement: &2152194580 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 0.14.6
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *2152338380
68
+ version_requirements: *2152194580
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rubyzip
71
- requirement: &2152337400 !ruby/object:Gem::Requirement
71
+ requirement: &2152193540 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 0.9.4
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *2152337400
79
+ version_requirements: *2152193540
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: childprocess
82
- requirement: &2152324540 !ruby/object:Gem::Requirement
82
+ requirement: &2152192480 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ~>
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: 0.2.3
88
88
  type: :runtime
89
89
  prerelease: false
90
- version_requirements: *2152324540
90
+ version_requirements: *2152192480
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: json
93
- requirement: &2152323420 !ruby/object:Gem::Requirement
93
+ requirement: &2152191600 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ~>
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '1.6'
99
99
  type: :runtime
100
100
  prerelease: false
101
- version_requirements: *2152323420
101
+ version_requirements: *2152191600
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: nokogiri
104
- requirement: &2152322540 !ruby/object:Gem::Requirement
104
+ requirement: &2152190680 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ~>
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: 1.5.0
110
110
  type: :runtime
111
111
  prerelease: false
112
- version_requirements: *2152322540
112
+ version_requirements: *2152190680
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: builder
115
- requirement: &2152321160 !ruby/object:Gem::Requirement
115
+ requirement: &2152189820 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ! '>='
@@ -120,10 +120,10 @@ dependencies:
120
120
  version: 2.1.2
121
121
  type: :runtime
122
122
  prerelease: false
123
- version_requirements: *2152321160
123
+ version_requirements: *2152189820
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: dm-core
126
- requirement: &2152319660 !ruby/object:Gem::Requirement
126
+ requirement: &2152188600 !ruby/object:Gem::Requirement
127
127
  none: false
128
128
  requirements:
129
129
  - - ~>
@@ -131,10 +131,10 @@ dependencies:
131
131
  version: 1.2.0
132
132
  type: :runtime
133
133
  prerelease: false
134
- version_requirements: *2152319660
134
+ version_requirements: *2152188600
135
135
  - !ruby/object:Gem::Dependency
136
136
  name: dm-constraints
137
- requirement: &2152318920 !ruby/object:Gem::Requirement
137
+ requirement: &2152187620 !ruby/object:Gem::Requirement
138
138
  none: false
139
139
  requirements:
140
140
  - - ~>
@@ -142,10 +142,10 @@ dependencies:
142
142
  version: 1.2.0
143
143
  type: :runtime
144
144
  prerelease: false
145
- version_requirements: *2152318920
145
+ version_requirements: *2152187620
146
146
  - !ruby/object:Gem::Dependency
147
147
  name: dm-migrations
148
- requirement: &2152318060 !ruby/object:Gem::Requirement
148
+ requirement: &2152186720 !ruby/object:Gem::Requirement
149
149
  none: false
150
150
  requirements:
151
151
  - - ~>
@@ -153,10 +153,10 @@ dependencies:
153
153
  version: 1.2.0
154
154
  type: :runtime
155
155
  prerelease: false
156
- version_requirements: *2152318060
156
+ version_requirements: *2152186720
157
157
  - !ruby/object:Gem::Dependency
158
158
  name: dm-transactions
159
- requirement: &2152313080 !ruby/object:Gem::Requirement
159
+ requirement: &2152185700 !ruby/object:Gem::Requirement
160
160
  none: false
161
161
  requirements:
162
162
  - - ~>
@@ -164,10 +164,10 @@ dependencies:
164
164
  version: 1.2.0
165
165
  type: :runtime
166
166
  prerelease: false
167
- version_requirements: *2152313080
167
+ version_requirements: *2152185700
168
168
  - !ruby/object:Gem::Dependency
169
169
  name: dm-validations
170
- requirement: &2152311340 !ruby/object:Gem::Requirement
170
+ requirement: &2152184580 !ruby/object:Gem::Requirement
171
171
  none: false
172
172
  requirements:
173
173
  - - ~>
@@ -175,10 +175,10 @@ dependencies:
175
175
  version: 1.2.0
176
176
  type: :runtime
177
177
  prerelease: false
178
- version_requirements: *2152311340
178
+ version_requirements: *2152184580
179
179
  - !ruby/object:Gem::Dependency
180
180
  name: dm-types
181
- requirement: &2152309800 !ruby/object:Gem::Requirement
181
+ requirement: &2152183640 !ruby/object:Gem::Requirement
182
182
  none: false
183
183
  requirements:
184
184
  - - ~>
@@ -186,10 +186,10 @@ dependencies:
186
186
  version: 1.2.0
187
187
  type: :runtime
188
188
  prerelease: false
189
- version_requirements: *2152309800
189
+ version_requirements: *2152183640
190
190
  - !ruby/object:Gem::Dependency
191
191
  name: dm-aggregates
192
- requirement: &2152307500 !ruby/object:Gem::Requirement
192
+ requirement: &2152182340 !ruby/object:Gem::Requirement
193
193
  none: false
194
194
  requirements:
195
195
  - - ~>
@@ -197,10 +197,10 @@ dependencies:
197
197
  version: 1.2.0
198
198
  type: :runtime
199
199
  prerelease: false
200
- version_requirements: *2152307500
200
+ version_requirements: *2152182340
201
201
  - !ruby/object:Gem::Dependency
202
202
  name: dm-postgres-adapter
203
- requirement: &2152306340 !ruby/object:Gem::Requirement
203
+ requirement: &2152181640 !ruby/object:Gem::Requirement
204
204
  none: false
205
205
  requirements:
206
206
  - - ~>
@@ -208,10 +208,10 @@ dependencies:
208
208
  version: 1.2.0
209
209
  type: :runtime
210
210
  prerelease: false
211
- version_requirements: *2152306340
211
+ version_requirements: *2152181640
212
212
  - !ruby/object:Gem::Dependency
213
213
  name: bcdatabase
214
- requirement: &2152305760 !ruby/object:Gem::Requirement
214
+ requirement: &2152180900 !ruby/object:Gem::Requirement
215
215
  none: false
216
216
  requirements:
217
217
  - - ~>
@@ -219,10 +219,10 @@ dependencies:
219
219
  version: '1.1'
220
220
  type: :runtime
221
221
  prerelease: false
222
- version_requirements: *2152305760
222
+ version_requirements: *2152180900
223
223
  - !ruby/object:Gem::Dependency
224
224
  name: rspec
225
- requirement: &2152297240 !ruby/object:Gem::Requirement
225
+ requirement: &2152180100 !ruby/object:Gem::Requirement
226
226
  none: false
227
227
  requirements:
228
228
  - - ~>
@@ -230,10 +230,10 @@ dependencies:
230
230
  version: '2.6'
231
231
  type: :development
232
232
  prerelease: false
233
- version_requirements: *2152297240
233
+ version_requirements: *2152180100
234
234
  - !ruby/object:Gem::Dependency
235
235
  name: rake
236
- requirement: &2152295720 !ruby/object:Gem::Requirement
236
+ requirement: &2152179300 !ruby/object:Gem::Requirement
237
237
  none: false
238
238
  requirements:
239
239
  - - ~>
@@ -241,10 +241,10 @@ dependencies:
241
241
  version: 0.9.2
242
242
  type: :development
243
243
  prerelease: false
244
- version_requirements: *2152295720
244
+ version_requirements: *2152179300
245
245
  - !ruby/object:Gem::Dependency
246
246
  name: yard
247
- requirement: &2152294060 !ruby/object:Gem::Requirement
247
+ requirement: &2152178340 !ruby/object:Gem::Requirement
248
248
  none: false
249
249
  requirements:
250
250
  - - ~>
@@ -252,10 +252,10 @@ dependencies:
252
252
  version: 0.7.2
253
253
  type: :development
254
254
  prerelease: false
255
- version_requirements: *2152294060
255
+ version_requirements: *2152178340
256
256
  - !ruby/object:Gem::Dependency
257
257
  name: ci_reporter
258
- requirement: &2152292580 !ruby/object:Gem::Requirement
258
+ requirement: &2152177500 !ruby/object:Gem::Requirement
259
259
  none: false
260
260
  requirements:
261
261
  - - =
@@ -263,10 +263,10 @@ dependencies:
263
263
  version: 1.6.6
264
264
  type: :development
265
265
  prerelease: false
266
- version_requirements: *2152292580
266
+ version_requirements: *2152177500
267
267
  - !ruby/object:Gem::Dependency
268
268
  name: fakefs
269
- requirement: &2152291240 !ruby/object:Gem::Requirement
269
+ requirement: &2152176600 !ruby/object:Gem::Requirement
270
270
  none: false
271
271
  requirements:
272
272
  - - ~>
@@ -274,7 +274,7 @@ dependencies:
274
274
  version: 0.4.0
275
275
  type: :development
276
276
  prerelease: false
277
- version_requirements: *2152291240
277
+ version_requirements: *2152176600
278
278
  description:
279
279
  email:
280
280
  - r-sutphin@northwestern.edu