Module: HCA::Validations
- Defined in:
- lib/hca/validations.rb
Constant Summary collapse
- INVALID_SSN_REGEXES =
[ /^\d{3}-?\d{2}-?0{4}$/, /1{9}|2{9}|3{9}|4{9}|5{9}|6{9}|7{9}|8{9}|9{9}/, /^0{3}-?\d{2}-?\d{4}$/, /^\d{3}-?0{2}-?\d{4}$/ ].freeze
- FUTURE_DISCHARGE_CUTOFF =
(Settings.hca.future_discharge_testing ? 730 : 180).days
Class Method Summary collapse
- .date_of_birth(input_dob) ⇒ Object
- .discharge_date(date_string) ⇒ Object
- .parse_date(date_string) ⇒ Object
- .valid_discharge_date?(date_string) ⇒ Boolean
- .validate_name ⇒ Object
- .validate_ssn(input_ssn) ⇒ Object
- .validate_string(data:, count: nil, nullable: false) ⇒ Object
Class Method Details
.date_of_birth(input_dob) ⇒ Object
37 38 39 40 41 42 |
# File 'lib/hca/validations.rb', line 37 def date_of_birth(input_dob) parsed_dob = parse_date(input_dob) return '' if parsed_dob.blank? || parsed_dob.future? parsed_dob.strftime('%m/%d/%Y') end |
.discharge_date(date_string) ⇒ Object
30 31 32 33 34 35 |
# File 'lib/hca/validations.rb', line 30 def discharge_date(date_string) parsed_date = parse_date(date_string) return '' if parsed_date.blank? parsed_date.strftime('%m/%d/%Y') end |
.parse_date(date_string) ⇒ Object
16 17 18 19 20 |
# File 'lib/hca/validations.rb', line 16 def parse_date(date_string) return nil if !date_string.is_a?(String) || date_string.blank? Date.parse(date_string) end |
.valid_discharge_date?(date_string) ⇒ Boolean
22 23 24 25 26 27 28 |
# File 'lib/hca/validations.rb', line 22 def valid_discharge_date?(date_string) date = parse_date(date_string) return false if date.nil? cutoff = Time.zone.today + FUTURE_DISCHARGE_CUTOFF date <= cutoff end |
.validate_name ⇒ Object
57 58 59 60 61 62 |
# File 'lib/hca/validations.rb', line 57 def validate_name(*, **) formatted_name = validate_string(*, **) return '' if formatted_name.blank? formatted_name.upcase end |
.validate_ssn(input_ssn) ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/hca/validations.rb', line 64 def validate_ssn(input_ssn) return '' unless input_ssn.is_a?(String) validated_ssn = input_ssn.gsub(/\D/, '') return '' if validated_ssn.size != 9 INVALID_SSN_REGEXES.each do |invalid_ssn_regex| return '' if invalid_ssn_regex.match?(validated_ssn) end validated_ssn end |
.validate_string(data:, count: nil, nullable: false) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/hca/validations.rb', line 44 def validate_string(data:, count: nil, nullable: false) blank_data = data.blank? return if nullable && blank_data return '' if blank_data || !data.is_a?(String) validated_string = data.dup validated_string[0] = validated_string[0].capitalize validated_string = validated_string[0, count] unless count.nil? validated_string end |