import { ArrayMinSize, IsArray, IsIn, IsOptional, IsString, IsUUID, MaxLength, ValidateNested, } from 'class-validator'; import { Type } from 'class-transformer'; const TREATMENT_TYPES = ['consultation', 'filling', 'endo', 'visit', 'hygiene'] as const; export class SaveTreatmentDetailDto { @IsString() @MaxLength(64) clientId: string; @IsOptional() @IsUUID() id?: string; @IsIn(TREATMENT_TYPES) treatmentType: string; @IsArray() @IsString({ each: true }) teeth: string[]; @IsOptional() @IsString() @MaxLength(5000) comment?: string; @IsOptional() @IsArray() @IsUUID(undefined, { each: true }) attachmentIds?: string[]; } export class SaveTreatmentDraftDto { @IsArray() @ArrayMinSize(1) @ValidateNested({ each: true }) @Type(() => SaveTreatmentDetailDto) details: SaveTreatmentDetailDto[]; } export class SaveLabCaseDto { @IsString() @MaxLength(64) clientId: string; @IsOptional() @IsUUID() id?: string; @IsOptional() @IsUUID() destinationOrganizationId?: string; @IsOptional() @IsString() @MaxLength(5000) labComment?: string; @IsArray() @ArrayMinSize(1) @IsUUID(undefined, { each: true }) treatmentDetailIds: string[]; } export class SaveTreatmentLabCasesDto { @IsArray() @ValidateNested({ each: true }) @Type(() => SaveLabCaseDto) labCases: SaveLabCaseDto[]; } export class ListPatientTreatmentHistoryDto { @IsOptional() limit?: number; }