Release 5 Android Task Changes

This scoping document combines a number of features scheduled for Release 5 into a single set of work. Features include:

  • Marking a structure as inactive

  • Marking a task as ineligible

  • Deleting a family member

  • Deleting a family

Jira Issues Covered:

Referred Scoping Documents (for functional requirements):

Definitions

This section provides a list of definitions that are used throughout this document.

  • Delete/Archive - We never delete things in the system. Instead we archive, which is a process of keeping the information in the system, but making it not viewable or actionable for future plans. (i.e. archive a family member instead of delete it.)

  • Inactive structure: a non-valid structure that was created erroneously or we expect to no longer be active and should be removed from play completely (e.g., duplicate residential structure record created by accident)

    • This is effectively soft deleting the structure

  • Ineligible task: a valid intervention unit (structure, person, etc) that is ineligible to participate in an intervention for a valid reason (e.g., a residential structure where the inhabitants are not currently residing but may return in the future) 

    • This is a form field specific to the activity

Out of Scope

  • Case Confirmation Tasks - This form is only available to be applied to a single person who is registered in the system. This action can not be undone.

  • Operational Area Tasks - The Behaviour Change Communication (BCC) task is the only one that’s assigned at the operational area at this time. It is generated as part of a plan and is either done or not done and, therefore, will not make it ineligible.

High Level Overview

This section provides a conceptual overview of the changes required to implement these features. These features impact all tasks, forms and events in the system across multiple country implementations and build off of features that are implemented in the IRS and Focus Investigation fields. At the high level, we expect the ability to perform the following functions:

  1. Mark an intervention unit as ineligible for the current plan if there is a RACD Register Family, IRS Spray, PAOT, Mosquito Collection Point or Larval Dipping task type assigned to it.

    1. If a family is marked as ineligible, a card displays with the information and an edit button that opens the register family form.

  2. Mark a structure as inactive if there is a RACD Register Family, IRS Spray, PAOT, Mosquito Collection Point or Larval Dipping task type assigned to it with status = “Ready”

  3. Archive a family, all family members, associated tasks and events if it was already registered

    1. Loop through each family member and archive them

    2. Cancel every task that’s associated with the family where status = “Ready”

    3. Archive every task that’s associated with the family where status != “Ready”

    4. Archive each event that has been submitted

    5. Generate a new task client side to RACD Register Family on that location if the location type is a residential structure.

  4. Archive a family member if it was already registered

    1. Loop through each task

      1. Cancel it if status = “Ready”

      2. Archive it if status != “Ready”

    2. Loop through each event and archive it

  5. Ensure each of these changes syncs to the server and no longer syncs down to new devices.

Workflow 1: Mark Location Inactive - I added a structure that shouldn’t be there

This workflow describes a scenario where the user has added a location that shouldn’t be there and should be made inactive.

  • The user adds a point (current behaviour)

  • The user opens the form (current behaviour)

  • The user long presses the location

  • Perform the following logic:

    • If the task status = “Ready”

      • A modal window pops up with the following:

        • Title: Mark Location Inactive

        • Text: Please confirm that this location should be marked inactive.

        • Options (Confirm or Cancel)

      • The user taps “Confirm”

        • If the user taps cancel, the modal is closed

      • The system performs the following business logic

        • Change the location.properties.status to “Inactive”

        • Loop through any tasks assigned to it change the status to “Cancelled”

    • If the task status != “Ready”

      • Display a toast message stating “You can not make this structure inactive because tasks are completed against it.

  • Note: If a task was assigned to that location and it was cancelled, the location will display as grey and the user will not be able to interact with it.

Workflow 2: Mark Location Ineligible for Register Family Task (status = Ready)

This workflow is used when there is a Register Family task with status = Ready

  • The user taps the yellow structure and the register family form displays (current behaviour)

  • The first question asks “Is this location eligible to register a family?” with the default value = Yes

    • All other fields are automatically displayed as is the current behaviour

  • The user changes the value to “No”, all fields hide.

    • Step 2 of the form is also hidden

    • The “Next” button in the top right changes to “Submit”

  • The user taps submit and the form is saved.

  • The user is redirected back to the map view

  • The user can tap on the location and a card displays with information that’s currently available if they tap on a different location type (PAOT, larval dipping, mosquito collection point)

  • The user can view the task in the task list view with a black button labeled “Ineligible”

Workflow 3: Mark Family Member Ineligible for Blood Screening Task

