experian-data-dictionary 1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +8 -0
  3. data/.pryrc +3 -0
  4. data/.rspec +2 -0
  5. data/.ruby-gemset +1 -0
  6. data/.ruby-version +1 -0
  7. data/Gemfile +12 -0
  8. data/Gemfile.lock +61 -0
  9. data/README.rdoc +43 -0
  10. data/Rakefile +32 -0
  11. data/docs/BCM_Sample_Experian.csv +1 -0
  12. data/docs/DataDictionary_NonProfit_Experian.pdf +0 -0
  13. data/experian_data_dictionary.gemspec +21 -0
  14. data/lib/element_numbers/en_0000.rb +23 -0
  15. data/lib/element_numbers/en_0100.rb +34 -0
  16. data/lib/element_numbers/en_0103.rb +19 -0
  17. data/lib/element_numbers/en_0107.rb +24 -0
  18. data/lib/element_numbers/en_0108.rb +448 -0
  19. data/lib/element_numbers/en_0110.rb +20 -0
  20. data/lib/element_numbers/en_0112.rb +17 -0
  21. data/lib/element_numbers/en_0113.rb +22 -0
  22. data/lib/element_numbers/en_0118.rb +20 -0
  23. data/lib/element_numbers/en_0119.rb +16 -0
  24. data/lib/element_numbers/en_0130.rb +17 -0
  25. data/lib/element_numbers/en_0131.rb +18 -0
  26. data/lib/element_numbers/en_0132.rb +24 -0
  27. data/lib/element_numbers/en_0133.rb +16 -0
  28. data/lib/element_numbers/en_0134.rb +22 -0
  29. data/lib/element_numbers/en_0135.rb +22 -0
  30. data/lib/element_numbers/en_0136.rb +22 -0
  31. data/lib/element_numbers/en_0137.rb +22 -0
  32. data/lib/element_numbers/en_0138.rb +22 -0
  33. data/lib/element_numbers/en_0139.rb +22 -0
  34. data/lib/element_numbers/en_0140.rb +22 -0
  35. data/lib/element_numbers/en_0141.rb +22 -0
  36. data/lib/element_numbers/en_0155.rb +18 -0
  37. data/lib/element_numbers/en_0156.rb +18 -0
  38. data/lib/element_numbers/en_0160.rb +29 -0
  39. data/lib/element_numbers/en_0162.rb +26 -0
  40. data/lib/element_numbers/en_0164.rb +28 -0
  41. data/lib/element_numbers/en_0174.rb +21 -0
  42. data/lib/element_numbers/en_0711.rb +40 -0
  43. data/lib/element_numbers/en_0715.rb +22 -0
  44. data/lib/element_numbers/en_0716.rb +37 -0
  45. data/lib/element_numbers/en_0717.rb +41 -0
  46. data/lib/element_numbers/en_310M.rb +76 -0
  47. data/lib/element_numbers/en_8502.rb +40 -0
  48. data/lib/element_numbers/en_8503.rb +40 -0
  49. data/lib/element_numbers/en_8504.rb +40 -0
  50. data/lib/element_numbers/en_8505.rb +40 -0
  51. data/lib/element_numbers/en_8519.rb +40 -0
  52. data/lib/element_numbers/en_8525.rb +40 -0
  53. data/lib/element_numbers/en_8526.rb +40 -0
  54. data/lib/element_numbers/en_8528.rb +40 -0
  55. data/lib/element_numbers/en_8531.rb +40 -0
  56. data/lib/element_numbers/en_8532.rb +40 -0
  57. data/lib/element_numbers/en_8533.rb +40 -0
  58. data/lib/element_numbers/en_8538.rb +40 -0
  59. data/lib/element_numbers/en_8574.rb +40 -0
  60. data/lib/element_numbers/en_A107.rb +24 -0
  61. data/lib/element_numbers/en_B000.rb +20 -0
  62. data/lib/element_numbers/en_B2185.rb +17 -0
  63. data/lib/element_numbers/en_B3010.rb +17 -0
  64. data/lib/element_numbers/en_B5011.rb +17 -0
  65. data/lib/element_numbers/en_B5013.rb +17 -0
  66. data/lib/element_numbers/en_B5014.rb +17 -0
  67. data/lib/element_numbers/en_B5016.rb +17 -0
  68. data/lib/element_numbers/en_D105N.rb +29 -0
  69. data/lib/element_numbers/en_D200.rb +19 -0
  70. data/lib/element_numbers/en_F031.rb +29 -0
  71. data/lib/element_numbers/en_G2001.rb +15 -0
  72. data/lib/element_numbers/en_G2514.rb +26 -0
  73. data/lib/element_numbers/en_G2516.rb +26 -0
  74. data/lib/element_numbers/en_G2601.rb +14 -0
  75. data/lib/element_numbers/en_G2602.rb +19 -0
  76. data/lib/element_numbers/en_G2603.rb +25 -0
  77. data/lib/element_numbers/en_GE06.rb +28 -0
  78. data/lib/element_numbers/en_L000.rb +29 -0
  79. data/lib/element_numbers/en_P213E.rb +36 -0
  80. data/lib/element_numbers/en_P213H.rb +262 -0
  81. data/lib/element_numbers/en_P213W.rb +35 -0
  82. data/lib/element_numbers/en_P400.rb +47 -0
  83. data/lib/element_numbers/en_T200.rb +20 -0
  84. data/lib/element_numbers/en_V000.rb +18 -0
  85. data/lib/element_numbers/en_Y000.rb +20 -0
  86. data/lib/experian.rb +40 -0
  87. data/spec/functional/en_0000_spec.rb +24 -0
  88. data/spec/functional/en_0100_spec.rb +34 -0
  89. data/spec/functional/en_0103_spec.rb +20 -0
  90. data/spec/functional/en_0107_spec.rb +21 -0
  91. data/spec/functional/en_0108_spec.rb +504 -0
  92. data/spec/functional/en_0110_spec.rb +22 -0
  93. data/spec/functional/en_0112_spec.rb +19 -0
  94. data/spec/functional/en_0113_spec.rb +25 -0
  95. data/spec/functional/en_0118_spec.rb +23 -0
  96. data/spec/functional/en_0119_spec.rb +19 -0
  97. data/spec/functional/en_0130_spec.rb +21 -0
  98. data/spec/functional/en_0131_spec.rb +22 -0
  99. data/spec/functional/en_0132_spec.rb +18 -0
  100. data/spec/functional/en_0133_spec.rb +16 -0
  101. data/spec/functional/en_0134_spec.rb +27 -0
  102. data/spec/functional/en_0135_spec.rb +27 -0
  103. data/spec/functional/en_0136_spec.rb +27 -0
  104. data/spec/functional/en_0137_spec.rb +27 -0
  105. data/spec/functional/en_0138_spec.rb +27 -0
  106. data/spec/functional/en_0139_spec.rb +27 -0
  107. data/spec/functional/en_0140_spec.rb +27 -0
  108. data/spec/functional/en_0141_spec.rb +27 -0
  109. data/spec/functional/en_0155_spec.rb +19 -0
  110. data/spec/functional/en_0156_spec.rb +19 -0
  111. data/spec/functional/en_0160_spec.rb +22 -0
  112. data/spec/functional/en_0162_spec.rb +19 -0
  113. data/spec/functional/en_0164_spec.rb +22 -0
  114. data/spec/functional/en_0174_spec.rb +21 -0
  115. data/spec/functional/en_0711_spec.rb +21 -0
  116. data/spec/functional/en_0715_spec.rb +24 -0
  117. data/spec/functional/en_0716_spec.rb +24 -0
  118. data/spec/functional/en_0717_spec.rb +21 -0
  119. data/spec/functional/en_310M_spec.rb +78 -0
  120. data/spec/functional/en_8502_spec.rb +22 -0
  121. data/spec/functional/en_8503_spec.rb +22 -0
  122. data/spec/functional/en_8504_spec.rb +23 -0
  123. data/spec/functional/en_8505_spec.rb +22 -0
  124. data/spec/functional/en_8519_spec.rb +22 -0
  125. data/spec/functional/en_8525_spec.rb +22 -0
  126. data/spec/functional/en_8526_spec.rb +22 -0
  127. data/spec/functional/en_A107_spec.rb +24 -0
  128. data/spec/functional/en_B2185_spec.rb +18 -0
  129. data/spec/functional/en_B3010_spec.rb +18 -0
  130. data/spec/functional/en_B5011_spec.rb +18 -0
  131. data/spec/functional/en_B5013_spec.rb +18 -0
  132. data/spec/functional/en_B5014_spec.rb +18 -0
  133. data/spec/functional/en_B5016_spec.rb +18 -0
  134. data/spec/functional/en_D105N_spec.rb +30 -0
  135. data/spec/functional/en_D200_spec.rb +21 -0
  136. data/spec/functional/en_F031_spec.rb +25 -0
  137. data/spec/functional/en_G2001_spec.rb +17 -0
  138. data/spec/functional/en_G2514_spec.rb +21 -0
  139. data/spec/functional/en_G2516_spec.rb +21 -0
  140. data/spec/functional/en_G2602_spec.rb +18 -0
  141. data/spec/functional/en_G2603_spec.rb +21 -0
  142. data/spec/functional/en_L000_spec.rb +16 -0
  143. data/spec/functional/en_P213E_spec.rb +19 -0
  144. data/spec/functional/en_P213H_spec.rb +19 -0
  145. data/spec/functional/en_P213W_spec.rb +19 -0
  146. data/spec/functional/en_P400_spec.rb +17 -0
  147. data/spec/functional/en_T200_spec.rb +23 -0
  148. data/spec/functional/en_V000_spec.rb +18 -0
  149. data/spec/functional/en_Y000_spec.rb +20 -0
  150. data/spec/functional/experian_spec.rb +27 -0
  151. data/spec/spec_helper.rb +23 -0
  152. metadata +259 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6a14db34da8f87cbe73a54b96832780f048bf3c5
4
+ data.tar.gz: c0c77765ecaf53e07a680e3b1463112ed4cd1e55
5
+ SHA512:
6
+ metadata.gz: ccfd71cc01539400e655d521174b0d306a14ec308a872284ecf492c1624a74933524dd14407da4789b08ecae707d091c1099c52ac209fd50098e02067963ecf3
7
+ data.tar.gz: 8e67e2b2bb6f52dba20032d7079452533921e945bf80026c6943641b2b0d5f41eb6ed4f30c7494ada40a1125a33d79dc0b58e7e899688087ef75712c05204ce9
data/.gitignore ADDED
@@ -0,0 +1,8 @@
1
+ .bundle
2
+ .DS_Store
3
+ coverage.data
4
+ coverage/*
5
+ log/*
6
+ tmp/*
7
+ vendor/bundle/*
8
+
data/.pryrc ADDED
@@ -0,0 +1,3 @@
1
+ Pry.commands.alias_command 'c', 'continue'
2
+ Pry.commands.alias_command 's', 'step'
3
+ Pry.commands.alias_command 'n', 'next'
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ experian-gem
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ ruby-2.1.2
data/Gemfile ADDED
@@ -0,0 +1,12 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gem 'json'
4
+
5
+ group :development, :test do
6
+ gem 'rake'
7
+ gem 'rspec'
8
+ gem 'pry'
9
+ gem 'pry-nav'
10
+ gem 'simplecov', :require => false
11
+ gem 'coveralls', :require => false
12
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,61 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ coderay (1.1.0)
5
+ coveralls (0.7.8)
6
+ multi_json (~> 1.10)
7
+ rest-client (~> 1.7)
8
+ simplecov (~> 0.9.1)
9
+ term-ansicolor (~> 1.3)
10
+ thor (~> 0.19.1)
11
+ diff-lcs (1.2.5)
12
+ docile (1.1.5)
13
+ json (1.8.2)
14
+ method_source (0.8.2)
15
+ mime-types (2.4.3)
16
+ multi_json (1.10.1)
17
+ netrc (0.10.2)
18
+ pry (0.10.1)
19
+ coderay (~> 1.1.0)
20
+ method_source (~> 0.8.1)
21
+ slop (~> 3.4)
22
+ pry-nav (0.2.4)
23
+ pry (>= 0.9.10, < 0.11.0)
24
+ rake (10.4.2)
25
+ rest-client (1.7.2)
26
+ mime-types (>= 1.16, < 3.0)
27
+ netrc (~> 0.7)
28
+ rspec (3.1.0)
29
+ rspec-core (~> 3.1.0)
30
+ rspec-expectations (~> 3.1.0)
31
+ rspec-mocks (~> 3.1.0)
32
+ rspec-core (3.1.7)
33
+ rspec-support (~> 3.1.0)
34
+ rspec-expectations (3.1.2)
35
+ diff-lcs (>= 1.2.0, < 2.0)
36
+ rspec-support (~> 3.1.0)
37
+ rspec-mocks (3.1.3)
38
+ rspec-support (~> 3.1.0)
39
+ rspec-support (3.1.2)
40
+ simplecov (0.9.1)
41
+ docile (~> 1.1.0)
42
+ multi_json (~> 1.0)
43
+ simplecov-html (~> 0.8.0)
44
+ simplecov-html (0.8.0)
45
+ slop (3.6.0)
46
+ term-ansicolor (1.3.0)
47
+ tins (~> 1.0)
48
+ thor (0.19.1)
49
+ tins (1.3.3)
50
+
51
+ PLATFORMS
52
+ ruby
53
+
54
+ DEPENDENCIES
55
+ coveralls
56
+ json
57
+ pry
58
+ pry-nav
59
+ rake
60
+ rspec
61
+ simplecov
data/README.rdoc ADDED
@@ -0,0 +1,43 @@
1
+ = Experian Data Dictionary
2
+
3
+ This Ruby project is a gem to work with the Experience data dictionary.
4
+
5
+
6
+ == Install / Setup
7
+
8
+ Installing the gem
9
+
10
+ gem install experian-data-dictionary
11
+
12
+
13
+ To add it to your Gemfile
14
+
15
+ gem 'experian-data-dictionary'
16
+
17
+
18
+ == Example usage
19
+
20
+ Checkout the examples folder.
21
+
22
+
23
+ == Additional resources
24
+
25
+ Checkout the docs folder for the PDF.
26
+
27
+
28
+ == License
29
+
30
+ This project is released under the MIT license (see LICENSE).
31
+
32
+ This project is maintained by Blake Campbell (https://github.com/blakecampbells).
33
+
34
+
35
+ == Contributors
36
+
37
+ Wes Hays: https://github.com/weshays
38
+
39
+
40
+ == Want to Contribute?
41
+
42
+ If you would like to get involved in this project, then please fork the project. Make changes, add features, write some tests, and then send a pull request.
43
+
data/Rakefile ADDED
@@ -0,0 +1,32 @@
1
+ require 'rspec/core/rake_task'
2
+
3
+
4
+ desc 'Default: run specs.'
5
+ task :default => :spec
6
+ task :test => :spec
7
+
8
+ desc "Run specs"
9
+ RSpec::Core::RakeTask.new do |t|
10
+ t.pattern = "./spec/**/*_spec.rb" # don't need this, it's default.
11
+ # Put spec opts in a file named .rspec in root
12
+ end
13
+
14
+
15
+ desc "Generate code coverage"
16
+ RSpec::Core::RakeTask.new(:coverage) do |t|
17
+ t.pattern = "./spec/**/*_spec.rb" # don't need this, it's default.
18
+ t.rcov = true
19
+ t.rcov_opts = ['--exclude', 'spec']
20
+ end
21
+
22
+
23
+
24
+ namespace :docs do
25
+
26
+ desc 'Build the docs for the Experian Data Dictionary.'
27
+ task :build do
28
+ system('rm -rf doc')
29
+ system('yardoc --no-private --protected lib/**/*.rb')
30
+ end
31
+
32
+ end
@@ -0,0 +1 @@
1
+ in_first_name, in_last_name, in_seq, in_subseq, Address1, Address2, City, State, ZIP_Code, First_Name, Last_Name,in_cvtseq,in_zip_code,120,0108E,162,0107A,313HH,0100C,717,715,711,716,653,670,671,672,858,860,118,119,131,133,134,134,134,134,134,134,134,134,135,135,135,135,135,135,135,134,136,136,136,136,137,140,139,138,141,141,103,100,130,112,134,135,136,141,3442,3443,GEO6,GEO6,GEO6,0110P,0100C,T2000,T2000,0,0,0,0113A,P400,8502,8503,8504,8505,8519,8525,8526,8528,8531,8532,8533,8538,8574,8502P,8503P,8504P,8505P,8519P,8525P,8526P,8528P,8531P,8532P,8533P,8538P,8574P,5558,GEO6,GEO6,6661,6664,6667,6668,6671,6672,6675,7504,G2514,7522,8200,164,F031,161,14538,14675
2
  Kenneth,Hays,23,0,222 A st, , North Tonawanda, NY,141201622, Kenneth,Hays,23,14120,,Y,11,5S,J36,,,,,,C,235,202,201,,,,26,,,,,,,,,,,,,,,,,,,,,,,,,,,,,M,,,,N,N,N,N,,,2,6,22902,,,4,8882,G,4,4,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,15380,36,63,N,5N,5U,5U,5N,5N,5N,1,4,5,12,0,4,I3,,A
