Skip to content

Commit 500671a

Browse files
ryukzakclaude
andcommitted
ts: fix profile generation for CCDA
- Fix tsModuleName to use normalizeTsName for consistent file/class naming - Fix safeCamelCase to handle [x] and colons in extension names - Fix generateProfileClass to resolve primitive base types to TS types Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 703b893 commit 500671a

1 file changed

Lines changed: 8 additions & 3 deletions

File tree

src/api/writer-generator/typescript.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,9 @@ const tsFhirPackageDir = (name: string): string => {
6868
};
6969

7070
const tsModuleName = (id: Identifier): string => {
71-
return pascalCase(id.name);
71+
// Normalize name exactly like tsResourceName to ensure consistency
72+
// File name must match class name (with "Profile" suffix)
73+
return uppercaseFirstLetter(normalizeTsName(id.name));
7274
};
7375

7476
const tsModuleFileName = (id: Identifier): string => {
@@ -147,7 +149,9 @@ const tsExtensionInputTypeName = (profileName: string, extensionName: string): s
147149

148150
const safeCamelCase = (name: string): string => {
149151
if (!name) return "";
150-
return camelCase(name);
152+
// Remove [x] suffix and normalize special characters before camelCase
153+
const normalized = name.replace(/\[x\]/g, "").replace(/:/g, "_");
154+
return camelCase(normalized);
151155
};
152156

153157
const tsSliceMethodName = (sliceName: string): string => {
@@ -938,7 +942,8 @@ export class TypeScript extends Writer<TypeScriptOptions> {
938942
}
939943

940944
generateProfileClass(tsIndex: TypeSchemaIndex, flatProfile: ProfileTypeSchema) {
941-
const tsBaseResourceName = tsResourceName(flatProfile.base);
945+
// Use tsTypeFromIdentifier to properly resolve primitive types to TS types
946+
const tsBaseResourceName = tsTypeFromIdentifier(flatProfile.base);
942947
const tsProfileName = tsResourceName(flatProfile.identifier);
943948
const profileClassName = tsProfileClassName(tsProfileName);
944949

0 commit comments

Comments
 (0)