Skip to content

Commit

Permalink
Add support for graduating undergraduate dual majors
Browse files Browse the repository at this point in the history
The undergraduate college and business school have launched a dual
major program that allows students to complete both a liberal arts
and a business undergraduate degree.

**ISSUE**
Emory would like these student to list themselves as being part of
the "Emory College" program, but the Registrar is showing their
graduation record associated with the "Undergraduate Business" school.

This means the application expects to find a graudation record like
`PPIDxxx-UCOL-BBA`, but the Registrar data provides `PPIDxxx-UBUS-BBA`.

There are other students graduating in "UCOL" programs, so we can't
just change the mapping; we have to add an additional check for this
specific case.

**SOLUTION**
This commit adds a secondary check when-and-only-when the student
has entered "Emory College" and a "B.B.A" degree that also scans
Registrar data for the same student and degree within the "Undergraduate
Business" program.
  • Loading branch information
mark-dce committed Jul 14, 2022
1 parent f20fd8f commit a9b3366
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 8 deletions.
5 changes: 3 additions & 2 deletions app/services/graduation_service.rb
Original file line number Diff line number Diff line change
Expand Up @@ -65,16 +65,17 @@ def confirm_registrar_status(candidate_etds)

# Search registrar data for a student record with matching PPID, School, and Degree
# @param [Hash] etd_solr_doc - Solr doc hash for corresponding ETD record
# @return [String, Hash]
# @return Array[Time, Hash{String->String}]
# grad_date - ISO formatted date if the student has graduated;
# grad_record - the corresponding registrar record
def find_registrar_match(etd_solr_doc)
ppid = etd_solr_doc['depositor_ssim']&.first
school = SCHOOL_MAP[etd_solr_doc['school_tesim']&.first]
degree = DEGREE_MAP[etd_solr_doc['degree_tesim']&.first]
registrar_index = "#{ppid}-#{school}-#{degree}"
dual_major_index = "#{ppid}-UBUS-BBA" if school=='UCOL' && degree=='BBA'

