Ng Chee Fong’s Project Portfolio Page

Project: MediTask

MediTask is a desktop application designed to help nurses efficiently manage and track their daily tasks via a Command Line Interface (CLI). This CLI tool streamlines task management, allowing nurses to quickly organize, monitor, and complete tasks, ensuring no important steps are missed.


Given below are my contributions to the project.

  • New Feature: Hospital and Patient Classes
    • What it does: It allows nurses to manage a centralized list of patients within the Hospital system. This includes adding, retrieving, and deleting patient data efficiently.
    • Justification: These classes provide the backbone for the system’s data model, enabling efficient patient management and scalable functionality.
    • Highlights: Implemented methods for adding, retrieving, deleting, and checking for duplicate patients. Robust error handling and logging enhance maintainability and data integrity.
  • New Feature: HospitalCommand Base Class
    • What it does: Serves as the abstract base class for all patient management commands. This class provides a shared reference to the Hospital instance, ensuring all commands have access to the same central hospital data. The setHospital method is used to initialise the Hospital instance across commands.
    • Justification: By centralising access to the hospital data, HospitalCommand facilitates consistency across commands, reducing redundancy and simplifying maintenance. Logging within setHospital ensures traceability when setting the hospital instance.
  • New Feature: AddPatientCommand
    • What it does: Adds a new patient to the hospital system after verifying that the patient is not a duplicate. Accepts a patient’s name and an optional tag, returning a confirmation message on success. Logs a warning and returns a duplicate notification if the patient already exists.
    • Justification: Prevents redundant records, ensuring accurate and unique patient information crucial for hospital management and patient safety.
  • New Feature: DeletePatientCommand
    • What it does: Deletes a patient from the hospital system based on the provided index. Retrieves the patient’s name for confirmation before deletion. If the index is invalid (meaning the patient does not exist at that position), logs a warning and returns a message indicating that the patient was not found.
    • Justification: Helps maintain a clean and updated patient list by allowing the removal of patients who are discharged or have incorrect entries. Error handling ensures nurses are informed if a deletion attempt fails.
  • New Feature: ListPatientCommand
    • What it does: Lists all patients currently in the system, displaying each patient’s details alongside their task completion rates. If the patient list is empty, logs a warning and notifies the user.
    • Justification: Listing all patients provides an overview, making it easy for nurses to check the status of all patients and follow up on their care plans. Task completion rates help track each patient’s care progress.
  • New Feature: FindPatientCommand
    • What it does: Finds and lists patients whose names contain a specified keyword. If no patients match the keyword, logs a warning and notifies the user that no matches were found.
    • Justification: The ability to search for patients by name is vital in fast-paced environments. It allows nurses to locate patients quickly, ensuring efficiency in accessing or updating specific patient information.
  • New Feature: SelectPatientCommand
    • What it does: Selects a specific patient by index, updates the global state to reflect the selected patient, and switches the system to TASK_STATE. If the patient is found, logs the state change; if not, logs a warning and notifies the user of the failure.
    • Justification: Streamlines workflows by allowing nurses to focus on one patient’s tasks. The state switch to TASK_STATE further enhances efficiency, enabling task-specific operations for the selected patient.
  • New Feature: State Management with State and StateType Classes
    • What it does: Manages the system’s current operational state (e.g., MAIN_STATE or TASK_STATE), enabling or restricting certain commands based on active state.
    • Justification: Allows for state-dependent command execution, improving usability and system organization.
  • New Feature: DateFormat Class and DateFormats,TimeFormats and DateTimeformats Enumerations
    • What it does: A Date Formatting and Parsing System that standardizes date and time inputs across MediTask, allowing nurses to input dates in various formats or use relative terms like “today” and “tomorrow.”
    • Justification: Ensures consistency in date handling, reducing errors in task scheduling and improving nurse workflow.
    • Highlights: Accounts for a very wide range of date entries, including relative terms (“today”, “tomorrow”), weekdays and weekends (e.g., “monday”, “sunday”), and combinations of date-only, time-only, or full date-time entries. The system also includes error handling for invalid formats and warnings for past dates, making date-time input robust and user-friendly. It enhances the Deadline functionality, which previously accepted strings, making it more useful and allow for it to be used for future iterations.
  • Code contributed: Code Dashboard
  • Project management:
    • Managed release v1.0 (1 release) on GitHub
    • Assisted in the release of Developer guide and User Guide for v2.0 (1 release) on GitHub
  • Enhancements to existing features:
    • Updated the Parser to handle dates using DateTime instead of raw strings. This ensures consistent date formatting, improves validation, and reduces redundancy across date-dependent commands.
  • Documentation:
    • User Guide:
      • Documented Add, Delete, Find, Select, and List patient commands to improve command clarity and user onboarding (PR #104).
      • Added notes to Date and Time formats to improve clarity on supported formats (PR #122).
      • Added a command summary to help users get an overview of the commands available (PR #122).
      • Added sample outputs to improve user clarity and understanding of the functions (PR #218).
    • Developer Guide:
      • Added sequence diagrams for AddPatient and DeletePatient commands (PR #101, PR #102), illustrating execution flow.
      • Included class diagrams for Hospital and StateManager classes (PR #101), clarifying structure and relationships.
      • Updated v1.0 user stories to cover task management functionalities like adding, deleting, marking, and unmarking tasks (PR #70).
      • Updated v2.0 user stories to cover task completion progress and deadlines (PR #102).
  • Community and Contributions:
    • PRs Reviewed (with non-trivial comments): (PR #124,PR #95, PR #57, PR #56).
    • Help sort and assign issues to each member after PE-D user testing so everyone is clear of the issues needed to be resolved.
    • Contributed to design discussions on project structure and best practices.
    • Provided detailed feedback on logic improvements and error handling, ensuring robust and maintainable code.