handleNext: function(e) { e.preventDefault(); this.validateForm(); if(this.state.errorMessage){ return; } var name = this.refs.name.value; var dateString = this.refs.year.value+'-'+this.refs.month.value+'-'+this.zeroPad(this.refs.day.value); var email = this.refs.email.value; var mrn = this.refs.mrn.value; if(sundial.isValidDateForMask(dateString, 'YYYY-MM-DD')){ var profile = { fullName: name, patient: { birthday: dateString } }; if(email){ profile.patient.email = email; profile.emails = [email]; } if(mrn){ profile.patient.mrn = mrn; } if(this.props.targetId){ this.props.updateUser(profile); } else { this.props.createUser(profile); } } },
const dateValidator = (fieldLabel, fieldValue, currentDateObj) => { let now = new Date(); let dateMask = 'M-D-YYYY'; let dateString; currentDateObj = currentDateObj || Date.UTC(now.getFullYear(), now.getMonth(), now.getDate()); if (!fieldValue) { return invalid(errors.isRequired(fieldLabel)); } if (!fieldValue.day || !fieldValue.month || !fieldValue.year) { return invalid(errors.incompleteDate(fieldLabel)); } let month = parseInt(fieldValue.month, 10) + 1; // month is zero indexed dateString = `${month}-${fieldValue.day}-${fieldValue.year}`; if (!sundial.isValidDateForMask(dateString, dateMask)) { return invalid(errors.invalidDate()); } if (currentDateObj < sundial.parseFromFormat(dateString, dateMask)) { return invalid(errors.futureDate(fieldLabel)); } return valid(); };
personUtils.validateFormValues = function(formValues, isNameRequired, dateFormat, currentDateObj) { var validationErrors = {}; var INVALID_DATE_TEXT = 'Hmm, this date doesn’t look right'; var OUT_OF_ORDER_TEXT = 'Hmm, diagnosis date usually comes after birthday'; // Legacy: revisit when proper "child accounts" are implemented if (isNameRequired && !formValues.fullName) { validationErrors.fullName = 'Full name is required'; } var birthday = formValues.birthday; if (!(birthday && sundial.isValidDateForMask(birthday, dateFormat))) { validationErrors.birthday = INVALID_DATE_TEXT; } var diagnosisDate = formValues.diagnosisDate; if (!(diagnosisDate && sundial.isValidDateForMask(diagnosisDate, dateFormat))) { validationErrors.diagnosisDate = INVALID_DATE_TEXT; } var now = new Date(); currentDateObj = currentDateObj || Date.UTC(now.getFullYear(), now.getMonth(), now.getDate()); var birthdayDateObj = sundial.parseFromFormat(birthday, dateFormat); var diagnosisDateObj = sundial.parseFromFormat(diagnosisDate, dateFormat); if (!validationErrors.birthday && birthdayDateObj > currentDateObj) { validationErrors.birthday = INVALID_DATE_TEXT; } if (!validationErrors.diagnosisDate && diagnosisDateObj > currentDateObj) { validationErrors.diagnosisDate = INVALID_DATE_TEXT; } if (!validationErrors.diagnosisDate && birthdayDateObj > diagnosisDateObj) { validationErrors.diagnosisDate = OUT_OF_ORDER_TEXT; } var maxLength = 256; var about = formValues.about; if (about && about.length > maxLength) { validationErrors.about = 'Please keep "about" text under ' + maxLength + ' characters'; } return validationErrors; };
personUtils.validateFormValues = (formValues, isNameRequired, dateFormat, currentDateObj) => { let validationErrors = {}; const INVALID_DATE_TEXT = t('Hmm, this date doesn’t look right'); const OUT_OF_ORDER_TEXT = t('Hmm, diagnosis date usually comes after birthday'); // Legacy: revisit when proper "child accounts" are implemented if (isNameRequired && !formValues.fullName) { validationErrors.fullName = t('Full name is required'); } const birthday = formValues.birthday; if (!(birthday && sundial.isValidDateForMask(birthday, dateFormat))) { validationErrors.birthday = INVALID_DATE_TEXT; } // moving to make diagnosisDate optional so we can use this to verify custodial accounts const diagnosisDate = formValues.diagnosisDate; if (diagnosisDate && !(diagnosisDate && sundial.isValidDateForMask(diagnosisDate, dateFormat))) { validationErrors.diagnosisDate = INVALID_DATE_TEXT; } const now = new Date(); currentDateObj = currentDateObj || Date.UTC(now.getFullYear(), now.getMonth(), now.getDate()); var birthdayDateObj = birthday && sundial.parseFromFormat(birthday, dateFormat); var diagnosisDateObj = diagnosisDate && sundial.parseFromFormat(diagnosisDate, dateFormat); if (!validationErrors.birthday && birthdayDateObj > currentDateObj) { validationErrors.birthday = INVALID_DATE_TEXT; } if (!validationErrors.diagnosisDate && diagnosisDateObj > currentDateObj) { validationErrors.diagnosisDate = INVALID_DATE_TEXT; } if (!validationErrors.diagnosisDate && birthdayDateObj > diagnosisDateObj) { validationErrors.diagnosisDate = OUT_OF_ORDER_TEXT; } const maxLength = 256; const about = formValues.about; if (about && about.length > maxLength) { validationErrors.about = t('Please keep "about" text under {{maxLength}} characters', {maxLength}); } return validationErrors; };
validateFormValues: function(formValues) { // Legacy: revisit when proper "child accounts" are implemented if (personUtils.patientIsOtherPerson(this.props.patient) && !formValues.fullName) { return 'Full name is required'; } var birthday = formValues.birthday; if (!(birthday && sundial.isValidDateForMask(birthday,FORM_DATE_FORMAT))) { return 'Date of birth needs to be a valid date'; } var diagnosisDate = formValues.diagnosisDate; if (!(diagnosisDate && sundial.isValidDateForMask(diagnosisDate,FORM_DATE_FORMAT))) { return 'Diagnosis date needs to be a valid date'; } var maxLength = 256; var about = formValues.about; if (about && about.length > maxLength) { return 'Please keep "about" text under ' + maxLength + ' characters'; } },
isValidDate: function(dateString){ // check to see if date is proper and not in the future return (sundial.isValidDateForMask(dateString, 'YYYY-MM-DD')) && (sundial.dateDifference(new Date(), dateString, 'd') > 0); },