User Guide
idENTify is a desktop app made for Ear, Nose and Throat (ENT) administrative staff to manage patients’ contact details and appointments, optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, idENTify can get your patients/appointments’ management tasks done faster than traditional GUI apps.
- Glossary
- Icons
- Quick Start
- UI Components
-
Features
- Important Commands
- Add/Remove entries
- Modify existing entries
-
Organisation
- Listing all patients/appointments :
list
- Grouping patients :
group patients
- Grouping appointments :
group appts
- Ungrouping patients/ appointments :
ungroup
- Hiding patients by name or tag:
hide patients
- Unhiding patients by name or tag:
unhide patients
- Hiding appointments by reason, tag, or marked status:
hide appts
- Unhiding appointments by reason, tag or status:
unhide appts
- Find results that satisfy a certain criteria:
find
- Listing all patients/appointments :
- Others
- Command summary
Glossary
There are a few technical terms that will appear in this user guide. This table might be useful for you to understand more about what those terms mean.
Term | Meaning |
---|---|
ENT | Stands for Ear, Nose and Throat. ENT departments of a hospital therefore handle patients whom require medical attention for issues pertaining to ear, nose or throat. |
UI | Stands for User Interface, it is the space where users interact with an application or website. In this case, the window that appears when idENTify is launched is the UI and the user can interact with the application by entering commands. |
GUI | Stands for Graphical User Interface. It is a type of user interface through which users interact with electronic devices via visual indicator representations. |
Command Line Interface | A command-line interface (CLI) is a text-based user interface (UI) used to run programs, manage computer files and interact with the computer. |
OS | Stands for Operating System, it is the low-level software that supports a computer’s basic functions, common ones include Windows, macOS, Linux. |
Parameters | A parameter is a kind of variable that is used to pass information or data between functions or procedures in a computer. For example, adding a patient into idENTify requires the name of the patient, and the name is a parameter. |
Alphanumeric | Text that consists only of letters and numbers. For example, abc12 is alphanumeric, but (O_O) is not. |
Recurring | Something that occurs repeatedly or periodically. For example, an appointment that repeats every 7 days is considered recurring. |
Sort | A process that involves arranging the data into some meaningful order to make it easier to understand, analyze or visualize. For example, sorting patients by name would arrange all patients alphabetically by name. |
Case-sensitive | Difference between upper-case and lower-case letters matters. Therefore, not case-sensitive or case-insensitive means capital and lower-case letters are treated as the same. |
Command | An instruction typed into a computer for it to carry out. For example, add n/John p/12345678 . |
Integer | A whole number. For example, 1 , 2 or 3 are integers, but 1.99 or 2.3 are not. |
Icons
You will see these icons along the way as you are reading the User Guide. Refer to the table below to know what each of them means.
Icon | Meaning |
---|---|
Background information | |
Helpful/bonus information to use idENTify more effectively | |
Cautionary information to prevent errors or unintended results |
Quick Start
- Ensure you have Java
11
or above installed in your Computer. The installation link for Java11
can be found here. Choose the version meant for your computer’s OS. - Download the latest
idENTify.jar
from here. - Copy the file to the folder you want to use as the home folder for your idENTify.
- Double-click the file to start the app. The GUI similar to the one below should appear in a few seconds. Note how the app contains some sample data.
UI Components
- The UI is available in light mode (by default, shown above) or dark mode.
General UI information
Component | Purpose |
---|---|
Tool Box | Allows you to exit idENTify, change the theme of the UI or view help |
Command Box | Location to enter commands |
Results Display | Displays the result after a command is entered |
Patient List | Displays patients |
Appointment List | Displays appointments |
Patient Card | Displays detailed information about a patient |
Appointment Card | Displays detailed information about an appointment |
Save Location | Displays the location where your idENTify data is stored |
Patient Card
- Upcoming appointments shows the total amount of unmarked appointments of the given patient.
Appointment Card
- The status of an appointment is
[]
when uncompleted, and[X]
when completed. - More information about recurrence duration can be found below.
Features
Notes about the command format:
-
Words in
UPPER_CASE
are the parameters to be supplied by the user.
e.g. Inadd n/NAME
,NAME
is a parameter which can be used asadd n/John Doe
. -
Items in square brackets are optional.
e.g.n/NAME [t/TAG]
can be used asn/John Doe t/nose
or asn/John Doe
. -
Items with
…
after them can be used multiple times including zero times.
e.g.[t/TAG]…
can be used ast/ear
,t/nose t/throat
etc. -
Parameters can be in any order.
-
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 (e.g.
help
,exit
andclear
) will be ignored.
e.g. If the command specifieshelp 123
, it will be interpreted ashelp
.
Notes about common command parameters:
-
NAME
- Can only accept alphanumeric characters i.e. “a, b, c…” & “1, 2, 3…”
-
TAG
- Patients and appointments can have up to 3 different tags.
-
Must only be from the following:
ear
,nose
,throat
(not case-sensitive).
e.g.t/sick
will cause an error message.
-
PHONE_NUMBER
- Must only contain integers, and it should be at least 3 digits long.
-
EMAIL
- Format:
local-part@domain-name
-
local-part
must:- Contain alphanumeric characters or these special characters:
+
,_
,.
,-
. - Does not start or end with any special characters.
- Contain alphanumeric characters or these special characters:
-
domain-name
must:- Be at least 2 characters long.
- Begin and end with alphanumeric characters.
- Format:
-
REASON
- Must not be empty.
-
DATE
-
Must input in a YYYY-MM-DD HH:MM format or HH:MM YYYY-MM-DD format
e.g.2022-12-10 14:00
or14:00 2022-12-10
.
-
Must input in a YYYY-MM-DD HH:MM format or HH:MM YYYY-MM-DD format
-
TIME_PERIOD
- Must input at least a Y M or D value to be recurring. Values must be inserted in the order Y -> M -> D.
-
Must be in the range of 0-10Y, 0-12M or 0-31D to be considered as valid.
e.g.1Y3D
,2M
.
Important Commands
Viewing help : help
Shows a message explaining how to access the help page.
Format: help
Add/Remove entries
Adding a patient: add
Adds a patient into idENTify.
Format: add n/NAME p/PHONE_NUMBER [a/ADDRESS] [e/EMAIL] [t/TAG]…
Note:
- A patient can have up to 3 different tags.
- We allow duplicate names for patients, but distinct patients with the same names must have different phone numbers in order to identify them. So you cannot add a patient who has both the same name and phone number as some existing patient.
Examples:
add n/John Doe p/98765432 a/John street, block 123, #01-01
add n/Betsy Crowe p/88888888 a/Newgate Prison t/ear
Deleting a patient : delete
Deletes a patient or a range of patients from idENTify.
Format: delete INDEX [END_INDEX]
- Deletes the patient at the specified
INDEX
. - The index refers to the index number shown in the displayed patient list.
- The index must be a positive integer 1, 2, 3, …
Examples:
-
list patients
followed bydelete 2
deletes the 2nd patient in idENTify. -
delete 1 3
deletes the first 3 patients (index 1 to 3 inclusive) in idENTify. -
find n/Betsy
followed bydelete 1
deletes the 1st patient in the results of thefind
command.
Book an appointment: book
Books an appointment for the specified patient at INDEX
in the patient list.
Inputting a time period allows the appointment to be recurring: Automatically books a new appointment in the future as given by the time period when the current appointment is marked as completed.
Appointments added are sorted according to their date.
Format: book INDEX r/REASON d/DATE [pe/TIME_PERIOD] [t/TAG]…
Note: An appointment can have up to 3 different tags.
- The index refers to the index number shown in the displayed patient list.
- The index must be a positive integer 1, 2, 3, …
- Default time period is set to 0Y0M0D if no time period is inputted.
Examples:
-
book 2 r/Ear Infection d/2022-12-31 18:00
Books an appointment that is non-recurring as no time period is inputted. -
book 2 r/Ear Infection d/16:30 2022-12-31 pe/1M2D
Books an appointment that is recurring every 1 month 2days. -
book 2 r/Ear Infection d/2022-12-31 13:00 pe/1Y
Books an appointment that is recurring every year.
Cancel an appointment: cancel
Cancels (removes) a specified appointment in the appointment list.
Format: cancel APPOINTMENT_INDEX
- Deletes the appointment with
APPOINTMENT_INDEX
in the appointment list. - The index refers to the index number shown in the displayed appointment list.
- The index must be a positive integer 1, 2, 3, …
Example:
cancel 1
Clearing all entries : clear
Clears all entries (patients and appointments) from idENTify.
Format: clear
Modify existing entries
Editing a patient : edit patients
Edits an existing patient in idENTify.
Format: edit patients INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…
- Edits the patient at the specified
INDEX
. The index refers to the index number shown in the displayed patient list. The index must be a positive integer 1, 2, 3, … - At least one of the optional parameters must be provided.
- Existing values will be updated to the input values.
Note: We allow duplicate names for patients, but distinct patients with the same names must have different phone numbers in order to identify them. So you cannot edit a patient to have both the same name and phone number as some existing patient.
Tip: You can remove all the patient’s tags by typing t/
without specifying any tags after it.
Examples:
-
edit patients 1 p/91234567 e/johndoe@example.com
Edits the phone number and email address of the 1st patient to be91234567
andjohndoe@example.com
respectively. -
edit patients 2 n/Betsy Crower t/
Edits the name of the 2nd patient to beBetsy Crower
and clears all existing tags.
Here is a visual example of editing a patient by name.
Before edit name: (Initial name is “Alex Yeoh”)
After edit name: (Patient and appointment list updated with the new name)
Editing an appointment: edit appts
Edits an existing patient’s appointment in idENTify.
Format: edit appts INDEX [r/REASON] [d/DATE] [pe/TIME_PERIOD] [t/TAG]…
- Edits the appointment at the specified
INDEX
. The index refers to the index number shown in the displayed appointment list. The index must be a positive integer 1, 2, 3, … - At least one of the optional parameters must be provided.
- Existing values will be updated to the input values.
Tip:
- You can remove all the appointment’s tags by typing
t/
without specifying any tags after it. - You can set the appointment to be non-recurring by typing
pe/
without specifying any values after it.
Examples:
-
edit appts 1 r/Cough d/2022-12-10 16:30
Edits the reason and date of the first appointment to beCough
and2022-12-10 16:30
respectively. Existing time period and tags will not be edited. -
edit appts 1 pe/1Y2M
Edits the time period of the first appointment to be recurring every 1 year 2 months. Existing reason, date and tags will not be edited. -
edit appts 2 pe/ t/
Edits the second appointment to be non-recurring and clears all existing tags. Existing reason and date will not be edited.
Mark an appointment as completed: mark
Marks a specified appointment in the appointment list as completed.
If the specified appointment was set to be recurring, automatically books a new appointment in the future as given by the recurring time period of the appointment.
Format: mark APPOINTMENT_INDEX
-
APPOINTMENT_INDEX
refers to the index number of the appointment to be marked, as shown in the appointment list. -
APPOINTMENT_INDEX
must be a positive integer 1, 2, 3, …
Visual example of marking a recurring appointment, using mark 1
:
Before mark 1
:
After mark 1
:
Unmark an appointment as incomplete: unmark
Unmarks a specified appointment in the appointment list as incomplete.
Format: unmark APPOINTMENT_INDEX
-
APPOINTMENT_INDEX
refers to the index number of the appointment to be unmarked, as shown in the appointment list. -
APPOINTMENT_INDEX
must be a positive integer 1, 2, 3, …
Example:
unmark 1
Organisation
By default,
- Patients will be sorted by their names first; if there are people with the same name, they will be sorted by their phone numbers.
- Appointments will be sorted by their dates first; if there are multiple appointments with the same date, they will be sorted by their attached patients’ information.
However, with the commands in this section, you will be able to modify how entries in idENTify are presented.
Listing all patients/appointments : list
Shows a list of all patients or appointments, depending on the parameter given.
Entries previously hidden by the hide
command will be unhidden as well.
Format:
-
list patients
- Refreshes only the patient list to show all patients, leaving the appointment list unchanged. -
list appts
- Refreshes only the appointment list to show all appointments, leaving the patient list unchanged. -
list all
- Refreshes both the patient and appointment lists to show all patients and appointments.
Grouping patients : group patients
Groups up patients that share the same tag(s). Patients in the same tag group will be sorted automatically by their names in ascending order.
Format: group patients
For example:
- Patients with no tags will be in the same group.
- Patients with only
ear
tag will be in the same group. - Patients with both
ear
andnose
tags will be in the same group.
Visual example of hiding appointments by marked (completed) status:
Before group: (Initially patients are sorted by their names)
After group: (Patients sharing the same tags are now grouped together)
Grouping appointments : group appts
Groups up appointments that share a similar criteria.
For example, after grouping appointments with same tags:
- Appointments with no tags will be in the same group.
- Appointments with only
ear
tag will be in the same group. - Appointments with both
ear
andnose
tags will be in the same group.
Appointments in the same group will be sorted automatically by their date and time in ascending order.
Format: group appts k/KEY
Examples:
group appts k/tag
group appts k/patient
-
group appts k/mark
Tip: tag
can be shortened to t
, patient
can be shortened to p
, mark
can be shortened to m
Ungrouping patients/ appointments : ungroup
Ungroups the list of patients or appointments.
Patient entries will return to being sorted by name in alphabetical order.
Appointment entries will return to being sorted by date and time.
Format:
ungroup patients
ungroup appts
Hiding patients by name or tag: hide patients
Hides patients by the condition specified.
Hiding a patient will also hide their appointments, thus the resulting appointment list contains only appointments of remaining patients after hide patients
.
By name: Filters out (hides) patients whose name contain any of the given keywords.
Format: hide patients n/NAME [n/MORE_NAMES]...
Examples:
-
hide patients n/John
hidesjohn
andJohn Doe
-
hide patients n/alex n/david
hidesAlex Yeoh
,David Li
By tag: Hides patients that contain any of the given tags.
Format: hide patients t/TAG [t/MORE_TAGS]...
- The search is NOT case-sensitive. e.g.
t/EAR
has the same effect ast/ear
- All tags of a patient are searched.
Examples:
-
hide patients t/ear t/nose
hides all patients with an ear OR nose tag.
Unhiding patients by name or tag: unhide patients
Unhides patients by the condition specified.
Unhiding a patient will also unhide their appointments, thus the resulting appointment list will also contain appointments of unhidden patients after unhide patients
.
By name: Shows (unhides) patients that were previously hidden whose name contain any of the given keywords.
Format: unhide patients n/NAME [n/MORE_NAMES]...
Examples:
-
unhide patients n/John
unhidesjohn
andJohn Doe
-
unhide patients n/alex n/david
unhidesAlex Yeoh
,David Li
By tag:
Unhides patients that were previously hidden that contain any of the given tags.
Format: unhide patients t/TAG [t/MORE_TAGS]...
-
The search is NOT case-sensitive. e.g
t/EAR
has the same effect ast/ear
-
All tags of a patient are searched.
Examples:
-
unhide patients t/nose t/ear
unhides all patients with a nose OR ear tag.
Hiding appointments by reason, tag, or marked status: hide appts
Hides appointments by the condition specified.
The search for reason, tag, and status is NOT case-sensitive. e.g t/EAR
has same effect as t/ear
Hiding appointments will not change the patient list.
By reason: Hides appointments that contain at least 1 of the given keywords in the reason of appointment.
Format: hide appts r/REASON [r/MORE_REASONS]...
Examples:
-
hide appts r/nose
hides all appointments with “nose” in the reason. -
hide appts r/pain r/issue
hides all appointments with “pain” or “issue” in the reason.
By tag:
Hides appointments which contain any of the given tags.
Format: hide appts t/TAG [t/MORE_TAGS]...
- All tags of an appointment are searched.
Examples:
-
hide appts t/ear t/nose
hides all appointments with a ear OR nose tag.
By marked/unmarked status:
Hides appointments which are marked/unmarked.
Format: hide appts s/STATUS
Tip: marked
status can be shortened to m
, unmarked
can be shortened to um
.
Examples:
-
hide appts s/marked
hides all marked appointments. -
hide appts s/um
hides all unmarked appointments.
Visual example of hiding appointments by marked (completed) status:
Before hide: (Initially with marked appointments)
After hide: (Appointments that are marked are now hidden)
Unhiding appointments by reason, tag or status: unhide appts
Unhides appointments by the condition specified.
Unhiding appointments will not change the patient list.
By reason:
Unhides hidden appointments that contains REASON
(OR MORE_REASONS
).
Format: unhide appts r/REASON [r/MORE_REASONS]...
- The reasons are NOT case-sensitive. e.g.
r/PAIN
has the same effect asr/pain
Examples:
-
unhide appts r/pain
unhides all hidden appointments with “pain” as part of the reason. -
unhide appts r/pain r/problem
unhides all hidden appointments with “pain” or “problem” as part of the reason.
By tag:
Unhides hidden appointments that contains TAG
(OR MORE_TAGS
).
Format: unhide appts t/TAG [t/MORE_TAGS]...
- The search is NOT case-sensitive. e.g
t/EAR
has the same effect ast/ear
- All tags of an appointment are searched.
Examples:
-
unhide appts t/nose t/ear
unhides all appointments with a nose OR ear tag.
By marked/unmarked status:
Unhides hidden appointments which are marked or unmarked.
Format: unhide appts s/STATUS
Tip: marked
status can be shortened to m
, unmarked
can be shortened to um
.
- The status is NOT case-sensitive. e.g.
MARKed
will work in the same way asmarked
.
Examples:
-
unhide appts s/marked
unhides all marked appointments. -
unhide appts s/um
unhides all unmarked appointments.
Find results that satisfy a certain criteria: find
Finds patients and appointments that matches all the given parameters specified.
Format: find [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/PATIENT_TAG]… [r/REASON] [ds/DATE_START] [de/DATE_END] [ta/APPOINTMENT_TAG]…
- At least 1 of the optional parameters must be provided.
- The search is NOT case-sensitive. e.g
n/hans
has same effect asn/Hans
- Only relevant patients and appointments that satisfies all parameters will be displayed.
- View the
find r/Checkup
example below for a visual explanation.
- View the
- Additional details on each parameter are listed in the tables below.
Patient Related Parameters | Additional Notes |
---|---|
[n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] |
Partial match required. e.g. Searching John Do matches John Doe
|
[t/PATIENT_TAG]… | Finds patients with all the inputted tag(s). Full match for each tag required. e.g. Only Ear matches Ear . Ea does not match Ear . |
Appointment Related Parameters | Additional Notes |
---|---|
[r/REASON] | Partial match required. |
[ds/DATE_START] | Finds appointments occurring at or after the inputted date. Date must be at or before [de/DATE_END], if present. |
[de/DATE_END] | Finds appointments occurring at or before the inputted date. Date must be at or after [de/DATE_START], if present. |
[ta/APPOINTMENT_TAG]… | Finds appointments with all the inputted appointment tag(s). Full match for each tag required. |
Visual example of finding results by an appointment’s reason, using find r/Checkup
:
Before find r/Checkup
:
After find r/Checkup
:
- Note that only relevant results are displayed.
- The patient
Bernice Yu
is not displayed as she does not have an appointment with a reason containingCheckup
. -
David Li
’s appointment is not displayed as its reason does not containCheckup
.- Consequently,
David Li
does not appear in the patient list, as he is irrelevant to the search.
- Consequently,
- The patient
Other Examples:
-
find n/John p/12345
displays all patients withJohn
in their names and12345
in their phone numbers, as well as all their appointments. -
find ds/2020-01-01 00:00
displays all appointments occurring at or after 1st of January 2020. It will also display all patients with at least one of said appointments. -
find a/Clementi r/Sleep Apena
displays all patients whose address containsClementi
and has at least 1 appointment containingSleep Apena
as its reason. It will also only display appointments containingSleep Apena
of said patients. -
find ta/Throat ta/Nose
displays all appointments with bothThroat
andNose
tags, and all patients with at least one of said appointments.
Others
View History/Cycling of Commands
Shows the most recent 10 commands that was inputted.
Allows cycling through those commands to reduce the need of retyping similar commands fully.
The history is looped, meaning that when you reach the last command, the next cycle will bring it back to the first command.
Tip:
-
Every new valid command will reset the index back to the top of the history.
-
Click ↓ key to get the most recent command immediately and ↑ key to get the last command in the history.
Controls:
- ↑ key on keyboard: Cycle to next command
- ↓ key on keyboard: Cycle to previous command
- Ctrl key on keyboard: Toggle history
Exiting the program : exit
Exits and closes idENTify.
Format: exit
Saving the data
idENTify data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
Editing the data file
idENTify data are saved as a JSON file in [JAR file location]/data/idENTify.json
. Advanced users are welcome to update the data directly by editing the data file.
Command summary
Action | Format, Examples |
---|---|
Help | help |
Add |
add n/NAME p/PHONE_NUMBER [a/ADDRESS] [e/EMAIL] [t/TAG]… e.g. add n/James Ho p/22224444 a/123, Clementi Rd, 1234665
|
Delete |
delete INDEX [END_INDEX] e.g. delete 3
|
Book |
book INDEX r/REASON d/DATE [pe/TIME_PERIOD] [t/TAG]… e.g. book 2 r/Ear Infection d/2022-12-31 18:00 pe/1Y
|
Cancel |
cancel APPOINTMENT_INDEX e.g. cancel 2
|
Clear | clear |
Edit Patient |
edit patients INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]… e.g. edit patients 1 n/Bernice Yu
|
Edit Appointment |
edit appts INDEX [r/REASON] [d/DATE] [pe/TIME_PERIOD] [t/TAG]… e.g. edit appts 1 r/Cough
|
Mark |
mark APPOINTMENT_INDEX e.g. mark 3
|
Unmark |
unmark APPOINTMENT_INDEX e.g. unmark 1
|
List |
list patients list appts list all
|
Group Patients | group patients |
Group Appointments |
group appts k/KEY e.g. group appts k/mark
|
Ungroup |
ungroup patients ungroup appts
|
Hide Patients |
hide patients CONDITION e.g. hide patients t/nose
|
Unhide Patients |
unhide patients CONDITION e.g. unhide patients t/nose
|
Hide Appointments |
hide appts CONDITION e.g. hide appts s/marked
|
Unhide Appointments |
unhide appts CONDITION e.g. unhide appts r/pain
|
Find |
find [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/PATIENT_TAG]… [r/REASON] [ds/DATE_START] [de/DATE_END] [ta/APPOINTMENT_TAG]… e.g. find n/Joshua e/Josh@example.com r/Tinnitus
|
History |
Ctrl key Arrow keys e.g. ↑ key on keyboard |
Exit | exit |