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
MedicalHistoryclass 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
MedicalHistoryclass to compose multipleMedicalEntrysubclasses, which required the use OOP composition and polymorphism principles. The implementation also introduced wrapper classes,EntryandEntryListfor the purpose of defensive programming. It also required changes to Json serialisation for storage of the newMedicalHistoryinformation. Storage was particularly challenging given the need to record thedateof recording, and reboot thedateaccording to what was saved. CRUD operations inherited from Ab3’sPersonclass, nowPatient, also needed to be modified to accommodate the newMedicalHistoryattribute. Existing test cases forparserand CRUD operations inherited from AB3 needed modification.
- New Feature: Add and Delete
MedicalEntryto theMedicalHistoryof 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
Commandto be created. It required some analysis of design alternatives. The implementation required modifications to existing commands, test cases and theParserset of class. - Credits: The design of the code was modelled after existing AB3 command codes, due to the existing
ParserandCommandassociations.
- New Feature: Modified GUI for
Prescription.- What it does: allows clinic staff see
Prescriptionadded 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
ObservableListand howObservableListworked with the GUI. AsPrescriptionwas a class encapsulated byAppointment, merely changing thePrescriptionwould not trigger an event for GUI to change as theObservableListonly observesAppointmentobjects. Thus, for every modification toPrescription, we needed to update theAppointmentobject by creating a copy of theAppointmentobject.
- What it does: allows clinic staff see
- Code contributed: RepoSense link
- Enhancements to existing features:
FIND PATIENTfeature:- Enhanced
pt findto be able to find a list of patients based on their medical history description. This enhancement allows clinic staff to find patients by theirnameand anydescriptionof 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
MedicalHistoryclass,Add Medical Entryfeature,Delete Medical Entryfeature. #282 - Drew the UML class diagram which captures the associations between
MedicalHistory,MedicalEntryandPatientclasses. #304 - Drew the sequence and activity diagram which captures the associations between
LogicandModelcomponents forAddMedicalEntry,DeleteMedicalEntryfeatures #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: