conceptql 0.5.0 → 0.6.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.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +454 -0
  3. data/config/vocabularies.csv +85 -87
  4. data/config/vocabulary_formats.sha +1 -0
  5. data/config/vocabulary_formats.tsv +39 -0
  6. data/doc/spec.md +207 -67
  7. data/lib/conceptql/behaviors/metadatable.rb +15 -3
  8. data/lib/conceptql/behaviors/provenanceable.rb +82 -8
  9. data/lib/conceptql/behaviors/utilizable.rb +5 -1
  10. data/lib/conceptql/data_model/base.rb +2 -4
  11. data/lib/conceptql/data_model/gdm.rb +3 -1
  12. data/lib/conceptql/database.rb +7 -2
  13. data/lib/conceptql/date_adjuster.rb +12 -5
  14. data/lib/conceptql/lexicon/lexicon_gdm.rb +4 -1
  15. data/lib/conceptql/lexicon/lexicon_ohdsi.rb +19 -1
  16. data/lib/conceptql/lexicon/lexicon_strategy.rb +35 -1
  17. data/lib/conceptql/lexicon.rb +210 -2
  18. data/lib/conceptql/nodifier.rb +7 -1
  19. data/lib/conceptql/one_query_counts.rb +120 -0
  20. data/lib/conceptql/operators/count.rb +4 -0
  21. data/lib/conceptql/operators/death.rb +1 -1
  22. data/lib/conceptql/operators/dedup.rb +1 -1
  23. data/lib/conceptql/operators/episode.rb +10 -2
  24. data/lib/conceptql/operators/ethnicity.rb +0 -4
  25. data/lib/conceptql/operators/except.rb +5 -0
  26. data/lib/conceptql/operators/filter.rb +12 -2
  27. data/lib/conceptql/operators/hospice.rb +1 -1
  28. data/lib/conceptql/operators/hospitalization.rb +1 -1
  29. data/lib/conceptql/operators/information_periods.rb +4 -1
  30. data/lib/conceptql/operators/invalid.rb +7 -1
  31. data/lib/conceptql/operators/multiple_vocabularies.rb +19 -6
  32. data/lib/conceptql/operators/numeric.rb +51 -14
  33. data/lib/conceptql/operators/occurrence.rb +16 -4
  34. data/lib/conceptql/operators/operator.rb +63 -19
  35. data/lib/conceptql/operators/person.rb +1 -1
  36. data/lib/conceptql/operators/person_filter.rb +5 -0
  37. data/lib/conceptql/operators/place_of_service_filter.rb +38 -10
  38. data/lib/conceptql/operators/provenance.rb +12 -2
  39. data/lib/conceptql/operators/provider_filter.rb +5 -1
  40. data/lib/conceptql/operators/race.rb +0 -4
  41. data/lib/conceptql/operators/recall.rb +1 -1
  42. data/lib/conceptql/operators/snf.rb +2 -2
  43. data/lib/conceptql/operators/sum.rb +46 -5
  44. data/lib/conceptql/operators/temporal_operator.rb +6 -2
  45. data/lib/conceptql/operators/trim_date.rb +52 -6
  46. data/lib/conceptql/operators/trim_date_end.rb +11 -1
  47. data/lib/conceptql/operators/trim_date_start.rb +11 -1
  48. data/lib/conceptql/operators/union.rb +45 -1
  49. data/lib/conceptql/operators/vocabulary.rb +7 -3
  50. data/lib/conceptql/paths.rb +10 -0
  51. data/lib/conceptql/query.rb +78 -24
  52. data/lib/conceptql/query_modifiers/gdm/provider_query_modifier.rb +7 -7
  53. data/lib/conceptql/rdbms/generic.rb +21 -1
  54. data/lib/conceptql/rdbms/spark.rb +12 -0
  55. data/lib/conceptql/scope.rb +187 -24
  56. data/lib/conceptql/version.rb +1 -1
  57. data/lib/conceptql/vocabularies/drg_systems.rb +118 -0
  58. data/lib/conceptql/vocabularies/dynamic_vocabularies.rb +10 -4
  59. data/lib/conceptql/vocabularies/entry.rb +15 -3
  60. data/lib/conceptql/vocabularies/formats.rb +59 -0
  61. data/lib/conceptql/vocabularies/vocabulary_class_factory.rb +6 -1
  62. data/lib/conceptql/window/table.rb +12 -3
  63. metadata +8 -4
  64. data/lib/conceptql/operators/concurrent_within.rb +0 -69
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: conceptql
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Duryea
@@ -102,7 +102,7 @@ dependencies:
102
102
  version: 0.3.0
103
103
  - - "<"
104
104
  - !ruby/object:Gem::Version
105
- version: '0.5'
105
+ version: '0.6'
106
106
  type: :runtime
