← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 13008: Fixed bug in searching anonymous event in entry form.

 

------------------------------------------------------------
revno: 13008
committer: Tran Chau <tran.hispvietnam@xxxxxxxxx>
branch nick: dhis2
timestamp: Mon 2013-11-25 10:07:49 +0700
message:
  Fixed bug in searching anonymous event in entry form.
removed:
  dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/jsonProgramStageSections.vm
  dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/jsonProgramStages.vm
  dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/jsonUsers.vm
added:
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/TabularEventColumn.java
  dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/SearchEventsAction.java
  dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/ajax/jsonProgramStageSections.vm
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
  dhis-2/dhis-services/dhis-service-patient/src/main/resources/META-INF/dhis/beans.xml
  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/struts.xml
  dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/javascript/anonymousRegistration.js
  dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/ajax/jsonProgramStages.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/program/ProgramStageInstanceService.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceService.java	2013-11-19 03:45:56 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceService.java	2013-11-25 03:07:49 +0000
@@ -238,7 +238,8 @@
     int getOverDueEventCount( ProgramStage programStage, Collection<Integer> orgunitIds, Date startDate, Date endDate );
 
     /**
-     * Get the number of program instances completed, includes all program stage instances were completed
+     * Get the number of program instances completed, includes all program stage
+     * instances were completed
      * 
      * @param program Program
      * @param orgunitIds The ids of orgunits where the events happened
@@ -336,4 +337,10 @@
     ProgramStageInstance createProgramStageInstance( Patient patient, Program program, Date executionDate,
         OrganisationUnit organisationUnit );
 
+    Grid searchEvents( ProgramStage programStage, List<TabularEventColumn> columns,
+        Collection<Integer> organisationUnits, Date startDate, Date endDate, Boolean completed, Integer min,
+        Integer max, I18n i18n );
+
+    int searchEventsCount( ProgramStage programStage, List<TabularEventColumn> columns,
+        Collection<Integer> organisationUnits, Boolean completed, 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	2013-11-04 06:00:38 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceStore.java	2013-11-25 03:07:49 +0000
@@ -221,8 +221,7 @@
      *        LATE_VISIT_STATUS
      * @return A number
      */
-    int averageNumberCompleted( Program program, Collection<Integer> orgunitIds, Date after, Date before,
-        int status );
+    int averageNumberCompleted( Program program, Collection<Integer> orgunitIds, Date after, Date before, int status );
 
     /**
      * Get ids of orgunits where events happened in a period
@@ -246,4 +245,10 @@
      * @return Grid
      */
     Grid getCompleteness( Collection<Integer> orgunitIds, Program program, String startDate, String endDate, I18n i18n );
+
+    Grid searchEvent( ProgramStage programStage, Collection<Integer> orgUnits, List<TabularEventColumn> columns,
+        Date startDate, Date endDate, Boolean completed, Integer min, Integer max, I18n i18n );
+
+    int searchEventsCount( ProgramStage programStage, List<TabularEventColumn> columns,
+        Collection<Integer> organisationUnits, Date startDate, Date endDate, Boolean completed );
 }

=== added file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/TabularEventColumn.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/TabularEventColumn.java	1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/TabularEventColumn.java	2013-11-25 03:07:49 +0000
@@ -0,0 +1,171 @@
+/*
+ * Copyright (c) 2004-2013, University of Oslo
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright notice, this
+ *   list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ *   this list of conditions and the following disclaimer in the documentation
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the HISP project nor the names of its contributors may
+ *   be used to endorse or promote products derived from this software without
+ *   specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.hisp.dhis.program;
+
+/**
+ * @author Chau Thu Tran
+ * 
+ * @version $ TabularEventColumn.java Nov 22, 2013 1:13:39 PM $
+ */
+public class TabularEventColumn
+{
+    public static String PREFIX_DATA_ELEMENT = "de";
+
+    public static String PREFIX_NUMBER_DATA_ELEMENT = "numberDe";
+
+    private String prefix;
+
+    private String identifier;
+
+    private boolean hidden;
+
+    private String query;
+
+    private String operator;
+
+    private String name;
+
+    private boolean dateType;
+
+    // -------------------------------------------------------------------------
+    // Constructor
+    // -------------------------------------------------------------------------
+
+    public TabularEventColumn()
+    {
+    }
+
+    public TabularEventColumn( String prefix, String identifier, String name, boolean hidden, String operator,
+        String query )
+    {
+        this.prefix = prefix;
+        this.identifier = identifier;
+        this.name = name;
+        this.hidden = hidden;
+        this.query = query;
+        this.operator = operator;
+    }
+
+    // -------------------------------------------------------------------------
+    // Logic
+    // -------------------------------------------------------------------------
+
+    public boolean hasQuery()
+    {
+        return (operator != null && !operator.isEmpty()) || (query != null && !query.isEmpty());
+    }
+
+    public Integer getIdentifierAsInt()
+    {
+        return identifier != null ? Integer.parseInt( identifier ) : null;
+    }
+
+    public boolean isDataElement()
+    {
+        return PREFIX_DATA_ELEMENT.equals( prefix ) || PREFIX_NUMBER_DATA_ELEMENT.equals( prefix );
+    }
+
+    public boolean isNumberDataElement()
+    {
+        return PREFIX_NUMBER_DATA_ELEMENT.equals( prefix );
+    }
+
+    // -------------------------------------------------------------------------
+    // Get methods
+    // -------------------------------------------------------------------------
+
+    public String getPrefix()
+    {
+        return prefix;
+    }
+
+    public void setPrefix( String prefix )
+    {
+        this.prefix = prefix;
+    }
+
+    public String getIdentifier()
+    {
+        return identifier;
+    }
+
+    public void setIdentifier( String identifier )
+    {
+        this.identifier = identifier;
+    }
+
+    public boolean isHidden()
+    {
+        return hidden;
+    }
+
+    public void setHidden( boolean hidden )
+    {
+        this.hidden = hidden;
+    }
+
+    public String getQuery()
+    {
+        return query;
+    }
+
+    public void setQuery( String query )
+    {
+        this.query = query;
+    }
+
+    public String getName()
+    {
+        return name;
+    }
+
+    public void setName( String name )
+    {
+        this.name = name;
+    }
+
+    public boolean isDateType()
+    {
+        return dateType;
+    }
+
+    public void setDateType( boolean dateType )
+    {
+        this.dateType = dateType;
+    }
+
+    public String getOperator()
+    {
+        return operator;
+    }
+
+    public void setOperator( String operator )
+    {
+        this.operator = operator;
+    }
+}

=== 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	2013-11-19 03:45:56 +0000
+++ dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/DefaultProgramStageInstanceService.java	2013-11-25 03:07:49 +0000
@@ -528,7 +528,7 @@
     {
         Collection<MessageConversation> messageConversations = new HashSet<MessageConversation>();
 
-        Collection<PatientReminder> reminders = programStageInstance.getProgramStage().getPatientReminders(); 
+        Collection<PatientReminder> reminders = programStageInstance.getProgramStage().getPatientReminders();
         for ( PatientReminder rm : reminders )
         {
             if ( rm != null
@@ -670,10 +670,27 @@
         programStageInstance.setOrganisationUnit( organisationUnit );
 
         addProgramStageInstance( programStageInstance );
-        
+
         return programStageInstance;
     }
 
+    @Override
+    public Grid searchEvents( ProgramStage programStage, List<TabularEventColumn> columns,
+        Collection<Integer> organisationUnits, Date startDate, Date endDate, Boolean completed, Integer min,
+        Integer max, I18n i18n )
+    {
+        return programStageInstanceStore.searchEvent( programStage, organisationUnits, columns, startDate, endDate,
+            completed, min, max, i18n );
+    }
+
+    @Override
+    public int searchEventsCount( ProgramStage programStage, List<TabularEventColumn> columns,
+        Collection<Integer> organisationUnits, Boolean completed, Date startDate, Date endDate )
+    {
+        return programStageInstanceStore.searchEventsCount( programStage, columns, organisationUnits, startDate,
+            endDate, completed );
+    }
+
     // -------------------------------------------------------------------------
     // 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	2013-11-19 03:45:56 +0000
+++ dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramStageInstanceStore.java	2013-11-25 03:07:49 +0000
@@ -34,6 +34,7 @@
 import java.util.Date;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 import org.hibernate.Criteria;
 import org.hibernate.criterion.Order;
@@ -43,6 +44,7 @@
 import org.hisp.dhis.common.GridHeader;
 import org.hisp.dhis.common.hibernate.HibernateIdentifiableObjectStore;
 import org.hisp.dhis.i18n.I18n;
+import org.hisp.dhis.jdbc.StatementBuilder;
 import org.hisp.dhis.organisationunit.OrganisationUnit;
 import org.hisp.dhis.patient.Patient;
 import org.hisp.dhis.patient.PatientReminder;
@@ -54,9 +56,11 @@
 import org.hisp.dhis.program.ProgramStageInstance;
 import org.hisp.dhis.program.ProgramStageInstanceStore;
 import org.hisp.dhis.program.SchedulingProgramObject;
+import org.hisp.dhis.program.TabularEventColumn;
 import org.hisp.dhis.sms.outbound.OutboundSms;
 import org.hisp.dhis.system.grid.GridUtils;
 import org.hisp.dhis.system.grid.ListGrid;
+import org.hisp.dhis.system.util.DateUtils;
 import org.hisp.dhis.system.util.TextUtils;
 import org.springframework.jdbc.support.rowset.SqlRowSet;
 
@@ -78,6 +82,13 @@
         this.programInstanceService = programInstanceService;
     }
 
+    private StatementBuilder statementBuilder;
+
+    public void setStatementBuilder( StatementBuilder statementBuilder )
+    {
+        this.statementBuilder = statementBuilder;
+    }
+
     // -------------------------------------------------------------------------
     // Implemented methods
     // -------------------------------------------------------------------------
@@ -483,8 +494,10 @@
         {
             criteria.add( Restrictions.not( Restrictions.in( "programInstance", programInstances ) ) );
         }
-System.out.println("\n\n\n ............. \n programInstances : " + programInstances.iterator().next().getProgram().getName() );
-System.out.println("\n\n\n ............. \n stageInstances : " + programInstances.iterator().next().getProgramStageInstances() );
+        System.out.println( "\n\n\n ............. \n programInstances : "
+            + programInstances.iterator().next().getProgram().getName() );
+        System.out.println( "\n\n\n ............. \n stageInstances : "
+            + programInstances.iterator().next().getProgramStageInstances() );
         Number rs = (Number) criteria.setProjection( Projections.rowCount() ).uniqueResult();
         return rs != null ? rs.intValue() : 0;
     }
@@ -500,6 +513,60 @@
         return criteria.list();
     }
 
+    @Override
+    public Grid searchEvent( ProgramStage programStage, Collection<Integer> orgUnits, List<TabularEventColumn> columns,
+        Date startDate, Date endDate, Boolean completed, Integer min, Integer max, I18n i18n )
+    {
+        // ---------------------------------------------------------------------
+        // Headers cols
+        // ---------------------------------------------------------------------
+
+        Grid grid = new ListGrid();
+        grid.setTitle( programStage.getDisplayName() );
+        grid.setSubtitle( i18n.getString( "from" ) + " " + DateUtils.getMediumDateString( startDate ) + " "
+            + i18n.getString( "to" ) + " " + DateUtils.getMediumDateString( endDate ) );
+
+        grid.addHeader( new GridHeader( "id", true, true ) );
+        grid.addHeader( new GridHeader( programStage.getReportDateDescription(), false, true ) );
+
+        Collection<String> deKeys = new HashSet<String>();
+        for ( TabularEventColumn column : columns )
+        {
+            String deKey = "element_" + column.getIdentifier();
+            if ( !deKeys.contains( deKey ) )
+            {
+                grid.addHeader( new GridHeader( column.getName(), column.isHidden(), true ) );
+                deKeys.add( deKey );
+            }
+        }
+
+        grid.addHeader( new GridHeader( "Complete", true, true ) );
+        grid.addHeader( new GridHeader( "PatientId", true, true ) );
+
+        // ---------------------------------------------------------------------
+        // Get SQL and build grid
+        // ---------------------------------------------------------------------
+
+        String sql = getTabularReportSql( false, programStage, columns, orgUnits, startDate, endDate, completed, min,
+            max );
+
+        SqlRowSet rowSet = jdbcTemplate.queryForRowSet( sql );
+
+        GridUtils.addRows( grid, rowSet );
+
+        return grid;
+    }
+
+    @Override
+    public int searchEventsCount( ProgramStage programStage, List<TabularEventColumn> columns,
+        Collection<Integer> organisationUnits, Date startDate, Date endDate, Boolean completed )
+    {
+        String sql = getTabularReportSql( true, programStage, columns, organisationUnits, startDate, endDate,
+            completed, null, null );
+
+        return jdbcTemplate.queryForObject( sql, Integer.class );
+    }
+
     // ---------------------------------------------------------------------
     // Supportive methods
     // ---------------------------------------------------------------------
@@ -653,4 +720,101 @@
             + "       and (  now() - psi.duedate ) = prm.daysallowedsendmessage "
             + "       and prm.whentosend is null " + "       and prm.sendto = " + PatientReminder.SEND_TO_USER_GROUP;
     }
+
+    private String getTabularReportSql( boolean count, ProgramStage programStage, List<TabularEventColumn> columns,
+        Collection<Integer> orgUnits, Date startDate, Date endDate, Boolean completed, Integer min, Integer max )
+    {
+        Set<String> deKeys = new HashSet<String>();
+        String selector = count ? "count(*) " : "* ";
+
+        String sql = "select " + selector + "from ( select DISTINCT psi.programstageinstanceid, psi.executiondate,";
+        String where = "";
+        String operator = "where ";
+
+        for ( TabularEventColumn column : columns )
+        {
+            if ( column.isNumberDataElement() )
+            {
+                String deKey = "element_" + column.getIdentifier();
+                if ( !deKeys.contains( deKey ) )
+                {
+                    sql += "(select cast( value as "
+                        + statementBuilder.getDoubleColumnType()
+                        + " ) from patientdatavalue where programstageinstanceid=psi.programstageinstanceid and dataelementid="
+                        + column.getIdentifier() + ") as element_" + column.getIdentifier() + ",";
+                    deKeys.add( deKey );
+                }
+
+                if ( column.hasQuery() )
+                {
+                    where += operator + "element_" + column.getIdentifier() + " " + column.getOperator() + " "
+                        + column.getQuery() + " ";
+                    operator = "and ";
+                }
+            }
+            else if ( column.isDataElement() )
+            {
+                String deKey = "element_" + column.getIdentifier();
+                if ( !deKeys.contains( deKey ) )
+                {
+                    sql += "(select value from patientdatavalue where programstageinstanceid=psi.programstageinstanceid and dataelementid="
+                        + column.getIdentifier() + ") as element_" + column.getIdentifier() + ",";
+                    deKeys.add( deKey );
+                }
+
+                if ( column.hasQuery() )
+                {
+                    if ( column.isDateType() )
+                    {
+                        where += operator + "element_" + column.getIdentifier() + " " + column.getOperator() + " "
+                            + column.getQuery() + " ";
+                    }
+                    else
+                    {
+                        where += operator + "lower(element_" + column.getIdentifier() + ") " + column.getOperator()
+                            + " " + column.getQuery() + " ";
+                    }
+                    operator = "and ";
+                }
+            }
+        }
+
+        sql += " psi.completed ";
+
+        sql += "from programstageinstance psi ";
+        sql += "left join programinstance pi on (psi.programinstanceid=pi.programinstanceid) ";
+        sql += "left join patient p on (pi.patientid=p.patientid) ";
+        sql += "join organisationunit ou on (ou.organisationunitid=psi.organisationunitid) ";
+
+        sql += "where psi.programstageid=" + programStage.getId() + " ";
+
+        if ( startDate != null && endDate != null )
+        {
+            String sDate = DateUtils.getMediumDateString( startDate );
+            String eDate = DateUtils.getMediumDateString( endDate );
+
+            sql += "and psi.executiondate >= '" + sDate + "' ";
+            sql += "and psi.executiondate <= '" + eDate + "' ";
+        }
+
+        if ( orgUnits != null )
+        {
+            sql += "and ou.organisationunitid in (" + TextUtils.getCommaDelimitedString( orgUnits ) + ") ";
+        }
+        if ( completed != null )
+        {
+            sql += "and psi.completed=" + completed + " ";
+        }
+
+        sql += "order by psi.executiondate desc ";
+
+        sql += " ";
+        sql += ") as tabular ";
+        sql += where; // filters
+        sql = sql.substring( 0, sql.length() - 1 ) + " "; // Remove last comma
+        sql += (min != null && max != null) ? statementBuilder.limitRecord( min, max ) : "";
+
+        return sql;
+    }
+
 }
\ No newline at end of file

=== modified file 'dhis-2/dhis-services/dhis-service-patient/src/main/resources/META-INF/dhis/beans.xml'
--- dhis-2/dhis-services/dhis-service-patient/src/main/resources/META-INF/dhis/beans.xml	2013-11-04 03:13:27 +0000
+++ dhis-2/dhis-services/dhis-service-patient/src/main/resources/META-INF/dhis/beans.xml	2013-11-25 03:07:49 +0000
@@ -30,6 +30,7 @@
 		<property name="sessionFactory" ref="sessionFactory" />
 		<property name="jdbcTemplate" ref="jdbcTemplate" />
 		<property name="programInstanceService" ref="org.hisp.dhis.program.ProgramInstanceService" />
