class AthenaHealth::BaseModel

all parsed models should inherit from here

Public Class Methods

model_attribute(field_name:, klass:, array: false) click to toggle source
# File lib/athena_health/base_model.rb, line 8
def self.model_attribute(field_name:, klass:, array: false)
  define_method(field_name.to_sym) do
    instance_variable_get("@#{field_name}")
  end

  instance_variable_set(:@internal_detail_fields, (@internal_detail_fields || []) + [{
    field_name: field_name,
    field_klass: klass,
    array: array
  }])
end
new(args) click to toggle source
Calls superclass method
# File lib/athena_health/base_model.rb, line 20
def initialize(args)
  super(args)
  parse_sub_objects(args)
end

Private Instance Methods

parse_sub_objects(args) click to toggle source
# File lib/athena_health/base_model.rb, line 27
def parse_sub_objects(args)
  return if self.class.instance_variable_get(:@internal_detail_fields).nil?

  self.class.instance_variable_get(:@internal_detail_fields).each do |internal_detail_field|
    value = sub_object_value(internal_detail_field, args)

    next if value.nil?

    instance_variable_set("@#{internal_detail_field[:field_name]}", value)
  end
end
sub_object_value(internal_detail_field, args) click to toggle source
# File lib/athena_health/base_model.rb, line 39
def sub_object_value(internal_detail_field, args)
  val = args[internal_detail_field[:field_name]]
  return nil if val.nil?
  return internal_detail_field[:field_klass].new(val) unless internal_detail_field[:array] == true

  val.map do |x|
    internal_detail_field[:field_klass].new(x)
  end
end