TreatmentType and ProsthesisType database shcema and data updated. Lab dispatch wired through new data.
This commit is contained in:
37
backend/src/modules/treatments/lab-case-send.validation.ts
Normal file
37
backend/src/modules/treatments/lab-case-send.validation.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
import { BadRequestException } from '@nestjs/common';
|
||||
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 BadRequestException(
|
||||
`Each tooth must have a prosthesis type before sending (missing tooth ${tooth})`,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user