Class: HealthDataStandards::SVS::ValueSet

Inherits:
Object
  • Object
show all
Includes:
Mongoid::Document
Defined in:
lib/health-data-standards/models/svs/value_set.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.load_from_xml(doc) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/health-data-standards/models/svs/value_set.rb', line 36

def self.load_from_xml(doc)
  doc.root.add_namespace_definition("vs","urn:ihe:iti:svs:2008")
  vs_element = doc.at_xpath("/vs:RetrieveValueSetResponse/vs:ValueSet")
  if vs_element
    vs = ValueSet.new(oid: vs_element["ID"], display_name: vs_element["displayName"], version: vs_element["version"])
    concepts = vs_element.xpath("//vs:Concept").collect do |con|
      code_system_name = HealthDataStandards::Util::CodeSystemHelper::CODE_SYSTEMS[con["codeSystem"]] || con["codeSystemName"]
      Concept.new(code: con["code"], 
                  code_system_name: code_system_name,
                  code_system_version: con["code_system_version"],
                  display_name: con["displayName"], code_system: con["codeSystem"])
    end
    vs.concepts = concepts
    return vs
  end
end

Instance Method Details

#code_set_mapObject

Provides an Array of Hashes. Each code system gets its own Hash The hash has a key of “set” for the code system name and “values” for the actual code list



23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/health-data-standards/models/svs/value_set.rb', line 23

def code_set_map
  codes = []
  self.concepts.inject({}) do |memo, concept|
    memo[concept.code_system_name] ||= []
    memo[concept.code_system_name] << concept.code
    memo
  end.each_pair do |code_set, code_list|
    codes << {"set" => code_set, "values" => code_list}
  end

  codes
end