Module: Measures::ValueSetHelpers
- Defined in:
- lib/measure-loader/value_set_helpers.rb
Class Method Summary collapse
-
.make_fake_valuesets_from_single_code_references(elms, vs_model_cache) ⇒ Object
Add single code references by finding the codes from the elm and creating new ValueSet objects With a generated GUID as a fake oid.
-
.modify_value_set_versions(elm) ⇒ Object
Adjusting value set version data.
-
.remove_urnoid(json) ⇒ Object
Removes ‘urn:oid:’ from ELM.
- .unique_list_of_valuesets_referenced_by_elms(elms) ⇒ Object
Class Method Details
.make_fake_valuesets_from_single_code_references(elms, vs_model_cache) ⇒ Object
Add single code references by finding the codes from the elm and creating new ValueSet objects With a generated GUID as a fake oid.
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/measure-loader/value_set_helpers.rb', line 37 def make_fake_valuesets_from_single_code_references(elms, vs_model_cache) value_sets_from_single_code_references = [] elms.each do |elm| # Loops over all single codes and saves them as fake valuesets. (elm.dig('library','codes','def') || []).each do |code_reference| # look up the referenced code system code_system_def = elm['library']['codeSystems']['def'].find { |code_sys| code_sys['name'] == code_reference['codeSystem']['name'] } # Generate a unique number as our fake "oid" based on parameters that identify the DRC code_hash = "drc-" + Digest::SHA2.hexdigest("#{code_system_def['id']}#{code_system_def['version']}#{code_reference['id']}") cache_key = [code_hash, ''] if vs_model_cache[cache_key].nil? concept = CQM::Concept.new(code: code_reference['id'], code_system_name: code_system_def['name'], code_system_version: code_system_def['version'], code_system_oid: code_system_def['id'], display_name: code_reference['name']) vs_model_cache[cache_key] = CQM::ValueSet.new(oid: code_hash, display_name: code_reference['name'], version: '', concepts: [concept]) end value_sets_from_single_code_references << vs_model_cache[cache_key] end end return value_sets_from_single_code_references end |
.modify_value_set_versions(elm) ⇒ Object
Adjusting value set version data. If version is profile, set the version to nil
6 7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/measure-loader/value_set_helpers.rb', line 6 def modify_value_set_versions(elm) (elm.dig('library','valueSets','def') || []).each do |value_set| # If value set has a version and it starts with 'urn:hl7:profile:' then set to nil if value_set['version']&.include?('urn:hl7:profile:') value_set['profile'] = URI.decode_www_form_component(value_set['version'].split('urn:hl7:profile:').last) value_set['version'] = nil # If value has a version and it starts with 'urn:hl7:version:' then strip that and keep the actual version value. elsif value_set['version']&.include?('urn:hl7:version:') value_set['version'] = URI.decode_www_form_component(value_set['version'].split('urn:hl7:version:').last) end end end |
.remove_urnoid(json) ⇒ Object
Removes ‘urn:oid:’ from ELM
20 21 22 |
# File 'lib/measure-loader/value_set_helpers.rb', line 20 def remove_urnoid(json) Utilities.deep_traverse_hash(json) { |hash, k, v| hash[k] = v.gsub('urn:oid:', '') if v.is_a?(String) } end |
.unique_list_of_valuesets_referenced_by_elms(elms) ⇒ Object
24 25 26 27 28 29 30 31 32 33 |
# File 'lib/measure-loader/value_set_helpers.rb', line 24 def unique_list_of_valuesets_referenced_by_elms(elms) elm_value_sets = [] elms.each do |elm| elm.dig('library','valueSets','def')&.each do |value_set| elm_value_sets << {oid: value_set['id'], version: value_set['version'], profile: value_set['profile']} end end elm_value_sets.uniq! return elm_value_sets end |