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.

Given below are some of my notable contributions to the project.

  • New Feature: Added a new model, Activity and basic CRUD method for it
    • What it does: allows the user to add, edit, delete and list activities. Activities consist of title, description, and time fields. Activity is the class that is used for appointments too (with an additional PATIENT_ID).
    • Justification: This feature allows the target users to create their own activities and check for any duplicate and existing activity in GoMedic. Not only that, Activity is the class that is also used for appointment.
    • Highlights: The activity class contains Time field, which can be used to detect for any conflicting activity. The implementation is fairly straightforward, but for any feature involving dates, it involves many edge cases such as invalid date, multiple formats, leap year, etc.
    • Credits:
      • SE-EDU AB3 for creating the project template, the architecture used for adding these new commands are very similar to CRUD commands for person in SE-EDU AB3.
      • Appointment features are done by my teammates, mostly by Seng Leng.
  • New Feature: Enhanced list activities command (Notable PRs : PR #154).
    • What it does: This command allows the users to sort the activities by id or start time, and can show are the available activities for today, next week, next month and next year (or all activities by default).
  • New Feature: Added a Referral command (Notable PRs : PR #168).
    • What it does: allows user to create a medical referral letter in pdf to a certain patient using the templates available.
    • Justification: This feature helps users to not miss any details in the referral letters such as age, height, medical conditions, etc.
    • Credits: This command heavily uses iTextPdf Java Pdf generator to format and write the pdf documents.
  • Ui Feature: Add a Side Window (Notable PRs : PR #165).
    • What it does: Side window displays the User Profile, and also indicator of which models that you are looking now (for e.g. if you are looking at Patient, the patient logo would be highlighted to bold blue text and icon).
    • Credits: User Profile features are done by my teammates, mostly by Yuhang.
  • Ui Enhancement: Change the font and the main display to use responsive Table View (Notable PRs : PR #151, PR #295).
    • What it does: Based on the Figma design which we use very closely as reference, I change the font to Lato. Also, by using table view instead of cards, users can see more patients / activities / or colleagues at once.
    • Highlights: The table view is made to be responsive, meaning the texts inside it will wrap if the window is resized. This is done by implementing custom cellFactory by JavaFX. Not only that, the columns of the table can be reordered. I also used some generic commands to make the code less redundant.
    • Credits: This command heavily uses JavaFX and I mostly learn about TableView from this blog.
  • Overall Code Contribution: RepoSense link
  • Project management:
    • Setting up the GitHub team org/repo, and manage Gradle
    • Lead the team in weekly sprint meeting, where each sprint records can be found here.
    • Triage most of the issues to ensure their consistency.
    • Introduce PR Templates to ensure proper context is given and the proper workflow such as assigning reviewer, linking PRs and passing CIs is being done for every PR.
  • Notable Documentations:
  • Review/Mentoring contributions:
    • Review ~82 out of ~90 PRs created (excluding mine already). Mostly because I frequent GitHub most often and just ensure code consistency. The List of PRs reviewed and their comments can be found here.
  • Community:
    • Contributed to forum discussions, especially during iP days (examples: 1 and 2).
    • Reported bugs and suggestions for other teams during PE-D.