Outcomes allows you to create Evaluation Forms to capture the results of your reviews. This article helps with the following questions:
Using JavaScript, you can build an enhancement in Outcomes that accomplishes all these things. This advanced configuration allows you to make fields from your Evaluation Forms available in Exports, Reports, Filters, and other areas. This is done by:

For this code to work, you'll need to build a Custom Property for each response you want to capture. For example, if your Evaluation Form has three questions, and you have two reviewers that will complete it, and you want to capture each response to each question, you'll need to add six of these Custom Properties. You'll add JavaScript code that instructs the Custom Property to pull in your reviewers' Evaluation Form responses.
{
/* * * * * * * * * * * * *
* * USER INPUT SECTION * *
* * * * * * * * * * * * */
// use this field to add the phase key
let phaseId = "ready_for_faculty_review";
// use this field to add the evaluation form key
let evaluationForm = "faculty_review_form";
// use this field to determine the number recommendation you want to output.
let evaluationNumber = 1;
// use this field to add the evaluation question key
let evaluationQuestion = "short_comment";
// use this field to define the question type (as defined on the evaluation form) so the correct output is processed
// type1: scale, text, paragraph text, drop down, number, multiple choice, date, email address, phone number, url
// type2: check boxes, table
// type3: scale group, address, name
let questionType = "type1";
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
This function takes five inputs to return a single question response from the Outcomes Evaluation Data Object.
NOTE: phases variable is available globally, does not need to be defined.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
function getEvaluationData(phases, phaseId, evaluationForm, evaluationNumber, evaluationQuestion, questionType) {
let evals;
// NOTE: Sort evaluations by created date in descending order (oldest to newest)
if ((phases) &&
(phases[evaluationForm]) &&
(phases[evaluationForm].evaluations) &&
(phases[evaluationForm].evaluations.length)) {
evals = phases[evaluationForm].evaluations.sort((evalA, evalB) => {
let evalACreatedDate = new Date(evalA.dateCreated).getTime();
let evalBCreatedDate = new Date(evalB.dateCreated).getTime();
return evalACreatedDate - evalBCreatedDate;
});
} else if ((phases) &&
(phases[phaseId]) &&
(phases[phaseId].evaluations) &&
(phases[phaseId].evaluations.length)) {
evals = phases[phaseId].evaluations.sort((evalA, evalB) => {
let evalACreatedDate = new Date(evalA.dateCreated).getTime();
let evalBCreatedDate = new Date(evalB.dateCreated).getTime();
return evalACreatedDate - evalBCreatedDate;
});
}
// NOTE: Evaluation Export Business Logic
if ((evals) &&
(evals[evaluationNumber - 1]) &&
(evals[evaluationNumber - 1].form) &&
(evals[evaluationNumber - 1].form[evaluationQuestion])) {
let returnObject = evals[evaluationNumber - 1].form[evaluationQuestion];
if (questionType == "type1") {
return returnObject;
} else if (questionType == "type2") {
return returnObject.toString();
} else if (questionType == "type3") {
return Object.keys(returnObject).map((key) => { return key + ": " + returnObject[key] }).reduce((accumulator, currentValue) => { return accumulator + currentValue + ", " }, "");
} else {
return;
};
} else if ((evals) &&
(evals[evaluationNumber - 1]) &&
(evals[evaluationNumber - 1].form) &&
(evals[evaluationNumber - 1].form[evaluationQuestion])) {
let returnObject = evals[evaluationNumber - 1].form[evaluationQuestion];
if (questionType == "type1") {
return returnObject;
} else if (questionType == "type2") {
return returnObject.toString();
} else if (questionType == "type3") {
return Object.keys(returnObject).map((key) => { return key + ": " + returnObject[key] }).reduce((accumulator, currentValue) => { return accumulator + currentValue + ", " }, "");
} else {
return;
};
} else {
return;
}
}
}
To make this code work in your environment, you'll need to replace the keys in the example above with the appropriate keys from your Evaluation Forms. To find these keys:



let phaseId = "ready_for_faculty_review"; // Here, you're telling Outcomes to look at the Ready for Faculty Review Phase. let evaluationForm="committee_review"; // Here, you're telling Outcomes to look at the Committee Review Evaluation Form. let evaluationNumber=1; // Here, you're indicating which evaluator's results should be pulled in. Use 1 to pull in the response from the first evaluator. let evaluationQuestion="committee_decision"; // Here, you're telling Outcomes to look at the Committee Decision question.
For the code to work with your question, you'll need to indicate which type of question you're working with. To find your question type:


Once you've added the JavaScript to capture these Review Form responses in Custom Properties, you can then display the responses in several areas.
In Outcomes, you can move fields to the Application Summary or to the Application Sidebar. This allows you to quickly locate key information on an application. To move Form Responses to one of these areas:


Once Form Responses have been stored as Custom Properties, they can be extracted from Outcomes using the Export feature. To include Custom Properties in an export:



Form responses that have been migrated to Custom Properties can also be included in PDF Exports. To do this, you'll first need to add the Custom Property to your Application Summary. Then, create a PDF export that includes the fields of your choice. To create the PDF export:

