Sha256: d7cbee06349d6dc2369e9a23893db4165a8c0fe64d43072ed4b3d3784606a17a
Contents?: true
Size: 878 Bytes
Versions: 3
Compression:
Stored size: 878 Bytes
Contents
module Inferno module DSL module FHIRManipulation def walk_resource(resource, path = nil, &block) resource.class::METADATA.each do |field_name, meta| local_name = meta.fetch :local_name, field_name values = [resource.instance_variable_get("@#{local_name}")].flatten.compact next if values.empty? values.each_with_index do |value, i| child_path = if path.nil? field_name elsif meta['max'] > 1 "#{path}.#{field_name}[#{i}]" else "#{path}.#{field_name}" end yield value, meta, child_path walk_resource value, child_path, &block unless FHIR::PRIMITIVES.include? meta['type'] end end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
inferno_core-0.0.3 | lib/inferno/dsl/fhir_manipulation.rb |
inferno_core-0.0.2 | lib/inferno/dsl/fhir_manipulation.rb |
inferno_core-0.0.1 | lib/inferno/dsl/fhir_manipulation.rb |