By: Team AY1920S1-CS2103-F10-1 Since: Sep 2019 Licence: MIT

Introduction

NurseTraverse is designed for community nurses who make home visits to their patients. It is a computer app that will allow nurses to keep track of their patients' data, appointments and visits. NurseTraverse is optimized for those who prefer to work with a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). Interested? Jump to the Quick Start to get started. Enjoy!

Quick Start

  1. Ensure you have Java 11 or above installed in your Computer.

  2. Download the latest nurvetraverse.jar here.

  3. Copy the file to the folder you want to use as the home folder for your NurseTraverse app.

  4. Double-click the file to start the app. The GUI should appear in a few seconds.

    NurseTraverse
  5. Type the command in the command box and press Enter to execute it.
    e.g. typing app-help and pressing Enter will open the help window.

  6. Some example commands you can try:

    • pat-list : lists all patients

    • pat-addn/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 : adds a contact named John Doe to NurseTraverse.

    • pat-delete3 : deletes the 3rd contact shown in the current list

    • app-exit : exits the app

  7. Refer to Features (as of v1.4) for details of each command.

Features (as of v1.4)

Command Format

  • Words in UPPER_CASE are the parameters to be supplied by you e.g. in add n/NAME, NAME is a parameter which can be used as add n/John Doe.

  • Parameters are additional pieces of information required/used when running a command.

  • Items in square brackets are optional e.g n/NAME [t/TAG] can be used as n/John Doe t/Diabetic or as n/John Doe.

  • Items that are not in square brackets are required e.g. n/NAME from the pat-add command.

  • Items with ​ after them can be used multiple times including zero times e.g. [t/TAG]…​ can be used as   (i.e. 0 times), t/Diabetic, t/Diabetic t/Fever 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.

  • Due to the number of commands, each command will follow the syntax of ENTITY ACTION [PARAMETERS]. For example, if you wanted to delete a patient, you would do something like pat-delete 3.

1. Miscellaneous

1.1. Viewing help: app-help

Directs you to this page.

Format: app-help

1.2. Exiting the application: app-exit

You can exit the program using app-exit.

Format: app-exit

2. Tabs

This application uses 3 tabs to display its main information: "Patients", "Current Visit" and "Appointments".

  • Click each tab to navigate to that tab.

  • Running a relevant command while on another tab e.g. (pat-list while on the "Current Visit" tab) will not trigger a change in tabs. This feature will only be available in v2.0.

3. Patient Features

Patient Features

As a community nurse, you will often need to visit various patients at their homes. This section describes the features that will allow you to manage the list of patients and their information in the application. This section covers the management of patients and their data.

3.1. Listing All Patients: pat-list

You can see a list of all patients in the app by typing pat-list.

In the list displayed, each patient will have an index number which can then be used for other features that require you to select a patient by index e.g. pat-delete. Take note that a patient will be given the same index regardless of other display commands such as pat-find. However, this index may change if the pat-delete command is executed.

Format: pat-list

3.2. Finding patients by name: pat-find

You can find patients whose names contain any keyword of your choice using pat-find.

Format: pat-find KEYWORD [MORE_KEYWORDS]

  • The search is case insensitive. e.g hans will match Hans

  • The order of the keywords does not matter. e.g. Hans Bo will match Bo Hans

  • Only the name of patients is searched.

  • Only full words will be matched e.g. Han will not match Hans

  • Patients matching at least one keyword will be returned (i.e. OR search). e.g. Hans Bo will return Hans Gruber, Bo Yang

Examples:

  • pat-find John
    Returns patients john and John Doe

  • pat-find Betsy Tim John
    Returns any patient(s) having names Betsy, Tim, or John

3.3. Adding a Patient: pat-add

You can add a patient to the list of all patients by using pat-add.

Format: pat-add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​ [vt/VISIT_TODO]…​

  • A patient can have any number of tags.

  • A patient can have any number of visit todos.

  • The patient cannot have the same identity as an existing patient.

Visit Todos are described in further detail under Section 1, “Visit Tutorials / How-To Guide(s)”.

Examples:

  • pat-add n/John Doe p/98765432 e/john@email.com a/John street, block 123, #01-01

  • pat-add n/Choong Siew Hwang p/91239876 a/22 College Avenue East; Singapore 138608 e/cho0ng@email.com t/Male vt/Check Blood Pressure

  • pat-add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Street p/12345678 t/Female vt/Check fridge for expired food vt/Check for bed sores

Patient identity

A patient is identified by three things: their name, phone number, and email.

Two patient entries are said to have the same identity (and thus refer to the same person) when both of the following conditions are satisfied:

  1. They have the same name (case insensitive).

  2. They have the same phone number or email.

To prevent duplicates, there cannot be two patients with the same identity in the app at the same time.

3.4. Editing a Patient: pat-edit

You can edit an existing patient in the app using pat-edit.

