Sha256: 544e2eb60cebd9ed27c6a1eb3179a60a5288bd34374cf2dd0f5c00deda522305

Contents?: true

Size: 1.93 KB

Versions: 2

Compression:

Stored size: 1.93 KB

Contents

module QDM
  # Represents a Code
  class Code
    attr_accessor :code, :codeSystem, :descriptor, :codeSystemOid, :version

    # Code and code system are required (at minimum).
    def initialize(code, codeSystemOid, descriptor = nil, codeSystem = nil, version = nil)
      @code = code
      @codeSystem = codeSystem
      @descriptor = descriptor
      @codeSystemOid = codeSystemOid
      @version = version
    end

    # Converts an object of this instance into a database friendly value.
    def mongoize
      { code: @code, codeSystemOid: @codeSystemOid, descriptor: @descriptor, codeSystem: @codeSystem, version: @version, _type: 'QDM::Code' }
    end

    class << self
      # Get the object as it was stored in the database, and instantiate
      # this custom class from it.
      #
      # The array elements in demongoize are the same 5 elements used in mongoize, i.e.
      # [ code, codeSystem, descriptor, codeSystemOid, version ].
      def demongoize(object)
        return nil unless object
        object = object.symbolize_keys
        QDM::Code.new(object[:code], object[:codeSystemOid], object[:descriptor], object[:codeSystem], object[:version])
      end

      # Takes any possible object and converts it to how it would be
      # stored in the database.
      def mongoize(object)
        case object
        when nil then nil
        when QDM::Code then object.mongoize
        when Hash
          object = object.symbolize_keys
          codeSystemOid = object[:system] ? object[:system] : object[:codeSystemOid]
          QDM::Code.new(object[:code], codeSystemOid, object[:descriptor], object[:codeSystem], object[:version]).mongoize
        else object
        end
      end

      # Converts the object that was supplied to a criteria and converts it
      # into a database friendly form.
      def evolve(object)
        case object
        when QDM::Code then object.mongoize
        else object
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
cqm-models-2.0.1 app/models/qdm/basetypes/code.rb
cqm-models-2.0.0 app/models/qdm/basetypes/code.rb