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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +454 -0
- data/config/vocabularies.csv +85 -87
- data/config/vocabulary_formats.sha +1 -0
- data/config/vocabulary_formats.tsv +39 -0
- data/doc/spec.md +207 -67
- data/lib/conceptql/behaviors/metadatable.rb +15 -3
- data/lib/conceptql/behaviors/provenanceable.rb +82 -8
- data/lib/conceptql/behaviors/utilizable.rb +5 -1
- data/lib/conceptql/data_model/base.rb +2 -4
- data/lib/conceptql/data_model/gdm.rb +3 -1
- data/lib/conceptql/database.rb +7 -2
- data/lib/conceptql/date_adjuster.rb +12 -5
- data/lib/conceptql/lexicon/lexicon_gdm.rb +4 -1
- data/lib/conceptql/lexicon/lexicon_ohdsi.rb +19 -1
- data/lib/conceptql/lexicon/lexicon_strategy.rb +35 -1
- data/lib/conceptql/lexicon.rb +210 -2
- data/lib/conceptql/nodifier.rb +7 -1
- data/lib/conceptql/one_query_counts.rb +120 -0
- data/lib/conceptql/operators/count.rb +4 -0
- data/lib/conceptql/operators/death.rb +1 -1
- data/lib/conceptql/operators/dedup.rb +1 -1
- data/lib/conceptql/operators/episode.rb +10 -2
- data/lib/conceptql/operators/ethnicity.rb +0 -4
- data/lib/conceptql/operators/except.rb +5 -0
- data/lib/conceptql/operators/filter.rb +12 -2
- data/lib/conceptql/operators/hospice.rb +1 -1
- data/lib/conceptql/operators/hospitalization.rb +1 -1
- data/lib/conceptql/operators/information_periods.rb +4 -1
- data/lib/conceptql/operators/invalid.rb +7 -1
- data/lib/conceptql/operators/multiple_vocabularies.rb +19 -6
- data/lib/conceptql/operators/numeric.rb +51 -14
- data/lib/conceptql/operators/occurrence.rb +16 -4
- data/lib/conceptql/operators/operator.rb +63 -19
- data/lib/conceptql/operators/person.rb +1 -1
- data/lib/conceptql/operators/person_filter.rb +5 -0
- data/lib/conceptql/operators/place_of_service_filter.rb +38 -10
- data/lib/conceptql/operators/provenance.rb +12 -2
- data/lib/conceptql/operators/provider_filter.rb +5 -1
- data/lib/conceptql/operators/race.rb +0 -4
- data/lib/conceptql/operators/recall.rb +1 -1
- data/lib/conceptql/operators/snf.rb +2 -2
- data/lib/conceptql/operators/sum.rb +46 -5
- data/lib/conceptql/operators/temporal_operator.rb +6 -2
- data/lib/conceptql/operators/trim_date.rb +52 -6
- data/lib/conceptql/operators/trim_date_end.rb +11 -1
- data/lib/conceptql/operators/trim_date_start.rb +11 -1
- data/lib/conceptql/operators/union.rb +45 -1
- data/lib/conceptql/operators/vocabulary.rb +7 -3
- data/lib/conceptql/paths.rb +10 -0
- data/lib/conceptql/query.rb +78 -24
- data/lib/conceptql/query_modifiers/gdm/provider_query_modifier.rb +7 -7
- data/lib/conceptql/rdbms/generic.rb +21 -1
- data/lib/conceptql/rdbms/spark.rb +12 -0
- data/lib/conceptql/scope.rb +187 -24
- data/lib/conceptql/version.rb +1 -1
- data/lib/conceptql/vocabularies/drg_systems.rb +118 -0
- data/lib/conceptql/vocabularies/dynamic_vocabularies.rb +10 -4
- data/lib/conceptql/vocabularies/entry.rb +15 -3
- data/lib/conceptql/vocabularies/formats.rb +59 -0
- data/lib/conceptql/vocabularies/vocabulary_class_factory.rb +6 -1
- data/lib/conceptql/window/table.rb +12 -3
- metadata +8 -4
- 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.
|
|
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.
|
|
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.
|
|
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
|