Format: pat-edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]… [vt/VISIT_TODO]…

  • Edits the person at the specified INDEX.

  • The index refers to the index number shown in the list of patients displayed by pat-list or pat-find.

  • 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.

  • 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 person’s tags by typing t/ without specifying any tags after it.

  • When editing visit todos, the existing visit todos of the person will be removed i.e adding of visit todos is not cumulative.

  • You can remove all the person’s visit todos by typing vt/ without specifying any visit todos after it.

  • Editing any of the patient’s fields will accordingly update all appointments associated with the patient in the list of appointments to accommodate for the changes.

Refer to Section 1, “Visit Tutorials / How-To Guide(s)” for more on Visit Todos and Section 4, “Appointments” for more on Appointments.

Examples:

  • pat-list
    pat-edit 1 p/91234567 e/johndoe@example.com
    Edits the phone number and email address of the 1st person in the entire patient’s list to be 91234567 and johndoe@example.com respectively.

  • pat-edit 2 n/Betsy Crower t/
    Edits the name of the 2nd person in the entire patient’s list with Betsy Crower and clears all existing tags.

3.5. Deleting a Patient: pat-delete

You can delete a patient by index using pat-delete.

Format: pat-delete INDEX

  • Deletes the patient at the specified INDEX.

  • The index refers to the index number shown in the list of patients displayed by pat-list or pat-find.

  • The index must be a positive integer 1, 2, 3, …​

  • All patients with an index number higher than the deleted patient will have their indexes decremented by 1. E.g. after deleting index 3, index 4 will become 3, 5 will become 4 and so on.

  • All appointments associated with the patient at the INDEX will also be deleted.

Examples:

  • pat-list
    pat-delete 2
    Deletes the 2nd patient in the patient list.

  • pat-delete 1
    Deletes the patient which had been assigned the index 1.

Warning: If pat-delete is successfully executed, the indexes of remaining patients may change. Please verify the index of the patient you are referencing after executing this command.

3.6. Clear all Patient data: pat-clear

You can clear all Patient data in the app using pat-clear.

Format: pat-clear

4. Appointments

Appointments

As a community nurse, you will often schedule appointments with your patients before visiting them, as well as keep track of these appointments you make with your patients. You can use the application to manage and keep track of these appointments. This section describes the features that will allow you to manage your appointments.

4.1. Listing All Appointments: appt-list

You can see a list of all appointments in the app by typing appt-list.

In the list displayed, each appointment will have an index number which can then be used for other features that require you to select an appointment by index e.g. appt-delete. Take note that an appointment will be given the same index regardless of other display commands such as appt-find.

The appointment list is sorted in increasing order of start date time of the appointments, i.e it shows the earlier scheduled appointments followed by the later ones.

Format: appt-list

4.2. Finding Appointment(s): appt-find

You can find appointments by patient name by typing any keyword of your choice following appt-find.

In the list displayed, each appointment will have an index number which can then be used for other features that require you to select an appointment by index e.g. appt-delete. Take note that an appointment will be given the same index regardless of other display commands such as appt-list or if different parameters are used.

Format: appt-find [PATIENT_NAME]

  • The search is case insensitive. e.g hans will match Hans

  • The order of the keywords does not matter. e.g. Hans Bo will match Bo Hans

  • Only the patient name is searched for in the list of appointments.

  • Partial words will be matched (e.g. John will return John Smith and John Kim if both have appointments in the appointment list).

Examples:

  • appt-find James
    Lists all appointments of that particular patient James

4.3. Adding an Appointment: appt-add

You can add an appointment to the list of all appointments by using appt-add.

