Skip to content

Commit 7fb7e6b

Browse files
Merge pull request #25 from hebron-george/dead_code_and_todos
2 parents f454187 + f35954a commit 7fb7e6b

10 files changed

Lines changed: 29 additions & 979 deletions

File tree

lib/open_fda_api/adverse_events_fields.yml

Lines changed: 0 additions & 893 deletions
This file was deleted.

lib/open_fda_api/animal_and_veterinary.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class AnimalAndVeterinary < Endpoint
1313
def adverse_events(search: [], sort: [], count: [], skip: 0, limit: 1)
1414
endpoint = "event.json"
1515
inputs = build_inputs(search: search, sort: sort, count: count, skip: skip, limit: limit)
16-
query = build_query(inputs, {}) # TODO: Upload valid fields
16+
query = build_query(inputs)
1717
make_request(endpoint, query)
1818
end
1919

lib/open_fda_api/device.rb

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class Device < Endpoint
2121
def adverse_events(search: [], sort: [], count: [], skip: 0, limit: 1)
2222
endpoint = "event.json"
2323
inputs = build_inputs(search: search, sort: sort, count: count, skip: skip, limit: limit)
24-
query = build_query(inputs, {})
24+
query = build_query(inputs)
2525
make_request(endpoint, query)
2626
end
2727

@@ -34,7 +34,7 @@ def adverse_events(search: [], sort: [], count: [], skip: 0, limit: 1)
3434
def classification(search: [], sort: [], count: [], skip: 0, limit: 1)
3535
endpoint = "classification.json"
3636
inputs = build_inputs(search: search, sort: sort, count: count, skip: skip, limit: limit)
37-
query = build_query(inputs, {}) # TODO: Upload valid fields
37+
query = build_query(inputs)
3838
make_request(endpoint, query)
3939
end
4040

@@ -47,7 +47,7 @@ def classification(search: [], sort: [], count: [], skip: 0, limit: 1)
4747
def premarket_510ks(search: [], sort: [], count: [], skip: 0, limit: 1)
4848
endpoint = "510k.json"
4949
inputs = build_inputs(search: search, sort: sort, count: count, skip: skip, limit: limit)
50-
query = build_query(inputs, {}) # TODO: Upload valid fields
50+
query = build_query(inputs)
5151
make_request(endpoint, query)
5252
end
5353

@@ -60,7 +60,7 @@ def premarket_510ks(search: [], sort: [], count: [], skip: 0, limit: 1)
6060
def recall_enforcement_reports(search: [], sort: [], count: [], skip: 0, limit: 1)
6161
endpoint = "enforcement.json"
6262
inputs = build_inputs(search: search, sort: sort, count: count, skip: skip, limit: limit)
63-
query = build_query(inputs, {}) # TODO: Upload valid fields
63+
query = build_query(inputs)
6464
make_request(endpoint, query)
6565
end
6666

