System Design

System Architecture

This is our general system architecture diagram.

This is a detailed system architecture diagram.

PySide and Open3d is used for the front-end, to build the user interface and to display tooth models in STL/PLY file format. Our front-end UI accepts a patient’s medical background and their 3D tooth scans as input. It provides the interface to interact with the database, view 3D models, and receive prediction results.

Our back-end consists of a controller module which contains the primary back-end logic for mediating requests from the client and generating responses from the rest of the back-end. We use Flask and Python Requests library to handle HTTP response and request, sending and receiving data between the client and server. SQLite is used to store user's credentials and patient's information. Deep learning model for tooth wear grading is implemented with PyTorch.

Design Pattern

We used the Model-View-Controller (MVC) architecture in our project. It is a software design pattern that separates our application into three interconnected components: the model, the view, and the controller. We used the MVC architecture because it promotes separation of concern, which makes the code easier to understand, modify, and maintain. Besides, MVC is modular, it allows developers to work on different components of the application at the same time without interfering with each other's work, which can improve development efficiency.

The diagram below shows how MVC architecture is implemented in our project.

Database Structure

The database consists of two tables. The first table is called "Dentists", it stores user's credentials such as id, username and password. ID is automatically created and incremented every time a new user registers.

The second table is called "Patients", it stores patient's information that are relevant to decide tooth wear degree and generate treatment plans. Patient's tooth model is stored as binary encoded files. Besides upper scans and lower scans, we also require users to upload sextant scans (1/6th of the whole teeth, containing 4 to 6 teeth) because our deep learning model is trained using sextant scans due to lack of data. Wear3D will provide prediction of tooth wear grade based on the file uploaded in sextant scans.