diff --git a/api/src/main/java/org/openmrs/validator/AllergyValidator.java b/api/src/main/java/org/openmrs/validator/AllergyValidator.java index 9153eaa81a55..3f52f6620256 100644 --- a/api/src/main/java/org/openmrs/validator/AllergyValidator.java +++ b/api/src/main/java/org/openmrs/validator/AllergyValidator.java @@ -82,6 +82,10 @@ public void validate(Object target, Errors errors) { } else if (!allergen.isCoded() && StringUtils.isBlank(allergen.getNonCodedAllergen())) { errors.rejectValue("allergen", "allergyapi.allergen.nonCodedAllergen.required"); } + + if (StringUtils.isNumeric(allergen.getNonCodedAllergen())) { + errors.rejectValue("allergen", "allergyapi.allergy.Allergen.cannotContainNumeric"); + } if (allergy.getAllergyId() == null && allergy.getPatient() != null) { Allergies existingAllergies = patientService.getAllergies(allergy.getPatient()); diff --git a/api/src/main/resources/messages.properties b/api/src/main/resources/messages.properties index 7d5561d5118a..dc46660f4e42 100644 --- a/api/src/main/resources/messages.properties +++ b/api/src/main/resources/messages.properties @@ -94,6 +94,7 @@ error.email.alreadyInUse=Email address is already assigned to another user accou error.activationkey.invalid =Invalid user activation Key error.usernameOrEmail.notNullOrBlank =Username Or email cannot be null or blank error.allergyapi.allergy.ReactionNonCoded.cannotBeNumeric=Reaction Non-coded must not be only a number +error.allergyapi.allergen.nonCodedAllergen.cannotBeNumeric=Non-coded Allergen must not be only a number general.at=at general.with=with diff --git a/api/src/test/java/org/openmrs/validator/AllergyValidatorTest.java b/api/src/test/java/org/openmrs/validator/AllergyValidatorTest.java index 9b1d57d03eb3..703f3b3bae29 100644 --- a/api/src/test/java/org/openmrs/validator/AllergyValidatorTest.java +++ b/api/src/test/java/org/openmrs/validator/AllergyValidatorTest.java @@ -191,4 +191,13 @@ public void validate_shouldRejectNumericReactionValue() { validator.validate(allergy, errors); assertTrue(errors.hasErrors()); } + @Test + public void validate_shouldRejectNumericAllergenValue() { + Allergen allergen = new Allergen(AllergenType.DRUG, null , "45" ); + allergy.setAllergen(allergen); + Errors errors = new BindException(allergy,"allergy"); + validator.validate(allergy, errors); + assertTrue(errors.hasErrors()); + assertTrue(errors.getAllErrors().stream() + .anyMatch(error -> "allergyapi.allergy.Allergen.cannotContainNumeric".equals(error.getCode()))); } }