=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/PatientService.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/PatientService.java 2013-09-06 09:34:21 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/PatientService.java 2013-09-10 12:18:56 +0000 @@ -122,6 +122,30 @@ Collection getPatients( OrganisationUnit organisationUnit, Integer min, Integer max ); /** + * Search Patient base on organization unit with result limited + * + * @param organisationUnit organisationUnit + * @return Patient List + */ + Collection getPatients( OrganisationUnit organisationUnit ); + + /** + * Search Patient base on organization unit with result limited + * + * @param organisationUnit organisationUnit + * @return Patient List + */ + Collection getPatients( OrganisationUnit organisationUnit, String gender, Integer min, Integer max ); + + /** + * Search Patient base on organization unit with result limited + * + * @param organisationUnit organisationUnit + * @return Patient List + */ + Collection getPatients( OrganisationUnit organisationUnit, String gender ); + + /** * Search Patient base on organization unit and sort the result by * PatientAttribute * @@ -143,7 +167,7 @@ * @param max * @return */ - Collection getPatients( OrganisationUnit organisationUnit, String searchText, Integer min, Integer max ); + Collection getPatientsLikeName( OrganisationUnit organisationUnit, String name, Integer min, Integer max ); /** * Search Patient base on PatientIdentifierType or Attribute or Patient's === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/PatientStore.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/PatientStore.java 2013-09-06 09:34:21 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/PatientStore.java 2013-09-10 12:18:56 +0000 @@ -56,6 +56,8 @@ Collection getByOrgUnit( OrganisationUnit organisationUnit, Integer min, Integer max ); + Collection getByOrgUnitAndGender( OrganisationUnit organisationUnit, String gender, Integer min, Integer max ); + Collection getByOrgUnitProgram( OrganisationUnit organisationUnit, Program program, Integer min, Integer max ); === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/AbstractPersonService.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/AbstractPersonService.java 2013-09-10 11:41:45 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/AbstractPersonService.java 2013-09-10 12:18:56 +0000 @@ -30,6 +30,7 @@ import org.hisp.dhis.i18n.I18nFormat; import org.hisp.dhis.i18n.I18nManager; +import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.patient.Patient; import org.hisp.dhis.patient.PatientService; import org.springframework.beans.factory.annotation.Autowired; @@ -80,6 +81,36 @@ } @Override + public Persons getPersons( OrganisationUnit organisationUnit ) + { + Persons persons = new Persons(); + + List patients = new ArrayList( patientService.getPatients( organisationUnit ) ); + + for ( Patient patient : patients ) + { + persons.getPersons().add( getPerson( patient ) ); + } + + return persons; + } + + @Override + public Persons getPersons( OrganisationUnit organisationUnit, Gender gender ) + { + Persons persons = new Persons(); + + List patients = new ArrayList( patientService.getPatients( organisationUnit, gender.getValue() ) ); + + for ( Patient patient : patients ) + { + persons.getPersons().add( getPerson( patient ) ); + } + + return persons; + } + + @Override public Persons getPersons( Collection patients ) { Persons persons = new Persons(); @@ -136,5 +167,15 @@ @Override public void deletePerson( Person person ) { + Patient patient = patientService.getPatient( person.getPerson() ); + + if ( patient != null ) + { + patientService.deletePatient( patient ); + } + else + { + throw new IllegalArgumentException(); + } } } === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/DateOfBirthType.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/DateOfBirthType.java 2013-09-10 10:46:59 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/DateOfBirthType.java 2013-09-10 12:18:56 +0000 @@ -37,23 +37,23 @@ DECLARED( "D" ), APPROXIMATE( "A" ); - private final String type; + private final String value; - private DateOfBirthType( String type ) + private DateOfBirthType( String value ) { - this.type = type; + this.value = value; } - public String getType() + public String getValue() { - return type; + return value; } public static DateOfBirthType fromString( String text ) { for ( DateOfBirthType dateOfBirthType : DateOfBirthType.values() ) { - if ( text.equals( dateOfBirthType.getType() ) ) + if ( text.equals( dateOfBirthType.getValue() ) ) { return dateOfBirthType; } === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/Gender.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/Gender.java 2013-09-10 10:46:59 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/Gender.java 2013-09-10 12:18:56 +0000 @@ -39,23 +39,23 @@ { MALE( "M" ), FEMALE( "F" ), TRANSGENDER( "T" ); - private String type; + private final String value; - private Gender( String type ) + private Gender( String value ) { - this.type = type; + this.value = value; } - public String getType() + public String getValue() { - return type; + return value; } public static Gender fromString( String text ) { for ( Gender gender : Gender.values() ) { - if ( text.equals( gender.getType() ) ) + if ( text.equals( gender.getValue() ) ) { return gender; } === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/PersonService.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/PersonService.java 2013-09-06 09:34:21 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/event/PersonService.java 2013-09-10 12:18:56 +0000 @@ -28,6 +28,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import org.hisp.dhis.organisationunit.OrganisationUnit; import org.hisp.dhis.patient.Patient; import java.util.Collection; @@ -39,6 +40,10 @@ { Persons getPersons(); + Persons getPersons( OrganisationUnit organisationUnit ); + + Persons getPersons( OrganisationUnit organisationUnit, Gender gender ); + Persons getPersons( Collection patients ); Person getPerson( String uid ); === modified file 'dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/patient/DefaultPatientService.java' --- dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/patient/DefaultPatientService.java 2013-09-08 08:36:32 +0000 +++ dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/patient/DefaultPatientService.java 2013-09-10 12:18:56 +0000 @@ -292,6 +292,24 @@ } @Override + public Collection getPatients( OrganisationUnit organisationUnit ) + { + return patientStore.getByOrgUnit( organisationUnit, 0, Integer.MAX_VALUE ); + } + + @Override + public Collection getPatients( OrganisationUnit organisationUnit, String gender, Integer min, Integer max ) + { + return patientStore.getByOrgUnitAndGender( organisationUnit, gender, min, max ); + } + + @Override + public Collection getPatients( OrganisationUnit organisationUnit, String gender ) + { + return patientStore.getByOrgUnitAndGender( organisationUnit, gender, 0, Integer.MAX_VALUE ); + } + + @Override public Collection getPatients( OrganisationUnit organisationUnit, PatientAttribute patientAttribute, Integer min, Integer max ) { @@ -308,12 +326,12 @@ } @Override - public Collection getPatients( OrganisationUnit organisationUnit, String searchText, Integer min, + public Collection getPatientsLikeName( OrganisationUnit organisationUnit, String name, Integer min, Integer max ) { Collection patients = new ArrayList(); - Collection allPatients = getPatientsByNames( searchText, min, max ); + Collection allPatients = getPatientsByNames( name, min, max ); if ( allPatients.retainAll( getPatients( organisationUnit, min, max ) ) ) { === modified file 'dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/patient/hibernate/HibernatePatientStore.java' --- dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/patient/hibernate/HibernatePatientStore.java 2013-09-10 11:29:23 +0000 +++ dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/patient/hibernate/HibernatePatientStore.java 2013-09-10 12:18:56 +0000 @@ -190,6 +190,24 @@ @Override @SuppressWarnings( "unchecked" ) + public Collection getByOrgUnitAndGender( OrganisationUnit organisationUnit, String gender, Integer min, Integer max ) + { + String hql = "select p from Patient p where p.organisationUnit = :organisationUnit and p.gender = :gender order by p.id DESC"; + + Query query = getQuery( hql ); + query.setEntity( "organisationUnit", organisationUnit ); + query.setString( "gender", gender ); + + if ( min != null && max != null ) + { + query.setFirstResult( min ).setMaxResults( max ); + } + + return query.list(); + } + + @Override + @SuppressWarnings( "unchecked" ) public Collection getByOrgUnitProgram( OrganisationUnit organisationUnit, Program program, Integer min, Integer max ) { === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/event/PersonController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/event/PersonController.java 2013-09-10 10:46:59 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/event/PersonController.java 2013-09-10 12:18:56 +0000 @@ -29,9 +29,12 @@ */ import org.hisp.dhis.api.controller.WebOptions; +import org.hisp.dhis.common.IdentifiableObjectManager; +import org.hisp.dhis.dxf2.event.Gender; import org.hisp.dhis.dxf2.event.Person; import org.hisp.dhis.dxf2.event.PersonService; import org.hisp.dhis.dxf2.event.Persons; +import org.hisp.dhis.organisationunit.OrganisationUnit; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -55,11 +58,33 @@ @Autowired private PersonService personService; - @RequestMapping(value = "", method = RequestMethod.GET) - public String getPersons( @RequestParam Map parameters, Model model, HttpServletRequest request ) throws Exception + @Autowired + private IdentifiableObjectManager manager; + + @RequestMapping( value = "", method = RequestMethod.GET ) + public String getPersons( + @RequestParam( required = false ) String orgUnit, + @RequestParam( required = false ) Gender gender, + @RequestParam Map parameters, Model model, HttpServletRequest request ) throws Exception { WebOptions options = new WebOptions( parameters ); - Persons persons = personService.getPersons(); + Persons persons; + + // it will be required in the future to have at least orgUnit, but for now, we allow no parameters + if ( gender == null && orgUnit == null ) + { + persons = personService.getPersons(); + } + else if ( gender != null ) + { + OrganisationUnit organisationUnit = manager.get( OrganisationUnit.class, orgUnit ); + persons = personService.getPersons( organisationUnit, gender ); + } + else + { + OrganisationUnit organisationUnit = manager.get( OrganisationUnit.class, orgUnit ); + persons = personService.getPersons( organisationUnit ); + } model.addAttribute( "model", persons ); model.addAttribute( "viewClass", options.getViewClass( "basic" ) );