This workflow is used to mark a family member ineligible for a blood screening task.

  • The user enters the household and navigates to the tasks tab

  • The user taps the button with the blood screening task next to the person

  • The first question asks “Is this person eligible for blood screening?” with the default value = Yes

    • All other fields are automatically displayed as is the current behaviour

  • The user changes the value to “No”, all fields hide.

  • The user taps submit

  • The button turns to black with white text labeled “Ineligible”

  • (No changes to the color logic of the structure)

Workflow 4: Mark Family Ineligible for Bednet Distribution Task

This workflow is used to mark a family ineligible for a bednet distribution task.

  • The user enters the household and navigates to the tasks tab

  • The user taps the button with the bednet distribution task

  • The first question asks “Is this household eligible for bednet distribution?” with the default value = Yes

    • All other fields are automatically displayed as is the current behaviour

  • The user changes the value to “No”, all fields hide.

  • The user taps submit

  • The button turns to black with white text labeled “Ineligible”

  • (No changes to the color logic of the structure)

Workflow 5: Archive Family Member

This workflow is used to archive an existing family member. (@Samuel Githengi , please confirm this is the existing functionality of the Family Module. If not, we want to replicate what’s already available there.)

  • The user enters the household

  • The user taps the household member in the list of members

  • The user taps the three dot option menu in the top right corner and taps Archive Member

  • The user is presented with a confirmation dialogue to confirm that they want to archive the family member

  • The user taps “Confirm”

    • In the background:

      • The app loops through and cancels any tasks with status = Ready

      • The app archives events that have been submitted against that family member

  • The user is redirected back to the family profile view that lists all members and that member has been removed

  • In the background, the change is synced to the server. Other Android clients that have these entities on their system need to have them archived as well. Users who do not have them in their system should not download the archived items.

Workflow 6: Archive Family

This workflow is used to reset a location and return it to a state where the location has a Register Family task available. This process archives all tasks, events and entities in the client that are associated with that location.

  • User navigates to the household

  • The user taps the three dot option menu in the top right menu and taps “Archive Household”

  • The user is presented with a modal window:

    • Title: Confirm Household Archival

    • Text: Please confirm that you want to archive this household. This will delete all information and can not be undone.

    • Buttons: Confirm, Cancel

  • The user taps “Confirm” and they are returned to the map view

  • In the background,

    • The family is archived

    • Each family member is archived

    • Each event that has been completed against the family is archived

    • All tasks with status = “Ready” are cancelled

    • All tasks with status != “Ready” are archived

    • A task is generated against that location with “RACD Register Family”

  • The user sees the location as yellow and can tap it again to complete a register family form.

Software Changes

We need to make the following software changes in the system:

  1. Update every form to add eligibility skip logic to it. (i.e. “is this person eligible for _____?” default = yes) Each form should be updated in the data dictionary

    1. Register Family

    2. Bednet Distribution

    3. Blood Screening

    4. Mosquito Collection

    5. Larval dipping

    6. PAOT

  2. Add logic to the post form save action to support ineligible skip logic in the forms defined in 1 above

  3. Add a card view to the location when a register family task is marked as ineligible

    1. Make sure this button opens the register family form so that a user can register a family

  4. Add Archive Family Member to the option menu

    1. Add the loops that archive the family member as defined in Workflow 5 above

  5. Add Archive Family to the option menu

    1. Add the loops that archive the family as defined in Workflow 6 above

  6. Add support for displaying locations in black that have been marked as ineligible in the map view

  7. Add support for displaying buttons in black background with white text that have been marked as ineligible in the family module’s task list view and the task list view

  8. Update the family name that’s displayed in the task list view if the register family task is marked as ineligible.

    1. By default, it displays “Unenumerated structure” (current behaviour)

    2. If a family is registered, it says the name of the household (current behaviour)

    3. If marked as ineligible display “Ineligible Location”

  9. Add support for marking a location as Inactive as defined in Workflow 1

    1. long press interaction

    2. add a modal

    3. perform the business logic once made inactive as defined in workflow 1

  10. (@Samuel Githengi , I’m not sure if this is already done) Create an archival process that:

    1. Marks the “Client” as archived (family or family member)

    2. Marks the task as archived

    3. Marks the event as archived

  11. Update the sync process to sync these archived items from the Android client to the server

  12. Update the server side sync process to exclude archived tasks, events and clients from syncing to new clients