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 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