User Guide
MediContacts is a desktop app for managing contacts of patients and doctors, as well as keeping track of their appointments. Hence our app is targeted at and built for receptionists working in small clinics, who need to manage thousands of patients, doctors, and appointments.
It is optimised for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, MediContacts can not only get your contact management tasks done faster than traditional systems adopted by clinics, but also efficiently keep track of appointments between registered doctors and patients.
- Command summary
- Quick start
-
Features
- Viewing help:
help
- Adding a doctor:
add-doctor
- Adding a patient:
add-patient
- Adding an appointment:
add-appt
- Deleting an appointment:
delete-appt
- Listing all persons:
list
- Listing all doctors:
list-doctor
- Listing all patients:
list-patient
- Finding persons by name:
find
- Finding doctors by name:
find-doctor
- Finding patients by name:
find-patient
- Deleting a person:
delete
- Clearing all entries:
clear
- Exiting the program:
exit
- Saving the data
- Editing the data file
- Archiving data files
[coming in v2.0]
- Marking appointments:
mark
[coming in v2.0]
- Unmarking appointments:
unmark
[coming in v2.0]
- Listing appointments:
list-appt
[coming in v2.0]
- Viewing help:
- FAQ
- Known issues
Command summary
Action | Format (with examples) |
---|---|
Help | help |
Add Doctor |
add-doctor n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS s/SPECIALTY [t/TAG]… e.g. add-doctor n/Jane Doe p/91234567 e/janedoe@example.com a/456 Clementi Ave 3 s/Cardiology t/colleague
|
Add Patient |
add-patient n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS d/DATE_OF_BIRTH g/GENDER [t/TAG]… e.g. add-patient n/John Doe p/98765432 e/johndoe@example.com a/123 Sengkang Drive 4 d/23-04-1950 g/M t/elderly
|
Add Appointment |
add-appt pn/PATIENT_NAME dn/DOCTOR_NAME d/DATE t/TIME e.g. add-appt pn/John Doe dn/Jane Doe d/23-04-2024 t/1100
|
Delete Appointment |
delete-appt UNIQUE_ID e.g. delete-appt 1231
|
List | list |
List Doctors | list-doctor |
List Patients | list-patient |
Find |
find KEYWORD [MORE_KEYWORDS] e.g. find Jane Doe
|
Find Doctor |
find-doctor KEYWORD [MORE_KEYWORDS] e.g. find-doctor Jane Doe
|
Find Patient |
find-patient KEYWORD [MORE_KEYWORDS] e.g. find-patient John Doe
|
Delete |
delete INDEX e.g. delete 3
|
Clear | clear |
Exit | exit |
Quick start
-
Ensure you have Java
17
or above installed in your Computer. -
Download the latest
.jar
file from here. -
Copy the file to the folder you want to use as the home folder for your MediContacts App.
- Open a command terminal,
cd
into the folder you put the jar file in, and use thejava -jar MediContacts.jar
command to run the application. You may refer to the following video tutorials on how to run JAR files:- For Windows (Watch from 0:47 onwards)
- For macOS (Watch from 2:23 onwards)
- For Linux (Watch full video)
A GUI similar to that below should appear in a few seconds. Note how the app will initially contain some sample data.
-
Type the command in the command box and press Enter to execute it. e.g. typing
help
and pressing Enter will open the help window.
Here are some example commands you can try out:-
list
: Lists all contacts. -
list-doctor
: Lists all doctors. -
list-patient
: Lists all patients. -
add-doctor n/Jane Doe p/98765432 e/janedoe@example.com a/123 Clementi Ave 3 s/Orthopedics
: Adds a doctor named Jane Doe to the address book. -
add-patient n/John Doe p/98765432 e/johndoe@example.com a/123 Clementi Ave 3 d/23-04-1987 g/M
: Adds a patient named John Doe to the address book. -
add-appt pn/John Doe dn/Jane Doe d/23-12-2024 t/1100
: Adds an appointment between a patient named John Doe and a doctor named Jane Doe on 23rd December 2024 (1100hrs). -
delete-appt 1231996014
: Deletes the appointment with the unique ID1231996014
. Refer to the UI screenshot above to know where to identify appointment IDs. -
find John
: Finds contacts whose names contain the keywordJohn
. -
find-doctor Jane
: Finds doctors whose names contain the keywordJane
. -
find-patient John
: Finds patients whose names contain the keywordJohn
. -
delete 3
: Deletes the 3rd contact currently displayed in the list. -
clear
: Deletes all contacts. -
exit
: Exits the app.
-
- Refer to the Features below for details of each command.
Features
Notes about the command format:
-
Words in
UPPER_CASE
are the parameters to be supplied by the user.
e.g. inadd-patient n/NAME
,NAME
is a parameter which can be supplied asadd-patient n/John Doe
. -
Items in square brackets are optional.
e.g.n/NAME [t/TAG]
can be used asn/John Doe t/friend
or asn/John Doe
. -
Items with
…
after them can be used multiple times including zero times.
e.g.[t/TAG]…
can be used ast/friend
,t/friend t/family
etc. -
Parameters can be in any order.
e.g. if the command specifiesn/NAME p/PHONE_NUMBER
,p/PHONE_NUMBER n/NAME
is also acceptable. -
Extraneous parameters for commands that do not take in parameters (such as
help
,list
,exit
andclear
) will be ignored.
e.g. if the command specifieshelp 123
, it will be interpreted ashelp
. -
If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.
Viewing help: help
Shows a message explaining how to access the help page.
Format: help
Adding a doctor: add-doctor
Adds a doctor to the address book.
Format: add-doctor n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS s/SPECIALTY [t/TAG]…
- Doctors are uniquely identified by their names hence their names must be unique in order for them to be added.
- The check for uniqueness is case-sensitive. e.g.
Jane Doe
is considered different fromjane doe

