Sha256: cd3efa72383df5e390a24cea42eaf1d8de8f7ce04a17700a5b7d01f00bf8c6a3

Contents?: true

Size: 1.12 KB

Versions: 8

Compression:

Stored size: 1.12 KB

Contents

require 'json'

# Extension to FHIR::Model. Prepending this into FHIR::Model (done below)
# allows us to call super() on initialize when we overriding it,
# while also defining new methods and attributes
module InfernoFHIRModelExtensions
  attr_accessor :source_hash, :source_text

  def initialize(hash = {})
    super
    @source_hash = hash
  end

  def source_contents
    @source_text || JSON.generate(@source_hash)
  end
end

module FHIR
  class Model
    prepend ::InfernoFHIRModelExtensions
  end
end

# Extension to FHIR::Json. Prepending this into FHIR::Json (done below)
# allows us to call super() on from_json
module InfernoJson
  def from_json(json)
    resource = super
    resource&.source_text = json
    resource
  end
end

# Extension to FHIR::Xml. Prepending this into FHIR::Xml (done below)
# allows us to call super() on from_xml
module InfernoXml
  def from_xml(xml)
    resource = super
    resource&.source_text = xml
    resource
  end
end

module FHIR
  module Json
    class << self
      prepend InfernoJson
    end
  end
end

module FHIR
  module Xml
    class << self
      prepend InfernoXml
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
inferno_core-0.6.1 lib/inferno/ext/fhir_models.rb
inferno_core-0.6.0 lib/inferno/ext/fhir_models.rb
inferno_core-0.5.4 lib/inferno/ext/fhir_models.rb
inferno_core-0.5.3 lib/inferno/ext/fhir_models.rb
inferno_core-0.5.2 lib/inferno/ext/fhir_models.rb
inferno_core-0.5.1 lib/inferno/ext/fhir_models.rb
inferno_core-0.5.0 lib/inferno/ext/fhir_models.rb
inferno_core-0.4.44 lib/inferno/ext/fhir_models.rb