use of org.pmiops.workbench.db.model.ParticipantCohortAnnotation in project workbench by all-of-us.
the class CohortReviewServiceImpl method validateParticipantCohortAnnotation.
/**
* Helper method to validate that requested annotations are proper.
*
* @param participantCohortAnnotation
*/
private void validateParticipantCohortAnnotation(ParticipantCohortAnnotation participantCohortAnnotation, CohortAnnotationDefinition cohortAnnotationDefinition) {
if (cohortAnnotationDefinition.getAnnotationType().equals(AnnotationType.BOOLEAN)) {
if (participantCohortAnnotation.getAnnotationValueBoolean() == null) {
throw createBadRequestException(AnnotationType.BOOLEAN.name(), participantCohortAnnotation.getCohortAnnotationDefinitionId());
}
} else if (cohortAnnotationDefinition.getAnnotationType().equals(AnnotationType.STRING)) {
if (StringUtils.isBlank(participantCohortAnnotation.getAnnotationValueString())) {
throw createBadRequestException(AnnotationType.STRING.name(), participantCohortAnnotation.getCohortAnnotationDefinitionId());
}
} else if (cohortAnnotationDefinition.getAnnotationType().equals(AnnotationType.DATE)) {
if (StringUtils.isBlank(participantCohortAnnotation.getAnnotationValueDateString())) {
throw createBadRequestException(AnnotationType.DATE.name(), participantCohortAnnotation.getCohortAnnotationDefinitionId());
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = new Date(sdf.parse(participantCohortAnnotation.getAnnotationValueDateString()).getTime());
participantCohortAnnotation.setAnnotationValueDate(date);
} catch (ParseException e) {
throw new BadRequestException(String.format("Invalid Request: Please provide a valid %s value (%s) for annotation defintion id: %s", AnnotationType.DATE.name(), sdf.toPattern(), participantCohortAnnotation.getCohortAnnotationDefinitionId()));
}
} else if (cohortAnnotationDefinition.getAnnotationType().equals(AnnotationType.INTEGER)) {
if (participantCohortAnnotation.getAnnotationValueInteger() == null) {
throw createBadRequestException(AnnotationType.INTEGER.name(), participantCohortAnnotation.getCohortAnnotationDefinitionId());
}
} else if (cohortAnnotationDefinition.getAnnotationType().equals(AnnotationType.ENUM)) {
if (StringUtils.isBlank(participantCohortAnnotation.getAnnotationValueEnum())) {
throw createBadRequestException(AnnotationType.ENUM.name(), participantCohortAnnotation.getCohortAnnotationDefinitionId());
}
List<CohortAnnotationEnumValue> enumValues = cohortAnnotationDefinition.getEnumValues().stream().filter(enumValue -> participantCohortAnnotation.getAnnotationValueEnum().equals(enumValue.getName())).collect(Collectors.toList());
if (enumValues.isEmpty()) {
throw createBadRequestException(AnnotationType.ENUM.name(), participantCohortAnnotation.getCohortAnnotationDefinitionId());
}
participantCohortAnnotation.setCohortAnnotationEnumValue(enumValues.get(0));
}
}
use of org.pmiops.workbench.db.model.ParticipantCohortAnnotation in project workbench by all-of-us.
the class CohortReviewServiceImplTest method saveParticipantCohortAnnotationBadRequestCohortAnnotationDefinitionExists.
@Test
public void saveParticipantCohortAnnotationBadRequestCohortAnnotationDefinitionExists() throws Exception {
long cohortAnnotationDefinitionId = 1;
long cohortReviewId = 1;
long participantId = 1;
ParticipantCohortAnnotation participantCohortAnnotation = new ParticipantCohortAnnotation().annotationValueBoolean(Boolean.TRUE).cohortAnnotationDefinitionId(cohortAnnotationDefinitionId).cohortReviewId(cohortReviewId).participantId(participantId);
CohortAnnotationDefinition cohortAnnotationDefinition = createCohortAnnotationDefinition(cohortAnnotationDefinitionId, AnnotationType.BOOLEAN);
when(cohortAnnotationDefinitionDao.findOne(cohortAnnotationDefinitionId)).thenReturn(cohortAnnotationDefinition);
when(participantCohortAnnotationDao.findByCohortReviewIdAndCohortAnnotationDefinitionIdAndParticipantId(cohortReviewId, cohortAnnotationDefinitionId, participantId)).thenReturn(participantCohortAnnotation);
try {
cohortReviewService.saveParticipantCohortAnnotation(cohortReviewId, participantCohortAnnotation);
fail("Should have thrown BadRequestException!");
} catch (BadRequestException e) {
assertEquals("Invalid Request: Cohort annotation definition exists for id: " + cohortAnnotationDefinitionId, e.getMessage());
}
verify(cohortAnnotationDefinitionDao).findOne(cohortAnnotationDefinitionId);
verifyNoMoreMockInteractions();
}
use of org.pmiops.workbench.db.model.ParticipantCohortAnnotation in project workbench by all-of-us.
the class CohortReviewServiceImplTest method saveParticipantCohortAnnotationAllTypes.
@Test
public void saveParticipantCohortAnnotationAllTypes() throws Exception {
long cohortAnnotationDefinitionId = 1;
long cohortReviewId = 1;
long participantId = 1;
// Boolean Type
ParticipantCohortAnnotation expectedAnnotation = new ParticipantCohortAnnotation().cohortAnnotationDefinitionId(cohortAnnotationDefinitionId).cohortReviewId(cohortReviewId).participantId(participantId).annotationValueBoolean(Boolean.TRUE);
assertSaveParticipantCohortAnnotation(expectedAnnotation, AnnotationType.BOOLEAN);
// Date Type
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
expectedAnnotation = new ParticipantCohortAnnotation().cohortAnnotationDefinitionId(cohortAnnotationDefinitionId).cohortReviewId(cohortReviewId).participantId(participantId).annotationValueDateString("1999-02-01").annotationValueDate(new Date(sdf.parse("1999-02-01").getTime()));
assertSaveParticipantCohortAnnotation(expectedAnnotation, AnnotationType.DATE);
// Enum Type
expectedAnnotation = new ParticipantCohortAnnotation().cohortAnnotationDefinitionId(cohortAnnotationDefinitionId).cohortReviewId(cohortReviewId).participantId(participantId).annotationValueEnum("enumValue");
assertSaveParticipantCohortAnnotation(expectedAnnotation, AnnotationType.ENUM);
// Integer Type
expectedAnnotation = new ParticipantCohortAnnotation().cohortAnnotationDefinitionId(cohortAnnotationDefinitionId).cohortReviewId(cohortReviewId).participantId(participantId).annotationValueInteger(1);
assertSaveParticipantCohortAnnotation(expectedAnnotation, AnnotationType.INTEGER);
// String Type
expectedAnnotation = new ParticipantCohortAnnotation().cohortAnnotationDefinitionId(cohortAnnotationDefinitionId).cohortReviewId(cohortReviewId).participantId(participantId).annotationValueString("String");
assertSaveParticipantCohortAnnotation(expectedAnnotation, AnnotationType.STRING);
}
use of org.pmiops.workbench.db.model.ParticipantCohortAnnotation in project workbench by all-of-us.
the class CohortReviewServiceImplTest method updateParticipantCohortAnnotationModifyNotFoundCohortAnnotationDefinition.
@Test
public void updateParticipantCohortAnnotationModifyNotFoundCohortAnnotationDefinition() throws Exception {
long annotationId = 1;
long cohortAnnotationDefinitionId = 1;
long cohortReviewId = 1;
long participantId = 1;
ParticipantCohortAnnotation participantCohortAnnotation = new ParticipantCohortAnnotation().annotationValueBoolean(Boolean.TRUE).cohortAnnotationDefinitionId(cohortAnnotationDefinitionId).cohortReviewId(cohortReviewId).participantId(participantId);
ModifyParticipantCohortAnnotationRequest modifyRequest = new ModifyParticipantCohortAnnotationRequest().annotationValueBoolean(Boolean.FALSE);
when(participantCohortAnnotationDao.findByAnnotationIdAndCohortReviewIdAndParticipantId(annotationId, cohortReviewId, participantId)).thenReturn(participantCohortAnnotation);
when(cohortAnnotationDefinitionDao.findOne(cohortAnnotationDefinitionId)).thenReturn(null);
try {
cohortReviewService.updateParticipantCohortAnnotation(annotationId, cohortReviewId, participantId, modifyRequest);
fail("Should have thrown NotFoundException!");
} catch (NotFoundException e) {
assertEquals("Not Found: No cohort annotation definition found for id: " + cohortAnnotationDefinitionId, e.getMessage());
}
verify(participantCohortAnnotationDao).findByAnnotationIdAndCohortReviewIdAndParticipantId(annotationId, cohortReviewId, participantId);
verify(cohortAnnotationDefinitionDao).findOne(cohortAnnotationDefinitionId);
verifyNoMoreMockInteractions();
}
use of org.pmiops.workbench.db.model.ParticipantCohortAnnotation in project workbench by all-of-us.
the class CohortReviewServiceImplTest method deleteParticipantCohortAnnotation.
@Test
public void deleteParticipantCohortAnnotation() throws Exception {
long annotationId = 1;
long cohortReviewId = 2;
long participantId = 3;
when(participantCohortAnnotationDao.findByAnnotationIdAndCohortReviewIdAndParticipantId(annotationId, cohortReviewId, participantId)).thenReturn(new ParticipantCohortAnnotation());
cohortReviewService.deleteParticipantCohortAnnotation(annotationId, cohortReviewId, participantId);
verify(participantCohortAnnotationDao).findByAnnotationIdAndCohortReviewIdAndParticipantId(annotationId, cohortReviewId, participantId);
verifyNoMoreMockInteractions();
}
Aggregations