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