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);
      }
    }
  },
Example #2
0
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();
};
Example #3
0
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;
};
Example #4
0
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;
};
Example #5
0
  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);
 },