Class: Inferno::Terminology::Codesystem
- Inherits:
-
Object
- Object
- Inferno::Terminology::Codesystem
- Defined in:
- lib/inferno/terminology/codesystem.rb
Instance Attribute Summary collapse
-
#codesystem_model ⇒ Object
Returns the value of attribute codesystem_model.
Instance Method Summary collapse
- #all_codes_in_concept(concepts) ⇒ Object
- #filter_codes(filter = nil) ⇒ Object
- #find_concept(code, concepts = codesystem_model.concept) ⇒ Object
-
#initialize(cs_model) ⇒ Codesystem
constructor
A new instance of Codesystem.
-
#is_a_concept_filter?(filter) ⇒ Boolean
rubocop:disable Naming/PredicateName.
- #load_codes(concepts, cs_set) ⇒ Object
Constructor Details
#initialize(cs_model) ⇒ Codesystem
Returns a new instance of Codesystem.
10 11 12 |
# File 'lib/inferno/terminology/codesystem.rb', line 10 def initialize(cs_model) @codesystem_model = cs_model end |
Instance Attribute Details
#codesystem_model ⇒ Object
Returns the value of attribute codesystem_model.
8 9 10 |
# File 'lib/inferno/terminology/codesystem.rb', line 8 def codesystem_model @codesystem_model end |
Instance Method Details
#all_codes_in_concept(concepts) ⇒ Object
14 15 16 |
# File 'lib/inferno/terminology/codesystem.rb', line 14 def all_codes_in_concept(concepts) Set.new.tap { |cs_set| load_codes(concepts.flatten, cs_set) } end |
#filter_codes(filter = nil) ⇒ Object
37 38 39 40 41 42 43 44 45 46 |
# File 'lib/inferno/terminology/codesystem.rb', line 37 def filter_codes(filter = nil) if filter.nil? all_codes_in_concept(codesystem_model.concept) elsif is_a_concept_filter? filter parent_concept = find_concept(filter.value) all_codes_in_concept([parent_concept]) else raise FilterOperationException, filter.to_s end end |
#find_concept(code, concepts = codesystem_model.concept) ⇒ Object
25 26 27 28 29 30 31 |
# File 'lib/inferno/terminology/codesystem.rb', line 25 def find_concept(code, concepts = codesystem_model.concept) return if concepts.nil? concepts.find do |concept| concept.code == code || find_concept(code, concept.concept) end end |
#is_a_concept_filter?(filter) ⇒ Boolean
rubocop:disable Naming/PredicateName
33 34 35 |
# File 'lib/inferno/terminology/codesystem.rb', line 33 def is_a_concept_filter?(filter) # rubocop:disable Naming/PredicateName (filter.op == 'is-a') && (codesystem_model.hierarchyMeaning == 'is-a') && (filter.property == 'concept') end |
#load_codes(concepts, cs_set) ⇒ Object
18 19 20 21 22 23 |
# File 'lib/inferno/terminology/codesystem.rb', line 18 def load_codes(concepts, cs_set) concepts.each do |concept| cs_set.add(system: codesystem_model.url, code: concept.code) load_codes(concept.concept, cs_set) unless concept.concept.blank? end end |