=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramInstanceService.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramInstanceService.java 2013-09-18 09:50:42 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramInstanceService.java 2013-09-18 13:09:07 +0000 @@ -68,6 +68,8 @@ Collection getProgramInstances( Collection programs, OrganisationUnit organisationUnit ); + Collection getProgramInstances( Collection programs, OrganisationUnit organisationUnit, int status ); + Collection getProgramInstances( Program program, Integer status ); Collection getProgramInstances( Collection programs, Integer status ); === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramInstanceStore.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramInstanceStore.java 2013-09-18 09:50:42 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramInstanceStore.java 2013-09-18 13:09:07 +0000 @@ -52,6 +52,8 @@ Collection get( Collection programs, OrganisationUnit organisationUnit ); + Collection get( Collection programs, OrganisationUnit organisationUnit, int status ); + Collection get( Program program, Integer status ); Collection get( Collection programs, Integer status ); === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/enrollment/AbstractEnrollmentService.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/enrollment/AbstractEnrollmentService.java 2013-09-18 12:19:37 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/enrollment/AbstractEnrollmentService.java 2013-09-18 13:09:07 +0000 @@ -88,6 +88,17 @@ } @Override + public Enrollments getEnrollments( EnrollmentStatus status ) + { + List programs = getProgramsWithRegistration(); + + List programInstances = new ArrayList( + programInstanceService.getProgramInstances( programs, status.getValue() ) ); + + return getEnrollments( programInstances ); + } + + @Override public Enrollments getEnrollments( Person person ) { Patient patient = getPatient( person.getPerson() ); @@ -95,9 +106,18 @@ } @Override - public Enrollments getEnrollments( Patient patient ) - { - List programInstances = new ArrayList( programInstanceService.getProgramInstances( patient ) ); + public Enrollments getEnrollments( Person person, EnrollmentStatus status ) + { + Patient patient = getPatient( person.getPerson() ); + return getEnrollments( patient, status ); + } + + @Override + public Enrollments getEnrollments( Patient patient, EnrollmentStatus status ) + { + List programInstances = new ArrayList( + programInstanceService.getProgramInstances( patient, status.getValue() ) ); + return getEnrollments( programInstances ); } @@ -109,16 +129,34 @@ } @Override + public Enrollments getEnrollments( Program program, EnrollmentStatus status ) + { + List programInstances = new ArrayList( + programInstanceService.getProgramInstances( program, status.getValue() ) ); + + return getEnrollments( programInstances ); + } + + @Override public Enrollments getEnrollments( OrganisationUnit organisationUnit ) { List programs = getProgramsWithRegistration(); - List programInstances = new ArrayList( programInstanceService.getProgramInstances( programs, organisationUnit ) ); return getEnrollments( programInstances ); } @Override + public Enrollments getEnrollments( OrganisationUnit organisationUnit, EnrollmentStatus status ) + { + List programs = getProgramsWithRegistration(); + List programInstances = new ArrayList( + programInstanceService.getProgramInstances( programs, organisationUnit, status.getValue() ) ); + + return getEnrollments( programInstances ); + } + + @Override public Enrollments getEnrollments( Program program, OrganisationUnit organisationUnit ) { return getEnrollments( programInstanceService.getProgramInstances( program, organisationUnit ) ); @@ -132,6 +170,13 @@ } @Override + public Enrollments getEnrollments( Program program, Person person, EnrollmentStatus status ) + { + Patient patient = getPatient( person.getPerson() ); + return getEnrollments( programInstanceService.getProgramInstances( patient, program, status.getValue() ) ); + } + + @Override public Enrollments getEnrollments( Collection programInstances ) { Enrollments enrollments = new Enrollments(); @@ -182,8 +227,17 @@ } Patient patient = getPatient( enrollment.getPerson() ); + Person person = personService.getPerson( patient ); Program program = getProgram( enrollment.getProgram() ); + Enrollments enrollments = getEnrollments( program, person, EnrollmentStatus.ACTIVE ); + + if ( !enrollments.getEnrollments().isEmpty() ) + { + return new ImportSummary( ImportStatus.ERROR, "Person " + person.getPerson() + " already have an active enrollment in program " + + program.getUid() ); + } + ProgramInstance programInstance = programInstanceService.enrollPatient( patient, program, enrollment.getDateOfEnrollment(), enrollment.getDateOfIncident(), patient.getOrganisationUnit(), format ); === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/enrollment/EnrollmentService.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/enrollment/EnrollmentService.java 2013-09-18 12:19:37 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/events/enrollment/EnrollmentService.java 2013-09-18 13:09:07 +0000 @@ -51,16 +51,28 @@ Enrollments getEnrollments(); + Enrollments getEnrollments( EnrollmentStatus status ); + Enrollments getEnrollments( Person person ); + Enrollments getEnrollments( Person person, EnrollmentStatus status ); + Enrollments getEnrollments( Patient patient ); + Enrollments getEnrollments( Patient patient, EnrollmentStatus status ); + Enrollments getEnrollments( Program program ); + Enrollments getEnrollments( Program program, EnrollmentStatus status ); + Enrollments getEnrollments( Program program, Person person ); + Enrollments getEnrollments( Program program, Person person, EnrollmentStatus status ); + Enrollments getEnrollments( OrganisationUnit organisationUnit ); + Enrollments getEnrollments( OrganisationUnit organisationUnit, EnrollmentStatus status ); + Enrollments getEnrollments( Program program, OrganisationUnit organisationUnit ); Enrollments getEnrollments( Collection programInstances ); === modified file 'dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/DefaultProgramInstanceService.java' --- dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/DefaultProgramInstanceService.java 2013-09-18 12:19:37 +0000 +++ dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/DefaultProgramInstanceService.java 2013-09-18 13:09:07 +0000 @@ -195,6 +195,11 @@ return programInstanceStore.get( programs, organisationUnit ); } + public Collection getProgramInstances( Collection programs, OrganisationUnit organisationUnit, int status ) + { + return programInstanceStore.get( programs, organisationUnit, status ); + } + public Collection getProgramInstances( Collection programs, Integer status ) { return programInstanceStore.get( programs, status ); === modified file 'dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramInstanceStore.java' --- dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramInstanceStore.java 2013-09-18 09:50:42 +0000 +++ dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramInstanceStore.java 2013-09-18 13:09:07 +0000 @@ -94,6 +94,14 @@ .add( Restrictions.eq( "patient.organisationUnit", organisationUnit ) ).list(); } + @Override + @SuppressWarnings( "unchecked" ) + public Collection get( Collection programs, OrganisationUnit organisationUnit, int status ) + { + return getCriteria( Restrictions.eq( "status", status ), Restrictions.in( "program", programs ) ).createAlias( "patient", "patient" ) + .add( Restrictions.eq( "patient.organisationUnit", organisationUnit ) ).list(); + } + @SuppressWarnings( "unchecked" ) public Collection get( Program program, Integer status ) { === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/event/EnrollmentController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/event/EnrollmentController.java 2013-09-18 12:19:37 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/event/EnrollmentController.java 2013-09-18 13:09:07 +0000 @@ -34,6 +34,7 @@ import org.hisp.dhis.common.IdentifiableObjectManager; import org.hisp.dhis.dxf2.events.enrollment.Enrollment; import org.hisp.dhis.dxf2.events.enrollment.EnrollmentService; +import org.hisp.dhis.dxf2.events.enrollment.EnrollmentStatus; import org.hisp.dhis.dxf2.events.enrollment.Enrollments; import org.hisp.dhis.dxf2.events.person.Person; import org.hisp.dhis.dxf2.events.person.PersonService; @@ -86,6 +87,7 @@ @RequestParam( value = "orgUnit", required = false ) String orgUnitUid, @RequestParam( value = "program", required = false ) String programUid, @RequestParam( value = "person", required = false ) String personUid, + @RequestParam( value = "status", required = false ) EnrollmentStatus status, @RequestParam Map parameters, Model model, HttpServletRequest request ) throws NotFoundException { WebOptions options = new WebOptions( parameters ); @@ -93,7 +95,7 @@ if ( orgUnitUid == null && programUid == null && personUid == null ) { - enrollments = enrollmentService.getEnrollments(); + enrollments = status != null ? enrollmentService.getEnrollments( status ) : enrollmentService.getEnrollments(); } else if ( orgUnitUid != null && programUid != null ) { @@ -107,22 +109,24 @@ Program program = getProgram( programUid ); Person person = getPerson( personUid ); - enrollments = enrollmentService.getEnrollments( program, person ); + enrollments = status != null ? enrollmentService.getEnrollments( program, person, status ) + : enrollmentService.getEnrollments( program, person ); } else if ( orgUnitUid != null ) { OrganisationUnit organisationUnit = getOrganisationUnit( orgUnitUid ); - enrollments = enrollmentService.getEnrollments( organisationUnit ); + enrollments = status != null ? enrollmentService.getEnrollments( organisationUnit, status ) + : enrollmentService.getEnrollments( organisationUnit ); } else if ( programUid != null ) { Program program = getProgram( programUid ); - enrollments = enrollmentService.getEnrollments( program ); + enrollments = status != null ? enrollmentService.getEnrollments( program, status ) : enrollmentService.getEnrollments( program ); } else { - Person person = getPerson( personUid ); - enrollments = enrollmentService.getEnrollments( person ); + Person person = getPerson( personUid ); + enrollments = status != null ? enrollmentService.getEnrollments( person, status ) : enrollmentService.getEnrollments( person ); } model.addAttribute( "model", enrollments );