22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
# File 'lib/rubrics/datetimes_iso8601.rb', line 22
def self.check_metadata(fhir_model)
results = {
:datetime_fields => 0,
:iso8601_fields => 0
}
fhir_model.class::METADATA.each do |key, meta|
field_name = meta['local_name'] || key
if ['date','time','dateTime','instant'].include?(meta['type'])
results[:datetime_fields] += 1
value = fhir_model.instance_variable_get("@#{field_name}")
if !value.nil?
if value.is_a?(Array)
if !value.empty? results[:iso8601_fields] += 1 if value.any?{|x|type_okay(meta['type'],x)}
end
else results[:iso8601_fields] += 1 if type_okay(meta['type'],value)
end
end
else
value = fhir_model.instance_variable_get("@#{field_name}")
if !value.nil?
if value.is_a?(Array)
value.each{|v| results.merge!(check_metadata(v)){|k,a,b|a+b} if v.is_a?(FHIR::Model)}
else results.merge!(check_metadata(value)){|k,a,b|a+b} if value.is_a?(FHIR::Model)
end
end
end
end
results
end
|