Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

 

Table of Contents

Overview

Phase 1 Map Status Calculation will feature a cron job that calculate plan statuses for all active plans as detailed in the Phase 1 requirements doc (/wiki/spaces/SSP/pages/103986907).  2 will introduced some enhance calculation features.  The scope of which is defined as subtasks of 

Jira Legacy
serverJASIG Issue Tracker
serverId76221f40-4501-3df1-8578-6c87908cbdf7
keySSP-2002
.

 

MAP Plan Status Calculation Implementation Details

...

Map Plan Status Calculation Flow Chart

...

...

size500
nameflow chart

Map Plan Status Schema

Gliffy
namemap_plan_status_phase1

 

Map Status Data Dictionary

MAP_STATUS_REPORT (Process will produce one row per active plan assigned to an active student.)

ColumnTypeNotes
iduuidprimary (technical) key, unique identifier
plan_statusvarchar(enum)originally proposed as a boolean, I think an enum here will give us more flexability
notevarcharhigh level detail about the status calculation
plan_ratiodecimal(2,2)the percentage of plan courses satisfied as 'on plan'
plan_iduuidforeign key to MAP_PLAN(id)
person_iduuidforeign key to PERSON(id) - student
modified_byuuidid of person modifying reference
created_byuuidid of person creating reference
modified_datedatedate modified
created_datedatedate created
object_statusenumstandard object status

 

 

Info
titleComments
  • plan_status:  An enum would be better.  That would support the multiple statuses that will be added in phase 2 (on track, off track, etc)

...

 

MAP_STATUS_REPORT_COURSE_DETAILS  (Process will produce one row per anomaly per active plan.  An errorless plan will produce zero rows.)

...

ColumnTypeNotes
iduuidprimary (technical) key, unique identifier
report_iduuidforeign key to MAP_STATUS_REPORT(id)
term_codevarcharsoft reference to EXTERNAL_TERM(code)
anomaly_codevarcharcode that identifies the specific course level violation
anomaly_notevarchardetailed information about specific course level violation
term_statusvarchar(enum)the on/off plan status of the term
term_ratiodecimal(2,2)percent of term courses satisfied as being 'on plan'
modified_byuuidid of person modifying reference
created_byuuidid of person creating reference
modified_datedatedate modified
created_datedatedate created
object_statusenumstandard object status

...

ColumnTypeNotes
iduuidprimary (technical) key, unique identifier
report_iduuidforeign key to MAP_STATUS_REPORT(id)
term_codevarcharsoft reference to EXTERNAL_TERM(code) Plan course term code being substituted
formatted_coursevarcharsoft reference to EXTERNAL_COURSE(formatted_course) Plan course formatted_course being substituted
course_codeuuidsoft reference to EXTERNAL_COURSE(code) Plan course course_code being substituted
substitution_codevarcharcode that identifies the specific course level violation
substitution_notevarchardetailed information about specific course level violation
substituted_term_codevarcharsoft reference to EXTERNAL_TERM(code) the substituted term code
substituted_formatted_coursevarcharsoft reference to EXTERNAL_COURSE(formatted_course) the substituted formatted_course
substituted_course_codeuuidsoft reference to EXTERNAL_COURSE(code) the substituted course_code
modified_byuuidid of person modifying reference
created_byuuidid of person creating reference
modified_datedatedate modified
created_datedatedate created
object_statusenumstandard object status
Info
titleComments
  • course_code: This may or may not be applicable here.  We are seeing more and more schools loading data into external_course with the same formatted_course but different course_id values.  This represents different versions of the course and is completely legitimate in the field.  Many schools start with this concept because the SIS table structures require different course ids for each term the course is offered.  However, different course ids in MAP are important when the course has a different definition (title, course hours, etc).  

 

...

Integration

EXTERNAL_SUBSTITUTABLE_COURSE (Used to define course substitutions for plan calculation)