@@ -73,7 +73,7 @@ def recall_enforcement_reports(search: [], sort: [], count: [], skip: 0, limit:
7373
def premarket_approval(search: [], sort: [], count: [], skip: 0, limit: 1)
7474
endpoint = "pma.json"
7575
inputs = build_inputs(search: search, sort: sort, count: count, skip: skip, limit: limit)
76-
query = build_query(inputs, {}) # TODO: Upload valid fields
76+
query = build_query(inputs)
7777
make_request(endpoint, query)
7878
end
7979

@@ -86,7 +86,7 @@ def premarket_approval(search: [], sort: [], count: [], skip: 0, limit: 1)
8686
def recalls(search: [], sort: [], count: [], skip: 0, limit: 1)
8787
endpoint = "recall.json"
8888
inputs = build_inputs(search: search, sort: sort, count: count, skip: skip, limit: limit)
89-
query = build_query(inputs, {}) # TODO: Upload valid fields
89+
query = build_query(inputs)
9090
make_request(endpoint, query)
9191
end
9292

@@ -99,7 +99,7 @@ def recalls(search: [], sort: [], count: [], skip: 0, limit: 1)
9999
def registrations_and_listings(search: [], sort: [], count: [], skip: 0, limit: 1)
100100
endpoint = "registrationlisting.json"
101101
inputs = build_inputs(search: search, sort: sort, count: count, skip: skip, limit: limit)
102-
query = build_query(inputs, {}) # TODO: Upload valid fields
102+
query = build_query(inputs)
103103
make_request(endpoint, query)
104104
end
105105

@@ -112,7 +112,7 @@ def registrations_and_listings(search: [], sort: [], count: [], skip: 0, limit:
112112
def covid19_serological_tests(search: [], sort: [], count: [], skip: 0, limit: 1)
113113
endpoint = "covid19serology.json"
114114
inputs = build_inputs(search: search, sort: sort, count: count, skip: skip, limit: limit)
115-
query = build_query(inputs, {}) # TODO: Upload valid fields
115+
query = build_query(inputs)
116116
make_request(endpoint, query)
117117
end
118118

@@ -125,7 +125,7 @@ def covid19_serological_tests(search: [], sort: [], count: [], skip: 0, limit: 1
125125
def unique_device_identifier(search: [], sort: [], count: [], skip: 0, limit: 1)
126126
endpoint = "udi.json"
127127
inputs = build_inputs(search: search, sort: sort, count: count, skip: skip, limit: limit)
128-
query = build_query(inputs, {}) # TODO: Upload valid fields
128+
query = build_query(inputs)
129129
make_request(endpoint, query)
130130
end
131131

lib/open_fda_api/drugs.rb

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
# frozen_string_literal: true
22

3-
require "yaml"
4-
53
module OpenFdaApi
64
# Interact with the Drugs API Endpoint:
75
# - Adverse Events
@@ -19,7 +17,7 @@ class Drugs < Endpoint
1917
def adverse_events(search: [], sort: [], count: [], skip: 0, limit: 1)
2018
endpoint = "event.json"
2119
inputs = build_inputs(search: search, sort: sort, count: count, skip: skip, limit: limit)
22-
query = build_query(inputs, self.class.valid_adverse_events_fields)
20+
query = build_query(inputs)
2321
make_request(endpoint, query)
2422
end
2523

@@ -32,7 +30,7 @@ def adverse_events(search: [], sort: [], count: [], skip: 0, limit: 1)
3230
def product_labeling(search: [], sort: [], count: [], skip: 0, limit: 1)
3331
endpoint = "label.json"
3432
inputs = build_inputs(search: search, sort: sort, count: count, skip: skip, limit: limit)
35-
query = build_query(inputs, {}) # TODO: Upload valid fields
33+
query = build_query(inputs)
3634
make_request(endpoint, query)
3735
end
3836

@@ -45,7 +43,7 @@ def product_labeling(search: [], sort: [], count: [], skip: 0, limit: 1)
4543
def ndc_directory(search: [], sort: [], count: [], skip: 0, limit: 1)
4644
endpoint = "ndc.json"
4745
inputs = build_inputs(search: search, sort: sort, count: count, skip: skip, limit: limit)
48-
query = build_query(inputs, {}) # TODO: Upload valid fields
46+
query = build_query(inputs)
4947
make_request(endpoint, query)
5048
end
5149

@@ -58,7 +56,7 @@ def ndc_directory(search: [], sort: [], count: [], skip: 0, limit: 1)
5856
def recall_enforcement_reports(search: [], sort: [], count: [], skip: 0, limit: 1)
5957
endpoint = "enforcement.json"
6058
inputs = build_inputs(search: search, sort: sort, count: count, skip: skip, limit: limit)
61-
query = build_query(inputs, {}) # TODO: Upload valid fields
59+
query = build_query(inputs)
6260
make_request(endpoint, query)
6361
end
6462

@@ -71,14 +69,10 @@ def recall_enforcement_reports(search: [], sort: [], count: [], skip: 0, limit:
7169
def drugs_at_fda(search: [], sort: [], count: [], skip: 0, limit: 1)
7270
endpoint = "drugsfda.json"
7371
inputs = build_inputs(search: search, sort: sort, count: count, skip: skip, limit: limit)
74-
query = build_query(inputs, {}) # TODO: Upload valid fields
72+
query = build_query(inputs)
7573
make_request(endpoint, query)
7674
end
7775

78-
def self.valid_adverse_events_fields
79-
@valid_adverse_events_fields ||= ::YAML.load_file("#{__dir__}/adverse_events_fields.yml")
80-
end
81-
8276
private
8377

8478
def endpoint_path

lib/open_fda_api/endpoint.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ def initialize(client)
99
@client = client
1010
end
1111

12-
def build_query(query_input, valid_search_fields)
13-
QueryBuilder.new(query_input: query_input, valid_search_fields: valid_search_fields).build_query
12+
def build_query(query_input)
13+
QueryBuilder.new(query_input: query_input).build_query
1414
end
1515

1616
def build_inputs(search:, sort:, count:, skip:, limit:)

lib/open_fda_api/food.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class Food < Endpoint
1414
def adverse_events(search: [], sort: [], count: [], skip: 0, limit: 1)
1515
endpoint = "event.json"
1616
inputs = build_inputs(search: search, sort: sort, count: count, skip: skip, limit: limit)
17-
query = build_query(inputs, {}) # TODO: Upload valid fields
17+
query = build_query(inputs)
1818
make_request(endpoint, query)
1919
end
2020

@@ -27,7 +27,7 @@ def adverse_events(search: [], sort: [], count: [], skip: 0, limit: 1)
2727
def recall_enforcement_reports(search: [], sort: [], count: [], skip: 0, limit: 1)
2828
endpoint = "enforcement.json"
2929
inputs = build_inputs(search: search, sort: sort, count: count, skip: skip, limit: limit)
30-
query = build_query(inputs, {}) # TODO: Upload valid fields
30+
query = build_query(inputs)
3131
make_request(endpoint, query)
3232
end
3333

lib/open_fda_api/other.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class Other < Endpoint
1414
def nsde(search: [], sort: [], count: [], skip: 0, limit: 1)
1515
endpoint = "nsde.json"
1616
inputs = build_inputs(search: search, sort: sort, count: count, skip: skip, limit: limit)
17-
query = build_query(inputs, {}) # TODO: Upload valid fields
17+
query = build_query(inputs)
1818
make_request(endpoint, query)
1919
end
2020

@@ -27,7 +27,7 @@ def nsde(search: [], sort: [], count: [], skip: 0, limit: 1)
2727
def substance_data_reports(search: [], sort: [], count: [], skip: 0, limit: 1)
2828
endpoint = "substance.json"
2929
inputs = build_inputs(search: search, sort: sort, count: count, skip: skip, limit: limit)
30-
query = build_query(inputs, {}) # TODO: Upload valid fields
30+
query = build_query(inputs)
3131
make_request(endpoint, query)
3232
end
3333

lib/open_fda_api/query_builder.rb

Lines changed: 1 addition & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,8 @@ class InvalidQueryArgument < ArgumentError; end
2525
# Use in combination with limit to paginate results. Currently, the largest allowed value for the skip parameter
2626
# is 25000. See Paging if you require paging through larger result sets.
2727
class QueryBuilder
28-
# @param [Hash] valid_search_fields
2928
# @param [QueryInputs] query_input
30-
def initialize(query_input:, valid_search_fields:)
31-
# TODO: Turn validations back on once we get basic functionality working; need to flex on different field types
32-
# validate_arguments!(valid_search_fields, query_input: query_input)
33-
warn "You've passed in a valid_search_fields arg but it isn't being used right now..." if valid_search_fields
29+
def initialize(query_input:)
3430
@search = build_query_string(query_fields: query_input.search)
3531
@sort = build_query_string(query_fields: query_input.sort)
3632
@count = build_query_string(query_fields: query_input.count)
@@ -53,25 +49,6 @@ def build_query
5349

5450
private
5551

56-
def validate_arguments!(valid_search_fields, query_input:)
57-
# `search` keys must exist in adverse_events_fields.yml
58-
invalid_fields = get_invalid_fields(valid_search_fields: valid_search_fields, fields: query_input.search)
59-
raise InvalidQueryArgument, "'search' has invalid fields: #{invalid_fields}" if invalid_fields.any?
60-
61-
# `sort` keys must exist in adverse_events_fields.yml
62-
invalid_fields = get_invalid_fields(valid_search_fields: valid_search_fields, fields: query_input.sort)
63-
raise InvalidQueryArgument, "'sort' has invalid fields: #{invalid_fields}" if invalid_fields.any?
64-
65-
# `count` keys must exist in adverse_events_fields.yml
66-
invalid_fields = get_invalid_fields(valid_search_fields: valid_search_fields, fields: query_input.count)
67-
raise InvalidQueryArgument, "'count' has invalid fields: #{invalid_fields}" if invalid_fields.any?
68-
69-
# `count` and `skip` cannot be set at the same time
70-
return unless count_and_skip_set?(query_input.count, query_input.skip)
71-
72-
raise InvalidQueryArgument, "'count' and 'skip' cannot both be set at the same time!"
73-
end
74-
7552
def build_query_string(query_fields:)
7653
return "" if query_fields.empty?
7754

@@ -87,21 +64,5 @@ def build_groupings(fields)
8764
"(#{and_args.map { |k, v| "#{k}:#{v.gsub(" ", "+")}" }.join("+AND+")})"
8865
end.join("+")
8966
end
90-
91-
def get_invalid_fields(valid_search_fields:, fields:)
92-
# TODO: valid_search_fields define types and we need to check against those
93-
fields.map(&:keys).flatten.select do |field|
94-
if field.include?(".") # nested field (e.g. patient.patientagegroup)
95-
dig_values = field.split(".").join(",properties,").split(",")
96-
valid_search_fields["properties"].dig(*dig_values).nil?
97-
else
98-
!valid_search_fields["properties"].keys.include?(field.to_s)
99-
end
100-
end
101-
end
102-
103-
def count_and_skip_set?(count, skip)
104-
skip.positive? && !count.empty?
105-
end
10667
end
10768
end

lib/open_fda_api/tobacco.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class Tobacco < Endpoint
1313
def problem_reports(search: [], sort: [], count: [], skip: 0, limit: 1)
1414
endpoint = "problem.json"
1515
inputs = build_inputs(search: search, sort: sort, count: count, skip: skip, limit: limit)
16-
query = build_query(inputs, {}) # TODO: Upload valid fields
16+
query = build_query(inputs)
1717
make_request(endpoint, query)
1818
end
1919

spec/open_fda_api/query_builder_spec.rb

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,29 +3,17 @@
33
require "open_fda_api/query_builder"
44

55
RSpec.describe OpenFdaApi::QueryBuilder do
6-
let(:dummy_valid_data) do
7-
{
8-
"type" => "object",
9-
"properties" => {
10-
"a" => "b",
11-
"c" => "d",
12-
"e" => "f",
13-
"foo" => "hello world"
14-
}
15-
}
16-
end
17-
186
describe "#build_query" do
197
context "for search" do
208
subject(:build_query) do
21-
described_class.new(valid_search_fields: dummy_valid_data, query_input: query_input).build_query
9+
described_class.new(query_input: query_input).build_query
2210
end
2311

2412
let(:query_input) { OpenFdaApi::QueryInputs.new(search: search) }
13+
2514
context "with default" do
2615
subject(:build_query) do
27-
described_class.new(valid_search_fields: dummy_valid_data,
28-
query_input: OpenFdaApi::QueryInputs.new).build_query
16+
described_class.new(query_input: OpenFdaApi::QueryInputs.new).build_query
2917
end
3018
it { is_expected.to eq({}) }
3119
end
@@ -65,7 +53,7 @@
6553

6654
context "for sort" do
6755
subject(:build_query) do
68-
described_class.new(valid_search_fields: dummy_valid_data, query_input: query_input).build_query
56+
described_class.new(query_input: query_input).build_query
6957
end
7058
let(:query_input) { OpenFdaApi::QueryInputs.new(sort: sort) }
7159
let(:sort) { [{ "a" => "b" }] }
@@ -76,7 +64,7 @@
7664

7765
context "for count" do
7866
subject(:build_query) do
79-
described_class.new(valid_search_fields: dummy_valid_data, query_input: query_input).build_query
67+
described_class.new(query_input: query_input).build_query
8068
end
8169
let(:query_input) { OpenFdaApi::QueryInputs.new(count: count) }
8270
let(:count) { [{ "a" => "b" }] }
@@ -87,7 +75,7 @@
8775

8876
context "for skip" do
8977
subject(:build_query) do
90-
described_class.new(valid_search_fields: dummy_valid_data, query_input: query_input).build_query
78+
described_class.new(query_input: query_input).build_query
9179
end
9280
let(:query_input) { OpenFdaApi::QueryInputs.new(skip: skip) }
9381
context "when positive" do

0 commit comments

Comments
 (0)