canql 4.0.1 → 4.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f586e9d223aea47683f240305b7d9758216117f02f15c492f383b4bbcc37b8e0
4
- data.tar.gz: 1141e02d6e8480d024e56dc1d0065b30f39d957d0a3b2243f6348b9ab9cd54b6
3
+ metadata.gz: 128e610596fb3e43cd6072162b21fa77259823716772ed80272ceafc2f1a6b4c
4
+ data.tar.gz: 54b9bc4e7dcb9f8952d07784089ab4c28d747bcc9f9c367e2ead3f91c4c74cdc
5
5
  SHA512:
6
- metadata.gz: 57a5c3751535acc940f8f44bc7b8a39e2e693e0e9d53e93e70ed79605f1d5b8f4020c91977c37314bb818afe8437d40a4d710484d7e58bf99965041b7fd9de78
7
- data.tar.gz: e325a15f297ce5a9d89538e39b945eb1211b703cb02eddc8856f2c1d8fe595b52238b35c7946e71e9fab2305ae994599bbbfa0b55a2bf63dcbf626dd67887981
6
+ metadata.gz: 802678de8f0d709f40e5d1e049e0ab2d5c18590fda76e9a473b016a55c639821833d8f755d56ee7e79a29bd7cabdf78e50a99f7c32711e5bd197722055226102
7
+ data.tar.gz: 2d56d8da5357e9b66f8f486dec03887f1d31ec0f6c405c34ae8e66ada36cb51e520a89808821b0b308dfdc7581eb39c2d4f17c3d1987e9dadf7540ad2feadd50
@@ -1,6 +1,26 @@
1
1
  ## [Unreleased]
2
2
  *no unreleased changes*
3
3
 
