Summary Table

Categories Total Count
PII 0
URL 0
DNS 0
EKL 0
IP 0
PORT 0
VsID 0
CF 0
AI 0
VPD 0
PL 0
Other 0

File Content

define(['angular', 'app'], function (angular, app) {
'use strict';

app.service('mediaRequestProgressService', function (imageMediaRequestService, imageResponseService) {
return {
getNumCompleted: function () {
var evaluation = imageResponseService.getEvaluation();
var numCompleted = 0;

//check Skin Status
if (evaluation.skinStatus) {
numCompleted++;
}

//check MedTypes
if (this.isMedTypesComplete()) {
numCompleted++;
}

//check Medications
numCompleted += this.getCompletedMedsSteps();

//check additional comments
if (evaluation.additionalComments) {
numCompleted++;
}

//check responses accepted
if (evaluation.isResponsesAccepted) {
numCompleted++;
}

//check photo pages
numCompleted += this.getCompletedPhotoSteps();

return numCompleted;
},
isMedTypesComplete: function () {
var evaluation = imageResponseService.getEvaluation();
var otherSelected = evaluation.medicationTypes.indexOf("OTHER") !== -1;
var noMedTypes = !evaluation.medicationTypes.length && evaluation.otherMedication === "N/A";

return noMedTypes || (evaluation.medicationTypes.length && (!otherSelected || (otherSelected && evaluation.otherMedication)));
},
getCompletedMedsSteps: function () {
var that = this;
var evaluation = imageResponseService.getEvaluation();
var numCompleted = 0;

var meds = [];
if (evaluation.medications) {
meds = meds.concat(evaluation.medications);
}

evaluation.medicationTypes.forEach(function (medType) {
var medGroup = _.filter(meds, function (med) {
return med.type === medType;
});

if (medGroup.length && !_.filter(medGroup, function (med) {
return that.isMedIncomplete(med);
}).length) {
numCompleted++;
}
});

return numCompleted;
},
isMedIncomplete: function (med) {
return !med.name || (!med.numDosesPerTimeUnit && med.numDosesPerTimeUnit !== 0) || !med.timeUnit || (!med.missedDoses && med.missedDoses !== 0);
},
getCompletedPhotoSteps: function () {
var evaluation = imageResponseService.getEvaluation();
var sections = imageMediaRequestService.getImageTypesBySection();
var sectionNames = Object.keys(sections);

var imageSections = imageResponseService.getUploadedImagesBySection();
var optionalPhotos = imageSections['OPTIONAL'] || [];
var numCompleted = 0;

sectionNames.forEach(function (sectionName) {
var imageSection = imageSections[sectionName] || {};
var required = imageSection['PRIMARY'] || [];
var closeUps = imageSection['CLOSE_UP'] || [];

numCompleted += required.length;

if (closeUps.length) {
numCompleted++;
}
});

if (evaluation.isOptionalImages === false || (evaluation.isOptionalImages && optionalPhotos.length)) {
numCompleted++;
}

return numCompleted;
},
getTotalSteps: function () {
var mediaRequest = imageMediaRequestService.getMediaRequest();
var evaluation = imageResponseService.getEvaluation();
var guaranteedSteps = 4; //Skin Status & Med Types & Comments & Review Answers
var imageTypes = mediaRequest.mediaTypes || [];

var sectionNames = Object.keys(imageMediaRequestService.getImageTypesBySection());

var numPhotoSteps = imageTypes.length + sectionNames.length + 1; //each photo + AT LEAST 1 close up FOR EACH SECTION, + optional pictures

var numMedTypes = _.filter(evaluation.medicationTypes, function (medType) {
return medType !== 'OTHER';
}).length;

return guaranteedSteps + numMedTypes + numPhotoSteps;
}
};
});
});