require 'test/unit' require 'set' #include OpenEhr::RM::Common::Archetyped class RM_Common_Archetyped_Test < Test::Unit::TestCase def setup @dv_text = OpenEhr::RM::DataTypes::Text::DvText.new('Test') @uid_based_id = OpenEhr::RM::Support::Identification::UidBasedId.new('rrip::0.0.5') @archetype_id = OpenEhr::RM::Support::Identification::ArchetypeId.new("0.0.5", "biochemistry result_cholesterol", "entry", "ehr_rm", "openehr","cholesterol","0.0.3") @template_id = OpenEhr::RM::Support::Identification::TemplateId.new('1.0.1') assert_nothing_raised(Exception){@archetyped = OpenEhr::RM::Common::Archetyped::Archetyped.new(@archetype_id, '1.0.1')} assert_nothing_raised(Exception){@link = OpenEhr::RM::Common::Archetyped::Link.new(OpenEhr::RM::DataTypes::Text::DvText.new("generic"), OpenEhr::RM::DataTypes::Uri::DvEhrUri.new("ehr://test/"),OpenEhr::RM::DataTypes::Text::DvText.new("problem"))} assert_nothing_raised(Exception){ @pathable = OpenEhr::RM::Common::Archetyped::Pathable.new } name = OpenEhr::RM::DataTypes::Text::DvText.new('blood') links = Set.new([@uid_based_id]) assert_nothing_raised(Exception){ @locatable = OpenEhr::RM::Common::Archetyped::Locatable.new(:archetype_node_id => 'at0001', :name => name, :links => links)} provider = OpenEhr::RM::Common::Generic::PartyIdentified.new(:name => 'NERV') location = OpenEhr::RM::Common::Generic::PartyIdentified.new(:name => 'GEOFRONT') object_version_id = OpenEhr::RM::Support::Identification::ObjectVersionId.new('ABC::DEF::1.3.4') party_ref = OpenEhr::RM::Support::Identification::PartyRef.new('local', 'ORGANISATION', object_id) assert_nothing_raised(Exception){ @feeder_audit_details = OpenEhr::RM::Common::Archetyped::FeederAuditDetails.new(:system_id => 'MAGI', :provider => provider, :location => location, :time => OpenEhr::RM::DataTypes::Quantity::DateTime::DvDateTime.new('2009-07-03T12:16:31'), :subject => OpenEhr::RM::Common::Generic::PartyProxy.new(:external_ref => party_ref), :version_id => '0.0.4')} feeder_audit_details = OpenEhr::RM::Common::Archetyped::FeederAuditDetails.new(:system_id => 'AKAGI') dv_identifier = DvIdentifier.new('NERV', 'MELCHIOR', 'RITSUKO', 'COMPUTER') feeder_audit_details2 = OpenEhr::RM::Common::Archetyped::FeederAuditDetails.new(:system_id => 'KATSURAGI') dv_identifier2 = DvIdentifier.new('NERV', 'SHOGOUKI', 'MISATO', 'EVANGELION') charset = OpenEhr::RM::DataTypes::Text::CodePhrase.new('UTF-8','character-sets') language = OpenEhr::RM::DataTypes::Text::CodePhrase.new('ja', 'languages') dv_encapsulated = OpenEhr::RM::DataTypes::Encapsulated::DvEncapsulated.new(charset, language, 10) assert_nothing_raised(Exception){ @feeder_audit = OpenEhr::RM::Common::Archetyped::FeederAudit.new(:originating_system_audit => feeder_audit_details, :originating_system_item_ids => [dv_identifier], :feeder_system_audit => feeder_audit_details2, :feeder_system_item_ids => [dv_identifier2], :original_content => dv_encapsulated)} end def test_init assert_instance_of OpenEhr::RM::Common::Archetyped::Archetyped, @archetyped assert_instance_of OpenEhr::RM::Common::Archetyped::Link, @link assert_instance_of OpenEhr::RM::Common::Archetyped::Pathable, @pathable assert_instance_of OpenEhr::RM::Common::Archetyped::Locatable, @locatable assert_instance_of OpenEhr::RM::Common::Archetyped::FeederAuditDetails, @feeder_audit_details assert_instance_of OpenEhr::RM::Common::Archetyped::FeederAudit, @feeder_audit end def test_archetyped assert_equal @archetype_id, @archetyped.archetype_id assert_equal '1.0.1', @archetyped.rm_version assert_raise(ArgumentError){@archetyped.archetype_id = nil} assert_raise(ArgumentError){@archetyped.rm_version = nil} assert_raise(ArgumentError){@archetyped.rm_version = ''} assert_nothing_raised(Exception){@archetyped.template_id = @template_id} assert_equal @template_id, @archetyped.template_id archetype_id2 = OpenEhr::RM::Support::Identification::ArchetypeId.new("1.0.2", "biochemistry result_cholesterol", "entry", "ehr_rm", "openehr","cholesterol","0.0.3") assert_nothing_raised(ArgumentError){@archetyped.archetype_id = archetype_id2} assert_equal archetype_id2, @archetyped.archetype_id assert_nothing_raised(ArgumentError){@archetyped.rm_version = '1.0.2'} assert_equal '1.0.2', @archetyped.rm_version end def test_pathable_parent assert_nil @pathable.parent end def test_locatable_archetype_node_id assert_equal 'at0001', @locatable.archetype_node_id end def test_locatable_name assert_equal 'blood', @locatable.name.value end def test_locatable_link assert_equal 'rrip::0.0.5', @locatable.links.to_a[0].value end def test_locatable_name_valid assert_raise(ArgumentError){@locatable.name = nil } end def test_locatable_link_valid assert_raise(ArgumentError){@locatable.links = Set[]} end def test_locatable_archetype_id_not_nil assert_raise(ArgumentError){@locatable.archetype_node_id = nil} end def test_locatable_archetype_id_not_empty assert_raise(ArgumentError){@locatable.archetype_node_id = ''} end def test_link # test constructor assert_equal 'generic', @link.meaning.value assert_equal 'ehr://test/', @link.target.value assert_equal 'problem', @link.type.value # test meaning assert_nothing_raised(Exception){@link.meaning = OpenEhr::RM::DataTypes::Text::DvText.new('clinical')} assert_equal 'clinical', @link.meaning.value assert_raise(ArgumentError){@link.meaning = nil} # test target assert_nothing_raised(Exception){@link.target = OpenEhr::RM::DataTypes::Uri::DvEhrUri.new("ehr://try/")} assert_equal 'ehr://try/', @link.target.value assert_raise(ArgumentError){@link.target = nil} # test type assert_nothing_raised(Exception){@link.type = OpenEhr::RM::DataTypes::Text::DvText.new("issue")} assert_equal 'issue', @link.type.value assert_raise(ArgumentError){@link.type = nil} end def test_feeder_audit assert_equal 'AKAGI', @feeder_audit.originating_system_audit.system_id assert_equal 'RITSUKO', @feeder_audit.originating_system_item_ids[0].issuer assert_equal 'KATSURAGI', @feeder_audit.feeder_system_audit.system_id assert_equal 'MISATO', @feeder_audit.feeder_system_item_ids[0].issuer assert_equal 'UTF-8', @feeder_audit.original_content.charset.code_string end def test_feeder_audit_detail assert_equal 'MAGI', @feeder_audit_details.system_id assert_equal 'NERV', @feeder_audit_details.provider.name assert_equal 'GEOFRONT', @feeder_audit_details.location.name assert_equal 2009, @feeder_audit_details.time.year assert_equal 'local', @feeder_audit_details.subject.external_ref.namespace assert_equal '0.0.4', @feeder_audit_details.version_id end end