Didymus' Project Portfolio Page
Project: Doc’it
Overview
Doc’it provides a centralised platform for authorised staff from small family clinics to view, update, and onboard patient records and schedule appointments, 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.
Summary of Contributions
Given below are my contributions to the project:
- New Feature: Create
MedicalHistory
class to store the medical history of Patient Records.- What it does: allows clinic staff to record medical histories when a patient is created.
- Justification: This feature improves the product significantly because clinic staff can have more medical information about a Patient, which allows for better diagnosis.
- Highlights: This feature was challenging and required an in-depth analysis of design alternatives. The final design chosen was to build
MedicalHistory
class to compose multipleMedicalEntry
subclasses, which required the use OOP composition and polymorphism principles. The implementation also introduced wrapper classes,Entry
andEntryList
for the purpose of defensive programming. It also required changes to Json serialisation for storage of the newMedicalHistory
information. Storage was particularly challenging given the need to record thedate
of recording, and reboot thedate
according to what was saved. CRUD operations inherited from Ab3’sPerson
class, nowPatient
, also needed to be modified to accommodate the newMedicalHistory
attribute. Existing test cases forparser
and CRUD operations inherited from AB3 needed modification.
- New Feature: Add and Delete
MedicalEntry
to theMedicalHistory
of a Patient Record.- What it does: allows clinic staff to add and delete specified medical histories for an existing patient, with an automatic record of the date the description of the medical history was entered (for adding).
- Justification: This feature improves the product significantly because clinic staff can record important medical details about the patient to have a stronger medical understanding. The automatic date of entry also ensures the medical history can be checked and updated. They can also delete wrong or irrelevant entries.
- Highlights: This features requires a new
Command
to be created. It required some analysis of design alternatives. The implementation required modifications to existing commands, test cases and theParser
set of class. - Credits: The design of the code was modelled after existing AB3 command codes, due to the existing
Parser
andCommand
associations.
- New Feature: Modified GUI for
Prescription
.- What it does: allows clinic staff see
Prescription
added after executing command to add prescription to an appointment. - Justification: This feature improves the product significantly because clinic staff can visually view and record the prescriptions prescribed after an appointment.
- Highlights: This features was challenging. It required a strong understanding of
ObservableList
and howObservableList
worked with the GUI. AsPrescription
was a class encapsulated byAppointment
, merely changing thePrescription
would not trigger an event for GUI to change as theObservableList
only observesAppointment
objects. Thus, for every modification toPrescription
, we needed to update theAppointment
object by creating a copy of theAppointment
object.
- What it does: allows clinic staff see
- Code contributed: RepoSense link
- Enhancements to existing features:
FIND PATIENT
feature:- Enhanced
pt find
to be able to find a list of patients based on their medical history description. This enhancement allows clinic staff to find patients by theirname
and anydescription
of their medical history.
- Enhanced
- Justification: clinic staff can find a list of patients not only by their name but by their medical history, making it easier to track patients with similar past conditions.
- Wrote additional tests for existing features and new features, specifically add medical entry, delete medical entry
- Project management:
- Managed releases
v1.1
-v1.4
(4 releases) on Github - Coordinated forking workflow
- Coordinated weekly tasks and delegated to individual members
- Managed releases
- Coordinating and Maintaining Issue Tracker:
- Documentation:
- User Guide:
- Developer Guide:
- Added implementation details of the
MedicalHistory
class,Add Medical Entry
feature,Delete Medical Entry
feature. #282 - Drew the UML class diagram which captures the associations between
MedicalHistory
,MedicalEntry
andPatient
classes. #304 - Drew the sequence and activity diagram which captures the associations between
Logic
andModel
components forAddMedicalEntry
,DeleteMedicalEntry
features #282, #304, #321 - Wrote 8 initial use cases #38,
- Updated previous use cases and added 3 new use cases #38, #321
- Added manual testing test cases for Adding a Patient, Deleting a Patient, Adding a Medical Entry, Deleting a Medical Entry from patient with non-empty medical history, Deleting a Medical Entry from patient with empty medical history #321
- Updated target user profile and value proposition. #321
- Added implementation details of the
- Community: