Team Management Module Redesign - TMM-2.x.x

The team management module currently available doesnot provide hierarchical management of different roles comprising a team. Moreover, current module doesnot have the best UI. To make module provide a full flash team management in Healthcare (especially community driven healthcare), there are major changes required in design and UI of existing TMM.1.x.x. There are few changes required to make team members and patient mapping. A usecase for such scenario is when Field Workers are required to followup certain patients and there is a 1-1 relationship between patients and workers.

Source code can be found in repository here

Complete plan and tickets can be found here

 

Complete diagram

Team Hierarchy:

The module should allow maintaining hierarchical team structure where each role/level can own its own team as well.

  • The reporting chain should allow multiple reporting line up and down the hierarchy i.e.
  • A role can report to different roles depending on implementation settings. i.e. a role Vaccinator can report to Research Associate in one setting and may report to Town Health Officer in other settings.
  • Similarly, one supervisor can have multiple reporting lines down the hirerarchy. Module should also allow levels where sub teams are not applicable.
  • The hierarchy modifications should be logged as well to find out the changes in reporting lines at any point of time.
  • One should be able to see the hierarchy in chart form i.e. an organogram/tree of reporting lines.

 

The ORM mapping for hierarchy management could be represented by following diagram:

 

The UI would provide following functions

 

  • Clicking on main plus icon should allow adding a new role
  • Clicking on 'view complete chart' should open a tree or organogram of team hierarchy
  • Clicking on 'view teams' should open 'Teams' page
  • Edit: This should open a new form where user can edit the TeamRole.
  • Identifier: This should opens details section where all information regarding selected hierarchy is displayed in table format
  • Name: Name of team role which should be unique
  • / # Members: Total members associated with role. Clicking on plus icon should allow adding another members on current role. Clicking on hyperlink should navigate to list and details of all members.
  • Report To: The role team reports to. It can multiple roles for different settings. Clicking on plus icon should allow adding another supervisor role
  • Own a team: Whether role can own a team or not. If a role is allowed to own a team it would apprear in reporting chain inputs in new member creation forms. Also such roles would be prompted to create a team of people when adding a new member
  • Reported By: The roles down the hierarchy who are reporting current role. Count of members is displayed and hyperlinked to allow navigating to list and details of members.
  • History: Should display the changes / activities happened in the hierarchy.
  • Voided: If role is voided. Clicking on cross should allow voiding the role.


The section '# Members' , 'Reported By' and 'View Teams' refers to components which are explained below

The component should be protected by following privileges

  • View Hierarchy
  • Add Hierarchy
  • Edit Hierarchy
  • Void Hierarchy
  • View Team Hierarchy Log

Team

Module should allow management of team based on supervisor, location or program or any other dimension. Program is not part of current redesign. The architecture of team component should be flexible enough to keep provision of adding new dimension in future. Following are features current team component includes

  • Filter teams list by id, name, location, supervisor.
  • Allow paging as teams can grow
  • Each team MUST have a supervisor
  • Each team can be mapped to  multiple locations. These locations help in filtering assignable locations to team members when created
  • Complete log of activities happened in team should be managed as well

 

The ORM mapping for hierarchy management could be representing by following diagram:

 

The UI would provide following functions

  • Clicking on plus icon would open a form to add a new team
  • Team can be filtered by name, id, supervisor and location
  • Paging should be implemented
  • Edit: Clicking on edit icon would open edit team form
  • Identifier: Clicking on hyperlink would open details of team
  • Name: A unique name for team should be assigned
  • Current Supervisor: Clicking on Supervior name would open teaam member details. Clicking on edit icon would allow changing the supervisor
  • Supervisor Team: Team supervisor is associted with.Clicking on hyperlink would open team details of team. Show supervisor role as well.
  • /# of direct subordinates: Total count of members directly reporting to this team supervisor. Clicking on plus icon would open add member form  for given team
  • Location: Locations this team is mapped to.
  • History: Clicking on history shows all activities happened ino team
  • Voided: If team is voided. Clicking on cross would allow voiding team


Supervisor, Supervisor Role, Location, # of direct subordinates refer to entities defined later in document.

Should be protected by following permissions

  • View Team
  • Edit Team
  • Add Team
  • Void Team
  • Add Team Member
  • Edit Team Member
  • View Team Log

Team Members

Module should allow team members to join any team in different capacity and also allow them to own a team provided that their role allows owning a team.

  • Each Member should have a team role which might be reporting to other parent role
  • Each member should be allowed to own or build up a team if their role allows it. This means that different other team members would be joining his team and leaving as well
  • Each member should be allowed to join a team which means that he would be reporting to person owning the team
  • A member can handover his team to other team team members which means that members of his team would be reporting to new supervisor
  • A member can be mapped on different locations (under location of his supervisor`s)
  • A member should be allowed to own patients to provide provider-patient ownership, data entry and reporting
  • All activities in team should be logged


The ORM mapping for hierarchy management could be representing by following diagram:

The UI would provide following functions

  • Clicking on plus would open new member registeration form
  • Searching / data filtering should be provided by given input values
  • Edit: Clicking on edit should open member edit form
  • Identifier: Clicking on hyperlink should open details of member
  • Name: Name of team member
  • Role: Role of member in team. Clicking on edit should allow editing role of person
  • Team: Team of person. Clicking on edit should joining other team
  • Report To: Supervisor of team of this member
  • Location: Locations team member is allowed to work in. This must be a subset of team`s location.
  • Subordinates: Subordinate roles with count of members in each role
  • Sub ordinate teams: Teams this person is managing
  • History: Complete log of activities happened with team
  • Voided: If record is voided. Clicking on cross should allow voiding current person
  •  Patient: Number of patients mapped to member. Clicking on edit icon should allow adding or removing patients from mapped list.

Should be protected by following privileges

  • VIEW_TEAM_MEMBERS
  • EDIT_TEAM_MEMBERS
  • ADD_TEAM_MEMBERS
  • VOID_TEAM_MEMBERS
  • TRANSFER_TEAM
  • MANAGE_TEAM_MEMBER_PATIENTS


Adding new member should provide following functionality