canql 2.10.0 → 3.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
  SHA256:
3
- metadata.gz: 9ee4124a0fe780af01e98ea304868d195e4943ee6481ae118ded4d53a01e1517
4
- data.tar.gz: bed2e1d1d38643951cd5778321df44895a251bcf30eb589df400a02c78bdffd3
3
+ metadata.gz: 935d92e9e0fa6135540db6a7acfdf127d9fdf395ddbd8f1c93f328b8e708983e
4
+ data.tar.gz: 0b55234d83f824b71c66beb3e761ce0687393bb9e2695aaa21bda055883cdec0
5
5
  SHA512:
6
- metadata.gz: ae48c69764f170d62bb027400ea8dba7ac8d5e2c1660acf500c5749db9a64268bf6de8cb3ef0cd49aa89bd0a73d5f6119072a1592969fb4535803fb806d7c463
7
- data.tar.gz: b221065dbadc7e411c96519ff46d3ff2739572ce7c66b0e64db8dae48ac776412cf7265e2b760d21e18f2e5b449074f78c37694dd01e4544c078a2d286af0b9f
6
+ metadata.gz: c97e4d469ee36061bfd75b6c27c28ec47ed63c626bfd1412a84e9d0139cc2510f2d8c429b5793eded4e174cb9ec4a7401664492ae8dc52e2bddc6ca9382bf147
7
+ data.tar.gz: 6f0998e8c64dd33322c70ca72c610a5b69c96956758e94a646489bf4eb14f7ee892bd268f01e6809e0cf42356591e8cedb7a6b15ffec4529001c56b000c9c191
@@ -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:
@@ -19,7 +19,7 @@ file safety:
19
19
  CHANGELOG.md:
20
20
  comments:
21
21
  reviewed_by: josh.pencheon
22
- safe_revision: '098751876ada572fd6dd7137e7c8eab28ca3b8e5'
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: 1b5795e8b5e20395f17277050f17ff0db6f0f556
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: 1b5795e8b5e20395f17277050f17ff0db6f0f556
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: 38369f1f26167f396d1705ec88611103d5262726
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: 526dbe8a3dc3334b4174928e6f51d07e48ed9247
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: '098751876ada572fd6dd7137e7c8eab28ca3b8e5'
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: 73a7dac17b20fcc77bcbd9d38777c8aa4d524816
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: 4e26ac746098452b01dac88373e401e39f309b74
213
+ safe_revision: 511e4238f83eb5b32839c25d94ec2a59145539bb
210
214
  test/nodes/genetic_tests_test.rb:
211
215
  comments:
212
216
  reviewed_by: josh.pencheon
213
- safe_revision: 526dbe8a3dc3334b4174928e6f51d07e48ed9247
214
- test/nodes/main_test.rb:
217
+ safe_revision: 511e4238f83eb5b32839c25d94ec2a59145539bb
218
+ test/nodes/main_case_test.rb:
215
219
  comments:
216
- reviewed_by: timgentry
217
- safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
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: 38369f1f26167f396d1705ec88611103d5262726
237
+ safe_revision: 33597126dbd2f720bd867fc357003634b73e6d0a
226
238
  test/nodes/perinatal_hospital_test.rb:
227
239
  comments:
228
240
  reviewed_by: josh.pencheon
229
- safe_revision: c431b8a476b84d077e9c39a2a13c2b17a296773d
241
+ safe_revision: 511e4238f83eb5b32839c25d94ec2a59145539bb
230
242
  test/nodes/registry_test.rb:
231
243
  comments:
232
- reviewed_by: timgentry
233
- safe_revision: 6932d590299ad4a9d2ba24b425b158c67142bf74
244
+ reviewed_by: josh.pencheon
245
+ safe_revision: 511e4238f83eb5b32839c25d94ec2a59145539bb
234
246
  test/nodes/test_results_test.rb:
235
247
  comments:
236
- reviewed_by: timgentry
237
- safe_revision: c39d24bb500719971969762e94545e82866bf92f
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: 1b5795e8b5e20395f17277050f17ff0db6f0f556
253
+ safe_revision: 511e4238f83eb5b32839c25d94ec2a59145539bb
242
254
  test/test_helper.rb:
243
255
  comments:
244
256
  reviewed_by: josh.pencheon
245
- safe_revision: a1686a3905ee6d7ebc8c5b1786efba4f8df42a2d
257
+ safe_revision: 511e4238f83eb5b32839c25d94ec2a59145539bb
@@ -13,8 +13,15 @@ grammar Canql
13
13
 
14
14
  # The root grammar
15
15
  rule query
16
- #quantity:record_count? pre:preconditions* cases_keyword post:additional_conditions*
17
- quantity:record_count? pre:preconditions* cases_keyword post:additional_conditions* with_clause?
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 preconditions
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 additional_conditions
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 with_clause
59
- with_keyword post:with_conditions+ <Nodes::WithConditions>
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 with_conditions
107
- anomalies / genetic_tests / test_results / perinatal_hospital / patient_field_existance / mother_conditions / action_or_ebr
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 patient_field_names
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
@@ -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
@@ -2,5 +2,5 @@
2
2
 
3
3
  # This stores the current version of the Canql gem
4
4
  module Canql
5
- VERSION = '2.10.0'
5
+ VERSION = '3.0.0'
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: 2.10.0
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-05-29 00:00:00.000000000 Z
11
+ date: 2019-06-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: chronic