@synanetics/fhir-fml-convert
Version:
Converts StructureMaps written in FML to JSON ($convert operation)
60 lines • 2.13 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.StructureMapVisitorSTU3 = void 0;
const structureMapDefinition_json_1 = __importDefault(require("./res/stu3/structureMapDefinition.json"));
const types_json_1 = __importDefault(require("./res/stu3/types.json"));
const StructureMapVisitor_1 = require("./StructureMapVisitor");
class StructureMapVisitorSTU3 extends StructureMapVisitor_1.StructureMapVisitor {
constructor() {
super();
this.fhirVersion = 'STU3';
this.structureMapDefinition = structureMapDefinition_json_1.default;
this.fhirTypes = types_json_1.default
.entry
.map((e) => ({
id: e.resource.id,
kind: e.resource?.kind,
type: e.resource?.type,
snapshot: e.resource?.snapshot,
}));
}
visitRuleDefinition(ctx) {
const sources = ctx.ruleSources()?.accept(this) ?? [];
const targets = ctx.ruleTargets()?.accept(this) ?? [];
const dependent = ctx
.dependent()
?.namedInvocation()
.map((i) => ({
name: i.variableId().text,
variable: i.paramList().param().map((p) => p.text),
}));
const rule = ctx
.dependent()
?.rules()
?.ruleDefinition()
?.map((r) => r.accept(this));
const ruleDef = {
name: this.getRuleName(ctx.ruleName(), sources[0]),
source: sources,
target: targets,
rule,
dependent,
};
return ruleDef;
}
getDefaultValue(ctx) {
return {
key: 'defaultValueString',
value: ctx.fhirPath().text,
};
}
visitRuleSources(ctx) {
// @ts-ignore
return ctx.ruleSource().map((src) => this.getBaseRuleSource(src));
}
}
exports.StructureMapVisitorSTU3 = StructureMapVisitorSTU3;
//# sourceMappingURL=StructureMapVisitorSTU3.js.map