Skip to content

Commit

Permalink
Merge branches 'master' and 'master' of https://github.com/ruth-lim/tp
Browse files Browse the repository at this point in the history
  • Loading branch information
Ruth Lim committed Nov 12, 2023
2 parents 45227d5 + 913ac5b commit 7db0c5a
Show file tree
Hide file tree
Showing 15 changed files with 329 additions and 133 deletions.
198 changes: 160 additions & 38 deletions docs/DeveloperGuide.md

Large diffs are not rendered by default.

10 changes: 7 additions & 3 deletions docs/UserGuide.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,16 @@ ToothTracker is a **Dental Clinic Administrative Management System** designed fo
From adding new patient and dentist profiles to seamlessly creating appointment schedules, ToothTracker is
engineered to simplify every aspect of your dental clinic administrative responsibilities.

<br>

**Why ToothTracker? Because Your Time Matters.** <br>
In your bustling dental clinic, time is the rarest commodity. That's why we designed ToothTracker to be swift like your service,
allowing you to manage patient and dentist records efficiently, schedule appointments without overlaps,
allowing you to **manage patient and dentist records efficiently**, **schedule appointments without overlaps**,
and ensure your clinic operates like a well-oiled machine — all through a versatile Command Line Interface (CLI)
that responds to your speedy typing, along with a Graphical User Interface (GUI) that includes a user-friendly calendar.

<br>

**ToothTracker's Core Features Designed with You in Mind**

- **Digital Record Keeping:** Say goodbye to cumbersome physical files — store and manage patients, dentists and appointments digitally.
Expand Down Expand Up @@ -739,7 +743,7 @@ data file at the next run. Hence, it is recommended to take a backup of the file
{% include page-break.html %}

## Troubleshooting

{: .no_toc}
#### Checking your system's Java version
Check that your system has the correct Java version (**Java 11 and above**) installed to run ToothTracker. Follow the steps below:
Expand All @@ -754,7 +758,7 @@ Check that your system has the correct Java version (**Java 11 and above**) inst
2. Type in `Terminal` and open the terminal.
3. Key in `java --version` and press `Return` to check your Java version.

- FOr Linux Users:
- For Linux Users:
1. Press `Ctrl + Alt + T` to open the Terminal.
2. Key in `java --version` and press `Enter` to check your Java version.

Expand Down
87 changes: 48 additions & 39 deletions docs/_includes/quickstart.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,22 +47,24 @@ Let's learn what each of these components does!

![ToothTracker UI](images/UiAnnotated.png){: .centered-image-full-size }

| | Component | Description |
|---|------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 | Menu Bar | The menu bar contains menu options to [exit](#exiting-the-program-exit) from ToothTracker and access [help](#viewing-help--help) resources. |
| 2 | Command Input | The command input is where you can key in your commands to tell ToothTracker what you want to get done. To learn more about ToothTracker's CLI, refer to the [next section](#toothtrackers-command-line-interface-cli). |
| 3 | Result Display | The result display area shows you the outcomes or feedback from your entered commands. |
| 4 | Patient List | This panel lists all patients currently registered in your clinic. It includes vital information such as names, contact details, and other fields. |
| 5 | Dentist List | Here, you'll find a roster of dentists associated with your clinic, complete with their specializations and contact information. |
| 6 | Appointment List | Check the appointment list for the schedule, status, and details of all clinic appointments. |
| 7 | Quick Notes | A dedicated space at the bottom of the Main Window for on-the-fly notes, reminders, or observations that you need to keep handy. |
| 8 | Saved Data File | For advanced users, the [file path](#glossary) displayed here is where ToothTracker stores your saved data (which you can [edit](#editing-the-data-file)). |

##### Quick Notes
| | Component | Description |
|---|-----------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 | Menu Bar | The menu bar contains menu options to [exit](#exiting-the-program-exit) from ToothTracker and access [help](#viewing-help--help) resources. |
| 2 | Command Input | The command input is where you can key in your commands to tell ToothTracker what you want to get done. To learn more about ToothTracker's CLI, refer to the [next section](#using-toothtrackers-cli). |
| 3 | Result Display | The result display area shows you the outcomes or feedback from your entered commands. |
| 4 | Patient List | This panel lists all patients currently registered in your clinic. It includes vital information such as names, contact details, and other fields. |
| 5 | Dentist List | Here, you'll find a roster of dentists associated with your clinic, complete with their specializations and contact information. |
| 6 | Appointment List | Check the appointment list for the schedule, status, and details of all clinic appointments. |
| 7 | [Quick Notes](#quick-notes) | A dedicated space at the bottom of the Main Window for on-the-fly notes, reminders, or observations that you need to keep handy. |
| 8 | Saved Data File | For advanced users, the [file path](#glossary) displayed here is where ToothTracker stores your saved data (which you can [edit](#editing-the-data-file)). |

{: .no_toc}
#### Quick Notes
Quick Notes is designed to enhance your efficiency by providing a space for immediate note-taking within the application.
Use the quick notes to help you capture important reminders or information swiftly without navigating away from the main window.

**How to use the Quick Notes:**<br>
{: .no_toc}
##### How to use the Quick Notes<br>

**1. Adding Notes**:
Click into the Quick Notes Box and type your notes.
Expand Down Expand Up @@ -97,71 +99,78 @@ It allows you to easily understand your clinic's appointments and availability a


### Using ToothTracker's CLI
ToothTracker is optimized for use via a Command Line Interface which means you can do what you want to get done just
ToothTracker is optimized for use via a CLI which means you can do what you want to get done just
by using text input (known as commands).

Right now, ToothTracker only understands certain commands (the complete list of commands can be found in [Features](#features))
and these commands must be formatted in a specific way.
It’s just the way ToothTracker is wired to think and listen. So let’s learn how to talk to ToothTracker!
and these commands must be formatted in a specific way. So let’s learn how to communicate your needs to ToothTracker!


{: .no_toc}
#### How to Input Commands
Think of the Command Input as ToothTracker’s ‘ears’. This is the rectangular text input box outlined in red below.
Think of the [Command Input](#main-window) as ToothTracker’s ‘ears’ — always ready to listen to your instructions.

1. Click on the Command Input box.
2. Type in your command.
3. Press ‘Enter’ on your keyboard (or ‘return’ if you're on a Mac).

That's it! ToothTracker has just executed your command. It’s that easy!
That's it! ToothTracker has just executed your command. Yes, it's as simple as that!

{: .no_toc}
#### Understanding Command Format
Every command you input follows a simple structure to help ToothTracker understand your needs:

* **Command Word:** This is the first word of your command. It acts like a direct order to ToothTracker, telling it precisely what action you want to take.
* **Index:** When your command relates to a specific patient, dentist or appointment, you'll use an index. It's a unique number assigned to each entry in the respective lists.
* **Command Word:** This is the first word of your command. It acts as a unique keyword that tells ToothTracker precisely what command you want to execute.
* **Index:** The index is simply a number to uniquely identify each patient, dentist or appointment. When your command relates to a specific patient, dentist or appointment, you'll need to use an index.
* **Flags:** These are markers to distinguish between inputs. A flag is usually followed by a placeholder.
* **Placeholders:** These are temporary labels that you'll replace with actual data. For instance, replace 'TREATMENT' in tr/TREATMENT with the real name of a treatment, like tr/Braces.
* **Placeholders:** These are temporary labels that you'll replace with actual data. For instance, replace 'TREATMENT' in `tr/TREATMENT` with the real name of a treatment, like `tr/Braces`.


### Trying out your first commands
Can't wait to get started with ToothTracker? Let's go through some simple commands together to get you warmed up before you dive into ToothTracker's full feature list!
Can't wait to get started with ToothTracker?
Let's go through some straightforward commands to get a feel for how easy managing your clinic's data can be.

<div markdown="span" class="alert alert-info">
<span id="text">
**:information_source:** Images in this section are only meant to be used as **references**.
Data shown in this sample reference may differ from the data stored in your ToothTracker.
**:information_source:** Remember, the images in this section are just **examples** to guide you.
Your ToothTracker will show information specific to your own clinic.
</span>
</div>


Let's start by going through some simple dentist-related commands!
Let's start with adding and managing your clinic's dental team:

1. **Welcoming a new dentist**:
Suppose Dr. Jonathan Goh is the latest addition to your dental team. Let's get him into the ToothTracker system. <br>
Type `add-dentist n/Jonathan Goh p/92095568 e/[email protected] y/3 s/Paediatric Dentistry` and press Enter.
- Just like that, Dr. Jonathan Goh is part of your digital roster!

1. Suppose you have a dentist, named Jonathan Goh, who joined your clinic. <br>
Try running the command `add-dentist n/Jonathan Goh p/92095568 e/[email protected] y/3 s/Paediatric Dentistry`.
- Notice that you've created a new dentist, Jonathan Goh!
![trying-command-add-dentist-example](images/ug/add-dentist-example.png){: .centered-image-full-size }

![trying-command-add-dentist-example](images/ug/add-dentist-example.png){: .centered-image-full-size }
2. **Saying farewell**: If Dr. Alex Yeoh is leaving your clinic, you can keep your records up-to-date by removing his details.
Simply run `delete-dentist 1`.
- After executing the command, Dr. Alex Yeoh's information is now deleted from ToothTracker.

2. Now, suppose that a dentist, Alex Yeoh, is leaving your clinic, and you want to delete his records from ToothTracker.
You can do this by running `delete-dentist 1`.
- After executing the command, Alex Yeoh is now deleted from ToothTracker!
<div markdown="span" class="alert alert-primary">
<span id="text">
**:bulb:** Always ensure the `DENTIST_ID` matches the identifier on the dentist's card within ToothTracker.
</span>
</div>

![trying-command-delete-dentist-example](images/ug/delete-dentist-example.png){: .centered-image-full-size }
![trying-command-delete-dentist-example](images/ug/delete-dentist-example.png){: .centered-image-full-size }

Now that you’ve been introduced to some dentist-related commands, let’s change things up by trying out some patient commands.
Now let's see how easy it is to manage patient information.

1. Suppose you have a new patient, named Jean, onboarding your clinic. <br>
Try entering the command `add-patient n/Jean p/95339212 b/14-09-2001 g/F`.
1. **Registering a new patient**: Suppose you have a new patient, named Jean, onboarding your clinic. <br>
Enter `add-patient n/Jean p/95339212 b/14-09-2001 g/F` and press enter.
- Notice that you've created a new patient, Jean!

![trying-command-add-patient-example](images/ug/add-patient-example.png){: .centered-image-full-size }
![trying-command-add-patient-example](images/ug/add-patient-example.png){: .centered-image-full-size }

2. Now, suppose that you want to change the phone number of your patient, Alex. Easy! Just type in `edit-patient 1 p/82019452`.
2. **Updating patient info**: Now, suppose that Alex wants to update his phone number. Easy! Just type in `edit-patient 1 p/82019452`.
- Done! Alex's phone number has been updated!

![trying-command-edit-patient-example](images/ug/edit-patient-example.png){: .centered-image-full-size }
![trying-command-edit-patient-example](images/ug/edit-patient-example.png){: .centered-image-full-size }

Awesome! Now that you've gotten familiar with ToothTracker's commands, feel free to explore more features in the
[Features](#features) section to fully leverage ToothTracker's capabilities.
29 changes: 17 additions & 12 deletions docs/diagrams/AddPatientActivityDiagram.puml
Original file line number Diff line number Diff line change
@@ -1,17 +1,22 @@
@startuml
skinparam ActivityFontSize 15
skinparam ArrowFontSize 12
start
:User Input;
if (valid input) then (yes)
:Check duplicate patient;
if (no duplicate patient) then (yes)
:Add patient into ToothTracker;
else (no)
:Throw error message;
endif
else (no)
:Throw error message;
:User executes "add-patient" command with required details;

if () then ([valid command])
:Create Patient object from command arguments;

:Check if Patient already exists in model;

if () then ([Patient already exists])
:Throw CommandException "Patient already exists";
else ([else])
:Add new Patient to model;
:Return message to show new Patient added;
endif

else ([else])
:Display error message for invalid command;
endif

stop
@enduml
6 changes: 3 additions & 3 deletions docs/diagrams/AddPatientSequenceDiagram.puml
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ box Model MODEL_COLOR_T1
participant ":Model" as Model MODEL_COLOR
end box

[-> LogicManager : execute("add-patient n/John Doe ...")
[-> LogicManager : execute("add-patient n/Jean p/95339212 b/14-09-2001 g/F")
activate LogicManager

LogicManager -> AddressBookParser : parseCommand("add-patient n/John Doe ...")
LogicManager -> AddressBookParser : parseCommand("add-patient n/Jean p/95339212 b/14-09-2001 g/F")
activate AddressBookParser

create AddPatientCommandParser
Expand All @@ -27,7 +27,7 @@ activate AddPatientCommandParser
AddPatientCommandParser --> AddressBookParser
deactivate AddPatientCommandParser

AddressBookParser -> AddPatientCommandParser : parse("n/John Doe ...")
AddressBookParser -> AddPatientCommandParser : parse("n/Jean p/95339212 b/14-09-2001 g/F")
activate AddPatientCommandParser

create AddPatientCommand
Expand Down
17 changes: 8 additions & 9 deletions docs/diagrams/AddTreatmentActivityDiagram.puml
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
@startuml
skinparam ActivityFontSize 15
skinparam ArrowFontSize 12
start
:User Input;
if (valid input) then (yes)
:Check duplicate treatment;
if (no duplicate treatment) then (yes)
:User executes "add-treatment" command;

if () then ([valid command])
:Check if it is a duplicate treatment;
if () then ([duplicate treatment])
:Add treatment into ToothTracker;
else (no)
else ([else])
:Throw error message;
endif
else (no)
:Throw error message;
else ([else])
:Display error message for invalid command;
endif
stop
@enduml
6 changes: 3 additions & 3 deletions docs/diagrams/DeletePatientActivityDiagram.puml
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@ if () then ([valid command])
:Parse PATIENT_ID from command arguments;

if () then ([Patient record exists])
:Retrieve patient by ID;
:Delete patient record;
:Retrieve Patient by ID;
:Delete Patient record;
:Return success message;
else ([else])
:Throw CommandException for no patient found;
:Throw CommandException for no Patient found;
endif

else ([else])
Expand Down
7 changes: 6 additions & 1 deletion docs/diagrams/DeletePatientSequenceDiagram.puml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,12 @@ deactivate AddressBookParser
LogicManager -> DeletePatientCommand : execute()
activate DeletePatientCommand

DeletePatientCommand -> Model : deletePatient(1)
DeletePatientCommand -> Model : getPatientById(1)
activate Model
Model --> DeletePatientCommand
deactivate Model

DeletePatientCommand -> Model : DeletePatient(1)
activate Model

Model --> DeletePatientCommand
Expand Down
Binary file modified docs/images/AddPatientActivityDiagram.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/images/AddPatientSequenceDiagram.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/images/AddTreatmentActivityDiagram.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/images/DeletePatientActivityDiagram.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/images/DeletePatientSequenceDiagram.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ title: ToothTracker
ToothTracker is an **All-in-One solution for Effortless Dental Clinic Record Management.**
While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).

* If you are interested in using ToothTracker, head over to the [**Installation Guide**](UserGuide.html#installation).
* If you are interested in using ToothTracker, head over to the [**Get Started with ToothTracker**](UserGuide.html#get-started-with-toothtracker).
* If you are interested about developing ToothTracker, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.


**Acknowledgements**

* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)
* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5), [CalendarFX](https://github.com/dlsc-software-consulting-gmbh/CalendarFX)
Loading

0 comments on commit 7db0c5a

Please sign in to comment.