canql 1.4.2 → 2.0.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.
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