Odontograms (Dental)
A complete guide to the Odontograms module — dental charting, tooth condition mapping, treatment tracking, and managing patient dental records.
Written By Dev010
Last updated 19 days ago
The Odontograms module provides interactive dental charting for dental clinic types. It allows doctors to map tooth conditions, record diagnoses per tooth, and track treatments across a patient's full 32-tooth dental chart. Each odontogram represents a snapshot of a patient's dental health at a specific examination date.
Dental clinics only. The Odontograms module appears in the sidebar exclusively for clinics with type set to
dental. General and ophthalmology clinics use the Medical Records module instead. To switch clinic type, go to Dashboard → Settings → Clinic.
Accessing the Module
Sidebar → Odontograms
Direct URL:
https://yourdomain.com/dashboard/odontogramsWho can access:
What Is an Odontogram
An odontogram is a standardized dental chart that maps the condition of each tooth in a patient's mouth. CareNova uses the universal 32-tooth numbering system covering:
16 upper teeth (maxillary arch)
16 lower teeth (mandibular arch)
Each tooth can be individually selected on the chart and assigned one or more conditions — such as decay, missing, crowned, filled, or extracted. The chart provides a visual map that dentists can review at a glance during any subsequent visit.
Odontogram List
The main odontograms page shows a paginated, searchable list of all dental charts across all patients.
Each row displays:
Patient name
Examining doctor
Examination date
Status
Version number
Action buttons (view, edit, delete)
Search
The search bar filters odontograms by:
Patient name
Doctor name
Creating an Odontogram
Click the New Odontogram button on the odontograms list page.
Required Fields
Optional Fields
Tooth Data
The core of the odontogram is the interactive tooth chart. After selecting a patient and doctor:
Click any tooth on the chart to select it
Assign one or more conditions to the selected tooth
Repeat for each tooth that requires documentation
Tooth data is stored as a JSON array in
tooth_data
Tooth Conditions
Common conditions that can be mapped per tooth:
Condition options are rendered from the odontogram editor component. The full list of available conditions depends on the tooth chart implementation in the codebase.
Treatments
The odontogram also supports a treatments field — a JSON array that records procedures performed or planned per tooth during the visit:
Treatments are stored in the treatments jsonb column alongside tooth_data.
Saving the Odontogram
Click Save Odontogram to create the record. The odontogram is saved with version 1 and status active. It appears immediately in the odontograms list.
Versioning
Each odontogram has a version number starting at 1. When a patient returns for a follow-up examination, a new odontogram record is created for that visit rather than overwriting the previous one.
This means a patient can have multiple odontogram records over time — one per examination — giving a complete history of how their dental health has changed across visits.
To view a patient's full dental history, filter the odontograms list by patient name and review all records chronologically.
Odontogram Status
Editing an Odontogram
Click the Edit button on any odontogram row to update the record.
All fields are editable including the tooth chart conditions, treatments, diagnosis, and notes. Editing updates the existing record in place — it does not create a new version.
To record a new examination for the same patient, create a new odontogram rather than editing the existing one. This preserves the examination history.
Teeth Images
The odontogram chart uses tooth images to render the visual dental chart. Images are served from:
GET /api/teeth-imageBy default, teeth images are loaded from an external base URL. If you want to self-host them, set the environment variable:
TEETH_IMAGES_BASE_URL=https://yourdomain.com/teethThen run the download script to fetch all tooth images locally:
npm run download-teethThis downloads tooth images into the public/ directory so they are served from your own domain.
If tooth images are not loading in the odontogram chart, confirm
TEETH_IMAGES_BASE_URLis set correctly or that the default external image URL is accessible from your deployment environment.
Viewing Odontograms Per Patient
To review all odontogram records for a specific patient:
Sidebar → Odontograms
Search by patient name in the search bar
All odontograms for that patient appear sorted by examination date
Alternatively, access the patient detail page for a full history view:
Sidebar → Patients
Find the patient → View Full Profile
Navigate to the relevant tab
Database Schema Reference
odontograms
tooth_data JSON Structure
Each entry in the tooth_data array represents one tooth:
[ { "toothNumber": 11, "conditions": ["decay", "filled"],
"notes": "Mesial decay, composite fill"
},
{
"toothNumber": 36,
"conditions": ["missing"],
"notes": "Extracted 2023"
}
]treatments JSON Structure
Each entry in the treatments array represents one treatment:
[ { "toothNumber": 11, "type": "Composite Filling", "status": "completed", "notes": "Mesial surface restored" }, { "toothNumber": 18, "type": "Extraction", "status": "planned", "notes": "Wisdom tooth removal scheduled" }]Relationship to Other Modules
Workflow Examples
Recording a new patient's initial dental examination:
Sidebar → Odontograms → New Odontogram
Select patient and doctor
Set examination date to today
Click each affected tooth on the chart
Assign conditions per tooth
Add any planned treatments
Enter overall diagnosis and notes
Save — version 1 created
Recording a follow-up examination:
Sidebar → Odontograms → New Odontogram
Select the same patient
Set new examination date
Map current tooth conditions (may differ from previous visit)
Record completed and new planned treatments
Save — new record created (previous examination preserved)
Reviewing a patient's dental history before a visit:
Sidebar → Odontograms
Search by patient name
Review all records sorted by examination date
Compare tooth conditions across versions to track progression or improvement
Checking planned treatments before a procedure:
Open the patient's most recent odontogram
Review the treatments JSON for entries with
status: "planned"Update to
status: "completed"after the procedure
Troubleshooting
Odontograms not in sidebar:
Confirm clinic type is set to
dentalin Dashboard → Settings → ClinicGeneral and ophthalmology clinic types do not show this module
Confirm your role has
odontogram.viewpermission in Dashboard → Permissions
Tooth images not loading in the chart:
Check browser console for image load errors
Confirm
TEETH_IMAGES_BASE_URLis set correctly if self-hostingRun
npm run download-teethto download images locallyCheck that
/api/teeth-imageroute is accessible
Tooth conditions not saving:
Confirm you have
odontogram.createorodontogram.editpermissionCheck browser console for any form validation errors
Confirm
tooth_datais being populated — check Supabase → Table Editor → odontograms
Cannot find previous examination for a patient:
Search by patient name in the odontograms list
Previous examinations are stored as separate records — each with a different version number and examination date
Sort by
examined_atdescending to see the most recent first
New Odontogram button missing:
Confirm your role has
odontogram.createpermissionOnly Admin and Doctor roles have create access by default
Next Step
Continue to the Invoices & Billing module guide to learn how to create and manage patient invoices in CareNova.