import { TreatmentStatus } from '@prisma/client'; const FDI_TOOTH_IDS = new Set([ '11', '12', '13', '14', '15', '16', '17', '18', '21', '22', '23', '24', '25', '26', '27', '28', '31', '32', '33', '34', '35', '36', '37', '38', '41', '42', '43', '44', '45', '46', '47', '48', ]); export function normalizeTeeth(teeth: unknown): string[] { if (!Array.isArray(teeth)) { return []; } const unique = new Set(); for (const tooth of teeth) { if (typeof tooth !== 'string') continue; const trimmed = tooth.trim(); if (FDI_TOOTH_IDS.has(trimmed)) { unique.add(trimmed); } } return [...unique].sort(); } export function generateTreatmentTitle( cases: { treatmentType: string; teeth: string[] }[], ): string { if (cases.length === 0) { return 'Treatment'; } const parts = cases.map((c) => { const label = c.treatmentType.charAt(0).toUpperCase() + c.treatmentType.slice(1); if (c.teeth.length > 0) { return `${label} ${c.teeth.join(', ')}`; } return label; }); return parts.join(' ยท '); } export function mapTreatmentStatusForApi(status: TreatmentStatus): string { return status === TreatmentStatus.DRAFT ? 'draft' : 'completed'; }