Module: StudySubjectPii

Included in:
StudySubject
Defined in:
app/models/study_subject_pii.rb

Overview

Simply extracted some code to clean up model. I’d like to do this to all of the really big classes but let’s see how this goes first.

Class Method Summary collapse

Class Method Details

.included(base) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'app/models/study_subject_pii.rb', line 7

def self.included(base)
#	Must delay the calls to these ActiveRecord methods
#	or it will raise many "undefined method"s.
base.class_eval do

	#	TODO include maiden_name just in case is mother???
	def childs_names
		[first_name, middle_name, last_name ]
	end

	#	Returns string containing study_subject's first, middle and last initials
	def initials
		childs_names.delete_if(&:blank?).collect{|s|s.chars.first}.join()
	end

	#	Returns string containing study_subject's first, middle and last name
	#	Use delete_if(&:blank?) instead of compact, which only removes nils.
	def full_name
		fullname = childs_names.delete_if(&:blank?).join(' ')
		( fullname.blank? ) ? '[name not available]' : fullname
	end

	def fathers_names
		[father_first_name, father_middle_name, father_last_name ]
	end

	#	Returns string containing study_subject's father's first, middle and last name
	def fathers_name
		fathersname = fathers_names.delete_if(&:blank?).join(' ')
		( fathersname.blank? ) ? '[name not available]' : fathersname
	end

	def mothers_names
		[mother_first_name, mother_middle_name, mother_last_name ]
	end

	#	Returns string containing study_subject's mother's first, middle and last name
	#	TODO what? no maiden name?
	def mothers_name
		mothersname = mothers_names.delete_if(&:blank?).join(' ')
		( mothersname.blank? ) ? '[name not available]' : mothersname
	end

	def guardians_names
		[guardian_first_name, guardian_middle_name, guardian_last_name ]
	end

	#	Returns string containing study_subject's guardian's first, middle and last name
	def guardians_name
		guardiansname = guardians_names.delete_if(&:blank?).join(' ')
		( guardiansname.blank? ) ? '[name not available]' : guardiansname
	end

#
#	TODO I hate this.  It is revolting.  More?  Yes, please.
#
	#	I don't know if I still need this
	#	commented out 20101014
	#	uncommented 20101014
	def dob	#	overwrite default dob method for formatting
		#	added to_date to fix sqlite3 quirk which doesn't	(why am I using sqlite3?)  old comment?
		#	differentiate between times and dates.
		read_attribute(:dob).try(:to_s,:dob).try(:to_date)
	end

end	#	class_eval
end