ColumnTypeNotes
term_codevarcharterm code for the substitution. if null applies to all term.
program_codeuuidprogram code for the substitution. if null applies to all programs
source_formatted_coursevarcharformatted course, matched to the plan course
source_course_codevarcharcourse course, matched to the plan course
source_course_titlevarcharcourse title, matched to the plan course
target_formatted_coursevarcharformatted course, matched to the transcript course
target_course_codevarcharcourse code, matched to the transcript course
target_course_titlevarcharcourse title, matched to the transcript course
Excerpt

New Configurations

Info
titleComments
 passing_grades: Dan also questioned the need for more complexity.  Maybe I'm missing something that you both are seeing.  The basic functionality is to check to see if the grade the student was awarded on their transcript is a passing grade. 
cutofftermcodecalculation_triggerdrives the frequency of the cron job that will calculate statusadditioncoursematching_criteria
namepossible valuespurpose
calculate_

map_plan_status

true, falseturns on/off cron job that will drive the calculation

_email

email address

Email address that status email should be sent to.  map_plan_status_send_

passing_grades
school specific but something like (A,B,C)In cases where a plan course and taken course line up, the student must have passed the class in order to not cause a anomaly

report_email should be set to true for email to be sent

map_plan_status_

send_

report_

term_code (EXTERNAL_TERM.CODE)

The calculation cutoff term is the latest future term to be included in the matching logic.  The term range for a given calculation will start with the oldest term for the student transcripted courses up to the cutoff term.  The term must be a valid term from external_term.  

  • If no term is configured, current term is used
  • If the configured term is a past term (user forgot to update),current term is used
task_scheduler_

email

true, false

If set the true, an email will be sent to the address listed in config map_plan_status_email

map_plan_status_cron expression (i.e., 0 0 1 * * *)send_off_plan_coach_emailtrue, false

Send off plan emails to coaches after status calc run

map_plan_status_

term_

bound_

available options are (COURSE_TITLE,CREDIT_HOURS) or blankIn addition to the static matching criteria (term_code and formatted_course), implementors have the option to add additional criteria. COURSE_TITLE will match PLAN_COURSE.COURSE_TITLE to EXTERNAL_STUDENT_TRANSCRIPT_COURSE.TITLE and CREDIT_HOURS will match PLAN_COURSE.CREDIT_HOURS with EXTERNAL_STUDENT_TRANSCRIPT_COURSE.CREDIT_EARNED

 

 

strict

true, falseIf set to true, course matches must be term bound to be considered on plan

map_plan_status_use_substitutable_courses

true, false

Drives the use of substitutable courses when calculating plan status

Matching criteria

Different schools may have their course/transcript data organized differently.  This means they may want different criteria to drive the matching logic between plan and transcript.  We will assume that three criteria are non-negotiable and static; term_code and  formatted_course.  In addition to the static matching criteria, implementors have the option to add additional criteria. COURSE_TITLE will match PLAN_COURSE.COURSE_TITLE to EXTERNAL_STUDENT_TRANSCRIPT_COURSE.TITLE and CREDIT_HOURS will match PLAN_COURSE.CREDIT_HOURS with EXTERNAL_STUDENT_TRANSCRIPT_COURSE.CREDIT_EARNED.  

Implementation Concerns

  • System load and memory footprint will be big concerns for the calculation process.  We don't want to load all active plans into memory at once.  Implementors may not want to have cron job run during business hours as it could put load on the web server and database.
  • Configuration map_plan_status_cutoff_term_code is a maintenance concern.  Will most likely have to be updated every term.  This must be clear to implementors.
  • map_plan_status_passing_grades may not be very flexible enough for a lot of schools.  We may want to explore a hierarchical configuration approach.

Open Questions

...

In addition for phase to, course code is being added to external_student_transcript_course so COURSE_CODE will be added as an additional criteria.  Which will match EXTERNAL_STUDENT_TRANSCRIPT_COURSE.COURSE_CODE with PLAN_COURSE.COURSE_CODE.