User Guide
Track2Gather is a desktop app for contact tracing personnel at the Ministry of Health (MOH), optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI).
- Quick Start
-
Features
- Format for person details
- Adding a person:
add
- Editing a person :
edit
- Finding persons by a field:
find
- Shifting SHN End Dates:
tshift
- Deleting a person :
delete
- Listing all persons :
list
- Sorting all persons :
sort
- Clearing all persons :
clear
- SHN enforcement mode
- Starting a new SHN enforcement session :
session
- Showing the current SHN enforcement session :
schedule
- Updating a person as successfully called :
scall
- Updating a person as unsuccessfully called :
fcall
- Viewing help :
help
- Exiting the program :
exit
- Saving the data
- Editing the data file
- Command Summary
Quick Start
-
Ensure you have Java
11
or above installed in your Computer. -
Download the latest
Track2Gather.jar
from here. -
Copy the file to the folder you want to use as the home folder for your Track2Gather.
-
To start the app, double-click the file or enter
java -jar Track2Gather.jar
into the terminal in the home folder. -
The 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.
Here is an overview of the commands you can try:-
add
: Adds a person to the persons list. -
delete
: Deletes person(s) at the specified index(s). -
list
: Shows a list of all persons. -
edit
: Edits the details of a person at the specified index. -
tshift
: Shifts all persons’ SHN end dates by the specified number of days. -
clear
: Deletes all persons with SHN periods that are completed at time of command call. -
find
: Finds person(s) by certain fields. -
sort
: Sorts all persons in the persons list by certain fields. -
session
: Starts a new SHN enforcement session with all persons set to ‘not called’. -
schedule
: Shows a list of all persons who have not been called in the current SHN enforcement session. -
scall
: Updates a person as successfully called in the current SHN enforcement session. -
fcall
: Updates that a failed call was made to a person in the current SHN enforcement session. -
help
: Shows a message explaining how to access the help page. -
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. infind n/NAME
,NAME
is a parameter which can be used asfind n/John Doe
. -
Items in square brackets are optional.
e.gn/NAME [wa/WORK_ADDRESS]
can be used asn/John Doe wa/Home
or asn/John Doe
. -
Parameters can be in any order.
e.g. if the command specifiesn/NAME p/PHONE_NUMBER
,p/PHONE_NUMBER n/NAME
is also acceptable. -
If a parameter is expected only once in the command but you specified it multiple times, only the last occurrence of the parameter will be taken.
e.g. if you specifyp/12341234 p/56785678
, onlyp/56785678
will be taken. -
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
.
Format for person details
Field | Format |
---|---|
NAME |
Names should only contain alphanumeric characters separated by spaces, and it should not be blank. |
PHONE_NUMBER |
Phone numbers should be positive integers with no leading zeros, and should be 3 to 11 digits long. |
EMAIL |
Emails should be of the format local-part@domain. The local-part should only contain alphanumeric characters and these special characters: (+_.-), excluding the parentheses. The local-part may not start or end with any special characters. This is followed by a ‘@’ and then a domain name. The domain name is made up of domain labels separated by periods. The domain name must end with a domain label at least 2 characters long, have each domain label start and end with alphanumeric characters and must have each domain label consist of alphanumeric characters, separated only by hyphens, if any. |
CASE_NUMBER |
Case numbers should be positive integers with no leading zeros, and should be between 1 to 6 digits long. Note that case numbers are displayed in a fixed format of 6 digits, padded with zeros on the left, if needed. |
HOME_ADDRESS |
Addresses can be any non-empty string of characters. |
WORK_ADDRESS |
Addresses can be any non-empty string of characters. |
QUARANTINE_ADDRESS |
Addresses can be any non-empty string of characters. |
SHN_PERIOD |
SHN periods should comprise of two dates in the ISO-8601 format (i.e. yyyy-MM-dd), separated by a space. The start date should be keyed before the end date, and must occur earlier than the end date by at least 1 day. |
NEXT_OF_KIN_NAME |
Names should only contain alphanumeric characters and spaces, and should not be blank. |
NEXT_OF_KIN_PHONE |
Phone numbers should be positive integers with no leading zeros, and should be 3 to 11 digits long. |
NEXT_OF_KIN_ADDRESS |
Addresses can be any non-empty string of characters. |
Adding a person: add
Adds a person to the persons list for tracking.
Format: add n/NAME p/PHONE_NUMBER e/EMAIL cn/CASE_NUMBER ha/HOME_ADDRESS [wa/WORK_ADDRESS] [qa/QUARANTINE_ADDRESS] [sh/SHN_PERIOD] [kn/NEXT_OF_KIN_NAME] [kp/NEXT_OF_KIN_PHONE] [ka/NEXT_OF_KIN_ADDRESS]
- There cannot be multiple persons with the same case number.
Examples:
add n/Alex p/98765432 e/alex@email.com cn/200 ha/123 Orchard Road #01-100 800123
add n/Ben e/ben@email.com p/98765432 cn/100 ha/123 Tampines Road #01-100 800123
add n/Charlie p/12345678 e/charlie@email.com cn/2103 ha/123 Changi Road #01-100 700123 wa/50 Jurong Road 120050 qa/12 Harbourfront Ring 123012 sh/2021-01-01 2021-01-14 kn/Peter kp/90011234 ka/73 Yishun Drive #10-301 310073
Editing a person : edit
Edits the details of the person identified by the index number used in the displayed persons list. Existing values will be overwritten by the input values.
Format: edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [cn/CASE_NUMBER] [ha/HOME_ADDRESS] [wa/WORK_ADDRESS] [qa/QUARANTINE_ADDRESS] [sh/SHN_PERIOD] [kn/NEXT_OF_KIN_NAME] [kp/NEXT_OF_KIN_PHONE] [ka/NEXT_OF_KIN_ADDRESS]
- Edits the person at the specified
INDEX
. - The index must be a positive integer (e.g. 1, 2, 3, ..).
- The index must not exceed the total number of persons in the persons list.
- There cannot be multiple persons with the same case number.
- At least one field to edit must be provided.
- Editing a field that was previously blank will add the field to the person with the given input.
Examples:
-
edit 1 n/Henry Hugh
edits the name of the first person in the list to beHenry Hugh
. -
edit 2 qa/123 Apple Street
edits the quarantine address of the second person in the list to be123 Apple Street
. -
edit 3 n/Charlie p/12345678 e/charlie@email.com cn/2103
edits the name, phone number, email and case number of the third person in the list to beCharlie
,12345678
,charlie@email.com
and2103
respectively.
Finding persons by a field: find
Finds person(s) based on the field specified by the user.
Format: find [n/NAME] [p/PHONE_NUMBER] [cn/CASE_NUMBER] [sh/start:SHN_START_DATE] [sh/end:SHN_END_DATE]
- You can search by only one field at a time.
- For each field, multiple keywords can be provided.
- Keywords are separated by spaces.
- The order of the keywords does not matter.
- Persons matching at least one keyword will be returned (i.e.
OR
search).
Example:Hans Bo
will be interpreted as two separate keywords,Hans
andBo
, and thus returnHans Gruber
,Bo Yang
.
- Field must be one of the following:
Field (FIELD_PREFIX ) |
Description |
---|---|
Name (n/ ) |
|
Phone number (p/ ) |
|
Case number (cn/ ) |
|
SHN start date (sh/start: ) |
|
SHN end date (sh/end: ) |
|
Examples:
-
find n/John
will match the following names:john
andJohn Doe
. -
find n/alex david
will match the following names:Alex Yeoh
andDavid Li
. -
find p/123
will match the following phone numbers:12345678
and12387654
. -
find p/123 234
will match the following phone numbers:12345678
,23456778
and12387654
. -
find cn/1
will only match the following case number:1
. -
find sh/start:2021-01-01
will only match the following SHN start date:2021-01-01
. -
find sh/end:2021-01-02
will only match the following SHN end date:2021-01-02
.
Shifting SHN End Dates: tshift
Shifts all persons’ SHN end dates by the specified number of days.
Format: tshift [PLUS_MINUS_SIGN]DAYS
-
DAYS
should be a number between1
and90
inclusive. - The shift will only be applied to the persons which are currently displayed in the UI.
- Postpones the SHN end date if the evaluated value is positive.
- Brings forward the SHN end date if the evaluated value is negative.
- The SHN end dates will only be brought forward up to and including a day after the person’s SHN start date.
Examples:
-
tshift 3
postpones all SHN end dates by 3 days. This is identical totshift +3
. -
tshift -3
brings forward all SHN end dates by up to 3 days.
Deleting a person : delete
Deletes the person(s) identified by the specified index number(s) used in the displayed persons list.
Format: delete INDEX [MORE_INDICES]
- Deletes the person(s) at the specified
INDEX
(s). - The index(s) must be a positive integer (e.g. 1, 2, 3, ..).
- The index(s) must not exceed the total number of persons in the contacts list
- The index(s) can be given in any order (e.g.
delete 1 4 5
,delete 5 1 4
). - Repeated indices will be ignored i.e.
delete 1 1 2 2
will be interpreted asdelete 1 2
.
Examples:
-
sort n/
followed bydelete 2
deletes the 2nd person in the persons list when sorted by name. -
sort cn/
followed bydelete 1 4 5
deletes the 1st, 4th and 5th persons in the persons list when sorted by case number. -
find n/Betsy
followed bydelete 1
deletes the 1st person in the results of thefind
command.
Listing all persons : list
Shows a list of all persons.
Format: list
Sorting all persons : sort
Sorts the persons list based on the field specified by the user.
Format: sort [n/DIRECTION] [cn/DIRECTION] [sh/start:DIRECTION] [sh/end:DIRECTION]
-
DIRECTION
can either beasc
ordsc
. - Direction
asc
indicates ascending sort order anddsc
indicates descending sort order. - Sorts the persons list from the first to the last specified field prefix.
- At least one field prefix must be provided.
- Letter case is ignored when sorting by name.
- Specifying the sort direction is optional.
- By default, field prefixes are sorted in ascending order.
Examples:
-
sort n/
sorts the persons list by name (in ascending order by default). -
sort sh/end:dsc
sorts the persons list by end date of SHN period in descending order. -
sort sh/start: cn/asc
sorts the persons list by start date of SHN period (in ascending order by default), then by case number in ascending order.
Clearing all persons : clear
Deletes all persons with SHN periods that are completed at the time of command call.
Format: clear
- Note that SHN periods with end dates that fall on the current day will not be cleared.
SHN enforcement mode
SHN enforcement mode contains a special group of features that enables users to track the call statuses of persons in Track2Gather. The purpose of this mode is to facilitate the calling of persons to enforce their SHN.
The intended use of this mode is to:
- create a new calling session (henceforth referred to as ‘SHN enforcement session’).
- mark successful/failed attempts to contact each person in order to check on their well-being throughout their SHN.
In SHN enforcement mode, all people who have been called for the current SHN enforcement session will be filtered out of the schedule and hidden from the display.
There are 4 features relevant to this mode: session
, schedule
, scall
, and fcall
.
-
session
andschedule
activate SHN enforcement mode. -
scall
andfcall
are intended to work best in SHN enforcement mode, but can be used outside of enforcement mode.
How the information is reflected on the display
Under Call Status
for each person, there are two components:
- Call status indicator
- Represents whether a person has been called in the current SHN enforcement session.
- Displayed as
Called:
followed by a red cross or green tick. - Red cross indicates that a person has not been called for the current SHN enforcement session.
- Green tick indicates that a person has been called for the current SHN enforcement session, regardless of whether the call was successful.
- Non-compliance counter
- Represents the number of failed attempts that have been made to call the person.
- Displayed as
Failed: X time(s)
where X is the number of failed call attempts. - The number of failed call attempts recorded is cumulative over the entire period of Track2Gather usage. It does not reset to zero when a new SHN enforcement session is created.
Important notes
-
add
,edit
,find
,clear
andlist
commands deactivate enforcement mode. - At any point in time, there is only 1 ongoing SHN enforcement session.
- Previous sessions cannot be accessed.
Starting a new SHN enforcement session : session
Starts a new SHN enforcement session by resetting the call status indicators of all persons to ‘not called’.
Format: session
- Displays the full list of persons, in which the call status indicator for all persons will display a red cross.
- Activates SHN enforcement mode.
Showing the current SHN enforcement session : schedule
Displays a filtered list of all persons who have not been called in the current SHN enforcement session.
Format: schedule
- Displays the list of persons who have not been called in the current SHN enforcement session i.e. those whose call status indicators are red crosses.
- Activates SHN enforcement mode.
Example:
-
session
, followed bylist
will deactivate enforcement mode. Callingschedule
afterwards will return the user to enforcement mode in the current enforcement session.
Updating a person as successfully called : scall
Updates a person as successfully called in the current SHN enforcement session.
Format: scall INDEX
- Updates the person at the specified
INDEX
as called. - The index must be a positive integer (e.g. 1, 2, 3, ..).
- The index must not exceed the total number of persons in the contacts list.
- If Track2Gather is in enforcement mode, the person at the specified index will be removed from the schedule and thus the display.
- Note that the person at the specified index will have its call status indicator changed to a green tick.
- If Track2Gather is not in enforcement mode, the person at the specified index will have its call status indicator changed to a green tick.
Example when Track2Gather is not in SHN enforcement mode:
-
scall 1
updates the first person in the list by changing the person’s call status indicator to a green tick.
Example when Track2Gather is in SHN enforcement mode:
-
scall 1
removes the first person in the list from the schedule and thus the display.- Note that the first person’s call status indicator is also updated (as in the above example), except the person can now only be viewed outside SHN enforcement mode.
Updating a person as unsuccessfully called : fcall
Updates that a failed call was made to a person in the current SHN enforcement session.
Format: fcall INDEX
- Updates the person at the specified
INDEX
as called, and increments the person’s non-compliance counter by 1. - The index must be a positive integer (e.g. 1, 2, 3, ..).
- The index must not exceed the total number of persons in the contacts list.
- If Track2Gather is in SHN enforcement mode, the person at the specified index will be removed from the schedule and thus the display.
- Note that the person at the specified index will have its call status indicator changed to a green tick and its non-compliance counter incremented by 1.
- If Track2Gather is not in SHN enforcement mode, the person at the specified index will have its call status indicator changed to a green tick, and non-compliance counter incremented by 1.
Example when Track2Gather is not in SHN enforcement mode:
-
fcall 1
updates the first person in the list by:- changing the person’s call status indicator to a green tick.
- incrementing the person’s non-compliance counter by 1.
Example when Track2Gather is in SHN enforcement mode:
-
fcall 1
removes the first person in the list from the schedule and thus the display.- Note that the first person’s call status indicator and non-compliance counter are also updated (as in the above example), except the person can now only be viewed outside SHN enforcement mode.
Viewing help : help
Shows a message explaining how to access the help page.
Format: help
Exiting the program : exit
Exits the program.
Format: exit
Saving the data
Track2Gather data is saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
Editing the data file
Track2Gather data are saved as JSON files [JAR file location]/data/track2gather.json
. Advanced users are welcome to update data directly by editing that data file.
Command Summary
Action | Format, Examples |
---|---|
Add |
add n/NAME p/PHONE_NUMBER e/EMAIL cn/CASE_NUMBER ha/HOME_ADDRESS [wa/WORK_ADDRESS] [qa/QUARANTINE_ADDRESS] [sh/SHN_PERIOD] [kn/NEXT_OF_KIN_NAME] [kp/NEXT_OF_KIN_PHONE] [ka/NEXT_OF_KIN_ADDRESS] e.g. add n/Charlie p/12345678 e/charlie@email.com cn/2103 ha/123 Changi Road #01-100 700123 wa/50 Jurong Road 120050 qa/12 Harbourfront Ring 123012 sh/2021-01-01 2021-01-14 kn/Peter kp/90011234 ka/73 Yishun Drive #10-301 310073
|
Delete |
delete INDEX [MORE_INDICES] e.g. delete 3 delete 1 4
|
List | list |
Edit |
edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [cn/CASE_NUMBER] [ha/HOME_ADDRESS] [wa/WORK_ADDRESS] [qa/QUARANTINE_ADDRESS] [sh/SHN_PERIOD] [kn/NEXT_OF_KIN_NAME] [kp/NEXT_OF_KIN_PHONE] [ka/NEXT_OF_KIN_ADDRESS] e.g. edit 1 n/Henry Hugh edit 2 kn/John Doe edit 3 n/Charlie p/12345678 e/charlie@email.com cn/2103
|
TShift |
tshift [PLUS_MINUS_SIGN]DAYS e.g. tshift 3
|
Clear | clear |
Find |
find [n/NAME] [p/PHONE_NUMBER] [cn/CASE_NUMBER] [sh/start:SHN_START_DATE] [sh/end:SHN_END_DATE] e.g. find n/James Jake find p/123 find cn/111 find sh/start:2000-01-01 find sh/end: 2000-01-02
|
Sort |
sort [n/DIRECTION] [cn/DIRECTION] [sh/start:DIRECTION] [sh/end:DIRECTION] e.g. sort n/ sort sort/end:dsc sort sh/start: cn/asc
|
Session | session |
Schedule | schedule |
SCall |
scall INDEX e.g. scall 3
|
FCall |
fcall INDEX e.g. fcall 3
|
Help | help |
Exit | exit |