4
+ ## 4.4.1 / 2021-01-13
5
+ ### Fixed
6
+ * Relax constraints to support Rails 6.x
7
+
8
+ ## 4.4.0 / 2020-07-08
9
+ ### Added
10
+ * Added filter for missing and supplied required test result groups (#47)
11
+
12
+ ## 4.3.0 / 2020-06-10
13
+ ### Added
14
+ * Added additional field existance options (#45)
15
+
16
+ ## 4.2.0 / 2020-03-25
17
+ ### Added
18
+ * Added additional EUROCAT category filters for RAG combination
19
+
20
+ ## 4.1.0 / 2020-03-19
21
+ ### Added
22
+ * Added filters for EUROCAT RAG rating (#39)
23
+
4
24
  ## 4.0.1 / 2019-10-29
5
25
  ### Fixed
6
26
  * Relax `chronic` dependency
@@ -28,7 +28,7 @@ Gem::Specification.new do |spec|
28
28
 
29
29
  spec.add_dependency 'chronic', '~> 0.3'
30
30
  spec.add_dependency 'ndr_support', '>= 3.0', '< 6'
31
- spec.add_dependency 'rails', '>= 4.1', '< 6'
31
+ spec.add_dependency 'rails', '>= 4.1', '< 7'
32
32
  spec.add_dependency 'treetop', '>= 1.4.10'
33
33
 
34
34
  spec.add_development_dependency 'bundler'
@@ -36,7 +36,7 @@ Gem::Specification.new do |spec|
36
36
  spec.add_development_dependency 'guard-minitest'
37
37
  spec.add_development_dependency 'guard-rubocop'
38
38
  spec.add_development_dependency 'minitest'
39
- spec.add_development_dependency 'ndr_dev_support', '~> 3.1', '>= 3.1.3'
39
+ spec.add_development_dependency 'ndr_dev_support', '~> 5.6'
40
40
  spec.add_development_dependency 'pry'
41
41
  spec.add_development_dependency 'rake'
42
42
  spec.add_development_dependency 'terminal-notifier-guard' if RUBY_PLATFORM =~ /darwin/
@@ -15,11 +15,11 @@ file safety:
15
15
  ".travis.yml":
16
16
  comments:
17
17
  reviewed_by: josh.pencheon
18
- safe_revision: 8adb767031a19aa6b3cea3f1cb05b4a9bcc964f3
18
+ safe_revision: bb0b75b6914deea03a7a520cd0827eaf5ecab92f
19
19
  CHANGELOG.md:
20
20
  comments:
21
21
  reviewed_by: josh.pencheon
22
- safe_revision: 03c6aaec256bc3b0500f422e0f97f84804bfeffa
22
+ safe_revision: 171f61eb19427e34aeb4d6e901260d447094b6d0
23
23
  CODE_OF_CONDUCT.md:
24
24
  comments:
25
25
  reviewed_by: drewthorp
@@ -51,7 +51,7 @@ file safety:
51
51
  canql.gemspec:
52
52
  comments:
53
53
  reviewed_by: josh.pencheon
54
- safe_revision: c3a0f7aae0658ce6236b82c715a4ace57e4bf513
54
+ safe_revision: bb0b75b6914deea03a7a520cd0827eaf5ecab92f
55
55
  lib/canql.rb:
56
56
  comments:
57
57
  reviewed_by: timgentry
@@ -63,7 +63,7 @@ file safety:
63
63
  lib/canql/grammars.rb:
64
64
  comments:
65
65
  reviewed_by: josh.pencheon
66
- safe_revision: c431b8a476b84d077e9c39a2a13c2b17a296773d
66
+ safe_revision: c5f8f76b2c335a8554f39a14d6165bf5cd8f9b67
67
67
  lib/canql/grammars/age.treetop:
68
68
  comments: It is a known issue that this is potentially susceptible to certain
69
69
  kinds of DoS attack
@@ -95,12 +95,12 @@ file safety:
95
95
  comments: It is a known issue that this is potentially susceptible to certain
96
96
  kinds of DoS attack
97
97
  reviewed_by: josh.pencheon
98
- safe_revision: 511e4238f83eb5b32839c25d94ec2a59145539bb
98
+ safe_revision: 42bb9bd177a761b9d04d728e53fcf0ebd0083ae4
99
99
  lib/canql/grammars/patient.treetop:
100
100
  comments: It is a known issue that this is potentially susceptible to certain
101
101
  kinds of DoS attack
102
102
  reviewed_by: josh.pencheon
103
- safe_revision: e258a1a403b7474f8919b1a76127f9ad71a640ad
103
+ safe_revision: 43425805d9ad4a99e63eeb5d50495fa14eaa053b
104
104
  lib/canql/grammars/perinatal_hospital.treetop:
105
105
  comments:
106
106
  reviewed_by: josh.pencheon
@@ -119,10 +119,14 @@ file safety:
119
119
  kinds of DoS attack
120
120
  reviewed_by: timgentry
121
121
  safe_revision: c39d24bb500719971969762e94545e82866bf92f
122
+ lib/canql/grammars/test_result_group.treetop:
123
+ comments:
124
+ reviewed_by: josh.pencheon
125
+ safe_revision: 42bb9bd177a761b9d04d728e53fcf0ebd0083ae4
122
126
  lib/canql/nodes.rb:
123
127
  comments:
124
128
  reviewed_by: josh.pencheon
125
- safe_revision: c431b8a476b84d077e9c39a2a13c2b17a296773d
129
+ safe_revision: c5f8f76b2c335a8554f39a14d6165bf5cd8f9b67
126
130
  lib/canql/nodes/age.rb:
127
131
  comments:
128
132
  reviewed_by: timgentry
@@ -150,11 +154,11 @@ file safety:
150
154
  lib/canql/nodes/main.rb:
151
155
  comments:
152
156
  reviewed_by: josh.pencheon
153
- safe_revision: 511e4238f83eb5b32839c25d94ec2a59145539bb
157
+ safe_revision: c5f8f76b2c335a8554f39a14d6165bf5cd8f9b67
154
158
  lib/canql/nodes/patient.rb:
155
159
  comments:
156
160
  reviewed_by: josh.pencheon
157
- safe_revision: e258a1a403b7474f8919b1a76127f9ad71a640ad
161
+ safe_revision: 43425805d9ad4a99e63eeb5d50495fa14eaa053b
158
162
  lib/canql/nodes/perinatal_hospital.rb:
159
163
  comments:
160
164
  reviewed_by: josh.pencheon
@@ -167,6 +171,10 @@ file safety:
167
171
  comments:
168
172
  reviewed_by: timgentry
169
173
  safe_revision: c39d24bb500719971969762e94545e82866bf92f
174
+ lib/canql/nodes/test_result_group.rb:
175
+ comments:
176
+ reviewed_by: josh.pencheon
177
+ safe_revision: 42bb9bd177a761b9d04d728e53fcf0ebd0083ae4
170
178
  lib/canql/parser.rb:
171
179
  comments:
172
180
  reviewed_by: timgentry
@@ -178,7 +186,7 @@ file safety:
178
186
  lib/canql/version.rb:
179
187
  comments:
180
188
  reviewed_by: josh.pencheon
181
- safe_revision: 03c6aaec256bc3b0500f422e0f97f84804bfeffa
189
+ safe_revision: 171f61eb19427e34aeb4d6e901260d447094b6d0
182
190
  test/anomaly_test_helper.rb:
183
191
  comments:
184
192
  reviewed_by: josh.pencheon
@@ -202,7 +210,7 @@ file safety:
202
210
  test/nodes/case_test.rb:
203
211
  comments:
204
212
  reviewed_by: josh.pencheon
205
- safe_revision: e258a1a403b7474f8919b1a76127f9ad71a640ad
213
+ safe_revision: 43425805d9ad4a99e63eeb5d50495fa14eaa053b
206
214
  test/nodes/code_test.rb:
207
215
  comments:
208
216
  reviewed_by: josh.pencheon
@@ -234,7 +242,7 @@ file safety:
234
242
  test/nodes/patient_test.rb:
235
243
  comments:
236
244
  reviewed_by: josh.pencheon
237
- safe_revision: e258a1a403b7474f8919b1a76127f9ad71a640ad
245
+ safe_revision: 43425805d9ad4a99e63eeb5d50495fa14eaa053b
238
246
  test/nodes/perinatal_hospital_test.rb:
239
247
  comments:
240
248
  reviewed_by: josh.pencheon
@@ -243,15 +251,19 @@ file safety:
243
251
  comments:
244
252
  reviewed_by: josh.pencheon
245
253
  safe_revision: 511e4238f83eb5b32839c25d94ec2a59145539bb
254
+ test/nodes/test_result_groups_test.rb:
255
+ comments:
256
+ reviewed_by: josh.pencheon
257
+ safe_revision: 42bb9bd177a761b9d04d728e53fcf0ebd0083ae4
246
258
  test/nodes/test_results_test.rb:
247
259
  comments:
248
260
  reviewed_by: josh.pencheon
249
261
  safe_revision: 511e4238f83eb5b32839c25d94ec2a59145539bb
250
262
  test/parser_test.rb:
251
263
  comments:
252
- reviewed_by: josh.pencheon
253
- safe_revision: e258a1a403b7474f8919b1a76127f9ad71a640ad
264
+ reviewed_by: timgentry
265
+ safe_revision: 05ccd47fcbba92bf5525c4d36118274696169d61
254
266
  test/test_helper.rb:
255
267
  comments:
256
268
  reviewed_by: josh.pencheon
257
- safe_revision: 511e4238f83eb5b32839c25d94ec2a59145539bb
269
+ safe_revision: 42bb9bd177a761b9d04d728e53fcf0ebd0083ae4
@@ -9,6 +9,7 @@ Treetop.load File.expand_path('grammars/batch_types', File.dirname(__FILE__))
9
9
  Treetop.load File.expand_path('grammars/e_base_records', File.dirname(__FILE__))
10
10
  Treetop.load File.expand_path('grammars/genetic_test', File.dirname(__FILE__))
11
11
  Treetop.load File.expand_path('grammars/test_result', File.dirname(__FILE__))
12
+ Treetop.load File.expand_path('grammars/test_result_group', File.dirname(__FILE__))
12
13
  Treetop.load File.expand_path('grammars/patient', File.dirname(__FILE__))
13
14
  Treetop.load File.expand_path('grammars/registry', File.dirname(__FILE__))
14
15
  Treetop.load File.expand_path('grammars/provider', File.dirname(__FILE__))
@@ -5,6 +5,7 @@ grammar Canql
5
5
  include Anomaly
6
6
  include GeneticTest
7
7
  include TestResult
8
+ include TestResultGroup
8
9
  include Dates
9
10
  include EBaseRecords
10
11
  include BatchTypes
@@ -59,11 +60,11 @@ grammar Canql
59
60
  end
60
61
 
61
62
  rule case_preconditions
62
- registry / gender / outcome / primacy
63
+ registry / gender / outcome / primacy / category
63
64
  end
64
65
 
65
66
  rule patient_preconditions
66
- gender / primacy
67
+ gender / primacy / category
67
68
  end
68
69
 
69
70
  rule case_additional_conditions
@@ -127,7 +128,9 @@ grammar Canql
127
128
  end
128
129
 
129
130
  rule case_with_conditions
130
- anomalies / genetic_tests / test_results / perinatal_hospital / case_field_existance / mother_conditions / action_or_ebr
131
+ anomalies / genetic_tests / test_results / perinatal_hospital /
132
+ case_field_existance / test_result_groups / mother_conditions /
133
+ action_or_ebr
131
134
  end
132
135
 
133
136
  rule patient_with_conditions
@@ -12,6 +12,10 @@ module Canql
12
12
  space primacy:('primary' / 'alias' ) word_break <Nodes::Patient::PrimacyNode>
13
13
  end
14
14
 
15
+ rule category
16
+ space category:('eurocat amber and green' / 'eurocat red and amber' / 'eurocat red' / 'eurocat amber' / 'eurocat green' / 'eurocat') word_break <Nodes::Patient::CategoryNode>
17
+ end
18
+
15
19
  rule expected_keyword
16
20
  space ('expected' / 'due') word_break
17
21
  end
@@ -42,16 +46,17 @@ module Canql
42
46
 
43
47
  rule case_field_names
44
48
  patient_field_name:(
45
- 'date of birth' / 'dob' / 'nhs number' / 'delivery postcode' /
46
- 'booking postcode' / 'birth weight' /
49
+ 'date of birth' / 'dob' / 'date of vital status' / 'nhs number' /
50
+ 'delivery postcode' / 'booking postcode' / 'birth weight' /
47
51
  'place of delivery' / 'sex' / 'outcome' / 'edd' /
48
- 'expected delivery date' / 'booking hospital' / 'screening status'
52
+ 'expected delivery date' / 'booking hospital' / 'screening status' /
53
+ 'number of fetuses at delivery' / 'malformed in set'
49
54
  )
50
55
  end
51
56
 
52
57
  rule patient_field_names
53
58
  patient_field_name:(
54
- 'date of birth' / 'dob' / 'nhs number' / 'sex'
59
+ 'date of birth' / 'dob' / 'date of vital status' / 'nhs number' / 'sex'
55
60
  )
56
61
  end
57
62
 
@@ -0,0 +1,16 @@
1
+ module Canql
2
+ grammar TestResultGroup
3
+ rule test_result_groups
4
+ and_keyword? existance_modifier:test_result_group_existance_keyword group:test_result_group_names <Nodes::TestResultGroup::WithCondition>
5
+ end
6
+
7
+ rule test_result_group_existance_keyword
8
+ # If in furture the reverse is needed use 'supplied require'
9
+ space ('missing required' / 'missing' / 'supplied required' / 'supplied') word_break
10
+ end
11
+
12
+ rule test_result_group_names
13
+ space ('screening' / 'anomaly scan') word_break
14
+ end
15
+ end
16
+ end
@@ -17,6 +17,7 @@ require 'canql/nodes/batch_types'
17
17
  require 'canql/nodes/anomaly'
18
18
  require 'canql/nodes/genetic_test'
19
19
  require 'canql/nodes/test_result'
20
+ require 'canql/nodes/test_result_group'
20
21
  require 'canql/nodes/patient'
21
22
  require 'canql/nodes/main'
22
23
  require 'canql/nodes/registry'
@@ -32,16 +32,23 @@ module Canql #:nodoc: all
32
32
  anomalies = []
33
33
  genetic_tests = []
34
34
  test_results = []
35
+ test_result_groups = []
35
36
 
36
37
  post.elements.each do |element|
37
38
  anomalies << element.to_anomaly if element.respond_to?(:to_anomaly)
38
39
  genetic_tests << element.to_genetic_test if element.respond_to?(:to_genetic_test)
39
40
  test_results << element.to_test_result if element.respond_to?(:to_test_result)
41
+ if element.respond_to?(:to_test_result_group)
42
+ test_result_groups << element.to_test_result_group
43
+ end
40
44
  end
41
45
 
42
46
  conditions['anomalies'] = { Canql::ALL => anomalies } if anomalies.any?
43
47
  conditions['genetic_tests'] = { Canql::ALL => genetic_tests } if genetic_tests.any?
44
48
  conditions['test_results'] = { Canql::ALL => test_results } if test_results.any?
49
+ if test_result_groups.any?
50
+ conditions['test_result_groups'] = { Canql::ALL => test_result_groups }
51
+ end
45
52
  conditions
46
53
  end
47
54
  end
@@ -21,21 +21,40 @@ module Canql #:nodoc: all
21
21
  end
22
22
  end
23
23
 
24
+ module CategoryNode
25
+ def meta_data_item
26
+ { 'patient.category' => { Canql::EQUALS => clean_category } }
27
+ end
28
+
29
+ def clean_category
30
+ return 'eurocat_red' if 'eurocat red' == category.text_value
31
+ return 'eurocat_amber' if 'eurocat amber' == category.text_value
32
+ return 'eurocat_green' if 'eurocat green' == category.text_value
33
+ return 'eurocat_amber_green' if 'eurocat amber and green' == category.text_value
34
+ return 'eurocat_red_amber' if 'eurocat red and amber' == category.text_value
35
+
36
+ category.text_value
37
+ end
38
+ end
39
+
24
40
  module FieldExists
25
41
  FIELDS = {
26
- 'date of birth': { patient: 'birthdate', mother: 'birthdate' },
27
- 'dob': { patient: 'birthdate', mother: 'birthdate' },
28
- 'delivery postcode': { patient: 'delivery_postcode' },
29
- 'booking postcode': { patient: 'booking_postcode' },
30
- 'nhs number': { patient: 'nhsnumber', mother: 'nhsnumber' },
31
- 'birth weight': { patient: 'weight' },
32
- 'place of delivery': { patient: 'placeofdelivery' },
33
- 'sex': { patient: 'sex' },
34
- 'outcome': { patient: 'outcome' },
35
- 'edd': { patient: 'expecteddeliverydate' },
42
+ 'date of birth': { patient: 'birthdate', mother: 'birthdate' },
43
+ 'dob': { patient: 'birthdate', mother: 'birthdate' },
44
+ 'date of vital status': { patient: 'dateofvitalstatus', mother: 'dateofvitalstatus' },
45
+ 'delivery postcode': { patient: 'delivery_postcode' },
46
+ 'booking postcode': { patient: 'booking_postcode' },
47
+ 'nhs number': { patient: 'nhsnumber', mother: 'nhsnumber' },
48
+ 'birth weight': { patient: 'weight' },
49
+ 'place of delivery': { patient: 'placeofdelivery' },
50
+ 'sex': { patient: 'sex' },
51
+ 'outcome': { patient: 'outcome' },
52
+ 'edd': { patient: 'expecteddeliverydate' },
36
53
  'expected delivery date': { patient: 'expecteddeliverydate' },
37
- 'booking hospital': { patient: 'booking_hospital' },
38
- 'screening status': { patient: 'screeningstatus' }
54
+ 'booking hospital': { patient: 'booking_hospital' },
55
+ 'screening status': { patient: 'screeningstatus' },
56
+ 'number of fetuses at delivery': { patient: 'numoffetusesatdelivery' },
57
+ 'malformed in set': { patient: 'malformedinset' }
39
58
  }.freeze
40
59
 
41
60
  def meta_data_item
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Canql #:nodoc: all
4
+ module Nodes
5
+ module TestResultGroup
6
+ module WithCondition
7
+ def test_result_group
8
+ group.text_value.strip.parameterize.underscore
9
+ end
10
+
11
+ def to_test_result_group
12
+ test_result_group_hash = { 'exists' => existance_filter }
13
+ test_result_group_hash['required'] = requirement_filter
14
+ test_result_group_hash['group'] = test_result_group_filter if test_result_group.present?
15
+ test_result_group_hash
16
+ end
17
+
18
+ def existance_filter
19
+ {
20
+ Canql::EQUALS => ['supplied required', 'supplied'].include?(
21
+ existance_modifier.text_value.strip
22
+ )
23
+ }
24
+ end
25
+
26
+ def requirement_filter
27
+ {
28
+ Canql::EQUALS => ['supplied required', 'missing required'].include?(
29
+ existance_modifier.text_value.strip
30
+ )
31
+ }
32
+ end
33
+
34
+ def test_result_group_filter
35
+ { Canql::EQUALS => test_result_group }
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -2,5 +2,5 @@
2
2
 
3
3
  # This stores the current version of the Canql gem
4
4
  module Canql
5
- VERSION = '4.0.1'
5
+ VERSION = '4.4.1'
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: canql
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.1
4
+ version: 4.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - PHE NDR Development Team
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-10-29 00:00:00.000000000 Z
11
+ date: 2021-01-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: chronic
@@ -53,7 +53,7 @@ dependencies:
53
53
  version: '4.1'
54
54
  - - "<"
55
55
  - !ruby/object:Gem::Version
56
- version: '6'
56
+ version: '7'
57
57
  type: :runtime
58
58
  prerelease: false
59
59
  version_requirements: !ruby/object:Gem::Requirement
@@ -63,7 +63,7 @@ dependencies:
63
63
  version: '4.1'
64
64
  - - "<"
65
65
  - !ruby/object:Gem::Version
66
- version: '6'
66
+ version: '7'
67
67
  - !ruby/object:Gem::Dependency
68
68
  name: treetop
69
69
  requirement: !ruby/object:Gem::Requirement
@@ -154,20 +154,14 @@ dependencies:
154
154
  requirements:
155
155
  - - "~>"
156
156
  - !ruby/object:Gem::Version
157
- version: '3.1'
158
- - - ">="
159
- - !ruby/object:Gem::Version
160
- version: 3.1.3
157
+ version: '5.6'
161
158
  type: :development
162
159
  prerelease: false
163
160
  version_requirements: !ruby/object:Gem::Requirement
164
161
  requirements:
165
162
  - - "~>"
166
163
  - !ruby/object:Gem::Version
167
- version: '3.1'
168
- - - ">="
169
- - !ruby/object:Gem::Version
170
- version: 3.1.3
164
+ version: '5.6'
171
165
  - !ruby/object:Gem::Dependency
172
166
  name: pry
173
167
  requirement: !ruby/object:Gem::Requirement
@@ -244,6 +238,7 @@ files:
244
238
  - lib/canql/grammars/provider.treetop
245
239
  - lib/canql/grammars/registry.treetop
246
240
  - lib/canql/grammars/test_result.treetop
241
+ - lib/canql/grammars/test_result_group.treetop
247
242
  - lib/canql/nodes.rb
248
243
  - lib/canql/nodes/age.rb
249
244
  - lib/canql/nodes/anomaly.rb
@@ -256,6 +251,7 @@ files:
256
251
  - lib/canql/nodes/perinatal_hospital.rb
257
252
  - lib/canql/nodes/registry.rb
258
253
  - lib/canql/nodes/test_result.rb
254
+ - lib/canql/nodes/test_result_group.rb
259
255
  - lib/canql/parser.rb
260
256
  - lib/canql/treetop/extensions.rb
261
257
  - lib/canql/version.rb