Index: /ruby/trunk/lib/models/rm/support/identification.rb
===================================================================
--- /ruby/trunk/lib/models/rm/support/identification.rb	(revision 90)
+++ /ruby/trunk/lib/models/rm/support/identification.rb	(revision 91)
@@ -15,5 +15,5 @@
 
           def value=(value)
-            raise "empty value" if value.nil? or value.empty?
+            raise ArgumentError, "empty value" if value.nil? or value.empty?
             @value = value            
           end
@@ -21,4 +21,44 @@
         
         class Archetype_ID < Object_ID
+          attr_reader :domain_concept, :rm_name, :rm_entity, :rm_originator, :specialisation, :version_id
+
+          def initialize(value, domain_concept, rm_name, rm_entity, rm_originator, specialisation, version_id)
+            super(value)
+            self.domain_concept = domain_concept
+            self.rm_name = rm_name
+            self.rm_entity = rm_entity
+            self.rm_originator = rm_originator
+            self.specialisation = specialisation
+            self.version_id = version_id
+          end
+
+          def domain_concept=(domain_concept)
+            raise ArgumentError, "domain concept not valid" if domain_concept.nil? or domain_concept.empty?
+            @domain_concept = domain_concept
+          end
+
+          def rm_name=(rm_name)
+            raise ArgumentError, "rm_name not valid" if rm_name.nil? or rm_name.empty?
+            @rm_name = rm_name
+          end
+
+          def rm_entity=(rm_entity)
+            raise ArgumentError, "rm_entity not valid" if rm_entity.nil? or rm_entity.empty?
+            @rm_entity = rm_entity
+          end
+
+          def rm_originator=(rm_originator)
+            raise ArgumentError, "rm_originator not valid" if rm_originator.nil? or rm_originator.empty?
+            @rm_originator = rm_originator
+          end
+
+          def specialisation=(specialisation)
+            raise ArgumentError, "rm_specialisation not valid" if specialisation.nil? or specialisation.empty?
+            @specialisation = specialisation
+          end
+          def version_id=(version_id)
+            raise ArgumentError, "version_id not valid" if version_id.nil? or version_id.empty?
+            @version_id = version_id
+          end
         end
 
Index: /ruby/trunk/lib/models/tests/test_reference_model.rb
===================================================================
--- /ruby/trunk/lib/models/tests/test_reference_model.rb	(revision 90)
+++ /ruby/trunk/lib/models/tests/test_reference_model.rb	(revision 91)
@@ -148,12 +148,46 @@
     assert_nothing_raised(Exception){@object_id = OpenEHR::RM::Support::Identification::Object_ID.new("0.0.3")}
     @terminology_id = OpenEHR::RM::Support::Identification::Terminology_ID.new('terminology','version')
-    @archetype_id = OpenEHR::RM::Support::Identification::Archetype_ID.new("0.0.3")
+    @archetype_id = OpenEHR::RM::Support::Identification::Archetype_ID.new("0.0.5", "biochemistry result_cholesterol", "entry", "ehr_rm", "openehr","cholesterol","0.0.3")
   end
   
   def test_init
     assert_instance_of OpenEHR::RM::Support::Identification::Object_ID, @object_id
+    assert_instance_of OpenEHR::RM::Support::Identification::Archetype_ID, @archetype_id
     assert_instance_of OpenEHR::RM::Support::Identification::Terminology_ID, @terminology_id
-    assert_instance_of OpenEHR::RM::Support::Identification::Archetype_ID, @archetype_id
   end
 
+  def test_object_id
+    assert_equal "0.0.3", @object_id.value
+    assert_nothing_raised(Exception){@object_id.value = "0.0.4"}
+    assert_equal "0.0.4", @object_id.value
+    assert_raise(ArgumentError){@object_id.value=nil}
+    assert_raise(ArgumentError){@object_id.value=""}
+    assert_raise(ArgumentError){@object_id = OpenEHR::RM::Support::Identification::Object_ID.new}
+    assert_raise(ArgumentError){@object_id = OpenEHR::RM::Support::Identification::Object_ID.new(nil)}
+    assert_raise(ArgumentError){@object_id = OpenEHR::RM::Support::Identification::Object_ID.new("")}
+  end
+
+  def test_archetype_id
+    assert_equal "0.0.5", @archetype_id.value
+    assert_nothing_raised(Exception){@archetype_id.value = "0.0.6"}
+    assert_equal "0.0.6", @archetype_id.value
+    assert_raise(ArgumentError){@archetype_id.value=nil}
+    assert_raise(ArgumentError){@archetype_id.value=""}
+    assert_raise(ArgumentError){@archetype_id = OpenEHR::RM::Support::Identification::Archetype_ID.new}
+    assert_raise(ArgumentError){@object_id = OpenEHR::RM::Support::Identification::Archetype_ID.new(nil)}
+    assert_raise(ArgumentError){@object_id = OpenEHR::RM::Support::Identification::Archetype_ID.new("")}
+
+    assert_equal "biochemistry result_cholesterol", @archetype_id.domain_concept
+
+    assert_equal "entry", @archetype_id.rm_name
+
+    assert_equal "ehr_rm", @archetype_id.rm_entity
+
+    assert_equal "openehr", @archetype_id.rm_originator
+
+    assert_equal "cholesterol", @archetype_id.specialisation
+
+    assert_equal "0.0.3", @archetype_id.version_id
+
+  end
 end