grad_record = @registrar_data[registrar_index] || { 'degree status descr' => 'Unmatched' }
grad_record = @registrar_data[registrar_index] || @registrar_data[dual_major_index] || { 'degree status descr' => 'Unmatched' }
grad_date = extract_date(grad_record)
log_registrar_match(etd_solr_doc, registrar_index, grad_record, grad_date)
[grad_date, grad_record]
Expand Down
13 changes: 7 additions & 6 deletions spec/fixtures/registrar_sample.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
{"P0000001-GSAS-PHD":{"etd record key":"P0000001-GSAS-PHD","public person id":"P0000001","directory last name":"Doe","directory first name":"John","directory middle name":" ","preferred email address":"jdoe@example.com","home address 1":"123 Fake St","home address 2":" ","home address 3":" ","home address city":"Atlanta","home address state":"GA","home address postal code":"30301","home address country code":"USA","home address country descr":"United States","ferpa suppression flag":"N","acad career code":"GSAS","acad career descr":"School of Graduate Studies","acad program code":"PHD","acad program descr":"Doctor of Philosophy","primary acad plan code":"BBSPHD","primary acad plan descr":"Biological and Biomedical Sci.","program status descr":"AC"},
"P0000002-UCOL-LIBAS":{"etd record key":"P0000002-UCOL-LIBAS","public person id":"P0000002","directory last name":"Smith","directory first name":"Jane","directory middle name":"Cinderlla","preferred email address":"jsmith@example.com","home address 1":"321 Ash Way","home address 2":" ","home address 3":" ","home address city":"Atlanta","home address state":"GA","home address postal code":"30301","home address country code":"USA","home address country descr":"United States","ferpa suppression flag":"N","acad career code":"UCOL","acad career descr":"Undergraduate Emory College","acad program code":"LIBAS","acad program descr":"Liberal Arts & Sciences","primary acad plan code":"POLISCIBA","primary acad plan descr":"Political Science","secondary acad plan code":"LACSND","secondary acad plan descr":"Latin Amer. & Caribbean Stu.","program status descr":"AC","degree code":"BS","degree status descr":"Awarded","degree status date":"2017-05-18"},
"P0000003-UCOL-LIBAS":{"etd record key":"P0000003-UCOL-LIBAS","public person id":"P0000003","directory last name":"Hood","directory first name":"Riding","directory middle name":"Red","preferred email address":"rhood@example.com","home address 1":"12 Nana Ct","home address 2":"","home address 3":"","home address city":"Atlanta","home address state":"GA","home address postal code":"30301","home address country code":"USA","home address country descr":"United States","ferpa suppression flag":"N","acad career code":"UCOL","acad career descr":"Undergraduate Emory College","acad program code":"LIBAS","acad program descr":"Liberal Arts & Sciences","primary acad plan code":"MATHCSBS","primary acad plan descr":"Mathematics & Computer Science","program status descr":"CM","degree code":"BS","degree status descr":"Awarded","degree status date":"2017-03-16"},
"P0000004-THEO-MDV":{"etd record key":"P0000004-THEO-MDV","public person id":"P0000004","directory last name":"Smith","directory first name":"Jim","directory middle name":"James","preferred email address":"jim.s@example.com","home address 1":"123 Fake Dr","home address 2":"","home address 3":"","home address city":"Atlanta","home address state":"GA","home address postal code":"30301","home address country code":"USA","home address country descr":"United States","ferpa suppression flag":"N","acad career code":"THEO","acad career descr":"Theology","acad program code":"MDV","acad program descr":"Master of Divinity","primary acad plan code":"MDVDIVIN","primary acad plan descr":"Divinity","program status descr":"CM","degree code":"MDV","degree status descr":"Awarded","degree status date":"2018-01-12"},
"P0000004-THEO-THD":{"etd record key":"P0000004-THEO-THD","public person id":"P0000004","directory last name":"Smith","directory first name":"Jim","directory middle name":"James","preferred email address":"jim.s@example.com","home address 1":"123 Fake Dr","home address 2":"","home address 3":"","home address city":"Atlanta","home address state":"GA","home address postal code":"30301","home address country code":"USA","home address country descr":"United States","ferpa suppression flag":"N","acad career code":"THEO","acad career descr":"Theology","acad program code":"THD","acad program descr":"Doctor of Theology","primary acad plan code":"THDCOUNSEL","primary acad plan descr":"Pastoral Counseling","program status descr":"AC","degree code":"THD","degree status descr":"Awarded","degree status date":"2020-05-23"},
"P0000005-GSAS-PHD":{"etd record key":"P0000005-GSAS-PHD","public person id":"P0000005","directory last name":"Anderson","directory first name":"John","directory middle name":" ","preferred email address":"janders@example.com","home address 1":"123 Fake Dr","home address 2":"","home address 3":"","home address city":"Atlanta","home address state":"GA","home address postal code":"30301","home address country code":"USA","home address country descr":"United States","ferpa suppression flag":"N","acad career code":"GSAS","acad career descr":"School of Graduate Studies","acad program code":"PHD","acad program descr":"Doctor of Philosophy","primary acad plan code":"CHEMPHD","primary acad plan descr":"Chemistry","program status descr":"CM","degree status date":"2020-05-25","degree status descr":"Awarded"}
{"P0000001-GSAS-PHD": {"etd record key":"P0000001-GSAS-PHD", "public person id":"P0000001", "acad career code":"GSAS", "acad career descr":"School of Graduate Studies", "acad program code":"PHD", "acad program descr":"Doctor of Philosophy", "degree code":"PHD", "degree status date":" ", "degree status descr":" ", "primary acad plan code":"BBSPHD", "primary acad plan descr":"Biological and Biomedical Sci.", "program status descr":"AC", "secondary acad plan code":" ","secondary acad plan descr":" ", "directory last name":"Doe", "directory first name":"John","directory middle name":" ","preferred email address":"jdoe@example.com","home address 1":"123 Fake St","home address 2":" ","home address 3":" ","home address city":"Atlanta","home address state":"GA","home address postal code":"30301","home address country code":"USA","home address country descr":"United States","ferpa suppression flag":"N"},
"P0000002-UCOL-LIBAS":{"etd record key":"P0000002-UCOL-LIBAS","public person id":"P0000002", "acad career code":"UCOL", "acad career descr":"Undergraduate Emory College", "acad program code":"LIBAS", "acad program descr":"Liberal Arts & Sciences", "degree code":"BS", "degree status date":"2017-05-18", "degree status descr":"Awarded", "primary acad plan code":"POLISCIBA", "primary acad plan descr":"Political Science", "program status descr":"AC", "secondary acad plan code":"LACSND","secondary acad plan descr":"Latin Amer. & Caribbean Stu.", "directory last name":"Smith", "directory first name":"Jane","directory middle name":"Cinderlla","preferred email address":"jsmith@example.com","home address 1":"321 Ash Way","home address 2":" ","home address 3":" ","home address city":"Atlanta","home address state":"GA","home address postal code":"30301","home address country code":"USA","home address country descr":"United States","ferpa suppression flag":"N"},
"P0000003-UCOL-LIBAS":{"etd record key":"P0000003-UCOL-LIBAS","public person id":"P0000003", "acad career code":"UCOL", "acad career descr":"Undergraduate Emory College", "acad program code":"LIBAS", "acad program descr":"Liberal Arts & Sciences", "degree code":"BS", "degree status date":"2017-03-16", "degree status descr":"Awarded", "primary acad plan code":"MATHCSBS", "primary acad plan descr":"Mathematics & Computer Science", "program status descr":"CM", "secondary acad plan code":" ","secondary acad plan descr":" ", "directory last name":"Hood", "directory first name":"Riding","directory middle name":"Red","preferred email address":"rhood@example.com","home address 1":"12 Nana Ct","home address 2":"","home address 3":"","home address city":"Atlanta","home address state":"GA","home address postal code":"30301","home address country code":"USA","home address country descr":"United States","ferpa suppression flag":"N"},
"P0000004-THEO-MDV": {"etd record key":"P0000004-THEO-MDV", "public person id":"P0000004", "acad career code":"THEO", "acad career descr":"Theology", "acad program code":"MDV", "acad program descr":"Master of Divinity", "degree code":"MDV", "degree status date":"2018-01-12", "degree status descr":"Awarded", "primary acad plan code":"MDVDIVIN", "primary acad plan descr":"Divinity", "program status descr":"CM", "secondary acad plan code":" ","secondary acad plan descr":" ", "directory last name":"Smith", "directory first name":"Jim","directory middle name":"James","preferred email address":"jim.s@example.com","home address 1":"123 Fake Dr","home address 2":"","home address 3":"","home address city":"Atlanta","home address state":"GA","home address postal code":"30301","home address country code":"USA","home address country descr":"United States","ferpa suppression flag":"N"},
"P0000004-THEO-THD": {"etd record key":"P0000004-THEO-THD", "public person id":"P0000004", "acad career code":"THEO", "acad career descr":"Theology", "acad program code":"THD", "acad program descr":"Doctor of Theology", "degree code":"THD", "degree status date":"2020-05-23", "degree status descr":"Awarded", "primary acad plan code":"THDCOUNSEL", "primary acad plan descr":"Pastoral Counseling", "program status descr":"AC", "secondary acad plan code":" ","secondary acad plan descr":" ", "directory last name":"Smith", "directory first name":"Jim","directory middle name":"James","preferred email address":"jim.s@example.com","home address 1":"123 Fake Dr","home address 2":"","home address 3":"","home address city":"Atlanta","home address state":"GA","home address postal code":"30301","home address country code":"USA","home address country descr":"United States","ferpa suppression flag":"N"},
"P0000005-GSAS-PHD": {"etd record key":"P0000005-GSAS-PHD", "public person id":"P0000005", "acad career code":"GSAS", "acad career descr":"School of Graduate Studies", "acad program code":"PHD", "acad program descr":"Doctor of Philosophy", "degree code":"PHD", "degree status date":"2020-05-25", "degree status descr":"Awarded", "primary acad plan code":"CHEMPHD", "primary acad plan descr":"Chemistry", "program status descr":"CM", "secondary acad plan code":" ","secondary acad plan descr":" ", "directory last name":"Anderson", "directory first name":"John","directory middle name":" ","preferred email address":"janders@example.com","home address 1":"123 Fake Dr","home address 2":"","home address 3":"","home address city":"Atlanta","home address state":"GA","home address postal code":"30301","home address country code":"USA","home address country descr":"United States","ferpa suppression flag":"N"},
"P0000006-UBUS-BBA": {"etd record key":"P0000006-UBUS-BBA", "public person id":"P0000006", "acad career code":"UBUS", "acad career descr":"Undergraduate Business", "acad program code":"BBA", "acad program descr":"Bachelor of Business Admin", "degree code":"BBA", "degree status date":"2022-05-25", "degree status descr":"Awarded", "primary acad plan code":"BUSBBA", "primary acad plan descr":"Business Administration", "program status descr":"CM", "secondary acad plan code":"BUSMUSIC","secondary acad plan descr":"Music", "directory last name":"Dieu-le-Veut","directory first name":"Anne","directory middle name":"","preferred email address":"adv@example.com","home address 1":"50 Rue de Mer","home address 2":"","home address 3":"","home address city":"Atlanta","home address state":"GA","home address postal code":"30301","home address country code":"USA","home address country descr":"United States","ferpa suppression flag":"N"}
}
7 changes: 7 additions & 0 deletions spec/services/graduation_service_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,13 @@
end
end
end
describe "for undergrad business dual majors" do
let(:etd_solr_doc) { { 'id' => 'MatchingETD', 'depositor_ssim' => ['P0000006'], 'school_tesim' => ['Emory College'], 'degree_tesim' => ['B.B.A.'] } }
it 'accepts UBUS as relaxed match for UCOL' do
grad_date = grad_service.find_registrar_match(etd_solr_doc)[0]
expect(grad_date).to eq '2022-05-25'.to_time
end
end
describe "for non-matches" do
let(:etd_solr_doc) { { 'id' => 'UnmatchedETD', 'depositor_ssim' => ['P0000004'], 'school_tesim' => ['Emory College'], 'degree_tesim' => ['B.S.'] } }
it 'logs warnings for near matches with the same PPID', :aggregate_failures do
Expand Down

0 comments on commit a9b3366

Please sign in to comment.