dhis2-devs team mailing list archive
-
dhis2-devs team
-
Mailing list archive
-
Message #16976
[Branch ~dhis2-devs-core/dhis2/trunk] Rev 6609: (patient) Add fuction to get program-stage-instances by due-date. It's used for mobile project.
------------------------------------------------------------
revno: 6609
committer: Tran Chau <tran.hispvietnam@xxxxxxxxx>
branch nick: dhis2
timestamp: Tue 2012-04-17 11:30:42 +0700
message:
(patient) Add fuction to get program-stage-instances by due-date. It's used for mobile project.
modified:
dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceService.java
dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceStore.java
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/hibernate/HibernateProgramStageInstanceStore.java
--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk
Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== 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-04-17 03:46:23 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceService.java 2012-04-17 04:30:42 +0000
@@ -98,4 +98,6 @@
int countProgramStageInstances( ProgramStage programStage, Map<Integer,String> searchingIdenKeys, Map<Integer,String> searchingAttrKeys, Map<Integer,String> searchingDEKeys, Collection<Integer> orgunitIds, Date startDate, Date endDate );
List<Grid> getProgramStageInstancesReport( ProgramInstance programInstance, I18nFormat format, I18n i18n );
+
+ List<ProgramStageInstance> getProgramStages( OrganisationUnit orgunit, Program program, 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-04-11 06:25:02 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceStore.java 2012-04-17 04:30:42 +0000
@@ -77,4 +77,5 @@
int count( ProgramStage programStage, Map<Integer,String> searchingIdenKeys, Map<Integer,String> searchingAttrKeys, Map<Integer,String> searchingKeys, Collection<Integer> orgunitIds, Date startDate, Date endDate );
+ List<ProgramStageInstance> get( OrganisationUnit orgunit, Program program, 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-04-17 03:46:23 +0000
+++ dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/DefaultProgramStageInstanceService.java 2012-04-17 04:30:42 +0000
@@ -336,6 +336,12 @@
return grids;
}
+ public List<ProgramStageInstance> getProgramStages( OrganisationUnit orgunit, Program program, Date startDate,
+ Date endDate )
+ {
+ return programStageInstanceStore.get( orgunit, program, startDate, endDate );
+ }
+
// -------------------------------------------------------------------------
// Supportive methods
// -------------------------------------------------------------------------
=== 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-04-17 03:46:23 +0000
+++ dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramStageInstanceStore.java 2012-04-17 04:30:42 +0000
@@ -44,6 +44,7 @@
import org.hisp.dhis.jdbc.StatementBuilder;
import org.hisp.dhis.organisationunit.OrganisationUnit;
import org.hisp.dhis.patient.Patient;
+import org.hisp.dhis.program.Program;
import org.hisp.dhis.program.ProgramInstance;
import org.hisp.dhis.program.ProgramStage;
import org.hisp.dhis.program.ProgramStageInstance;
@@ -189,52 +190,61 @@
Map<Integer, String> searchingAttrKeys, Map<Integer, String> searchingDEKeys, Collection<Integer> orgunitIds,
Date startDate, Date endDate, boolean orderByOrgunitAsc, boolean orderByExecutionDateByAsc, int min, int max )
{
- String sql = getTabularReportStatement( false, programStage, searchingIdenKeys, searchingAttrKeys,
- searchingDEKeys, orgunitIds, startDate, endDate, orderByOrgunitAsc, orderByExecutionDateByAsc )
- + statementBuilder.limitRecord( min, max );
-
- List<Integer> ids = executeSQL( sql );
-
- List<ProgramStageInstance> programStageInstances = new ArrayList<ProgramStageInstance>();
-
- for ( Integer id : ids )
- {
- programStageInstances.add( get( id ) );
- }
-
- return programStageInstances;
+ String sql = getTabularReportStatement( false, programStage, searchingIdenKeys, searchingAttrKeys,
+ searchingDEKeys, orgunitIds, startDate, endDate, orderByOrgunitAsc, orderByExecutionDateByAsc )
+ + statementBuilder.limitRecord( min, max );
+
+ List<Integer> ids = executeSQL( sql );
+
+ List<ProgramStageInstance> programStageInstances = new ArrayList<ProgramStageInstance>();
+
+ for ( Integer id : ids )
+ {
+ programStageInstances.add( get( id ) );
+ }
+
+ return programStageInstances;
}
public List<ProgramStageInstance> get( ProgramStage programStage, Map<Integer, String> searchingIdenKeys,
Map<Integer, String> searchingAttrKeys, Map<Integer, String> searchingDEKeys, Collection<Integer> orgunitIds,
Date startDate, Date endDate, boolean orderByOrgunitAsc, boolean orderByExecutionDateByAsc )
{
- String sql = getTabularReportStatement( false, programStage, searchingIdenKeys, searchingAttrKeys,
- searchingDEKeys, orgunitIds, startDate, endDate, orderByOrgunitAsc, orderByExecutionDateByAsc );
-
- List<Integer> ids = executeSQL( sql );
-
- List<ProgramStageInstance> programStageInstances = new ArrayList<ProgramStageInstance>();
-
- for ( Integer id : ids )
- {
- programStageInstances.add( get( id ) );
- }
-
- return programStageInstances;
+ String sql = getTabularReportStatement( false, programStage, searchingIdenKeys, searchingAttrKeys,
+ searchingDEKeys, orgunitIds, startDate, endDate, orderByOrgunitAsc, orderByExecutionDateByAsc );
+
+ List<Integer> ids = executeSQL( sql );
+
+ List<ProgramStageInstance> programStageInstances = new ArrayList<ProgramStageInstance>();
+
+ for ( Integer id : ids )
+ {
+ programStageInstances.add( get( id ) );
+ }
+
+ return programStageInstances;
}
public int count( ProgramStage programStage, Map<Integer, String> searchingIdenKeys,
Map<Integer, String> searchingAttrKeys, Map<Integer, String> searchingDEKeys, Collection<Integer> orgunitIds,
Date startDate, Date endDate )
{
- String sql = getTabularReportStatement( true, programStage, searchingIdenKeys, searchingAttrKeys,
- searchingDEKeys, orgunitIds, startDate, endDate, true, true );
- List<Integer> countRow = executeSQL( sql );
-
- return (countRow != null && countRow.size() > 0) ? countRow.get( 0 ) : 0;
- }
-
+ String sql = getTabularReportStatement( true, programStage, searchingIdenKeys, searchingAttrKeys,
+ searchingDEKeys, orgunitIds, startDate, endDate, true, true );
+ List<Integer> countRow = executeSQL( sql );
+
+ return (countRow != null && countRow.size() > 0) ? countRow.get( 0 ) : 0;
+ }
+
+ @SuppressWarnings( "unchecked" )
+ public List<ProgramStageInstance> get( OrganisationUnit orgunit, Program program, Date startDate, Date endDate )
+ {
+ return getCriteria().createAlias( "programStage", "programStage" ).add(
+ Restrictions.eq( "programStage.program", program ) ).add( Restrictions.eq( "organisationUnit", orgunit ) )
+ .add( Restrictions.between( "dueDate", startDate, endDate ) ).list();
+ }
+
+ // -------------------------------------------------------------------------
private String getTabularReportStatement( boolean isCount, ProgramStage programStage,
Map<Integer, String> searchingIdenKeys, Map<Integer, String> searchingAttrKeys,
Map<Integer, String> searchingDEKeys, Collection<Integer> orgunitIds, Date startDate, Date endDate,
@@ -272,8 +282,8 @@
condition += " WHERE psi.executiondate >= '" + DateUtils.getMediumDateString( startDate )
+ "' AND psi.executiondate <= '" + DateUtils.getMediumDateString( endDate ) + "' "
- + " AND psi.organisationunitid in " + splitListHelper( orgunitIds )
- + " AND psi.programstageid = " + programStage.getId() + " ";
+ + " AND psi.organisationunitid in " + splitListHelper( orgunitIds ) + " AND psi.programstageid = "
+ + programStage.getId() + " ";
// ---------------------------------------------------------------------
// Searching program-stage-instances by patient-identifiers
@@ -287,7 +297,8 @@
if ( index )
{
- condition += " AND psi.programstageinstanceid in ( " + sqlID + " WHERE psi.programstageid = " + programStage.getId() + " ";
+ condition += " AND psi.programstageinstanceid in ( " + sqlID + " WHERE psi.programstageid = "
+ + programStage.getId() + " ";
}
condition += " AND pid.patientidentifierTypeid=" + attributeId + " AND lower(pid.identifier) ";
@@ -355,7 +366,7 @@
Integer dataElementId = deKeys.next();
condition += " AND psi.programstageinstanceid in ( " + sqlDE + " WHERE 1=1 ";
-
+
condition += " AND pdv.dataElementid=" + dataElementId + " AND lower(pdv.value) ";
String compareValue = searchingDEKeys.get( dataElementId ).toLowerCase();