107
107
  prerelease: false
108
108
  version_requirements: !ruby/object:Gem::Requirement
@@ -112,7 +112,7 @@ dependencies:
112
112
  version: 0.3.0
113
113
  - - "<"
114
114
  - !ruby/object:Gem::Version
115
- version: '0.5'
115
+ version: '0.6'
116
116
  - !ruby/object:Gem::Dependency
117
117
  name: thor
118
118
  requirement: !ruby/object:Gem::Requirement
@@ -328,6 +328,8 @@ files:
328
328
  - config/provenance.yml
329
329
  - config/race.yml
330
330
  - config/vocabularies.csv
331
+ - config/vocabulary_formats.sha
332
+ - config/vocabulary_formats.tsv
331
333
  - doc/spec.md
332
334
  - lib/conceptql.rb
333
335
  - lib/conceptql/behaviors/code_lister.rb
@@ -354,13 +356,13 @@ files:
354
356
  - lib/conceptql/lexicon/lexicon_ohdsi.rb
355
357
  - lib/conceptql/lexicon/lexicon_strategy.rb
356
358
  - lib/conceptql/nodifier.rb
359
+ - lib/conceptql/one_query_counts.rb
357
360
  - lib/conceptql/operators/after.rb
358
361
  - lib/conceptql/operators/any_overlap.rb
359
362
  - lib/conceptql/operators/before.rb
360
363
  - lib/conceptql/operators/binary_operator_operator.rb
361
364
  - lib/conceptql/operators/casting_operator.rb
362
365
  - lib/conceptql/operators/co_reported.rb
363
- - lib/conceptql/operators/concurrent_within.rb
364
366
  - lib/conceptql/operators/contains.rb
365
367
  - lib/conceptql/operators/count.rb
366
368
  - lib/conceptql/operators/date_range.rb
@@ -430,8 +432,10 @@ files:
430
432
  - lib/conceptql/version.rb
431
433
  - lib/conceptql/visitors/metadata_extractor.rb
432
434
  - lib/conceptql/vocabularies/behaviors/gdmish.rb
435
+ - lib/conceptql/vocabularies/drg_systems.rb
433
436
  - lib/conceptql/vocabularies/dynamic_vocabularies.rb
434
437
  - lib/conceptql/vocabularies/entry.rb
438
+ - lib/conceptql/vocabularies/formats.rb
435
439
  - lib/conceptql/vocabularies/vocabulary_class_factory.rb
436
440
  - lib/conceptql/window.rb
437
441
  - lib/conceptql/window/base.rb
@@ -1,69 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "operator"
4
- require_relative "../date_adjuster"
5
-
6
- module ConceptQL
7
- module Operators
8
- class ConcurrentWithin < Operator
9
- register __FILE__
10
-
11
- def events_per_patient
12
- upstreams.all? { |u| u.events_per_patient == :single } ? :single : :multiple
13
- end
14
-
15
- def multiple_vocabularies
16
- return true if upstreams.any?(&:multiple_vocabularies)
17
-
18
- vocabularies.length > 1
19
- end
20
-
21
- desc "Filters each upstream to only include records where other upstreams' date ranges overlap"
22
- option :start, type: :string
23
- option :end, type: :string
24
- allows_many_upstreams
25
- validate_at_least_one_upstream
26
- validate_no_arguments
27
- validate_option DateAdjuster::VALID_INPUT, :start, :end
28
- category "Combine Streams"
29
- basic_type :set
30
- default_query_columns
31
-
32
- def query(db)
33
- datasets = upstreams.map do |stream|
34
- stream.evaluate(db)
35
- end
36
-
37
- return datasets.first.from_self if datasets.length == 1
38
-
39
- adjusted_start_date = DateAdjuster.new(self, options[:start]).adjust(Sequel[:l][:start_date], true)
40
- adjusted_end_date = DateAdjuster.new(self, options[:end]).adjust(Sequel[:l][:end_date])
41
-
42
- datasets = datasets.map do |ds|
43
- matching = ds.from_self(alias: :l)
44
-
45
- (datasets - [ ds ]).each do |other|
46
- other = other
47
- .from_self(alias: :r)
48
- .where(adjusted_start_date <= Sequel[:r][:start_date])
49
- .where(adjusted_end_date >= Sequel[:r][:end_date])
50
- .select(*matching_columns)
51
-
52
- matching = matching.where(other.where(matching_columns.map do |x|
53
- [ Sequel.qualify(:l, x), Sequel.qualify(:r, x) ]
54
- end).exists)
55
- end
56
-
57
- matching
58
- end
59
-
60
- ds, *rest = datasets
61
- rest.each do |other|
62
- ds = ds.union(other, from_self: nil)
63
- end
64
-
65
- ds.from_self
66
- end
67
- end
68
- end
69
- end