Module: ProviderImportUtils

Included in:
HealthDataStandards::Import::CDA::ProviderImporter
Defined in:
lib/health-data-standards/import/provider_import_utils.rb

Instance Method Summary collapse

Instance Method Details

#extract_data(subject, query) ⇒ Object

Returns nil if result is an empty string, block allows text munging of result if there is one



33
34
35
36
37
38
39
40
# File 'lib/health-data-standards/import/provider_import_utils.rb', line 33

def extract_data(subject, query)
  result = subject.at_xpath(query)
  if result.nil? || result.content.empty?
    nil
  else
    result.content
  end
end

#extract_provider(performer, element_name = "assignedEntity") ⇒ Object



3
4
5
6
# File 'lib/health-data-standards/import/provider_import_utils.rb', line 3

def extract_provider(performer, element_name="assignedEntity")
  provider_data = extract_provider_data(performer, false, "./cda:#{element_name}")
  find_or_create_provider(provider_data)
end

#find_or_create_provider(provider_hash, patient = nil) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/health-data-standards/import/provider_import_utils.rb', line 8

def find_or_create_provider(provider_hash, patient=nil)
  provider = Provider.by_npi(provider_hash[:npi]).first if provider_hash[:npi] && !provider_hash[:npi].empty?
  unless provider
    if provider_hash[:npi]
      provider = Provider.create(provider_hash)
      provider.npi = provider_hash[:npi]
    else
      ident_roots = provider_hash[:cda_identifiers].map {|ident| ident.root}
      ident_extensions = provider_hash[:cda_identifiers].map {|ident| ident.extension}
      unless ident_roots.size == 0
        provider ||= Provider.in("cda_identifiers.root" => ident_roots).and.in("cda_identifiers.extension" => ident_extensions).first
      end
      provider_query = {:title => provider_hash[:title],            
                          :given_name => provider_hash[:given_name],  
                          :family_name=> provider_hash[:family_name],
                          :specialty => provider_hash[:specialty]}
      provider ||= Provider.where(provider_query).first
      provider ||= Provider.resolve_provider(provider_hash, patient)
      provider ||= Provider.create(provider_hash)
    end
  end
  provider
end