caruby-tissue 1.3.1 → 1.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. data/History.txt +4 -0
  2. data/README.md +6 -0
  3. data/lib/catissue/annotation/annotation_class.rb +1 -1
  4. data/lib/catissue/cli/migrate.rb +1 -0
  5. data/lib/catissue/domain/container.rb +13 -8
  6. data/lib/catissue/domain/specimen.rb +9 -3
  7. data/lib/catissue/domain/specimen_event_parameters.rb +1 -8
  8. data/lib/catissue/domain/specimen_requirement.rb +1 -1
  9. data/lib/catissue/domain/storage_container.rb +4 -3
  10. data/lib/catissue/domain/uniquify.rb +82 -0
  11. data/lib/catissue/migration/migrator.rb +15 -7
  12. data/lib/catissue/migration/uniquify.rb +2 -111
  13. data/lib/catissue/util/position.rb +14 -2
  14. data/lib/catissue/version.rb +1 -1
  15. data/test/fixtures/catissue/domain/conf/catissue_override.yaml +9 -0
  16. data/test/fixtures/catissue/extract/conf/scg_extract.yaml +3 -0
  17. data/test/fixtures/catissue/extract/conf/scg_fields.yaml +3 -0
  18. data/test/fixtures/catissue/extract/conf/spc_extract.yaml +3 -0
  19. data/test/fixtures/catissue/extract/conf/spc_fields.yaml +4 -0
  20. data/test/fixtures/lib/catissue/defaults_test_fixture.rb +202 -0
  21. data/test/lib/catissue/database/controlled_values_test.rb +47 -0
  22. data/test/lib/catissue/database/database_test.rb +28 -0
  23. data/test/lib/catissue/domain/address_test.rb +53 -0
  24. data/test/lib/catissue/domain/base_haemotology_pathology_test.rb +25 -0
  25. data/test/lib/catissue/domain/ca_tissue_test_defaults_test.rb +27 -0
  26. data/test/lib/catissue/domain/capacity_test.rb +12 -0
  27. data/test/lib/catissue/domain/collection_event_parameters_test.rb +24 -0
  28. data/test/lib/catissue/domain/collection_protocol_event_test.rb +25 -0
  29. data/test/lib/catissue/domain/collection_protocol_registration_test.rb +71 -0
  30. data/test/lib/catissue/domain/collection_protocol_test.rb +69 -0
  31. data/test/lib/catissue/domain/container_position_test.rb +29 -0
  32. data/test/lib/catissue/domain/department_test.rb +21 -0
  33. data/test/lib/catissue/domain/disposal_event_parameters_test.rb +16 -0
  34. data/test/lib/catissue/domain/location_test.rb +38 -0
  35. data/test/lib/catissue/domain/metadata_test.rb +62 -0
  36. data/test/lib/catissue/domain/participant_medical_identifier_test.rb +26 -0
  37. data/test/lib/catissue/domain/participant_test.rb +96 -0
  38. data/test/lib/catissue/domain/site_test.rb +30 -0
  39. data/test/lib/catissue/domain/specimen_array_test.rb +38 -0
  40. data/test/lib/catissue/domain/specimen_array_type_test.rb +27 -0
  41. data/test/lib/catissue/domain/specimen_characteristics_test.rb +15 -0
  42. data/test/lib/catissue/domain/specimen_collection_group_test.rb +216 -0
  43. data/test/lib/catissue/domain/specimen_event_parameters_test.rb +61 -0
  44. data/test/lib/catissue/domain/specimen_position_test.rb +62 -0
  45. data/test/lib/catissue/domain/specimen_requirement_test.rb +61 -0
  46. data/test/lib/catissue/domain/specimen_test.rb +272 -0
  47. data/test/lib/catissue/domain/storage_container_test.rb +150 -0
  48. data/test/lib/catissue/domain/storage_type_test.rb +70 -0
  49. data/test/lib/catissue/domain/transfer_event_parameters_test.rb +38 -0
  50. data/test/lib/catissue/domain/user_test.rb +50 -0
  51. data/test/lib/catissue/extract/delta_test.rb +25 -0
  52. data/test/lib/catissue/extract/extractor_test.rb +43 -0
  53. data/test/lib/catissue/import/importable_module_test.rb +14 -0
  54. data/test/lib/catissue/migration/test_case.rb +103 -0
  55. data/test/lib/catissue/test_case.rb +225 -0
  56. data/test/lib/examples/galena/domain/examples_test.rb +70 -0
  57. data/test/lib/examples/galena/migration/catissue.log +0 -0
  58. data/test/lib/examples/galena/migration/filter_test.rb +26 -0
  59. data/test/lib/examples/galena/migration/frozen_test.rb +28 -0
  60. data/test/lib/examples/galena/migration/general_test.rb +44 -0
  61. data/test/lib/examples/galena/migration/simple_test.rb +29 -0
  62. data/test/lib/examples/galena/migration/test_case.rb +52 -0
  63. data/test/lib/examples/galena/migration/uniquify.rb +93 -0
  64. metadata +223 -184