@@ -0,0 +1,21 @@
1
+ Gem::Specification.new do |s|
2
+ PROJECT_GEM = 'experian-data-dictionary'
3
+ PROJECT_GEM_VERSION = '1.0'
4
+
5
+ s.name = PROJECT_GEM
6
+ s.version = PROJECT_GEM_VERSION
7
+ s.platform = Gem::Platform::RUBY
8
+
9
+ s.homepage = 'https://github.com/blakecampbells/experian_data_dictionary'
10
+ s.rubyforge_project = 'Project on www.github.com'
11
+ s.authors = ['Blake Campbell']
12
+ s.email = ['blake93campbell@gmail.com']
13
+
14
+ s.summary = 'Ruby gem/plugin to interact with the Experian.com Data Dictionary'
15
+ s.description = 'Ruby gem/plugin to interact with the Experian.com Data Dictionary. Checkout the project on github for more detail.'
16
+
17
+ s.files = `git ls-files`.split("\n").delete_if { |f| !(f =~ /^examples/).nil? }
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.require_paths = ["lib"]
21
+ end
@@ -0,0 +1,23 @@
1
+ module Experian
2
+ class DataDictionary
3
+
4
+ # Enhancement Mandatory Append
5
+ def self.en_0000_description
6
+ 'The enrichment mandatory append is required when any data from the enrichment master file is appended. It consists of a match type.'
7
+ end
8
+
9
+ def self.en_0000(key)
10
+ values = {
11
+ 'H' => 'Household Match',
12
+ 'F' => 'Household Match',
13
+ 'P' => 'Person Match',
14
+ 'I' => 'Person Match',
15
+ 'G' => 'Geographic or Area Level Match',
16
+ 'E' => 'Geographic or Area Level Match',
17
+ 'N' => 'Non-match'
18
+ }
19
+ key.empty? ? 'Non-match' : values[key]
20
+ end
21
+
22
+ end
23
+ end
@@ -0,0 +1,34 @@
1
+ module Experian
2
+ class DataDictionary
3
+
4
+ # Date of Birth/Combined Adult Age
5
+ def self.en_0100_description
6
+ 'Date of Birth is acquired from public and proprietary files. These sources provide, at a minimum, the year of birth. The birth month is provided where available. Estimated ages are acquired from proprietary data sources and Experian models which estimate the adult age.'
7
+ end
8
+
9
+ def self.en_0100c_description
10
+ self.en_0100_description
11
+ end
12
+
13
+ # CCYYMM
14
+ def self.en_0100(key)
15
+ return nil if key.empty?
16
+ year = key[0..3]
17
+ month = key.length > 4 ? key[4..5] : nil
18
+ [month, year].compact.join('/')
19
+ end
20
+
21
+
22
+ def self.en_0100c(key)
23
+ return nil unless %w(e i u).include?(key[0].downcase) # I noticed another 0100c column that uses M and F which is probably for Male and Female
24
+ text = case key[0].downcase
25
+ when 'e' then 'Exact age'
26
+ when 'i' then 'Estimated age'
27
+ when 'u' then 'Unknown age'
28
+ else nil
29
+ end
30
+ return [key[1..key.length-1], text].compact.join(' - ')
31
+ end
32
+
33
+ end
34
+ end
@@ -0,0 +1,19 @@
1
+ module Experian
2
+ class DataDictionary
3
+
4
+ # Gender Code
5
+ def self.en_0103_description
6
+ 'Gender information is applied during the convert prior to enhancement. Approximately five to eight percent of the client records are coded as gender unknown because of ambiguous or unisex names. Records coded as gender both include those with prefixes of Mr. & Mrs. and/or first names like John & Mary.'
7
+ end
8
+
9
+ def self.en_0103(key)
10
+ values = {
11
+ 'M' => 'Male',
12
+ 'F' => 'Female',
13
+ 'B' => 'Both',
14
+ 'U' => 'Unknown'
15
+ }
16
+ key.empty? ? 'Unknown' : values[key]
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,24 @@
1
+ module Experian
2
+ class DataDictionary
3
+
4
+ # Marital Status
5
+ def self.en_0107a_description
6
+ "Marital status is determined based on the composition of the Living unit or through the application of a predictive model. Note: Single refers to an individual that has never married and not single because of divorce or spouse's death."
7
+ end
8
+
9
+ def self.en_0107a(key)
10
+ likely = {
11
+ '1' => 'Extremely Likely',
12
+ '5' => 'Likely',
13
+ '0' => 'Unknown'
14
+ }
15
+ marital_status = {
16
+ 'M' => 'Married',
17
+ 'S' => 'Single',
18
+ 'U' => 'Unknown Status'
19
+ }
20
+ return 'Unknown' if key.size != 2 or marital_status[key[1]].nil? or likely[key[0]].nil?
21
+ [marital_status[key[1]], likely[key[0]]].join(' - ')
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,448 @@
1
+ module Experian
2
+ class DataDictionary
3
+
4
+ # Country of Origin
5
+ def self.en_0108c_description
6
+ "Indicates Country of Origin using a sophisticated program that analyzes first name, last name, expert system rules and geography."
7
+ end
8
+
9
+ # Ethnicity Detail
10
+ def self.en_0108d_description
11
+ "Indicates the likely ethnicity using a sophisticated program that analyzes first name, last name, expert system rules and geography."
12
+ end
13
+
14
+ def self.en_0108e_description
15
+ "Ethnic Insight Elements. Ethnic Insight is a comprehensive predictive name analysis process which identifies ethnic origin, probable religion, and the language preference of individuals. Experian can now code and identify 177 ethnicities, 33 groups, 10 religions, 79 language groups and 22 Country of Origin codes.The Ethnic Insight software utilizes over 550,000 surnames by ethnicity, over 75,000 first names unique to a given ethnicity, and over 3000 expert system rules. Also utilized are a group of geographic reference tables for determining the proper codes to apply to an individual. Each record passed through the process uses the above files as references while examining the individuals first name, last names, and the zip code of the record. Note: Element 0108E calls elements 0108C, 0108D, 0108G, 0108L, 0108R, 0108T"
16
+ end
17
+
18
+ # Ethnic Group Code
19
+ def self.en_0108g_description
20
+ "Experian derived code that groups ethnicities in general categories."
21
+ end
22
+
23
+ # Language
24
+ def self.en_0108l_description
25
+ "Ethnic Insight Language indicates the language preference."
26
+ end
27
+
28
+ # Religion
29
+ def self.en_0108r_description
30
+ "Ethnic Insights Religion indicates the likely religion."
31
+ end
32
+
33
+ # e-Tech Group
34
+ def self.en_0108t_description
35
+ "e-Tech derived code that groups ethnicities in general categories."
36
+ end
37
+
38
+ def self.en_0108c(key)
39
+ values = {
40
+ '00' => 'Unknown',
41
+ '01' => 'Mexico',
42
+ '02' => 'Cuba',
43
+ '03' => 'Puerto Rico',
44
+ '04' => 'Nicaragua',
45
+ '05' => 'Dominican Republic',
46
+ '06' => 'Colombia',
47
+ '07' => 'Honduras',
48
+ '08' => 'Guatemala',
49
+ '09' => 'El Salvador',
50
+ '10' => 'Costa Rica',
51
+ '11' => 'Panama',
52
+ '12' => 'Ecuador',
53
+ '13' => 'Venezuela',
54
+ '14' => 'Argentina',
55
+ '15' => 'Chile',
56
+ '16' => 'Peru',
57
+ '17' => 'Bolivia',
58
+ '18' => 'Uruguay',
59
+ '19' => 'Paraguay',
60
+ '20' => 'Spain',
61
+ '22' => 'Brazil'
62
+ }
63
+ key.empty? ? 'Unknown' : values[key]
64
+ end
65
+
66
+ def self.en_0108d(key)
67
+ values = {
68
+ '00' => 'Unknown',
69
+ '01' => 'English',
70
+ '02' => 'Scottish',
71
+ '03' => 'Danish',
72
+ '04' => 'Swedish',
73
+ '05' => 'Norwegian',
74
+ '06' => 'Finnish',
75
+ '07' => 'Icelandic',
76
+ '08' => 'Dutch',
77
+ '09' => 'Belgian',
78
+ '10' => 'German',
79
+ '11' => 'Austrian',
80
+ '12' => 'Hungarian',
81
+ '13' => 'Czech',
82
+ '14' => 'Slovak',
83
+ '15' => 'Irish',
84
+ '16' => 'Welsh',
85
+ '17' => 'French',
86
+ '18' => 'Swiss',
87
+ '19' => 'Italian',
88
+ '20' => 'Hispanic',
89
+ '21' => 'Portuguese',
90
+ '22' => 'Polish',
91
+ '23' => 'Estonian',
92
+ '24' => 'Latvian',
93
+ '25' => 'Lithuanian',
94
+ '26' => 'Ukrainian',
95
+ '27' => 'Georgian',
96
+ '28' => 'Byelorussian',
97
+ '29' => 'Armenian',
98
+ '30' => 'Russian',
99
+ '31' => 'Turkish',
100
+ '32' => 'Kurdish',
101
+ '33' => 'Greek',
102
+ '34' => 'Persian',
103
+
104
+ '35' => 'Moldovan',
105
+ '36' => 'Bulgarian',
106
+ '37' => 'Romanian',
107
+ '38' => 'Albanian',
108
+ '39' => 'Native American',
109
+ '40' => 'Slovenian',
110
+ '41' => 'Croatian',
111
+ '42' => 'Serbian',
112
+ '43' => 'Bosniak',
113
+ '44' => 'Azerbaijani',
114
+ '45' => 'Kazakh',
115
+ '46' => 'Afghan',
116
+ '47' => 'Pakistani',
117
+ '48' => 'Bangladeshi',
118
+ '49' => 'Indonesian',
119
+ '50' => 'Indian',
120
+ '51' => 'Burmese (Myanmar)',
121
+ '52' => 'Mongolian',
122
+ '53' => 'Chinese',
123
+ '56' => 'Korean',
124
+ '57' => 'Japanese',
125
+ '58' => 'Thai',
126
+ '59' => 'Malay',
127
+ '60' => 'Laotian',
128
+ '61' => 'Khmer',
129
+ '62' => 'Vietnamese',
130
+ '63' => 'Sri Lankan',
131
+ '64' => 'Uzbek',
132
+ '65' => 'Other Asian',
133
+ '66' => 'Jewish',
134
+ '67' => 'Aleut',
135
+ '68' => 'Hebrew',
136
+ '70' => 'Arab',
137
+ '72' => 'Turkmen',
138
+ '73' => 'Tajik',
139
+ '74' => 'Kirghiz',
140
+ '75' => 'Saudi',
141
+ '76' => 'Iraqi',
142
+ '77' => 'Libyan',
143
+ '78' => 'Egyptian',
144
+ '79' => 'Rwandan',
145
+ '80' => 'Tongan',
146
+ '81' => 'Senegalese',
147
+ '82' => 'Malawian',
148
+ '83' => 'Sudanese',
149
+ '84' => 'Moroccan',
150
+ '85' => 'African American',
151
+ '86' => 'Kenyan',
152
+ '87' => 'Nigerian (Nigeria)',
153
+ '88' => 'Ghanaian',
154
+ '89' => 'Zambian',
155
+ '90' => 'Congolese (DRG)',
156
+ '91' => 'Surinamese',
157
+ '92' => 'Mozambican (Mozambique)',
158
+ '93' => 'Ivorian (Ivory Coast)',
159
+ '94' => 'Bhutanese',
160
+ '95' => 'Ethiopian',
161
+ '96' => 'Ugandan',
162
+ '97' => 'Batswana (Botswana)',
163
+ '98' => 'Cameroonian',
164
+ '99' => 'Zimbabwean',
165
+ '7A' => 'Hindu',
166
+ '7B' => 'Djiboutian',
167
+ '7C' => 'Manx',
168
+ '7D' => 'Telugu',
169
+ '7E' => 'Nepalese',
170
+ '7F' => 'Samoan',
171
+ '7G' => 'Mauritanian',
172
+ '7H' => 'Native American Inuit',
173
+ '8A' => 'Congolese',
174
+ '8B' => 'Central African (Central African Republic)',
175
+ '8C' => 'Togolese',
176
+ '8D' => 'Bahraini',
177
+ '8E' => 'Qatari',
178
+ '8F' => 'Guyanese',
179
+ '8G' => 'Tibetan',
180
+ '8H' => 'Fijian',
181
+ '8I' => 'Swazi',
182
+ '8J' => 'Zulu',
183
+ '8K' => 'Xhosa',
184
+ '8L' => 'Basotho',
185
+ '8M' => 'South African',
186
+ '8N' => 'Liberian',
187
+ '8O' => 'Comoran',
188
+ '8P' => 'Beninese',
189
+ '8Q' => 'Burkinabe (Burkina Faso)',
190
+ '8R' => 'Nigerien (Niger)',
191
+ '8S' => 'Ashanti',
192
+ '8T' => 'Swahili',
193
+ '8U' => 'Haitian',
194
+ '8V' => 'Malian',
195
+ '8W' => 'Jamaican',
196
+ '8X' => 'Hausa',
197
+ '8Y' => 'Pili',
198
+ '9A' => 'Namibian',
199
+ '9B' => 'Burundi',
200
+ '9C' => 'Tanzanian',
201
+ '9D' => 'Gambian',
202
+ '9E' => 'Somali',
203
+ '9F' => 'Macedonian',
204
+ '9G' => 'Chadian',
205
+ '9H' => 'Gabonese',
206
+ '9I' => 'Angolan',
207
+ '9J' => 'Chechen',
208
+ '9K' => 'Igbo',
209
+ '9L' => 'Yoruba',
210
+ '9M' => 'Algerian',
211
+ '9N' => 'Filipino',
212
+ '9O' => 'Sotho (Lesotho)',
213
+ '9P' => 'Tunisian',
214
+ '9Q' => 'Hawaiian',
215
+ '9R' => 'Malagasy (Madagascar)',
216
+ '9S' => 'Basque',
217
+ '9T' => 'Siere Leonean',
218
+ '9U' => 'Kuwaiti',
219
+ '9V' => 'Yemeni',
220
+ '9W' => 'Guinean (Guinea-Bissau)',
221
+ '9X' => 'Papua New Guinean',
222
+ '9Y' => 'Equatorial Guinean',
223
+ '9Z' => 'Syrian',
224
+ 'A1' => 'African American (Arabic Surname), 80%+',
225
+ 'A2' => 'African American (Arabic Surname), 70-79%',
226
+ 'A3' => 'African American (Arabic Surname), 60-69%',
227
+ 'A4' => 'African American (Arabic Surname), 50-59%',
228
+ 'A5' => 'African American (Arabic Surname), 30-49%',
229
+ 'D1' => 'African American (Dutch Surname), 80%+',
230
+ 'D2' => 'African American (Dutch Surname), 70-79%',
231
+ 'D3' => 'African American (Dutch Surname), 60-69%',
232
+ 'D4' => 'African American (Dutch Surname), 50-59%',
233
+ 'D5' => 'African American (Dutch Surname), 30-49%',
234
+ 'E1' => 'African American (English Surname), 80%+',
235
+ 'E2' => 'African American (English Surname), 70-79%',
236
+ 'E3' => 'African American (English Surname), 60-69%',
237
+ 'E4' => 'African American (English Surname), 50-59%',
238
+ 'E5' => 'African American (English Surname), 30-49%',
239
+ 'F1' => 'African American (French Surname), 80%+',
240
+ 'F2' => 'African American (French Surname), 70-79%',
241
+ 'F3' => 'African American (French Surname), 60-69%',
242
+ 'F4' => 'African American (French Surname), 50-59%',
243
+ 'F5' => 'African American (French Surname), 30-49%',
244
+ 'I1' => 'African American (Irish Surname), 80%+',
245
+ 'I2' => 'African American (Irish Surname), 70-79%',
246
+ 'I3' => 'African American (Irish Surname), 60-69%',
247
+ 'I4' => 'African American (Irish Surname), 50-59%',
248
+ 'I5' => 'African American (Irish Surname), 30-49%',
249
+ 'S1' => 'African American (Scotch Surname), 80%+',
250
+ 'S2' => 'African American (Scotch Surname), 70-79%',
251
+ 'S3' => 'African American (Scotch Surname), 60-69%',
252
+ 'S4' => 'African American (Scotch Surname), 50-59%',
253
+ 'S5' => 'African American (Scotch Surname), 30-49%',
254
+ 'U1' => 'African American (Unknown Surname), 80%+',
255
+ 'U2' => 'African American (Unknown Surname), 70-79%',
256
+ 'U3' => 'African American (Unknown Surname), 60-69%',
257
+ 'U4' => 'African American (Unknown Surname), 50-59%',
258
+ 'U5' => 'African American (Unknown Surname), 30-49%',
259
+ 'W1' => 'African American (Welsh Surname), 80%+',
260
+ 'W2' => 'African American (Welsh Surname), 70-79%',
261
+ 'W3' => 'African American (Welsh Surname), 60-69%',
262
+ 'W4' => 'African American (Welsh Surname), 50-59%',
263
+ 'W5' => 'African American (Welsh Surname), 30-49%',
264
+ 'ZZ' => 'Multi-Ethnic'
265
+ }
266
+ key.empty? ? 'Unknown' : values[key]
267
+ end
268
+
269
+ def self.en_0108e(key)
270
+ values = {
271
+ 'Y' => 'Matched to Ethnic Insight'
272
+ }
273
+ key.empty? ? 'Unknown' : values[key]
274
+ end
275
+
276
+ def self.en_0108g(key)
277
+ values = {
278
+ '01' => 'African',
279
+ '02' => 'African American',
280
+ '03' => 'Asian Other',
281
+ '04' => 'Chinese',
282
+ '05' => 'Czech',
283
+ '06' => 'Dutch',
284
+ '07' => 'Eastern European',
285
+ '08' => 'English',
286
+ '09' => 'French',
287
+ '10' => 'German',
288
+ '11' => 'Greek',
289
+ '12' => 'Hawaiian',
290
+ '13' => 'Hispanic',
291
+ '14' => 'Indonesian',
292
+ '15' => 'Irish',
293
+ '16' => 'Italian',
294
+ '17' => 'Japanese',
295
+ '18' => 'Jewish',
296
+ '19' => 'Korean',
297
+ '20' => 'Middle Eastern',
298
+ '21' => 'Miscellaneous Other',
299
+ '22' => 'Native American',
300
+ '23' => 'Polish',
301
+ '24' => 'Polynesian',
302
+ '25' => 'Portuguese',
303
+ '26' => 'Russian',
304
+ '27' => 'Scandinavian',
305
+ '28' => 'Scotch',
306
+ '29' => 'Swiss',
307
+ '30' => 'Ukrainian',
308
+ '31' => 'Uncoded (no group)',
309
+ '32' => 'Vietnamese',
310
+ '33' => 'Western European'
311
+ }
312
+ key.empty? ? 'Unknown' : values[key]
313
+ end
314
+
315
+ def self.en_0108l(key)
316
+ values = {
317
+ '00' => 'Unknown',
318
+ '01' => 'English',
319
+ '03' => 'Danish',
320
+ '04' => 'Swedish',
321
+ '05' => 'Norwegian',
322
+ '06' => 'Finnish',
323
+ '07' => 'Icelandic',
324
+ '08' => 'Dutch',
325
+ '09' => 'Flemish/Walloon',
326
+ '10' => 'German',
327
+ '12' => 'Hungarian',
328
+ '13' => 'Czech',
329
+ '14' => 'Slovak',
330
+ '17' => 'French',
331
+ '19' => 'Italian',
332
+ '20' => 'Spanish',
333
+ '21' => 'Portuguese',
334
+ '22' => 'Polish',
335
+ '23' => 'Estonian',
336
+ '24' => 'Latvian',
337
+ '25' => 'Lithuanian',
338
+ '27' => 'Georgian',
339
+ '29' => 'Armenian',
340
+ '30' => 'Russian',
341
+ '31' => 'Turkish',
342
+ '32' => 'Kurdish',
343
+ '33' => 'Greek',
344
+ '34' => 'Farsi',
345
+ '35' => 'Moldovan',
346
+ '36' => 'Bulgarian',
347
+ '37' => 'Romanian',
348
+ '38' => 'Albanian',
349
+ '40' => 'Slovenian',
350
+ '41' => 'Serbo-Croatian',
351
+ '44' => 'Azeri',
352
+ '45' => 'Kazakh',
353
+ '46' => 'Pashtu/Pashto',
354
+ '47' => 'Urdu',
355
+ '48' => 'Bengali/Bangla',
356
+ '49' => 'Bahasa Indonesia',
357
+ '51' => 'Burmese',
358
+ '52' => 'Mongolian',
359
+ '53' => 'Chinese (Mandarin, Cantonese and other dialects',
360
+ '56' => 'Korean',
361
+ '57' => 'Japanese',
362
+ '58' => 'Thai',
363
+ '59' => 'Bahasa Melayu',
364
+ '60' => 'Lao',
365
+ '61' => 'Khmer',
366
+ '62' => 'Vietnamese',
367
+ '63' => 'Sinhala',
368
+ '64' => 'Uzbek',
369
+ '68' => 'Hebrew',
370
+ '70' => 'Arabic',
371
+ '72' => 'Turkmen',
372
+ '73' => 'Tajik',
373
+ '74' => 'Kirghiz',
374
+ '7A' => 'Hindi',
375
+ '7E' => 'Nepali',
376
+ '7F' => 'Samoan',
377
+ '80' => 'Tongan',
378
+ '86' => 'Oromo',
379
+ '88' => 'Ga',
380
+ '8G' => 'Tibetan',
381
+ '8I' => 'Siswati',
382
+ '8J' => 'Zulu',
383
+ '8K' => 'Xhosa',
384
+ '8M' => 'Afrikaans',
385
+ '8O' => 'Comorian/Shikomoro',
386
+ '8S' => 'Twi (Of Ashanti Ethnicity)',
387
+ '8T' => 'Swahili',
388
+ '8X' => 'Hausa',
389
+ '92' => 'Bantu',
390
+ '94' => 'Dzongkha',
391
+ '95' => 'Amharic',
392
+ '97' => 'Tswana',
393
+ '9E' => 'Somali',
394
+ '9F' => 'Macedonian',
395
+ '9K' => 'Ibo/Igbo',
396
+ '9L' => 'Yoruba',
397
+ '9N' => 'Tagalog',
398
+ '9O' => 'Sotho',
399
+ '9R' => 'Malagasy',
400
+ '9S' => 'Basque'
401
+ }
402
+ key.empty? ? 'Unknown' : values[key]
403
+ end
404
+
405
+ def self.en_0108r(key)
406
+ values = {
407
+ 'B' => 'Buddhist',
408
+ 'C' => 'Catholic',
409
+ 'E' => 'Ethiopian Orthodox',
410
+ 'G' => 'Greek Orthodox',
411
+ 'H' => 'Hindu',
412
+ 'I' => 'Muslim',
413
+ 'J' => 'Jewish',
414
+ 'K' => 'Sikh',
415
+ 'L' => 'Lutheran',
416
+ 'M' => 'Mormon',
417
+ 'O' => 'Eastern Orthodox',
418
+ 'P' => 'Protestant',
419
+ 'S' => 'Shinto',
420
+ 'X' => 'Not Known or Unmatched',
421
+ }
422
+ key.empty? ? 'Unknown' : values[key]
423
+ end
424
+
425
+ def self.en_0108t(key)
426
+ values = {
427
+ 'A' => 'African American',
428
+ 'B' => 'Southeast Asian',
429
+ 'C' => 'South Asian',
430
+ 'D' => 'Central Asian',
431
+ 'E' => 'Mediterranean',
432
+ 'F' => 'Native American',
433
+ 'G' => 'Scandinavian',
434
+ 'H' => 'Polynesian',
435
+ 'I' => 'Middle Eastern',
436
+ 'J' => 'Jewish',
437
+ 'K' => 'Western European',
438
+ 'L' => 'Eastern European',
439
+ 'M' => 'Caribbean Non-Hispanic',
440
+ 'N' => 'East Asian',
441
+ 'O' => 'Hispanic',
442
+ 'Z' => 'Uncoded'
443
+ }
444
+ key.empty? ? 'Unknown' : values[key]
445
+ end
446
+
447
+ end
448
+ end