module OpenEHR module AM module Archetype module Constraint_Model module Primitive class C_Primitive def assumed_value raise NotImplementedError, "assumed_value should be implemented" end def default_value raise NotImplementedError, "assumed_value should be implemented" end def has_assumed_value? assumed_value != nil end def valid_value? raise NotImplementedError, "valid_value? should be implemented" end end class C_Boolean < C_Primitive attr_accessor :assumed_value def initialize(true_valid, false_valid, assumed_value) binary_consistency(true_valid, false_valid) @true_valid = true_valid @false_valid = false_valid @assumed_value = assumed_value end def set_true_valid(true_valid) binary_consistency(true_valid, @false_valid) @true_valid = true_valid end def set_false_valid(false_valid) binary_consistency(@true_valid,false_valid) @false_valid = false_valid end def true_valid? @true_valid end def false_valid? @false_valid end def valid_value? end def default_value(a_value=nil) if a_value == nil @true_valid else (a_value && @true_valid) || (!a_value && @false_valid) end end private def binary_consistency(true_valid, false_valid) if !true_valid && !false_valid raise ArgumentError, "Either true_valid or false_valid must be true" end end end # of C_Boolean class C_Integer < C_Primitive end end # of Primitive end # of Constraint_Model end # of Archetype end # of AM end # of OpenEHR