← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 4124: Add a formula to count patients who participated a certain program in Beneficiary Aggregation Que...

 

------------------------------------------------------------
revno: 4124
committer: Tran Chau <tran.hispvietnam@xxxxxxxxx>
branch nick: dhis2
timestamp: Wed 2011-07-13 09:28:39 +0700
message:
  Add a formula to count patients who participated a certain program in Beneficiary Aggregation Query Builder form ( Patient module ).
modified:
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/caseaggregation/CaseAggregationCondition.java
  dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/caseaggregation/DefaultCaseAggregationConditionService.java
  dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseaggregation/CaseAggregationResultAction.java
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/webapp/dhis-web-maintenance-patient/addCaseAggregation.vm
  dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/webapp/dhis-web-maintenance-patient/updateCaseAggregation.vm


--
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/caseaggregation/CaseAggregationCondition.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/caseaggregation/CaseAggregationCondition.java	2011-03-24 16:58:40 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/caseaggregation/CaseAggregationCondition.java	2011-07-13 02:28:39 +0000
@@ -60,7 +60,7 @@
     
     public static String OBJECT_PROGRAM_PROPERTY = "PP";
     
-    
+    public static String OBJECT_PROGRAM = "PG";
 
     // -------------------------------------------------------------------------
     // Fields

=== modified file 'dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/caseaggregation/DefaultCaseAggregationConditionService.java'
--- dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/caseaggregation/DefaultCaseAggregationConditionService.java	2011-07-07 08:03:22 +0000
+++ dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/caseaggregation/DefaultCaseAggregationConditionService.java	2011-07-13 02:28:39 +0000
@@ -30,6 +30,7 @@
 import static org.hisp.dhis.caseaggregation.CaseAggregationCondition.AGGRERATION_SUM;
 import static org.hisp.dhis.caseaggregation.CaseAggregationCondition.OBJECT_PATIENT_ATTRIBUTE;
 import static org.hisp.dhis.caseaggregation.CaseAggregationCondition.OBJECT_PATIENT_PROPERTY;
+import static org.hisp.dhis.caseaggregation.CaseAggregationCondition.OBJECT_PROGRAM;
 import static org.hisp.dhis.caseaggregation.CaseAggregationCondition.OBJECT_PROGRAM_PROPERTY;
 import static org.hisp.dhis.caseaggregation.CaseAggregationCondition.OBJECT_PROGRAM_STAGE_DATAELEMENT;
 import static org.hisp.dhis.caseaggregation.CaseAggregationCondition.OPERATOR_AND;
@@ -69,7 +70,7 @@
 public class DefaultCaseAggregationConditionService
     implements CaseAggregationConditionService
 {
-    private final String regExp = "\\[(" + OBJECT_PROGRAM_STAGE_DATAELEMENT + "|" + OBJECT_PATIENT_ATTRIBUTE + "|"
+    private final String regExp = "\\[(" + OBJECT_PROGRAM + "|" + OBJECT_PROGRAM_STAGE_DATAELEMENT + "|" + OBJECT_PATIENT_ATTRIBUTE + "|"
         + OBJECT_PATIENT_PROPERTY + "|" + OBJECT_PROGRAM_PROPERTY + ")" + SEPARATOR_OBJECT + "([a-zA-Z0-9\\- ]+["
         + SEPARATOR_ID + "[0-9]*]*)" + "\\]";
 
@@ -438,7 +439,11 @@
                 {
                     condition = getConditionForProgramProperty( orgunitId, startDate, endDate ) + info[1];
                 }
-
+				else if ( info[0].equalsIgnoreCase( OBJECT_PROGRAM ) )
+                {
+                    condition = getConditionForProgram( info[1], orgunitId, startDate, endDate );
+                }
+				
                 // -------------------------------------------------------------
                 // Replacing the operand with 1 in order to later be able to
                 // verify
@@ -543,6 +548,16 @@
             + "AND psi.executionDate >= '" + startDate + "' AND psi.executionDate <= '" + endDate + "' AND ";
     }
 