Format: appt-add p/PATIENT_INDEX sdt/START_DATE_TIME edt/END_DATE_TIME [desc/DESCRIPTION] [ryr/RECUR_YEARS] [rmon/RECUR_MONTHS] [rweek/RECUR_WEEKS] [rday/RECUR_DAYS] [rhr/RECUR_HOURS] [rmin/RECUR_MINUTES]

  • START_DATE_TIME and END_DATE_TIME expect inputs in the format dd-MM-yyyy HHmm with dd, MM, yyyy, HH, and mm all as numerical numbers (HHmm being in 24-hour time), and the end date time should be equal to or after the start date time. Also, both start and end date times must be past the system’s local date time.

  • RECUR_YEARS, RECUR_MONTHS, RECUR_WEEKS, RECUR_DAYS, RECUR_HOURS, RECUR_MINUTES each must be a positive integer 1, 2, 3, …​

  • An appointment can recur by any amount of each of the frequencies: years, months, weeks, days, hours, and minutes. If you wish for an appointment to only recur by years and months, just typing ryr/[RECUR_YEARS] and `rmon/[RECUR_MONTHS] in any order is sufficient.

  • The appointment added cannot have the same identity as an existing appointment. Its identity is defined by START_DATE_TIME, END_DATE_TIME, patient it is associated with through the PATIENT_INDEX, and the frequency as defined by RECUR_YEARS, RECUR_MONTHS, etc.

  • The appointment added cannot clash in timing with any other existing appointment, i.e. their start and end date times must not overlap in any way.

Examples:

  • appt-add p/1 sdt/24-12-2019 1200 edt/24-12-2019 1400 desc/Medical checkup

  • appt-add p/2 sdt/09-12-2019 1300 edt/09-12-2019 1330 ryr/1 rmon/3

4.4. Editing an Appointment: appt-edit

You can edit an existing appointment in the app using appt-edit.

Format: appt-edit INDEX [sdt/START_DATE_TIME] [edt/END_DATE_TIME] [p/PATIENT_INDEX] [desc/DESCRIPTION] [ryr/RECUR_YEARS] [rmon/RECUR_MONTHS] [rweek/RECUR_WEEKS] [rday/RECUR_DAYS] [rhr/RECUR_HOURS] [rmin/RECUR_MINUTES]

  • Edits the appointment at the specified INDEX.

  • The index refers to the index number shown in the list of appointments displayed by appt-list or appt-find.

  • 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.

  • When editing recurring frequencies (years, months, etc.), the existing frequencies of the appointment will be kept unless overwritten by i.e adding of frequencies is cumulative.

  • You can make the appointment not recurring by setting all the necessary recurring frequencies to 0. For example, if an appointment recurs every year, then specify a 0 frequency as ryr/0 to make the appointment non-recurring.

  • You cannot change individual fields of the patient (i.e. patient name, phone number, etc.) using the appt-edit command. Refer to pat-edit under [Patient] for more on this.

Examples:

  • appt-list
    appt-edit 1 sdt/05-12-2019 1900 edt/05-12-2019 2000
    Edits the start date time and end date time of the 1st person in the entire appointment’s list to be 05-12-2019 1900 and 05-12-2019 2000 respectively.

  • appt-edit 2 p/3 ryr/1
    Edits the second appointment to be associated with the third patient in the patient list. Also edits the appointment to recur by 1 year.

4.5. Deleting an Appointment: appt-delete

You can delete an appointment by index using appt-delete.

Format: appt-delete INDEX

  • Deletes the appointment at the specified INDEX.

  • The index refers to the index number shown in the list of appointments displayed by appt-list or appt-find.

  • The index must be a positive integer 1, 2, 3, …​

  • If the appointment referred to by the INDEX is a recurring appointment, deleting this appointment will automatically recur the appointment (i.e. get the next start and end date time) and add it to the appointment list. If you wish to remove a recurring appointment permanently from the appointment list, refer to [Deleting an Appointment Permanently].

Examples:

Assuming the first appointment in the list is a recurring appointment, and the second is a non-recurring one.

  • appt-delete 2
    Deletes the 2nd appointment in the displayed appointment list.

  • appt-delete 1
    Deletes the 1st appointment in the displayed appointment list. Recurs the appointment and adds the new appointment with the next start and end date time to the appointment list.

4.6. Deleting an Appointment permanently: appt-delete-permanent

You can delete an appointment permanently by index using appt-delete-permanent.

You can use this command on both recurring and non-recurring appointments, but its use is more suited for recurring appointments since appt-delete and appt-delete-permanent work in the same way for non-recurring appointments.

Format: appt-delete-permanent INDEX

  • Deletes the appointment permanently at the specified INDEX.

  • The index refers to the index number shown in the list of appointments displayed by appt-list or appt-find.

  • The index must be a positive integer 1, 2, 3, …​

  • For recurring appointments, unlike in the case of appt-delete, now the recurring appointment referred to by the INDEX is removed from the appointment list permanently and not recurred.

Examples:

Assuming the first appointment in the list is a recurring appointment, and the second is a non-recurring one.

  • appt-list
    appt-delete-permanent 2
    Deletes the 2nd appointment in the displayed appointment list permanently.

  • appt-delete-permanent 1
    Deletes the 1st appointment in the displayed appointment list permanently.

4.7. Deleting Multiple Appointments: appt-delete [coming in V2.0]

You can delete multiple appointments by indexes using appt-delete.

Format: appt-delete INDEX_1 [INDEX_2] [INDEX_3]…​

  • Deletes appointments at the specified INDEX es. You can put in as many indices to delete as many appointments as you wish.

  • The index refers to the index number shown in the list of appointments displayed by appt-list or appt-find.

  • The index must be a positive integer 1, 2, 3, …​

  • If any of the appointments referred to by the INDEX es is a recurring appointment, deleting this appointment will automatically recur the appointment (i.e. get the next start and end date time) and add it to the appointment list. If you wish to remove one or more recurring appointments permanently from the appointment list, refer to [Deleting Multiple Appointments Permanently].

Assuming the first appointment in the list is a recurring appointment, and the second is a non-recurring one.

Examples:

  • appt-delete 2
    Deletes the 2nd appointment in the appointment list.

  • appt-delete 1 2
    Deletes the 1st and 2nd appointment in the appointment list. Recurs the 1st appointment and adds the new appointment with the next start and end date time to the appointment list.

4.8. Deleting Multiple Appointments Permanently: appt-delete-permanent [coming in V2.0]

You can delete an appointment by indexes using appt-delete-permanent.

You can use this command on both recurring and non-recurring appointments, but its use is more suited for recurring appointments since appt-delete and appt-delete-permanent work in the same way for non-recurring appointments.

Format: appt-delete-permanent INDEX_1 [INDEX_2] [INDEX_3]…​

  • Deletes the appointments permanently at the specified INDEX es. You can put in as many indices to delete as many appointments as you wish.

  • The index refers to the index number shown in the list of appointments displayed by appt-list or appt-find.

  • The index must be a positive integer 1, 2, 3, …​

  • For recurring appointments, unlike in the case of appt-delete, now any recurring appointment specified by any of the INDEX es is removed from the appointment list permanently and not recurred.

Examples:

Assuming the first appointment in the list is a recurring appointment, and the second is a non-recurring one.

  • appt-list
    appt-delete-permanent 2
    Deletes the 2nd appointment in the appointment list permanently.

  • appt-delete-permanent 1 2
    Deletes the 1st and 2nd appointments in the appointment list permanently.

4.9. Displaying Finished Appointments [coming in V2.0]

This is an intended additional UI and Storage feature.

Along with all the appointments that currently are in the appointment list, appointments that finished (were in the appointment list the previous time the app was run but are now before the system date and time and so removed from the appointment list) are displayed in a separate tab and also saved to another json file time the app is closed.

4.10. Listing All Finished Appointments appt-finished-list [coming in V2.0]

You can see a list of all finished appointments in the app by typing appt-finished-list.

In the list displayed, each finished appointment will have an index number which can then be used for other features that require you to select a finished appointment by index e.g. appt-finished-delete. Take note that a finished appointment will be given the same index regardless of other display commands such as appt-finished-find.

The finished appointment list is sorted in increasing order of start date time of the appointments, i.e it shows the earlier appointments followed by the later ones.

Format: appt-finished-list

4.11. Finding Finished Appointment(s): appt-finished-find

You can find finished appointments by patient name by typing any keyword of your choice following appt-finished-find.

In the list displayed, each finished appointment will have an index number which can then be used for other features that require you to select a finished appointment by index e.g. appt-finished-delete. Take note that an appointment will be given the same index regardless of other display commands such as appt-finished-list or if different parameters are used.

Format: appt-finished-find [PATIENT_NAME]

4.12. Finishing Appointment appt-finish [coming in V2.0]

Instead of deleting an appointment using appt-delete or appt-delete-permanent, you can use this command to simply mark an appointment as finished.

The appointment is removed from the appointment list and added to the list of finished appointments.

4.13. Deleting Finished Appointment appt-finished-delete [coming in V2.0]

You can delete (permanently) a finished appointment by index using appt-finished-delete.

There is no distinction in behaviour of this command between recurring and non-recurring appointments as deletion is from the finished appointment list.

Format: appt-finished-delete INDEX

  • Deletes the finished appointment at the specified INDEX.

  • The index refers to the index number shown in the list of finished appointments displayed by appt-finished-list or appt-finished-find.

  • The index must be a positive integer 1, 2, 3, …​

Examples:

  • appt-finished-delete 2
    Deletes the 2nd appointment in the finished appointment list.

  • appt-finished-delete 1
    Deletes the 1st appointment in the finished appointment list.

  • As of version 1.4, the appointments feature does not allow for user’s discretion on managing clashing appointments. Instead, it simply prevents a user from adding a clashing appointment.

  • When an appointment is added or edited, while there is a check to ensure the appointment does not clash with any other existing appointment in the list, there is no check done on whether this new appointment could potentially clash with any future appointments that could result from an appointment recurring.
    In such cases, if an appointment that is a added or edited clashes with a future date time of a recurring appointment, the app allows adding such an appointment.
    But when the recurring appointment that our new appointment clashes with is recurred (due to appt-delete of the recurring appointment or the recurring appointment passing the system date time), then the recurring appointment is recurred (keep getting the next start and end date time) until it doesn’t clash with any of the existing appointments in the appointment list.
    Allowing user discretion for clashing appointments (i.e. simply flagging the clashing appointments) is a feature coming in V2.0.

  • If changes are made to the appointmentBook.json file directly (i.e. not through the app) such that there are clashing appointments, the app won’t detect these clashes and will load the appointment book as it is with these clashing appointments. This can result in unexpected behaviour of the app as it is not thoroughly designed to work with clashing appointments in the appointment list.
    So, please refrain from making direct edits such that there result clashing appointments in the appointmentBook.json file.
    Detecting these clashes from storage and if detected, loading an empty appointment list instead is a feature coming in V2.0.

  • While the system doesn’t allow appointments with end date and times before the system’s date and time, and recurs appointments (that are recurring) until they are past the system date and time, this happens only when the app is opened.
    While the app is running, there is no constant checking of whether the appointments in the list have already finished (i.e. if their end date time is before the system date time).

5. Visit Management

Visit Management

As a community nurse, you will often make home visits to your patients. When you are visiting a patient, there is often a todo list that you will have to do as well as information that you will have to record. This can now be done using the app. This section describes the features that will allow you to start a visit, keep track of your tasks during a visit, finish a visit and view information recorded during previous visits.

5.1. Starting a Visit visit-start

You can begin a visit by using visit-start. When you visit a patient and you want to record in the application that you are visiting said patient, you can use this feature to begin the visit for that patient (which will unlock the visit-now-update and visit-now-finish commands that will be applied to that visit). You can only have one ongoing visit at any point in time. This ongoing visit can be viewed in the "Current Visit" tab.

visit-start uses the patient’s Visit Todos to populate a checklist of Visit Tasks for you to use (these Visit Tasks are simply referred to as "tasks"). Visit Todos are described in further detail under Section 1, “Visit Tutorials / How-To Guide(s)”.

Format: visit-start PATIENT_INDEX

  • Begins a visit for the patient specified at PATIENT_INDEX.

  • The index refers to the index number shown in the list of patients displayed by pat-list or pat-find.

  • The index must be a positive integer 1, 2, 3, …​

  • There can only be one ongoing visit at any point in time; if there is already an ongoing visit this command does nothing.

  • This command does not bring up the "Current Visit" tab. You will have to manually click the tab.

  • You cannot delete the patient who you are currently visiting.

  • You can update the details of the patient you are currently visiting, but changes to his/her Visit Todos will not affect the ongoing visit’s Visit Tasks.

Examples:

  • visit-start 1
    Starts a visit for the 1st patient in the patient list.

5.2. Updating the ongoing Visit visit-now-update

Once you have begun a visit using visit-start, the application will note that you have an ongoing visit. You can then update the details of this ongoing visit using visit-now-update.

Format: visit-now-update [d/TASK_INDEX DETAIL]… [f/TASK_INDEX]… [uf/TASK_INDEX]… [r/REMARK]

Each argument (e.g. d/, f/, uf/, r/) triggers their own change to the visit:

  • d/ Represents "detail". Each task in the visit checklist can be assigned some information if it is useful for you. For example, if task of index 1 is "Check Body Temp", you can use d/1 37.0degc to record that detail to that task (TASK_INDEX followed by a space followed by the details you want to store).

  • f/ Represents "finish". Each task begins as unfinished and to mark a task as finished, you can use this prefix. For example, to mark task of index 1 as finished, you can use f/1 (TASK_INDEX of the task you want to mark as finished).

  • uf/ Represents "un-finish". If you have marked a task as finished prior using f/ and you want to undo that, you can use uf/ (e.g. for task index 1 use uf/1).

  • r/ Represents "remark". You can use this to update the remarks section of the visit.

When you are on the "Current Visit" tab, you will see information of the patient you are currently visiting, a checklist of tasks and a remarks section. TASK_INDEX refers to the index number of the task (shown in the displayed checklist of tasks).

  • At least one of the optional fields must be provided.

  • Existing values will be updated to the input values.

  • TASK_INDEX refers to the index number of the task (shown in the displayed checklist of tasks).

  • The index must be a positive integer 1, 2, 3, …​

  • Each argument can target different TASK_INDEX es. This allows you to use this command to update multiple tasks at once.

  • This command does not bring up the "Current Visit" tab (Feature coming in v2.0)

Other notes:

  • If you use both f/ and uf/ on the same task in a single visit-now-update command, uf/ will take priority (i.e. the task will be marked as unfinished).

  • A task does not need to be marked as finished in order to finish the visit. It is simply for your reference and to help you keep track of which tasks have / have not been finished.

  • Editing the Visit Todos of a patient while a visit is ongoing for that patient will not update the Visit Tasks of said patient. If you want to update the tasks, cancel the visit first, then start the visit again.

Example for visit-now-update:

Assume that you have an ongoing visit and 2 tasks (task 1 is "Check Blood Pressure", task 2 is "Check for bed bugs") in your visit checklist. After you’re done, you can update the application using:

  • visit-now-update d/1 140/90mmHg f/1 f/2 r/Patient is healthy

This sets the details for task 1 in the checklist to "140/90mmHg" and marks tasks 1 and 2 as finished. It also sets the remarks to "Patient is healthy".

Assuming then in the above scenario you discovered bed bugs after checking again before you leave. You decide to help the patient change the bedsheets and you want to update that information. You can run:

  • visit-now-update uf/2 r/Patient must be reminded to wash bedsheets regularly

This would set task 2 to unfinished and change the remarks. Once you have finished changing the bedsheets, you can then verify there are no bed bugs and use visit-now-update f/2 to mark task 2 as finished.

5.3. Cancelling the ongoing Visit visit-cancel

Once you have begun a visit using visit-start, the application will note that you have an ongoing visit. You can cancel that visit using visit-cancel, which will cancel the visit and remove it from the list of visits of the patient. The ongoing visit will also be removed from the Current Visit tab.

Format: visit-cancel

5.4. Finishing the ongoing Visit visit-end

Once you have begun a visit using visit-start, the application will note that you have an ongoing visit. You can then mark that visit as finished using visit-end, which will archive that visit. The ongoing visit will be removed from the Current Visit tab.

Format: visit-end

6. Autocomplete

Autocomplete

As a community nurse, you will be performing several commands through the Command Line Interface (CLI). In order to speed up the process, the application includes an autocomplete feature that allows you to more quickly and conveniently input your commands and parameters. This section describes the feature in further detail.

6.1. Viewing list of suggested words

To the right of the command box, there is a panel that has a list of suggestion words. The suggestion list will be constantly updated to fit your input.

6.2. Updating list of suggested words

The suggested list of words in the autocomplete panel will be updated as you type in the command box. The panel will only suggest to you words that you need, based on your input and your previous word selection. Should your input be wrong or does not match any of the suggested word, no words will be suggested to you.

Eg:
If "visit-" is your input in the commandbox, only words that are related to "visit" will be suggested such as "start" and "end".

Figure 1: Example usage 1
acvisual1

If "visit-s" is your input in the commandbox, only words that starts with "s" and is also related to visit such as "start" will be suggested.

Figure 1: Example usage 2
acvisual2

Note:

  • When prefixes are suggested, you should select all prefixes that you need then type in the required sub-details
    Eg: Select all prefixes "pat-add n/ p/ e/ a/ t/" before adding sub-details "pat-add n/John p/98762615 e/john@example.com a/exampleaddress t/exampletag vt/examplevisittodo"

  • If no words appear in the autocomplete panel, this can only mean 2 things:
    1) Your full command is finished, there are no more words to be suggested.
    2) Your input is wrong and does not match any of the words to be suggested. (Try to change your input by backspacing)

6.3. Selecting a suggested words

UP, DOWN key
You can use the UP and DOWN keys in your keyboard to move from one selected word to another. Descriptions of the suggested words will be shown as you select them to guide you in choosing.

SHIFT key
Confirm your selection by pressing the SHIFT key in your keyboard. This will auto-fill the selected word to your current words in the command box text field.

Eg:
Selecting the "now-update" in the autocomplete panel will concatenate with "now-update" with "visit-", the current text in your command box.

Note:
When pressing UP, DOWN, or SHIFT keys, make sure that the command box is selected.

7. Data Saving, History, Undo, Redo

Data Saving, History, Undo, Redo

As a community nurse, you will often perform commands that modify information managed by the application (e.g. patient data). This section describes the features involving the storage of this data, viewing command history, and undo-ing / redo-ing commands.

7.1. Saving your data

Your data are saved in the hard disk automatically after any command that changes the data.

There is no need to save manually.

7.2. Viewing the command history

The rightmost panel of the app shows a history of the previous data-modifying commands executed since the app was started. Examples of data-modifying commands are pat-edit or visit-start. Commands that do not affect the app data, such as pat-list, are not shown.

Each command is displayed with an index number. The most recent command is shown at the bottom of the history and has the greatest index number. The earliest command in the history is shown at the top with an index of 1.

The app keeps a record of the previous 20 data-modifying commands in the history.

7.3. Undoing a command: app-undo

You can undo the changes of the data-modifying commands in the history with app-undo. All app data will be reverted to how they were before the undone command was executed.

app-undo can be used in two ways. The first way is to provide no arguments to the command. This simply undoes the latest command. The second way is to specify the index of a command in the history. This would cause all commands after and including that command to be undone.

The command app-undo itself is not affected by app-undo and is not recorded in the history. To revert an app-undo, use app-redo.

Format: app-undo [INDEX]

  • If the index is provided, undoes all commands after and including the indicated command.

  • If the index is not provided, undoes the previous data-modifying command.

  • The index, if provided, must be a positive integer 1, 2, 3, …​

  • Can only undo commands in the history.

Examples:

  • pat-clear
    pat-list
    app-undo (reverts the pat-clear command)

  • Suppose the history looks like this:

    1. pat-edit 1 n/Ivan Yeoh

    2. pat-delete 3

    3. pat-clear

    Now app-undo 2 is executed. pat-clear and pat-delete 3 are undone in that order. The app data is now as it was before pat-delete 3 was executed.

7.4. Redoing an undone command: app-redo

You can redo and reapply the changes of the last undone command using app-redo. This is only possible when the latest data-modifying command (other than app-redo itself) was an app-undo.

Format: app-redo

  • Redoes the latest undone command.

  • The previous data-modifying command must have been an app-undo (excluding app-redo itself).

Examples:

  • pat-edit 1 n/Ivan Yeoh
    app-undo
    app-redo (reverts data to after pat-edit was executed)

  • pat-edit 1 n/Ivan Yeoh
    pat-clear
    app-undo
    app-undo
    app-redo (redoes pat-edit)
    app-redo (redoes pat-clear)

  • Suppose the history looks like this:

    1. pat-edit 1 n/Ivan Yeoh

    2. pat-delete 3

    3. pat-clear

    Now the following commands are executed:
    app-undo 2 (reverts pat-clear and pat-delete)
    app-redo (redoes pat-delete)
    app-redo (redoes pat-clear)

8. Importing and Exporting of Patient Data

Importing and Exporting of Patient Data

As a community nurse, you may be assigned new patients, or some of your patients may be assigned to other community nurses. To facilitate the transferring of patient information from one device to another, you can import and export the data of your patients. This section describes the features that will allow you to import and export patient information.

CSV Compatibility

You may encounter issues when trying to import a CSV file written by another machine with a different operating system. As of v1.4, CSV files written by Windows and Unix machines are not cross-compatible. This means that the app, running on Windows, can only import CSV files written by a Windows machine. The same goes for Unix systems.

This issue can be circumvented by using text file format converters to convert a Windows written CSV to a Unix one, and vice versa. The recommended converters are Dos2Unix and Unix2Dos, both available here.

8.1. Importing Patients from a CSV file: app-import-replace, app-import-merge

You can import patient data from a .csv file into the application using app-import-replace or app-import-merge.

  • Only the file format .csv is supported.

  • The application will look for the specified .csv file in the ./imports folder.

  • Both import commands are undoable.

CSV files used for importing must adhere to the following format requirements.

  • Provided file name should not be blank, and can contain only alphanumerics, hyphens and underscores.

  • The top row of the file must be exactly the following headers in the order:

    name, phone, email, address, tagged, visitTodos
  • Each row in the .csv corresponds to one patient.

  • There may not be duplicate patients in the .csv file.

  • The data in each cell must adhere to the format of the field it belongs in.

    • Cells under phone must contain 3 to 8 digit numbers, cells under name must contain only alphanumerics and spaces, etc.

    • For the fields tagged and visitTodos with multiple elements per cell, each element is to be separated with a newline.

  • The data row for any patient cannot have empty cells in the following fields:

    `name`, `phone`, `address`, `email`
  • The .csv file should adhere to the RFC 2048 standard.

Examples of valid CSV files can be seen here

8.1.1. Import and Replace: app-import-replace

Reads patient data from a specified .csv file.

".csv" will be auto-appended to the specified FILENAME, so there is no need to type in the file extension.

All existing patient data will be deleted and replaced with this new data.

All existing appointment data will be deleted.

  • Provided file should not be empty.

  • Cannot be executed when there is an ongoing visit.

Format: app-import-replace n/FILENAME

Examples:

  • app-import-replace n/my_assigned_patients

    • Patient data will be entirely replaced with new data from ./imports/my_assigned_patients.csv.

8.1.2. Import and Merge: app-import-merge

Patient data will be read from a specified .csv file and merged without affecting existing data.

".csv" will be auto-appended to the specified FILENAME, so there is no need to type in the file extension.

  • Provided file should not be empty.

  • The .csv file cannot contain a patient that already exists in the app.

  • Can be executed when there is an ongoing visit.

Format: app-import-merge n/FILENAME

Examples:

  • app-import-replace n/my_new_patients

    • Patient data from ./imports/my_new_patients.csv will be added into the app.

8.2. Exporting patients into a CSV file: app-export

You can export patient data from the application into a .csv file using app-export.

A new .csv file will be created and data will be written into it.

Indexes can be provided to selectively export data of specific persons.

".csv" will be auto-appended to the specified FILENAME, so there is no need to type in the file extension.

  • Only the file format .csv is supported.

  • Creates FILENAME.csv in the ./exports folder

  • The provided file name must not be already in use.

Format: app-export n/FILENAME [i/INDEX…​]

Examples:

  • app-export n/patients

    • All patient data will be exported to ./exports/patients.csv.

  • app-export n/alex i/1

    • The data of the patient at index 1 will be exported to ./exports/alex.csv.

  • app-export n/tomorrow i/2 i/4 i/6

    • The data of the patients at indexes 2, 4 and 6 will be exported to ./exports/tomorrow.csv.

  • As of version 1.4, the export feature does not support Visits and Appointments.

  • Patients' visit data will not be exported. This feature will be implemented in v2.0.

  • The provided file name cannot be blank, and can contain only alphanumerics, hyphens and underscores.

8.3. Exporting Appointments [coming in v2.0]

You can export your appointment data into a .csv file using app-export-appt. A new .csv file will be created and data will be written into it.

Format: app-export-appt n/FILENAME

Examples:

  • app-export-appt n/appointments

    • All appointment data will be exported to ./exports/appointments.csv.

Tutorials / How-To Guide(s) (as of v1.4)

1. Visit Tutorials / How-To Guide(s)

1.1. What are Visit Todos (and Visit Tasks)?

Visit Todos are, as the name suggests, todo items. These are items that are attached to a patient and are todo items that you want to be reminded to do when you visit that patient. Each Visit Todo contains a description of that task.

When you begin a visit using visit-start, the patient’s Visit Todos are copied into the visit checklist as Visit Tasks. Each visit task has a description (of the visit todo it was copied from) which is a field for you to add details to that task, and a flag to indicate if that task is finished.

1.2. How to view the ongoing visit

The ongoing visit can be viewed by clicking on the current visit tab. Note that you will have to change tabs manually and your commands will not affect which tab you are viewing.

CurrentVisit

1.3. How to view the visit todos of a patient

You can view the visit todos of a patient using pat-list and pat-find. Visit Todos are displayed under their patient details. A visual representation can be seen below.

1.4. How to view visits of a patient (previous and ongoing)

You can view the visits of a patient using pat-list and pat-find. Visits are displayed under their patient details.

VisitTodoAndVisits

1.5. How to manage a visit (an example)

To introduce how to manage a visit, let’s use an example where you have a patient named John Heng. Assume that John is a new patient (his data is not in NurseTraverse) and you have the following list of things (visit todos) you want to do when you visit him:

  • Take Blood Pressure

  • Take Body Temperature

  • Restock Medicine

Adding a new patient with Visit Todos
If you are adding a new patient, you can add these visit todos using pat-add. Example: pat-add n/John Heng p/82221222 e/john@gmail.com a/John’s address t/Male vt/Take Blood Pressure vt/Take Body Temperature vt/Restock Medicine.

Editing the Visit Todos of a patient
Alternatively, if John is an existing patient in NurseTraverse you can update John’s list of Visit Todos using pat-edit. Let’s assume that John is the 2nd patient in pat-list, so you would use pat-edit 2 vt/Take Body Temperature vt/Restock Medicine.

Starting a Visit
Let’s assume that you decide to visit John’s house. When you are at John’s house during a house visit and you want to begin keeping track of your visit and recording visit details, you can use visit-start. In this scenario, John is the 2nd patient in pat-list, so you would use visit-start 2. Since you can only be visiting one patient at one time, you can only have one ongoing visit at any time; visit-start can only be performed if there is no ongoing visit.

Cancelling a Visit
If you realized you started the visit for a wrong person, you can cancel it using visit-cancel.

Updating a Visit’s details
Once you have begun a visit using visit-start, you can begin updating the visit’s details using visit-now-update. Let’s assume that you’ve finished all the tasks in the checklist during your visit with John, so an example would be visit-now-update f/1 f/2 f/3.

If you accidentally marked a task as finished, you can mark it as unfinished using uf/TASK_INDEX e.g. visit-now-update uf/1.

If you also want to add details to the tasks (e.g. record the blood pressure as task 1, body temperature as task 2) you can do so like this: visit-now-update d/1 140/90mmHg d/2 37.0.

You can also set the visit’s remarks. An example would be visit-now-update r/Remember to bring stretch band next session.

Finally, you can combine all of the above into one command: visit-now-update f/1 f/2 f/3 d/1 140/90mmHg d/2 37.0 r/Remember to bring stretch band next session.

Finishing a Visit
Finally, once you have concluded the visit, you can finish the visit using visit-end. This will tell the application that the ongoing visit has concluded. It will then save the visit under the patient (in this case, John).

Viewing previous Visits
You can view the visits of a patient using pat-list and pat-find. Visits are displayed under their patient details. In this case, it may be better to use pat-find to find John’s records e.g. pat-find John Heng.

Planned Feature(s) (coming in v2.0)

1. Login System & Security [coming in v2.0]

Login System & Security

As a community nurse, you will often be managing your patients' confidential data. A login system will be useful in helping you to ensure the confidentiality and security of your patients' information. This section describes the features that will allow you to manage this security system.

1.1. Enabling the Login System login-enable [coming in v2.0]

If you haven’t setup a login PIN, you can enable the login system by setting a login pin using login-enable.

Format: login-enable PIN

  • The PIN is a series of 6 alphanumeric characters (case sensitive).

1.2. Disabling the Login System login-disable [coming in v2.0]

If you have setup a login PIN, you can disable the login system using login-disable.

Format: login-disable CURRENT_PIN

  • CURRENT_PIN refers to the PIN that you use to login.

  • CURRENT_PIN is a series of 6 alphanumeric characters (case sensitive).

1.3. Changing the Login Pin login-changepin [coming in v2.0]

If you have setup a login PIN, you can change the pin using login-changepin.

Format: login-changepin o/OLD_PIN n/NEW_PIN

  • OLD_PIN refers to the PIN that you use to login.

  • NEW_PIN refers to the new PIN that you want to use in the future.

  • OLD_PIN and NEW_PIN are a series of 6 alphanumeric characters (case sensitive).

1.4. Locking the Application login-lock [coming in v2.0]

If you have setup a login PIN, you can lock the application using login-lock.

Format: login-lock

1.5. Changing Login Lock Timeout login-timeout [coming in v2.0]

If you have setup a login PIN, you can change the amount of time (in minutes) before the system automatically locks the application using login-timeout.

Format: login-timeout MINUTES

Example: login-timeout 3 will configure the system to automatically lock the application after 3 minutes.

1.6. Logging in / Unlocking the Application [coming in v2.0]

On the lock screen you will be prompted to enter your PIN. Once you enter the correct and press Enter, the application will unlock.

1.7. Data Encryption [coming in v2.0]

The save files of the application will be automatically encrypted using your PIN.

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 with the file that contains the data of your previous NurseTraverse folder.

Alternatively, you can use the import and export functions to transfer patient data. Refer to Section 8, “Importing and Exporting of Patient Data”.