+		<property name="statementBuilder" ref="statementBuilder" />
 	</bean>
 
 	<bean id="org.hisp.dhis.program.ProgramInstanceStore"

=== added file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/SearchEventsAction.java'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/SearchEventsAction.java	1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/SearchEventsAction.java	2013-11-25 03:07:49 +0000
@@ -0,0 +1,467 @@
+/*
+ * Copyright (c) 2004-2013, University of Oslo
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright notice, this
+ *   list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ *   this list of conditions and the following disclaimer in the documentation
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the HISP project nor the names of its contributors may
+ *   be used to endorse or promote products derived from this software without
+ *   specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package org.hisp.dhis.caseentry.action.caseentry;
+
+import static org.hisp.dhis.patientreport.PatientTabularReport.PREFIX_DATA_ELEMENT;
+import static org.hisp.dhis.patientreport.PatientTabularReport.PREFIX_NUMBER_DATA_ELEMENT;
+import static org.hisp.dhis.patientreport.PatientTabularReport.VALUE_TYPE_OPTION_SET;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.hibernate.exception.SQLGrammarException;
+import org.hisp.dhis.common.Grid;
+import org.hisp.dhis.dataelement.DataElement;
+import org.hisp.dhis.dataelement.DataElementService;
+import org.hisp.dhis.i18n.I18n;
+import org.hisp.dhis.i18n.I18nFormat;
+import org.hisp.dhis.organisationunit.OrganisationUnit;
+import org.hisp.dhis.organisationunit.OrganisationUnitService;
+import org.hisp.dhis.paging.ActionPagingSupport;
+import org.hisp.dhis.patient.PatientAttribute;
+import org.hisp.dhis.patient.PatientIdentifierType;
+import org.hisp.dhis.program.ProgramStage;
+import org.hisp.dhis.program.ProgramStageInstance;
+import org.hisp.dhis.program.ProgramStageInstanceService;
+import org.hisp.dhis.program.ProgramStageService;
+import org.hisp.dhis.program.TabularEventColumn;
+import org.hisp.dhis.system.util.TextUtils;
+import org.hisp.dhis.user.CurrentUserService;
+
+/**
+ * @author Chau Thu Tran
+ * 
+ * @version $ SearchEventsAction.java Nov 22, 2013 1:06:04 PM $
+ */
+public class SearchEventsAction
+    extends ActionPagingSupport<ProgramStageInstance>
+{
+    // -------------------------------------------------------------------------
+    // Dependencies
+    // -------------------------------------------------------------------------
+
+    private OrganisationUnitService organisationUnitService;
+
+    public void setOrganisationUnitService( OrganisationUnitService organisationUnitService )
+    {
+        this.organisationUnitService = organisationUnitService;
+    }
+
+    private ProgramStageService programStageService;
+
+    public void setProgramStageService( ProgramStageService programStageService )
+    {
+        this.programStageService = programStageService;
+    }
+
+    private DataElementService dataElementService;
+
+    public void setDataElementService( DataElementService dataElementService )
+    {
+        this.dataElementService = dataElementService;
+    }
+
+    private ProgramStageInstanceService programStageInstanceService;
+
+    public void setProgramStageInstanceService( ProgramStageInstanceService programStageInstanceService )
+    {
+        this.programStageInstanceService = programStageInstanceService;
+    }
+
+    private CurrentUserService currentUserService;
+
+    public void setCurrentUserService( CurrentUserService currentUserService )
+    {
+        this.currentUserService = currentUserService;
+    }
+
+    // -------------------------------------------------------------------------
+    // Input/Output
+    // -------------------------------------------------------------------------
+
+    private List<PatientIdentifierType> identifierTypes = new ArrayList<PatientIdentifierType>();
+
+    public List<PatientIdentifierType> getIdentifierTypes()
+    {
+        return identifierTypes;
+    }
+
+    private List<PatientAttribute> patientAttributes = new ArrayList<PatientAttribute>();
+
+    public List<PatientAttribute> getPatientAttributes()
+    {
+        return patientAttributes;
+    }
+
+    private Collection<Integer> orgunitIds = new HashSet<Integer>();
+
+    public void setOrgunitIds( Collection<Integer> orgunitIds )
+    {
+        this.orgunitIds = orgunitIds;
+    }
+
+    private Integer programStageId;
+
+    public void setProgramStageId( Integer programStageId )
+    {
+        this.programStageId = programStageId;
+    }
+
+    private String startDate;
+
+    public void setStartDate( String startDate )
+    {
+        this.startDate = startDate;
+    }
+
+    private String endDate;
+
+    public void setEndDate( String endDate )
+    {
+        this.endDate = endDate;
+    }
+
+    private List<String> values = new ArrayList<String>();
+
+    public List<String> getValues()
+    {
+        return values;
+    }
+
+    private List<String> filterValues = new ArrayList<String>();
+
+    public void setFilterValues( List<String> filterValues )
+    {
+        this.filterValues = filterValues;
+    }
+
+    private Boolean userOrganisationUnit;
+
+    public void setUserOrganisationUnit( Boolean userOrganisationUnit )
+    {
+        this.userOrganisationUnit = userOrganisationUnit;
+    }
+
+    private Boolean userOrganisationUnitChildren;
+
+    public void setUserOrganisationUnitChildren( Boolean userOrganisationUnitChildren )
+    {
+        this.userOrganisationUnitChildren = userOrganisationUnitChildren;
+    }
+
+    private Grid grid;
+
+    public Grid getGrid()
+    {
+        return grid;
+    }
+
+    private Integer total;
+
+    public void setTotal( Integer total )
+    {
+        this.total = total;
+    }
+
+    public Integer getTotal()
+    {
+        return total;
+    }
+
+    private I18n i18n;
+
+    public void setI18n( I18n i18n )
+    {
+        this.i18n = i18n;
+    }
+
+    private I18nFormat format;
+
+    public void setFormat( I18nFormat format )
+    {
+        this.format = format;
+    }
+
+    private Boolean useCompletedEvents;
+
+    public void setUseCompletedEvents( Boolean useCompletedEvents )
+    {
+        this.useCompletedEvents = useCompletedEvents;
+    }
+
+    private List<DataElement> dataElements = new ArrayList<DataElement>();
+
+    public List<DataElement> getDataElements()
+    {
+        return dataElements;
+    }
+
+    private String type;
+
+    public void setType( String type )
+    {
+        this.type = type;
+    }
+
+    private String facilityLB; // All, children, current
+
+    public void setFacilityLB( String facilityLB )
+    {
+        this.facilityLB = facilityLB;
+    }
+
+    private List<String> valueTypes = new ArrayList<String>();
+
+    public List<String> getValueTypes()
+    {
+        return valueTypes;
+    }
+
+    private Map<Integer, List<String>> mapSuggestedValues = new HashMap<Integer, List<String>>();
+
+    public Map<Integer, List<String>> getMapSuggestedValues()
+    {
+        return mapSuggestedValues;
+    }
+
+    private String message;
+
+    public String getMessage()
+    {
+        return message;
+    }
+
+    private Boolean useFormNameDataElement;
+
+    public void setUseFormNameDataElement( Boolean useFormNameDataElement )
+    {
+        this.useFormNameDataElement = useFormNameDataElement;
+    }
+
+    private boolean accessPrivateInfo = false;
+
+    // -------------------------------------------------------------------------
+    // Implementation Action
+    // -------------------------------------------------------------------------
+
+    public String execute()
+        throws Exception
+    {
+        if ( programStageId == null )
+        {
+            return INPUT;
+        }
+
+        // ---------------------------------------------------------------------
+        // Get user orgunits
+        // ---------------------------------------------------------------------
+
+        if ( userOrganisationUnit || userOrganisationUnitChildren )
+        {
+            Collection<OrganisationUnit> userOrgunits = currentUserService.getCurrentUser().getOrganisationUnits();
+            orgunitIds = new HashSet<Integer>();
+
+            if ( userOrganisationUnit )
+            {
+                for ( OrganisationUnit userOrgunit : userOrgunits )
+                {
+                    orgunitIds.add( userOrgunit.getId() );
+                }
+            }
+
+            if ( userOrganisationUnitChildren )
+            {
+                for ( OrganisationUnit userOrgunit : userOrgunits )
+                {
+                    if ( userOrgunit.hasChild() )
+                    {
+                        for ( OrganisationUnit childOrgunit : userOrgunit.getSortedChildren() )
+                        {
+                            orgunitIds.add( childOrgunit.getId() );
+                        }
+                    }
+                }
+            }
+        }
+
+        // ---------------------------------------------------------------------
+        // Get orgunitIds
+        // ---------------------------------------------------------------------
+
+        Set<Integer> organisationUnits = new HashSet<Integer>();
+
+        if ( facilityLB.equals( "selected" ) )
+        {
+            organisationUnits.addAll( orgunitIds );
+        }
+        else if ( facilityLB.equals( "childrenOnly" ) )
+        {
+            for ( Integer orgunitId : orgunitIds )
+            {
+                OrganisationUnit selectedOrgunit = organisationUnitService.getOrganisationUnit( orgunitId );
+                organisationUnits.addAll( organisationUnitService.getOrganisationUnitHierarchy()
+                    .getChildren( orgunitId ) );
+                organisationUnits.remove( selectedOrgunit );
+            }
+        }
+        else
+        {
+            for ( Integer orgunitId : orgunitIds )
+            {
+                organisationUnits.addAll( organisationUnitService.getOrganisationUnitHierarchy()
+                    .getChildren( orgunitId ) );
+            }
+        }
+
+        // ---------------------------------------------------------------------
+        // Get program-stage, start-date, end-date
+        // ---------------------------------------------------------------------
+
+        ProgramStage programStage = programStageService.getProgramStage( programStageId );
+        Date start = format.parseDate( startDate );
+        Date end = format.parseDate( endDate );
+        List<TabularEventColumn> columns = getTableColumns();
+
+        // ---------------------------------------------------------------------
+        // Generate tabular report
+        // ---------------------------------------------------------------------
+        try
+        {
+            if ( type == null ) // Tabular report
+            {
+                total = programStageInstanceService.searchEventsCount( programStage, columns, organisationUnits,
+                    useCompletedEvents, start, end );
+                this.paging = createPaging( total );
+
+                grid = programStageInstanceService.searchEvents( programStage, columns, organisationUnits, start, end,
+                    useCompletedEvents, paging.getStartPos(), paging.getPageSize(), i18n );
+            }
+            // Download as Excel
+            else
+            {
+                grid = programStageInstanceService.searchEvents( programStage, columns, organisationUnits, start, end,
+                    useCompletedEvents, null, null, i18n );
+            }
+        }
+        catch ( SQLGrammarException ex )
+        {
+            message = i18n.getString( "failed_to_get_events" );
+        }
+
+        return type == null ? SUCCESS : type;
+    }
+
+    // -------------------------------------------------------------------------
+    // Supportive methods
+    // -------------------------------------------------------------------------
+
+    private List<TabularEventColumn> getTableColumns()
+    {
+        List<TabularEventColumn> columns = new ArrayList<TabularEventColumn>();
+
+        int index = 0;
+
+        for ( String filterValue : filterValues )
+        {
+            String[] values = filterValue.split( "_" );
+
+            if ( values != null && values.length >= 3 )
+            {
+                String prefix = values[0];
+
+                TabularEventColumn column = new TabularEventColumn();
+                column.setPrefix( prefix );
+                column.setIdentifier( values[1] );
+                column.setHidden( Boolean.parseBoolean( values[2] ) );
+
+                column.setOperator( values.length > 3 ? TextUtils.lower( values[3] ) : TextUtils.EMPTY );
+                column.setQuery( values.length > 4 ? TextUtils.lower( values[4] ) : TextUtils.EMPTY );
+
+                if ( PREFIX_DATA_ELEMENT.equals( prefix ) )
+                {
+                    int objectId = Integer.parseInt( values[1] );
+                    DataElement dataElement = dataElementService.getDataElement( objectId );
+                    if ( dataElement.getType().equals( DataElement.VALUE_TYPE_INT ) )
+                    {
+                        column.setPrefix( PREFIX_NUMBER_DATA_ELEMENT );
+                    }
+                    dataElements.add( dataElement );
+
+                    String valueType = dataElement.getOptionSet() != null ? VALUE_TYPE_OPTION_SET : dataElement
+                        .getType();
+                    valueTypes.add( valueType );
+                    mapSuggestedValues.put( index, getSuggestedDataElementValues( dataElement ) );
+                    if ( dataElement.getType().equals( DataElement.VALUE_TYPE_DATE ) )
+                    {
+                        column.setDateType( true );
+                    }
+
+                    if ( useFormNameDataElement != null && useFormNameDataElement )
+                    {
+                        column.setName( dataElement.getFormNameFallback() );
+                    }
+                    else
+                    {
+                        column.setName( dataElement.getDisplayName() );
+                    }
+                }
+
+                columns.add( column );
+
+                index++;
+            }
+        }
+
+        return columns;
+    }
+
+    private List<String> getSuggestedDataElementValues( DataElement dataElement )
+    {
+        List<String> values = new ArrayList<String>();
+        String valueType = dataElement.getType();
+
+        if ( valueType.equals( DataElement.VALUE_TYPE_BOOL ) )
+        {
+            values.add( i18n.getString( "yes" ) );
+            values.add( i18n.getString( "no" ) );
+        }
+        if ( valueType.equals( DataElement.VALUE_TYPE_TRUE_ONLY ) )
+        {
+            values.add( i18n.getString( "" ) );
+            values.add( i18n.getString( "yes" ) );
+        }
+
+        return values;
+    }
+}

=== 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	2013-11-04 03:49:17 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/resources/META-INF/dhis/beans.xml	2013-11-25 03:07:49 +0000
@@ -781,6 +781,18 @@
 	</bean>
 
 	<!-- Tabular report -->
+	<bean
+		id="org.hisp.dhis.caseentry.action.caseentry.SearchEventsAction"
+		class="org.hisp.dhis.caseentry.action.caseentry.SearchEventsAction"
+		scope="prototype">
+		<property name="programStageService" ref="org.hisp.dhis.program.ProgramStageService" />
+		<property name="programStageInstanceService"
+			ref="org.hisp.dhis.program.ProgramStageInstanceService" />
+		<property name="organisationUnitService"
+			ref="org.hisp.dhis.organisationunit.OrganisationUnitService" />
+		<property name="dataElementService" ref="org.hisp.dhis.dataelement.DataElementService" />
+		<property name="currentUserService" ref="org.hisp.dhis.user.CurrentUserService" />
+	</bean>
 
 	<bean id="org.hisp.dhis.caseentry.action.report.TabularInitializeAction"
 		class="org.hisp.dhis.caseentry.action.report.TabularInitializeAction"

=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/resources/struts.xml'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/resources/struts.xml	2013-11-03 23:45:52 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/resources/struts.xml	2013-11-25 03:07:49 +0000
@@ -4,1205 +4,1215 @@
   "http://struts.apache.org/dtds/struts-2.0.dtd";>
 <struts>
 