+    private String getConditionForProgram ( String programId,  int orgunitId, String startDate, String endDate )
+    {
+        return "SELECT distinct(p.patientid) FROM programstageinstance as psi "
+        + "INNER JOIN programinstance as pi ON psi.programinstanceid = pi.programinstanceid "
+        + "INNER JOIN patient as p ON p.patientid = pi.patientid "
+        + "WHERE pi.programid=" + programId + " "
+        + "AND p.organisationunitid = " + orgunitId + " "
+        + "AND pi.enrollmentdate >= '" + startDate + "' AND pi.enrollmentdate <= '" + endDate + "' ";
+    }
+
     private String getSQL( List<String> conditions, List<String> operators )
     {
         String sql = conditions.get( 0 );

=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseaggregation/CaseAggregationResultAction.java'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseaggregation/CaseAggregationResultAction.java	2011-05-01 09:07:35 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseaggregation/CaseAggregationResultAction.java	2011-07-13 02:28:39 +0000
@@ -230,54 +230,57 @@
                     CaseAggregationCondition condition = aggregationConditionService.getCaseAggregationCondition(
                         dElement, optionCombo );
 
-                    if ( condition == null )
-                        break;
-
-                    for ( Period period : periodList )
+                    if ( condition != null )
                     {
-                        String message = i18n.getString( "in" ) + " " + format.formatPeriod( period );
-
-                        double resultValue = aggregationConditionService.parseConditition( condition, orgUnit, period );
-
-                        DataValue dataValue = dataValueService.getDataValue( orgUnit, dElement, period, optionCombo );
-
-                        if ( resultValue != 0 )
-                        {
-                            if ( dataValue == null )
-                            {
-                                dataValue = new DataValue( dElement, period, orgUnit, "" + resultValue, storedBy,
-                                    new Date(), null, optionCombo );
-
-                                dataValueService.addDataValue( dataValue );
-                                mapDataValues.put( dataValue, i18n.getString( "added" ) + " " + message );
-                            }
-                            else
-                            {
-                                dataValue.setValue( "" + resultValue );
-                                dataValue.setTimestamp( new Date() );
-                                dataValue.setStoredBy( storedBy );
-
-                                dataValueService.updateDataValue( dataValue );
-
-                                mapDataValues.put( dataValue, i18n.getString( "updated" ) + " " + message );
-                            }
-
-                            mapCaseAggCondition.put( dataValue, condition );
-
-                        }
-                        else if ( dataValue != null )
-                        {
-                            DataValue dvalue = new DataValue( dElement, period, orgUnit, "", storedBy, new Date(),
-                                null, optionCombo );
-                            dvalue.setValue( dataValue.getValue() + " " + i18n.getString( "old_value" ) );
-
-                            dataValueService.deleteDataValue( dataValue );
-
-                            mapDataValues.put( dvalue, i18n.getString( "deleted" ) + " " + message );
+
+                        for ( Period period : periodList )
+                        {
+                            String message = i18n.getString( "in" ) + " " + format.formatPeriod( period );
+
+                            double resultValue = aggregationConditionService.parseConditition( condition, orgUnit,
+                                period );
+
+                            DataValue dataValue = dataValueService
+                                .getDataValue( orgUnit, dElement, period, optionCombo );
+
+                            if ( resultValue != 0 )
+                            {
+                                if ( dataValue == null )
+                                {
+                                    dataValue = new DataValue( dElement, period, orgUnit, "" + resultValue, storedBy,
+                                        new Date(), null, optionCombo );
+
+                                    dataValueService.addDataValue( dataValue );
+                                    mapDataValues.put( dataValue, i18n.getString( "added" ) + " " + message );
+                                }
+                                else
+                                {
+                                    dataValue.setValue( "" + resultValue );
+                                    dataValue.setTimestamp( new Date() );
+                                    dataValue.setStoredBy( storedBy );
+
+                                    dataValueService.updateDataValue( dataValue );
+
+                                    mapDataValues.put( dataValue, i18n.getString( "updated" ) + " " + message );
+                                }
+
+                                mapCaseAggCondition.put( dataValue, condition );
+
+                            }
+                            else if ( dataValue != null )
+                            {
+                                DataValue dvalue = new DataValue( dElement, period, orgUnit, "", storedBy, new Date(),
+                                    null, optionCombo );
+                                dvalue.setValue( dataValue.getValue() + " " + i18n.getString( "old_value" ) );
+
+                                dataValueService.deleteDataValue( dataValue );
+
+                                mapDataValues.put( dvalue, i18n.getString( "deleted" ) + " " + message );
+                            }
+
                         }
 
                     }
-
                 }
             }
 

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/webapp/dhis-web-maintenance-patient/addCaseAggregation.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/webapp/dhis-web-maintenance-patient/addCaseAggregation.vm	2011-05-19 08:12:45 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/webapp/dhis-web-maintenance-patient/addCaseAggregation.vm	2011-07-13 02:28:39 +0000
@@ -147,6 +147,9 @@
 			<tr>
 				<td>
 					<select id="caseProperty" name="caseProperty" size="8" ondblclick="insertInfo(this);" style="width:18em; height:16.5em" >
+						#foreach( $program in $programs )
+							<option value="[PG:$program.id]">$i18n.getString('program'): $encoder.htmlEncode( $program.name )</option>
+						#end
 						<option value="[PP:enrollmentdate - dateofincident]">$i18n.getString( "enrolldate_minus_incidentdate" )</option>
 						<option value="[PP:enrollmentdate]">$i18n.getString( "date_of_enrollment" )</option>
 						<option value="[PP:incidentdate]">$i18n.getString( "date_of_incident" )</option>

=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/webapp/dhis-web-maintenance-patient/updateCaseAggregation.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/webapp/dhis-web-maintenance-patient/updateCaseAggregation.vm	2011-07-08 02:12:00 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/webapp/dhis-web-maintenance-patient/updateCaseAggregation.vm	2011-07-13 02:28:39 +0000
@@ -153,6 +153,9 @@
 			<tr>
 				<td>
 					<select id="caseProperty" name="caseProperty" size="5" ondblclick="insertInfo(this);" style="width:15em; height:14.5em" >
+						#foreach( $program in $programs )
+							<option value="[PG:$program.id]">$i18n.getString('program'): $encoder.htmlEncode( $program.name )</option>
+						#end
 						<option value="[PP:enrollmentdate - dateofincident]">$i18n.getString( "enrolldate_minus_incidentdate" )</option>
 						<option value="[PP:enrollmentdate]">$i18n.getString( "date_of_enrollment" )</option>
 						<option value="[PP:incidentdate]">$i18n.getString( "date_of_incident" )</option>