MediSync is a desktop app specifically used for head nurses to manage staff and patients, optimised for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). Instead of tracking data of staff and patients using existing applications such as Microsoft Excel, using a CLI-centric application like MediSync will help head nurses track and handle contact management more quickly.
Ensure you have Java 11 or above installed in your Computer.
Download the latest medisync.jar from here.
Copy the file to the folder you want to use as the home folder for your MediSync.
Open a command terminal, cd into the folder you put the jar file in, and use the java -jar medisync.jar command to run the application.
A GUI similar to the below should appear in a few seconds. Note how the app contains 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.
Some example commands you can try:
list : Lists all contacts.
add n/John Doe p/98765432 e/johnd@example.com r/patient a/Alex Yeoh : Adds a contact named John Doe to MediSync.
delete 3 : Deletes the 3rd contact shown in the current list.
clear : Deletes all contacts.
exit : Exits the app.
Refer to the Features below for details of each command.
MediSync strives to streamline the storage and identification of contacts, focusing on essential information that are critical in medical contexts.
Here are some definitions that are noteworthy when using MediSync.
| Term | Explanation |
|---|---|
| Role | The role of a person in the contact list is either Doctor, Nurse, or Patient. When we use the word staff, we are implying both Doctors and Nurses. |
| Affiliation | With staff members providing care to specific Patients, there is a need to establish an association between staff members and Patients. We use affiliations to denote such relationships. Such relationships can never be one-sided in MediSync, and it will not exist between staff members or between Patients. |
| Affiliation History | Having some level of history-taking is vital in tracking medical care. The use of affiliation history is to track past staff members that had affiliations with a particular Patient, and vice-versa. MediSync allows for the deletion of these history, but existing affiliations can never be deleted from the affiliation history until the affiliation is severed. |
| Shift Days | Shift days is an attribute unique to staff members. For simplicity, the current version of MediSync monitors the workdays of each staff member in blocks of days. |
| Next of Kin | The Next of Kin attribute is meant for Patients. Having a method of contact with the Patients next of kin is vital in medical care. |
| Specialisations | Exclusively for Doctors, the specialisations attribute offers added information about each doctor, enabling the appropriate doctor to be matched with patients having diverse requirements. |
Notes about the command format:
Words in UPPER_CASE are the parameters to be supplied by the user.
e.g. in add n/NAME, NAME is a parameter which can be used as add n/John Doe.
Items in square brackets are optional.
e.g. n/NAME [a/AFFN_NAME] can be used as n/John Doe a/Sam Young or as n/John Doe.
Items with … after them can be used multiple times including zero times.
e.g. [a/AFFN_NAME]… can be used as (i.e. 0 times), a/Sam Young, a/Sam Young a/Ben Chua etc.
Parameters can be in any order.
e.g. if the command specifies n/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 and clear) will be ignored.
e.g. if the command specifies help 123, it will be interpreted as help.
Command are first checked for their formatting before checking the validity of the inputs.
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.
helpShows a message explaining how to access the help page.
Format: help
addAdds a contact to the contact list.
Format: add n/NAME p/PHONE_NUMBER e/EMAIL r/ROLE [a/AFFN_NAME]…
Nurse, Doctor, or Patient (case-insensitive).Tip: A person can have any number of affiliations (including 0). However, to add an affiliation, it must already exist in the contact list. In addition, the role of the affiliation must be constrasting to the person being added (i.e. affiliations can only be between Nurse and Patient OR Doctor and Patient).
Examples:
add n/John Doe p/98765432 e/johnd@example.com r/patientadd n/Mint Ho p/97746234 e/mint@example.com r/nurse a/Bernice Yu
listShows a list of all persons in the contact list.
Format: list
editEdits an existing contact in the contact list.
Format: edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/AFFN_NAME]…
INDEX. The index refers to the index number shown in the displayed person list. The index must be a positive integer 1, 2, 3, …a/ without
specifying any affiliations after it.Examples:
edit 3 p/81234567 a/ edits the phone number of the 3rd person to 81234567 and removes the person’s affiliationedit 1 n/Sally Wing e/sallyw@kmail.com edits the name and the email of the 1st person to Sally Wing and sallyw@kmail.com respectively.findFinds persons whose specified attribute contains any of the given keywords. Requires a prefix to choose which attribute to search for.
Format: find (n|p|e|r|a)/[KEYWORD] [MORE_KEYWORDS]...
n/ for NAME, p/ for PHONE, e/ for EMAIL, r/ for ROLE, and a/ for AFFILIATION| (OR) indicator in the format. Using two or more prefixes in one search will lead to an invalid command.hans will match HansHans Bo will match Bo Hansfind n/chard will return Richard Gramson, or find e/max will return persons with email such as himax@test.comOR search).
e.g. Hans Bo will return Hans Gruber, Bo YangExamples:
find p/976 returns any person in the contact list that has 976 in its phone number.find n/eve irfan returns Irfan Ibrahim, Evelyn Ng
addaffnAdd affiliations to staff/patients indicated by the given INDEX without deleting existing affiliation.
Format: addaffn INDEX a/AFFN_NAME [a/AFFN_NAME]…
INDEX.AFFN_NAME is specified as full name of a person in the contact list.Examples:
addaffn 1 a/John adds John to affiliation of 1st person in the contact list.addaffn 3 a/John a/Mary adds John and Mary to affiliation of 3rd person in the contact list.affnFinds staff/patients who are affiliated with the patient/staff indicated by the given index.
Format: affn INDEX
INDEX.Examples:
list followed by affn 2 lists the people affiliated to the 2nd person in the contact list.affn 1 will list the people affiliated with the 1st person displayed after the previous affn command.
affnhFinds the staff/patients that used to be affiliated or are currently affiliated with the patient/staff indicated by the given index.
Format: affnh INDEX
INDEX.Examples:
affnh 2 lists the people who used to be affiliated or are currently affiliated to the 2nd person in the contact list.removeahRemoves all affiliation history of patient/staff indicated by the given INDEX, except for affiliations that are currently affiliated.
Format: removeah INDEX
INDEX.INDEX from the affiliation history of others.Examples:
removeah 2 removes affiliation history of the 2nd person in the contact list.specFinds the doctor indicated by the given index and modifies the specialisations of the doctor.
Format: spec INDEX [SPECIALIZATION1, SPECIALIZATION2, ...]
INDEX.spec INDEX without specifying any specialisations after it.Examples:
spec 5 heart, brain, brain modifies the specialisations of the 5th person(a Doctor) in the contact list to heart and brain.spec 5 removes all specialisations of the 5th person(a Doctor) in the contact list.deleteDeletes the contact in the contact list. If the other contacts have affiliations/affiliation history with this contact, the affiliations will be deleted automatically.
Format: delete INDEX
INDEX.Examples:
list followed by delete 3 deletes the 3rd person in the contact list.find n/Betsy followed by delete 1 deletes the 1st person in the results of the find command.WARNING: Deleting a person is irreversible. Any associations will be erased. Please make sure it is intended before proceeding.
nokUpdate next of kin of a patient identified at INDEX in the contact list.
Format: nok INDEX [n/NAME p/PHONE rs/RELATIONSHIP]
INDEX.RELATIONSHIP can be specified in any alphanumeric characters and spaces.Examples:
nok 2 removes next of kin of the 2nd person in the contact list.nok 2 n/John p/11111 rs/Brother adds next of kin with the name John, phone 11111 and relationship Brother to the 3rd person in the contact list.
shiftUpdates the shift days of the person identified with the given index number.
Format: shift INDEX [SHIFT_DAYS]
SHIFT_DAYS is in the form of an unbroken string of numbers, from 1 (Monday) to 7 (Sunday), typed with no spaces, e.g. 147 (Monday, Thursday, Sunday). Duplicates are allowed in the SHIFT_DAYS string, but each day will only be counted once in the actual shift schedule.SHIFT_DAYS is not provided, the shift days for the staff member at the given index will be cleared.Examples:
shift 1 126 will set the 1st person in the contact list's shift days to be Monday, Tuesday, and Saturday.shift 3 1127 would also be valid input and would assign Monday, Tuesday, and Sunday as shift days for the 3rd person, ignoring the duplicate entry of Monday.shift 2 with no SHIFT_DAYS specified will clear all shift days for the 2nd person in the contact list.ondutyFinds staff members(doctors/nurses) who are on duty today.
Format: onduty
Examples:
onduty is called, then staff members that have duty on Monday will be listed.infoDisplays the information of the person in the contact list.
Format: info INDEX
INDEX.Examples:
list followed by info 3 displays the information of the 3rd person in the contact list.find n/Charlotte followed by info 1 displays the information of the 1st person in the results of the find command.
Displays the information of the person in the contact list by clicking on the person in the list.
info command.Navigate through the information of different people in the displayed list using UP and DOWN arrow keys.
UP and DOWN arrow keys is only applicable when any of the person in the list is highlighted, indicating that the list is on focus.info command to set the list on focus.clearClears all entries from the contact list.
Format: clear
WARNING: Information cleared are irretrievable. As MediSync do not have confirmation prompts, do not, in any way, input this command if there are no intentions of using it.
exitExits the program.
Format: exit
MediSync data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
MediSync data are saved automatically as a JSON file [JAR file location]/data/medisync.json. Advanced users are welcome to update data directly by editing that data file.
Caution: If your changes to the data file makes its format invalid, MediSync will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.
Be very careful, especially when you modify attributes such as Role, as any mismatch in Affiliations will render the data as invalid e.g. Changing the Role of a Patient to Doctor resulting in this new Doctor having affiliations with another Doctor. Scenarios like these are not exhaustive.
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 with the file that contains the data of your previous MediSync home folder.
preferences.json file created by the application before running the application again.| Action | Format, Examples |
|---|---|
| Add | add n/NAME p/PHONE_NUMBER e/EMAIL r/ROLE [a/AFFN_NAME]… e.g., add n/May Ho p/98765432 e/johnd@example.com r/nurse a/John Doe |
| Clear | clear |
| Delete | delete INDEXe.g., delete 3 |
| Edit | edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/AFFN_NAME]…e.g., edit 1 p/91234567 e/johndoe@example.com |
| Find | find (n|p|e|r|a)/[KEYWORD] [MORE_KEYWORDS]...e.g., find n/james |
| List | list |
| List Affiliations | affn INDEXe.g., affn 1 |
| List Affiliation History | affnh INDEXe.g., affnh 2 |
| Add Affiliations | addaffn INDEX a/AFFN_NAME [a/AFFN_NAME]e.g., addaffn 4 a/Mike Chang a/Tom Cruise |
| Modify Shift Days | shift INDEX [SHIFT_DAYS]e.g., shift 2 1457 |
| Clears Affiliation History | removeah INDEXe.g., removeah 1 |
| Edit Next of Kin | nok INDEX [n/NAME p/PHONE rs/RELATIONSHIP] e.g., nok 3 n/John p/11111 rs/Brother |
| List Staff On Duty | onduty |
| Modify Specialisation | spec INDEX [SPECIALIZATION1, SPECIALIZATION2, ...]e.g., spec 4 Cardiology, Osteology |
| Display Person Information | info INDEXe.g., info 2 |
| Help | help |
| Exit | exit |