-  <include file="dhis-web-commons.xml" />
-
-  <package name="dhis-web-caseentry" extends="dhis-web-commons"
-    namespace="/dhis-web-caseentry">
-
-    <action name="index" class="org.hisp.dhis.caseentry.action.NoAction">
-      <result name="success" type="velocity">/main.vm</result>
-      <param name="page">/dhis-web-caseentry/index.vm</param>
-      <param name="menu">/dhis-web-caseentry/menu.vm</param>
-    </action>
-
-    <!-- Data Entry -->
-
-    <action name="validateSearch"
-      class="org.hisp.dhis.caseentry.action.caseentry.ValidateSearchAction">
-      <result name="success" type="velocity-xml">
-        /dhis-web-caseentry/responseSuccess.vm
-      </result>
-      <result name="error" type="velocity-xml">
-        /dhis-web-caseentry/responseError.vm
-      </result>
-      <result name="input" type="velocity-xml">
-        /dhis-web-caseentry/responseInput.vm
-      </result>
-      <param name="onExceptionReturn">plainTextError</param>
-    </action>
-
-    <action name="searchAllFacilities" class="org.hisp.dhis.caseentry.action.NoAction">
-      <result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <param name="requiredAuthorities">F_SEARCH_PATIENT_IN_ALL_FACILITIES</param>
-    </action>
-
-    <action name="searchInOtherOrgunits" class="org.hisp.dhis.caseentry.action.NoAction">
-      <result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <param name="requiredAuthorities">F_SEARCH_PATIENT_IN_OTHER_ORGUNITS</param>
-    </action>
-
-    <action name="searchPatient"
-      class="org.hisp.dhis.caseentry.action.patient.SearchPatientAction">
-      <result name="success" type="velocity">/content.vm</result>
-      <param name="page">/dhis-web-caseentry/listPatient.vm</param>
-      <param name="requiredAuthorities">F_PATIENT_SEARCH</param>
-    </action>
-
-    <action name="listAllPatients"
-      class="org.hisp.dhis.caseentry.action.patient.SearchPatientAction">
-      <result name="success" type="velocity">/content.vm</result>
-      <param name="listAll">true</param>
-      <param name="page">/dhis-web-caseentry/listPatient.vm</param>
-      <param name="requiredAuthorities">F_PATIENT_LIST</param>
-    </action>
-
-    <action name="selectDataRecording"
-      class="org.hisp.dhis.caseentry.action.caseentry.DataRecordingSelectAction">
-      <result name="success" type="velocity">/content.vm</result>
-      <param name="page">/dhis-web-caseentry/dataRecordingSelect.vm</param>
-      <param name="stylesheets">style/style.css</param>
-      <param name="requiredAuthorities">F_PATIENT_DATAVALUE_ADD,F_PATIENT_DATAVALUE_DELETE</param>
-    </action>
-
-    <action name="loadProgramStageInstances"
-      class="org.hisp.dhis.caseentry.action.caseentry.LoadProgramStageInstancesAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-caseentry/jsonProgramStageInstances.vm
-      </result>
-    </action>
-
-    <action name="getProgramStageInstance"
-      class="org.hisp.dhis.caseentry.action.caseentry.GetProgramStageInstanceAction">
-      <result name="success" type="velocity-json">/dhis-web-caseentry/jsonProgramStageInstance.vm
-      </result>
-    </action>
-
-    <action name="editDataEntryForm" class="org.hisp.dhis.caseentry.action.NoAction">
-      <result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <param name="requiredAuthorities">F_PATIENT_DATAVALUE_ADD,F_PATIENT_DATAVALUE_DELETE</param>
-    </action>
-
-    <action name="dataentryform"
-      class="org.hisp.dhis.caseentry.action.caseentry.LoadDataEntryAction">
-      <result name="success" type="velocity">/content.vm</result>
-      <param name="page">/dhis-web-caseentry/dataEntryForm.vm</param>
-      <param name="stylesheets">style/style.css</param>
-    </action>
-
-    <action name="completeDataEntry"
-      class="org.hisp.dhis.caseentry.action.caseentry.CompleteDataEntryAction">
-      <result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <result name="programcompleted" type="velocity-json">/dhis-web-caseentry/jsonResponseProgramCompleted.vm
-      </result>
-      <param name="requiredAuthorities">F_PATIENT_DATAVALUE_ADD,F_PATIENT_DATAVALUE_DELETE</param>
-    </action>
-
-    <action name="uncompleteDataEntry"
-      class="org.hisp.dhis.caseentry.action.caseentry.UncompleteDataEntryAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <param name="requiredAuthorities">F_PATIENT_DATAVALUE_ADD,F_PATIENT_DATAVALUE_DELETE</param>
-    </action>
-
-    <action name="saveExecutionDate"
-      class="org.hisp.dhis.caseentry.action.caseentry.SaveExecutionDateAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <result name="input" type="velocity-json">
-        /dhis-web-commons/ajax/jsonResponseInput.vm
-      </result>
-      <param name="onExceptionReturn">plainTextError</param>
-      <param name="requiredAuthorities">F_PATIENT_DATAVALUE_ADD,F_PATIENT_DATAVALUE_DELETE</param>
-    </action>
-
-    <action name="registerIrregularEncounter"
-      class="org.hisp.dhis.caseentry.action.caseentry.RegisterIrregularEncounterAction">
-      <result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <param name="requiredAuthorities">F_PATIENT_DATAVALUE_ADD,F_PATIENT_DATAVALUE_DELETE</param>
-    </action>
-
-    <action name="cacheManifest" class="org.hisp.dhis.commons.action.NoAction">
-      <result name="success" type="velocity-cache-manifest">/dhis-web-caseentry/cacheManifest.vm
-      </result>
-    </action>
-
-    <action name="getProgramMetaData"
-      class="org.hisp.dhis.caseentry.action.GetProgramMetaDataAction">
-      <result name="success" type="velocity-json">/dhis-web-caseentry/jsonProgramMetaData.vm
-      </result>
-    </action>
-
-    <action name="anonymousRegistration"
-      class="org.hisp.dhis.caseentry.action.caseentry.LoadAnonymousProgramsAction">
-      <interceptor-ref name="organisationUnitTreeStack" />
-      <result name="success" type="velocity">/main.vm</result>
-      <param name="page">/dhis-web-caseentry/anonymousRegistration.vm</param>
-      <param name="menu">/dhis-web-caseentry/dataEntryMenu.vm</param>
-      <param name="manifest">../dhis-web-caseentry/cacheManifest.action</param>
-      <param name="javascripts">../dhis-web-commons/ouwt/ouwt.js
-        ,javascript/commons.js
-        ,javascript/anonymousRegistration.js
-        ,javascript/entry.js
-        ,../dhis-web-commons/javascripts/date.js
-      </param>
-      <param name="stylesheets">style/style.css</param>
-      <param name="requiredAuthorities">F_ANONYMOUS_DATA_ENTRY</param>
-    </action>
-
-    <action name="anonymousPrograms"
-      class="org.hisp.dhis.caseentry.action.caseentry.LoadAnonymousProgramsAction">
-      <result name="success" type="velocity-json">/dhis-web-caseentry/jsonSingleEventPrograms.vm
-      </result>
-    </action>
-
-    <action name="createAnonymousEncounter"
-      class="org.hisp.dhis.caseentry.action.caseentry.CreateAnonymousEncounterAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <result name="input" type="velocity-json">
-        /dhis-web-commons/ajax/jsonResponseInput.vm
-      </result>
-      <param name="requiredAuthorities">F_PATIENT_DATAVALUE_ADD,F_PATIENT_DATAVALUE_DELETE</param>
-    </action>
-
-    <action name="loadAnonymousPrograms"
-      class="org.hisp.dhis.caseentry.action.caseentry.LoadAnonymousProgramsAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-caseentry/jsonProgramInstances.vm
-      </result>
-    </action>
-
-    <action name="uploadAnonymousEvent"
-      class="org.hisp.dhis.caseentry.action.caseentry.UploadAnonymousEventAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <result name="error" type="velocity-json">
-        /dhis-web-commons/ajax/jsonResponseError.vm
-      </result>
-    </action>
-
-    <action name="getOptionSet"
-      class="org.hisp.dhis.caseentry.action.GetOptionSetAction">
-      <result name="success" type="velocity-json">/dhis-web-caseentry/jsonOptionSet.vm
-      </result>
-    </action>
-
-    <action name="getUsernames"
-      class="org.hisp.dhis.caseentry.action.GetUsernamesAction">
-      <result name="success" type="velocity-json">/dhis-web-caseentry/jsonUsers.vm
-      </result>
-    </action>
-
-    <action name="removeCurrentEncounter"
-      class="org.hisp.dhis.caseentry.action.caseentry.RemoveCurrentEncounterAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <result name="error" type="velocity-json">
-        /dhis-web-commons/ajax/jsonResponseError.vm
-      </result>
-      <param name="onExceptionReturn">plainTextError</param>
-      <param name="requiredAuthorities">F_PROGRAM_STAGE_INSTANCE_DELETE</param>
-    </action>
-
-    <action name="validateProgram"
-      class="org.hisp.dhis.caseentry.action.caseentry.ValidateProgramInstanceAction">
-      <result name="success" type="velocity">/content.vm</result>
-      <param name="page">/dhis-web-caseentry/validationResult.vm</param>
-    </action>
-
-    <action name="getOptions" class="org.hisp.dhis.caseentry.action.caseentry.GetOptionsByDataElementAction">
-      <result name="success" type="velocity-json">/dhis-web-caseentry/jsonOptions.vm</result>
-      <result name="input" type="velocity-xml">/dhis-web-caseentry/responseInput.vm</result>
-    </action>
-
-    <action name="getProgramStageDataElementList"
-      class="org.hisp.dhis.caseentry.action.caseentry.GetProgramStageDataElementsAction">
-      <result name="success" type="velocity-json">/dhis-web-caseentry/jsonProgramStageDataElements.vm
-      </result>
-    </action>
-
-    <action name="removeEmptyEvents"
-      class="org.hisp.dhis.caseentry.action.caseentry.RemoveEmptyEventsAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-    </action>
-
-    <action name="getUsernameList"
-      class="org.hisp.dhis.caseentry.action.caseentry.GetUsernameListAction">
-      <result name="success" type="velocity-json">/dhis-web-caseentry/jsonUsernames.vm
-      </result>
-    </action>
-
-    <action name="getOrganisationUnitPaths"
-      class="org.hisp.dhis.caseentry.action.report.GetOrganisationUnitsAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-caseentry/jsonminOrganisationUnitPaths.vm
-      </result>
-    </action>
-
-    <action name="markForFollowup"
-      class="org.hisp.dhis.caseentry.action.caseentry.MarkForFollowupAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <param name="requiredAuthorities">F_PATIENT_DATAVALUE_ADD,F_PATIENT_DATAVALUE_DELETE</param>
-    </action>
-
-    <action name="saveProgramInstanceComment"
-      class="org.hisp.dhis.caseentry.action.caseentry.SaveProgramInstanceCommentAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <param name="requiredAuthorities">F_PATIENT_DATAVALUE_ADD,F_PATIENT_DATAVALUE_DELETE</param>
-    </action>
-
-    <!-- save value -->
-
-    <action name="saveValue"
-      class="org.hisp.dhis.caseentry.action.caseentry.SaveValueAction">
-      <result name="success" type="velocity-xml">status.vm</result>
-      <result name="input" type="velocity-xml">/dhis-web-caseentry/responseInput.vm</result>
-      <param name="onExceptionReturn">plainTextError</param>
-      <param name="requiredAuthorities">F_PATIENT_DATAVALUE_ADD,F_PATIENT_DATAVALUE_DELETE</param>
-    </action>
-
-    <action name="saveCoordinatesEvent"
-      class="org.hisp.dhis.caseentry.action.caseentry.SaveCoordinatesEventAction">
-      <result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <param name="onExceptionReturn">plainTextError</param>
-      <param name="requiredAuthorities">F_PATIENT_DATAVALUE_ADD,F_PATIENT_DATAVALUE_DELETE</param>
-    </action>
-
-    <!-- save providing-facility -->
-
-    <action name="saveProvidingFacility"
-      class="org.hisp.dhis.caseentry.action.caseentry.SaveProvidingFacilityAction">
-      <result name="success" type="velocity">status.vm</result>
-      <result name="input" type="velocity">status.vm</result>
-      <param name="onExceptionReturn">plainTextError</param>
-      <param name="requiredAuthorities">F_PATIENT_DATAVALUE_ADD,F_PATIENT_DATAVALUE_DELETE</param>
-    </action>
-
-    <!-- Multi DataEntry -->
-
-    <action name="multipledataEntrySelect"
-      class="org.hisp.dhis.caseentry.action.caseentry.MultiDataEntrySelectAction">
-      <interceptor-ref name="organisationUnitTreeStack" />
-      <result name="success" type="velocity">/main.vm</result>
-      <param name="page">/dhis-web-caseentry/multiDataEntrySelect.vm</param>
-      <param name="menu">/dhis-web-caseentry/dataEntryMenu.vm</param>
-      <param name="stylesheets">style/style.css</param>
-      <param name="javascripts">
-        ../dhis-web-commons/ouwt/ouwt.js,
-        javascript/commons.js,
-        javascript/patient.js,
-        javascript/entry.js,
-        javascript/relationshipPatient.js,
-        javascript/multiDataEntry.js
-      </param>
-      <param name="requiredAuthorities">F_NAME_BASED_DATA_ENTRY</param>
-    </action>
-
-    <action name="getPrograms"
-      class="org.hisp.dhis.caseentry.action.caseentry.GetProgramsByOrgunitAction">
-      <result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonPrograms.vm
-      </result>
-    </action>
-
-    <action name="getAllPrograms"
-      class="org.hisp.dhis.caseentry.action.caseentry.GetAllProgramsAction">
-      <result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonPrograms.vm
-      </result>
-    </action>
-
-    <action name="getDataRecords"
-      class="org.hisp.dhis.caseentry.action.caseentry.GetDataRecordsAction">
-      <result name="success" type="velocity">/content.vm</result>
-      <param name="page">/dhis-web-caseentry/dataentryRecords.vm</param>
-      <param name="stylesheets">style/style.css</param>
-    </action>
-
-    <action name="viewProgramStageRecords"
-      class="org.hisp.dhis.caseentry.action.caseentry.LoadDataEntryAction">
-      <result name="success" type="velocity">/content.vm</result>
-      <param name="page">/dhis-web-caseentry/reportDataEntryForm.vm</param>
-      <param name="stylesheets">style/style.css</param>
-    </action>
-
-    <action name="loadProgramStageRecords"
-      class="org.hisp.dhis.caseentry.action.caseentry.LoadDataEntryAction">
-      <result name="success" type="velocity">/content.vm</result>
-      <param name="page">/dhis-web-caseentry/dataEntryForm.vm</param>
-      <param name="javascripts">../dhis-web-commons/javascripts/date.js</param>
-      <param name="requiredAuthorities">F_PATIENT_DATAVALUE_ADD,F_PATIENT_DATAVALUE_DELETE</param>
-    </action>
-
-    <action name="completeProgramStageDataEntry"
-      class="org.hisp.dhis.caseentry.action.caseentry.CompleteDataEntryAction">
-      <result name="success" type="redirect">
-        getDataRecords.action?programId=${programId}
-      </result>
-      <param name="requiredAuthorities">F_PATIENT_DATAVALUE_ADD,F_PATIENT_DATAVALUE_DELETE</param>
-    </action>
-
-    <!-- Single-event DataEntry -->
-
-    <action name="singleEventSelect"
-      class="org.hisp.dhis.caseentry.action.caseentry.MultiDataEntrySelectAction">
-      <interceptor-ref name="organisationUnitTreeStack" />
-      <result name="success" type="velocity">/main.vm</result>
-      <param name="page">/dhis-web-caseentry/singleEventSelect.vm</param>
-      <param name="menu">/dhis-web-caseentry/dataEntryMenu.vm</param>
-      <param name="javascripts">../dhis-web-commons/ouwt/ouwt.js
-        ,javascript/commons.js
-        ,javascript/singleEvent.js
-        ,javascript/form.js
-        ,javascript/entry.js
-        ,../dhis-web-commons/javascripts/date.js
-      </param>
-      <param name="stylesheets">style/style.css</param>
-      <param name="requiredAuthorities">F_SINGLE_EVENT_DATA_ENTRY</param>
-    </action>
-
-    <action name="singleEventPrograms"
-      class="org.hisp.dhis.caseentry.action.caseentry.GetSingleEventProgramListAction">
-      <result name="success" type="velocity-json">/dhis-web-caseentry/jsonSingleEventPrograms.vm
-      </result>
-    </action>
-
-    <action name="showEventWithRegistrationForm"
-      class="org.hisp.dhis.caseentry.action.caseentry.ShowEventWithRegistrationFormAction">
-      <result name="success" type="velocity">/content.vm</result>
-      <param name="page">/dhis-web-caseentry/addSingleEventRegistration.vm</param>
-      <param name="stylesheets">style/style.css</param>
-      <param name="requiredAuthorities">F_PATIENT_ADD,F_PATIENT_DATAVALUE_ADD,F_PATIENT_DATAVALUE_DELETE</param>
-    </action>
-
-    <action name="saveValues"
-      class="org.hisp.dhis.caseentry.action.caseentry.SaveValuesAction">
-      <result name="success" type="velocity-xml">status.vm</result>
-      <param name="requiredAuthorities">F_PATIENT_ADD,F_PATIENT_DATAVALUE_ADD,F_PATIENT_DATAVALUE_DELETE</param>
-    </action>
-
-    <!-- Report -->
-
-    <action name="reportSelect"
-      class="org.hisp.dhis.caseentry.action.report.ReportSelectAction">
-      <interceptor-ref name="organisationUnitTreeStack" />
-      <result name="success" type="velocity">/main.vm</result>
-      <param name="page">/dhis-web-caseentry/reportSelect.vm</param>
-      <param name="menu">/dhis-web-caseentry/reportsMenu.vm</param>
-      <param name="javascripts">../dhis-web-commons/ouwt/ouwt.js,javascript/report.js</param>
-      <param name="stylesheets">style/style.css</param>
-      <param name="requiredAuthorities">F_GENERATE_PROGRAM_SUMMARY_REPORT</param>
-    </action>
-
-    <action name="generateReport"
-      class="org.hisp.dhis.caseentry.action.report.GenerateReportAction">
-      <result name="success" type="velocity">/content.vm</result>
-      <param name="page">/dhis-web-caseentry/report.vm</param>
-      <param name="javascripts">javascript/commons.js,javascript/report.js</param>
-      <param name="requiredAuthorities">F_GENERATE_PROGRAM_SUMMARY_REPORT</param>
-    </action>
-
-    <action name="viewRecords"
-      class="org.hisp.dhis.caseentry.action.caseentry.LoadDataEntryAction">
-      <result name="success" type="velocity">/content.vm</result>
-      <param name="page">/dhis-web-caseentry/reportDataEntryForm.vm</param>
-      <param name="stylesheets">style/style.css</param>
-    </action>
-
-    <action name="statisticalProgramReportSelect"
-      class="org.hisp.dhis.caseentry.action.report.ReportSelectAction">
-      <interceptor-ref name="organisationUnitTreeStack" />
-      <result name="success" type="velocity">/main.vm</result>
-      <param name="page">/dhis-web-caseentry/statisticalProgramReportSelect.vm</param>
-      <param name="menu">/dhis-web-caseentry/reportsMenu.vm</param>
-      <param name="javascripts">../dhis-web-commons/ouwt/ouwt.js,javascript/statisticalReport.js</param>
-      <param name="stylesheets">style/style.css</param>
-      <param name="requiredAuthorities">F_GENERATE_STATISTICAL_PROGRAM_REPORT</param>
-    </action>
-
-    <action name="generateStatisticalProgramReport"
-      class="org.hisp.dhis.caseentry.action.report.GenerateStatisticalProgramReportAction">
-      <result name="success" type="velocity">/content.vm</result>
-      <param name="page">/dhis-web-caseentry/statisticalProgramReport.vm</param>
-      <result name="xls" type="gridXlsResult" />
-      <param name="requiredAuthorities">F_GENERATE_STATISTICAL_PROGRAM_REPORT</param>
-    </action>
-
-    <!-- i18n -->
-
-    <action name="i18n" class="org.hisp.dhis.caseentry.action.NoAction">
-      <result name="success" type="velocity-javascript">/dhis-web-caseentry/i18n.vm
-      </result>
-    </action>
-
-    <!-- Case Aggregation -->
-
-    <action name="caseAggregationForm"
-      class="org.hisp.dhis.caseentry.action.caseaggregation.CaseAggregationFormAction">
-      <result name="success" type="velocity">/main.vm</result>
-      <param name="page">/dhis-web-caseentry/caseAggregationForm.vm</param>
-      <param name="menu">/dhis-web-caseentry/caseAggregationMenu.vm</param>
-      <param name="javascripts">javascript/caseagg.js,javascript/caseAggregationForm.js</param>
-      <param name="stylesheets">style/style.css</param>
-      <param name="requiredAuthorities">F_PATIENT_AGGREGATION</param>
-    </action>
-
-    <action name="validateCaseAggregation"
-      class="org.hisp.dhis.caseentry.action.caseaggregation.ValidationCaseAggregationAction">
-      <result name="success" type="velocity-xml">
-        /dhis-web-caseentry/responseSuccess.vm
-      </result>
-      <result name="error" type="velocity-xml">
-        /dhis-web-caseentry/responseError.vm
-      </result>
-      <result name="input" type="velocity-xml">
-        /dhis-web-caseentry/responseInput.vm
-      </result>
-    </action>
-
-    <action name="caseAggregationResult"
-      class="org.hisp.dhis.caseentry.action.caseaggregation.CaseAggregationResultAction">
-      <result name="success" type="velocity">/content.vm</result>
-      <param name="page">/dhis-web-caseentry/caseAggregationResult.vm</param>
-      <param name="menu">/dhis-web-caseentry/caseAggregationMenu.vm</param>
-      <param name="requiredAuthorities">F_PATIENT_AGGREGATION</param>
-    </action>
-
-    <action name="saveAggregateDataValue"
-      class="org.hisp.dhis.caseentry.action.caseaggregation.SaveAggregateDataValueAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <param name="requiredAuthorities">F_DATAVALUE_ADD,F_DATAVALUE_DELETE</param>
-    </action>
-
-    <action name="caseAggregationResultDetails"
-      class="org.hisp.dhis.caseentry.action.caseaggregation.CaseAggregationResultDetailsAction">
-      <result name="success" type="velocity">/content.vm</result>
-      <param name="page">/dhis-web-caseentry/caseAggregationResultDetails.vm</param>
-    </action>
-
-    <!-- Patient -->
-
-    <action name="patient"
-      class="org.hisp.dhis.caseentry.action.patient.SelectAction">
-      <interceptor-ref name="organisationUnitTreeStack" />
-      <result name="success" type="velocity">/main.vm</result>
-      <param name="page">/dhis-web-caseentry/selectPatient.vm</param>
-      <param name="menu">/dhis-web-caseentry/registrationMenu.vm</param>
-      <param name="javascripts">
-        ../dhis-web-commons/ouwt/ouwt.js
-        ,javascript/commons.js
-        ,javascript/patient.js
-        ,javascript/entry.js
-        ,javascript/relationshipPatient.js
-      </param>
-      <param name="stylesheets">style/style.css</param>
-      <param name="requiredAuthorities">F_PATIENT_MANAGEMENT</param>
-    </action>
-
-    <action name="searchRegistrationPatient"
-      class="org.hisp.dhis.caseentry.action.patient.SearchPatientAction">
-      <result name="success" type="velocity">/content.vm</result>
-      <param name="page">/dhis-web-caseentry/patientRegistrationList.vm</param>
-      <param name="requiredAuthorities">F_PATIENT_SEARCH</param>
-    </action>
-
-    <action name="removePatient"
-      class="org.hisp.dhis.caseentry.action.patient.RemovePatientAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <result name="error" type="velocity-json">
-        /dhis-web-commons/ajax/jsonResponseError.vm
-      </result>
-      <param name="onExceptionReturn">plainTextError</param>
-      <param name="requiredAuthorities">F_PATIENT_DELETE</param>
-    </action>
-
-    <action name="addPatient"
-      class="org.hisp.dhis.caseentry.action.patient.AddPatientAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <param name="requiredAuthorities">F_PATIENT_ADD</param>
-    </action>
-
-    <action name="showAddPatientForm"
-      class="org.hisp.dhis.caseentry.action.patient.ShowAddPatientFormAction">
-      <result name="success" type="velocity">/content.vm</result>
-      <param name="page">/dhis-web-caseentry/addPatientForm.vm</param>
-      <param name="requiredAuthorities">F_PATIENT_ADD</param>
-    </action>
-
-    <action name="showUpdatePatientForm"
-      class="org.hisp.dhis.caseentry.action.patient.GetPatientAction">
-      <result name="success" type="velocity">/content.vm</result>
-      <param name="page">
-        /dhis-web-caseentry/updatePatientForm.vm
-      </param>
-      <param name="javascripts">
-        ../dhis-web-commons/javascripts/jQuery/jquery-barcode.min.js
-      </param>
-      <param name="requiredAuthorities">F_PATIENT_ADD</param>
-    </action>
-
-    <action name="updatePatient"
-      class="org.hisp.dhis.caseentry.action.patient.UpdatePatientAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <param name="requiredAuthorities">F_PATIENT_ADD</param>
-    </action>
-
-    <action name="validatePatient"
-      class="org.hisp.dhis.caseentry.action.patient.ValidatePatientAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <param name="onExceptionReturn">plainTextError</param>
-    </action>
-
-    <action name="showAddRepresentative"
-      class="org.hisp.dhis.caseentry.action.patient.ShowAddRepresentativeAction">
-      <result name="success" type="velocity">/content.vm</result>
-      <param name="page">/dhis-web-caseentry/underAgeForm.vm</param>
-      <param name="javascripts">javascript/underage.js,
-        ../dhis-web-commons/javascripts/date.js
-      </param>
-      <param name="stylesheets">style/style.css</param>
-      <param name="requiredAuthorities">F_PATIENT_ADD</param>
-    </action>
-
-    <action name="searchPerson"
-      class="org.hisp.dhis.caseentry.action.patient.SearchPersonAction">
-      <result name="success" type="velocity-xml">responsePatients.vm
-      </result>
-      <param name="requiredAuthorities">F_PATIENT_SEARCH</param>
-    </action>
-
-    <action name="addRepresentative"
-      class="org.hisp.dhis.caseentry.action.patient.AddRepresentativeAction">
-      <result name="success" type="velocity-xml">responseRepresentative.vm
-      </result>
-      <param name="requiredAuthorities">F_PATIENT_ADD</param>
-    </action>
-
-    <action name="getPatientHistory"
-      class="org.hisp.dhis.caseentry.action.patient.GetPatientHistoryAction">
-      <result name="success" type="velocity">/content.vm</result>
-      <result name="xls" type="gridXlsResult" />
-      <result name="pdf" type="gridPdfResult" />
-      <param name="page">/dhis-web-caseentry/patientHistory.vm</param>
-      <param name="requiredAuthorities">F_PATIENT_HISTORY</param>
-    </action>
-
-    <action name="getProgramReportHistory"
-      class="org.hisp.dhis.caseentry.action.patient.GetProgramInstanceHistoryAction">
-      <result name="success" type="velocity">/content.vm</result>
-      <result name="xls" type="gridXlsResult" />
-      <result name="pdf" type="gridPdfResult" />
-      <param name="page">/dhis-web-caseentry/programInstanceHistory.vm</param>
-    </action>
-
-    <action name="getPatientLocation"
-      class="org.hisp.dhis.caseentry.action.patient.GetPatientLocationAction">
-      <result name="success" type="velocity">/content.vm</result>
-      <param name="page">/dhis-web-caseentry/patientLocation.vm</param>
-      <param name="requiredAuthorities">F_PATIENT_CHANGE_LOCATION</param>
-    </action>
-
-    <action name="registerPatientLocation"
-      class="org.hisp.dhis.caseentry.action.patient.RegisterPatientLocationAction">
-      <result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <param name="requiredAuthorities">F_PATIENT_CHANGE_LOCATION</param>
-    </action>
-
-    <!-- Patient-Program Enrollment -->
-
-    <action name="showProgramEnrollmentForm"
-      class="org.hisp.dhis.caseentry.action.patient.ProgramEnrollmentSelectAction">
-      <result name="success" type="velocity">/content.vm</result>
-      <param name="page">/dhis-web-caseentry/programEnrollmentSelectForm.vm</param>
-      <param name="requiredAuthorities">F_PROGRAM_ENROLLMENT</param>
-    </action>
-
-    <action name="enrollmentform"
-      class="org.hisp.dhis.caseentry.action.patient.ProgramEnrollmentAction">
-      <result name="success" type="velocity">/content.vm</result>
-      <param name="page">/dhis-web-caseentry/programEnrollmentForm.vm</param>
-      <param name="requiredAuthorities">F_PROGRAM_INSTANCE_MANAGEMENT</param>
-    </action>
-
-    <action name="validatePatientProgramEnrollment"
-      class="org.hisp.dhis.caseentry.action.patient.ValidatePatientProgramEnrollmentAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <result name="error" type="velocity-json">
-        /dhis-web-commons/ajax/jsonResponseError.vm
-      </result>
-      <result name="input" type="velocity-json">
-        /dhis-web-commons/ajax/jsonResponseInput.vm
-      </result>
-    </action>
-
-    <action name="saveProgramEnrollment"
-      class="org.hisp.dhis.caseentry.action.patient.SaveProgramEnrollmentAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-caseentry/jsonProgramEnrollment.vm
-      </result>
-      <param name="requiredAuthorities">F_PROGRAM_ENROLLMENT</param>
-    </action>
-
-    <action name="getProgramInstance"
-      class="org.hisp.dhis.caseentry.action.patient.GetProgramInstanceAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-caseentry/responseProgramInstance.vm
-      </result>
-    </action>
-
-    <action name="getEventMessages"
-      class="org.hisp.dhis.caseentry.action.patient.GetProgramInstanceAction">
-      <result name="success" type="velocity">/content.vm</result>
-      <param name="page">/dhis-web-caseentry/eventMessage.vm</param>
-      <param name="requiredAuthorities">F_PROGRAM_STAGE_INSTANCE_REMINDER</param>
-    </action>
-
-    <action name="saveDueDate"
-      class="org.hisp.dhis.caseentry.action.patient.SaveDueDateAction">
-      <result name="success" type="velocity">status.vm</result>
-      <param name="onExceptionReturn">plainTextError</param>
-      <param name="requiredAuthorities">F_PROGRAM_ENROLLMENT</param>
-    </action>
-
-    <action name="savePatientIdentifierAndAttribute"
-      class="org.hisp.dhis.caseentry.action.patient.SaveIdentifierAndAttributeAction">
-      <result name="success" type="velocity-xml">status.vm</result>
-      <param name="requiredAuthorities">F_PATIENT_ADD, F_PROGRAM_ENROLLMENT</param>
-    </action>
-
-    <action name="setProgramInstanceStatus"
-      class="org.hisp.dhis.caseentry.action.patient.SetProgramInstanceStatusAction">
-      <result name="success" type="velocity-xml">status.vm</result>
-      <param name="requiredAuthorities">F_PROGRAM_UNENROLLMENT</param>
-    </action>
-
-    <action name="getPatientIdentifierAndAttribute"
-      class="org.hisp.dhis.caseentry.action.patient.GetProgramAction">
-      <result name="success" type="velocity">/content.vm</result>
-      <param name="page">/dhis-web-caseentry/identifierAndAttributeForm.vm</param>
-      <param name="requiredAuthorities">F_PATIENT_ADD</param>
-    </action>
-
-    <action name="getVisitSchedule"
-      class="org.hisp.dhis.caseentry.action.patient.GetProgramInstanceAction">
-      <result name="success" type="velocity">/content.vm</result>
-      <param name="page">/dhis-web-caseentry/visitSchedule.vm</param>
-      <param name="requiredAuthorities">F_PROGRAM_ENROLLMENT</param>
-    </action>
-
-    <action name="validatePatientIdentifier"
-      class="org.hisp.dhis.caseentry.action.patient.ValidatePatientIdentifierAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <result name="input" type="velocity-json">
-        /dhis-web-commons/ajax/jsonResponseInput.vm
-      </result>
-      <param name="onExceptionReturn">plainTextError</param>
-    </action>
-
-
-    <!-- Relationship -->
-
-    <action name="getPartner"
-      class="org.hisp.dhis.caseentry.action.patient.GetPartnerAction">
-      <result name="success" type="velocity-xml">/content.vm</result>
-      <param name="page">/dhis-web-caseentry/detailsPartner.vm</param>
-    </action>
-
-    <action name="showRelationshipList"
-      class="org.hisp.dhis.caseentry.action.patient.ShowRelationshipListAction">
-      <result name="success" type="velocity">/content.vm</result>
-      <param name="page">/dhis-web-caseentry/relationshipList.vm</param>
-      <param name="javascripts">
-        ../dhis-web-commons/javascripts/jQuery/jquery-barcode.min.js
-      </param>
-      <param name="requiredAuthorities">F_RELATIONSHIP_MANAGEMENT</param>
-    </action>
-
-    <action name="showAddRelationshipForm"
-      class="org.hisp.dhis.caseentry.action.patient.ShowAddRelationshipFormAction">
-      <result name="success" type="velocity">/content.vm</result>
-      <param name="page">/dhis-web-caseentry/addRelationshipForm.vm</param>
-      <param name="requiredAuthorities">F_RELATIONSHIP_ADD</param>
-    </action>
-
-    <action name="validateSearchRelationship"
-      class="org.hisp.dhis.caseentry.action.patient.ValidateSearchRelationshipAction">
-      <result name="success" type="velocity-xml">
-        /dhis-web-commons/ajax/xmlResponseSuccess.vm
-      </result>
-      <result name="error" type="velocity-xml">
-        /dhis-web-commons/ajax/xmlResponseError.vm
-      </result>
-      <result name="input" type="velocity-xml">
-        /dhis-web-commons/ajax/xmlResponseInput.vm
-      </result>
-      <param name="onExceptionReturn">plainTextError</param>
-    </action>
-
-    <action name="searchRelationshipPatient"
-      class="org.hisp.dhis.caseentry.action.patient.SearchRelationshipPatientAction">
-      <result name="success" type="velocity">/content.vm</result>
-      <param name="page">/dhis-web-caseentry/relationshipPatients.vm</param>
-      <param name="requiredAuthorities">F_RELATIONSHIP_ADD</param>
-    </action>
-
-    <action name="saveRelationship"
-      class="org.hisp.dhis.caseentry.action.patient.SaveRelationshipAction">
-      <result name="success" type="velocity-xml">
-        /dhis-web-commons/ajax/xmlResponseSuccess.vm
-      </result>
-      <result name="error" type="velocity-xml">
-        /dhis-web-commons/ajax/xmlResponseError.vm
-      </result>
-      <result name="input" type="velocity-xml">
-        /dhis-web-commons/ajax/xmlResponseInput.vm
-      </result>
-      <param name="onExceptionReturn">plainTextError</param>
-      <param name="requiredAuthorities">F_RELATIONSHIP_ADD</param>
-    </action>
-
-    <action name="removeRelationship"
-      class="org.hisp.dhis.caseentry.action.patient.RemoveRelationshipAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <param name="requiredAuthorities">F_RELATIONSHIP_DELETE</param>
-    </action>
-
-    <action name="saveRepresentative"
-      class="org.hisp.dhis.caseentry.action.patient.SaveRepresentativeAction">
-      <result name="success" type="velocity-xml">
-        /dhis-web-commons/ajax/xmlResponseSuccess.vm
-      </result>
-      <result name="error" type="velocity-xml">
-        /dhis-web-commons/ajax/xmlResponseError.vm
-      </result>
-      <result name="input" type="velocity-xml">
-        /dhis-web-commons/ajax/xmlResponseInput.vm
-      </result>
-      <param name="onExceptionReturn">plainTextError</param>
-      <param name="requiredAuthorities">F_RELATIONSHIP_ADD</param>
-    </action>
-
-    <action name="removeRepresentative"
-      class="org.hisp.dhis.caseentry.action.patient.RemoveRepresentativeAction">
-      <result name="success" type="velocity-xml">
-        /dhis-web-commons/ajax/xmlResponseSuccess.vm
-      </result>
-      <result name="error" type="velocity-xml">
-        /dhis-web-commons/ajax/xmlResponseError.vm
-      </result>
-      <result name="input" type="velocity-xml">
-        /dhis-web-commons/ajax/xmlResponseInput.vm
-      </result>
-      <param name="onExceptionReturn">plainTextError</param>
-      <param name="requiredAuthorities">F_RELATIONSHIP_DELETE</param>
-    </action>
-
-    <action name="showAddRelationshipPatient"
-      class="org.hisp.dhis.caseentry.action.patient.GetPatientAction">
-      <result name="success" type="velocity">/content.vm</result>
-      <param name="page">/dhis-web-caseentry/addRelationshipPatientForm.vm</param>
-      <param name="requiredAuthorities">F_PATIENT_ADD, F_RELATIONSHIP_ADD</param>
-    </action>
-
-    <!-- Tabular report -->
-
-    <action name="generateTabularReport" class="org.hisp.dhis.caseentry.action.NoAction">
-      <result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <param name="requiredAuthorities">F_GENERATE_BENEFICIARY_TABULAR_REPORT</param>
-    </action>
-
-    <action name="getOrganisationUnitChildren"
-      class="org.hisp.dhis.caseentry.action.report.GetOrganisationUnitChildrenAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-caseentry/jsonminOrganisationUnitChildren.vm
-      </result>
-    </action>
-
-    <action name="tabularInitialize"
-      class="org.hisp.dhis.caseentry.action.report.TabularInitializeAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-caseentry/jsonTabularInitialize.vm
-      </result>
-      <param name="requiredAuthorities">F_GENERATE_BENEFICIARY_TABULAR_REPORT</param>
-    </action>
-
-    <action name="loadReportProgramStages"
-      class="org.hisp.dhis.caseentry.action.report.LoadProgramStagesAction">
-      <result name="success" type="velocity-json">/dhis-web-caseentry/jsonProgramStages.vm
-      </result>
-      <param name="requiredAuthorities">F_GENERATE_BENEFICIARY_TABULAR_REPORT</param>
-    </action>
-
-    <action name="loadProgramStageSections"
-      class="org.hisp.dhis.caseentry.action.report.GetProgramStageSectionsAction">
-      <result name="success" type="velocity-json">/dhis-web-caseentry/jsonProgramStageSections.vm
-      </result>
-      <param name="requiredAuthorities">F_GENERATE_BENEFICIARY_TABULAR_REPORT</param>
-    </action>
-
-    <action name="loadDataElements"
-      class="org.hisp.dhis.caseentry.action.report.LoadDataElementsAction">
-      <result name="success" type="velocity-json">/dhis-web-caseentry/responseDataElements.vm
-      </result>
-      <param name="requiredAuthorities">F_GENERATE_BENEFICIARY_TABULAR_REPORT</param>
-    </action>
-
-    <action name="getTabularParams"
-      class="org.hisp.dhis.caseentry.action.report.GetTabularParamsAction">
-      <result name="success" type="velocity-json">/dhis-web-caseentry/responseTabularParams.vm
-      </result>
-      <param name="requiredAuthorities">F_GENERATE_BENEFICIARY_TABULAR_REPORT</param>
-    </action>
-
-    <action name="validateTabularReport"
-      class="org.hisp.dhis.caseentry.action.report.ValidateTabularReportAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <result name="input" type="velocity-json">
-        /dhis-web-commons/ajax/jsonResponseInput.vm
-      </result>
-      <param name="requiredAuthorities">F_GENERATE_BENEFICIARY_TABULAR_REPORT</param>
-    </action>
-
-    <action name="saveTabularReport"
-      class="org.hisp.dhis.caseentry.action.report.SaveTabularReportAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <param name="anyAuthorities">F_PATIENT_TABULAR_REPORT_PUBLIC_ADD,F_PATIENT_TABULAR_REPORT_PRIVATE_ADD</param>
-    </action>
-
-    <action name="getTabularReports"
-      class="org.hisp.dhis.caseentry.action.report.GetTabularReportsAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-caseentry/jsonTabularReportList.vm
-      </result>
-      <param name="requiredAuthorities">F_GENERATE_BENEFICIARY_TABULAR_REPORT</param>
-    </action>
-
-    <action name="getTabularReport"
-      class="org.hisp.dhis.caseentry.action.report.GetTabularReportAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-caseentry/jsonTabularReport.vm
-      </result>
-      <param name="requiredAuthorities">F_GENERATE_BENEFICIARY_TABULAR_REPORT</param>
-    </action>
-
-    <action name="updateTabularReportName"
-      class="org.hisp.dhis.caseentry.action.report.UpdateTabularReportNameAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <param name="requiredAuthorities">F_GENERATE_BENEFICIARY_TABULAR_REPORT</param>
-    </action>
-
-    <action name="deleteTabularReport"
-      class="org.hisp.dhis.caseentry.action.report.DeleteTabularReportAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <param name="requiredAuthorities">F_GENERATE_BENEFICIARY_TABULAR_REPORT</param>
-    </action>
-
-    <!-- Aggregate Report -->
-
-    <action name="getAggregateReportList"
-      class="org.hisp.dhis.caseentry.action.report.GetAggregateReportListAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-caseentry/jsonTabularReportList.vm
-      </result>
-      <param name="requiredAuthorities">F_GENERATE_BENEFICIARY_TABULAR_REPORT</param>
-    </action>
-
-    <action name="saveAggregateReport"
-      class="org.hisp.dhis.caseentry.action.report.SaveAggregateReportAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <param name="anyAuthorities">F_PATIENT_AGGREGATE_REPORT_PUBLIC_ADD,F_PATIENT_AGGREGATE_REPORT_PRIVATE_ADD</param>
-    </action>
-
-    <action name="getAggregateReports"
-      class="org.hisp.dhis.caseentry.action.report.GetAggregateReportsAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-caseentry/jsonTabularReportList.vm
-      </result>
-      <param name="requiredAuthorities">F_GENERATE_BENEFICIARY_TABULAR_REPORT</param>
-    </action>
-
-    <action name="getAggregateReport"
-      class="org.hisp.dhis.caseentry.action.report.GetAggregateReportAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-caseentry/jsonTabularAggregateReport.vm
-      </result>
-      <param name="requiredAuthorities">F_GENERATE_BENEFICIARY_TABULAR_REPORT</param>
-    </action>
-
-    <action name="updateAggregateReportName"
-      class="org.hisp.dhis.caseentry.action.report.UpdateAggregateReportNameAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <param name="requiredAuthorities">F_GENERATE_BENEFICIARY_TABULAR_REPORT</param>
-    </action>
-
-    <action name="deleteAggregateReport"
-      class="org.hisp.dhis.caseentry.action.report.DeleteAggregateReportAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <param name="requiredAuthorities">F_GENERATE_BENEFICIARY_TABULAR_REPORT</param>
-    </action>
-
-    <action name="getOrganisationUnitPathsByGroup"
-      class="org.hisp.dhis.caseentry.action.report.GetOrganisationUnitsByGroupAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-caseentry/jsonminOrganisationUnitPaths.vm
-      </result>
-    </action>
-
-    <action name="validateAggregateReport"
-      class="org.hisp.dhis.caseentry.action.report.ValidateAggregateReportAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <result name="input" type="velocity-json">
-        /dhis-web-commons/ajax/jsonResponseInput.vm
-      </result>
-      <param name="requiredAuthorities">F_GENERATE_BENEFICIARY_TABULAR_REPORT</param>
-    </action>
-
-    <!-- SMS Reminder -->
-
-    <action name="smsReminderSelect"
-      class="org.hisp.dhis.caseentry.action.caseentry.MultiDataEntrySelectAction">
-      <interceptor-ref name="organisationUnitTreeStack" />
-      <result name="success" type="velocity">/main.vm</result>
-      <param name="page">/dhis-web-caseentry/programTrackingSelect.vm</param>
-      <param name="menu">/dhis-web-caseentry/registrationMenu.vm</param>
-      <param name="stylesheets">style/style.css</param>
-      <param name="javascripts">
-        ../dhis-web-commons/ouwt/ouwt.js,
-        javascript/commons.js,
-        javascript/patient.js,
-        javascript/relationshipPatient.js,
-        javascript/entry.js,
-        javascript/smsReminder.js
-      </param>
-      <param name="requiredAuthorities">F_PROGRAM_TRACKING_MANAGEMENT</param>
-    </action>
-
-    <action name="getSMSPatientRecords"
-      class="org.hisp.dhis.caseentry.action.caseentry.GetDataRecordsAction">
-      <result name="success" type="velocity">/content.vm</result>
-      <param name="page">/dhis-web-caseentry/programTrackingRecords.vm</param>
-      <param name="stylesheets">style/style.css</param>
-      <param name="requiredAuthorities">F_PROGRAM_TRACKING_SEARCH</param>
-    </action>
-
-    <action name="programTrackingList"
-      class="org.hisp.dhis.caseentry.action.reminder.GetProgramTrackingListAction">
-      <result name="success" type="velocity">/content.vm</result>
-      <param name="page">/dhis-web-caseentry/programTrackingList.vm</param>
-      <param name="stylesheets">style/style.css</param>
-      <param name="requiredAuthorities">F_PROGRAM_TRACKING_LIST</param>
-    </action>
-
-    <action name="sendSMS"
-      class="org.hisp.dhis.caseentry.action.reminder.SendSmsAction">
-      <result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <result name="input" type="velocity-json">/dhis-web-commons/ajax/jsonResponseInput.vm
-      </result>
-      <result name="error" type="velocity-json">/dhis-web-commons/ajax/jsonResponseError.vm
-      </result>
-      <param name="onExceptionReturn">plainTextError</param>
-      <param name="requiredAuthorities">F_MOBILE_SENDSMS</param>
-    </action>
-
-    <action name="sendSMSTotList"
-      class="org.hisp.dhis.caseentry.action.reminder.SendSmsToListAction">
-      <result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <result name="error" type="velocity-json">/dhis-web-commons/ajax/jsonResponseError.vm
-      </result>
-      <param name="onExceptionReturn">plainTextError</param>
-      <param name="requiredAuthorities">F_MOBILE_SENDSMS</param>
-    </action>
-
-    <action name="setEventStatus"
-      class="org.hisp.dhis.caseentry.action.reminder.SetEventStatusAction">
-      <result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <result name="error" type="velocity-json">/dhis-web-commons/ajax/jsonResponseError.vm
-      </result>
-      <param name="requiredAuthorities">F_PROGRAM_ENROLLMENT</param>
-    </action>
-
-    <action name="getProgramStageInstanceById"
-      class="org.hisp.dhis.caseentry.action.reminder.GetProgramStageInstanceByIdAction">
-      <result name="success" type="velocity">/content.vm</result>
-      <param name="page">/dhis-web-caseentry/trackingEventMessage.vm</param>
-      <param name="stylesheets">style/style.css</param>
-    </action>
-
-    <!-- Dashboard -->
-
-    <action name="patientDashboard"
-      class="org.hisp.dhis.caseentry.action.patient.PatientDashboardAction">
-      <result name="success" type="velocity">/content.vm</result>
-      <param name="page">/dhis-web-caseentry/patientDashboard.vm</param>
-      <param name="stylesheets">style/style.css</param>
-      <param name="requiredAuthorities">F_PATIENT_DASHBOARD</param>
-    </action>
-
-    <action name="removeProgramInstance"
-      class="org.hisp.dhis.caseentry.action.caseentry.RemoveProgramInstanceAction">
-      <result name="success" type="velocity-json">
-        /dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <result name="error" type="velocity-json">
-        /dhis-web-commons/ajax/jsonResponseError.vm
-      </result>
-      <param name="requiredAuthorities">F_PROGRAM_INSTANCE_DELETE</param>
-    </action>
-
-    <!-- Comment && Message -->
-
-    <action name="savePatientComment"
-      class="org.hisp.dhis.caseentry.action.reminder.SavePatientCommentAction">
-      <result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <param name="requiredAuthorities">F_PATIENT_COMMENT_ADD</param>
-    </action>
-
-    <action name="removePatientComment"
-      class="org.hisp.dhis.caseentry.action.reminder.RemovePatientCommentAction">
-      <result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <param name="requiredAuthorities">F_PATIENT_COMMENT_DELETE</param>
-    </action>
-
-    <action name="removeSms"
-      class="org.hisp.dhis.caseentry.action.reminder.RemoveSmsAction">
-      <result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <param name="requiredAuthorities">F_PATIENT_COMMENT_DELETE</param>
-    </action>
-
-    <!-- Activity plan -->
-
-    <action name="activityPlanSelect"
-      class="org.hisp.dhis.caseentry.action.patient.ShowActivityPlanFormAction">
-      <interceptor-ref name="organisationUnitTreeStack" />
-      <result name="success" type="velocity">/main.vm</result>
-      <param name="page">/dhis-web-caseentry/activityPlanSelect.vm</param>
-      <param name="menu">/dhis-web-caseentry/registrationMenu.vm</param>
-      <param name="stylesheets">style/style.css</param>
-      <param name="javascripts">
-        ../dhis-web-commons/ouwt/ouwt.js,
-        javascript/commons.js,
-        javascript/patient.js,
-        javascript/entry.js,
-        javascript/relationshipPatient.js,
-        javascript/activityPlan.js
-      </param>
-      <param name="requiredAuthorities">F_ACTIVITY_PLAN</param>
-    </action>
-
-    <action name="getActivityPlanRecords"
-      class="org.hisp.dhis.caseentry.action.caseentry.GetDataRecordsAction">
-      <result name="success" type="velocity">/content.vm</result>
-      <param name="page">/dhis-web-caseentry/activityPlanRecords.vm</param>
-      <param name="stylesheets">style/style.css</param>
-      <result name="xls" type="gridXlsResult" />
-      <result name="pdf" type="gridPdfResult" />
-    </action>
-
-    <action name="accessPatientAttributes" class="org.hisp.dhis.caseentry.action.NoAction">
-      <result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <param name="requiredAuthorities">F_ACCESS_PATIENT_ATTRIBUTES</param>
-    </action>
-
-    <action name="allowEditPatientFixedAttributes" class="org.hisp.dhis.caseentry.action.NoAction">
-      <result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <param name="requiredAuthorities">F_ALLOW_EDIT_PATIENT_PROPERTIES</param>
-    </action>
-
-    <action name="allowEditPatientAttributes" class="org.hisp.dhis.caseentry.action.NoAction">
-      <result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <param name="requiredAuthorities">F_ALLOW_EDIT_PATIENT_ATTRIBUTES</param>
-    </action>
-
-    <action name="allowEditPatientIdentifier" class="org.hisp.dhis.caseentry.action.NoAction">
-      <result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm
-      </result>
-      <param name="requiredAuthorities">F_ALLOW_EDIT_PATIENT_IDENTIFIERS</param>
-    </action>
-
-
-    <!-- Program-stage-completeness -->
-
-    <action name="programStageCompletenessSelect"
-      class="org.hisp.dhis.caseentry.action.patient.SelectAction">
-      <interceptor-ref name="organisationUnitTreeStack" />
-      <result name="success" type="velocity">/main.vm</result>
-      <param name="page">/dhis-web-caseentry/programStageCompletenessSelect.vm</param>
-      <param name="menu">/dhis-web-caseentry/reportsMenuWithoutOrgunit.vm</param>
-      <param name="stylesheets">style/style.css</param>
-      <param name="javascripts">
-        javascript/commons.js,
-        javascript/programStageCompleteness.js
-      </param>
-      <param name="requiredAuthorities">F_PROGRAM_STAGE_COMPLETENESS</param>
-    </action>
-
-    <action name="generateProgramStageCompleteness"
-      class="org.hisp.dhis.caseentry.action.caseentry.ProgramStageInstanceCompletenessAction">
-      <result name="success" type="velocity">/content.vm</result>
-      <param name="page">/dhis-web-caseentry/programStageCompleteness.vm</param>
-      <param name="stylesheets">style/style.css</param>
-      <result name="xls" type="gridXlsResult" />
-      <result name="pdf" type="gridPdfResult" />
-      <param name="requiredAuthorities">F_PROGRAM_STAGE_COMPLETENESS</param>
-    </action>
-
-  </package>
+	<include file="dhis-web-commons.xml" />
+
+	<package name="dhis-web-caseentry" extends="dhis-web-commons"
+		namespace="/dhis-web-caseentry">
+
+		<action name="index" class="org.hisp.dhis.caseentry.action.NoAction">
+			<result name="success" type="velocity">/main.vm</result>
+			<param name="page">/dhis-web-caseentry/index.vm</param>
+			<param name="menu">/dhis-web-caseentry/menu.vm</param>
+		</action>
+
+		<!-- Data Entry -->
+
+		<action name="validateSearch"
+			class="org.hisp.dhis.caseentry.action.caseentry.ValidateSearchAction">
+			<result name="success" type="velocity-xml">
+				/dhis-web-caseentry/responseSuccess.vm
+			</result>
+			<result name="error" type="velocity-xml">
+				/dhis-web-caseentry/responseError.vm
+			</result>
+			<result name="input" type="velocity-xml">
+				/dhis-web-caseentry/responseInput.vm
+			</result>
+			<param name="onExceptionReturn">plainTextError</param>
+		</action>
+
+		<action name="searchAllFacilities" class="org.hisp.dhis.caseentry.action.NoAction">
+			<result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<param name="requiredAuthorities">F_SEARCH_PATIENT_IN_ALL_FACILITIES</param>
+		</action>
+
+		<action name="searchInOtherOrgunits" class="org.hisp.dhis.caseentry.action.NoAction">
+			<result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<param name="requiredAuthorities">F_SEARCH_PATIENT_IN_OTHER_ORGUNITS</param>
+		</action>
+
+		<action name="searchPatient"
+			class="org.hisp.dhis.caseentry.action.patient.SearchPatientAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<param name="page">/dhis-web-caseentry/listPatient.vm</param>
+			<param name="requiredAuthorities">F_PATIENT_SEARCH</param>
+		</action>
+
+		<action name="listAllPatients"
+			class="org.hisp.dhis.caseentry.action.patient.SearchPatientAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<param name="listAll">true</param>
+			<param name="page">/dhis-web-caseentry/listPatient.vm</param>
+			<param name="requiredAuthorities">F_PATIENT_LIST</param>
+		</action>
+
+		<action name="selectDataRecording"
+			class="org.hisp.dhis.caseentry.action.caseentry.DataRecordingSelectAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<param name="page">/dhis-web-caseentry/dataRecordingSelect.vm</param>
+			<param name="stylesheets">style/style.css</param>
+			<param name="requiredAuthorities">F_PATIENT_DATAVALUE_ADD,F_PATIENT_DATAVALUE_DELETE</param>
+		</action>
+
+		<action name="loadProgramStageInstances"
+			class="org.hisp.dhis.caseentry.action.caseentry.LoadProgramStageInstancesAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-caseentry/jsonProgramStageInstances.vm
+			</result>
+		</action>
+
+		<action name="getProgramStageInstance"
+			class="org.hisp.dhis.caseentry.action.caseentry.GetProgramStageInstanceAction">
+			<result name="success" type="velocity-json">/dhis-web-caseentry/jsonProgramStageInstance.vm
+			</result>
+		</action>
+
+		<action name="editDataEntryForm" class="org.hisp.dhis.caseentry.action.NoAction">
+			<result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<param name="requiredAuthorities">F_PATIENT_DATAVALUE_ADD,F_PATIENT_DATAVALUE_DELETE</param>
+		</action>
+
+		<action name="dataentryform"
+			class="org.hisp.dhis.caseentry.action.caseentry.LoadDataEntryAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<param name="page">/dhis-web-caseentry/dataEntryForm.vm</param>
+			<param name="stylesheets">style/style.css</param>
+		</action>
+
+		<action name="completeDataEntry"
+			class="org.hisp.dhis.caseentry.action.caseentry.CompleteDataEntryAction">
+			<result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<result name="programcompleted" type="velocity-json">/dhis-web-caseentry/jsonResponseProgramCompleted.vm
+			</result>
+			<param name="requiredAuthorities">F_PATIENT_DATAVALUE_ADD,F_PATIENT_DATAVALUE_DELETE</param>
+		</action>
+
+		<action name="uncompleteDataEntry"
+			class="org.hisp.dhis.caseentry.action.caseentry.UncompleteDataEntryAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<param name="requiredAuthorities">F_PATIENT_DATAVALUE_ADD,F_PATIENT_DATAVALUE_DELETE</param>
+		</action>
+
+		<action name="saveExecutionDate"
+			class="org.hisp.dhis.caseentry.action.caseentry.SaveExecutionDateAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<result name="input" type="velocity-json">
+				/dhis-web-commons/ajax/jsonResponseInput.vm
+			</result>
+			<param name="onExceptionReturn">plainTextError</param>
+			<param name="requiredAuthorities">F_PATIENT_DATAVALUE_ADD,F_PATIENT_DATAVALUE_DELETE</param>
+		</action>
+
+		<action name="registerIrregularEncounter"
+			class="org.hisp.dhis.caseentry.action.caseentry.RegisterIrregularEncounterAction">
+			<result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<param name="requiredAuthorities">F_PATIENT_DATAVALUE_ADD,F_PATIENT_DATAVALUE_DELETE</param>
+		</action>
+
+		<action name="cacheManifest" class="org.hisp.dhis.commons.action.NoAction">
+			<result name="success" type="velocity-cache-manifest">/dhis-web-caseentry/cacheManifest.vm
+			</result>
+		</action>
+
+		<action name="getProgramMetaData"
+			class="org.hisp.dhis.caseentry.action.GetProgramMetaDataAction">
+			<result name="success" type="velocity-json">/dhis-web-caseentry/jsonProgramMetaData.vm
+			</result>
+		</action>
+
+		<action name="anonymousRegistration"
+			class="org.hisp.dhis.caseentry.action.caseentry.LoadAnonymousProgramsAction">
+			<interceptor-ref name="organisationUnitTreeStack" />
+			<result name="success" type="velocity">/main.vm</result>
+			<param name="page">/dhis-web-caseentry/anonymousRegistration.vm</param>
+			<param name="menu">/dhis-web-caseentry/dataEntryMenu.vm</param>
+			<param name="manifest">../dhis-web-caseentry/cacheManifest.action</param>
+			<param name="javascripts">../dhis-web-commons/ouwt/ouwt.js
+				,javascript/commons.js
+				,javascript/anonymousRegistration.js
+				,javascript/entry.js
+				,../dhis-web-commons/javascripts/date.js
+			</param>
+			<param name="stylesheets">style/style.css</param>
+			<param name="requiredAuthorities">F_ANONYMOUS_DATA_ENTRY</param>
+		</action>
+
+		<action name="anonymousPrograms"
+			class="org.hisp.dhis.caseentry.action.caseentry.LoadAnonymousProgramsAction">
+			<result name="success" type="velocity-json">/dhis-web-caseentry/jsonSingleEventPrograms.vm
+			</result>
+		</action>
+
+		<action name="createAnonymousEncounter"
+			class="org.hisp.dhis.caseentry.action.caseentry.CreateAnonymousEncounterAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<result name="input" type="velocity-json">
+				/dhis-web-commons/ajax/jsonResponseInput.vm
+			</result>
+			<param name="requiredAuthorities">F_PATIENT_DATAVALUE_ADD,F_PATIENT_DATAVALUE_DELETE</param>
+		</action>
+
+		<action name="loadAnonymousPrograms"
+			class="org.hisp.dhis.caseentry.action.caseentry.LoadAnonymousProgramsAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-caseentry/jsonProgramInstances.vm
+			</result>
+		</action>
+
+		<action name="uploadAnonymousEvent"
+			class="org.hisp.dhis.caseentry.action.caseentry.UploadAnonymousEventAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<result name="error" type="velocity-json">
+				/dhis-web-commons/ajax/jsonResponseError.vm
+			</result>
+		</action>
+
+		<action name="getOptionSet"
+			class="org.hisp.dhis.caseentry.action.GetOptionSetAction">
+			<result name="success" type="velocity-json">/dhis-web-caseentry/jsonOptionSet.vm
+			</result>
+		</action>
+
+		<action name="getUsernames"
+			class="org.hisp.dhis.caseentry.action.GetUsernamesAction">
+			<result name="success" type="velocity-json">/dhis-web-caseentry/jsonUsernames.vm
+			</result>
+		</action>
+
+		<action name="removeCurrentEncounter"
+			class="org.hisp.dhis.caseentry.action.caseentry.RemoveCurrentEncounterAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<result name="error" type="velocity-json">
+				/dhis-web-commons/ajax/jsonResponseError.vm
+			</result>
+			<param name="onExceptionReturn">plainTextError</param>
+			<param name="requiredAuthorities">F_PROGRAM_STAGE_INSTANCE_DELETE</param>
+		</action>
+
+		<action name="validateProgram"
+			class="org.hisp.dhis.caseentry.action.caseentry.ValidateProgramInstanceAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<param name="page">/dhis-web-caseentry/validationResult.vm</param>
+		</action>
+
+		<action name="getOptions"
+			class="org.hisp.dhis.caseentry.action.caseentry.GetOptionsByDataElementAction">
+			<result name="success" type="velocity-json">/dhis-web-caseentry/jsonOptions.vm
+			</result>
+			<result name="input" type="velocity-xml">/dhis-web-caseentry/responseInput.vm
+			</result>
+		</action>
+
+		<action name="getProgramStageDataElementList"
+			class="org.hisp.dhis.caseentry.action.caseentry.GetProgramStageDataElementsAction">
+			<result name="success" type="velocity-json">/dhis-web-caseentry/jsonProgramStageDataElements.vm
+			</result>
+		</action>
+
+		<action name="removeEmptyEvents"
+			class="org.hisp.dhis.caseentry.action.caseentry.RemoveEmptyEventsAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+		</action>
+
+		<action name="getUsernameList"
+			class="org.hisp.dhis.caseentry.action.caseentry.GetUsernameListAction">
+			<result name="success" type="velocity-json">/dhis-web-caseentry/jsonUsernames.vm
+			</result>
+		</action>
+
+		<action name="getOrganisationUnitPaths"
+			class="org.hisp.dhis.caseentry.action.report.GetOrganisationUnitsAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-caseentry/jsonminOrganisationUnitPaths.vm
+			</result>
+		</action>
+
+		<action name="markForFollowup"
+			class="org.hisp.dhis.caseentry.action.caseentry.MarkForFollowupAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<param name="requiredAuthorities">F_PATIENT_DATAVALUE_ADD,F_PATIENT_DATAVALUE_DELETE</param>
+		</action>
+
+		<action name="saveProgramInstanceComment"
+			class="org.hisp.dhis.caseentry.action.caseentry.SaveProgramInstanceCommentAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<param name="requiredAuthorities">F_PATIENT_DATAVALUE_ADD,F_PATIENT_DATAVALUE_DELETE</param>
+		</action>
+
+		<!-- save value -->
+
+		<action name="saveValue"
+			class="org.hisp.dhis.caseentry.action.caseentry.SaveValueAction">
+			<result name="success" type="velocity-xml">status.vm</result>
+			<result name="input" type="velocity-xml">/dhis-web-caseentry/responseInput.vm
+			</result>
+			<param name="onExceptionReturn">plainTextError</param>
+			<param name="requiredAuthorities">F_PATIENT_DATAVALUE_ADD,F_PATIENT_DATAVALUE_DELETE</param>
+		</action>
+
+		<action name="saveCoordinatesEvent"
+			class="org.hisp.dhis.caseentry.action.caseentry.SaveCoordinatesEventAction">
+			<result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<param name="onExceptionReturn">plainTextError</param>
+			<param name="requiredAuthorities">F_PATIENT_DATAVALUE_ADD,F_PATIENT_DATAVALUE_DELETE</param>
+		</action>
+
+		<!-- save providing-facility -->
+
+		<action name="saveProvidingFacility"
+			class="org.hisp.dhis.caseentry.action.caseentry.SaveProvidingFacilityAction">
+			<result name="success" type="velocity">status.vm</result>
+			<result name="input" type="velocity">status.vm</result>
+			<param name="onExceptionReturn">plainTextError</param>
+			<param name="requiredAuthorities">F_PATIENT_DATAVALUE_ADD,F_PATIENT_DATAVALUE_DELETE</param>
+		</action>
+
+		<!-- Multi DataEntry -->
+
+		<action name="multipledataEntrySelect"
+			class="org.hisp.dhis.caseentry.action.caseentry.MultiDataEntrySelectAction">
+			<interceptor-ref name="organisationUnitTreeStack" />
+			<result name="success" type="velocity">/main.vm</result>
+			<param name="page">/dhis-web-caseentry/multiDataEntrySelect.vm</param>
+			<param name="menu">/dhis-web-caseentry/dataEntryMenu.vm</param>
+			<param name="stylesheets">style/style.css</param>
+			<param name="javascripts">
+				../dhis-web-commons/ouwt/ouwt.js,
+				javascript/commons.js,
+				javascript/patient.js,
+				javascript/entry.js,
+				javascript/relationshipPatient.js,
+				javascript/multiDataEntry.js
+			</param>
+			<param name="requiredAuthorities">F_NAME_BASED_DATA_ENTRY</param>
+		</action>
+
+		<action name="getPrograms"
+			class="org.hisp.dhis.caseentry.action.caseentry.GetProgramsByOrgunitAction">
+			<result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonPrograms.vm
+			</result>
+		</action>
+
+		<action name="getAllPrograms"
+			class="org.hisp.dhis.caseentry.action.caseentry.GetAllProgramsAction">
+			<result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonPrograms.vm
+			</result>
+		</action>
+
+		<action name="getDataRecords"
+			class="org.hisp.dhis.caseentry.action.caseentry.GetDataRecordsAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<param name="page">/dhis-web-caseentry/dataentryRecords.vm</param>
+			<param name="stylesheets">style/style.css</param>
+		</action>
+
+		<action name="viewProgramStageRecords"
+			class="org.hisp.dhis.caseentry.action.caseentry.LoadDataEntryAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<param name="page">/dhis-web-caseentry/reportDataEntryForm.vm</param>
+			<param name="stylesheets">style/style.css</param>
+		</action>
+
+		<action name="loadProgramStageRecords"
+			class="org.hisp.dhis.caseentry.action.caseentry.LoadDataEntryAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<param name="page">/dhis-web-caseentry/dataEntryForm.vm</param>
+			<param name="javascripts">../dhis-web-commons/javascripts/date.js</param>
+			<param name="requiredAuthorities">F_PATIENT_DATAVALUE_ADD,F_PATIENT_DATAVALUE_DELETE</param>
+		</action>
+
+		<action name="completeProgramStageDataEntry"
+			class="org.hisp.dhis.caseentry.action.caseentry.CompleteDataEntryAction">
+			<result name="success" type="redirect">
+				getDataRecords.action?programId=${programId}
+			</result>
+			<param name="requiredAuthorities">F_PATIENT_DATAVALUE_ADD,F_PATIENT_DATAVALUE_DELETE</param>
+		</action>
+
+		<!-- Single-event DataEntry -->
+
+		<action name="singleEventSelect"
+			class="org.hisp.dhis.caseentry.action.caseentry.MultiDataEntrySelectAction">
+			<interceptor-ref name="organisationUnitTreeStack" />
+			<result name="success" type="velocity">/main.vm</result>
+			<param name="page">/dhis-web-caseentry/singleEventSelect.vm</param>
+			<param name="menu">/dhis-web-caseentry/dataEntryMenu.vm</param>
+			<param name="javascripts">../dhis-web-commons/ouwt/ouwt.js
+				,javascript/commons.js
+				,javascript/singleEvent.js
+				,javascript/form.js
+				,javascript/entry.js
+				,../dhis-web-commons/javascripts/date.js
+			</param>
+			<param name="stylesheets">style/style.css</param>
+			<param name="requiredAuthorities">F_SINGLE_EVENT_DATA_ENTRY</param>
+		</action>
+
+		<action name="singleEventPrograms"
+			class="org.hisp.dhis.caseentry.action.caseentry.GetSingleEventProgramListAction">
+			<result name="success" type="velocity-json">/dhis-web-caseentry/jsonSingleEventPrograms.vm
+			</result>
+		</action>
+
+		<action name="showEventWithRegistrationForm"
+			class="org.hisp.dhis.caseentry.action.caseentry.ShowEventWithRegistrationFormAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<param name="page">/dhis-web-caseentry/addSingleEventRegistration.vm</param>
+			<param name="stylesheets">style/style.css</param>
+			<param name="requiredAuthorities">F_PATIENT_ADD,F_PATIENT_DATAVALUE_ADD,F_PATIENT_DATAVALUE_DELETE</param>
+		</action>
+
+		<action name="saveValues"
+			class="org.hisp.dhis.caseentry.action.caseentry.SaveValuesAction">
+			<result name="success" type="velocity-xml">status.vm</result>
+			<param name="requiredAuthorities">F_PATIENT_ADD,F_PATIENT_DATAVALUE_ADD,F_PATIENT_DATAVALUE_DELETE</param>
+		</action>
+
+		<!-- Report -->
+
+		<action name="reportSelect"
+			class="org.hisp.dhis.caseentry.action.report.ReportSelectAction">
+			<interceptor-ref name="organisationUnitTreeStack" />
+			<result name="success" type="velocity">/main.vm</result>
+			<param name="page">/dhis-web-caseentry/reportSelect.vm</param>
+			<param name="menu">/dhis-web-caseentry/reportsMenu.vm</param>
+			<param name="javascripts">../dhis-web-commons/ouwt/ouwt.js,javascript/report.js</param>
+			<param name="stylesheets">style/style.css</param>
+			<param name="requiredAuthorities">F_GENERATE_PROGRAM_SUMMARY_REPORT</param>
+		</action>
+
+		<action name="generateReport"
+			class="org.hisp.dhis.caseentry.action.report.GenerateReportAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<param name="page">/dhis-web-caseentry/report.vm</param>
+			<param name="javascripts">javascript/commons.js,javascript/report.js</param>
+			<param name="requiredAuthorities">F_GENERATE_PROGRAM_SUMMARY_REPORT</param>
+		</action>
+
+		<action name="viewRecords"
+			class="org.hisp.dhis.caseentry.action.caseentry.LoadDataEntryAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<param name="page">/dhis-web-caseentry/reportDataEntryForm.vm</param>
+			<param name="stylesheets">style/style.css</param>
+		</action>
+
+		<action name="statisticalProgramReportSelect"
+			class="org.hisp.dhis.caseentry.action.report.ReportSelectAction">
+			<interceptor-ref name="organisationUnitTreeStack" />
+			<result name="success" type="velocity">/main.vm</result>
+			<param name="page">/dhis-web-caseentry/statisticalProgramReportSelect.vm</param>
+			<param name="menu">/dhis-web-caseentry/reportsMenu.vm</param>
+			<param name="javascripts">../dhis-web-commons/ouwt/ouwt.js,javascript/statisticalReport.js</param>
+			<param name="stylesheets">style/style.css</param>
+			<param name="requiredAuthorities">F_GENERATE_STATISTICAL_PROGRAM_REPORT</param>
+		</action>
+
+		<action name="generateStatisticalProgramReport"
+			class="org.hisp.dhis.caseentry.action.report.GenerateStatisticalProgramReportAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<param name="page">/dhis-web-caseentry/statisticalProgramReport.vm</param>
+			<result name="xls" type="gridXlsResult" />
+			<param name="requiredAuthorities">F_GENERATE_STATISTICAL_PROGRAM_REPORT</param>
+		</action>
+
+		<!-- i18n -->
+
+		<action name="i18n" class="org.hisp.dhis.caseentry.action.NoAction">
+			<result name="success" type="velocity-javascript">/dhis-web-caseentry/i18n.vm
+			</result>
+		</action>
+
+		<!-- Case Aggregation -->
+
+		<action name="caseAggregationForm"
+			class="org.hisp.dhis.caseentry.action.caseaggregation.CaseAggregationFormAction">
+			<result name="success" type="velocity">/main.vm</result>
+			<param name="page">/dhis-web-caseentry/caseAggregationForm.vm</param>
+			<param name="menu">/dhis-web-caseentry/caseAggregationMenu.vm</param>
+			<param name="javascripts">javascript/caseagg.js,javascript/caseAggregationForm.js</param>
+			<param name="stylesheets">style/style.css</param>
+			<param name="requiredAuthorities">F_PATIENT_AGGREGATION</param>
+		</action>
+
+		<action name="validateCaseAggregation"
+			class="org.hisp.dhis.caseentry.action.caseaggregation.ValidationCaseAggregationAction">
+			<result name="success" type="velocity-xml">
+				/dhis-web-caseentry/responseSuccess.vm
+			</result>
+			<result name="error" type="velocity-xml">
+				/dhis-web-caseentry/responseError.vm
+			</result>
+			<result name="input" type="velocity-xml">
+				/dhis-web-caseentry/responseInput.vm
+			</result>
+		</action>
+
+		<action name="caseAggregationResult"
+			class="org.hisp.dhis.caseentry.action.caseaggregation.CaseAggregationResultAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<param name="page">/dhis-web-caseentry/caseAggregationResult.vm</param>
+			<param name="menu">/dhis-web-caseentry/caseAggregationMenu.vm</param>
+			<param name="requiredAuthorities">F_PATIENT_AGGREGATION</param>
+		</action>
+
+		<action name="saveAggregateDataValue"
+			class="org.hisp.dhis.caseentry.action.caseaggregation.SaveAggregateDataValueAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<param name="requiredAuthorities">F_DATAVALUE_ADD,F_DATAVALUE_DELETE</param>
+		</action>
+
+		<action name="caseAggregationResultDetails"
+			class="org.hisp.dhis.caseentry.action.caseaggregation.CaseAggregationResultDetailsAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<param name="page">/dhis-web-caseentry/caseAggregationResultDetails.vm</param>
+		</action>
+
+		<!-- Patient -->
+
+		<action name="patient"
+			class="org.hisp.dhis.caseentry.action.patient.SelectAction">
+			<interceptor-ref name="organisationUnitTreeStack" />
+			<result name="success" type="velocity">/main.vm</result>
+			<param name="page">/dhis-web-caseentry/selectPatient.vm</param>
+			<param name="menu">/dhis-web-caseentry/registrationMenu.vm</param>
+			<param name="javascripts">
+				../dhis-web-commons/ouwt/ouwt.js
+				,javascript/commons.js
+				,javascript/patient.js
+				,javascript/entry.js
+				,javascript/relationshipPatient.js
+			</param>
+			<param name="stylesheets">style/style.css</param>
+			<param name="requiredAuthorities">F_PATIENT_MANAGEMENT</param>
+		</action>
+
+		<action name="searchRegistrationPatient"
+			class="org.hisp.dhis.caseentry.action.patient.SearchPatientAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<param name="page">/dhis-web-caseentry/patientRegistrationList.vm</param>
+			<param name="requiredAuthorities">F_PATIENT_SEARCH</param>
+		</action>
+
+		<action name="removePatient"
+			class="org.hisp.dhis.caseentry.action.patient.RemovePatientAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<result name="error" type="velocity-json">
+				/dhis-web-commons/ajax/jsonResponseError.vm
+			</result>
+			<param name="onExceptionReturn">plainTextError</param>
+			<param name="requiredAuthorities">F_PATIENT_DELETE</param>
+		</action>
+
+		<action name="addPatient"
+			class="org.hisp.dhis.caseentry.action.patient.AddPatientAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<param name="requiredAuthorities">F_PATIENT_ADD</param>
+		</action>
+
+		<action name="showAddPatientForm"
+			class="org.hisp.dhis.caseentry.action.patient.ShowAddPatientFormAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<param name="page">/dhis-web-caseentry/addPatientForm.vm</param>
+			<param name="requiredAuthorities">F_PATIENT_ADD</param>
+		</action>
+
+		<action name="showUpdatePatientForm"
+			class="org.hisp.dhis.caseentry.action.patient.GetPatientAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<param name="page">
+				/dhis-web-caseentry/updatePatientForm.vm
+			</param>
+			<param name="javascripts">
+				../dhis-web-commons/javascripts/jQuery/jquery-barcode.min.js
+			</param>
+			<param name="requiredAuthorities">F_PATIENT_ADD</param>
+		</action>
+
+		<action name="updatePatient"
+			class="org.hisp.dhis.caseentry.action.patient.UpdatePatientAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<param name="requiredAuthorities">F_PATIENT_ADD</param>
+		</action>
+
+		<action name="validatePatient"
+			class="org.hisp.dhis.caseentry.action.patient.ValidatePatientAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<param name="onExceptionReturn">plainTextError</param>
+		</action>
+
+		<action name="showAddRepresentative"
+			class="org.hisp.dhis.caseentry.action.patient.ShowAddRepresentativeAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<param name="page">/dhis-web-caseentry/underAgeForm.vm</param>
+			<param name="javascripts">javascript/underage.js,
+				../dhis-web-commons/javascripts/date.js
+			</param>
+			<param name="stylesheets">style/style.css</param>
+			<param name="requiredAuthorities">F_PATIENT_ADD</param>
+		</action>
+
+		<action name="searchPerson"
+			class="org.hisp.dhis.caseentry.action.patient.SearchPersonAction">
+			<result name="success" type="velocity-xml">responsePatients.vm
+			</result>
+			<param name="requiredAuthorities">F_PATIENT_SEARCH</param>
+		</action>
+
+		<action name="addRepresentative"
+			class="org.hisp.dhis.caseentry.action.patient.AddRepresentativeAction">
+			<result name="success" type="velocity-xml">responseRepresentative.vm
+			</result>
+			<param name="requiredAuthorities">F_PATIENT_ADD</param>
+		</action>
+
+		<action name="getPatientHistory"
+			class="org.hisp.dhis.caseentry.action.patient.GetPatientHistoryAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<result name="xls" type="gridXlsResult" />
+			<result name="pdf" type="gridPdfResult" />
+			<param name="page">/dhis-web-caseentry/patientHistory.vm</param>
+			<param name="requiredAuthorities">F_PATIENT_HISTORY</param>
+		</action>
+
+		<action name="getProgramReportHistory"
+			class="org.hisp.dhis.caseentry.action.patient.GetProgramInstanceHistoryAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<result name="xls" type="gridXlsResult" />
+			<result name="pdf" type="gridPdfResult" />
+			<param name="page">/dhis-web-caseentry/programInstanceHistory.vm</param>
+		</action>
+
+		<action name="getPatientLocation"
+			class="org.hisp.dhis.caseentry.action.patient.GetPatientLocationAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<param name="page">/dhis-web-caseentry/patientLocation.vm</param>
+			<param name="requiredAuthorities">F_PATIENT_CHANGE_LOCATION</param>
+		</action>
+
+		<action name="registerPatientLocation"
+			class="org.hisp.dhis.caseentry.action.patient.RegisterPatientLocationAction">
+			<result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<param name="requiredAuthorities">F_PATIENT_CHANGE_LOCATION</param>
+		</action>
+
+		<!-- Patient-Program Enrollment -->
+
+		<action name="showProgramEnrollmentForm"
+			class="org.hisp.dhis.caseentry.action.patient.ProgramEnrollmentSelectAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<param name="page">/dhis-web-caseentry/programEnrollmentSelectForm.vm</param>
+			<param name="requiredAuthorities">F_PROGRAM_ENROLLMENT</param>
+		</action>
+
+		<action name="enrollmentform"
+			class="org.hisp.dhis.caseentry.action.patient.ProgramEnrollmentAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<param name="page">/dhis-web-caseentry/programEnrollmentForm.vm</param>
+			<param name="requiredAuthorities">F_PROGRAM_INSTANCE_MANAGEMENT</param>
+		</action>
+
+		<action name="validatePatientProgramEnrollment"
+			class="org.hisp.dhis.caseentry.action.patient.ValidatePatientProgramEnrollmentAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<result name="error" type="velocity-json">
+				/dhis-web-commons/ajax/jsonResponseError.vm
+			</result>
+			<result name="input" type="velocity-json">
+				/dhis-web-commons/ajax/jsonResponseInput.vm
+			</result>
+		</action>
+
+		<action name="saveProgramEnrollment"
+			class="org.hisp.dhis.caseentry.action.patient.SaveProgramEnrollmentAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-caseentry/jsonProgramEnrollment.vm
+			</result>
+			<param name="requiredAuthorities">F_PROGRAM_ENROLLMENT</param>
+		</action>
+
+		<action name="getProgramInstance"
+			class="org.hisp.dhis.caseentry.action.patient.GetProgramInstanceAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-caseentry/responseProgramInstance.vm
+			</result>
+		</action>
+
+		<action name="getEventMessages"
+			class="org.hisp.dhis.caseentry.action.patient.GetProgramInstanceAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<param name="page">/dhis-web-caseentry/eventMessage.vm</param>
+			<param name="requiredAuthorities">F_PROGRAM_STAGE_INSTANCE_REMINDER</param>
+		</action>
+
+		<action name="saveDueDate"
+			class="org.hisp.dhis.caseentry.action.patient.SaveDueDateAction">
+			<result name="success" type="velocity">status.vm</result>
+			<param name="onExceptionReturn">plainTextError</param>
+			<param name="requiredAuthorities">F_PROGRAM_ENROLLMENT</param>
+		</action>
+
+		<action name="savePatientIdentifierAndAttribute"
+			class="org.hisp.dhis.caseentry.action.patient.SaveIdentifierAndAttributeAction">
+			<result name="success" type="velocity-xml">status.vm</result>
+			<param name="requiredAuthorities">F_PATIENT_ADD, F_PROGRAM_ENROLLMENT</param>
+		</action>
+
+		<action name="setProgramInstanceStatus"
+			class="org.hisp.dhis.caseentry.action.patient.SetProgramInstanceStatusAction">
+			<result name="success" type="velocity-xml">status.vm</result>
+			<param name="requiredAuthorities">F_PROGRAM_UNENROLLMENT</param>
+		</action>
+
+		<action name="getPatientIdentifierAndAttribute"
+			class="org.hisp.dhis.caseentry.action.patient.GetProgramAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<param name="page">/dhis-web-caseentry/identifierAndAttributeForm.vm</param>
+			<param name="requiredAuthorities">F_PATIENT_ADD</param>
+		</action>
+
+		<action name="getVisitSchedule"
+			class="org.hisp.dhis.caseentry.action.patient.GetProgramInstanceAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<param name="page">/dhis-web-caseentry/visitSchedule.vm</param>
+			<param name="requiredAuthorities">F_PROGRAM_ENROLLMENT</param>
+		</action>
+
+		<action name="validatePatientIdentifier"
+			class="org.hisp.dhis.caseentry.action.patient.ValidatePatientIdentifierAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<result name="input" type="velocity-json">
+				/dhis-web-commons/ajax/jsonResponseInput.vm
+			</result>
+			<param name="onExceptionReturn">plainTextError</param>
+		</action>
+
+
+		<!-- Relationship -->
+
+		<action name="getPartner"
+			class="org.hisp.dhis.caseentry.action.patient.GetPartnerAction">
+			<result name="success" type="velocity-xml">/content.vm</result>
+			<param name="page">/dhis-web-caseentry/detailsPartner.vm</param>
+		</action>
+
+		<action name="showRelationshipList"
+			class="org.hisp.dhis.caseentry.action.patient.ShowRelationshipListAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<param name="page">/dhis-web-caseentry/relationshipList.vm</param>
+			<param name="javascripts">
+				../dhis-web-commons/javascripts/jQuery/jquery-barcode.min.js
+			</param>
+			<param name="requiredAuthorities">F_RELATIONSHIP_MANAGEMENT</param>
+		</action>
+
+		<action name="showAddRelationshipForm"
+			class="org.hisp.dhis.caseentry.action.patient.ShowAddRelationshipFormAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<param name="page">/dhis-web-caseentry/addRelationshipForm.vm</param>
+			<param name="requiredAuthorities">F_RELATIONSHIP_ADD</param>
+		</action>
+
+		<action name="validateSearchRelationship"
+			class="org.hisp.dhis.caseentry.action.patient.ValidateSearchRelationshipAction">
+			<result name="success" type="velocity-xml">
+				/dhis-web-commons/ajax/xmlResponseSuccess.vm
+			</result>
+			<result name="error" type="velocity-xml">
+				/dhis-web-commons/ajax/xmlResponseError.vm
+			</result>
+			<result name="input" type="velocity-xml">
+				/dhis-web-commons/ajax/xmlResponseInput.vm
+			</result>
+			<param name="onExceptionReturn">plainTextError</param>
+		</action>
+
+		<action name="searchRelationshipPatient"
+			class="org.hisp.dhis.caseentry.action.patient.SearchRelationshipPatientAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<param name="page">/dhis-web-caseentry/relationshipPatients.vm</param>
+			<param name="requiredAuthorities">F_RELATIONSHIP_ADD</param>
+		</action>
+
+		<action name="saveRelationship"
+			class="org.hisp.dhis.caseentry.action.patient.SaveRelationshipAction">
+			<result name="success" type="velocity-xml">
+				/dhis-web-commons/ajax/xmlResponseSuccess.vm
+			</result>
+			<result name="error" type="velocity-xml">
+				/dhis-web-commons/ajax/xmlResponseError.vm
+			</result>
+			<result name="input" type="velocity-xml">
+				/dhis-web-commons/ajax/xmlResponseInput.vm
+			</result>
+			<param name="onExceptionReturn">plainTextError</param>
+			<param name="requiredAuthorities">F_RELATIONSHIP_ADD</param>
+		</action>
+
+		<action name="removeRelationship"
+			class="org.hisp.dhis.caseentry.action.patient.RemoveRelationshipAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<param name="requiredAuthorities">F_RELATIONSHIP_DELETE</param>
+		</action>
+
+		<action name="saveRepresentative"
+			class="org.hisp.dhis.caseentry.action.patient.SaveRepresentativeAction">
+			<result name="success" type="velocity-xml">
+				/dhis-web-commons/ajax/xmlResponseSuccess.vm
+			</result>
+			<result name="error" type="velocity-xml">
+				/dhis-web-commons/ajax/xmlResponseError.vm
+			</result>
+			<result name="input" type="velocity-xml">
+				/dhis-web-commons/ajax/xmlResponseInput.vm
+			</result>
+			<param name="onExceptionReturn">plainTextError</param>
+			<param name="requiredAuthorities">F_RELATIONSHIP_ADD</param>
+		</action>
+
+		<action name="removeRepresentative"
+			class="org.hisp.dhis.caseentry.action.patient.RemoveRepresentativeAction">
+			<result name="success" type="velocity-xml">
+				/dhis-web-commons/ajax/xmlResponseSuccess.vm
+			</result>
+			<result name="error" type="velocity-xml">
+				/dhis-web-commons/ajax/xmlResponseError.vm
+			</result>
+			<result name="input" type="velocity-xml">
+				/dhis-web-commons/ajax/xmlResponseInput.vm
+			</result>
+			<param name="onExceptionReturn">plainTextError</param>
+			<param name="requiredAuthorities">F_RELATIONSHIP_DELETE</param>
+		</action>
+
+		<action name="showAddRelationshipPatient"
+			class="org.hisp.dhis.caseentry.action.patient.GetPatientAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<param name="page">/dhis-web-caseentry/addRelationshipPatientForm.vm</param>
+			<param name="requiredAuthorities">F_PATIENT_ADD, F_RELATIONSHIP_ADD</param>
+		</action>
+
+		<!-- Tabular report -->
+
+		<action name="searchEvents"
+			class="org.hisp.dhis.caseentry.action.caseentry.SearchEventsAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<param name="page">/dhis-web-caseentry/programStageInstancesList.vm</param>
+		</action>
+
+		<action name="generateTabularReport" class="org.hisp.dhis.caseentry.action.NoAction">
+			<result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<param name="requiredAuthorities">F_GENERATE_BENEFICIARY_TABULAR_REPORT</param>
+		</action>
+
+		<action name="getOrganisationUnitChildren"
+			class="org.hisp.dhis.caseentry.action.report.GetOrganisationUnitChildrenAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-caseentry/jsonminOrganisationUnitChildren.vm
+			</result>
+		</action>
+
+		<action name="tabularInitialize"
+			class="org.hisp.dhis.caseentry.action.report.TabularInitializeAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-caseentry/jsonTabularInitialize.vm
+			</result>
+			<param name="requiredAuthorities">F_GENERATE_BENEFICIARY_TABULAR_REPORT</param>
+		</action>
+
+		<action name="loadReportProgramStages"
+			class="org.hisp.dhis.caseentry.action.report.LoadProgramStagesAction">
+			<result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonProgramStages.vm
+			</result>
+			<param name="requiredAuthorities">F_GENERATE_BENEFICIARY_TABULAR_REPORT</param>
+		</action>
+
+		<action name="loadProgramStageSections"
+			class="org.hisp.dhis.caseentry.action.report.GetProgramStageSectionsAction">
+			<result name="success" type="velocity-json">/dhis-web-caseentry/jsonProgramStageSections.vm
+			</result>
+			<param name="requiredAuthorities">F_GENERATE_BENEFICIARY_TABULAR_REPORT</param>
+		</action>
+
+		<action name="loadDataElements"
+			class="org.hisp.dhis.caseentry.action.report.LoadDataElementsAction">
+			<result name="success" type="velocity-json">/dhis-web-commons/ajax/responseDataElements.vm
+			</result>
+			<param name="requiredAuthorities">F_GENERATE_BENEFICIARY_TABULAR_REPORT</param>
+		</action>
+
+		<action name="getTabularParams"
+			class="org.hisp.dhis.caseentry.action.report.GetTabularParamsAction">
+			<result name="success" type="velocity-json">/dhis-web-caseentry/responseTabularParams.vm
+			</result>
+			<param name="requiredAuthorities">F_GENERATE_BENEFICIARY_TABULAR_REPORT</param>
+		</action>
+
+		<action name="validateTabularReport"
+			class="org.hisp.dhis.caseentry.action.report.ValidateTabularReportAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<result name="input" type="velocity-json">
+				/dhis-web-commons/ajax/jsonResponseInput.vm
+			</result>
+			<param name="requiredAuthorities">F_GENERATE_BENEFICIARY_TABULAR_REPORT</param>
+		</action>
+
+		<action name="saveTabularReport"
+			class="org.hisp.dhis.caseentry.action.report.SaveTabularReportAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<param name="anyAuthorities">F_PATIENT_TABULAR_REPORT_PUBLIC_ADD,F_PATIENT_TABULAR_REPORT_PRIVATE_ADD</param>
+		</action>
+
+		<action name="getTabularReports"
+			class="org.hisp.dhis.caseentry.action.report.GetTabularReportsAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-caseentry/jsonTabularReportList.vm
+			</result>
+			<param name="requiredAuthorities">F_GENERATE_BENEFICIARY_TABULAR_REPORT</param>
+		</action>
+
+		<action name="getTabularReport"
+			class="org.hisp.dhis.caseentry.action.report.GetTabularReportAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-caseentry/jsonTabularReport.vm
+			</result>
+			<param name="requiredAuthorities">F_GENERATE_BENEFICIARY_TABULAR_REPORT</param>
+		</action>
+
+		<action name="updateTabularReportName"
+			class="org.hisp.dhis.caseentry.action.report.UpdateTabularReportNameAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<param name="requiredAuthorities">F_GENERATE_BENEFICIARY_TABULAR_REPORT</param>
+		</action>
+
+		<action name="deleteTabularReport"
+			class="org.hisp.dhis.caseentry.action.report.DeleteTabularReportAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<param name="requiredAuthorities">F_GENERATE_BENEFICIARY_TABULAR_REPORT</param>
+		</action>
+
+		<!-- Aggregate Report -->
+
+		<action name="getAggregateReportList"
+			class="org.hisp.dhis.caseentry.action.report.GetAggregateReportListAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-caseentry/jsonTabularReportList.vm
+			</result>
+			<param name="requiredAuthorities">F_GENERATE_BENEFICIARY_TABULAR_REPORT</param>
+		</action>
+
+		<action name="saveAggregateReport"
+			class="org.hisp.dhis.caseentry.action.report.SaveAggregateReportAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<param name="anyAuthorities">F_PATIENT_AGGREGATE_REPORT_PUBLIC_ADD,F_PATIENT_AGGREGATE_REPORT_PRIVATE_ADD</param>
+		</action>
+
+		<action name="getAggregateReports"
+			class="org.hisp.dhis.caseentry.action.report.GetAggregateReportsAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-caseentry/jsonTabularReportList.vm
+			</result>
+			<param name="requiredAuthorities">F_GENERATE_BENEFICIARY_TABULAR_REPORT</param>
+		</action>
+
+		<action name="getAggregateReport"
+			class="org.hisp.dhis.caseentry.action.report.GetAggregateReportAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-caseentry/jsonTabularAggregateReport.vm
+			</result>
+			<param name="requiredAuthorities">F_GENERATE_BENEFICIARY_TABULAR_REPORT</param>
+		</action>
+
+		<action name="updateAggregateReportName"
+			class="org.hisp.dhis.caseentry.action.report.UpdateAggregateReportNameAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<param name="requiredAuthorities">F_GENERATE_BENEFICIARY_TABULAR_REPORT</param>
+		</action>
+
+		<action name="deleteAggregateReport"
+			class="org.hisp.dhis.caseentry.action.report.DeleteAggregateReportAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<param name="requiredAuthorities">F_GENERATE_BENEFICIARY_TABULAR_REPORT</param>
+		</action>
+
+		<action name="getOrganisationUnitPathsByGroup"
+			class="org.hisp.dhis.caseentry.action.report.GetOrganisationUnitsByGroupAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-caseentry/jsonminOrganisationUnitPaths.vm
+			</result>
+		</action>
+
+		<action name="validateAggregateReport"
+			class="org.hisp.dhis.caseentry.action.report.ValidateAggregateReportAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<result name="input" type="velocity-json">
+				/dhis-web-commons/ajax/jsonResponseInput.vm
+			</result>
+			<param name="requiredAuthorities">F_GENERATE_BENEFICIARY_TABULAR_REPORT</param>
+		</action>
+
+		<!-- SMS Reminder -->
+
+		<action name="smsReminderSelect"
+			class="org.hisp.dhis.caseentry.action.caseentry.MultiDataEntrySelectAction">
+			<interceptor-ref name="organisationUnitTreeStack" />
+			<result name="success" type="velocity">/main.vm</result>
+			<param name="page">/dhis-web-caseentry/programTrackingSelect.vm</param>
+			<param name="menu">/dhis-web-caseentry/registrationMenu.vm</param>
+			<param name="stylesheets">style/style.css</param>
+			<param name="javascripts">
+				../dhis-web-commons/ouwt/ouwt.js,
+				javascript/commons.js,
+				javascript/patient.js,
+				javascript/relationshipPatient.js,
+				javascript/entry.js,
+				javascript/smsReminder.js
+			</param>
+			<param name="requiredAuthorities">F_PROGRAM_TRACKING_MANAGEMENT</param>
+		</action>
+
+		<action name="getSMSPatientRecords"
+			class="org.hisp.dhis.caseentry.action.caseentry.GetDataRecordsAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<param name="page">/dhis-web-caseentry/programTrackingRecords.vm</param>
+			<param name="stylesheets">style/style.css</param>
+			<param name="requiredAuthorities">F_PROGRAM_TRACKING_SEARCH</param>
+		</action>
+
+		<action name="programTrackingList"
+			class="org.hisp.dhis.caseentry.action.reminder.GetProgramTrackingListAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<param name="page">/dhis-web-caseentry/programTrackingList.vm</param>
+			<param name="stylesheets">style/style.css</param>
+			<param name="requiredAuthorities">F_PROGRAM_TRACKING_LIST</param>
+		</action>
+
+		<action name="sendSMS"
+			class="org.hisp.dhis.caseentry.action.reminder.SendSmsAction">
+			<result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<result name="input" type="velocity-json">/dhis-web-commons/ajax/jsonResponseInput.vm
+			</result>
+			<result name="error" type="velocity-json">/dhis-web-commons/ajax/jsonResponseError.vm
+			</result>
+			<param name="onExceptionReturn">plainTextError</param>
+			<param name="requiredAuthorities">F_MOBILE_SENDSMS</param>
+		</action>
+
+		<action name="sendSMSTotList"
+			class="org.hisp.dhis.caseentry.action.reminder.SendSmsToListAction">
+			<result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<result name="error" type="velocity-json">/dhis-web-commons/ajax/jsonResponseError.vm
+			</result>
+			<param name="onExceptionReturn">plainTextError</param>
+			<param name="requiredAuthorities">F_MOBILE_SENDSMS</param>
+		</action>
+
+		<action name="setEventStatus"
+			class="org.hisp.dhis.caseentry.action.reminder.SetEventStatusAction">
+			<result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<result name="error" type="velocity-json">/dhis-web-commons/ajax/jsonResponseError.vm
+			</result>
+			<param name="requiredAuthorities">F_PROGRAM_ENROLLMENT</param>
+		</action>
+
+		<action name="getProgramStageInstanceById"
+			class="org.hisp.dhis.caseentry.action.reminder.GetProgramStageInstanceByIdAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<param name="page">/dhis-web-caseentry/trackingEventMessage.vm</param>
+			<param name="stylesheets">style/style.css</param>
+		</action>
+
+		<!-- Dashboard -->
+
+		<action name="patientDashboard"
+			class="org.hisp.dhis.caseentry.action.patient.PatientDashboardAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<param name="page">/dhis-web-caseentry/patientDashboard.vm</param>
+			<param name="stylesheets">style/style.css</param>
+			<param name="requiredAuthorities">F_PATIENT_DASHBOARD</param>
+		</action>
+
+		<action name="removeProgramInstance"
+			class="org.hisp.dhis.caseentry.action.caseentry.RemoveProgramInstanceAction">
+			<result name="success" type="velocity-json">
+				/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<result name="error" type="velocity-json">
+				/dhis-web-commons/ajax/jsonResponseError.vm
+			</result>
+			<param name="requiredAuthorities">F_PROGRAM_INSTANCE_DELETE</param>
+		</action>
+
+		<!-- Comment && Message -->
+
+		<action name="savePatientComment"
+			class="org.hisp.dhis.caseentry.action.reminder.SavePatientCommentAction">
+			<result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<param name="requiredAuthorities">F_PATIENT_COMMENT_ADD</param>
+		</action>
+
+		<action name="removePatientComment"
+			class="org.hisp.dhis.caseentry.action.reminder.RemovePatientCommentAction">
+			<result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<param name="requiredAuthorities">F_PATIENT_COMMENT_DELETE</param>
+		</action>
+
+		<action name="removeSms"
+			class="org.hisp.dhis.caseentry.action.reminder.RemoveSmsAction">
+			<result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<param name="requiredAuthorities">F_PATIENT_COMMENT_DELETE</param>
+		</action>
+
+		<!-- Activity plan -->
+
+		<action name="activityPlanSelect"
+			class="org.hisp.dhis.caseentry.action.patient.ShowActivityPlanFormAction">
+			<interceptor-ref name="organisationUnitTreeStack" />
+			<result name="success" type="velocity">/main.vm</result>
+			<param name="page">/dhis-web-caseentry/activityPlanSelect.vm</param>
+			<param name="menu">/dhis-web-caseentry/registrationMenu.vm</param>
+			<param name="stylesheets">style/style.css</param>
+			<param name="javascripts">
+				../dhis-web-commons/ouwt/ouwt.js,
+				javascript/commons.js,
+				javascript/patient.js,
+				javascript/entry.js,
+				javascript/relationshipPatient.js,
+				javascript/activityPlan.js
+			</param>
+			<param name="requiredAuthorities">F_ACTIVITY_PLAN</param>
+		</action>
+
+		<action name="getActivityPlanRecords"
+			class="org.hisp.dhis.caseentry.action.caseentry.GetDataRecordsAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<param name="page">/dhis-web-caseentry/activityPlanRecords.vm</param>
+			<param name="stylesheets">style/style.css</param>
+			<result name="xls" type="gridXlsResult" />
+			<result name="pdf" type="gridPdfResult" />
+		</action>
+
+		<action name="accessPatientAttributes" class="org.hisp.dhis.caseentry.action.NoAction">
+			<result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<param name="requiredAuthorities">F_ACCESS_PATIENT_ATTRIBUTES</param>
+		</action>
+
+		<action name="allowEditPatientFixedAttributes" class="org.hisp.dhis.caseentry.action.NoAction">
+			<result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<param name="requiredAuthorities">F_ALLOW_EDIT_PATIENT_PROPERTIES</param>
+		</action>
+
+		<action name="allowEditPatientAttributes" class="org.hisp.dhis.caseentry.action.NoAction">
+			<result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<param name="requiredAuthorities">F_ALLOW_EDIT_PATIENT_ATTRIBUTES</param>
+		</action>
+
+		<action name="allowEditPatientIdentifier" class="org.hisp.dhis.caseentry.action.NoAction">
+			<result name="success" type="velocity-json">/dhis-web-commons/ajax/jsonResponseSuccess.vm
+			</result>
+			<param name="requiredAuthorities">F_ALLOW_EDIT_PATIENT_IDENTIFIERS</param>
+		</action>
+
+
+		<!-- Program-stage-completeness -->
+
+		<action name="programStageCompletenessSelect"
+			class="org.hisp.dhis.caseentry.action.patient.SelectAction">
+			<interceptor-ref name="organisationUnitTreeStack" />
+			<result name="success" type="velocity">/main.vm</result>
+			<param name="page">/dhis-web-caseentry/programStageCompletenessSelect.vm</param>
+			<param name="menu">/dhis-web-caseentry/reportsMenuWithoutOrgunit.vm</param>
+			<param name="stylesheets">style/style.css</param>
+			<param name="javascripts">
+				javascript/commons.js,
+				javascript/programStageCompleteness.js
+			</param>
+			<param name="requiredAuthorities">F_PROGRAM_STAGE_COMPLETENESS</param>
+		</action>
+
+		<action name="generateProgramStageCompleteness"
+			class="org.hisp.dhis.caseentry.action.caseentry.ProgramStageInstanceCompletenessAction">
+			<result name="success" type="velocity">/content.vm</result>
+			<param name="page">/dhis-web-caseentry/programStageCompleteness.vm</param>
+			<param name="stylesheets">style/style.css</param>
+			<result name="xls" type="gridXlsResult" />
+			<result name="pdf" type="gridPdfResult" />
+			<param name="requiredAuthorities">F_PROGRAM_STAGE_COMPLETENESS</param>
+		</action>
+
+	</package>
 </struts>

