Skip to content

Commit 3a4c709

Browse files
committed
feat: add fhir metadata (ig, version, canonical, fhirVersions) to generated package.json
1 parent f42b2f9 commit 3a4c709

2 files changed

Lines changed: 25 additions & 0 deletions

File tree

src/generator/index.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -370,10 +370,17 @@ export async function generateIntoPackage(packageArchivePath: string, outArchive
370370
let packageName = path.basename(packageArchivePath, path.extname(packageArchivePath));
371371
let packageVersion = '1.0.0';
372372

373+
let fhirMeta: Record<string, unknown> | undefined;
373374
if (fs.existsSync(originalPackageJsonPath)) {
374375
const originalPkg = JSON.parse(fs.readFileSync(originalPackageJsonPath, 'utf-8'));
375376
packageName = originalPkg.name || packageName;
376377
packageVersion = originalPkg.version || packageVersion;
378+
fhirMeta = {
379+
ig: originalPkg.name,
380+
version: originalPkg.version,
381+
...(originalPkg.canonical && { canonical: originalPkg.canonical }),
382+
...(originalPkg.fhirVersions && { fhirVersions: originalPkg.fhirVersions }),
383+
};
377384
}
378385

379386
const generatedExports: Record<string, { types: string; import: string }> = {
@@ -391,6 +398,7 @@ export async function generateIntoPackage(packageArchivePath: string, outArchive
391398
scripts: {},
392399
keywords: ['fhir', 'typescript', 'generated'],
393400
license: 'MIT',
401+
...(fhirMeta && { fhir: fhirMeta }),
394402
// fhirpath is required at runtime by validators; keep as peer so host decides version
395403
peerDependencies: {
396404
'fhirpath': '^3.0.0 || ^4.0.0'
@@ -570,10 +578,17 @@ export async function generateIntoPackageDirect(
570578
const originalPackageJsonPath = path.join(extractedRoot, 'package', 'package.json');
571579
let packageName = path.basename(packageArchivePath, path.extname(packageArchivePath));
572580
let packageVersion = '1.0.0';
581+
let fhirMeta: Record<string, unknown> | undefined;
573582
if (fs.existsSync(originalPackageJsonPath)) {
574583
const originalPkg = JSON.parse(fs.readFileSync(originalPackageJsonPath, 'utf-8'));
575584
packageName = originalPkg.name || packageName;
576585
packageVersion = originalPkg.version || packageVersion;
586+
fhirMeta = {
587+
ig: originalPkg.name,
588+
version: originalPkg.version,
589+
...(originalPkg.canonical && { canonical: originalPkg.canonical }),
590+
...(originalPkg.fhirVersions && { fhirVersions: originalPkg.fhirVersions }),
591+
};
577592
}
578593

579594
const generatedExports: Record<string, { types: string; import: string }> = {
@@ -591,6 +606,7 @@ export async function generateIntoPackageDirect(
591606
scripts: {},
592607
keywords: ['fhir', 'typescript', 'generated'],
593608
license: 'MIT',
609+
...(fhirMeta && { fhir: fhirMeta }),
594610
peerDependencies: { 'fhirpath': '^3.0.0 || ^4.0.0' },
595611
dependencies: { '@types/fhir': '^0.0.41' }
596612
};

src/test/fhirClientPackaging.test.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,15 @@ describe('FHIR client packaging', () => {
106106
const pkg = JSON.parse(fs.readFileSync(path.join(generatedDir, 'package.json'), 'utf8'));
107107
expect(pkg.dependencies['@babelfhir-ts/client-r4']).toBe('^0.2.0');
108108
});
109+
110+
it('has fhir metadata with IG provenance', () => {
111+
const pkg = JSON.parse(fs.readFileSync(path.join(generatedDir, 'package.json'), 'utf8'));
112+
expect(pkg.fhir).toBeDefined();
113+
expect(pkg.fhir.ig).toBe('hl7.fhir.uv.ips');
114+
expect(pkg.fhir.version).toBe('2.0.0');
115+
expect(pkg.fhir.canonical).toBe('http://hl7.org/fhir/uv/ips');
116+
expect(pkg.fhir.fhirVersions).toEqual(['4.0.1']);
117+
});
109118
});
110119

111120
describe('Omit<> profile detection', () => {

0 commit comments

Comments
 (0)