import { HttpStatus } from '@nestjs/common'; import { AppException, ErrorCode } from '../../common/errors'; import { normalizeTeeth } from './treatment.utils'; export type LabCaseProsthesisLink = { treatmentDetailId: string; detail: { id: string; treatmentType: string; teeth: unknown }; }; export type LabCaseToothProsthesisRow = { treatmentDetailId: string; tooth: string; prosthesisTypeCode: string; }; export function assertCompleteToothProsthesisMap(labCase: { details: LabCaseProsthesisLink[]; toothProsthesis: LabCaseToothProsthesisRow[]; }) { const prosthesisByKey = new Set( labCase.toothProsthesis.map((tp) => `${tp.treatmentDetailId}:${tp.tooth}`), ); for (const link of labCase.details) { if (link.detail.treatmentType !== 'prosthesis') { continue; } const teeth = normalizeTeeth(link.detail.teeth); for (const tooth of teeth) { const key = `${link.treatmentDetailId}:${tooth}`; if (!prosthesisByKey.has(key)) { throw new AppException(ErrorCode.TREATMENT_TOOTH_PROSTHESIS_INCOMPLETE, HttpStatus.BAD_REQUEST); } } } }