UNPKG

@synanetics/fhir-fml-convert

Version:

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

43 lines 1.86 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const antlr4ts_1 = require("antlr4ts"); const FhirMapperLexer_1 = require("./generated/FhirMapperLexer"); const FhirMapperParser_1 = require("./generated/FhirMapperParser"); const StructureMapVisitorSTU3_1 = require("./StructureMapVisitorSTU3"); const StructureMapVisitorR5_1 = require("./StructureMapVisitorR5"); const StructureMapVisitorR4_1 = require("./StructureMapVisitorR4"); /** * Converts the supplied FML into a FHIR StructureMap, according the the [ANTLR grammar](https://www.hl7.org/fhir/mapping.g4) * @param fml The FML string * @param options Options for performing the conversion, such as the desired FHIR version of the * resultant StructureMap. * @returns A deserialised FHIR StructureMap resource. */ function convert(fml, options) { const input = antlr4ts_1.CharStreams.fromString(fml); const lexer = new FhirMapperLexer_1.FhirMapperLexer(input); lexer.removeErrorListeners(); // @ts-ignore const tokens = new antlr4ts_1.CommonTokenStream(lexer); const parser = new FhirMapperParser_1.FhirMapperParser(tokens); parser.removeErrorListeners(); const tree = parser.structureMap(); let visitor; const version = options?.fhirVersion ?? 'R4'; switch (version) { case 'STU3': visitor = new StructureMapVisitorSTU3_1.StructureMapVisitorSTU3(); break; case 'R5': visitor = new StructureMapVisitorR5_1.StructureMapVisitorR5(); break; case 'R4': visitor = new StructureMapVisitorR4_1.StructureMapVisitorR4(); break; default: throw new Error(`Unsupported FHIR version from options.fhirVersion: ${version}`); } return visitor.visit(tree); } exports.default = convert; //# sourceMappingURL=index.js.map