← Back to team overview

dhis-mobile-devs team mailing list archive

[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();
+            }
+
         }
     }