@synanetics/fhir-fml-convert
Version:
Converts StructureMaps written in FML to JSON ($convert operation)
74 lines • 2.65 kB
JavaScript
;
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