=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/javascript/anonymousRegistration.js'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/javascript/anonymousRegistration.js	2013-10-21 20:30:59 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/javascript/anonymousRegistration.js	2013-11-25 03:07:49 +0000
@@ -785,7 +785,7 @@
 
     $.ajax( {
         type: "POST",
-        url: 'searchProgramStageInstances.action',
+        url: 'searchEvents.action',
         data: params,
         dataType: 'text',
         cache: false,

=== removed file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/jsonProgramStageSections.vm'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/jsonProgramStageSections.vm	2013-06-06 03:06:52 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/jsonProgramStageSections.vm	1970-01-01 00:00:00 +0000
@@ -1,10 +0,0 @@
-#set( $size = ${sections.size()} )
-{ "sections": [
-  #foreach( ${section} in $!{sections} )
-  {
-	"id": "${section.id}",
-	"name": "$!encoder.jsonEncode( ${section.displayName} )"
-  }#if( $velocityCount < $size ),#end
-  #end
-  ]
-}
\ No newline at end of file

=== removed file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/jsonProgramStages.vm'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/jsonProgramStages.vm	2013-01-23 10:27:28 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/jsonProgramStages.vm	1970-01-01 00:00:00 +0000
@@ -1,10 +0,0 @@
-#set( $size = ${programStages.size()} )
-{ "programStages": [
-  #foreach( ${programStage} in $!{programStages} )
-  {
-	"id": "${programStage.id}",
-	"name": "$!encoder.jsonEncode( ${programStage.displayName} )"
-  }#if( $velocityCount < $size ),#end
-  #end
-  ]
-}
\ No newline at end of file

=== removed file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/jsonUsers.vm'
--- dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/jsonUsers.vm	2013-04-24 06:11:42 +0000
+++ dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/jsonUsers.vm	1970-01-01 00:00:00 +0000
@@ -1,1 +0,0 @@
-{ "usernames": [#foreach( $username in $usernames )"$!encoder.jsonEncode("$username")"#if( $velocityCount < $usernames.size() ),#end #end]}
\ No newline at end of file

=== added file 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/ajax/jsonProgramStageSections.vm'
--- dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/ajax/jsonProgramStageSections.vm	1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/ajax/jsonProgramStageSections.vm	2013-11-25 03:07:49 +0000
@@ -0,0 +1,10 @@
+#set( $size = ${sections.size()} )
+{ "sections": [
+  #foreach( ${section} in $!{sections} )
+  {
+	"id": "${section.id}",
+	"name": "$!encoder.jsonEncode( ${section.displayName} )"
+  }#if( $velocityCount < $size ),#end
+  #end
+  ]
+}
\ No newline at end of file

=== modified file 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/ajax/jsonProgramStages.vm'
--- dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/ajax/jsonProgramStages.vm	2013-04-28 14:14:30 +0000
+++ dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/dhis-web-commons/ajax/jsonProgramStages.vm	2013-11-25 03:07:49 +0000
@@ -1,10 +1,10 @@
-#set( $size = $associations.size() )
+#set( $size = $programStages.size() )
 { 
 	"programStages": [
-		#foreach( $association in $associations )
+		#foreach( $programStage in $programStages )
 		  {
-			"id":  ${association.id} ,
-			"name": "$!encoder.jsonEncode( ${association.displayName} )"
+			"id":  ${programStages.id} ,
+			"name": "$!encoder.jsonEncode( ${programStages.displayName} )"
 		  }#if( $velocityCount < $size ),#end
 		#end]
 }
\ No newline at end of file