=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramInstanceService.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramInstanceService.java 2012-03-08 04:56:36 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/program/ProgramInstanceService.java 2012-09-04 10:10:05 +0000 @@ -87,4 +87,6 @@ int countProgramInstances( Program program, OrganisationUnit organisationUnit, Date startDate, Date endDate ); List getProgramInstanceReport( Patient patient, I18n i18n, I18nFormat format ); + + Grid getProgramInstanceReport( ProgramInstance programInstance, I18n i18n, I18nFormat format ); } === modified file 'dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/DefaultProgramInstanceService.java' --- dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/DefaultProgramInstanceService.java 2012-05-29 15:37:40 +0000 +++ dhis-2/dhis-services/dhis-service-patient/src/main/java/org/hisp/dhis/program/DefaultProgramInstanceService.java 2012-09-04 10:10:05 +0000 @@ -33,6 +33,7 @@ import org.hisp.dhis.common.Grid; import org.hisp.dhis.common.GridHeader; +import org.hisp.dhis.dataelement.DataElement; import org.hisp.dhis.i18n.I18n; import org.hisp.dhis.i18n.I18nFormat; import org.hisp.dhis.organisationunit.OrganisationUnit; @@ -42,6 +43,8 @@ import org.hisp.dhis.patient.PatientIdentifierType; import org.hisp.dhis.patientattributevalue.PatientAttributeValue; import org.hisp.dhis.patientattributevalue.PatientAttributeValueService; +import org.hisp.dhis.patientdatavalue.PatientDataValue; +import org.hisp.dhis.patientdatavalue.PatientDataValueService; import org.hisp.dhis.system.grid.ListGrid; import org.springframework.transaction.annotation.Transactional; @@ -71,11 +74,11 @@ this.patientAttributeValueService = patientAttributeValueService; } - private ProgramStageInstanceService programStageInstanceService; + private PatientDataValueService patientDataValueService; - public void setProgramStageInstanceService( ProgramStageInstanceService programStageInstanceService ) + public void setPatientDataValueService( PatientDataValueService patientDataValueService ) { - this.programStageInstanceService = programStageInstanceService; + this.patientDataValueService = patientDataValueService; } // ------------------------------------------------------------------------- @@ -222,7 +225,9 @@ attrGrid.addRow(); attrGrid.addValue( i18n.getString( "phoneNumber" ) ); - attrGrid.addValue( ( patient.getPhoneNumber() == null || patient.getPhoneNumber().isEmpty() ) ? PatientAttributeValue.UNKNOWN : patient.getPhoneNumber() ); + attrGrid + .addValue( (patient.getPhoneNumber() == null || patient.getPhoneNumber().isEmpty()) ? PatientAttributeValue.UNKNOWN + : patient.getPhoneNumber() ); // --------------------------------------------------------------------- // Add dynamic attribues @@ -284,42 +289,115 @@ { for ( ProgramInstance programInstance : programInstances ) { - Grid gridProgram = new ListGrid(); - gridProgram.setTitle( programInstance.getProgram().getName() ); - gridProgram.setSubtitle( "" ); - - // --------------------------------------------------------------------- - // Headers - // --------------------------------------------------------------------- - - gridProgram.addHeader( new GridHeader( i18n.getString( "name" ), false, false ) ); - gridProgram.addHeader( new GridHeader( i18n.getString( "value" ), false, false ) ); - gridProgram.addHeader( new GridHeader( "", true, false ) ); - - // --------------------------------------------------------------------- - // Values - // --------------------------------------------------------------------- - - gridProgram.addRow(); - gridProgram.addValue( i18n.getString( "date_of_enrollment" ) ); - gridProgram.addValue( format.formatDate( programInstance.getEnrollmentDate() ) ); - - gridProgram.addRow(); - gridProgram.addValue( i18n.getString( "date_of_incident" ) ); - gridProgram.addValue( format.formatDate( programInstance.getDateOfIncident() ) ); + Grid gridProgram = getProgramInstanceReport( programInstance, i18n, format ); + + // --------------------------------------------------------------------- + // Grids for program-stage-instance + // --------------------------------------------------------------------- + + getProgramStageInstancesReport( gridProgram, programInstance, format, i18n ); grids.add( gridProgram ); - - // --------------------------------------------------------------------- - // Grids for program-stage-instance - // --------------------------------------------------------------------- - - List programInstanceGrids = programStageInstanceService.getProgramStageInstancesReport( - programInstance, format, i18n ); - grids.addAll( programInstanceGrids ); } } return grids; } + + public Grid getProgramInstanceReport( ProgramInstance programInstance, I18n i18n, I18nFormat format ) + { + Grid grid = new ListGrid(); + + // --------------------------------------------------------------------- + // Get all program data registered + // --------------------------------------------------------------------- + + grid.setTitle( programInstance.getProgram().getName() ); + grid.setSubtitle( "" ); + + // --------------------------------------------------------------------- + // Headers + // --------------------------------------------------------------------- + + grid.addHeader( new GridHeader( i18n.getString( "name" ), false, false ) ); + grid.addHeader( new GridHeader( i18n.getString( "value" ), false, false ) ); + grid.addHeader( new GridHeader( "", true, false ) ); + + // --------------------------------------------------------------------- + // Grids for program-stage-instance + // --------------------------------------------------------------------- + + grid.addRow(); + grid.addValue( i18n.getString( "date_of_enrollment" ) ); + grid.addValue( format.formatDate( programInstance.getEnrollmentDate() ) ); + + grid.addRow(); + grid.addValue( i18n.getString( "date_of_incident" ) ); + grid.addValue( format.formatDate( programInstance.getDateOfIncident() ) ); + + getProgramStageInstancesReport( grid, programInstance, format, i18n ); + + return grid; + } + + // ------------------------------------------------------------------------- + // due-date && report-date + // ------------------------------------------------------------------------- + + private void getProgramStageInstancesReport( Grid grid, ProgramInstance programInstance, I18nFormat format, + I18n i18n ) + { + Collection programStageInstances = programInstance.getProgramStageInstances(); + + for ( ProgramStageInstance programStageInstance : programStageInstances ) + { + grid.addRow(); + grid.addValue( "" ); + grid.addValue( "" ); + + grid.addRow(); + grid.addValue( ">> " + i18n.getString( "program_stage" ) ); + grid.addValue( programStageInstance.getProgramStage().getName() ); + + // ----------------------------------------------------------------- + // due-date && report-date + // ----------------------------------------------------------------- + + Date executionDate = programStageInstance.getExecutionDate(); + String executionDateValue = (executionDate != null) ? format.formatDate( programStageInstance + .getExecutionDate() ) : "[" + i18n.getString( "none" ) + "]"; + + grid.addRow(); + grid.addValue( i18n.getString( "due_date" ) ); + grid.addValue( format.formatDate( programStageInstance.getDueDate() ) ); + + grid.addRow(); + grid.addValue( i18n.getString( "report_date" ) ); + grid.addValue( executionDateValue ); + + // ----------------------------------------------------------------- + // Values + // ----------------------------------------------------------------- + + Collection patientDataValues = patientDataValueService + .getPatientDataValues( programStageInstance ); + + for ( PatientDataValue patientDataValue : patientDataValues ) + { + DataElement dataElement = patientDataValue.getDataElement(); + + grid.addRow(); + grid.addValue( dataElement.getName() ); + + if ( dataElement.getType().equals( DataElement.VALUE_TYPE_BOOL ) ) + { + grid.addValue( i18n.getString( patientDataValue.getValue() ) ); + } + else + { + grid.addValue( patientDataValue.getValue() ); + } + } + } + } } === 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 2012-08-24 10:09:45 +0000 +++ dhis-2/dhis-services/dhis-service-patient/src/main/resources/META-INF/dhis/beans.xml 2012-09-04 10:10:05 +0000 @@ -209,8 +209,8 @@ - + === added file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/patient/GetProgramInstanceHistoryAction.java' --- dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/patient/GetProgramInstanceHistoryAction.java 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/patient/GetProgramInstanceHistoryAction.java 2012-09-04 10:10:05 +0000 @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2004-2009, 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.patient; + +import org.hisp.dhis.common.Grid; +import org.hisp.dhis.i18n.I18n; +import org.hisp.dhis.i18n.I18nFormat; +import org.hisp.dhis.program.ProgramInstance; +import org.hisp.dhis.program.ProgramInstanceService; + +import com.opensymphony.xwork2.Action; + +/** + * @author Chau Thu Tran + * + * @version GetProgramInstanceHistoryAction.java 2:15:42 PM Sep 4, 2012 $ + */ +public class GetProgramInstanceHistoryAction + implements Action +{ + // ------------------------------------------------------------------------- + // Implementation Action + // ------------------------------------------------------------------------- + + private ProgramInstanceService programInstanceService; + + public void setProgramInstanceService( ProgramInstanceService programInstanceService ) + { + this.programInstanceService = programInstanceService; + } + + private I18n i18n; + + public void setI18n( I18n i18n ) + { + this.i18n = i18n; + } + + private I18nFormat format; + + public void setFormat( I18nFormat format ) + { + this.format = format; + } + + // ------------------------------------------------------------------------- + // Getters && Setters + // ------------------------------------------------------------------------- + + private Integer programInstanceId; + + public void setProgramInstanceId( Integer programInstanceId ) + { + this.programInstanceId = programInstanceId; + } + + private String type; + + public void setType( String type ) + { + this.type = type; + } + + private Grid grid; + + public Grid getGrid() + { + return grid; + } + + // ------------------------------------------------------------------------- + // Implementation Action + // ------------------------------------------------------------------------- + + public String execute() + throws Exception + { + ProgramInstance programInstance = programInstanceService.getProgramInstance( programInstanceId ); + + grid = programInstanceService.getProgramInstanceReport( programInstance, i18n, format ); + + if ( type == null ) + { + return SUCCESS; + } + + return type; + } +} === modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/patient/ProgramEnrollmentSelectAction.java' --- dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/patient/ProgramEnrollmentSelectAction.java 2012-09-03 19:53:34 +0000 +++ dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/patient/ProgramEnrollmentSelectAction.java 2012-09-04 10:10:05 +0000 @@ -129,12 +129,23 @@ // Get single-event if patient no have any single event // OR have un-completed single-event Collection programInstances = programInstanceService.getProgramInstances( patient, false ); - + for ( ProgramInstance programInstance : programInstances ) { programs.remove( programInstance.getProgram() ); } + // Remove single-event with registation programs which patient completed + Collection completedProgramInstances = programInstanceService.getProgramInstances( patient, true ); + + for ( ProgramInstance programInstance : completedProgramInstances ) + { + if ( programInstance.getProgram().isSingleEvent() ) + { + programs.remove( programInstance.getProgram() ); + } + } + return SUCCESS; } } === 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 2012-09-03 19:53:34 +0000 +++ dhis-2/dhis-web/dhis-web-caseentry/src/main/resources/META-INF/dhis/beans.xml 2012-09-04 10:10:05 +0000 @@ -584,6 +584,12 @@ + + + + /dhis-web-caseentry/patientHistory.vm + + /content.vm + /dhis-web-caseentry/programInstanceHistory.vm + + /content.vm @@ -553,6 +559,13 @@ /dhis-web-caseentry/responseProgramInstance.vm + + + /content.vm + /dhis-web-caseentry/eventMessage.vm + F_PATIENT_UPDATE + === added file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/eventMessage.vm' --- dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/eventMessage.vm 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/eventMessage.vm 2012-09-04 10:10:05 +0000 @@ -0,0 +1,31 @@ + + + + + + + #set( $mark = false ) + #foreach( $programStageInstance in $programInstance.programStageInstances ) + #if( $programStageInstance.outboundSms.size() > 0 || + $programStageInstance.outboundSms.size() > 0 ) + + #foreach( $comment in $programStageInstance.comments ) + + + + + + #set( $mark = !$mark ) + #end + + #foreach( $sms in $programStageInstance.outboundSms ) + + + + + + #set( $mark = !$mark ) + #end + #end + #end +
$i18n.getString('date')$i18n.getString('program_stage')$i18n.getString('message')
$!format.formatDate( $comment.createdDate )$programStageInstance.programStage.name($comment.creator) $comment.commentText
$!format.formatDate( $sms.date )$programStageInstance.programStage.name$sms.message
=== modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/javascript/patient.js' --- dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/javascript/patient.js 2012-08-29 06:02:27 +0000 +++ dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/javascript/patient.js 2012-09-04 10:10:05 +0000 @@ -417,9 +417,7 @@ + " programStageInstanceId='" + programStageInstanceId + "'>" + " " + " " - + programName + "(" + enrollmentDate + ")" - + "" - + "" + + programName + "(" + enrollmentDate + ")" + ""; activedRow += " - $programInstance.program.name ($format.formatDate($programInstance.enrollmentDate)) - + $programInstance.program.name ($format.formatDate($programInstance.enrollmentDate)) + + - - - - - • $programStageInstance.programStage.name ($format.formatDate($programStageInstance.dueDate)) @@ -116,10 +112,6 @@ programStageInstanceId='$programStageInstanceId'> $programInstance.program.name ($format.formatDate($programInstance.enrollmentDate)) - - - - #end @@ -146,8 +138,7 @@ - $programInstance.program.name ($format.formatDate($programInstance.enrollmentDate)) - + $programInstance.program.name ($format.formatDate($programInstance.enrollmentDate)) #end === modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/programEnrollmentForm.vm' --- dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/programEnrollmentForm.vm 2012-08-30 07:48:24 +0000 +++ dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/programEnrollmentForm.vm 2012-09-04 10:10:05 +0000 @@ -3,11 +3,14 @@ #set($noGroup = $attributeGroups.size() ) #if( $programInstance || $hasDataEntry=='true') +
@@ -154,11 +157,32 @@
+
+ $i18n.getString("program") + + + + + + + + + + + + + +
+ + +
+
+
#if( $programStageInstances.size() > 0 ) - - - + + + @@ -193,7 +217,14 @@
$i18n.getString( "nr" ) $i18n.getString( "program_stage" )
#end
+ + +
+
+
+
+
#end @@ -207,6 +238,13 @@ #if( $!programInstance ) showById('unenrollBtn'); #end + + #if( $programInstance.completed) + jQuery(":input").prop('disabled', true); + jQuery(":input").datepicker("destroy"); + #else + datePickerInRangeValid( 'dateOfIncident' , 'enrollmentDate' ); + #end }); #if( $programInstance || $hasDataEntry == 'true') @@ -231,6 +269,15 @@ #end #end + $( "#tabs" ).bind( "tabsselect", function(event, ui) { + if( ui.tab.hash == '#tab-5' ){ + programReports(getFieldValue('programInstanceId')); + } + else if( ui.tab.hash == '#tab-4' ){ + getEventMessages(getFieldValue('programInstanceId')); + } + }); + setInnerHTML('enrollmentDateDescription', "$!program.dateOfEnrollmentDescription" ); setInnerHTML('dateOfIncidentDescription', "$!program.dateOfIncidentDescription" ); setFieldValue('enrollmentDate', "$!format.formatDate( $programInstance.enrollmentDate )" ); === modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/programEnrollmentSelectForm.vm' --- dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/programEnrollmentSelectForm.vm 2012-08-29 07:30:55 +0000 +++ dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/programEnrollmentSelectForm.vm 2012-09-04 10:10:05 +0000 @@ -44,8 +44,8 @@ - - + + === added file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/programInstanceHistory.vm' --- dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/programInstanceHistory.vm 1970-01-01 00:00:00 +0000 +++ dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/programInstanceHistory.vm 2012-09-04 10:10:05 +0000 @@ -0,0 +1,41 @@ + + + + #foreach( $header in $grid.getVisibleHeaders() ) + + #end + + + + + #set( $mark = false ) + #set( $flag = 0 ) + #foreach( $row in $grid.getVisibleRows() ) + + #set( $nameCol='false' ) + #if($flag>1) #set( $flag = 0 ) #end + #foreach( $col in $row ) + #set( $index = ( $velocityCount - 1 ) ) + #if($col=='') + + #set( $flag = 1 ) + #elseif( $flag > 0 ) + #if( $grid.getVisibleHeaders().get( $index ).meta ) + + #else + + #end + #set( $flag = $flag + 1 ) + #else + #if( $grid.getVisibleHeaders().get( $index ).meta ) + + #else + + #end + #end + #end + + #end + #set( $mark = !$mark) + +
$!encoder.htmlEncode( $header.name )
 $!encoder.htmlEncode( $col )$!col$!encoder.htmlEncode( $col )$!col
\ No newline at end of file === modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/programStageInstanceFlow.vm' --- dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/programStageInstanceFlow.vm 2012-09-03 19:53:34 +0000 +++ dhis-2/dhis-web/dhis-web-caseentry/src/main/webapp/dhis-web-caseentry/programStageInstanceFlow.vm 2012-09-04 10:10:05 +0000 @@ -1,4 +1,3 @@ -
@@ -9,9 +8,7 @@ #foreach( $programStageInstance in $programInstance.programStageInstances ) - +
- -