Project: Doc’IT

Doc’it provides a centralised platform for authorised staff from small family clinics to view, update, and onboard patient records, solving the inefficient paper records and files used today. With Doc’it, small family clinics can reduce man-hours in managing paper files, translating this ‘saved’ time into better frontline care services Doc’IT is a desktop address book application. Users key in CLI-themed commands in the command box, and the results of the commands are dislayed in the GUI created with JavaFX. It is written in Java, and has about 10 kLOC.

Given below are my contributions to the project.

  • New Feature: Create Appointment class to represent a patient’s appointment.
    • What it does: Allows users to record a patient’s appointment after a patient is created.
    • Justification: This feature allows users to represent multiple appointments of patients with each having their own date and time.
    • Highlights: The implementation of Appointment class required creation of AppointmentBook, ReadOnlyAppointmentBook and UniqueAppointmentList in Storage to support saving and loading of Appointment. Changes required in ModelManager to instantiate AppointmentBook with AddressBook, i.e. to instantiate list of appointments with list of patient. Appointments had to be listed in a separate list from Patient class, yet have a link to the patient that has the appointment. This feature required an in-depth analysis of design alternatives. The design choice was to build Appointment class to compose Patient and a LocalDateTime to represent the date and time of the appointment. This design required the use of OOP composition and polymorphism principles. The implementation required careful thought in how the Appointment class will be loaded and stored to memory as a list of appointments, while referencing a patient object. The design choice was to use Index of a Patient to store the appointment instead of a Patient object for easier loading from and storing to JSON. (#58, #85, #87)
  • New Feature: Implement Add, Edit, Delete operations for Appointment class.
    • What it does: Allows users to add, edit and delete a patient’s appointment after the appointment is created.
    • Justification: Allows users to create, modify and delete appointments. Users can modify appointments to reflect changes in appointment details.
    • Highlights: This implementation required the creation of Parser and Command classes to support Appointment-related commands and addition of methods in AppointmentBook class. Modified AddressBookParser class to accept Appointment commands. Created XYZCommandParser classes (e.g. AddAppointmentCommandParser). Created XYZCommand classes to create, modify or delete the Appointment as commanded (e.g. AddAppointmentCommand). Added methods in AppointmentBook to update the list of appointments. (#135, #85)
  • New Feature: Implement date-time parsing for Appointment class.
    • Justification: Allows date and time that to be reformatted in the UI, and be used to implement sort and archive features.
    • Highlights: Required to implement ParserUtil#parseDateTime for adding, editing appointments, and loading appointments from JSON. (#132)
  • New Feature: Implement stricter parsers for Datetime, Name, Address, MedicalHistory
    • Justification: Prevents users from entering incorrectly formatted information.
    • Highlights: Required a strong understanding of regex. Added logging for Datetime parsing. (#236, #261)
  • New Feature: Change command result box to wrap text
    • Highlights: The implementation in UI property removes the need to include a newline in command results in multiple places. #236
  • New Feature: Wrote tests for Appointment-related classes to increase coverage by 4% in total (#265, #286)

  • Code contributed: RepoSense link

  • Project management:
    • Ensured scheduling and tracking, including setting up labels for issues for the team’s use, and beginning milestones
    • Managed Appointment component and gave technical advice regarding Appointment-related classes and tests
      • Gave advice for tests for EditAppointmentCommand #287
      • Fixed tests for DeleteAppointmentCommand #286
      • Made suggestions regarding renaming methods to better suit its purpose in Appointments #237, #98
      • Suggested enhancements #92
    • Kept track of deadlines, updating team member’s of current progress and reminding the team of upcoming deadlines
  • Documentation:
  • Community:
    • PRs reviewed (with non-trivial review comments): #165, #262, #91, #97)
    • Contributed to forum discussions by raising good questions (examples: #58)
    • Reported bugs and suggestions for other teams in the class (examples: 1, 2, 3)