From 4769e75908253c3317502eea3d2dbbe3585b6083 Mon Sep 17 00:00:00 2001 From: Aleksandr Penskoi Date: Tue, 3 Feb 2026 11:35:48 +0100 Subject: [PATCH 1/7] ref: move ir types in separated module --- src/api/builder.ts | 5 +++-- src/typeschema/ir/logic-promotion.ts | 3 +-- src/typeschema/ir/tree-shake.ts | 21 +-------------------- src/typeschema/ir/types.ts | 23 +++++++++++++++++++++++ src/typeschema/utils.ts | 2 +- 5 files changed, 29 insertions(+), 25 deletions(-) create mode 100644 src/typeschema/ir/types.ts diff --git a/src/api/builder.ts b/src/api/builder.ts index 20125820..4d1d2dd7 100644 --- a/src/api/builder.ts +++ b/src/api/builder.ts @@ -11,8 +11,9 @@ import { CanonicalManager, type LocalPackageConfig, type TgzPackageConfig } from import { CSharp, type CSharpGeneratorOptions } from "@root/api/writer-generator/csharp/csharp"; import { Python, type PythonGeneratorOptions } from "@root/api/writer-generator/python"; import { generateTypeSchemas } from "@root/typeschema"; -import { type LogicalPromotion, promoteLogical } from "@root/typeschema/ir/logic-promotion"; -import { type TreeShake, treeShake } from "@root/typeschema/ir/tree-shake"; +import { promoteLogical } from "@root/typeschema/ir/logic-promotion"; +import { treeShake } from "@root/typeschema/ir/tree-shake"; +import type { LogicalPromotion, TreeShake } from "@root/typeschema/ir/types"; import { registerFromManager } from "@root/typeschema/register"; import { type PackageMeta, packageMetaToNpm, type TypeSchema } from "@root/typeschema/types"; import { mkTypeSchemaIndex, type TypeSchemaIndex } from "@root/typeschema/utils"; diff --git a/src/typeschema/ir/logic-promotion.ts b/src/typeschema/ir/logic-promotion.ts index 34789d3b..df57f35a 100644 --- a/src/typeschema/ir/logic-promotion.ts +++ b/src/typeschema/ir/logic-promotion.ts @@ -12,8 +12,7 @@ import { } from "@root/typeschema/types"; import { mkTypeSchemaIndex, type TypeSchemaIndex } from "@root/typeschema/utils"; import type { CodegenLogger } from "@root/utils/codegen-logger"; - -export type LogicalPromotion = Record; +import type { LogicalPromotion } from "./types"; export const promoteLogical = ( tsIndex: TypeSchemaIndex, diff --git a/src/typeschema/ir/tree-shake.ts b/src/typeschema/ir/tree-shake.ts index 4eaba84f..c6552d81 100644 --- a/src/typeschema/ir/tree-shake.ts +++ b/src/typeschema/ir/tree-shake.ts @@ -19,26 +19,7 @@ import { type TypeSchema, } from "../types"; import { mkTypeSchemaIndex, type TypeSchemaIndex } from "../utils"; - -export type TreeShake = Record>; - -export type TreeShakeRule = { ignoreFields?: string[]; selectFields?: string[] }; - -export interface TreeShakeReport { - skippedPackages: PkgName[]; - packages: Record< - PkgName, - { - skippedCanonicals: CanonicalUrl[]; - canonicals: Record< - CanonicalUrl, - { - skippedFields: string[]; - } - >; - } - >; -} +import type { TreeShake, TreeShakeReport, TreeShakeRule } from "./types"; const ensureTreeShakeReport = (indexOrReport: TypeSchemaIndex | TreeShakeReport): TreeShakeReport => { if ("treeShakeReport" in indexOrReport && typeof indexOrReport.treeShakeReport === "function") { diff --git a/src/typeschema/ir/types.ts b/src/typeschema/ir/types.ts new file mode 100644 index 00000000..49572110 --- /dev/null +++ b/src/typeschema/ir/types.ts @@ -0,0 +1,23 @@ +import type { CanonicalUrl, PkgName } from "../types"; + +export type LogicalPromotion = Record; + +export type TreeShake = Record>; + +export type TreeShakeRule = { ignoreFields?: string[]; selectFields?: string[] }; + +export interface TreeShakeReport { + skippedPackages: PkgName[]; + packages: Record< + PkgName, + { + skippedCanonicals: CanonicalUrl[]; + canonicals: Record< + CanonicalUrl, + { + skippedFields: string[]; + } + >; + } + >; +} diff --git a/src/typeschema/utils.ts b/src/typeschema/utils.ts index 15d93244..75c7f83c 100644 --- a/src/typeschema/utils.ts +++ b/src/typeschema/utils.ts @@ -1,8 +1,8 @@ import * as afs from "node:fs/promises"; import * as Path from "node:path"; -import type { TreeShakeReport } from "@root/typeschema/ir/tree-shake"; import type { CodegenLogger } from "@root/utils/codegen-logger"; import * as YAML from "yaml"; +import type { TreeShakeReport } from "./ir/types"; import type { Register } from "./register"; import { type CanonicalUrl, From aa82007f318cda384a52fa53036c4012eb294ea1 Mon Sep 17 00:00:00 2001 From: Aleksandr Penskoi Date: Tue, 3 Feb 2026 12:03:00 +0100 Subject: [PATCH 2/7] ref: generalize treeShakeReport to IRReport. --- src/api/writer-generator/typescript.ts | 10 +++--- src/typeschema/ir/tree-shake.ts | 41 +++++++++++----------- src/typeschema/ir/types.ts | 8 +++-- src/typeschema/utils.ts | 10 +++--- test/unit/typeschema/ir/tree-shake.test.ts | 8 ++--- 5 files changed, 41 insertions(+), 36 deletions(-) diff --git a/src/api/writer-generator/typescript.ts b/src/api/writer-generator/typescript.ts index 2f503884..dea1d4d5 100644 --- a/src/api/writer-generator/typescript.ts +++ b/src/api/writer-generator/typescript.ts @@ -1496,14 +1496,14 @@ export class TypeScript extends Writer { : []), ]; const grouped = groupByPackages(typesToGenerate); - const treeShakeReport = tsIndex.treeShakeReport(); + const irReport = tsIndex.report(); const hasProfiles = this.opts.generateProfile && typesToGenerate.some(isProfileTypeSchema); this.cd("/", () => { - if (treeShakeReport) { + if (irReport) { this.cat("README.md", () => { - this.write(rootTreeShakeReadme(treeShakeReport)); + this.write(rootTreeShakeReadme(irReport)); }); } if (hasProfiles) { @@ -1518,9 +1518,9 @@ export class TypeScript extends Writer { } this.generateProfileIndexFile(packageSchemas.filter(isProfileTypeSchema)); this.generateFhirPackageIndexFile(packageSchemas); - if (treeShakeReport) { + if (irReport) { this.cat("README.md", () => { - this.write(packageTreeShakeReadme(treeShakeReport, packageName)); + this.write(packageTreeShakeReadme(irReport, packageName)); }); } }); diff --git a/src/typeschema/ir/tree-shake.ts b/src/typeschema/ir/tree-shake.ts index c6552d81..537d6c7c 100644 --- a/src/typeschema/ir/tree-shake.ts +++ b/src/typeschema/ir/tree-shake.ts @@ -19,55 +19,55 @@ import { type TypeSchema, } from "../types"; import { mkTypeSchemaIndex, type TypeSchemaIndex } from "../utils"; -import type { TreeShake, TreeShakeReport, TreeShakeRule } from "./types"; +import type { IRReport, TreeShake, TreeShakeReport, TreeShakeRule } from "./types"; -const ensureTreeShakeReport = (indexOrReport: TypeSchemaIndex | TreeShakeReport): TreeShakeReport => { - if ("treeShakeReport" in indexOrReport && typeof indexOrReport.treeShakeReport === "function") { - const report = indexOrReport.treeShakeReport(); +const ensureIRReport = (indexOrReport: TypeSchemaIndex | IRReport): IRReport => { + if ("report" in indexOrReport && typeof indexOrReport.report === "function") { + const report = indexOrReport.report(); assert(report); return report; } else { - return indexOrReport as TreeShakeReport; + return indexOrReport as IRReport; } }; -export const rootTreeShakeReadme = (report: TypeSchemaIndex | TreeShakeReport) => { - report = ensureTreeShakeReport(report); +export const rootTreeShakeReadme = (report: TypeSchemaIndex | IRReport) => { + const { treeShake: treeShakeReport } = ensureIRReport(report); const lines = ["# Tree Shake Report", ""]; - if (report.skippedPackages.length === 0) lines.push("All packages are included."); + if (treeShakeReport.skippedPackages.length === 0) lines.push("All packages are included."); else lines.push("Skipped packages:", ""); - for (const pkgName of report.skippedPackages) { + for (const pkgName of treeShakeReport.skippedPackages) { lines.push(`- ${pkgName}`); } lines.push(""); return lines.join("\n"); }; -export const packageTreeShakeReadme = (report: TypeSchemaIndex | TreeShakeReport, pkgName: PkgName) => { - report = ensureTreeShakeReport(report); +export const packageTreeShakeReadme = (report: TypeSchemaIndex | IRReport, pkgName: PkgName) => { + const { treeShake: treeShakeReport } = ensureIRReport(report); const lines = [`# Package: ${pkgName}`, ""]; - assert(report.packages[pkgName]); + assert(treeShakeReport.packages[pkgName]); lines.push("## Canonical Fields Changes", ""); - if (Object.keys(report.packages[pkgName].canonicals).length === 0) { + if (Object.keys(treeShakeReport.packages[pkgName].canonicals).length === 0) { lines.push("All canonicals translated as is.", ""); } else { - for (const [canonicalUrl, { skippedFields }] of Object.entries(report.packages[pkgName].canonicals)) { + for (const [canonicalUrl, { skippedFields }] of Object.entries(treeShakeReport.packages[pkgName].canonicals)) { lines.push(`- <${canonicalUrl}>`); if (skippedFields.length === 0) { lines.push(" - All fields translated as is.", ""); } else { - lines.push(` - Skipped fields: ${skippedFields.map((f) => `\`${f}\``).join(", ")}`); + lines.push(` - Skipped fields: ${skippedFields.map((f: string) => `\`${f}\``).join(", ")}`); lines.push(""); } } lines.push(""); } lines.push("## Skipped Canonicals", ""); - if (report.packages[pkgName].skippedCanonicals.length === 0) { + if (treeShakeReport.packages[pkgName].skippedCanonicals.length === 0) { lines.push("No skipped canonicals"); } else { lines.push("Skipped canonicals:", ""); - for (const canonicalUrl of report.packages[pkgName].skippedCanonicals) { + for (const canonicalUrl of treeShakeReport.packages[pkgName].skippedCanonicals) { lines.push(`- <${canonicalUrl}>`); } lines.push(""); @@ -260,8 +260,9 @@ export const treeShake = ( const shaked = collectDeps(focusedSchemas, {}); - const report: TreeShakeReport = { skippedPackages: [], packages: {} }; - const shakedIndex = mkTypeSchemaIndex(shaked, { register: tsIndex.register, logger, treeShakeReport: report }); - mutableFillReport(report, tsIndex, shakedIndex); + const treeShakeReport: TreeShakeReport = { skippedPackages: [], packages: {} }; + const irReport: IRReport = { treeShake: treeShakeReport }; + const shakedIndex = mkTypeSchemaIndex(shaked, { register: tsIndex.register, logger, report: irReport }); + mutableFillReport(treeShakeReport, tsIndex, shakedIndex); return shakedIndex; }; diff --git a/src/typeschema/ir/types.ts b/src/typeschema/ir/types.ts index 49572110..3221ea24 100644 --- a/src/typeschema/ir/types.ts +++ b/src/typeschema/ir/types.ts @@ -6,7 +6,11 @@ export type TreeShake = Record>; export type TreeShakeRule = { ignoreFields?: string[]; selectFields?: string[] }; -export interface TreeShakeReport { +export type IRReport = { + treeShake: TreeShakeReport; +}; + +export type TreeShakeReport = { skippedPackages: PkgName[]; packages: Record< PkgName, @@ -20,4 +24,4 @@ export interface TreeShakeReport { >; } >; -} +}; diff --git a/src/typeschema/utils.ts b/src/typeschema/utils.ts index 75c7f83c..d7a1009c 100644 --- a/src/typeschema/utils.ts +++ b/src/typeschema/utils.ts @@ -2,7 +2,7 @@ import * as afs from "node:fs/promises"; import * as Path from "node:path"; import type { CodegenLogger } from "@root/utils/codegen-logger"; import * as YAML from "yaml"; -import type { TreeShakeReport } from "./ir/types"; +import type { IRReport } from "./ir/types"; import type { Register } from "./register"; import { type CanonicalUrl, @@ -185,7 +185,7 @@ export type TypeSchemaIndex = { isWithMetaField: (profile: ProfileTypeSchema) => boolean; entityTree: () => EntityTree; exportTree: (filename: string) => Promise; - treeShakeReport: () => TreeShakeReport | undefined; + report: () => IRReport | undefined; }; type EntityTree = Record>>; @@ -195,11 +195,11 @@ export const mkTypeSchemaIndex = ( { register, logger, - treeShakeReport, + report, }: { register?: Register; logger?: CodegenLogger; - treeShakeReport?: TreeShakeReport; + report?: IRReport; }, ): TypeSchemaIndex => { const index: Record> = {}; @@ -399,6 +399,6 @@ export const mkTypeSchemaIndex = ( isWithMetaField, entityTree, exportTree, - treeShakeReport: () => treeShakeReport, + report: () => report, }; }; diff --git a/test/unit/typeschema/ir/tree-shake.test.ts b/test/unit/typeschema/ir/tree-shake.test.ts index b18185f1..e7f325df 100644 --- a/test/unit/typeschema/ir/tree-shake.test.ts +++ b/test/unit/typeschema/ir/tree-shake.test.ts @@ -16,7 +16,7 @@ describe("treeShake specific TypeSchema", async () => { }); const tsIndex = await mkIndex(manager); it("tree shake report should be empty without treeshaking", () => { - expect(tsIndex.treeShakeReport()).toBeUndefined(); + expect(tsIndex.report()).toBeUndefined(); }); describe("Only Bundle & Operation Outcome without extensions", () => { const shaked = treeShake( @@ -39,13 +39,13 @@ describe("treeShake specific TypeSchema", async () => { r4Manager.resolutionTree(), ); - const report = shaked.treeShakeReport(); + const report = shaked.report(); assert(report); it("check treeshake report", () => { expect(report).toBeDefined(); - expect(report.skippedPackages).toMatchObject(["hl7.fhir.r5.core"]); - expect(report.packages).toMatchSnapshot(); + expect(report.treeShake.skippedPackages).toMatchObject(["hl7.fhir.r5.core"]); + expect(report.treeShake.packages).toMatchSnapshot(); }); it("root tree shake readme", () => { expect(rootTreeShakeReadme(report)).toMatchSnapshot(); From 00946bbd42d906d4b04b21a577e36eddd7bdfb03 Mon Sep 17 00:00:00 2001 From: Aleksandr Penskoi Date: Tue, 3 Feb 2026 14:33:51 +0100 Subject: [PATCH 3/7] ref: add replaceSchemas to update typeSchemaIndex. --- src/api/builder.ts | 5 ++- src/api/writer-generator/typescript.ts | 6 ++-- src/typeschema/ir/logic-promotion.ts | 12 ++----- src/typeschema/ir/tree-shake.ts | 35 +++++++++----------- src/typeschema/ir/types.ts | 4 +-- src/typeschema/utils.ts | 12 ++++--- test/unit/typeschema/ir/tree-shake.test.ts | 38 ++++++++++------------ 7 files changed, 50 insertions(+), 62 deletions(-) diff --git a/src/api/builder.ts b/src/api/builder.ts index 4d1d2dd7..b8bb509f 100644 --- a/src/api/builder.ts +++ b/src/api/builder.ts @@ -416,9 +416,8 @@ export class APIBuilder { logger: this.logger, }; let tsIndex = mkTypeSchemaIndex(typeSchemas, tsIndexOpts); - if (this.options.treeShake) tsIndex = treeShake(tsIndex, this.options.treeShake, tsIndexOpts); - if (this.options.logicalPromotion) - tsIndex = promoteLogical(tsIndex, this.options.logicalPromotion, tsIndexOpts); + if (this.options.treeShake) tsIndex = treeShake(tsIndex, this.options.treeShake); + if (this.options.logicalPromotion) tsIndex = promoteLogical(tsIndex, this.options.logicalPromotion); this.logger.debug(`Executing ${this.generators.length} generators`); diff --git a/src/api/writer-generator/typescript.ts b/src/api/writer-generator/typescript.ts index dea1d4d5..e2373ebd 100644 --- a/src/api/writer-generator/typescript.ts +++ b/src/api/writer-generator/typescript.ts @@ -1496,12 +1496,12 @@ export class TypeScript extends Writer { : []), ]; const grouped = groupByPackages(typesToGenerate); - const irReport = tsIndex.report(); + const irReport = tsIndex.irReport(); const hasProfiles = this.opts.generateProfile && typesToGenerate.some(isProfileTypeSchema); this.cd("/", () => { - if (irReport) { + if (irReport?.treeShake) { this.cat("README.md", () => { this.write(rootTreeShakeReadme(irReport)); }); @@ -1518,7 +1518,7 @@ export class TypeScript extends Writer { } this.generateProfileIndexFile(packageSchemas.filter(isProfileTypeSchema)); this.generateFhirPackageIndexFile(packageSchemas); - if (irReport) { + if (irReport?.treeShake) { this.cat("README.md", () => { this.write(packageTreeShakeReadme(irReport, packageName)); }); diff --git a/src/typeschema/ir/logic-promotion.ts b/src/typeschema/ir/logic-promotion.ts index df57f35a..a80e4380 100644 --- a/src/typeschema/ir/logic-promotion.ts +++ b/src/typeschema/ir/logic-promotion.ts @@ -10,15 +10,10 @@ import { type NestedType, type PkgName, } from "@root/typeschema/types"; -import { mkTypeSchemaIndex, type TypeSchemaIndex } from "@root/typeschema/utils"; -import type { CodegenLogger } from "@root/utils/codegen-logger"; +import type { TypeSchemaIndex } from "@root/typeschema/utils"; import type { LogicalPromotion } from "./types"; -export const promoteLogical = ( - tsIndex: TypeSchemaIndex, - promotes: LogicalPromotion, - { logger }: { logger?: CodegenLogger }, -): TypeSchemaIndex => { +export const promoteLogical = (tsIndex: TypeSchemaIndex, promotes: LogicalPromotion): TypeSchemaIndex => { const promoteSets: Record> = Object.fromEntries( Object.entries(promotes).map(([pkg, urls]) => [pkg, new Set(urls)]), ); @@ -64,6 +59,5 @@ export const promoteLogical = ( } return cloned; }); - const shakedIndex = mkTypeSchemaIndex(schemas, { register: tsIndex.register, logger }); - return shakedIndex; + return tsIndex.replaceSchemas(schemas); }; diff --git a/src/typeschema/ir/tree-shake.ts b/src/typeschema/ir/tree-shake.ts index 537d6c7c..64a84a50 100644 --- a/src/typeschema/ir/tree-shake.ts +++ b/src/typeschema/ir/tree-shake.ts @@ -18,21 +18,20 @@ import { type RegularTypeSchema, type TypeSchema, } from "../types"; -import { mkTypeSchemaIndex, type TypeSchemaIndex } from "../utils"; -import type { IRReport, TreeShake, TreeShakeReport, TreeShakeRule } from "./types"; +import type { TypeSchemaIndex } from "../utils"; +import type { IrReport, TreeShake, TreeShakeReport, TreeShakeRule } from "./types"; -const ensureIRReport = (indexOrReport: TypeSchemaIndex | IRReport): IRReport => { - if ("report" in indexOrReport && typeof indexOrReport.report === "function") { - const report = indexOrReport.report(); - assert(report); - return report; +const ensureIrReport = (indexOrReport: TypeSchemaIndex | IrReport): IrReport => { + if ("irReport" in indexOrReport && typeof indexOrReport.irReport === "function") { + return indexOrReport.irReport(); } else { - return indexOrReport as IRReport; + return indexOrReport as IrReport; } }; -export const rootTreeShakeReadme = (report: TypeSchemaIndex | IRReport) => { - const { treeShake: treeShakeReport } = ensureIRReport(report); +export const rootTreeShakeReadme = (report: TypeSchemaIndex | IrReport) => { + const { treeShake: treeShakeReport } = ensureIrReport(report); + assert(treeShakeReport); const lines = ["# Tree Shake Report", ""]; if (treeShakeReport.skippedPackages.length === 0) lines.push("All packages are included."); else lines.push("Skipped packages:", ""); @@ -43,8 +42,9 @@ export const rootTreeShakeReadme = (report: TypeSchemaIndex | IRReport) => { return lines.join("\n"); }; -export const packageTreeShakeReadme = (report: TypeSchemaIndex | IRReport, pkgName: PkgName) => { - const { treeShake: treeShakeReport } = ensureIRReport(report); +export const packageTreeShakeReadme = (report: TypeSchemaIndex | IrReport, pkgName: PkgName) => { + const { treeShake: treeShakeReport } = ensureIrReport(report); + assert(treeShakeReport); const lines = [`# Package: ${pkgName}`, ""]; assert(treeShakeReport.packages[pkgName]); lines.push("## Canonical Fields Changes", ""); @@ -212,11 +212,7 @@ export const treeShakeTypeSchema = (schema: TypeSchema, rule: TreeShakeRule, _lo return schema; }; -export const treeShake = ( - tsIndex: TypeSchemaIndex, - treeShake: TreeShake, - { logger }: { logger?: CodegenLogger }, -): TypeSchemaIndex => { +export const treeShake = (tsIndex: TypeSchemaIndex, treeShake: TreeShake): TypeSchemaIndex => { const focusedSchemas: TypeSchema[] = []; for (const [pkgId, requires] of Object.entries(treeShake)) { for (const [url, rule] of Object.entries(requires)) { @@ -260,9 +256,10 @@ export const treeShake = ( const shaked = collectDeps(focusedSchemas, {}); + const shakedIndex = tsIndex.replaceSchemas(shaked); const treeShakeReport: TreeShakeReport = { skippedPackages: [], packages: {} }; - const irReport: IRReport = { treeShake: treeShakeReport }; - const shakedIndex = mkTypeSchemaIndex(shaked, { register: tsIndex.register, logger, report: irReport }); + const irReport = shakedIndex.irReport(); + irReport.treeShake = treeShakeReport; mutableFillReport(treeShakeReport, tsIndex, shakedIndex); return shakedIndex; }; diff --git a/src/typeschema/ir/types.ts b/src/typeschema/ir/types.ts index 3221ea24..7f111573 100644 --- a/src/typeschema/ir/types.ts +++ b/src/typeschema/ir/types.ts @@ -6,8 +6,8 @@ export type TreeShake = Record>; export type TreeShakeRule = { ignoreFields?: string[]; selectFields?: string[] }; -export type IRReport = { - treeShake: TreeShakeReport; +export type IrReport = { + treeShake?: TreeShakeReport; }; export type TreeShakeReport = { diff --git a/src/typeschema/utils.ts b/src/typeschema/utils.ts index d7a1009c..4e9b6e1a 100644 --- a/src/typeschema/utils.ts +++ b/src/typeschema/utils.ts @@ -2,7 +2,7 @@ import * as afs from "node:fs/promises"; import * as Path from "node:path"; import type { CodegenLogger } from "@root/utils/codegen-logger"; import * as YAML from "yaml"; -import type { IRReport } from "./ir/types"; +import type { IrReport } from "./ir/types"; import type { Register } from "./register"; import { type CanonicalUrl, @@ -185,7 +185,8 @@ export type TypeSchemaIndex = { isWithMetaField: (profile: ProfileTypeSchema) => boolean; entityTree: () => EntityTree; exportTree: (filename: string) => Promise; - report: () => IRReport | undefined; + irReport: () => IrReport; + replaceSchemas: (schemas: TypeSchema[]) => TypeSchemaIndex; }; type EntityTree = Record>>; @@ -195,11 +196,11 @@ export const mkTypeSchemaIndex = ( { register, logger, - report, + irReport = {}, }: { register?: Register; logger?: CodegenLogger; - report?: IRReport; + irReport?: IrReport; }, ): TypeSchemaIndex => { const index: Record> = {}; @@ -399,6 +400,7 @@ export const mkTypeSchemaIndex = ( isWithMetaField, entityTree, exportTree, - report: () => report, + irReport: () => irReport, + replaceSchemas: (newSchemas) => mkTypeSchemaIndex(newSchemas, { register, logger, irReport: { ...irReport } }), }; }; diff --git a/test/unit/typeschema/ir/tree-shake.test.ts b/test/unit/typeschema/ir/tree-shake.test.ts index e7f325df..300bf207 100644 --- a/test/unit/typeschema/ir/tree-shake.test.ts +++ b/test/unit/typeschema/ir/tree-shake.test.ts @@ -8,7 +8,7 @@ import { } from "@root/typeschema/ir/tree-shake"; import { registerFromPackageMetas } from "@root/typeschema/register"; import type { CanonicalUrl, RegularTypeSchema } from "@root/typeschema/types"; -import { mkIndex, mkR4Register, r4Manager, r4Package, r5Package, resolveTs } from "@typeschema-test/utils"; +import { mkIndex, mkR4Register, r4Package, r5Package, resolveTs } from "@typeschema-test/utils"; describe("treeShake specific TypeSchema", async () => { const manager = await registerFromPackageMetas([r4Package, r5Package], { @@ -16,34 +16,30 @@ describe("treeShake specific TypeSchema", async () => { }); const tsIndex = await mkIndex(manager); it("tree shake report should be empty without treeshaking", () => { - expect(tsIndex.report()).toBeUndefined(); + expect(tsIndex.irReport()).toEqual({}); }); describe("Only Bundle & Operation Outcome without extensions", () => { - const shaked = treeShake( - tsIndex, - { - "hl7.fhir.r4.core": { - "http://hl7.org/fhir/StructureDefinition/Bundle": {}, - "http://hl7.org/fhir/StructureDefinition/OperationOutcome": {}, - "http://hl7.org/fhir/StructureDefinition/DomainResource": { - ignoreFields: ["extension", "modifierExtension"], - }, - "http://hl7.org/fhir/StructureDefinition/BackboneElement": { - ignoreFields: ["modifierExtension"], - }, - "http://hl7.org/fhir/StructureDefinition/Element": { - ignoreFields: ["extension"], - }, + const shaked = treeShake(tsIndex, { + "hl7.fhir.r4.core": { + "http://hl7.org/fhir/StructureDefinition/Bundle": {}, + "http://hl7.org/fhir/StructureDefinition/OperationOutcome": {}, + "http://hl7.org/fhir/StructureDefinition/DomainResource": { + ignoreFields: ["extension", "modifierExtension"], + }, + "http://hl7.org/fhir/StructureDefinition/BackboneElement": { + ignoreFields: ["modifierExtension"], + }, + "http://hl7.org/fhir/StructureDefinition/Element": { + ignoreFields: ["extension"], }, }, - r4Manager.resolutionTree(), - ); + }); - const report = shaked.report(); - assert(report); + const report = shaked.irReport(); it("check treeshake report", () => { expect(report).toBeDefined(); + assert(report.treeShake); expect(report.treeShake.skippedPackages).toMatchObject(["hl7.fhir.r5.core"]); expect(report.treeShake.packages).toMatchSnapshot(); }); From 61ddb563691f40ff12c12294a897fd2eff8e9be5 Mon Sep 17 00:00:00 2001 From: Aleksandr Penskoi Date: Tue, 3 Feb 2026 15:33:26 +0100 Subject: [PATCH 4/7] ref: introduce IrReport and standardize IR configuration - Replace treeShakeReport with dedicated IrReport generator - Add Conf suffix to IR config types (TreeShakeConf, LogicalPromotionConf, IrConf) - Rename .ir() builder method to .typeSchema() - Remove deprecated builder methods and update examples - Update documentation to reflect API changes --- README.md | 52 +- examples/local-package-folder/README.md | 20 +- examples/local-package-folder/generate.ts | 8 +- examples/typescript-ccda/generate.ts | 2 +- examples/typescript-r4/fhir-types/README.md | 2577 ++++++++++++++++- .../fhir-types/hl7-fhir-r4-core/README.md | 1950 ------------- examples/typescript-r4/generate.ts | 38 +- examples/typescript-sql-on-fhir/README.md | 8 +- examples/typescript-sql-on-fhir/generate.ts | 8 +- examples/typescript-us-core/generate.ts | 2 +- src/api/builder.ts | 54 +- src/api/writer-generator/ir-report.ts | 19 + src/api/writer-generator/typescript.ts | 12 - src/api/writer-generator/writer.ts | 1 + src/typeschema/ir/logic-promotion.ts | 13 +- src/typeschema/ir/report.ts | 67 + src/typeschema/ir/tree-shake.ts | 4 +- src/typeschema/ir/types.ts | 19 +- .../__snapshots__/introspection.test.ts.snap | 2 + .../api/write-generator/introspection.test.ts | 68 +- test/api/write-generator/typescript.test.ts | 6 +- 21 files changed, 2845 insertions(+), 2085 deletions(-) delete mode 100644 examples/typescript-r4/fhir-types/hl7-fhir-r4-core/README.md create mode 100644 src/api/writer-generator/ir-report.ts create mode 100644 src/typeschema/ir/report.ts diff --git a/README.md b/README.md index 46287f00..333b3855 100644 --- a/README.md +++ b/README.md @@ -79,7 +79,8 @@ yarn add @atomic-ehr/codegen const builder = new APIBuilder() .fromPackage("hl7.fhir.r4.core", "4.0.1") .typescript({}) - .outputTo("./examples/typescript-r4/fhir-types"); + .outputTo("./examples/typescript-r4/fhir-types") + .introspection({ typeTree: "./type-tree.yaml" }); const report = await builder.generate(); console.log(prettyReport(report)); @@ -121,11 +122,14 @@ const builder = new APIBuilder() // Input sources (choose one or combine) .fromPackage("hl7.fhir.r4.core", "4.0.1") // NPM registry package - .fromPackageRef("https://...package.tgz") // Remote TGZ file - .localStructureDefinitions({ ... }) // Loose JSON files + .fromPackageRef("https://...package.tgz") // Remote TGZ file + .localStructureDefinitions({ ... }) // Loose JSON files // Type Schema processing - .treeShake({ ... }) // Include only specified types + .typeSchema({ + treeShake: { ... }, // Include only specified types + logicalPromotion: { ... }, // Process logical models as resources + }) // Code generator (choose one) .typescript({ // TypeScript generator @@ -201,11 +205,13 @@ This approach enables generating idiomatic code for any programming language whi Tree shaking optimizes the generated output by including only the resources you explicitly need and their dependencies. Instead of generating types for an entire FHIR package (which can contain hundreds of resources), you can specify exactly which resources to include: ```typescript -.treeShake({ - "hl7.fhir.r4.core#4.0.1": { - "http://hl7.org/fhir/StructureDefinition/Patient": {}, - "http://hl7.org/fhir/StructureDefinition/Observation": {}, - } +.typeSchema({ + treeShake: { + "hl7.fhir.r4.core#4.0.1": { + "http://hl7.org/fhir/StructureDefinition/Patient": {}, + "http://hl7.org/fhir/StructureDefinition/Observation": {} + } + } }) ``` @@ -216,15 +222,17 @@ This feature automatically resolves and includes all dependencies (referenced ty Beyond resource-level filtering, tree shaking supports fine-grained field selection using `selectFields` (whitelist) or `ignoreFields` (blacklist): ```typescript -.treeShake({ - "hl7.fhir.r4.core#4.0.1": { - "http://hl7.org/fhir/StructureDefinition/Patient": { - selectFields: ["id", "name", "birthDate", "gender"] - }, - "http://hl7.org/fhir/StructureDefinition/Observation": { - ignoreFields: ["performer", "note"] +.typeSchema({ + treeShake: { + "hl7.fhir.r4.core#4.0.1": { + "http://hl7.org/fhir/StructureDefinition/Patient": { + selectFields: ["id", "name", "birthDate", "gender"] + }, + "http://hl7.org/fhir/StructureDefinition/Observation": { + ignoreFields: ["performer", "note"] + } + } } - } }) ``` @@ -247,10 +255,12 @@ Use the programmatic API via `APIBuilder`: ```typescript const builder = new APIBuilder({}) .fromPackage("my.custom.pkg", "4.0.1") - .promoteLogicToResource({ - "my.custom.pkg": [ - "http://example.org/StructureDefinition/MyLogicalModel" - ] + .typeSchema({ + logicalPromotion: { + "my.custom.pkg": [ + "http://example.org/StructureDefinition/MyLogicalModel" + ] + } }) ``` diff --git a/examples/local-package-folder/README.md b/examples/local-package-folder/README.md index a4cc7d20..a8a98632 100644 --- a/examples/local-package-folder/README.md +++ b/examples/local-package-folder/README.md @@ -102,10 +102,12 @@ bun run examples/local-package-folder/generate.ts To include only specific resources: ```typescript -.treeShake({ - "example.folder.structures": { - "http://example.org/fhir/StructureDefinition/ExampleNotebook": {}, - "http://example.org/fhir/StructureDefinition/OtherResource": {}, +.typeSchema({ + treeShake: { + "example.folder.structures": { + "http://example.org/fhir/StructureDefinition/ExampleNotebook": {}, + "http://example.org/fhir/StructureDefinition/OtherResource": {}, + } } }) ``` @@ -115,10 +117,12 @@ To include only specific resources: To include only specific fields: ```typescript -.treeShake({ - "example.folder.structures": { - "http://example.org/fhir/StructureDefinition/ExampleNotebook": { - selectFields: ["id", "title", "content"] +.typeSchema({ + treeShake: { + "example.folder.structures": { + "http://example.org/fhir/StructureDefinition/ExampleNotebook": { + selectFields: ["id", "title", "content"] + } } } }) diff --git a/examples/local-package-folder/generate.ts b/examples/local-package-folder/generate.ts index b68c2ca0..fb24b17e 100644 --- a/examples/local-package-folder/generate.ts +++ b/examples/local-package-folder/generate.ts @@ -17,9 +17,11 @@ async function generateFromLocalPackageFolder() { }) .typescript({}) .throwException(true) - .treeShake({ - "example.folder.structures": { - "http://example.org/fhir/StructureDefinition/ExampleNotebook": {}, + .typeSchema({ + treeShake: { + "example.folder.structures": { + "http://example.org/fhir/StructureDefinition/ExampleNotebook": {}, + }, }, }) .outputTo("./examples/local-package-folder/fhir-types") diff --git a/examples/typescript-ccda/generate.ts b/examples/typescript-ccda/generate.ts index d66cbe9c..5b777835 100644 --- a/examples/typescript-ccda/generate.ts +++ b/examples/typescript-ccda/generate.ts @@ -22,7 +22,7 @@ if (require.main === module) { const builder = new APIBuilder({ manager: registry }) .throwException() - .promoteLogicToResource({ "hl7.cda.uv.core": cdaResources }) + .typeSchema({ promoteLogical: { "hl7.cda.uv.core": cdaResources } }) .typescript({ withDebugComment: false }) .outputTo("./examples/typescript-ccda/fhir-types") .introspection({ diff --git a/examples/typescript-r4/fhir-types/README.md b/examples/typescript-r4/fhir-types/README.md index f68ced34..79a68bc1 100644 --- a/examples/typescript-r4/fhir-types/README.md +++ b/examples/typescript-r4/fhir-types/README.md @@ -1,3 +1,2576 @@ -# Tree Shake Report +# IR Report -All packages are included. +## Package: `hl7.fhir.r4.core` + +### Modified Canonicals + +#### `http://hl7.org/fhir/StructureDefinition/BackboneElement` + +Skipped fields: + +- `modifierExtension` + +#### `http://hl7.org/fhir/StructureDefinition/DomainResource` + +Skipped fields: + +- `extension` +- `modifierExtension` + +#### `http://hl7.org/fhir/StructureDefinition/Element` + +Skipped fields: + +- `extension` + +### Skipped Canonicals + +- `http://fhir-registry.smarthealthit.org/StructureDefinition/capabilities` +- `http://fhir-registry.smarthealthit.org/StructureDefinition/oauth-uris` +- `http://hl7.org/fhir/StructureDefinition/11179-objectClass` +- `http://hl7.org/fhir/StructureDefinition/11179-objectClassProperty` +- `http://hl7.org/fhir/StructureDefinition/11179-permitted-value-conceptmap` +- `http://hl7.org/fhir/StructureDefinition/11179-permitted-value-valueset` +- `http://hl7.org/fhir/StructureDefinition/Account` +- `http://hl7.org/fhir/StructureDefinition/ActivityDefinition` +- `http://hl7.org/fhir/StructureDefinition/AdverseEvent` +- `http://hl7.org/fhir/StructureDefinition/Age` +- `http://hl7.org/fhir/StructureDefinition/AllergyIntolerance` +- `http://hl7.org/fhir/StructureDefinition/Appointment` +- `http://hl7.org/fhir/StructureDefinition/AppointmentResponse` +- `http://hl7.org/fhir/StructureDefinition/AuditEvent` +- `http://hl7.org/fhir/StructureDefinition/BackboneElement` +- `http://hl7.org/fhir/StructureDefinition/Basic` +- `http://hl7.org/fhir/StructureDefinition/Binary` +- `http://hl7.org/fhir/StructureDefinition/BiologicallyDerivedProduct` +- `http://hl7.org/fhir/StructureDefinition/BodyStructure` +- `http://hl7.org/fhir/StructureDefinition/Bundle` +- `http://hl7.org/fhir/StructureDefinition/CapabilityStatement` +- `http://hl7.org/fhir/StructureDefinition/CarePlan` +- `http://hl7.org/fhir/StructureDefinition/CareTeam` +- `http://hl7.org/fhir/StructureDefinition/CatalogEntry` +- `http://hl7.org/fhir/StructureDefinition/ChargeItem` +- `http://hl7.org/fhir/StructureDefinition/ChargeItemDefinition` +- `http://hl7.org/fhir/StructureDefinition/Claim` +- `http://hl7.org/fhir/StructureDefinition/ClaimResponse` +- `http://hl7.org/fhir/StructureDefinition/ClinicalImpression` +- `http://hl7.org/fhir/StructureDefinition/CodeSystem` +- `http://hl7.org/fhir/StructureDefinition/Communication` +- `http://hl7.org/fhir/StructureDefinition/CommunicationRequest` +- `http://hl7.org/fhir/StructureDefinition/CompartmentDefinition` +- `http://hl7.org/fhir/StructureDefinition/Composition` +- `http://hl7.org/fhir/StructureDefinition/ConceptMap` +- `http://hl7.org/fhir/StructureDefinition/Condition` +- `http://hl7.org/fhir/StructureDefinition/Consent` +- `http://hl7.org/fhir/StructureDefinition/ContactDetail` +- `http://hl7.org/fhir/StructureDefinition/Contract` +- `http://hl7.org/fhir/StructureDefinition/Contributor` +- `http://hl7.org/fhir/StructureDefinition/Count` +- `http://hl7.org/fhir/StructureDefinition/Coverage` +- `http://hl7.org/fhir/StructureDefinition/CoverageEligibilityRequest` +- `http://hl7.org/fhir/StructureDefinition/CoverageEligibilityResponse` +- `http://hl7.org/fhir/StructureDefinition/DataRequirement` +- `http://hl7.org/fhir/StructureDefinition/Definition` +- `http://hl7.org/fhir/StructureDefinition/DetectedIssue` +- `http://hl7.org/fhir/StructureDefinition/Device` +- `http://hl7.org/fhir/StructureDefinition/DeviceDefinition` +- `http://hl7.org/fhir/StructureDefinition/DeviceMetric` +- `http://hl7.org/fhir/StructureDefinition/DeviceRequest` +- `http://hl7.org/fhir/StructureDefinition/DeviceUseStatement` +- `http://hl7.org/fhir/StructureDefinition/DiagnosticReport` +- `http://hl7.org/fhir/StructureDefinition/DiagnosticReport-geneticsAnalysis` +- `http://hl7.org/fhir/StructureDefinition/DiagnosticReport-geneticsAssessedCondition` +- `http://hl7.org/fhir/StructureDefinition/DiagnosticReport-geneticsFamilyMemberHistory` +- `http://hl7.org/fhir/StructureDefinition/DiagnosticReport-geneticsReferences` +- `http://hl7.org/fhir/StructureDefinition/Distance` +- `http://hl7.org/fhir/StructureDefinition/DocumentManifest` +- `http://hl7.org/fhir/StructureDefinition/DocumentReference` +- `http://hl7.org/fhir/StructureDefinition/DomainResource` +- `http://hl7.org/fhir/StructureDefinition/Dosage` +- `http://hl7.org/fhir/StructureDefinition/EffectEvidenceSynthesis` +- `http://hl7.org/fhir/StructureDefinition/Element` +- `http://hl7.org/fhir/StructureDefinition/ElementDefinition` +- `http://hl7.org/fhir/StructureDefinition/Encounter` +- `http://hl7.org/fhir/StructureDefinition/Endpoint` +- `http://hl7.org/fhir/StructureDefinition/EnrollmentRequest` +- `http://hl7.org/fhir/StructureDefinition/EnrollmentResponse` +- `http://hl7.org/fhir/StructureDefinition/EpisodeOfCare` +- `http://hl7.org/fhir/StructureDefinition/Event` +- `http://hl7.org/fhir/StructureDefinition/EventDefinition` +- `http://hl7.org/fhir/StructureDefinition/Evidence` +- `http://hl7.org/fhir/StructureDefinition/EvidenceVariable` +- `http://hl7.org/fhir/StructureDefinition/ExampleScenario` +- `http://hl7.org/fhir/StructureDefinition/ExplanationOfBenefit` +- `http://hl7.org/fhir/StructureDefinition/Expression` +- `http://hl7.org/fhir/StructureDefinition/Extension` +- `http://hl7.org/fhir/StructureDefinition/FamilyMemberHistory` +- `http://hl7.org/fhir/StructureDefinition/FiveWs` +- `http://hl7.org/fhir/StructureDefinition/Flag` +- `http://hl7.org/fhir/StructureDefinition/Goal` +- `http://hl7.org/fhir/StructureDefinition/GraphDefinition` +- `http://hl7.org/fhir/StructureDefinition/Group` +- `http://hl7.org/fhir/StructureDefinition/GuidanceResponse` +- `http://hl7.org/fhir/StructureDefinition/HealthcareService` +- `http://hl7.org/fhir/StructureDefinition/ImagingStudy` +- `http://hl7.org/fhir/StructureDefinition/Immunization` +- `http://hl7.org/fhir/StructureDefinition/ImmunizationEvaluation` +- `http://hl7.org/fhir/StructureDefinition/ImmunizationRecommendation` +- `http://hl7.org/fhir/StructureDefinition/ImplementationGuide` +- `http://hl7.org/fhir/StructureDefinition/InsurancePlan` +- `http://hl7.org/fhir/StructureDefinition/Invoice` +- `http://hl7.org/fhir/StructureDefinition/Library` +- `http://hl7.org/fhir/StructureDefinition/Linkage` +- `http://hl7.org/fhir/StructureDefinition/List` +- `http://hl7.org/fhir/StructureDefinition/Location` +- `http://hl7.org/fhir/StructureDefinition/MarketingStatus` +- `http://hl7.org/fhir/StructureDefinition/Measure` +- `http://hl7.org/fhir/StructureDefinition/MeasureReport` +- `http://hl7.org/fhir/StructureDefinition/Media` +- `http://hl7.org/fhir/StructureDefinition/Medication` +- `http://hl7.org/fhir/StructureDefinition/MedicationAdministration` +- `http://hl7.org/fhir/StructureDefinition/MedicationDispense` +- `http://hl7.org/fhir/StructureDefinition/MedicationKnowledge` +- `http://hl7.org/fhir/StructureDefinition/MedicationRequest` +- `http://hl7.org/fhir/StructureDefinition/MedicationStatement` +- `http://hl7.org/fhir/StructureDefinition/MedicinalProduct` +- `http://hl7.org/fhir/StructureDefinition/MedicinalProductAuthorization` +- `http://hl7.org/fhir/StructureDefinition/MedicinalProductContraindication` +- `http://hl7.org/fhir/StructureDefinition/MedicinalProductIndication` +- `http://hl7.org/fhir/StructureDefinition/MedicinalProductIngredient` +- `http://hl7.org/fhir/StructureDefinition/MedicinalProductInteraction` +- `http://hl7.org/fhir/StructureDefinition/MedicinalProductManufactured` +- `http://hl7.org/fhir/StructureDefinition/MedicinalProductPackaged` +- `http://hl7.org/fhir/StructureDefinition/MedicinalProductPharmaceutical` +- `http://hl7.org/fhir/StructureDefinition/MedicinalProductUndesirableEffect` +- `http://hl7.org/fhir/StructureDefinition/MessageDefinition` +- `http://hl7.org/fhir/StructureDefinition/MessageHeader` +- `http://hl7.org/fhir/StructureDefinition/MetadataResource` +- `http://hl7.org/fhir/StructureDefinition/MolecularSequence` +- `http://hl7.org/fhir/StructureDefinition/Money` +- `http://hl7.org/fhir/StructureDefinition/MoneyQuantity` +- `http://hl7.org/fhir/StructureDefinition/NamingSystem` +- `http://hl7.org/fhir/StructureDefinition/NutritionOrder` +- `http://hl7.org/fhir/StructureDefinition/Observation` +- `http://hl7.org/fhir/StructureDefinition/ObservationDefinition` +- `http://hl7.org/fhir/StructureDefinition/OperationDefinition` +- `http://hl7.org/fhir/StructureDefinition/OperationOutcome` +- `http://hl7.org/fhir/StructureDefinition/Organization` +- `http://hl7.org/fhir/StructureDefinition/OrganizationAffiliation` +- `http://hl7.org/fhir/StructureDefinition/ParameterDefinition` +- `http://hl7.org/fhir/StructureDefinition/Parameters` +- `http://hl7.org/fhir/StructureDefinition/Patient` +- `http://hl7.org/fhir/StructureDefinition/PaymentNotice` +- `http://hl7.org/fhir/StructureDefinition/PaymentReconciliation` +- `http://hl7.org/fhir/StructureDefinition/Person` +- `http://hl7.org/fhir/StructureDefinition/PlanDefinition` +- `http://hl7.org/fhir/StructureDefinition/Population` +- `http://hl7.org/fhir/StructureDefinition/Practitioner` +- `http://hl7.org/fhir/StructureDefinition/PractitionerRole` +- `http://hl7.org/fhir/StructureDefinition/Procedure` +- `http://hl7.org/fhir/StructureDefinition/ProdCharacteristic` +- `http://hl7.org/fhir/StructureDefinition/ProductShelfLife` +- `http://hl7.org/fhir/StructureDefinition/Provenance` +- `http://hl7.org/fhir/StructureDefinition/Questionnaire` +- `http://hl7.org/fhir/StructureDefinition/QuestionnaireResponse` +- `http://hl7.org/fhir/StructureDefinition/RelatedArtifact` +- `http://hl7.org/fhir/StructureDefinition/RelatedPerson` +- `http://hl7.org/fhir/StructureDefinition/Request` +- `http://hl7.org/fhir/StructureDefinition/RequestGroup` +- `http://hl7.org/fhir/StructureDefinition/ResearchDefinition` +- `http://hl7.org/fhir/StructureDefinition/ResearchElementDefinition` +- `http://hl7.org/fhir/StructureDefinition/ResearchStudy` +- `http://hl7.org/fhir/StructureDefinition/ResearchSubject` +- `http://hl7.org/fhir/StructureDefinition/RiskAssessment` +- `http://hl7.org/fhir/StructureDefinition/RiskEvidenceSynthesis` +- `http://hl7.org/fhir/StructureDefinition/Schedule` +- `http://hl7.org/fhir/StructureDefinition/SearchParameter` +- `http://hl7.org/fhir/StructureDefinition/ServiceRequest` +- `http://hl7.org/fhir/StructureDefinition/SimpleQuantity` +- `http://hl7.org/fhir/StructureDefinition/Slot` +- `http://hl7.org/fhir/StructureDefinition/Specimen` +- `http://hl7.org/fhir/StructureDefinition/SpecimenDefinition` +- `http://hl7.org/fhir/StructureDefinition/StructureDefinition` +- `http://hl7.org/fhir/StructureDefinition/StructureMap` +- `http://hl7.org/fhir/StructureDefinition/Subscription` +- `http://hl7.org/fhir/StructureDefinition/Substance` +- `http://hl7.org/fhir/StructureDefinition/SubstanceAmount` +- `http://hl7.org/fhir/StructureDefinition/SubstanceNucleicAcid` +- `http://hl7.org/fhir/StructureDefinition/SubstancePolymer` +- `http://hl7.org/fhir/StructureDefinition/SubstanceProtein` +- `http://hl7.org/fhir/StructureDefinition/SubstanceReferenceInformation` +- `http://hl7.org/fhir/StructureDefinition/SubstanceSourceMaterial` +- `http://hl7.org/fhir/StructureDefinition/SubstanceSpecification` +- `http://hl7.org/fhir/StructureDefinition/SupplyDelivery` +- `http://hl7.org/fhir/StructureDefinition/SupplyRequest` +- `http://hl7.org/fhir/StructureDefinition/Task` +- `http://hl7.org/fhir/StructureDefinition/TerminologyCapabilities` +- `http://hl7.org/fhir/StructureDefinition/TestReport` +- `http://hl7.org/fhir/StructureDefinition/TestScript` +- `http://hl7.org/fhir/StructureDefinition/TriggerDefinition` +- `http://hl7.org/fhir/StructureDefinition/UsageContext` +- `http://hl7.org/fhir/StructureDefinition/ValueSet` +- `http://hl7.org/fhir/StructureDefinition/VerificationResult` +- `http://hl7.org/fhir/StructureDefinition/VisionPrescription` +- `http://hl7.org/fhir/StructureDefinition/actualgroup` +- `http://hl7.org/fhir/StructureDefinition/allergyintolerance-assertedDate` +- `http://hl7.org/fhir/StructureDefinition/allergyintolerance-certainty` +- `http://hl7.org/fhir/StructureDefinition/allergyintolerance-duration` +- `http://hl7.org/fhir/StructureDefinition/allergyintolerance-reasonRefuted` +- `http://hl7.org/fhir/StructureDefinition/allergyintolerance-resolutionAge` +- `http://hl7.org/fhir/StructureDefinition/allergyintolerance-substanceExposureRisk` +- `http://hl7.org/fhir/StructureDefinition/auditevent-Accession` +- `http://hl7.org/fhir/StructureDefinition/auditevent-Anonymized` +- `http://hl7.org/fhir/StructureDefinition/auditevent-Encrypted` +- `http://hl7.org/fhir/StructureDefinition/auditevent-Instance` +- `http://hl7.org/fhir/StructureDefinition/auditevent-MPPS` +- `http://hl7.org/fhir/StructureDefinition/auditevent-NumberOfInstances` +- `http://hl7.org/fhir/StructureDefinition/auditevent-ParticipantObjectContainsStudy` +- `http://hl7.org/fhir/StructureDefinition/auditevent-SOPClass` +- `http://hl7.org/fhir/StructureDefinition/bmi` +- `http://hl7.org/fhir/StructureDefinition/bodySite` +- `http://hl7.org/fhir/StructureDefinition/bodyheight` +- `http://hl7.org/fhir/StructureDefinition/bodytemp` +- `http://hl7.org/fhir/StructureDefinition/bodyweight` +- `http://hl7.org/fhir/StructureDefinition/bp` +- `http://hl7.org/fhir/StructureDefinition/capabilitystatement-expectation` +- `http://hl7.org/fhir/StructureDefinition/capabilitystatement-prohibited` +- `http://hl7.org/fhir/StructureDefinition/capabilitystatement-search-parameter-combination` +- `http://hl7.org/fhir/StructureDefinition/capabilitystatement-supported-system` +- `http://hl7.org/fhir/StructureDefinition/capabilitystatement-websocket` +- `http://hl7.org/fhir/StructureDefinition/careplan-activity-title` +- `http://hl7.org/fhir/StructureDefinition/catalog` +- `http://hl7.org/fhir/StructureDefinition/cdshooksguidanceresponse` +- `http://hl7.org/fhir/StructureDefinition/cdshooksrequestgroup` +- `http://hl7.org/fhir/StructureDefinition/cdshooksserviceplandefinition` +- `http://hl7.org/fhir/StructureDefinition/cholesterol` +- `http://hl7.org/fhir/StructureDefinition/clinicaldocument` +- `http://hl7.org/fhir/StructureDefinition/codesystem-alternate` +- `http://hl7.org/fhir/StructureDefinition/codesystem-author` +- `http://hl7.org/fhir/StructureDefinition/codesystem-concept-comments` +- `http://hl7.org/fhir/StructureDefinition/codesystem-conceptOrder` +- `http://hl7.org/fhir/StructureDefinition/codesystem-effectiveDate` +- `http://hl7.org/fhir/StructureDefinition/codesystem-expirationDate` +- `http://hl7.org/fhir/StructureDefinition/codesystem-history` +- `http://hl7.org/fhir/StructureDefinition/codesystem-keyWord` +- `http://hl7.org/fhir/StructureDefinition/codesystem-label` +- `http://hl7.org/fhir/StructureDefinition/codesystem-map` +- `http://hl7.org/fhir/StructureDefinition/codesystem-otherName` +- `http://hl7.org/fhir/StructureDefinition/codesystem-replacedby` +- `http://hl7.org/fhir/StructureDefinition/codesystem-sourceReference` +- `http://hl7.org/fhir/StructureDefinition/codesystem-trusted-expansion` +- `http://hl7.org/fhir/StructureDefinition/codesystem-usage` +- `http://hl7.org/fhir/StructureDefinition/codesystem-warning` +- `http://hl7.org/fhir/StructureDefinition/codesystem-workflowStatus` +- `http://hl7.org/fhir/StructureDefinition/coding-sctdescid` +- `http://hl7.org/fhir/StructureDefinition/communication-media` +- `http://hl7.org/fhir/StructureDefinition/communicationrequest-initiatingLocation` +- `http://hl7.org/fhir/StructureDefinition/composition-clinicaldocument-otherConfidentiality` +- `http://hl7.org/fhir/StructureDefinition/composition-clinicaldocument-versionNumber` +- `http://hl7.org/fhir/StructureDefinition/composition-section-subject` +- `http://hl7.org/fhir/StructureDefinition/computableplandefinition` +- `http://hl7.org/fhir/StructureDefinition/concept-bidirectional` +- `http://hl7.org/fhir/StructureDefinition/condition-assertedDate` +- `http://hl7.org/fhir/StructureDefinition/condition-dueTo` +- `http://hl7.org/fhir/StructureDefinition/condition-occurredFollowing` +- `http://hl7.org/fhir/StructureDefinition/condition-outcome` +- `http://hl7.org/fhir/StructureDefinition/condition-related` +- `http://hl7.org/fhir/StructureDefinition/condition-ruledOut` +- `http://hl7.org/fhir/StructureDefinition/consent-NotificationEndpoint` +- `http://hl7.org/fhir/StructureDefinition/consent-Transcriber` +- `http://hl7.org/fhir/StructureDefinition/consent-Witness` +- `http://hl7.org/fhir/StructureDefinition/consent-location` +- `http://hl7.org/fhir/StructureDefinition/contactpoint-area` +- `http://hl7.org/fhir/StructureDefinition/contactpoint-country` +- `http://hl7.org/fhir/StructureDefinition/contactpoint-extension` +- `http://hl7.org/fhir/StructureDefinition/contactpoint-local` +- `http://hl7.org/fhir/StructureDefinition/cqf-calculatedValue` +- `http://hl7.org/fhir/StructureDefinition/cqf-cdsHooksEndpoint` +- `http://hl7.org/fhir/StructureDefinition/cqf-citation` +- `http://hl7.org/fhir/StructureDefinition/cqf-encounterClass` +- `http://hl7.org/fhir/StructureDefinition/cqf-encounterType` +- `http://hl7.org/fhir/StructureDefinition/cqf-expression` +- `http://hl7.org/fhir/StructureDefinition/cqf-initialValue` +- `http://hl7.org/fhir/StructureDefinition/cqf-initiatingOrganization` +- `http://hl7.org/fhir/StructureDefinition/cqf-initiatingPerson` +- `http://hl7.org/fhir/StructureDefinition/cqf-library` +- `http://hl7.org/fhir/StructureDefinition/cqf-measureInfo` +- `http://hl7.org/fhir/StructureDefinition/cqf-qualityOfEvidence` +- `http://hl7.org/fhir/StructureDefinition/cqf-questionnaire` +- `http://hl7.org/fhir/StructureDefinition/cqf-receivingOrganization` +- `http://hl7.org/fhir/StructureDefinition/cqf-receivingPerson` +- `http://hl7.org/fhir/StructureDefinition/cqf-recipientLanguage` +- `http://hl7.org/fhir/StructureDefinition/cqf-recipientType` +- `http://hl7.org/fhir/StructureDefinition/cqf-relativeDateTime` +- `http://hl7.org/fhir/StructureDefinition/cqf-strengthOfRecommendation` +- `http://hl7.org/fhir/StructureDefinition/cqf-systemUserLanguage` +- `http://hl7.org/fhir/StructureDefinition/cqf-systemUserTaskContext` +- `http://hl7.org/fhir/StructureDefinition/cqf-systemUserType` +- `http://hl7.org/fhir/StructureDefinition/cqllibrary` +- `http://hl7.org/fhir/StructureDefinition/cqm-ValidityPeriod` +- `http://hl7.org/fhir/StructureDefinition/data-absent-reason` +- `http://hl7.org/fhir/StructureDefinition/designNote` +- `http://hl7.org/fhir/StructureDefinition/device-implantStatus` +- `http://hl7.org/fhir/StructureDefinition/devicemetricobservation` +- `http://hl7.org/fhir/StructureDefinition/devicerequest-patientInstruction` +- `http://hl7.org/fhir/StructureDefinition/diagnosticReport-addendumOf` +- `http://hl7.org/fhir/StructureDefinition/diagnosticReport-extends` +- `http://hl7.org/fhir/StructureDefinition/diagnosticReport-locationPerformed` +- `http://hl7.org/fhir/StructureDefinition/diagnosticReport-replaces` +- `http://hl7.org/fhir/StructureDefinition/diagnosticReport-risk` +- `http://hl7.org/fhir/StructureDefinition/diagnosticReport-summaryOf` +- `http://hl7.org/fhir/StructureDefinition/diagnosticreport-genetics` +- `http://hl7.org/fhir/StructureDefinition/display` +- `http://hl7.org/fhir/StructureDefinition/ehrsrle-auditevent` +- `http://hl7.org/fhir/StructureDefinition/ehrsrle-provenance` +- `http://hl7.org/fhir/StructureDefinition/elementdefinition-allowedUnits` +- `http://hl7.org/fhir/StructureDefinition/elementdefinition-bestpractice` +- `http://hl7.org/fhir/StructureDefinition/elementdefinition-bestpractice-explanation` +- `http://hl7.org/fhir/StructureDefinition/elementdefinition-bindingName` +- `http://hl7.org/fhir/StructureDefinition/elementdefinition-de` +- `http://hl7.org/fhir/StructureDefinition/elementdefinition-equivalence` +- `http://hl7.org/fhir/StructureDefinition/elementdefinition-identifier` +- `http://hl7.org/fhir/StructureDefinition/elementdefinition-inheritedExtensibleValueSet` +- `http://hl7.org/fhir/StructureDefinition/elementdefinition-isCommonBinding` +- `http://hl7.org/fhir/StructureDefinition/elementdefinition-maxValueSet` +- `http://hl7.org/fhir/StructureDefinition/elementdefinition-minValueSet` +- `http://hl7.org/fhir/StructureDefinition/elementdefinition-namespace` +- `http://hl7.org/fhir/StructureDefinition/elementdefinition-profile-element` +- `http://hl7.org/fhir/StructureDefinition/elementdefinition-question` +- `http://hl7.org/fhir/StructureDefinition/elementdefinition-selector` +- `http://hl7.org/fhir/StructureDefinition/elementdefinition-translatable` +- `http://hl7.org/fhir/StructureDefinition/encounter-associatedEncounter` +- `http://hl7.org/fhir/StructureDefinition/encounter-modeOfArrival` +- `http://hl7.org/fhir/StructureDefinition/encounter-reasonCancelled` +- `http://hl7.org/fhir/StructureDefinition/entryFormat` +- `http://hl7.org/fhir/StructureDefinition/event-basedOn` +- `http://hl7.org/fhir/StructureDefinition/event-eventHistory` +- `http://hl7.org/fhir/StructureDefinition/event-location` +- `http://hl7.org/fhir/StructureDefinition/event-partOf` +- `http://hl7.org/fhir/StructureDefinition/event-performerFunction` +- `http://hl7.org/fhir/StructureDefinition/event-statusReason` +- `http://hl7.org/fhir/StructureDefinition/example-composition` +- `http://hl7.org/fhir/StructureDefinition/example-section-library` +- `http://hl7.org/fhir/StructureDefinition/family-member-history-genetics-observation` +- `http://hl7.org/fhir/StructureDefinition/family-member-history-genetics-parent` +- `http://hl7.org/fhir/StructureDefinition/family-member-history-genetics-sibling` +- `http://hl7.org/fhir/StructureDefinition/familymemberhistory-abatement` +- `http://hl7.org/fhir/StructureDefinition/familymemberhistory-genetic` +- `http://hl7.org/fhir/StructureDefinition/familymemberhistory-patient-record` +- `http://hl7.org/fhir/StructureDefinition/familymemberhistory-severity` +- `http://hl7.org/fhir/StructureDefinition/familymemberhistory-type` +- `http://hl7.org/fhir/StructureDefinition/flag-detail` +- `http://hl7.org/fhir/StructureDefinition/flag-priority` +- `http://hl7.org/fhir/StructureDefinition/geolocation` +- `http://hl7.org/fhir/StructureDefinition/goal-acceptance` +- `http://hl7.org/fhir/StructureDefinition/goal-reasonRejected` +- `http://hl7.org/fhir/StructureDefinition/goal-relationship` +- `http://hl7.org/fhir/StructureDefinition/groupdefinition` +- `http://hl7.org/fhir/StructureDefinition/hdlcholesterol` +- `http://hl7.org/fhir/StructureDefinition/headcircum` +- `http://hl7.org/fhir/StructureDefinition/heartrate` +- `http://hl7.org/fhir/StructureDefinition/hla-genotyping-results-allele-database` +- `http://hl7.org/fhir/StructureDefinition/hla-genotyping-results-glstring` +- `http://hl7.org/fhir/StructureDefinition/hla-genotyping-results-haploid` +- `http://hl7.org/fhir/StructureDefinition/hla-genotyping-results-method` +- `http://hl7.org/fhir/StructureDefinition/hlaresult` +- `http://hl7.org/fhir/StructureDefinition/http-response-header` +- `http://hl7.org/fhir/StructureDefinition/humanname-assembly-order` +- `http://hl7.org/fhir/StructureDefinition/humanname-fathers-family` +- `http://hl7.org/fhir/StructureDefinition/humanname-mothers-family` +- `http://hl7.org/fhir/StructureDefinition/humanname-own-name` +- `http://hl7.org/fhir/StructureDefinition/humanname-own-prefix` +- `http://hl7.org/fhir/StructureDefinition/humanname-partner-name` +- `http://hl7.org/fhir/StructureDefinition/humanname-partner-prefix` +- `http://hl7.org/fhir/StructureDefinition/identifier-validDate` +- `http://hl7.org/fhir/StructureDefinition/iso21090-AD-use` +- `http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-additionalLocator` +- `http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-buildingNumberSuffix` +- `http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-careOf` +- `http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-censusTract` +- `http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-delimiter` +- `http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-deliveryAddressLine` +- `http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-deliveryInstallationArea` +- `http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-deliveryInstallationQualifier` +- `http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-deliveryInstallationType` +- `http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-deliveryMode` +- `http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-deliveryModeIdentifier` +- `http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-direction` +- `http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumber` +- `http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-houseNumberNumeric` +- `http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-postBox` +- `http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-precinct` +- `http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetAddressLine` +- `http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetName` +- `http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetNameBase` +- `http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-streetNameType` +- `http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-unitID` +- `http://hl7.org/fhir/StructureDefinition/iso21090-ADXP-unitType` +- `http://hl7.org/fhir/StructureDefinition/iso21090-EN-qualifier` +- `http://hl7.org/fhir/StructureDefinition/iso21090-EN-representation` +- `http://hl7.org/fhir/StructureDefinition/iso21090-EN-use` +- `http://hl7.org/fhir/StructureDefinition/iso21090-PQ-translation` +- `http://hl7.org/fhir/StructureDefinition/iso21090-SC-coding` +- `http://hl7.org/fhir/StructureDefinition/iso21090-TEL-address` +- `http://hl7.org/fhir/StructureDefinition/iso21090-nullFlavor` +- `http://hl7.org/fhir/StructureDefinition/iso21090-preferred` +- `http://hl7.org/fhir/StructureDefinition/iso21090-uncertainty` +- `http://hl7.org/fhir/StructureDefinition/iso21090-uncertaintyType` +- `http://hl7.org/fhir/StructureDefinition/language` +- `http://hl7.org/fhir/StructureDefinition/ldlcholesterol` +- `http://hl7.org/fhir/StructureDefinition/lipidprofile` +- `http://hl7.org/fhir/StructureDefinition/list-changeBase` +- `http://hl7.org/fhir/StructureDefinition/location-boundary-geojson` +- `http://hl7.org/fhir/StructureDefinition/location-distance` +- `http://hl7.org/fhir/StructureDefinition/match-grade` +- `http://hl7.org/fhir/StructureDefinition/maxDecimalPlaces` +- `http://hl7.org/fhir/StructureDefinition/maxSize` +- `http://hl7.org/fhir/StructureDefinition/maxValue` +- `http://hl7.org/fhir/StructureDefinition/messageheader-response-request` +- `http://hl7.org/fhir/StructureDefinition/mimeType` +- `http://hl7.org/fhir/StructureDefinition/minLength` +- `http://hl7.org/fhir/StructureDefinition/minValue` +- `http://hl7.org/fhir/StructureDefinition/narrativeLink` +- `http://hl7.org/fhir/StructureDefinition/nutritionorder-adaptiveFeedingDevice` +- `http://hl7.org/fhir/StructureDefinition/observation-bodyPosition` +- `http://hl7.org/fhir/StructureDefinition/observation-delta` +- `http://hl7.org/fhir/StructureDefinition/observation-deviceCode` +- `http://hl7.org/fhir/StructureDefinition/observation-focusCode` +- `http://hl7.org/fhir/StructureDefinition/observation-gatewayDevice` +- `http://hl7.org/fhir/StructureDefinition/observation-genetics` +- `http://hl7.org/fhir/StructureDefinition/observation-geneticsAllele` +- `http://hl7.org/fhir/StructureDefinition/observation-geneticsAminoAcidChange` +- `http://hl7.org/fhir/StructureDefinition/observation-geneticsAncestry` +- `http://hl7.org/fhir/StructureDefinition/observation-geneticsCopyNumberEvent` +- `http://hl7.org/fhir/StructureDefinition/observation-geneticsDNARegionName` +- `http://hl7.org/fhir/StructureDefinition/observation-geneticsGene` +- `http://hl7.org/fhir/StructureDefinition/observation-geneticsGenomicSourceClass` +- `http://hl7.org/fhir/StructureDefinition/observation-geneticsInterpretation` +- `http://hl7.org/fhir/StructureDefinition/observation-geneticsPhaseSet` +- `http://hl7.org/fhir/StructureDefinition/observation-geneticsVariant` +- `http://hl7.org/fhir/StructureDefinition/observation-precondition` +- `http://hl7.org/fhir/StructureDefinition/observation-reagent` +- `http://hl7.org/fhir/StructureDefinition/observation-replaces` +- `http://hl7.org/fhir/StructureDefinition/observation-secondaryFinding` +- `http://hl7.org/fhir/StructureDefinition/observation-sequelTo` +- `http://hl7.org/fhir/StructureDefinition/observation-specimenCode` +- `http://hl7.org/fhir/StructureDefinition/observation-timeOffset` +- `http://hl7.org/fhir/StructureDefinition/oid` +- `http://hl7.org/fhir/StructureDefinition/openEHR-administration` +- `http://hl7.org/fhir/StructureDefinition/openEHR-careplan` +- `http://hl7.org/fhir/StructureDefinition/openEHR-exposureDate` +- `http://hl7.org/fhir/StructureDefinition/openEHR-exposureDescription` +- `http://hl7.org/fhir/StructureDefinition/openEHR-exposureDuration` +- `http://hl7.org/fhir/StructureDefinition/openEHR-location` +- `http://hl7.org/fhir/StructureDefinition/openEHR-management` +- `http://hl7.org/fhir/StructureDefinition/openEHR-test` +- `http://hl7.org/fhir/StructureDefinition/operationdefinition-allowed-type` +- `http://hl7.org/fhir/StructureDefinition/operationdefinition-profile` +- `http://hl7.org/fhir/StructureDefinition/operationoutcome-authority` +- `http://hl7.org/fhir/StructureDefinition/operationoutcome-detectedIssue` +- `http://hl7.org/fhir/StructureDefinition/operationoutcome-issue-source` +- `http://hl7.org/fhir/StructureDefinition/ordinalValue` +- `http://hl7.org/fhir/StructureDefinition/organization-period` +- `http://hl7.org/fhir/StructureDefinition/organization-preferredContact` +- `http://hl7.org/fhir/StructureDefinition/organizationaffiliation-primaryInd` +- `http://hl7.org/fhir/StructureDefinition/originalText` +- `http://hl7.org/fhir/StructureDefinition/oxygensat` +- `http://hl7.org/fhir/StructureDefinition/parameters-fullUrl` +- `http://hl7.org/fhir/StructureDefinition/patient-adoptionInfo` +- `http://hl7.org/fhir/StructureDefinition/patient-animal` +- `http://hl7.org/fhir/StructureDefinition/patient-birthPlace` +- `http://hl7.org/fhir/StructureDefinition/patient-birthTime` +- `http://hl7.org/fhir/StructureDefinition/patient-cadavericDonor` +- `http://hl7.org/fhir/StructureDefinition/patient-citizenship` +- `http://hl7.org/fhir/StructureDefinition/patient-congregation` +- `http://hl7.org/fhir/StructureDefinition/patient-disability` +- `http://hl7.org/fhir/StructureDefinition/patient-genderIdentity` +- `http://hl7.org/fhir/StructureDefinition/patient-importance` +- `http://hl7.org/fhir/StructureDefinition/patient-interpreterRequired` +- `http://hl7.org/fhir/StructureDefinition/patient-mothersMaidenName` +- `http://hl7.org/fhir/StructureDefinition/patient-nationality` +- `http://hl7.org/fhir/StructureDefinition/patient-preferenceType` +- `http://hl7.org/fhir/StructureDefinition/patient-proficiency` +- `http://hl7.org/fhir/StructureDefinition/patient-relatedPerson` +- `http://hl7.org/fhir/StructureDefinition/patient-religion` +- `http://hl7.org/fhir/StructureDefinition/picoelement` +- `http://hl7.org/fhir/StructureDefinition/practitioner-animalSpecies` +- `http://hl7.org/fhir/StructureDefinition/practitionerrole-primaryInd` +- `http://hl7.org/fhir/StructureDefinition/procedure-approachBodyStructure` +- `http://hl7.org/fhir/StructureDefinition/procedure-causedBy` +- `http://hl7.org/fhir/StructureDefinition/procedure-directedBy` +- `http://hl7.org/fhir/StructureDefinition/procedure-incisionDateTime` +- `http://hl7.org/fhir/StructureDefinition/procedure-method` +- `http://hl7.org/fhir/StructureDefinition/procedure-progressStatus` +- `http://hl7.org/fhir/StructureDefinition/procedure-schedule` +- `http://hl7.org/fhir/StructureDefinition/procedure-targetBodyStructure` +- `http://hl7.org/fhir/StructureDefinition/provenance-relevant-history` +- `http://hl7.org/fhir/StructureDefinition/quantity-precision` +- `http://hl7.org/fhir/StructureDefinition/questionnaire-baseType` +- `http://hl7.org/fhir/StructureDefinition/questionnaire-choiceOrientation` +- `http://hl7.org/fhir/StructureDefinition/questionnaire-constraint` +- `http://hl7.org/fhir/StructureDefinition/questionnaire-displayCategory` +- `http://hl7.org/fhir/StructureDefinition/questionnaire-fhirType` +- `http://hl7.org/fhir/StructureDefinition/questionnaire-hidden` +- `http://hl7.org/fhir/StructureDefinition/questionnaire-itemControl` +- `http://hl7.org/fhir/StructureDefinition/questionnaire-maxOccurs` +- `http://hl7.org/fhir/StructureDefinition/questionnaire-minOccurs` +- `http://hl7.org/fhir/StructureDefinition/questionnaire-optionExclusive` +- `http://hl7.org/fhir/StructureDefinition/questionnaire-optionPrefix` +- `http://hl7.org/fhir/StructureDefinition/questionnaire-referenceFilter` +- `http://hl7.org/fhir/StructureDefinition/questionnaire-referenceProfile` +- `http://hl7.org/fhir/StructureDefinition/questionnaire-referenceResource` +- `http://hl7.org/fhir/StructureDefinition/questionnaire-signatureRequired` +- `http://hl7.org/fhir/StructureDefinition/questionnaire-sliderStepValue` +- `http://hl7.org/fhir/StructureDefinition/questionnaire-supportLink` +- `http://hl7.org/fhir/StructureDefinition/questionnaire-unit` +- `http://hl7.org/fhir/StructureDefinition/questionnaire-unitOption` +- `http://hl7.org/fhir/StructureDefinition/questionnaire-unitValueSet` +- `http://hl7.org/fhir/StructureDefinition/questionnaire-usageMode` +- `http://hl7.org/fhir/StructureDefinition/questionnaireresponse-author` +- `http://hl7.org/fhir/StructureDefinition/questionnaireresponse-completionMode` +- `http://hl7.org/fhir/StructureDefinition/questionnaireresponse-reason` +- `http://hl7.org/fhir/StructureDefinition/questionnaireresponse-reviewer` +- `http://hl7.org/fhir/StructureDefinition/questionnaireresponse-signature` +- `http://hl7.org/fhir/StructureDefinition/regex` +- `http://hl7.org/fhir/StructureDefinition/relative-date` +- `http://hl7.org/fhir/StructureDefinition/rendered-value` +- `http://hl7.org/fhir/StructureDefinition/rendering-markdown` +- `http://hl7.org/fhir/StructureDefinition/rendering-style` +- `http://hl7.org/fhir/StructureDefinition/rendering-styleSensitive` +- `http://hl7.org/fhir/StructureDefinition/rendering-xhtml` +- `http://hl7.org/fhir/StructureDefinition/replaces` +- `http://hl7.org/fhir/StructureDefinition/request-doNotPerform` +- `http://hl7.org/fhir/StructureDefinition/request-insurance` +- `http://hl7.org/fhir/StructureDefinition/request-performerOrder` +- `http://hl7.org/fhir/StructureDefinition/request-relevantHistory` +- `http://hl7.org/fhir/StructureDefinition/request-replaces` +- `http://hl7.org/fhir/StructureDefinition/request-statusReason` +- `http://hl7.org/fhir/StructureDefinition/resource-approvalDate` +- `http://hl7.org/fhir/StructureDefinition/resource-effectivePeriod` +- `http://hl7.org/fhir/StructureDefinition/resource-lastReviewDate` +- `http://hl7.org/fhir/StructureDefinition/resource-pertainsToGoal` +- `http://hl7.org/fhir/StructureDefinition/resprate` +- `http://hl7.org/fhir/StructureDefinition/servicerequest-genetics` +- `http://hl7.org/fhir/StructureDefinition/servicerequest-geneticsItem` +- `http://hl7.org/fhir/StructureDefinition/servicerequest-precondition` +- `http://hl7.org/fhir/StructureDefinition/servicerequest-questionnaireRequest` +- `http://hl7.org/fhir/StructureDefinition/shareableactivitydefinition` +- `http://hl7.org/fhir/StructureDefinition/shareablecodesystem` +- `http://hl7.org/fhir/StructureDefinition/shareablelibrary` +- `http://hl7.org/fhir/StructureDefinition/shareablemeasure` +- `http://hl7.org/fhir/StructureDefinition/shareableplandefinition` +- `http://hl7.org/fhir/StructureDefinition/shareablevalueset` +- `http://hl7.org/fhir/StructureDefinition/specimen-collectionPriority` +- `http://hl7.org/fhir/StructureDefinition/specimen-isDryWeight` +- `http://hl7.org/fhir/StructureDefinition/specimen-processingTime` +- `http://hl7.org/fhir/StructureDefinition/specimen-sequenceNumber` +- `http://hl7.org/fhir/StructureDefinition/specimen-specialHandling` +- `http://hl7.org/fhir/StructureDefinition/structuredefinition-ancestor` +- `http://hl7.org/fhir/StructureDefinition/structuredefinition-applicable-version` +- `http://hl7.org/fhir/StructureDefinition/structuredefinition-category` +- `http://hl7.org/fhir/StructureDefinition/structuredefinition-codegen-super` +- `http://hl7.org/fhir/StructureDefinition/structuredefinition-dependencies` +- `http://hl7.org/fhir/StructureDefinition/structuredefinition-display-hint` +- `http://hl7.org/fhir/StructureDefinition/structuredefinition-explicit-type-name` +- `http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type` +- `http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm` +- `http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm-no-warnings` +- `http://hl7.org/fhir/StructureDefinition/structuredefinition-hierarchy` +- `http://hl7.org/fhir/StructureDefinition/structuredefinition-normative-version` +- `http://hl7.org/fhir/StructureDefinition/structuredefinition-security-category` +- `http://hl7.org/fhir/StructureDefinition/structuredefinition-standards-status` +- `http://hl7.org/fhir/StructureDefinition/structuredefinition-summary` +- `http://hl7.org/fhir/StructureDefinition/structuredefinition-table-name` +- `http://hl7.org/fhir/StructureDefinition/structuredefinition-template-status` +- `http://hl7.org/fhir/StructureDefinition/structuredefinition-wg` +- `http://hl7.org/fhir/StructureDefinition/structuredefinition-xml-no-order` +- `http://hl7.org/fhir/StructureDefinition/synthesis` +- `http://hl7.org/fhir/StructureDefinition/task-candidateList` +- `http://hl7.org/fhir/StructureDefinition/task-replaces` +- `http://hl7.org/fhir/StructureDefinition/timing-dayOfMonth` +- `http://hl7.org/fhir/StructureDefinition/timing-daysOfCycle` +- `http://hl7.org/fhir/StructureDefinition/timing-exact` +- `http://hl7.org/fhir/StructureDefinition/translation` +- `http://hl7.org/fhir/StructureDefinition/triglyceride` +- `http://hl7.org/fhir/StructureDefinition/tz-code` +- `http://hl7.org/fhir/StructureDefinition/tz-offset` +- `http://hl7.org/fhir/StructureDefinition/usagecontext-group` +- `http://hl7.org/fhir/StructureDefinition/uuid` +- `http://hl7.org/fhir/StructureDefinition/valueset-activityStatusDate` +- `http://hl7.org/fhir/StructureDefinition/valueset-author` +- `http://hl7.org/fhir/StructureDefinition/valueset-authoritativeSource` +- `http://hl7.org/fhir/StructureDefinition/valueset-caseSensitive` +- `http://hl7.org/fhir/StructureDefinition/valueset-concept-comments` +- `http://hl7.org/fhir/StructureDefinition/valueset-concept-definition` +- `http://hl7.org/fhir/StructureDefinition/valueset-conceptOrder` +- `http://hl7.org/fhir/StructureDefinition/valueset-deprecated` +- `http://hl7.org/fhir/StructureDefinition/valueset-effectiveDate` +- `http://hl7.org/fhir/StructureDefinition/valueset-expand-group` +- `http://hl7.org/fhir/StructureDefinition/valueset-expand-rules` +- `http://hl7.org/fhir/StructureDefinition/valueset-expansionSource` +- `http://hl7.org/fhir/StructureDefinition/valueset-expirationDate` +- `http://hl7.org/fhir/StructureDefinition/valueset-expression` +- `http://hl7.org/fhir/StructureDefinition/valueset-extensible` +- `http://hl7.org/fhir/StructureDefinition/valueset-keyWord` +- `http://hl7.org/fhir/StructureDefinition/valueset-label` +- `http://hl7.org/fhir/StructureDefinition/valueset-map` +- `http://hl7.org/fhir/StructureDefinition/valueset-otherName` +- `http://hl7.org/fhir/StructureDefinition/valueset-parameterSource` +- `http://hl7.org/fhir/StructureDefinition/valueset-reference` +- `http://hl7.org/fhir/StructureDefinition/valueset-rules-text` +- `http://hl7.org/fhir/StructureDefinition/valueset-sourceReference` +- `http://hl7.org/fhir/StructureDefinition/valueset-special-status` +- `http://hl7.org/fhir/StructureDefinition/valueset-steward` +- `http://hl7.org/fhir/StructureDefinition/valueset-supplement` +- `http://hl7.org/fhir/StructureDefinition/valueset-system` +- `http://hl7.org/fhir/StructureDefinition/valueset-systemName` +- `http://hl7.org/fhir/StructureDefinition/valueset-systemRef` +- `http://hl7.org/fhir/StructureDefinition/valueset-toocostly` +- `http://hl7.org/fhir/StructureDefinition/valueset-trusted-expansion` +- `http://hl7.org/fhir/StructureDefinition/valueset-unclosed` +- `http://hl7.org/fhir/StructureDefinition/valueset-usage` +- `http://hl7.org/fhir/StructureDefinition/valueset-warning` +- `http://hl7.org/fhir/StructureDefinition/valueset-workflowStatus` +- `http://hl7.org/fhir/StructureDefinition/variable` +- `http://hl7.org/fhir/StructureDefinition/vitalspanel` +- `http://hl7.org/fhir/StructureDefinition/workflow-episodeOfCare` +- `http://hl7.org/fhir/StructureDefinition/workflow-instantiatesCanonical` +- `http://hl7.org/fhir/StructureDefinition/workflow-instantiatesUri` +- `http://hl7.org/fhir/StructureDefinition/workflow-reasonCode` +- `http://hl7.org/fhir/StructureDefinition/workflow-reasonReference` +- `http://hl7.org/fhir/StructureDefinition/workflow-relatedArtifact` +- `http://hl7.org/fhir/StructureDefinition/workflow-researchStudy` +- `http://hl7.org/fhir/StructureDefinition/workflow-supportingInfo` +- `http://hl7.org/fhir/ValueSet/FHIR-version` +- `http://hl7.org/fhir/ValueSet/abstract-types` +- `http://hl7.org/fhir/ValueSet/account-status` +- `http://hl7.org/fhir/ValueSet/account-type` +- `http://hl7.org/fhir/ValueSet/action-cardinality-behavior` +- `http://hl7.org/fhir/ValueSet/action-condition-kind` +- `http://hl7.org/fhir/ValueSet/action-grouping-behavior` +- `http://hl7.org/fhir/ValueSet/action-participant-role` +- `http://hl7.org/fhir/ValueSet/action-participant-type` +- `http://hl7.org/fhir/ValueSet/action-precheck-behavior` +- `http://hl7.org/fhir/ValueSet/action-relationship-type` +- `http://hl7.org/fhir/ValueSet/action-required-behavior` +- `http://hl7.org/fhir/ValueSet/action-selection-behavior` +- `http://hl7.org/fhir/ValueSet/action-type` +- `http://hl7.org/fhir/ValueSet/activity-definition-category` +- `http://hl7.org/fhir/ValueSet/additional-instruction-codes` +- `http://hl7.org/fhir/ValueSet/additionalmaterials` +- `http://hl7.org/fhir/ValueSet/address-type` +- `http://hl7.org/fhir/ValueSet/address-use` +- `http://hl7.org/fhir/ValueSet/adjudication` +- `http://hl7.org/fhir/ValueSet/adjudication-error` +- `http://hl7.org/fhir/ValueSet/adjudication-reason` +- `http://hl7.org/fhir/ValueSet/administration-method-codes` +- `http://hl7.org/fhir/ValueSet/administrative-gender` +- `http://hl7.org/fhir/ValueSet/adverse-event-actuality` +- `http://hl7.org/fhir/ValueSet/adverse-event-category` +- `http://hl7.org/fhir/ValueSet/adverse-event-causality-assess` +- `http://hl7.org/fhir/ValueSet/adverse-event-causality-method` +- `http://hl7.org/fhir/ValueSet/adverse-event-outcome` +- `http://hl7.org/fhir/ValueSet/adverse-event-seriousness` +- `http://hl7.org/fhir/ValueSet/adverse-event-severity` +- `http://hl7.org/fhir/ValueSet/adverse-event-type` +- `http://hl7.org/fhir/ValueSet/age-units` +- `http://hl7.org/fhir/ValueSet/all-distance-units` +- `http://hl7.org/fhir/ValueSet/all-languages` +- `http://hl7.org/fhir/ValueSet/all-time-units` +- `http://hl7.org/fhir/ValueSet/all-types` +- `http://hl7.org/fhir/ValueSet/allelename` +- `http://hl7.org/fhir/ValueSet/allerg-intol-substance-exp-risk` +- `http://hl7.org/fhir/ValueSet/allergy-intolerance-category` +- `http://hl7.org/fhir/ValueSet/allergy-intolerance-criticality` +- `http://hl7.org/fhir/ValueSet/allergy-intolerance-type` +- `http://hl7.org/fhir/ValueSet/allergyintolerance-clinical` +- `http://hl7.org/fhir/ValueSet/allergyintolerance-code` +- `http://hl7.org/fhir/ValueSet/allergyintolerance-verification` +- `http://hl7.org/fhir/ValueSet/animal-breeds` +- `http://hl7.org/fhir/ValueSet/animal-genderstatus` +- `http://hl7.org/fhir/ValueSet/animal-species` +- `http://hl7.org/fhir/ValueSet/appointment-cancellation-reason` +- `http://hl7.org/fhir/ValueSet/appointmentstatus` +- `http://hl7.org/fhir/ValueSet/approach-site-codes` +- `http://hl7.org/fhir/ValueSet/assert-direction-codes` +- `http://hl7.org/fhir/ValueSet/assert-operator-codes` +- `http://hl7.org/fhir/ValueSet/assert-response-code-types` +- `http://hl7.org/fhir/ValueSet/asset-availability` +- `http://hl7.org/fhir/ValueSet/audit-entity-type` +- `http://hl7.org/fhir/ValueSet/audit-event-action` +- `http://hl7.org/fhir/ValueSet/audit-event-outcome` +- `http://hl7.org/fhir/ValueSet/audit-event-sub-type` +- `http://hl7.org/fhir/ValueSet/audit-event-type` +- `http://hl7.org/fhir/ValueSet/audit-source-type` +- `http://hl7.org/fhir/ValueSet/basic-resource-type` +- `http://hl7.org/fhir/ValueSet/benefit-network` +- `http://hl7.org/fhir/ValueSet/benefit-term` +- `http://hl7.org/fhir/ValueSet/benefit-type` +- `http://hl7.org/fhir/ValueSet/benefit-unit` +- `http://hl7.org/fhir/ValueSet/binding-strength` +- `http://hl7.org/fhir/ValueSet/body-site` +- `http://hl7.org/fhir/ValueSet/bodysite-laterality` +- `http://hl7.org/fhir/ValueSet/bodystructure-code` +- `http://hl7.org/fhir/ValueSet/bodystructure-relative-location` +- `http://hl7.org/fhir/ValueSet/bundle-type` +- `http://hl7.org/fhir/ValueSet/c80-doc-typecodes` +- `http://hl7.org/fhir/ValueSet/c80-facilitycodes` +- `http://hl7.org/fhir/ValueSet/c80-practice-codes` +- `http://hl7.org/fhir/ValueSet/capability-statement-kind` +- `http://hl7.org/fhir/ValueSet/care-plan-activity-kind` +- `http://hl7.org/fhir/ValueSet/care-plan-activity-outcome` +- `http://hl7.org/fhir/ValueSet/care-plan-activity-status` +- `http://hl7.org/fhir/ValueSet/care-plan-category` +- `http://hl7.org/fhir/ValueSet/care-plan-intent` +- `http://hl7.org/fhir/ValueSet/care-team-category` +- `http://hl7.org/fhir/ValueSet/care-team-status` +- `http://hl7.org/fhir/ValueSet/catalogType` +- `http://hl7.org/fhir/ValueSet/cdshooks-indicator` +- `http://hl7.org/fhir/ValueSet/certainty-subcomponent-rating` +- `http://hl7.org/fhir/ValueSet/certainty-subcomponent-type` +- `http://hl7.org/fhir/ValueSet/chargeitem-billingcodes` +- `http://hl7.org/fhir/ValueSet/chargeitem-status` +- `http://hl7.org/fhir/ValueSet/choice-list-orientation` +- `http://hl7.org/fhir/ValueSet/chromosome-human` +- `http://hl7.org/fhir/ValueSet/claim-careteamrole` +- `http://hl7.org/fhir/ValueSet/claim-exception` +- `http://hl7.org/fhir/ValueSet/claim-informationcategory` +- `http://hl7.org/fhir/ValueSet/claim-modifiers` +- `http://hl7.org/fhir/ValueSet/claim-subtype` +- `http://hl7.org/fhir/ValueSet/claim-type` +- `http://hl7.org/fhir/ValueSet/claim-use` +- `http://hl7.org/fhir/ValueSet/clinical-findings` +- `http://hl7.org/fhir/ValueSet/clinicalimpression-prognosis` +- `http://hl7.org/fhir/ValueSet/clinicalimpression-status` +- `http://hl7.org/fhir/ValueSet/clinvar` +- `http://hl7.org/fhir/ValueSet/code-search-support` +- `http://hl7.org/fhir/ValueSet/codesystem-altcode-kind` +- `http://hl7.org/fhir/ValueSet/codesystem-content-mode` +- `http://hl7.org/fhir/ValueSet/codesystem-hierarchy-meaning` +- `http://hl7.org/fhir/ValueSet/common-tags` +- `http://hl7.org/fhir/ValueSet/communication-category` +- `http://hl7.org/fhir/ValueSet/communication-not-done-reason` +- `http://hl7.org/fhir/ValueSet/communication-topic` +- `http://hl7.org/fhir/ValueSet/compartment-type` +- `http://hl7.org/fhir/ValueSet/composite-measure-scoring` +- `http://hl7.org/fhir/ValueSet/composition-altcode-kind` +- `http://hl7.org/fhir/ValueSet/composition-attestation-mode` +- `http://hl7.org/fhir/ValueSet/composition-status` +- `http://hl7.org/fhir/ValueSet/concept-map-equivalence` +- `http://hl7.org/fhir/ValueSet/concept-property-type` +- `http://hl7.org/fhir/ValueSet/concept-subsumption-outcome` +- `http://hl7.org/fhir/ValueSet/conceptmap-unmapped-mode` +- `http://hl7.org/fhir/ValueSet/condition-category` +- `http://hl7.org/fhir/ValueSet/condition-cause` +- `http://hl7.org/fhir/ValueSet/condition-clinical` +- `http://hl7.org/fhir/ValueSet/condition-code` +- `http://hl7.org/fhir/ValueSet/condition-outcome` +- `http://hl7.org/fhir/ValueSet/condition-predecessor` +- `http://hl7.org/fhir/ValueSet/condition-severity` +- `http://hl7.org/fhir/ValueSet/condition-stage` +- `http://hl7.org/fhir/ValueSet/condition-stage-type` +- `http://hl7.org/fhir/ValueSet/condition-state` +- `http://hl7.org/fhir/ValueSet/condition-ver-status` +- `http://hl7.org/fhir/ValueSet/conditional-delete-status` +- `http://hl7.org/fhir/ValueSet/conditional-read-status` +- `http://hl7.org/fhir/ValueSet/conformance-expectation` +- `http://hl7.org/fhir/ValueSet/consent-action` +- `http://hl7.org/fhir/ValueSet/consent-category` +- `http://hl7.org/fhir/ValueSet/consent-content-class` +- `http://hl7.org/fhir/ValueSet/consent-content-code` +- `http://hl7.org/fhir/ValueSet/consent-data-meaning` +- `http://hl7.org/fhir/ValueSet/consent-performer` +- `http://hl7.org/fhir/ValueSet/consent-policy` +- `http://hl7.org/fhir/ValueSet/consent-provision-type` +- `http://hl7.org/fhir/ValueSet/consent-scope` +- `http://hl7.org/fhir/ValueSet/consent-state-codes` +- `http://hl7.org/fhir/ValueSet/consistency-type` +- `http://hl7.org/fhir/ValueSet/constraint-severity` +- `http://hl7.org/fhir/ValueSet/contact-point-system` +- `http://hl7.org/fhir/ValueSet/contact-point-use` +- `http://hl7.org/fhir/ValueSet/contactentity-type` +- `http://hl7.org/fhir/ValueSet/container-cap` +- `http://hl7.org/fhir/ValueSet/container-material` +- `http://hl7.org/fhir/ValueSet/contract-action` +- `http://hl7.org/fhir/ValueSet/contract-actionstatus` +- `http://hl7.org/fhir/ValueSet/contract-actorrole` +- `http://hl7.org/fhir/ValueSet/contract-assetcontext` +- `http://hl7.org/fhir/ValueSet/contract-assetscope` +- `http://hl7.org/fhir/ValueSet/contract-assetsubtype` +- `http://hl7.org/fhir/ValueSet/contract-assettype` +- `http://hl7.org/fhir/ValueSet/contract-content-derivative` +- `http://hl7.org/fhir/ValueSet/contract-data-meaning` +- `http://hl7.org/fhir/ValueSet/contract-decision-mode` +- `http://hl7.org/fhir/ValueSet/contract-definition-subtype` +- `http://hl7.org/fhir/ValueSet/contract-definition-type` +- `http://hl7.org/fhir/ValueSet/contract-expiration-type` +- `http://hl7.org/fhir/ValueSet/contract-legalstate` +- `http://hl7.org/fhir/ValueSet/contract-party-role` +- `http://hl7.org/fhir/ValueSet/contract-publicationstatus` +- `http://hl7.org/fhir/ValueSet/contract-scope` +- `http://hl7.org/fhir/ValueSet/contract-security-category` +- `http://hl7.org/fhir/ValueSet/contract-security-classification` +- `http://hl7.org/fhir/ValueSet/contract-security-control` +- `http://hl7.org/fhir/ValueSet/contract-signer-type` +- `http://hl7.org/fhir/ValueSet/contract-status` +- `http://hl7.org/fhir/ValueSet/contract-subtype` +- `http://hl7.org/fhir/ValueSet/contract-term-subtype` +- `http://hl7.org/fhir/ValueSet/contract-term-type` +- `http://hl7.org/fhir/ValueSet/contract-type` +- `http://hl7.org/fhir/ValueSet/contributor-type` +- `http://hl7.org/fhir/ValueSet/copy-number-event` +- `http://hl7.org/fhir/ValueSet/cosmic` +- `http://hl7.org/fhir/ValueSet/coverage-class` +- `http://hl7.org/fhir/ValueSet/coverage-copay-type` +- `http://hl7.org/fhir/ValueSet/coverage-financial-exception` +- `http://hl7.org/fhir/ValueSet/coverage-selfpay` +- `http://hl7.org/fhir/ValueSet/coverage-type` +- `http://hl7.org/fhir/ValueSet/coverageeligibilityresponse-ex-auth-support` +- `http://hl7.org/fhir/ValueSet/cpt-all` +- `http://hl7.org/fhir/ValueSet/currencies` +- `http://hl7.org/fhir/ValueSet/data-absent-reason` +- `http://hl7.org/fhir/ValueSet/data-types` +- `http://hl7.org/fhir/ValueSet/dataelement-sdcobjectclass` +- `http://hl7.org/fhir/ValueSet/dataelement-sdcobjectclassproperty` +- `http://hl7.org/fhir/ValueSet/days-of-week` +- `http://hl7.org/fhir/ValueSet/dbsnp` +- `http://hl7.org/fhir/ValueSet/defined-types` +- `http://hl7.org/fhir/ValueSet/definition-resource-types` +- `http://hl7.org/fhir/ValueSet/definition-status` +- `http://hl7.org/fhir/ValueSet/definition-topic` +- `http://hl7.org/fhir/ValueSet/definition-use` +- `http://hl7.org/fhir/ValueSet/designation-use` +- `http://hl7.org/fhir/ValueSet/detectedissue-category` +- `http://hl7.org/fhir/ValueSet/detectedissue-mitigation-action` +- `http://hl7.org/fhir/ValueSet/detectedissue-severity` +- `http://hl7.org/fhir/ValueSet/device-action` +- `http://hl7.org/fhir/ValueSet/device-component-property` +- `http://hl7.org/fhir/ValueSet/device-definition-status` +- `http://hl7.org/fhir/ValueSet/device-kind` +- `http://hl7.org/fhir/ValueSet/device-nametype` +- `http://hl7.org/fhir/ValueSet/device-safety` +- `http://hl7.org/fhir/ValueSet/device-statement-status` +- `http://hl7.org/fhir/ValueSet/device-status` +- `http://hl7.org/fhir/ValueSet/device-status-reason` +- `http://hl7.org/fhir/ValueSet/device-type` +- `http://hl7.org/fhir/ValueSet/devicemetric-type` +- `http://hl7.org/fhir/ValueSet/diagnosis-role` +- `http://hl7.org/fhir/ValueSet/diagnostic-based-on-snomed` +- `http://hl7.org/fhir/ValueSet/diagnostic-report-status` +- `http://hl7.org/fhir/ValueSet/diagnostic-service-sections` +- `http://hl7.org/fhir/ValueSet/dicm-405-mediatype` +- `http://hl7.org/fhir/ValueSet/diet-type` +- `http://hl7.org/fhir/ValueSet/discriminator-type` +- `http://hl7.org/fhir/ValueSet/distance-units` +- `http://hl7.org/fhir/ValueSet/doc-section-codes` +- `http://hl7.org/fhir/ValueSet/doc-typecodes` +- `http://hl7.org/fhir/ValueSet/document-classcodes` +- `http://hl7.org/fhir/ValueSet/document-mode` +- `http://hl7.org/fhir/ValueSet/document-reference-status` +- `http://hl7.org/fhir/ValueSet/document-relationship-type` +- `http://hl7.org/fhir/ValueSet/dose-rate-type` +- `http://hl7.org/fhir/ValueSet/duration-units` +- `http://hl7.org/fhir/ValueSet/effect-estimate-type` +- `http://hl7.org/fhir/ValueSet/eligibilityrequest-purpose` +- `http://hl7.org/fhir/ValueSet/eligibilityresponse-purpose` +- `http://hl7.org/fhir/ValueSet/encounter-admit-source` +- `http://hl7.org/fhir/ValueSet/encounter-diet` +- `http://hl7.org/fhir/ValueSet/encounter-discharge-disposition` +- `http://hl7.org/fhir/ValueSet/encounter-location-status` +- `http://hl7.org/fhir/ValueSet/encounter-participant-type` +- `http://hl7.org/fhir/ValueSet/encounter-reason` +- `http://hl7.org/fhir/ValueSet/encounter-special-arrangements` +- `http://hl7.org/fhir/ValueSet/encounter-special-courtesy` +- `http://hl7.org/fhir/ValueSet/encounter-status` +- `http://hl7.org/fhir/ValueSet/encounter-type` +- `http://hl7.org/fhir/ValueSet/endpoint-connection-type` +- `http://hl7.org/fhir/ValueSet/endpoint-payload-type` +- `http://hl7.org/fhir/ValueSet/endpoint-status` +- `http://hl7.org/fhir/ValueSet/ensembl` +- `http://hl7.org/fhir/ValueSet/enteral-route` +- `http://hl7.org/fhir/ValueSet/entformula-additive` +- `http://hl7.org/fhir/ValueSet/entformula-type` +- `http://hl7.org/fhir/ValueSet/episode-of-care-status` +- `http://hl7.org/fhir/ValueSet/episodeofcare-type` +- `http://hl7.org/fhir/ValueSet/event-capability-mode` +- `http://hl7.org/fhir/ValueSet/event-or-request-resource-types` +- `http://hl7.org/fhir/ValueSet/event-resource-types` +- `http://hl7.org/fhir/ValueSet/event-status` +- `http://hl7.org/fhir/ValueSet/event-timing` +- `http://hl7.org/fhir/ValueSet/evidence-quality` +- `http://hl7.org/fhir/ValueSet/evidence-variant-state` +- `http://hl7.org/fhir/ValueSet/ex-benefitcategory` +- `http://hl7.org/fhir/ValueSet/ex-diagnosis-on-admission` +- `http://hl7.org/fhir/ValueSet/ex-diagnosisrelatedgroup` +- `http://hl7.org/fhir/ValueSet/ex-diagnosistype` +- `http://hl7.org/fhir/ValueSet/ex-onsettype` +- `http://hl7.org/fhir/ValueSet/ex-payee-resource-type` +- `http://hl7.org/fhir/ValueSet/ex-paymenttype` +- `http://hl7.org/fhir/ValueSet/ex-procedure-type` +- `http://hl7.org/fhir/ValueSet/ex-program-code` +- `http://hl7.org/fhir/ValueSet/ex-revenue-center` +- `http://hl7.org/fhir/ValueSet/example-expansion` +- `http://hl7.org/fhir/ValueSet/example-extensional` +- `http://hl7.org/fhir/ValueSet/example-filter` +- `http://hl7.org/fhir/ValueSet/example-hierarchical` +- `http://hl7.org/fhir/ValueSet/example-intensional` +- `http://hl7.org/fhir/ValueSet/examplescenario-actor-type` +- `http://hl7.org/fhir/ValueSet/expansion-parameter-source` +- `http://hl7.org/fhir/ValueSet/expansion-processing-rule` +- `http://hl7.org/fhir/ValueSet/explanationofbenefit-status` +- `http://hl7.org/fhir/ValueSet/exposure-state` +- `http://hl7.org/fhir/ValueSet/expression-language` +- `http://hl7.org/fhir/ValueSet/extension-context-type` +- `http://hl7.org/fhir/ValueSet/feeding-device` +- `http://hl7.org/fhir/ValueSet/filter-operator` +- `http://hl7.org/fhir/ValueSet/financial-taskcode` +- `http://hl7.org/fhir/ValueSet/financial-taskinputtype` +- `http://hl7.org/fhir/ValueSet/flag-category` +- `http://hl7.org/fhir/ValueSet/flag-code` +- `http://hl7.org/fhir/ValueSet/flag-priority` +- `http://hl7.org/fhir/ValueSet/flag-status` +- `http://hl7.org/fhir/ValueSet/fm-conditions` +- `http://hl7.org/fhir/ValueSet/fm-itemtype` +- `http://hl7.org/fhir/ValueSet/fm-status` +- `http://hl7.org/fhir/ValueSet/focal-subject` +- `http://hl7.org/fhir/ValueSet/food-type` +- `http://hl7.org/fhir/ValueSet/formatcodes` +- `http://hl7.org/fhir/ValueSet/forms` +- `http://hl7.org/fhir/ValueSet/fundsreserve` +- `http://hl7.org/fhir/ValueSet/gender-identity` +- `http://hl7.org/fhir/ValueSet/genenames` +- `http://hl7.org/fhir/ValueSet/goal-acceptance-status` +- `http://hl7.org/fhir/ValueSet/goal-achievement` +- `http://hl7.org/fhir/ValueSet/goal-category` +- `http://hl7.org/fhir/ValueSet/goal-priority` +- `http://hl7.org/fhir/ValueSet/goal-relationship-type` +- `http://hl7.org/fhir/ValueSet/goal-start-event` +- `http://hl7.org/fhir/ValueSet/goal-status` +- `http://hl7.org/fhir/ValueSet/goal-status-reason` +- `http://hl7.org/fhir/ValueSet/graph-compartment-rule` +- `http://hl7.org/fhir/ValueSet/graph-compartment-use` +- `http://hl7.org/fhir/ValueSet/group-measure` +- `http://hl7.org/fhir/ValueSet/group-type` +- `http://hl7.org/fhir/ValueSet/guidance-response-status` +- `http://hl7.org/fhir/ValueSet/guide-page-generation` +- `http://hl7.org/fhir/ValueSet/guide-parameter-code` +- `http://hl7.org/fhir/ValueSet/handling-condition` +- `http://hl7.org/fhir/ValueSet/history-absent-reason` +- `http://hl7.org/fhir/ValueSet/history-status` +- `http://hl7.org/fhir/ValueSet/hl7-work-group` +- `http://hl7.org/fhir/ValueSet/http-operations` +- `http://hl7.org/fhir/ValueSet/http-verb` +- `http://hl7.org/fhir/ValueSet/icd-10` +- `http://hl7.org/fhir/ValueSet/icd-10-procedures` +- `http://hl7.org/fhir/ValueSet/identifier-type` +- `http://hl7.org/fhir/ValueSet/identifier-use` +- `http://hl7.org/fhir/ValueSet/identity-assuranceLevel` +- `http://hl7.org/fhir/ValueSet/imagingstudy-status` +- `http://hl7.org/fhir/ValueSet/immunization-evaluation-dose-status` +- `http://hl7.org/fhir/ValueSet/immunization-evaluation-dose-status-reason` +- `http://hl7.org/fhir/ValueSet/immunization-evaluation-status` +- `http://hl7.org/fhir/ValueSet/immunization-evaluation-target-disease` +- `http://hl7.org/fhir/ValueSet/immunization-function` +- `http://hl7.org/fhir/ValueSet/immunization-funding-source` +- `http://hl7.org/fhir/ValueSet/immunization-origin` +- `http://hl7.org/fhir/ValueSet/immunization-program-eligibility` +- `http://hl7.org/fhir/ValueSet/immunization-reason` +- `http://hl7.org/fhir/ValueSet/immunization-recommendation-date-criterion` +- `http://hl7.org/fhir/ValueSet/immunization-recommendation-reason` +- `http://hl7.org/fhir/ValueSet/immunization-recommendation-status` +- `http://hl7.org/fhir/ValueSet/immunization-recommendation-target-disease` +- `http://hl7.org/fhir/ValueSet/immunization-route` +- `http://hl7.org/fhir/ValueSet/immunization-site` +- `http://hl7.org/fhir/ValueSet/immunization-status` +- `http://hl7.org/fhir/ValueSet/immunization-status-reason` +- `http://hl7.org/fhir/ValueSet/immunization-subpotent-reason` +- `http://hl7.org/fhir/ValueSet/immunization-target-disease` +- `http://hl7.org/fhir/ValueSet/implantStatus` +- `http://hl7.org/fhir/ValueSet/inactive` +- `http://hl7.org/fhir/ValueSet/instance-availability` +- `http://hl7.org/fhir/ValueSet/insuranceplan-applicability` +- `http://hl7.org/fhir/ValueSet/insuranceplan-type` +- `http://hl7.org/fhir/ValueSet/intervention` +- `http://hl7.org/fhir/ValueSet/investigation-sets` +- `http://hl7.org/fhir/ValueSet/invoice-priceComponentType` +- `http://hl7.org/fhir/ValueSet/invoice-status` +- `http://hl7.org/fhir/ValueSet/iso3166-1-2` +- `http://hl7.org/fhir/ValueSet/iso3166-1-3` +- `http://hl7.org/fhir/ValueSet/iso3166-1-N` +- `http://hl7.org/fhir/ValueSet/issue-severity` +- `http://hl7.org/fhir/ValueSet/issue-type` +- `http://hl7.org/fhir/ValueSet/item-type` +- `http://hl7.org/fhir/ValueSet/jurisdiction` +- `http://hl7.org/fhir/ValueSet/knowledge-resource-types` +- `http://hl7.org/fhir/ValueSet/language-preference-type` +- `http://hl7.org/fhir/ValueSet/languages` +- `http://hl7.org/fhir/ValueSet/ldlcholesterol-codes` +- `http://hl7.org/fhir/ValueSet/library-type` +- `http://hl7.org/fhir/ValueSet/link-type` +- `http://hl7.org/fhir/ValueSet/linkage-type` +- `http://hl7.org/fhir/ValueSet/list-empty-reason` +- `http://hl7.org/fhir/ValueSet/list-example-codes` +- `http://hl7.org/fhir/ValueSet/list-item-flag` +- `http://hl7.org/fhir/ValueSet/list-mode` +- `http://hl7.org/fhir/ValueSet/list-order` +- `http://hl7.org/fhir/ValueSet/list-status` +- `http://hl7.org/fhir/ValueSet/location-mode` +- `http://hl7.org/fhir/ValueSet/location-physical-type` +- `http://hl7.org/fhir/ValueSet/location-status` +- `http://hl7.org/fhir/ValueSet/manifestation-or-symptom` +- `http://hl7.org/fhir/ValueSet/map-context-type` +- `http://hl7.org/fhir/ValueSet/map-group-type-mode` +- `http://hl7.org/fhir/ValueSet/map-input-mode` +- `http://hl7.org/fhir/ValueSet/map-model-mode` +- `http://hl7.org/fhir/ValueSet/map-source-list-mode` +- `http://hl7.org/fhir/ValueSet/map-target-list-mode` +- `http://hl7.org/fhir/ValueSet/map-transform` +- `http://hl7.org/fhir/ValueSet/marital-status` +- `http://hl7.org/fhir/ValueSet/match-grade` +- `http://hl7.org/fhir/ValueSet/measure-data-usage` +- `http://hl7.org/fhir/ValueSet/measure-improvement-notation` +- `http://hl7.org/fhir/ValueSet/measure-population` +- `http://hl7.org/fhir/ValueSet/measure-report-status` +- `http://hl7.org/fhir/ValueSet/measure-report-type` +- `http://hl7.org/fhir/ValueSet/measure-scoring` +- `http://hl7.org/fhir/ValueSet/measure-type` +- `http://hl7.org/fhir/ValueSet/med-admin-perform-function` +- `http://hl7.org/fhir/ValueSet/media-modality` +- `http://hl7.org/fhir/ValueSet/media-type` +- `http://hl7.org/fhir/ValueSet/media-view` +- `http://hl7.org/fhir/ValueSet/medication-admin-category` +- `http://hl7.org/fhir/ValueSet/medication-admin-status` +- `http://hl7.org/fhir/ValueSet/medication-as-needed-reason` +- `http://hl7.org/fhir/ValueSet/medication-codes` +- `http://hl7.org/fhir/ValueSet/medication-form-codes` +- `http://hl7.org/fhir/ValueSet/medication-statement-category` +- `http://hl7.org/fhir/ValueSet/medication-statement-status` +- `http://hl7.org/fhir/ValueSet/medication-status` +- `http://hl7.org/fhir/ValueSet/medicationdispense-category` +- `http://hl7.org/fhir/ValueSet/medicationdispense-performer-function` +- `http://hl7.org/fhir/ValueSet/medicationdispense-status` +- `http://hl7.org/fhir/ValueSet/medicationdispense-status-reason` +- `http://hl7.org/fhir/ValueSet/medicationknowledge-characteristic` +- `http://hl7.org/fhir/ValueSet/medicationknowledge-package-type` +- `http://hl7.org/fhir/ValueSet/medicationknowledge-status` +- `http://hl7.org/fhir/ValueSet/medicationrequest-category` +- `http://hl7.org/fhir/ValueSet/medicationrequest-course-of-therapy` +- `http://hl7.org/fhir/ValueSet/medicationrequest-intent` +- `http://hl7.org/fhir/ValueSet/medicationrequest-status` +- `http://hl7.org/fhir/ValueSet/medicationrequest-status-reason` +- `http://hl7.org/fhir/ValueSet/message-events` +- `http://hl7.org/fhir/ValueSet/message-reason-encounter` +- `http://hl7.org/fhir/ValueSet/message-significance-category` +- `http://hl7.org/fhir/ValueSet/message-transport` +- `http://hl7.org/fhir/ValueSet/messageheader-response-request` +- `http://hl7.org/fhir/ValueSet/metric-calibration-state` +- `http://hl7.org/fhir/ValueSet/metric-calibration-type` +- `http://hl7.org/fhir/ValueSet/metric-category` +- `http://hl7.org/fhir/ValueSet/metric-color` +- `http://hl7.org/fhir/ValueSet/metric-operational-status` +- `http://hl7.org/fhir/ValueSet/mimetypes` +- `http://hl7.org/fhir/ValueSet/missing-tooth-reason` +- `http://hl7.org/fhir/ValueSet/modified-foodtype` +- `http://hl7.org/fhir/ValueSet/name-assembly-order` +- `http://hl7.org/fhir/ValueSet/name-part-qualifier` +- `http://hl7.org/fhir/ValueSet/name-use` +- `http://hl7.org/fhir/ValueSet/name-v3-representation` +- `http://hl7.org/fhir/ValueSet/namingsystem-identifier-type` +- `http://hl7.org/fhir/ValueSet/namingsystem-type` +- `http://hl7.org/fhir/ValueSet/narrative-status` +- `http://hl7.org/fhir/ValueSet/network-type` +- `http://hl7.org/fhir/ValueSet/nhin-purposeofuse` +- `http://hl7.org/fhir/ValueSet/note-type` +- `http://hl7.org/fhir/ValueSet/nutrient-code` +- `http://hl7.org/fhir/ValueSet/object-lifecycle-events` +- `http://hl7.org/fhir/ValueSet/object-role` +- `http://hl7.org/fhir/ValueSet/observation-category` +- `http://hl7.org/fhir/ValueSet/observation-codes` +- `http://hl7.org/fhir/ValueSet/observation-interpretation` +- `http://hl7.org/fhir/ValueSet/observation-methods` +- `http://hl7.org/fhir/ValueSet/observation-range-category` +- `http://hl7.org/fhir/ValueSet/observation-statistics` +- `http://hl7.org/fhir/ValueSet/observation-status` +- `http://hl7.org/fhir/ValueSet/observation-vitalsignresult` +- `http://hl7.org/fhir/ValueSet/operation-kind` +- `http://hl7.org/fhir/ValueSet/operation-outcome` +- `http://hl7.org/fhir/ValueSet/operation-parameter-use` +- `http://hl7.org/fhir/ValueSet/oral-prosthodontic-material` +- `http://hl7.org/fhir/ValueSet/organization-role` +- `http://hl7.org/fhir/ValueSet/organization-type` +- `http://hl7.org/fhir/ValueSet/orientation-type` +- `http://hl7.org/fhir/ValueSet/parameter-group` +- `http://hl7.org/fhir/ValueSet/parent-relationship-codes` +- `http://hl7.org/fhir/ValueSet/participant-role` +- `http://hl7.org/fhir/ValueSet/participantrequired` +- `http://hl7.org/fhir/ValueSet/participation-role-type` +- `http://hl7.org/fhir/ValueSet/participationstatus` +- `http://hl7.org/fhir/ValueSet/patient-contactrelationship` +- `http://hl7.org/fhir/ValueSet/payeetype` +- `http://hl7.org/fhir/ValueSet/payment-adjustment-reason` +- `http://hl7.org/fhir/ValueSet/payment-status` +- `http://hl7.org/fhir/ValueSet/payment-type` +- `http://hl7.org/fhir/ValueSet/performer-function` +- `http://hl7.org/fhir/ValueSet/performer-role` +- `http://hl7.org/fhir/ValueSet/permitted-data-type` +- `http://hl7.org/fhir/ValueSet/plan-definition-type` +- `http://hl7.org/fhir/ValueSet/postal-address-use` +- `http://hl7.org/fhir/ValueSet/practitioner-role` +- `http://hl7.org/fhir/ValueSet/practitioner-specialty` +- `http://hl7.org/fhir/ValueSet/precision-estimate-type` +- `http://hl7.org/fhir/ValueSet/prepare-patient-prior-specimen-collection` +- `http://hl7.org/fhir/ValueSet/probability-distribution-type` +- `http://hl7.org/fhir/ValueSet/procedure-category` +- `http://hl7.org/fhir/ValueSet/procedure-code` +- `http://hl7.org/fhir/ValueSet/procedure-followup` +- `http://hl7.org/fhir/ValueSet/procedure-not-performed-reason` +- `http://hl7.org/fhir/ValueSet/procedure-outcome` +- `http://hl7.org/fhir/ValueSet/procedure-progress-status-codes` +- `http://hl7.org/fhir/ValueSet/procedure-reason` +- `http://hl7.org/fhir/ValueSet/process-priority` +- `http://hl7.org/fhir/ValueSet/product-category` +- `http://hl7.org/fhir/ValueSet/product-status` +- `http://hl7.org/fhir/ValueSet/product-storage-scale` +- `http://hl7.org/fhir/ValueSet/program` +- `http://hl7.org/fhir/ValueSet/property-representation` +- `http://hl7.org/fhir/ValueSet/provenance-activity-type` +- `http://hl7.org/fhir/ValueSet/provenance-agent-role` +- `http://hl7.org/fhir/ValueSet/provenance-agent-type` +- `http://hl7.org/fhir/ValueSet/provenance-entity-role` +- `http://hl7.org/fhir/ValueSet/provenance-history-agent-type` +- `http://hl7.org/fhir/ValueSet/provenance-history-record-activity` +- `http://hl7.org/fhir/ValueSet/provider-qualification` +- `http://hl7.org/fhir/ValueSet/provider-taxonomy` +- `http://hl7.org/fhir/ValueSet/publication-status` +- `http://hl7.org/fhir/ValueSet/quality-type` +- `http://hl7.org/fhir/ValueSet/quantity-comparator` +- `http://hl7.org/fhir/ValueSet/question-max-occurs` +- `http://hl7.org/fhir/ValueSet/questionnaire-answers` +- `http://hl7.org/fhir/ValueSet/questionnaire-answers-status` +- `http://hl7.org/fhir/ValueSet/questionnaire-category` +- `http://hl7.org/fhir/ValueSet/questionnaire-display-category` +- `http://hl7.org/fhir/ValueSet/questionnaire-enable-behavior` +- `http://hl7.org/fhir/ValueSet/questionnaire-enable-operator` +- `http://hl7.org/fhir/ValueSet/questionnaire-item-control` +- `http://hl7.org/fhir/ValueSet/questionnaire-questions` +- `http://hl7.org/fhir/ValueSet/questionnaire-usage-mode` +- `http://hl7.org/fhir/ValueSet/questionnaireresponse-mode` +- `http://hl7.org/fhir/ValueSet/reaction-event-certainty` +- `http://hl7.org/fhir/ValueSet/reaction-event-severity` +- `http://hl7.org/fhir/ValueSet/reason-medication-given-codes` +- `http://hl7.org/fhir/ValueSet/reason-medication-not-given-codes` +- `http://hl7.org/fhir/ValueSet/reason-medication-status-codes` +- `http://hl7.org/fhir/ValueSet/recommendation-strength` +- `http://hl7.org/fhir/ValueSet/ref-sequences` +- `http://hl7.org/fhir/ValueSet/reference-handling-policy` +- `http://hl7.org/fhir/ValueSet/reference-version-rules` +- `http://hl7.org/fhir/ValueSet/referencerange-appliesto` +- `http://hl7.org/fhir/ValueSet/referencerange-meaning` +- `http://hl7.org/fhir/ValueSet/rejection-criteria` +- `http://hl7.org/fhir/ValueSet/related-artifact-type` +- `http://hl7.org/fhir/ValueSet/related-claim-relationship` +- `http://hl7.org/fhir/ValueSet/relatedperson-relationshiptype` +- `http://hl7.org/fhir/ValueSet/relation-type` +- `http://hl7.org/fhir/ValueSet/relationship` +- `http://hl7.org/fhir/ValueSet/remittance-outcome` +- `http://hl7.org/fhir/ValueSet/report-action-result-codes` +- `http://hl7.org/fhir/ValueSet/report-codes` +- `http://hl7.org/fhir/ValueSet/report-participant-type` +- `http://hl7.org/fhir/ValueSet/report-result-codes` +- `http://hl7.org/fhir/ValueSet/report-status-codes` +- `http://hl7.org/fhir/ValueSet/repository-type` +- `http://hl7.org/fhir/ValueSet/request-intent` +- `http://hl7.org/fhir/ValueSet/request-priority` +- `http://hl7.org/fhir/ValueSet/request-resource-types` +- `http://hl7.org/fhir/ValueSet/request-status` +- `http://hl7.org/fhir/ValueSet/research-element-type` +- `http://hl7.org/fhir/ValueSet/research-study-objective-type` +- `http://hl7.org/fhir/ValueSet/research-study-phase` +- `http://hl7.org/fhir/ValueSet/research-study-prim-purp-type` +- `http://hl7.org/fhir/ValueSet/research-study-reason-stopped` +- `http://hl7.org/fhir/ValueSet/research-study-status` +- `http://hl7.org/fhir/ValueSet/research-subject-status` +- `http://hl7.org/fhir/ValueSet/resource-aggregation-mode` +- `http://hl7.org/fhir/ValueSet/resource-security-category` +- `http://hl7.org/fhir/ValueSet/resource-slicing-rules` +- `http://hl7.org/fhir/ValueSet/resource-status` +- `http://hl7.org/fhir/ValueSet/resource-type-link` +- `http://hl7.org/fhir/ValueSet/resource-types` +- `http://hl7.org/fhir/ValueSet/resource-validation-mode` +- `http://hl7.org/fhir/ValueSet/response-code` +- `http://hl7.org/fhir/ValueSet/restful-capability-mode` +- `http://hl7.org/fhir/ValueSet/restful-security-service` +- `http://hl7.org/fhir/ValueSet/risk-estimate-type` +- `http://hl7.org/fhir/ValueSet/risk-probability` +- `http://hl7.org/fhir/ValueSet/route-codes` +- `http://hl7.org/fhir/ValueSet/search-comparator` +- `http://hl7.org/fhir/ValueSet/search-entry-mode` +- `http://hl7.org/fhir/ValueSet/search-modifier-code` +- `http://hl7.org/fhir/ValueSet/search-param-type` +- `http://hl7.org/fhir/ValueSet/search-xpath-usage` +- `http://hl7.org/fhir/ValueSet/secondary-finding` +- `http://hl7.org/fhir/ValueSet/security-labels` +- `http://hl7.org/fhir/ValueSet/security-role-type` +- `http://hl7.org/fhir/ValueSet/sequence-quality-method` +- `http://hl7.org/fhir/ValueSet/sequence-quality-standardSequence` +- `http://hl7.org/fhir/ValueSet/sequence-referenceSeq` +- `http://hl7.org/fhir/ValueSet/sequence-species` +- `http://hl7.org/fhir/ValueSet/sequence-type` +- `http://hl7.org/fhir/ValueSet/sequenceontology` +- `http://hl7.org/fhir/ValueSet/series-performer-function` +- `http://hl7.org/fhir/ValueSet/service-category` +- `http://hl7.org/fhir/ValueSet/service-modifiers` +- `http://hl7.org/fhir/ValueSet/service-pharmacy` +- `http://hl7.org/fhir/ValueSet/service-place` +- `http://hl7.org/fhir/ValueSet/service-product` +- `http://hl7.org/fhir/ValueSet/service-provision-conditions` +- `http://hl7.org/fhir/ValueSet/service-referral-method` +- `http://hl7.org/fhir/ValueSet/service-type` +- `http://hl7.org/fhir/ValueSet/service-uscls` +- `http://hl7.org/fhir/ValueSet/servicerequest-category` +- `http://hl7.org/fhir/ValueSet/servicerequest-orderdetail` +- `http://hl7.org/fhir/ValueSet/sibling-relationship-codes` +- `http://hl7.org/fhir/ValueSet/signature-type` +- `http://hl7.org/fhir/ValueSet/slotstatus` +- `http://hl7.org/fhir/ValueSet/smart-capabilities` +- `http://hl7.org/fhir/ValueSet/sort-direction` +- `http://hl7.org/fhir/ValueSet/spdx-license` +- `http://hl7.org/fhir/ValueSet/special-values` +- `http://hl7.org/fhir/ValueSet/specimen-collection` +- `http://hl7.org/fhir/ValueSet/specimen-collection-method` +- `http://hl7.org/fhir/ValueSet/specimen-collection-priority` +- `http://hl7.org/fhir/ValueSet/specimen-contained-preference` +- `http://hl7.org/fhir/ValueSet/specimen-container-type` +- `http://hl7.org/fhir/ValueSet/specimen-processing-procedure` +- `http://hl7.org/fhir/ValueSet/specimen-status` +- `http://hl7.org/fhir/ValueSet/standards-status` +- `http://hl7.org/fhir/ValueSet/strand-type` +- `http://hl7.org/fhir/ValueSet/structure-definition-kind` +- `http://hl7.org/fhir/ValueSet/study-type` +- `http://hl7.org/fhir/ValueSet/subject-type` +- `http://hl7.org/fhir/ValueSet/subscriber-relationship` +- `http://hl7.org/fhir/ValueSet/subscription-channel-type` +- `http://hl7.org/fhir/ValueSet/subscription-status` +- `http://hl7.org/fhir/ValueSet/subscription-tag` +- `http://hl7.org/fhir/ValueSet/substance-category` +- `http://hl7.org/fhir/ValueSet/substance-code` +- `http://hl7.org/fhir/ValueSet/substance-status` +- `http://hl7.org/fhir/ValueSet/supplement-type` +- `http://hl7.org/fhir/ValueSet/supply-item` +- `http://hl7.org/fhir/ValueSet/supplydelivery-status` +- `http://hl7.org/fhir/ValueSet/supplydelivery-type` +- `http://hl7.org/fhir/ValueSet/supplyrequest-kind` +- `http://hl7.org/fhir/ValueSet/supplyrequest-reason` +- `http://hl7.org/fhir/ValueSet/supplyrequest-status` +- `http://hl7.org/fhir/ValueSet/surface` +- `http://hl7.org/fhir/ValueSet/synthesis-type` +- `http://hl7.org/fhir/ValueSet/system-restful-interaction` +- `http://hl7.org/fhir/ValueSet/task-code` +- `http://hl7.org/fhir/ValueSet/task-intent` +- `http://hl7.org/fhir/ValueSet/task-status` +- `http://hl7.org/fhir/ValueSet/teeth` +- `http://hl7.org/fhir/ValueSet/template-status-code` +- `http://hl7.org/fhir/ValueSet/testscript-operation-codes` +- `http://hl7.org/fhir/ValueSet/testscript-profile-destination-types` +- `http://hl7.org/fhir/ValueSet/testscript-profile-origin-types` +- `http://hl7.org/fhir/ValueSet/texture-code` +- `http://hl7.org/fhir/ValueSet/timezones` +- `http://hl7.org/fhir/ValueSet/timing-abbreviation` +- `http://hl7.org/fhir/ValueSet/tooth` +- `http://hl7.org/fhir/ValueSet/transaction-mode` +- `http://hl7.org/fhir/ValueSet/trigger-type` +- `http://hl7.org/fhir/ValueSet/type-derivation-rule` +- `http://hl7.org/fhir/ValueSet/type-restful-interaction` +- `http://hl7.org/fhir/ValueSet/ucum-bodylength` +- `http://hl7.org/fhir/ValueSet/ucum-bodytemp` +- `http://hl7.org/fhir/ValueSet/ucum-bodyweight` +- `http://hl7.org/fhir/ValueSet/ucum-common` +- `http://hl7.org/fhir/ValueSet/ucum-units` +- `http://hl7.org/fhir/ValueSet/ucum-vitals-common` +- `http://hl7.org/fhir/ValueSet/udi` +- `http://hl7.org/fhir/ValueSet/udi-entry-type` +- `http://hl7.org/fhir/ValueSet/units-of-time` +- `http://hl7.org/fhir/ValueSet/unknown-content-code` +- `http://hl7.org/fhir/ValueSet/usage-context-type` +- `http://hl7.org/fhir/ValueSet/use-context` +- `http://hl7.org/fhir/ValueSet/vaccine-code` +- `http://hl7.org/fhir/ValueSet/variable-type` +- `http://hl7.org/fhir/ValueSet/variant-state` +- `http://hl7.org/fhir/ValueSet/variants` +- `http://hl7.org/fhir/ValueSet/verificationresult-can-push-updates` +- `http://hl7.org/fhir/ValueSet/verificationresult-communication-method` +- `http://hl7.org/fhir/ValueSet/verificationresult-failure-action` +- `http://hl7.org/fhir/ValueSet/verificationresult-need` +- `http://hl7.org/fhir/ValueSet/verificationresult-primary-source-type` +- `http://hl7.org/fhir/ValueSet/verificationresult-push-type-available` +- `http://hl7.org/fhir/ValueSet/verificationresult-status` +- `http://hl7.org/fhir/ValueSet/verificationresult-validation-process` +- `http://hl7.org/fhir/ValueSet/verificationresult-validation-status` +- `http://hl7.org/fhir/ValueSet/verificationresult-validation-type` +- `http://hl7.org/fhir/ValueSet/versioning-policy` +- `http://hl7.org/fhir/ValueSet/vision-base-codes` +- `http://hl7.org/fhir/ValueSet/vision-eye-codes` +- `http://hl7.org/fhir/ValueSet/vision-product` +- `http://hl7.org/fhir/ValueSet/written-language` +- `http://hl7.org/fhir/ValueSet/yesnodontknow` +- `http://terminology.hl7.org/ValueSet/v2-0001` +- `http://terminology.hl7.org/ValueSet/v2-0002` +- `http://terminology.hl7.org/ValueSet/v2-0003` +- `http://terminology.hl7.org/ValueSet/v2-0004` +- `http://terminology.hl7.org/ValueSet/v2-0005` +- `http://terminology.hl7.org/ValueSet/v2-0007` +- `http://terminology.hl7.org/ValueSet/v2-0008` +- `http://terminology.hl7.org/ValueSet/v2-0009` +- `http://terminology.hl7.org/ValueSet/v2-0012` +- `http://terminology.hl7.org/ValueSet/v2-0017` +- `http://terminology.hl7.org/ValueSet/v2-0023` +- `http://terminology.hl7.org/ValueSet/v2-0027` +- `http://terminology.hl7.org/ValueSet/v2-0033` +- `http://terminology.hl7.org/ValueSet/v2-0034` +- `http://terminology.hl7.org/ValueSet/v2-0038` +- `http://terminology.hl7.org/ValueSet/v2-0043` +- `http://terminology.hl7.org/ValueSet/v2-0048` +- `http://terminology.hl7.org/ValueSet/v2-0052` +- `http://terminology.hl7.org/ValueSet/v2-0061` +- `http://terminology.hl7.org/ValueSet/v2-0062` +- `http://terminology.hl7.org/ValueSet/v2-0063` +- `http://terminology.hl7.org/ValueSet/v2-0065` +- `http://terminology.hl7.org/ValueSet/v2-0066` +- `http://terminology.hl7.org/ValueSet/v2-0069` +- `http://terminology.hl7.org/ValueSet/v2-0070` +- `http://terminology.hl7.org/ValueSet/v2-0074` +- `http://terminology.hl7.org/ValueSet/v2-0076` +- `http://terminology.hl7.org/ValueSet/v2-0078` +- `http://terminology.hl7.org/ValueSet/v2-0080` +- `http://terminology.hl7.org/ValueSet/v2-0083` +- `http://terminology.hl7.org/ValueSet/v2-0085` +- `http://terminology.hl7.org/ValueSet/v2-0091` +- `http://terminology.hl7.org/ValueSet/v2-0092` +- `http://terminology.hl7.org/ValueSet/v2-0098` +- `http://terminology.hl7.org/ValueSet/v2-0100` +- `http://terminology.hl7.org/ValueSet/v2-0102` +- `http://terminology.hl7.org/ValueSet/v2-0103` +- `http://terminology.hl7.org/ValueSet/v2-0104` +- `http://terminology.hl7.org/ValueSet/v2-0105` +- `http://terminology.hl7.org/ValueSet/v2-0106` +- `http://terminology.hl7.org/ValueSet/v2-0107` +- `http://terminology.hl7.org/ValueSet/v2-0108` +- `http://terminology.hl7.org/ValueSet/v2-0109` +- `http://terminology.hl7.org/ValueSet/v2-0116` +- `http://terminology.hl7.org/ValueSet/v2-0119` +- `http://terminology.hl7.org/ValueSet/v2-0121` +- `http://terminology.hl7.org/ValueSet/v2-0122` +- `http://terminology.hl7.org/ValueSet/v2-0123` +- `http://terminology.hl7.org/ValueSet/v2-0124` +- `http://terminology.hl7.org/ValueSet/v2-0125` +- `http://terminology.hl7.org/ValueSet/v2-0126` +- `http://terminology.hl7.org/ValueSet/v2-0127` +- `http://terminology.hl7.org/ValueSet/v2-0128` +- `http://terminology.hl7.org/ValueSet/v2-0130` +- `http://terminology.hl7.org/ValueSet/v2-0131` +- `http://terminology.hl7.org/ValueSet/v2-0133` +- `http://terminology.hl7.org/ValueSet/v2-0135` +- `http://terminology.hl7.org/ValueSet/v2-0136` +- `http://terminology.hl7.org/ValueSet/v2-0137` +- `http://terminology.hl7.org/ValueSet/v2-0140` +- `http://terminology.hl7.org/ValueSet/v2-0141` +- `http://terminology.hl7.org/ValueSet/v2-0142` +- `http://terminology.hl7.org/ValueSet/v2-0144` +- `http://terminology.hl7.org/ValueSet/v2-0145` +- `http://terminology.hl7.org/ValueSet/v2-0146` +- `http://terminology.hl7.org/ValueSet/v2-0147` +- `http://terminology.hl7.org/ValueSet/v2-0148` +- `http://terminology.hl7.org/ValueSet/v2-0149` +- `http://terminology.hl7.org/ValueSet/v2-0150` +- `http://terminology.hl7.org/ValueSet/v2-0153` +- `http://terminology.hl7.org/ValueSet/v2-0155` +- `http://terminology.hl7.org/ValueSet/v2-0156` +- `http://terminology.hl7.org/ValueSet/v2-0157` +- `http://terminology.hl7.org/ValueSet/v2-0158` +- `http://terminology.hl7.org/ValueSet/v2-0159` +- `http://terminology.hl7.org/ValueSet/v2-0160` +- `http://terminology.hl7.org/ValueSet/v2-0161` +- `http://terminology.hl7.org/ValueSet/v2-0162` +- `http://terminology.hl7.org/ValueSet/v2-0163` +- `http://terminology.hl7.org/ValueSet/v2-0164` +- `http://terminology.hl7.org/ValueSet/v2-0165` +- `http://terminology.hl7.org/ValueSet/v2-0166` +- `http://terminology.hl7.org/ValueSet/v2-0167` +- `http://terminology.hl7.org/ValueSet/v2-0168` +- `http://terminology.hl7.org/ValueSet/v2-0169` +- `http://terminology.hl7.org/ValueSet/v2-0170` +- `http://terminology.hl7.org/ValueSet/v2-0173` +- `http://terminology.hl7.org/ValueSet/v2-0174` +- `http://terminology.hl7.org/ValueSet/v2-0175` +- `http://terminology.hl7.org/ValueSet/v2-0177` +- `http://terminology.hl7.org/ValueSet/v2-0178` +- `http://terminology.hl7.org/ValueSet/v2-0179` +- `http://terminology.hl7.org/ValueSet/v2-0180` +- `http://terminology.hl7.org/ValueSet/v2-0181` +- `http://terminology.hl7.org/ValueSet/v2-0183` +- `http://terminology.hl7.org/ValueSet/v2-0185` +- `http://terminology.hl7.org/ValueSet/v2-0187` +- `http://terminology.hl7.org/ValueSet/v2-0189` +- `http://terminology.hl7.org/ValueSet/v2-0190` +- `http://terminology.hl7.org/ValueSet/v2-0191` +- `http://terminology.hl7.org/ValueSet/v2-0193` +- `http://terminology.hl7.org/ValueSet/v2-0200` +- `http://terminology.hl7.org/ValueSet/v2-0201` +- `http://terminology.hl7.org/ValueSet/v2-0202` +- `http://terminology.hl7.org/ValueSet/v2-0203` +- `http://terminology.hl7.org/ValueSet/v2-0204` +- `http://terminology.hl7.org/ValueSet/v2-0205` +- `http://terminology.hl7.org/ValueSet/v2-0206` +- `http://terminology.hl7.org/ValueSet/v2-0207` +- `http://terminology.hl7.org/ValueSet/v2-0208` +- `http://terminology.hl7.org/ValueSet/v2-0209` +- `http://terminology.hl7.org/ValueSet/v2-0210` +- `http://terminology.hl7.org/ValueSet/v2-0211` +- `http://terminology.hl7.org/ValueSet/v2-0213` +- `http://terminology.hl7.org/ValueSet/v2-0214` +- `http://terminology.hl7.org/ValueSet/v2-0215` +- `http://terminology.hl7.org/ValueSet/v2-0216` +- `http://terminology.hl7.org/ValueSet/v2-0217` +- `http://terminology.hl7.org/ValueSet/v2-0220` +- `http://terminology.hl7.org/ValueSet/v2-0223` +- `http://terminology.hl7.org/ValueSet/v2-0224` +- `http://terminology.hl7.org/ValueSet/v2-0225` +- `http://terminology.hl7.org/ValueSet/v2-0227` +- `http://terminology.hl7.org/ValueSet/v2-0228` +- `http://terminology.hl7.org/ValueSet/v2-0229` +- `http://terminology.hl7.org/ValueSet/v2-0230` +- `http://terminology.hl7.org/ValueSet/v2-0231` +- `http://terminology.hl7.org/ValueSet/v2-0232` +- `http://terminology.hl7.org/ValueSet/v2-0234` +- `http://terminology.hl7.org/ValueSet/v2-0235` +- `http://terminology.hl7.org/ValueSet/v2-0236` +- `http://terminology.hl7.org/ValueSet/v2-0237` +- `http://terminology.hl7.org/ValueSet/v2-0238` +- `http://terminology.hl7.org/ValueSet/v2-0239` +- `http://terminology.hl7.org/ValueSet/v2-0240` +- `http://terminology.hl7.org/ValueSet/v2-0241` +- `http://terminology.hl7.org/ValueSet/v2-0242` +- `http://terminology.hl7.org/ValueSet/v2-0243` +- `http://terminology.hl7.org/ValueSet/v2-0247` +- `http://terminology.hl7.org/ValueSet/v2-0248` +- `http://terminology.hl7.org/ValueSet/v2-0250` +- `http://terminology.hl7.org/ValueSet/v2-0251` +- `http://terminology.hl7.org/ValueSet/v2-0252` +- `http://terminology.hl7.org/ValueSet/v2-0253` +- `http://terminology.hl7.org/ValueSet/v2-0254` +- `http://terminology.hl7.org/ValueSet/v2-0255` +- `http://terminology.hl7.org/ValueSet/v2-0256` +- `http://terminology.hl7.org/ValueSet/v2-0257` +- `http://terminology.hl7.org/ValueSet/v2-0258` +- `http://terminology.hl7.org/ValueSet/v2-0259` +- `http://terminology.hl7.org/ValueSet/v2-0260` +- `http://terminology.hl7.org/ValueSet/v2-0261` +- `http://terminology.hl7.org/ValueSet/v2-0262` +- `http://terminology.hl7.org/ValueSet/v2-0263` +- `http://terminology.hl7.org/ValueSet/v2-0265` +- `http://terminology.hl7.org/ValueSet/v2-0267` +- `http://terminology.hl7.org/ValueSet/v2-0268` +- `http://terminology.hl7.org/ValueSet/v2-0269` +- `http://terminology.hl7.org/ValueSet/v2-0270` +- `http://terminology.hl7.org/ValueSet/v2-0271` +- `http://terminology.hl7.org/ValueSet/v2-0272` +- `http://terminology.hl7.org/ValueSet/v2-0273` +- `http://terminology.hl7.org/ValueSet/v2-0275` +- `http://terminology.hl7.org/ValueSet/v2-0276` +- `http://terminology.hl7.org/ValueSet/v2-0277` +- `http://terminology.hl7.org/ValueSet/v2-0278` +- `http://terminology.hl7.org/ValueSet/v2-0279` +- `http://terminology.hl7.org/ValueSet/v2-0280` +- `http://terminology.hl7.org/ValueSet/v2-0281` +- `http://terminology.hl7.org/ValueSet/v2-0282` +- `http://terminology.hl7.org/ValueSet/v2-0283` +- `http://terminology.hl7.org/ValueSet/v2-0284` +- `http://terminology.hl7.org/ValueSet/v2-0286` +- `http://terminology.hl7.org/ValueSet/v2-0287` +- `http://terminology.hl7.org/ValueSet/v2-0290` +- `http://terminology.hl7.org/ValueSet/v2-0291` +- `http://terminology.hl7.org/ValueSet/v2-0292` +- `http://terminology.hl7.org/ValueSet/v2-0294` +- `http://terminology.hl7.org/ValueSet/v2-0298` +- `http://terminology.hl7.org/ValueSet/v2-0299` +- `http://terminology.hl7.org/ValueSet/v2-0301` +- `http://terminology.hl7.org/ValueSet/v2-0305` +- `http://terminology.hl7.org/ValueSet/v2-0309` +- `http://terminology.hl7.org/ValueSet/v2-0311` +- `http://terminology.hl7.org/ValueSet/v2-0315` +- `http://terminology.hl7.org/ValueSet/v2-0316` +- `http://terminology.hl7.org/ValueSet/v2-0317` +- `http://terminology.hl7.org/ValueSet/v2-0321` +- `http://terminology.hl7.org/ValueSet/v2-0322` +- `http://terminology.hl7.org/ValueSet/v2-0323` +- `http://terminology.hl7.org/ValueSet/v2-0324` +- `http://terminology.hl7.org/ValueSet/v2-0325` +- `http://terminology.hl7.org/ValueSet/v2-0326` +- `http://terminology.hl7.org/ValueSet/v2-0329` +- `http://terminology.hl7.org/ValueSet/v2-0330` +- `http://terminology.hl7.org/ValueSet/v2-0331` +- `http://terminology.hl7.org/ValueSet/v2-0332` +- `http://terminology.hl7.org/ValueSet/v2-0334` +- `http://terminology.hl7.org/ValueSet/v2-0335` +- `http://terminology.hl7.org/ValueSet/v2-0336` +- `http://terminology.hl7.org/ValueSet/v2-0337` +- `http://terminology.hl7.org/ValueSet/v2-0338` +- `http://terminology.hl7.org/ValueSet/v2-0339` +- `http://terminology.hl7.org/ValueSet/v2-0344` +- `http://terminology.hl7.org/ValueSet/v2-0350` +- `http://terminology.hl7.org/ValueSet/v2-0351` +- `http://terminology.hl7.org/ValueSet/v2-0353` +- `http://terminology.hl7.org/ValueSet/v2-0354` +- `http://terminology.hl7.org/ValueSet/v2-0355` +- `http://terminology.hl7.org/ValueSet/v2-0356` +- `http://terminology.hl7.org/ValueSet/v2-0357` +- `http://terminology.hl7.org/ValueSet/v2-0359` +- `http://terminology.hl7.org/ValueSet/v2-0363` +- `http://terminology.hl7.org/ValueSet/v2-0364` +- `http://terminology.hl7.org/ValueSet/v2-0365` +- `http://terminology.hl7.org/ValueSet/v2-0366` +- `http://terminology.hl7.org/ValueSet/v2-0367` +- `http://terminology.hl7.org/ValueSet/v2-0368` +- `http://terminology.hl7.org/ValueSet/v2-0369` +- `http://terminology.hl7.org/ValueSet/v2-0370` +- `http://terminology.hl7.org/ValueSet/v2-0371` +- `http://terminology.hl7.org/ValueSet/v2-0372` +- `http://terminology.hl7.org/ValueSet/v2-0373` +- `http://terminology.hl7.org/ValueSet/v2-0374` +- `http://terminology.hl7.org/ValueSet/v2-0375` +- `http://terminology.hl7.org/ValueSet/v2-0376` +- `http://terminology.hl7.org/ValueSet/v2-0377` +- `http://terminology.hl7.org/ValueSet/v2-0383` +- `http://terminology.hl7.org/ValueSet/v2-0384` +- `http://terminology.hl7.org/ValueSet/v2-0387` +- `http://terminology.hl7.org/ValueSet/v2-0388` +- `http://terminology.hl7.org/ValueSet/v2-0389` +- `http://terminology.hl7.org/ValueSet/v2-0392` +- `http://terminology.hl7.org/ValueSet/v2-0393` +- `http://terminology.hl7.org/ValueSet/v2-0394` +- `http://terminology.hl7.org/ValueSet/v2-0395` +- `http://terminology.hl7.org/ValueSet/v2-0396` +- `http://terminology.hl7.org/ValueSet/v2-0397` +- `http://terminology.hl7.org/ValueSet/v2-0398` +- `http://terminology.hl7.org/ValueSet/v2-0401` +- `http://terminology.hl7.org/ValueSet/v2-0402` +- `http://terminology.hl7.org/ValueSet/v2-0403` +- `http://terminology.hl7.org/ValueSet/v2-0404` +- `http://terminology.hl7.org/ValueSet/v2-0406` +- `http://terminology.hl7.org/ValueSet/v2-0409` +- `http://terminology.hl7.org/ValueSet/v2-0411` +- `http://terminology.hl7.org/ValueSet/v2-0415` +- `http://terminology.hl7.org/ValueSet/v2-0416` +- `http://terminology.hl7.org/ValueSet/v2-0417` +- `http://terminology.hl7.org/ValueSet/v2-0418` +- `http://terminology.hl7.org/ValueSet/v2-0421` +- `http://terminology.hl7.org/ValueSet/v2-0422` +- `http://terminology.hl7.org/ValueSet/v2-0423` +- `http://terminology.hl7.org/ValueSet/v2-0424` +- `http://terminology.hl7.org/ValueSet/v2-0425` +- `http://terminology.hl7.org/ValueSet/v2-0426` +- `http://terminology.hl7.org/ValueSet/v2-0427` +- `http://terminology.hl7.org/ValueSet/v2-0428` +- `http://terminology.hl7.org/ValueSet/v2-0429` +- `http://terminology.hl7.org/ValueSet/v2-0430` +- `http://terminology.hl7.org/ValueSet/v2-0431` +- `http://terminology.hl7.org/ValueSet/v2-0432` +- `http://terminology.hl7.org/ValueSet/v2-0433` +- `http://terminology.hl7.org/ValueSet/v2-0434` +- `http://terminology.hl7.org/ValueSet/v2-0435` +- `http://terminology.hl7.org/ValueSet/v2-0436` +- `http://terminology.hl7.org/ValueSet/v2-0437` +- `http://terminology.hl7.org/ValueSet/v2-0438` +- `http://terminology.hl7.org/ValueSet/v2-0440` +- `http://terminology.hl7.org/ValueSet/v2-0441` +- `http://terminology.hl7.org/ValueSet/v2-0442` +- `http://terminology.hl7.org/ValueSet/v2-0443` +- `http://terminology.hl7.org/ValueSet/v2-0444` +- `http://terminology.hl7.org/ValueSet/v2-0445` +- `http://terminology.hl7.org/ValueSet/v2-0450` +- `http://terminology.hl7.org/ValueSet/v2-0455` +- `http://terminology.hl7.org/ValueSet/v2-0456` +- `http://terminology.hl7.org/ValueSet/v2-0457` +- `http://terminology.hl7.org/ValueSet/v2-0459` +- `http://terminology.hl7.org/ValueSet/v2-0460` +- `http://terminology.hl7.org/ValueSet/v2-0465` +- `http://terminology.hl7.org/ValueSet/v2-0466` +- `http://terminology.hl7.org/ValueSet/v2-0468` +- `http://terminology.hl7.org/ValueSet/v2-0469` +- `http://terminology.hl7.org/ValueSet/v2-0470` +- `http://terminology.hl7.org/ValueSet/v2-0472` +- `http://terminology.hl7.org/ValueSet/v2-0473` +- `http://terminology.hl7.org/ValueSet/v2-0474` +- `http://terminology.hl7.org/ValueSet/v2-0475` +- `http://terminology.hl7.org/ValueSet/v2-0477` +- `http://terminology.hl7.org/ValueSet/v2-0478` +- `http://terminology.hl7.org/ValueSet/v2-0480` +- `http://terminology.hl7.org/ValueSet/v2-0482` +- `http://terminology.hl7.org/ValueSet/v2-0483` +- `http://terminology.hl7.org/ValueSet/v2-0484` +- `http://terminology.hl7.org/ValueSet/v2-0485` +- `http://terminology.hl7.org/ValueSet/v2-0487` +- `http://terminology.hl7.org/ValueSet/v2-0488` +- `http://terminology.hl7.org/ValueSet/v2-0489` +- `http://terminology.hl7.org/ValueSet/v2-0490` +- `http://terminology.hl7.org/ValueSet/v2-0491` +- `http://terminology.hl7.org/ValueSet/v2-0492` +- `http://terminology.hl7.org/ValueSet/v2-0493` +- `http://terminology.hl7.org/ValueSet/v2-0494` +- `http://terminology.hl7.org/ValueSet/v2-0495` +- `http://terminology.hl7.org/ValueSet/v2-0496` +- `http://terminology.hl7.org/ValueSet/v2-0497` +- `http://terminology.hl7.org/ValueSet/v2-0498` +- `http://terminology.hl7.org/ValueSet/v2-0499` +- `http://terminology.hl7.org/ValueSet/v2-0500` +- `http://terminology.hl7.org/ValueSet/v2-0501` +- `http://terminology.hl7.org/ValueSet/v2-0502` +- `http://terminology.hl7.org/ValueSet/v2-0503` +- `http://terminology.hl7.org/ValueSet/v2-0504` +- `http://terminology.hl7.org/ValueSet/v2-0505` +- `http://terminology.hl7.org/ValueSet/v2-0506` +- `http://terminology.hl7.org/ValueSet/v2-0507` +- `http://terminology.hl7.org/ValueSet/v2-0508` +- `http://terminology.hl7.org/ValueSet/v2-0510` +- `http://terminology.hl7.org/ValueSet/v2-0511` +- `http://terminology.hl7.org/ValueSet/v2-0513` +- `http://terminology.hl7.org/ValueSet/v2-0514` +- `http://terminology.hl7.org/ValueSet/v2-0516` +- `http://terminology.hl7.org/ValueSet/v2-0517` +- `http://terminology.hl7.org/ValueSet/v2-0518` +- `http://terminology.hl7.org/ValueSet/v2-0520` +- `http://terminology.hl7.org/ValueSet/v2-0523` +- `http://terminology.hl7.org/ValueSet/v2-0524` +- `http://terminology.hl7.org/ValueSet/v2-0527` +- `http://terminology.hl7.org/ValueSet/v2-0528` +- `http://terminology.hl7.org/ValueSet/v2-0529` +- `http://terminology.hl7.org/ValueSet/v2-0530` +- `http://terminology.hl7.org/ValueSet/v2-0532` +- `http://terminology.hl7.org/ValueSet/v2-0534` +- `http://terminology.hl7.org/ValueSet/v2-0535` +- `http://terminology.hl7.org/ValueSet/v2-0536` +- `http://terminology.hl7.org/ValueSet/v2-0538` +- `http://terminology.hl7.org/ValueSet/v2-0540` +- `http://terminology.hl7.org/ValueSet/v2-0544` +- `http://terminology.hl7.org/ValueSet/v2-0547` +- `http://terminology.hl7.org/ValueSet/v2-0548` +- `http://terminology.hl7.org/ValueSet/v2-0550` +- `http://terminology.hl7.org/ValueSet/v2-0553` +- `http://terminology.hl7.org/ValueSet/v2-0554` +- `http://terminology.hl7.org/ValueSet/v2-0555` +- `http://terminology.hl7.org/ValueSet/v2-0556` +- `http://terminology.hl7.org/ValueSet/v2-0557` +- `http://terminology.hl7.org/ValueSet/v2-0558` +- `http://terminology.hl7.org/ValueSet/v2-0559` +- `http://terminology.hl7.org/ValueSet/v2-0561` +- `http://terminology.hl7.org/ValueSet/v2-0562` +- `http://terminology.hl7.org/ValueSet/v2-0564` +- `http://terminology.hl7.org/ValueSet/v2-0565` +- `http://terminology.hl7.org/ValueSet/v2-0566` +- `http://terminology.hl7.org/ValueSet/v2-0569` +- `http://terminology.hl7.org/ValueSet/v2-0570` +- `http://terminology.hl7.org/ValueSet/v2-0571` +- `http://terminology.hl7.org/ValueSet/v2-0572` +- `http://terminology.hl7.org/ValueSet/v2-0615` +- `http://terminology.hl7.org/ValueSet/v2-0616` +- `http://terminology.hl7.org/ValueSet/v2-0617` +- `http://terminology.hl7.org/ValueSet/v2-0618` +- `http://terminology.hl7.org/ValueSet/v2-0625` +- `http://terminology.hl7.org/ValueSet/v2-0634` +- `http://terminology.hl7.org/ValueSet/v2-0642` +- `http://terminology.hl7.org/ValueSet/v2-0651` +- `http://terminology.hl7.org/ValueSet/v2-0653` +- `http://terminology.hl7.org/ValueSet/v2-0657` +- `http://terminology.hl7.org/ValueSet/v2-0659` +- `http://terminology.hl7.org/ValueSet/v2-0667` +- `http://terminology.hl7.org/ValueSet/v2-0669` +- `http://terminology.hl7.org/ValueSet/v2-0682` +- `http://terminology.hl7.org/ValueSet/v2-0702` +- `http://terminology.hl7.org/ValueSet/v2-0717` +- `http://terminology.hl7.org/ValueSet/v2-0719` +- `http://terminology.hl7.org/ValueSet/v2-0725` +- `http://terminology.hl7.org/ValueSet/v2-0728` +- `http://terminology.hl7.org/ValueSet/v2-0731` +- `http://terminology.hl7.org/ValueSet/v2-0734` +- `http://terminology.hl7.org/ValueSet/v2-0739` +- `http://terminology.hl7.org/ValueSet/v2-0742` +- `http://terminology.hl7.org/ValueSet/v2-0749` +- `http://terminology.hl7.org/ValueSet/v2-0755` +- `http://terminology.hl7.org/ValueSet/v2-0757` +- `http://terminology.hl7.org/ValueSet/v2-0759` +- `http://terminology.hl7.org/ValueSet/v2-0761` +- `http://terminology.hl7.org/ValueSet/v2-0763` +- `http://terminology.hl7.org/ValueSet/v2-0776` +- `http://terminology.hl7.org/ValueSet/v2-0778` +- `http://terminology.hl7.org/ValueSet/v2-0790` +- `http://terminology.hl7.org/ValueSet/v2-0793` +- `http://terminology.hl7.org/ValueSet/v2-0806` +- `http://terminology.hl7.org/ValueSet/v2-0818` +- `http://terminology.hl7.org/ValueSet/v2-0834` +- `http://terminology.hl7.org/ValueSet/v2-0868` +- `http://terminology.hl7.org/ValueSet/v2-0871` +- `http://terminology.hl7.org/ValueSet/v2-0881` +- `http://terminology.hl7.org/ValueSet/v2-0882` +- `http://terminology.hl7.org/ValueSet/v2-0894` +- `http://terminology.hl7.org/ValueSet/v2-0895` +- `http://terminology.hl7.org/ValueSet/v2-0904` +- `http://terminology.hl7.org/ValueSet/v2-0905` +- `http://terminology.hl7.org/ValueSet/v2-0906` +- `http://terminology.hl7.org/ValueSet/v2-0907` +- `http://terminology.hl7.org/ValueSet/v2-0909` +- `http://terminology.hl7.org/ValueSet/v2-0912` +- `http://terminology.hl7.org/ValueSet/v2-0914` +- `http://terminology.hl7.org/ValueSet/v2-0916` +- `http://terminology.hl7.org/ValueSet/v2-0917` +- `http://terminology.hl7.org/ValueSet/v2-0918` +- `http://terminology.hl7.org/ValueSet/v2-0919` +- `http://terminology.hl7.org/ValueSet/v2-0920` +- `http://terminology.hl7.org/ValueSet/v2-0921` +- `http://terminology.hl7.org/ValueSet/v2-0922` +- `http://terminology.hl7.org/ValueSet/v2-0923` +- `http://terminology.hl7.org/ValueSet/v2-0924` +- `http://terminology.hl7.org/ValueSet/v2-0925` +- `http://terminology.hl7.org/ValueSet/v2-0926` +- `http://terminology.hl7.org/ValueSet/v2-0927` +- `http://terminology.hl7.org/ValueSet/v2-0933` +- `http://terminology.hl7.org/ValueSet/v2-0935` +- `http://terminology.hl7.org/ValueSet/v2-2.1-0006` +- `http://terminology.hl7.org/ValueSet/v2-2.3.1-0360` +- `http://terminology.hl7.org/ValueSet/v2-2.4-0006` +- `http://terminology.hl7.org/ValueSet/v2-2.4-0391` +- `http://terminology.hl7.org/ValueSet/v2-2.6-0391` +- `http://terminology.hl7.org/ValueSet/v2-2.7-0360` +- `http://terminology.hl7.org/ValueSet/v2-4000` +- `http://terminology.hl7.org/ValueSet/v3-AcknowledgementCondition` +- `http://terminology.hl7.org/ValueSet/v3-AcknowledgementDetailCode` +- `http://terminology.hl7.org/ValueSet/v3-AcknowledgementDetailType` +- `http://terminology.hl7.org/ValueSet/v3-AcknowledgementType` +- `http://terminology.hl7.org/ValueSet/v3-ActClass` +- `http://terminology.hl7.org/ValueSet/v3-ActClassClinicalDocument` +- `http://terminology.hl7.org/ValueSet/v3-ActClassDocument` +- `http://terminology.hl7.org/ValueSet/v3-ActClassInvestigation` +- `http://terminology.hl7.org/ValueSet/v3-ActClassObservation` +- `http://terminology.hl7.org/ValueSet/v3-ActClassProcedure` +- `http://terminology.hl7.org/ValueSet/v3-ActClassROI` +- `http://terminology.hl7.org/ValueSet/v3-ActClassSupply` +- `http://terminology.hl7.org/ValueSet/v3-ActCode` +- `http://terminology.hl7.org/ValueSet/v3-ActConsentDirective` +- `http://terminology.hl7.org/ValueSet/v3-ActConsentType` +- `http://terminology.hl7.org/ValueSet/v3-ActCoverageTypeCode` +- `http://terminology.hl7.org/ValueSet/v3-ActEncounterCode` +- `http://terminology.hl7.org/ValueSet/v3-ActExposureLevelCode` +- `http://terminology.hl7.org/ValueSet/v3-ActIncidentCode` +- `http://terminology.hl7.org/ValueSet/v3-ActInvoiceElementModifier` +- `http://terminology.hl7.org/ValueSet/v3-ActInvoiceGroupCode` +- `http://terminology.hl7.org/ValueSet/v3-ActMood` +- `http://terminology.hl7.org/ValueSet/v3-ActMoodIntent` +- `http://terminology.hl7.org/ValueSet/v3-ActMoodPredicate` +- `http://terminology.hl7.org/ValueSet/v3-ActPharmacySupplyType` +- `http://terminology.hl7.org/ValueSet/v3-ActPriority` +- `http://terminology.hl7.org/ValueSet/v3-ActReason` +- `http://terminology.hl7.org/ValueSet/v3-ActRelationshipCheckpoint` +- `http://terminology.hl7.org/ValueSet/v3-ActRelationshipConditional` +- `http://terminology.hl7.org/ValueSet/v3-ActRelationshipFulfills` +- `http://terminology.hl7.org/ValueSet/v3-ActRelationshipHasComponent` +- `http://terminology.hl7.org/ValueSet/v3-ActRelationshipJoin` +- `http://terminology.hl7.org/ValueSet/v3-ActRelationshipPertains` +- `http://terminology.hl7.org/ValueSet/v3-ActRelationshipSplit` +- `http://terminology.hl7.org/ValueSet/v3-ActRelationshipSubset` +- `http://terminology.hl7.org/ValueSet/v3-ActRelationshipType` +- `http://terminology.hl7.org/ValueSet/v3-ActSite` +- `http://terminology.hl7.org/ValueSet/v3-ActStatus` +- `http://terminology.hl7.org/ValueSet/v3-ActSubstanceAdminSubstitutionCode` +- `http://terminology.hl7.org/ValueSet/v3-ActTaskCode` +- `http://terminology.hl7.org/ValueSet/v3-ActUSPrivacyLaw` +- `http://terminology.hl7.org/ValueSet/v3-ActUncertainty` +- `http://terminology.hl7.org/ValueSet/v3-AddressPartType` +- `http://terminology.hl7.org/ValueSet/v3-AddressUse` +- `http://terminology.hl7.org/ValueSet/v3-AdministrativeGender` +- `http://terminology.hl7.org/ValueSet/v3-AmericanIndianAlaskaNativeLanguages` +- `http://terminology.hl7.org/ValueSet/v3-Calendar` +- `http://terminology.hl7.org/ValueSet/v3-CalendarCycle` +- `http://terminology.hl7.org/ValueSet/v3-CalendarType` +- `http://terminology.hl7.org/ValueSet/v3-Charset` +- `http://terminology.hl7.org/ValueSet/v3-CodingRationale` +- `http://terminology.hl7.org/ValueSet/v3-CommunicationFunctionType` +- `http://terminology.hl7.org/ValueSet/v3-Compartment` +- `http://terminology.hl7.org/ValueSet/v3-CompressionAlgorithm` +- `http://terminology.hl7.org/ValueSet/v3-Confidentiality` +- `http://terminology.hl7.org/ValueSet/v3-ConfidentialityClassification` +- `http://terminology.hl7.org/ValueSet/v3-ContainerCap` +- `http://terminology.hl7.org/ValueSet/v3-ContainerSeparator` +- `http://terminology.hl7.org/ValueSet/v3-ContentProcessingMode` +- `http://terminology.hl7.org/ValueSet/v3-ContextControl` +- `http://terminology.hl7.org/ValueSet/v3-DataOperation` +- `http://terminology.hl7.org/ValueSet/v3-Dentition` +- `http://terminology.hl7.org/ValueSet/v3-DeviceAlertLevel` +- `http://terminology.hl7.org/ValueSet/v3-DocumentCompletion` +- `http://terminology.hl7.org/ValueSet/v3-DocumentSectionType` +- `http://terminology.hl7.org/ValueSet/v3-DocumentStorage` +- `http://terminology.hl7.org/ValueSet/v3-EducationLevel` +- `http://terminology.hl7.org/ValueSet/v3-EmployeeJobClass` +- `http://terminology.hl7.org/ValueSet/v3-EncounterAdmissionSource` +- `http://terminology.hl7.org/ValueSet/v3-EncounterSpecialCourtesy` +- `http://terminology.hl7.org/ValueSet/v3-EntityClass` +- `http://terminology.hl7.org/ValueSet/v3-EntityClassDevice` +- `http://terminology.hl7.org/ValueSet/v3-EntityClassLivingSubject` +- `http://terminology.hl7.org/ValueSet/v3-EntityClassManufacturedMaterial` +- `http://terminology.hl7.org/ValueSet/v3-EntityClassOrganization` +- `http://terminology.hl7.org/ValueSet/v3-EntityClassPlace` +- `http://terminology.hl7.org/ValueSet/v3-EntityClassRoot` +- `http://terminology.hl7.org/ValueSet/v3-EntityCode` +- `http://terminology.hl7.org/ValueSet/v3-EntityDeterminer` +- `http://terminology.hl7.org/ValueSet/v3-EntityDeterminerDetermined` +- `http://terminology.hl7.org/ValueSet/v3-EntityHandling` +- `http://terminology.hl7.org/ValueSet/v3-EntityNamePartQualifier` +- `http://terminology.hl7.org/ValueSet/v3-EntityNamePartQualifierR2` +- `http://terminology.hl7.org/ValueSet/v3-EntityNamePartType` +- `http://terminology.hl7.org/ValueSet/v3-EntityNamePartTypeR2` +- `http://terminology.hl7.org/ValueSet/v3-EntityNameUse` +- `http://terminology.hl7.org/ValueSet/v3-EntityNameUseR2` +- `http://terminology.hl7.org/ValueSet/v3-EntityRisk` +- `http://terminology.hl7.org/ValueSet/v3-EntityStatus` +- `http://terminology.hl7.org/ValueSet/v3-EquipmentAlertLevel` +- `http://terminology.hl7.org/ValueSet/v3-Ethnicity` +- `http://terminology.hl7.org/ValueSet/v3-ExposureMode` +- `http://terminology.hl7.org/ValueSet/v3-FamilyMember` +- `http://terminology.hl7.org/ValueSet/v3-GTSAbbreviation` +- `http://terminology.hl7.org/ValueSet/v3-GenderStatus` +- `http://terminology.hl7.org/ValueSet/v3-GeneralPurposeOfUse` +- `http://terminology.hl7.org/ValueSet/v3-HL7ContextConductionStyle` +- `http://terminology.hl7.org/ValueSet/v3-HL7StandardVersionCode` +- `http://terminology.hl7.org/ValueSet/v3-HL7UpdateMode` +- `http://terminology.hl7.org/ValueSet/v3-HtmlLinkType` +- `http://terminology.hl7.org/ValueSet/v3-HumanLanguage` +- `http://terminology.hl7.org/ValueSet/v3-IdentifierReliability` +- `http://terminology.hl7.org/ValueSet/v3-IdentifierScope` +- `http://terminology.hl7.org/ValueSet/v3-InformationSensitivityPolicy` +- `http://terminology.hl7.org/ValueSet/v3-IntegrityCheckAlgorithm` +- `http://terminology.hl7.org/ValueSet/v3-LanguageAbilityMode` +- `http://terminology.hl7.org/ValueSet/v3-LanguageAbilityProficiency` +- `http://terminology.hl7.org/ValueSet/v3-LivingArrangement` +- `http://terminology.hl7.org/ValueSet/v3-LocalMarkupIgnore` +- `http://terminology.hl7.org/ValueSet/v3-LocalRemoteControlState` +- `http://terminology.hl7.org/ValueSet/v3-ManagedParticipationStatus` +- `http://terminology.hl7.org/ValueSet/v3-MapRelationship` +- `http://terminology.hl7.org/ValueSet/v3-MaritalStatus` +- `http://terminology.hl7.org/ValueSet/v3-MessageWaitingPriority` +- `http://terminology.hl7.org/ValueSet/v3-MilitaryRoleType` +- `http://terminology.hl7.org/ValueSet/v3-ModifyIndicator` +- `http://terminology.hl7.org/ValueSet/v3-NullFlavor` +- `http://terminology.hl7.org/ValueSet/v3-ObligationPolicy` +- `http://terminology.hl7.org/ValueSet/v3-ObservationCategory` +- `http://terminology.hl7.org/ValueSet/v3-ObservationInterpretation` +- `http://terminology.hl7.org/ValueSet/v3-ObservationMethod` +- `http://terminology.hl7.org/ValueSet/v3-ObservationType` +- `http://terminology.hl7.org/ValueSet/v3-ObservationValue` +- `http://terminology.hl7.org/ValueSet/v3-ParticipationFunction` +- `http://terminology.hl7.org/ValueSet/v3-ParticipationIndirectTarget` +- `http://terminology.hl7.org/ValueSet/v3-ParticipationInformationGenerator` +- `http://terminology.hl7.org/ValueSet/v3-ParticipationInformationTranscriber` +- `http://terminology.hl7.org/ValueSet/v3-ParticipationMode` +- `http://terminology.hl7.org/ValueSet/v3-ParticipationPhysicalPerformer` +- `http://terminology.hl7.org/ValueSet/v3-ParticipationSignature` +- `http://terminology.hl7.org/ValueSet/v3-ParticipationTargetDirect` +- `http://terminology.hl7.org/ValueSet/v3-ParticipationTargetLocation` +- `http://terminology.hl7.org/ValueSet/v3-ParticipationTargetSubject` +- `http://terminology.hl7.org/ValueSet/v3-ParticipationType` +- `http://terminology.hl7.org/ValueSet/v3-ParticipationVerifier` +- `http://terminology.hl7.org/ValueSet/v3-PatientImportance` +- `http://terminology.hl7.org/ValueSet/v3-PaymentTerms` +- `http://terminology.hl7.org/ValueSet/v3-PersonDisabilityType` +- `http://terminology.hl7.org/ValueSet/v3-PersonalRelationshipRoleType` +- `http://terminology.hl7.org/ValueSet/v3-ProbabilityDistributionType` +- `http://terminology.hl7.org/ValueSet/v3-ProcessingID` +- `http://terminology.hl7.org/ValueSet/v3-ProcessingMode` +- `http://terminology.hl7.org/ValueSet/v3-ProvenanceEventCurrentState` +- `http://terminology.hl7.org/ValueSet/v3-ProvenanceEventCurrentState-AS` +- `http://terminology.hl7.org/ValueSet/v3-ProvenanceEventCurrentState-DC` +- `http://terminology.hl7.org/ValueSet/v3-PurposeOfUse` +- `http://terminology.hl7.org/ValueSet/v3-QueryParameterValue` +- `http://terminology.hl7.org/ValueSet/v3-QueryPriority` +- `http://terminology.hl7.org/ValueSet/v3-QueryRequestLimit` +- `http://terminology.hl7.org/ValueSet/v3-QueryResponse` +- `http://terminology.hl7.org/ValueSet/v3-QueryStatusCode` +- `http://terminology.hl7.org/ValueSet/v3-Race` +- `http://terminology.hl7.org/ValueSet/v3-RefrainPolicy` +- `http://terminology.hl7.org/ValueSet/v3-RelationalOperator` +- `http://terminology.hl7.org/ValueSet/v3-RelationshipConjunction` +- `http://terminology.hl7.org/ValueSet/v3-ReligiousAffiliation` +- `http://terminology.hl7.org/ValueSet/v3-ResponseLevel` +- `http://terminology.hl7.org/ValueSet/v3-ResponseModality` +- `http://terminology.hl7.org/ValueSet/v3-ResponseMode` +- `http://terminology.hl7.org/ValueSet/v3-RoleClass` +- `http://terminology.hl7.org/ValueSet/v3-RoleClassAgent` +- `http://terminology.hl7.org/ValueSet/v3-RoleClassAssociative` +- `http://terminology.hl7.org/ValueSet/v3-RoleClassManufacturedProduct` +- `http://terminology.hl7.org/ValueSet/v3-RoleClassMutualRelationship` +- `http://terminology.hl7.org/ValueSet/v3-RoleClassPartitive` +- `http://terminology.hl7.org/ValueSet/v3-RoleClassPassive` +- `http://terminology.hl7.org/ValueSet/v3-RoleClassRelationshipFormal` +- `http://terminology.hl7.org/ValueSet/v3-RoleClassRoot` +- `http://terminology.hl7.org/ValueSet/v3-RoleClassServiceDeliveryLocation` +- `http://terminology.hl7.org/ValueSet/v3-RoleClassSpecimen` +- `http://terminology.hl7.org/ValueSet/v3-RoleCode` +- `http://terminology.hl7.org/ValueSet/v3-RoleLinkStatus` +- `http://terminology.hl7.org/ValueSet/v3-RoleLinkType` +- `http://terminology.hl7.org/ValueSet/v3-RoleStatus` +- `http://terminology.hl7.org/ValueSet/v3-RouteOfAdministration` +- `http://terminology.hl7.org/ValueSet/v3-SecurityControlObservationValue` +- `http://terminology.hl7.org/ValueSet/v3-SecurityIntegrityObservationValue` +- `http://terminology.hl7.org/ValueSet/v3-SecurityPolicy` +- `http://terminology.hl7.org/ValueSet/v3-Sequencing` +- `http://terminology.hl7.org/ValueSet/v3-ServiceDeliveryLocationRoleType` +- `http://terminology.hl7.org/ValueSet/v3-SetOperator` +- `http://terminology.hl7.org/ValueSet/v3-SeverityObservation` +- `http://terminology.hl7.org/ValueSet/v3-SpecimenType` +- `http://terminology.hl7.org/ValueSet/v3-SubstanceAdminSubstitutionReason` +- `http://terminology.hl7.org/ValueSet/v3-SubstitutionCondition` +- `http://terminology.hl7.org/ValueSet/v3-TableCellHorizontalAlign` +- `http://terminology.hl7.org/ValueSet/v3-TableCellScope` +- `http://terminology.hl7.org/ValueSet/v3-TableCellVerticalAlign` +- `http://terminology.hl7.org/ValueSet/v3-TableFrame` +- `http://terminology.hl7.org/ValueSet/v3-TableRules` +- `http://terminology.hl7.org/ValueSet/v3-TargetAwareness` +- `http://terminology.hl7.org/ValueSet/v3-TelecommunicationCapabilities` +- `http://terminology.hl7.org/ValueSet/v3-TimingEvent` +- `http://terminology.hl7.org/ValueSet/v3-TransmissionRelationshipTypeCode` +- `http://terminology.hl7.org/ValueSet/v3-TribalEntityUS` +- `http://terminology.hl7.org/ValueSet/v3-VaccineManufacturer` +- `http://terminology.hl7.org/ValueSet/v3-VerificationMethod` +- `http://terminology.hl7.org/ValueSet/v3-WorkClassificationODH` +- `http://terminology.hl7.org/ValueSet/v3-WorkScheduleODH` +- `http://terminology.hl7.org/ValueSet/v3-employmentStatusODH` +- `http://terminology.hl7.org/ValueSet/v3-hl7ApprovalStatus` +- `http://terminology.hl7.org/ValueSet/v3-hl7CMETAttribution` +- `http://terminology.hl7.org/ValueSet/v3-hl7ITSType` +- `http://terminology.hl7.org/ValueSet/v3-hl7ITSVersionCode` +- `http://terminology.hl7.org/ValueSet/v3-hl7PublishingDomain` +- `http://terminology.hl7.org/ValueSet/v3-hl7PublishingSection` +- `http://terminology.hl7.org/ValueSet/v3-hl7PublishingSubSection` +- `http://terminology.hl7.org/ValueSet/v3-hl7Realm` +- `http://terminology.hl7.org/ValueSet/v3-hl7V3Conformance` +- `http://terminology.hl7.org/ValueSet/v3-hl7VoteResolution` +- `http://terminology.hl7.org/ValueSet/v3-orderableDrugForm` +- `http://terminology.hl7.org/ValueSet/v3-policyHolderRole` +- `http://terminology.hl7.org/ValueSet/v3-styleType` +- `http://terminology.hl7.org/ValueSet/v3-substanceAdminSubstitution` +- `http://terminology.hl7.org/ValueSet/v3-triggerEventID` +- `http://terminology.hl7.org/ValueSet/v3-xBasicConfidentialityKind` + +## Package: `shared` + +### Skipped Canonicals + +- `urn:fhir:binding:AccidentType` +- `urn:fhir:binding:AccountStatus` +- `urn:fhir:binding:AccountType` +- `urn:fhir:binding:ActionCardinalityBehavior` +- `urn:fhir:binding:ActionConditionKind` +- `urn:fhir:binding:ActionGroupingBehavior` +- `urn:fhir:binding:ActionParticipantRole` +- `urn:fhir:binding:ActionParticipantType` +- `urn:fhir:binding:ActionPrecheckBehavior` +- `urn:fhir:binding:ActionRelationshipType` +- `urn:fhir:binding:ActionRequiredBehavior` +- `urn:fhir:binding:ActionSelectionBehavior` +- `urn:fhir:binding:ActionType` +- `urn:fhir:binding:ActivityDefinitionKind` +- `urn:fhir:binding:ActivityDefinitionType` +- `urn:fhir:binding:ActivityParticipantRole` +- `urn:fhir:binding:ActivityParticipantType` +- `urn:fhir:binding:AdditionalInstruction` +- `urn:fhir:binding:Adjudication` +- `urn:fhir:binding:AdjudicationError` +- `urn:fhir:binding:AdjudicationReason` +- `urn:fhir:binding:AdjunctDiagnosis` +- `urn:fhir:binding:AdmitSource` +- `urn:fhir:binding:AdverseEventActuality` +- `urn:fhir:binding:AdverseEventCategory` +- `urn:fhir:binding:AdverseEventCausalityAssessment` +- `urn:fhir:binding:AdverseEventCausalityMethod` +- `urn:fhir:binding:AdverseEventOutcome` +- `urn:fhir:binding:AdverseEventSeriousness` +- `urn:fhir:binding:AdverseEventSeverity` +- `urn:fhir:binding:AdverseEventType` +- `urn:fhir:binding:AggregationMode` +- `urn:fhir:binding:AllergyIntoleranceCategory` +- `urn:fhir:binding:AllergyIntoleranceClinicalStatus` +- `urn:fhir:binding:AllergyIntoleranceCode` +- `urn:fhir:binding:AllergyIntoleranceCriticality` +- `urn:fhir:binding:AllergyIntoleranceSeverity` +- `urn:fhir:binding:AllergyIntoleranceType` +- `urn:fhir:binding:AllergyIntoleranceVerificationStatus` +- `urn:fhir:binding:AppointmentStatus` +- `urn:fhir:binding:ApptReason` +- `urn:fhir:binding:Arrangements` +- `urn:fhir:binding:AssertionDirectionType` +- `urn:fhir:binding:AssertionOperatorType` +- `urn:fhir:binding:AssertionResponseTypes` +- `urn:fhir:binding:AssetAvailabilityType` +- `urn:fhir:binding:AuditAgentRole` +- `urn:fhir:binding:AuditAgentType` +- `urn:fhir:binding:AuditEventAction` +- `urn:fhir:binding:AuditEventAgentNetworkType` +- `urn:fhir:binding:AuditEventEntityLifecycle` +- `urn:fhir:binding:AuditEventEntityRole` +- `urn:fhir:binding:AuditEventEntityType` +- `urn:fhir:binding:AuditEventOutcome` +- `urn:fhir:binding:AuditEventSourceType` +- `urn:fhir:binding:AuditEventSubType` +- `urn:fhir:binding:AuditEventType` +- `urn:fhir:binding:AuditPurposeOfUse` +- `urn:fhir:binding:AuthSupporting` +- `urn:fhir:binding:BasicResourceType` +- `urn:fhir:binding:BenefitCategory` +- `urn:fhir:binding:BenefitCostApplicability` +- `urn:fhir:binding:BenefitNetwork` +- `urn:fhir:binding:BenefitTerm` +- `urn:fhir:binding:BenefitType` +- `urn:fhir:binding:BenefitUnit` +- `urn:fhir:binding:BindingStrength` +- `urn:fhir:binding:BiologicallyDerivedProductCategory` +- `urn:fhir:binding:BiologicallyDerivedProductProcedure` +- `urn:fhir:binding:BiologicallyDerivedProductStatus` +- `urn:fhir:binding:BiologicallyDerivedProductStorageScale` +- `urn:fhir:binding:BodyLengthUnits` +- `urn:fhir:binding:BodyStructureCode` +- `urn:fhir:binding:BodyStructureQualifier` +- `urn:fhir:binding:BodyTempUnits` +- `urn:fhir:binding:BodyWeightUnits` +- `urn:fhir:binding:CapabilityStatementKind` +- `urn:fhir:binding:CarePlanActivityKind` +- `urn:fhir:binding:CarePlanActivityOutcome` +- `urn:fhir:binding:CarePlanActivityReason` +- `urn:fhir:binding:CarePlanActivityStatus` +- `urn:fhir:binding:CarePlanActivityType` +- `urn:fhir:binding:CarePlanCategory` +- `urn:fhir:binding:CarePlanIntent` +- `urn:fhir:binding:CarePlanStatus` +- `urn:fhir:binding:CareTeamCategory` +- `urn:fhir:binding:CareTeamParticipantRole` +- `urn:fhir:binding:CareTeamReason` +- `urn:fhir:binding:CareTeamRole` +- `urn:fhir:binding:CareTeamStatus` +- `urn:fhir:binding:CatalogEntryRelationType` +- `urn:fhir:binding:CatalogType` +- `urn:fhir:binding:CertaintySubcomponentRating` +- `urn:fhir:binding:CertaintySubcomponentType` +- `urn:fhir:binding:ChargeItemCode` +- `urn:fhir:binding:ChargeItemDefinitionCode` +- `urn:fhir:binding:ChargeItemDefinitionPriceComponentType` +- `urn:fhir:binding:ChargeItemPerformerFunction` +- `urn:fhir:binding:ChargeItemReason` +- `urn:fhir:binding:ChargeItemStatus` +- `urn:fhir:binding:ClaimResponseStatus` +- `urn:fhir:binding:ClaimStatus` +- `urn:fhir:binding:ClaimSubType` +- `urn:fhir:binding:ClaimType` +- `urn:fhir:binding:ClinicalImpressionPrognosis` +- `urn:fhir:binding:ClinicalImpressionStatus` +- `urn:fhir:binding:CodeSearchSupport` +- `urn:fhir:binding:CodeSystemContentMode` +- `urn:fhir:binding:CodeSystemHierarchyMeaning` +- `urn:fhir:binding:CollectedSpecimenType` +- `urn:fhir:binding:CommunicationCategory` +- `urn:fhir:binding:CommunicationMedium` +- `urn:fhir:binding:CommunicationNotDoneReason` +- `urn:fhir:binding:CommunicationPriority` +- `urn:fhir:binding:CommunicationReason` +- `urn:fhir:binding:CommunicationRequestStatus` +- `urn:fhir:binding:CommunicationStatus` +- `urn:fhir:binding:CommunicationTopic` +- `urn:fhir:binding:CompartmentCode` +- `urn:fhir:binding:CompartmentType` +- `urn:fhir:binding:CompositeMeasureScoring` +- `urn:fhir:binding:CompositionAttestationMode` +- `urn:fhir:binding:CompositionSectionType` +- `urn:fhir:binding:CompositionStatus` +- `urn:fhir:binding:ConceptDesignationUse` +- `urn:fhir:binding:ConceptMapEquivalence` +- `urn:fhir:binding:ConceptMapGroupUnmappedMode` +- `urn:fhir:binding:ConditionCategory` +- `urn:fhir:binding:ConditionClinicalStatus` +- `urn:fhir:binding:ConditionCode` +- `urn:fhir:binding:ConditionKind` +- `urn:fhir:binding:ConditionOutcome` +- `urn:fhir:binding:ConditionSeverity` +- `urn:fhir:binding:ConditionStage` +- `urn:fhir:binding:ConditionStageType` +- `urn:fhir:binding:ConditionVerificationStatus` +- `urn:fhir:binding:ConditionalDeleteStatus` +- `urn:fhir:binding:ConditionalReadStatus` +- `urn:fhir:binding:ConsentAction` +- `urn:fhir:binding:ConsentActorRole` +- `urn:fhir:binding:ConsentCategory` +- `urn:fhir:binding:ConsentContentClass` +- `urn:fhir:binding:ConsentContentCode` +- `urn:fhir:binding:ConsentDataMeaning` +- `urn:fhir:binding:ConsentPolicyRule` +- `urn:fhir:binding:ConsentProvisionType` +- `urn:fhir:binding:ConsentScope` +- `urn:fhir:binding:ConsentState` +- `urn:fhir:binding:ConstraintSeverity` +- `urn:fhir:binding:ContactPartyType` +- `urn:fhir:binding:ContainerCap` +- `urn:fhir:binding:ContainerMaterial` +- `urn:fhir:binding:ContainerType` +- `urn:fhir:binding:ContractAction` +- `urn:fhir:binding:ContractActionPerformerRole` +- `urn:fhir:binding:ContractActionPerformerType` +- `urn:fhir:binding:ContractActionReason` +- `urn:fhir:binding:ContractActionStatus` +- `urn:fhir:binding:ContractActorRole` +- `urn:fhir:binding:ContractAssetContext` +- `urn:fhir:binding:ContractAssetScope` +- `urn:fhir:binding:ContractAssetSubtype` +- `urn:fhir:binding:ContractAssetType` +- `urn:fhir:binding:ContractContentDerivative` +- `urn:fhir:binding:ContractDecisionMode` +- `urn:fhir:binding:ContractDecisionType` +- `urn:fhir:binding:ContractDefinitionSubtype` +- `urn:fhir:binding:ContractDefinitionType` +- `urn:fhir:binding:ContractExpiration` +- `urn:fhir:binding:ContractLegalState` +- `urn:fhir:binding:ContractPartyRole` +- `urn:fhir:binding:ContractPublicationStatus` +- `urn:fhir:binding:ContractScope` +- `urn:fhir:binding:ContractSecurityCategory` +- `urn:fhir:binding:ContractSecurityClassification` +- `urn:fhir:binding:ContractSecurityControl` +- `urn:fhir:binding:ContractSignerType` +- `urn:fhir:binding:ContractStatus` +- `urn:fhir:binding:ContractSubtype` +- `urn:fhir:binding:ContractTermSubType` +- `urn:fhir:binding:ContractTermType` +- `urn:fhir:binding:ContractType` +- `urn:fhir:binding:ContributorType` +- `urn:fhir:binding:CopayTypes` +- `urn:fhir:binding:Courtesies` +- `urn:fhir:binding:CoverageClass` +- `urn:fhir:binding:CoverageFinancialException` +- `urn:fhir:binding:CoverageStatus` +- `urn:fhir:binding:CoverageType` +- `urn:fhir:binding:CurrencyCode` +- `urn:fhir:binding:DICOMMediaType` +- `urn:fhir:binding:DaysOfWeek` +- `urn:fhir:binding:DefinitionTopic` +- `urn:fhir:binding:DetectedIssueCategory` +- `urn:fhir:binding:DetectedIssueEvidenceCode` +- `urn:fhir:binding:DetectedIssueMitigationAction` +- `urn:fhir:binding:DetectedIssueSeverity` +- `urn:fhir:binding:DetectedIssueStatus` +- `urn:fhir:binding:DeviceActionKind` +- `urn:fhir:binding:DeviceKind` +- `urn:fhir:binding:DeviceMetricCalibrationState` +- `urn:fhir:binding:DeviceMetricCalibrationType` +- `urn:fhir:binding:DeviceMetricCategory` +- `urn:fhir:binding:DeviceMetricColor` +- `urn:fhir:binding:DeviceMetricOperationalStatus` +- `urn:fhir:binding:DeviceNameType` +- `urn:fhir:binding:DeviceRequestParticipantRole` +- `urn:fhir:binding:DeviceRequestReason` +- `urn:fhir:binding:DeviceRequestStatus` +- `urn:fhir:binding:DeviceType` +- `urn:fhir:binding:DeviceUseStatementStatus` +- `urn:fhir:binding:DiagnosisOnAdmission` +- `urn:fhir:binding:DiagnosisRelatedGroup` +- `urn:fhir:binding:DiagnosisRole` +- `urn:fhir:binding:DiagnosisType` +- `urn:fhir:binding:DiagnosticReportCodes` +- `urn:fhir:binding:DiagnosticReportStatus` +- `urn:fhir:binding:DiagnosticServiceSection` +- `urn:fhir:binding:DischargeDisp` +- `urn:fhir:binding:DiscriminatorType` +- `urn:fhir:binding:DocumentC80Class` +- `urn:fhir:binding:DocumentC80FacilityType` +- `urn:fhir:binding:DocumentC80PracticeSetting` +- `urn:fhir:binding:DocumentC80Type` +- `urn:fhir:binding:DocumentCategory` +- `urn:fhir:binding:DocumentConfidentiality` +- `urn:fhir:binding:DocumentEventType` +- `urn:fhir:binding:DocumentFormat` +- `urn:fhir:binding:DocumentMode` +- `urn:fhir:binding:DocumentReferenceStatus` +- `urn:fhir:binding:DocumentRelationshipType` +- `urn:fhir:binding:DocumentType` +- `urn:fhir:binding:DoseAndRateType` +- `urn:fhir:binding:EffectEstimateType` +- `urn:fhir:binding:ElementDefinitionCode` +- `urn:fhir:binding:EligibilityRequestPurpose` +- `urn:fhir:binding:EligibilityRequestStatus` +- `urn:fhir:binding:EligibilityResponsePurpose` +- `urn:fhir:binding:EligibilityResponseStatus` +- `urn:fhir:binding:EnableWhenBehavior` +- `urn:fhir:binding:EncounterClass` +- `urn:fhir:binding:EncounterLocationStatus` +- `urn:fhir:binding:EncounterReason` +- `urn:fhir:binding:EncounterServiceType` +- `urn:fhir:binding:EncounterStatus` +- `urn:fhir:binding:EncounterType` +- `urn:fhir:binding:EndpointStatus` +- `urn:fhir:binding:EnrollmentRequestStatus` +- `urn:fhir:binding:EnrollmentResponseStatus` +- `urn:fhir:binding:EnteralFormulaAdditiveType` +- `urn:fhir:binding:EnteralFormulaType` +- `urn:fhir:binding:EnteralRouteOfAdministration` +- `urn:fhir:binding:EpisodeOfCareStatus` +- `urn:fhir:binding:EpisodeOfCareType` +- `urn:fhir:binding:EvaluationDoseStatus` +- `urn:fhir:binding:EvaluationDoseStatusReason` +- `urn:fhir:binding:EvaluationTargetDisease` +- `urn:fhir:binding:EventCapabilityMode` +- `urn:fhir:binding:EventPerformerFunction` +- `urn:fhir:binding:EventReason` +- `urn:fhir:binding:EvidenceVariableType` +- `urn:fhir:binding:EvidenceVariantState` +- `urn:fhir:binding:ExampleScenarioActorType` +- `urn:fhir:binding:ExplanationOfBenefitStatus` +- `urn:fhir:binding:ExposureState` +- `urn:fhir:binding:ExpressionLanguage` +- `urn:fhir:binding:ExtensionContextType` +- `urn:fhir:binding:FHIRAllTypes` +- `urn:fhir:binding:FHIRDefinedType` +- `urn:fhir:binding:FHIRDefinedTypeExt` +- `urn:fhir:binding:FHIRDeviceStatus` +- `urn:fhir:binding:FHIRDeviceStatusReason` +- `urn:fhir:binding:FHIRResourceType` +- `urn:fhir:binding:FHIRSubstanceStatus` +- `urn:fhir:binding:FHIRVersion` +- `urn:fhir:binding:FamilialRelationship` +- `urn:fhir:binding:FamilyHistoryAbsentReason` +- `urn:fhir:binding:FamilyHistoryReason` +- `urn:fhir:binding:FamilyHistoryStatus` +- `urn:fhir:binding:FilterOperator` +- `urn:fhir:binding:FlagCategory` +- `urn:fhir:binding:FlagCode` +- `urn:fhir:binding:FlagStatus` +- `urn:fhir:binding:FluidConsistencyType` +- `urn:fhir:binding:FoodType` +- `urn:fhir:binding:Forms` +- `urn:fhir:binding:FundingSource` +- `urn:fhir:binding:FundsReserve` +- `urn:fhir:binding:GoalAchievementStatus` +- `urn:fhir:binding:GoalAddresses` +- `urn:fhir:binding:GoalCategory` +- `urn:fhir:binding:GoalDescription` +- `urn:fhir:binding:GoalLifecycleStatus` +- `urn:fhir:binding:GoalOutcome` +- `urn:fhir:binding:GoalPriority` +- `urn:fhir:binding:GoalStartEvent` +- `urn:fhir:binding:GoalTargetMeasure` +- `urn:fhir:binding:GraphCompartmentRule` +- `urn:fhir:binding:GraphCompartmentUse` +- `urn:fhir:binding:GroupMeasure` +- `urn:fhir:binding:GroupType` +- `urn:fhir:binding:GuidanceResponseStatus` +- `urn:fhir:binding:GuidePageGeneration` +- `urn:fhir:binding:GuideParameterCode` +- `urn:fhir:binding:HandlingConditionSet` +- `urn:fhir:binding:IdentityAssuranceLevel` +- `urn:fhir:binding:ImagingModality` +- `urn:fhir:binding:ImagingProcedureCode` +- `urn:fhir:binding:ImagingReason` +- `urn:fhir:binding:ImagingStudyStatus` +- `urn:fhir:binding:ImmunizationEvaluationStatus` +- `urn:fhir:binding:ImmunizationFunction` +- `urn:fhir:binding:ImmunizationReason` +- `urn:fhir:binding:ImmunizationRecommendationDateCriterion` +- `urn:fhir:binding:ImmunizationRecommendationReason` +- `urn:fhir:binding:ImmunizationRecommendationStatus` +- `urn:fhir:binding:ImmunizationReportOrigin` +- `urn:fhir:binding:ImmunizationRoute` +- `urn:fhir:binding:ImmunizationSite` +- `urn:fhir:binding:ImmunizationStatus` +- `urn:fhir:binding:ImmunizationStatusReason` +- `urn:fhir:binding:InformationCategory` +- `urn:fhir:binding:InformationCode` +- `urn:fhir:binding:InsurancePlanType` +- `urn:fhir:binding:IntendedSpecimenType` +- `urn:fhir:binding:InvestigationGroupType` +- `urn:fhir:binding:InvoicePriceComponentType` +- `urn:fhir:binding:InvoiceStatus` +- `urn:fhir:binding:Jurisdiction` +- `urn:fhir:binding:LDLCodes` +- `urn:fhir:binding:LOINC LL379-9 answerlist` +- `urn:fhir:binding:Laterality` +- `urn:fhir:binding:LibraryType` +- `urn:fhir:binding:LinkageType` +- `urn:fhir:binding:ListEmptyReason` +- `urn:fhir:binding:ListItemFlag` +- `urn:fhir:binding:ListMode` +- `urn:fhir:binding:ListOrder` +- `urn:fhir:binding:ListPurpose` +- `urn:fhir:binding:ListStatus` +- `urn:fhir:binding:LocationMode` +- `urn:fhir:binding:LocationStatus` +- `urn:fhir:binding:LocationType` +- `urn:fhir:binding:Manifestation` +- `urn:fhir:binding:ManifestationOrSymptom` +- `urn:fhir:binding:MeasureDataUsage` +- `urn:fhir:binding:MeasureImprovementNotation` +- `urn:fhir:binding:MeasurePopulation` +- `urn:fhir:binding:MeasurePopulationType` +- `urn:fhir:binding:MeasureReportStatus` +- `urn:fhir:binding:MeasureReportType` +- `urn:fhir:binding:MeasureScoring` +- `urn:fhir:binding:MeasureType` +- `urn:fhir:binding:MediaModality` +- `urn:fhir:binding:MediaReason` +- `urn:fhir:binding:MediaStatus` +- `urn:fhir:binding:MediaType` +- `urn:fhir:binding:MediaView` +- `urn:fhir:binding:MedicationAdministrationCategory` +- `urn:fhir:binding:MedicationAdministrationMethod` +- `urn:fhir:binding:MedicationAdministrationNegationReason` +- `urn:fhir:binding:MedicationAdministrationPerformerFunction` +- `urn:fhir:binding:MedicationAdministrationReason` +- `urn:fhir:binding:MedicationAdministrationSite` +- `urn:fhir:binding:MedicationAdministrationStatus` +- `urn:fhir:binding:MedicationCharacteristic` +- `urn:fhir:binding:MedicationDispenseCategory` +- `urn:fhir:binding:MedicationDispensePerformerFunction` +- `urn:fhir:binding:MedicationDispenseStatus` +- `urn:fhir:binding:MedicationDispenseType` +- `urn:fhir:binding:MedicationForm` +- `urn:fhir:binding:MedicationFormalRepresentation` +- `urn:fhir:binding:MedicationIntendedSubstitutionReason` +- `urn:fhir:binding:MedicationIntendedSubstitutionType` +- `urn:fhir:binding:MedicationKnowledgeStatus` +- `urn:fhir:binding:MedicationPackageType` +- `urn:fhir:binding:MedicationReason` +- `urn:fhir:binding:MedicationRequestCategory` +- `urn:fhir:binding:MedicationRequestCourseOfTherapy` +- `urn:fhir:binding:MedicationRequestIntent` +- `urn:fhir:binding:MedicationRequestPerformerType` +- `urn:fhir:binding:MedicationRequestPriority` +- `urn:fhir:binding:MedicationRequestReason` +- `urn:fhir:binding:MedicationRequestStatus` +- `urn:fhir:binding:MedicationRequestStatusReason` +- `urn:fhir:binding:MedicationRoute` +- `urn:fhir:binding:MedicationStatementCategory` +- `urn:fhir:binding:MedicationStatementStatus` +- `urn:fhir:binding:MedicationStatementStatusReason` +- `urn:fhir:binding:MedicationStatus` +- `urn:fhir:binding:MessageSignificanceCategory` +- `urn:fhir:binding:MessageTransport` +- `urn:fhir:binding:MetricType` +- `urn:fhir:binding:MetricUnit` +- `urn:fhir:binding:MissingReason` +- `urn:fhir:binding:Modifiers` +- `urn:fhir:binding:NamingSystemIdentifierType` +- `urn:fhir:binding:NamingSystemType` +- `urn:fhir:binding:NoteType` +- `urn:fhir:binding:NutrientModifier` +- `urn:fhir:binding:NutritiionOrderIntent` +- `urn:fhir:binding:NutritionOrderStatus` +- `urn:fhir:binding:ObservationDataType` +- `urn:fhir:binding:ObservationRangeAppliesTo` +- `urn:fhir:binding:ObservationRangeCategory` +- `urn:fhir:binding:ObservationUnit` +- `urn:fhir:binding:OperationKind` +- `urn:fhir:binding:OperationParameterUse` +- `urn:fhir:binding:OperationalStatus` +- `urn:fhir:binding:OralDiet` +- `urn:fhir:binding:OralSites` +- `urn:fhir:binding:OrderDetail` +- `urn:fhir:binding:OrganizationAffiliation` +- `urn:fhir:binding:OrganizationSpecialty` +- `urn:fhir:binding:OrganizationType` +- `urn:fhir:binding:ParameterUse` +- `urn:fhir:binding:ParticipantRequired` +- `urn:fhir:binding:ParticipantStatus` +- `urn:fhir:binding:ParticipantType` +- `urn:fhir:binding:ParticipationStatus` +- `urn:fhir:binding:PatientDiet` +- `urn:fhir:binding:PatientRelationshipType` +- `urn:fhir:binding:PayeeType` +- `urn:fhir:binding:PayloadType` +- `urn:fhir:binding:PaymentAdjustmentReason` +- `urn:fhir:binding:PaymentNoticeStatus` +- `urn:fhir:binding:PaymentReconciliationStatus` +- `urn:fhir:binding:PaymentStatus` +- `urn:fhir:binding:PaymentType` +- `urn:fhir:binding:PhysicalType` +- `urn:fhir:binding:PlanDefinitionType` +- `urn:fhir:binding:PractitionerRole` +- `urn:fhir:binding:PractitionerSpecialty` +- `urn:fhir:binding:PrecisionEstimateType` +- `urn:fhir:binding:PreparePatient` +- `urn:fhir:binding:Priority` +- `urn:fhir:binding:ProcedureCategory` +- `urn:fhir:binding:ProcedureCode` +- `urn:fhir:binding:ProcedureComplication` +- `urn:fhir:binding:ProcedureFollowUp` +- `urn:fhir:binding:ProcedureNegationReason` +- `urn:fhir:binding:ProcedureOutcome` +- `urn:fhir:binding:ProcedurePerformerRole` +- `urn:fhir:binding:ProcedureReason` +- `urn:fhir:binding:ProcedureStatus` +- `urn:fhir:binding:ProcedureType` +- `urn:fhir:binding:ProcedureUsed` +- `urn:fhir:binding:ProcessPriority` +- `urn:fhir:binding:Program` +- `urn:fhir:binding:ProgramCode` +- `urn:fhir:binding:ProgramEligibility` +- `urn:fhir:binding:PropertyRepresentation` +- `urn:fhir:binding:PropertyType` +- `urn:fhir:binding:ProvenanceActivity` +- `urn:fhir:binding:ProvenanceAgentRole` +- `urn:fhir:binding:ProvenanceAgentType` +- `urn:fhir:binding:ProvenanceEntityRole` +- `urn:fhir:binding:ProvenanceHistoryAgentType` +- `urn:fhir:binding:ProvenanceHistoryRecordActivity` +- `urn:fhir:binding:ProvenanceReason` +- `urn:fhir:binding:ProviderQualification` +- `urn:fhir:binding:PublicationStatus` +- `urn:fhir:binding:PurposeOfUse` +- `urn:fhir:binding:Qualification` +- `urn:fhir:binding:QualityOfEvidenceRating` +- `urn:fhir:binding:QuestionnaireConcept` +- `urn:fhir:binding:QuestionnaireItemOperator` +- `urn:fhir:binding:QuestionnaireItemType` +- `urn:fhir:binding:QuestionnaireResponseStatus` +- `urn:fhir:binding:ReAdmissionType` +- `urn:fhir:binding:ReferenceHandlingPolicy` +- `urn:fhir:binding:ReferenceVersionRules` +- `urn:fhir:binding:ReferralMethod` +- `urn:fhir:binding:ReferredDocumentStatus` +- `urn:fhir:binding:RejectionCriterion` +- `urn:fhir:binding:RelatedArtifactType` +- `urn:fhir:binding:RelatedClaimRelationship` +- `urn:fhir:binding:Relationship` +- `urn:fhir:binding:RemittanceOutcome` +- `urn:fhir:binding:RequestIntent` +- `urn:fhir:binding:RequestPriority` +- `urn:fhir:binding:RequestStatus` +- `urn:fhir:binding:ResearchElementType` +- `urn:fhir:binding:ResearchStudyObjectiveType` +- `urn:fhir:binding:ResearchStudyPhase` +- `urn:fhir:binding:ResearchStudyPrimaryPurposeType` +- `urn:fhir:binding:ResearchStudyReasonStopped` +- `urn:fhir:binding:ResearchStudyStatus` +- `urn:fhir:binding:ResearchSubjectStatus` +- `urn:fhir:binding:ResourceType` +- `urn:fhir:binding:ResourceVersionPolicy` +- `urn:fhir:binding:ResponseType` +- `urn:fhir:binding:RestfulCapabilityMode` +- `urn:fhir:binding:RestfulSecurityService` +- `urn:fhir:binding:RevenueCenter` +- `urn:fhir:binding:RiskAssessmentProbability` +- `urn:fhir:binding:RiskAssessmentStatus` +- `urn:fhir:binding:RiskEstimateType` +- `urn:fhir:binding:RouteOfAdministration` +- `urn:fhir:binding:SPDXLicense` +- `urn:fhir:binding:Safety` +- `urn:fhir:binding:SearchComparator` +- `urn:fhir:binding:SearchModifierCode` +- `urn:fhir:binding:SearchParamType` +- `urn:fhir:binding:SectionEmptyReason` +- `urn:fhir:binding:SectionEntryOrder` +- `urn:fhir:binding:SectionMode` +- `urn:fhir:binding:ServiceProduct` +- `urn:fhir:binding:ServiceProvisionConditions` +- `urn:fhir:binding:ServiceRequestCategory` +- `urn:fhir:binding:ServiceRequestCode` +- `urn:fhir:binding:ServiceRequestIntent` +- `urn:fhir:binding:ServiceRequestLocation` +- `urn:fhir:binding:ServiceRequestParticipantRole` +- `urn:fhir:binding:ServiceRequestPriority` +- `urn:fhir:binding:ServiceRequestReason` +- `urn:fhir:binding:ServiceRequestStatus` +- `urn:fhir:binding:Sex` +- `urn:fhir:binding:SlicingRules` +- `urn:fhir:binding:SlotStatus` +- `urn:fhir:binding:SortDirection` +- `urn:fhir:binding:SpecimenCollection` +- `urn:fhir:binding:SpecimenCollectionMethod` +- `urn:fhir:binding:SpecimenCondition` +- `urn:fhir:binding:SpecimenContainedPreference` +- `urn:fhir:binding:SpecimenContainerType` +- `urn:fhir:binding:SpecimenProcessingProcedure` +- `urn:fhir:binding:SpecimenStatus` +- `urn:fhir:binding:SpecimenType` +- `urn:fhir:binding:StructureDefinitionKeyword` +- `urn:fhir:binding:StructureDefinitionKind` +- `urn:fhir:binding:StructureMapContextType` +- `urn:fhir:binding:StructureMapGroupTypeMode` +- `urn:fhir:binding:StructureMapInputMode` +- `urn:fhir:binding:StructureMapModelMode` +- `urn:fhir:binding:StructureMapSourceListMode` +- `urn:fhir:binding:StructureMapTargetListMode` +- `urn:fhir:binding:StructureMapTransform` +- `urn:fhir:binding:StudyType` +- `urn:fhir:binding:SubpotentReason` +- `urn:fhir:binding:SubscriptionChannelType` +- `urn:fhir:binding:SubscriptionStatus` +- `urn:fhir:binding:SubstanceCategory` +- `urn:fhir:binding:SubstanceCode` +- `urn:fhir:binding:SupplementType` +- `urn:fhir:binding:SupplyDeliveryStatus` +- `urn:fhir:binding:SupplyDeliveryType` +- `urn:fhir:binding:SupplyRequestKind` +- `urn:fhir:binding:SupplyRequestReason` +- `urn:fhir:binding:SupplyRequestStatus` +- `urn:fhir:binding:Surface` +- `urn:fhir:binding:SynthesisType` +- `urn:fhir:binding:SystemRestfulInteraction` +- `urn:fhir:binding:TargetDisease` +- `urn:fhir:binding:TaskCode` +- `urn:fhir:binding:TaskIntent` +- `urn:fhir:binding:TaskPerformerType` +- `urn:fhir:binding:TaskPriority` +- `urn:fhir:binding:TaskStatus` +- `urn:fhir:binding:TestReportActionResult` +- `urn:fhir:binding:TestReportParticipantType` +- `urn:fhir:binding:TestReportResult` +- `urn:fhir:binding:TestReportStatus` +- `urn:fhir:binding:TestScriptOperationCode` +- `urn:fhir:binding:TestScriptProfileDestinationType` +- `urn:fhir:binding:TestScriptProfileOriginType` +- `urn:fhir:binding:TestScriptRequestMethodCode` +- `urn:fhir:binding:TextureModifiedFoodType` +- `urn:fhir:binding:TextureModifier` +- `urn:fhir:binding:TriggerType` +- `urn:fhir:binding:TypeDerivationRule` +- `urn:fhir:binding:TypeRestfulInteraction` +- `urn:fhir:binding:UCUMUnits` +- `urn:fhir:binding:UDIEntryType` +- `urn:fhir:binding:UsageContextType` +- `urn:fhir:binding:Use` +- `urn:fhir:binding:VaccineCode` +- `urn:fhir:binding:VariableType` +- `urn:fhir:binding:VisionBase` +- `urn:fhir:binding:VisionEyes` +- `urn:fhir:binding:VisionProduct` +- `urn:fhir:binding:VisionStatus` +- `urn:fhir:binding:XPathUsageType` +- `urn:fhir:binding:appointment-type` +- `urn:fhir:binding:can-push-updates` +- `urn:fhir:binding:cancelation-reason` +- `urn:fhir:binding:chromosome-human` +- `urn:fhir:binding:communication-method` +- `urn:fhir:binding:endpoint-contype` +- `urn:fhir:binding:failure-action` +- `urn:fhir:binding:messageheader-response-request` +- `urn:fhir:binding:need` +- `urn:fhir:binding:orientationType` +- `urn:fhir:binding:primary-source-type` +- `urn:fhir:binding:push-type-available` +- `urn:fhir:binding:qualityMethod` +- `urn:fhir:binding:qualityStandardSequence` +- `urn:fhir:binding:qualityType` +- `urn:fhir:binding:repositoryType` +- `urn:fhir:binding:sequenceReference` +- `urn:fhir:binding:sequenceType` +- `urn:fhir:binding:service-category` +- `urn:fhir:binding:service-specialty` +- `urn:fhir:binding:service-type` +- `urn:fhir:binding:sopClass` +- `urn:fhir:binding:specialty` +- `urn:fhir:binding:status` +- `urn:fhir:binding:strandType` +- `urn:fhir:binding:v3Act` +- `urn:fhir:binding:validation-process` +- `urn:fhir:binding:validation-status` +- `urn:fhir:binding:validation-type` diff --git a/examples/typescript-r4/fhir-types/hl7-fhir-r4-core/README.md b/examples/typescript-r4/fhir-types/hl7-fhir-r4-core/README.md deleted file mode 100644 index 3f5df4dd..00000000 --- a/examples/typescript-r4/fhir-types/hl7-fhir-r4-core/README.md +++ /dev/null @@ -1,1950 +0,0 @@ -# Package: hl7.fhir.r4.core - -## Canonical Fields Changes - -- - - Skipped fields: `modifierExtension` - -- - - Skipped fields: `extension`, `modifierExtension` - -- - - Skipped fields: `extension` - - -## Skipped Canonicals - -Skipped canonicals: - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- diff --git a/examples/typescript-r4/generate.ts b/examples/typescript-r4/generate.ts index 5351eb19..73f589af 100644 --- a/examples/typescript-r4/generate.ts +++ b/examples/typescript-r4/generate.ts @@ -14,6 +14,26 @@ if (require.main === module) { generateProfile: true, openResourceTypeSet: false, }) + .typeSchema({ + treeShake: { + "hl7.fhir.r4.core": { + "http://hl7.org/fhir/StructureDefinition/Bundle": {}, + "http://hl7.org/fhir/StructureDefinition/OperationOutcome": {}, + "http://hl7.org/fhir/StructureDefinition/DomainResource": { + ignoreFields: ["extension", "modifierExtension"], + }, + "http://hl7.org/fhir/StructureDefinition/BackboneElement": { + ignoreFields: ["modifierExtension"], + }, + "http://hl7.org/fhir/StructureDefinition/Element": { + ignoreFields: ["extension"], + }, + "http://hl7.org/fhir/StructureDefinition/Patient": {}, + "http://hl7.org/fhir/StructureDefinition/Observation": {}, + "http://hl7.org/fhir/StructureDefinition/bodyweight": {}, + }, + }, + }) .introspection({ typeSchemas: "type-schemas", typeTree: "type-tree.yaml", @@ -21,24 +41,6 @@ if (require.main === module) { structureDefinitions: "structure-definitions", }) .outputTo("./examples/typescript-r4/fhir-types") - .treeShake({ - "hl7.fhir.r4.core": { - "http://hl7.org/fhir/StructureDefinition/Bundle": {}, - "http://hl7.org/fhir/StructureDefinition/OperationOutcome": {}, - "http://hl7.org/fhir/StructureDefinition/DomainResource": { - ignoreFields: ["extension", "modifierExtension"], - }, - "http://hl7.org/fhir/StructureDefinition/BackboneElement": { - ignoreFields: ["modifierExtension"], - }, - "http://hl7.org/fhir/StructureDefinition/Element": { - ignoreFields: ["extension"], - }, - "http://hl7.org/fhir/StructureDefinition/Patient": {}, - "http://hl7.org/fhir/StructureDefinition/Observation": {}, - "http://hl7.org/fhir/StructureDefinition/bodyweight": {}, - }, - }) .cleanOutput(true); const report = await builder.generate(); diff --git a/examples/typescript-sql-on-fhir/README.md b/examples/typescript-sql-on-fhir/README.md index e75257c3..a5372582 100644 --- a/examples/typescript-sql-on-fhir/README.md +++ b/examples/typescript-sql-on-fhir/README.md @@ -43,9 +43,11 @@ Edit `generate.ts` to customize: The example uses tree shaking to include only ViewDefinition and it's dependencies: ```typescript -.treeShake({ - "org.sql-on-fhir.ig": { - "https://sql-on-fhir.org/ig/StructureDefinition/ViewDefinition": {}, +.typeSchema({ + treeShake: { + "org.sql-on-fhir.ig": { + "https://sql-on-fhir.org/ig/StructureDefinition/ViewDefinition": {}, + }, }, }) ``` diff --git a/examples/typescript-sql-on-fhir/generate.ts b/examples/typescript-sql-on-fhir/generate.ts index f57a8c7b..32b5a4bb 100644 --- a/examples/typescript-sql-on-fhir/generate.ts +++ b/examples/typescript-sql-on-fhir/generate.ts @@ -6,9 +6,11 @@ const builder = new APIBuilder() .fromPackageRef("https://build.fhir.org/ig/FHIR/sql-on-fhir-v2/package.tgz") .outputTo("./examples/typescript-sql-on-fhir/fhir-types") .introspection({ typeTree: "tree.yaml" }) - .treeShake({ - "org.sql-on-fhir.ig": { - "https://sql-on-fhir.org/ig/StructureDefinition/ViewDefinition": {}, + .typeSchema({ + treeShake: { + "org.sql-on-fhir.ig": { + "https://sql-on-fhir.org/ig/StructureDefinition/ViewDefinition": {}, + }, }, }) .cleanOutput(true); diff --git a/examples/typescript-us-core/generate.ts b/examples/typescript-us-core/generate.ts index f4b5169f..3ff5ea42 100644 --- a/examples/typescript-us-core/generate.ts +++ b/examples/typescript-us-core/generate.ts @@ -15,7 +15,7 @@ if (require.main === module) { openResourceTypeSet: false, }) .outputTo("./examples/typescript-us-core/fhir-types") - .writeTypeTree("./examples/typescript-us-core/type-tree.yaml") + .introspection({ typeTree: "./examples/typescript-us-core/type-tree.yaml" }) .cleanOutput(true); const report = await builder.generate(); diff --git a/src/api/builder.ts b/src/api/builder.ts index b8bb509f..73e4d2cf 100644 --- a/src/api/builder.ts +++ b/src/api/builder.ts @@ -5,6 +5,7 @@ * This builder pattern allows users to configure generation in a declarative way. */ +import assert from "node:assert"; import * as fs from "node:fs"; import * as Path from "node:path"; import { CanonicalManager, type LocalPackageConfig, type TgzPackageConfig } from "@atomic-ehr/fhir-canonical-manager"; @@ -13,7 +14,7 @@ import { Python, type PythonGeneratorOptions } from "@root/api/writer-generator/ import { generateTypeSchemas } from "@root/typeschema"; import { promoteLogical } from "@root/typeschema/ir/logic-promotion"; import { treeShake } from "@root/typeschema/ir/tree-shake"; -import type { LogicalPromotion, TreeShake } from "@root/typeschema/ir/types"; +import type { IrConf, LogicalPromotionConf, TreeShakeConf } from "@root/typeschema/ir/types"; import { registerFromManager } from "@root/typeschema/register"; import { type PackageMeta, packageMetaToNpm, type TypeSchema } from "@root/typeschema/types"; import { mkTypeSchemaIndex, type TypeSchemaIndex } from "@root/typeschema/utils"; @@ -25,6 +26,7 @@ import { parseLogLevel, } from "@root/utils/codegen-logger"; import { IntrospectionWriter, type IntrospectionWriterOptions } from "./writer-generator/introspection"; +import { IrReportWriterWriter, type IrReportWriterWriterOptions } from "./writer-generator/ir-report"; import type { FileBasedMustacheGeneratorOptions } from "./writer-generator/mustache"; import * as Mustache from "./writer-generator/mustache"; import { TypeScript, type TypeScriptOptions } from "./writer-generator/typescript"; @@ -37,8 +39,8 @@ export interface APIBuilderOptions { outputDir: string; cleanOutput: boolean; throwException: boolean; - treeShake: TreeShake | undefined; - logicalPromotion: LogicalPromotion | undefined; + treeShake: TreeShakeConf | undefined; + promoteLogical: LogicalPromotionConf | undefined; /** Log level for the logger. Default: INFO */ logLevel: LogLevel; @@ -140,7 +142,7 @@ export class APIBuilder { cleanOutput: true, throwException: false, treeShake: undefined, - logicalPromotion: undefined, + promoteLogical: undefined, registry: undefined, logLevel: parseLogLevel("INFO"), }; @@ -348,28 +350,34 @@ export class APIBuilder { return this; } - /** - * @deprecated Use `.introspection({ typeTree: "path/to/file" })` instead - */ - writeTypeTree(filename: string) { - return this.introspection({ typeTree: filename }); - } - - treeShake(tree: TreeShake) { - this.options.treeShake = tree; + typeSchema(cfg: IrConf) { + if (cfg.treeShake) { + assert(this.options.treeShake === undefined, "treeShake option is already set"); + this.options.treeShake = cfg.treeShake; + } + if (cfg.promoteLogical) { + assert(this.options.promoteLogical === undefined, "promoteLogical option is already set"); + this.options.promoteLogical = cfg.promoteLogical; + } + this.irReport({}); return this; } - promoteLogicToResource(promotion: LogicalPromotion) { - this.options.logicalPromotion = promotion; - return this; - } + irReport(userOpts: Partial) { + const defaultWriterOpts: FileSystemWriterOptions = { + logger: this.logger, + outputDir: this.options.outputDir, + inMemoryOnly: false, + }; + const opts: IrReportWriterWriterOptions = { + ...defaultWriterOpts, + rootReadmeFileName: "README.md", + ...Object.fromEntries(Object.entries(userOpts ?? {}).filter(([_, v]) => v !== undefined)), + }; - /** - * @deprecated Use introspection({ typeSchemas: "path/to/file" }) method directly instead - */ - writeTypeSchemas(target: string) { - this.introspection({ typeSchemas: target }); + const writer = new IrReportWriterWriter(opts); + this.generators.push({ name: "ir-report", writer }); + this.logger.debug(`Configured ir-report generator (${JSON.stringify(opts, undefined, 2)})`); return this; } @@ -417,7 +425,7 @@ export class APIBuilder { }; let tsIndex = mkTypeSchemaIndex(typeSchemas, tsIndexOpts); if (this.options.treeShake) tsIndex = treeShake(tsIndex, this.options.treeShake); - if (this.options.logicalPromotion) tsIndex = promoteLogical(tsIndex, this.options.logicalPromotion); + if (this.options.promoteLogical) tsIndex = promoteLogical(tsIndex, this.options.promoteLogical); this.logger.debug(`Executing ${this.generators.length} generators`); diff --git a/src/api/writer-generator/ir-report.ts b/src/api/writer-generator/ir-report.ts new file mode 100644 index 00000000..cd43a6fd --- /dev/null +++ b/src/api/writer-generator/ir-report.ts @@ -0,0 +1,19 @@ +import { generateIrReportReadme } from "@root/typeschema/ir/report"; +import type { TypeSchemaIndex } from "@root/typeschema/utils"; +import { FileSystemWriter, type FileSystemWriterOptions } from "./writer"; + +export interface IrReportWriterWriterOptions extends FileSystemWriterOptions { + rootReadmeFileName: string; +} + +export class IrReportWriterWriter extends FileSystemWriter { + async generate(tsIndex: TypeSchemaIndex): Promise { + const report = tsIndex.irReport(); + const md = generateIrReportReadme(report); + this.cd("/", () => { + this.cat(this.opts.rootReadmeFileName, () => { + this.write(md); + }); + }); + } +} diff --git a/src/api/writer-generator/typescript.ts b/src/api/writer-generator/typescript.ts index e2373ebd..787f854b 100644 --- a/src/api/writer-generator/typescript.ts +++ b/src/api/writer-generator/typescript.ts @@ -7,7 +7,6 @@ import { uppercaseFirstLetterOfEach, } from "@root/api/writer-generator/utils"; import { Writer, type WriterOptions } from "@root/api/writer-generator/writer"; -import { packageTreeShakeReadme, rootTreeShakeReadme } from "@root/typeschema/ir/tree-shake"; import { type CanonicalUrl, extractNameFromCanonical, @@ -1496,16 +1495,10 @@ export class TypeScript extends Writer { : []), ]; const grouped = groupByPackages(typesToGenerate); - const irReport = tsIndex.irReport(); const hasProfiles = this.opts.generateProfile && typesToGenerate.some(isProfileTypeSchema); this.cd("/", () => { - if (irReport?.treeShake) { - this.cat("README.md", () => { - this.write(rootTreeShakeReadme(irReport)); - }); - } if (hasProfiles) { this.generateProfileHelpersModule(); } @@ -1518,11 +1511,6 @@ export class TypeScript extends Writer { } this.generateProfileIndexFile(packageSchemas.filter(isProfileTypeSchema)); this.generateFhirPackageIndexFile(packageSchemas); - if (irReport?.treeShake) { - this.cat("README.md", () => { - this.write(packageTreeShakeReadme(irReport, packageName)); - }); - } }); } }); diff --git a/src/api/writer-generator/writer.ts b/src/api/writer-generator/writer.ts index 80f21583..fa5421c2 100644 --- a/src/api/writer-generator/writer.ts +++ b/src/api/writer-generator/writer.ts @@ -75,6 +75,7 @@ export abstract class FileSystemWriter void) { + if (!this.currentDir) throw new Error("Should be in a directory (`cd`)"); if (this.currentFile) throw new Error("Can't open file when another file is open"); if (fn.includes("/")) throw new Error(`Change file path separatly: ${fn}`); diff --git a/src/typeschema/ir/logic-promotion.ts b/src/typeschema/ir/logic-promotion.ts index a80e4380..29e913e3 100644 --- a/src/typeschema/ir/logic-promotion.ts +++ b/src/typeschema/ir/logic-promotion.ts @@ -11,9 +11,9 @@ import { type PkgName, } from "@root/typeschema/types"; import type { TypeSchemaIndex } from "@root/typeschema/utils"; -import type { LogicalPromotion } from "./types"; +import type { LogicalPromotionConf } from "./types"; -export const promoteLogical = (tsIndex: TypeSchemaIndex, promotes: LogicalPromotion): TypeSchemaIndex => { +export const promoteLogical = (tsIndex: TypeSchemaIndex, promotes: LogicalPromotionConf): TypeSchemaIndex => { const promoteSets: Record> = Object.fromEntries( Object.entries(promotes).map(([pkg, urls]) => [pkg, new Set(urls)]), ); @@ -59,5 +59,12 @@ export const promoteLogical = (tsIndex: TypeSchemaIndex, promotes: LogicalPromot } return cloned; }); - return tsIndex.replaceSchemas(schemas); + + const promotedIndex = tsIndex.replaceSchemas(schemas); + promotedIndex.irReport().logicalPromotion = { + packages: Object.fromEntries( + Object.entries(promotes).map(([pkgName, urls]) => [pkgName, { promotedCanonicals: [...urls].sort() }]), + ), + }; + return promotedIndex; }; diff --git a/src/typeschema/ir/report.ts b/src/typeschema/ir/report.ts new file mode 100644 index 00000000..95546861 --- /dev/null +++ b/src/typeschema/ir/report.ts @@ -0,0 +1,67 @@ +import type { PkgName } from "@root/typeschema/types"; +import type { IrReport } from "./types"; + +export const generateIrReportReadme = (report: IrReport): string => { + const lines: string[] = ["# IR Report", ""]; + + const allPackages = new Set([ + ...Object.keys(report.treeShake?.packages ?? {}), + ...Object.keys(report.logicalPromotion?.packages ?? {}), + ]); + + if (allPackages.size === 0) { + lines.push("No IR modifications applied."); + return lines.join("\n"); + } + + if (report.treeShake?.skippedPackages.length) { + lines.push("## Skipped Packages", ""); + for (const pkg of report.treeShake.skippedPackages) { + lines.push(`- ${pkg}`); + } + lines.push(""); + } + + for (const pkgName of [...allPackages].sort()) { + lines.push(`## Package: \`${pkgName}\``, ""); + + const treeShakePkg = report.treeShake?.packages[pkgName]; + const logicalPromotionPkg = report.logicalPromotion?.packages[pkgName]; + + if (logicalPromotionPkg?.promotedCanonicals.length) { + lines.push("### Promoted Logical Models", ""); + for (const canonical of logicalPromotionPkg.promotedCanonicals) { + lines.push(`- \`${canonical}\``); + } + lines.push(""); + } + + if (treeShakePkg) { + const canonicalsWithChanges = Object.entries(treeShakePkg.canonicals).filter( + ([_, data]) => data.skippedFields.length > 0, + ); + + if (canonicalsWithChanges.length > 0) { + lines.push("### Modified Canonicals", ""); + for (const [canonical, data] of canonicalsWithChanges) { + lines.push(`#### \`${canonical}\``, ""); + lines.push("Skipped fields:", ""); + for (const field of data.skippedFields) { + lines.push(`- \`${field}\``); + } + lines.push(""); + } + } + + if (treeShakePkg.skippedCanonicals.length > 0) { + lines.push("### Skipped Canonicals", ""); + for (const canonical of treeShakePkg.skippedCanonicals) { + lines.push(`- \`${canonical}\``); + } + lines.push(""); + } + } + } + + return lines.join("\n"); +}; diff --git a/src/typeschema/ir/tree-shake.ts b/src/typeschema/ir/tree-shake.ts index 64a84a50..fad2f2d5 100644 --- a/src/typeschema/ir/tree-shake.ts +++ b/src/typeschema/ir/tree-shake.ts @@ -19,7 +19,7 @@ import { type TypeSchema, } from "../types"; import type { TypeSchemaIndex } from "../utils"; -import type { IrReport, TreeShake, TreeShakeReport, TreeShakeRule } from "./types"; +import type { IrReport, TreeShakeConf, TreeShakeReport, TreeShakeRule } from "./types"; const ensureIrReport = (indexOrReport: TypeSchemaIndex | IrReport): IrReport => { if ("irReport" in indexOrReport && typeof indexOrReport.irReport === "function") { @@ -212,7 +212,7 @@ export const treeShakeTypeSchema = (schema: TypeSchema, rule: TreeShakeRule, _lo return schema; }; -export const treeShake = (tsIndex: TypeSchemaIndex, treeShake: TreeShake): TypeSchemaIndex => { +export const treeShake = (tsIndex: TypeSchemaIndex, treeShake: TreeShakeConf): TypeSchemaIndex => { const focusedSchemas: TypeSchema[] = []; for (const [pkgId, requires] of Object.entries(treeShake)) { for (const [url, rule] of Object.entries(requires)) { diff --git a/src/typeschema/ir/types.ts b/src/typeschema/ir/types.ts index 7f111573..fe049f0c 100644 --- a/src/typeschema/ir/types.ts +++ b/src/typeschema/ir/types.ts @@ -1,13 +1,28 @@ import type { CanonicalUrl, PkgName } from "../types"; -export type LogicalPromotion = Record; +export type IrConf = { + treeShake?: TreeShakeConf; + promoteLogical?: LogicalPromotionConf; +}; + +export type LogicalPromotionConf = Record; -export type TreeShake = Record>; +export type TreeShakeConf = Record>; export type TreeShakeRule = { ignoreFields?: string[]; selectFields?: string[] }; export type IrReport = { treeShake?: TreeShakeReport; + logicalPromotion?: LogicalPromotionReport; +}; + +export type LogicalPromotionReport = { + packages: Record< + PkgName, + { + promotedCanonicals: CanonicalUrl[]; + } + >; }; export type TreeShakeReport = { diff --git a/test/api/write-generator/__snapshots__/introspection.test.ts.snap b/test/api/write-generator/__snapshots__/introspection.test.ts.snap index c8f0abe9..ef30c311 100644 --- a/test/api/write-generator/__snapshots__/introspection.test.ts.snap +++ b/test/api/write-generator/__snapshots__/introspection.test.ts.snap @@ -1412,6 +1412,7 @@ exports[`IntrospectionWriter - Fhir Schema Output Check all introspection data i exports[`IntrospectionWriter - TypeSchema output Generated file list 1`] = ` [ + "generated/README.md", "generated/introspection/hl7.fhir.r4.core/BackboneElement(BackboneElement).json", "generated/introspection/hl7.fhir.r4.core/boolean(boolean).json", "generated/introspection/hl7.fhir.r4.core/canonical(canonical).json", @@ -1714,6 +1715,7 @@ exports[`IntrospectionWriter - TypeSchema output Check all introspection data in exports[`IntrospectionWriter - StructureDefinition output Generated file list 1`] = ` [ + "generated/README.md", "generated/structure-definitions/hl7.fhir.r4.core/abatement(familymemberhistory-abatement).json", "generated/structure-definitions/hl7.fhir.r4.core/acceptance(goal-acceptance).json", "generated/structure-definitions/hl7.fhir.r4.core/Accession(auditevent-Accession).json", diff --git a/test/api/write-generator/introspection.test.ts b/test/api/write-generator/introspection.test.ts index c48d864c..da1c1e80 100644 --- a/test/api/write-generator/introspection.test.ts +++ b/test/api/write-generator/introspection.test.ts @@ -29,17 +29,19 @@ describe("IntrospectionWriter - Fhir Schema Output", async () => { describe("IntrospectionWriter - TypeSchema output", async () => { const result = await new APIBuilder({ manager: r4Manager }) .setLogLevel("SILENT") - .treeShake({ - "hl7.fhir.r4.core": { - "http://hl7.org/fhir/StructureDefinition/OperationOutcome": {}, - "http://hl7.org/fhir/StructureDefinition/DomainResource": { - ignoreFields: ["extension", "modifierExtension"], - }, - "http://hl7.org/fhir/StructureDefinition/BackboneElement": { - ignoreFields: ["modifierExtension"], - }, - "http://hl7.org/fhir/StructureDefinition/Element": { - ignoreFields: ["extension"], + .typeSchema({ + treeShake: { + "hl7.fhir.r4.core": { + "http://hl7.org/fhir/StructureDefinition/OperationOutcome": {}, + "http://hl7.org/fhir/StructureDefinition/DomainResource": { + ignoreFields: ["extension", "modifierExtension"], + }, + "http://hl7.org/fhir/StructureDefinition/BackboneElement": { + ignoreFields: ["modifierExtension"], + }, + "http://hl7.org/fhir/StructureDefinition/Element": { + ignoreFields: ["extension"], + }, }, }, }) @@ -49,7 +51,7 @@ describe("IntrospectionWriter - TypeSchema output", async () => { expect(result.success).toBeTrue(); - expect(Object.keys(result.filesGenerated).length).toEqual(25); + expect(Object.keys(result.filesGenerated).length).toEqual(26); it("Generated file list", () => { expect(Object.keys(result.filesGenerated)).toMatchSnapshot(); }); @@ -67,14 +69,16 @@ describe("IntrospectionWriter - TypeSchema output", async () => { describe("IntrospectionWriter - typeTree", async () => { const result = await new APIBuilder({ manager: r4Manager }) .setLogLevel("SILENT") - .treeShake({ - "hl7.fhir.r4.core": { - "http://hl7.org/fhir/StructureDefinition/Patient": {}, - "http://hl7.org/fhir/StructureDefinition/DomainResource": { - ignoreFields: ["extension", "modifierExtension"], - }, - "http://hl7.org/fhir/StructureDefinition/Element": { - ignoreFields: ["extension"], + .typeSchema({ + treeShake: { + "hl7.fhir.r4.core": { + "http://hl7.org/fhir/StructureDefinition/Patient": {}, + "http://hl7.org/fhir/StructureDefinition/DomainResource": { + ignoreFields: ["extension", "modifierExtension"], + }, + "http://hl7.org/fhir/StructureDefinition/Element": { + ignoreFields: ["extension"], + }, }, }, }) @@ -91,17 +95,19 @@ describe("IntrospectionWriter - typeTree", async () => { describe("IntrospectionWriter - StructureDefinition output", async () => { const result = await new APIBuilder({ manager: r4Manager }) .setLogLevel("SILENT") - .treeShake({ - "hl7.fhir.r4.core": { - "http://hl7.org/fhir/StructureDefinition/OperationOutcome": {}, - "http://hl7.org/fhir/StructureDefinition/DomainResource": { - ignoreFields: ["extension", "modifierExtension"], - }, - "http://hl7.org/fhir/StructureDefinition/BackboneElement": { - ignoreFields: ["modifierExtension"], - }, - "http://hl7.org/fhir/StructureDefinition/Element": { - ignoreFields: ["extension"], + .typeSchema({ + treeShake: { + "hl7.fhir.r4.core": { + "http://hl7.org/fhir/StructureDefinition/OperationOutcome": {}, + "http://hl7.org/fhir/StructureDefinition/DomainResource": { + ignoreFields: ["extension", "modifierExtension"], + }, + "http://hl7.org/fhir/StructureDefinition/BackboneElement": { + ignoreFields: ["modifierExtension"], + }, + "http://hl7.org/fhir/StructureDefinition/Element": { + ignoreFields: ["extension"], + }, }, }, }) diff --git a/test/api/write-generator/typescript.test.ts b/test/api/write-generator/typescript.test.ts index fb66df32..e6dbd63e 100644 --- a/test/api/write-generator/typescript.test.ts +++ b/test/api/write-generator/typescript.test.ts @@ -20,8 +20,10 @@ describe("TypeScript Writer Generator", async () => { describe("TypeScript CDA with Logical Model Promotion to Resource", async () => { const result = await new APIBuilder({ manager: ccdaManager }) .setLogLevel("SILENT") - .promoteLogicToResource({ - "hl7.cda.uv.core": ["http://hl7.org/cda/stds/core/StructureDefinition/Material" as CanonicalUrl], + .typeSchema({ + promoteLogical: { + "hl7.cda.uv.core": ["http://hl7.org/cda/stds/core/StructureDefinition/Material" as CanonicalUrl], + }, }) .typescript({ inMemoryOnly: true, From 3da5d91c5cb244e10c4510fe9bb7f2ad85b2f903 Mon Sep 17 00:00:00 2001 From: Aleksandr Penskoi Date: Thu, 5 Feb 2026 13:04:49 +0100 Subject: [PATCH 5/7] docs: update API references to new typeSchema method MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fix logicalPromotion → promoteLogical in README.md - Update .treeShake() → .typeSchema({ treeShake }) in CLAUDE.md - Update examples/typescript-r4/README.md to new API - Export IrConf, TreeShakeConf, LogicalPromotionConf types --- CLAUDE.md | 7 +++++-- README.md | 4 ++-- examples/typescript-r4/README.md | 10 ++++++---- src/api/index.ts | 1 + 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 31267205..d9fece5a 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -123,7 +123,10 @@ The `APIBuilder` class (`src/api/builder.ts`) provides the fluent API for the th .fromSchemas(array) // TypeSchema objects // Processing & introspection stage - Optional: -.treeShake({...}) // Filter types +.typeSchema({ // IR transformations + treeShake: {...}, // Filter types + promoteLogical: {...}, // Promote logical models +}) .introspection({ // Debug output (optional) typeSchemas: "./schemas", // Type Schemas path/.ndjson typeTree: "./tree.json" // Type Tree @@ -184,7 +187,7 @@ Located in `src/api/writer-generator/`: 4. Use `bun test --watch` for development ### Working with Tree Shaking -- Configured via `builder.treeShake({...})` +- Configured via `builder.typeSchema({ treeShake: {...} })` - Specify which resources and fields to include - Automatically resolves dependencies - Reference format: `"hl7.fhir.r4.core#4.0.1"` diff --git a/README.md b/README.md index 333b3855..4a5a2f05 100644 --- a/README.md +++ b/README.md @@ -128,7 +128,7 @@ const builder = new APIBuilder() // Type Schema processing .typeSchema({ treeShake: { ... }, // Include only specified types - logicalPromotion: { ... }, // Process logical models as resources + promoteLogical: { ... }, // Process logical models as resources }) // Code generator (choose one) @@ -256,7 +256,7 @@ Use the programmatic API via `APIBuilder`: const builder = new APIBuilder({}) .fromPackage("my.custom.pkg", "4.0.1") .typeSchema({ - logicalPromotion: { + promoteLogical: { "my.custom.pkg": [ "http://example.org/StructureDefinition/MyLogicalModel" ] diff --git a/examples/typescript-r4/README.md b/examples/typescript-r4/README.md index fd4d050a..b9de4bec 100644 --- a/examples/typescript-r4/README.md +++ b/examples/typescript-r4/README.md @@ -145,10 +145,12 @@ typescript-r4/ Uncomment the `treeShake` section in `generate.ts`: ```typescript -.treeShake({ - "hl7.fhir.r4.core#4.0.1": { - "http://hl7.org/fhir/StructureDefinition/Patient": {}, - "http://hl7.org/fhir/StructureDefinition/Observation": {}, +.typeSchema({ + treeShake: { + "hl7.fhir.r4.core#4.0.1": { + "http://hl7.org/fhir/StructureDefinition/Patient": {}, + "http://hl7.org/fhir/StructureDefinition/Observation": {}, + } } }) ``` diff --git a/src/api/index.ts b/src/api/index.ts index f3362fc7..d706d3c6 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -12,3 +12,4 @@ export type { APIBuilderOptions, LocalStructureDefinitionConfig } from "./builde export { APIBuilder, prettyReport } from "./builder"; export type { CSharpGeneratorOptions } from "./writer-generator/csharp/csharp"; export type { TypeScriptOptions } from "./writer-generator/typescript"; +export type { IrConf, TreeShakeConf, LogicalPromotionConf } from "../typeschema/ir/types"; From 0c420a684f987e7f49f837c4754fcdf8fe397d11 Mon Sep 17 00:00:00 2001 From: Aleksandr Penskoi Date: Thu, 5 Feb 2026 13:07:51 +0100 Subject: [PATCH 6/7] ref: remove unused type exports - Remove isFhirSchemaBased, TypeschemaParserOptions from types.ts - Remove ProgressCallback, GeneratedFile, GeneratorInput from builder.ts --- src/api/builder.ts | 13 +------------ src/api/index.ts | 2 +- src/typeschema/types.ts | 12 ------------ 3 files changed, 2 insertions(+), 25 deletions(-) diff --git a/src/api/builder.ts b/src/api/builder.ts index 73e4d2cf..8001dd30 100644 --- a/src/api/builder.ts +++ b/src/api/builder.ts @@ -16,7 +16,7 @@ import { promoteLogical } from "@root/typeschema/ir/logic-promotion"; import { treeShake } from "@root/typeschema/ir/tree-shake"; import type { IrConf, LogicalPromotionConf, TreeShakeConf } from "@root/typeschema/ir/types"; import { registerFromManager } from "@root/typeschema/register"; -import { type PackageMeta, packageMetaToNpm, type TypeSchema } from "@root/typeschema/types"; +import { type PackageMeta, packageMetaToNpm } from "@root/typeschema/types"; import { mkTypeSchemaIndex, type TypeSchemaIndex } from "@root/typeschema/utils"; import { type CodegenLogger, @@ -48,11 +48,6 @@ export interface APIBuilderOptions { registry: string | undefined; } -/** - * Progress callback for long-running operations - */ -export type ProgressCallback = (phase: string, current: number, total: number, message?: string) => void; - export type GenerationReport = { success: boolean; outputDir: string; @@ -92,12 +87,6 @@ export const prettyReport = (report: GenerationReport): string => { .join("\n"); }; -export interface GeneratedFile { - fullFileName: string; -} - -export type GeneratorInput = { schemas: TypeSchema[]; index: TypeSchemaIndex }; - export interface LocalStructureDefinitionConfig { package: PackageMeta; path: string; diff --git a/src/api/index.ts b/src/api/index.ts index d706d3c6..673f2ea4 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -7,9 +7,9 @@ * @packageDocumentation */ +export type { IrConf, LogicalPromotionConf, TreeShakeConf } from "../typeschema/ir/types"; export { LogLevel } from "../utils/codegen-logger"; export type { APIBuilderOptions, LocalStructureDefinitionConfig } from "./builder"; export { APIBuilder, prettyReport } from "./builder"; export type { CSharpGeneratorOptions } from "./writer-generator/csharp/csharp"; export type { TypeScriptOptions } from "./writer-generator/typescript"; -export type { IrConf, TreeShakeConf, LogicalPromotionConf } from "../typeschema/ir/types"; diff --git a/src/typeschema/types.ts b/src/typeschema/types.ts index 6b58c9f2..4ad01d83 100644 --- a/src/typeschema/types.ts +++ b/src/typeschema/types.ts @@ -134,12 +134,6 @@ export type TypeSchema = | BindingTypeSchema | ProfileTypeSchema; -export const isFhirSchemaBased = ( - schema: TypeSchema | undefined, -): schema is RegularTypeSchema | PrimitiveTypeSchema | BindingTypeSchema | ProfileTypeSchema => { - return schema?.identifier.kind !== "value-set"; -}; - export const isSpecializationTypeSchema = (schema: TypeSchema | undefined): schema is RegularTypeSchema => { return ( schema?.identifier.kind === "resource" || @@ -364,12 +358,6 @@ export const isChoiceInstanceField = (field: Field | undefined): field is Choice return (field as ChoiceFieldInstance).choiceOf !== undefined; }; -export type TypeschemaParserOptions = { - format?: "auto" | "ndjson" | "json"; - validate?: boolean; - strict?: boolean; -}; - /////////////////////////////////////////////////////////// // ValueSet /////////////////////////////////////////////////////////// From 2127082c1fe0ed5c0b286e7195069c1aa44db75c Mon Sep 17 00:00:00 2001 From: Aleksandr Penskoi Date: Thu, 5 Feb 2026 13:17:16 +0100 Subject: [PATCH 7/7] refactor: remove config-file workflow in favor of builder API - Delete src/config.ts (800+ lines of unused config system) - Delete CLI generate command (config-driven code generation) - Simplify typeschema generate to use CLI args directly - Remove --config CLI option The APIBuilder fluent API is now the only supported way to configure code generation. This removes the parallel config-file approach that added complexity without clear benefits. --- src/cli/commands/generate.ts | 161 ----- src/cli/commands/index.ts | 14 - src/cli/commands/typeschema/generate.ts | 33 +- src/config.ts | 810 ------------------------ src/index.ts | 3 - 5 files changed, 10 insertions(+), 1011 deletions(-) delete mode 100644 src/cli/commands/generate.ts delete mode 100644 src/config.ts diff --git a/src/cli/commands/generate.ts b/src/cli/commands/generate.ts deleted file mode 100644 index 1c17bd1f..00000000 --- a/src/cli/commands/generate.ts +++ /dev/null @@ -1,161 +0,0 @@ -/** - * Generate Command - Config-Driven Generation - * - * Main generate command that reads all configuration from the config file - * and executes generation based purely on config settings. - */ - -import { existsSync } from "node:fs"; -import { resolve } from "node:path"; -import { createLogger, error, step, success, warn } from "@root/utils/codegen-logger"; -import type { CommandModule } from "yargs"; -import { APIBuilder } from "../../api/index"; -import { CONFIG_FILE_NAMES, loadConfig } from "../../config"; -import type { CLIArgv } from "./index"; - -interface GenerateArgs extends CLIArgv { - // Only verbose flag remains as it's a general CLI flag -} - -/** - * Main generate command - fully config-driven - */ -export const generateCommand: CommandModule, GenerateArgs> = { - command: "generate", - describe: "Generate code based on configuration file settings", - builder: (yargs) => - yargs - .option("verbose", { - alias: "v", - type: "boolean", - default: false, - description: "Enable verbose output", - }) - .example("$0 generate", "Generate code using settings from config file") - .example("$0 generate --verbose", "Generate with verbose output"), - handler: async (argv) => { - // Check for old command syntax and provide helpful error - if (argv._.length > 1) { - const extraArgs = argv._.slice(1).join(" "); - error( - `Invalid syntax: 'atomic-codegen generate ${extraArgs}'\n\n` + - `The CLI has been simplified and no longer uses subcommands.\n\n` + - `✅ Use: atomic-codegen generate\n` + - `❌ Old: atomic-codegen generate typescript\n\n` + - `All generation settings are now configured in your config file.\n` + - `Create an atomic-codegen.config.ts file to get started.`, - ); - process.exit(1); - } - - // Check if config file exists first - const workingDir = process.cwd(); - const configPath = await findConfigFile(workingDir); - - if (!configPath) { - const configFilesList = CONFIG_FILE_NAMES.map((name) => ` - ${name}`).join("\n"); - error( - `No configuration file found. Please create one of the following files in your project root:\n${configFilesList}\n\nExample atomic-codegen.config.ts:\n\n` + - `import { defineConfig } from '@atomic-ehr/codegen';\n\n` + - `export default defineConfig({\n` + - ` packages: ['hl7.fhir.r4.core@4.0.1'],\n` + - ` typescript: {\n` + - ` generateIndex: true\n` + - ` }\n` + - `});`, - ); - process.exit(1); - } - - // Load config file - const config = await loadConfig(workingDir); - const verbose = argv.verbose ?? config.verbose ?? false; - - // Create logger for CLI command - const logger = createLogger({ - prefix: "Generate", - }); - - try { - step("Starting generation from config"); - if (verbose) { - logger.info(`Config file: ${configPath}`); - logger.info(`Output directory: ${config.outputDir || "./generated"}`); - logger.info(`Packages: ${config.packages?.length || 0}`); - logger.info(`Files: ${config.files?.length || 0}`); - logger.info(`TypeScript generation: ${config.typescript ? "enabled" : "disabled"}`); - } - - // Create API builder with config options - const builder = new APIBuilder({ - outputDir: config.outputDir || "./generated", - logger, - }); - - // Load data sources from config - if (config.packages && config.packages.length > 0) { - logger.info(`Loading packages from config: ${config.packages.join(", ")}`); - for (const packageSpec of config.packages) { - const [name, version] = packageSpec.includes("@") - ? packageSpec.split("@") - : [packageSpec, undefined]; - builder.fromPackage(name, version); - } - } else if (config.files && config.files.length > 0) { - logger.info(`Loading files from config: ${config.files.join(", ")}`); - throw new Error("Not Implemented"); - } else { - throw new Error( - "No data source specified in config. Please configure 'packages' or 'files' in your config file.", - ); - } - - // Configure generators from config - if (config.typescript) { - throw new Error("Not Implemented"); - } - - // Check that at least one generator is configured - if (!config.typescript) { - throw new Error("No generators configured. Please enable 'typescript' in your config file."); - } - - // Execute generation - logger.step("Executing generation..."); - const result = await builder.generate(); - - if (result.success) { - success(`Generated ${result.filesGenerated.length} files in ${result.duration.toFixed(2)}ms`); - logger.dim(`Output directory: ${result.outputDir}`); - - if (result.warnings.length > 0) { - for (const warning of result.warnings) { - warn(warning); - } - } - } else { - error(`Generation failed with ${result.errors.length} errors`); - for (const err of result.errors) { - logger.dim(` ${err}`); - } - process.exit(1); - } - } catch (err) { - error("Generation failed with unexpected error", err instanceof Error ? err : new Error(String(err))); - process.exit(1); - } - }, -}; - -/** - * Helper function to find config file in the given directory - */ -async function findConfigFile(startDir: string): Promise { - for (const fileName of CONFIG_FILE_NAMES) { - const configPath = resolve(startDir, fileName); - if (existsSync(configPath)) { - return configPath; - } - } - return null; -} diff --git a/src/cli/commands/index.ts b/src/cli/commands/index.ts index f6f644f7..91e444b7 100644 --- a/src/cli/commands/index.ts +++ b/src/cli/commands/index.ts @@ -9,14 +9,12 @@ import { configure, error, header, LogLevel } from "@root/utils/codegen-logger"; import yargs from "yargs"; import { hideBin } from "yargs/helpers"; -import { generateCommand } from "./generate"; import { typeschemaCommand } from "./typeschema"; /** * CLI arguments interface */ export interface CLIArgv { - config?: string; verbose?: boolean; debug?: boolean; logLevel?: "debug" | "info" | "warn" | "error" | "silent"; @@ -69,7 +67,6 @@ export function createCLI() { .usage("$0 [options]") .middleware(setupLoggingMiddleware) .command(typeschemaCommand) - .command(generateCommand) .option("verbose", { alias: "v", type: "boolean", @@ -91,12 +88,6 @@ export function createCLI() { description: "Set the log level (default: info)", global: true, }) - .option("config", { - alias: "c", - type: "string", - description: "Path to configuration file (.atomic-codegen.json by default)", - global: true, - }) .demandCommand(0) // Allow 0 commands so we can handle it ourselves .middleware((argv) => { // Check if no command was provided (only the script name in argv._) @@ -105,20 +96,15 @@ export function createCLI() { header("Welcome to Atomic Codegen!"); console.log("Available commands:"); console.log(" typeschema Generate, validate and merge TypeSchema files"); - console.log(" generate Generate code based on configuration file"); console.log("\nUse 'atomic-codegen --help' for more information about a command."); console.log("\nQuick examples:"); console.log(" atomic-codegen typeschema generate hl7.fhir.r4.core@4.0.1 -o schemas.ndjson"); - console.log(" atomic-codegen generate # Uses atomic-codegen.config.ts"); console.log("\nUse 'atomic-codegen --help' to see all options."); process.exit(0); } }) .help() .version("0.1.0") - .example("$0 generate", "Generate code using atomic-codegen.config.ts") - .example("$0 generate --verbose", "Generate with detailed progress output") - .example("$0 --config custom-config.ts generate", "Use custom configuration file") .example( "$0 typeschema generate hl7.fhir.r4.core@4.0.1 -o schemas.ndjson", "Generate TypeSchemas from FHIR package", diff --git a/src/cli/commands/typeschema/generate.ts b/src/cli/commands/typeschema/generate.ts index f9a9c2b2..2bddab9d 100644 --- a/src/cli/commands/typeschema/generate.ts +++ b/src/cli/commands/typeschema/generate.ts @@ -10,7 +10,6 @@ import { CanonicalManager } from "@atomic-ehr/fhir-canonical-manager"; import { complete, createLogger, list } from "@root/utils/codegen-logger"; import { TypeSchemaGenerator } from "@typeschema/generator"; import type { CommandModule } from "yargs"; -import { loadConfig } from "../../../config"; interface GenerateTypeschemaArgs { packages: string[]; @@ -78,49 +77,37 @@ export const generateTypeschemaCommand: CommandModule, G }); try { - // Load configuration from file - const config = await loadConfig(process.cwd()); - logger.step("Generating TypeSchema from FHIR packages"); logger.info(`Packages: ${argv.packages.join(", ")}`); logger.info(`Output: ${argv.output}`); - // Merge singleFile options: CLI args take precedence over config file - const singleFileOption = - argv.singleFile !== undefined ? argv.singleFile : (config.typeSchema?.singleFile ?? false); - const outputFormat = singleFileOption ? "ndjson" : argv.format; + const outputFormat = argv.singleFile ? "ndjson" : argv.format; logger.debug( - `Format: ${outputFormat}${singleFileOption && argv.format === "json" ? " (forced from json due to singleFile)" : ""}`, + `Format: ${outputFormat}${argv.singleFile && argv.format === "json" ? " (forced from json due to singleFile)" : ""}`, ); - // Merge treeshake options: CLI args take precedence over config file - const treeshakeOptions = - argv.treeshake && argv.treeshake.length > 0 ? argv.treeshake : config.typeSchema?.treeshake; - - if (treeshakeOptions && treeshakeOptions.length > 0) { - logger.info(`Treeshaking enabled for ResourceTypes: ${treeshakeOptions.join(", ")}`); + if (argv.treeshake && argv.treeshake.length > 0) { + logger.info(`Treeshaking enabled for ResourceTypes: ${argv.treeshake.join(", ")}`); } - if (singleFileOption) { + if (argv.singleFile) { logger.info("Single file output enabled (NDJSON format)"); } - // Merge registry options: CLI args take precedence over config file - const registryOption = argv.registry || config.registry; - if (registryOption) { - logger.info(`Using custom registry: ${registryOption}`); + if (argv.registry) { + logger.info(`Using custom registry: ${argv.registry}`); } const startTime = Date.now(); // Create TypeSchema generator const generator = new TypeSchemaGenerator({ - treeshake: treeshakeOptions, - registry: registryOption, + treeshake: argv.treeshake, + registry: argv.registry, manager: CanonicalManager({ packages: [], workingDir: ".codegen-cache/canonical-manager-cache", - registry: registryOption, + registry: argv.registry, }), }); diff --git a/src/config.ts b/src/config.ts deleted file mode 100644 index 3ffaec57..00000000 --- a/src/config.ts +++ /dev/null @@ -1,810 +0,0 @@ -/** - * New Config Schema for High-Level API - * - * Simple configuration system compatible ONLY with the new high-level APIBuilder. - * All legacy config functionality has been removed. - */ - -import { existsSync } from "node:fs"; -import { readFile } from "node:fs/promises"; -import { resolve } from "node:path"; - -/** - * TypeScript generator configuration options - */ -export interface TypeScriptGeneratorConfig { - moduleFormat?: "esm" | "cjs"; - generateIndex?: boolean; - includeDocuments?: boolean; - namingConvention?: "PascalCase" | "camelCase"; - strictMode?: boolean; - includeProfiles?: boolean; - includeExtensions?: boolean; - includeCodeSystems?: boolean; - includeOperations?: boolean; - /** Generate individual TypeScript files for value sets (default: false) */ - generateValueSets?: boolean; - /** Include helper validation functions in value set files (default: false) */ - includeValueSetHelpers?: boolean; - /** Which binding strengths to generate value sets for (default: ['required']) */ - valueSetStrengths?: ("required" | "preferred" | "extensible" | "example")[]; - /** Directory name for value set files (relative to outputDir) (default: 'valuesets') */ - valueSetDirectory?: string; - /** Value set generation mode (default: 'required-only') */ - valueSetMode?: "all" | "required-only" | "custom"; - fhirVersion?: "R4" | "R5"; - resourceTypes?: string[]; - maxDepth?: number; - - // Profile generation options - profileOptions?: { - includeConstraints?: boolean; - includeDocumentation?: boolean; - strictMode?: boolean; - subfolder?: string; - }; - - // Builder generation options - generateBuilders?: boolean; - builderOptions?: { - includeValidation?: boolean; - includeFactoryMethods?: boolean; - includeInterfaces?: boolean; - generateNestedBuilders?: boolean; - includeHelperMethods?: boolean; - supportPartialBuild?: boolean; - includeJSDoc?: boolean; - generateFactories?: boolean; - includeTypeGuards?: boolean; - handleChoiceTypes?: boolean; - generateArrayHelpers?: boolean; - }; - - // Validator generation options - validatorOptions?: { - includeCardinality?: boolean; - includeTypes?: boolean; - includeConstraints?: boolean; - includeInvariants?: boolean; - validateRequired?: boolean; - allowAdditional?: boolean; - strictValidation?: boolean; - collectMetrics?: boolean; - generateAssertions?: boolean; - generatePartialValidators?: boolean; - optimizePerformance?: boolean; - includeJSDoc?: boolean; - generateCompositeValidators?: boolean; - }; - - // Type guard generation options - guardOptions?: { - includeRuntimeValidation?: boolean; - includeErrorMessages?: boolean; - treeShakeable?: boolean; - targetTSVersion?: "3.8" | "4.0" | "4.5" | "5.0"; - strictGuards?: boolean; - includeNullChecks?: boolean; - verbose?: boolean; - }; -} - -/** - * TypeSchema Configuration - * Controls TypeSchema generation and caching behavior - */ -export interface TypeSchemaConfig { - /** Enable persistent caching of generated TypeSchemas */ - enablePersistence?: boolean; - /** Directory to store cached TypeSchemas (relative to outputDir) */ - cacheDir?: string; - /** Maximum age of cached schemas in milliseconds before regeneration */ - maxAge?: number; - /** Whether to validate cached schemas before reuse */ - validateCached?: boolean; - /** Force regeneration of schemas even if cached */ - forceRegenerate?: boolean; - /** Share cache across multiple codegen runs */ - shareCache?: boolean; - /** Cache key prefix for namespacing */ - cacheKeyPrefix?: string; - /** Only generate TypeSchemas for specific ResourceTypes (treeshaking) */ - treeshake?: string[]; - /** Generate single TypeSchema file instead of multiple files */ - singleFile?: boolean; - /** Profile packages configuration */ - profiles?: { - /** Auto-detect profiles in packages */ - autoDetect?: boolean; - }; -} - -/** - * Main configuration schema for the new high-level API - */ -export interface Config { - // Core APIBuilder options - outputDir?: string; - verbose?: boolean; - overwrite?: boolean; - validate?: boolean; - cache?: boolean; - cleanOutput?: boolean; - - // Generator configurations - typescript?: TypeScriptGeneratorConfig; - typeSchema?: TypeSchemaConfig; - - // Input sources - packages?: string[]; - files?: string[]; - - // Package registry - /** Custom FHIR package registry URL (default: https://fs.get-ig.org/pkgs/) */ - registry?: string; - - // Schema validation - $schema?: string; -} - -/** - * Default configuration values - */ -export const DEFAULT_CONFIG: Required = { - outputDir: "./generated", - verbose: false, - overwrite: true, - validate: true, - cache: true, - cleanOutput: true, - registry: "", - typescript: { - moduleFormat: "esm", - generateIndex: true, - includeDocuments: false, - namingConvention: "PascalCase", - strictMode: true, - includeProfiles: true, - includeExtensions: false, - includeCodeSystems: false, - includeOperations: false, - generateValueSets: false, - valueSetDirectory: "valuesets", - valueSetMode: "required-only", - valueSetStrengths: ["required"], - includeValueSetHelpers: false, - fhirVersion: "R4", - resourceTypes: [], - maxDepth: 10, - - // Profile generation defaults - profileOptions: { - includeConstraints: true, - includeDocumentation: true, - strictMode: false, - subfolder: "profiles", - }, - - // Builder generation defaults - generateBuilders: false, - builderOptions: { - includeValidation: true, - includeFactoryMethods: true, - includeInterfaces: true, - generateNestedBuilders: true, - includeHelperMethods: true, - supportPartialBuild: true, - includeJSDoc: true, - generateFactories: true, - includeTypeGuards: true, - handleChoiceTypes: true, - generateArrayHelpers: true, - }, - - // Validator generation defaults - validatorOptions: { - includeCardinality: true, - includeTypes: true, - includeConstraints: true, - includeInvariants: false, - validateRequired: true, - allowAdditional: false, - strictValidation: false, - collectMetrics: false, - generateAssertions: true, - generatePartialValidators: true, - optimizePerformance: true, - includeJSDoc: true, - generateCompositeValidators: true, - }, - - // Type guard generation defaults - guardOptions: { - includeRuntimeValidation: true, - includeErrorMessages: true, - treeShakeable: true, - targetTSVersion: "5.0", - strictGuards: false, - includeNullChecks: true, - verbose: false, - }, - }, - typeSchema: { - enablePersistence: true, - cacheDir: ".typeschema-cache", - maxAge: 24 * 60 * 60 * 1000, // 24 hours in milliseconds - validateCached: true, - forceRegenerate: false, - shareCache: true, - cacheKeyPrefix: "", - treeshake: [], - singleFile: false, - profiles: { - autoDetect: true, - }, - }, - packages: [], - files: [], - $schema: "", -}; - -/** - * Configuration file names to search for - */ -export const CONFIG_FILE_NAMES = [ - "atomic-codegen.config.ts", - "atomic-codegen.config", - "atomic-codegen.config.json", - ".atomic-codegenrc", - "atomic-codegen.json", - ".atomic-codegen.json", - "codegen.config.json", - "codegen.json", -]; - -/** - * Validation error interface - */ -export interface ConfigValidationError { - path: string; - message: string; - value?: unknown; -} - -/** - * Configuration validation result - */ -export interface ConfigValidationResult { - valid: boolean; - errors: ConfigValidationError[]; - warnings: string[]; - config?: Config; -} - -/** - * Simple configuration validator - */ -export class ConfigValidator { - /** - * Validate a configuration object - */ - validate(config: unknown): ConfigValidationResult { - const result: ConfigValidationResult = { - valid: true, - errors: [], - warnings: [], - }; - - if (!config || typeof config !== "object") { - result.valid = false; - result.errors.push({ - path: "root", - message: "Configuration must be an object", - value: config, - }); - return result; - } - - const cfg = config as Record; - - // Validate outputDir - if (cfg.outputDir !== undefined && typeof cfg.outputDir !== "string") { - result.errors.push({ - path: "outputDir", - message: "outputDir must be a string", - value: cfg.outputDir, - }); - } - - // Validate boolean fields - const booleanFields = ["verbose", "overwrite", "validate", "cache"]; - for (const field of booleanFields) { - if (cfg[field] !== undefined && typeof cfg[field] !== "boolean") { - result.errors.push({ - path: field, - message: `${field} must be a boolean`, - value: cfg[field], - }); - } - } - - // Validate typescript config - if (cfg.typescript !== undefined) { - const tsErrors = this.validateTypeScriptConfig(cfg.typescript); - result.errors.push(...tsErrors); - } - - // Validate typeSchema config - if (cfg.typeSchema !== undefined) { - const tsErrors = this.validateTypeSchemaConfig(cfg.typeSchema); - result.errors.push(...tsErrors); - } - - // Validate packages array - if (cfg.packages !== undefined) { - if (!Array.isArray(cfg.packages)) { - result.errors.push({ - path: "packages", - message: "packages must be an array", - value: cfg.packages, - }); - } else { - cfg.packages.forEach((pkg, index) => { - if (typeof pkg !== "string") { - result.errors.push({ - path: `packages[${index}]`, - message: "package name must be a string", - value: pkg, - }); - } - }); - } - } - - // Validate files array - if (cfg.files !== undefined) { - if (!Array.isArray(cfg.files)) { - result.errors.push({ - path: "files", - message: "files must be an array", - value: cfg.files, - }); - } else { - cfg.files.forEach((file, index) => { - if (typeof file !== "string") { - result.errors.push({ - path: `files[${index}]`, - message: "file path must be a string", - value: file, - }); - } - }); - } - } - - result.valid = result.errors.length === 0; - if (result.valid) { - result.config = cfg as Config; - } - - return result; - } - - private validateTypeScriptConfig(config: unknown): ConfigValidationError[] { - const errors: ConfigValidationError[] = []; - - if (typeof config !== "object" || config === null) { - errors.push({ - path: "typescript", - message: "typescript config must be an object", - value: config, - }); - return errors; - } - - const cfg = config as Record; - - // Validate moduleFormat - if (cfg.moduleFormat !== undefined) { - if (!["esm", "cjs"].includes(cfg.moduleFormat as string)) { - errors.push({ - path: "typescript.moduleFormat", - message: 'moduleFormat must be "esm" or "cjs"', - value: cfg.moduleFormat, - }); - } - } - - // Validate namingConvention - if (cfg.namingConvention !== undefined) { - if (!["PascalCase", "camelCase"].includes(cfg.namingConvention as string)) { - errors.push({ - path: "typescript.namingConvention", - message: 'namingConvention must be "PascalCase" or "camelCase"', - value: cfg.namingConvention, - }); - } - } - - // Validate boolean fields - const booleanFields = [ - "generateIndex", - "includeDocuments", - "strictMode", - "includeProfiles", - "includeExtensions", - "includeCodeSystems", - "includeOperations", - "generateValueSets", - "includeValueSetHelpers", - ]; - for (const field of booleanFields) { - if (cfg[field] !== undefined && typeof cfg[field] !== "boolean") { - errors.push({ - path: `typescript.${field}`, - message: `${field} must be a boolean`, - value: cfg[field], - }); - } - } - - // Validate validatorOptions - if (cfg.validatorOptions !== undefined) { - const validatorErrors = this.validateValidatorOptions(cfg.validatorOptions); - errors.push(...validatorErrors); - } - - // Validate guardOptions - if (cfg.guardOptions !== undefined) { - const guardErrors = this.validateGuardOptions(cfg.guardOptions); - errors.push(...guardErrors); - } - - // Validate profileOptions - if (cfg.profileOptions !== undefined) { - const profileErrors = this.validateProfileOptions(cfg.profileOptions); - errors.push(...profileErrors); - } - - return errors; - } - - private validateValidatorOptions(config: unknown): ConfigValidationError[] { - const errors: ConfigValidationError[] = []; - - if (typeof config !== "object" || config === null) { - errors.push({ - path: "typescript.validatorOptions", - message: "validatorOptions must be an object", - value: config, - }); - return errors; - } - - const cfg = config as Record; - - // Validate boolean fields - const booleanFields = [ - "includeCardinality", - "includeTypes", - "includeConstraints", - "includeInvariants", - "validateRequired", - "allowAdditional", - "strictValidation", - "collectMetrics", - "generateAssertions", - "generatePartialValidators", - "optimizePerformance", - "includeJSDoc", - "generateCompositeValidators", - ]; - - for (const field of booleanFields) { - if (cfg[field] !== undefined && typeof cfg[field] !== "boolean") { - errors.push({ - path: `typescript.validatorOptions.${field}`, - message: `${field} must be a boolean`, - value: cfg[field], - }); - } - } - - return errors; - } - - private validateGuardOptions(config: unknown): ConfigValidationError[] { - const errors: ConfigValidationError[] = []; - - if (typeof config !== "object" || config === null) { - errors.push({ - path: "typescript.guardOptions", - message: "guardOptions must be an object", - value: config, - }); - return errors; - } - - const cfg = config as Record; - - // Validate targetTSVersion - if (cfg.targetTSVersion !== undefined) { - if (!["3.8", "4.0", "4.5", "5.0"].includes(cfg.targetTSVersion as string)) { - errors.push({ - path: "typescript.guardOptions.targetTSVersion", - message: 'targetTSVersion must be one of: "3.8", "4.0", "4.5", "5.0"', - value: cfg.targetTSVersion, - }); - } - } - - // Validate boolean fields - const booleanFields = [ - "includeRuntimeValidation", - "includeErrorMessages", - "treeShakeable", - "strictGuards", - "includeNullChecks", - "verbose", - ]; - - for (const field of booleanFields) { - if (cfg[field] !== undefined && typeof cfg[field] !== "boolean") { - errors.push({ - path: `typescript.guardOptions.${field}`, - message: `${field} must be a boolean`, - value: cfg[field], - }); - } - } - - return errors; - } - - private validateProfileOptions(config: unknown): ConfigValidationError[] { - const errors: ConfigValidationError[] = []; - - if (typeof config !== "object" || config === null) { - errors.push({ - path: "typescript.profileOptions", - message: "profileOptions must be an object", - value: config, - }); - return errors; - } - - const cfg = config as Record; - - // Validate subfolder - if (cfg.subfolder !== undefined && typeof cfg.subfolder !== "string") { - errors.push({ - path: "typescript.profileOptions.subfolder", - message: "subfolder must be a string", - value: cfg.subfolder, - }); - } - - // Validate boolean fields - const booleanFields = ["includeConstraints", "includeDocumentation", "strictMode"]; - - for (const field of booleanFields) { - if (cfg[field] !== undefined && typeof cfg[field] !== "boolean") { - errors.push({ - path: `typescript.profileOptions.${field}`, - message: `${field} must be a boolean`, - value: cfg[field], - }); - } - } - - return errors; - } - - private validateTypeSchemaConfig(config: unknown): ConfigValidationError[] { - const errors: ConfigValidationError[] = []; - - if (typeof config !== "object" || config === null) { - errors.push({ - path: "typeSchema", - message: "typeSchema config must be an object", - value: config, - }); - return errors; - } - - const cfg = config as Record; - - // Validate boolean fields - const booleanFields = ["enablePersistence", "validateCached", "forceRegenerate", "shareCache"]; - - for (const field of booleanFields) { - if (cfg[field] !== undefined && typeof cfg[field] !== "boolean") { - errors.push({ - path: `typeSchema.${field}`, - message: `${field} must be a boolean`, - value: cfg[field], - }); - } - } - - // Validate string fields - const stringFields = ["cacheDir", "cacheKeyPrefix"]; - - for (const field of stringFields) { - if (cfg[field] !== undefined && typeof cfg[field] !== "string") { - errors.push({ - path: `typeSchema.${field}`, - message: `${field} must be a string`, - value: cfg[field], - }); - } - } - - // Validate maxAge - if (cfg.maxAge !== undefined) { - if (typeof cfg.maxAge !== "number" || cfg.maxAge <= 0) { - errors.push({ - path: "typeSchema.maxAge", - message: "maxAge must be a positive number", - value: cfg.maxAge, - }); - } - } - - // Validate profiles - if (cfg.profiles !== undefined) { - if (typeof cfg.profiles !== "object" || cfg.profiles === null) { - errors.push({ - path: "typeSchema.profiles", - message: "profiles must be an object", - value: cfg.profiles, - }); - } else { - const profiles = cfg.profiles as Record; - - // Validate autoDetect - if (profiles.autoDetect !== undefined && typeof profiles.autoDetect !== "boolean") { - errors.push({ - path: "typeSchema.profiles.autoDetect", - message: "autoDetect must be a boolean", - value: profiles.autoDetect, - }); - } - } - } - - return errors; - } -} - -/** - * Configuration loader with autoloading capabilities - */ -export class ConfigLoader { - private validator = new ConfigValidator(); - - /** - * Auto-load configuration from the current working directory - */ - async autoload(workingDir: string = process.cwd()): Promise { - const configPath = await this.findConfigFile(workingDir); - - if (configPath) { - return this.loadFromFile(configPath); - } - - // Return default config if no file found - return { ...DEFAULT_CONFIG }; - } - - /** - * Load configuration from a specific file - */ - async loadFromFile(filePath: string): Promise { - try { - let config: unknown; - - if (filePath.endsWith(".ts") || filePath.endsWith("")) { - // Use dynamic import for TypeScript/JavaScript files - const absolutePath = resolve(filePath); - const importResult = await import(absolutePath); - config = importResult.default || importResult; - } else { - // JSON files - const content = await readFile(filePath, "utf-8"); - config = JSON.parse(content); - } - - const validation = this.validator.validate(config); - - if (!validation.valid) { - const errorMessages = validation.errors.map((e) => `${e.path}: ${e.message}`).join("\n"); - throw new Error(`Configuration validation failed:\n${errorMessages}`); - } - - // Merge with defaults - if (!validation.config) throw new Error("Invalid configuration"); - return this.mergeWithDefaults(validation.config); - } catch (error) { - if (error instanceof Error) { - throw new Error(`Failed to load config from ${filePath}: ${error.message}`); - } - throw error; - } - } - - /** - * Find configuration file in the given directory - */ - private async findConfigFile(startDir: string): Promise { - for (const fileName of CONFIG_FILE_NAMES) { - const configPath = resolve(startDir, fileName); - if (existsSync(configPath)) { - return configPath; - } - } - return null; - } - - /** - * Merge user config with defaults - */ - private mergeWithDefaults(userConfig: Config): Config { - const merged: Config = { - ...DEFAULT_CONFIG, - ...userConfig, - typescript: { - ...DEFAULT_CONFIG.typescript, - ...userConfig.typescript, - }, - }; - - return merged; - } -} - -/** - * Global config loader instance - */ -export const configLoader = new ConfigLoader(); - -/** - * Convenience function to auto-load configuration - */ -export async function loadConfig(workingDir?: string): Promise { - return configLoader.autoload(workingDir); -} - -/** - * Type guard to check if an object is a valid Config - */ -export function isConfig(obj: unknown): obj is Config { - const validator = new ConfigValidator(); - const result = validator.validate(obj); - return result.valid; -} - -/** - * Define configuration with type safety and IntelliSense support. - * Similar to Vite's defineConfig function pattern. - * - * @example - * ```typescript - * import { defineConfig } from "@atomic-ehr/codegen"; - * - * export default defineConfig({ - * outputDir: "./generated", - * packages: [ - * "hl7.fhir.r4.core@4.0.1", - * "hl7.fhir.us.core@6.1.0" - * ], - * typescript: { - * generateIndex: true, - * strictMode: true - * } - * }); - * ``` - */ -export function defineConfig(config: Config): Config { - return config; -} diff --git a/src/index.ts b/src/index.ts index 960acdeb..593004bc 100644 --- a/src/index.ts +++ b/src/index.ts @@ -81,6 +81,3 @@ // Export new high-level API (primary) export * from "./api/index"; - -// Export new config system -export * from "./config";