Focus Investigation - Index Case Confirmation Software Requirement Specification

This document acts as the software requirement specification for the Index Case Confirmation workflow based on the workflows that were defined in this Google Doc.

System Workflow

  • Nifi identifies a Case Classification form from the third party system
    • Nifi waits a specific period of time to see if multiple plans come in for the same focus.
  • Business logic on that form:
    • If it doesn’t exist, notify an administrator
    • Case 1: We have a house number on the form
      • 0 results returned
        • Exit this case Follow flow identified in Case 2 below: No house number is on the form
      • 1 result returned
        • Get the location ID of that residential structure
        • We assign a case confirmation task at this residential structure
        • Import the case classification details so a user can see them
        • We draw a circle around that structure
      • More than 1 result returned
        • Exit this case and follow the flow identified in Case 2 below
      • Query Reveal’s location and see if one residential structure matches that house (Query within a specific focus area for house number)
    • Case 2: No house number is on the form or we can’t match the house number in Reveal
      • Display values from BIOPHICS: Case Number, Date Notified, Date Investigated, Result (will always be positive - display type of parasite)
      • Assign a Case Confirmation task at the focus area
      • Import the case classification details so a user can see them
    • Query Reveal’s jurisdictions (focus area) and verify that it exists in the system
    • Create bednet distribution tasks for all residential structures in the jurisdiction
    • Create blood screening tasks for all registered family members in the jurisdiction
    • Create mosquito collection tasks at all mosquito collection sites
    • Create larval dipping tasks at all larval dipping sites
    • Verify House Number exists:

User Workflow

  • Receive the case confirmation task in the task list

  • View the case Classification details by tapping the case confirmation task
  • If the case is assigned to a residential structure, the user will see the target on the map. If not, they will have to find the person
  • Visit the location
    • Register family or verify the accuracy of the family information
    • Register or verify each family member
    • Mark a family member as the index case by touching the extended Floating Action Button

      • The system should automatically remove the blood screening task for that family member and mark that family member as the Index case (Button Label: CONFIRMED INDEX)
    • Perform Blood Screening on all family members in the residential structure
  • Move on to other structures

Features to be Developed

The following features need to be developed:

  1. General: Add the ability to assign the case confirmation task to either the operational area or structure
  2. Family Module: Add an Extended Floating Action Button with label "Detect Case" to the family register Task View
    1. Logic:
      1. This view displays every time a user navigates to this view if there is at least 1 task in the system with the following properties:
        1. "planIdentifer": (The ID of the current plan that's selected in the hamburger menu)
        2. "groupIdentifier": (The ID of the operational area that's selected in the hamburger menu)
        3. "code": "Case Confirmation"
        4. "status": "Ready"
      2. This button opens the case confirmation form and passes in the list of family members to be displayed as the first question
  3. Forms:
    1. Add the ability to pass in the list of family members and their baseEntityId to the Form
      1. We need a way to pass in the list of family members, their name and their baseEntityId so the user can select which family member is assigned the case.
    2. Update Case Confirmation Form (Data Dictionary Link)
      1. Add a question that allows the user to choose which family member is the index case (Either radio or modal question type)
      2. Post form Save Action:
        1. Change the "for" field in the task to assign it to the baseEntityId of the family member
        2. Change the status of the task to Complete
        3. Search the system for any blood screening tasks that are assigned to that family member and change their status to "Cancelled"
        4. (Current Behaviour) Redirect the user to the task list view that displays the task as complete assigned to the family member in the family task list
    3. Add a Case Classification Read Only Form (Data Dictionary Link - Needed)
      1. We need to add a case classification form that's read only. This form will be displayed in a pop-up when the user taps the task.
  4. Tasks:
    1. Add a "reasonReference" to the task domain model that includes the UUID of the Case Classification form that was submitted to the system (Updated Data Dictionary Link)
    2. Confirm that "status": "Cancelled" is a valid status in the system and doesn't break any elements. We want to filter these types of tasks out of the UI.
  5. Task List View:
    1. Display the Case Confirmation task at the top of the screen even when it is complete.
    2. Case Confirmation Task logic:
      1. There are three states in the case classification
      2. Task assigned at the operational area
        1. Display that task only in the list view
        2. A user can tap the task to view the Case Classification form in a full screen dialog box where they can hit the back button or close out of it.
        3. The user can not perform any actions on this task from this list item
      3. Task assigned at the residential structure
        1. Display the task only in the list view
        2. A user can tap the task to view the Case Classification information in a full screen dialog box where they can hit the back button or close out of it.
        3. The user can tap the button and enter the family of the residential structure.
      4. Task is completed
        1. At this point, the task is complete and assigned to the person
        2. Display the task in the list view as completed and snap it as the first task in the list