User Guide
HealthContact is a software for the receptionist of a family clinic who arranges telemedicine services between doctors and patients. It helps to keep track of patient data, patient appointments and patient bills for the family clinic.
Features
- Add a patient (addpatient, ap)
- Add an appointment of a patient (addappointment, aa)
- Add a bill of an appointment (addbill, ab)
- Edit a patient (editpatient, ea)
- Edit an appointment of a patient (editappointment, ea)
- Edit a bill of an appointment (editbill, eb)
- Find patient(s) (findpatient, fp)
- Find appointment(s) (findappointment, fa)
- Find bill(s) (findbill, fb)
- Sort patients (sortpatient, sop)
- Sort appointments (sortappointment, soa)
- Sort bills (sortbill, sob)
- Select a patient (selectpatient, slp)
- Select an appointment (selectappointment, sla)
- Set bill as paid (setpaid, sp)
- Set bill as unpaid (setunpaid, sup)
- List (list, ls)
- Delete a patient (deletepatient, dp)
- Delete a patient’s appointment (deleteappointment, da)
- Delete the bill of an appointment (deletebill, db)
- Undo (undo)
- Redo (redo)
- Clear (clear)
- Exit the program (exit)
- Help (help)
- Save the data
- Edit the data file
Others
Quick Start
-
Ensure you have Java 11 or above installed in your Computer.
-
Download the latest HealthContact.jar from here.
-
Copy the file to the folder you want to use as the home folder for your HealthContact application.
-
Double-click the file to start the app. The Graphical User Interface (GUI) similar to the one 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.
-
Refer to the Features below for details of each command.
1. Features
1.1 Add
1.1.1 Add a patient addpatient
, ap
Adds a patient to HealthContact with input information including name, phone number, email address, home address, remarks and tags.
Command word
addpatient
or ap
Format
Command word <prefix><input> ...
-
Name must be different from existing patient and name is case-insensitive.
-
Remark and tags are optional.
-
A patient can be added with multiple tags.
-
The patient list, appointment list and bill list will show all data after adding.
Parameter List
Prefix | Meaning | Input Constraint | |
---|---|---|---|
* |
n/ |
Name | 1. Non-empty alphanumeric characters and spaces 2. Must be different from existing patient’s name |
* |
p/ |
Phone number | Numbers with at least 3 digits |
* |
e/ |
Email address | local-part@domain |
* |
a/ |
Home address | Non-empty characters |
r/ |
Remark | Any characters | |
+ |
t/ |
Tag | One alphanumeric word |
Notes on symbols in first column:
*
Must have (If they are duplicate prefixes, only the last one will be taken into account)
+
Can have multiple
Example:
ap n/Bernice Yu a/#11-330, blk 775, Bishan e/b.yu@nus.edu.sg p/80880011 t/NUS t/staff
adds the patient.
1.1.2 Add an appointment of a patient addappointment
, aa
Adds an appointment to HealthContact with input information including patient name, medical test, slot, and doctor.
Command word
addappointment
or aa
Format
Command word <prefix><input> ...
-
Patient name input must strictly match the name of an existing patient, even the casing.
-
Slot must be in the format
yyyy-MM-dd HH:mm
, eg.2022-11-12 13:00
. -
The input of four parameters must be different with the combination in other appointments.
-
Doctor and medical test are case-sensitive.
-
The input of four parameters must be different with the combination in other appointments, taking into consideration that doctor and medical test are case-sensitive, while patient name is case-insensitive.
-
The patient list, appointment list and bill list will show all data after adding.
-
The onus is on the user to check and ensure the following before adding an appointment:
- The appointment times for different patients with the same doctor do not clash with one another.
- The same patient/doctor does not have multiple appointments with times that clash with one another.
Parameter List
Prefix | Meaning | Input Constraint | |
---|---|---|---|
* |
n/ |
Name | 1. Non-empty alphanumeric characters and spaces 2. must be existing patient’s name |
* |
s/ |
Slot | Valid date and time in format yyyy-MM-dd HH:mm |
* |
d/ |
Doctor name | Non-empty alphanumeric characters and spaces |
* |
t/ |
Medical test | Non-empty characters |
Notes on symbols in first column:
*
Must have (If they are duplicate prefixes, only the last one will be taken into account)
+
Can have multiple
Examples:
aa n/Bernice Yu s/2021-10-11 12:00 d/Dioni Yong t/X-Ray
adds the appointment.
aa n/Bernice Yu s/2022-01-23 09:00 d/Dioni Yong t/CT
adds another appointment forBernice Yu
.
1.1.3 Add a bill of an appointment addbill
, ab
Adds a bill attached to an appointment with input information including amount and bill date.
Command word
addbill
or ab
Format
Command word <index of appointment> <prefix><input> ...
-
An amount must be positive number with at most 2 decimal places.
-
One appointment can be attached to no more than one bill.
-
A bill date must be in the format
yyyy-MM-dd
, eg.2022-11-12
. -
The patient list, appointment list and bill list will show all data after adding.
Parameter List
Prefix | Meaning | Input Constraint | |
---|---|---|---|
** |
NA | Index of appointment | 1. Positive integer 2. Appears in the appointment list 3. The indicated appointment does not have bill |
* |
a/ |
Amount | Positive number with at most 2 decimal place |
* |
d/ |
Bill Date | Valid date in format yyyy-MM-dd |
Notes on symbols in first column:
**
Must be directly after command word
*
Must have (If they are duplicate prefixes, only the last one will be taken into account)
Example:
ab 1 a/1200.00 d/2021-11-11
adds a bill to the first appointment in the displayed list.
1.2 Edit
1.2.1 Edit a patient editpatient
, ep
Edits a patient’s information, such as name, phone number, address, email, remarks, and tags.
Command word:
editpatient
or ep
Format:
Command word <index of patient> <prefix><input> ...
Parameter List
Prefix | Meaning | Input Constraint | |
---|---|---|---|
** |
NA | Index of patient | 1. Positive integer 2. Appears in the patient list |
* |
n/ |
Name | 1. Non-empty alphanumeric characters and spaces 2. Must not be existing patient’s name |
* |
p/ |
Phone | Numbers with at least 3 digits |
* |
e/ |
Email address | local-part@domain |
* |
a/ |
Home address | Non-empty characters |
r/ |
Remark | Any characters | |
+ |
t/ |
Tag | One alphanumeric word |
-
Edits the patient at the specified index. The index of patient refers to the index number shown in the displayed patient list.
The index must be a positive integer 1, 2, 3, …
<input>
refers to the new value of the field to be edited.- User input should be different from the previous information that the patient has.
- At least one of the optional fields must be provided.
- Existing values will be updated to the input values.
- When editing tags, the existing tags of the person will be removed, i.e. adding of tags is not cumulative.
- You can remove all the patient’s tags by typing
t/
without specifying any tags after it. - The prefixes that can be used to edit patients can be found below in the parameter list.
Parameter List
Prefix | Meaning | Input Constraint | |
---|---|---|---|
* |
n/ |
Name | 1. Non-empty alphanumeric characters and spaces 2. Must be different from existing patient’s name |
* |
p/ |
Phone number | Numbers with at least 3 digits |
* |
e/ |
Email address | local-part@domain |
* |
a/ |
Home address | Non-empty characters |
r/ |
Remark | Any characters | |
+ |
t/ |
Tag | One alphanumeric word |
Examples:
editpatient 1 p/91234567 e/johndoe@example.com
edits the phone number and email address of the first patient on the displayed list to be91234567
andjohndoe@example.com
respectively.
editpatient 2 n/Betsy Crower t/
edits the name of the second patient on the displayed list to beBetsy Crower
and clears all existing tags.
1.2.2 Edit an appointment of a patient editappointment
, ea
Edits an appointment of a patient, such as name, medical test, slot, and doctor.
Command word:
editappointment
or ea
Format:
Command word <index of appointment> <prefix><input> ...
Parameter List
Prefix | Meaning | Input Constraint | |
---|---|---|---|
** |
NA | Index of appointment | 1. Positive integer 2. Appears in the appointment list |
* |
n/ |
Name | 1. Non-empty alphanumeric characters and spaces 2. must be existing patient’s name |
* |
s/ |
Slot | Valid date and time in format yyyy-MM-dd HH:mm |
* |
d/ |
Doctor name | Non-empty alphanumeric characters and spaces |
* |
t/ |
Medical test | Non-empty characters |
-
Edits the appointment at the specified index. The index of appointment refers to the index number shown in the displayed appointment list.
- The index must be a positive integer 1, 2, 3, …
- The
<input>
refers to the new value of the field to be edited. - User input should be different from the previous information that the appointment has.
- At least one of the optional fields must be provided.
- Existing values will be updated to the input values.
- The prefixes that can be used to edit patients can be found below in the parameter list.
Parameter List
Prefix | Meaning | Input Constraint | |
---|---|---|---|
* |
n/ |
Name | 1. Non-empty alphanumeric characters and spaces 2. must be existing patient’s name |
* |
s/ |
Slot | Valid date and time in format yyyy-MM-dd HH:mm |
* |
d/ |
Doctor name | Non-empty alphanumeric characters and spaces |
* |
t/ |
Medical test | Non-empty characters |
Examples:
editappointment 1 n/David Li t/CT Scan s/2021-03-01 10:00 d/Tan
Edits the name, medical test, slot, and doctor of the 1st appointment to beDavid Li
,CT Scan
,2021-03-01 10:00
, andTan
respectively.
1.2.3 Edit a bill of an appointment editbill
, eb
Edits the bill of an appointment.
Command word:
editbill
or eb
Format:
Command word <index of bill> <prefix><input> ...
Parameter List
Prefix | Meaning | Input Constraint | |
---|---|---|---|
** |
NA | Index of bill | 1. Positive integer 2. Appears in the bill list |
* |
a/ |
Amount | Positive number with at most 2 decimal place |
* |
d/ |
Bill Date | Valid date in format yyyy-MM-dd |
-
Edits the bill at the specified index. The index of bill refers to the index number shown in the displayed bill list.
The index must be a positive integer 1, 2, 3, …
- At least one of the optional fields must be provided.
- Existing values will be updated to the input values.
Examples:
editbill 1 a/100
edits the amount of the first bill to be100
.
editbill 1 d/2022-10-10
edits the bill date of the 1st bill to be2022-10-10
.
1.3 Find
1.3.1 Find patient(s) findpatient
, fp
Filters patients by one or more fields using their prefixes, and their corresponding inputs (numbers, letters, special characters). The filtered patients are then listed as an indexed list.
Command word:
findpatient
or fp
Format:
Command word <prefix><input> ...
- The command words are
findpatient
orfp
. - The prefixes that can be used are provided in the parameter list below.
- The filter is case-insensitive, e.g. han will match Han.
- The user can filter using full words or partial words, e.g. han will match Hannah.
- The user can only filter according to the input constraints of each field as shown in the parameter list below.
- The user can filter using one field or multiple fields at once, but each field can only be used once in a single command(except tags).
- If there are no prefixes keyed in, an error message will be shown with the correct command format.
- If the input after a prefix is empty/invalid, an error message with the constraint of the field will be shown.
Parameter List
Prefix | Meaning | Input Constraint |
---|---|---|
n/ |
Name | Non-empty alphanumeric characters and spaces |
p/ |
Phone number | A number consisting of one or more digits, and spaces before and/or after the number are allowed |
e/ |
Email address | Non-empty characters |
a/ |
Home address | Non-empty characters |
r/ |
Remark | Non-empty characters |
t/ |
Tag | One alphanumeric word, and spaces before and/or after the number are allowed |
Examples:
findpatient n/alex
returnsAlex Yeoh
andalex tan
.
fp t/friends t/colleagues n/bernice
returns onlyBernice Yu
with the tagsfriends
andcolleagues
.
1.3.2 Find appointment(s) findappointment
, fa
Filters appointments by one or more fields using their prefixes, and their corresponding inputs (numbers, letters, special characters).
Command word:
findappointment
or fa
Format:
Command word <prefix><input> ...
- The command words are
findappointment
orfa
. - The prefixes that can be used are listed in the parameter list below.
- The filter is case-insensitive, e.g. han will match Han.
- The user can filter using full words or partial words, e.g. han will match Hannah.
- The user can only filter according to the input constraints of each field as shown in the parameter list below.
- The user can filter using one field or multiple fields at once, but each field can only be used once in a single command.
- If there are no prefixes keyed in, an error message will be shown with the correct command format.
- If the input after a prefix is empty/invalid, an error message with the constraint of the field will be shown.
Parameter List
Prefix | Meaning | Input Constraint |
---|---|---|
n/ |
Name | Non-empty alphanumeric characters and spaces |
t/ |
Medical Test | Non-empty characters |
s/ |
Slot | Only numbers, “-“, “:” and spaces |
d/ |
Doctor | Only alphanumeric characters and spaces |
Examples:
findappointment t/x-ray
returnsBernice Yu
’s appointment with medical testX-ray
.
fa d/Dr Tan n/Alex
returns onlyAlex Yeoh
’s appointment withDr Tan
.
1.3.3 Find bill(s) findbill
, fb
Filters bills by one or more fields using their prefixes, and their corresponding inputs (numbers, letters, special characters).
Command word:
findbill
or fb
Format:
Command word <prefix><input> ...
- The command words are
findbill
orfb
. - The prefixes that can be used are listed in the parameter list below.
- The filter is case-insensitive, e.g. han will match Han.
- The user Can filter using full words or partial words, e.g. han will match Hannah.
- The user can only filter according to the input constraints of each field as shown in the parameter list below.
- The user can filter using one field or multiple fields at once, but each field can only be used once in a single command.
- If there are no prefixes keyed in, an error message will be shown with the correct command format.
- If the input after a prefix is empty/invalid, an error message with the constraint of the field will be shown.
Parameter List
Prefix | Meaning | Input Constraint |
---|---|---|
n/ |
Name | Non-empty alphanumeric characters and spaces |
d/ |
Bill date | Only numbers, “-“ and spaces are allowed |
a/ |
Amount | Positive number with at most two decimal places, and spaces before and/or after the number are allowed |
p/ |
Payment Status | Only “paid” or “unpaid” in any case |
Examples:
findbill n/Ber p/unpaid
returns Bernice Yu
’s unpaid bill
1.4 Sort
1.4.1 Sort patients sortpatient
, sop
Sorts patients by a single field.
Command word:
sortpatient
or sop
Format:
Command word c/<input> o/<input>
- The command word is
sortpatient
orsop
. - The prefixes are
c/
for Criteria ando/
for Order. - The criteria can be Name of patient (
name
), Phone number of patient (phone
), Email address of patient (email
), Address of patient (address
). - The order can be Ascending (
asc
) or Descending (desc
). - If there are no prefixes keyed in, an error message will be shown with the correct command format.
- If the input after a prefix is empty/invalid, an error message with the constraint of the field will be shown.
Examples:
sortpatient c/name o/asc
returns patients sorted by name in ascending order.
sortpatient c/phone o/desc
returns patients sorted by phone number in descending order.
1.4.2 Sort appointments sortappointment
, soa
Sorts appointments by a single field.
Command word:
sortappointment
or soa
Format:
Command word c/<input> o/<input> ...
- The command word is
sortappointment
orsoa
. - The prefixes are
c/
for Criteria ando/
for Order. - The criteria can be Name of patient (
name
), Medical Test of appointment (test
), Slot of appointment (slot
) and Doctor of appointment (doctor
). - The order can be Ascending (
asc
) or Descending (desc
). - If there are no prefixes keyed in, an error message will be shown with the correct command format.
- If the input after a prefix is empty/invalid, an error message with the constraint of the field will be shown.
Examples:
sortappointment c/test o/asc
returns appointments sorted by medical test in ascending order.
sortappointment c/doctor o/desc
returns appointments sorted by doctor in descending order.
1.4.3 Sort bills sortbill
, sob
Sorts bills by a single field.
Command word:
sortbill
or sob
Format:
Command word c/<input> o/<input> ...
- The command word is
sortbill
orsob
. - The prefixes are
c/
for Criteria ando/
for Order. - The criteria can be Name of patient (
name
), Amount (amount
), Bill date (date
), Payment status (status
). - The order can be Ascending (
asc
) or Descending (desc
). - If there are no prefixes keyed in, an error message will be shown with the correct command format.
- If the input after a prefix is empty/invalid, an error message with the constraint of the field will be shown.
- If the criteria is payment status, Ascending will show bills which are paid first and Descending will show bills which are unpaid first.
Examples:
sortbill c/amount o/asc
returns bills sorted by amount in ascending order.
sortbill c/status o/desc
returns bills sorted by payment status in descending order.
1.5 Select
Select is a type of command that quickly shows the related information of an item, simulating a mouse click on the item.
1.5.1 Select a patient selectpatient
, slp
Selects a patient by index in the patient list. Filter the appointment list and bill list so that these two lists shows the appointments and bills for the selected patient only.
Command word
selectpatient
or slp
Format
Command word <index of patient>
Parameter List
Prefix | Meaning | Input Constraint | |
---|---|---|---|
** |
NA | Index of patient | 1. Positive integer 2. Appears in the patient list |
Notes on symbols in first column:
**
Must be directly after command word
Example:
slp 1
shows the appointments and bills for the first patient on the patient list.
1.5.2 Select an appointment selectappointment
, sla
Selects an appointment by index in the appointment list. Filter the bill list so that bill list shows the bill for the selected appointment only.
Command word
selectappointment
or sla
Format
Command word <index of appointment>
Parameter List
Prefix | Meaning | Input Constraint | |
---|---|---|---|
** |
NA | Index of appointment | 1. Positive integer 2. Appears in the appointment list |
Notes on symbols in first column:
**
Must be directly after command word
Example:
sla 1
shows the bill for the first appointment on the appointment list.
1.6 Set Bill Payment Status
1.6.1 Set Bill As Paid setpaid
, sp
Sets the payment status of a bill to “paid”.
Command word:
setpaid
or sp
Format:
Command word <index of bill>
- The command words are
setpaid
orsp
. - The index refers to the index number of the bill shown in the displayed bill list.
- The index must be a valid positive integer 1, 2, 3, …
Example:
setpaid 1
sets the first bill on the displayed bill list as paid, in this case,Bernice Yu
’s bill.
Before:
After:
1.6.2 Set Bill As Unpaid setunpaid
, sup
Sets the payment status of a bill to “unpaid”.
Command word:
setunpaid
or sup
Format:
Command word <index of bill>
- The command words are
setunpaid
orsup
. - The index refers to the index number of the bill shown in the displayed bill list.
- The index must be a valid positive integer 1, 2, 3, …
Example:
setunpaid 1
sets the first bill in the displayed bill list as unpaid, in this case,Bernice Yu
’s bill.
Before:
After:
1.7 List list
, ls
Removes all conditions previously applied to the list and shows all patients, appointments and bills.
Command word:
list
or ls
Format
Command word
Example:
list
shows all patients, appointments and bills.
1.8 Delete
1.8.1 Delete a patient deletepatient
, dp
Deletes a patient by the index number of the patient in the list.
Command word:
deletepatient
or dp
Format:
Command word <index of patient>
- The command words are
deletepatient
ordp
. - The patient to be deleted is identified by using the index in the displayed list.
- Deleting a patient deletes their related appointments and bills.
- If there is no index keyed in or the command word is followed by non-numeric characters, an error message will be shown with the correct command format.
- If the index provided is negative or greater than the number of patients in the list, an error message will be shown saying the index is invalid.
Examples:
deletepatient 1
deletes patientBernice Yu
and all of her related appointments and bills.
Before:
After:
1.8.2 Delete a patient’s appointment deleteappointment
, da
Deletes an appointment by the index number of the appointment in the list.
Command word:
deleteappointment
or da
Format:
Command word <index of appointment>
- The command words are
deleteappointment
orda
. - The appointment to be deleted is identified by using the index in the displayed list.
- Deleting an appointment deletes its related bill.
- If there is no index keyed in or the command word is followed by non-numeric characters, an error message will be shown with the correct command format.
- If the index provided is negative or greater than the number of patients in the list, an error message will be shown saying the index is invalid.
Examples:
deleteappointment 3
deletesCharlotte Oliveiro
’s appointment and the bill tagged to it.
Before:
After:
1.8.3 Delete the bill of an appointment deletebill
, db
Deletes a bill by the index number of the bill in the list.
Command word:
deletebill
or db
Format:
Command word <index of bill>
- The command words are
deletebill
ordb
. - The bill to be deleted is identified by using the index in the displayed list.
- If there is no index keyed in or the command word is followed by non-numeric characters, an error message will be shown with the correct command format.
- If the index provided is negative or greater than the number of patients in the list, an error message will be shown saying the index is invalid.
- The appointment should be deleted only once the bill for the appointment is paid.
Examples:
deletebill 3
deletesBernice Yu
’s bill for herX-Ray
appointment.
Before:
After:
1.9 Undo undo
Reverses the most recent command.
Format:
undo
- The command word is
undo
. - The command can be used multiple times to undo multiple commands.
- If there are no commands to undo, an error message will be shown.
- Only commands that change the state of HealthContact can be undone. (Commands such as list, find, select cannot be undone)
Examples:
deletepatient 1
deletes all information ofBernice Yu
.
undo
brings back all the information ofBernice Yu
.
1.10 Redo redo
Reverses the most recent undo command.
Format:
redo
- The command word is
redo
. - The command can be used multiple times to redo multiple commands.
- If there are no commands to redo, an error message will be shown.
- Executing any command other than undo/redo will clear the redo stack. (i.e. Redo will not work after executing any command other than undo/redo)
Examples:
deletepatient 1
deletes all information ofBernice Yu
.
undo
brings back all information ofBernice Yu
.
redo
deletes all information ofBernice Yu
again.
1.11 Clear clear
Deletes all patients, appointments and bills from HealthContact.
- If the user accidentally clears all data, the user can restore the data by using the
undo
command. If the user closes the application before undoingclear
, the data will be gone permanently.
Format
clear
Example
clear
deletes all the data in HealthContact.
1.12 Exit exit
Quits HealthContact.
Format
exit
Example
- Executing
exit
, the program closes.
1.13 Help help
Opens the Help Window.
Format
help
Example
help
opens the help window.
1.14 Save the data
HealthContact data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
1.15 Edit the data file
HealthContact data are saved as a JSON file [JAR file location]/data/healthcontact.json
. Advanced users are welcome to update data directly by editing that data file.
- If the changes to the data file makes its format invalid, HealthContact will discard all data and start with an empty data file at the next run.
2. Command Summary Table
Feature | Command Word | Shortcut | |
---|---|---|---|
Add | a patient | addpatient |
ap |
an appointment of a patient | addappointment |
aa |
|
a bill for an appointment | addbill |
ab |
|
Edit | a patient | editpatient |
ep |
an appointment of a patient | editappointment |
ea |
|
a bill for an appointment | editbill |
eb |
|
Delete | a patient | deletepatient |
dp |
an appointment of a patient | deleteappointment |
da |
|
a bill for an appointment | deletebill |
db |
|
Find | a patient | findpatient |
fp |
an appointment of a patient | findappointment |
fa |
|
a bill for an appointment | findbill |
fb |
|
Sort | patients | sortpatient |
sop |
appointments | sortappointment |
soa |
|
bills | sortbill |
sob |
|
Select | a patient | selectpatient |
slp |
an appointment | selectappointment |
sla |
|
Set bill | as paid | setpaid |
sp |
as unpaid | setunpaid |
sup |
|
Undo | the last change | undo |
|
Redo | the last undone change | redo |
|
Clear | all the data saved | clear |
|
List | all patients, appointments and bills | list |
ls |
Exit | the program | exit |
|
Help | the user with user guide | help |
3. Frequently Asked Questions
- Q: How do I find out which appointment a bill is for?
- Use the FindAppointmentCommand to find all appointments for a patient using the patient name on the bill. Then, use the SelectAppointmentCommand to see which appointment is the bill for.
- Q: What do I do if I cannot open the application by double-clicking on it?
- Try opening the application by running the command
java -jar HealthContact.jar
in the command prompt.
- Try opening the application by running the command
- Q: What do I do if the data on the application panels are too long and are partially hidden by “…”?
- Use select commands to view the details or expand the application window.