SP-perio P4b Task 2: the final periodontal classification — per-axis
clinician override (caseMeta.<axis>Override) when set, else the pure
derivePerioClassification result (fed via buildDerivationInputFromState,
the same state adapter T1 built). Overrides never feed back into the
derivation itself — derived is always the untouched computed value, so
callers can always see both what the engine computed and what the
clinician actually chose.
SP-perio P4b Task 2: the final periodontal classification — per-axis clinician override (
caseMeta.<axis>Override) when set, else the purederivePerioClassificationresult (fed viabuildDerivationInputFromState, the same state adapter T1 built). Overrides never feed back into the derivation itself —derivedis always the untouched computed value, so callers can always see both what the engine computed and what the clinician actually chose.