UNPKG

@synanetics/fhir-fml-convert

Version:

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

71 lines 5.44 kB
import { ParseTree } from 'antlr4ts/tree/ParseTree'; import { ErrorNode } from 'antlr4ts/tree/ErrorNode'; import { StructureDefinition as StructureDefinitionSTU3, StructureMap as StructureMapSTU3, StructureMapGroup as StructureMapGroupSTU3, StructureMapGroupRule as StructureMapGroupRuleSTU3, StructureMapGroupRuleSource as StructureMapGroupRuleSourceSTU3, StructureMapGroupRuleTarget as StructureMapGroupRuleTargetSTU3, StructureMapStructure as StructureMapStructureSTU3, StructureMapGroupRuleTargetParameter as StructureMapGroupRuleTargetParameterSTU3 } from 'fhir/r3'; import { StructureDefinition as StructureDefinitionR4, StructureMap as StructureMapR4, StructureMapGroup as StructureMapGroupR4, StructureMapGroupRule as StructureMapGroupRuleR4, StructureMapGroupRuleSource as StructureMapGroupRuleSourceR4, StructureMapGroupRuleTarget as StructureMapGroupRuleTargetR4, StructureMapStructure as StructureMapStructureR4, StructureMapGroupRuleTargetParameter as StructureMapGroupRuleTargetParameterR4 } from 'fhir/r4'; import { StructureDefinition as StructureDefinitionR5, StructureMap as StructureMapR5, StructureMapGroup as StructureMapGroupR5, StructureMapGroupRule as StructureMapGroupRuleR5, StructureMapGroupRuleSource as StructureMapGroupRuleSourceR5, StructureMapGroupRuleTarget as StructureMapGroupRuleTargetR5, StructureMapStructure as StructureMapStructureR5, StructureMapGroupRuleTargetParameter as StructureMapGroupRuleTargetParameterR5 } from 'fhir/r5'; import { StructureMapContext, GroupContext, RuleDefinitionContext, MapIdContext, StructureContext, RuleSourcesContext, RuleTargetsContext, MetadataContext, LiteralContext, RuleNameContext, SourceDefaultContext, RuleSourceContext, ImportsContext } from './generated/FhirMapperParser'; import { FhirMapperVisitor } from './generated/FhirMapperVisitor'; import { FhirPrimitiveValue, FhirVersion } from './types'; type Overwrite<T, U> = Omit<T, keyof U> & U; type StructureDefinition = StructureDefinitionSTU3 | StructureDefinitionR4 | StructureDefinitionR5; type StructureMap = StructureMapSTU3 | StructureMapR4 | StructureMapR5; type StructureMapGroup = StructureMapGroupSTU3 | StructureMapGroupR4 | StructureMapGroupR5; type StructureMapGroupRule = StructureMapGroupRuleSTU3 | StructureMapGroupRuleR4 | StructureMapGroupRuleR5; type StructureMapGroupRuleSource = StructureMapGroupRuleSourceSTU3 | StructureMapGroupRuleSourceR4 | StructureMapGroupRuleSourceR5; type StructureMapGroupRuleTargetParameter = StructureMapGroupRuleTargetParameterSTU3 | StructureMapGroupRuleTargetParameterR4 | StructureMapGroupRuleTargetParameterR5; type StructureMapGroupRuleTarget = Overwrite<StructureMapGroupRuleTargetSTU3, { parameter?: StructureMapGroupRuleTargetParameter[]; }> | Overwrite<StructureMapGroupRuleTargetR4, { parameter?: StructureMapGroupRuleTargetParameter[]; }> | Overwrite<StructureMapGroupRuleTargetR5, { parameter?: StructureMapGroupRuleTargetParameter[]; }>; type StructureMapStructure = StructureMapStructureSTU3 | StructureMapStructureR4 | StructureMapStructureR5; /** * The `StructureMapVisitor` class iterates over the token parsed from the FML and returns the * fragment of the StructureMap object to which the token pertains. It is an extension of the * automatically-generated FhirMapperVisitor. */ export declare abstract class StructureMapVisitor implements FhirMapperVisitor<any> { readonly METADATA_KEYS: Array<keyof StructureMap>; protected structureMapDefinition: StructureDefinition; protected fhirTypes: Partial<StructureDefinition>[]; protected fhirVersion: FhirVersion; visit(tree: ParseTree): any; visitTerminal(): void; visitErrorNode(node: ErrorNode): void; visitStructureMap(ctx: StructureMapContext): StructureMap; /** * Returns a typed value from the inbound metadata field, according to the type expected by the * StructureMap FHIR profile * @param type The primitive type from the FHIR profile that this field is allowed to be. * @param parsedValue The value from the metadata field. * @returns */ private getPrimitiveValue; visitMetadata(ctx: MetadataContext): Partial<StructureDefinition>; visitMapId(ctx: MapIdContext): Pick<StructureMap, 'url' | 'name'>; visitStructure(ctx: StructureContext): StructureMapStructure; visitImports(ctx: ImportsContext): string; visitGroup(ctx: GroupContext): StructureMapGroup; protected getRuleName(ctx?: RuleNameContext, ruleSource?: StructureMapGroupRuleSource): string; abstract visitRuleDefinition(ctx: RuleDefinitionContext): StructureMapGroupRule; abstract getDefaultValue(ctx: SourceDefaultContext): { key: string; value: string; }; protected getBaseRuleSource(ctx: RuleSourceContext): StructureMapGroupRuleSource; abstract visitRuleSources(ctx: RuleSourcesContext): StructureMapGroupRuleSource[]; private sanitiseString; /** * Converts the "literal" value from the FML to a JavaScript type and its accompanying named FHIR * Type * @param literal The parsed "literal" token from the FML * @returns The FHIR primitive type and the actual value from the token. */ protected getValueFromLiteral(literal: LiteralContext): FhirPrimitiveValue | undefined; visitRuleTargets(ctx: RuleTargetsContext): StructureMapGroupRuleTarget[]; visitChildren(): any; } export {}; //# sourceMappingURL=StructureMapVisitor.d.ts.map