From 1872d88922e4166ac5b5cb1c48dcf33df2e8b3b7 Mon Sep 17 00:00:00 2001 From: Jaehoon Lee Date: Tue, 14 Jan 2025 10:51:21 -0500 Subject: [PATCH] Used attr_accessor --- .../fhir_evaluation/reference_extractor.rb | 35 ++++++++++--------- .../rules/all_references_resolve.rb | 2 +- .../rules/all_resources_reachable.rb | 2 +- 3 files changed, 20 insertions(+), 19 deletions(-) diff --git a/lib/inferno/dsl/fhir_evaluation/reference_extractor.rb b/lib/inferno/dsl/fhir_evaluation/reference_extractor.rb index e28ebed86..b2abd9f10 100644 --- a/lib/inferno/dsl/fhir_evaluation/reference_extractor.rb +++ b/lib/inferno/dsl/fhir_evaluation/reference_extractor.rb @@ -2,8 +2,10 @@ module Inferno module DSL module FHIREvaluation class ReferenceExtractor + attr_accessor :resource_path_ids, :references + def extract_resource_path_ids(resources) - resource_path_ids = Hash.new { |resource_path, id| resource_path[id] = [] } + @resource_path_ids = Hash.new { |resource_path, id| resource_path[id] = [] } resources.each do |resource| resource.each_element do |value, metadata, path| @@ -18,15 +20,14 @@ def extract_resource_path_ids(resources) resource_path_ids end - def extract_references(resources, resource_path_ids) + def extract_references(resources) @references = Hash.new { |reference, id| reference[id] = [] } - @resource_path_ids = resource_path_ids resources.each do |resource| extract_references_from_resource(resource) end - @references + references end def extract_references_from_resource(resource) @@ -44,7 +45,7 @@ def extract_references_from_resource(resource) # assumes this is a unique uuid reference = value.reference reference = reference[9..] if reference.start_with? 'urn:uuid:' - @references[resource.id] << [path, '', reference] + references[resource.id] << [path, '', reference] end end end @@ -54,23 +55,23 @@ def add_parsed_reference(resource, value, path) type = value.reference.split('/')[-2].downcase id = value.reference.split('/')[-1] # assumes all profiles are represented - @references[resource.id] << if @resource_path_ids.key?(type) - [path, type, id] - else - # could include a warning here - [path, '', value.reference] - end + references[resource.id] << if resource_path_ids.key?(type) + [path, type, id] + else + # could include a warning here + [path, '', value.reference] + end end def add_reference_typed_path(resource, value, path) type = path.split('Reference', 2).downcase # assumes all profiles are represented - @references[resource.id] << if @resource_path_ids.key?(type) - [path, type, value.reference] - else - # could include a warning here - [path, '', value.reference] - end + references[resource.id] << if resource_path_ids.key?(type) + [path, type, value.reference] + else + # could include a warning here + [path, '', value.reference] + end end end end diff --git a/lib/inferno/dsl/fhir_evaluation/rules/all_references_resolve.rb b/lib/inferno/dsl/fhir_evaluation/rules/all_references_resolve.rb index 4c13937d2..f4ad79c44 100644 --- a/lib/inferno/dsl/fhir_evaluation/rules/all_references_resolve.rb +++ b/lib/inferno/dsl/fhir_evaluation/rules/all_references_resolve.rb @@ -11,7 +11,7 @@ def check(context) extractor = Inferno::DSL::FHIREvaluation::ReferenceExtractor.new resource_path_ids = extractor.extract_resource_path_ids(context.data) resource_ids = Set.new(resource_path_ids.values.flatten.uniq) - reference_map = extractor.extract_references(context.data, resource_path_ids) + reference_map = extractor.extract_references(context.data) unresolved_references = Hash.new { |reference, id| reference[id] = [] } reference_map.each do |id, references| diff --git a/lib/inferno/dsl/fhir_evaluation/rules/all_resources_reachable.rb b/lib/inferno/dsl/fhir_evaluation/rules/all_resources_reachable.rb index 32594df09..1d190e43d 100644 --- a/lib/inferno/dsl/fhir_evaluation/rules/all_resources_reachable.rb +++ b/lib/inferno/dsl/fhir_evaluation/rules/all_resources_reachable.rb @@ -17,7 +17,7 @@ def check(context) extractor = Inferno::DSL::FHIREvaluation::ReferenceExtractor.new @resource_path_ids = extractor.extract_resource_path_ids(context.data) @resource_ids = Set.new(resource_path_ids.values.flatten.uniq) - reference_map = extractor.extract_references(context.data, resource_path_ids) + reference_map = extractor.extract_references(context.data) reference_map.each do |id, references| assess_reachability(id, references)