canql 1.4.2 → 2.0.0

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
  SHA1:
3
- metadata.gz: aa6dc69bfb7e032c2dcd93159ba65ee5b7219a9f
4
- data.tar.gz: eebc970de0149954705316e1b885738df799a3e4
3
+ metadata.gz: 2f5ebcaf0870cdc1190bb62c79c3bb126a9beae6
4
+ data.tar.gz: e3eeef88f61de69b357d6bbee97dff1ddc9ea214
5
5
  SHA512:
6
- metadata.gz: 0106a96983cebd417e48d8e75da2f48fc14d9762a6ac4b2c0306b46abb64f4745382da3f787be0b4ab8b010eb74332594c183a60920c9b42c053c3d7f7f1bea2
7
- data.tar.gz: 9ba145d699797af1c723b74254259c3bf9ea7aeae622f35a408109f316d0bced8d9feb67b107918e1118acbd2c8682be63a8735a8c51e4357886f70c09e2f345
6
+ metadata.gz: f0543f4edbc2c7a3008c716876ba5bb738fe228d8657cb7923b9449dd4916c4a0f8c4a047ba9aa1da9c6d5ef9855df0d24ec88ae3ffec2b79ad27de2b298e894
7
+ data.tar.gz: dd56e722700df17f71ba35800b31b0181c99d72fe0486d639e16af793bbd90d718616e1ec15fc84199ddb7d58b1ed12e3f9752641d83bc4af24cdacffb9d62a4
@@ -4,6 +4,7 @@ Rails:
4
4
  Enabled: false
5
5
 
6
6
  AllCops:
7
+ TargetRailsVersion: 4.2
7
8
  TargetRubyVersion: 2.3
8
9
 
9
10
  Style/FrozenStringLiteralComment:
@@ -1,11 +1,16 @@
1
1
  language: ruby
2
2
 
3
3
  rvm:
4
- - 2.2.5
5
- - 2.3.1
4
+ - 2.3
5
+ - 2.4
6
+ - 2.5
6
7
 
7
8
  sudo: false
8
9
 
9
10
  cache: bundler
10
11
 
11
- before_script: "bundle update"
12
+ before_install:
13
+ - gem update --system
14
+ - gem install bundler
15
+
16
+ before_script: "bundle update"
data/Gemfile CHANGED
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  source 'https://rubygems.org'
3
4
 
4
5
  # Specify your gem's dependencies in canql.gemspec
data/README.md CHANGED
@@ -50,7 +50,7 @@ would output:
50
50
 
51
51
  The parser is case insensitive. An example of an almost fully involved CANQL query is:
52
52
 
53
- > First 27 Male Liveborn Thames Cases Due between 20/06/2015 and 25/06/2015 and Born on 22/06/2015 and that Died on 07/07/2015 with Prenatal Anomalies and Postnatal Tests and Missing Postcode and Date of Birth and QA Action and Unprocessed paediatric records and Mother Born between 01/10/1990 and 10/01/1999 and who Died on 01/08/2015 with Populated Postcode and NHS Number
53
+ > First 27 Male Liveborn Thames Cases Due between 20/06/2015 and 25/06/2015 and Born on 22/06/2015 and that Died on 07/07/2015 with Prenatal Suspected Q20 Anomalies and Postnatal Tests and Missing Postcode and Date of Birth and QA Action and Unprocessed paediatric records and Mother Born between 01/10/1990 and 10/01/1999 and who Died on 01/08/2015 with Populated Postcode and NHS Number
54
54
 
55
55
  Please see the tests for many more examples.
56
56
 
data/Rakefile CHANGED
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'bundler/gem_tasks'
3
4
  require 'rake/testtask'
4
5
  require 'ndr_dev_support/tasks'
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  # coding: utf-8
3
+
3
4
  lib = File.expand_path('../lib', __FILE__)
4
5
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
6
  require 'canql/version'
@@ -23,17 +24,18 @@ Gem::Specification.new do |spec|
23
24
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
25
  spec.require_paths = ['lib']
25
26
 
27
+ spec.add_dependency 'chronic', '~> 0.3.0'
26
28
  spec.add_dependency 'ndr_support', '>= 3.0', '< 6'
29
+ spec.add_dependency 'rails', '>= 4.1', '< 6'
27
30
  spec.add_dependency 'treetop', '>= 1.4.10'
28
- spec.add_dependency 'chronic', '~> 0.3.0'
29
31
 
30
- spec.add_development_dependency 'ndr_dev_support', '~> 2.0', '>= 2.0.2'
31
32
  spec.add_development_dependency 'bundler'
32
- spec.add_development_dependency 'rake'
33
- spec.add_development_dependency 'minitest'
34
- spec.add_development_dependency 'pry'
35
33
  spec.add_development_dependency 'guard'
36
- spec.add_development_dependency 'guard-rubocop'
37
34
  spec.add_development_dependency 'guard-minitest'
35
+ spec.add_development_dependency 'guard-rubocop'
36
+ spec.add_development_dependency 'minitest'
37
+ spec.add_development_dependency 'ndr_dev_support', '>= 3.0', '<6'
38
+ spec.add_development_dependency 'pry'
39
+ spec.add_development_dependency 'rake'
38
40
  spec.add_development_dependency 'terminal-notifier-guard' if RUBY_PLATFORM =~ /darwin/
39
41
  end
@@ -11,11 +11,11 @@ file safety:
11
11
  ".rubocop.yml":
12
12
  comments:
13
13
  reviewed_by: timgentry
14
- safe_revision: 618d1e7fa4793df5bff0bdb763ff90dd5ea63236
14
+ safe_revision: 5bc563431f7822e2baf37bbeac9861c36675602d
15
15
  ".travis.yml":
16
16
  comments:
17
17
  reviewed_by: timgentry
18
- safe_revision: 5c88b8eec43f7e7fd18fae6ac952ea6c2efddbbc
18
+ safe_revision: b0b9a616908e7aab28c8c47f997b6af8062aa83a
19
19
  CODE_OF_CONDUCT.md:
20
20
  comments:
21
21
  reviewed_by: drewthorp
@@ -23,7 +23,7 @@ file safety:
23
23
  Gemfile:
24
24
  comments:
25
25
  reviewed_by: timgentry
26
- safe_revision: d6f1ccac606735190d30c962b7681ed12aec374a
26
+ safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
27
27
  LICENSE.txt:
28
28
  comments:
29
29
  reviewed_by: timgentry
@@ -31,11 +31,11 @@ file safety:
31
31
  README.md:
32
32
  comments:
33
33
  reviewed_by: timgentry
34
- safe_revision: 336a2445709947df89a739ca611cf02f10783c08
34
+ safe_revision: d3ea041b101e40e6847608705ecc2c3f6e0ca03f
35
35
  Rakefile:
36
36
  comments:
37
37
  reviewed_by: timgentry
38
- safe_revision: 16a9dac62316fbc2ef953457732bc7d9b2f67111
38
+ safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
39
39
  bin/console:
40
40
  comments:
41
41
  reviewed_by: timgentry
@@ -47,11 +47,11 @@ file safety:
47
47
  canql.gemspec:
48
48
  comments:
49
49
  reviewed_by: timgentry
50
- safe_revision: b67d28ae2648219607e40dc77d6aef846a64f647
50
+ safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
51
51
  lib/canql.rb:
52
52
  comments:
53
53
  reviewed_by: timgentry
54
- safe_revision: d6f1ccac606735190d30c962b7681ed12aec374a
54
+ safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
55
55
  lib/canql/constants.rb:
56
56
  comments:
57
57
  reviewed_by: timgentry
@@ -59,7 +59,7 @@ file safety:
59
59
  lib/canql/grammars.rb:
60
60
  comments:
61
61
  reviewed_by: timgentry
62
- safe_revision: d6f1ccac606735190d30c962b7681ed12aec374a
62
+ safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
63
63
  lib/canql/grammars/age.treetop:
64
64
  comments: It is a known issue that this is potentially susceptible to certain
65
65
  kinds of DoS attack
@@ -69,7 +69,7 @@ file safety:
69
69
  comments: It is a known issue that this is potentially susceptible to certain
70
70
  kinds of DoS attack
71
71
  reviewed_by: timgentry
72
- safe_revision: a7b0ddabf0c3f7d8b129b4cd206b6e1d65781a10
72
+ safe_revision: bf2fbe12794f8b53e30a1ace01677cf6f215dbca
73
73
  lib/canql/grammars/batch_types.treetop:
74
74
  comments:
75
75
  reviewed_by: timgentry
@@ -87,7 +87,7 @@ file safety:
87
87
  comments: It is a known issue that this is potentially susceptible to certain
88
88
  kinds of DoS attack
89
89
  reviewed_by: timgentry
90
- safe_revision: 67be9ba603f1f1d1bd73c696fc1d814b4138ba5f
90
+ safe_revision: bf2fbe12794f8b53e30a1ace01677cf6f215dbca
91
91
  lib/canql/grammars/patient.treetop:
92
92
  comments: It is a known issue that this is potentially susceptible to certain
93
93
  kinds of DoS attack
@@ -102,100 +102,108 @@ file safety:
102
102
  comments: It is a known issue that this is potentially susceptible to certain
103
103
  kinds of DoS attack
104
104
  reviewed_by: timgentry
105
- safe_revision: a7b0ddabf0c3f7d8b129b4cd206b6e1d65781a10
105
+ safe_revision: c39d24bb500719971969762e94545e82866bf92f
106
106
  lib/canql/nodes.rb:
107
107
  comments:
108
108
  reviewed_by: timgentry
109
- safe_revision: d6f1ccac606735190d30c962b7681ed12aec374a
109
+ safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
110
110
  lib/canql/nodes/age.rb:
111
111
  comments:
112
112
  reviewed_by: timgentry
113
- safe_revision: d6f1ccac606735190d30c962b7681ed12aec374a
113
+ safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
114
114
  lib/canql/nodes/anomaly.rb:
115
115
  comments:
116
116
  reviewed_by: timgentry
117
- safe_revision: d6f1ccac606735190d30c962b7681ed12aec374a
117
+ safe_revision: bf2fbe12794f8b53e30a1ace01677cf6f215dbca
118
118
  lib/canql/nodes/batch_types.rb:
119
119
  comments:
120
120
  reviewed_by: timgentry
121
- safe_revision: d6f1ccac606735190d30c962b7681ed12aec374a
121
+ safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
122
122
  lib/canql/nodes/dates.rb:
123
123
  comments:
124
124
  reviewed_by: timgentry
125
- safe_revision: 9b72e0c6f96aaa8b8d45e137bed846d76d357028
125
+ safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
126
126
  lib/canql/nodes/e_base_records.rb:
127
127
  comments:
128
128
  reviewed_by: timgentry
129
- safe_revision: 1c30c1e78d86b74d747204ea40ae709ceaaf66b5
129
+ safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
130
130
  lib/canql/nodes/main.rb:
131
131
  comments:
132
132
  reviewed_by: timgentry
133
- safe_revision: d6f1ccac606735190d30c962b7681ed12aec374a
133
+ safe_revision: c39d24bb500719971969762e94545e82866bf92f
134
134
  lib/canql/nodes/patient.rb:
135
135
  comments:
136
136
  reviewed_by: timgentry
137
- safe_revision: 0bf684b681372d16145cae8c6bb831f1bb96f442
137
+ safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
138
138
  lib/canql/nodes/registry.rb:
139
139
  comments:
140
140
  reviewed_by: timgentry
141
- safe_revision: d6f1ccac606735190d30c962b7681ed12aec374a
141
+ safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
142
142
  lib/canql/nodes/test_result.rb:
143
143
  comments:
144
144
  reviewed_by: timgentry
145
- safe_revision: d6f1ccac606735190d30c962b7681ed12aec374a
145
+ safe_revision: c39d24bb500719971969762e94545e82866bf92f
146
146
  lib/canql/parser.rb:
147
147
  comments:
148
148
  reviewed_by: timgentry
149
- safe_revision: a923656606f581c220ea7af16196f2c68b5248f2
149
+ safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
150
150
  lib/canql/treetop/extensions.rb:
151
151
  comments:
152
152
  reviewed_by: timgentry
153
- safe_revision: d6f1ccac606735190d30c962b7681ed12aec374a
153
+ safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
154
154
  lib/canql/version.rb:
155
155
  comments:
156
156
  reviewed_by: timgentry
157
- safe_revision: 9a1b4b24ff53f60d505c6b6f02e3b913ab88ff04
157
+ safe_revision: fff6aa11e725708b9e077feb6bef28aa27fa43f5
158
+ test/anomaly_test_helper.rb:
159
+ comments:
160
+ reviewed_by: timgentry
161
+ safe_revision: bf2fbe12794f8b53e30a1ace01677cf6f215dbca
158
162
  test/canql_test.rb:
