canql 2.10.0 → 3.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/CHANGELOG.md +4 -0
- data/README.md +1 -1
- data/code_safety.yml +36 -24
- data/lib/canql/grammars/main.treetop +36 -9
- data/lib/canql/grammars/patient.treetop +15 -1
- data/lib/canql/nodes/main.rb +10 -0
- data/lib/canql/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 935d92e9e0fa6135540db6a7acfdf127d9fdf395ddbd8f1c93f328b8e708983e
|
|
4
|
+
data.tar.gz: 0b55234d83f824b71c66beb3e761ce0687393bb9e2695aaa21bda055883cdec0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c97e4d469ee36061bfd75b6c27c28ec47ed63c626bfd1412a84e9d0139cc2510f2d8c429b5793eded4e174cb9ec4a7401664492ae8dc52e2bddc6ca9382bf147
|
|
7
|
+
data.tar.gz: 6f0998e8c64dd33322c70ca72c610a5b69c96956758e94a646489bf4eb14f7ee892bd268f01e6809e0cf42356591e8cedb7a6b15ffec4529001c56b000c9c191
|
data/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
## [Unreleased]
|
|
2
2
|
*no unreleased changes*
|
|
3
3
|
|
|
4
|
+
## 3.0.0 / 2019-06-04
|
|
5
|
+
### Changed
|
|
6
|
+
* Added new branch of CANQL for querying all patient not just child patients - modifies DIR (#29)
|
|
7
|
+
|
|
4
8
|
## 2.10.0 / 2019-05-29
|
|
5
9
|
### Added
|
|
6
10
|
* Add filter for processing region (#32)
|
data/README.md
CHANGED
|
@@ -45,7 +45,7 @@ end
|
|
|
45
45
|
would output:
|
|
46
46
|
|
|
47
47
|
```json
|
|
48
|
-
{"patient.sex":{"equals":"1"},"patient.registry":{"equals":"84"}}
|
|
48
|
+
{"results.subject":{"equals":"case"},"patient.sex":{"equals":"1"},"patient.registry":{"equals":"84"}}
|
|
49
49
|
```
|
|
50
50
|
and booking at hospital RGT01 and delivery at addenbrookes trust
|
|
51
51
|
The parser is case insensitive. An example of an almost fully involved CANQL query is:
|
data/code_safety.yml
CHANGED
|
@@ -19,7 +19,7 @@ file safety:
|
|
|
19
19
|
CHANGELOG.md:
|
|
20
20
|
comments:
|
|
21
21
|
reviewed_by: josh.pencheon
|
|
22
|
-
safe_revision:
|
|
22
|
+
safe_revision: ff70470e8fa9613a6968a7579b206b6107ef5312
|
|
23
23
|
CODE_OF_CONDUCT.md:
|
|
24
24
|
comments:
|
|
25
25
|
reviewed_by: drewthorp
|
|
@@ -35,7 +35,7 @@ file safety:
|
|
|
35
35
|
README.md:
|
|
36
36
|
comments:
|
|
37
37
|
reviewed_by: josh.pencheon
|
|
38
|
-
safe_revision:
|
|
38
|
+
safe_revision: 511e4238f83eb5b32839c25d94ec2a59145539bb
|
|
39
39
|
Rakefile:
|
|
40
40
|
comments:
|
|
41
41
|
reviewed_by: timgentry
|
|
@@ -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:
|
|
98
|
+
safe_revision: 511e4238f83eb5b32839c25d94ec2a59145539bb
|
|
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:
|
|
103
|
+
safe_revision: 511e4238f83eb5b32839c25d94ec2a59145539bb
|
|
104
104
|
lib/canql/grammars/perinatal_hospital.treetop:
|
|
105
105
|
comments:
|
|
106
106
|
reviewed_by: josh.pencheon
|
|
@@ -150,7 +150,7 @@ file safety:
|
|
|
150
150
|
lib/canql/nodes/main.rb:
|
|
151
151
|
comments:
|
|
152
152
|
reviewed_by: josh.pencheon
|
|
153
|
-
safe_revision:
|
|
153
|
+
safe_revision: 511e4238f83eb5b32839c25d94ec2a59145539bb
|
|
154
154
|
lib/canql/nodes/patient.rb:
|
|
155
155
|
comments:
|
|
156
156
|
reviewed_by: josh.pencheon
|
|
@@ -178,7 +178,7 @@ file safety:
|
|
|
178
178
|
lib/canql/version.rb:
|
|
179
179
|
comments:
|
|
180
180
|
reviewed_by: josh.pencheon
|
|
181
|
-
safe_revision:
|
|
181
|
+
safe_revision: ff70470e8fa9613a6968a7579b206b6107ef5312
|
|
182
182
|
test/anomaly_test_helper.rb:
|
|
183
183
|
comments:
|
|
184
184
|
reviewed_by: josh.pencheon
|
|
@@ -191,14 +191,18 @@ file safety:
|
|
|
191
191
|
comments:
|
|
192
192
|
reviewed_by: timgentry
|
|
193
193
|
safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
|
|
194
|
-
test/nodes/age_test.rb:
|
|
195
|
-
comments:
|
|
196
|
-
reviewed_by: timgentry
|
|
197
|
-
safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
|
|
198
194
|
test/nodes/anomaly_test.rb:
|
|
199
195
|
comments:
|
|
200
196
|
reviewed_by: josh.pencheon
|
|
201
|
-
safe_revision:
|
|
197
|
+
safe_revision: 511e4238f83eb5b32839c25d94ec2a59145539bb
|
|
198
|
+
test/nodes/case_age_test.rb:
|
|
199
|
+
comments:
|
|
200
|
+
reviewed_by: josh.pencheon
|
|
201
|
+
safe_revision: 511e4238f83eb5b32839c25d94ec2a59145539bb
|
|
202
|
+
test/nodes/case_test.rb:
|
|
203
|
+
comments:
|
|
204
|
+
reviewed_by: josh.pencheon
|
|
205
|
+
safe_revision: 511e4238f83eb5b32839c25d94ec2a59145539bb
|
|
202
206
|
test/nodes/code_test.rb:
|
|
203
207
|
comments:
|
|
204
208
|
reviewed_by: timgentry
|
|
@@ -206,40 +210,48 @@ file safety:
|
|
|
206
210
|
test/nodes/e_base_records_test.rb:
|
|
207
211
|
comments:
|
|
208
212
|
reviewed_by: josh.pencheon
|
|
209
|
-
safe_revision:
|
|
213
|
+
safe_revision: 511e4238f83eb5b32839c25d94ec2a59145539bb
|
|
210
214
|
test/nodes/genetic_tests_test.rb:
|
|
211
215
|
comments:
|
|
212
216
|
reviewed_by: josh.pencheon
|
|
213
|
-
safe_revision:
|
|
214
|
-
test/nodes/
|
|
217
|
+
safe_revision: 511e4238f83eb5b32839c25d94ec2a59145539bb
|
|
218
|
+
test/nodes/main_case_test.rb:
|
|
215
219
|
comments:
|
|
216
|
-
reviewed_by:
|
|
217
|
-
safe_revision:
|
|
220
|
+
reviewed_by: josh.pencheon
|
|
221
|
+
safe_revision: 511e4238f83eb5b32839c25d94ec2a59145539bb
|
|
222
|
+
test/nodes/main_patient_test.rb:
|
|
223
|
+
comments:
|
|
224
|
+
reviewed_by: josh.pencheon
|
|
225
|
+
safe_revision: 511e4238f83eb5b32839c25d94ec2a59145539bb
|
|
218
226
|
test/nodes/mother_e_base_records_test.rb:
|
|
219
227
|
comments:
|
|
220
228
|
reviewed_by: josh.pencheon
|
|
221
229
|
safe_revision: 4805609963f75639e2444df8f42d2d6d65005b7c
|
|
230
|
+
test/nodes/patient_age_test.rb:
|
|
231
|
+
comments:
|
|
232
|
+
reviewed_by: josh.pencheon
|
|
233
|
+
safe_revision: 511e4238f83eb5b32839c25d94ec2a59145539bb
|
|
222
234
|
test/nodes/patient_test.rb:
|
|
223
235
|
comments:
|
|
224
236
|
reviewed_by: josh.pencheon
|
|
225
|
-
safe_revision:
|
|
237
|
+
safe_revision: 33597126dbd2f720bd867fc357003634b73e6d0a
|
|
226
238
|
test/nodes/perinatal_hospital_test.rb:
|
|
227
239
|
comments:
|
|
228
240
|
reviewed_by: josh.pencheon
|
|
229
|
-
safe_revision:
|
|
241
|
+
safe_revision: 511e4238f83eb5b32839c25d94ec2a59145539bb
|
|
230
242
|
test/nodes/registry_test.rb:
|
|
231
243
|
comments:
|
|
232
|
-
reviewed_by:
|
|
233
|
-
safe_revision:
|
|
244
|
+
reviewed_by: josh.pencheon
|
|
245
|
+
safe_revision: 511e4238f83eb5b32839c25d94ec2a59145539bb
|
|
234
246
|
test/nodes/test_results_test.rb:
|
|
235
247
|
comments:
|
|
236
|
-
reviewed_by:
|
|
237
|
-
safe_revision:
|
|
248
|
+
reviewed_by: josh.pencheon
|
|
249
|
+
safe_revision: 511e4238f83eb5b32839c25d94ec2a59145539bb
|
|
238
250
|
test/parser_test.rb:
|
|
239
251
|
comments:
|
|
240
252
|
reviewed_by: josh.pencheon
|
|
241
|
-
safe_revision:
|
|
253
|
+
safe_revision: 511e4238f83eb5b32839c25d94ec2a59145539bb
|
|
242
254
|
test/test_helper.rb:
|
|
243
255
|
comments:
|
|
244
256
|
reviewed_by: josh.pencheon
|
|
245
|
-
safe_revision:
|
|
257
|
+
safe_revision: 511e4238f83eb5b32839c25d94ec2a59145539bb
|
|
@@ -13,8 +13,15 @@ grammar Canql
|
|
|
13
13
|
|
|
14
14
|
# The root grammar
|
|
15
15
|
rule query
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
case_query / patient_query
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
rule case_query
|
|
20
|
+
quantity:record_count? pre:case_preconditions* cases_keyword post:case_additional_conditions* case_with_clause?
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
rule patient_query
|
|
24
|
+
quantity:record_count? pre:patient_preconditions* patient_keyword post:patient_additional_conditions* patient_with_clause?
|
|
18
25
|
end
|
|
19
26
|
|
|
20
27
|
rule word_break
|
|
@@ -44,19 +51,35 @@ grammar Canql
|
|
|
44
51
|
end
|
|
45
52
|
|
|
46
53
|
rule cases_keyword
|
|
47
|
-
space subject:('cases' / 'babies') word_break
|
|
54
|
+
space subject:('cases' / 'babies') word_break <Nodes::SubjectNode>
|
|
48
55
|
end
|
|
49
56
|
|
|
50
|
-
rule
|
|
57
|
+
rule patient_keyword
|
|
58
|
+
space subject:'patients' word_break <Nodes::SubjectNode>
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
rule case_preconditions
|
|
51
62
|
registry / gender / outcome / primacy
|
|
52
63
|
end
|
|
53
64
|
|
|
54
|
-
rule
|
|
65
|
+
rule patient_preconditions
|
|
66
|
+
gender / primacy
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
rule case_additional_conditions
|
|
55
70
|
and_keyword? (expected / with_birth_date / with_death_date)
|
|
56
71
|
end
|
|
57
72
|
|
|
58
|
-
rule
|
|
59
|
-
|
|
73
|
+
rule patient_additional_conditions
|
|
74
|
+
and_keyword? (with_birth_date / with_death_date)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
rule case_with_clause
|
|
78
|
+
with_keyword post:case_with_conditions+ <Nodes::WithConditions>
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
rule patient_with_clause
|
|
82
|
+
with_keyword post:patient_with_conditions+ <Nodes::WithConditions>
|
|
60
83
|
end
|
|
61
84
|
|
|
62
85
|
rule with_keyword
|
|
@@ -103,7 +126,11 @@ grammar Canql
|
|
|
103
126
|
space 'at' word_break
|
|
104
127
|
end
|
|
105
128
|
|
|
106
|
-
rule
|
|
107
|
-
anomalies / genetic_tests / test_results / perinatal_hospital /
|
|
129
|
+
rule case_with_conditions
|
|
130
|
+
anomalies / genetic_tests / test_results / perinatal_hospital / case_field_existance / mother_conditions / action_or_ebr
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
rule patient_with_conditions
|
|
134
|
+
anomalies / genetic_tests / test_results / patient_field_existance / action_or_ebr
|
|
108
135
|
end
|
|
109
136
|
end
|
|
@@ -20,6 +20,10 @@ module Canql
|
|
|
20
20
|
expected_keyword fuzzy_date <Nodes::Patient::ExpectedDateRangeNode>
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
+
rule case_field_existance
|
|
24
|
+
and_keyword? field_existance_modifier:existance_keyword patient_field_list:case_field_list <Nodes::Patient::FieldExists>
|
|
25
|
+
end
|
|
26
|
+
|
|
23
27
|
rule patient_field_existance
|
|
24
28
|
and_keyword? field_existance_modifier:existance_keyword patient_field_list:patient_field_list <Nodes::Patient::FieldExists>
|
|
25
29
|
end
|
|
@@ -28,11 +32,15 @@ module Canql
|
|
|
28
32
|
space 'field' 's'? word_break
|
|
29
33
|
end
|
|
30
34
|
|
|
35
|
+
rule case_field_list
|
|
36
|
+
space case_field_names (comma case_field_names)*
|
|
37
|
+
end
|
|
38
|
+
|
|
31
39
|
rule patient_field_list
|
|
32
40
|
space patient_field_names (comma patient_field_names)*
|
|
33
41
|
end
|
|
34
42
|
|
|
35
|
-
rule
|
|
43
|
+
rule case_field_names
|
|
36
44
|
patient_field_name:(
|
|
37
45
|
'date of birth' / 'dob' / 'nhs number' / 'postcode' / 'birth weight' /
|
|
38
46
|
'place of delivery' / 'sex' / 'outcome' / 'edd' /
|
|
@@ -40,6 +48,12 @@ module Canql
|
|
|
40
48
|
)
|
|
41
49
|
end
|
|
42
50
|
|
|
51
|
+
rule patient_field_names
|
|
52
|
+
patient_field_name:(
|
|
53
|
+
'date of birth' / 'dob' / 'nhs number' / 'postcode' / 'sex'
|
|
54
|
+
)
|
|
55
|
+
end
|
|
56
|
+
|
|
43
57
|
rule mother_conditions
|
|
44
58
|
and_keyword? space subject:'mother' word_break mother_additional_conditions mother_with_clause?
|
|
45
59
|
end
|
data/lib/canql/nodes/main.rb
CHANGED
|
@@ -14,6 +14,16 @@ end
|
|
|
14
14
|
|
|
15
15
|
module Canql #:nodoc: all
|
|
16
16
|
module Nodes
|
|
17
|
+
# Returns a filter detailing the require result type (cases or patients)
|
|
18
|
+
module SubjectNode
|
|
19
|
+
def meta_data_item
|
|
20
|
+
type_map = { cases: 'case', babies: 'case', patients: 'patient' }
|
|
21
|
+
raise 'Unknown result type' if type_map[subject.text_value.to_sym].nil?
|
|
22
|
+
|
|
23
|
+
{ 'results.subject' => { Canql::EQUALS => type_map[subject.text_value.to_sym] } }
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
17
27
|
# Provides meta data for with conditions that return
|
|
18
28
|
# multiple instances of a condition type as an array
|
|
19
29
|
module WithConditions
|
data/lib/canql/version.rb
CHANGED
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
|
+
version: 3.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: 2019-
|
|
11
|
+
date: 2019-06-04 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: chronic
|