...
Marking a structure as inactive
Marking a structure task as ineligible
Deleting a family member
Deleting a family
...
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 structuretask: 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
...
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:
Mark a structure 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.
If a family is marked as ineligible, a card displays with the information and an edit button that opens the register family form.
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”
Archive a family, all family members, associated tasks and events if it was already registered
Loop through each family member and archive them
Cancel every task that’s associated with the family where status = “Ready”
Archive every task that’s associated with the family where status != “Ready”
Archive each event that has been submitted
Generate a new task client side to RACD Register Family on that location if the location type is a residential structure.
Archive a family member if it was already registered
Loop through each task
Cancel it if status = “Ready”
Archive it if status != “Ready”
Loop through each event and archive it
Ensure each of these changes syncs to the server and no longer syncs down to new devices.
...
This workflow describes a scenario where the user has added a location that should 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)
...
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
...
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 and that information is no longer synced down to Android clients. 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
...
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 dissociate the household, all members and events that have been submitted against this location and 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.
...
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
Register Family
Add Family Member
Update Family
Update Family Member
Bednet Distribution
Blood ScreeningBCC
Mosquito Collection
Larval dipping
PAOT
Add logic to the post form save action to support ineligible skip logic in the forms Add Archive Family Member formdefined in 1 above
Add a card view to the location when a register family task is marked as ineligible
Make sure this button opens the register family form so that a user can register a family
Add Archive Family Member to the option menu
Add the loops that archive the family member as defined in Workflow 5 above
Add Archive Family to the option menu
Add the loops that archive the family as defined in Workflow 6 above
Add support for displaying locations in black that have been marked as ineligible in the map view
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
Update the family name that’s displayed in the task list view if the register family task is marked as ineligible.
By default, it displays “Unenumerated structure” (current behaviour)
If a family is registered, it says the name of the household (current behaviour)
If marked as ineligible display “Ineligible Location”
Add support for marking a location as Inactive as defined in Workflow 1
long press interaction
add a modal
perform the business logic once made inactive as defined in workflow 1
(Samuel Githengi , I’m not sure if this is already done) Create an archival process that:
Marks the “Client” as archived (family or family member)
Marks the task as archived
Marks the event as archived
Update the sync process to sync these archived items from the Android client to the server
Update the server side sync process to exclude archived tasks, events and clients from syncing to new clients