@@ -0,0 +1,25 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'test_case')
2
+ require 'test/fixtures/lib/catissue/defaults_test_fixture'
3
+
4
+ class CollectionProtocolEventTest < Test::Unit::TestCase
5
+ include CaTissue::TestCase
6
+
7
+ def setup
8
+ super
9
+ @evt = defaults.specimen_collection_group.collection_event
10
+ end
11
+
12
+ def test_defaults
13
+ @evt.protocol.identifier = 1
14
+ verify_defaults(@evt)
15
+ end
16
+
17
+ def test_protocol_membership
18
+ assert(@evt.protocol.collection_protocol_events.include?(@evt), "Event not a member of its protcol events collection")
19
+ end
20
+
21
+ # Tests creating a protocol event.
22
+ def test_save
23
+ verify_save(@evt)
24
+ end
25
+ end
@@ -0,0 +1,71 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'test_case')
2
+ require 'test/fixtures/lib/catissue/defaults_test_fixture'
3
+
4
+ class CollectionProtocolRegistrationTest < Test::Unit::TestCase
5
+ include CaTissue::TestCase
6
+
7
+ def setup
8
+ super
9
+ @reg = defaults.registration
10
+ end
11
+
12
+ def test_defaults
13
+ verify_defaults(@reg)
14
+ end
15
+
16
+ def test_missing_ppi_defaults
17
+ @reg.protocol_participant_identifier = nil
18
+ verify_defaults(@reg)
19
+ end
20
+
21
+ def test_inverse_protocol
22
+ assert(@reg.protocol.registrations.include?(@reg), "Registration not included in protocol registrations")
23
+ end
24
+
25
+ # Tests whether the registration date can be set to either a Ruby or a Java Date and always return a Ruby Date.
26
+ def test_registration_date
27
+ value = DateTime.now
28
+ @reg.registration_date = value
29
+ assert_equal(value.to_s, @reg.registration_date.to_s, "Registration date incorrect")
30
+ end
31
+
32
+ def test_numeric_identifier
33
+ @reg.protocol_participant_identifier = 1
34
+ assert_equal("1", @reg.protocol_participant_identifier)
35
+ end
36
+
37
+ def test_disable
38
+ # add a derived specimen
39
+ specimen = @reg.specimens.first
40
+ child = specimen.derive(:specimen_class => :molecular, :specimen_requirement => defaults.specimen_requirement)
41
+ attributes = [:specimen_collection_groups, :specimens, :child_specimens]
42
+ @reg.visit_path(attributes) { |obj| obj.activity_status = 'Disabled' }
43
+ assert_equal('Disabled', @reg.activity_status, "Registration not disabled")
44
+ @reg.specimen_collection_groups.each { |scg| assert_equal('Disabled', scg.activity_status, "SCG #{scg} not disabled") }
45
+ @reg.specimens.each { |spc| assert_equal('Disabled', spc.activity_status, "Specimen #{spc} not disabled") }
46
+ assert_equal('Disabled', child.activity_status, "Child Specimen #{child} not disabled")
47
+ end
48
+
49
+ # Tests creating and fetching a registration.
50
+ def test_save
51
+ # store the registration without an SCG
52
+ @reg.specimen_collection_groups.clear
53
+ verify_save(@reg)
54
+
55
+ # an SCG should be auto-generated
56
+ scg = @reg.specimen_collection_groups.first
57
+ assert_not_nil(scg, "Missing auto-generated SCG")
58
+ # the SCG status is pending
59
+ assert_equal('Pending', scg.collection_status, "Auto-generated SCG collection status incorrect")
60
+
61
+ # modify the consent status and update
62
+ rsps = @reg.consent_tier_responses
63
+ assert_equal(1, rsps.size, "Consent tier responses size incorrect")
64
+ rsp = rsps.first
65
+ rsp.response = 'No'
66
+ # clear the CPR SCGs since CPR response change propagates to SCG consent status on create,
67
+ # which results in a test validation mismatch
68
+ @reg.specimen_collection_groups.clear
69
+ verify_save(@reg)
70
+ end
71
+ end
@@ -0,0 +1,69 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'test_case')
2
+ require 'test/fixtures/lib/catissue/defaults_test_fixture'
3
+
4
+ class CollectionProtocolTest < Test::Unit::TestCase
5
+ include CaTissue::TestCase
6
+
7
+ def setup
8
+ super
9
+ @pcl = defaults.protocol
10
+ end
11
+
12
+ def test_defaults
13
+ verify_defaults(@pcl)
14
+ end
15
+
16
+ # Tests the hash override.
17
+ def test_hash
18
+ hash = @pcl.hash
19
+ map = {@pcl => true}
20
+ @pcl.identifier = 1
21
+ assert_equal(hash, @pcl.hash, "Protocol identifier assignment changed hash")
22
+ assert(map[@pcl], "Protocol hash key inoperative")
23
+ end
24
+
25
+ def test_alias
26
+ assert(CaTissue::CollectionProtocol.method_defined?(:events), "Study alias not recogized: events")
27
+ end
28
+
29
+ # Tests the work-around for caTissue bug - CollectionProtocol and CollectionProtocolEvent are equal in caTissue 1.1.
30
+ def test_equals
31
+ assert_not_equal(@pcl, CaTissue::CollectionProtocolEvent.new, "Protocol incorrectly equals a CollectionProtocolEvent")
32
+ end
33
+
34
+ # Tests whether the child_collection_protocols domain type is inferred from the Java parameterized generic type property.
35
+ def test_assigned_protocol_users_type
36
+ assert_equal(CaTissue::User, @pcl.class.domain_type(:assigned_protocol_users), "assigned_protocol_users domain type incorrect")
37
+ end
38
+
39
+ def test_add_specimens
40
+ spc1 = CaTissue::TissueSpecimen.new
41
+ spc2 = CaTissue::TissueSpecimen.new
42
+ pnt = CaTissue::Participant.new(:name => 'Test Participant')
43
+ rcvr = CaTissue::User.new(:login_name => 'test_coordinator@example.edu')
44
+ site = CaTissue::Site.new(:name => 'Test Site')
45
+ scg = @pcl.add_specimens(spc1, spc2, :participant => pnt, :receiver => rcvr, :collection_site => site)
46
+ assert_equal(2, scg.size, "Specimen group size incorrect")
47
+ assert_equal(2, scg.specimen_event_parameters.size, "Specimen event parameters size incorrect")
48
+ assert_not_nil(scg.registration, "Specimen not registered")
49
+ assert_equal(2, @pcl.specimens(pnt).size, "Protocol specimens size incorrect")
50
+ assert(@pcl.specimens(pnt).include?(spc1), 'Specimen not found')
51
+ assert(@pcl.specimens(pnt).include?(spc2), 'Specimen not found')
52
+ end
53
+
54
+ # Verify the events.
55
+ def test_events
56
+ event = @pcl.events.first
57
+ assert_not_nil(event, "Protocol test default has no events")
58
+ event_cnt = @pcl.events.size
59
+ @pcl.events << event
60
+ assert_equal(event_cnt, @pcl.events.size, "Protocol events has duplicate event")
61
+ end
62
+
63
+ def test_save
64
+ # ignore registrations
65
+ @pcl.collection_protocol_registrations.clear
66
+ # create the protocol
67
+ verify_save(@pcl)
68
+ end
69
+ end
@@ -0,0 +1,29 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'test_case')
2
+ require 'test/fixtures/lib/catissue/defaults_test_fixture'
3
+
4
+ class SpecimenPositionTest < Test::Unit::TestCase
5
+ include CaTissue::TestCase
6
+
7
+ def setup
8
+ super
9
+ site = defaults.tissue_bank
10
+ frz_type = CaTissue::StorageType.new(:name => 'Freezer'.uniquify, :columns => 2, :rows => 1)
11
+ rack_type = CaTissue::StorageType.new(:name => 'Rack'.uniquify, :columns => 1, :rows => 2)
12
+ frz_type << rack_type
13
+ freezer = CaTissue::StorageContainer.new(:site => site, :container_type => frz_type)
14
+ rack = CaTissue::StorageContainer.new(:site => site, :container_type => rack_type)
15
+ @pos = CaTissue::ContainerPosition.new(:holder => freezer, :occupant => rack, :column => 0, :row => 0)
16
+ end
17
+
18
+ def test_defaults
19
+ verify_defaults(@pos)
20
+ end
21
+
22
+ def test_inverse_setter
23
+ assert_same(@pos, @pos.occupant.position, "Container position not set")
24
+ end
25
+
26
+ def test_save
27
+ verify_save(@pos)
28
+ end
29
+ end
@@ -0,0 +1,21 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'test_case')
2
+ require 'caruby/util/uniquifier'
3
+
4
+ class CaTissueDepartmentTest < Test::Unit::TestCase
5
+ include CaTissue::TestCase
6
+
7
+ attr_reader :department
8
+
9
+ def setup
10
+ super
11
+ @department = CaTissue::Department.new(:name => 'Test Department'.uniquify)
12
+ end
13
+
14
+ def test_defaults
15
+ verify_defaults(department)
16
+ end
17
+
18
+ def test_save
19
+ verify_save(department)
20
+ end
21
+ end
@@ -0,0 +1,16 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'test_case')
2
+ require 'catissue/defaults_test_fixture'
3
+
4
+ class DisposalEventParametersTest < Test::Unit::TestCase
5
+ include CaTissue::TestCase
6
+
7
+ def setup
8
+ super
9
+ specimen = defaults.specimen
10
+ @dsp = CaTissue::DisposalEventParameters.new(:specimen => specimen, :user => specimen.specimen_collection_group.receiver, :reason => 'Test')
11
+ end
12
+
13
+ def test_save
14
+ verify_save(@dsp)
15
+ end
16
+ end
@@ -0,0 +1,38 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'test_case')
2
+ require 'test/fixtures/lib/catissue/defaults_test_fixture'
3
+
4
+ class LocationTest < Test::Unit::TestCase
5
+ include CaTissue::TestCase
6
+
7
+ def setup
8
+ super
9
+ ctr = defaults.box
10
+ ctr.capacity.columns = 1
11
+ ctr.capacity.rows = 2
12
+ @loc = CaTissue::Location.new(:in => ctr, :at => [0, 0])
13
+ end
14
+
15
+ def test_equals
16
+ other = CaTissue::Location.new(:in => @loc.container, :at => [@loc.column, @loc.row])
17
+ assert_equal(@loc, other, "Location with equal content not equal")
18
+ end
19
+
20
+ def test_successor
21
+ successor = @loc.succ
22
+ assert_not_nil(successor, "Successor location not created")
23
+ assert_not_same(@loc, successor, "Location same as successor")
24
+ assert_same(@loc.container, successor.container, "Location container differs from successor container")
25
+ assert_not_nil(successor.row, "Successor row not set")
26
+ assert_not_nil(successor.column, "Successor column not set")
27
+ assert_equal(0, successor.row, "Successor row incorrect")
28
+ assert_equal(1, successor.column, "Successor column incorrect")
29
+ assert_nil(successor.succ, "Location out of bounds")
30
+ end
31
+
32
+ def test_successor_bang
33
+ assert_same(@loc, @loc.succ!, "Location differs from successor bang")
34
+ assert_equal(0, @loc.column, "Successor row incorrect")
35
+ assert_equal(1, @loc.row, "Successor column incorrect")
36
+ assert_raises(IndexError, "Location out of bounds") { @loc.succ! }
37
+ end
38
+ end
@@ -0,0 +1,62 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'test_case')
2
+ require 'caruby/util/uniquifier'
3
+
4
+ class MetadataTest < Test::Unit::TestCase
5
+ include CaTissue::TestCase
6
+
7
+ OVERRIDE_CONFIG_FILE = 'test/fixtures/catissue/domain/conf/catissue_override.yaml'
8
+
9
+ def setup
10
+ super
11
+ @metadata = CaTissue::CollectionProtocol.metadata
12
+ end
13
+
14
+ def test_domain_attribute
15
+ assert(!@metadata.domain_attribute?(:title), 'String attribute considered domain attribute')
16
+ assert(@metadata.domain_attribute?(:collection_protocol_events), 'Domain collection attribute not recognized')
17
+ end
18
+
19
+ def test_collection_attribute
20
+ assert(!@metadata.collection_attribute?(:principal_investigator), 'Atomic attribute considered a collection')
21
+ assert(@metadata.collection_attribute?(:collection_protocol_events), 'Domain collection attribute not recognized as collection')
22
+ end
23
+
24
+ def test_invalid_attribute
25
+ assert(!@metadata.attributes.include?(:parent_collection_protocol), 'Attribute marked as invalid recognized')
26
+ end
27
+
28
+ def test_secondary_key
29
+ assert(!@metadata.secondary_key_attributes.empty?, 'Secondary key not set')
30
+ assert_equal([:short_title], @metadata.secondary_key_attributes.to_a, 'Secondary key incorrect')
31
+ end
32
+
33
+ def test_mandatory_attributes
34
+ assert(@metadata.mandatory_attributes.include?(:short_title), 'Secondary key not in required key')
35
+ assert(@metadata.mandatory_attributes.include?(:start_date), 'Required attribute not found')
36
+ end
37
+
38
+ # TODO - enable config override and retest.
39
+
40
+ def test_secondary_key_override
41
+ # save the standard properties
42
+ properties = CaTissue.access_properties.copy_recursive
43
+ # load the override properties
44
+ CaTissue.load_access_properties(OVERRIDE_CONFIG_FILE)
45
+ @metadata = CaRuby::Metadata.new(CaTissue::CollectionProtocol)
46
+ assert_equal([:title], @metadata.secondary_key_attributes, 'Secondary key not overridden')
47
+ # restore the standard properties
48
+ CaTissue.access_properties.keys.each { |key| CaTissue.access_properties[key] = properties[key] }
49
+ end
50
+
51
+ def test_mandatory_attributes_override
52
+ # save the standard properties
53
+ properties = CaTissue.access_properties.copy_recursive
54
+ # load the override properties
55
+ CaTissue.load_access_properties(OVERRIDE_CONFIG_FILE)
56
+ @metadata = CaRuby::Metadata.new(CaTissue::CollectionProtocol)
57
+ assert(@metadata.mandatory_attributes.include?(:sequence_number), 'Required attribute override not added')
58
+ assert(!@metadata.mandatory_attributes.include?(:start_date), 'Required attribute retained after override')
59
+ # restore the standard properties
60
+ CaTissue.access_properties.keys.each { |key| CaTissue.access_properties[key] = properties[key] }
61
+ end
62
+ end
@@ -0,0 +1,26 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'test_case')
2
+
3
+ class ParticipantMedicalIdentifierTest < Test::Unit::TestCase
4
+ include CaTissue::TestCase
5
+
6
+ def setup
7
+ super
8
+ @pmi = CaTissue::ParticipantMedicalIdentifier.new
9
+ end
10
+
11
+ def test_i_to_s_conversion
12
+ @pmi.medical_record_number = 2
13
+ assert_equal('2', @pmi.medical_record_number, "MRN numeric argument not converted to string")
14
+ end
15
+
16
+ # Tests creating and fetching a participant.
17
+ def test_save
18
+ @pmi.medical_record_number = Uniquifier.qualifier
19
+ @pmi.site = defaults.tissue_bank
20
+ @pmi.participant = CaTissue::Participant.new(:name => 'Test Participant'.uniquify)
21
+ verify_save(@pmi)
22
+ # update the PMI
23
+ @pmi.medical_record_number = Uniquifier.qualifier
24
+ verify_save(@pmi)
25
+ end
26
+ end
@@ -0,0 +1,96 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'test_case')
2
+ require 'caruby/util/uniquifier'
3
+
4
+ class ParticipantTest < Test::Unit::TestCase
5
+ include CaTissue::TestCase
6
+
7
+ def setup
8
+ super
9
+ @pnt = CaTissue::Participant.new(:name => 'Test Participant'.uniquify)
10
+ end
11
+
12
+ def test_defaults
13
+ verify_defaults(@pnt)
14
+ end
15
+
16
+ # Tests parsing the patient name.
17
+ def test_name
18
+ @pnt.name = 'John Q. Doe'
19
+ assert_equal('John', @pnt.first_name, 'Person first name incorrect')
20
+ assert_equal('Q.', @pnt.middle_name, 'Person middle name incorrect')
21
+ assert_equal('Doe', @pnt.last_name, 'Person last name incorrect')
22
+ end
23
+
24
+ # Tests the participant SSN secondary key and MRN alternate key.
25
+ def test_key
26
+ mrn = '5555'
27
+ pmi = @pnt.add_mrn(defaults.tissue_bank, '5555')
28
+ assert_equal(pmi, @pnt.key, 'Person key is not the MRN')
29
+ # add the preferred SSN key
30
+ expected = @pnt.social_security_number = '555-55-5555'
31
+ assert_equal(expected, @pnt.key, 'Person key is not the SSN')
32
+ end
33
+
34
+ # Tests making a participant lab annotation.
35
+ def test_clinical_annotation
36
+ labs = @pnt.lab_annotations
37
+ assert(labs.empty?, "Labs not empty at start")
38
+ lab = CaTissue::Participant::Clinical::LabAnnotation.new.merge_attributes(:lab_test_name => 'Test Lab', :participant => @pnt)
39
+ labs = @pnt.lab_annotations
40
+ assert_not_nil(labs.first, "Lab not added to participant labs")
41
+ assert_same(lab, labs.first, "Lab incorrect")
42
+ assert_same(@pnt, lab.owner, "Lab proxy hook not set")
43
+ end
44
+
45
+ # Tests creating and fetching a participant.
46
+ def test_save
47
+ verify_save(@pnt)
48
+ end
49
+
50
+ def test_save_alcohol_annotation
51
+ alc = CaTissue::Participant::Clinical::AlcoholHealthAnnotation.new.merge_attributes(:drinks_per_week => 4, :years_agent_free => 2, :participant => @pnt)
52
+ verify_save(alc)
53
+ end
54
+
55
+ # Tests saving a participant lab annotation.
56
+ def test_save_lab_annotation
57
+ date = DateTime.new(2010, 10, 10)
58
+ lab = CaTissue::Participant::Clinical::LabAnnotation.new.merge_attributes(:other_lab_test_name => 'Test Lab', :test_date => date, :participant => @pnt)
59
+ verify_save(lab)
60
+ assert_not_nil(lab.identifier, "Lab not saved")
61
+ end
62
+
63
+ def test_save_diagnosis_annotation
64
+ date = DateTime.new(2010, 10, 10)
65
+ dgn = CaTissue::Participant::Clinical::NewDiagnosisHealthAnnotation.new.merge_attributes(
66
+ :name_of_procedure => 'Biopsy of prostate', :date_of_examination => date, :participant => @pnt)
67
+ verify_save(dgn)
68
+ end
69
+
70
+ def test_save_treatment_annotation
71
+ date = DateTime.new(2010, 10, 10)
72
+ trt = CaTissue::Participant::Clinical::TreatmentAnnotation.new.merge_attributes(:other_agent => 'Radical Prostatectomy', :participant => @pnt)
73
+ dtn = CaTissue::Participant::Clinical::Duration.new.merge_attributes(:start_date => date, :end_date => date, :duration_in_days => 1, :treatment_annotation => trt)
74
+ verify_save(trt)
75
+ end
76
+
77
+ # caTissue alert - The RadiationTherapy DE class is not supported, since it is not a primary entity. RadRXAnnotation is used instead.
78
+ # Purpose of the caTissue RadiationTherapy class is unknown, since it adds nothing to RadRXAnnotation. The same consideration applies
79
+ # to Chemotherapy. TODO - check with caTissue support and either request deprecation or add caRuby support.
80
+ def test_save_radiation_annotation
81
+ rdx = CaTissue::Participant::Clinical::RadRXAnnotation.new.merge_attributes(:other_agent => 'Adjuvant Radiation Therapy', :participant => @pnt)
82
+ verify_save(rdx)
83
+ end
84
+
85
+ def test_save_exam_annotation
86
+ exam = CaTissue::Participant::Clinical::HealthExaminationAnnotation.new.merge_attributes(
87
+ :name_of_procedure => 'Prostatectomy', :participant => @pnt)
88
+ verify_save(exam)
89
+ end
90
+
91
+ def test_save_recurrence_exam_annotation
92
+ exam = CaTissue::Participant::Clinical::LocalRecurrenceHealthExaminationAnnotation.new.merge_attributes(
93
+ :name_of_procedure => 'Prostatectomy', :clinical_diagnosis => 'Malignant melanoma - NOS', :participant => @pnt)
94
+ verify_save(exam)
95
+ end
96
+ end