diff --git a/docs/AboutUs.md b/docs/AboutUs.md index 91cc6d1fe46..4de87f33bcb 100644 --- a/docs/AboutUs.md +++ b/docs/AboutUs.md @@ -14,7 +14,7 @@ You can contact us individually through our portfolios [[github](https://github.com/alex-setyawan)] -[[portfolio](team/johndoe.md)] +[[portfolio](team/alex-setyawan)] * Role: Team Lead * Responsibilities: Project Manager, Back-end @@ -46,7 +46,7 @@ You can contact us individually through our portfolios [[github](http://github.com/NatLeong)] -[[portfolio](team/johndoe.md)] +[[portfolio](team/alex-setyawan)] * Role: Developer * Responsibilities: Front-end, Documentation diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 5af3505b078..ece6aef0f20 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -3,22 +3,196 @@ layout: page title: User Guide --- ## Introduction -As communities grow, information management might prove complex for General Practitioner Clinics and other small-scale healthcare clinics, especially so for personal data. **ImmuniMate** offers a way to record comprehensive information about every patient, while ensuring timely updates and avoiding duplications/contradictions. It also seeks to establish links between patients for cluster tracking. + +Streamline Your Care, Empower Your Patients: Welcome to the Healthcare Information Management Revolution! +Are you a doctor who has scrambled for a patient's medical information during a crucial consultation? +Or a clinic receptionist who's gotten frustrated from flipping through stacks of paper notes to recall a patient's phone number? +Those days are over! + +Introducing **ImmuniMate**, our innovative platform designed to revolutionize the way healthcare professionals and staff manage patient information. +It's your secure, centralized hub where you can access all your patients' medical and personal details – allergies, visit history, medical conditions, you name it – just a few clicks away! + +ImmuniMate is designed for healthcare professionals (doctors, nurses etc.) and healthcare staff (clinic receptionist etc.) longing to leverage the efficiencies of the 21st century, who: + +* have basic experience in using computers +* have a computer with sufficient space (~50 MB) +* are comfortable typing on a regular basis +* have no serious colour vision deficiencies (can differentiate red, yellow and green) + +If you ticked all the points above, great! +This user guide is here as your helping hand, imparting knowledge to unlock the full potential of ImmuniMate. +You can start with learning to navigate this guide effectively by viewing guidelines on how to use this guide. +After that, get started with ImmuniMate by following our step-by-step setup instructions, before really getting involved through short tutorials on its comprehensive set of features. +Get ready to: + +* Enhance Patient Care: Deliver faster, more informed consultations with easy access to vital information. +* Boost Efficiency: Save precious time by ditching paper records and streamlining your workflow. +* Revitalise Patients: Use organised information about your patients to offer them peronalised medical advice. + +Ready to take patient service to the next level? +Time to ditch those stacks of paper and Excel spreadsheets, and embrace the future of healthcare. +Let's dive in and explore how ImmuniMate can transform your practice! * Table of Contents {:toc} -------------------------------------------------------------------------------------------------------------------- +## How to Use This Guide + +ImmuniMate's user guide is optimised for ease of navigation, so that you can spend less time on the app, and more time on your patients. +The table of contents just before this section breaks down the guide into its constituent sections: + +1. How to Use This Guide (this section) + * descriptions on different sections of user guide + * glossary on technical terms +2. Product Information + * detailed description of product + * summary of command and fields +3. Quick start + * system requirements + * how to download and get started on the app +4. Features + * explains each feature with examples + * common usage mistakes +5. Frequently Asked Questions +6. Known issues + * descriptions on issues with ImmuniMate that have been spotted, but not fixed + +
+ +Navigating a complex document can be time-consuming, and we understand. +That's why we've placed hyperlinks throughout this article (like [this one](#command-summary), to the command summary), so that any information you need is truly at your fingertips. + +Sometimes, certain instructions might sound very new or contain too many technical terms, which is why we also positioned a few "**TIP**" snippets below them, so that you'll never have to fret about the intricacies of ImmuniMate. + +
+ +ImmuniMate comes with an abundant set of features, each of which we have taken great care to explain in great detail. +Below is the formatting you can expect to see for an explanation of each feature: + +### (what this feature does) : `(command word)` + +(more specific explanation of feature function) + +Format: `(exact usage format with command words and fields)` +* (format detail 1) +* (format detail 2) +* ... + +Examples: +* `(correct use case 1)` + * (consequence) +* `(correct use case 2)` + * (consequence) +* ... + +Common mistakes: +* `wrong use case 1` (reason) +* `wrong use case 2` (reason) +* ... + +
+ +Throughout this guide, there might be some terms that you might not be familiar with, and that's fine. +Here's a table of some technical terms you'll see further in the guide: + +| Term | Definition | +|----------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **Java** | A programming language. Various versions can be downloaded from [here](https://www.oracle.com/sg/java/technologies/downloads/). | +| **home folder** | The main folder where all app activity can take place and files can be stored | +| **command terminal** | A text-based interface to your computer.
On Windows, this can be opened by pressing the Windows key, and searching for an app called "Command Prompt".
On iOS, this can be opened by pressing Command + Space, typing in "terminal", then pressing "Return". | +| `cd` | A Linux (operating system) command used to navigate to different folders in your command terminal. Stands for "change directory".
Linux tutorials can be found [here](https://ubuntu.com/tutorials/command-line-for-beginners#1-overview). | +| **GUI** | Short for "Graphical User Interface". The digital interface in which user interact with graphical components, such as icons and buttons. | +| **CLI** | Short for "Command Line Interface". A software mechanism you use to interact with the application using your keyboard. | + +----------------------------------------------------------------- + +## Product Information + +ImmuniMate is a desktop application for healthcare professionals and staff to better store and manage their patients' personal and medical information. +It is optimised for a single user on a single computer, meaning that after downloading a copy on your computer and using it, your copy cannot be accessed through other computers over the Internet. + +ImmuniMate is compatible with Windows, Linux and MacOS operating systems, and installation does not require any additional installers. +It has an eye-catching GUI to capture your attention, but despite that, all interactions with ImmuniMate happen through the command line interface (CLI). +This means each feature of ImmuniMate is only accessible through typing a command into the command box in its specified format, and pressing "Enter" to get a response. + +Here is a graphic on components of the GUI and their functions: +
+
+help message + +The list of commands and their formats are specified below: + +### Command summary + +| Action | Format, Examples | +|-------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **[Create](#creating-a-patient-profile-create)** | `create a/
[e/Email] [c/Country_of_Nationality] [doa/Date_of_Admission] [bt/Blood type] [al/Allergies] [con/Condition] [sym/Symptom] [d/diagnosis]`
e.g., `create ic/S1234567A n/John Doe hp/98765432 a/311, Clementi Ave 2, #02-25 dob/1990-01-01 s/M st/PENDING` | +| **[Read](#read-specific-patients-read)** | `read `
e.g., `read S1234567A` | +| **[Update](#updating-a-patient-profile-update)** | `update /`
e.g., `update S1234567A hp/91234567 e/jd123@example.com` | +| **[Find](#finding-patients-by-name-find)** | `find n/ `
e.g., `find n/Alex Bryan Charlie`
`find a/, , , ...`
e.g., `find a/Serangoon, Geylang`
`find con/, , , ...`
e.g., `find con/Covid, Ebola` | +| **[Delete Patient](#deleting-a-patient-delete)** | `delete `
e.g., `delete S1234567A` | +| **[Delete Information](#deleting-information-of-a-patient-deleteinfo)** | `deleteinfo `
e.g., `deleteinfo S1234567A e/` | +| **[Add Visit](#add-patient-visit-to-history-addvisit)** | `addvisit ic/ dov/ sym/ d/ st/`
e.g., `addvisit ic/S1234567A dov/2024-01-01 sym/Cough d/Covid st/UNWELL` | +| **[Check](#check-patient-history-check)** | `check `
e.g., `check S1234567A` | +| **[Find Cluster](#cluster-finding-cluster)** | `cluster a/ d/`
e.g. `cluster 3 a/Serangoon d/dengue` | +| **[Clear](#clearing-all-entries-clear)** | `clear` | +| **[List](#listing-all-patients-list)** | `list` | +| **[Help](#viewing-help-help)** | `help` | +| **[Exit](#exiting-the-program-exit)** | `exit` | + + +The list of fields and their formats are specified below: + +### Field summary + +| Field | Prefix | Format | Mandatory | +|----------------------------|--------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------| +| **Name** | `n/` | The name of the patient. Case-insensitive alphanumeric characters and spaces, capped at 2,000,000,000 characters. | Yes | +| **NRIC** | `ic/` | First character can be either S or T, followed by 7 digits, and the last character is an alphabetical letter, in accordance with Singapore NRIC formats. NRIC is case-insensitive. | Yes | +| **Phone Number** | `hp/` | 8 digits. | Yes | +| **Address** | `a/` | Any text. Blank or empty text is not accepted. | Yes | +| **Date of birth** | `dob/` | `yyyy-MM-dd` format. | Yes | +| **Sex** | `s/` | `M` or `F`, case-sensitive. | Yes | +| **Status** | `st/` | `PENDING`, `UNWELL`or `HEALTHY`, case-insensitive. | Yes | +| **Email** | `e/` | Any valid email address of the form `local-part@domain`, case-sensitive. | No | +| **Country of nationality** | `c/` | Any text. Blank or empty text is not accepted. | No | +| **Date of admission** | `doa/` | `yyyy-MM-dd` format. | No | +| **Blood type** | `bt/` | Any of `A+`, `A-`, `B+`, `B-`, `AB+`, `AB-`, `O+`, `O-` | No | +| **Allergies** | `al/` | Any text. Blank or empty text is not accepted. | No | +| **Condition** | `con/` | Any text. Blank or empty text is not accepted. | No | +| **Symptom** | `sym/` | Any text. Blank or empty text is not accepted. | No | +| **Diagnosis** | `d/` | Any text. Blank or empty text is not accepted. | No | +| **Date of visit** | `dov/` | `yyyy-MM-dd` format. | No | + +Sometimes, you might type in commands in the wrong format, or fields that don't make sense, and that's fine. +When that happens, the erroneous command you typed will light up in red, while more details on the nature of the error will be shown in the feedback box, like in the picture below. + +![Error Message](images/ErrorMessage.png) + +Not to worry, you can just edit that command, or delete it and type in a correct one. +**TIP**: Find retyping commands a hassle? Use your 'Up' and 'Down' arrow keys to access your past commands saved in your [Command History](#command-history)! + +---------------------------------------------------------------- ## Quick start -1. Ensure you have Java `11` or above installed in your Computer. +1. Ensure you have Java `11` or above installed in your computer.
+**TIP**: Don't worry if you don't have Java 11 installed yet! +The Java Development Kit (kind of like an installer) can be downloaded from [here](https://www.oracle.com/sg/java/technologies/downloads/#java11). +Take great care in downloading the one which suits your operating system (Linux, Windows, MacOS etc). + +![Java website](images/JavaWebsite.png) + +2. Download the latest `immuniMate.jar` from [our website](https://github.com/AY2324S2-CS2103T-T08-1/tp/releases). -2. Download the latest `immuniMate.jar` from [here](https://github.com/AY2324S2-CS2103T-T08-1/tp/releases). +help message 3. Copy the file to the folder you want to use as the _home folder_ for your ImmuniMate. -4. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar immuniMate.jar` command to run the application.
+4. Open a command terminal, and `cd` into the folder you put the jar file in.
+**TIP**: `cd` is a Linux command. New to Linux? You can learn the basics fast from [here](https://ubuntu.com/tutorials/command-line-for-beginners#1-overview). +5. Type `java -jar immuniMate.jar` and press "Enter" to run the application.
A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data. The colored circle on the right of each patient's name is the status indicator. For more information about the status indicator, see [create](#creating-a-patient-profile-create).
![Ui](images/GUI.png) @@ -29,13 +203,13 @@ As communities grow, information management might prove complex for General Prac * `create ic/S0123456A n/John Doe hp/98765432 e/johnd@example.com a/311, Clementi Ave 2, #02-25 dob/1990-01-01 s/M st/PENDING` : Adds a patient named `John Doe` to ImmuniMate. - * `delete S0123456A` : Deletes the patient of respective NRIC. + * `delete S0123456A` : Deletes all information of the patient with corresponding NRIC. - * `clear` : Deletes all contacts. + * `clear` : Deletes all patients. * `exit` : Exits the app. -6. Refer to the [Features](#features) below for details of each command. +**TIP**: Refer to the [Features](#features) section below for details of each command. -------------------------------------------------------------------------------------------------------------------- @@ -45,14 +219,14 @@ As communities grow, information management might prove complex for General Prac **:information_source: Notes about the command format:**
-* Words in `UPPER_CASE` are the parameters to be supplied by the user.
- e.g. in `update /CONTENT`, `CONTENT` is a parameter which can be used as `update S0123456A hp/87654321`. +* Words in `UPPERCASE` are the parameters to be supplied by the user.
+ e.g. in `update /CONTENT`, `CONTENT` is a parameter which can be used as `update S0123456A hp/87654321`. * Items in angle brackets are mandatory.
- e.g. `ic/` must be given. + e.g. `` must be given. * Items in square brackets are optional.
- e.g. `ic/ [e/EMAIL]` can be used as `ic/S0123456A e/jd123@example.com` or as `ic/S0123456A`. + e.g. ` [e/EMAIL]` can be used as `ic/S0123456A e/jd123@example.com` or as `ic/S0123456A`. * Parameters can be in any order.
e.g. if the command specifies `n/ hp/`, `hp/ n/` is also acceptable. @@ -63,7 +237,9 @@ As communities grow, information management might prove complex for General Prac * If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application. -### Viewing help : `help` +
+ +### Viewing help: `help` Shows a message explaining how to access the help page. @@ -71,6 +247,15 @@ Shows a message explaining how to access the help page. Format: `help` +
+ +### Listing all patients: `list` + +Shows all patients in ImmuniMate. + +Format: `list` + +
### Creating a patient profile: `create` @@ -78,68 +263,77 @@ Creates a patient profile in ImmuniMate. A patient profile refers to a record of Format: `create ic/ n/ hp/ a/
dob/ s/ st/ [e/Email] [c/Country_of_Nationality] [doa/Date_of_Admission] [bt/Blood type] [al/Allergies] [con/Condition] [sym/Symptom] [d/diagnosis]` -* All mandatory fields must be provided. Refer to the [Field summary](#field-summary) at the end of this User Guide for list of mandatory and optional fields, and their formats. +* All mandatory fields must be provided. Refer to the [Field Summary](#field-summary) for a list of mandatory and optional fields, and their formats. * The unique identifier for each patient is the NRIC. The new NRIC must not already exist in the system. * The status of the patient is indicated by a colored circle on the right of the patient's name. The color of the circle corresponds to the status of the patient. The status can be `PENDING` (yellow), `UNWELL`(red) or `HEALTHY`(green). Examples: * `create ic/S1234567A n/John Doe hp/98765432 a/311, Clementi Ave 2, #02-25 dob/1990-01-01 s/M st/PENDING` -* `create ic/S0123456A hp/87654321 a/311, Clementi Ave 2, #02-25 dob/1990-01-01 s/F st/PENDING e/janed@example.com bt/A+ n/Jane Doe`, +* `create ic/S0123456A hp/87654321 a/311, Clementi Ave 2, #02-25 dob/1990-01-01 s/F st/PENDING e/janed@example.com bt/A+ n/Jane Doe` + +![Create Command Result](images/CreateCommandResult.png) + Common mistakes: * `create n/John Doe hp/98765432 a/311, Clementi Ave 2, #02-25 dob/1990-01-01 s/M st/PENDING` (missing NRIC) * `create ic/S1234567A n/John Doe hp/98765432 a/311, Clementi Ave 2, #02-25 dob/1990-2-30 s/M st/PENDING` (Wrong date format) -### Listing all patients : `list` - -Shows a list of all patients in ImmuniMate. +
-Format: `list` +### Read specific patients: `read` -### Read specific patients : `read` - -Shows corresponding patient profile. +Shows all profile details of patient with corresponding NRIC. Format: `read ` -* The NRIC must follow the correct format as specified in [Field summary](#field-summary). +* The NRIC must follow the correct format specified in [Field Summary](#field-summary). Examples: -* `read S1234567A` - * Displays profile of patient uniquely identified by NRIC S1234567A. +* `read t0234567c` +![Read Command Result](images/ReadCommandResult.png) + Common mistakes: -* `read S12345678` (NRIC must be in the correct format, and must exist in the system) +* `read S12345678` (wrong NRIC format) +
-### Updating a patient's profile : `update` +### Updating a patient profile: `update` -Updates information of an existing patient profile in ImmuniMate. +Updates information of a patient with an existing profile in ImmuniMate. Format: `update /CONTENT` -* Updates the patient of corresponding NRIC. +* Updates information of the patient with corresponding NRIC. * At least one of the fields must be provided. +* NRIC cannot be updated, all other values can be updated. * Existing values will be updated to the input values. -* NRIC cannot be updated, while all other values can be updated. -* Refer to the [Field summary](#field-summary) at the end of this User Guide for list of fields and their formats. +* Refer to the [Field Summary](#field-summary) for a list of fields and their formats.
+**TIP**: Just finished a consultation with a patient? +You can update related fields together, like changing the patient's diagnosis to "coronavirus" while changing the status to "UNWELL". Examples: * `update S1234567A hp/91234567 e/jd123@example.com` - * Updates the phone number and email address of the corresponding patient to be `91234567` and `jd123@example.com` respectively. + * Updates the phone number and email address of the corresponding patient to be `91234567` and `jd123@example.com` respectively. * `update S0123456A a/123 Serangoon Road` - * Updates the address of the corresponding person to be `123 Serangoon Road`. + * Updates the address of the corresponding patient to be `123 Serangoon Road`. + +result for 'find alex david' + Common mistakes: -* `update S1234567A ic/91234567` (NRIC cannot be updated) +* `update S1234567A ic/T1234567A` (NRIC cannot be updated) * `update S1234567A` (no field specified) -### Locating patients by name: `find` +
+ +### Finding patients by name: `find` -Finds patients whose name contain any of the given keywords. +Finds patients whose names contain any of the given keywords. -Format: `find n/[NAME] [NAME] [NAME] ...` +Format: `find n/ [NAME] [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 name is searched. +* Only the name field in each patient profile is searched. +* At least one name must be provided. * 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`. @@ -147,21 +341,24 @@ Format: `find n/[NAME] [NAME] [NAME] ...` Examples: * `find n/John` - * Returns `john` and `John Doe`. + * Returns `John Dolly` and `John Doe`. * `find n/alex david` * Returns `Alex Yeoh`, `David Li`.
- result for 'find alex david' +result for 'find alex david' + +

-### Locating patients by address: `find` +### Finding patients by address: `find` -Finds patients whose address contain any of the given keywords. +Finds patients whose addresses contain any of the given keywords. -Format: `find a/[LOCATION], [LOCATION], [LOCATION], ...` +Format: `find a/, [LOCATION], [LOCATION], ...` * The search is case-insensitive. e.g. `serangoon` will match `Serangoon`. * The order of the keywords does matter. e.g. `Clementi Ave` will not match `Ave Clementi`. -* Only the address is searched. +* Only the address field in each patient profile is searched. +* At least one location must be provided. * Partial words will be matched e.g. `Clem` will match `Clementi`. * Patients matching at least one keyword will be returned (i.e. `OR` search). e.g. `Clementi, Serangoon` will return patients with address containing `Serangoon` or `Clementi`. @@ -170,101 +367,129 @@ Format: `find a/[LOCATION], [LOCATION], [LOCATION], ...` Examples: * `find a/Geylang` * Returns `Alex Yeoh`. -* `find a/Serangoon` - * Returns `Bernice Yu`, `David Li`. * `find a/geylang, serangoon, choa chu kang` - * Returns `Alex Yeoh`, `Bernice Yu`, `David Li`.
- result for 'find serangoon' + * Returns `Alex Yeoh`, `Bernice Yu`, `David Li`. +* `find a/Serangoon` + * Returns `Bernice Yu`, `David Li`.
+result for 'find serangoon' -### Locating patients by condition: `find` +

-Finds patients whose condition contain any of the given keywords. +### Finding patients by condition: `find` -Format: `find con/[CONDITION], [CONDITION], [CONDITION], ...` +Finds patients whose conditions contain any of the given keywords. -* The search is case-insensitive. e.g. `covid` will match `Covid`. +Format: `find con/, [CONDITION], [CONDITION], ...` + +* The search is case-insensitive. e.g. `diabetes` will match `Diabetes`. * The order of the keywords does matter. e.g. `Stomach Flu` will not match `Flu Stomach`. * Only the condition is searched. -* Partial words will be matched e.g. `Cov` will match `Covid`. +* At least one condition must be provided. +* Partial words will be matched e.g. `diab` will match `Diabetes`. * Patients matching at least one keyword will be returned (i.e. `OR` search). - e.g. `Covid Dengue` will return patients with address containing `Covid` or `Dengue`. + e.g. `Diabetes, Myopia` will return patients with address containing `Diabetes` or `Myopia`. * Conditions must be separated by commas, and whitespaces before and after each condition will be ignored. Examples: -* `find con/covid, dengue, ebola` +* `find con/diabetes, high blood pressure` + +result for 'find serangoon' + Common mistakes: -* `find ic/S1234567X` (only condition, name and address can be searched with find) - * If you would like to find a person with NRIC, use the [read](#read-specific-patients--read) command instead. +* `find ic/S1234567X` (only condition, name and address can be searched with find)
+**TIP**: If you would like to find a person with NRIC, use the `read` command instead. -### Deleting a patient : `delete` +
+ +### Deleting a patient: `delete` Deletes the specified patient from ImmuniMate. Format: `delete ` -* Deletes the patient with corresponding NRIC. -* The NRIC must follow the correct format as specified in [Field summary](#field-summary). +* Deletes the profile of the patient with the corresponding NRIC. +* The NRIC must follow the correct format as specified in [Field Summary](#field-summary). Examples: -* `delete S1234567A` deletes patient uniquely identified by NRIC S1234567A. +* `delete S1234567A` + * deletes patient uniquely identified by NRIC S1234567A. + Common mistakes: * `delete S12345678` (NRIC must be in the correct format) * `delete` (NRIC must be provided) -### Deleting information of a patient : `deleteinfo` +
+ +### Deleting information of a patient: `deleteinfo` Deletes specified optional information from the specified person from ImmuniMate. -Format: `deleteinfo ` +Format: `deleteinfo [Field] [Field] ...` * Deletes specified information of the patient with corresponding NRIC. -* The NRIC must follow the correct format as specified in [Field summary](#field-summary). -* The fields must be the optional fields specified in the [Field summary](#field-summary). +* The NRIC must follow the correct format as specified in [Field Summary](#field-summary). +* Only fields specified as optional in the [Field Summary](#field-summary) can be deleted. Examples: * `deleteinfo S1234567A e/` * Deletes the email of patient uniquely identified by NRIC S1234567A. * `deleteinfo S0123456A e/ bt/ c/` * Deletes the email, blood type and country of nationality of patient uniquely identified by NRIC S0123456A. + Common mistakes: -* `deleteinfo S1234567A abc/` (a valid optional field from the [Field summary](#field-summary) must be provided) +* `deleteinfo S1234567A abc/` (a valid optional field from the [Field Summary](#field-summary) must be provided) * `deleteinfo S1234567A` (a field must be provided) -* `deleteinfo S1234567A ic/` (mandatory fields cannot be deleted) +* `deleteinfo S1234567A ic/` (mandatory fields cannot be deleted)
+**TIP**: If you would like to change mandatory fields, you can use the `update` command instead. + +
-### Add patient's visit to history : `addvisit` +### Add patient visit to history: `addvisit` Adds visit to patient history. Format: `addvisit ic/ dov/ sym/ d/ st/` -Format for date of visit: `yyyy-MM-dd` -* Refer to the [Field summary](#field-summary) at the end of this User Guide for specification for symptoms, diagnosis and status format. + +* NRIC must be that of a patient already in ImmuniMate. + Examples: * `addvisit ic/S1234567A dov/2024-01-01 sym/Cough d/Covid st/UNWELL` - * Adds a visit to history of patient uniquely identified by NRIC S1234567A. During this visit on 2024-01-01, the patient had cough and was diagnosed with Covid. -* `addvisit ic/S0123456A dov/2024-02-02 sym/Fever,Rashes d/Dengue st/PENDING` - * Adds a visit to history of patient uniquely identified by NRIC S0123456A. During this visit on 2024-02-02, the patient had fever and rashes, and was diagnosed with Dengue. + * Adds a visit to history of patient uniquely identified by NRIC S1234567A. During this visit on 2024-01-01, the patient was having a cough and was diagnosed to be unwell with Covid. +* `addvisit ic/S0123456A dov/2024-02-02 sym/Fever,Rashes d/possible dengue st/PENDING` + * Adds a visit to history of patient uniquely identified by NRIC S0123456A. During this visit on 2024-02-02, the patient had a fever and rashes. The doctor suspects the patient has dengue, but is unable to come to a conclusion, hence the `PENDING` status. + +![Add Visit Result](images/AddVisitCommandResult.png) + Common mistakes: * `addvisit ic/S7654321X dov/2024-01-01 sym/Cough d/Covid st/` (NRIC must belong to a person existing in the system) * `addvisit ic/S1234567A a/#101 Hougang Ave` (fields other than date of visit, symptoms, diagnosis and status cannot be added) -### Check patient history : `check` + +
+ +### Check patient history: `check` Checks all visits in patient history. Format: `check ` -* The NRIC must follow the correct format as specified in [Field summary](#field-summary). +* NRIC must be that of a patient already in ImmuniMate. Example: -* `check S1234567A` +* `check T0234567C` * Displays all visits in history of patient uniquely identified by NRIC S1234567A. + +![Check Command Result](images/CheckCommandResult.png) + Common mistakes: * `check S12345678` (NRIC must be in the correct format, and must exist in the system) -### Cluster finding : `cluster` +
+ +### Cluster finding: `cluster` -Provided an integer, location, and illness, returns whether or not the number of people unwell with that illness (diagnosis in profile) in that area is at least that integer, and lists those people. +Shows whether or not the number of people **unwell** with the illness given (diagnosis in profile) in the location given is at least the integer given, and lists the people there with the illness. -Format: `cluster [CLUSTER SIZE] a/[LOCATION] d/[DIAGNOSIS]` +Format: `cluster a/ d/` * The search is case-insensitive. e.g. `serangoon` will match `Serangoon`. * Only one location and diagnosis is searched. @@ -274,27 +499,53 @@ Format: `cluster [CLUSTER SIZE] a/[LOCATION] d/[DIAGNOSIS]` Example: * `cluster 3 a/Serangoon d/dengue` - * Finds dengue clusters of at least 3 in locations with the substring "Serangoon". + * Shows if there are at least 3 people unwell with dengue in locations with the substring "Serangoon". + +![Cluster Command Result](images/ClusterCommandResult.png) + Common mistakes: -* `cluster 3 a/S d/dengue` (address should be a meaningful word indicative of location in Singapore) +* `cluster 3 a/S d/dengue` (address should be a meaningful word or phrase indicative of a location in Singapore) * `cluster 3 a/Serangoon` (diagnosis must be provided) -* `cluster 0 a/Serangoon d/` (a positive cluster size must be provided) +* `cluster 3 d/dengue` (diagnosis must be provided) +* `cluster 0 a/Serangoon d/dengue` (a positive cluster size must be provided) +* `cluster 30.5 a/Serangoon d/dengue` (an integer cluster sizet must be provided) + +
-### Clearing all entries : `clear` +### Clearing all entries: `clear` Clears all profiles from ImmuniMate. Format: `clear` -### Exiting the program : `exit` +
+ +### Exiting the program: `exit` Exits the program. Format: `exit` +
+ +### Command History +ImmuniMate allows you to navigate through your previous commands so you can easily reuse them without having to +retype them entirely. To navigate through the Command History, use the Up Arrow Key to view a previous command, and use the Down +Arrow Key to view the next command. The Up and Down Arrow Keys can be found on the Arrow Keys. + +![Keyboard Arrow Keys](images/KeyboardArrowKeys.png) + +**Notes:** +1. The Command History only saves valid commands, it does not save commands that were unsuccessful. +2. The Command History is temporary and will not be stored in between sessions. When you close an instance of ImmuniMate, your Command History is cleared. + +
+ ### Saving the data -ImmuniMate data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually. +ImmuniMate 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 @@ -305,14 +556,7 @@ If your changes to the data file makes its format invalid, ImmuniMate will disca Furthermore, certain edits can cause ImmuniMate to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly. -### Command History -ImmuniMate allows you to navigate through your previous commands so you can easily input multiple commands without having to -retype the entire command. To navigate through the Command History, use the Up Arrow Key to view a previous command, use the Down -Arrow Key to view the next command. The Up and Down Arrow Keys can be found on the Arrow Keys. - -**Notes:** -1. The Command History only saves valid commands, it does not save commands that were unsuccessful -2. The Command History is temporary and will not be stored in between sessions. When you close an instance of ImmuniMate, your Command History is cleared. +
### Archiving data files `[coming in v2.0]` @@ -328,64 +572,32 @@ Arrow Key to view the next command. The Up and Down Arrow Keys can be found on t **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 ImmuniMate home folder. **Q**: I entered a command and don't want to type it again, how can I go back to it?
-**A**: Use the arrow pad on the keyboard to navigate your Command History. +**A**: Use the up and down arrow keys on the keyboard to navigate your Command History. More information is in the Command History section above. **Q**: I added a new Patient Visit to my patient, but it doesn't seem to update the Patient information. Is something wrong?
**A**: No, this is intended behaviour as we want to afford more flexibility to GPs. Automatically updating the patient field based on recent visits might result in accidentally overriding intended data. -**Q**: My name has dashes, slashes, or apostrophes, I can't input my name in the create command.
-**A**: This is intended behaviour, our name field aims to adhere to Singapore NRIC standards according to -ICA guidelines. If your name has any special characters, kindly input a valid name. For example, "Lee Chi-Geng, Bryan" can be changed into "Lee Chi Geng Bryan". +**Q**: My name has dashes, slashes, commas, or apostrophes, I can't input my name in the create command.
+**A**: This is intended behaviour. Our name field aims to adhere to ICA guidelines. +If your name has any special characters, kindly remove them for compliance. For example, "Lee Chi-Geng, Bryan" can be changed into "Lee Chi Geng Bryan". **Q**: Help, I can't add multiple patient visits a day!
**A**: This is intended behaviour. Patients are assumed to only have a single visit a day. +**Q**: Why can I assign multiple patient profiles with the same phone number?
+**A**: This is intended behaviour. We understand there might be some patients (elderly, young children, disabled etc) who might be dependent on their family members or guardians for their day-to-day tasks. These family members and guardians might themselves be patients of the same clinic, hence the flexibility in recording phone numbers. + +**Q**: Why is it when I update a patient's diagnosis, his/her status is not automatically updated to "UNWELL"?
+**A**: This is intended behaviour. We wish to leave it to your expertise to determine when a patient has truly contracted a disease, as there are some ambiguous cases which might not necessitate an "UNWELL" status, such as asymptomatic coronavirus cases. + -------------------------------------------------------------------------------------------------------------------- ## Known issues 1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again. -2. **When using the `cluster` command**, search is purely based on text, which means inputting "ave" will find all patients whose addresses contain"ave", although they do not form a cluster. We suggest users to input text indicative of location, such as "Hougang". -3. **The `email` field** is case-sensitive, but in practical usage, email is case-insensitive. -4. **The `country` field** does not limit the input to alphabetical characters and is case-sensitive, which may lead to incorrect data entry. --------------------------------------------------------------------------------------------------------------------- - -## Command summary - -| Action | Format, Examples | -|------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| **Create** | `create ic/ n/ hp/ a/
dob/ s/ st/ [e/Email] [c/Country_of_Nationality] [doa/Date_of_Admission] [bt/Blood type] [al/Allergies] [con/Condition] [sym/Symptom] [d/diagnosis]`
e.g., `create ic/S1234567A n/John Doe hp/98765432 a/311, Clementi Ave 2, #02-25 dob/1990-01-01 s/M st/PENDING` | -| **Read** | `read `
e.g., `read S1234567A` | -| **Update** | `update /CONTENT`
e.g., `update S1234567A hp/91234567 e/jd123@example.com` | -| **Find** | `find n/KEYWORD`
e.g., `find n/Alex Bryan Charlie`
`find a/KEYWORD`
e.g., `find a/Serangoon, Geylang`
`find con/KEYWORD`
e.g., `find con/Covid, Ebola` | -| **Delete** | `delete `
e.g., `delete S1234567A` | -| **Delete Information** | `deleteinfo `
e.g., `deleteinfo S1234567A e/` | -| **Add Visit** | `addvisit ic/ dov/ sym/ d/ st/`
e.g., `addvisit ic/S1234567A dov/2024-01-01 sym/Cough d/Covid st/UNWELL` | -| **Check** | `check `
e.g., `check S1234567A` | -| **Find Cluster** | `cluster a/ d/diagnosis`
e.g. `cluster 3 a/Serangoon d/dengue` | -| **Clear** | `clear` | -| **List** | `list` | -| **Help** | `help` | -| **Exit** | `exit` | - -## Field summary - -| Field | Prefix | Format | Mandatory | -|----------------------------|--------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------| -| **Name** | `n/` | The name of the patient. Case-sensitive alphabetical characters with spaces, capped at 2,000,000,000 characters. | Yes | -| **NRIC** | `ic/` | Follows Singapore NRIC format. 9 characters. First character can be any of S, T, followed by 7 digits, and the last character is an alphabet. NRIC is case-insensitive. | Yes | -| **Phone Number** | `hp/` | 8 digits. | Yes | -| **Address** | `a/` | Any text. Blank or empty text is not accepted. | Yes | -| **Date of birth** | `dob/` | `yyyy-MM-dd` format. | Yes | -| **Sex** | `s/` | `M` or `F` | Yes | -| **Status** | `st/` | `PENDING`, `UNWELL`or `HEALTHY`. Status is case-insensitive. | Yes | -| **Email** | `e/` | Any valid email address of the form `local-part@domain`. Case-sensitive. | No | -| **Country of nationality** | `c/` | Any text. Blank or empty text is not accepted. | No | -| **Date of admission** | `doa/` | `yyyy-MM-dd` format. | No | -| **Blood type** | `bt/` | Any of `A+`, `A-`, `B+`, `B-`, `AB+`, `AB-`, `O+`, `O-` | No | -| **Allergies** | `al/` | Any text. Blank or empty text is not accepted. | No | -| **Condition** | `con/` | Any text. Blank or empty text is not accepted. | No | -| **Symptom** | `sym/` | Any text. Blank or empty text is not accepted. | No | -| **Diagnosis** | `d/` | Any text. Blank or empty text is not accepted. | No | -| **Date of visit** | `dov/` | `yyyy-MM-dd` format. | No | +2. **When using the `cluster` command**, search is purely based on text, which means inputting "ave" will find all unwell patients whose addresses contain "ave", despite the addresses not necessarily being close to one another. We suggest users to input text indicative of location, such as "Hougang". +3. **The `country` field** does not limit the input to alphabetical characters and is case-insensitive, which may lead to incorrect data entry. +4. **The `email` field** is case-sensitive, but in practical usage, email is case-insensitive. +5. **The `NRIC` field** cannot yet take NRIC numbers starting with F, G or M, which might cause inconvenience to a small segment of the Singapore population. +6. **The ImmuniMate icon** cannot be displayed on Windows systems, instead showing up as a brown square with a person icon. This is simply a cosmetic issue, so it should not pose other technical issues to Windows users. diff --git a/docs/images/AddVisitCommandResult.png b/docs/images/AddVisitCommandResult.png new file mode 100644 index 00000000000..1e19279aa5c Binary files /dev/null and b/docs/images/AddVisitCommandResult.png differ diff --git a/docs/images/CheckCommandResult.png b/docs/images/CheckCommandResult.png new file mode 100644 index 00000000000..babfe326a9d Binary files /dev/null and b/docs/images/CheckCommandResult.png differ diff --git a/docs/images/ClusterCommandResult.png b/docs/images/ClusterCommandResult.png new file mode 100644 index 00000000000..d6f95830e43 Binary files /dev/null and b/docs/images/ClusterCommandResult.png differ diff --git a/docs/images/CreateCommandResult.png b/docs/images/CreateCommandResult.png new file mode 100644 index 00000000000..c5470973be0 Binary files /dev/null and b/docs/images/CreateCommandResult.png differ diff --git a/docs/images/ErrorMessage.png b/docs/images/ErrorMessage.png new file mode 100644 index 00000000000..06b32ce8c8d Binary files /dev/null and b/docs/images/ErrorMessage.png differ diff --git a/docs/images/FindAddressCommandResult.png b/docs/images/FindAddressCommandResult.png new file mode 100644 index 00000000000..59d857f3dec Binary files /dev/null and b/docs/images/FindAddressCommandResult.png differ diff --git a/docs/images/FindConditionCommandResult.png b/docs/images/FindConditionCommandResult.png new file mode 100644 index 00000000000..11ef89f4ded Binary files /dev/null and b/docs/images/FindConditionCommandResult.png differ diff --git a/docs/images/FindNameCommandResult.png b/docs/images/FindNameCommandResult.png new file mode 100644 index 00000000000..f080023770c Binary files /dev/null and b/docs/images/FindNameCommandResult.png differ diff --git a/docs/images/GUIDetailed.png b/docs/images/GUIDetailed.png new file mode 100644 index 00000000000..53cc9fde18a Binary files /dev/null and b/docs/images/GUIDetailed.png differ diff --git a/docs/images/GithubReleasePage.png b/docs/images/GithubReleasePage.png new file mode 100644 index 00000000000..f7bbc29d3b7 Binary files /dev/null and b/docs/images/GithubReleasePage.png differ diff --git a/docs/images/JavaWebsite.png b/docs/images/JavaWebsite.png new file mode 100644 index 00000000000..1053bafe87e Binary files /dev/null and b/docs/images/JavaWebsite.png differ diff --git a/docs/images/KeyboardArrowKeys.png b/docs/images/KeyboardArrowKeys.png new file mode 100644 index 00000000000..6550cb80ebc Binary files /dev/null and b/docs/images/KeyboardArrowKeys.png differ diff --git a/docs/images/ReadCommandResult.png b/docs/images/ReadCommandResult.png new file mode 100644 index 00000000000..17ed0f922bd Binary files /dev/null and b/docs/images/ReadCommandResult.png differ diff --git a/docs/images/UpdateCommandResult.png b/docs/images/UpdateCommandResult.png new file mode 100644 index 00000000000..8bf4a6ee58b Binary files /dev/null and b/docs/images/UpdateCommandResult.png differ diff --git a/docs/images/findAlexDavid.png b/docs/images/findAlexDavid.png deleted file mode 100644 index 3acc2666e01..00000000000 Binary files a/docs/images/findAlexDavid.png and /dev/null differ diff --git a/docs/images/findSerangoon.png b/docs/images/findSerangoon.png deleted file mode 100644 index ab59f412f18..00000000000 Binary files a/docs/images/findSerangoon.png and /dev/null differ diff --git a/docs/team/johndoe.md b/docs/team/alex-setyawan.md similarity index 100% rename from docs/team/johndoe.md rename to docs/team/alex-setyawan.md diff --git a/src/main/java/seedu/address/logic/parser/CheckCommandParser.java b/src/main/java/seedu/address/logic/parser/CheckCommandParser.java index c3362f36f5b..7b623cc0a0c 100644 --- a/src/main/java/seedu/address/logic/parser/CheckCommandParser.java +++ b/src/main/java/seedu/address/logic/parser/CheckCommandParser.java @@ -26,7 +26,7 @@ public CheckCommand parse(String args) throws ParseException { } try { - return new CheckCommand(new Nric(trimmedArg)); + return new CheckCommand(new Nric(trimmedArg.toUpperCase())); } catch (IllegalArgumentException e) { throw new ParseException( String.format("%s", e.getMessage())); diff --git a/src/main/java/seedu/address/logic/parser/ReadCommandParser.java b/src/main/java/seedu/address/logic/parser/ReadCommandParser.java index f8d4caa7db2..6bbe1cbc99d 100644 --- a/src/main/java/seedu/address/logic/parser/ReadCommandParser.java +++ b/src/main/java/seedu/address/logic/parser/ReadCommandParser.java @@ -25,7 +25,7 @@ public ReadCommand parse(String args) throws ParseException { } try { - return new ReadCommand(new Nric(trimmedArg)); + return new ReadCommand(new Nric(trimmedArg.toUpperCase())); } catch (IllegalArgumentException e) { throw new ParseException( String.format("%s", e.getMessage()));