Feature #859
openImplement Periodontal (Perio) Chart with Data Capture, Calculation, and Visualization
100%
Description
Implement the Perio Chart visualization module in DentPal using periodontal exam and measurement data that has already been synchronized from PMS APIs and stored in the following tables:
> Patients
> PatientPerioExams
> PatientPerioMeasurements
This task focuses on:
- Retrieving periodontal exam data
- Transforming raw measurement records into a Template chart structure
- Performing auto-calculations
- Rendering the Perio Chart UI
Reference template:
Is Attached
Reference Documentation¶
- https://www.opendental.com/manual/perio.html
- https://www.opendental.com/manual243/graphicalperiochart.html
- https://www.opendental.com/site/apiperioexams.html
- https://www.opendental.com/site/apiperiomeasures.html
- https://www.opendental.com/OpenDentalDocumentation25-2.xml#periomeasure
Existing Database Structure¶
Patients
Stores patient demographic information.
Key Fields:
Field Description Id Internal Patient ID PMSPatientId PMS system identifier TenantId Tenant ClinicId Clinic PMSSourceSystem Source PMS
PatientPerioExams
Stores periodontal exam sessions.
Key Fields:
Field Description Id Internal Perio Exam ID PMSPerioExamID PMS exam identifier PatientId Patient reference ExamDate Date of exam ProviderId Dentist/Provider Note Exam notes
PatientPerioMeasurements
Stores individual periodontal measurements.
Key Fields:
Field Description Id Internal Perio Mesurement ID PerioExamID Exam reference PatientId Patient reference ToothNum Tooth number SurfaceCode Surface (MB, B, DB, ML, L, DL etc.) MeasurementType Type of measurement MeasurementValue Value
Measurement Types Expected
Typical MeasurementType values:
Type Mobility Furcation GingMargin MGJ Probing SkipTooth BleedSupPlaqCalc












Files
Updated by RishiKesh Tuniki about 2 months ago
- File clipboard-202603051554-bsyju.png clipboard-202603051554-bsyju.png added
- File clipboard-202603051555-509mb.png clipboard-202603051555-509mb.png added
- File clipboard-202603051555-jpsrb.png clipboard-202603051555-jpsrb.png added
- File clipboard-202603051556-gpytl.png clipboard-202603051556-gpytl.png added
- Description updated (diff)
Updated by RishiKesh Tuniki about 2 months ago
- Due date set to 03/17/2026
- Assignee set to Thuan L
Updated by RishiKesh Tuniki about 1 month ago
- Tracker changed from Bug to Feature
- Severity deleted (
Select Severity)
Updated by Redmine Admin about 1 month ago
- File perio-chart-v3.html perio-chart-v3.html added
@RishiKesh Tuniki and @Madhusudhana Akkasali - The requirements are very complex and we have got into a situation where utmost diligence is required - Basically we are emulating OpenDental in Read Mode
Ok Here is the first input - The SME on this has indicated that this will involve multiple interactions to get this closed out - First Level -1) Based on the Requirements analyzed He has indicated that the following Preview should be analyzed by the client and reviewed for the correctness of the interpretation and the logic and the color coding and the analysis or the outcome - So he has sent this Preview this is only to get the confirmation that they have analyzed the logic correctly -
Don't send it to Client yet - Let thaun analyze this and see if he can use this kind of outputs and once he confirms we can send it to the client with a time bound limit of a day to get the feedback - Attached is the preview
Updated by Redmine Admin about 1 month ago
- File INTEGRATION_GUIDE.md INTEGRATION_GUIDE.md added
SME has sent this detailed outputs - please review the same in context with the previous HTML preview -There is a detailed integration Guide - Which has all the pertinent details
@Madhusudhana Akkasali and @RishiKesh Tuniki
What Thuan can do while the Client is previewing is analyze this and see if any adjustments or refinements is needed - If he can readily use this he can start the activity to implement this is the shortest possible time - And have this sent for testing - If the client comes back with some changes we will review that because Thauns effort will not alter as he is doing the integration to get this a small logic tweak may be needed - The Detailed folder contenet will be sent in EMAIL
Updated by Redmine Admin about 1 month ago
@RishiKesh Tuniki and @Thuan L Here is the psuedo code -Please explore at that end - I will be monitoring this critical activity daily.
Updated by RishiKesh Tuniki about 1 month ago
- File clipboard-202603182210-reygd.png clipboard-202603182210-reygd.png added
- File clipboard-202603182210-3uvdv.png clipboard-202603182210-3uvdv.png added
Perio Chart Behavior Clarification (as per OpenDental reference)¶
The Perio Chart implementation in DentPal should follow the behavior of OpenDental’s patient perio chart with respect to exam selection and data visualization.
1. Exam Selection & Display Logic¶
- The chart should support displaying data for up to the last 3 exams.
- When the latest exam is selected:
- Probing depths and bleeding/suppuration indicators should display for all last 3 exams.
- When an older exam is selected:
- Only the selected exam should be shown.
- Remaining rows (up to 3 total) should appear as empty placeholders.
2. Probing Depths & Bleeding Indicators¶
- These are multi-record values, and should always be rendered per exam (row-wise).
- Each row corresponds to one exam (max 3 rows).
3. Other Measurement Values (MGJ, CAL, Gingival Margin, etc.)¶
- These should follow an overlay (fallback) logic:
- If the selected/latest exam has a value for a specific position, display it.
- If missing, fallback to the previous exam’s value for the same position.
- Continue fallback up to 3 exams max.
4. Visual Differentiation¶
- The latest/selected exam values should be displayed normally.
- Values coming from previous exams (fallback) should be shown in a slightly dull/lighter color to indicate historical data.
Exam 1 is Selected

Exam 2 is Selected

This ensures consistency with OpenDental behavior while clearly handling missing data and multi-exam visualization.
Updated by RishiKesh Tuniki 25 days ago
Position Label
Top Left DB
Top Right MB
Bottom Left DL
Bottom Right ML
(Top / Buccal)
DB MB
DL ML
(Bottom / Lingual)
The -1 indieactes the Vaoues is no present should be indecated a missing value
Updated by RishiKesh Tuniki 25 days ago
- PATIENT
Current: Unknown
Update: Fetch Patient Name from Patient table
Patient.Name -- or CONCAT(FName, ' ', LName)
2. DOB
Current: —
Update: Fetch from Patient table
Patient.DOB
3. PROVIDER
Current: Showing ID
Update: Fetch Provider Name from Provider table
Provider.Name -- or CONCAT(FName, ' ', LName)
4. RECORDED BY
❌ Remove this column completely from UI