UNPKG

@synanetics/fhir-fml-convert

Version:

Converts StructureMaps written in FML to JSON ($convert operation)

74 lines 2.65 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.StructureMapVisitorR5 = void 0; const structureMapDefinition_json_1 = __importDefault(require("./res/r5/structureMapDefinition.json")); const types_json_1 = __importDefault(require("./res/r5/types.json")); const StructureMapVisitor_1 = require("./StructureMapVisitor"); class StructureMapVisitorR5 extends StructureMapVisitor_1.StructureMapVisitor { constructor() { super(); this.fhirVersion = 'R5'; 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, parameter: i.paramList().param().map(((p) => { if (p.literal()) { const value = this.getValueFromLiteral(p.literal()); return { [`value${value?.type[0].toUpperCase()}${value?.type.substring(1)}`]: value?.value, }; } return { valueId: p.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: 'defaultValue', value: ctx.fhirPath().text, }; } visitRuleSources(ctx) { // @ts-ignore return ctx.ruleSource().map((src) => ({ ...this.getBaseRuleSource(src), logMessage: src.log()?.fhirPath().text, })); } } exports.StructureMapVisitorR5 = StructureMapVisitorR5; //# sourceMappingURL=StructureMapVisitorR5.js.map