Sha256: 409d440f006859f8f07ac496bfb279eb08386a9eb36be66d96fca7d0885cfdba

Contents?: true

Size: 724 Bytes

Versions: 6

Compression:

Stored size: 724 Bytes

Contents

module LifenFhir
  class Element < Base

    attribute :uuid, String

    def reference
      "#{resource_type}/#{uuid}"
    end

    def attributes_from_json(json)
      self.uuid = extract_uuid(json["reference"])

      self
    end

    def fhir_payload_as_reference
      { reference: reference }
    end

    private

      def extract_uuid(uuid_or_reference)
        if m = uuid_or_reference.match(/^#(.*)/) # "#1234-abcd-5678'
          return m[1]
        elsif m = uuid_or_reference.match(/(.*)\/(.*)/) # "Binary/1234-abcd-5678'
          return m[2]
        else
          return uuid_or_reference
        end
      end

      def resource_type
        self.class.name.gsub!('LifenFhir::', '')
      end

  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
lifen_fhir-0.7.1 lib/lifen_fhir/element.rb
lifen_fhir-0.7.0 lib/lifen_fhir/element.rb
lifen_fhir-0.6.1 lib/lifen_fhir/element.rb
lifen_fhir-0.6.0 lib/lifen_fhir/element.rb
lifen_fhir-0.5.0 lib/lifen_fhir/element.rb
lifen_fhir-0.4.2 lib/lifen_fhir/element.rb