Ng Seng Leng's Project Portfolio Page
Project: GoMedic
GoMedic is a cross-platform desktop application written in Java and designed for doctors and medical residents to manage contacts and patient details. We aim for GoMedic to be used by someone who can type fast and take advantage of the optimized features for Command Line Interface.
GoMedic is bootstrapped using SE-EDU Address Book 3 and inherits some of its features such as clear, parameter
formatting, etc.
Given below are some of my notable contributions to the project.
- New Feature: Implement the Suggestions feature
- What it does: Provides correct command suggestions in text form if user inputs a wrong command (typically as a typo)
- Justification: This is to provide a better user experience such that the user can receive instant feedback in case of erroneous inputs and do not have to refer to external manuals or the internal help command to figure out what is wrong with their inputs.
- Highlights: This feature makes use of the Levenshtein Distance metric, a commonly used metric in determining the similarity between strings, to rank the suggestions in terms of its relevance to the incorrect command.
- Notable PRs: PR #103, PR #145
- Credits:
- Code written is original, Levenshtein Distance algorithm is done using the Apache Commons Library in Java.
- New Feature: Implement the
helpcommand.- What it does: Keeps track of all commands in GoMedic, its format and a brief explanation of what each command does.
- Justification: As per all command line interface applications, this is the usual help function ported to a GUI interface and provides quick access to a summary of what each command does and how to use it should the user require some familiarisation.
- Highlights: This builds upon the modified help window that comes with the original AB3 with some modifications on how the text is generated.
- Notable PRs: PR #106
- New Feature: Implement the command history feature
- What it does: Keeps track of all commands entered into GoMedic regardless of its validity. It can be navigated using up and down arrow keys to show previous and next commands, if any.
- Justification: Aids in manual testing without the hassle of copy-pasting commands. Also useful in referring to what has been entered into the app in the current instance without checking through the app itself.
- Notable PRs: PR #203
- Credits:
- Simon made some bug fixes to the feature
- Referenced code from this PR
- Enhanced feature: Implement
Appointmentas a type ofActivity- What it does: Adds a boolean field to each
Activityobject so that it becomes an appointment instead that only exists if the patient which the appointment is for exists. - Justification: This is similar in nature to the
Activitymodel, which is implemented by Simon, but it separates appointments from typical activities that a doctor might have. This allows for some differentiation in the nature of descriptions and makes the app more realistic for a doctor’s daily activities. - Highlights: This builds upon the
Activitymodel with the additional condition that it is also removed if the patient it is referencing does not exist in GoMedic anymore. - Notable PRs: PR #162, PR #201
- What it does: Adds a boolean field to each
-
Overall Code Contribution: RepoSense link
- Project management:
- Opened issues that sought to improve to code quality (E.g. Issue #285)
- Reviewed and approved team members’ PRs for merging (more details in the Community section)
- Documentation:
- User Guide:
- Wrote the Suggestion feature section.
- Wrote the Help section.
- Wrote the Add appointment command section.
- Reformatted the Profile section and the Referral section.
- Reformatted
clearinto 4 subsections under their respective sections (Doctor, Patient, Activity, Clear)
- Developer Guide:
- Revamped the Model Component
segment of the original AB3 DG. This included updating the Class Diagram, adding an additional Class Diagram as well as adding more details about the implementation of the
Modelclass in general. - Wrote the section about the implementation of the suggestions feature execution.
- Wrote the section about the implementation of the command history feature execution.
- Wrote Use Case 4 in the Use cases section.
- Wrote manual testing cases for suggestions and command history
- Revamped the Model Component
segment of the original AB3 DG. This included updating the Class Diagram, adding an additional Class Diagram as well as adding more details about the implementation of the
- User Guide:
- Community: