diff --git a/docs/UserGuide.md b/docs/UserGuide.md
index 3ed0c92a5fb..f7a4c6408b5 100644
--- a/docs/UserGuide.md
+++ b/docs/UserGuide.md
@@ -83,9 +83,11 @@ Now that you're familiar with the annotations and text styles, we will give you
2. Run the command `java -version` to check if you have Java 11 or above installed in your computer.
* Assuming that you have Java installed in your computer,
* If you have a Windows, in this case the Java version is 19.0.2.
- ![javaWindows](images/javaWindows.png)
+ ![javaWindows](images/javaWindows.png)
+
* If you have a Mac, in this case the Java version is 11.0.19.
![javaMac](images/javaMac.png)
+
3. If you do not have Java 11 or above installed in your computer, download it from [here](https://www.oracle.com/java/technologies/javase-jdk11-downloads.html).
### Setting up
@@ -147,7 +149,7 @@ Now that you're familiar with the annotations and text styles, we will give you
Shows a message explaining how to access the help page.
-![help message](images/helpMessage.png)
+![help message](images/newhelpwindow.png)
Format: `help`
@@ -158,19 +160,22 @@ Adds a person to ClinicMate.
Format: `add n/NAME p/PHONE e/EMAIL i/IC_NUMBER ag/AGE s/SEX a/ADDRESS`
* A person will be uniquely identified by his/her personal identification number.
-* Clinic mate does not allow the same identification number to be twice.
+* ClinicMate does not allow the same identification number to be used twice.
-**Tip:** A person can have a note included.
+**Tip:** A person can have a note included (See [addnote](#adding-a-note--addnote) command).
Examples:
* `add n/John Doe p/88888888 e/johndoe@mail.com i/T0123456A ag/12 s/Male a/John street, block 123, #01-01`
+What a successful `add` command looks like:
+![successful_add](images/successfuladd.png)
+
### Adding a note : `addnote`
-Add a note to an existing person in CLinicMate.
+Add a note to an existing person in ClinicMate.
Format: `addnote IC_NUMBER n/NOTE (-replace)`
@@ -181,12 +186,15 @@ Format: `addnote IC_NUMBER n/NOTE (-replace)`
* The `-replace` flag can be used to replace the current note with the new note.
Examples:
-* `addnote T0123456A n/Patient has diabetes` Adds a note `Patient has diabetes` to the person with the IC number `T0123456A` in CLinicMate.
+* `addnote T0123456A n/Patient has diabetes` Adds a note `Patient has diabetes` to the person with the IC number `T0123456A` in ClinicMate.
* `addnote T0123456A n/Patient has diabetes -replace` Replaces the note of the person with the IC number `T0123456A` with `Patient has diabetes`.
+What a successful `addnote` command looks like:
+![successful_addnote](images/successfuladdnote.png)
+
### Locating persons by ic number: `find`
-Find an existing person in CinicMate using their IC_NUMBER.
+Find an existing person in ClinicMate using their IC_NUMBER. Displays their contact information on the left-hand side of the screen and their full notes on the right-hand side.
Format: `find IC_NUMBER`
@@ -200,6 +208,9 @@ Format: `find IC_NUMBER`
Examples:
* `find T0123456A` returns `John Doe`.
+What a successful `find` command looks like:
+![successful_find](images/successfulfind.png)
+
### Deleting a person : `delete`
Deletes the specified person from ClinicMate using their IC_NUMBER.
@@ -216,6 +227,9 @@ Format: `delete IC_NUMBER`
Examples:
* `delete T0123456A` deletes `John Doe` who has `IC_NUMBER` of `T0123456A` from ClinicMate.
+What a successful `delete` message looks like:
+![successful_deletemessage](images/successfuldeletemessage.png)
+
### Listing all entries : `list`
Lists all entries from the ClinicMate.
@@ -249,23 +263,33 @@ If your changes to the data file makes its format invalid, ClinicMate will disca
Furthermore, certain edits can cause the ClinicMate to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.
-### Archiving data files `[coming in v2.0]`
-
-_Details coming soon ..._
-
--------------------------------------------------------------------------------------------------------------------
## FAQ
+**Q**: When using multiple screens, moving the application to a secondary screen and later switching to using only the primary screen, the GUI opens off-screen. What do I do?
+**A**: Delete the `preferences.json` file created by the application before running the application again.
+
+**Q**: Is there a limit to the number of patient records ClinicMate can manage?
+**A**: ClinicMate is designed to handle a large number of patient records efficiently. However, performance may vary depending on the hardware specifications of your computer and the amount of data being managed.
+
**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 CLinicMate home folder.
+**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 ClinicMate home folder.
---------------------------------------------------------------------------------------------------------------------
+**Q**: Can I export patient data from ClinicMate for reporting or backup purposes?
+**A**: Currently, ClinicMate does not support direct export of patient data. However, you can manually copy the data from the data file located at `[JAR file location]/data/clinicmate.json` for backup or reporting purposes.
+
+**Q**: Can I customize the fields for patient records in ClinicMate?
+**A**: ClinicMate currently supports predefined fields for patient records (name, phone, email, IC number, age, sex, address). Customization of fields is not supported in the current version.
-## Known issues
+**Q**: How secure is the patient data stored in ClinicMate?
+**A**: ClinicMate stores patient data locally on your computer in a JSON file. It is recommended to keep your computer secure and up-to-date with the latest security patches to ensure the safety of patient data.
-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.
+**Q**: Is there a way to import patient data into ClinicMate from other software?
+**A**: ClinicMate does not currently support direct import of patient data from other software. However, you can manually enter patient data using the `add` command.
+**Q**: Can I use ClinicMate on multiple computers?
+**A**: Yes, you can use ClinicMate on multiple computers. Simply copy the ClinicMate `.jar` file and the `clinicmate.json` data file to the other computer and run the application as usual.
--------------------------------------------------------------------------------------------------------------------
## Command summary
diff --git a/docs/images/newhelpwindow.png b/docs/images/newhelpwindow.png
new file mode 100644
index 00000000000..32ec09b9574
Binary files /dev/null and b/docs/images/newhelpwindow.png differ
diff --git a/docs/images/successfuladd.png b/docs/images/successfuladd.png
new file mode 100644
index 00000000000..644de335226
Binary files /dev/null and b/docs/images/successfuladd.png differ
diff --git a/docs/images/successfuladdnote.png b/docs/images/successfuladdnote.png
new file mode 100644
index 00000000000..9079de74de3
Binary files /dev/null and b/docs/images/successfuladdnote.png differ
diff --git a/docs/images/successfuldeletemessage.png b/docs/images/successfuldeletemessage.png
new file mode 100644
index 00000000000..d2554bca456
Binary files /dev/null and b/docs/images/successfuldeletemessage.png differ
diff --git a/docs/images/successfulfind.png b/docs/images/successfulfind.png
new file mode 100644
index 00000000000..43be61012b1
Binary files /dev/null and b/docs/images/successfulfind.png differ
diff --git a/src/main/java/seedu/address/logic/parser/CliSyntax.java b/src/main/java/seedu/address/logic/parser/CliSyntax.java
index 86035d68212..a74eb5cb976 100644
--- a/src/main/java/seedu/address/logic/parser/CliSyntax.java
+++ b/src/main/java/seedu/address/logic/parser/CliSyntax.java
@@ -6,14 +6,14 @@
public class CliSyntax {
/* Prefix definitions */
- public static final Prefix PREFIX_NAME = new Prefix("n/");
- public static final Prefix PREFIX_IC_NUMBER = new Prefix("i/");
- public static final Prefix PREFIX_AGE = new Prefix("ag/");
- public static final Prefix PREFIX_SEX = new Prefix("s/");
- public static final Prefix PREFIX_ADDRESS = new Prefix("a/");
- public static final Prefix PREFIX_EMAIL = new Prefix("e/");
- public static final Prefix PREFIX_PHONE = new Prefix("p/");
- public static final Prefix PREFIX_TAG = new Prefix("t/");
- public static final Prefix PREFIX_NOTE = new Prefix("n/");
+ public static final Prefix PREFIX_NAME = new Prefix("n\\");
+ public static final Prefix PREFIX_IC_NUMBER = new Prefix("i\\");
+ public static final Prefix PREFIX_AGE = new Prefix("ag\\");
+ public static final Prefix PREFIX_SEX = new Prefix("s\\");
+ public static final Prefix PREFIX_ADDRESS = new Prefix("a\\");
+ public static final Prefix PREFIX_EMAIL = new Prefix("e\\");
+ public static final Prefix PREFIX_PHONE = new Prefix("p\\");
+ public static final Prefix PREFIX_TAG = new Prefix("t\\");
+ public static final Prefix PREFIX_NOTE = new Prefix("n\\");
public static final Prefix PREFIX_FLAG = new Prefix("-replace");
}
diff --git a/src/main/java/seedu/address/model/person/IdentityCardNumber.java b/src/main/java/seedu/address/model/person/IdentityCardNumber.java
index c64d7629111..151c6b2a852 100644
--- a/src/main/java/seedu/address/model/person/IdentityCardNumber.java
+++ b/src/main/java/seedu/address/model/person/IdentityCardNumber.java
@@ -11,7 +11,7 @@ public class IdentityCardNumber {
public static final IdentityCardNumber DEFAULT = new IdentityCardNumber("S0000000A");
public static final String MESSAGE_CONSTRAINTS =
- "IC number starts with one letter (S,T,F,G,M) followed by seven digits and one letter behind"
+ "IC number starts with one letter (S,T,F,G,M) followed by seven digits and one letter behind.\n"
+ " It is case insensitive. An example is S1234567A.";
public static final String VALIDATION_REGEX = "[STFGMstfgm][0-9]{7}[A-Z,a-z]";
diff --git a/src/main/java/seedu/address/model/person/Name.java b/src/main/java/seedu/address/model/person/Name.java
index 173f15b9b00..40ebc970d8f 100644
--- a/src/main/java/seedu/address/model/person/Name.java
+++ b/src/main/java/seedu/address/model/person/Name.java
@@ -10,13 +10,14 @@
public class Name {
public static final String MESSAGE_CONSTRAINTS =
- "Names should only contain alphanumeric characters and spaces, and it should not be blank";
+ "Names should only contain alphanumeric characters, special characters ('-', '/', ',') and space.\n"
+ + "It should also not be blank";
/*
* The first character of the address must not be a whitespace,
* otherwise " " (a blank string) becomes a valid input.
*/
- public static final String VALIDATION_REGEX = "[\\p{Alnum}][\\p{Alnum} ]*";
+ public static final String VALIDATION_REGEX = "[\\p{Alnum}\\-/,][\\p{Alnum}\\-/, ]*";
public final String fullName;
diff --git a/src/main/java/seedu/address/ui/PersonCard.java b/src/main/java/seedu/address/ui/PersonCard.java
index 412bbf6861a..9ad3d57b343 100644
--- a/src/main/java/seedu/address/ui/PersonCard.java
+++ b/src/main/java/seedu/address/ui/PersonCard.java
@@ -55,8 +55,12 @@ public PersonCard(Person person, int displayedIndex) {
this.person = person;
id.setText(displayedIndex + ". ");
name.setText(person.getName().fullName);
- phone.setText(person.getPhone().value);
- email.setText(person.getEmail().value);
+
+ StringBuilder truncatedPhone = new StringBuilder();
+ phone.setText(truncatedPhone.append("Phone: ").append(person.getPhone().value).toString());
+
+ StringBuilder truncatedEmail = new StringBuilder();
+ email.setText(truncatedEmail.append("Email: ").append(person.getEmail().value).toString());
String fullNote = person.getNote().value;
int maxLineLength = 30; // Maximum length of each line before truncation
@@ -91,6 +95,7 @@ public PersonCard(Person person, int displayedIndex) {
ic.setText(person.getIdentityCardNumber().value);
age.setText(String.valueOf(person.getAge().value));
sex.setText(person.getSex().value);
- address.setText(person.getAddress().value);
+ StringBuilder truncatedAddress = new StringBuilder();
+ address.setText(truncatedAddress.append("Address: ").append(person.getAddress().value).toString());
}
}
diff --git a/src/main/resources/view/LightTheme.css b/src/main/resources/view/LightTheme.css
index a3aea4c09c0..fac701c3fa5 100644
--- a/src/main/resources/view/LightTheme.css
+++ b/src/main/resources/view/LightTheme.css
@@ -188,7 +188,7 @@
}
.context-menu .label {
- -fx-text-fill: white;
+ -fx-text-fill: black;
}
.menu-bar {
diff --git a/src/main/resources/view/PersonListCard.fxml b/src/main/resources/view/PersonListCard.fxml
index a19a92f8cae..3594f7d7038 100644
--- a/src/main/resources/view/PersonListCard.fxml
+++ b/src/main/resources/view/PersonListCard.fxml
@@ -40,15 +40,12 @@
-
-
-