nppes_api 0.1.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 26ab94681ff9601be9ad0a00cff33df5cb1489fe
4
+ data.tar.gz: a9452d50874045605cca898555028e5d78db64bf
5
+ SHA512:
6
+ metadata.gz: e825e9efcbca03a4a5d665c9713e1d01b3f3c28d192d6f95a08209164d0ce1687816170d7c4c44b7f125d5f8f0b1ad7cad3d3b04eb68938664b1b236052d0211
7
+ data.tar.gz: b60634a9af987c7b6686d9ed07fb3b52f0c18e7c4fffe5f24f84b1422f399e366a74faa098305ee10c8bc41d89af21ad29dd8f8f1a713e2fff1ca5c86c5703f9
data/.gitignore ADDED
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
data/.rubocop.yml ADDED
@@ -0,0 +1,209 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.3
3
+ Include:
4
+ - 'Rakefile'
5
+ Exclude:
6
+ - 'config.ru'
7
+ - 'bin/**/*'
8
+ - 'cache/**/*'
9
+ - 'db/**/*'
10
+
11
+ Metrics/LineLength:
12
+ Max: 140
13
+
14
+ # Removes the requirement for using double quotes only for string interpolation.
15
+ Style/StringLiterals:
16
+ Enabled: false
17
+
18
+ # These complexity and length metrics tend to require a bunch of high-touch refactoring
19
+ # in existing projects. Leaving them high for now, and we can slowly lower them to standard
20
+ # levels in the near future.
21
+ Metrics/ModuleLength:
22
+ Max: 200
23
+
24
+ Metrics/ClassLength:
25
+ Max: 200
26
+
27
+ Metrics/MethodLength:
28
+ Max: 50
29
+
30
+ Metrics/AbcSize:
31
+ Max: 75
32
+
33
+ Metrics/CyclomaticComplexity:
34
+ Max: 20
35
+
36
+ Metrics/PerceivedComplexity:
37
+ Max: 20
38
+
39
+ # Allow long keyword parameter lists
40
+ Metrics/ParameterLists:
41
+ Max: 15
42
+ CountKeywordArgs: false
43
+
44
+ # This enforces bad style and can break things.
45
+ # See: https://github.com/bbatsov/rubocop/issues/2614
46
+ Performance/Casecmp:
47
+ Enabled: false
48
+
49
+ # This requires the use of alias rather than alias_method, which seems totally arbitrary
50
+ Style/Alias:
51
+ Enabled: false
52
+
53
+ # This cop enforces that submodules/subclasses be defined like this:
54
+ #
55
+ # class Foo::Bar
56
+ #
57
+ # rather than like this:
58
+ #
59
+ # module Foo
60
+ # class Bar
61
+ #
62
+ # This is actually semantically different, and there are valid reasons for wanting to use the latter
63
+ # form because of the way the former does funky stuff to the namespace.
64
+ Style/ClassAndModuleChildren:
65
+ Enabled: false
66
+
67
+ # This forces you to use class instance variables rather than class variables, which seems pretty
68
+ # situation-specific
69
+ Style/ClassVars:
70
+ Enabled: false
71
+
72
+ # This makes you do things like this:
73
+ # variable = if test
74
+ # 'abc-123'
75
+ # else
76
+ # 'def-456'
77
+ # end
78
+ #
79
+ # I think this is harder to read than assigning the variable within the conditional.
80
+ Style/ConditionalAssignment:
81
+ Enabled: false
82
+
83
+ # This cop forces you to put a return at the beginning of a block of code rather than having an if statement
84
+ # whose body carries to the end of the function. For example:
85
+ #
86
+ # def foo
87
+ # ...
88
+ # if test
89
+ # ...
90
+ # end
91
+ # end
92
+ #
93
+ # would be considered bad, and the cop would force you to put a `return if !test` before that block and
94
+ # then remove the if. The problem is that this hides intent, since the if test does have a purpose in
95
+ # readability, and it could also be easier for future changes to miss the return statement and add code
96
+ # after it expecting it to be executed.
97
+ Style/GuardClause:
98
+ Enabled: false
99
+
100
+ # This is pretty much the same thing as the one above. Inside a loop, it forces you to use next to skip
101
+ # iteration rather than using an if block that runs to the end of the loop, and it suffers from the same
102
+ # problems as above.
103
+ Style/Next:
104
+ Enabled: false
105
+
106
+ Style/IndentArray:
107
+ EnforcedStyle: consistent
108
+
109
+ # This forces you to change simple if/unless blocks to the conditional form like: `return 2 if badness`.
110
+ # Unfortunately there are a number of cases where it makes sense to use the block form even for simple statements,
111
+ # and the modifier form can be easy to miss when scanning code.
112
+ Style/IfUnlessModifier:
113
+ Enabled: false
114
+
115
+ # This cop forces the use of unless in all negated if statements. Since unless is a source of so many arguments
116
+ # and there seems to be no purpose in enforcing its use, disable it.
117
+ Style/NegatedIf:
118
+ Enabled: false
119
+
120
+ # This one enforces that functions with names like has_value? be renamed to value?. There are many cases where
121
+ # doing so would make the code more difficult to parse.
122
+ Style/PredicateName:
123
+ Enabled: false
124
+
125
+ # By default this will force you to use specific names for arguments for enumerable and other methods,
126
+ # which I don't understand even a little bit.
127
+ Style/SingleLineBlockParams:
128
+ Methods: []
129
+
130
+ # Allow trivial methods that have ? at the end.
131
+ Style/TrivialAccessors:
132
+ AllowPredicates: true
133
+
134
+ # It's ok to make a small array of words without using a %w
135
+ Style/WordArray:
136
+ MinSize: 5
137
+
138
+ # Some people really like to put lines at the beginning and end of class bodies, while other people
139
+ # really don't. It doesn't really seem to matter.
140
+ Style/EmptyLinesAroundClassBody:
141
+ Enabled: false
142
+
143
+ # This forces you to put a comment like this at the top of every single file:
144
+ # frozen_string_literal: true
145
+ # In Ruby 3, string literals will be frozen by default, so doing so future-proofs
146
+ # the code, but in the meantime it's a huge pain in the ass.
147
+ Style/FrozenStringLiteralComment:
148
+ Enabled: false
149
+
150
+ # this forces you to use the lambda keyword rather than -> for multiline lambdas, which seems totally arbitrary
151
+ Style/Lambda:
152
+ Enabled: false
153
+
154
+ # Force indentation for milti-line expressions and method calls
155
+ Style/MultilineOperationIndentation:
156
+ EnforcedStyle: indented
157
+
158
+ Style/MultilineMethodCallIndentation:
159
+ EnforcedStyle: indented
160
+
161
+ # This disallows the use of $1, $2 from regular expressions, which seems to make no sense whatsoever
162
+ Style/PerlBackrefs:
163
+ Enabled: false
164
+
165
+ # This enforces that multi-line array literals do not end in a comma. For example:
166
+ #
167
+ # foo = [
168
+ # 1,
169
+ # 2
170
+ # ]
171
+ Style/TrailingCommaInLiteral:
172
+ EnforcedStyleForMultiline: no_comma
173
+
174
+ # Same as above but for method arguments rather than array entries.
175
+ Style/TrailingCommaInArguments:
176
+ EnforcedStyleForMultiline: no_comma
177
+
178
+ # This forces you to replace things like: `[1, 2, 3].length == 0` with `[1,2,3].empty?`. The problem is that
179
+ # not all things that implement length also implement empty? so you will get errors that cannot be resolved,
180
+ # and the cop will encourage you to do things that are incorrect.
181
+ Style/ZeroLengthPredicate:
182
+ Enabled: false
183
+
184
+ # Enforce alignment of multi-line assignments to be like this:
185
+ # variable = if test
186
+ # ...
187
+ # end
188
+ Lint/EndAlignment:
189
+ AlignWith: variable
190
+
191
+ # This cop will require you to replace or prefix method arguments that go unused with underscores. The problem
192
+ # is that while seeming to solve no problem this could easily cause issues where someone editing the code to
193
+ # begin using the variable forgets to remove the underscore. Also, if you replace the argument with _, then
194
+ # information about the meaning of that argument is lost.
195
+ Lint/UnusedMethodArgument:
196
+ Enabled: false
197
+
198
+ # Same as above but with block arguments.
199
+ Lint/UnusedBlockArgument:
200
+ Enabled: false
201
+
202
+ # This cop forces all rescue blocks to do something with the exception. Sometimes you just have an exception
203
+ # you want to rescue but do nothing about.
204
+ Lint/HandleExceptions:
205
+ Enabled: false
206
+
207
+ # This isn't a library, so let's not enforce documentation.
208
+ Documentation:
209
+ Enabled: false
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.3.1
5
+ before_install: gem install bundler -v 1.12.5
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in nppes_api.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 Aubrey Holland
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,46 @@
1
+ # NPPES Api
2
+
3
+ This is a Ruby wrapper for the [NPPES NPI Registry API](https://npiregistry.cms.hhs.gov/registry/help-api). It provides a simple
4
+ query interface and returns data either in raw JSON format or wrapped with queryable Ruby objects.
5
+
6
+ ## Installation
7
+
8
+ Add this line to your application's Gemfile:
9
+
10
+ ```ruby
11
+ gem 'nppes_api'
12
+ ```
13
+
14
+ And then execute:
15
+
16
+ $ bundle
17
+
18
+ Or install it yourself as:
19
+
20
+ $ gem install nppes_api
21
+
22
+ ## Usage
23
+
24
+ The entrypoint for searches is at NPPESApi.search. See the code in lib/nppes_api.rb for information on the options that you can pass,
25
+ which are the same as the ones [described by NPPES](https://npiregistry.cms.hhs.gov/api/demo). A successful search will return an
26
+ NPPESApi::SearchResults object, from which you can call methods to retrieve data or call the raw_data method to get the original JSON.
27
+ Here is an example query:
28
+
29
+ ```
30
+ NPPESApi.search(number: 1932494937).results.first.taxonomies.first.state #=> 'NC'
31
+ ```
32
+
33
+ ## Development
34
+
35
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
36
+
37
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
38
+
39
+ ## Contributing
40
+
41
+ Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/nppes_api.
42
+
43
+
44
+ ## License
45
+
46
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task default: :spec
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "nppes_api"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,26 @@
1
+ module NPPESApi
2
+ class Address
3
+ def initialize(data)
4
+ @data = data
5
+ end
6
+
7
+ methods = [
8
+ :address_1,
9
+ :address_2,
10
+ :city,
11
+ :state,
12
+ :postal_code,
13
+ :telephone_number,
14
+ :country_code,
15
+ :country_name,
16
+ :address_type,
17
+ :address_purpose
18
+ ]
19
+
20
+ methods.each do |meth|
21
+ define_method(meth) do
22
+ @data[meth.to_s]
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,26 @@
1
+ module NPPESApi
2
+ class Basic
3
+ def initialize(data)
4
+ @data = data
5
+ end
6
+
7
+ methods = [
8
+ :status,
9
+ :credential,
10
+ :first_name,
11
+ :last_name,
12
+ :middle_name,
13
+ :name,
14
+ :gender,
15
+ :sole_proprietor,
16
+ :last_updated,
17
+ :enumeration_date
18
+ ]
19
+
20
+ methods.each do |meth|
21
+ define_method(meth) do
22
+ @data[meth.to_s]
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,25 @@
1
+ module NPPESApi
2
+ class Provider
3
+ def initialize(data)
4
+ @data = data
5
+ end
6
+
7
+ def taxonomies
8
+ @taxonomies ||= @data['taxonomies'].map { |i| Taxonomy.new(i) }
9
+ end
10
+
11
+ def addresses
12
+ @addresses ||= @data['addresses'].map { |i| Address.new(i) }
13
+ end
14
+
15
+ def basic
16
+ @basic = Basic.new(@data['basic'])
17
+ end
18
+
19
+ [:created_epoch, :last_updated_epoch, :number, :other_names, :identifiers].each do |meth|
20
+ define_method(meth) do
21
+ @data[meth.to_s]
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,21 @@
1
+ require 'multi_json'
2
+
3
+ module NPPESApi
4
+ class SearchResults
5
+ def initialize(raw_data)
6
+ @data = MultiJson.load(raw_data)
7
+ end
8
+
9
+ def raw_data
10
+ @data
11
+ end
12
+
13
+ def result_count
14
+ @data['result_count']
15
+ end
16
+
17
+ def results
18
+ @results ||= @data['results'].map { |i| Provider.new(i) }
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ module NPPESApi
2
+ class Taxonomy
3
+ def initialize(data)
4
+ @data = data
5
+ end
6
+
7
+ methods = [
8
+ :state,
9
+ :code,
10
+ :primary,
11
+ :license,
12
+ :desc
13
+ ]
14
+
15
+ methods.each do |meth|
16
+ define_method(meth) do
17
+ @data[meth.to_s]
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,3 @@
1
+ module NPPESApi
2
+ VERSION = '0.1.0'.freeze
3
+ end
data/lib/nppes_api.rb ADDED
@@ -0,0 +1,43 @@
1
+ require 'nppes_api/version'
2
+
3
+ require 'rest-client'
4
+
5
+ require_relative 'nppes_api/address'
6
+ require_relative 'nppes_api/basic'
7
+ require_relative 'nppes_api/provider'
8
+ require_relative 'nppes_api/search_results'
9
+ require_relative 'nppes_api/taxonomy'
10
+
11
+ module NPPESApi
12
+ ENUMERATION_TYPES = [
13
+ NPI_1 = 'NPI-1'.freeze,
14
+ NPI_2 = 'NPI-2'.freeze
15
+ ].freeze
16
+
17
+ ADDRESS_PURPOSES = [
18
+ LOCATION = 'LOCATION'.freeze,
19
+ MAILING = 'MAILING'.freeze
20
+ ].freeze
21
+
22
+ # This is the main entry point for searches. Provide params as described below to parameterize the search. Search results can consist
23
+ # of at most 1200 results, and each search can return at most 200 of them. Use the limit and skip parameters as described below to
24
+ # perform pagination of the data.
25
+ # {https://npiregistry.cms.hhs.gov/registry/help-api}
26
+ # @param number [Integer] An NPI number to search with. Must be exactly 10 characters
27
+ # @param enumeration_type [String] One of the ENUMERATION_TYPES from above. NPI_1 is an individual search, and NPI_2 is organizations.
28
+ # Will search across both types if unspecified.
29
+ # @param taxonomy_description [String] Specialty or Description. Can include a wildcard (*) after at least two characters
30
+ # @param first_name [String] Exact name or include a wildcard after two characters. Only valid for type 1 searches.
31
+ # @param last_name [String] Exact name or include a wildcard after two characters. Only valid for type 1 searches.
32
+ # @param organization_name [String] Exact name or include a wildcard after two characters. Only valid for type 2 searches.
33
+ # @param address_purpose [String] One of the ADDRESS_PURPOSES above. Requires other criteria.
34
+ # @param city [String] Exact city name, no wildcards
35
+ # @param state [String] 2-character abbreviation, requires other criteria
36
+ # @param postal_code [String] At least two characters, wildcard is implied
37
+ # @param country_code [String] Exactly two characters. If "US" other criteria are required
38
+ # @param limit [Integer] Limit results, default = 10, max = 200
39
+ # @param skip [Integer] Skip first N results, max = 1000
40
+ def self.search(options = {})
41
+ SearchResults.new(RestClient.get('https://npiregistry.cms.hhs.gov/api', params: options).body)
42
+ end
43
+ end
data/nppes_api.gemspec ADDED
@@ -0,0 +1,28 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'nppes_api/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "nppes_api"
8
+ spec.version = NPPESApi::VERSION
9
+ spec.authors = ["Aubrey Holland"]
10
+ spec.email = ["aubrey@adhocteam.us"]
11
+
12
+ spec.summary = 'Tools for searching the NPPES directory by their API'
13
+ spec.description = 'CMS provides an API for searching providers and organizations in NPPES. This is a tool for accessing it.'
14
+ spec.homepage = "https://github.com/adhocteam/nppes_api"
15
+ spec.license = "MIT"
16
+
17
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
+ spec.bindir = "exe"
19
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
+ spec.require_paths = ['lib']
21
+
22
+ spec.add_runtime_dependency 'multi_json', '~> 0'
23
+ spec.add_runtime_dependency 'rest-client', '~> 0'
24
+
25
+ spec.add_development_dependency 'bundler', '~> 1.12'
26
+ spec.add_development_dependency 'rake', '~> 10.0'
27
+ spec.add_development_dependency 'rspec', '~> 3.0'
28
+ end
metadata ADDED
@@ -0,0 +1,133 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nppes_api
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Aubrey Holland
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2016-08-03 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: multi_json
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rest-client
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.12'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.12'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '10.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '10.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.0'
83
+ description: CMS provides an API for searching providers and organizations in NPPES.
84
+ This is a tool for accessing it.
85
+ email:
86
+ - aubrey@adhocteam.us
87
+ executables: []
88
+ extensions: []
89
+ extra_rdoc_files: []
90
+ files:
91
+ - ".gitignore"
92
+ - ".rspec"
93
+ - ".rubocop.yml"
94
+ - ".travis.yml"
95
+ - Gemfile
96
+ - LICENSE.txt
97
+ - README.md
98
+ - Rakefile
99
+ - bin/console
100
+ - bin/setup
101
+ - lib/nppes_api.rb
102
+ - lib/nppes_api/address.rb
103
+ - lib/nppes_api/basic.rb
104
+ - lib/nppes_api/provider.rb
105
+ - lib/nppes_api/search_results.rb
106
+ - lib/nppes_api/taxonomy.rb
107
+ - lib/nppes_api/version.rb
108
+ - nppes_api.gemspec
109
+ homepage: https://github.com/adhocteam/nppes_api
110
+ licenses:
111
+ - MIT
112
+ metadata: {}
113
+ post_install_message:
114
+ rdoc_options: []
115
+ require_paths:
116
+ - lib
117
+ required_ruby_version: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
122
+ required_rubygems_version: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ requirements: []
128
+ rubyforge_project:
129
+ rubygems_version: 2.6.6
130
+ signing_key:
131
+ specification_version: 4
132
+ summary: Tools for searching the NPPES directory by their API
133
+ test_files: []