159
163
  comments:
160
164
  reviewed_by: timgentry
161
- safe_revision: d6f1ccac606735190d30c962b7681ed12aec374a
165
+ safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
162
166
  test/minitest_helper.rb:
163
167
  comments:
164
168
  reviewed_by: timgentry
165
- safe_revision: d6f1ccac606735190d30c962b7681ed12aec374a
169
+ safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
166
170
  test/nodes/age_test.rb:
167
171
  comments:
168
172
  reviewed_by: timgentry
169
- safe_revision: 2346abb4435bf95cbe9b4d8c124123b9fefe60d6
173
+ safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
170
174
  test/nodes/anomaly_test.rb:
171
175
  comments:
172
176
  reviewed_by: timgentry
173
- safe_revision: d6f1ccac606735190d30c962b7681ed12aec374a
177
+ safe_revision: bf2fbe12794f8b53e30a1ace01677cf6f215dbca
178
+ test/nodes/code_test.rb:
179
+ comments:
180
+ reviewed_by: timgentry
181
+ safe_revision: bf2fbe12794f8b53e30a1ace01677cf6f215dbca
174
182
  test/nodes/e_base_records_test.rb:
175
183
  comments:
176
184
  reviewed_by: timgentry
177
- safe_revision: e97a98051e1adfc03fa977f0d0da587df0d48f63
185
+ safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
178
186
  test/nodes/main_test.rb:
179
187
  comments:
180
188
  reviewed_by: timgentry
181
- safe_revision: d6f1ccac606735190d30c962b7681ed12aec374a
189
+ safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
182
190
  test/nodes/patient_test.rb:
183
191
  comments:
184
192
  reviewed_by: timgentry
185
- safe_revision: 336a2445709947df89a739ca611cf02f10783c08
193
+ safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
186
194
  test/nodes/registry_test.rb:
187
195
  comments:
188
196
  reviewed_by: timgentry
189
- safe_revision: d6f1ccac606735190d30c962b7681ed12aec374a
197
+ safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
190
198
  test/nodes/test_results_test.rb:
191
199
  comments:
192
200
  reviewed_by: timgentry
193
- safe_revision: d6f1ccac606735190d30c962b7681ed12aec374a
201
+ safe_revision: c39d24bb500719971969762e94545e82866bf92f
194
202
  test/parser_test.rb:
195
203
  comments:
196
204
  reviewed_by: timgentry
197
- safe_revision: 336a2445709947df89a739ca611cf02f10783c08
205
+ safe_revision: c39d24bb500719971969762e94545e82866bf92f
198
206
  test/test_helper.rb:
199
207
  comments:
200
208
  reviewed_by: timgentry
201
- safe_revision: d6f1ccac606735190d30c962b7681ed12aec374a
209
+ safe_revision: bf2fbe12794f8b53e30a1ace01677cf6f215dbca
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'active_support/time'
3
4
 
4
5
  require 'canql/version'
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'treetop'
3
4
 
4
5
  Treetop.load File.expand_path('grammars/age', File.dirname(__FILE__))
@@ -1,7 +1,7 @@
1
1
  module Canql
2
2
  grammar Anomaly
3
3
  rule anomalies
4
- and_keyword? existance_modifier:anomalies_no_keyword? natal_period:anomalies_natal_period? anomalies_keyword <Nodes::Anomaly::Exists>
4
+ and_keyword? existance_modifier:anomalies_no_keyword? status_type:anomaly_status? natal_period:anomalies_natal_period? code_data:(space first:anomalies_icd_code rest:more_anomalies_icd_codes* word_break)? anomalies_keyword <Nodes::Anomaly::WithCondition>
5
5
  end
6
6
 
7
7
  rule anomalies_no_keyword
@@ -12,8 +12,24 @@ module Canql
12
12
  (prenatal_keyword / postnatal_keyword)
13
13
  end
14
14
 
15
+ rule anomaly_status
16
+ (suspected_keyword / confirmed_keyword / probable_keyword / diagnosed_keyword)
17
+ end
18
+
15
19
  rule anomalies_keyword
16
20
  space 'anomalies' word_break
17
21
  end