NAME
only accepts alphabetic characters and spaces. The app will reject the input if it contains any other character or is blank.Hence for common abbreviations with special characters such as
s/o
or d/o
, use s o
, son of
, d o
, or daughter of
instead.
Examples:
add-doctor n/Jane Doe p/98765432 e/janedoe@example.com a/123 Clementi Ave 3 s/Orthopedics
add-doctor n/Mark Tong p/91234567 e/mt@example.com a/456 Clementi Ave 3 s/Cardiology t/colleague
Adding a patient: add-patient
Adds a patient to the address book.
Format: add-patient n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS d/DATE_OF_BIRTH g/GENDER [t/TAG]…
- Patients are uniquely identified by their names hence their names must be unique in order for them to be added.
- The check for uniqueness is case-sensitive. e.g.
John Doe
is considered different fromjohn doe

NAME
only accepts alphabetic characters and spaces. The app will reject the input if it contains any other character or is blank.Hence for common abbreviations with special characters such as
s/o
or d/o
, use s o
, son of
, d o
, or daughter of
instead.

DATE
only accepts a valid date which is less than 32. For months with less than 31 days, entering a date that is too large but below 32 will be automatically corrected.
(e.g. 30-02-2024 will return 29-02-2024)
Examples:
add-patient n/John Doe p/98765432 e/johndoe@example.com a/123 Clementi Ave 3 d/23-04-1987 g/M
add-patient n/Kennedy Koh p/91234567 e/kk@example.com a/456 Clementi Ave 3 d/01-05-1950 g/M t/elderly
Adding an appointment: add-appt
Adds an appointment between a doctor and patient, at a specified date and time, to the address book.
Format: add-appt pn/PATIENT_NAME dn/DOCTOR_NAME d/DATE t/TIME

PATIENT_NAME
and DOCTOR_NAME
are case-sensitive, and must be an exact match of respective names in the address book. The app will reject the input if it contains unknown doctors or patients.

