nuva 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 1e148630bce72f2f69b968c056be4d444aace8d18315310357a05f6f4caff9c6
4
+ data.tar.gz: '07290eea14dcd22ba6fd882d5b76bca612cb31c8a7d323561bd694d61179742b'
5
+ SHA512:
6
+ metadata.gz: edb17bf2804b877d575416e27c59bc2833e5f78a13b3521815a3b4de2f6112d741ea45f58578b35955bb09c51dfc3a745578ace6fb245b870fd4dc1bd8b7f02e
7
+ data.tar.gz: be3a3e224cc7900e34d9add113e7989058e22db563fc81645707d101fde200baffb8ba40e491d1ac0fb73148af0bcd1e27d42750044f7a59fd283f40476454cf
data/lib/Code_pb.rb ADDED
@@ -0,0 +1,17 @@
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # source: Code.proto
3
+
4
+ require 'google/protobuf'
5
+
6
+ Google::Protobuf::DescriptorPool.generated_pool.build do
7
+ add_file("Code.proto", :syntax => :proto2) do
8
+ add_message "nuva.Code" do
9
+ required :nomenclature, :string, 1
10
+ required :value, :string, 2
11
+ end
12
+ end
13
+ end
14
+
15
+ module Nuva
16
+ Code = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("nuva.Code").msgclass
17
+ end
data/lib/Disease_pb.rb ADDED
@@ -0,0 +1,27 @@
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # source: Disease.proto
3
+
4
+ require 'google/protobuf'
5
+
6
+ require 'google/protobuf/timestamp_pb'
7
+ require_relative 'Code_pb'
8
+
9
+ Google::Protobuf::DescriptorPool.generated_pool.build do
10
+ add_file("Disease.proto", :syntax => :proto2) do
11
+ add_message "nuva.Disease" do
12
+ required :id, :string, 1
13
+ required :name, :string, 2
14
+ required :code, :uint32, 3
15
+ repeated :codes, :message, 4, "nuva.Code"
16
+ required :vaccinable, :bool, 5
17
+ required :screenable, :bool, 6
18
+ repeated :valence_ids, :string, 7
19
+ optional :created_at, :message, 16, "google.protobuf.Timestamp"
20
+ optional :updated_at, :message, 17, "google.protobuf.Timestamp"
21
+ end
22
+ end
23
+ end
24
+
25
+ module Nuva
26
+ Disease = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("nuva.Disease").msgclass
27
+ end
@@ -0,0 +1,21 @@
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # source: InjectionMethod.proto
3
+
4
+ require 'google/protobuf'
5
+
6
+ Google::Protobuf::DescriptorPool.generated_pool.build do
7
+ add_file("InjectionMethod.proto", :syntax => :proto2) do
8
+ add_enum "nuva.InjectionMethod" do
9
+ value :UnspecifiedInjectionMethod, 0
10
+ value :Intramuscular, 1
11
+ value :Subcutaneous, 2
12
+ value :Oral, 3
13
+ value :Intranasal, 4
14
+ value :Intradermal, 5
15
+ end
16
+ end
17
+ end
18
+
19
+ module Nuva
20
+ InjectionMethod = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("nuva.InjectionMethod").enummodule
21
+ end
@@ -0,0 +1,27 @@
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # source: NuvaDatabase.proto
3
+
4
+ require 'google/protobuf'
5
+
6
+ require 'google/protobuf/timestamp_pb'
7
+ require_relative 'VersionInfo_pb'
8
+ require_relative 'Vaccine_pb'
9
+ require_relative 'Disease_pb'
10
+ require_relative 'Valence_pb'
11
+
12
+ Google::Protobuf::DescriptorPool.generated_pool.build do
13
+ add_file("NuvaDatabase.proto", :syntax => :proto2) do
14
+ add_message "nuva.NuvaDatabase" do
15
+ required :version, :message, 1, "nuva.VersionInfo"
16
+ required :generated_at, :message, 2, "google.protobuf.Timestamp"
17
+ required :locale, :string, 3
18
+ repeated :vaccines, :message, 4, "nuva.Vaccine"
19
+ repeated :diseases, :message, 5, "nuva.Disease"
20
+ repeated :valences, :message, 6, "nuva.Valence"
21
+ end
22
+ end
23
+ end
24
+
25
+ module Nuva
26
+ NuvaDatabase = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("nuva.NuvaDatabase").msgclass
27
+ end
data/lib/Vaccine_pb.rb ADDED
@@ -0,0 +1,32 @@
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # source: Vaccine.proto
3
+
4
+ require 'google/protobuf'
5
+
6
+ require 'google/protobuf/timestamp_pb'
7
+ require_relative 'InjectionMethod_pb'
8
+ require_relative 'Code_pb'
9
+
10
+ Google::Protobuf::DescriptorPool.generated_pool.build do
11
+ add_file("Vaccine.proto", :syntax => :proto2) do
12
+ add_message "nuva.Vaccine" do
13
+ required :id, :string, 1
14
+ required :name, :string, 2
15
+ required :short_description, :string, 3
16
+ required :description, :string, 4
17
+ repeated :injection_methods, :enum, 5, "nuva.InjectionMethod"
18
+ required :code, :uint32, 6
19
+ repeated :codes, :message, 7, "nuva.Code"
20
+ repeated :valence_ids, :string, 8
21
+ repeated :other_names, :string, 9
22
+ required :generic, :bool, 10
23
+ optional :replaced_by_id, :string, 11
24
+ required :created_at, :message, 16, "google.protobuf.Timestamp"
25
+ required :updated_at, :message, 17, "google.protobuf.Timestamp"
26
+ end
27
+ end
28
+ end
29
+
30
+ module Nuva
31
+ Vaccine = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("nuva.Vaccine").msgclass
32
+ end
data/lib/Valence_pb.rb ADDED
@@ -0,0 +1,28 @@
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # source: Valence.proto
3
+
4
+ require 'google/protobuf'
5
+
6
+ require 'google/protobuf/timestamp_pb'
7
+
8
+ Google::Protobuf::DescriptorPool.generated_pool.build do
9
+ add_file("Valence.proto", :syntax => :proto2) do
10
+ add_message "nuva.Valence" do
11
+ required :id, :string, 1
12
+ required :parent_id, :string, 2
13
+ required :code, :uint32, 3
14
+ required :name, :string, 4
15
+ required :abbreviation, :string, 5
16
+ optional :translated_abbreviation, :string, 6
17
+ repeated :disease_ids, :string, 7
18
+ repeated :vaccine_ids, :string, 8
19
+ optional :antigene_type, :string, 9
20
+ required :created_at, :message, 16, "google.protobuf.Timestamp"
21
+ required :updated_at, :message, 17, "google.protobuf.Timestamp"
22
+ end
23
+ end
24
+ end
25
+
26
+ module Nuva
27
+ Valence = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("nuva.Valence").msgclass
28
+ end
@@ -0,0 +1,18 @@
1
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
2
+ # source: VersionInfo.proto
3
+
4
+ require 'google/protobuf'
5
+
6
+ Google::Protobuf::DescriptorPool.generated_pool.build do
7
+ add_file("VersionInfo.proto", :syntax => :proto2) do
8
+ add_message "nuva.VersionInfo" do
9
+ required :major, :uint32, 1
10
+ required :minor, :uint32, 2
11
+ required :patch, :uint32, 3
12
+ end
13
+ end
14
+ end
15
+
16
+ module Nuva
17
+ VersionInfo = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("nuva.VersionInfo").msgclass
18
+ end
data/lib/nuva.rb ADDED
@@ -0,0 +1,75 @@
1
+ require_relative './version'
2
+ require_relative './NuvaDatabase_pb'
3
+ require_relative './repository'
4
+ require_relative './queries'
5
+ require 'net/http'
6
+ require 'json'
7
+ require 'ostruct'
8
+
9
+ module Nuva
10
+ class Nuva
11
+ attr_reader :repositories
12
+ attr_reader :queries
13
+
14
+ def initialize(db)
15
+ @db = db
16
+
17
+ @repositories = OpenStruct.new
18
+ @repositories.vaccines = VaccineRepository.new db.vaccines
19
+ @repositories.valences = ValenceRepository.new db.valences
20
+ @repositories.diseases = DiseaseRepository.new db.diseases
21
+ @repositories.freeze
22
+
23
+ @queries = OpenStruct.new
24
+ @queries.valences_by_vaccine = ::Nuva::Queries::ValencesByVaccine.new @repositories
25
+ @queries.vaccines_by_valence = ::Nuva::Queries::VaccinesByValence.new @repositories
26
+ @queries.vaccines_by_disease = ::Nuva::Queries::VaccinesByDisease.new @repositories
27
+ @queries.valences_by_disease = ::Nuva::Queries::ValencesByDisease.new @repositories
28
+ @queries.diseases_by_vaccine = ::Nuva::Queries::DiseasesByVaccine.new @repositories
29
+ @queries.diseases_by_valence = ::Nuva::Queries::DiseasesByValence.new @repositories
30
+ @queries.vaccine_fuzzy_search = ::Nuva::Queries::VaccineFuzzySearch.new @repositories
31
+ @queries.lookup_vaccine_by_code = ::Nuva::Queries::LookupVaccineByCode.new @repositories
32
+ @queries.lookup_equivalent_vaccines = ::Nuva::Queries::LookupEquivalentVaccines.new @repositories
33
+ @queries.lookup_specialized_vaccines = ::Nuva::Queries::LookupSpecializedVaccines.new @repositories, @queries.valences_by_vaccine
34
+ @queries.lookup_generalized_vaccines = ::Nuva::Queries::LookupGeneralizedVaccines.new @repositories, @queries.valences_by_vaccine
35
+ @queries.all_nomenclatures = ::Nuva::Queries::AllNomenclatures.new @repositories
36
+ @queries.all_code_by_nomenclature = ::Nuva::Queries::AllCodeByNomenclature.new @repositories
37
+ @queries.freeze
38
+ end
39
+
40
+ def self.load(lang = "en")
41
+ latest_version_uri = URI "https://nuva.fra1.cdn.digitaloceanspaces.com/versions/last.json"
42
+
43
+ ::Net::HTTP.start(latest_version_uri.host, latest_version_uri.port,
44
+ :use_ssl => latest_version_uri.scheme == 'https') do |http|
45
+
46
+ # Fetch version manifest
47
+ req = ::Net::HTTP::Get.new latest_version_uri
48
+
49
+ res = http.request req
50
+ res.value
51
+
52
+ manifest = JSON::parse(res.body)
53
+
54
+ dump_hash = manifest['dump_hash']
55
+
56
+ # Fetch latest database
57
+ dump_uri = latest_version_uri.dup
58
+ dump_uri.path = "/proto/#{dump_hash}_#{lang}.db"
59
+
60
+ req = ::Net::HTTP::Get.new dump_uri
61
+
62
+ res = http.request req
63
+ res.value
64
+
65
+ # The return value of the block is returned by the start method
66
+ ::Nuva::Nuva.new(::Nuva::NuvaDatabase.decode(res.body))
67
+ end
68
+
69
+ end
70
+
71
+ def self.load_from_file(path)
72
+ Nuva.new(NuvaDatabase.decode(File.read(path)))
73
+ end
74
+ end
75
+ end
data/lib/queries.rb ADDED
@@ -0,0 +1,247 @@
1
+ require 'fuzzy_match'
2
+
3
+ module Nuva
4
+ module Queries
5
+ class ValencesByVaccine
6
+ def initialize(repositories)
7
+ h = Hash.new { |h, k| h[k] = [] }
8
+ @valences_by_vaccine_id = repositories[:valences].all.reduce(h) do |acc, valence|
9
+ valence.vaccine_ids.each do |vaccine_id|
10
+ acc[vaccine_id] << valence
11
+ end
12
+ acc
13
+ end
14
+ end
15
+
16
+ def call(vaccine)
17
+ @valences_by_vaccine_id[vaccine.id]
18
+ end
19
+ end
20
+
21
+ class VaccinesByValence
22
+ def initialize(repositories)
23
+ h = Hash.new { |h, k| h[k] = [] }
24
+ @vaccines_by_valence_id = repositories[:vaccines].all.reduce(h) do |acc, vaccine|
25
+ vaccine.valence_ids.each do |valence_id|
26
+ acc[valence_id] << vaccine
27
+ end
28
+ acc
29
+ end
30
+ end
31
+
32
+ def call(valence)
33
+ @vaccines_by_valence_id[valence.id]
34
+ end
35
+ end
36
+
37
+ class VaccinesByDisease
38
+ def initialize(repositories)
39
+ h = Hash.new { |h, k| h[k] = [] }
40
+ @vaccines_by_disease_id = repositories[:valences].all.reduce(h) do |acc, valence|
41
+ valence.disease_ids.each do |disease_id|
42
+ valence.vaccine_ids.each do |vaccine_id|
43
+ acc[disease_id] << repositories[:vaccines].find(vaccine_id)
44
+ end
45
+ end
46
+ acc
47
+ end
48
+ end
49
+
50
+ def call(disease)
51
+ @vaccines_by_disease_id[disease.id]
52
+ end
53
+ end
54
+
55
+ class ValencesByDisease
56
+ def initialize(repositories)
57
+ h = Hash.new { |h, k| h[k] = [] }
58
+ @valences_by_disease_id = repositories[:valences].all.reduce(h) do |acc, valence|
59
+ valence.disease_ids.each do |disease_id|
60
+ acc[disease_id] << valence
61
+ end
62
+ acc
63
+ end
64
+ end
65
+
66
+ def call(disease)
67
+ @valences_by_disease_id[disease.id]
68
+ end
69
+ end
70
+
71
+ class DiseasesByVaccine
72
+ def initialize(repositories)
73
+ h = Hash.new { |h, k| h[k] = [] }
74
+ @diseases_by_vaccine_id = repositories[:valences].all.reduce(h) do |acc, valence|
75
+ valence.vaccine_ids.each do |vaccine_id|
76
+ valence.disease_ids.each do |disease_id|
77
+ acc[vaccine_id] << repositories[:diseases].find(disease_id)
78
+ end
79
+ end
80
+ acc
81
+ end
82
+ end
83
+
84
+ def call(vaccine)
85
+ @diseases_by_vaccine_id[vaccine.id]
86
+ end
87
+ end
88
+
89
+ class DiseasesByValence
90
+ def initialize(repositories)
91
+ h = Hash.new { |h, k| h[k] = [] }
92
+ @diseases_by_valence_id = repositories[:diseases].all.reduce(h) do |acc, disease|
93
+ disease.valence_ids.each do |valence_id|
94
+ acc[valence_id] << disease
95
+ end
96
+ acc
97
+ end
98
+ end
99
+
100
+ def call(valence)
101
+ @diseases_by_valence_id[valence.id]
102
+ end
103
+ end
104
+
105
+ class VaccineFuzzySearch
106
+ def initialize(repositories)
107
+ @engine = FuzzyMatch.new(repositories.vaccines.all, :read => ->(v) {
108
+ return v.name
109
+ })
110
+ end
111
+
112
+ def call(pattern)
113
+ @engine.find_all(pattern)
114
+ end
115
+ end
116
+
117
+ # lookupVaccineByCode(code: string): Vaccine | undefined;
118
+ # lookupEquivalentVaccines(vaccine: Vaccine): Vaccine[];
119
+ # lookupSpecializedVaccines(vaccine: Vaccine): Vaccine[];
120
+ # lookupGeneralizedVaccines(vaccine: Vaccine): Vaccine[];
121
+ # allNomenclatures(): string[];
122
+ # allCodeByNomenclature(): {
123
+ # [nomenclature: string]: Code[];
124
+ # };
125
+
126
+ class LookupVaccineByCode
127
+ def initialize(repositories)
128
+ @vaccines = repositories.vaccines
129
+ end
130
+
131
+ def call(code)
132
+ @vaccines.all.find do |vac|
133
+ "NUVA-#{vac.code}" == code || vac.codes.any? do |x| x.value == code end
134
+ end
135
+ end
136
+ end
137
+
138
+ class LookupEquivalentVaccines
139
+ def initialize(repositories)
140
+ @vaccines = repositories.vaccines
141
+ end
142
+
143
+ def call(vaccine)
144
+ vids = vaccine.valence_ids.sort
145
+ @vaccines.all.filter do |v|
146
+ v.valence_ids.length == vids.length && v.id != vaccine.id && vids == v.valence_ids.sort
147
+ end
148
+ end
149
+ end
150
+
151
+ class LookupSpecializedVaccines
152
+ def initialize(repositories, valencesByVaccine)
153
+ @vaccines = repositories.vaccines
154
+ @valences = repositories.valences
155
+ @valencesByVaccine = valencesByVaccine
156
+ end
157
+
158
+ def call(vaccine)
159
+ targetValences = @valencesByVaccine.(vaccine)
160
+ list = @vaccines.all.filter do |candidate|
161
+ candidate.id != vaccine.id && targetValences.all? do |targetValence|
162
+ @valencesByVaccine.(candidate).any? do |candidateValence|
163
+ child_of? candidateValence, targetValence
164
+ end
165
+ end
166
+ end
167
+ list.sort_by do |v| @valencesByVaccine.(v).length end
168
+ end
169
+
170
+ private def child_of?(valence, parent)
171
+ unless valence.nil?
172
+ return true if valence.id == parent.id
173
+ valence = @valences.find valence.parent_id
174
+ end
175
+
176
+ false
177
+ end
178
+ end
179
+
180
+
181
+ class LookupGeneralizedVaccines
182
+ def initialize(repositories, valencesByVaccine)
183
+ @vaccines = repositories.vaccines
184
+ @valences = repositories.valences
185
+ @valencesByVaccine = valencesByVaccine
186
+ end
187
+
188
+ def call(vaccine)
189
+ targetValences = @valencesByVaccine.(vaccine)
190
+ list = @vaccines.all.filter do |candidate|
191
+ candidate.id != vaccine.id && targetValences.all? do |targetValence|
192
+ @valencesByVaccine.(candidate).any? do |candidateValence|
193
+ child_of? candidateValence, targetValence
194
+ end
195
+ end
196
+ end
197
+ list.sort_by do |v| @valencesByVaccine.(v).length end
198
+ end
199
+
200
+ private def parent_of?(valence, parent)
201
+ child_of? parent, valence
202
+ end
203
+
204
+ private def child_of?(valence, parent)
205
+ unless valence.nil?
206
+ return true if valence.id == parent.id
207
+ valence = @valences.find valence.parent_id
208
+ end
209
+
210
+ false
211
+ end
212
+ end
213
+
214
+ class AllNomenclatures
215
+ def initialize(repositories)
216
+ @vaccines = repositories.vaccines
217
+ end
218
+
219
+ def call
220
+ (@vaccines.all.flat_map do |v|
221
+ v.codes.map(&:nomenclature)
222
+ end).uniq
223
+ end
224
+ end
225
+
226
+ class AllCodeByNomenclature
227
+ def initialize(repositories)
228
+ @vaccines = repositories.vaccines
229
+ end
230
+
231
+ def call()
232
+ @vaccines
233
+ .all
234
+ .flat_map(&:codes)
235
+ .reduce(Hash.new { |hash, key| hash[key] = [] }) {
236
+ |hash, code|
237
+
238
+ hash[code.nomenclature] << code.value
239
+ hash
240
+ }
241
+ .map { |key, value| [key, value.uniq] }
242
+ .to_h
243
+ end
244
+ end
245
+
246
+ end
247
+ end
@@ -0,0 +1,4 @@
1
+ module Nuva
2
+ class DiseaseRepository < Repository
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module Nuva
2
+ class VaccineRepository < Repository
3
+ end
4
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+ module Nuva
3
+ class ValenceRepository < Repository
4
+ def initialize(data)
5
+ super data
6
+ @ancestor_ids_by_id = {}
7
+ @data.each_value do |valence|
8
+ # Build hash of ancestor IDs for valence
9
+ @ancestor_ids_by_id[valence.id] = lookup_ancestors(valence).uniq
10
+ end
11
+ @ancestor_ids_by_id.freeze
12
+ end
13
+
14
+ def get_ancestor_ids(valence_id)
15
+ @ancestor_ids_by_id[valence_id]
16
+ end
17
+
18
+ private
19
+
20
+ def lookup_ancestors(valence)
21
+ return [] if valence.nil?
22
+
23
+ lookup_ancestors(find(valence.parent_id)) << valence.parent_id
24
+ end
25
+ end
26
+ end
data/lib/repository.rb ADDED
@@ -0,0 +1,35 @@
1
+ module Nuva
2
+ class Repository
3
+ attr_reader :data
4
+
5
+ def initialize(data)
6
+ @data = index_array_by_id(data)
7
+ end
8
+
9
+ def find(id)
10
+ @data[id]
11
+ end
12
+
13
+ def all
14
+ @data.values
15
+ end
16
+
17
+ def by_ids(ids)
18
+ ids.map { |x| find x }.compact
19
+ end
20
+
21
+ # def by_ids(ids)
22
+ # @data.select { |k, _v| ids.include?(k) }.values
23
+ # end
24
+
25
+ private
26
+
27
+ def index_array_by_id(array)
28
+ array.each_with_object({}) { |item, acc| acc[item.id] = item }
29
+ end
30
+ end
31
+ end
32
+
33
+ require_relative 'repositories/disease_repository'
34
+ require_relative 'repositories/vaccine_repository'
35
+ require_relative 'repositories/valence_repository'
data/lib/version.rb ADDED
@@ -0,0 +1,3 @@
1
+ module Nuva
2
+ VERSION = '0.1.5'
3
+ end
data/nuva.gemspec ADDED
@@ -0,0 +1,16 @@
1
+ require_relative "lib/version"
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = 'nuva'
5
+ s.version = Nuva::VERSION
6
+ s.licenses = ['MIT']
7
+ s.summary = "NUVA"
8
+ s.description = "nuva library aims to simplify working and interacting with the NUVA nomenclature through queries and repositories"
9
+ s.authors = ["Syadem"]
10
+ s.email = ''
11
+ s.files = Dir.chdir(File.expand_path(__dir__)) {
12
+ `find . -type f -name '*.rb' -print0`.split("\0").concat %w[nuva.gemspec]
13
+ }
14
+ s.add_dependency 'google-protobuf', '~> 3.25', '>= 3.25.3'
15
+ s.add_dependency 'fuzzy_match', '~> 2.1'
16
+ end
metadata ADDED
@@ -0,0 +1,92 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nuva
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.5
5
+ platform: ruby
6
+ authors:
7
+ - Syadem
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2024-03-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: google-protobuf
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '3.25'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 3.25.3
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '3.25'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 3.25.3
33
+ - !ruby/object:Gem::Dependency
34
+ name: fuzzy_match
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '2.1'
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '2.1'
47
+ description: nuva library aims to simplify working and interacting with the NUVA nomenclature
48
+ through queries and repositories
49
+ email: ''
50
+ executables: []
51
+ extensions: []
52
+ extra_rdoc_files: []
53
+ files:
54
+ - "./lib/Code_pb.rb"
55
+ - "./lib/Disease_pb.rb"
56
+ - "./lib/InjectionMethod_pb.rb"
57
+ - "./lib/NuvaDatabase_pb.rb"
58
+ - "./lib/Vaccine_pb.rb"
59
+ - "./lib/Valence_pb.rb"
60
+ - "./lib/VersionInfo_pb.rb"
61
+ - "./lib/nuva.rb"
62
+ - "./lib/queries.rb"
63
+ - "./lib/repositories/disease_repository.rb"
64
+ - "./lib/repositories/vaccine_repository.rb"
65
+ - "./lib/repositories/valence_repository.rb"
66
+ - "./lib/repository.rb"
67
+ - "./lib/version.rb"
68
+ - nuva.gemspec
69
+ homepage:
70
+ licenses:
71
+ - MIT
72
+ metadata: {}
73
+ post_install_message:
74
+ rdoc_options: []
75
+ require_paths:
76
+ - lib
77
+ required_ruby_version: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ required_rubygems_version: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ requirements: []
88
+ rubygems_version: 3.5.3
89
+ signing_key:
90
+ specification_version: 4
91
+ summary: NUVA
92
+ test_files: []