Search in sources :

Example 1 with E1015

use of org.hisp.dhis.tracker.report.TrackerErrorCode.E1015 in project dhis2-core by dhis2.

the class EnrollmentInExistingValidationHook method validateTeiNotEnrolledAlready.

private void validateTeiNotEnrolledAlready(ValidationErrorReporter reporter, Enrollment enrollment, Program program) {
    checkNotNull(enrollment.getTrackedEntity(), TRACKED_ENTITY_INSTANCE_CANT_BE_NULL);
    TrackedEntityInstance tei = getTrackedEntityInstance(reporter, enrollment.getTrackedEntity());
    Set<Enrollment> payloadEnrollment = reporter.getValidationContext().getBundle().getEnrollments().stream().filter(Objects::nonNull).filter(pi -> pi.getProgram().equals(program.getUid())).filter(pi -> pi.getTrackedEntity().equals(tei.getUid()) && !pi.getEnrollment().equals(enrollment.getEnrollment())).filter(pi -> EnrollmentStatus.ACTIVE == pi.getStatus() || EnrollmentStatus.COMPLETED == pi.getStatus()).collect(Collectors.toSet());
    Set<Enrollment> dbEnrollment = reporter.getValidationContext().getBundle().getPreheat().getTrackedEntityToProgramInstanceMap().getOrDefault(enrollment.getTrackedEntity(), new ArrayList<>()).stream().filter(Objects::nonNull).filter(pi -> pi.getProgram().getUid().equals(program.getUid()) && !pi.getUid().equals(enrollment.getEnrollment())).filter(pi -> ProgramStatus.ACTIVE == pi.getStatus() || ProgramStatus.COMPLETED == pi.getStatus()).distinct().map(this::getEnrollmentFromProgramInstance).collect(Collectors.toSet());
    // Priority to payload
    Collection<Enrollment> mergedEnrollments = Stream.of(payloadEnrollment, dbEnrollment).flatMap(Set::stream).filter(e -> !Objects.equals(e.getEnrollment(), enrollment.getEnrollment())).collect(Collectors.toMap(Enrollment::getEnrollment, p -> p, (Enrollment x, Enrollment y) -> x)).values();
    if (EnrollmentStatus.ACTIVE == enrollment.getStatus()) {
        Set<Enrollment> activeOnly = mergedEnrollments.stream().filter(e -> EnrollmentStatus.ACTIVE == e.getStatus()).collect(Collectors.toSet());
        if (!activeOnly.isEmpty()) {
            reporter.addError(enrollment, E1015, tei, program);
        }
    }
    if (Boolean.TRUE.equals(program.getOnlyEnrollOnce()) && !mergedEnrollments.isEmpty()) {
        reporter.addError(enrollment, E1016, tei, program);
    }
}
Also used : java.util(java.util) Preconditions.checkNotNull(com.google.common.base.Preconditions.checkNotNull) TrackedEntityInstance(org.hisp.dhis.trackedentity.TrackedEntityInstance) ValidationErrorReporter(org.hisp.dhis.tracker.report.ValidationErrorReporter) Collectors(java.util.stream.Collectors) EnrollmentStatus(org.hisp.dhis.tracker.domain.EnrollmentStatus) Enrollment(org.hisp.dhis.tracker.domain.Enrollment) Component(org.springframework.stereotype.Component) Stream(java.util.stream.Stream) E1015(org.hisp.dhis.tracker.report.TrackerErrorCode.E1015) TrackerImportValidationContext(org.hisp.dhis.tracker.validation.TrackerImportValidationContext) TrackerImporterAssertErrors(org.hisp.dhis.tracker.validation.hooks.TrackerImporterAssertErrors) E1016(org.hisp.dhis.tracker.report.TrackerErrorCode.E1016) org.hisp.dhis.program(org.hisp.dhis.program) Enrollment(org.hisp.dhis.tracker.domain.Enrollment) TrackedEntityInstance(org.hisp.dhis.trackedentity.TrackedEntityInstance)

Aggregations

Preconditions.checkNotNull (com.google.common.base.Preconditions.checkNotNull)1 java.util (java.util)1 Collectors (java.util.stream.Collectors)1 Stream (java.util.stream.Stream)1 org.hisp.dhis.program (org.hisp.dhis.program)1 TrackedEntityInstance (org.hisp.dhis.trackedentity.TrackedEntityInstance)1 Enrollment (org.hisp.dhis.tracker.domain.Enrollment)1 EnrollmentStatus (org.hisp.dhis.tracker.domain.EnrollmentStatus)1 E1015 (org.hisp.dhis.tracker.report.TrackerErrorCode.E1015)1 E1016 (org.hisp.dhis.tracker.report.TrackerErrorCode.E1016)1 ValidationErrorReporter (org.hisp.dhis.tracker.report.ValidationErrorReporter)1 TrackerImportValidationContext (org.hisp.dhis.tracker.validation.TrackerImportValidationContext)1 TrackerImporterAssertErrors (org.hisp.dhis.tracker.validation.hooks.TrackerImporterAssertErrors)1 Component (org.springframework.stereotype.Component)1