dhis-mobile-devs team mailing list archive
-
dhis-mobile-devs team
-
Mailing list archive
-
Message #00412
[Branch ~dhis-mobile-devs/dhis-mobile/lwuit-tracking] Rev 222: improve workflow for offline patient data entry
------------------------------------------------------------
revno: 222
committer: Long <long.hispvietnam@xxxxxxxxx>
branch nick: lwuit-tracking
timestamp: Thu 2014-05-22 14:59:58 +0700
message:
improve workflow for offline patient data entry
modified:
build.xml
src/org/hisp/dhis/mobile/connection/task/PersonRegistrationTask.java
src/org/hisp/dhis/mobile/model/Patient.java
src/org/hisp/dhis/mobile/recordstore/OfflinePatientRecordStore.java
src/org/hisp/dhis/mobile/recordstore/filter/OfflinePatientFilter.java
src/org/hisp/dhis/mobile/view/PersonDashboardView.java
src/org/hisp/dhis/mobile/view/PersonRegistrationView.java
src/org/hisp/dhis/mobile/view/TrackingDataEntryView.java
--
lp:~dhis-mobile-devs/dhis-mobile/lwuit-tracking
https://code.launchpad.net/~dhis-mobile-devs/dhis-mobile/lwuit-tracking
Your team DHIS mobile developers is subscribed to branch lp:~dhis-mobile-devs/dhis-mobile/lwuit-tracking.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis-mobile-devs/dhis-mobile/lwuit-tracking/+edit-subscription
=== modified file 'build.xml'
--- build.xml 2014-05-16 06:27:31 +0000
+++ build.xml 2014-05-22 07:59:58 +0000
@@ -34,7 +34,7 @@
<!-- Which logo to use -->
<property name="logo" value="dhis2_logo.png" />
<!-- Server URL -->
- <property name="server.url" value="http://localhost:9999" />
+ <property name="server.url" value="http://localhost:8080/dhis" />
<!-- User Name -->
<property name="username" value="mobile" />
<!-- Password -->
=== modified file 'src/org/hisp/dhis/mobile/connection/task/PersonRegistrationTask.java'
--- src/org/hisp/dhis/mobile/connection/task/PersonRegistrationTask.java 2014-05-21 09:09:34 +0000
+++ src/org/hisp/dhis/mobile/connection/task/PersonRegistrationTask.java 2014-05-22 07:59:58 +0000
@@ -53,9 +53,10 @@
catch ( Exception e )
{
- LogMan.log( "Network,"+CLASS_TAG, e );
+ LogMan.log( "Network," + CLASS_TAG, e );
e.printStackTrace();
- if ( e.getMessage().equalsIgnoreCase( "TCP open" ) || e.getMessage().equalsIgnoreCase( "Error in HTTP operation" ))
+ if ( e.getMessage().equalsIgnoreCase( "TCP open" )
+ || e.getMessage().equalsIgnoreCase( "Error in HTTP operation" ) )
{
ConnectionManager.saveUnregisterdPatient( patient );
nameBasedMIDlet.getTrackingMainMenuView().showView();
=== modified file 'src/org/hisp/dhis/mobile/model/Patient.java'
--- src/org/hisp/dhis/mobile/model/Patient.java 2014-05-09 09:04:54 +0000
+++ src/org/hisp/dhis/mobile/model/Patient.java 2014-05-22 07:59:58 +0000
@@ -48,6 +48,7 @@
public Patient()
{
+
}
public int getId()
=== modified file 'src/org/hisp/dhis/mobile/recordstore/OfflinePatientRecordStore.java'
--- src/org/hisp/dhis/mobile/recordstore/OfflinePatientRecordStore.java 2014-05-12 06:46:39 +0000
+++ src/org/hisp/dhis/mobile/recordstore/OfflinePatientRecordStore.java 2014-05-22 07:59:58 +0000
@@ -14,6 +14,7 @@
import org.hisp.dhis.mobile.log.LogMan;
import org.hisp.dhis.mobile.model.Model;
import org.hisp.dhis.mobile.model.Patient;
+import org.hisp.dhis.mobile.model.ProgramInstance;
import org.hisp.dhis.mobile.recordstore.filter.OfflinePatientFilter;
import org.hisp.dhis.mobile.util.SerializationUtil;
=== modified file 'src/org/hisp/dhis/mobile/recordstore/filter/OfflinePatientFilter.java'
--- src/org/hisp/dhis/mobile/recordstore/filter/OfflinePatientFilter.java 2014-03-26 04:24:35 +0000
+++ src/org/hisp/dhis/mobile/recordstore/filter/OfflinePatientFilter.java 2014-05-22 07:59:58 +0000
@@ -3,15 +3,15 @@
import javax.microedition.rms.RecordFilter;
import org.hisp.dhis.mobile.log.LogMan;
-import org.hisp.dhis.mobile.midlet.DHISMIDlet;
import org.hisp.dhis.mobile.model.Patient;
+import org.hisp.dhis.mobile.model.PatientAttribute;
import org.hisp.dhis.mobile.util.SerializationUtil;
public class OfflinePatientFilter
implements RecordFilter
{
private static final String CLASS_TAG = "OfflinePatientFilter";
-
+
private Patient patient;
public OfflinePatientFilter( Patient patient )
@@ -30,8 +30,12 @@
try
{
Patient suspectPatient = new Patient();
+
SerializationUtil.deSerialize( suspectPatient, suspect );
- // return patient.getName() == suspectPatient.getName();
+ String patientAttributeString = this.getTrackedEntityString( patient );
+ String suspecttAttributeString = this.getTrackedEntityString( suspectPatient );
+
+ return patientAttributeString.equals( suspecttAttributeString );
}
catch ( Exception e )
@@ -43,6 +47,20 @@
return false;
}
+ private String getTrackedEntityString( Patient trackedEntity )
+ {
+ StringBuffer buffer = new StringBuffer();
+ for ( int i = 0; i < trackedEntity.getPatientAttValues().size(); i++ )
+ {
+ PatientAttribute trackedAttribute = (PatientAttribute) trackedEntity.getPatientAttValues().elementAt( i );
+ if ( trackedAttribute.getValue() != null )
+ {
+ buffer.append( trackedAttribute.getValue() );
+ }
+ }
+ return buffer.toString();
+ }
+
public Patient getPatient()
{
return patient;
=== modified file 'src/org/hisp/dhis/mobile/view/PersonDashboardView.java'
--- src/org/hisp/dhis/mobile/view/PersonDashboardView.java 2014-05-12 13:59:43 +0000
+++ src/org/hisp/dhis/mobile/view/PersonDashboardView.java 2014-05-22 07:59:58 +0000
@@ -232,6 +232,7 @@
public void preparePrograms()
{
Vector programs = patient.getEnrollmentPrograms();
+
if ( programs != null )
{
for ( int i = 0; i < programs.size(); i++ )
@@ -253,7 +254,7 @@
} );
mainForm.addComponent( programLink );
-
+
// show uncompleted program stage
for ( int j = 0; j < programInstance.getProgramStageInstances().size(); j++ )
{
=== modified file 'src/org/hisp/dhis/mobile/view/PersonRegistrationView.java'
--- src/org/hisp/dhis/mobile/view/PersonRegistrationView.java 2014-05-21 09:09:34 +0000
+++ src/org/hisp/dhis/mobile/view/PersonRegistrationView.java 2014-05-22 07:59:58 +0000
@@ -8,13 +8,13 @@
import org.hisp.dhis.mobile.log.LogMan;
import org.hisp.dhis.mobile.midlet.DHISMIDlet;
import org.hisp.dhis.mobile.midlet.NameBasedMIDlet;
-import org.hisp.dhis.mobile.model.OptionSet;
import org.hisp.dhis.mobile.model.Patient;
import org.hisp.dhis.mobile.model.PatientAttribute;
import org.hisp.dhis.mobile.model.Program;
import org.hisp.dhis.mobile.model.ProgramInstance;
import org.hisp.dhis.mobile.recordstore.PatientAttributeRecordStore;
import org.hisp.dhis.mobile.recordstore.PatientIdentifierRecordStore;
+import org.hisp.dhis.mobile.recordstore.ProgramRecordStore;
import org.hisp.dhis.mobile.ui.Text;
import org.hisp.dhis.mobile.util.PeriodUtil;
@@ -125,12 +125,14 @@
mainForm.addComponent( comboBox );
patientAttributeValueVector.addElement( comboBox );
- } else if ( patientAttribute.getType().equals( "combo" ) ) {
+ }
+ else if ( patientAttribute.getType().equals( "combo" ) )
+ {
LogMan.log( LogMan.DEBUG, "UI," + CLASS_TAG, "adding combo box" );
Vector optionSet = patientAttribute.getOptionSet().getOptions();
String[] options = new String[optionSet.size()];
- LogMan.log( LogMan.DEBUG, "UI," + CLASS_TAG, "options size="+optionSet.size() );
+ LogMan.log( LogMan.DEBUG, "UI," + CLASS_TAG, "options size=" + optionSet.size() );
optionSet.copyInto( options );
ComboBox comboBox = new ComboBox( options );
@@ -182,7 +184,7 @@
mainForm.addCommandListener( this );
}
- else
+ else
{
mainForm.setTitle( program.getTrackedEntityName().toUpperCase() + Text.REGISTRATION() );
}
@@ -233,6 +235,7 @@
{
nameBasedMIDlet.getWaitingView().showView();
patient = collectData();
+ this.createProgramStageInstance( patient );
if ( isValid == false )
{
@@ -289,6 +292,24 @@
}
}
+ private void createProgramStageInstance( Patient patient )
+ {
+ ProgramInstance programInstance = (ProgramInstance) patient.getEnrollmentPrograms().elementAt( 0 );
+ try
+ {
+ Program program = ProgramRecordStore.getProgram( programInstance.getProgramId() );
+ Vector programStages = program.getProgramStages();
+
+ // get program stage as instance for offline patient;
+ programInstance.setProgramStageInstances( programStages );
+ }
+ catch ( Exception e )
+ {
+ e.printStackTrace();
+ }
+
+ }
+
private Patient collectData()
{
isValid = true;
@@ -369,15 +390,14 @@
ProgramInstance programInstance = new ProgramInstance();
programInstance.setId( 0 );
+ programInstance.setName( program.getName() );
programInstance.setDateOfIncident( incidentDate );
programInstance.setProgramId( program.getId() );
programInstance.setPatientId( 0 );
- programInstance.setName( BLANK );
programInstance.setStatus( 0 );
programInstance.setDateOfEnrollment( BLANK );
patient.getEnrollmentPrograms().addElement( programInstance );
-
return patient;
}
=== modified file 'src/org/hisp/dhis/mobile/view/TrackingDataEntryView.java'
--- src/org/hisp/dhis/mobile/view/TrackingDataEntryView.java 2014-04-25 08:57:16 +0000
+++ src/org/hisp/dhis/mobile/view/TrackingDataEntryView.java 2014-05-22 07:59:58 +0000
@@ -26,19 +26,26 @@
*/
package org.hisp.dhis.mobile.view;
+import java.io.IOException;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Vector;
+import javax.microedition.rms.RecordStoreException;
+import javax.microedition.rms.RecordStoreFullException;
+import javax.microedition.rms.RecordStoreNotFoundException;
+
import org.hisp.dhis.mobile.connection.ConnectionManager;
import org.hisp.dhis.mobile.log.LogMan;
import org.hisp.dhis.mobile.midlet.DHISMIDlet;
import org.hisp.dhis.mobile.midlet.NameBasedMIDlet;
import org.hisp.dhis.mobile.model.OrgUnit;
import org.hisp.dhis.mobile.model.Patient;
+import org.hisp.dhis.mobile.model.ProgramInstance;
import org.hisp.dhis.mobile.model.ProgramStage;
import org.hisp.dhis.mobile.model.ProgramStageDataElement;
import org.hisp.dhis.mobile.model.Section;
+import org.hisp.dhis.mobile.recordstore.OfflinePatientRecordStore;
import org.hisp.dhis.mobile.recordstore.OrgUnitRecordStore;
import org.hisp.dhis.mobile.ui.Text;
import org.hisp.dhis.mobile.util.TrackingUtils;
@@ -427,11 +434,54 @@
else if ( arg.getCommand().getCommandName().equals( Text.SAVE() ) )
{
collectInputData();
+ if ( patient.getId() == 0 )
+ {
+ try
+ {
+ OfflinePatientRecordStore.saveOfflinePatient( patient );
+ }
+ catch ( Exception e )
+ {
+ e.printStackTrace();
+ }
+ }
}
else if ( arg.getCommand().getCommandName().equals( Text.SEND() ) )
{
- collectInputData();
- uploadInputData();
+ if ( patient.getId() == 0 )
+ {
+ collectInputData();
+ Vector programVector = patient.getEnrollmentPrograms();
+ for ( int i = 0; i < programVector.size(); i++ )
+ {
+ ProgramInstance programInstance = (ProgramInstance) programVector.elementAt( i );
+ Vector programStageVector = programInstance.getProgramStageInstances();
+ for ( int j = 0; j < programStageVector.size(); i++ )
+ {
+ ProgramStage offlineProgramStage = (ProgramStage) programStageVector.elementAt( j );
+ if ( offlineProgramStage.getName().equals( programStage.getName() ) )
+ {
+ programStageVector.setElementAt( programStage, j );
+
+ programInstance.setProgramStageInstances( programStageVector );
+
+ programVector.setElementAt( programInstance, i );
+ patient.setEnrollmentPrograms( programVector );
+
+ ConnectionManager.setUrl( dhisMIDlet.getCurrentOrgUnit().getRegisterPersonUrl() );
+ ConnectionManager.registerPerson( patient, String.valueOf( programInstance.getId() ) );
+ break;
+ }
+ }
+
+ }
+ }
+ else
+ {
+ collectInputData();
+ uploadInputData();
+ }
+
}
}