Project: MediSync

MediSync is a desktop app specifically used for head nurses to manage staff and patients, optimised for use via a Command Line Interface (CLI). Instead of tracking data of staff and patients using existing applications such as Microsoft Excel, using a CLI-centric application like MediSync will help head nurses track and handle contact management more quickly.

Given below are my contributions to the project.

  • Code contributed: RepoSense link

  • New Feature: Implemented the info command (PR: #145)

    • It enables user to view the information of a particular person without having to click on its PersonCard.
    • This thereby retains MediSync's spirit of a CLI-optimised application.
    • The difficulty of this implementation lies in the inner workings of the UI. Having to set the correct elements on focus, and allowing the use of arrow keys for information traversal took a lot of understanding of the interaction between each component, specifically the UI and the Model.
  • New Feature: Implemented the onduty command (PR: #146)

    • It enables user to list the Doctor or Nurse that are on duty for the day.
    • This feature was comfortable to implement as the existing logic in the find command is suitable for this. Additions to the logic include the necessary predicate for the filter, as well as the use of datetime to retrieve the correct staff members.
  • Technical Additions: Created Patient, Doctor, and Nurse classes that are utilised in varying areas of the project (PRs: #71, #130)

    • The use of polymorphism is necessary as we intend to have varying attributes and commands for the different role types. The Staff class is also created for Doctor and Nurse to morph from.
    • It was arduous in setting this up. Having these new classes be suitable for use for ALL commands took a burst of effort. It is a needed addition for the application to stay intact.
  • Technical Additions: Introduced Role class/attribute to suit the presence of the three Person types (PR: #88)

    • To complement the above addition, the Role attribute is introduced for Person class.
    • It streamlines various command executing processes by allowing itself to generate Person of the different types without the need to check their instances.
  • Technical Additions: Introduced Shiftdays class/attribute for the Doctor class (PR: #109)

    • This addition was to kickstart the development of the shiftday command to modify shift days of staff members.
  • Project management:

  • Enhancements to existing features:

    • Revamped the whole UI of MediSync (PRs: #100, #129, #155).
    • Updated the saving and reading of JSON file to include new features introduced (PR: #113).
    • Enhanced JSON file reading verification so that data is thoroughly checked and any sort of violation in the data is flagged as invalid data (PR: #158).
  • Documentation:

    • User Guide:

      • Modified documentation for commands add, help.
      • Added documentation for commands onduty, info (PR: #156).
      • Added documentation for Displaying the information of a person using mouse, and Traversing the information of persons in the list (PR: #156).
      • Written the Glossary section (PR: #166).
      • Written the Editing the data file section (PR: #156).
      • Adjusted the Command Summary table.
    • Developer Guide:

      • Updated UI component (PR: #129).
        • Adjusted the overview Class diagram of the UI component.
        • Added sequence diagram for the interaction between PersonListPanel and InformationWindow in the UI component.
      • Updated Storage component (PR: #129).
        • Adjusted the overview Class diagram of the Storage component.
        • Added the activity diagram for the jsonification process of the saving of data.
      • Updated the Non-Functional Requirements.
  • Community:

    • PRs reviewed (with non-trivial review comments): #68, #96, #98, #147.
    • Contributed to forum discussions (examples: 1, 2).
    • Reported bugs and suggestions for other teams in the class (examples: 1, 2, 3, 4).
  • Tools:

    • Set up the team's project repo.
    • Set up CodeCov.
    • Set up MarkBind for tP website (PR: #42).
    • Enabled assertions in build.gradle (PR: #114).