=== added directory 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/activityplan' === added file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/activityplan/Activity.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/activityplan/Activity.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/activityplan/Activity.java 2010-08-05 10:48:44 +0000 @@ -0,0 +1,98 @@ +/** + * + */ +package org.hisp.dhis.activityplan; + +import java.util.Date; + +import org.hisp.dhis.organisationunit.OrganisationUnit; +import org.hisp.dhis.patient.Patient; +import org.hisp.dhis.program.ProgramStageInstance; + +/** + * @author abyotag_adm + * + */ +public class Activity +{ + private OrganisationUnit provider; + + private Patient beneficiary; + + private ProgramStageInstance task; + + private Date dueDate; + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + public Activity() + { + } + + /** + * @return the provider + */ + public OrganisationUnit getProvider() + { + return provider; + } + + /** + * @param provider the provider to set + */ + public void setProvider( OrganisationUnit provider ) + { + this.provider = provider; + } + + /** + * @return the beneficiary + */ + public Patient getBeneficiary() + { + return beneficiary; + } + + /** + * @param beneficiary the beneficiary to set + */ + public void setBeneficiary( Patient beneficiary ) + { + this.beneficiary = beneficiary; + } + + /** + * @return the task + */ + public ProgramStageInstance getTask() + { + return task; + } + + /** + * @param task the task to set + */ + public void setTask( ProgramStageInstance task ) + { + this.task = task; + } + + /** + * @param dueDate the dueDate to set + */ + public void setDueDate( Date dueDate ) + { + this.dueDate = dueDate; + } + + /** + * @return the dueDate + */ + public Date getDueDate() + { + return dueDate; + } + +} === added file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/activityplan/ActivityPlanService.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/activityplan/ActivityPlanService.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/activityplan/ActivityPlanService.java 2010-08-05 10:48:44 +0000 @@ -0,0 +1,31 @@ +/** + * + */ +package org.hisp.dhis.activityplan; + +import java.util.Collection; +import java.util.Date; + +import org.hisp.dhis.organisationunit.OrganisationUnit; +import org.hisp.dhis.patient.Patient; +import org.hisp.dhis.program.ProgramStageInstance; + +/** + * @author abyotag_adm + * + */ +public interface ActivityPlanService +{ + String ID = ActivityPlanService.class.getName(); + + Collection getActivitiesByProvider( OrganisationUnit organisationUnit ); + + Collection getActivitiesByBeneficiary( Patient beneficiary ); + + Collection getActivitiesByTask( ProgramStageInstance task ); + + Collection getActivitiesByDueDate( Date dueDate ); + + Collection getActivitiesWithInDate( Date startDate, Date endDate ); + +} === 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 2009-11-12 16:47:23 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceService.java 2010-08-05 10:48:44 +0000 @@ -27,6 +27,7 @@ package org.hisp.dhis.program; import java.util.Collection; +import java.util.Date; import java.util.Map; /** @@ -49,6 +50,16 @@ Collection getProgramStageInstances( ProgramStage programStage ); + Collection getProgramStageInstances( Collection programInstances ); + + Collection getProgramStageInstances( Date dueDate ); + + Collection getProgramStageInstances( Date dueDate, Boolean completed ); + + Collection getProgramStageInstances( Date startDate, Date endDate ); + + Collection getProgramStageInstances( Date startDate, Date endDate, Boolean completed ); + Collection getAllProgramStageInstances(); Map colorProgramStageInstances( Collection programStageInstances ); === 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 2009-11-20 07:45:12 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramStageInstanceStore.java 2010-08-05 10:48:44 +0000 @@ -27,6 +27,7 @@ package org.hisp.dhis.program; import java.util.Collection; +import java.util.Date; import org.hisp.dhis.common.GenericStore; @@ -37,10 +38,20 @@ public interface ProgramStageInstanceStore extends GenericStore { - String ID = ProgramStageInstanceStore.class.getName(); - - ProgramStageInstance get( ProgramInstance programInstance, ProgramStage programStage ); - - Collection get( ProgramStage programStage ); - + String ID = ProgramStageInstanceStore.class.getName(); + + ProgramStageInstance get( ProgramInstance programInstance, ProgramStage programStage ); + + Collection get( ProgramStage programStage ); + + Collection getProgramStageInstances( Date dueDate ); + + Collection getProgramStageInstances( Date dueDate, Boolean completed ); + + Collection getProgramStageInstances( Date startDate, Date endDate ); + + Collection getProgramStageInstances( Date startDate, Date endDate, Boolean completed ); + + Collection getProgramStageInstances( Collection programInstances ); + } === added directory 'dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/activityplan' === added file 'dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/activityplan/DefaultActivityPlanService.java' --- dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/activityplan/DefaultActivityPlanService.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/activityplan/DefaultActivityPlanService.java 2010-08-05 10:48:44 +0000 @@ -0,0 +1,271 @@ +/** + * + */ +package org.hisp.dhis.activityplan; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +import org.hisp.dhis.organisationunit.OrganisationUnit; +import org.hisp.dhis.patient.Patient; +import org.hisp.dhis.patientdatavalue.PatientDataValue; +import org.hisp.dhis.patientdatavalue.PatientDataValueService; +import org.hisp.dhis.program.Program; +import org.hisp.dhis.program.ProgramInstance; +import org.hisp.dhis.program.ProgramInstanceService; +import org.hisp.dhis.program.ProgramService; +import org.hisp.dhis.program.ProgramStage; +import org.hisp.dhis.program.ProgramStageInstance; +import org.hisp.dhis.program.ProgramStageInstanceService; + +/** + * @author abyotag_adm + * + */ +public class DefaultActivityPlanService + implements ActivityPlanService +{ + // ------------------------------------------------------------------------- + // Dependencies + // ------------------------------------------------------------------------- + + private ProgramService programService; + + public void setProgramService( ProgramService programService ) + { + this.programService = programService; + } + + private ProgramInstanceService programInstanceService; + + public void setProgramInstanceService( ProgramInstanceService programInstanceService ) + { + this.programInstanceService = programInstanceService; + } + + private PatientDataValueService patientDataValueService; + + public void setPatientDataValueService( PatientDataValueService patientDataValueService ) + { + this.patientDataValueService = patientDataValueService; + } + + private ProgramStageInstanceService programStageInstanceService; + + public void setProgramStageInstanceService( ProgramStageInstanceService programStageInstanceService ) + { + this.programStageInstanceService = programStageInstanceService; + } + + // ------------------------------------------------------------------------- + // ActivityPlan + // ------------------------------------------------------------------------- + + @Override + public Collection getActivitiesByBeneficiary( Patient beneficiary ) + { + + // --------------------------------------------------------------------- + // Get any active program for the beneficiary ( completed = false ) + // --------------------------------------------------------------------- + + Collection programInstances = programInstanceService.getProgramInstances( beneficiary, false ); + + // --------------------------------------------------------------------- + // Get next activities for the active programInstances + // --------------------------------------------------------------------- + + return getActivties( programInstances ); + + } + + @Override + public Collection getActivitiesByProvider( OrganisationUnit organisationUnit ) + { + Collection activities = new ArrayList(); + + Collection programs = programService.getPrograms( organisationUnit ); + + if ( programs.size() > 0 ) + { + // ----------------------------------------------------------------- + // For all the programs a facility is servicing get active programs, + // those with active instances (completed = false) + // ----------------------------------------------------------------- + + Collection programInstances = programInstanceService.getProgramInstances( programs, false ); + + // ----------------------------------------------------------------- + // Get next activities for the active programInstances + // ----------------------------------------------------------------- + + activities = getActivties( programInstances ); + } + + return activities; + } + + @Override + public Collection getActivitiesByTask( ProgramStageInstance task ) + { + // --------------------------------------------------------------------- + // Get the parent program for the given program stage + // --------------------------------------------------------------------- + + Program program = task.getProgramInstance().getProgram(); + + // --------------------------------------------------------------------- + // Pick only those active instances for the identified program + // --------------------------------------------------------------------- + + Collection programInstances = programInstanceService.getProgramInstances( program, false ); + + // --------------------------------------------------------------------- + // Get next activities for the active programInstances + // --------------------------------------------------------------------- + + return getActivties( programInstances ); + } + + @Override + public Collection getActivitiesByDueDate( Date dueDate ) + { + // --------------------------------------------------------------------- + // Get all active stageInstances within the given due date + // --------------------------------------------------------------------- + + Collection programStageInstances = programStageInstanceService.getProgramStageInstances( + dueDate, false ); + + Collection activities = new ArrayList(); + + for ( ProgramStageInstance programStageInstance : programStageInstances ) + { + + Activity activity = new Activity(); + activity.setBeneficiary( programStageInstance.getProgramInstance().getPatient() ); + activity.setTask( programStageInstance ); + activity.setDueDate( programStageInstance.getDueDate() ); + activities.add( activity ); + } + + return activities; + } + + @Override + public Collection getActivitiesWithInDate( Date startDate, Date endDate ) + { + // --------------------------------------------------------------------- + // Get all active stageInstances within the given time frame + // --------------------------------------------------------------------- + + Collection programStageInstances = programStageInstanceService.getProgramStageInstances( + startDate, endDate, false ); + + Collection activities = new ArrayList(); + + for ( ProgramStageInstance programStageInstance : programStageInstances ) + { + + Activity activity = new Activity(); + activity.setBeneficiary( programStageInstance.getProgramInstance().getPatient() ); + activity.setTask( programStageInstance ); + activity.setDueDate( programStageInstance.getDueDate() ); + activities.add( activity ); + } + + return activities; + + } + + // ------------------------------------------------------------------------- + // Supportive methods + // ------------------------------------------------------------------------- + + Collection getActivties( Collection programInstances ) + { + Collection activities = new ArrayList(); + + // --------------------------------------------------------------------- + // Get all stageInstances for the give programInstances + // --------------------------------------------------------------------- + + Collection programStageInstances = programStageInstanceService + .getProgramStageInstances( programInstances ); + + Map mappedStageInstance = new HashMap(); + + for ( ProgramStageInstance programStageInstance : programStageInstances ) + { + mappedStageInstance.put( programStageInstance.getProgramInstance().getId() + "_" + + programStageInstance.getProgramStage().getId(), programStageInstance ); + + } + + // ----------------------------------------------------------------- + // Initially assume to have a first visit for all programInstances + // ----------------------------------------------------------------- + + Map visitsByProgramInstances = new HashMap(); + + for ( ProgramInstance programInstance : programInstances ) + { + programStageInstances.addAll( programInstance.getProgramStageInstances() ); + + visitsByProgramInstances.put( programInstance.getId(), 0 ); + } + + // --------------------------------------------------------------------- + // For each of these active instances, see at which stage they are + // actually (may not necessarily be at the first stage) + // --------------------------------------------------------------------- + + Collection patientDataValues = patientDataValueService + .getPatientDataValues( programStageInstances ); + + for ( PatientDataValue patientDataValue : patientDataValues ) + { + if ( visitsByProgramInstances.get( patientDataValue.getProgramStageInstance().getProgramInstance().getId() ) < patientDataValue + .getProgramStageInstance().getProgramStage().getStageInProgram() ) + { + visitsByProgramInstances.put( patientDataValue.getProgramStageInstance().getProgramInstance().getId(), + patientDataValue.getProgramStageInstance().getProgramStage().getStageInProgram() ); + } + } + + // --------------------------------------------------------------------- + // For each of these active instances, based on the current stage + // determine the next stage + // --------------------------------------------------------------------- + + for ( ProgramInstance programInstance : programInstances ) + { + + Program program = programInstance.getProgram(); + + ProgramStage nextStage = program.getProgramStageByStage( visitsByProgramInstances.get( programInstance + .getId() ) + 1 ); + + if ( nextStage != null ) + { + + ProgramStageInstance nextStageInstance = mappedStageInstance.get( programInstance.getId() + "_" + + nextStage.getId() ); + + Activity activity = new Activity(); + activity.setBeneficiary( programInstance.getPatient() ); + activity.setTask( nextStageInstance ); + activity.setDueDate( nextStageInstance.getDueDate() ); + + activities.add( activity ); + } + } + + return activities; + + } + +} === 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 2010-06-20 08:20:32 +0000 +++ dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/DefaultProgramStageInstanceService.java 2010-08-05 10:48:44 +0000 @@ -103,9 +103,9 @@ { colorMap.put( programStageInstance.getId(), ProgramStageInstance.COLOR_GREEN ); } - else if( programStageInstance.getExecutionDate() != null ) + else if ( programStageInstance.getExecutionDate() != null ) { - colorMap.put( programStageInstance.getId(), ProgramStageInstance.COLOR_LIGHTRED ); + colorMap.put( programStageInstance.getId(), ProgramStageInstance.COLOR_LIGHTRED ); } else { @@ -132,4 +132,31 @@ return colorMap; } + + public Collection getProgramStageInstances( Collection programInstances ) + { + + return programStageInstanceStore.getProgramStageInstances( programInstances ); + + } + + public Collection getProgramStageInstances( Date dueDate ) + { + return programStageInstanceStore.getProgramStageInstances( dueDate ); + } + + public Collection getProgramStageInstances( Date dueDate, Boolean completed ) + { + return programStageInstanceStore.getProgramStageInstances( dueDate, completed ); + } + + public Collection getProgramStageInstances( Date startDate, Date endDate ) + { + return programStageInstanceStore.getProgramStageInstances( startDate, endDate ); + } + + public Collection getProgramStageInstances( Date startDate, Date endDate, Boolean completed ) + { + return programStageInstanceStore.getProgramStageInstances( startDate, endDate, completed ); + } } === 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 2009-11-20 07:45:12 +0000 +++ dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/hibernate/HibernateProgramStageInstanceStore.java 2010-08-05 10:48:44 +0000 @@ -27,6 +27,7 @@ package org.hisp.dhis.program.hibernate; import java.util.Collection; +import java.util.Date; import org.hibernate.criterion.Restrictions; import org.hisp.dhis.hibernate.HibernateGenericStore; @@ -43,16 +44,52 @@ public class HibernateProgramStageInstanceStore extends HibernateGenericStore implements ProgramStageInstanceStore -{ +{ + public ProgramStageInstance get( ProgramInstance programInstance, ProgramStage programStage ) { return (ProgramStageInstance) getCriteria( Restrictions.eq( "programInstance", programInstance ), Restrictions.eq( "programStage", programStage ) ).uniqueResult(); } - + @SuppressWarnings( "unchecked" ) public Collection get( ProgramStage programStage ) { return getCriteria( Restrictions.eq( "programStage", programStage ) ).list(); } + + @SuppressWarnings( "unchecked" ) + public Collection getProgramStageInstances( Collection programInstances ) + { + + return getCriteria( Restrictions.in( "programInstance", programInstances ) ).list(); + + } + + @SuppressWarnings( "unchecked" ) + public Collection getProgramStageInstances( Date dueDate ) + { + return getCriteria( Restrictions.eq( "dueDate", dueDate ) ).list(); + } + + @SuppressWarnings( "unchecked" ) + public Collection getProgramStageInstances( Date dueDate, Boolean completed ) + { + return getCriteria( Restrictions.eq( "dueDate", dueDate ), Restrictions.eq( "completed", completed ) ).list(); + } + + @SuppressWarnings( "unchecked" ) + public Collection getProgramStageInstances( Date startDate, Date endDate ) + { + + return (getCriteria( Restrictions.ge( "startDate", startDate ), Restrictions.le( "endDate", endDate ) )).list(); + } + + @SuppressWarnings( "unchecked" ) + public Collection getProgramStageInstances( Date startDate, Date endDate, Boolean completed ) + { + + return (getCriteria( Restrictions.ge( "startDate", startDate ), Restrictions.le( "endDate", endDate ), + Restrictions.eq( "completed", completed ) )).list(); + } } === 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 2010-05-27 08:42:06 +0000 +++ dhis-2/dhis-services/dhis-service-patient/src/main/resources/META-INF/dhis/beans.xml 2010-08-05 10:48:44 +0000 @@ -103,6 +103,18 @@ + + + + + + + activities = new ArrayList(); + + public Collection getActivities() + { + return activities; + } + // ------------------------------------------------------------------------- // Action implementation // ------------------------------------------------------------------------- @@ -188,64 +179,57 @@ organisationUnit = selectionManager.getSelectedOrganisationUnit(); - // --------------------------------------------------------------------- - // Get all the programs the facility is providing - // --------------------------------------------------------------------- - - Collection programs = programService.getPrograms( organisationUnit ); - - - if ( programs.size() > 0 ) - { - - // ----------------------------------------------------------------- - // For all the programs a facility is servicing get the active - // instances completed = false - // ----------------------------------------------------------------- - - Collection programInstances = programInstanceService.getProgramInstances( programs, false ); - - // ----------------------------------------------------------------- - // For all the active program instances determine the next visits - // and group these visits based on the patient to be visited - // ----------------------------------------------------------------- - - visitsByPatients = nextVisitGenerator.getNextVisits( programInstances ); - - if ( !visitsByPatients.keySet().isEmpty() ) - { - Collection patientsToBeVisted = visitsByPatients.keySet(); - - // ------------------------------------------------------------- - // Get all the attributes of the patients to be visited (in case - // users want to make sorting based on attributes - // ------------------------------------------------------------- - - attributeValueMap = patientAttributeValueService - .getPatientAttributeValueMapForPatients( patientsToBeVisted ); - - // ------------------------------------------------------------- - // Sort patients to be visited based on the chosen attribute - // ------------------------------------------------------------- - - if ( attributes.size() > 0 ) - { - sortingAttribute = attributes.iterator().next(); - } - - if ( sortingAttributeId != null ) - { - sortingAttribute = patientAttributeService.getPatientAttribute( sortingAttributeId ); - } - - if ( sortingAttribute != null ) - { - sortedPatients = patientService.sortPatientsByAttribute( patientsToBeVisted, sortingAttribute ); - } - else - { - sortedPatients = patientsToBeVisted; - } + activities = activityPlanService.getActivitiesByProvider( organisationUnit ); + + for ( Activity activity : activities ) + { + if ( visitsByPatients.containsKey( activity.getBeneficiary() ) ) + { + visitsByPatients.get( activity.getBeneficiary() ).add( activity.getTask() ); + } + else + { + Set programStageInstancess = new HashSet(); + + programStageInstancess.add( activity.getTask() ); + + visitsByPatients.put( activity.getBeneficiary(), programStageInstancess ); + } + } + + if ( !visitsByPatients.keySet().isEmpty() ) + { + Collection patientsToBeVisted = visitsByPatients.keySet(); + + // ------------------------------------------------------------- + // Get all the attributes of the patients to be visited (in case + // users want to make sorting based on attributes + // ------------------------------------------------------------- + + attributeValueMap = patientAttributeValueService + .getPatientAttributeValueMapForPatients( patientsToBeVisted ); + + // ------------------------------------------------------------- + // Sort patients to be visited based on the chosen attribute + // ------------------------------------------------------------- + + if ( attributes.size() > 0 ) + { + sortingAttribute = attributes.iterator().next(); + } + + if ( sortingAttributeId != null ) + { + sortingAttribute = patientAttributeService.getPatientAttribute( sortingAttributeId ); + } + + if ( sortingAttribute != null ) + { + sortedPatients = patientService.sortPatientsByAttribute( patientsToBeVisted, sortingAttribute ); + } + else + { + sortedPatients = patientsToBeVisted; } } === 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 2010-07-06 09:34:47 +0000 +++ dhis-2/dhis-web/dhis-web-caseentry/src/main/resources/META-INF/dhis/beans.xml 2010-08-05 10:48:44 +0000 @@ -240,17 +240,13 @@ - - - + ref="org.hisp.dhis.patient.PatientService"/> + ref="org.hisp.dhis.patient.PatientAttributeService"/> + === modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/java/org/hisp/dhis/patient/action/programstage/SaveProgramStageSortOrderAction.java' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/java/org/hisp/dhis/patient/action/programstage/SaveProgramStageSortOrderAction.java 2009-10-22 07:37:47 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/java/org/hisp/dhis/patient/action/programstage/SaveProgramStageSortOrderAction.java 2010-08-05 10:48:44 +0000 @@ -58,11 +58,11 @@ // Input // ------------------------------------------------------------------------- - private List programStageList; + private List sortedList = new ArrayList(); - public void setprogramStageList( List programStageList ) + public void setSortedList( List sortedList ) { - this.programStageList = programStageList; + this.sortedList = sortedList; } private Integer id; @@ -85,10 +85,11 @@ int stageInProgram = 1; - List programStages = new ArrayList(programStageList.size()); + List programStages = new ArrayList( sortedList.size() ); - for ( String programStageId : programStageList ) + for ( String programStageId : sortedList ) { + ProgramStage programStage = programStageService.getProgramStage( Integer.parseInt( programStageId ) ); programStages.add( programStage ); === modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/webapp/dhis-web-maintenance-patient/javascript/programStage.js' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/webapp/dhis-web-maintenance-patient/javascript/programStage.js 2010-02-22 09:19:15 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/webapp/dhis-web-maintenance-patient/javascript/programStage.js 2010-08-05 10:48:44 +0000 @@ -43,6 +43,11 @@ } } +function submitSortOderForm() +{ + selectAllById( 'sortedList' ); + document.getElementById( 'sortProgramStageForm' ).submit(); +} //----------------------------------------------------------------------------- // Move members === modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/webapp/dhis-web-maintenance-patient/sortProgramStageForm.vm' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/webapp/dhis-web-maintenance-patient/sortProgramStageForm.vm 2009-10-22 07:37:47 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/webapp/dhis-web-maintenance-patient/sortProgramStageForm.vm 2010-08-05 10:48:44 +0000 @@ -14,7 +14,7 @@ - #foreach ( $programStage in $programStages ) #end @@ -22,8 +22,8 @@ -

- +

+ @@ -36,13 +36,4 @@ - - - - + \ No newline at end of file