How does Clear.Dental Work?

These are the individual modules that are used in Clear.Dental (schedule, operative, comprehensive-exam, etc.). Most of the front end code is written using QML. Any backend operations (read/write files) are written in C++.

This is more for behind the scenes work in terms of file input/output along with management of the git based database. There is also code here related to working with external APIs and also driver code.

(From Wikipedia) Qt (pronounced "cute") is a widget toolkit for creating graphical user interfaces as well as cross-platform applications that run on various software and hardware platforms such as Linux, Windows, macOS, Android or embedded systems with little or no change in the underlying codebase while still being a native application with native capabilities and speed.

Clear.Dental right now targets Qt 5.12 or later. Qt 6 support will be comming soon.

(From Wikipedia) KDE is an international free software community that develops free and open-source software. As a central development hub, it provides tools and resources that allow collaborative work on this kind of software. Well-known products include the Plasma Desktop (the default desktop environment on many Linux distributions), Frameworks and a range of cross-platform applications like Krita or digiKam designed to run on Unix and Unix-like desktops, Microsoft Windows and Android.

(From Wikipedia) Kubuntu (/kʊˈbʊntuː/ kuu-BUUN-too) is an official flavor of the Ubuntu operating system that uses the KDE Plasma Desktop instead of the GNOME desktop environment. As part of the Ubuntu project, Kubuntu uses the same underlying systems. Every package in Kubuntu shares the same repositories as Ubuntu, and it is released regularly on the same schedule as Ubuntu.

Right now, Clear.Dental requires Kubuntu 21.04 or later.

(From Wikipedia) Linux is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged in a Linux distribution.

Technical Details: The Clear.Dental Database

Overview

  • Each "trusted" computer has a git repo. Each operatory has a trusted computer. It is recommended (but not required) to have a “hub” computer to act like a pseudo server. However, it simply holds the “bare” repo and its primary purpose is to make it easier for all other trusted computers to pull the updates from a single source.
  • This git repo has the entire patient database along with information about the providers and the practice itself.
  • For the UI layer, any data I/O is done on the local disk. This ensures that even image files are loaded at instant speeds.
  • Each change to any file is followed-up with a git commit along with a comment (generated by the UI layer) on why the file was changed.
  • This change is immediately pushed. If a central computer is used, the commit will only be pushed there. If a strict decentralized system is utilized, then the commit is pushed to each of the trusted computers.
  • All of the pull/push is done via the ssh protocol that git supports. Each computer uses a RSA public key to be able to log in to another computer. This allows all the updates to be transparent.
  • Each minute (via a chron job), each computer will pull whatever update is available. This ensures that whatever is shown on the UI layer is at most 1 minute old. Any git pull can forced to update before the 1 minute mark.

Filesystem overview

Overview

[] = Comments or explaination of the format
{} = formatted filename or directory name

/home/$USER/clearDentalData/
    patData/
        {patientID}/ [LastName, FirstName (DOB Month-Day-Year)]
            appointments/
                {dateOfAppointment}.ini [Month-Day-Year@HH:mm AM/PM.ini; symbolic link to the practice appointment's folder's version]
            dental/
                EoE.ini [Extraoral exam findings]
                hardTissue.ini [hard tissue charting]
                IoE.ini [Intraoral exam findings]
                perio.ini [periodontal charting (includes diagnosis)]
                txPlan.json [treatment plan for the patient]
            financial/
                claims.json [claims for the patient for their insurance]
                dentalPlans.ini [information about the patient's dental plan(s)]
                ledger.json [full financial ledger (includes all forms of payment)]
            images/
                consents/
                    {date of the consent}/ [Month/Day/Year]
                        newPatient.png [New Patient consent signature]
                        {procedureConsent}.png [procedureName-tooth (skipped if N/A)-.png]
                photographs/
                    extraoral/
                        {date of the photo}/ [Month/Day/Year]
                            {kindOfPhoto}.jpg ["Smile Lateral Left" or "Maxillary Occlusal", etc.]
                        profile.jpg [main headshot picture]
                    intraoral/
                        {date of the photo}/ [Month/Day/Year]
                            {toothNumber.jpg}
                radiographs/
                    {date of the radiograph}/  [Month/Day/Year]
                        {kindOfRadiograph}.png [BW_Right_Mesial or PA_Maxillary_Right_Distal]
            medical/
                allergies.json [allergies the patient has]
                conditions.json [medical conditions the patient has]
                covidStatus.ini [results of the last COVID-19 screening]
                medicalInfo.ini [extra medical information like smoking, pregnancy, etc.]
                medications.json [medications the patient is taking (both what patient was precribed at office and from other offices)]
                vitals.ini [results of the last vitals check]
            caseNotes.json [all casenotes about the patient]
            messages.json [text messages in and out]
            newPatInterview.ini [answers to the questions asked from the new patient interview]
            personal.ini [personal information about the patient]
            reviews.ini [what has been reviewed with the patient like medical history or personal history]
    locInfo/
        local/ [Symoblic link to the practice the computer is located at]
        {Name of Practice}/
            appointments/
                {Date of the Appointment}/  [Month/Day/Year]
                    {appt#.ini} [Goes from 1 and onwards; holds all the information about the appointment]
            docs/ [Holds any extra paperwork that the practice needs]
            chairs.json [all the chairs in the practice (used to count the number of columns)]
            chairStatus.ini [If a hygiene chair is ready for the doctor for the exam check]
            labs.json [Information about the labs that the practice uses]
            newPatientComments.ini [follow-up information in trying to schedule the new patient's 1st appointment]
            prefs.ini [Information about the practice]
            sensorCalibrations.ini [Stored Calibrations for the radiograph sensors]
            covidScreenings.json [All COVID-19 screening results; full log of everyone]
    docPref/
        {username}/ [Normally the UnixID of the provider]
            prefs.ini [Information about the provider]