SP6 Task 4 (§7): the recurrent ("sub") caries surfaces on ONE tooth — a
surface carries BOTH caries and a filling (state.caries has
caries-{surface} AND state.fillingSurfaceMaterials has {surface}).
Returns the surfaces' letters, in the codebase's existing anatomical order
(SUMMARY_SURFACE_ORDER: B, M, O, D, L), concatenated with no separator
(e.g. "MOD", "B"); "" when the tooth has no recurrent-caries surface.
On an anterior tooth (§8) the occlusal/incisal surface's letter is "I"
instead of "O" (the stored value is still plain "occlusal"). Pure and
exported for direct unit testing.
SP6 Task 4 (§7): the recurrent ("sub") caries surfaces on ONE tooth — a surface carries BOTH caries and a filling (
state.carieshascaries-{surface}ANDstate.fillingSurfaceMaterialshas{surface}). Returns the surfaces' letters, in the codebase's existing anatomical order (SUMMARY_SURFACE_ORDER: B, M, O, D, L), concatenated with no separator (e.g. "MOD", "B"); "" when the tooth has no recurrent-caries surface. On an anterior tooth (§8) the occlusal/incisal surface's letter is "I" instead of "O" (the stored value is still plain "occlusal"). Pure and exported for direct unit testing.