use of org.sagebionetworks.bridge.models.studies.EnrollmentFilter in project BridgeServer2 by Sage-Bionetworks.
the class EnrollmentController method getEnrollmentsForStudy.
@GetMapping("/v5/studies/{studyId}/enrollments")
public PagedResourceList<EnrollmentDetail> getEnrollmentsForStudy(@PathVariable String studyId, @RequestParam(required = false) String offsetBy, @RequestParam(required = false) String pageSize, @RequestParam(required = false) String enrollmentFilter, @RequestParam(required = false) String includeTesters) {
UserSession session = getAdministrativeSession();
CAN_EDIT_STUDY_PARTICIPANTS.checkAndThrow(STUDY_ID, studyId);
EnrollmentFilter filter = BridgeUtils.getEnumOrDefault(enrollmentFilter, EnrollmentFilter.class, null);
int offsetByInt = BridgeUtils.getIntOrDefault(offsetBy, 0);
int pageSizeInt = BridgeUtils.getIntOrDefault(pageSize, API_DEFAULT_PAGE_SIZE);
boolean includeTestersBool = Boolean.valueOf(includeTesters);
return service.getEnrollmentsForStudy(session.getAppId(), studyId, filter, includeTestersBool, offsetByInt, pageSizeInt);
}
use of org.sagebionetworks.bridge.models.studies.EnrollmentFilter in project BridgeServer2 by Sage-Bionetworks.
the class HibernateEnrollmentDao method getEnrollmentsForStudy.
@Override
public PagedResourceList<EnrollmentDetail> getEnrollmentsForStudy(String appId, String studyId, EnrollmentFilter filter, boolean includeTesters, Integer offsetBy, Integer pageSize) {
QueryBuilder builder = new QueryBuilder();
builder.append("FROM HibernateEnrollment AS h");
if (!includeTesters) {
builder.append("INNER JOIN org.sagebionetworks.bridge.hibernate.HibernateAccount AS acct ON acct.id = h.accountId");
}
WhereClauseBuilder where = builder.startWhere(AND);
where.append("h.appId = :appId", "appId", appId);
where.append("h.studyId = :studyId", "studyId", studyId);
where.enrollment(filter, false);
if (!includeTesters) {
where.dataGroups(ImmutableSet.of(TEST_USER_GROUP), "NOT IN");
}
int total = hibernateHelper.queryCount("SELECT COUNT(*) " + builder.getQuery(), builder.getParameters());
List<HibernateEnrollment> enrollments = hibernateHelper.queryGet("SELECT h " + builder.getQuery(), builder.getParameters(), offsetBy, pageSize, HibernateEnrollment.class);
List<EnrollmentDetail> dtos = enrollments.stream().map(enrollment -> {
AccountRef participantRef = nullSafeAccountRef(appId, enrollment.getAccountId());
AccountRef enrolledByRef = nullSafeAccountRef(appId, enrollment.getEnrolledBy());
AccountRef withdrawnByRef = nullSafeAccountRef(appId, enrollment.getWithdrawnBy());
return new EnrollmentDetail(enrollment, participantRef, enrolledByRef, withdrawnByRef);
}).collect(toList());
return new PagedResourceList<>(dtos, total, true);
}
Aggregations