Search in sources :

Example 1 with EnrollmentFilter

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);
}
Also used : UserSession(org.sagebionetworks.bridge.models.accounts.UserSession) EnrollmentFilter(org.sagebionetworks.bridge.models.studies.EnrollmentFilter) GetMapping(org.springframework.web.bind.annotation.GetMapping)

Example 2 with EnrollmentFilter

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);
}
Also used : ImmutableSet(com.google.common.collect.ImmutableSet) PagedResourceList(org.sagebionetworks.bridge.models.PagedResourceList) ImmutableMap(com.google.common.collect.ImmutableMap) Resource(javax.annotation.Resource) Set(java.util.Set) AND(org.sagebionetworks.bridge.models.SearchTermPredicate.AND) Collectors.toList(java.util.stream.Collectors.toList) List(java.util.List) Component(org.springframework.stereotype.Component) EnrollmentDao(org.sagebionetworks.bridge.dao.EnrollmentDao) TEST_USER_GROUP(org.sagebionetworks.bridge.BridgeConstants.TEST_USER_GROUP) EnrollmentDetail(org.sagebionetworks.bridge.models.studies.EnrollmentDetail) AccountRef(org.sagebionetworks.bridge.models.accounts.AccountRef) WhereClauseBuilder(org.sagebionetworks.bridge.hibernate.QueryBuilder.WhereClauseBuilder) EnrollmentFilter(org.sagebionetworks.bridge.models.studies.EnrollmentFilter) EnrollmentDetail(org.sagebionetworks.bridge.models.studies.EnrollmentDetail) AccountRef(org.sagebionetworks.bridge.models.accounts.AccountRef) WhereClauseBuilder(org.sagebionetworks.bridge.hibernate.QueryBuilder.WhereClauseBuilder) PagedResourceList(org.sagebionetworks.bridge.models.PagedResourceList)

Aggregations

EnrollmentFilter (org.sagebionetworks.bridge.models.studies.EnrollmentFilter)2 ImmutableMap (com.google.common.collect.ImmutableMap)1 ImmutableSet (com.google.common.collect.ImmutableSet)1 List (java.util.List)1 Set (java.util.Set)1 Collectors.toList (java.util.stream.Collectors.toList)1 Resource (javax.annotation.Resource)1 TEST_USER_GROUP (org.sagebionetworks.bridge.BridgeConstants.TEST_USER_GROUP)1 EnrollmentDao (org.sagebionetworks.bridge.dao.EnrollmentDao)1 WhereClauseBuilder (org.sagebionetworks.bridge.hibernate.QueryBuilder.WhereClauseBuilder)1 PagedResourceList (org.sagebionetworks.bridge.models.PagedResourceList)1 AND (org.sagebionetworks.bridge.models.SearchTermPredicate.AND)1 AccountRef (org.sagebionetworks.bridge.models.accounts.AccountRef)1 UserSession (org.sagebionetworks.bridge.models.accounts.UserSession)1 EnrollmentDetail (org.sagebionetworks.bridge.models.studies.EnrollmentDetail)1 Component (org.springframework.stereotype.Component)1 GetMapping (org.springframework.web.bind.annotation.GetMapping)1