Class: Provider
- Inherits:
-
Object
- Object
- Provider
- Includes:
- Personable
- Defined in:
- lib/health-data-standards/models/provider.rb
Class Method Summary collapse
- .luhn_checksum(num) ⇒ Object
-
.resolve_provider(provider_hash) ⇒ Object
this is intentially left blank.
-
.valid_npi?(npi) ⇒ Boolean
validate the NPI, should be 10 or 15 digits total with the final digit being a checksum using the Luhn algorithm with additional special handling as described in www.cms.gov/NationalProvIdentStand/Downloads/NPIcheckdigit.pdf.
Instance Method Summary collapse
Methods included from Personable
Class Method Details
.luhn_checksum(num) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/health-data-standards/models/provider.rb', line 35 def self.luhn_checksum(num) double = {'0' => 0, '1' => 2, '2' => 4, '3' => 6, '4' => 8, '5' => 1, '6' => 3, '7' => 5, '8' => 7, '9' => 9} sum = 0 num.reverse! num.split("").each_with_index do |char, i| if (i%2)==0 sum+=double[char] else sum+=char.to_i end end sum = (9*sum)%10 return sum.to_s end |
.resolve_provider(provider_hash) ⇒ Object
this is intentially left blank. When using the ProviderImporter class this method will be called if a parsed provider can not be found in the database if the parsed provider does not have an npi number associated with it. This allows applications to handle this how they see fit by redefining this method. If this method call return nil an attempt will be made to discover the Provider by name matching and if that fails a Provider will be created in the db based on the information in the parsed
hase
57 58 59 |
# File 'lib/health-data-standards/models/provider.rb', line 57 def self.resolve_provider(provider_hash) end |
.valid_npi?(npi) ⇒ Boolean
validate the NPI, should be 10 or 15 digits total with the final digit being a checksum using the Luhn algorithm with additional special handling as described in www.cms.gov/NationalProvIdentStand/Downloads/NPIcheckdigit.pdf
21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/health-data-standards/models/provider.rb', line 21 def self.valid_npi?(npi) return false unless npi return false if npi.length != 10 and npi.length != 15 return false if npi.gsub(/\d/, '').length > 0 # npi must be all digits return false if npi.length == 15 and (npi =~ /^80840/)==nil # 15 digit npi must start with 80840 # checksum is always calculated as if 80840 prefix is present if npi.length==10 npi = '80840'+npi end return luhn_checksum(npi[0,14])==npi[14] end |
Instance Method Details
#records(effective_date = nil) ⇒ Object
14 15 16 |
# File 'lib/health-data-standards/models/provider.rb', line 14 def records(effective_date=nil) Record.by_provider(self, effective_date) end |