Research for this project was extremely crucial as we were not building on top of previous work. This had to be done from scratch and related work is sparse. Especially when in the context of industry, most work that has been is purely academic.
Clinical Decision Support Systems (CDSS) are systems intended to improve healthcare delivery by enhancing medical decision-making capabilities with targeted clinical knowledge, patient information, and other health information. Below is the general structure of such a system. It is key here to note that the ultimate goal is to assist clinicians in their work and not replace it. 2
There are also different kinds of CDSS that use different methods to provide support to clinicians. A few can be seen below.1
After understanding the academic background of the project the next step was to explore previous work that was done. From this we would be able to better understand what tools to use to realise the project.
Throughout our search we found only three somewhat similar implementations. The first and most thorough is Pearl AI. It works with 2D x-ray scans and is capable of segmenting individual tooth for the detection of pathological features. Unfortunately, this wasn't of much use as the goal of our project is to remain in the 3D realm to take advantage of the increased detail.
The second application is WearCompare. It intakes 3D scans of the same teeth over different time points and has the clinician manually select the surfaces to compare. Then it quantifies tooth wear progression. Although this uses 3D tooth models, it requires too much manual interaction and multiple scans. Our project has to be as automatic as possible using Artificial Intelligence to assist clinicians.
Lastly is OrthoAid. It provides dentists with enhanced tools for analysing 3D tooth models before and after operative dental study models. Similarly to the previous example, it uses 3D models but does not include any or very little automation on an AI basis. Furthermore, this app was very technical and difficult to use.
At first we decided to attempt creating the app with C# or C++ as our app had to be built for Windows and dealt with 3D models. We tried implementing some of the code for the OrthoAid app to render 3D images but failed to do so for some PLY files encoded in the binary format.
Therefore, we decided to switch to Python and find a library that can render both STL and PLY file formats. This was convenient as the algorithmic part of the app would also be written in Python. We decided on using Open3D for rendering PLY files as we found some previous examples on its integration with GUIs.
As for the GUI, at first we thought of PyQt6. However, there are licensing issues with this library as it is under a GPL commercial license. Hence we chose PySide2 which is identical to PyQt6 but is under a LGPL license so we could use it without facing issues in the future.
For data storage we decided to use SQLite to deploy a local database initially. This is because a remote database was not a high priority in our MoSCoW agreement.
As mentioned in the Project Research section on this page we decided on using the TWES 2.0 grading system for the general overal algorithm structure. This includes two sections. First the tooth wear screening phase where patient data such as age, alcohol consumption, etc is gathered along with their tooth scans. Then the tooth wear status phase. This is where the teeth are graded using the previously mentioned PointNet network implemented using PyTorch to grade the teeth.
This is done by grading each sextant (1/6th of the teeth) first by grading their respective individual teeth. Then based on the sextant graded, an overall score is given to the wear present within the teeth. After these results are calculated, they are used along with the patient data gathered during the first stage to suggest a treatment plan.
After the expansive research and testing we had done on varying technologies and algorithms, we selected the methods we thought would be most suitable given the client and user requirements we had previously established.
Aspect | Decision |
---|---|
Language | Python |
GUI | PySide2 |
Image Processing | Open3D |
Communication (Backend) | Flask |
Data Storage | SQLite & Azure |
Tooth Wear Grading DL | PyTorch |