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 +4 -4
- data/.rubocop.yml +1 -0
- data/.travis.yml +8 -3
- data/Gemfile +1 -0
- data/README.md +1 -1
- data/Rakefile +1 -0
- data/canql.gemspec +8 -6
- data/code_safety.yml +43 -35
- data/lib/canql.rb +1 -0
- data/lib/canql/grammars.rb +1 -0
- data/lib/canql/grammars/anomaly.treetop +17 -1
- data/lib/canql/grammars/main.treetop +17 -1
- data/lib/canql/grammars/test_result.treetop +1 -1
- data/lib/canql/nodes.rb +1 -0
- data/lib/canql/nodes/age.rb +1 -0
- data/lib/canql/nodes/anomaly.rb +49 -10
- data/lib/canql/nodes/batch_types.rb +1 -0
- data/lib/canql/nodes/dates.rb +1 -0
- data/lib/canql/nodes/e_base_records.rb +1 -0
- data/lib/canql/nodes/main.rb +24 -0
- data/lib/canql/nodes/patient.rb +1 -0
- data/lib/canql/nodes/registry.rb +1 -0
- data/lib/canql/nodes/test_result.rb +14 -8
- data/lib/canql/parser.rb +1 -0
- data/lib/canql/treetop/extensions.rb +1 -0
- data/lib/canql/version.rb +1 -1
- metadata +49 -29
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2f5ebcaf0870cdc1190bb62c79c3bb126a9beae6
|
4
|
+
data.tar.gz: e3eeef88f61de69b357d6bbee97dff1ddc9ea214
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f0543f4edbc2c7a3008c716876ba5bb738fe228d8657cb7923b9449dd4916c4a0f8c4a047ba9aa1da9c6d5ef9855df0d24ec88ae3ffec2b79ad27de2b298e894
|
7
|
+
data.tar.gz: dd56e722700df17f71ba35800b31b0181c99d72fe0486d639e16af793bbd90d718616e1ec15fc84199ddb7d58b1ed12e3f9752641d83bc4af24cdacffb9d62a4
|
data/.rubocop.yml
CHANGED
data/.travis.yml
CHANGED
@@ -1,11 +1,16 @@
|
|
1
1
|
language: ruby
|
2
2
|
|
3
3
|
rvm:
|
4
|
-
- 2.
|
5
|
-
- 2.
|
4
|
+
- 2.3
|
5
|
+
- 2.4
|
6
|
+
- 2.5
|
6
7
|
|
7
8
|
sudo: false
|
8
9
|
|
9
10
|
cache: bundler
|
10
11
|
|
11
|
-
|
12
|
+
before_install:
|
13
|
+
- gem update --system
|
14
|
+
- gem install bundler
|
15
|
+
|
16
|
+
before_script: "bundle update"
|
data/Gemfile
CHANGED
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
data/canql.gemspec
CHANGED
@@ -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
|
data/code_safety.yml
CHANGED
@@ -11,11 +11,11 @@ file safety:
|
|
11
11
|
".rubocop.yml":
|
12
12
|
comments:
|
13
13
|
reviewed_by: timgentry
|
14
|
-
safe_revision:
|
14
|
+
safe_revision: 5bc563431f7822e2baf37bbeac9861c36675602d
|
15
15
|
".travis.yml":
|
16
16
|
comments:
|
17
17
|
reviewed_by: timgentry
|
18
|
-
safe_revision:
|
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:
|
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:
|
34
|
+
safe_revision: d3ea041b101e40e6847608705ecc2c3f6e0ca03f
|
35
35
|
Rakefile:
|
36
36
|
comments:
|
37
37
|
reviewed_by: timgentry
|
38
|
-
safe_revision:
|
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:
|
50
|
+
safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
|
51
51
|
lib/canql.rb:
|
52
52
|
comments:
|
53
53
|
reviewed_by: timgentry
|
54
|
-
safe_revision:
|
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:
|
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:
|
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:
|
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:
|
105
|
+
safe_revision: c39d24bb500719971969762e94545e82866bf92f
|
106
106
|
lib/canql/nodes.rb:
|
107
107
|
comments:
|
108
108
|
reviewed_by: timgentry
|
109
|
-
safe_revision:
|
109
|
+
safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
|
110
110
|
lib/canql/nodes/age.rb:
|
111
111
|
comments:
|
112
112
|
reviewed_by: timgentry
|
113
|
-
safe_revision:
|
113
|
+
safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
|
114
114
|
lib/canql/nodes/anomaly.rb:
|
115
115
|
comments:
|
116
116
|
reviewed_by: timgentry
|
117
|
-
safe_revision:
|
117
|
+
safe_revision: bf2fbe12794f8b53e30a1ace01677cf6f215dbca
|
118
118
|
lib/canql/nodes/batch_types.rb:
|
119
119
|
comments:
|
120
120
|
reviewed_by: timgentry
|
121
|
-
safe_revision:
|
121
|
+
safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
|
122
122
|
lib/canql/nodes/dates.rb:
|
123
123
|
comments:
|
124
124
|
reviewed_by: timgentry
|
125
|
-
safe_revision:
|
125
|
+
safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
|
126
126
|
lib/canql/nodes/e_base_records.rb:
|
127
127
|
comments:
|
128
128
|
reviewed_by: timgentry
|
129
|
-
safe_revision:
|
129
|
+
safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
|
130
130
|
lib/canql/nodes/main.rb:
|
131
131
|
comments:
|
132
132
|
reviewed_by: timgentry
|
133
|
-
safe_revision:
|
133
|
+
safe_revision: c39d24bb500719971969762e94545e82866bf92f
|
134
134
|
lib/canql/nodes/patient.rb:
|
135
135
|
comments:
|
136
136
|
reviewed_by: timgentry
|
137
|
-
safe_revision:
|
137
|
+
safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
|
138
138
|
lib/canql/nodes/registry.rb:
|
139
139
|
comments:
|
140
140
|
reviewed_by: timgentry
|
141
|
-
safe_revision:
|
141
|
+
safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
|
142
142
|
lib/canql/nodes/test_result.rb:
|
143
143
|
comments:
|
144
144
|
reviewed_by: timgentry
|
145
|
-
safe_revision:
|
145
|
+
safe_revision: c39d24bb500719971969762e94545e82866bf92f
|
146
146
|
lib/canql/parser.rb:
|
147
147
|
comments:
|
148
148
|
reviewed_by: timgentry
|
149
|
-
safe_revision:
|
149
|
+
safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
|
150
150
|
lib/canql/treetop/extensions.rb:
|
151
151
|
comments:
|
152
152
|
reviewed_by: timgentry
|
153
|
-
safe_revision:
|
153
|
+
safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
|
154
154
|
lib/canql/version.rb:
|
155
155
|
comments:
|
156
156
|
reviewed_by: timgentry
|
157
|
-
safe_revision:
|
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:
|
165
|
+
safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
|
162
166
|
test/minitest_helper.rb:
|
163
167
|
comments:
|
164
168
|
reviewed_by: timgentry
|
165
|
-
safe_revision:
|
169
|
+
safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
|
166
170
|
test/nodes/age_test.rb:
|
167
171
|
comments:
|
168
172
|
reviewed_by: timgentry
|
169
|
-
safe_revision:
|
173
|
+
safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
|
170
174
|
test/nodes/anomaly_test.rb:
|
171
175
|
comments:
|
172
176
|
reviewed_by: timgentry
|
173
|
-
safe_revision:
|
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:
|
185
|
+
safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
|
178
186
|
test/nodes/main_test.rb:
|
179
187
|
comments:
|
180
188
|
reviewed_by: timgentry
|
181
|
-
safe_revision:
|
189
|
+
safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
|
182
190
|
test/nodes/patient_test.rb:
|
183
191
|
comments:
|
184
192
|
reviewed_by: timgentry
|
185
|
-
safe_revision:
|
193
|
+
safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
|
186
194
|
test/nodes/registry_test.rb:
|
187
195
|
comments:
|
188
196
|
reviewed_by: timgentry
|
189
|
-
safe_revision:
|
197
|
+
safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
|
190
198
|
test/nodes/test_results_test.rb:
|
191
199
|
comments:
|
192
200
|
reviewed_by: timgentry
|
193
|
-
safe_revision:
|
201
|
+
safe_revision: c39d24bb500719971969762e94545e82866bf92f
|
194
202
|
test/parser_test.rb:
|
195
203
|
comments:
|
196
204
|
reviewed_by: timgentry
|
197
|
-
safe_revision:
|
205
|
+
safe_revision: c39d24bb500719971969762e94545e82866bf92f
|
198
206
|
test/test_helper.rb:
|
199
207
|
comments:
|
200
208
|
reviewed_by: timgentry
|
201
|
-
safe_revision:
|
209
|
+
safe_revision: bf2fbe12794f8b53e30a1ace01677cf6f215dbca
|
data/lib/canql.rb
CHANGED
data/lib/canql/grammars.rb
CHANGED
@@ -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::
|
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::
|
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
|
data/lib/canql/nodes.rb
CHANGED
data/lib/canql/nodes/age.rb
CHANGED
data/lib/canql/nodes/anomaly.rb
CHANGED
@@ -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
|
6
|
+
module WithCondition
|
6
7
|
def anomaly_type
|
7
|
-
|
8
|
-
|
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
|
-
|
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
|
-
|
14
|
-
|
15
|
-
|
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
|
data/lib/canql/nodes/dates.rb
CHANGED
data/lib/canql/nodes/main.rb
CHANGED
@@ -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
|
data/lib/canql/nodes/patient.rb
CHANGED
data/lib/canql/nodes/registry.rb
CHANGED
@@ -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
|
6
|
+
module WithCondition
|
6
7
|
def test_result_type
|
7
|
-
|
8
|
-
|
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
|
-
|
17
|
+
def existance_filter
|
18
|
+
{ Canql::EQUALS => existance_modifier.text_value.strip != 'no' }
|
11
19
|
end
|
12
20
|
|
13
|
-
def
|
14
|
-
{
|
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
|
data/lib/canql/parser.rb
CHANGED
data/lib/canql/version.rb
CHANGED
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:
|
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:
|
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:
|
48
|
+
name: rails
|
35
49
|
requirement: !ruby/object:Gem::Requirement
|
36
50
|
requirements:
|
37
51
|
- - ">="
|
38
52
|
- !ruby/object:Gem::Version
|
39
|
-
version:
|
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:
|
63
|
+
version: '4.1'
|
64
|
+
- - "<"
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '6'
|
47
67
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
68
|
+
name: treetop
|
49
69
|
requirement: !ruby/object:Gem::Requirement
|
50
70
|
requirements:
|
51
|
-
- - "
|
71
|
+
- - ">="
|
52
72
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
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:
|
80
|
+
version: 1.4.10
|
61
81
|
- !ruby/object:Gem::Dependency
|
62
|
-
name:
|
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:
|
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:
|
94
|
+
version: '0'
|
81
95
|
- !ruby/object:Gem::Dependency
|
82
|
-
name:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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.
|
277
|
+
rubygems_version: 2.5.2.3
|
258
278
|
signing_key:
|
259
279
|
specification_version: 4
|
260
280
|
summary: Congenital Anomaly Natural Query Language
|