Compare two EXPORTED exams of the same mouth — before as charted then,
after as charted now.
getPlanChanges() diffs the two charts of ONE exam (what the clinician plans
to change); this diffs one chart across TWO exams (what actually changed
since last time), which is the question a recall appointment asks. A host
keeping a timeline of exports holds both payloads; nothing else is needed.
Pure and read-only: it never touches the live charts, so it can be called
while the clinician is working, and the active chart is irrelevant to the
result. Each payload is hydrated under ITS OWN version rule (the same one
importStatus() applies), so an old export compares faithfully. Tolerant of
a malformed or empty payload — an unreadable tooth compares as the clinical
default rather than throwing.
Compare two EXPORTED exams of the same mouth —
beforeas charted then,afteras charted now.getPlanChanges()diffs the two charts of ONE exam (what the clinician plans to change); this diffs one chart across TWO exams (what actually changed since last time), which is the question a recall appointment asks. A host keeping a timeline of exports holds both payloads; nothing else is needed.Pure and read-only: it never touches the live charts, so it can be called while the clinician is working, and the active chart is irrelevant to the result. Each payload is hydrated under ITS OWN version rule (the same one
importStatus()applies), so an old export compares faithfully. Tolerant of a malformed or empty payload — an unreadable tooth compares as the clinical default rather than throwing.