Gabriel's Project Portfolio Page
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 ofAppointmentBook
,ReadOnlyAppointmentBook
andUniqueAppointmentList
inStorage
to support saving and loading ofAppointment
. Changes required inModelManager
to instantiateAppointmentBook
withAddressBook
, i.e. to instantiate list of appointments with list of patient. Appointments had to be listed in a separate list fromPatient
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 buildAppointment
class to composePatient
and aLocalDateTime
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 theAppointment
class will be loaded and stored to memory as a list of appointments, while referencing a patient object. The design choice was to useIndex
of aPatient
to store the appointment instead of aPatient
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
andCommand
classes to supportAppointment
-related commands and addition of methods inAppointmentBook
class. ModifiedAddressBookParser
class to acceptAppointment
commands. CreatedXYZCommandParser
classes (e.g.AddAppointmentCommandParser
). CreatedXYZCommand
classes to create, modify or delete theAppointment
as commanded (e.g.AddAppointmentCommand
). Added methods inAppointmentBook
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
- 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 regardingAppointment
-related classes and tests - Kept track of deadlines, updating team member’s of current progress and reminding the team of upcoming deadlines
- Documentation:
- User Guide:
- Developer Guide:
- Added implementation details of the
Appointments with valid Patient
feature. - Added Adding an Appointment and ‘Deleting a patient that has an appointment’ test cases under Instructions for Manual Testing and made note of the similar test case for Edit Appointments.
- Added ‘Deleting an Appointment’ test cases
- Updated Appointment Use Cases to v1.4
- Remove
User lists commands
because Doc’it displays full list by default - Added
Use case: UC06 - Edit an appointment
- Remove
- Added Glossary, Glossary credits to User Guide.
- Relevant PRs: #322, #319
- Added implementation details of the
- Community: