=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/PatientReminder.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/PatientReminder.java 2013-07-02 14:26:44 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/patient/PatientReminder.java 2013-07-19 06:04:09 +0000 @@ -29,6 +29,8 @@ import java.io.Serializable; +import org.hisp.dhis.user.UserGroup; + /** * @author Chau Thu Tran * @version PatientReminder.java 1:07:58 PM Sep 18, 2012 $ @@ -70,6 +72,8 @@ public static final int SEND_TO_ALL_USERS_IN_ORGUGNIT_REGISTERED = 4; + public static final int SEND_TO_USER_GROUP = 5; + public static final int SEND_WHEN_TO_EMROLLEMENT = 1; public static final int SEND_WHEN_TO_C0MPLETED_EVENT = 2; @@ -89,6 +93,8 @@ private Integer sendTo; private Integer whenToSend; + + private UserGroup userGroup; // ------------------------------------------------------------------------- // Constructors @@ -165,4 +171,12 @@ } + public UserGroup getUserGroup() { + return userGroup; + } + + public void setUserGroup( UserGroup userGroup ) { + this.userGroup = userGroup; + } + } === modified file 'dhis-2/dhis-services/dhis-service-patient/src/main/resources/org/hisp/dhis/patient/hibernate/PatientReminder.hbm.xml' --- dhis-2/dhis-services/dhis-service-patient/src/main/resources/org/hisp/dhis/patient/hibernate/PatientReminder.hbm.xml 2013-07-02 12:24:02 +0000 +++ dhis-2/dhis-services/dhis-service-patient/src/main/resources/org/hisp/dhis/patient/hibernate/PatientReminder.hbm.xml 2013-07-19 06:04:09 +0000 @@ -21,6 +21,7 @@ - + + === modified file 'dhis-2/dhis-services/dhis-service-sms/src/main/java/org/hisp/dhis/sms/parse/DefaultParserManager.java' --- dhis-2/dhis-services/dhis-service-sms/src/main/java/org/hisp/dhis/sms/parse/DefaultParserManager.java 2013-07-16 11:33:35 +0000 +++ dhis-2/dhis-services/dhis-service-sms/src/main/java/org/hisp/dhis/sms/parse/DefaultParserManager.java 2013-07-19 06:04:09 +0000 @@ -402,7 +402,7 @@ { Set receivers = new HashSet( userGroup.getMembers() ); - UserCredentials anonymousUser = userService.getUserCredentialsByUsername( "system" ); + UserCredentials anonymousUser = userService.getUserCredentialsByUsername( "c" ); MessageConversation conversation = new MessageConversation( command.getName(), anonymousUser.getUser() ); === modified file 'dhis-2/dhis-services/dhis-service-sms/src/main/java/org/hisp/dhis/sms/smslib/SmsLibService.java' --- dhis-2/dhis-services/dhis-service-sms/src/main/java/org/hisp/dhis/sms/smslib/SmsLibService.java 2013-07-16 06:53:26 +0000 +++ dhis-2/dhis-services/dhis-service-sms/src/main/java/org/hisp/dhis/sms/smslib/SmsLibService.java 2013-07-19 06:04:09 +0000 @@ -27,6 +27,13 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +import java.io.IOException; +import java.lang.Character.UnicodeBlock; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hisp.dhis.sms.SmsServiceException; @@ -45,19 +52,12 @@ import org.smslib.GatewayException; import org.smslib.IInboundMessageNotification; import org.smslib.IOutboundMessageNotification; +import org.smslib.Message.MessageEncodings; import org.smslib.OutboundMessage; import org.smslib.SMSLibException; import org.smslib.Service; -import org.smslib.Message.MessageEncodings; import org.smslib.Service.ServiceStatus; -import java.io.IOException; -import java.lang.Character.UnicodeBlock; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; - public class SmsLibService implements OutboundSmsTransportService { @@ -172,7 +172,7 @@ try { log.info( "Sending message " + sms ); - + if ( gatewayId == null || gatewayId.isEmpty() ) { sent = getService().sendMessage( outboundMessage ); === modified file 'dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/CompleteDataEntryAction.java' --- dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/CompleteDataEntryAction.java 2013-07-12 02:46:16 +0000 +++ dhis-2/dhis-web/dhis-web-caseentry/src/main/java/org/hisp/dhis/caseentry/action/caseentry/CompleteDataEntryAction.java 2013-07-19 06:04:09 +0000 @@ -35,6 +35,7 @@ import java.util.Set; import org.hisp.dhis.i18n.I18nFormat; +import org.hisp.dhis.message.MessageService; import org.hisp.dhis.patient.Patient; import org.hisp.dhis.patient.PatientReminder; import org.hisp.dhis.patient.PatientService; @@ -104,7 +105,14 @@ { this.format = format; } + + private MessageService messageService; + public void setMessageService( MessageService messageService ) + { + this.messageService = messageService; + } + // ------------------------------------------------------------------------- // Input / Output // ------------------------------------------------------------------------- @@ -230,7 +238,6 @@ if ( phoneNumbers.size() > 0 ) { - String msg = reminder.getTemplateMessage(); String patientName = patient.getFirstName(); @@ -267,6 +274,13 @@ e.printStackTrace(); } } + // send to user group + else + { + String msg = getStringMsgFromTemplateMsg( reminder, programStageInstance, patient ); + String programStageName = programStageInstance.getProgramStage().getName(); + messageService.sendMessage( programStageName, msg, null, reminder.getUserGroup().getMembers(),false, true ); + } } private void sendSMSToCompletedProgram( ProgramInstance programInstance ) @@ -278,7 +292,7 @@ Collection reminders = programInstance.getProgram().getPatientReminders(); for ( PatientReminder rm : reminders ) { - if ( rm != null && rm.getWhenToSend() == PatientReminder.SEND_WHEN_TO_C0MPLETED_EVENT ) + if ( rm != null && rm.getWhenToSend() == PatientReminder.SEND_WHEN_TO_C0MPLETED_PROGRAM ) { sendProgramMessage( rm, programInstance, patient ); break; @@ -366,6 +380,21 @@ phoneNumbers.add( patient.getOrganisationUnit().getPhoneNumber() ); } break; + case PatientReminder.SEND_TO_USER_GROUP: + /*UserGroup userGroup = reminder.getUserGroup(); + if ( userGroup != null && userGroup.getMembers().size() > 0 ) + { + Set receivers = new HashSet( userGroup.getMembers() ); + for ( User user : receivers ) + { + if( user.getPhoneNumber() != null && !user.getPhoneNumber().isEmpty() ) + { + phoneNumbers.add( user.getPhoneNumber() ); + } + } + }*/ + phoneNumbers.clear(); + break; default: if ( patient.getPhoneNumber() != null && !patient.getPhoneNumber().isEmpty() ) { @@ -375,5 +404,26 @@ } return phoneNumbers; } + + public String getStringMsgFromTemplateMsg( PatientReminder reminder, ProgramStageInstance programStageInstance, Patient patient ) + { + String msg = reminder.getTemplateMessage(); + + String patientName = patient.getFirstName(); + String organisationunitName = patient.getOrganisationUnit().getName(); + String programName = programStageInstance.getProgramInstance().getProgram().getName(); + String programStageName = programStageInstance.getProgramStage().getName(); + String daysSinceDueDate = DateUtils.daysBetween( new Date(), programStageInstance.getDueDate() ) + ""; + String dueDate = format.formatDate( programStageInstance.getDueDate() ); + + msg = msg.replace( PatientReminder.TEMPLATE_MESSSAGE_PATIENT_NAME, patientName ); + msg = msg.replace( PatientReminder.TEMPLATE_MESSSAGE_PROGRAM_NAME, programName ); + msg = msg.replace( PatientReminder.TEMPLATE_MESSSAGE_PROGAM_STAGE_NAME, programStageName ); + msg = msg.replace( PatientReminder.TEMPLATE_MESSSAGE_DUE_DATE, dueDate ); + msg = msg.replace( PatientReminder.TEMPLATE_MESSSAGE_ORGUNIT_NAME, organisationunitName ); + msg = msg.replace( PatientReminder.TEMPLATE_MESSSAGE_DAYS_SINCE_DUE_DATE, daysSinceDueDate ); + + return msg; + } } === 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-07-15 08:04:11 +0000 +++ dhis-2/dhis-web/dhis-web-caseentry/src/main/resources/META-INF/dhis/beans.xml 2013-07-19 06:04:09 +0000 @@ -122,6 +122,7 @@ + ( program.getPatientIdentifierTypes() ) ); availableAttributes.removeAll( new HashSet( program.getPatientAttributes() ) ); } - + return SUCCESS; } } === modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/java/org/hisp/dhis/patient/action/program/UpdateProgramAction.java' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/java/org/hisp/dhis/patient/action/program/UpdateProgramAction.java 2013-07-16 04:31:27 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/java/org/hisp/dhis/patient/action/program/UpdateProgramAction.java 2013-07-19 06:04:09 +0000 @@ -237,7 +237,7 @@ { this.whenToSend = whenToSend; } - + private Boolean useBirthDateAsIncidentDate; public void setUseBirthDateAsIncidentDate( Boolean useBirthDateAsIncidentDate ) === modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/java/org/hisp/dhis/patient/action/programstage/GetProgramStageAction.java' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/java/org/hisp/dhis/patient/action/programstage/GetProgramStageAction.java 2011-09-01 09:17:33 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/java/org/hisp/dhis/patient/action/programstage/GetProgramStageAction.java 2013-07-19 06:04:09 +0000 @@ -27,11 +27,15 @@ package org.hisp.dhis.patient.action.programstage; +import java.util.ArrayList; import java.util.Collection; +import java.util.List; import org.hisp.dhis.program.ProgramStage; import org.hisp.dhis.program.ProgramStageDataElement; import org.hisp.dhis.program.ProgramStageService; +import org.hisp.dhis.user.UserGroup; +import org.hisp.dhis.user.UserGroupService; import com.opensymphony.xwork2.Action; @@ -53,6 +57,13 @@ { this.programStageService = programStageService; } + + private UserGroupService userGroupService; + + public void setUserGroupService( UserGroupService userGroupService ) + { + this.userGroupService = userGroupService; + } // ------------------------------------------------------------------------- // Input/Output @@ -83,7 +94,19 @@ { return programStageDataElements; } - + + private List userGroups; + + public List getUserGroups() + { + return userGroups; + } + + public void setUserGroups( List userGroups ) + { + this.userGroups = userGroups; + } + // ------------------------------------------------------------------------- // Action implementation // ------------------------------------------------------------------------- @@ -94,6 +117,8 @@ programStage = programStageService.getProgramStage( id ); programStageDataElements = programStage.getProgramStageDataElements(); + + userGroups = new ArrayList(userGroupService.getAllUserGroups()); return SUCCESS; } === modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/java/org/hisp/dhis/patient/action/programstage/UpdateProgramStageAction.java' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/java/org/hisp/dhis/patient/action/programstage/UpdateProgramStageAction.java 2013-07-09 08:28:54 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/java/org/hisp/dhis/patient/action/programstage/UpdateProgramStageAction.java 2013-07-19 06:04:09 +0000 @@ -39,6 +39,8 @@ import org.hisp.dhis.program.ProgramStageDataElement; import org.hisp.dhis.program.ProgramStageDataElementService; import org.hisp.dhis.program.ProgramStageService; +import org.hisp.dhis.user.UserGroup; +import org.hisp.dhis.user.UserGroupService; import com.opensymphony.xwork2.Action; @@ -74,7 +76,14 @@ { this.programStageDataElementService = programStageDataElementService; } - + + private UserGroupService userGroupService; + + public void setUserGroupService( UserGroupService userGroupService ) + { + this.userGroupService = userGroupService; + } + // ------------------------------------------------------------------------- // Input/Output // ------------------------------------------------------------------------- @@ -225,6 +234,13 @@ { this.whenToSend = whenToSend; } + + private List userGroup = new ArrayList(); + + public void setUserGroup( List userGroup ) + { + this.userGroup = userGroup; + } // ------------------------------------------------------------------------- // Action implementation @@ -256,6 +272,7 @@ programStage.setValidCompleteOnly( validCompleteOnly ); programStage.setCaptureCoordinates( captureCoordinates ); + // SMS Reminder Set patientReminders = new HashSet(); for ( int i = 0; i < this.daysAllowedSendMessages.size(); i++ ) { @@ -264,6 +281,8 @@ reminder.setDateToCompare( PatientReminder.DUE_DATE_TO_COMPARE ); reminder.setSendTo( sendTo.get( i ) ); reminder.setWhenToSend( whenToSend.get( i ) ); + UserGroup selectedUserGroup = userGroupService.getUserGroup( userGroup.get( i ) ); + reminder.setUserGroup( selectedUserGroup ); patientReminders.add( reminder ); } programStage.setPatientReminders( patientReminders ); === modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/resources/META-INF/dhis/beans.xml' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/resources/META-INF/dhis/beans.xml 2013-07-03 15:40:29 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/resources/META-INF/dhis/beans.xml 2013-07-19 06:04:09 +0000 @@ -300,6 +300,7 @@ class="org.hisp.dhis.patient.action.programstage.GetProgramStageAction" scope="prototype"> + + ' + '' + '' + '' === 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 2013-07-18 03:16:06 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/webapp/dhis-web-maintenance-patient/javascript/programStage.js 2013-07-19 06:04:09 +0000 @@ -298,10 +298,17 @@ + '' + '' + '' + + '' + '' + '' + '/' + '' + + '' + + '' + + java + + '' + + '/' + + '' + '' + i18n_params + '' + '' + ' - + @@ -300,7 +299,7 @@ @@ -369,7 +368,6 @@
- === modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/webapp/dhis-web-maintenance-patient/updateProgramStageForm.vm' --- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/webapp/dhis-web-maintenance-patient/updateProgramStageForm.vm 2013-07-16 04:31:27 +0000 +++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-patient/src/main/webapp/dhis-web-maintenance-patient/updateProgramStageForm.vm 2013-07-19 06:04:09 +0000 @@ -1,3 +1,10 @@ +

$i18n.getString( "edit_program_stage" )

@@ -11,6 +18,7 @@ + @@ -199,6 +207,17 @@ + + + + + + + @@ -262,4 +281,6 @@ var i18n_send_when_to = '$encoder.jsEscape( $i18n.getString( "send_when_to" ) , "'")'; var i18n_from_the_day_set = '$encoder.jsEscape( $i18n.getString( "from_the_day_set" ) , "'")'; var i18n_complete_event = '$encoder.jsEscape( $i18n.getString( "complete_event" ) , "'")'; + var i18n_program_stage_name = '$encoder.jsEscape( $i18n.getString( "program_stage_name" ) , "'" )'; + var i18n_user_group = '$encoder.jsEscape( $i18n.getString( "user_group" ) , "'")'; \ No newline at end of file
+