← Back to team overview

dhis2-devs team mailing list archive

[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();