Project

General

Profile

Actions

Feature #859

open

Implement Periodontal (Perio) Chart with Data Capture, Calculation, and Visualization

Added by RishiKesh Tuniki about 2 months ago. Updated 24 days ago.

Status:
Resolved
Priority:
Normal
Assignee:
Start date:
03/05/2026
Due date:
03/17/2026 (33 days late)
% Done:

100%

Estimated time:
Test Phase:
Select Test Phase

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

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

PERIO EXAM TEMPLATE.xlsx (13.4 KB) PERIO EXAM TEMPLATE.xlsx RishiKesh Tuniki, 03/05/2026 04:48 AM
PERIO EXAM TEMPLATE.pdf (45 KB) PERIO EXAM TEMPLATE.pdf RishiKesh Tuniki, 03/05/2026 04:48 AM
clipboard-202603051550-l18kw.png (23.3 KB) clipboard-202603051550-l18kw.png RishiKesh Tuniki, 03/05/2026 05:20 AM
clipboard-202603051550-xulho.png (5.82 KB) clipboard-202603051550-xulho.png RishiKesh Tuniki, 03/05/2026 05:20 AM
clipboard-202603051551-y88u0.png (18.8 KB) clipboard-202603051551-y88u0.png RishiKesh Tuniki, 03/05/2026 05:21 AM
clipboard-202603051551-lcb65.png (11.6 KB) clipboard-202603051551-lcb65.png RishiKesh Tuniki, 03/05/2026 05:21 AM
clipboard-202603051551-j5wqt.png (11.9 KB) clipboard-202603051551-j5wqt.png RishiKesh Tuniki, 03/05/2026 05:21 AM
clipboard-202603051552-8hbq7.png (6.98 KB) clipboard-202603051552-8hbq7.png RishiKesh Tuniki, 03/05/2026 05:22 AM
clipboard-202603051552-6ja6w.png (6.04 KB) clipboard-202603051552-6ja6w.png RishiKesh Tuniki, 03/05/2026 05:22 AM
clipboard-202603051552-32orm.png (14.7 KB) clipboard-202603051552-32orm.png RishiKesh Tuniki, 03/05/2026 05:22 AM
clipboard-202603051554-bsyju.png (12.7 KB) clipboard-202603051554-bsyju.png RishiKesh Tuniki, 03/05/2026 05:24 AM
clipboard-202603051555-509mb.png (13 KB) clipboard-202603051555-509mb.png RishiKesh Tuniki, 03/05/2026 05:25 AM
clipboard-202603051555-jpsrb.png (10.6 KB) clipboard-202603051555-jpsrb.png RishiKesh Tuniki, 03/05/2026 05:25 AM
clipboard-202603051556-gpytl.png (24.1 KB) clipboard-202603051556-gpytl.png RishiKesh Tuniki, 03/05/2026 05:26 AM
perio-chart-v3.html (35.6 KB) perio-chart-v3.html Redmine Admin, 03/11/2026 01:44 PM
INTEGRATION_GUIDE.md (6.17 KB) INTEGRATION_GUIDE.md Redmine Admin, 03/11/2026 01:59 PM
dentpal-perio-chart-scaffold.zip (27.6 KB) dentpal-perio-chart-scaffold.zip Redmine Admin, 03/11/2026 02:05 PM
clipboard-202603182210-reygd.png (47.6 KB) clipboard-202603182210-reygd.png RishiKesh Tuniki, 03/18/2026 12:40 PM
clipboard-202603182210-3uvdv.png (40.9 KB) clipboard-202603182210-3uvdv.png RishiKesh Tuniki, 03/18/2026 12:40 PM
PERIO EXAM TEMPLATE.pdf
clipboard-202603051550-l18kw.png
clipboard-202603051550-xulho.png
clipboard-202603051551-y88u0.png
clipboard-202603051551-lcb65.png
clipboard-202603051551-j5wqt.png
clipboard-202603051552-8hbq7.png
clipboard-202603051552-6ja6w.png
clipboard-202603051552-32orm.png
clipboard-202603051554-bsyju.png
clipboard-202603051555-509mb.png
clipboard-202603051555-jpsrb.png
clipboard-202603051556-gpytl.png
clipboard-202603182210-reygd.png
clipboard-202603182210-3uvdv.png
Actions #2

Updated by RishiKesh Tuniki about 2 months ago

  • Due date set to 03/17/2026
  • Assignee set to Thuan L
Actions #3

Updated by RishiKesh Tuniki about 1 month ago

  • Tracker changed from Bug to Feature
  • Severity deleted (Select Severity)
Actions #4

Updated by Redmine Admin about 1 month ago

@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

Actions #5

Updated by Redmine Admin about 1 month ago

@Thuan L

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

Actions #6

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

clipboard-202603182210-reygd.png
clipboard-202603182210-3uvdv.png

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.

Actions #8

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

Actions #9

Updated by RishiKesh Tuniki 25 days ago

  1. 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

Actions #10

Updated by Thuan L 24 days ago

  • Status changed from New to Resolved
  • % Done changed from 0 to 100
Actions

Also available in: Atom PDF