@atomic-ehr/fhir-canonical-manager 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -29,10 +29,10 @@ npm install @atomic-ehr/fhir-canonical-manager
29
29
  import { CanonicalManager } from '@atomic-ehr/fhir-canonical-manager';
30
30
 
31
31
  // Create and initialize the manager
32
- const manager = CanonicalManager({
33
- packages: ["hl7.fhir.r4.core"],
32
+ const manager = CanonicalManager({
33
+ packages: ["hl7.fhir.r4.core"],
34
34
  workingDir: "tmp/fhir",
35
- registry: "https://fs.get-ig.org/pkgs" // optional, default registry
35
+ registry: "https://fs.get-ig.org/pkgs/" // optional, default registry
36
36
  });
37
37
 
38
38
  await manager.init();
@@ -94,7 +94,7 @@ Configuration is stored in `package.json`:
94
94
  {
95
95
  "fcm": {
96
96
  "packages": ["hl7.fhir.r4.core", "hl7.fhir.us.core@5.0.1"],
97
- "registry": "https://fs.get-ig.org/pkgs"
97
+ "registry": "https://fs.get-ig.org/pkgs/"
98
98
  }
99
99
  }
100
100
  ```
@@ -257,13 +257,13 @@ interface Config {
257
257
 
258
258
  Example:
259
259
  ```typescript
260
- const manager = CanonicalManager({
260
+ const manager = CanonicalManager({
261
261
  packages: [
262
262
  "hl7.fhir.r4.core",
263
263
  "hl7.fhir.us.core@5.0.1"
264
- ],
264
+ ],
265
265
  workingDir: "./fhir-packages",
266
- registry: "https://fs.get-ig.org/pkgs"
266
+ registry: "https://fs.get-ig.org/pkgs/"
267
267
  });
268
268
  ```
269
269
 
@@ -339,17 +339,17 @@ Searches and returns full resources matching criteria.
339
339
 
340
340
  ```typescript
341
341
  // Get all StructureDefinitions
342
- const structures = await manager.search({
343
- type: 'StructureDefinition'
342
+ const structures = await manager.search({
343
+ type: 'StructureDefinition'
344
344
  });
345
345
 
346
346
  // Get all resources of kind "resource"
347
- const resources = await manager.search({
348
- kind: 'resource'
347
+ const resources = await manager.search({
348
+ kind: 'resource'
349
349
  });
350
350
 
351
351
  // Complex search
352
- const valuesets = await manager.search({
352
+ const valuesets = await manager.search({
353
353
  type: 'ValueSet',
354
354
  package: { name: 'hl7.fhir.r4.core', version: '4.0.1' }
355
355
  });
@@ -361,13 +361,13 @@ Searches and returns index entries (metadata only).
361
361
 
362
362
  ```typescript
363
363
  // Find all CodeSystems
364
- const entries = await manager.searchEntries({
365
- type: 'CodeSystem'
364
+ const entries = await manager.searchEntries({
365
+ type: 'CodeSystem'
366
366
  });
367
367
 
368
368
  // Find by URL
369
- const entries = await manager.searchEntries({
370
- url: 'http://hl7.org/fhir/StructureDefinition/Patient'
369
+ const entries = await manager.searchEntries({
370
+ url: 'http://hl7.org/fhir/StructureDefinition/Patient'
371
371
  });
372
372
  ```
373
373
 
@@ -534,12 +534,12 @@ The cache is stored as a JSON file with the following structure:
534
534
  ### Working with Multiple Packages
535
535
 
536
536
  ```typescript
537
- const manager = CanonicalManager({
537
+ const manager = CanonicalManager({
538
538
  packages: [
539
539
  "hl7.fhir.r4.core",
540
540
  "hl7.fhir.us.core@5.0.1",
541
541
  "hl7.fhir.us.davinci-drug-formulary"
542
- ],
542
+ ],
543
543
  workingDir: "./fhir-packages"
544
544
  });
545
545
 
@@ -549,7 +549,7 @@ await manager.init();
549
549
  const allValueSets = await manager.search({ type: 'ValueSet' });
550
550
 
551
551
  // Search in specific package
552
- const usCoreProfiles = await manager.search({
552
+ const usCoreProfiles = await manager.search({
553
553
  type: 'StructureDefinition',
554
554
  package: { name: 'hl7.fhir.us.core', version: '5.0.1' }
555
555
  });
@@ -559,14 +559,14 @@ const usCoreProfiles = await manager.search({
559
559
 
560
560
  ```typescript
561
561
  // Use the default FHIR package registry
562
- const manager = CanonicalManager({
562
+ const manager = CanonicalManager({
563
563
  packages: ["hl7.fhir.r4.core"],
564
564
  workingDir: "./fhir-packages",
565
- registry: "https://fs.get-ig.org/pkgs"
565
+ registry: "https://fs.get-ig.org/pkgs/"
566
566
  });
567
567
 
568
568
  // Use a custom NPM registry
569
- const manager = CanonicalManager({
569
+ const manager = CanonicalManager({
570
570
  packages: ["hl7.fhir.r4.core"],
571
571
  workingDir: "./fhir-packages",
572
572
  registry: "https://my-private-registry.com"
@@ -582,10 +582,10 @@ async function validateResource(resource: any, manager: CanonicalManager) {
582
582
  if (!profileUrl) {
583
583
  throw new Error('No profile specified');
584
584
  }
585
-
585
+
586
586
  // Resolve the StructureDefinition
587
587
  const profile = await manager.resolve(profileUrl);
588
-
588
+
589
589
  // Validate resource against profile
590
590
  // ... validation logic ...
591
591
  }
@@ -597,12 +597,12 @@ async function validateResource(resource: any, manager: CanonicalManager) {
597
597
  async function analyzeValueSetDependencies(manager: CanonicalManager) {
598
598
  // Get all ValueSets
599
599
  const valueSets = await manager.search({ type: 'ValueSet' });
600
-
600
+
601
601
  const dependencies = new Map<string, Set<string>>();
602
-
602
+
603
603
  for (const vs of valueSets) {
604
604
  const vsPackage = vs.package?.name || 'unknown';
605
-
605
+
606
606
  // Check compose.include for external code systems
607
607
  if (vs.compose?.include) {
608
608
  for (const include of vs.compose.include) {
@@ -610,7 +610,7 @@ async function analyzeValueSetDependencies(manager: CanonicalManager) {
610
610
  try {
611
611
  const cs = await manager.resolve(include.system);
612
612
  const csPackage = cs.package?.name || 'unknown';
613
-
613
+
614
614
  if (csPackage !== vsPackage) {
615
615
  if (!dependencies.has(vsPackage)) {
616
616
  dependencies.set(vsPackage, new Set());
@@ -624,7 +624,7 @@ async function analyzeValueSetDependencies(manager: CanonicalManager) {
624
624
  }
625
625
  }
626
626
  }
627
-
627
+
628
628
  return dependencies;
629
629
  }
630
630
  ```
@@ -766,4 +766,4 @@ Contributions are welcome! Please feel free to submit a Pull Request.
766
766
  2. Functional programming style
767
767
  3. No external dependencies except Node.js built-ins
768
768
  4. Comprehensive tests in `test/index.test.ts`
769
- 5. Update README.md with API changes
769
+ 5. Update README.md with API changes
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import type { Config } from '../index.js';
2
+ import type { Config } from "../index.js";
3
3
  export declare function parseArgs(args: string[]): {
4
4
  positional: string[];
5
5
  options: Record<string, string | boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAMA,OAAO,KAAK,EAAE,MAAM,EAA2B,MAAM,aAAa,CAAC;AAkFnE,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;IAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAA;CAAE,CA4C7G;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,CAWpD;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAG9D;AAED,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAO1E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAMA,OAAO,KAAK,EAAE,MAAM,EAA2B,MAAM,aAAa,CAAC;AAgGnE,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;IACzC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;CAC3C,CA4CA;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,CAWpD;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAG9D;AAED,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAO1E"}
package/dist/cli/index.js CHANGED
@@ -1,22 +1,22 @@
1
1
  #!/usr/bin/env node
2
- import * as fs from 'fs';
3
- import * as path from 'path';
4
- import { fileURLToPath } from 'url';
5
- import { CanonicalManager } from '../index.js';
6
- import { initCommand } from './init.js';
7
- import { listCommand } from './list.js';
8
- import { searchCommand } from './search.js';
9
- import { resolveCommand } from './resolve.js';
2
+ import * as fs from "fs";
3
+ import * as path from "path";
4
+ import { fileURLToPath } from "url";
5
+ import { CanonicalManager } from "../index.js";
6
+ import { initCommand } from "./init.js";
7
+ import { listCommand } from "./list.js";
8
+ import { searchCommand } from "./search.js";
9
+ import { resolveCommand } from "./resolve.js";
10
10
  const __filename = fileURLToPath(import.meta.url);
11
11
  const __dirname = path.dirname(__filename);
12
- const packageJsonPath = path.join(__dirname, '..', '..', 'package.json');
13
- let VERSION = 'unknown';
12
+ const packageJsonPath = path.join(__dirname, "..", "..", "package.json");
13
+ let VERSION = "unknown";
14
14
  try {
15
- const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
15
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8"));
16
16
  VERSION = packageJson.version;
17
17
  }
18
18
  catch (error) {
19
- VERSION = '0.0.3';
19
+ VERSION = "0.0.3";
20
20
  }
21
21
  function showHelp() {
22
22
  console.log(`
@@ -26,7 +26,7 @@ Usage: fcm <command> [options]
26
26
 
27
27
  Commands:
28
28
  init Initialize FHIR packages in current directory
29
- list List packages or resources
29
+ list List packages or resources
30
30
  search Search for resources
31
31
  resolve Get a resource by canonical URL
32
32
 
@@ -44,23 +44,32 @@ Examples:
44
44
  async function main() {
45
45
  const args = process.argv.slice(2);
46
46
  const command = args[0];
47
- if (!command || command === '--help' || command === '-h') {
47
+ if (!command || command === "--help" || command === "-h") {
48
48
  showHelp();
49
+ if (process.env.NODE_ENV === 'test') {
50
+ return;
51
+ }
49
52
  process.exit(0);
50
53
  }
51
- if (command === '--version' || command === '-v') {
54
+ if (command === "--version" || command === "-v") {
52
55
  console.log(VERSION);
56
+ if (process.env.NODE_ENV === 'test') {
57
+ return;
58
+ }
53
59
  process.exit(0);
54
60
  }
55
61
  const commands = {
56
62
  init: initCommand,
57
63
  list: listCommand,
58
64
  search: searchCommand,
59
- resolve: resolveCommand
65
+ resolve: resolveCommand,
60
66
  };
61
67
  if (!commands[command]) {
62
68
  console.error(`Error: Unknown command '${command}'`);
63
69
  console.error(`Run 'fcm --help' for usage information`);
70
+ if (process.env.NODE_ENV === 'test') {
71
+ throw new Error(`Unknown command '${command}'`);
72
+ }
64
73
  process.exit(1);
65
74
  }
66
75
  try {
@@ -68,6 +77,9 @@ async function main() {
68
77
  }
69
78
  catch (error) {
70
79
  console.error(`Error: ${error instanceof Error ? error.message : String(error)}`);
80
+ if (process.env.NODE_ENV === 'test') {
81
+ throw error;
82
+ }
71
83
  process.exit(1);
72
84
  }
73
85
  }
@@ -76,10 +88,10 @@ export function parseArgs(args) {
76
88
  const options = {};
77
89
  for (let i = 0; i < args.length; i++) {
78
90
  const arg = args[i];
79
- if (arg && arg.startsWith('--')) {
91
+ if (arg && arg.startsWith("--")) {
80
92
  const key = arg.slice(2);
81
93
  const nextArg = args[i + 1];
82
- if (nextArg && !nextArg.startsWith('--')) {
94
+ if (nextArg && !nextArg.startsWith("--")) {
83
95
  options[key] = nextArg;
84
96
  i++;
85
97
  }
@@ -87,21 +99,21 @@ export function parseArgs(args) {
87
99
  options[key] = true;
88
100
  }
89
101
  }
90
- else if (arg && arg.startsWith('-')) {
102
+ else if (arg && arg.startsWith("-")) {
91
103
  switch (arg) {
92
- case '-sd':
93
- options.resourceType = 'StructureDefinition';
104
+ case "-sd":
105
+ options.resourceType = "StructureDefinition";
94
106
  break;
95
- case '-cs':
96
- options.resourceType = 'CodeSystem';
107
+ case "-cs":
108
+ options.resourceType = "CodeSystem";
97
109
  break;
98
- case '-vs':
99
- options.resourceType = 'ValueSet';
110
+ case "-vs":
111
+ options.resourceType = "ValueSet";
100
112
  break;
101
113
  default:
102
114
  const key = arg.slice(1);
103
115
  const nextArg = args[i + 1];
104
- if (nextArg && !nextArg.startsWith('-')) {
116
+ if (nextArg && !nextArg.startsWith("-")) {
105
117
  options[key] = nextArg;
106
118
  i++;
107
119
  }
@@ -117,10 +129,10 @@ export function parseArgs(args) {
117
129
  return { positional, options };
118
130
  }
119
131
  export async function loadPackageJson() {
120
- const packagePath = path.join(process.cwd(), 'package.json');
132
+ const packagePath = path.join(process.cwd(), "package.json");
121
133
  try {
122
134
  if (fs.existsSync(packagePath)) {
123
- const content = fs.readFileSync(packagePath, 'utf-8');
135
+ const content = fs.readFileSync(packagePath, "utf-8");
124
136
  return JSON.parse(content);
125
137
  }
126
138
  }
@@ -129,20 +141,16 @@ export async function loadPackageJson() {
129
141
  return null;
130
142
  }
131
143
  export async function savePackageJson(data) {
132
- const packagePath = path.join(process.cwd(), 'package.json');
133
- fs.writeFileSync(packagePath, JSON.stringify(data, null, 2) + '\n');
144
+ const packagePath = path.join(process.cwd(), "package.json");
145
+ fs.writeFileSync(packagePath, JSON.stringify(data, null, 2) + "\n");
134
146
  }
135
147
  export function getConfigFromPackageJson(packageJson) {
136
148
  const fcm = packageJson?.fcm || {};
137
149
  return {
138
150
  packages: fcm.packages || [],
139
151
  registry: fcm.registry,
140
- workingDir: process.cwd()
152
+ workingDir: process.cwd(),
141
153
  };
142
154
  }
143
- const isMain = import.meta.url === `file://${process.argv[1]}` ||
144
- (typeof Bun !== 'undefined' && import.meta.main);
145
- if (isMain) {
146
- main();
147
- }
155
+ main();
148
156
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AASA,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmG/D"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AASA,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0G/D"}
package/dist/cli/init.js CHANGED
@@ -1,9 +1,9 @@
1
- import * as fs from 'fs';
2
- import * as path from 'path';
3
- import { exec } from 'child_process';
4
- import { promisify } from 'util';
5
- import { parseArgs, loadPackageJson, savePackageJson } from './index.js';
6
- import { CanonicalManager } from '../index.js';
1
+ import * as fs from "fs";
2
+ import * as path from "path";
3
+ import { exec } from "child_process";
4
+ import { promisify } from "util";
5
+ import { parseArgs, loadPackageJson, savePackageJson } from "./index.js";
6
+ import { CanonicalManager } from "../index.js";
7
7
  const execAsync = promisify(exec);
8
8
  export async function initCommand(args) {
9
9
  const { positional, options } = parseArgs(args);
@@ -15,13 +15,15 @@ export async function initCommand(args) {
15
15
  packageJson = {
16
16
  name: path.basename(process.cwd()),
17
17
  version: "1.0.0",
18
- type: "module"
18
+ type: "module",
19
19
  };
20
20
  }
21
21
  if (!packageJson.fcm) {
22
22
  packageJson.fcm = {
23
23
  packages: [],
24
- registry: registry || "https://fs.get-ig.org/pkgs"
24
+ registry: registry
25
+ ? (registry.endsWith('/') ? registry : `${registry}/`)
26
+ : "https://fs.get-ig.org/pkgs/",
25
27
  };
26
28
  }
27
29
  const packagesToInstall = packages.length > 0 ? packages : packageJson.fcm.packages;
@@ -29,6 +31,9 @@ export async function initCommand(args) {
29
31
  console.error("Error: No packages specified");
30
32
  console.error("Usage: fcm init [packages...]");
31
33
  console.error("Example: fcm init hl7.fhir.r4.core hl7.fhir.us.core@5.0.1");
34
+ if (process.env.NODE_ENV === 'test') {
35
+ throw new Error("No packages specified");
36
+ }
32
37
  process.exit(1);
33
38
  }
34
39
  const existingPackages = new Set(packageJson.fcm.packages);
@@ -37,7 +42,7 @@ export async function initCommand(args) {
37
42
  });
38
43
  packageJson.fcm.packages = Array.from(existingPackages);
39
44
  if (registry) {
40
- packageJson.fcm.registry = registry;
45
+ packageJson.fcm.registry = registry.endsWith('/') ? registry : `${registry}/`;
41
46
  }
42
47
  if (!packageJson.dependencies) {
43
48
  packageJson.dependencies = {};
@@ -55,7 +60,7 @@ export async function initCommand(args) {
55
60
  : `npm install ${pkg}`;
56
61
  await execAsync(command, {
57
62
  cwd: process.cwd(),
58
- maxBuffer: 10 * 1024 * 1024
63
+ maxBuffer: 10 * 1024 * 1024,
59
64
  });
60
65
  }
61
66
  catch (error) {
@@ -64,15 +69,16 @@ export async function initCommand(args) {
64
69
  }
65
70
  }
66
71
  console.log("Building package index...");
72
+ console.log("Registry", packageJson?.fcm?.registry);
67
73
  const manager = CanonicalManager({
68
74
  packages: packageJson.fcm.packages,
69
75
  workingDir: process.cwd(),
70
- registry: packageJson.fcm.registry
76
+ registry: packageJson.fcm.registry,
71
77
  });
72
78
  await manager.init();
73
79
  const installedPackages = await manager.packages();
74
80
  console.log("\nInstalled packages:");
75
- installedPackages.forEach(pkg => {
81
+ installedPackages.forEach((pkg) => {
76
82
  console.log(` ${pkg.name}@${pkg.version}`);
77
83
  });
78
84
  await manager.destroy();
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/cli/list.ts"],"names":[],"mappings":"AAGA,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8E/D"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/cli/list.ts"],"names":[],"mappings":"AAGA,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoF/D"}
package/dist/cli/list.js CHANGED
@@ -9,6 +9,9 @@ export async function listCommand(args) {
9
9
  if (!packageJson?.fcm?.packages || packageJson.fcm.packages.length === 0) {
10
10
  console.error("Error: No FHIR packages configured");
11
11
  console.error("Run 'fcm init' first to initialize packages");
12
+ if (process.env.NODE_ENV === 'test') {
13
+ throw new Error("No FHIR packages configured");
14
+ }
12
15
  process.exit(1);
13
16
  }
14
17
  const config = getConfigFromPackageJson(packageJson);
@@ -34,6 +37,9 @@ export async function listCommand(args) {
34
37
  console.error(`Error: Package '${packageName}' not found`);
35
38
  console.error("Available packages:");
36
39
  packages.forEach(p => console.error(` - ${p.name}`));
40
+ if (process.env.NODE_ENV === 'test') {
41
+ throw new Error(`Package '${packageName}' not found`);
42
+ }
37
43
  process.exit(1);
38
44
  }
39
45
  let resources = await manager.searchEntries({ package: pkg });
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/cli/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAc;IAC9C,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC;IACrC,MAAM,UAAU,GAAG,OAAO,CAAC,IAA0B,CAAC;IAGtD,MAAM,WAAW,GAAG,MAAM,eAAe,EAAE,CAAC;IAC5C,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,QAAQ,IAAI,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzE,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACpD,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAa,CAAC,CAAC;IAChD,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IAErB,IAAI,CAAC;QACH,IAAI,CAAC,WAAW,EAAE,CAAC;YAEjB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;YAE1C,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACjD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACzB,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oBACrB,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC9C,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,CAAC;YAEN,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC1C,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;YAEvD,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,OAAO,CAAC,KAAK,CAAC,mBAAmB,WAAW,aAAa,CAAC,CAAC;gBAC3D,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;gBACrC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,IAAI,SAAS,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;YAG9D,IAAI,UAAU,EAAE,CAAC;gBACf,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,UAAU,CAAC,CAAC;YACnE,CAAC;YAED,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,gBAAgB,WAAW,GAAG,CAAC,CAAC;gBAE5C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC3B,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;gBACtC,CAAC;qBAAM,CAAC;oBAEN,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;wBAChD,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,IAAI,IAAI,SAAS,CAAC;wBACjE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;4BAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBAC9B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;wBACZ,OAAO,GAAG,CAAC;oBACb,CAAC,EAAE,EAA4B,CAAC,CAAC;oBAGjC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;wBACtD,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;oBACrC,CAAC,CAAC,CAAC;oBAEH,OAAO,CAAC,GAAG,CAAC,YAAY,SAAS,CAAC,MAAM,YAAY,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/cli/list.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/cli/resolve.ts"],"names":[],"mappings":"AAGA,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkDlE"}
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/cli/resolve.ts"],"names":[],"mappings":"AAGA,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA2DlE"}
@@ -8,12 +8,18 @@ export async function resolveCommand(args) {
8
8
  console.error("Error: Canonical URL required");
9
9
  console.error("Usage: fcm resolve <canonical-url> [--fields field1,field2]");
10
10
  console.error("Example: fcm resolve http://hl7.org/fhir/StructureDefinition/Patient");
11
+ if (process.env.NODE_ENV === 'test') {
12
+ throw new Error("Canonical URL required");
13
+ }
11
14
  process.exit(1);
12
15
  }
13
16
  const packageJson = await loadPackageJson();
14
17
  if (!packageJson?.fcm?.packages || packageJson.fcm.packages.length === 0) {
15
18
  console.error("Error: No FHIR packages configured");
16
19
  console.error("Run 'fcm init' first to initialize packages");
20
+ if (process.env.NODE_ENV === 'test') {
21
+ throw new Error("No FHIR packages configured");
22
+ }
17
23
  process.exit(1);
18
24
  }
19
25
  const config = getConfigFromPackageJson(packageJson);
@@ -37,6 +43,9 @@ export async function resolveCommand(args) {
37
43
  }
38
44
  catch (error) {
39
45
  console.error(`Error: Resource not found: ${url}`);
46
+ if (process.env.NODE_ENV === 'test') {
47
+ throw error;
48
+ }
40
49
  process.exit(1);
41
50
  }
42
51
  finally {
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/cli/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAc;IACjD,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,MAA4B,CAAC;IAEpD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC/C,OAAO,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;QAC7E,OAAO,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;QACtF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAGD,MAAM,WAAW,GAAG,MAAM,eAAe,EAAE,CAAC;IAC5C,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,QAAQ,IAAI,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzE,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACpD,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAa,CAAC,CAAC;IAChD,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IAErB,IAAI,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAE5C,IAAI,MAAM,EAAE,CAAC;YAEX,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACvD,MAAM,QAAQ,GAAQ,EAAE,CAAC;YAEzB,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACxB,IAAI,KAAK,IAAI,QAAQ,EAAE,CAAC;oBACtB,QAAQ,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACpC,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YAEN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/cli/resolve.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/cli/search.ts"],"names":[],"mappings":"AAGA,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+FjE"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/cli/search.ts"],"names":[],"mappings":"AAGA,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+EjE"}
@@ -12,44 +12,38 @@ export async function searchCommand(args) {
12
12
  if (!packageJson?.fcm?.packages || packageJson.fcm.packages.length === 0) {
13
13
  console.error("Error: No FHIR packages configured");
14
14
  console.error("Run 'fcm init' first to initialize packages");
15
+ if (process.env.NODE_ENV === 'test' || process.env.BUN_TEST) {
16
+ throw new Error("No FHIR packages configured");
17
+ }
15
18
  process.exit(1);
16
19
  }
17
20
  const config = getConfigFromPackageJson(packageJson);
18
21
  const manager = CanonicalManager(config);
19
22
  await manager.init();
20
23
  try {
21
- const searchCriteria = {};
24
+ const filters = {};
25
+ if (resourceTypeFilter) {
26
+ filters.resourceType = resourceTypeFilter;
27
+ }
28
+ if (typeFilter) {
29
+ filters.type = typeFilter;
30
+ }
22
31
  if (kindFilter) {
23
- searchCriteria.kind = kindFilter;
32
+ filters.kind = kindFilter;
24
33
  }
25
34
  if (packageFilter) {
26
35
  const packages = await manager.packages();
27
36
  const pkg = packages.find(p => p.name === packageFilter);
28
37
  if (!pkg) {
29
38
  console.error(`Error: Package '${packageFilter}' not found`);
39
+ if (process.env.NODE_ENV === 'test' || process.env.BUN_TEST) {
40
+ throw new Error(`Package '${packageFilter}' not found`);
41
+ }
30
42
  process.exit(1);
31
43
  }
32
- searchCriteria.package = pkg;
33
- }
34
- let results = await manager.searchEntries(searchCriteria);
35
- if (resourceTypeFilter) {
36
- results = results.filter(entry => entry.resourceType === resourceTypeFilter);
37
- }
38
- if (typeFilter) {
39
- results = results.filter(entry => entry.type === typeFilter);
40
- }
41
- if (searchTerms.length > 0) {
42
- const terms = searchTerms.map(t => t.toLowerCase());
43
- results = results.filter(entry => {
44
- if (!entry.url)
45
- return false;
46
- const urlLower = entry.url.toLowerCase();
47
- return terms.every(term => {
48
- const urlParts = urlLower.split(/[\/\-_\.]+/);
49
- return urlParts.some(part => part.startsWith(term));
50
- });
51
- });
44
+ filters.package = pkg;
52
45
  }
46
+ const results = await manager.smartSearch(searchTerms, filters);
53
47
  if (isJson) {
54
48
  console.log(JSON.stringify(results, null, 2));
55
49
  }