UNPKG

fhir-snapshot-generator

Version:
1 lines 110 kB
{"version":3,"sources":["../src/utils/element/applyDiffs.ts","../src/utils/element/ensureChild.ts","../src/utils/element/ensureBranch.ts","../src/utils/element/toNodeType.ts","../src/utils/element/injectElementBlock.ts","../src/utils/element/mergeElement.ts","../src/utils/element/elementExists.ts","../src/utils/element/rewriteElementPaths.ts","../src/utils/element/migrateElements.ts","../src/utils/element/findMonopolyShortcutTarget.ts","../src/utils/tree/expandNode.ts","../src/utils/tree/fromTree.ts","../src/utils/tree/toTree.ts","../src/utils/tree/rewriteNodePaths.ts","../src/utils/tree/isNodeSliceable.ts","../src/utils/misc/logger.ts","../src/utils/misc/resolveFhirVersion.ts","../src/utils/misc/resolveBasePackage.ts","../src/utils/misc/definitionFetcher.ts","../src/utils/misc/initCap.ts","../package.json","../src/utils/misc/getVersionedCacheDir.ts","../src/index.ts"],"names":["rewrite","slice","version","DefinitionFetcher","elements","path","fs"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\r\n * © Copyright Outburn Ltd. 2022-2025 All Rights Reserved\r\n * Project name: fhir-snapshot-generator\r\n */\r\n\r\nimport { ElementDefinition, Logger } from '@outburn/types';\r\nimport { ensureBranch, mergeElement, elementExists, DefinitionFetcher } from '..';\r\n\r\n/**\r\n * Apply a single diff element to the working snapshot array and return the updated array.\r\n * The existing element will be replaced by the result of merging it with the diff element.\r\n * This function assumes that an element with the same id already exists in the working snapshot array.\r\n * If the element does not exist, an error will be thrown.\r\n * @param elements working snapshot array\r\n * @param diffElement the diff element to apply\r\n * @returns the updated element array after applying the diff element\r\n */\r\nexport const applySingleDiff = (elements: ElementDefinition[], diffElement: ElementDefinition): ElementDefinition[] => {\r\n const index = elements.findIndex(el => el.id === diffElement.id);\r\n if (index === -1) {\r\n throw new Error(`Element with id \"${diffElement.id}\" not found`);\r\n }\r\n const baseElement = { ...elements[index]}; // create a shallow copy of the base element\r\n const mergedElement = mergeElement(baseElement, diffElement);\r\n\r\n // if the resulting element has a sliceName but the id does not, remove sliceName.\r\n // This is a remnant of aplying a diff on a monopoly using slices\r\n if (mergedElement.sliceName && !mergedElement.id.endsWith(`:${mergedElement.sliceName}`)) {\r\n delete mergedElement.sliceName;\r\n }\r\n const updatedElements = [...elements.slice(0, index), mergedElement, ...elements.slice(index + 1)];\r\n return updatedElements;\r\n};\r\n\r\n/**\r\n * Rewrite the given id or path based on the path rewrite map.\r\n * This is used to handle the shortcut form of monopolized elements,\r\n * where valueString is both a type constraint and a differential on value[x].\r\n * After rewrite, the canonical value[x] path segment will be used.\r\n * The actual type constraint whould have already been applied to the working snapshot as a virtual diff during ensureChild.\r\n * @param original the original string to rewrite\r\n * @param kind the kind of rewrite to perform ('id' or 'path')\r\n * @returns \r\n */\r\nconst rewrite = (original: string, kind: 'id' | 'path', pathRewriteMap: Map<string, { id: string, path: string }>) => {\r\n for (const [illegalPrefix, rewrite] of pathRewriteMap.entries()) {\r\n if (original === illegalPrefix || original.startsWith(illegalPrefix + '.')) {\r\n return original.replace(illegalPrefix, rewrite[kind]);\r\n }\r\n }\r\n return original;\r\n};\r\n\r\n\r\n/**\r\n * Apply all diffs to the working snapshot array, in order, and return the updated array.\r\n * Missing (but valid) elements and their containing branches will be added to the working snapshot array on the fly.\r\n * The diff is an array of ElementDefinition objects that will be applied to the target element.\r\n * @param elements working snapshot array\r\n * @param diffElements the diff elements to apply\r\n * @returns the updated element array after applying the diff elements\r\n */\r\nexport const applyDiffs = async (elements: ElementDefinition[], diffs: ElementDefinition[], fetcher: DefinitionFetcher, logger: Logger): Promise<ElementDefinition[]> => {\r\n // working snapshot array. will accumulate all changes and be returned at the end.\r\n let updatedElements = [...elements];\r\n \r\n // map to keep track of path rewrites for shortcut forms of monopolized elements (e.g. \"valueString\" as a type constraint on \"value[x]\")\r\n const pathRewriteMap = new Map<string, { id: string, path: string }>();\r\n\r\n // remove extension array from root element if it exists\r\n if (updatedElements[0].extension) {\r\n delete updatedElements[0].extension;\r\n }\r\n // if no diffs - return the elements array as is\r\n if (diffs.length === 0) return updatedElements;\r\n for (const diff of diffs) {\r\n if (!elementExists(updatedElements, diff.id)) {\r\n // ensure the entire path to the target element exists in the working snapshot array\r\n updatedElements = await ensureBranch(updatedElements, diff.id, fetcher, logger, pathRewriteMap);\r\n }\r\n\r\n // If during ensureBranch some parts of the id/path have been rewritten, fix the id and path accordingly\r\n const rewrittenDiff = {\r\n ...diff,\r\n id: rewrite(diff.id, 'id', pathRewriteMap),\r\n path: rewrite(diff.path, 'path', pathRewriteMap)\r\n };\r\n \r\n // apply the diff element to the working snapshot array\r\n updatedElements = applySingleDiff(updatedElements, rewrittenDiff);\r\n }\r\n return updatedElements;\r\n};","/**\r\n * © Copyright Outburn Ltd. 2022-2025 All Rights Reserved\r\n * Project name: fhir-snapshot-generator\r\n */\r\n\r\nimport {\r\n rewriteNodePaths,\r\n toTree,\r\n fromTree,\r\n isNodeSliceable,\r\n expandNode,\r\n injectElementBlock,\r\n DefinitionFetcher,\r\n findMonopolyShortcutTarget,\r\n applySingleDiff,\r\n initCap\r\n} from '..';\r\n\r\nimport { ElementDefinition } from '@outburn/types';\r\n\r\n/**\r\n * Takes a parent node and a child id, and ensures that the child exists in the working snapshot array.\r\n * If the child does not exist, it will be created by expanding the parent or creating the slice.\r\n * @param elements working snapshot array\r\n * @param parentId the full path of the parent node to look for the child in\r\n * @param childId the last segment of the child element id to look for, e.g \"identifier:foo\" or \"system\"\r\n * @param fetcher the definition fetcher to use for expanding the node\r\n * @param logger the logger to use for logging messages\r\n * @returns the updated element array after child was added\r\n */\r\nexport const ensureChild = async (\r\n elements: ElementDefinition[],\r\n parentId: string,\r\n childId: string,\r\n fetcher: DefinitionFetcher,\r\n pathRewriteMap: Map<string, { id: string, path: string }>\r\n): Promise<ElementDefinition[]> => {\r\n const parentElementBlock = elements.filter(element => element.id === parentId || element.id.startsWith(`${parentId}.`));\r\n if (parentElementBlock.length === 0) {\r\n throw new Error(`Parent element '${parentId}' not found in the working snapshot array`);\r\n }\r\n let parentNode = toTree(parentElementBlock);\r\n if (isNodeSliceable(parentNode)) {\r\n parentNode = parentNode.children[0]; // headslice is always the first child\r\n }\r\n const isExpanded = parentNode.children.length > 0;\r\n if (!isExpanded) {\r\n parentNode = await expandNode(parentNode, fetcher);\r\n elements = injectElementBlock(elements, parentId, fromTree(parentNode));\r\n }\r\n const [ elementName, sliceName ] = childId.split(':');\r\n \r\n // Try to find a direct child with the expected segment name\r\n const childElement = parentNode.children.find(element => element.id.endsWith(`.${elementName}`));\r\n \r\n if (!childElement) {\r\n // Check if it's a shortcut to a polymorphic element\r\n const match = findMonopolyShortcutTarget(parentId, elementName, parentNode.children);\r\n if (match) {\r\n const canonicalId = `${parentId}.${match.rewrittenSegment}`;\r\n const elementDefinition = elements.find(e => e.id === canonicalId);\r\n const canonicalPath = elementDefinition?.path ?? canonicalId;\r\n\r\n // Register the rewritten ID and path for future rewriting\r\n pathRewriteMap.set(`${parentId}.${elementName}`, {\r\n id: canonicalId,\r\n path: canonicalPath\r\n });\r\n\r\n // Apply a virtual diff that constrains the polymorphic type\r\n const virtualDiff: ElementDefinition = {\r\n id: canonicalId,\r\n path: canonicalPath,\r\n type: [{ code: match.type }]\r\n };\r\n\r\n elements = applySingleDiff(elements, virtualDiff);\r\n return elements;\r\n }\r\n\r\n // If still not found → this is truly illegal\r\n throw new Error(`Element '${childId}' is illegal under '${parentId}'.`);\r\n }\r\n\r\n if (!sliceName) return elements; // referring to child itself and it exists. nothing to do.\r\n \r\n // referring to a slice\r\n\r\n // if child is not sliceable, no slices are allowed but we must be forgiving for this since some HL7 profiles do it.\r\n // Ex: The 'catalog' profile on Composition has a \"date:IssueDate\" diff while \"date\" is not sliceable.\r\n if (!isNodeSliceable(childElement)) {\r\n // ignore the sliceName and return the elements as is after registering the path rewrite\r\n const aliasId = `${childElement.id}:${sliceName}`;\r\n pathRewriteMap.set(aliasId, {\r\n id: childElement.id,\r\n path: childElement.path\r\n });\r\n return elements;\r\n }\r\n // find the slice by name\r\n const slice = childElement.children.find(slice => slice.sliceName === sliceName);\r\n\r\n // if found - it's already in the element array. nothing to do.\r\n if (slice) {\r\n return elements;\r\n }\r\n if (!slice) {\r\n // Potentially a monopoly alias — check type\r\n if (elementName.endsWith('[x]') && childElement.children[0].definition?.type?.length === 1) {\r\n const onlyType = childElement.children[0].definition.type[0].code;\r\n const monopolySliceName = `${elementName.slice(0, -3)}${initCap(onlyType)}`;\r\n\r\n if (sliceName === monopolySliceName) {\r\n // Monopoly alias - treat this element id as canonical for the head slice\r\n const aliasId = `${childElement.id}:${sliceName}`;\r\n const aliasPath = childElement.path; // path never contains slice names\r\n\r\n pathRewriteMap.set(aliasId, {\r\n id: childElement.id,\r\n path: aliasPath\r\n });\r\n\r\n return elements;\r\n }\r\n }\r\n\r\n // ✅ Truly needs a new slice → proceed with slice creation\r\n const headSlice = childElement.children[0];\r\n const newId = `${headSlice.id}:${sliceName}`;\r\n\r\n const newSlice = rewriteNodePaths(headSlice, newId, headSlice.id);\r\n newSlice.nodeType = 'slice';\r\n delete newSlice.definition?.slicing;\r\n delete newSlice.definition?.mustSupport;\r\n newSlice.sliceName = sliceName;\r\n if (newSlice.definition) {\r\n newSlice.definition.sliceName = sliceName;\r\n }\r\n\r\n childElement.children.push(newSlice);\r\n elements = injectElementBlock(elements, childElement.id, fromTree(childElement));\r\n }\r\n return elements;\r\n};","/**\r\n * © Copyright Outburn Ltd. 2022-2025 All Rights Reserved\r\n * Project name: fhir-snapshot-generator\r\n */\r\n\r\nimport { ElementDefinition, Logger } from '@outburn/types';\r\nimport { DefinitionFetcher, ensureChild } from '..';\r\n\r\n/**\r\n * Walks the path segements up to the target, expanding child elements and creating slices as needed.\r\n * @param elements working snapshot array\r\n * @param targetElementId target element id\r\n * * @returns the updated element array after entire path to target element was added\r\n */\r\nexport const ensureBranch = async (\r\n elements: ElementDefinition[],\r\n targetElementId: string,\r\n fetcher: DefinitionFetcher,\r\n logger: Logger,\r\n pathRewriteMap: Map<string, { id: string, path: string }>\r\n): Promise<ElementDefinition[]> => {\r\n const idSegments = targetElementId.split('.');\r\n const rootId = idSegments[0];\r\n let updatedElements = elements;\r\n // check that root matches the first element in the array\r\n if (elements[0].id !== rootId) {\r\n throw new E