Class: Inferno::DSL::FHIREvaluation::Rules::AllReferencesResolve
- Inherits:
-
Inferno::DSL::FHIREvaluation::Rule
- Object
- Inferno::DSL::FHIREvaluation::Rule
- Inferno::DSL::FHIREvaluation::Rules::AllReferencesResolve
- Defined in:
- lib/inferno/dsl/fhir_evaluation/rules/all_references_resolve.rb
Instance Method Summary collapse
Instance Method Details
#check(context) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/inferno/dsl/fhir_evaluation/rules/all_references_resolve.rb', line 10 def check(context) extractor = Inferno::DSL::FHIREvaluation::ReferenceExtractor.new resource_type_ids = extractor.extract_resource_type_ids(context.data) resource_ids = Set.new(resource_type_ids.values.flatten.uniq) reference_map = extractor.extract_references(context.data) unresolved_references = Hash.new { |reference, id| reference[id] = [] } reference_map.each do |resource_id, references| references.each do |reference| if reference[:type] == '' unresolved_references[resource_id] << reference unless resource_ids.include?(reference[:id]) elsif !resource_type_ids[reference[:type]].include?(reference[:id]) unresolved_references[resource_id] << reference end end end if unresolved_references.any? = (unresolved_references) result = EvaluationResult.new(, rule: self) else = 'All references resolve' result = EvaluationResult.new(, severity: 'success', rule: self) end context.add_result result end |
#gen_reference_fail_message(unresolved_references) ⇒ Object
39 40 41 42 43 44 45 46 47 48 |
# File 'lib/inferno/dsl/fhir_evaluation/rules/all_references_resolve.rb', line 39 def (unresolved_references) = unresolved_references.map do |resource_id, references| reference_detail = references.map do |reference| " \n\tpath: #{reference[:path]}, type: #{reference[:type]}, id: #{reference[:id]}" end.join(',') "\n Resource (id): #{resource_id} #{reference_detail}" end.join(',') "Found unresolved references: #{}" end |