DATE
only accepts a valid date which is less than 32. For months with less than 31 days, entering a date that is too large but below 32 will be automatically corrected.
(e.g. 30-02-2024 will return 29-02-2024)
Examples:
add-appt pn/John Doe dn/Jane Doe d/23-04-2024 t/1100
Deleting an appointment: delete-appt
Deletes the specified appointment from the address book.
Format: delete-appt UNIQUE_ID
- Deletes the appointment tagged to the
UNIQUE_ID
.
Examples:
delete-appt 1231
Listing all persons: list
Shows a list of all persons in the address book.
Format: list
Listing all doctors: list-doctor
Shows a list of all doctors in the address book.
Format: list-doctor
Listing all patients: list-patient
Shows a list of all patients in the address book.
Format: list-patient
Finding persons by name: find
Finds persons whose names contain any of the given keywords.
Format: find KEYWORD [MORE_KEYWORDS]
- The app will only search for persons with matching names.
- The search is case-insensitive. e.g.
hans
will matchHans
- Partial matches will be successful. e.g.
Hans B
will matchHans Bo
- The order of the keywords matter. e.g.
Hans Bo
will not matchBo Hans
- The search is done using all keywords together as a single input, and not using each keyword separately.
e.g.Hans B
will match bothHans Bo
andHans Bone
, butH B
will not match either one - Only persons matching the entire input will be returned (i.e.
AND
search).
e.g.Hans Bo
will not matchHans Gruber
orBo Yang

Examples:
-
find jane
returnsJane Doe
-
find doe
returnsJohn Doe
andJane Doe
Finding doctors by name: find-doctor
Finds doctors whose names contain any of the given keywords.
Format: find-doctor KEYWORD [MORE_KEYWORDS]
- The app will only search for doctors with matching names.
- The search is case-insensitive. e.g.
hans
will matchHans
- Partial matches will be successful. e.g.
Hans B
will matchHans Bo
- The order of the keywords matter. e.g.
Hans Bo
will not matchBo Hans
- The search is done using all keywords together as a single input, and not using each keyword separately.
e.g.Hans B
will match bothHans Bo
andHans Bone
, butH B
will not match either one - Only doctors matching the entire input will be returned (i.e.
AND
search).
e.g.Hans Bo
will not matchHans Gruber
orBo Yang

Examples:
-
find-doctor jane
returnsJane Doe
. -
find-doctor jane doe
returnsJane Doe
.
Finding patients by name: find-patient
Finds patients whose names contain any of the given keywords.
Format: find-patient KEYWORD [MORE_KEYWORDS]
- The app will only search for patients with matching names.
- The search is case-insensitive. e.g.
hans
will matchHans
- Partial matches will be successful. e.g.
Hans B
will matchHans Bo
- The order of the keywords matter. e.g.
Hans Bo
will not matchBo Hans
- The search is done using all keywords together as a single input, and not using each keyword separately.
e.g.Hans B
will match bothHans Bo
andHans Bone
, butH B
will not match either one - Only patients matching the entire input will be returned (i.e.
AND
search).
e.g.Hans Bo
will not matchHans Gruber
orBo Yang

Examples:
-
find-patient john
returnsJohn Doe
. -
find-patient john doe
returnsJohn Doe
.
Deleting a person: delete
Deletes the specified person from the address book.
Format: delete INDEX
- Deletes the person at the specified
INDEX
. - The index refers to the index number shown in the currently displayed list.
- The index must be a positive integer 1, 2, 3, …

Examples:
-
list-patient
followed bydelete 2
deletes the 2nd patient in the address book. -
find-doctor Jane
followed bydelete 1
deletes the 1st doctor in the results of thefind-doctor
command.
Clearing all entries: clear
Clears all entries from the address book.
Format: clear
Exiting the program: exit
Exits the program.
Format: exit
Saving the data
MediContacts data are saved in the hard disk automatically after any command modifies the data. There is no need for users to save manually.

Editing the data file
MediContacts data are saved automatically as a JSON file [WORKING DIRECTORY]/data/addressbook.json
, where [WORKING DIRECTORY] is the directory the user is running the JAR file. Advanced users are welcomed to update the data directly by editing that data file.

Furthermore, certain edits can cause the app to behave in unexpected ways (e.g. if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you will update it correctly.
Archiving data files [coming in v2.0]
Details coming soon …
Marking appointments: mark
[coming in v2.0]
Details coming soon …
Unmarking appointments: unmark
[coming in v2.0]
Details coming soon …
Listing appointments: list-appt
[coming in v2.0]
Details coming soon …
FAQ
Q: How do I transfer my data to another computer?
A: Install the app in the other computer and overwrite the empty data file it creates there. Do this with the file that contains the data of your MediContacts app in your previous computer.
Known issues
-
When using multiple screens, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the
preferences.json
file created by the application before running the application again. -
If you minimize the Help Window and then run the
help
command (or use theHelp
menu, or the keyboard shortcutF1
) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.