22
+
23
+ rule more_anomalies_icd_codes
24
+ ','? space? ('and' space)? anomalies_icd_code <Nodes::Anomaly::AdditionalIcdCodeNode>
25
+ end
26
+
27
+ rule anomalies_icd_code
28
+ icd_code_name <Nodes::Anomaly::SingleIcdCodeNode>
29
+ end
30
+
31
+ rule icd_code_name
32
+ [a-z] [0-9] 1..3
33
+ end
18
34
  end
19
35
  end
@@ -53,7 +53,7 @@ grammar Canql
53
53
  end
54
54
 
55
55
  rule with_clause
56
- with_keyword post:with_conditions+
56
+ with_keyword post:with_conditions+ <Nodes::WithConditions>
57
57
  end
58
58
 
59
59
  rule with_keyword
@@ -80,6 +80,22 @@ grammar Canql
80
80
  space 'postnatal' word_break
81
81
  end
82
82
 
83
+ rule suspected_keyword
84
+ space 'suspected' word_break
85
+ end
86
+
87
+ rule confirmed_keyword
88
+ space 'confirmed' word_break
89
+ end
90
+
91
+ rule probable_keyword
92
+ space 'probable' word_break
93
+ end
94
+
95
+ rule diagnosed_keyword
96
+ space 'diagnosed' word_break
97
+ end
98
+
83
99
  rule with_conditions
84
100
  anomalies / test_results / patient_field_existance / mother_conditions / action_or_ebr
85
101
  end
@@ -1,7 +1,7 @@
1
1
  module Canql
2
2
  grammar TestResult
3
3
  rule test_results
4
- and_keyword? existance_modifier:test_result_no_keyword? natal_period:test_result_natal_period? test_results_keyword <Nodes::TestResult::Exists>
4
+ and_keyword? existance_modifier:test_result_no_keyword? natal_period:test_result_natal_period? test_results_keyword <Nodes::TestResult::WithCondition>
5
5
  end
6
6
 
7
7
  rule test_result_no_keyword
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  # These file contain custom mixins for treetop
3
4
  # nodes that enable them to generate meta_data_items, etc.
4
5
 
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Canql #:nodoc: all
3
4
  module Nodes
4
5
  module Age
@@ -1,21 +1,60 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Canql #:nodoc: all
3
4
  module Nodes
4
5
  module Anomaly
5
- module Exists
6
+ module WithCondition
6
7
  def anomaly_type
7
- text_value = natal_period.text_value.strip
8
- return '' if '' == text_value
8
+ natal_period.text_value.strip
9
+ end
10
+
11
+ def anomaly_status_type
12
+ status_type.text_value.strip
13
+ end
14
+
15
+ def to_anomaly
16
+ anomaly_hash = { 'exists' => existance_filter }
17
+ anomaly_hash['type'] = anomaly_type_filter if anomaly_type.present?
18
+ anomaly_hash['status'] = anomaly_status_type_filter if anomaly_status_type.present?
19
+ anomaly_hash['icd_codes'] = code_filter if code_filter.any?
20
+ anomaly_hash
21
+ end
22
+
23
+ def existance_filter
24
+ { Canql::EQUALS => existance_modifier.text_value.strip != 'no' }
25
+ end
26
+
27
+ def anomaly_type_filter
28
+ { Canql::EQUALS => anomaly_type }
29
+ end
30
+
31
+ def anomaly_status_type_filter
32
+ { Canql::EQUALS => anomaly_status_type }
33
+ end
34
+
35
+ def code_filter
36
+ return {} if code_data.text_value.blank?
37
+
38
+ code_array = [code_data.first.to_code]
39
+ code_data.rest.elements.each do |code|
40
+ code_array << code.try(:to_code)
41
+ end
42
+ code_array.flatten!
43
+ code_array.delete_if(&:blank?)
9
44
 
10
- ".#{text_value}"
45
+ { Canql::BEGINS => code_array }
11
46
  end
47
+ end
48
+
49
+ module AdditionalIcdCodeNode
50
+ def to_code
51
+ anomalies_icd_code.to_code
52
+ end
53
+ end
12
54
 
13
- def meta_data_item
14
- {
15
- "anomaly#{anomaly_type}.exists" => {
16
- Canql::EQUALS => existance_modifier.text_value.strip != 'no'
17
- }
18
- }
55
+ module SingleIcdCodeNode
56
+ def to_code
57
+ text_value.upcase
19
58
  end
20
59
  end
21
60
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Canql #:nodoc: all
3
4
  module Nodes
4
5
  module BatchTypeNode
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'chronic'
3
4
  require 'ndr_support/daterange'
4
5
 
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Canql #:nodoc: all
3
4
  module Nodes
4
5
  module EBaseRecordsNode
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  # require 'active_support/core_ext/object/blank'
3
4
 
4
5
  module Canql #:nodoc: all
@@ -10,3 +11,26 @@ module Canql #:nodoc: all
10
11
  end
11
12
  end
12
13
  end
14
+
15
+ module Canql #:nodoc: all
16
+ module Nodes
17
+ # Provides meta data for with conditions that return
18
+ # multiple instances of a condition type as an array
19
+ module WithConditions
20
+ def meta_data_item
21
+ conditions = {}
22
+ anomalies = []
23
+ test_results = []
24
+
25
+ post.elements.each do |element|
26
+ anomalies << element.to_anomaly if element.respond_to?(:to_anomaly)
27
+ test_results << element.to_test_result if element.respond_to?(:to_test_result)
28
+ end
29
+
30
+ conditions['anomalies'] = { Canql::ALL => anomalies } if anomalies.any?
31
+ conditions['test_results'] = { Canql::ALL => test_results } if test_results.any?
32
+ conditions
33
+ end
34
+ end
35
+ end
36
+ end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Canql #:nodoc: all
3
4
  module Nodes
4
5
  module Patient
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Canql #:nodoc: all
3
4
  module Nodes
4
5
  module RegistryNode
@@ -1,19 +1,25 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Canql #:nodoc: all
3
4
  module Nodes
4
5
  module TestResult
5
- module Exists
6
+ module WithCondition
6
7
  def test_result_type
7
- text_value = natal_period.text_value.strip
8
- return '' if '' == text_value
8
+ natal_period.text_value.strip
9
+ end
10
+
11
+ def to_test_result
12
+ test_result_hash = { 'exists' => existance_filter }
13
+ test_result_hash['type'] = test_result_type_filter if test_result_type.present?
14
+ test_result_hash
15
+ end
9
16
 
10
- ".#{text_value}"
17
+ def existance_filter
18
+ { Canql::EQUALS => existance_modifier.text_value.strip != 'no' }
11
19
  end
12
20
 
13
- def meta_data_item
14
- { "testresults#{test_result_type}.exists" => {
15
- Canql::EQUALS => existance_modifier.text_value.strip != 'no'
16
- } }
21
+ def test_result_type_filter
22
+ { Canql::EQUALS => test_result_type }
17
23
  end
18
24
  end
19
25
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'canql/nodes'
3
4
  require 'canql/grammars'
4
5
 
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Treetop
3
4
  module Runtime
4
5
  # We extend the SyntaxNode class to include a hash of meta data.
@@ -2,5 +2,5 @@
2
2
 
3
3
  # This stores the current version of the Canql gem
4
4
  module Canql
5
- VERSION = '1.4.2'
5
+ VERSION = '2.0.0'
6
6
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: canql
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.2
4
+ version: 2.0.0
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: 2017-08-21 00:00:00.000000000 Z
11
+ date: 2018-05-18 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: chronic
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.3.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.3.0
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: ndr_support
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -31,55 +45,55 @@ dependencies:
31
45
  - !ruby/object:Gem::Version
32
46
  version: '6'
33
47
  - !ruby/object:Gem::Dependency
34
- name: treetop
48
+ name: rails
35
49
  requirement: !ruby/object:Gem::Requirement
36
50
  requirements:
37
51
  - - ">="
38
52
  - !ruby/object:Gem::Version
39
- version: 1.4.10
53
+ version: '4.1'
54
+ - - "<"
55
+ - !ruby/object:Gem::Version
56
+ version: '6'
40
57
  type: :runtime
41
58
  prerelease: false
42
59
  version_requirements: !ruby/object:Gem::Requirement
43
60
  requirements:
44
61
  - - ">="
45
62
  - !ruby/object:Gem::Version
46
- version: 1.4.10
63
+ version: '4.1'
64
+ - - "<"
65
+ - !ruby/object:Gem::Version
66
+ version: '6'
47
67
  - !ruby/object:Gem::Dependency
48
- name: chronic
68
+ name: treetop
49
69
  requirement: !ruby/object:Gem::Requirement
50
70
  requirements:
51
- - - "~>"
71
+ - - ">="
52
72
  - !ruby/object:Gem::Version
53
- version: 0.3.0
73
+ version: 1.4.10
54
74
  type: :runtime
55
75
  prerelease: false
56
76
  version_requirements: !ruby/object:Gem::Requirement
57
77
  requirements:
58
- - - "~>"
78
+ - - ">="
59
79
  - !ruby/object:Gem::Version
60
- version: 0.3.0
80
+ version: 1.4.10
61
81
  - !ruby/object:Gem::Dependency
62
- name: ndr_dev_support
82
+ name: bundler
63
83
  requirement: !ruby/object:Gem::Requirement
64
84
  requirements:
65
- - - "~>"
66
- - !ruby/object:Gem::Version
67
- version: '2.0'
68
85
  - - ">="
69
86
  - !ruby/object:Gem::Version
70
- version: 2.0.2
87
+ version: '0'
71
88
  type: :development
72
89
  prerelease: false
73
90
  version_requirements: !ruby/object:Gem::Requirement
74
91
  requirements:
75
- - - "~>"
76
- - !ruby/object:Gem::Version
77
- version: '2.0'
78
92
  - - ">="
79
93
  - !ruby/object:Gem::Version
80
- version: 2.0.2
94
+ version: '0'
81
95
  - !ruby/object:Gem::Dependency
82
- name: bundler
96
+ name: guard
83
97
  requirement: !ruby/object:Gem::Requirement
84
98
  requirements:
85
99
  - - ">="
@@ -93,7 +107,7 @@ dependencies:
93
107
  - !ruby/object:Gem::Version
94
108
  version: '0'
95
109
  - !ruby/object:Gem::Dependency
96
- name: rake
110
+ name: guard-minitest
97
111
  requirement: !ruby/object:Gem::Requirement
98
112
  requirements:
99
113
  - - ">="
@@ -107,7 +121,7 @@ dependencies:
107
121
  - !ruby/object:Gem::Version
108
122
  version: '0'
109
123
  - !ruby/object:Gem::Dependency
110
- name: minitest
124
+ name: guard-rubocop
111
125
  requirement: !ruby/object:Gem::Requirement
112
126
  requirements:
113
127
  - - ">="
@@ -121,7 +135,7 @@ dependencies:
121
135
  - !ruby/object:Gem::Version
122
136
  version: '0'
123
137
  - !ruby/object:Gem::Dependency
124
- name: pry
138
+ name: minitest
125
139
  requirement: !ruby/object:Gem::Requirement
126
140
  requirements:
127
141
  - - ">="
@@ -135,21 +149,27 @@ dependencies:
135
149
  - !ruby/object:Gem::Version
136
150
  version: '0'
137
151
  - !ruby/object:Gem::Dependency
138
- name: guard
152
+ name: ndr_dev_support
139
153
  requirement: !ruby/object:Gem::Requirement
140
154
  requirements:
141
155
  - - ">="
142
156
  - !ruby/object:Gem::Version
143
- version: '0'
157
+ version: '3.0'
158
+ - - "<"
159
+ - !ruby/object:Gem::Version
160
+ version: '6'
144
161
  type: :development
145
162
  prerelease: false
146
163
  version_requirements: !ruby/object:Gem::Requirement
147
164
  requirements:
148
165
  - - ">="
149
166
  - !ruby/object:Gem::Version
150
- version: '0'
167
+ version: '3.0'
168
+ - - "<"
169
+ - !ruby/object:Gem::Version
170
+ version: '6'
151
171
  - !ruby/object:Gem::Dependency
152
- name: guard-rubocop
172
+ name: pry
153
173
  requirement: !ruby/object:Gem::Requirement
154
174
  requirements:
155
175
  - - ">="
@@ -163,7 +183,7 @@ dependencies:
163
183
  - !ruby/object:Gem::Version
164
184
  version: '0'
165
185
  - !ruby/object:Gem::Dependency
166
- name: guard-minitest
186
+ name: rake
167
187
  requirement: !ruby/object:Gem::Requirement
168
188
  requirements:
169
189
  - - ">="
@@ -254,7 +274,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
254
274
  version: '0'
255
275
  requirements: []
256
276
  rubyforge_project:
257
- rubygems_version: 2.5.1
277
+ rubygems_version: 2.5.2.3
258
278
  signing_key:
259
279
  specification_version: 4
260
280
  summary: Congenital Anomaly Natural Query Language