=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceService.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceService.java 2012-03-07 02:40:08 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceService.java 2012-03-07 05:54:02 +0000 @@ -87,11 +87,11 @@ List getProgramStageInstances( Patient patient, Boolean completed ); - List searchProgramStageInstances( ProgramStage programStage, Map searchingKeys, OrganisationUnit orgunit, Date startDate, Date endDate, int min, int max ); + List searchProgramStageInstances( ProgramStage programStage, Map searchingKeys, Collection orgunitIds, Date startDate, Date endDate, int min, int max ); - Grid getTabularReport( ProgramStage programStage, List dataElements, Map searchingKeys, OrganisationUnit orgunit, Date startDate, Date endDate, int min, int max, I18nFormat format, I18n i18n ); + Grid getTabularReport( ProgramStage programStage, List dataElements, Map searchingKeys, Collection orgunitIds, Date startDate, Date endDate, int min, int max, I18nFormat format, I18n i18n ); - Grid getTabularReport( ProgramStage programStage, List dataElements, Map searchingKeys, OrganisationUnit orgunit, Date startDate, Date endDate, I18nFormat format, I18n i18n ); + Grid getTabularReport( ProgramStage programStage, List dataElements, Map searchingKeys, Collection orgunitIds, Date startDate, Date endDate, I18nFormat format, I18n i18n ); - int countProgramStageInstances( ProgramStage programStage, Map searchingKeys, OrganisationUnit orgunit, Date startDate, Date endDate ); + int countProgramStageInstances( ProgramStage programStage, Map searchingKeys, Collection orgunitIds, Date startDate, Date endDate ); } === modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceStore.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceStore.java 2012-03-07 02:40:08 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceStore.java 2012-03-07 05:54:02 +0000 @@ -71,10 +71,10 @@ List get( ProgramStage programStage, OrganisationUnit orgunit, Date startDate, Date endDate, int min, int max ); - List get( ProgramStage programStage, Map searchingKeys, OrganisationUnit orgunit, Date startDate, Date endDate, int min, int max ); + List get( ProgramStage programStage, Map searchingKeys, Collection orgunitIds, Date startDate, Date endDate, int min, int max ); - List get( ProgramStage programStage, Map searchingKeys, OrganisationUnit orgunit, Date startDate, Date endDate ); + List get( ProgramStage programStage, Map searchingKeys, Collection orgunitIds, Date startDate, Date endDate ); - int count( ProgramStage programStage, Map searchingKeys, OrganisationUnit orgunit, Date startDate, Date endDate ); + int count( ProgramStage programStage, Map searchingKeys, Collection orgunitIds, Date startDate, Date endDate ); } === modified file 'dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/DefaultProgramStageInstanceService.java' --- dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/DefaultProgramStageInstanceService.java 2012-03-07 02:40:08 +0000 +++ dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/DefaultProgramStageInstanceService.java 2012-03-07 05:54:02 +0000 @@ -186,42 +186,42 @@ } public List searchProgramStageInstances( ProgramStage programStage, - Map searchingKeys, OrganisationUnit orgunit, Date startDate, Date endDate, int min, int max ) + Map searchingKeys, Collection orgunitIds, Date startDate, Date endDate, int min, int max ) { - return programStageInstanceStore.get( programStage, searchingKeys, orgunit, startDate, endDate, min, max ); + return programStageInstanceStore.get( programStage, searchingKeys, orgunitIds, startDate, endDate, min, max ); } public List searchProgramStageInstances( ProgramStage programStage, - Map searchingKeys, OrganisationUnit orgunit, Date startDate, Date endDate ) + Map searchingKeys, Collection orgunitIds, Date startDate, Date endDate ) { - return programStageInstanceStore.get( programStage, searchingKeys, orgunit, startDate, endDate ); + return programStageInstanceStore.get( programStage, searchingKeys, orgunitIds, startDate, endDate ); } public Grid getTabularReport( ProgramStage programStage, List dataElements, - Map searchingKeys, OrganisationUnit orgunit, Date startDate, Date endDate, int min, int max, + Map searchingKeys, Collection orgunitIds, Date startDate, Date endDate, int min, int max, I18nFormat format, I18n i18n ) { List programStageInstances = searchProgramStageInstances( programStage, searchingKeys, - orgunit, startDate, endDate, min, max ); + orgunitIds, startDate, endDate, min, max ); return createTabularGrid( programStage, programStageInstances, dataElements, startDate, endDate, format, i18n ); } public Grid getTabularReport( ProgramStage programStage, List dataElements, - Map searchingKeys, OrganisationUnit orgunit, Date startDate, Date endDate, I18nFormat format, + Map searchingKeys, Collection orgunitIds, Date startDate, Date endDate, I18nFormat format, I18n i18n ) { List programStageInstances = searchProgramStageInstances( programStage, searchingKeys, - orgunit, startDate, endDate ); + orgunitIds, startDate, endDate ); return createTabularGrid( programStage, programStageInstances, dataElements, startDate, endDate, format, i18n ); } @Override public int countProgramStageInstances( ProgramStage programStage, Map searchingKeys, - OrganisationUnit orgunit, Date startDate, Date endDate ) + Collection orgunitIds, Date startDate, Date endDate ) { - return programStageInstanceStore.count( programStage, searchingKeys, orgunit, startDate, endDate ); + return programStageInstanceStore.count( programStage, searchingKeys, orgunitIds, startDate, endDate ); } // ------------------------------------------------------------------------- === modified file 'dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramStageInstanceStore.java' --- dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramStageInstanceStore.java 2012-03-07 02:40:08 +0000 +++ dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramStageInstanceStore.java 2012-03-07 05:54:02 +0000 @@ -132,7 +132,7 @@ @SuppressWarnings( "unchecked" ) public List get( OrganisationUnit unit, Date after, Date before, Boolean completed ) { - String hql = "from ProgramStageInstance where programInstance.patient.organisationUnit = :unit"; + String hql = "from ProgramStageInstance psi where psi.organisationUnit = :unit"; if ( after != null ) { @@ -182,16 +182,17 @@ Date endDate, int min, int max ) { return getCriteria( Restrictions.eq( "programStage", programStage ), - Restrictions.between( "dueDate", startDate, endDate ) ).setFirstResult( min ).setMaxResults( max ).list(); + Restrictions.eq( "organisationUnit", orgunit ), Restrictions.between( "dueDate", startDate, endDate ) ) + .setFirstResult( min ).setMaxResults( max ).list(); } @SuppressWarnings( "unchecked" ) public List get( ProgramStage programStage, Map searchingKeys, - OrganisationUnit orgunit, Date startDate, Date endDate, int min, int max ) + Collection orgunitIds, Date startDate, Date endDate, int min, int max ) { if ( searchingKeys.keySet().size() > 0 ) { - String sql = getBySearchingValues( false, programStage, searchingKeys, orgunit, startDate, endDate ) + String sql = getBySearchingValues( false, programStage, searchingKeys, orgunitIds, startDate, endDate ) + statementBuilder.limitRecord( min, max ); List ids = executeSQL( sql ); @@ -205,19 +206,20 @@ return programStageInstances; } - - return (getCriteria( Restrictions.eq( "programStage", programStage ), Restrictions.eq( "organisationUnit", - orgunit ), Restrictions.between( "dueDate", startDate, endDate ) )).setFirstResult( min ).setMaxResults( max ).list(); + + return (getCriteria( Restrictions.eq( "programStage", programStage ), Restrictions.in( "organisationUnit.id", + orgunitIds ), Restrictions.between( "dueDate", startDate, endDate ) )).setFirstResult( min ).setMaxResults( + max ).list(); } - + @SuppressWarnings( "unchecked" ) public List get( ProgramStage programStage, Map searchingKeys, - OrganisationUnit orgunit, Date startDate, Date endDate ) + Collection orgunitIds, Date startDate, Date endDate ) { if ( searchingKeys.keySet().size() > 0 ) { - String sql = getBySearchingValues( false, programStage, searchingKeys, orgunit, startDate, endDate ); - + String sql = getBySearchingValues( false, programStage, searchingKeys, orgunitIds, startDate, endDate ); + List ids = executeSQL( sql ); List programStageInstances = new ArrayList(); @@ -229,37 +231,37 @@ return programStageInstances; } - - return (getCriteria( Restrictions.eq( "programStage", programStage ), Restrictions.eq( "organisationUnit", - orgunit ), Restrictions.between( "dueDate", startDate, endDate ) )).list(); + + return (getCriteria( Restrictions.eq( "programStage", programStage ), Restrictions.in( "organisationUnit.id", + orgunitIds ), Restrictions.between( "dueDate", startDate, endDate ) )).list(); } - public int count( ProgramStage programStage, Map searchingKeys, OrganisationUnit orgunit, + public int count( ProgramStage programStage, Map searchingKeys, Collection orgunitIds, Date startDate, Date endDate ) { if ( searchingKeys.keySet().size() > 0 ) { - String sql = getBySearchingValues( true, programStage, searchingKeys, orgunit, startDate, endDate ); + String sql = getBySearchingValues( true, programStage, searchingKeys, orgunitIds, startDate, endDate ); List countRow = executeSQL( sql ); return (countRow != null && countRow.size() > 0) ? countRow.get( 0 ) : 0; } - Number rs = (Number) (getCriteria( Restrictions.eq( "programStage", programStage ), Restrictions.eq( - "organisationUnit", orgunit ), Restrictions.between( "dueDate", startDate, endDate ) )).setProjection( - Projections.rowCount() ).uniqueResult(); + Number rs = (Number) (getCriteria( Restrictions.eq( "programStage", programStage ), Restrictions.in( + "organisationUnit.id", orgunitIds ), Restrictions.between( "dueDate", startDate, endDate ) )) + .setProjection( Projections.rowCount() ).uniqueResult(); return rs != null ? rs.intValue() : 0; } private String getBySearchingValues( boolean isCount, ProgramStage programStage, - Map searchingKeys, OrganisationUnit orgunit, Date startDate, Date endDate ) + Map searchingKeys, Collection orgunitIds, Date startDate, Date endDate ) { String sql = "select distinct( psi.programstageinstanceid) from patientdatavalue pdv " + "inner join programstageinstance psi on pdv.programstageinstanceid=psi.programstageinstanceid "; String condition = " WHERE psi.duedate >= '" + DateUtils.getMediumDateString( startDate ) + "' AND psi.duedate <= '" + DateUtils.getMediumDateString( endDate ) + "' " - + " AND psi.organisationunitid=" + orgunit.getId() + " "; + + " AND psi.organisationunitid in( " + orgunitIds + ") "; Iterator keys = searchingKeys.keySet().iterator(); boolean index = false; === modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/report/GenerateTabularReportAction.java' --- dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/report/GenerateTabularReportAction.java 2012-03-05 04:22:57 +0000 +++ dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/report/GenerateTabularReportAction.java 2012-03-07 05:54:02 +0000 @@ -43,6 +43,8 @@ import org.hisp.dhis.i18n.I18n; import org.hisp.dhis.i18n.I18nFormat; import org.hisp.dhis.organisationunit.OrganisationUnit; +import org.hisp.dhis.organisationunit.OrganisationUnitHierarchy; +import org.hisp.dhis.organisationunit.OrganisationUnitService; import org.hisp.dhis.paging.ActionPagingSupport; import org.hisp.dhis.program.ProgramInstance; import org.hisp.dhis.program.ProgramInstanceService; @@ -70,6 +72,13 @@ this.selectedStateManager = selectedStateManager; } + private OrganisationUnitService organisationUnitService; + + public void setOrganisationUnitService( OrganisationUnitService organisationUnitService ) + { + this.organisationUnitService = organisationUnitService; + } + private ProgramStageService programStageService; public void setProgramStageService( ProgramStageService programStageService ) @@ -172,6 +181,13 @@ this.type = type; } + private String facilityLB; + + public void setFacilityLB( String facilityLB ) + { + this.facilityLB = facilityLB; + } + // ------------------------------------------------------------------------- // Implementation Action // ------------------------------------------------------------------------- @@ -179,7 +195,35 @@ public String execute() throws Exception { - OrganisationUnit organisationUnit = selectedStateManager.getSelectedOrganisationUnit(); + // --------------------------------------------------------------------- + // Get orgunitIds + // --------------------------------------------------------------------- + + OrganisationUnit selectedOrgunit = selectedStateManager.getSelectedOrganisationUnit(); + + Set orgunitIds = new HashSet(); + + if ( facilityLB.equals( "random" ) ) + { + orgunitIds.add( selectedOrgunit.getId() ); + } + else + { + OrganisationUnitHierarchy hierarchy = organisationUnitService.getOrganisationUnitHierarchy(); + + Set childOrgUnitIdentifiers = hierarchy.getChildren( selectedOrgunit.getId() ); + + orgunitIds.addAll( childOrgUnitIdentifiers ); + + if ( facilityLB.equals( "immChildren" ) ) + { + orgunitIds.remove( selectedOrgunit.getId() ); + } + } + + // --------------------------------------------------------------------- + // Get program-stage, start-date, end-date + // --------------------------------------------------------------------- ProgramStage programStage = programStageService.getProgramStage( programStageId ); @@ -189,11 +233,19 @@ dataElements = new ArrayList(); + // --------------------------------------------------------------------- + // Get selected dataelements + // --------------------------------------------------------------------- + for ( Integer dataElementId : dataElementIds ) { dataElements.add( dataElementService.getDataElement( dataElementId ) ); } + // --------------------------------------------------------------------- + // Get searching-keys + // --------------------------------------------------------------------- + Map searchingKeys = new HashMap(); for ( String searchingValue : searchingValues ) @@ -203,20 +255,24 @@ searchingKeys.put( Integer.parseInt( infor[0] ), infor[1] ); } + // --------------------------------------------------------------------- + // Generate tabular report + // --------------------------------------------------------------------- + if ( type == null ) { total = programStageInstanceService.countProgramStageInstances( programStage, searchingKeys, - organisationUnit, startValue, endValue ); + orgunitIds, startValue, endValue ); this.paging = createPaging( total ); grid = programStageInstanceService.getTabularReport( programStage, dataElements, searchingKeys, - organisationUnit, startValue, endValue, paging.getStartPos(), paging.getPageSize(), format, i18n ); + orgunitIds, startValue, endValue, paging.getStartPos(), paging.getPageSize(), format, i18n ); return SUCCESS; } - + grid = programStageInstanceService.getTabularReport( programStage, dataElements, searchingKeys, - organisationUnit, startValue, endValue, format, i18n ); + orgunitIds, startValue, endValue, format, i18n ); return type; } === modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/resources/META-INF/dhis/beans.xml' --- dhis-2/dhis-web/dhis-web-caseentry/src/main/resources/META-INF/dhis/beans.xml 2012-03-07 02:40:08 +0000 +++ dhis-2/dhis-web/dhis-web-caseentry/src/main/resources/META-INF/dhis/beans.xml 2012-03-07 05:54:02 +0000 @@ -285,6 +285,8 @@ ref="org.hisp.dhis.program.ProgramStageInstanceService" /> + === modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/resources/org/hisp/dhis/caseentry/i18n_module.properties' --- dhis-2/dhis-web/dhis-web-caseentry/src/main/resources/org/hisp/dhis/caseentry/i18n_module.properties 2012-03-07 02:40:08 +0000 +++ dhis-2/dhis-web/dhis-web-caseentry/src/main/resources/org/hisp/dhis/caseentry/i18n_module.properties 2012-03-07 05:54:02 +0000 @@ -36,7 +36,8 @@ registration_date=Date of Registration full_name=Full Name entry=Entry -data_element=Data Element +available_data_elements=Available Data Element +selected_data_elements=Selected Data Element nr=Number program_stage=Program Stage specify_a_search_criteria=Please specify your search criteria @@ -250,7 +251,7 @@ see_history_plan=See history / plan name_based_data_entry=Name-based data entry multiple_name_based_data_entry=Multiple name-based data entry -ga_facilityby=Organisation Unit By +facility_by=Organisation Unit By saved = Saved save_selected_values = Save selected values save_all_values = Save all values @@ -264,4 +265,6 @@ set_complete_status = Set complete status orgunit_provided_service = Organisation unit provided service how_to_search_tabular_report = Quotes (") match phrases. Text values support %%, %=, %= and =. Numeric values support >=, >, <=, <, = and != operators. -syntax_error_in_search_value = Syntax error is in search value \ No newline at end of file +syntax_error_in_search_value = Syntax error is in search value +remove_selected_data_elements = Please remove selected data elements to select other program stage. Do you want to remove them ? +add_selected = Add selected === modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/caseAggregationForm.vm' --- dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/caseAggregationForm.vm 2011-11-07 07:56:20 +0000 +++ dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/caseAggregationForm.vm 2012-03-07 05:54:02 +0000 @@ -49,7 +49,7 @@ - $i18n.getString( "ga_facilityby" ) + $i18n.getString( "facility_by" )

-
+
- + - -
+
+