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)
= Inferno::DSL::FHIREvaluation::.new
resource_type_ids = .(context.data)
resource_ids = Set.new(resource_type_ids.values.flatten.uniq)
reference_map = .(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?
message = gen_reference_fail_message(unresolved_references)
result = EvaluationResult.new(message, rule: self)
else
message = 'All references in examples resolve.'
result = EvaluationResult.new(message, severity: 'success', rule: self)
end
context.add_result result
end
|