@synanetics/fhir-fml-convert
Version:
Converts StructureMaps written in FML to JSON ($convert operation)
63 lines • 2.2 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.StructureMapVisitorR4 = void 0;
const structureMapDefinition_json_1 = __importDefault(require("./res/r4/structureMapDefinition.json"));
const types_json_1 = __importDefault(require("./res/r4/types.json"));
const StructureMapVisitor_1 = require("./StructureMapVisitor");
class StructureMapVisitorR4 extends StructureMapVisitor_1.StructureMapVisitor {
constructor() {
super();
this.fhirVersion = 'R4';
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),
logMessage: src.log()?.fhirPath().text,
}));
}
}
exports.StructureMapVisitorR4 = StructureMapVisitorR4;
//# sourceMappingURL=StructureMapVisitorR4.js.map