improvement: new prosthesis type data structure implemented and finally working!

This commit is contained in:
2026-09-01 21:03:04 +03:30
parent dc71c73ced
commit a3c14a18c1
51 changed files with 3306 additions and 1117 deletions

View File

@@ -12,12 +12,26 @@ export type ProsthesisTypeCatalogEntry = {
code: string;
sortOrder: number;
label: string;
category: string;
subcategory: string;
chartRegion: string;
stackGroup: string;
addonKind: string;
};
type CatalogRow = {
sortOrder: number;
category: string;
subcategory: string;
chartRegion: string;
stackGroup: string;
addonKind: string;
};
@Injectable()
export class ProsthesisCatalogService implements OnModuleInit {
private loaded = false;
private byCode = new Map<string, { sortOrder: number }>();
private byCode = new Map<string, CatalogRow>();
constructor(
private readonly prisma: PrismaService,
@@ -32,10 +46,30 @@ export class ProsthesisCatalogService implements OnModuleInit {
const rows = await this.prisma.prosthesisType.findMany({
where: { isActive: true },
orderBy: [{ sortOrder: 'asc' }, { code: 'asc' }],
select: { code: true, sortOrder: true },
select: {
code: true,
sortOrder: true,
category: true,
subcategory: true,
chartRegion: true,
stackGroup: true,
addonKind: true,
},
});
this.byCode = new Map(rows.map((row) => [row.code, { sortOrder: row.sortOrder }]));
this.byCode = new Map(
rows.map((row) => [
row.code,
{
sortOrder: row.sortOrder,
category: row.category,
subcategory: row.subcategory,
chartRegion: row.chartRegion,
stackGroup: row.stackGroup,
addonKind: row.addonKind,
},
]),
);
this.loaded = true;
}
@@ -50,11 +84,19 @@ export class ProsthesisCatalogService implements OnModuleInit {
);
return codes
.map((code) => ({
code,
sortOrder: this.byCode.get(code)!.sortOrder,
label: labels.get(code) ?? code,
}))
.map((code) => {
const row = this.byCode.get(code)!;
return {
code,
sortOrder: row.sortOrder,
label: labels.get(code) ?? code,
category: row.category,
subcategory: row.subcategory,
chartRegion: row.chartRegion,
stackGroup: row.stackGroup,
addonKind: row.addonKind,
};
})
.sort((a, b) => a.sortOrder - b.sortOrder || a.code.localeCompare(b.code));
}