@cornerstonejs/adapters 2.1.10 → 2.1.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +0,0 @@
1
- {"version":3,"file":"adapters.umd.js","sources":["../../src/adapters/helpers/toArray.ts","../../src/adapters/helpers/codeMeaningEquals.ts","../../src/adapters/helpers/graphicTypeEquals.ts","../../src/adapters/helpers/downloadDICOMData.ts","../../src/adapters/Cornerstone/MeasurementReport.js","../../src/adapters/Cornerstone/cornerstone4Tag.js","../../src/adapters/Cornerstone/Length.js","../../src/adapters/Cornerstone/FreehandRoi.js","../../src/adapters/Cornerstone/Bidirectional.js","../../src/adapters/Cornerstone/EllipticalRoi.js","../../src/adapters/Cornerstone/CircleRoi.js","../../src/adapters/Cornerstone/ArrowAnnotate.js","../../src/adapters/Cornerstone/CobbAngle.js","../../src/adapters/Cornerstone/Angle.js","../../src/adapters/Cornerstone/RectangleRoi.js","../../src/adapters/helpers/getDatasetsFromImages.ts","../../src/adapters/Cornerstone/Segmentation_3X.js","../../src/adapters/helpers/checkIfPerpendicular.ts","../../src/adapters/helpers/compareArrays.ts","../../src/adapters/helpers/checkOrientation.ts","../../src/adapters/enums/Events.ts","../../src/adapters/Cornerstone/Segmentation_4X.js","../../src/adapters/Cornerstone/Segmentation.js","../../src/adapters/Cornerstone/ParametricMap.ts","../../src/adapters/Cornerstone/index.ts","../../src/adapters/Cornerstone3D/cornerstone3DTag.js","../../src/adapters/Cornerstone3D/CodingScheme.js","../../src/adapters/Cornerstone3D/MeasurementReport.ts","../../src/adapters/Cornerstone3D/ArrowAnnotate.js","../../src/adapters/Cornerstone3D/Bidirectional.ts","../../src/adapters/Cornerstone3D/Angle.ts","../../src/adapters/Cornerstone3D/CobbAngle.ts","../../src/adapters/Cornerstone3D/isValidCornerstoneTrackingIdentifier.ts","../../src/adapters/Cornerstone3D/CircleROI.ts","../../src/adapters/Cornerstone3D/EllipticalROI.ts","../../src/adapters/Cornerstone3D/RectangleROI.ts","../../src/adapters/Cornerstone3D/Length.js","../../src/adapters/Cornerstone3D/PlanarFreehandROI.ts","../../src/adapters/Cornerstone3D/Probe.js","../../src/adapters/Cornerstone3D/UltrasoundDirectional.ts","../../src/adapters/Cornerstone3D/Segmentation/generateSegmentation.ts","../../src/adapters/Cornerstone3D/Segmentation/generateLabelMaps2DFrom3D.ts","../../src/adapters/Cornerstone3D/Segmentation/generateToolState.ts","../../src/adapters/Cornerstone3D/ParametricMap/generateToolState.js","../../src/adapters/Cornerstone3D/RTStruct/utilities/getPatientModule.js","../../src/adapters/Cornerstone3D/RTStruct/utilities/getReferencedFrameOfReferenceSequence.js","../../src/adapters/Cornerstone3D/RTStruct/utilities/getReferencedSeriesSequence.js","../../src/adapters/Cornerstone3D/RTStruct/utilities/getRTROIObservationsSequence.js","../../src/adapters/Cornerstone3D/RTStruct/utilities/getRTSeriesModule.js","../../src/adapters/Cornerstone3D/RTStruct/utilities/getStructureSetModule.js","../../src/adapters/Cornerstone3D/RTStruct/RTSS.ts","../../src/adapters/Cornerstone3D/RTStruct/index.ts","../../src/adapters/Cornerstone3D/index.ts","../../src/adapters/VTKjs/Segmentation.js","../../src/adapters/VTKjs/index.ts","../../src/adapters/index.ts"],"sourcesContent":["const toArray = x => (Array.isArray(x) ? x : [x]);\nexport { toArray };\n","const codeMeaningEquals = (codeMeaningName) => {\n return contentItem => {\n return (contentItem.ConceptNameCodeSequence.CodeMeaning === codeMeaningName);\n };\n};\nexport { codeMeaningEquals };\n","const graphicTypeEquals = graphicType => {\n return contentItem => {\n return contentItem && contentItem.GraphicType === graphicType;\n };\n};\nexport { graphicTypeEquals };\n","import { data } from \"dcmjs\";\nimport { Buffer } from \"buffer\";\nconst { datasetToDict } = data;\nexport function downloadDICOMData(bufferOrDataset, filename) {\n let blob;\n if (bufferOrDataset instanceof ArrayBuffer) {\n blob = new Blob([bufferOrDataset], { type: \"application/dicom\" });\n }\n else {\n if (!bufferOrDataset._meta) {\n throw new Error(\"Dataset must have a _meta property\");\n }\n const buffer = Buffer.from(datasetToDict(bufferOrDataset).write());\n blob = new Blob([buffer], { type: \"application/dicom\" });\n }\n const link = document.createElement(\"a\");\n link.href = window.URL.createObjectURL(blob);\n link.download = filename;\n link.click();\n}\n","import { normalizers, data, utilities, derivations } from \"dcmjs\";\n\nimport { toArray, codeMeaningEquals } from \"../helpers\";\n\nconst { TID1500, addAccessors } = utilities;\n\nconst { StructuredReport } = derivations;\n\nconst { Normalizer } = normalizers;\n\nconst { TID1500MeasurementReport, TID1501MeasurementGroup } = TID1500;\n\nconst { DicomMetaDictionary } = data;\n\nconst FINDING = { CodingSchemeDesignator: \"DCM\", CodeValue: \"121071\" };\nconst FINDING_SITE = { CodingSchemeDesignator: \"SCT\", CodeValue: \"363698007\" };\nconst FINDING_SITE_OLD = { CodingSchemeDesignator: \"SRT\", CodeValue: \"G-C0E3\" };\n\nconst codeValueMatch = (group, code, oldCode) => {\n const { ConceptNameCodeSequence } = group;\n if (!ConceptNameCodeSequence) {\n return;\n }\n const { CodingSchemeDesignator, CodeValue } = ConceptNameCodeSequence;\n return (\n (CodingSchemeDesignator == code.CodingSchemeDesignator &&\n CodeValue == code.CodeValue) ||\n (oldCode &&\n CodingSchemeDesignator == oldCode.CodingSchemeDesignator &&\n CodeValue == oldCode.CodeValue)\n );\n};\n\nfunction getTID300ContentItem(\n tool,\n toolType,\n ReferencedSOPSequence,\n toolClass\n) {\n const args = toolClass.getTID300RepresentationArguments(tool);\n args.ReferencedSOPSequence = ReferencedSOPSequence;\n\n const TID300Measurement = new toolClass.TID300Representation(args);\n\n return TID300Measurement;\n}\n\nfunction getMeasurementGroup(toolType, toolData, ReferencedSOPSequence) {\n const toolTypeData = toolData[toolType];\n const toolClass =\n MeasurementReport.CORNERSTONE_TOOL_CLASSES_BY_TOOL_TYPE[toolType];\n if (\n !toolTypeData ||\n !toolTypeData.data ||\n !toolTypeData.data.length ||\n !toolClass\n ) {\n return;\n }\n\n // Loop through the array of tool instances\n // for this tool\n const Measurements = toolTypeData.data.map(tool => {\n return getTID300ContentItem(\n tool,\n toolType,\n ReferencedSOPSequence,\n toolClass\n );\n });\n\n return new TID1501MeasurementGroup(Measurements);\n}\n\nexport default class MeasurementReport {\n static getSetupMeasurementData(MeasurementGroup) {\n const { ContentSequence } = MeasurementGroup;\n\n const contentSequenceArr = toArray(ContentSequence);\n const findingGroup = contentSequenceArr.find(group =>\n codeValueMatch(group, FINDING)\n );\n const findingSiteGroups =\n contentSequenceArr.filter(group =>\n codeValueMatch(group, FINDING_SITE, FINDING_SITE_OLD)\n ) || [];\n const NUMGroup = contentSequenceArr.find(\n group => group.ValueType === \"NUM\"\n );\n const SCOORDGroup = toArray(NUMGroup.ContentSequence).find(\n group => group.ValueType === \"SCOORD\"\n );\n const { ReferencedSOPSequence } = SCOORDGroup.ContentSequence;\n const { ReferencedSOPInstanceUID, ReferencedFrameNumber } =\n ReferencedSOPSequence;\n\n const defaultState = {\n sopInstanceUid: ReferencedSOPInstanceUID,\n frameIndex: ReferencedFrameNumber || 1,\n complete: true,\n finding: findingGroup\n ? addAccessors(findingGroup.ConceptCodeSequence)\n : undefined,\n findingSites: findingSiteGroups.map(fsg => {\n return addAccessors(fsg.ConceptCodeSequence);\n })\n };\n if (defaultState.finding) {\n defaultState.description = defaultState.finding.CodeMeaning;\n }\n const findingSite =\n defaultState.findingSites && defaultState.findingSites[0];\n if (findingSite) {\n defaultState.location =\n (findingSite[0] && findingSite[0].CodeMeaning) ||\n findingSite.CodeMeaning;\n }\n return {\n defaultState,\n findingGroup,\n findingSiteGroups,\n NUMGroup,\n SCOORDGroup,\n ReferencedSOPSequence,\n ReferencedSOPInstanceUID,\n ReferencedFrameNumber\n };\n }\n\n static generateReport(toolState, metadataProvider, options) {\n // ToolState for array of imageIDs to a Report\n // Assume Cornerstone metadata provider has access to Study / Series / Sop Instance UID\n\n let allMeasurementGroups = [];\n const firstImageId = Object.keys(toolState)[0];\n if (!firstImageId) {\n throw new Error(\"No measurements provided.\");\n }\n\n /* Patient ID\n Warning - Missing attribute or value that would be needed to build DICOMDIR - Patient ID\n Warning - Missing attribute or value that would be needed to build DICOMDIR - Study Date\n Warning - Missing attribute or value that would be needed to build DICOMDIR - Study Time\n Warning - Missing attribute or value that would be needed to build DICOMDIR - Study ID\n */\n const generalSeriesModule = metadataProvider.get(\n \"generalSeriesModule\",\n firstImageId\n );\n\n //const sopCommonModule = metadataProvider.get('sopCommonModule', firstImageId);\n\n // NOTE: We are getting the Series and Study UIDs from the first imageId of the toolState\n // which means that if the toolState is for multiple series, the report will have the incorrect\n // SeriesInstanceUIDs\n const { studyInstanceUID, seriesInstanceUID } = generalSeriesModule;\n\n // Loop through each image in the toolData\n Object.keys(toolState).forEach(imageId => {\n const sopCommonModule = metadataProvider.get(\n \"sopCommonModule\",\n imageId\n );\n const frameNumber = metadataProvider.get(\"frameNumber\", imageId);\n const toolData = toolState[imageId];\n const toolTypes = Object.keys(toolData);\n\n const ReferencedSOPSequence = {\n ReferencedSOPClassUID: sopCommonModule.sopClassUID,\n ReferencedSOPInstanceUID: sopCommonModule.sopInstanceUID\n };\n\n if (\n Normalizer.isMultiframeSOPClassUID(sopCommonModule.sopClassUID)\n ) {\n ReferencedSOPSequence.ReferencedFrameNumber = frameNumber;\n }\n\n // Loop through each tool type for the image\n const measurementGroups = [];\n\n toolTypes.forEach(toolType => {\n const group = getMeasurementGroup(\n toolType,\n toolData,\n ReferencedSOPSequence\n );\n if (group) {\n measurementGroups.push(group);\n }\n });\n\n allMeasurementGroups =\n allMeasurementGroups.concat(measurementGroups);\n });\n\n const MeasurementReport = new TID1500MeasurementReport(\n { TID1501MeasurementGroups: allMeasurementGroups },\n options\n );\n\n // TODO: what is the correct metaheader\n // http://dicom.nema.org/medical/Dicom/current/output/chtml/part10/chapter_7.html\n // TODO: move meta creation to happen in derivations.js\n const fileMetaInformationVersionArray = new Uint8Array(2);\n fileMetaInformationVersionArray[1] = 1;\n\n const derivationSourceDataset = {\n StudyInstanceUID: studyInstanceUID,\n SeriesInstanceUID: seriesInstanceUID\n //SOPInstanceUID: sopInstanceUID, // TODO: Necessary?\n //SOPClassUID: sopClassUID,\n };\n\n const _meta = {\n FileMetaInformationVersion: {\n Value: [fileMetaInformationVersionArray.buffer],\n vr: \"OB\"\n },\n //MediaStorageSOPClassUID\n //MediaStorageSOPInstanceUID: sopCommonModule.sopInstanceUID,\n TransferSyntaxUID: {\n Value: [\"1.2.840.10008.1.2.1\"],\n vr: \"UI\"\n },\n ImplementationClassUID: {\n Value: [DicomMetaDictionary.uid()], // TODO: could be git hash or other valid id\n vr: \"UI\"\n },\n ImplementationVersionName: {\n Value: [\"dcmjs\"],\n vr: \"SH\"\n }\n };\n\n const _vrMap = {\n PixelData: \"OW\"\n };\n\n derivationSourceDataset._meta = _meta;\n derivationSourceDataset._vrMap = _vrMap;\n\n const report = new StructuredReport([derivationSourceDataset]);\n\n const contentItem = MeasurementReport.contentItem(\n derivationSourceDataset\n );\n\n // Merge the derived dataset with the content from the Measurement Report\n report.dataset = Object.assign(report.dataset, contentItem);\n report.dataset._meta = _meta;\n report.dataset.SpecificCharacterSet = \"ISO_IR 192\";\n\n return report;\n }\n\n /**\n * Generate Cornerstone tool state from dataset\n * @param {object} dataset dataset\n * @param {object} hooks\n * @param {function} hooks.getToolClass Function to map dataset to a tool class\n * @returns\n */\n static generateToolState(dataset, hooks = {}) {\n // For now, bail out if the dataset is not a TID1500 SR with length measurements\n if (dataset.ContentTemplateSequence.TemplateIdentifier !== \"1500\") {\n throw new Error(\n \"This package can currently only interpret DICOM SR TID 1500\"\n );\n }\n\n const REPORT = \"Imaging Measurements\";\n const GROUP = \"Measurement Group\";\n const TRACKING_IDENTIFIER = \"Tracking Identifier\";\n\n // Identify the Imaging Measurements\n const imagingMeasurementContent = toArray(dataset.ContentSequence).find(\n codeMeaningEquals(REPORT)\n );\n\n // Retrieve the Measurements themselves\n const measurementGroups = toArray(\n imagingMeasurementContent.ContentSequence\n ).filter(codeMeaningEquals(GROUP));\n\n // For each of the supported measurement types, compute the measurement data\n const measurementData = {};\n\n const cornerstoneToolClasses =\n MeasurementReport.CORNERSTONE_TOOL_CLASSES_BY_UTILITY_TYPE;\n\n const registeredToolClasses = [];\n\n Object.keys(cornerstoneToolClasses).forEach(key => {\n registeredToolClasses.push(cornerstoneToolClasses[key]);\n measurementData[key] = [];\n });\n\n measurementGroups.forEach(measurementGroup => {\n const measurementGroupContentSequence = toArray(\n measurementGroup.ContentSequence\n );\n\n const TrackingIdentifierGroup =\n measurementGroupContentSequence.find(\n contentItem =>\n contentItem.ConceptNameCodeSequence.CodeMeaning ===\n TRACKING_IDENTIFIER\n );\n\n const TrackingIdentifierValue = TrackingIdentifierGroup.TextValue;\n\n const toolClass = hooks.getToolClass\n ? hooks.getToolClass(\n measurementGroup,\n dataset,\n registeredToolClasses\n )\n : registeredToolClasses.find(tc =>\n tc.isValidCornerstoneTrackingIdentifier(\n TrackingIdentifierValue\n )\n );\n\n if (toolClass) {\n const measurement =\n toolClass.getMeasurementData(measurementGroup);\n\n console.log(`=== ${toolClass.toolType} ===`);\n console.log(measurement);\n\n measurementData[toolClass.toolType].push(measurement);\n }\n });\n\n // NOTE: There is no way of knowing the cornerstone imageIds as that could be anything.\n // That is up to the consumer to derive from the SOPInstanceUIDs.\n return measurementData;\n }\n\n static registerTool(toolClass) {\n MeasurementReport.CORNERSTONE_TOOL_CLASSES_BY_UTILITY_TYPE[\n toolClass.utilityToolType\n ] = toolClass;\n MeasurementReport.CORNERSTONE_TOOL_CLASSES_BY_TOOL_TYPE[\n toolClass.toolType\n ] = toolClass;\n MeasurementReport.MEASUREMENT_BY_TOOLTYPE[toolClass.toolType] =\n toolClass.utilityToolType;\n }\n}\n\nMeasurementReport.MEASUREMENT_BY_TOOLTYPE = {};\nMeasurementReport.CORNERSTONE_TOOL_CLASSES_BY_UTILITY_TYPE = {};\nMeasurementReport.CORNERSTONE_TOOL_CLASSES_BY_TOOL_TYPE = {};\n","export default \"cornerstoneTools@^4.0.0\";\n","import { utilities } from \"dcmjs\";\nimport MeasurementReport from \"./MeasurementReport\";\nimport CORNERSTONE_4_TAG from \"./cornerstone4Tag\";\n\nconst { Length: TID300Length } = utilities.TID300;\n\nconst LENGTH = \"Length\";\n\nclass Length {\n // TODO: this function is required for all Cornerstone Tool Adapters, since it is called by MeasurementReport.\n static getMeasurementData(MeasurementGroup) {\n const { defaultState, NUMGroup, SCOORDGroup } =\n MeasurementReport.getSetupMeasurementData(MeasurementGroup);\n\n const state = {\n ...defaultState,\n length: NUMGroup.MeasuredValueSequence.NumericValue,\n toolType: Length.toolType,\n handles: {\n start: {},\n end: {},\n textBox: {\n hasMoved: false,\n movesIndependently: false,\n drawnIndependently: true,\n allowedOutsideImage: true,\n hasBoundingBox: true\n }\n }\n };\n\n [\n state.handles.start.x,\n state.handles.start.y,\n state.handles.end.x,\n state.handles.end.y\n ] = SCOORDGroup.GraphicData;\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool) {\n const { handles, finding, findingSites } = tool;\n const point1 = handles.start;\n const point2 = handles.end;\n const distance = tool.length;\n\n const trackingIdentifierTextValue = \"cornerstoneTools@^4.0.0:Length\";\n\n return {\n point1,\n point2,\n distance,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\n\nLength.toolType = LENGTH;\nLength.utilityToolType = LENGTH;\nLength.TID300Representation = TID300Length;\nLength.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone4Tag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone4Tag !== CORNERSTONE_4_TAG) {\n return false;\n }\n\n return toolType === LENGTH;\n};\n\nMeasurementReport.registerTool(Length);\n\nexport default Length;\n","import { utilities } from \"dcmjs\";\n\nimport MeasurementReport from \"./MeasurementReport\";\nimport CORNERSTONE_4_TAG from \"./cornerstone4Tag\";\n\nconst { Polyline: TID300Polyline } = utilities.TID300;\n\nclass FreehandRoi {\n static getMeasurementData(MeasurementGroup) {\n const { defaultState, SCOORDGroup, NUMGroup } =\n MeasurementReport.getSetupMeasurementData(MeasurementGroup);\n\n const state = {\n ...defaultState,\n toolType: FreehandRoi.toolType,\n handles: {\n points: [],\n textBox: {\n active: false,\n hasMoved: false,\n movesIndependently: false,\n drawnIndependently: true,\n allowedOutsideImage: true,\n hasBoundingBox: true\n }\n },\n cachedStats: {\n area: NUMGroup ? NUMGroup.MeasuredValueSequence.NumericValue : 0\n },\n color: undefined,\n invalidated: true\n };\n const { GraphicData } = SCOORDGroup;\n for (let i = 0; i < GraphicData.length; i += 2) {\n state.handles.points.push({\n x: GraphicData[i],\n y: GraphicData[i + 1]\n });\n }\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool) {\n const { handles, finding, findingSites, cachedStats = {} } = tool;\n const { points } = handles;\n const { area = 0, perimeter = 0 } = cachedStats;\n\n const trackingIdentifierTextValue =\n \"cornerstoneTools@^4.0.0:FreehandRoi\";\n\n return {\n points,\n area,\n perimeter,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\n\nFreehandRoi.toolType = \"FreehandRoi\";\nFreehandRoi.utilityToolType = \"FreehandRoi\";\nFreehandRoi.TID300Representation = TID300Polyline;\nFreehandRoi.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone4Tag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone4Tag !== CORNERSTONE_4_TAG) {\n return false;\n }\n\n return toolType === FreehandRoi.toolType;\n};\n\nMeasurementReport.registerTool(FreehandRoi);\n\nexport default FreehandRoi;\n","import { utilities } from \"dcmjs\";\nimport MeasurementReport from \"./MeasurementReport\";\nimport CORNERSTONE_4_TAG from \"./cornerstone4Tag\";\nimport { toArray } from \"../helpers\";\n\nconst { Bidirectional: TID300Bidirectional } = utilities.TID300;\n\nconst BIDIRECTIONAL = \"Bidirectional\";\nconst LONG_AXIS = \"Long Axis\";\nconst SHORT_AXIS = \"Short Axis\";\nconst FINDING = \"121071\";\nconst FINDING_SITE = \"G-C0E3\";\n\nclass Bidirectional {\n // TODO: this function is required for all Cornerstone Tool Adapters, since it is called by MeasurementReport.\n static getMeasurementData(MeasurementGroup) {\n const { ContentSequence } = MeasurementGroup;\n\n const findingGroup = toArray(ContentSequence).find(\n group => group.ConceptNameCodeSequence.CodeValue === FINDING\n );\n\n const findingSiteGroups = toArray(ContentSequence).filter(\n group => group.ConceptNameCodeSequence.CodeValue === FINDING_SITE\n );\n\n const longAxisNUMGroup = toArray(ContentSequence).find(\n group => group.ConceptNameCodeSequence.CodeMeaning === LONG_AXIS\n );\n\n const longAxisSCOORDGroup = toArray(\n longAxisNUMGroup.ContentSequence\n ).find(group => group.ValueType === \"SCOORD\");\n\n const shortAxisNUMGroup = toArray(ContentSequence).find(\n group => group.ConceptNameCodeSequence.CodeMeaning === SHORT_AXIS\n );\n\n const shortAxisSCOORDGroup = toArray(\n shortAxisNUMGroup.ContentSequence\n ).find(group => group.ValueType === \"SCOORD\");\n\n const { ReferencedSOPSequence } = longAxisSCOORDGroup.ContentSequence;\n const { ReferencedSOPInstanceUID, ReferencedFrameNumber } =\n ReferencedSOPSequence;\n\n // Long axis\n\n const longestDiameter = String(\n longAxisNUMGroup.MeasuredValueSequence.NumericValue\n );\n\n const shortestDiameter = String(\n shortAxisNUMGroup.MeasuredValueSequence.NumericValue\n );\n\n const bottomRight = {\n x: Math.max(\n longAxisSCOORDGroup.GraphicData[0],\n longAxisSCOORDGroup.GraphicData[2],\n shortAxisSCOORDGroup.GraphicData[0],\n shortAxisSCOORDGroup.GraphicData[2]\n ),\n y: Math.max(\n longAxisSCOORDGroup.GraphicData[1],\n longAxisSCOORDGroup.GraphicData[3],\n shortAxisSCOORDGroup.GraphicData[1],\n shortAxisSCOORDGroup.GraphicData[3]\n )\n };\n\n const state = {\n sopInstanceUid: ReferencedSOPInstanceUID,\n frameIndex: ReferencedFrameNumber || 1,\n toolType: Bidirectional.toolType,\n active: false,\n handles: {\n start: {\n x: longAxisSCOORDGroup.GraphicData[0],\n y: longAxisSCOORDGroup.GraphicData[1],\n drawnIndependently: false,\n allowedOutsideImage: false,\n active: false,\n highlight: false,\n index: 0\n },\n end: {\n x: longAxisSCOORDGroup.GraphicData[2],\n y: longAxisSCOORDGroup.GraphicData[3],\n drawnIndependently: false,\n allowedOutsideImage: false,\n active: false,\n highlight: false,\n index: 1\n },\n perpendicularStart: {\n x: shortAxisSCOORDGroup.GraphicData[0],\n y: shortAxisSCOORDGroup.GraphicData[1],\n drawnIndependently: false,\n allowedOutsideImage: false,\n active: false,\n highlight: false,\n index: 2\n },\n perpendicularEnd: {\n x: shortAxisSCOORDGroup.GraphicData[2],\n y: shortAxisSCOORDGroup.GraphicData[3],\n drawnIndependently: false,\n allowedOutsideImage: false,\n active: false,\n highlight: false,\n index: 3\n },\n textBox: {\n highlight: false,\n hasMoved: true,\n active: false,\n movesIndependently: false,\n drawnIndependently: true,\n allowedOutsideImage: true,\n hasBoundingBox: true,\n x: bottomRight.x + 10,\n y: bottomRight.y + 10\n }\n },\n invalidated: false,\n isCreating: false,\n longestDiameter,\n shortestDiameter,\n toolName: \"Bidirectional\",\n visible: true,\n finding: findingGroup\n ? findingGroup.ConceptCodeSequence\n : undefined,\n findingSites: findingSiteGroups.map(fsg => fsg.ConceptCodeSequence)\n };\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool) {\n const { start, end, perpendicularStart, perpendicularEnd } =\n tool.handles;\n const { shortestDiameter, longestDiameter, finding, findingSites } =\n tool;\n\n const trackingIdentifierTextValue =\n \"cornerstoneTools@^4.0.0:Bidirectional\";\n\n return {\n longAxis: {\n point1: start,\n point2: end\n },\n shortAxis: {\n point1: perpendicularStart,\n point2: perpendicularEnd\n },\n longAxisLength: longestDiameter,\n shortAxisLength: shortestDiameter,\n trackingIdentifierTextValue,\n finding: finding,\n findingSites: findingSites || []\n };\n }\n}\n\nBidirectional.toolType = BIDIRECTIONAL;\nBidirectional.utilityToolType = BIDIRECTIONAL;\nBidirectional.TID300Representation = TID300Bidirectional;\nBidirectional.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone4Tag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone4Tag !== CORNERSTONE_4_TAG) {\n return false;\n }\n\n return toolType === BIDIRECTIONAL;\n};\n\nMeasurementReport.registerTool(Bidirectional);\n\nexport default Bidirectional;\n","import { utilities } from \"dcmjs\";\nimport MeasurementReport from \"./MeasurementReport\";\nimport CORNERSTONE_4_TAG from \"./cornerstone4Tag\";\n\nconst { Ellipse: TID300Ellipse } = utilities.TID300;\n\nconst ELLIPTICALROI = \"EllipticalRoi\";\n\nclass EllipticalRoi {\n // TODO: this function is required for all Cornerstone Tool Adapters, since it is called by MeasurementReport.\n static getMeasurementData(MeasurementGroup) {\n const { defaultState, NUMGroup, SCOORDGroup } =\n MeasurementReport.getSetupMeasurementData(MeasurementGroup);\n\n const { GraphicData } = SCOORDGroup;\n\n const majorAxis = [\n { x: GraphicData[0], y: GraphicData[1] },\n { x: GraphicData[2], y: GraphicData[3] }\n ];\n const minorAxis = [\n { x: GraphicData[4], y: GraphicData[5] },\n { x: GraphicData[6], y: GraphicData[7] }\n ];\n\n // Calculate two opposite corners of box defined by two axes.\n\n const minorAxisLength = Math.sqrt(\n Math.pow(minorAxis[0].x - minorAxis[1].x, 2) +\n Math.pow(minorAxis[0].y - minorAxis[1].y, 2)\n );\n\n const minorAxisDirection = {\n x: (minorAxis[1].x - minorAxis[0].x) / minorAxisLength,\n y: (minorAxis[1].y - minorAxis[0].y) / minorAxisLength\n };\n\n const halfMinorAxisLength = minorAxisLength / 2;\n\n // First end point of major axis + half minor axis vector\n const corner1 = {\n x: majorAxis[0].x + minorAxisDirection.x * halfMinorAxisLength,\n y: majorAxis[0].y + minorAxisDirection.y * halfMinorAxisLength\n };\n\n // Second end point of major axis - half of minor axis vector\n const corner2 = {\n x: majorAxis[1].x - minorAxisDirection.x * halfMinorAxisLength,\n y: majorAxis[1].y - minorAxisDirection.y * halfMinorAxisLength\n };\n const state = {\n ...defaultState,\n toolType: EllipticalRoi.toolType,\n active: false,\n cachedStats: {\n area: NUMGroup ? NUMGroup.MeasuredValueSequence.NumericValue : 0\n },\n handles: {\n end: {\n x: corner1.x,\n y: corner1.y,\n highlight: false,\n active: false\n },\n initialRotation: 0,\n start: {\n x: corner2.x,\n y: corner2.y,\n highlight: false,\n active: false\n },\n textBox: {\n hasMoved: false,\n movesIndependently: false,\n drawnIndependently: true,\n allowedOutsideImage: true,\n hasBoundingBox: true\n }\n },\n invalidated: true,\n visible: true\n };\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool) {\n const { cachedStats = {}, handles, finding, findingSites } = tool;\n const { start, end } = handles;\n const { area } = cachedStats;\n\n const halfXLength = Math.abs(start.x - end.x) / 2;\n const halfYLength = Math.abs(start.y - end.y) / 2;\n\n const points = [];\n\n const center = { x: (start.x + end.x) / 2, y: (start.y + end.y) / 2 };\n\n if (halfXLength > halfYLength) {\n // X-axis major\n // Major axis\n points.push({ x: center.x - halfXLength, y: center.y });\n points.push({ x: center.x + halfXLength, y: center.y });\n // Minor axis\n points.push({ x: center.x, y: center.y - halfYLength });\n points.push({ x: center.x, y: center.y + halfYLength });\n } else {\n // Y-axis major\n // Major axis\n points.push({ x: center.x, y: center.y - halfYLength });\n points.push({ x: center.x, y: center.y + halfYLength });\n // Minor axis\n points.push({ x: center.x - halfXLength, y: center.y });\n points.push({ x: center.x + halfXLength, y: center.y });\n }\n\n const trackingIdentifierTextValue =\n \"cornerstoneTools@^4.0.0:EllipticalRoi\";\n\n return {\n area,\n points,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\n\nEllipticalRoi.toolType = ELLIPTICALROI;\nEllipticalRoi.utilityToolType = ELLIPTICALROI;\nEllipticalRoi.TID300Representation = TID300Ellipse;\nEllipticalRoi.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone4Tag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone4Tag !== CORNERSTONE_4_TAG) {\n return false;\n }\n\n return toolType === ELLIPTICALROI;\n};\n\nMeasurementReport.registerTool(EllipticalRoi);\n\nexport default EllipticalRoi;\n","import { utilities } from \"dcmjs\";\nimport MeasurementReport from \"./MeasurementReport\";\nimport CORNERSTONE_4_TAG from \"./cornerstone4Tag\";\n\nconst { Circle: TID300Circle } = utilities.TID300;\n\nconst CIRCLEROI = \"CircleRoi\";\n\nclass CircleRoi {\n /** Gets the measurement data for cornerstone, given DICOM SR measurement data. */\n static getMeasurementData(MeasurementGroup) {\n const { defaultState, NUMGroup, SCOORDGroup } =\n MeasurementReport.getSetupMeasurementData(MeasurementGroup);\n\n const { GraphicData } = SCOORDGroup;\n\n const center = { x: GraphicData[0], y: GraphicData[1] };\n const end = { x: GraphicData[2], y: GraphicData[3] };\n\n const state = {\n ...defaultState,\n toolType: CircleRoi.toolType,\n active: false,\n cachedStats: {\n area: NUMGroup\n ? NUMGroup.MeasuredValueSequence.NumericValue\n : 0,\n // Dummy values to be updated by cornerstone\n radius: 0,\n perimeter: 0\n },\n handles: {\n end: {\n ...end,\n highlight: false,\n active: false\n },\n initialRotation: 0,\n start: {\n ...center,\n highlight: false,\n active: false\n },\n textBox: {\n hasMoved: false,\n movesIndependently: false,\n drawnIndependently: true,\n allowedOutsideImage: true,\n hasBoundingBox: true\n }\n },\n invalidated: true,\n visible: true\n };\n\n return state;\n }\n\n /**\n * Gets the TID 300 representation of a circle, given the cornerstone representation.\n *\n * @param {Object} tool\n * @returns\n */\n static getTID300RepresentationArguments(tool) {\n const { cachedStats = {}, handles, finding, findingSites } = tool;\n const { start: center, end } = handles;\n const { area, radius } = cachedStats;\n\n const perimeter = 2 * Math.PI * radius;\n const points = [];\n\n points.push(center);\n points.push(end);\n\n const trackingIdentifierTextValue = \"cornerstoneTools@^4.0.0:CircleRoi\";\n\n return {\n area,\n perimeter,\n radius,\n points,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\n\nCircleRoi.toolType = CIRCLEROI;\nCircleRoi.utilityToolType = CIRCLEROI;\nCircleRoi.TID300Representation = TID300Circle;\nCircleRoi.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone4Tag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone4Tag !== CORNERSTONE_4_TAG) {\n return false;\n }\n\n return toolType === CIRCLEROI;\n};\n\nMeasurementReport.registerTool(CircleRoi);\n\nexport default CircleRoi;\n","import { utilities } from \"dcmjs\";\n\nimport MeasurementReport from \"./MeasurementReport\";\nimport CORNERSTONE_4_TAG from \"./cornerstone4Tag\";\n\nconst { Point: TID300Point } = utilities.TID300;\n\nconst ARROW_ANNOTATE = \"ArrowAnnotate\";\nconst CORNERSTONEFREETEXT = \"CORNERSTONEFREETEXT\";\n\nclass ArrowAnnotate {\n static getMeasurementData(MeasurementGroup) {\n const { defaultState, SCOORDGroup, findingGroup } =\n MeasurementReport.getSetupMeasurementData(MeasurementGroup);\n\n const text = findingGroup.ConceptCodeSequence.CodeMeaning;\n\n const { GraphicData } = SCOORDGroup;\n\n const state = {\n ...defaultState,\n toolType: ArrowAnnotate.toolType,\n active: false,\n handles: {\n start: {\n x: GraphicData[0],\n y: GraphicData[1],\n highlight: true,\n active: false\n },\n // Use a generic offset if the stored data doesn't have the endpoint, otherwise\n // use the actual endpoint.\n end: {\n x:\n GraphicData.length == 4\n ? GraphicData[2]\n : GraphicData[0] + 20,\n y:\n GraphicData.length == 4\n ? GraphicData[3]\n : GraphicData[1] + 20,\n highlight: true,\n active: false\n },\n textBox: {\n hasMoved: false,\n movesIndependently: false,\n drawnIndependently: true,\n allowedOutsideImage: true,\n hasBoundingBox: true\n }\n },\n invalidated: true,\n text,\n visible: true\n };\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool) {\n const points = [tool.handles.start, tool.handles.end];\n\n let { finding, findingSites } = tool;\n\n const TID300RepresentationArguments = {\n points,\n trackingIdentifierTextValue: `cornerstoneTools@^4.0.0:ArrowAnnotate`,\n findingSites: findingSites || []\n };\n\n // If freetext finding isn't present, add it from the tool text.\n if (!finding || finding.CodeValue !== CORNERSTONEFREETEXT) {\n finding = {\n CodeValue: CORNERSTONEFREETEXT,\n CodingSchemeDesignator: \"CST4\",\n CodeMeaning: tool.text\n };\n }\n\n TID300RepresentationArguments.finding = finding;\n\n return TID300RepresentationArguments;\n }\n}\n\nArrowAnnotate.toolType = ARROW_ANNOTATE;\nArrowAnnotate.utilityToolType = ARROW_ANNOTATE;\nArrowAnnotate.TID300Representation = TID300Point;\nArrowAnnotate.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone4Tag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone4Tag !== CORNERSTONE_4_TAG) {\n return false;\n }\n\n return toolType === ARROW_ANNOTATE;\n};\n\nMeasurementReport.registerTool(ArrowAnnotate);\n\nexport default ArrowAnnotate;\n","import { utilities } from \"dcmjs\";\nimport MeasurementReport from \"./MeasurementReport\";\nimport CORNERSTONE_4_TAG from \"./cornerstone4Tag\";\n\nconst { CobbAngle: TID300CobbAngle } = utilities.TID300;\n\nconst COBB_ANGLE = \"CobbAngle\";\n\nclass CobbAngle {\n // TODO: this function is required for all Cornerstone Tool Adapters, since it is called by MeasurementReport.\n static getMeasurementData(MeasurementGroup) {\n const { defaultState, NUMGroup, SCOORDGroup } =\n MeasurementReport.getSetupMeasurementData(MeasurementGroup);\n\n const state = {\n ...defaultState,\n rAngle: NUMGroup.MeasuredValueSequence.NumericValue,\n toolType: CobbAngle.toolType,\n handles: {\n start: {},\n end: {},\n start2: {\n highlight: true,\n drawnIndependently: true\n },\n end2: {\n highlight: true,\n drawnIndependently: true\n },\n textBox: {\n hasMoved: false,\n movesIndependently: false,\n drawnIndependently: true,\n allowedOutsideImage: true,\n hasBoundingBox: true\n }\n }\n };\n\n [\n state.handles.start.x,\n state.handles.start.y,\n state.handles.end.x,\n state.handles.end.y,\n state.handles.start2.x,\n state.handles.start2.y,\n state.handles.end2.x,\n state.handles.end2.y\n ] = SCOORDGroup.GraphicData;\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool) {\n const { handles, finding, findingSites } = tool;\n const point1 = handles.start;\n const point2 = handles.end;\n const point3 = handles.start2;\n const point4 = handles.end2;\n const rAngle = tool.rAngle;\n\n const trackingIdentifierTextValue = \"cornerstoneTools@^4.0.0:CobbAngle\";\n\n return {\n point1,\n point2,\n point3,\n point4,\n rAngle,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\n\nCobbAngle.toolType = COBB_ANGLE;\nCobbAngle.utilityToolType = COBB_ANGLE;\nCobbAngle.TID300Representation = TID300CobbAngle;\nCobbAngle.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone4Tag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone4Tag !== CORNERSTONE_4_TAG) {\n return false;\n }\n\n return toolType === COBB_ANGLE;\n};\n\nMeasurementReport.registerTool(CobbAngle);\n\nexport default CobbAngle;\n","import { utilities } from \"dcmjs\";\n\nimport MeasurementReport from \"./MeasurementReport\";\nimport CORNERSTONE_4_TAG from \"./cornerstone4Tag\";\n\nconst { Angle: TID300Angle } = utilities.TID300;\n\nconst ANGLE = \"Angle\";\n\nclass Angle {\n /**\n * Generate TID300 measurement data for a plane angle measurement - use a Angle, but label it as Angle\n */\n static getMeasurementData(MeasurementGroup) {\n const { defaultState, NUMGroup, SCOORDGroup } =\n MeasurementReport.getSetupMeasurementData(MeasurementGroup);\n\n const state = {\n ...defaultState,\n rAngle: NUMGroup.MeasuredValueSequence.NumericValue,\n toolType: Angle.toolType,\n handles: {\n start: {},\n middle: {},\n end: {},\n textBox: {\n hasMoved: false,\n movesIndependently: false,\n drawnIndependently: true,\n allowedOutsideImage: true,\n hasBoundingBox: true\n }\n }\n };\n\n [\n state.handles.start.x,\n state.handles.start.y,\n state.handles.middle.x,\n state.handles.middle.y,\n state.handles.middle.x,\n state.handles.middle.y,\n state.handles.end.x,\n state.handles.end.y\n ] = SCOORDGroup.GraphicData;\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool) {\n const { handles, finding, findingSites } = tool;\n const point1 = handles.start;\n const point2 = handles.middle;\n const point3 = handles.middle;\n const point4 = handles.end;\n const rAngle = tool.rAngle;\n\n const trackingIdentifierTextValue = \"cornerstoneTools@^4.0.0:Angle\";\n\n return {\n point1,\n point2,\n point3,\n point4,\n rAngle,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\n\nAngle.toolType = ANGLE;\nAngle.utilityToolType = ANGLE;\nAngle.TID300Representation = TID300Angle;\nAngle.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone4Tag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone4Tag !== CORNERSTONE_4_TAG) {\n return false;\n }\n\n return toolType === ANGLE;\n};\n\nMeasurementReport.registerTool(Angle);\n\nexport default Angle;\n","import { utilities } from \"dcmjs\";\nimport MeasurementReport from \"./MeasurementReport\";\nimport CORNERSTONE_4_TAG from \"./cornerstone4Tag\";\n\nconst { Polyline: TID300Polyline } = utilities.TID300;\n\nclass RectangleRoi {\n static getMeasurementData(MeasurementGroup) {\n const { defaultState, SCOORDGroup, NUMGroup } =\n MeasurementReport.getSetupMeasurementData(MeasurementGroup);\n\n const state = {\n ...defaultState,\n toolType: RectangleRoi.toolType,\n handles: {\n start: {},\n end: {},\n textBox: {\n active: false,\n hasMoved: false,\n movesIndependently: false,\n drawnIndependently: true,\n allowedOutsideImage: true,\n hasBoundingBox: true\n },\n initialRotation: 0\n },\n cachedStats: {\n area: NUMGroup ? NUMGroup.MeasuredValueSequence.NumericValue : 0\n },\n color: undefined,\n invalidated: true\n };\n const intermediate = {};\n\n [\n state.handles.start.x,\n state.handles.start.y,\n intermediate.x,\n intermediate.y,\n state.handles.end.x,\n state.handles.end.y\n ] = SCOORDGroup.GraphicData;\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool) {\n const { finding, findingSites, cachedStats = {}, handles } = tool;\n const { start, end } = handles;\n const points = [\n start,\n { x: start.x, y: end.y },\n end,\n { x: end.x, y: start.y }\n ];\n const { area, perimeter } = cachedStats;\n\n const trackingIdentifierTextValue =\n \"cornerstoneTools@^4.0.0:RectangleRoi\";\n\n return {\n points,\n area,\n perimeter,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\n\nRectangleRoi.toolType = \"RectangleRoi\";\nRectangleRoi.utilityToolType = \"RectangleRoi\";\nRectangleRoi.TID300Representation = TID300Polyline;\nRectangleRoi.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone4Tag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone4Tag !== CORNERSTONE_4_TAG) {\n return false;\n }\n\n return toolType === RectangleRoi.toolType;\n};\n\nMeasurementReport.registerTool(RectangleRoi);\n\nexport default RectangleRoi;\n","import { data as dcmjsData, normalizers } from \"dcmjs\";\nconst { DicomMessage, DicomMetaDictionary } = dcmjsData;\nconst { Normalizer } = normalizers;\nexport default function getDatasetsFromImages(images, isMultiframe, options) {\n const datasets = [];\n if (isMultiframe) {\n const image = images[0];\n const arrayBuffer = image.data.byteArray.buffer;\n const dicomData = DicomMessage.readFile(arrayBuffer);\n const dataset = DicomMetaDictionary.naturalizeDataset(dicomData.dict);\n dataset._meta = DicomMetaDictionary.namifyDataset(dicomData.meta);\n datasets.push(dataset);\n }\n else {\n for (let i = 0; i < images.length; i++) {\n const image = images[i];\n const arrayBuffer = image.data.byteArray.buffer;\n const dicomData = DicomMessage.readFile(arrayBuffer);\n const dataset = DicomMetaDictionary.naturalizeDataset(dicomData.dict);\n dataset._meta = DicomMetaDictionary.namifyDataset(dicomData.meta);\n datasets.push(dataset);\n }\n }\n if (options?.SpecificCharacterSet) {\n datasets.forEach(dataset => (dataset.SpecificCharacterSet = options.SpecificCharacterSet));\n }\n return Normalizer.normalizeToDataset(datasets);\n}\n","import { log, utilities, normalizers, derivations } from \"dcmjs\";\nimport ndarray from \"ndarray\";\nimport getDatasetsFromImages from \"../helpers/getDatasetsFromImages\";\n\nconst {\n rotateDirectionCosinesInPlane,\n flipImageOrientationPatient: flipIOP,\n flipMatrix2D,\n rotateMatrix902D\n} = utilities.orientation;\n\nconst { datasetToBlob, BitArray, DicomMessage, DicomMetaDictionary } =\n utilities;\n\nconst { Normalizer } = normalizers;\nconst { Segmentation: SegmentationDerivation } = derivations;\n\nconst Segmentation = {\n generateSegmentation,\n generateToolState\n};\n\nexport default Segmentation;\n\n/**\n *\n * @typedef {Object} BrushData\n * @property {Object} toolState - The cornerstoneTools global toolState.\n * @property {Object[]} segments - The cornerstoneTools segment metadata that corresponds to the\n * seriesInstanceUid.\n */\n\n/**\n * generateSegmentation - Generates cornerstoneTools brush data, given a stack of\n * imageIds, images and the cornerstoneTools brushData.\n *\n * @param {object[]} images An array of the cornerstone image objects.\n * @param {BrushData} brushData and object containing the brushData.\n * @returns {type} description\n */\nfunction generateSegmentation(\n images,\n brushData,\n options = { includeSliceSpacing: true }\n) {\n const { toolState, segments } = brushData;\n\n // Calculate the dimensions of the data cube.\n const image0 = images[0];\n\n const dims = {\n x: image0.columns,\n y: image0.rows,\n z: images.length\n };\n\n dims.xy = dims.x * dims.y;\n\n const numSegments = _getSegCount(seg, segments);\n\n if (!numSegments) {\n throw new Error(\"No segments to export!\");\n }\n\n const isMultiframe = image0.imageId.includes(\"?frame\");\n const seg = _createSegFromImages(images, isMultiframe, options);\n\n const { referencedFramesPerSegment, segmentIndicies } =\n _getNumberOfFramesPerSegment(toolState, images, segments);\n\n let NumberOfFrames = 0;\n\n for (let i = 0; i < referencedFramesPerSegment.length; i++) {\n NumberOfFrames += referencedFramesPerSegment[i].length;\n }\n\n seg.setNumberOfFrames(NumberOfFrames);\n\n for (let i = 0; i < segmentIndicies.length; i++) {\n const segmentIndex = segmentIndicies[i];\n const referencedFrameIndicies = referencedFramesPerSegment[i];\n\n // Frame numbers start from 1.\n const referencedFrameNumbers = referencedFrameIndicies.map(element => {\n return element + 1;\n });\n\n const segment = segments[segmentIndex];\n\n seg.addSegment(\n segment,\n _extractCornerstoneToolsPixelData(\n segmentIndex,\n referencedFrameIndicies,\n toolState,\n images,\n dims\n ),\n referencedFrameNumbers\n );\n }\n\n seg.bitPackPixelData();\n\n const segBlob = datasetToBlob(seg.dataset);\n\n return segBlob;\n}\n\nfunction _extractCornerstoneToolsPixelData(\n segmentIndex,\n referencedFrames,\n toolState,\n images,\n dims\n) {\n const pixelData = new Uint8Array(dims.xy * referencedFrames.length);\n\n let pixelDataIndex = 0;\n\n for (let i = 0; i < referencedFrames.length; i++) {\n const frame = referencedFrames[i];\n\n const imageId = images[frame].imageId;\n const imageIdSpecificToolState = toolState[imageId];\n\n const brushPixelData =\n imageIdSpecificToolState.brush.data[segmentIndex].pixelData;\n\n for (let p = 0; p < brushPixelData.length; p++) {\n pixelData[pixelDataIndex] = brushPixelData[p];\n pixelDataIndex++;\n }\n }\n\n return pixelData;\n}\n\nfunction _getNumberOfFramesPerSegment(toolState, images, segments) {\n const segmentIndicies = [];\n const referencedFramesPerSegment = [];\n\n for (let i = 0; i < segments.length; i++) {\n if (segments[i]) {\n segmentIndicies.push(i);\n referencedFramesPerSegment.push([]);\n }\n }\n\n for (let z = 0; z < images.length; z++) {\n const imageId = images[z].imageId;\n const imageIdSpecificToolState = toolState[imageId];\n\n for (let i = 0; i < segmentIndicies.length; i++) {\n const segIdx = segmentIndicies[i];\n\n if (\n imageIdSpecificToolState &&\n imageIdSpecificToolState.brush &&\n imageIdSpecificToolState.brush.data &&\n imageIdSpecificToolState.brush.data[segIdx] &&\n imageIdSpecificToolState.brush.data[segIdx].pixelData\n ) {\n referencedFramesPerSegment[i].push(z);\n }\n }\n }\n\n return {\n referencedFramesPerSegment,\n segmentIndicies\n };\n}\n\nfunction _getSegCount(seg, segments) {\n let numSegments = 0;\n\n for (let i = 0; i < segments.length; i++) {\n if (segments[i]) {\n numSegments++;\n }\n }\n\n return numSegments;\n}\n\n/**\n * _createSegFromImages - description\n *\n * @param {Object[]} images An array of the cornerstone image objects.\n * @param {Boolean} isMultiframe Whether the images are multiframe.\n * @returns {Object} The Seg derived dataSet.\n */\nfunction _createSegFromImages(images, isMultiframe, options) {\n const multiframe = getDatasetsFromImages(images, isMultiframe);\n\n return new SegmentationDerivation([multiframe], options);\n}\n\n/**\n * generateToolState - Given a set of cornrstoneTools imageIds and a Segmentation buffer,\n * derive cornerstoneTools toolState and brush metadata.\n *\n * @param {string[]} imageIds An array of the imageIds.\n * @param {ArrayBuffer} arrayBuffer The SEG arrayBuffer.\n * @param {*} metadataProvider\n * @returns {Object} The toolState and an object from which the\n * segment metadata can be derived.\n */\nfunction generateToolState(imageIds, arrayBuffer, metadataProvider) {\n const dicomData = DicomMessage.readFile(arrayBuffer);\n const dataset = DicomMetaDictionary.naturalizeDataset(dicomData.dict);\n dataset._meta = DicomMetaDictionary.namifyDataset(dicomData.meta);\n const multiframe = Normalizer.normalizeToDataset([dataset]);\n\n const imagePlaneModule = metadataProvider.get(\n \"imagePlaneModule\",\n imageIds[0]\n );\n\n if (!imagePlaneModule) {\n console.warn(\"Insufficient metadata, imagePlaneModule missing.\");\n }\n\n const ImageOrientationPatient = Array.isArray(imagePlaneModule.rowCosines)\n ? [...imagePlaneModule.rowCosines, ...imagePlaneModule.columnCosines]\n : [\n imagePlaneModule.rowCosines.x,\n imagePlaneModule.rowCosines.y,\n imagePlaneModule.rowCosines.z,\n imagePlaneModule.columnCosines.x,\n imagePlaneModule.columnCosines.y,\n imagePlaneModule.columnCosines.z\n ];\n\n // Get IOP from ref series, compute supported orientations:\n const validOrientations = getValidOrientations(ImageOrientationPatient);\n\n const SharedFunctionalGroupsSequence =\n multiframe.SharedFunctionalGroupsSequence;\n\n const sharedImageOrientationPatient =\n SharedFunctionalGroupsSequence.PlaneOrientationSequence\n ? SharedFunctionalGroupsSequence.PlaneOrientationSequence\n .ImageOrientationPatient\n : undefined;\n\n const sliceLength = multiframe.Columns * multiframe.Rows;\n const segMetadata = getSegmentMetadata(multiframe);\n const pixelData = unpackPixelData(multiframe);\n\n const PerFrameFunctionalGroupsSequence =\n multiframe.PerFrameFunctionalGroupsSequence;\n\n const toolState = {};\n\n let inPlane = true;\n\n for (let i = 0; i < PerFrameFunctionalGroupsSequence.length; i++) {\n const PerFrameFunctionalGroups = PerFrameFunctionalGroupsSequence[i];\n\n const ImageOrientationPatientI =\n sharedImageOrientationPatient ||\n PerFrameFunctionalGroups.PlaneOrientationSequence\n .ImageOrientationPatient;\n\n const pixelDataI2D = ndarray(\n new Uint8Array(pixelData.buffer, i * sliceLength, sliceLength),\n [multiframe.Rows, multiframe.Columns]\n );\n\n const alignedPixelDataI = alignPixelDataWithSourceData(\n pixelDataI2D,\n ImageOrientationPatientI,\n validOrientations\n );\n\n if (!alignedPixelDataI) {\n console.warn(\n \"This segmentation object is not in-plane with the source data. Bailing out of IO. It'd be better to render this with vtkjs. \"\n );\n inPlane = false;\n break;\n }\n\n const segmentIndex =\n PerFrameFunctionalGroups.SegmentIdentificationSequence\n .ReferencedSegmentNumber - 1;\n\n let SourceImageSequence;\n if (\n SharedFunctionalGroupsSequence.DerivationImageSequence &&\n SharedFunctionalGroupsSequence.DerivationImageSequence\n .SourceImageSequence\n ) {\n SourceImageSequence =\n SharedFunctionalGroupsSequence.DerivationImageSequence\n .SourceImageSequence[i];\n } else {\n SourceImageSequence =\n PerFrameFunctionalGroups.DerivationImageSequence\n .SourceImageSequence;\n }\n\n const imageId = getImageIdOfSourceImage(\n SourceImageSequence,\n imageIds,\n metadataProvider\n );\n\n addImageIdSpecificBrushToolState(\n toolState,\n imageId,\n segmentIndex,\n alignedPixelDataI\n );\n }\n\n if (!inPlane) {\n return;\n }\n\n return { toolState, segMetadata };\n}\n\n/**\n * unpackPixelData - Unpacks bitpacked pixelData if the Segmentation is BINARY.\n *\n * @param {Object} multiframe The multiframe dataset.\n * @return {Uint8Array} The unpacked pixelData.\n */\nfunction unpackPixelData(multiframe) {\n const segType = multiframe.SegmentationType;\n\n if (segType === \"BINARY\") {\n return BitArray.unpack(multiframe.PixelData);\n }\n\n const pixelData = new Uint8Array(multiframe.PixelData);\n\n const max = multiframe.MaximumFractionalValue;\n const onlyMaxAndZero =\n pixelData.find(element => element !== 0 && element !== max) ===\n undefined;\n\n if (!onlyMaxAndZero) {\n log.warn(\n \"This is a fractional segmentation, which is not currently supported.\"\n );\n return;\n }\n\n log.warn(\n \"This segmentation object is actually binary... processing as such.\"\n );\n\n return pixelData;\n}\n\n/**\n * addImageIdSpecificBrushToolState - Adds brush pixel data to cornerstoneTools\n * formatted toolState object.\n *\n * @param {Object} toolState The toolState object to modify\n * @param {String} imageId The imageId of the toolState to add the data.\n * @param {Number} segmentIndex The index of the segment data being added.\n * @param {Ndarray} pixelData2D The pixelData in Ndarry 2D format.\n */\nfunction addImageIdSpecificBrushToolState(\n toolState,\n imageId,\n segmentIndex,\n pixelData2D\n) {\n if (!toolState[imageId]) {\n toolState[imageId] = {};\n toolState[imageId].brush = {};\n toolState[imageId].brush.data = [];\n } else if (!toolState[imageId].brush) {\n toolState[imageId].brush = {};\n toolState[imageId].brush.data = [];\n } else if (!toolState[imageId].brush.data) {\n toolState[imageId].brush.data = [];\n }\n\n toolState[imageId].brush.data[segmentIndex] = {};\n\n const brushDataI = toolState[imageId].brush.data[segmentIndex];\n\n brushDataI.pixelData = new Uint8Array(pixelData2D.data.length);\n\n const cToolsPixelData = brushDataI.pixelData;\n\n for (let p = 0; p < cToolsPixelData.length; p++) {\n if (pixelData2D.data[p]) {\n cToolsPixelData[p] = 1;\n } else {\n cToolsPixelData[p] = 0;\n }\n }\n}\n\n/**\n * getImageIdOfSourceImage - Returns the Cornerstone imageId of the source image.\n *\n * @param {Object} SourceImageSequence Sequence describing the source image.\n * @param {String[]} imageIds A list of imageIds.\n * @param {Object} metadataProvider A Cornerstone metadataProvider to query\n * metadata from imageIds.\n * @return {String} The corresponding imageId.\n */\nfunction getImageIdOfSourceImage(\n SourceImageSequence,\n imageIds,\n metadataProvider\n) {\n const { ReferencedSOPInstanceUID, ReferencedFrameNumber } =\n SourceImageSequence;\n\n return ReferencedFrameNumber\n ? getImageIdOfReferencedFrame(\n ReferencedSOPInstanceUID,\n ReferencedFrameNumber,\n imageIds,\n metadataProvider\n )\n : getImageIdOfReferencedSingleFramedSOPInstance(\n ReferencedSOPInstanceUID,\n imageIds,\n metadataProvider\n );\n}\n\n/**\n * getImageIdOfReferencedSingleFramedSOPInstance - Returns the imageId\n * corresponding to the specified sopInstanceUid for single-frame images.\n *\n * @param {String} sopInstanceUid The sopInstanceUid of the desired image.\n * @param {String[]} imageIds The list of imageIds.\n * @param {Object} metadataProvider The metadataProvider to obtain sopInstanceUids\n * from the cornerstone imageIds.\n * @return {String} The imageId that corresponds to the sopInstanceUid.\n */\nfunction getImageIdOfReferencedSingleFramedSOPInstance(\n sopInstanceUid,\n imageIds,\n metadataProvider\n) {\n return imageIds.find(imageId => {\n const sopCommonModule = metadataProvider.get(\n \"sopCommonModule\",\n imageId\n );\n if (!sopCommonModule) {\n return;\n }\n\n return sopCommonModule.sopInstanceUID === sopInstanceUid;\n });\n}\n\n/**\n * getImageIdOfReferencedFrame - Returns the imageId corresponding to the\n * specified sopInstanceUid and frameNumber for multi-frame images.\n *\n * @param {String} sopInstanceUid The sopInstanceUid of the desired image.\n * @param {Number} frameNumber The frame number.\n * @param {String} imageIds The list of imageIds.\n * @param {Object} metadataProvider The metadataProvider to obtain sopInstanceUids\n * from the cornerstone imageIds.\n * @return {String} The imageId that corresponds to the sopInstanceUid.\n */\nfunction getImageIdOfReferencedFrame(\n sopInstanceUid,\n frameNumber,\n imageIds,\n metadataProvider\n) {\n const imageId = imageIds.find(imageId => {\n const sopCommonModule = metadataProvider.get(\n \"sopCommonModule\",\n imageId\n );\n if (!sopCommonModule) {\n return;\n }\n\n const imageIdFrameNumber = Number(imageId.split(\"frame=\")[1]);\n\n return (\n //frameNumber is zero indexed for cornerstoneDICOMImageLoader image Ids.\n sopCommonModule.sopInstanceUID === sopInstanceUid &&\n imageIdFrameNumber === frameNumber - 1\n );\n });\n\n return imageId;\n}\n\n/**\n * getValidOrientations - returns an array of valid orientations.\n *\n * @param iop - The row (0..2) an column (3..5) direction cosines.\n * @return An array of valid orientations.\n */\nfunction getValidOrientations(iop) {\n const orientations = [];\n\n // [0, 1, 2]: 0, 0hf, 0vf\n // [3, 4, 5]: 90, 90hf, 90vf\n // [6, 7]: 180, 270\n\n orientations[0] = iop;\n orientations[1] = flipIOP.h(iop);\n orientations[2] = flipIOP.v(iop);\n\n const iop90 = rotateDirectionCosinesInPlane(iop, Math.PI / 2);\n\n orientations[3] = iop90;\n orientations[4] = flipIOP.h(iop90);\n orientations[5] = flipIOP.v(iop90);\n\n orientations[6] = rotateDirectionCosinesInPlane(iop, Math.PI);\n orientations[7] = rotateDirectionCosinesInPlane(iop, 1.5 * Math.PI);\n\n return orientations;\n}\n\n/**\n * alignPixelDataWithSourceData -\n *\n * @param pixelData2D - The data to align.\n * @param iop - The orientation of the image slice.\n * @param orientations - An array of valid imageOrientationPatient values.\n * @return The aligned pixelData.\n */\nfunction alignPixelDataWithSourceData(pixelData2D, iop, orientations) {\n if (compareIOP(iop, orientations[0])) {\n //Same orientation.\n return pixelData2D;\n } else if (compareIOP(iop, orientations[1])) {\n //Flipped vertically.\n return flipMatrix2D.v(pixelData2D);\n } else if (compareIOP(iop, orientations[2])) {\n //Flipped horizontally.\n return flipMatrix2D.h(pixelData2D);\n } else if (compareIOP(iop, orientations[3])) {\n //Rotated 90 degrees.\n return rotateMatrix902D(pixelData2D);\n } else if (compareIOP(iop, orientations[4])) {\n //Rotated 90 degrees and fliped horizontally.\n return flipMatrix2D.h(rotateMatrix902D(pixelData2D));\n } else if (compareIOP(iop, orientations[5])) {\n //Rotated 90 degrees and fliped vertically.\n return flipMatrix2D.v(rotateMatrix902D(pixelData2D));\n } else if (compareIOP(iop, orientations[6])) {\n //Rotated 180 degrees. // TODO -> Do this more effeciently, there is a 1:1 mapping like 90 degree rotation.\n return rotateMatrix902D(rotateMatrix902D(pixelData2D));\n } else if (compareIOP(iop, orientations[7])) {\n //Rotated 270 degrees. // TODO -> Do this more effeciently, there is a 1:1 mapping like 90 degree rotation.\n return rotateMatrix902D(\n rotateMatrix902D(rotateMatrix902D(pixelData2D))\n );\n }\n}\n\nconst dx = 1e-5;\n\n/**\n * compareIOP - Returns true if iop1 and iop2 are equal\n * within a tollerance, dx.\n *\n * @param iop1 - An ImageOrientationPatient array.\n * @param iop2 - An ImageOrientationPatient array.\n * @return True if iop1 and iop2 are equal.\n */\nfunction compareIOP(iop1, iop2) {\n return (\n Math.abs(iop1[0] - iop2[0]) < dx &&\n Math.abs(iop1[1] - iop2[1]) < dx &&\n Math.abs(iop1[2] - iop2[2]) < dx &&\n Math.abs(iop1[3] - iop2[3]) < dx &&\n Math.abs(iop1[4] - iop2[4]) < dx &&\n Math.abs(iop1[5] - iop2[5]) < dx\n );\n}\n\nfunction getSegmentMetadata(multiframe) {\n const data = [];\n\n const segmentSequence = multiframe.SegmentSequence;\n\n if (Array.isArray(segmentSequence)) {\n for (let segIdx = 0; segIdx < segmentSequence.length; segIdx++) {\n data.push(segmentSequence[segIdx]);\n }\n } else {\n // Only one segment, will be stored as an object.\n data.push(segmentSequence);\n }\n\n return {\n seriesInstanceUid:\n multiframe.ReferencedSeriesSequence.SeriesInstanceUID,\n data\n };\n}\n","export default function checkIfPerpendicular(iop1, iop2, tolerance) {\n const absDotColumnCosines = Math.abs(iop1[0] * iop2[0] + iop1[1] * iop2[1] + iop1[2] * iop2[2]);\n const absDotRowCosines = Math.abs(iop1[3] * iop2[3] + iop1[4] * iop2[4] + iop1[5] * iop2[5]);\n return ((absDotColumnCosines < tolerance ||\n Math.abs(absDotColumnCosines - 1) < tolerance) &&\n (absDotRowCosines < tolerance ||\n Math.abs(absDotRowCosines - 1) < tolerance));\n}\n","import { utilities } from \"dcmjs\";\nconst { nearlyEqual } = utilities.orientation;\nexport default function compareArrays(array1, array2, tolerance) {\n if (array1.length !== array2.length) {\n return false;\n }\n for (let i = 0; i < array1.length; ++i) {\n if (!nearlyEqual(array1[i], array2[i], tolerance)) {\n return false;\n }\n }\n return true;\n}\n","import checkIfPerpendicular from \"./checkIfPerpendicular\";\nimport compareArrays from \"./compareArrays\";\nexport default function checkOrientation(multiframe, validOrientations, sourceDataDimensions, tolerance) {\n const { SharedFunctionalGroupsSequence, PerFrameFunctionalGroupsSequence } = multiframe;\n const sharedImageOrientationPatient = SharedFunctionalGroupsSequence.PlaneOrientationSequence\n ? SharedFunctionalGroupsSequence.PlaneOrientationSequence\n .ImageOrientationPatient\n : undefined;\n const PerFrameFunctionalGroups = PerFrameFunctionalGroupsSequence[0];\n const iop = sharedImageOrientationPatient ||\n PerFrameFunctionalGroups.PlaneOrientationSequence\n .ImageOrientationPatient;\n const inPlane = validOrientations.some(operation => compareArrays(iop, operation, tolerance));\n if (inPlane) {\n return \"Planar\";\n }\n if (checkIfPerpendicular(iop, validOrientations[0], tolerance) &&\n sourceDataDimensions.includes(multiframe.Rows) &&\n sourceDataDimensions.includes(multiframe.Columns)) {\n return \"Perpendicular\";\n }\n return \"Oblique\";\n}\n","var Events;\n(function (Events) {\n Events[\"SEGMENTATION_LOAD_PROGRESS\"] = \"CORNERSTONE_ADAPTER_SEGMENTATION_LOAD_PROGRESS\";\n})(Events || (Events = {}));\nexport default Events;\n","import {\n log,\n data as dcmjsData,\n utilities,\n normalizers,\n derivations\n} from \"dcmjs\";\nimport ndarray from \"ndarray\";\nimport getDatasetsFromImages from \"../helpers/getDatasetsFromImages\";\nimport checkOrientation from \"../helpers/checkOrientation\";\nimport compareArrays from \"../helpers/compareArrays\";\n\nimport { Events } from \"../enums\";\n\nconst {\n rotateDirectionCosinesInPlane,\n flipImageOrientationPatient: flipIOP,\n flipMatrix2D,\n rotateMatrix902D\n} = utilities.orientation;\n\nconst { BitArray, DicomMessage, DicomMetaDictionary } = dcmjsData;\n\nconst { Normalizer } = normalizers;\nconst { Segmentation: SegmentationDerivation } = derivations;\nconst { encode, decode } = utilities.compression;\n\n/**\n *\n * @typedef {Object} BrushData\n * @property {Object} toolState - The cornerstoneTools global toolState.\n * @property {Object[]} segments - The cornerstoneTools segment metadata that corresponds to the\n * seriesInstanceUid.\n */\nconst generateSegmentationDefaultOptions = {\n includeSliceSpacing: true,\n rleEncode: false\n};\n\n/**\n * generateSegmentation - Generates cornerstoneTools brush data, given a stack of\n * imageIds, images and the cornerstoneTools brushData.\n *\n * @param {object[]} images An array of cornerstone images that contain the source\n * data under `image.data.byteArray.buffer`.\n * @param {Object|Object[]} inputLabelmaps3D The cornerstone `Labelmap3D` object, or an array of objects.\n * @param {Object} userOptions Options to pass to the segmentation derivation and `fillSegmentation`.\n * @returns {Blob}\n */\nfunction generateSegmentation(images, inputLabelmaps3D, userOptions = {}) {\n const isMultiframe = images[0].imageId.includes(\"?frame\");\n const segmentation = _createSegFromImages(\n images,\n isMultiframe,\n userOptions\n );\n\n return fillSegmentation(segmentation, inputLabelmaps3D, userOptions);\n}\n\n/**\n * Fills a given segmentation object with data from the input labelmaps3D\n *\n * @param segmentation - The segmentation object to be filled.\n * @param inputLabelmaps3D - An array of 3D labelmaps, or a single 3D labelmap.\n * @param userOptions - Optional configuration settings. Will override the default options.\n *\n * @returns {object} The filled segmentation object.\n */\nfunction fillSegmentation(segmentation, inputLabelmaps3D, userOptions = {}) {\n const options = Object.assign(\n {},\n generateSegmentationDefaultOptions,\n userOptions\n );\n\n // Use another variable so we don't redefine labelmaps3D.\n const labelmaps3D = Array.isArray(inputLabelmaps3D)\n ? inputLabelmaps3D\n : [inputLabelmaps3D];\n\n let numberOfFrames = 0;\n const referencedFramesPerLabelmap = [];\n\n for (\n let labelmapIndex = 0;\n labelmapIndex < labelmaps3D.length;\n labelmapIndex++\n ) {\n const labelmap3D = labelmaps3D[labelmapIndex];\n const { labelmaps2D, metadata } = labelmap3D;\n\n const referencedFramesPerSegment = [];\n\n for (let i = 1; i < metadata.length; i++) {\n if (metadata[i]) {\n referencedFramesPerSegment[i] = [];\n }\n }\n\n for (let i = 0; i < labelmaps2D.length; i++) {\n const labelmap2D = labelmaps2D[i];\n\n if (labelmaps2D[i]) {\n const { segmentsOnLabelmap } = labelmap2D;\n\n segmentsOnLabelmap.forEach(segmentIndex => {\n if (segmentIndex !== 0) {\n referencedFramesPerSegment[segmentIndex].push(i);\n numberOfFrames++;\n }\n });\n }\n }\n\n referencedFramesPerLabelmap[labelmapIndex] = referencedFramesPerSegment;\n }\n\n segmentation.setNumberOfFrames(numberOfFrames);\n\n for (\n let labelmapIndex = 0;\n labelmapIndex < labelmaps3D.length;\n labelmapIndex++\n ) {\n const referencedFramesPerSegment =\n referencedFramesPerLabelmap[labelmapIndex];\n\n const labelmap3D = labelmaps3D[labelmapIndex];\n const { metadata } = labelmap3D;\n\n for (\n let segmentIndex = 1;\n segmentIndex < referencedFramesPerSegment.length;\n segmentIndex++\n ) {\n const referencedFrameIndicies =\n referencedFramesPerSegment[segmentIndex];\n\n if (referencedFrameIndicies) {\n // Frame numbers start from 1.\n const referencedFrameNumbers = referencedFrameIndicies.map(\n element => {\n return element + 1;\n }\n );\n const segmentMetadata = metadata[segmentIndex];\n const labelmaps = _getLabelmapsFromReferencedFrameIndicies(\n labelmap3D,\n referencedFrameIndicies\n );\n\n segmentation.addSegmentFromLabelmap(\n segmentMetadata,\n labelmaps,\n segmentIndex,\n referencedFrameNumbers\n );\n }\n }\n }\n if (options.rleEncode) {\n const rleEncodedFrames = encode(\n segmentation.dataset.PixelData,\n numberOfFrames,\n segmentation.dataset.Rows,\n segmentation.dataset.Columns\n );\n\n // Must use fractional now to RLE encode, as the DICOM standard only allows BitStored && BitsAllocated\n // to be 1 for BINARY. This is not ideal and there should be a better format for compression in this manner\n // added to the standard.\n segmentation.assignToDataset({\n BitsAllocated: \"8\",\n BitsStored: \"8\",\n HighBit: \"7\",\n SegmentationType: \"FRACTIONAL\",\n SegmentationFractionalType: \"PROBABILITY\",\n MaximumFractionalValue: \"255\"\n });\n\n segmentation.dataset._meta.TransferSyntaxUID = {\n Value: [\"1.2.840.10008.1.2.5\"],\n vr: \"UI\"\n };\n segmentation.dataset.SpecificCharacterSet = \"ISO_IR 192\";\n segmentation.dataset._vrMap.PixelData = \"OB\";\n segmentation.dataset.PixelData = rleEncodedFrames;\n } else {\n // If no rleEncoding, at least bitpack the data.\n segmentation.bitPackPixelData();\n }\n\n return segmentation;\n}\n\nfunction _getLabelmapsFromReferencedFrameIndicies(\n labelmap3D,\n referencedFrameIndicies\n) {\n const { labelmaps2D } = labelmap3D;\n\n const labelmaps = [];\n\n for (let i = 0; i < referencedFrameIndicies.length; i++) {\n const frame = referencedFrameIndicies[i];\n\n labelmaps.push(labelmaps2D[frame].pixelData);\n }\n\n return labelmaps;\n}\n\n/**\n * _createSegFromImages - description\n *\n * @param {Object[]} images An array of the cornerstone image objects.\n * @param {Boolean} isMultiframe Whether the images are multiframe.\n * @returns {Object} The Seg derived dataSet.\n */\nfunction _createSegFromImages(images, isMultiframe, options) {\n const multiframe = getDatasetsFromImages(images, isMultiframe);\n\n return new SegmentationDerivation([multiframe], options);\n}\n\n/**\n * generateToolState - Given a set of cornerstoneTools imageIds and a Segmentation buffer,\n * derive cornerstoneTools toolState and brush metadata.\n *\n * @param {string[]} imageIds - An array of the imageIds.\n * @param {ArrayBuffer} arrayBuffer - The SEG arrayBuffer.\n * @param {*} metadataProvider.\n * @param {obj} options - Options object.\n *\n * @return {[]ArrayBuffer}a list of array buffer for each labelMap\n * @return {Object} an object from which the segment metadata can be derived\n * @return {[][][]} 2D list containing the track of segments per frame\n * @return {[][][]} 3D list containing the track of segments per frame for each labelMap\n * (available only for the overlapping case).\n */\nasync function generateToolState(\n imageIds,\n arrayBuffer,\n metadataProvider,\n options\n) {\n const {\n skipOverlapping = false,\n tolerance = 1e-3,\n TypedArrayConstructor = Uint8Array,\n maxBytesPerChunk = 199000000,\n eventTarget,\n triggerEvent\n } = options;\n const dicomData = DicomMessage.readFile(arrayBuffer);\n const dataset = DicomMetaDictionary.naturalizeDataset(dicomData.dict);\n dataset._meta = DicomMetaDictionary.namifyDataset(dicomData.meta);\n const multiframe = Normalizer.normalizeToDataset([dataset]);\n\n const imagePlaneModule = metadataProvider.get(\n \"imagePlaneModule\",\n imageIds[0]\n );\n\n const generalSeriesModule = metadataProvider.get(\n \"generalSeriesModule\",\n imageIds[0]\n );\n\n const SeriesInstanceUID = generalSeriesModule.seriesInstanceUID;\n\n if (!imagePlaneModule) {\n console.warn(\"Insufficient metadata, imagePlaneModule missing.\");\n }\n\n const ImageOrientationPatient = Array.isArray(imagePlaneModule.rowCosines)\n ? [...imagePlaneModule.rowCosines, ...imagePlaneModule.columnCosines]\n : [\n imagePlaneModule.rowCosines.x,\n imagePlaneModule.rowCosines.y,\n imagePlaneModule.rowCosines.z,\n imagePlaneModule.columnCosines.x,\n imagePlaneModule.columnCosines.y,\n imagePlaneModule.columnCosines.z\n ];\n\n // Get IOP from ref series, compute supported orientations:\n const validOrientations = getValidOrientations(ImageOrientationPatient);\n\n const sliceLength = multiframe.Columns * multiframe.Rows;\n const segMetadata = getSegmentMetadata(multiframe, SeriesInstanceUID);\n\n const TransferSyntaxUID = multiframe._meta.TransferSyntaxUID.Value[0];\n\n let pixelData;\n let pixelDataChunks;\n\n if (TransferSyntaxUID === \"1.2.840.10008.1.2.5\") {\n const rleEncodedFrames = Array.isArray(multiframe.PixelData)\n ? multiframe.PixelData\n : [multiframe.PixelData];\n\n pixelData = decode(\n rleEncodedFrames,\n multiframe.Rows,\n multiframe.Columns\n );\n\n if (multiframe.BitsStored === 1) {\n console.warn(\"No implementation for rle + bitbacking.\");\n\n return;\n }\n\n // Todo: need to test this with rle data\n pixelDataChunks = [pixelData];\n } else {\n pixelDataChunks = unpackPixelData(multiframe, { maxBytesPerChunk });\n\n if (!pixelDataChunks) {\n throw new Error(\"Fractional segmentations are not yet supported\");\n }\n }\n\n const orientation = checkOrientation(\n multiframe,\n validOrientations,\n [imagePlaneModule.rows, imagePlaneModule.columns, imageIds.length],\n tolerance\n );\n\n // Pre-compute the sop UID to imageId index map so that in the for loop\n // we don't have to call metadataProvider.get() for each imageId over\n // and over again.\n const sopUIDImageIdIndexMap = imageIds.reduce((acc, imageId) => {\n const { sopInstanceUID } = metadataProvider.get(\n \"generalImageModule\",\n imageId\n );\n acc[sopInstanceUID] = imageId;\n return acc;\n }, {});\n\n let overlapping = false;\n if (!skipOverlapping) {\n overlapping = checkSEGsOverlapping(\n pixelDataChunks,\n multiframe,\n imageIds,\n validOrientations,\n metadataProvider,\n tolerance,\n TypedArrayConstructor,\n sopUIDImageIdIndexMap\n );\n }\n\n let insertFunction;\n\n switch (orientation) {\n case \"Planar\":\n if (overlapping) {\n insertFunction = insertOverlappingPixelDataPlanar;\n } else {\n insertFunction = insertPixelDataPlanar;\n }\n break;\n case \"Perpendicular\":\n //insertFunction = insertPixelDataPerpendicular;\n throw new Error(\n \"Segmentations orthogonal to the acquisition plane of the source data are not yet supported.\"\n );\n case \"Oblique\":\n throw new Error(\n \"Segmentations oblique to the acquisition plane of the source data are not yet supported.\"\n );\n }\n\n /* if SEGs are overlapping:\n 1) the labelmapBuffer will contain M volumes which have non-overlapping segments;\n 2) segmentsOnFrame will have M * numberOfFrames values to track in which labelMap are the segments;\n 3) insertFunction will return the number of LabelMaps\n 4) generateToolState return is an array*/\n\n const segmentsOnFrameArray = [];\n segmentsOnFrameArray[0] = [];\n const segmentsOnFrame = [];\n\n const arrayBufferLength =\n sliceLength * imageIds.length * TypedArrayConstructor.BYTES_PER_ELEMENT;\n const labelmapBufferArray = [];\n labelmapBufferArray[0] = new ArrayBuffer(arrayBufferLength);\n\n // Pre-compute the indices and metadata so that we don't have to call\n // a function for each imageId in the for loop.\n const imageIdMaps = imageIds.reduce(\n (acc, curr, index) => {\n acc.indices[curr] = index;\n acc.metadata[curr] = metadataProvider.get(\"instance\", curr);\n return acc;\n },\n { indices: {}, metadata: {} }\n );\n\n // This is the centroid calculation for each segment Index, the data structure\n // is a Map with key = segmentIndex and value = {imageIdIndex: centroid, ...}\n // later on we will use this data structure to calculate the centroid of the\n // segment in the labelmapBuffer\n const segmentsPixelIndices = new Map();\n\n const overlappingSegments = await insertFunction(\n segmentsOnFrame,\n segmentsOnFrameArray,\n labelmapBufferArray,\n pixelDataChunks,\n multiframe,\n imageIds,\n validOrientations,\n metadataProvider,\n tolerance,\n TypedArrayConstructor,\n segmentsPixelIndices,\n sopUIDImageIdIndexMap,\n imageIdMaps,\n eventTarget,\n triggerEvent\n );\n\n // calculate the centroid of each segment\n const centroidXYZ = new Map();\n\n segmentsPixelIndices.forEach((imageIdIndexBufferIndex, segmentIndex) => {\n const centroids = calculateCentroid(\n imageIdIndexBufferIndex,\n multiframe,\n metadataProvider,\n imageIds\n );\n\n centroidXYZ.set(segmentIndex, centroids);\n });\n\n return {\n labelmapBufferArray,\n segMetadata,\n segmentsOnFrame,\n segmentsOnFrameArray,\n centroids: centroidXYZ,\n overlappingSegments\n };\n}\n\n// function insertPixelDataPerpendicular(\n// segmentsOnFrame,\n// labelmapBuffer,\n// pixelData,\n// multiframe,\n// imageIds,\n// validOrientations,\n// metadataProvider\n// ) {\n// const {\n// SharedFunctionalGroupsSequence,\n// PerFrameFunctionalGroupsSequence,\n// Rows,\n// Columns\n// } = multiframe;\n\n// const firstImagePlaneModule = metadataProvider.get(\n// \"imagePlaneModule\",\n// imageIds[0]\n// );\n\n// const lastImagePlaneModule = metadataProvider.get(\n// \"imagePlaneModule\",\n// imageIds[imageIds.length - 1]\n// );\n\n// console.log(firstImagePlaneModule);\n// console.log(lastImagePlaneModule);\n\n// const corners = [\n// ...getCorners(firstImagePlaneModule),\n// ...getCorners(lastImagePlaneModule)\n// ];\n\n// console.log(`corners:`);\n// console.log(corners);\n\n// const indexToWorld = mat4.create();\n\n// const ippFirstFrame = firstImagePlaneModule.imagePositionPatient;\n// const rowCosines = Array.isArray(firstImagePlaneModule.rowCosines)\n// ? [...firstImagePlaneModule.rowCosines]\n// : [\n// firstImagePlaneModule.rowCosines.x,\n// firstImagePlaneModule.rowCosines.y,\n// firstImagePlaneModule.rowCosines.z\n// ];\n\n// const columnCosines = Array.isArray(firstImagePlaneModule.columnCosines)\n// ? [...firstImagePlaneModule.columnCosines]\n// : [\n// firstImagePlaneModule.columnCosines.x,\n// firstImagePlaneModule.columnCosines.y,\n// firstImagePlaneModule.columnCosines.z\n// ];\n\n// const { pixelSpacing } = firstImagePlaneModule;\n\n// mat4.set(\n// indexToWorld,\n// // Column 1\n// 0,\n// 0,\n// 0,\n// ippFirstFrame[0],\n// // Column 2\n// 0,\n// 0,\n// 0,\n// ippFirstFrame[1],\n// // Column 3\n// 0,\n// 0,\n// 0,\n// ippFirstFrame[2],\n// // Column 4\n// 0,\n// 0,\n// 0,\n// 1\n// );\n\n// // TODO -> Get origin and (x,y,z) increments to build a translation matrix:\n// // TODO -> Equation C.7.6.2.1-1\n\n// // | cx*di rx* Xx 0 | |x|\n// // | cy*di ry Xy 0 | |y|\n// // | cz*di rz Xz 0 | |z|\n// // | tx ty tz 1 | |1|\n\n// // const [\n// // 0, 0 , 0 , 0,\n// // 0, 0 , 0 , 0,\n// // 0, 0 , 0 , 0,\n// // ipp[0], ipp[1] , ipp[2] , 1,\n// // ]\n\n// // Each frame:\n\n// // Find which corner the first voxel lines up with (one of 8 corners.)\n\n// // Find how i,j,k orient with respect to source volume.\n// // Go through each frame, find location in source to start, and whether to increment +/ix,+/-y,+/-z\n// // through each voxel.\n\n// // [1,0,0,0,1,0]\n\n// // const [\n\n// // ]\n\n// // Invert transformation matrix to get worldToIndex\n\n// // Apply world to index on each point to fill up the matrix.\n\n// // const sharedImageOrientationPatient = SharedFunctionalGroupsSequence.PlaneOrientationSequence\n// // ? SharedFunctionalGroupsSequence.PlaneOrientationSequence\n// // .ImageOrientationPatient\n// // : undefined;\n// // const sliceLength = Columns * Rows;\n// }\n\n// function getCorners(imagePlaneModule) {\n// // console.log(imagePlaneModule);\n\n// const {\n// rows,\n// columns,\n// rowCosines,\n// columnCosines,\n// imagePositionPatient: ipp,\n// rowPixelSpacing,\n// columnPixelSpacing\n// } = imagePlaneModule;\n\n// const rowLength = columns * columnPixelSpacing;\n// const columnLength = rows * rowPixelSpacing;\n\n// const entireRowVector = [\n// rowLength * columnCosines[0],\n// rowLength * columnCosines[1],\n// rowLength * columnCosines[2]\n// ];\n\n// const entireColumnVector = [\n// columnLength * rowCosines[0],\n// columnLength * rowCosines[1],\n// columnLength * rowCosines[2]\n// ];\n\n// const topLeft = [ipp[0], ipp[1], ipp[2]];\n// const topRight = [\n// topLeft[0] + entireRowVector[0],\n// topLeft[1] + entireRowVector[1],\n// topLeft[2] + entireRowVector[2]\n// ];\n// const bottomLeft = [\n// topLeft[0] + entireColumnVector[0],\n// topLeft[1] + entireColumnVector[1],\n// topLeft[2] + entireColumnVector[2]\n// ];\n\n// const bottomRight = [\n// bottomLeft[0] + entireRowVector[0],\n// bottomLeft[1] + entireRowVector[1],\n// bottomLeft[2] + entireRowVector[2]\n// ];\n\n// return [topLeft, topRight, bottomLeft, bottomRight];\n// }\n\n/**\n * Find the reference frame of the segmentation frame in the source data.\n *\n * @param {Object} multiframe dicom metadata\n * @param {Int} frameSegment frame dicom index\n * @param {String[]} imageIds A list of imageIds.\n * @param {Object} sopUIDImageIdIndexMap A map of SOPInstanceUID to imageId\n * @param {Float} tolerance The tolerance parameter\n *\n * @returns {String} Returns the imageId\n */\nfunction findReferenceSourceImageId(\n multiframe,\n frameSegment,\n imageIds,\n metadataProvider,\n tolerance,\n sopUIDImageIdIndexMap\n) {\n let imageId = undefined;\n\n if (!multiframe) {\n return imageId;\n }\n\n const {\n FrameOfReferenceUID,\n PerFrameFunctionalGroupsSequence,\n SourceImageSequence,\n ReferencedSeriesSequence\n } = multiframe;\n\n if (\n !PerFrameFunctionalGroupsSequence ||\n PerFrameFunctionalGroupsSequence.length === 0\n ) {\n return imageId;\n }\n\n const PerFrameFunctionalGroup =\n PerFrameFunctionalGroupsSequence[frameSegment];\n\n if (!PerFrameFunctionalGroup) {\n return imageId;\n }\n\n let frameSourceImageSequence = undefined;\n if (PerFrameFunctionalGroup.DerivationImageSequence) {\n let DerivationImageSequence =\n PerFrameFunctionalGroup.DerivationImageSequence;\n if (Array.isArray(DerivationImageSequence)) {\n if (DerivationImageSequence.length !== 0) {\n DerivationImageSequence = DerivationImageSequence[0];\n } else {\n DerivationImageSequence = undefined;\n }\n }\n\n if (DerivationImageSequence) {\n frameSourceImageSequence =\n DerivationImageSequence.SourceImageSequence;\n if (Array.isArray(frameSourceImageSequence)) {\n if (frameSourceImageSequence.length !== 0) {\n frameSourceImageSequence = frameSourceImageSequence[0];\n } else {\n frameSourceImageSequence = undefined;\n }\n }\n }\n } else if (SourceImageSequence && SourceImageSequence.length !== 0) {\n console.warn(\n \"DerivationImageSequence not present, using SourceImageSequence assuming SEG has the same geometry as the source image.\"\n );\n frameSourceImageSequence = SourceImageSequence[frameSegment];\n }\n\n if (frameSourceImageSequence) {\n imageId = getImageIdOfSourceImageBySourceImageSequence(\n frameSourceImageSequence,\n sopUIDImageIdIndexMap\n );\n }\n\n if (imageId === undefined && ReferencedSeriesSequence) {\n const referencedSeriesSequence = Array.isArray(ReferencedSeriesSequence)\n ? ReferencedSeriesSequence[0]\n : ReferencedSeriesSequence;\n const ReferencedSeriesInstanceUID =\n referencedSeriesSequence.SeriesInstanceUID;\n\n imageId = getImageIdOfSourceImagebyGeometry(\n ReferencedSeriesInstanceUID,\n FrameOfReferenceUID,\n PerFrameFunctionalGroup,\n imageIds,\n metadataProvider,\n tolerance\n );\n }\n\n return imageId;\n}\n\n/**\n * Checks if there is any overlapping segmentations.\n * @returns {boolean} Returns a flag if segmentations overlapping\n */\n\nfunction checkSEGsOverlapping(\n pixelData,\n multiframe,\n imageIds,\n validOrientations,\n metadataProvider,\n tolerance,\n TypedArrayConstructor,\n sopUIDImageIdIndexMap\n) {\n const {\n SharedFunctionalGroupsSequence,\n PerFrameFunctionalGroupsSequence,\n SegmentSequence,\n Rows,\n Columns\n } = multiframe;\n\n let numberOfSegs = SegmentSequence.length;\n if (numberOfSegs < 2) {\n return false;\n }\n\n const sharedImageOrientationPatient =\n SharedFunctionalGroupsSequence.PlaneOrientationSequence\n ? SharedFunctionalGroupsSequence.PlaneOrientationSequence\n .ImageOrientationPatient\n : undefined;\n const sliceLength = Columns * Rows;\n const groupsLen = PerFrameFunctionalGroupsSequence.length;\n\n /** sort groupsLen to have all the segments for each frame in an array\n * frame 2 : 1, 2\n * frame 4 : 1, 3\n * frame 5 : 4\n */\n\n let frameSegmentsMapping = new Map();\n for (let frameSegment = 0; frameSegment < groupsLen; ++frameSegment) {\n const segmentIndex = getSegmentIndex(multiframe, frameSegment);\n if (segmentIndex === undefined) {\n console.warn(\n \"Could not retrieve the segment index for frame segment \" +\n frameSegment +\n \", skipping this frame.\"\n );\n continue;\n }\n\n const imageId = findReferenceSourceImageId(\n multiframe,\n frameSegment,\n imageIds,\n metadataProvider,\n tolerance,\n sopUIDImageIdIndexMap\n );\n\n if (!imageId) {\n console.warn(\n \"Image not present in stack, can't import frame : \" +\n frameSegment +\n \".\"\n );\n continue;\n }\n\n const imageIdIndex = imageIds.findIndex(element => element === imageId);\n\n if (frameSegmentsMapping.has(imageIdIndex)) {\n let segmentArray = frameSegmentsMapping.get(imageIdIndex);\n if (!segmentArray.includes(frameSegment)) {\n segmentArray.push(frameSegment);\n frameSegmentsMapping.set(imageIdIndex, segmentArray);\n }\n } else {\n frameSegmentsMapping.set(imageIdIndex, [frameSegment]);\n }\n }\n\n for (let [, role] of frameSegmentsMapping.entries()) {\n let temp2DArray = new TypedArrayConstructor(sliceLength).fill(0);\n\n for (let i = 0; i < role.length; ++i) {\n const frameSegment = role[i];\n\n const PerFrameFunctionalGroups =\n PerFrameFunctionalGroupsSequence[frameSegment];\n\n const ImageOrientationPatientI =\n sharedImageOrientationPatient ||\n PerFrameFunctionalGroups.PlaneOrientationSequence\n .ImageOrientationPatient;\n\n const view = readFromUnpackedChunks(\n pixelData,\n frameSegment * sliceLength,\n sliceLength\n );\n\n const pixelDataI2D = ndarray(view, [Rows, Columns]);\n\n const alignedPixelDataI = alignPixelDataWithSourceData(\n pixelDataI2D,\n ImageOrientationPatientI,\n validOrientations,\n tolerance\n );\n\n if (!alignedPixelDataI) {\n console.warn(\n \"Individual SEG frames are out of plane with respect to the first SEG frame, this is not yet supported, skipping this frame.\"\n );\n continue;\n }\n\n const data = alignedPixelDataI.data;\n for (let j = 0, len = data.length; j < len; ++j) {\n if (data[j] !== 0) {\n temp2DArray[j]++;\n if (temp2DArray[j] > 1) {\n return true;\n }\n }\n }\n }\n }\n\n return false;\n}\n\nfunction insertOverlappingPixelDataPlanar(\n segmentsOnFrame,\n segmentsOnFrameArray,\n labelmapBufferArray,\n pixelData,\n multiframe,\n imageIds,\n validOrientations,\n metadataProvider,\n tolerance,\n TypedArrayConstructor,\n segmentsPixelIndices,\n sopUIDImageIdIndexMap\n) {\n const {\n SharedFunctionalGroupsSequence,\n PerFrameFunctionalGroupsSequence,\n Rows,\n Columns\n } = multiframe;\n\n const sharedImageOrientationPatient =\n SharedFunctionalGroupsSequence.PlaneOrientationSequence\n ? SharedFunctionalGroupsSequence.PlaneOrientationSequence\n .ImageOrientationPatient\n : undefined;\n const sliceLength = Columns * Rows;\n const arrayBufferLength =\n sliceLength * imageIds.length * TypedArrayConstructor.BYTES_PER_ELEMENT;\n // indicate the number of labelMaps\n let M = 1;\n\n // indicate the current labelMap array index;\n let m = 0;\n\n // temp array for checking overlaps\n let tempBuffer = labelmapBufferArray[m].slice(0);\n\n // temp list for checking overlaps\n let tempSegmentsOnFrame = structuredClone(segmentsOnFrameArray[m]);\n\n /** split overlapping SEGs algorithm for each segment:\n * A) copy the labelmapBuffer in the array with index 0\n * B) add the segment pixel per pixel on the copied buffer from (A)\n * C) if no overlap, copy the results back on the orignal array from (A)\n * D) if overlap, repeat increasing the index m up to M (if out of memory, add new buffer in the array and M++);\n */\n\n let numberOfSegs = multiframe.SegmentSequence.length;\n for (\n let segmentIndexToProcess = 1;\n segmentIndexToProcess <= numberOfSegs;\n ++segmentIndexToProcess\n ) {\n for (\n let i = 0, groupsLen = PerFrameFunctionalGroupsSequence.length;\n i < groupsLen;\n ++i\n ) {\n const PerFrameFunctionalGroups =\n PerFrameFunctionalGroupsSequence[i];\n\n const segmentIndex = getSegmentIndex(multiframe, i);\n if (segmentIndex === undefined) {\n throw new Error(\n \"Could not retrieve the segment index. Aborting segmentation loading.\"\n );\n }\n\n if (segmentIndex !== segmentIndexToProcess) {\n continue;\n }\n\n const ImageOrientationPatientI =\n sharedImageOrientationPatient ||\n PerFrameFunctionalGroups.PlaneOrientationSequence\n .ImageOrientationPatient;\n\n // Since we moved to the chunks approach, we need to read the data\n // and handle scenarios where the portion of data is in one chunk\n // and the other portion is in another chunk\n const view = readFromUnpackedChunks(\n pixelData,\n i * sliceLength,\n sliceLength\n );\n\n const pixelDataI2D = ndarray(view, [Rows, Columns]);\n\n const alignedPixelDataI = alignPixelDataWithSourceData(\n pixelDataI2D,\n ImageOrientationPatientI,\n validOrientations,\n tolerance\n );\n\n if (!alignedPixelDataI) {\n throw new Error(\n \"Individual SEG frames are out of plane with respect to the first SEG frame. \" +\n \"This is not yet supported. Aborting segmentation loading.\"\n );\n }\n\n const imageId = findReferenceSourceImageId(\n multiframe,\n i,\n imageIds,\n metadataProvider,\n tolerance,\n sopUIDImageIdIndexMap\n );\n\n if (!imageId) {\n console.warn(\n \"Image not present in stack, can't import frame : \" +\n i +\n \".\"\n );\n continue;\n }\n\n const sourceImageMetadata = metadataProvider.get(\n \"instance\",\n imageId\n );\n if (\n Rows !== sourceImageMetadata.Rows ||\n Columns !== sourceImageMetadata.Columns\n ) {\n throw new Error(\n \"Individual SEG frames have different geometry dimensions (Rows and Columns) \" +\n \"respect to the source image reference frame. This is not yet supported. \" +\n \"Aborting segmentation loading. \"\n );\n }\n\n const imageIdIndex = imageIds.findIndex(\n element => element === imageId\n );\n const byteOffset =\n sliceLength *\n imageIdIndex *\n TypedArrayConstructor.BYTES_PER_ELEMENT;\n\n const labelmap2DView = new TypedArrayConstructor(\n tempBuffer,\n byteOffset,\n sliceLength\n );\n\n const data = alignedPixelDataI.data;\n\n let segmentOnFrame = false;\n for (let j = 0, len = alignedPixelDataI.data.length; j < len; ++j) {\n if (data[j]) {\n if (labelmap2DView[j] !== 0) {\n m++;\n if (m >= M) {\n labelmapBufferArray[m] = new ArrayBuffer(\n arrayBufferLength\n );\n segmentsOnFrameArray[m] = [];\n M++;\n }\n tempBuffer = labelmapBufferArray[m].slice(0);\n tempSegmentsOnFrame = structuredClone(\n segmentsOnFrameArray[m]\n );\n\n i = 0;\n break;\n } else {\n labelmap2DView[j] = segmentIndex;\n segmentOnFrame = true;\n }\n }\n }\n\n if (segmentOnFrame) {\n if (!tempSegmentsOnFrame[imageIdIndex]) {\n tempSegmentsOnFrame[imageIdIndex] = [];\n }\n\n tempSegmentsOnFrame[imageIdIndex].push(segmentIndex);\n\n if (!segmentsOnFrame[imageIdIndex]) {\n segmentsOnFrame[imageIdIndex] = [];\n }\n\n segmentsOnFrame[imageIdIndex].push(segmentIndex);\n }\n }\n\n labelmapBufferArray[m] = tempBuffer.slice(0);\n segmentsOnFrameArray[m] = structuredClone(tempSegmentsOnFrame);\n\n // reset temp variables/buffers for new segment\n m = 0;\n tempBuffer = labelmapBufferArray[m].slice(0);\n tempSegmentsOnFrame = structuredClone(segmentsOnFrameArray[m]);\n }\n}\n\nconst getSegmentIndex = (multiframe, frame) => {\n const { PerFrameFunctionalGroupsSequence, SharedFunctionalGroupsSequence } =\n multiframe;\n const PerFrameFunctionalGroups = PerFrameFunctionalGroupsSequence[frame];\n return PerFrameFunctionalGroups &&\n PerFrameFunctionalGroups.SegmentIdentificationSequence\n ? PerFrameFunctionalGroups.SegmentIdentificationSequence\n .ReferencedSegmentNumber\n : SharedFunctionalGroupsSequence.SegmentIdentificationSequence\n ? SharedFunctionalGroupsSequence.SegmentIdentificationSequence\n .ReferencedSegmentNumber\n : undefined;\n};\n\nfunction insertPixelDataPlanar(\n segmentsOnFrame,\n segmentsOnFrameArray,\n labelmapBufferArray,\n pixelData,\n multiframe,\n imageIds,\n validOrientations,\n metadataProvider,\n tolerance,\n TypedArrayConstructor,\n segmentsPixelIndices,\n sopUIDImageIdIndexMap,\n imageIdMaps,\n eventTarget,\n triggerEvent\n) {\n const {\n SharedFunctionalGroupsSequence,\n PerFrameFunctionalGroupsSequence,\n Rows,\n Columns\n } = multiframe;\n\n const sharedImageOrientationPatient =\n SharedFunctionalGroupsSequence.PlaneOrientationSequence\n ? SharedFunctionalGroupsSequence.PlaneOrientationSequence\n .ImageOrientationPatient\n : undefined;\n const sliceLength = Columns * Rows;\n\n let i = 0;\n const groupsLen = PerFrameFunctionalGroupsSequence.length;\n const chunkSize = Math.ceil(groupsLen / 10); // 10% of total length\n\n const shouldTriggerEvent = triggerEvent && eventTarget;\n\n let overlapping = false;\n // Below, we chunk the processing of the frames to avoid blocking the main thread\n // if the segmentation is large. We also use a promise to allow the caller to\n // wait for the processing to finish.\n return new Promise(resolve => {\n function processInChunks() {\n // process one chunk\n for (let end = Math.min(i + chunkSize, groupsLen); i < end; ++i) {\n const PerFrameFunctionalGroups =\n PerFrameFunctionalGroupsSequence[i];\n\n const ImageOrientationPatientI =\n sharedImageOrientationPatient ||\n PerFrameFunctionalGroups.PlaneOrientationSequence\n .ImageOrientationPatient;\n\n const view = readFromUnpackedChunks(\n pixelData,\n i * sliceLength,\n sliceLength\n );\n\n const pixelDataI2D = ndarray(view, [Rows, Columns]);\n\n const alignedPixelDataI = alignPixelDataWithSourceData(\n pixelDataI2D,\n ImageOrientationPatientI,\n validOrientations,\n tolerance\n );\n\n if (!alignedPixelDataI) {\n throw new Error(\n \"Individual SEG frames are out of plane with respect to the first SEG frame. \" +\n \"This is not yet supported. Aborting segmentation loading.\"\n );\n }\n\n const segmentIndex = getSegmentIndex(multiframe, i);\n\n if (segmentIndex === undefined) {\n throw new Error(\n \"Could not retrieve the segment index. Aborting segmentation loading.\"\n );\n }\n\n if (!segmentsPixelIndices.has(segmentIndex)) {\n segmentsPixelIndices.set(segmentIndex, {});\n }\n\n const imageId = findReferenceSourceImageId(\n multiframe,\n i,\n imageIds,\n metadataProvider,\n tolerance,\n sopUIDImageIdIndexMap\n );\n\n if (!imageId) {\n console.warn(\n \"Image not present in stack, can't import frame : \" +\n i +\n \".\"\n );\n continue;\n }\n\n const sourceImageMetadata = imageIdMaps.metadata[imageId];\n if (\n Rows !== sourceImageMetadata.Rows ||\n Columns !== sourceImageMetadata.Columns\n ) {\n throw new Error(\n \"Individual SEG frames have different geometry dimensions (Rows and Columns) \" +\n \"respect to the source image reference frame. This is not yet supported. \" +\n \"Aborting segmentation loading. \"\n );\n }\n\n const imageIdIndex = imageIdMaps.indices[imageId];\n\n const byteOffset =\n sliceLength *\n imageIdIndex *\n TypedArrayConstructor.BYTES_PER_ELEMENT;\n\n const labelmap2DView = new TypedArrayConstructor(\n labelmapBufferArray[0],\n byteOffset,\n sliceLength\n );\n\n const data = alignedPixelDataI.data;\n\n const indexCache = [];\n for (\n let j = 0, len = alignedPixelDataI.data.length;\n j < len;\n ++j\n ) {\n if (data[j]) {\n for (let x = j; x < len; ++x) {\n if (data[x]) {\n if (!overlapping && labelmap2DView[x] !== 0) {\n overlapping = true;\n }\n labelmap2DView[x] = segmentIndex;\n indexCache.push(x);\n }\n }\n\n if (!segmentsOnFrame[imageIdIndex]) {\n segmentsOnFrame[imageIdIndex] = [];\n }\n\n segmentsOnFrame[imageIdIndex].push(segmentIndex);\n\n break;\n }\n }\n\n const segmentIndexObject =\n segmentsPixelIndices.get(segmentIndex);\n segmentIndexObject[imageIdIndex] = indexCache;\n segmentsPixelIndices.set(segmentIndex, segmentIndexObject);\n }\n\n // trigger an event after each chunk\n if (shouldTriggerEvent) {\n const percentComplete = Math.round((i / groupsLen) * 100);\n triggerEvent(eventTarget, Events.SEGMENTATION_LOAD_PROGRESS, {\n percentComplete\n });\n }\n\n // schedule next chunk\n if (i < groupsLen) {\n setTimeout(processInChunks, 0);\n } else {\n // resolve the Promise when all chunks have been processed\n resolve(overlapping);\n }\n }\n\n processInChunks();\n });\n}\n\n/**\n * unpackPixelData - Unpacks bit packed pixelData if the Segmentation is BINARY.\n *\n * @param {Object} multiframe The multiframe dataset.\n * @param {Object} options Options for the unpacking.\n * @return {Uint8Array} The unpacked pixelData.\n */\nfunction unpackPixelData(multiframe, options) {\n const segType = multiframe.SegmentationType;\n\n let data;\n if (Array.isArray(multiframe.PixelData)) {\n data = multiframe.PixelData[0];\n } else {\n data = multiframe.PixelData;\n }\n\n if (data === undefined) {\n log.error(\"This segmentation pixelData is undefined.\");\n }\n\n if (segType === \"BINARY\") {\n // For extreme big data, we can't unpack the data at once and we need to\n // chunk it and unpack each chunk separately.\n // MAX 2GB is the limit right now to allocate a buffer\n return getUnpackedChunks(data, options.maxBytesPerChunk);\n }\n\n const pixelData = new Uint8Array(data);\n\n const max = multiframe.MaximumFractionalValue;\n const onlyMaxAndZero =\n pixelData.find(element => element !== 0 && element !== max) ===\n undefined;\n\n if (!onlyMaxAndZero) {\n // This is a fractional segmentation, which is not currently supported.\n return;\n }\n\n log.warn(\n \"This segmentation object is actually binary... processing as such.\"\n );\n\n return pixelData;\n}\n\nfunction getUnpackedChunks(data, maxBytesPerChunk) {\n var bitArray = new Uint8Array(data);\n var chunks = [];\n\n var maxBitsPerChunk = maxBytesPerChunk * 8;\n var numberOfChunks = Math.ceil((bitArray.length * 8) / maxBitsPerChunk);\n\n for (var i = 0; i < numberOfChunks; i++) {\n var startBit = i * maxBitsPerChunk;\n var endBit = Math.min(startBit + maxBitsPerChunk, bitArray.length * 8);\n\n var startByte = Math.floor(startBit / 8);\n var endByte = Math.ceil(endBit / 8);\n\n var chunk = bitArray.slice(startByte, endByte);\n var unpackedChunk = BitArray.unpack(chunk);\n\n chunks.push(unpackedChunk);\n }\n\n return chunks;\n}\n\n/**\n * getImageIdOfSourceImageBySourceImageSequence - Returns the Cornerstone imageId of the source image.\n *\n * @param {Object} SourceImageSequence Sequence describing the source image.\n * @param {String[]} imageIds A list of imageIds.\n * @param {Object} sopUIDImageIdIndexMap A map of SOPInstanceUIDs to imageIds.\n * @return {String} The corresponding imageId.\n */\nfunction getImageIdOfSourceImageBySourceImageSequence(\n SourceImageSequence,\n sopUIDImageIdIndexMap\n) {\n const { ReferencedSOPInstanceUID, ReferencedFrameNumber } =\n SourceImageSequence;\n\n return ReferencedFrameNumber\n ? getImageIdOfReferencedFrame(\n ReferencedSOPInstanceUID,\n ReferencedFrameNumber,\n sopUIDImageIdIndexMap\n )\n : sopUIDImageIdIndexMap[ReferencedSOPInstanceUID];\n}\n\n/**\n * getImageIdOfSourceImagebyGeometry - Returns the Cornerstone imageId of the source image.\n *\n * @param {String} ReferencedSeriesInstanceUID Referenced series of the source image.\n * @param {String} FrameOfReferenceUID Frame of reference.\n * @param {Object} PerFrameFunctionalGroup Sequence describing segmentation reference attributes per frame.\n * @param {String[]} imageIds A list of imageIds.\n * @param {Object} sopUIDImageIdIndexMap A map of SOPInstanceUIDs to imageIds.\n * @param {Float} tolerance The tolerance parameter\n *\n * @return {String} The corresponding imageId.\n */\nfunction getImageIdOfSourceImagebyGeometry(\n ReferencedSeriesInstanceUID,\n FrameOfReferenceUID,\n PerFrameFunctionalGroup,\n imageIds,\n metadataProvider,\n tolerance\n) {\n if (\n ReferencedSeriesInstanceUID === undefined ||\n PerFrameFunctionalGroup.PlanePositionSequence === undefined ||\n PerFrameFunctionalGroup.PlanePositionSequence[0] === undefined ||\n PerFrameFunctionalGroup.PlanePositionSequence[0]\n .ImagePositionPatient === undefined\n ) {\n return undefined;\n }\n\n for (\n let imageIdsIndexc = 0;\n imageIdsIndexc < imageIds.length;\n ++imageIdsIndexc\n ) {\n const sourceImageMetadata = metadataProvider.get(\n \"instance\",\n imageIds[imageIdsIndexc]\n );\n\n if (\n sourceImageMetadata === undefined ||\n sourceImageMetadata.ImagePositionPatient === undefined ||\n sourceImageMetadata.FrameOfReferenceUID !== FrameOfReferenceUID ||\n sourceImageMetadata.SeriesInstanceUID !==\n ReferencedSeriesInstanceUID\n ) {\n continue;\n }\n\n if (\n compareArrays(\n PerFrameFunctionalGroup.PlanePositionSequence[0]\n .ImagePositionPatient,\n sourceImageMetadata.ImagePositionPatient,\n tolerance\n )\n ) {\n return imageIds[imageIdsIndexc];\n }\n }\n}\n\n/**\n * getImageIdOfReferencedFrame - Returns the imageId corresponding to the\n * specified sopInstanceUid and frameNumber for multi-frame images.\n *\n * @param {String} sopInstanceUid The sopInstanceUid of the desired image.\n * @param {Number} frameNumber The frame number.\n * @param {String} imageIds The list of imageIds.\n * @param {Object} sopUIDImageIdIndexMap A map of SOPInstanceUIDs to imageIds.\n * @return {String} The imageId that corresponds to the sopInstanceUid.\n */\nfunction getImageIdOfReferencedFrame(\n sopInstanceUid,\n frameNumber,\n sopUIDImageIdIndexMap\n) {\n const imageId = sopUIDImageIdIndexMap[sopInstanceUid];\n\n if (!imageId) {\n return;\n }\n\n const imageIdFrameNumber = Number(imageId.split(\"frame=\")[1]);\n\n return imageIdFrameNumber === frameNumber - 1 ? imageId : undefined;\n}\n\n/**\n * getValidOrientations - returns an array of valid orientations.\n *\n * @param {Number[6]} iop The row (0..2) an column (3..5) direction cosines.\n * @return {Number[8][6]} An array of valid orientations.\n */\nfunction getValidOrientations(iop) {\n const orientations = [];\n\n // [0, 1, 2]: 0, 0hf, 0vf\n // [3, 4, 5]: 90, 90hf, 90vf\n // [6, 7]: 180, 270\n\n orientations[0] = iop;\n orientations[1] = flipIOP.h(iop);\n orientations[2] = flipIOP.v(iop);\n\n const iop90 = rotateDirectionCosinesInPlane(iop, Math.PI / 2);\n\n orientations[3] = iop90;\n orientations[4] = flipIOP.h(iop90);\n orientations[5] = flipIOP.v(iop90);\n\n orientations[6] = rotateDirectionCosinesInPlane(iop, Math.PI);\n orientations[7] = rotateDirectionCosinesInPlane(iop, 1.5 * Math.PI);\n\n return orientations;\n}\n\n/**\n * alignPixelDataWithSourceData -\n *\n * @param {Ndarray} pixelData2D - The data to align.\n * @param {Number[6]} iop - The orientation of the image slice.\n * @param {Number[8][6]} orientations - An array of valid imageOrientationPatient values.\n * @param {Number} tolerance.\n * @return {Ndarray} The aligned pixelData.\n */\nfunction alignPixelDataWithSourceData(\n pixelData2D,\n iop,\n orientations,\n tolerance\n) {\n if (compareArrays(iop, orientations[0], tolerance)) {\n return pixelData2D;\n } else if (compareArrays(iop, orientations[1], tolerance)) {\n // Flipped vertically.\n\n // Undo Flip\n return flipMatrix2D.v(pixelData2D);\n } else if (compareArrays(iop, orientations[2], tolerance)) {\n // Flipped horizontally.\n\n // Unfo flip\n return flipMatrix2D.h(pixelData2D);\n } else if (compareArrays(iop, orientations[3], tolerance)) {\n //Rotated 90 degrees\n\n // Rotate back\n return rotateMatrix902D(pixelData2D);\n } else if (compareArrays(iop, orientations[4], tolerance)) {\n //Rotated 90 degrees and fliped horizontally.\n\n // Undo flip and rotate back.\n return rotateMatrix902D(flipMatrix2D.h(pixelData2D));\n } else if (compareArrays(iop, orientations[5], tolerance)) {\n // Rotated 90 degrees and fliped vertically\n\n // Unfo flip and rotate back.\n return rotateMatrix902D(flipMatrix2D.v(pixelData2D));\n } else if (compareArrays(iop, orientations[6], tolerance)) {\n // Rotated 180 degrees. // TODO -> Do this more effeciently, there is a 1:1 mapping like 90 degree rotation.\n\n return rotateMatrix902D(rotateMatrix902D(pixelData2D));\n } else if (compareArrays(iop, orientations[7], tolerance)) {\n // Rotated 270 degrees\n\n // Rotate back.\n return rotateMatrix902D(\n rotateMatrix902D(rotateMatrix902D(pixelData2D))\n );\n }\n}\n\nfunction getSegmentMetadata(multiframe, seriesInstanceUid) {\n const segmentSequence = multiframe.SegmentSequence;\n let data = [];\n\n if (Array.isArray(segmentSequence)) {\n data = [undefined, ...segmentSequence];\n } else {\n // Only one segment, will be stored as an object.\n data = [undefined, segmentSequence];\n }\n\n return {\n seriesInstanceUid,\n data\n };\n}\n\n/**\n * Reads a range of bytes from an array of ArrayBuffer chunks and\n * aggregate them into a new Uint8Array.\n *\n * @param {ArrayBuffer[]} chunks - An array of ArrayBuffer chunks.\n * @param {number} offset - The offset of the first byte to read.\n * @param {number} length - The number of bytes to read.\n * @returns {Uint8Array} A new Uint8Array containing the requested bytes.\n */\nfunction readFromUnpackedChunks(chunks, offset, length) {\n const mapping = getUnpackedOffsetAndLength(chunks, offset, length);\n\n // If all the data is in one chunk, we can just slice that chunk\n if (mapping.start.chunkIndex === mapping.end.chunkIndex) {\n return new Uint8Array(\n chunks[mapping.start.chunkIndex].buffer,\n mapping.start.offset,\n length\n );\n } else {\n // If the data spans multiple chunks, we need to create a new Uint8Array and copy the data from each chunk\n let result = new Uint8Array(length);\n let resultOffset = 0;\n\n for (\n let i = mapping.start.chunkIndex;\n i <= mapping.end.chunkIndex;\n i++\n ) {\n let start =\n i === mapping.start.chunkIndex ? mapping.start.offset : 0;\n let end =\n i === mapping.end.chunkIndex\n ? mapping.end.offset\n : chunks[i].length;\n\n result.set(\n new Uint8Array(chunks[i].buffer, start, end - start),\n resultOffset\n );\n resultOffset += end - start;\n }\n\n return result;\n }\n}\n\nfunction getUnpackedOffsetAndLength(chunks, offset, length) {\n var totalBytes = chunks.reduce((total, chunk) => total + chunk.length, 0);\n\n if (offset < 0 || offset + length > totalBytes) {\n throw new Error(\"Offset and length out of bounds\");\n }\n\n var startChunkIndex = 0;\n var startOffsetInChunk = offset;\n\n while (startOffsetInChunk >= chunks[startChunkIndex].length) {\n startOffsetInChunk -= chunks[startChunkIndex].length;\n startChunkIndex++;\n }\n\n var endChunkIndex = startChunkIndex;\n var endOffsetInChunk = startOffsetInChunk + length;\n\n while (endOffsetInChunk > chunks[endChunkIndex].length) {\n endOffsetInChunk -= chunks[endChunkIndex].length;\n endChunkIndex++;\n }\n\n return {\n start: { chunkIndex: startChunkIndex, offset: startOffsetInChunk },\n end: { chunkIndex: endChunkIndex, offset: endOffsetInChunk }\n };\n}\n\nfunction calculateCentroid(\n imageIdIndexBufferIndex,\n multiframe,\n metadataProvider,\n imageIds\n) {\n let xAcc = 0;\n let yAcc = 0;\n let zAcc = 0;\n let worldXAcc = 0;\n let worldYAcc = 0;\n let worldZAcc = 0;\n let count = 0;\n\n for (const [imageIdIndex, bufferIndices] of Object.entries(\n imageIdIndexBufferIndex\n )) {\n const z = Number(imageIdIndex);\n\n if (!bufferIndices || bufferIndices.length === 0) {\n continue;\n }\n\n // Get metadata for this slice\n const imageId = imageIds[z];\n const imagePlaneModule = metadataProvider.get(\n \"imagePlaneModule\",\n imageId\n );\n\n if (!imagePlaneModule) {\n console.debug(\n \"Missing imagePlaneModule metadata for centroid calculation\"\n );\n continue;\n }\n\n const {\n imagePositionPatient,\n rowCosines,\n columnCosines,\n rowPixelSpacing,\n columnPixelSpacing\n } = imagePlaneModule;\n\n for (const bufferIndex of bufferIndices) {\n const y = Math.floor(bufferIndex / multiframe.Rows);\n const x = bufferIndex % multiframe.Rows;\n\n // Image coordinates\n xAcc += x;\n yAcc += y;\n zAcc += z;\n\n // Calculate world coordinates\n // P(world) = P(image) * IOP * spacing + IPP\n const worldX =\n imagePositionPatient[0] +\n x * rowCosines[0] * columnPixelSpacing +\n y * columnCosines[0] * rowPixelSpacing;\n\n const worldY =\n imagePositionPatient[1] +\n x * rowCosines[1] * columnPixelSpacing +\n y * columnCosines[1] * rowPixelSpacing;\n\n const worldZ =\n imagePositionPatient[2] +\n x * rowCosines[2] * columnPixelSpacing +\n y * columnCosines[2] * rowPixelSpacing;\n\n worldXAcc += worldX;\n worldYAcc += worldY;\n worldZAcc += worldZ;\n\n count++;\n }\n }\n\n return {\n image: {\n x: Math.floor(xAcc / count),\n y: Math.floor(yAcc / count),\n z: Math.floor(zAcc / count)\n },\n world: {\n x: worldXAcc / count,\n y: worldYAcc / count,\n z: worldZAcc / count\n },\n count\n };\n}\n\nconst Segmentation = {\n generateSegmentation,\n generateToolState,\n fillSegmentation\n};\n\nexport default Segmentation;\nexport { fillSegmentation, generateSegmentation, generateToolState };\n","import Segmentation_3X from \"./Segmentation_3X\";\nimport Segmentation_4X from \"./Segmentation_4X\";\n\n/**\n * generateSegmentation - Generates a DICOM Segmentation object given cornerstoneTools data.\n *\n * @param {object[]} images An array of the cornerstone image objects.\n * @param {Object|Object[]} labelmaps3DorBrushData For 4.X: The cornerstone `Labelmap3D` object, or an array of objects.\n * For 3.X: the BrushData.\n * @param {number} cornerstoneToolsVersion The cornerstoneTools major version to map against.\n * @returns {Object}\n */\nfunction generateSegmentation(\n images,\n labelmaps3DorBrushData,\n options = { includeSliceSpacing: true },\n cornerstoneToolsVersion = 4\n) {\n if (cornerstoneToolsVersion === 4) {\n return Segmentation_4X.generateSegmentation(\n images,\n labelmaps3DorBrushData,\n options\n );\n }\n\n if (cornerstoneToolsVersion === 3) {\n return Segmentation_3X.generateSegmentation(\n images,\n labelmaps3DorBrushData,\n options\n );\n }\n\n console.warn(\n `No generateSegmentation adapter for cornerstone version ${cornerstoneToolsVersion}, exiting.`\n );\n}\n\n/**\n * generateToolState - Given a set of cornerstoneTools imageIds and a Segmentation buffer,\n * derive cornerstoneTools toolState and brush metadata.\n *\n * @param {string[]} imageIds An array of the imageIds.\n * @param {ArrayBuffer} arrayBuffer The SEG arrayBuffer.\n * @param {*} metadataProvider\n * @param {boolean} skipOverlapping - skip checks for overlapping segs, default value false.\n * @param {number} tolerance - default value 1.e-3.\n * @param {number} cornerstoneToolsVersion - default value 4.\n *\n * @returns {Object} The toolState and an object from which the\n * segment metadata can be derived.\n */\nfunction generateToolState(\n imageIds,\n arrayBuffer,\n metadataProvider,\n skipOverlapping = false,\n tolerance = 1e-3,\n cornerstoneToolsVersion = 4\n) {\n if (cornerstoneToolsVersion === 4) {\n return Segmentation_4X.generateToolState(\n imageIds,\n arrayBuffer,\n metadataProvider,\n skipOverlapping,\n tolerance\n );\n }\n\n if (cornerstoneToolsVersion === 3) {\n return Segmentation_3X.generateToolState(\n imageIds,\n arrayBuffer,\n metadataProvider\n );\n }\n\n console.warn(\n `No generateToolState adapter for cornerstone version ${cornerstoneToolsVersion}, exiting.`\n );\n}\n\n/**\n * fillSegmentation - Fills a derived segmentation dataset with cornerstoneTools `LabelMap3D` data.\n *\n * @param {object[]} segmentation An empty segmentation derived dataset.\n * @param {Object|Object[]} inputLabelmaps3D The cornerstone `Labelmap3D` object, or an array of objects.\n * @param {Object} userOptions Options object to override default options.\n * @returns {Blob} description\n */\nfunction fillSegmentation(\n segmentation,\n inputLabelmaps3D,\n options = { includeSliceSpacing: true },\n cornerstoneToolsVersion = 4\n) {\n if (cornerstoneToolsVersion === 4) {\n return Segmentation_4X.fillSegmentation(\n segmentation,\n inputLabelmaps3D,\n options\n );\n }\n\n console.warn(\n `No generateSegmentation adapter for cornerstone version ${cornerstoneToolsVersion}, exiting.`\n );\n}\n\nexport { generateSegmentation, generateToolState, fillSegmentation };\n","import { log, data as dcmjsData, normalizers } from \"dcmjs\";\nimport checkOrientation from \"../helpers/checkOrientation\";\nimport compareArrays from \"../helpers/compareArrays\";\nconst { DicomMessage, DicomMetaDictionary } = dcmjsData;\nconst { Normalizer } = normalizers;\nasync function generateToolState(imageIds, arrayBuffer, metadataProvider, tolerance = 1e-3) {\n const dicomData = DicomMessage.readFile(arrayBuffer);\n const dataset = DicomMetaDictionary.naturalizeDataset(dicomData.dict);\n dataset._meta = DicomMetaDictionary.namifyDataset(dicomData.meta);\n const multiframe = Normalizer.normalizeToDataset([dataset]);\n const imagePlaneModule = metadataProvider.get(\"imagePlaneModule\", imageIds[0]);\n if (!imagePlaneModule) {\n console.warn(\"Insufficient metadata, imagePlaneModule missing.\");\n }\n const ImageOrientationPatient = Array.isArray(imagePlaneModule.rowCosines)\n ? [...imagePlaneModule.rowCosines, ...imagePlaneModule.columnCosines]\n : [\n imagePlaneModule.rowCosines.x,\n imagePlaneModule.rowCosines.y,\n imagePlaneModule.rowCosines.z,\n imagePlaneModule.columnCosines.x,\n imagePlaneModule.columnCosines.y,\n imagePlaneModule.columnCosines.z\n ];\n const validOrientations = [ImageOrientationPatient];\n const pixelData = getPixelData(multiframe);\n const orientation = checkOrientation(multiframe, validOrientations, [imagePlaneModule.rows, imagePlaneModule.columns, imageIds.length], tolerance);\n const sopUIDImageIdIndexMap = imageIds.reduce((acc, imageId) => {\n const { sopInstanceUID } = metadataProvider.get(\"generalImageModule\", imageId);\n acc[sopInstanceUID] = imageId;\n return acc;\n }, {});\n if (orientation !== \"Planar\") {\n const orientationText = {\n Perpendicular: \"orthogonal\",\n Oblique: \"oblique\"\n };\n throw new Error(`Parametric maps ${orientationText[orientation]} to the acquisition plane of the source data are not yet supported.`);\n }\n const imageIdMaps = imageIds.reduce((acc, curr, index) => {\n acc.indices[curr] = index;\n acc.metadata[curr] = metadataProvider.get(\"instance\", curr);\n return acc;\n }, { indices: {}, metadata: {} });\n await insertPixelDataPlanar(pixelData, multiframe, imageIds, metadataProvider, tolerance, sopUIDImageIdIndexMap, imageIdMaps);\n return { pixelData };\n}\nfunction insertPixelDataPlanar(sourcePixelData, multiframe, imageIds, metadataProvider, tolerance, sopUIDImageIdIndexMap, imageIdMaps) {\n const targetPixelData = new sourcePixelData.constructor(sourcePixelData.length);\n const { PerFrameFunctionalGroupsSequence, Rows, Columns } = multiframe;\n const sliceLength = Columns * Rows;\n const numSlices = PerFrameFunctionalGroupsSequence.length;\n for (let i = 0; i < numSlices; i++) {\n const sourceSliceDataView = new sourcePixelData.constructor(sourcePixelData.buffer, i * sliceLength, sliceLength);\n const imageId = findReferenceSourceImageId(multiframe, i, imageIds, metadataProvider, tolerance, sopUIDImageIdIndexMap);\n if (!imageId) {\n console.warn(\"Image not present in stack, can't import frame : \" + i + \".\");\n continue;\n }\n const sourceImageMetadata = imageIdMaps.metadata[imageId];\n if (Rows !== sourceImageMetadata.Rows ||\n Columns !== sourceImageMetadata.Columns) {\n throw new Error(\"Parametric map have different geometry dimensions (Rows and Columns) \" +\n \"respect to the source image reference frame. This is not yet supported.\");\n }\n const imageIdIndex = imageIdMaps.indices[imageId];\n const byteOffset = sliceLength * imageIdIndex * targetPixelData.BYTES_PER_ELEMENT;\n const targetSliceDataView = new targetPixelData.constructor(targetPixelData.buffer, byteOffset, sliceLength);\n targetSliceDataView.set(sourceSliceDataView);\n }\n return targetPixelData;\n}\nfunction getPixelData(multiframe) {\n let TypedArrayClass;\n let data;\n if (multiframe.PixelData) {\n const validTypedArrays = multiframe.BitsAllocated === 16\n ? [Uint16Array, Int16Array]\n : [Uint32Array, Int32Array];\n TypedArrayClass = validTypedArrays[multiframe.PixelRepresentation ?? 0];\n data = multiframe.PixelData;\n }\n else if (multiframe.FloatPixelData) {\n TypedArrayClass = Float32Array;\n data = multiframe.FloatPixelData;\n }\n else if (multiframe.DoubleFloatPixelData) {\n TypedArrayClass = Float64Array;\n data = multiframe.DoubleFloatPixelData;\n }\n if (data === undefined) {\n log.error(\"This parametric map pixel data is undefined.\");\n }\n if (Array.isArray(data)) {\n data = data[0];\n }\n return new TypedArrayClass(data);\n}\nfunction findReferenceSourceImageId(multiframe, frameSegment, imageIds, metadataProvider, tolerance, sopUIDImageIdIndexMap) {\n let imageId = undefined;\n if (!multiframe) {\n return imageId;\n }\n const { FrameOfReferenceUID, PerFrameFunctionalGroupsSequence, SourceImageSequence, ReferencedSeriesSequence } = multiframe;\n if (!PerFrameFunctionalGroupsSequence ||\n PerFrameFunctionalGroupsSequence.length === 0) {\n return imageId;\n }\n const PerFrameFunctionalGroup = PerFrameFunctionalGroupsSequence[frameSegment];\n if (!PerFrameFunctionalGroup) {\n return imageId;\n }\n let frameSourceImageSequence = undefined;\n if (PerFrameFunctionalGroup.DerivationImageSequence) {\n let DerivationImageSequence = PerFrameFunctionalGroup.DerivationImageSequence;\n if (Array.isArray(DerivationImageSequence)) {\n if (DerivationImageSequence.length !== 0) {\n DerivationImageSequence = DerivationImageSequence[0];\n }\n else {\n DerivationImageSequence = undefined;\n }\n }\n if (DerivationImageSequence) {\n frameSourceImageSequence =\n DerivationImageSequence.SourceImageSequence;\n if (Array.isArray(frameSourceImageSequence)) {\n if (frameSourceImageSequence.length !== 0) {\n frameSourceImageSequence = frameSourceImageSequence[0];\n }\n else {\n frameSourceImageSequence = undefined;\n }\n }\n }\n }\n else if (SourceImageSequence && SourceImageSequence.length !== 0) {\n console.warn(\"DerivationImageSequence not present, using SourceImageSequence assuming SEG has the same geometry as the source image.\");\n frameSourceImageSequence = SourceImageSequence[frameSegment];\n }\n if (frameSourceImageSequence) {\n imageId = getImageIdOfSourceImageBySourceImageSequence(frameSourceImageSequence, sopUIDImageIdIndexMap);\n }\n if (imageId === undefined && ReferencedSeriesSequence) {\n const referencedSeriesSequence = Array.isArray(ReferencedSeriesSequence)\n ? ReferencedSeriesSequence[0]\n : ReferencedSeriesSequence;\n const ReferencedSeriesInstanceUID = referencedSeriesSequence.SeriesInstanceUID;\n imageId = getImageIdOfSourceImagebyGeometry(ReferencedSeriesInstanceUID, FrameOfReferenceUID, PerFrameFunctionalGroup, imageIds, metadataProvider, tolerance);\n }\n return imageId;\n}\nfunction getImageIdOfSourceImageBySourceImageSequence(SourceImageSequence, sopUIDImageIdIndexMap) {\n const { ReferencedSOPInstanceUID, ReferencedFrameNumber } = SourceImageSequence;\n return ReferencedFrameNumber\n ? getImageIdOfReferencedFrame(ReferencedSOPInstanceUID, ReferencedFrameNumber, sopUIDImageIdIndexMap)\n : sopUIDImageIdIndexMap[ReferencedSOPInstanceUID];\n}\nfunction getImageIdOfSourceImagebyGeometry(ReferencedSeriesInstanceUID, FrameOfReferenceUID, PerFrameFunctionalGroup, imageIds, metadataProvider, tolerance) {\n if (ReferencedSeriesInstanceUID === undefined ||\n PerFrameFunctionalGroup.PlanePositionSequence === undefined ||\n PerFrameFunctionalGroup.PlanePositionSequence[0] === undefined ||\n PerFrameFunctionalGroup.PlanePositionSequence[0]\n .ImagePositionPatient === undefined) {\n return undefined;\n }\n for (let imageIdsIndex = 0; imageIdsIndex < imageIds.length; ++imageIdsIndex) {\n const sourceImageMetadata = metadataProvider.get(\"instance\", imageIds[imageIdsIndex]);\n if (sourceImageMetadata === undefined ||\n sourceImageMetadata.ImagePositionPatient === undefined ||\n sourceImageMetadata.FrameOfReferenceUID !== FrameOfReferenceUID ||\n sourceImageMetadata.SeriesInstanceUID !==\n ReferencedSeriesInstanceUID) {\n continue;\n }\n if (compareArrays(PerFrameFunctionalGroup.PlanePositionSequence[0]\n .ImagePositionPatient, sourceImageMetadata.ImagePositionPatient, tolerance)) {\n return imageIds[imageIdsIndex];\n }\n }\n}\nfunction getImageIdOfReferencedFrame(sopInstanceUid, frameNumber, sopUIDImageIdIndexMap) {\n const imageId = sopUIDImageIdIndexMap[sopInstanceUid];\n if (!imageId) {\n return;\n }\n const imageIdFrameNumber = Number(imageId.split(\"frame=\")[1]);\n return imageIdFrameNumber === frameNumber - 1 ? imageId : undefined;\n}\nconst ParametricMapObj = {\n generateToolState\n};\nexport { ParametricMapObj as default, ParametricMapObj as ParametricMap };\n","import MeasurementReport from \"./MeasurementReport\";\nimport Length from \"./Length\";\nimport FreehandRoi from \"./FreehandRoi\";\nimport Bidirectional from \"./Bidirectional\";\nimport EllipticalRoi from \"./EllipticalRoi\";\nimport CircleRoi from \"./CircleRoi\";\nimport ArrowAnnotate from \"./ArrowAnnotate\";\nimport CobbAngle from \"./CobbAngle\";\nimport Angle from \"./Angle\";\nimport RectangleRoi from \"./RectangleRoi\";\nimport * as Segmentation from \"./Segmentation\";\nimport ParametricMap from \"./ParametricMap\";\nconst CornerstoneSR = {\n Length,\n FreehandRoi,\n Bidirectional,\n EllipticalRoi,\n CircleRoi,\n ArrowAnnotate,\n MeasurementReport,\n CobbAngle,\n Angle,\n RectangleRoi\n};\nconst CornerstoneSEG = {\n Segmentation\n};\nconst CornerstonePMAP = {\n ParametricMap\n};\nexport { CornerstoneSR, CornerstoneSEG, CornerstonePMAP };\n","export default \"Cornerstone3DTools@^0.1.0\";\n","// This is a custom coding scheme defined to store some annotations from Cornerstone.\n// Note: CodeMeaning is VR type LO, which means we only actually support 64 characters\n// here this is fine for most labels, but may be problematic at some point.\nconst CORNERSTONEFREETEXT = \"CORNERSTONEFREETEXT\";\n\n// Cornerstone specified coding scheme for storing findings\nconst CodingSchemeDesignator = \"CORNERSTONEJS\";\n\nconst CodingScheme = {\n CodingSchemeDesignator,\n codeValues: {\n CORNERSTONEFREETEXT\n }\n};\n\nexport default CodingScheme;\n","import { normalizers, data, utilities, derivations } from \"dcmjs\";\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\nimport { toArray, codeMeaningEquals } from \"../helpers\";\nimport Cornerstone3DCodingScheme from \"./CodingScheme\";\nconst { TID1500, addAccessors } = utilities;\nconst { StructuredReport } = derivations;\nconst { Normalizer } = normalizers;\nconst { TID1500MeasurementReport, TID1501MeasurementGroup } = TID1500;\nconst { DicomMetaDictionary } = data;\nconst FINDING = { CodingSchemeDesignator: \"DCM\", CodeValue: \"121071\" };\nconst FINDING_SITE = { CodingSchemeDesignator: \"SCT\", CodeValue: \"363698007\" };\nconst FINDING_SITE_OLD = { CodingSchemeDesignator: \"SRT\", CodeValue: \"G-C0E3\" };\nconst codeValueMatch = (group, code, oldCode) => {\n const { ConceptNameCodeSequence } = group;\n if (!ConceptNameCodeSequence) {\n return;\n }\n const { CodingSchemeDesignator, CodeValue } = ConceptNameCodeSequence;\n return ((CodingSchemeDesignator == code.CodingSchemeDesignator &&\n CodeValue == code.CodeValue) ||\n (oldCode &&\n CodingSchemeDesignator == oldCode.CodingSchemeDesignator &&\n CodeValue == oldCode.CodeValue));\n};\nfunction getTID300ContentItem(tool, toolType, ReferencedSOPSequence, toolClass, worldToImageCoords) {\n const args = toolClass.getTID300RepresentationArguments(tool, worldToImageCoords);\n args.ReferencedSOPSequence = ReferencedSOPSequence;\n const TID300Measurement = new toolClass.TID300Representation(args);\n return TID300Measurement;\n}\nfunction getMeasurementGroup(toolType, toolData, ReferencedSOPSequence, worldToImageCoords) {\n const toolTypeData = toolData[toolType];\n const toolClass = MeasurementReport.CORNERSTONE_TOOL_CLASSES_BY_TOOL_TYPE[toolType];\n if (!toolTypeData ||\n !toolTypeData.data ||\n !toolTypeData.data.length ||\n !toolClass) {\n return;\n }\n const Measurements = toolTypeData.data.map(tool => {\n return getTID300ContentItem(tool, toolType, ReferencedSOPSequence, toolClass, worldToImageCoords);\n });\n return new TID1501MeasurementGroup(Measurements);\n}\nexport default class MeasurementReport {\n static { this.CORNERSTONE_3D_TAG = CORNERSTONE_3D_TAG; }\n static { this.MEASUREMENT_BY_TOOLTYPE = {}; }\n static { this.CORNERSTONE_TOOL_CLASSES_BY_UTILITY_TYPE = {}; }\n static { this.CORNERSTONE_TOOL_CLASSES_BY_TOOL_TYPE = {}; }\n static getCornerstoneLabelFromDefaultState(defaultState) {\n const { findingSites = [], finding } = defaultState;\n const cornersoneFreeTextCodingValue = Cornerstone3DCodingScheme.codeValues.CORNERSTONEFREETEXT;\n const freeTextLabel = findingSites.find(fs => fs.CodeValue === cornersoneFreeTextCodingValue);\n if (freeTextLabel) {\n return freeTextLabel.CodeMeaning;\n }\n if (finding && finding.CodeValue === cornersoneFreeTextCodingValue) {\n return finding.CodeMeaning;\n }\n }\n static generateDatasetMeta() {\n const fileMetaInformationVersionArray = new Uint8Array(2);\n fileMetaInformationVersionArray[1] = 1;\n const _meta = {\n FileMetaInformationVersion: {\n Value: [fileMetaInformationVersionArray.buffer],\n vr: \"OB\"\n },\n TransferSyntaxUID: {\n Value: [\"1.2.840.10008.1.2.1\"],\n vr: \"UI\"\n },\n ImplementationClassUID: {\n Value: [DicomMetaDictionary.uid()],\n vr: \"UI\"\n },\n ImplementationVersionName: {\n Value: [\"dcmjs\"],\n vr: \"SH\"\n }\n };\n return _meta;\n }\n static { this.generateDerivationSourceDataset = instance => {\n const _vrMap = {\n PixelData: \"OW\"\n };\n const _meta = MeasurementReport.generateDatasetMeta();\n const derivationSourceDataset = {\n ...instance,\n _meta: _meta,\n _vrMap: _vrMap\n };\n return derivationSourceDataset;\n }; }\n static getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, toolType) {\n const { ContentSequence } = MeasurementGroup;\n const contentSequenceArr = toArray(ContentSequence);\n const findingGroup = contentSequenceArr.find(group => codeValueMatch(group, FINDING));\n const findingSiteGroups = contentSequenceArr.filter(group => codeValueMatch(group, FINDING_SITE, FINDING_SITE_OLD)) || [];\n const NUMGroup = contentSequenceArr.find(group => group.ValueType === \"NUM\");\n const SCOORDGroup = toArray(NUMGroup.ContentSequence).find(group => group.ValueType === \"SCOORD\");\n const { ReferencedSOPSequence } = SCOORDGroup.ContentSequence;\n const { ReferencedSOPInstanceUID, ReferencedFrameNumber } = ReferencedSOPSequence;\n const referencedImageId = sopInstanceUIDToImageIdMap[ReferencedSOPInstanceUID];\n const imagePlaneModule = metadata.get(\"imagePlaneModule\", referencedImageId);\n const finding = findingGroup\n ? addAccessors(findingGroup.ConceptCodeSequence)\n : undefined;\n const findingSites = findingSiteGroups.map(fsg => {\n return addAccessors(fsg.ConceptCodeSequence);\n });\n const defaultState = {\n description: undefined,\n sopInstanceUid: ReferencedSOPInstanceUID,\n annotation: {\n annotationUID: DicomMetaDictionary.uid(),\n metadata: {\n toolName: toolType,\n referencedImageId,\n FrameOfReferenceUID: imagePlaneModule.frameOfReferenceUID,\n label: \"\"\n },\n data: undefined\n },\n finding,\n findingSites\n };\n if (defaultState.finding) {\n defaultState.description = defaultState.finding.CodeMeaning;\n }\n defaultState.annotation.metadata.label =\n MeasurementReport.getCornerstoneLabelFromDefaultState(defaultState);\n return {\n defaultState,\n NUMGroup,\n SCOORDGroup,\n ReferencedSOPSequence,\n ReferencedSOPInstanceUID,\n ReferencedFrameNumber\n };\n }\n static generateReport(toolState, metadataProvider, worldToImageCoords, options) {\n let allMeasurementGroups = [];\n const sopInstanceUIDsToSeriesInstanceUIDMap = {};\n const derivationSourceDatasets = [];\n const _meta = MeasurementReport.generateDatasetMeta();\n Object.keys(toolState).forEach(imageId => {\n const sopCommonModule = metadataProvider.get(\"sopCommonModule\", imageId);\n const instance = metadataProvider.get(\"instance\", imageId);\n const { sopInstanceUID, sopClassUID } = sopCommonModule;\n const { SeriesInstanceUID: seriesInstanceUID } = instance;\n sopInstanceUIDsToSeriesInstanceUIDMap[sopInstanceUID] =\n seriesInstanceUID;\n if (!derivationSourceDatasets.find(dsd => dsd.SeriesInstanceUID === seriesInstanceUID)) {\n const derivationSourceDataset = MeasurementReport.generateDerivationSourceDataset(instance);\n derivationSourceDatasets.push(derivationSourceDataset);\n }\n const frameNumber = metadataProvider.get(\"frameNumber\", imageId);\n const toolData = toolState[imageId];\n const toolTypes = Object.keys(toolData);\n const ReferencedSOPSequence = {\n ReferencedSOPClassUID: sopClassUID,\n ReferencedSOPInstanceUID: sopInstanceUID,\n ReferencedFrameNumber: undefined\n };\n if ((instance &&\n instance.NumberOfFrames &&\n instance.NumberOfFrames > 1) ||\n Normalizer.isMultiframeSOPClassUID(sopClassUID)) {\n ReferencedSOPSequence.ReferencedFrameNumber = frameNumber;\n }\n const measurementGroups = [];\n toolTypes.forEach(toolType => {\n const group = getMeasurementGroup(toolType, toolData, ReferencedSOPSequence, worldToImageCoords);\n if (group) {\n measurementGroups.push(group);\n }\n });\n allMeasurementGroups =\n allMeasurementGroups.concat(measurementGroups);\n });\n const tid1500MeasurementReport = new TID1500MeasurementReport({ TID1501MeasurementGroups: allMeasurementGroups }, options);\n const report = new StructuredReport(derivationSourceDatasets, options);\n const contentItem = tid1500MeasurementReport.contentItem(derivationSourceDatasets, { ...options, sopInstanceUIDsToSeriesInstanceUIDMap });\n report.dataset = Object.assign(report.dataset, contentItem);\n report.dataset._meta = _meta;\n report.SpecificCharacterSet = \"ISO_IR 192\";\n return report;\n }\n static generateToolState(dataset, sopInstanceUIDToImageIdMap, imageToWorldCoords, metadata, hooks) {\n if (dataset.ContentTemplateSequence.TemplateIdentifier !== \"1500\") {\n throw new Error(\"This package can currently only interpret DICOM SR TID 1500\");\n }\n const REPORT = \"Imaging Measurements\";\n const GROUP = \"Measurement Group\";\n const TRACKING_IDENTIFIER = \"Tracking Identifier\";\n const TRACKING_UNIQUE_IDENTIFIER = \"Tracking Unique Identifier\";\n const imagingMeasurementContent = toArray(dataset.ContentSequence).find(codeMeaningEquals(REPORT));\n const measurementGroups = toArray(imagingMeasurementContent.ContentSequence).filter(codeMeaningEquals(GROUP));\n const measurementData = {};\n const cornerstoneToolClasses = MeasurementReport.CORNERSTONE_TOOL_CLASSES_BY_UTILITY_TYPE;\n const registeredToolClasses = [];\n Object.keys(cornerstoneToolClasses).forEach(key => {\n registeredToolClasses.push(cornerstoneToolClasses[key]);\n measurementData[key] = [];\n });\n measurementGroups.forEach(measurementGroup => {\n try {\n const measurementGroupContentSequence = toArray(measurementGroup.ContentSequence);\n const TrackingIdentifierGroup = measurementGroupContentSequence.find(contentItem => contentItem.ConceptNameCodeSequence.CodeMeaning ===\n TRACKING_IDENTIFIER);\n const TrackingIdentifierValue = TrackingIdentifierGroup.TextValue;\n const TrackingUniqueIdentifierGroup = measurementGroupContentSequence.find(contentItem => contentItem.ConceptNameCodeSequence.CodeMeaning ===\n TRACKING_UNIQUE_IDENTIFIER);\n const TrackingUniqueIdentifierValue = TrackingUniqueIdentifierGroup?.UID;\n const toolClass = hooks?.getToolClass?.(measurementGroup, dataset, registeredToolClasses) ||\n registeredToolClasses.find(tc => tc.isValidCornerstoneTrackingIdentifier(TrackingIdentifierValue));\n if (toolClass) {\n const measurement = toolClass.getMeasurementData(measurementGroup, sopInstanceUIDToImageIdMap, imageToWorldCoords, metadata);\n measurement.TrackingUniqueIdentifier =\n TrackingUniqueIdentifierValue;\n console.log(`=== ${toolClass.toolType} ===`);\n console.log(measurement);\n measurementData[toolClass.toolType].push(measurement);\n }\n }\n catch (e) {\n console.warn(\"Unable to generate tool state for\", measurementGroup, e);\n }\n });\n return measurementData;\n }\n static registerTool(toolClass) {\n MeasurementReport.CORNERSTONE_TOOL_CLASSES_BY_UTILITY_TYPE[toolClass.utilityToolType] = toolClass;\n MeasurementReport.CORNERSTONE_TOOL_CLASSES_BY_TOOL_TYPE[toolClass.toolType] = toolClass;\n MeasurementReport.MEASUREMENT_BY_TOOLTYPE[toolClass.toolType] =\n toolClass.utilityToolType;\n }\n}\n","import MeasurementReport from \"./MeasurementReport\";\nimport { utilities } from \"dcmjs\";\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\nimport CodingScheme from \"./CodingScheme\";\n\nconst { Point: TID300Point } = utilities.TID300;\n\nconst ARROW_ANNOTATE = \"ArrowAnnotate\";\nconst trackingIdentifierTextValue = `${CORNERSTONE_3D_TAG}:${ARROW_ANNOTATE}`;\n\nconst { codeValues, CodingSchemeDesignator } = CodingScheme;\n\nclass ArrowAnnotate {\n static getMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n imageToWorldCoords,\n metadata\n ) {\n const { defaultState, SCOORDGroup, ReferencedFrameNumber } =\n MeasurementReport.getSetupMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n metadata,\n ArrowAnnotate.toolType\n );\n\n const referencedImageId =\n defaultState.annotation.metadata.referencedImageId;\n\n const text = defaultState.annotation.metadata.label;\n\n const { GraphicData } = SCOORDGroup;\n\n const worldCoords = [];\n for (let i = 0; i < GraphicData.length; i += 2) {\n const point = imageToWorldCoords(referencedImageId, [\n GraphicData[i],\n GraphicData[i + 1]\n ]);\n worldCoords.push(point);\n }\n\n // Since the arrowAnnotate measurement is just a point, to generate the tool state\n // we derive the second point based on the image size relative to the first point.\n if (worldCoords.length === 1) {\n const imagePixelModule = metadata.get(\n \"imagePixelModule\",\n referencedImageId\n );\n\n let xOffset = 10;\n let yOffset = 10;\n\n if (imagePixelModule) {\n const { columns, rows } = imagePixelModule;\n xOffset = columns / 10;\n yOffset = rows / 10;\n }\n\n const secondPoint = imageToWorldCoords(referencedImageId, [\n GraphicData[0] + xOffset,\n GraphicData[1] + yOffset\n ]);\n\n worldCoords.push(secondPoint);\n }\n\n const state = defaultState;\n\n state.annotation.data = {\n text,\n handles: {\n arrowFirst: true,\n points: [worldCoords[0], worldCoords[1]],\n activeHandleIndex: 0,\n textBox: {\n hasMoved: false\n }\n },\n frameNumber: ReferencedFrameNumber\n };\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool, worldToImageCoords) {\n const { data, metadata } = tool;\n let { finding, findingSites } = tool;\n const { referencedImageId } = metadata;\n\n if (!referencedImageId) {\n throw new Error(\n \"ArrowAnnotate.getTID300RepresentationArguments: referencedImageId is not defined\"\n );\n }\n\n const { points, arrowFirst } = data.handles;\n\n let point;\n let point2;\n\n if (arrowFirst) {\n point = points[0];\n point2 = points[1];\n } else {\n point = points[1];\n point2 = points[0];\n }\n\n const pointImage = worldToImageCoords(referencedImageId, point);\n const pointImage2 = worldToImageCoords(referencedImageId, point2);\n\n const TID300RepresentationArguments = {\n points: [\n {\n x: pointImage[0],\n y: pointImage[1]\n },\n {\n x: pointImage2[0],\n y: pointImage2[1]\n }\n ],\n trackingIdentifierTextValue,\n findingSites: findingSites || []\n };\n\n // If freetext finding isn't present, add it from the tool text.\n if (!finding || finding.CodeValue !== codeValues.CORNERSTONEFREETEXT) {\n finding = {\n CodeValue: codeValues.CORNERSTONEFREETEXT,\n CodingSchemeDesignator,\n CodeMeaning: data.text\n };\n }\n\n TID300RepresentationArguments.finding = finding;\n\n return TID300RepresentationArguments;\n }\n}\n\nArrowAnnotate.toolType = ARROW_ANNOTATE;\nArrowAnnotate.utilityToolType = ARROW_ANNOTATE;\nArrowAnnotate.TID300Representation = TID300Point;\nArrowAnnotate.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone3DTag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone3DTag !== CORNERSTONE_3D_TAG) {\n return false;\n }\n\n return toolType === ARROW_ANNOTATE;\n};\n\nMeasurementReport.registerTool(ArrowAnnotate);\n\nexport default ArrowAnnotate;\n","import { utilities } from \"dcmjs\";\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\nimport MeasurementReport from \"./MeasurementReport\";\nimport { toArray } from \"../helpers\";\nconst { Bidirectional: TID300Bidirectional } = utilities.TID300;\nconst BIDIRECTIONAL = \"Bidirectional\";\nconst LONG_AXIS = \"Long Axis\";\nconst SHORT_AXIS = \"Short Axis\";\nconst trackingIdentifierTextValue = `${CORNERSTONE_3D_TAG}:${BIDIRECTIONAL}`;\nclass Bidirectional {\n static { this.toolType = BIDIRECTIONAL; }\n static { this.utilityToolType = BIDIRECTIONAL; }\n static { this.TID300Representation = TID300Bidirectional; }\n static { this.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n const [cornerstone3DTag, toolType] = TrackingIdentifier.split(\":\");\n if (cornerstone3DTag !== CORNERSTONE_3D_TAG) {\n return false;\n }\n return toolType === BIDIRECTIONAL;\n }; }\n static getMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, imageToWorldCoords, metadata) {\n const { defaultState, ReferencedFrameNumber } = MeasurementReport.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, Bidirectional.toolType);\n const referencedImageId = defaultState.annotation.metadata.referencedImageId;\n const { ContentSequence } = MeasurementGroup;\n const longAxisNUMGroup = toArray(ContentSequence).find(group => group.ConceptNameCodeSequence.CodeMeaning === LONG_AXIS);\n const longAxisSCOORDGroup = toArray(longAxisNUMGroup.ContentSequence).find(group => group.ValueType === \"SCOORD\");\n const shortAxisNUMGroup = toArray(ContentSequence).find(group => group.ConceptNameCodeSequence.CodeMeaning === SHORT_AXIS);\n const shortAxisSCOORDGroup = toArray(shortAxisNUMGroup.ContentSequence).find(group => group.ValueType === \"SCOORD\");\n const worldCoords = [];\n [longAxisSCOORDGroup, shortAxisSCOORDGroup].forEach(group => {\n const { GraphicData } = group;\n for (let i = 0; i < GraphicData.length; i += 2) {\n const point = imageToWorldCoords(referencedImageId, [\n GraphicData[i],\n GraphicData[i + 1]\n ]);\n worldCoords.push(point);\n }\n });\n const state = defaultState;\n state.annotation.data = {\n handles: {\n points: [\n worldCoords[0],\n worldCoords[1],\n worldCoords[2],\n worldCoords[3]\n ],\n activeHandleIndex: 0,\n textBox: {\n hasMoved: false\n }\n },\n cachedStats: {\n [`imageId:${referencedImageId}`]: {\n length: longAxisNUMGroup.MeasuredValueSequence.NumericValue,\n width: shortAxisNUMGroup.MeasuredValueSequence.NumericValue\n }\n },\n frameNumber: ReferencedFrameNumber\n };\n return state;\n }\n static getTID300RepresentationArguments(tool, worldToImageCoords) {\n const { data, finding, findingSites, metadata } = tool;\n const { cachedStats = {}, handles } = data;\n const { referencedImageId } = metadata;\n if (!referencedImageId) {\n throw new Error(\"Bidirectional.getTID300RepresentationArguments: referencedImageId is not defined\");\n }\n const { length, width } = cachedStats[`imageId:${referencedImageId}`] || {};\n const { points } = handles;\n const firstPointPairs = [points[0], points[1]];\n const secondPointPairs = [points[2], points[3]];\n const firstPointPairsDistance = Math.sqrt(Math.pow(firstPointPairs[0][0] - firstPointPairs[1][0], 2) +\n Math.pow(firstPointPairs[0][1] - firstPointPairs[1][1], 2) +\n Math.pow(firstPointPairs[0][2] - firstPointPairs[1][2], 2));\n const secondPointPairsDistance = Math.sqrt(Math.pow(secondPointPairs[0][0] - secondPointPairs[1][0], 2) +\n Math.pow(secondPointPairs[0][1] - secondPointPairs[1][1], 2) +\n Math.pow(secondPointPairs[0][2] - secondPointPairs[1][2], 2));\n let shortAxisPoints;\n let longAxisPoints;\n if (firstPointPairsDistance > secondPointPairsDistance) {\n shortAxisPoints = firstPointPairs;\n longAxisPoints = secondPointPairs;\n }\n else {\n shortAxisPoints = secondPointPairs;\n longAxisPoints = firstPointPairs;\n }\n const longAxisStartImage = worldToImageCoords(referencedImageId, shortAxisPoints[0]);\n const longAxisEndImage = worldToImageCoords(referencedImageId, shortAxisPoints[1]);\n const shortAxisStartImage = worldToImageCoords(referencedImageId, longAxisPoints[0]);\n const shortAxisEndImage = worldToImageCoords(referencedImageId, longAxisPoints[1]);\n return {\n longAxis: {\n point1: {\n x: longAxisStartImage[0],\n y: longAxisStartImage[1]\n },\n point2: {\n x: longAxisEndImage[0],\n y: longAxisEndImage[1]\n }\n },\n shortAxis: {\n point1: {\n x: shortAxisStartImage[0],\n y: shortAxisStartImage[1]\n },\n point2: {\n x: shortAxisEndImage[0],\n y: shortAxisEndImage[1]\n }\n },\n longAxisLength: length,\n shortAxisLength: width,\n trackingIdentifierTextValue,\n finding: finding,\n findingSites: findingSites || []\n };\n }\n}\nMeasurementReport.registerTool(Bidirectional);\nexport default Bidirectional;\n","import { utilities } from \"dcmjs\";\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\nimport MeasurementReport from \"./MeasurementReport\";\nconst { CobbAngle: TID300CobbAngle } = utilities.TID300;\nconst MEASUREMENT_TYPE = \"Angle\";\nconst trackingIdentifierTextValue = `${CORNERSTONE_3D_TAG}:${MEASUREMENT_TYPE}`;\nclass Angle {\n static { this.toolType = MEASUREMENT_TYPE; }\n static { this.utilityToolType = MEASUREMENT_TYPE; }\n static { this.TID300Representation = TID300CobbAngle; }\n static { this.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n const [cornerstone3DTag, toolType] = TrackingIdentifier.split(\":\");\n if (cornerstone3DTag !== CORNERSTONE_3D_TAG) {\n return false;\n }\n return toolType === MEASUREMENT_TYPE;\n }; }\n static getMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, imageToWorldCoords, metadata) {\n const { defaultState, NUMGroup, SCOORDGroup, ReferencedFrameNumber } = MeasurementReport.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, Angle.toolType);\n const referencedImageId = defaultState.annotation.metadata.referencedImageId;\n const { GraphicData } = SCOORDGroup;\n const worldCoords = [];\n for (let i = 0; i < GraphicData.length; i += 2) {\n const point = imageToWorldCoords(referencedImageId, [\n GraphicData[i],\n GraphicData[i + 1]\n ]);\n worldCoords.push(point);\n }\n const state = defaultState;\n state.annotation.data = {\n handles: {\n points: [worldCoords[0], worldCoords[1], worldCoords[3]],\n activeHandleIndex: 0,\n textBox: {\n hasMoved: false\n }\n },\n cachedStats: {\n [`imageId:${referencedImageId}`]: {\n angle: NUMGroup\n ? NUMGroup.MeasuredValueSequence.NumericValue\n : null\n }\n },\n frameNumber: ReferencedFrameNumber\n };\n return state;\n }\n static getTID300RepresentationArguments(tool, worldToImageCoords) {\n const { data, finding, findingSites, metadata } = tool;\n const { cachedStats = {}, handles } = data;\n const { referencedImageId } = metadata;\n if (!referencedImageId) {\n throw new Error(\"Angle.getTID300RepresentationArguments: referencedImageId is not defined\");\n }\n const start1 = worldToImageCoords(referencedImageId, handles.points[0]);\n const middle = worldToImageCoords(referencedImageId, handles.points[1]);\n const end = worldToImageCoords(referencedImageId, handles.points[2]);\n const point1 = { x: start1[0], y: start1[1] };\n const point2 = { x: middle[0], y: middle[1] };\n const point3 = point2;\n const point4 = { x: end[0], y: end[1] };\n const { angle } = cachedStats[`imageId:${referencedImageId}`] || {};\n return {\n point1,\n point2,\n point3,\n point4,\n rAngle: angle,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\nMeasurementReport.registerTool(Angle);\nexport default Angle;\n","import { utilities } from \"dcmjs\";\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\nimport MeasurementReport from \"./MeasurementReport\";\nconst { CobbAngle: TID300CobbAngle } = utilities.TID300;\nconst MEASUREMENT_TYPE = \"CobbAngle\";\nconst trackingIdentifierTextValue = `${CORNERSTONE_3D_TAG}:${MEASUREMENT_TYPE}`;\nclass CobbAngle {\n static { this.toolType = MEASUREMENT_TYPE; }\n static { this.utilityToolType = MEASUREMENT_TYPE; }\n static { this.TID300Representation = TID300CobbAngle; }\n static { this.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n const [cornerstone3DTag, toolType] = TrackingIdentifier.split(\":\");\n if (cornerstone3DTag !== CORNERSTONE_3D_TAG) {\n return false;\n }\n return toolType === MEASUREMENT_TYPE;\n }; }\n static getMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, imageToWorldCoords, metadata) {\n const { defaultState, NUMGroup, SCOORDGroup, ReferencedFrameNumber } = MeasurementReport.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, CobbAngle.toolType);\n const referencedImageId = defaultState.annotation.metadata.referencedImageId;\n const { GraphicData } = SCOORDGroup;\n const worldCoords = [];\n for (let i = 0; i < GraphicData.length; i += 2) {\n const point = imageToWorldCoords(referencedImageId, [\n GraphicData[i],\n GraphicData[i + 1]\n ]);\n worldCoords.push(point);\n }\n const state = defaultState;\n state.annotation.data = {\n handles: {\n points: [\n worldCoords[0],\n worldCoords[1],\n worldCoords[2],\n worldCoords[3]\n ],\n activeHandleIndex: 0,\n textBox: {\n hasMoved: false\n }\n },\n cachedStats: {\n [`imageId:${referencedImageId}`]: {\n angle: NUMGroup\n ? NUMGroup.MeasuredValueSequence.NumericValue\n : null\n }\n },\n frameNumber: ReferencedFrameNumber\n };\n return state;\n }\n static getTID300RepresentationArguments(tool, worldToImageCoords) {\n const { data, finding, findingSites, metadata } = tool;\n const { cachedStats = {}, handles } = data;\n const { referencedImageId } = metadata;\n if (!referencedImageId) {\n throw new Error(\"CobbAngle.getTID300RepresentationArguments: referencedImageId is not defined\");\n }\n const start1 = worldToImageCoords(referencedImageId, handles.points[0]);\n const end1 = worldToImageCoords(referencedImageId, handles.points[1]);\n const start2 = worldToImageCoords(referencedImageId, handles.points[2]);\n const end2 = worldToImageCoords(referencedImageId, handles.points[3]);\n const point1 = { x: start1[0], y: start1[1] };\n const point2 = { x: end1[0], y: end1[1] };\n const point3 = { x: start2[0], y: start2[1] };\n const point4 = { x: end2[0], y: end2[1] };\n const { angle } = cachedStats[`imageId:${referencedImageId}`] || {};\n return {\n point1,\n point2,\n point3,\n point4,\n rAngle: angle,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\nMeasurementReport.registerTool(CobbAngle);\nexport default CobbAngle;\n","import CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\nexport default function isValidCornerstoneTrackingIdentifier(trackingIdentifier) {\n if (!trackingIdentifier.includes(\":\")) {\n return false;\n }\n const [cornerstone3DTag, toolType] = trackingIdentifier.split(\":\");\n if (cornerstone3DTag !== CORNERSTONE_3D_TAG) {\n return false;\n }\n return toolType.toLowerCase() === this.toolType.toLowerCase();\n}\n","import { utilities } from \"dcmjs\";\nimport MeasurementReport from \"./MeasurementReport\";\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\nimport isValidCornerstoneTrackingIdentifier from \"./isValidCornerstoneTrackingIdentifier\";\nconst { Circle: TID300Circle } = utilities.TID300;\nconst CIRCLEROI = \"CircleROI\";\nclass CircleROI {\n static { this.trackingIdentifierTextValue = `${CORNERSTONE_3D_TAG}:${CIRCLEROI}`; }\n static { this.toolType = CIRCLEROI; }\n static { this.utilityToolType = CIRCLEROI; }\n static { this.TID300Representation = TID300Circle; }\n static { this.isValidCornerstoneTrackingIdentifier = isValidCornerstoneTrackingIdentifier; }\n static getMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, imageToWorldCoords, metadata) {\n const { defaultState, NUMGroup, SCOORDGroup, ReferencedFrameNumber } = MeasurementReport.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, CircleROI.toolType);\n const referencedImageId = defaultState.annotation.metadata.referencedImageId;\n const { GraphicData } = SCOORDGroup;\n const pointsWorld = [];\n for (let i = 0; i < GraphicData.length; i += 2) {\n const worldPos = imageToWorldCoords(referencedImageId, [\n GraphicData[i],\n GraphicData[i + 1]\n ]);\n pointsWorld.push(worldPos);\n }\n const state = defaultState;\n state.annotation.data = {\n handles: {\n points: [...pointsWorld],\n activeHandleIndex: 0,\n textBox: {\n hasMoved: false\n }\n },\n cachedStats: {\n [`imageId:${referencedImageId}`]: {\n area: NUMGroup\n ? NUMGroup.MeasuredValueSequence.NumericValue\n : 0,\n radius: 0,\n perimeter: 0\n }\n },\n frameNumber: ReferencedFrameNumber\n };\n return state;\n }\n static getTID300RepresentationArguments(tool, worldToImageCoords) {\n const { data, finding, findingSites, metadata } = tool;\n const { cachedStats = {}, handles } = data;\n const { referencedImageId } = metadata;\n if (!referencedImageId) {\n throw new Error(\"CircleROI.getTID300RepresentationArguments: referencedImageId is not defined\");\n }\n const center = worldToImageCoords(referencedImageId, handles.points[0]);\n const end = worldToImageCoords(referencedImageId, handles.points[1]);\n const points = [];\n points.push({ x: center[0], y: center[1] });\n points.push({ x: end[0], y: end[1] });\n const { area, radius } = cachedStats[`imageId:${referencedImageId}`] || {};\n const perimeter = 2 * Math.PI * radius;\n return {\n area,\n perimeter,\n radius,\n points,\n trackingIdentifierTextValue: this.trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\nMeasurementReport.registerTool(CircleROI);\nexport default CircleROI;\n","import { vec3 } from \"gl-matrix\";\nimport { utilities } from \"dcmjs\";\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\nimport MeasurementReport from \"./MeasurementReport\";\nimport isValidCornerstoneTrackingIdentifier from \"./isValidCornerstoneTrackingIdentifier\";\nconst { Ellipse: TID300Ellipse } = utilities.TID300;\nconst ELLIPTICALROI = \"EllipticalROI\";\nconst EPSILON = 1e-4;\nclass EllipticalROI {\n static { this.trackingIdentifierTextValue = `${CORNERSTONE_3D_TAG}:${ELLIPTICALROI}`; }\n static { this.toolType = ELLIPTICALROI; }\n static { this.utilityToolType = ELLIPTICALROI; }\n static { this.TID300Representation = TID300Ellipse; }\n static { this.isValidCornerstoneTrackingIdentifier = isValidCornerstoneTrackingIdentifier; }\n static getMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, imageToWorldCoords, metadata) {\n const { defaultState, NUMGroup, SCOORDGroup, ReferencedFrameNumber } = MeasurementReport.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, EllipticalROI.toolType);\n const referencedImageId = defaultState.annotation.metadata.referencedImageId;\n const { GraphicData } = SCOORDGroup;\n const pointsWorld = [];\n for (let i = 0; i < GraphicData.length; i += 2) {\n const worldPos = imageToWorldCoords(referencedImageId, [\n GraphicData[i],\n GraphicData[i + 1]\n ]);\n pointsWorld.push(worldPos);\n }\n const majorAxisStart = vec3.fromValues(...pointsWorld[0]);\n const majorAxisEnd = vec3.fromValues(...pointsWorld[1]);\n const minorAxisStart = vec3.fromValues(...pointsWorld[2]);\n const minorAxisEnd = vec3.fromValues(...pointsWorld[3]);\n const majorAxisVec = vec3.create();\n vec3.sub(majorAxisVec, majorAxisEnd, majorAxisStart);\n vec3.normalize(majorAxisVec, majorAxisVec);\n const minorAxisVec = vec3.create();\n vec3.sub(minorAxisVec, minorAxisEnd, minorAxisStart);\n vec3.normalize(minorAxisVec, minorAxisVec);\n const imagePlaneModule = metadata.get(\"imagePlaneModule\", referencedImageId);\n if (!imagePlaneModule) {\n throw new Error(\"imageId does not have imagePlaneModule metadata\");\n }\n const { columnCosines } = imagePlaneModule;\n const columnCosinesVec = vec3.fromValues(columnCosines[0], columnCosines[1], columnCosines[2]);\n const projectedMajorAxisOnColVec = vec3.dot(columnCosinesVec, majorAxisVec);\n const projectedMinorAxisOnColVec = vec3.dot(columnCosinesVec, minorAxisVec);\n const absoluteOfMajorDotProduct = Math.abs(projectedMajorAxisOnColVec);\n const absoluteOfMinorDotProduct = Math.abs(projectedMinorAxisOnColVec);\n let ellipsePoints = [];\n if (Math.abs(absoluteOfMajorDotProduct - 1) < EPSILON) {\n ellipsePoints = [\n pointsWorld[0],\n pointsWorld[1],\n pointsWorld[2],\n pointsWorld[3]\n ];\n }\n else if (Math.abs(absoluteOfMinorDotProduct - 1) < EPSILON) {\n ellipsePoints = [\n pointsWorld[2],\n pointsWorld[3],\n pointsWorld[0],\n pointsWorld[1]\n ];\n }\n else {\n console.warn(\"OBLIQUE ELLIPSE NOT YET SUPPORTED\");\n }\n const state = defaultState;\n state.annotation.data = {\n handles: {\n points: [...ellipsePoints],\n activeHandleIndex: 0,\n textBox: {\n hasMoved: false\n }\n },\n cachedStats: {\n [`imageId:${referencedImageId}`]: {\n area: NUMGroup\n ? NUMGroup.MeasuredValueSequence.NumericValue\n : 0\n }\n },\n frameNumber: ReferencedFrameNumber\n };\n return state;\n }\n static getTID300RepresentationArguments(tool, worldToImageCoords) {\n const { data, finding, findingSites, metadata } = tool;\n const { cachedStats = {}, handles } = data;\n const rotation = data.initialRotation || 0;\n const { referencedImageId } = metadata;\n if (!referencedImageId) {\n throw new Error(\"EllipticalROI.getTID300RepresentationArguments: referencedImageId is not defined\");\n }\n let top, bottom, left, right;\n if (rotation == 90 || rotation == 270) {\n bottom = worldToImageCoords(referencedImageId, handles.points[2]);\n top = worldToImageCoords(referencedImageId, handles.points[3]);\n left = worldToImageCoords(referencedImageId, handles.points[0]);\n right = worldToImageCoords(referencedImageId, handles.points[1]);\n }\n else {\n top = worldToImageCoords(referencedImageId, handles.points[0]);\n bottom = worldToImageCoords(referencedImageId, handles.points[1]);\n left = worldToImageCoords(referencedImageId, handles.points[2]);\n right = worldToImageCoords(referencedImageId, handles.points[3]);\n }\n const topBottomLength = Math.abs(top[1] - bottom[1]);\n const leftRightLength = Math.abs(left[0] - right[0]);\n const points = [];\n if (topBottomLength > leftRightLength) {\n points.push({ x: top[0], y: top[1] });\n points.push({ x: bottom[0], y: bottom[1] });\n points.push({ x: left[0], y: left[1] });\n points.push({ x: right[0], y: right[1] });\n }\n else {\n points.push({ x: left[0], y: left[1] });\n points.push({ x: right[0], y: right[1] });\n points.push({ x: top[0], y: top[1] });\n points.push({ x: bottom[0], y: bottom[1] });\n }\n const { area } = cachedStats[`imageId:${referencedImageId}`] || {};\n return {\n area,\n points,\n trackingIdentifierTextValue: this.trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\nMeasurementReport.registerTool(EllipticalROI);\nexport default EllipticalROI;\n","import { utilities } from \"dcmjs\";\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\nimport MeasurementReport from \"./MeasurementReport\";\nconst { Polyline: TID300Polyline } = utilities.TID300;\nconst TOOLTYPE = \"RectangleROI\";\nconst trackingIdentifierTextValue = `${CORNERSTONE_3D_TAG}:${TOOLTYPE}`;\nclass RectangleROI {\n static { this.toolType = TOOLTYPE; }\n static { this.utilityToolType = TOOLTYPE; }\n static { this.TID300Representation = TID300Polyline; }\n static { this.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n const [cornerstone3DTag, toolType] = TrackingIdentifier.split(\":\");\n if (cornerstone3DTag !== CORNERSTONE_3D_TAG) {\n return false;\n }\n return toolType === TOOLTYPE;\n }; }\n static getMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, imageToWorldCoords, metadata) {\n const { defaultState, NUMGroup, SCOORDGroup, ReferencedFrameNumber } = MeasurementReport.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, RectangleROI.toolType);\n const referencedImageId = defaultState.annotation.metadata.referencedImageId;\n const { GraphicData } = SCOORDGroup;\n const worldCoords = [];\n for (let i = 0; i < GraphicData.length; i += 2) {\n const point = imageToWorldCoords(referencedImageId, [\n GraphicData[i],\n GraphicData[i + 1]\n ]);\n worldCoords.push(point);\n }\n const state = defaultState;\n state.annotation.data = {\n handles: {\n points: [\n worldCoords[0],\n worldCoords[1],\n worldCoords[3],\n worldCoords[2]\n ],\n activeHandleIndex: 0,\n textBox: {\n hasMoved: false\n }\n },\n cachedStats: {\n [`imageId:${referencedImageId}`]: {\n area: NUMGroup\n ? NUMGroup.MeasuredValueSequence.NumericValue\n : null\n }\n },\n frameNumber: ReferencedFrameNumber\n };\n return state;\n }\n static getTID300RepresentationArguments(tool, worldToImageCoords) {\n const { data, finding, findingSites, metadata } = tool;\n const { cachedStats = {}, handles } = data;\n const { referencedImageId } = metadata;\n if (!referencedImageId) {\n throw new Error(\"CobbAngle.getTID300RepresentationArguments: referencedImageId is not defined\");\n }\n const corners = handles.points.map(point => worldToImageCoords(referencedImageId, point));\n const { area, perimeter } = cachedStats;\n return {\n points: [\n corners[0],\n corners[1],\n corners[3],\n corners[2],\n corners[0]\n ],\n area,\n perimeter,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\nMeasurementReport.registerTool(RectangleROI);\nexport default RectangleROI;\n","import { utilities } from \"dcmjs\";\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\nimport MeasurementReport from \"./MeasurementReport\";\n\nconst { Length: TID300Length } = utilities.TID300;\n\nconst LENGTH = \"Length\";\nconst trackingIdentifierTextValue = `${CORNERSTONE_3D_TAG}:${LENGTH}`;\n\nclass Length {\n // TODO: this function is required for all Cornerstone Tool Adapters, since it is called by MeasurementReport.\n static getMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n imageToWorldCoords,\n metadata\n ) {\n const { defaultState, NUMGroup, SCOORDGroup, ReferencedFrameNumber } =\n MeasurementReport.getSetupMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n metadata,\n Length.toolType\n );\n\n const referencedImageId =\n defaultState.annotation.metadata.referencedImageId;\n\n const { GraphicData } = SCOORDGroup;\n const worldCoords = [];\n for (let i = 0; i < GraphicData.length; i += 2) {\n const point = imageToWorldCoords(referencedImageId, [\n GraphicData[i],\n GraphicData[i + 1]\n ]);\n worldCoords.push(point);\n }\n\n const state = defaultState;\n\n state.annotation.data = {\n handles: {\n points: [worldCoords[0], worldCoords[1]],\n activeHandleIndex: 0,\n textBox: {\n hasMoved: false\n }\n },\n cachedStats: {\n [`imageId:${referencedImageId}`]: {\n length: NUMGroup\n ? NUMGroup.MeasuredValueSequence.NumericValue\n : 0\n }\n },\n frameNumber: ReferencedFrameNumber\n };\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool, worldToImageCoords) {\n const { data, finding, findingSites, metadata } = tool;\n const { cachedStats = {}, handles } = data;\n\n const { referencedImageId } = metadata;\n\n if (!referencedImageId) {\n throw new Error(\n \"Length.getTID300RepresentationArguments: referencedImageId is not defined\"\n );\n }\n\n const start = worldToImageCoords(referencedImageId, handles.points[0]);\n const end = worldToImageCoords(referencedImageId, handles.points[1]);\n\n const point1 = { x: start[0], y: start[1] };\n const point2 = { x: end[0], y: end[1] };\n\n const { length: distance } =\n cachedStats[`imageId:${referencedImageId}`] || {};\n\n return {\n point1,\n point2,\n distance,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\n\nLength.toolType = LENGTH;\nLength.utilityToolType = LENGTH;\nLength.TID300Representation = TID300Length;\nLength.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone3DTag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone3DTag !== CORNERSTONE_3D_TAG) {\n return false;\n }\n\n return toolType === LENGTH;\n};\n\nMeasurementReport.registerTool(Length);\n\nexport default Length;\n","import MeasurementReport from \"./MeasurementReport\";\nimport { utilities } from \"dcmjs\";\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\nimport { vec3 } from \"gl-matrix\";\nconst { Polyline: TID300Polyline } = utilities.TID300;\nconst PLANARFREEHANDROI = \"PlanarFreehandROI\";\nconst trackingIdentifierTextValue = `${CORNERSTONE_3D_TAG}:${PLANARFREEHANDROI}`;\nconst closedContourThreshold = 1e-5;\nclass PlanarFreehandROI {\n static { this.toolType = PLANARFREEHANDROI; }\n static { this.utilityToolType = PLANARFREEHANDROI; }\n static { this.TID300Representation = TID300Polyline; }\n static { this.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n const [cornerstone3DTag, toolType] = TrackingIdentifier.split(\":\");\n if (cornerstone3DTag !== CORNERSTONE_3D_TAG) {\n return false;\n }\n return toolType === PLANARFREEHANDROI;\n }; }\n static getMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, imageToWorldCoords, metadata) {\n const { defaultState, NUMGroup, SCOORDGroup, ReferencedFrameNumber } = MeasurementReport.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, PlanarFreehandROI.toolType);\n const referencedImageId = defaultState.annotation.metadata.referencedImageId;\n const { GraphicData } = SCOORDGroup;\n const worldCoords = [];\n for (let i = 0; i < GraphicData.length; i += 2) {\n const point = imageToWorldCoords(referencedImageId, [\n GraphicData[i],\n GraphicData[i + 1]\n ]);\n worldCoords.push(point);\n }\n const distanceBetweenFirstAndLastPoint = vec3.distance(worldCoords[worldCoords.length - 1], worldCoords[0]);\n let isOpenContour = true;\n if (distanceBetweenFirstAndLastPoint < closedContourThreshold) {\n worldCoords.pop();\n isOpenContour = false;\n }\n const points = [];\n if (isOpenContour) {\n points.push(worldCoords[0], worldCoords[worldCoords.length - 1]);\n }\n const state = defaultState;\n state.annotation.data = {\n contour: { polyline: worldCoords, closed: !isOpenContour },\n handles: {\n points,\n activeHandleIndex: null,\n textBox: {\n hasMoved: false\n }\n },\n cachedStats: {\n [`imageId:${referencedImageId}`]: {\n area: NUMGroup\n ? NUMGroup.MeasuredValueSequence.NumericValue\n : null\n }\n },\n frameNumber: ReferencedFrameNumber\n };\n return state;\n }\n static getTID300RepresentationArguments(tool, worldToImageCoords) {\n const { data, finding, findingSites, metadata } = tool;\n const { polyline, closed } = data.contour;\n const isOpenContour = closed !== true;\n const { referencedImageId } = metadata;\n if (!referencedImageId) {\n throw new Error(\"PlanarFreehandROI.getTID300RepresentationArguments: referencedImageId is not defined\");\n }\n const points = polyline.map(worldPos => worldToImageCoords(referencedImageId, worldPos));\n if (!isOpenContour) {\n const firstPoint = points[0];\n points.push([firstPoint[0], firstPoint[1]]);\n }\n const { area, areaUnit, modalityUnit, perimeter, mean, max, stdDev } = data.cachedStats[`imageId:${referencedImageId}`] || {};\n return {\n points,\n area,\n areaUnit,\n perimeter,\n modalityUnit,\n mean,\n max,\n stdDev,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\nMeasurementReport.registerTool(PlanarFreehandROI);\nexport default PlanarFreehandROI;\n","import { utilities } from \"dcmjs\";\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\nimport MeasurementReport from \"./MeasurementReport\";\n\nconst { Point: TID300Point } = utilities.TID300;\n\nconst PROBE = \"Probe\";\nconst trackingIdentifierTextValue = `${CORNERSTONE_3D_TAG}:${PROBE}`;\n\nclass Probe {\n static getMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n imageToWorldCoords,\n metadata\n ) {\n const { defaultState, SCOORDGroup, ReferencedFrameNumber } =\n MeasurementReport.getSetupMeasurementData(\n MeasurementGroup,\n sopInstanceUIDToImageIdMap,\n metadata,\n Probe.toolType\n );\n\n const referencedImageId =\n defaultState.annotation.metadata.referencedImageId;\n\n const { GraphicData } = SCOORDGroup;\n\n const worldCoords = [];\n for (let i = 0; i < GraphicData.length; i += 2) {\n const point = imageToWorldCoords(referencedImageId, [\n GraphicData[i],\n GraphicData[i + 1]\n ]);\n worldCoords.push(point);\n }\n\n const state = defaultState;\n\n state.annotation.data = {\n handles: {\n points: worldCoords,\n activeHandleIndex: null,\n textBox: {\n hasMoved: false\n }\n },\n frameNumber: ReferencedFrameNumber\n };\n\n return state;\n }\n\n static getTID300RepresentationArguments(tool, worldToImageCoords) {\n const { data, metadata } = tool;\n let { finding, findingSites } = tool;\n const { referencedImageId } = metadata;\n\n if (!referencedImageId) {\n throw new Error(\n \"Probe.getTID300RepresentationArguments: referencedImageId is not defined\"\n );\n }\n\n const { points } = data.handles;\n\n const pointsImage = points.map(point => {\n const pointImage = worldToImageCoords(referencedImageId, point);\n return {\n x: pointImage[0],\n y: pointImage[1]\n };\n });\n\n const TID300RepresentationArguments = {\n points: pointsImage,\n trackingIdentifierTextValue,\n findingSites: findingSites || [],\n finding\n };\n\n return TID300RepresentationArguments;\n }\n}\n\nProbe.toolType = PROBE;\nProbe.utilityToolType = PROBE;\nProbe.TID300Representation = TID300Point;\nProbe.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n\n const [cornerstone3DTag, toolType] = TrackingIdentifier.split(\":\");\n\n if (cornerstone3DTag !== CORNERSTONE_3D_TAG) {\n return false;\n }\n\n return toolType === PROBE;\n};\n\nMeasurementReport.registerTool(Probe);\n\nexport default Probe;\n","import { utilities } from \"dcmjs\";\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\nimport MeasurementReport from \"./MeasurementReport\";\nconst { Length: TID300Length } = utilities.TID300;\nconst ULTRASOUND_DIRECTIONAL = \"UltrasoundDirectionalTool\";\nconst trackingIdentifierTextValue = `${CORNERSTONE_3D_TAG}:${ULTRASOUND_DIRECTIONAL}`;\nclass UltrasoundDirectional {\n static { this.toolType = ULTRASOUND_DIRECTIONAL; }\n static { this.utilityToolType = ULTRASOUND_DIRECTIONAL; }\n static { this.TID300Representation = TID300Length; }\n static { this.isValidCornerstoneTrackingIdentifier = TrackingIdentifier => {\n if (!TrackingIdentifier.includes(\":\")) {\n return false;\n }\n const [cornerstone3DTag, toolType] = TrackingIdentifier.split(\":\");\n if (cornerstone3DTag !== CORNERSTONE_3D_TAG) {\n return false;\n }\n return toolType === ULTRASOUND_DIRECTIONAL;\n }; }\n static getMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, imageToWorldCoords, metadata) {\n const { defaultState, SCOORDGroup, ReferencedFrameNumber } = MeasurementReport.getSetupMeasurementData(MeasurementGroup, sopInstanceUIDToImageIdMap, metadata, UltrasoundDirectional.toolType);\n const referencedImageId = defaultState.annotation.metadata.referencedImageId;\n const { GraphicData } = SCOORDGroup;\n const worldCoords = [];\n for (let i = 0; i < GraphicData.length; i += 2) {\n const point = imageToWorldCoords(referencedImageId, [\n GraphicData[i],\n GraphicData[i + 1]\n ]);\n worldCoords.push(point);\n }\n const state = defaultState;\n state.annotation.data = {\n handles: {\n points: [worldCoords[0], worldCoords[1]],\n activeHandleIndex: 0,\n textBox: {\n hasMoved: false\n }\n },\n cachedStats: {},\n frameNumber: ReferencedFrameNumber\n };\n return state;\n }\n static getTID300RepresentationArguments(tool, worldToImageCoords) {\n const { data, finding, findingSites, metadata } = tool;\n const { handles } = data;\n const { referencedImageId } = metadata;\n if (!referencedImageId) {\n throw new Error(\"UltrasoundDirectionalTool.getTID300RepresentationArguments: referencedImageId is not defined\");\n }\n const start = worldToImageCoords(referencedImageId, handles.points[0]);\n const end = worldToImageCoords(referencedImageId, handles.points[1]);\n const point1 = { x: start[0], y: start[1] };\n const point2 = { x: end[0], y: end[1] };\n return {\n point1,\n point2,\n trackingIdentifierTextValue,\n finding,\n findingSites: findingSites || []\n };\n }\n}\nMeasurementReport.registerTool(UltrasoundDirectional);\nexport default UltrasoundDirectional;\n","import { normalizers, derivations } from \"dcmjs\";\nimport { fillSegmentation } from \"../../Cornerstone/Segmentation_4X\";\nconst { Normalizer } = normalizers;\nconst { Segmentation: SegmentationDerivation } = derivations;\nfunction generateSegmentation(images, labelmaps, metadata, options = {}) {\n const segmentation = _createMultiframeSegmentationFromReferencedImages(images, metadata, options);\n return fillSegmentation(segmentation, labelmaps, options);\n}\nfunction _createMultiframeSegmentationFromReferencedImages(images, metadata, options) {\n const datasets = images.map(image => {\n const instance = metadata.get(\"instance\", image.imageId);\n return {\n ...image,\n ...instance,\n SOPClassUID: instance.SopClassUID || instance.SOPClassUID,\n SOPInstanceUID: instance.SopInstanceUID || instance.SOPInstanceUID,\n PixelData: image.voxelManager.getScalarData(),\n _vrMap: {\n PixelData: \"OW\"\n },\n _meta: {}\n };\n });\n const multiframe = Normalizer.normalizeToDataset(datasets);\n if (!multiframe) {\n throw new Error(\"Failed to normalize the multiframe dataset, the data is not multi-frame.\");\n }\n return new SegmentationDerivation([multiframe], options);\n}\nexport { generateSegmentation };\n","function generateLabelMaps2DFrom3D(labelmap3D) {\n const { scalarData, dimensions } = labelmap3D;\n const labelmaps2D = [];\n const segmentsOnLabelmap3D = new Set();\n for (let z = 0; z < dimensions[2]; z++) {\n const pixelData = scalarData.slice(z * dimensions[0] * dimensions[1], (z + 1) * dimensions[0] * dimensions[1]);\n const segmentsOnLabelmap = [];\n for (let i = 0; i < pixelData.length; i++) {\n const segment = pixelData[i];\n if (!segmentsOnLabelmap.includes(segment) && segment !== 0) {\n segmentsOnLabelmap.push(segment);\n }\n }\n const labelmap2D = {\n segmentsOnLabelmap,\n pixelData,\n rows: dimensions[1],\n columns: dimensions[0]\n };\n if (segmentsOnLabelmap.length === 0) {\n continue;\n }\n segmentsOnLabelmap.forEach(segmentIndex => {\n segmentsOnLabelmap3D.add(segmentIndex);\n });\n labelmaps2D[dimensions[2] - 1 - z] = labelmap2D;\n }\n labelmap3D.segmentsOnLabelmap = Array.from(segmentsOnLabelmap3D);\n labelmap3D.labelmaps2D = labelmaps2D;\n return labelmap3D;\n}\nexport { generateLabelMaps2DFrom3D };\n","import { generateToolState as generateToolStateCornerstoneLegacy } from \"../../Cornerstone/Segmentation\";\nfunction generateToolState(imageIds, arrayBuffer, metadataProvider, skipOverlapping = false, tolerance = 1e-3) {\n return generateToolStateCornerstoneLegacy(imageIds, arrayBuffer, metadataProvider, skipOverlapping, tolerance);\n}\nexport { generateToolState };\n","import { CornerstonePMAP } from \"../../Cornerstone\";\n\nconst { ParametricMap } = CornerstonePMAP;\nconst { generateToolState: generateToolStateCornerstone } = ParametricMap;\n\nfunction generateToolState(\n imageIds,\n arrayBuffer,\n metadataProvider,\n skipOverlapping = false,\n tolerance = 1e-3\n) {\n return generateToolStateCornerstone(\n imageIds,\n arrayBuffer,\n metadataProvider,\n skipOverlapping,\n tolerance\n );\n}\n\nexport { generateToolState };\n","export default function getPatientModule(imageId, metadataProvider) {\n const generalSeriesModule = metadataProvider.get(\n \"generalSeriesModule\",\n imageId\n );\n const generalStudyModule = metadataProvider.get(\n \"generalStudyModule\",\n imageId\n );\n const patientStudyModule = metadataProvider.get(\n \"patientStudyModule\",\n imageId\n );\n const patientModule = metadataProvider.get(\"patientModule\", imageId);\n const patientDemographicModule = metadataProvider.get(\n \"patientDemographicModule\",\n imageId\n );\n\n return {\n Modality: generalSeriesModule.modality,\n PatientID: patientModule.patientId,\n PatientName: patientModule.patientName,\n PatientBirthDate: \"\",\n PatientAge: patientStudyModule.patientAge,\n PatientSex: patientDemographicModule.patientSex,\n PatientWeight: patientStudyModule.patientWeight,\n StudyDate: generalStudyModule.studyDate,\n StudyTime: generalStudyModule.studyTime,\n StudyID: \"ToDo\",\n AccessionNumber: generalStudyModule.accessionNumber\n };\n}\n","export default function getReferencedFrameOfReferenceSequence(\n metadata,\n metadataProvider,\n dataset\n) {\n const { referencedImageId: imageId, FrameOfReferenceUID } = metadata;\n const instance = metadataProvider.get(\"instance\", imageId);\n const { SeriesInstanceUID } = instance;\n\n const { ReferencedSeriesSequence } = dataset;\n\n return [\n {\n FrameOfReferenceUID,\n RTReferencedStudySequence: [\n {\n ReferencedSOPClassUID: dataset.SOPClassUID,\n ReferencedSOPInstanceUID: dataset.SOPInstanceUID,\n RTReferencedSeriesSequence: [\n {\n SeriesInstanceUID,\n ContourImageSequence: [\n ...ReferencedSeriesSequence[0]\n .ReferencedInstanceSequence\n ]\n }\n ]\n }\n ]\n }\n ];\n}\n","export default function getReferencedSeriesSequence(\n metadata,\n _index,\n metadataProvider,\n DicomMetadataStore\n) {\n // grab imageId from toolData\n const { referencedImageId: imageId } = metadata;\n const instance = metadataProvider.get(\"instance\", imageId);\n const { SeriesInstanceUID, StudyInstanceUID } = instance;\n\n const ReferencedSeriesSequence = [];\n if (SeriesInstanceUID) {\n const series = DicomMetadataStore.getSeries(\n StudyInstanceUID,\n SeriesInstanceUID\n );\n\n const ReferencedSeries = {\n SeriesInstanceUID,\n ReferencedInstanceSequence: []\n };\n\n series.instances.forEach(instance => {\n const { SOPInstanceUID, SOPClassUID } = instance;\n ReferencedSeries.ReferencedInstanceSequence.push({\n ReferencedSOPClassUID: SOPClassUID,\n ReferencedSOPInstanceUID: SOPInstanceUID\n });\n });\n\n ReferencedSeriesSequence.push(ReferencedSeries);\n }\n\n return ReferencedSeriesSequence;\n}\n","export default function getRTROIObservationsSequence(toolData, index) {\n return {\n ObservationNumber: index + 1,\n ReferencedROINumber: index + 1,\n RTROIInterpretedType: \"Todo: type\",\n ROIInterpreter: \"Todo: interpreter\"\n };\n}\n","export default function getRTSeriesModule(DicomMetaDictionary) {\n return {\n SeriesInstanceUID: DicomMetaDictionary.uid(), // generate a new series instance uid\n SeriesNumber: \"99\" // Todo:: what should be the series number?\n };\n}\n","export default function getStructureSetModule(contour, index) {\n const { FrameOfReferenceUID } = contour.metadata;\n\n return {\n ROINumber: index + 1,\n ROIName: contour.name || `Todo: name ${index + 1}`,\n ROIDescription: `Todo: description ${index + 1}`,\n ROIGenerationAlgorithm: \"Todo: algorithm\",\n ReferencedFrameOfReferenceUID: FrameOfReferenceUID\n };\n}\n","import { utilities } from \"@cornerstonejs/tools\";\nimport dcmjs from \"dcmjs\";\nimport getPatientModule from \"./utilities/getPatientModule\";\nimport getReferencedFrameOfReferenceSequence from \"./utilities/getReferencedFrameOfReferenceSequence\";\nimport getReferencedSeriesSequence from \"./utilities/getReferencedSeriesSequence\";\nimport getRTROIObservationsSequence from \"./utilities/getRTROIObservationsSequence\";\nimport getRTSeriesModule from \"./utilities/getRTSeriesModule\";\nimport getStructureSetModule from \"./utilities/getStructureSetModule\";\nconst { generateContourSetsFromLabelmap, AnnotationToPointData } = utilities.contours;\nconst { DicomMetaDictionary } = dcmjs.data;\nfunction generateRTSSFromSegmentations(segmentations, metadataProvider, DicomMetadataStore) {\n const roiContours = [];\n const contourSets = generateContourSetsFromLabelmap({\n segmentations\n });\n contourSets.forEach((contourSet, segIndex) => {\n if (contourSet) {\n const contourSequence = [];\n contourSet.sliceContours.forEach(sliceContour => {\n const sopCommon = metadataProvider.get(\"sopCommonModule\", sliceContour.referencedImageId);\n const ReferencedSOPClassUID = sopCommon.sopClassUID;\n const ReferencedSOPInstanceUID = sopCommon.sopInstanceUID;\n const ContourImageSequence = [\n { ReferencedSOPClassUID, ReferencedSOPInstanceUID }\n ];\n const sliceContourPolyData = sliceContour.polyData;\n sliceContour.contours.forEach((contour, index) => {\n const ContourGeometricType = contour.type;\n const NumberOfContourPoints = contour.contourPoints.length;\n const ContourData = [];\n contour.contourPoints.forEach(point => {\n const pointData = sliceContourPolyData.points[point];\n pointData[0] = +pointData[0].toFixed(2);\n pointData[1] = +pointData[1].toFixed(2);\n pointData[2] = +pointData[2].toFixed(2);\n ContourData.push(pointData[0]);\n ContourData.push(pointData[1]);\n ContourData.push(pointData[2]);\n });\n contourSequence.push({\n ContourImageSequence,\n ContourGeometricType,\n NumberOfContourPoints,\n ContourNumber: index + 1,\n ContourData\n });\n });\n });\n const segLabel = contourSet.label || `Segment ${segIndex + 1}`;\n const ROIContour = {\n name: segLabel,\n description: segLabel,\n contourSequence,\n color: contourSet.color,\n metadata: contourSet.metadata\n };\n roiContours.push(ROIContour);\n }\n });\n const rtMetadata = {\n name: segmentations.label,\n label: segmentations.label\n };\n const dataset = _initializeDataset(rtMetadata, roiContours[0].metadata, metadataProvider);\n roiContours.forEach((contour, index) => {\n const roiContour = {\n ROIDisplayColor: contour.color || [255, 0, 0],\n ContourSequence: contour.contourSequence,\n ReferencedROINumber: index + 1\n };\n dataset.StructureSetROISequence.push(getStructureSetModule(contour, index));\n dataset.ROIContourSequence.push(roiContour);\n dataset.ReferencedSeriesSequence = getReferencedSeriesSequence(contour.metadata, index, metadataProvider, DicomMetadataStore);\n dataset.ReferencedFrameOfReferenceSequence =\n getReferencedFrameOfReferenceSequence(contour.metadata, metadataProvider, dataset);\n });\n const fileMetaInformationVersionArray = new Uint8Array(2);\n fileMetaInformationVersionArray[1] = 1;\n const _meta = {\n FileMetaInformationVersion: {\n Value: [fileMetaInformationVersionArray.buffer],\n vr: \"OB\"\n },\n TransferSyntaxUID: {\n Value: [\"1.2.840.10008.1.2.1\"],\n vr: \"UI\"\n },\n ImplementationClassUID: {\n Value: [DicomMetaDictionary.uid()],\n vr: \"UI\"\n },\n ImplementationVersionName: {\n Value: [\"dcmjs\"],\n vr: \"SH\"\n }\n };\n dataset._meta = _meta;\n dataset.SpecificCharacterSet = \"ISO_IR 192\";\n return dataset;\n}\nfunction generateRTSSFromAnnotations(annotations, metadataProvider, DicomMetadataStore) {\n const rtMetadata = {\n name: \"RTSS from Annotations\",\n label: \"RTSS from Annotations\"\n };\n const dataset = _initializeDataset(rtMetadata, annotations[0].metadata, metadataProvider);\n annotations.forEach((annotation, index) => {\n const ContourSequence = AnnotationToPointData.convert(annotation, index, metadataProvider);\n dataset.StructureSetROISequence.push(getStructureSetModule(annotation, index));\n dataset.ROIContourSequence.push(ContourSequence);\n dataset.RTROIObservationsSequence.push(getRTROIObservationsSequence(annotation, index));\n dataset.ReferencedSeriesSequence = getReferencedSeriesSequence(annotation.metadata, index, metadataProvider, DicomMetadataStore);\n dataset.ReferencedFrameOfReferenceSequence =\n getReferencedFrameOfReferenceSequence(annotation.metadata, metadataProvider, dataset);\n });\n const fileMetaInformationVersionArray = new Uint8Array(2);\n fileMetaInformationVersionArray[1] = 1;\n const _meta = {\n FileMetaInformationVersion: {\n Value: [fileMetaInformationVersionArray.buffer],\n vr: \"OB\"\n },\n TransferSyntaxUID: {\n Value: [\"1.2.840.10008.1.2.1\"],\n vr: \"UI\"\n },\n ImplementationClassUID: {\n Value: [DicomMetaDictionary.uid()],\n vr: \"UI\"\n },\n ImplementationVersionName: {\n Value: [\"dcmjs\"],\n vr: \"SH\"\n }\n };\n dataset._meta = _meta;\n dataset.SpecificCharacterSet = \"ISO_IR 192\";\n return dataset;\n}\nfunction _initializeDataset(rtMetadata, imgMetadata, metadataProvider) {\n const rtSOPInstanceUID = DicomMetaDictionary.uid();\n const { referencedImageId: imageId, FrameOfReferenceUID } = imgMetadata;\n const { studyInstanceUID } = metadataProvider.get(\"generalSeriesModule\", imageId);\n const patientModule = getPatientModule(imageId, metadataProvider);\n const rtSeriesModule = getRTSeriesModule(DicomMetaDictionary);\n return {\n StructureSetROISequence: [],\n ROIContourSequence: [],\n RTROIObservationsSequence: [],\n ReferencedSeriesSequence: [],\n ReferencedFrameOfReferenceSequence: [],\n ...patientModule,\n ...rtSeriesModule,\n StudyInstanceUID: studyInstanceUID,\n SOPClassUID: \"1.2.840.10008.5.1.4.1.1.481.3\",\n SOPInstanceUID: rtSOPInstanceUID,\n Manufacturer: \"dcmjs\",\n Modality: \"RTSTRUCT\",\n FrameOfReferenceUID,\n PositionReferenceIndicator: \"\",\n StructureSetLabel: rtMetadata.label || \"\",\n StructureSetName: rtMetadata.name || \"\",\n ReferringPhysicianName: \"\",\n OperatorsName: \"\",\n StructureSetDate: DicomMetaDictionary.date(),\n StructureSetTime: DicomMetaDictionary.time(),\n _meta: null\n };\n}\nexport { generateRTSSFromSegmentations, generateRTSSFromAnnotations };\n","import { utilities } from \"@cornerstonejs/tools\";\nimport { generateRTSSFromAnnotations, generateRTSSFromSegmentations } from \"./RTSS\";\nconst { generateContourSetsFromLabelmap } = utilities.contours;\nexport { generateContourSetsFromLabelmap, generateRTSSFromAnnotations, generateRTSSFromSegmentations };\n","import MeasurementReport from \"./MeasurementReport\";\nimport CodeScheme from \"./CodingScheme\";\nimport CORNERSTONE_3D_TAG from \"./cornerstone3DTag\";\nimport ArrowAnnotate from \"./ArrowAnnotate\";\nimport Bidirectional from \"./Bidirectional\";\nimport Angle from \"./Angle\";\nimport CobbAngle from \"./CobbAngle\";\nimport CircleROI from \"./CircleROI\";\nimport EllipticalROI from \"./EllipticalROI\";\nimport RectangleROI from \"./RectangleROI\";\nimport Length from \"./Length\";\nimport PlanarFreehandROI from \"./PlanarFreehandROI\";\nimport Probe from \"./Probe\";\nimport UltrasoundDirectional from \"./UltrasoundDirectional\";\nimport * as Segmentation from \"./Segmentation\";\nimport * as ParametricMap from \"./ParametricMap\";\nimport * as RTSS from \"./RTStruct\";\nconst Cornerstone3DSR = {\n Bidirectional,\n CobbAngle,\n Angle,\n Length,\n CircleROI,\n EllipticalROI,\n RectangleROI,\n ArrowAnnotate,\n Probe,\n PlanarFreehandROI,\n UltrasoundDirectional,\n MeasurementReport,\n CodeScheme,\n CORNERSTONE_3D_TAG\n};\nconst Cornerstone3DSEG = {\n Segmentation\n};\nconst Cornerstone3DPMAP = {\n ParametricMap\n};\nconst Cornerstone3DRT = {\n RTSS\n};\nexport { Cornerstone3DSR, Cornerstone3DSEG, Cornerstone3DPMAP, Cornerstone3DRT };\n","import { data } from \"dcmjs\";\n\nconst { Colors, BitArray } = data;\n\n// TODO: Is there a better name for this? RGBAInt?\n// Should we move it to Colors.js\nfunction dicomlab2RGBA(cielab) {\n const rgba = Colors.dicomlab2RGB(cielab).map(x => Math.round(x * 255));\n rgba.push(255);\n\n return rgba;\n}\n\n// TODO: Copied these functions in from VTK Math so we don't need a dependency.\n// I guess we should put them somewhere\n// https://github.com/Kitware/vtk-js/blob/master/Sources/Common/Core/Math/index.js\nfunction cross(x, y, out) {\n const Zx = x[1] * y[2] - x[2] * y[1];\n const Zy = x[2] * y[0] - x[0] * y[2];\n const Zz = x[0] * y[1] - x[1] * y[0];\n out[0] = Zx;\n out[1] = Zy;\n out[2] = Zz;\n}\n\nfunction norm(x, n = 3) {\n switch (n) {\n case 1:\n return Math.abs(x);\n case 2:\n return Math.sqrt(x[0] * x[0] + x[1] * x[1]);\n case 3:\n return Math.sqrt(x[0] * x[0] + x[1] * x[1] + x[2] * x[2]);\n default: {\n let sum = 0;\n for (let i = 0; i < n; i++) {\n sum += x[i] * x[i];\n }\n return Math.sqrt(sum);\n }\n }\n}\n\nfunction normalize(x) {\n const den = norm(x);\n if (den !== 0.0) {\n x[0] /= den;\n x[1] /= den;\n x[2] /= den;\n }\n return den;\n}\n\nfunction subtract(a, b, out) {\n out[0] = a[0] - b[0];\n out[1] = a[1] - b[1];\n out[2] = a[2] - b[2];\n}\n\n// TODO: This is a useful utility on its own. We should move it somewhere?\n// dcmjs.adapters.vtk.Multiframe? dcmjs.utils?\nfunction geometryFromFunctionalGroups(dataset, PerFrameFunctionalGroups) {\n const geometry = {};\n const pixelMeasures =\n dataset.SharedFunctionalGroupsSequence.PixelMeasuresSequence;\n const planeOrientation =\n dataset.SharedFunctionalGroupsSequence.PlaneOrientationSequence;\n\n // Find the origin of the volume from the PerFrameFunctionalGroups' ImagePositionPatient values\n //\n // TODO: assumes sorted frames. This should read the ImagePositionPatient from each frame and\n // sort them to obtain the first and last position along the acquisition axis.\n const firstFunctionalGroup = PerFrameFunctionalGroups[0];\n const lastFunctionalGroup =\n PerFrameFunctionalGroups[PerFrameFunctionalGroups.length - 1];\n const firstPosition =\n firstFunctionalGroup.PlanePositionSequence.ImagePositionPatient.map(\n Number\n );\n const lastPosition =\n lastFunctionalGroup.PlanePositionSequence.ImagePositionPatient.map(\n Number\n );\n\n geometry.origin = firstPosition;\n\n // NB: DICOM PixelSpacing is defined as Row then Column,\n // unlike ImageOrientationPatient\n geometry.spacing = [\n pixelMeasures.PixelSpacing[1],\n pixelMeasures.PixelSpacing[0],\n pixelMeasures.SpacingBetweenSlices\n ].map(Number);\n\n geometry.dimensions = [\n dataset.Columns,\n dataset.Rows,\n PerFrameFunctionalGroups.length\n ].map(Number);\n\n const orientation = planeOrientation.ImageOrientationPatient.map(Number);\n const columnStepToPatient = orientation.slice(0, 3);\n const rowStepToPatient = orientation.slice(3, 6);\n\n geometry.planeNormal = [];\n\n cross(columnStepToPatient, rowStepToPatient, geometry.planeNormal);\n\n geometry.sliceStep = [];\n subtract(lastPosition, firstPosition, geometry.sliceStep);\n normalize(geometry.sliceStep);\n geometry.direction = columnStepToPatient\n .concat(rowStepToPatient)\n .concat(geometry.sliceStep);\n\n return geometry;\n}\n\nexport default class Segmentation {\n constructor() {}\n\n /**\n * Produces an array of Segments from an input DICOM Segmentation dataset\n *\n * Segments are returned with Geometry values that can be used to create\n * VTK Image Data objects.\n *\n * @example Example usage to create VTK Volume actors from each segment:\n *\n * const actors = [];\n * const segments = generateToolState(dataset);\n * segments.forEach(segment => {\n * // now make actors using the segment information\n * const scalarArray = vtk.Common.Core.vtkDataArray.newInstance({\n * name: \"Scalars\",\n * numberOfComponents: 1,\n * values: segment.pixelData,\n * });\n *\n * const imageData = vtk.Common.DataModel.vtkImageData.newInstance();\n * imageData.getPointData().setScalars(scalarArray);\n * imageData.setDimensions(geometry.dimensions);\n * imageData.setSpacing(geometry.spacing);\n * imageData.setOrigin(geometry.origin);\n * imageData.setDirection(geometry.direction);\n *\n * const mapper = vtk.Rendering.Core.vtkVolumeMapper.newInstance();\n * mapper.setInputData(imageData);\n * mapper.setSampleDistance(2.);\n *\n * const actor = vtk.Rendering.Core.vtkVolume.newInstance();\n * actor.setMapper(mapper);\n *\n * actors.push(actor);\n * });\n *\n * @param dataset\n * @return {{}}\n */\n static generateSegments(dataset) {\n if (dataset.SegmentSequence.constructor.name !== \"Array\") {\n dataset.SegmentSequence = [dataset.SegmentSequence];\n }\n\n dataset.SegmentSequence.forEach(segment => {\n // TODO: other interesting fields could be extracted from the segment\n // TODO: Read SegmentsOverlay field\n // http://dicom.nema.org/medical/dicom/current/output/chtml/part03/sect_C.8.20.2.html\n\n // TODO: Looks like vtkColor only wants RGB in 0-1 values.\n // Why was this example converting to RGBA with 0-255 values?\n const color = dicomlab2RGBA(segment.RecommendedDisplayCIELabValue);\n\n segments[segment.SegmentNumber] = {\n color,\n functionalGroups: [],\n offset: null,\n size: null,\n pixelData: null\n };\n });\n\n // make a list of functional groups per segment\n dataset.PerFrameFunctionalGroupsSequence.forEach(functionalGroup => {\n const segmentNumber =\n functionalGroup.SegmentIdentificationSequence\n .ReferencedSegmentNumber;\n\n segments[segmentNumber].functionalGroups.push(functionalGroup);\n });\n\n // determine per-segment index into the pixel data\n // TODO: only handles one-bit-per pixel\n const frameSize = Math.ceil((dataset.Rows * dataset.Columns) / 8);\n let nextOffset = 0;\n\n Object.keys(segments).forEach(segmentNumber => {\n const segment = segments[segmentNumber];\n\n segment.numberOfFrames = segment.functionalGroups.length;\n segment.size = segment.numberOfFrames * frameSize;\n segment.offset = nextOffset;\n\n nextOffset = segment.offset + segment.size;\n\n const packedSegment = dataset.PixelData.slice(\n segment.offset,\n nextOffset\n );\n\n segment.pixelData = BitArray.unpack(packedSegment);\n\n const geometry = geometryFromFunctionalGroups(\n dataset,\n segment.functionalGroups\n );\n\n segment.geometry = geometry;\n });\n\n return segments;\n }\n}\n","import Segmentation from \"./Segmentation\";\nconst VTKjsSEG = {\n Segmentation\n};\nexport { VTKjsSEG };\n","import { CornerstoneSR, CornerstoneSEG, CornerstonePMAP } from \"./Cornerstone\";\nimport { Cornerstone3DSR, Cornerstone3DSEG, Cornerstone3DPMAP, Cornerstone3DRT } from \"./Cornerstone3D\";\nimport { VTKjsSEG } from \"./VTKjs\";\nimport * as Enums from \"./enums\";\nimport * as helpers from \"./helpers\";\nconst adaptersSR = {\n Cornerstone: CornerstoneSR,\n Cornerstone3D: Cornerstone3DSR\n};\nconst adaptersSEG = {\n Cornerstone: CornerstoneSEG,\n Cornerstone3D: Cornerstone3DSEG,\n VTKjs: VTKjsSEG\n};\nconst adaptersPMAP = {\n Cornerstone: CornerstonePMAP,\n Cornerstone3D: Cornerstone3DPMAP\n};\nconst adaptersRT = {\n Cornerstone3D: Cornerstone3DRT\n};\nexport { adaptersSR, adaptersSEG, adaptersPMAP, adaptersRT, Enums, helpers };\n"],"names":["toArray","x","Array","isArray","codeMeaningEquals","codeMeaningName","contentItem","ConceptNameCodeSequence","CodeMeaning","graphicTypeEquals","graphicType","GraphicType","datasetToDict","data","downloadDICOMData","bufferOrDataset","filename","blob","ArrayBuffer","Blob","type","_meta","Error","buffer","Buffer","from","write","link","document","createElement","href","window","URL","createObjectURL","download","click","TID1500","utilities","addAccessors","StructuredReport","derivations","Normalizer","normalizers","TID1500MeasurementReport","TID1501MeasurementGroup","DicomMetaDictionary","FINDING","CodingSchemeDesignator","CodeValue","FINDING_SITE","FINDING_SITE_OLD","codeValueMatch","group","code","oldCode","getTID300ContentItem","tool","toolType","ReferencedSOPSequence","toolClass","args","getTID300RepresentationArguments","TID300Measurement","TID300Representation","getMeasurementGroup","toolData","toolTypeData","MeasurementReport","CORNERSTONE_TOOL_CLASSES_BY_TOOL_TYPE","length","Measurements","map","_classCallCheck","_createClass","key","value","getSetupMeasurementData","MeasurementGroup","ContentSequence","contentSequenceArr","findingGroup","find","findingSiteGroups","filter","NUMGroup","ValueType","SCOORDGroup","ReferencedSOPInstanceUID","ReferencedFrameNumber","defaultState","sopInstanceUid","frameIndex","complete","finding","ConceptCodeSequence","undefined","findingSites","fsg","description","findingSite","location","generateReport","toolState","metadataProvider","options","allMeasurementGroups","firstImageId","Object","keys","generalSeriesModule","get","studyInstanceUID","seriesInstanceUID","forEach","imageId","sopCommonModule","frameNumber","toolTypes","ReferencedSOPClassUID","sopClassUID","sopInstanceUID","isMultiframeSOPClassUID","measurementGroups","push","concat","TID1501MeasurementGroups","fileMetaInformationVersionArray","Uint8Array","derivationSourceDataset","StudyInstanceUID","SeriesInstanceUID","FileMetaInformationVersion","Value","vr","TransferSyntaxUID","ImplementationClassUID","uid","ImplementationVersionName","_vrMap","PixelData","report","dataset","assign","SpecificCharacterSet","generateToolState","hooks","arguments","ContentTemplateSequence","TemplateIdentifier","REPORT","GROUP","TRACKING_IDENTIFIER","imagingMeasurementContent","measurementData","cornerstoneToolClasses","CORNERSTONE_TOOL_CLASSES_BY_UTILITY_TYPE","registeredToolClasses","measurementGroup","measurementGroupContentSequence","TrackingIdentifierGroup","TrackingIdentifierValue","TextValue","getToolClass","tc","isValidCornerstoneTrackingIdentifier","measurement","getMeasurementData","console","log","registerTool","utilityToolType","MEASUREMENT_BY_TOOLTYPE","TID300Length","TID300","Length","LENGTH","_MeasurementReport$ge","state","_objectSpread","MeasuredValueSequence","NumericValue","handles","start","end","textBox","hasMoved","movesIndependently","drawnIndependently","allowedOutsideImage","hasBoundingBox","_SCOORDGroup$GraphicD","_slicedToArray","GraphicData","y","point1","point2","distance","trackingIdentifierTextValue","TrackingIdentifier","includes","_TrackingIdentifier$s","split","_TrackingIdentifier$s2","cornerstone4Tag","CORNERSTONE_4_TAG","TID300Polyline","Polyline","FreehandRoi","points","active","cachedStats","area","color","invalidated","i","_tool$cachedStats","_cachedStats$area","_cachedStats$perimete","perimeter","TID300Bidirectional","Bidirectional","BIDIRECTIONAL","LONG_AXIS","SHORT_AXIS","longAxisNUMGroup","longAxisSCOORDGroup","shortAxisNUMGroup","shortAxisSCOORDGroup","longestDiameter","String","shortestDiameter","bottomRight","Math","max","highlight","index","perpendicularStart","perpendicularEnd","isCreating","toolName","visible","_tool$handles","longAxis","shortAxis","longAxisLength","shortAxisLength","TID300Ellipse","Ellipse","ELLIPTICALROI","EllipticalRoi","majorAxis","minorAxis","minorAxisLength","sqrt","pow","minorAxisDirection","halfMinorAxisLength","corner1","corner2","initialRotation","halfXLength","abs","halfYLength","center","TID300Circle","Circle","CIRCLEROI","CircleRoi","radius","PI","TID300Point","Point","ARROW_ANNOTATE","CORNERSTONEFREETEXT","ArrowAnnotate","text","TID300RepresentationArguments","TID300CobbAngle","CobbAngle","COBB_ANGLE","rAngle","start2","end2","point3","point4","TID300Angle","Angle","ANGLE","middle","RectangleRoi","DicomMessage","dcmjsData","getDatasetsFromImages","images","isMultiframe","datasets","image","arrayBuffer","byteArray","dicomData","readFile","naturalizeDataset","dict","namifyDataset","meta","normalizeToDataset","_utilities$orientatio","orientation","rotateDirectionCosinesInPlane","flipIOP","flipImageOrientationPatient","flipMatrix2D","rotateMatrix902D","datasetToBlob","BitArray","SegmentationDerivation","Segmentation","generateSegmentation","brushData","includeSliceSpacing","segments","image0","dims","columns","rows","z","xy","numSegments","_getSegCount","seg","_createSegFromImages","_getNumberOfFramesPer","_getNumberOfFramesPerSegment","referencedFramesPerSegment","segmentIndicies","NumberOfFrames","setNumberOfFrames","segmentIndex","referencedFrameIndicies","referencedFrameNumbers","element","segment","addSegment","_extractCornerstoneToolsPixelData","bitPackPixelData","segBlob","referencedFrames","pixelData","pixelDataIndex","frame","imageIdSpecificToolState","brushPixelData","brush","p","segIdx","multiframe","imageIds","imagePlaneModule","warn","ImageOrientationPatient","rowCosines","_toConsumableArray","columnCosines","validOrientations","getValidOrientations","SharedFunctionalGroupsSequence","sharedImageOrientationPatient","PlaneOrientationSequence","sliceLength","Columns","Rows","segMetadata","getSegmentMetadata","unpackPixelData","PerFrameFunctionalGroupsSequence","inPlane","PerFrameFunctionalGroups","ImageOrientationPatientI","pixelDataI2D","ndarray","alignedPixelDataI","alignPixelDataWithSourceData","SegmentIdentificationSequence","ReferencedSegmentNumber","SourceImageSequence","DerivationImageSequence","getImageIdOfSourceImage","addImageIdSpecificBrushToolState","segType","SegmentationType","unpack","MaximumFractionalValue","onlyMaxAndZero","pixelData2D","brushDataI","cToolsPixelData","getImageIdOfReferencedFrame","getImageIdOfReferencedSingleFramedSOPInstance","imageIdFrameNumber","Number","iop","orientations","h","v","iop90","compareIOP","dx","iop1","iop2","segmentSequence","SegmentSequence","seriesInstanceUid","ReferencedSeriesSequence","checkIfPerpendicular","tolerance","absDotColumnCosines","absDotRowCosines","nearlyEqual","compareArrays","array1","array2","checkOrientation","sourceDataDimensions","some","operation","Events","_utilities$compressio","compression","encode","decode","generateSegmentationDefaultOptions","rleEncode","inputLabelmaps3D","userOptions","segmentation","fillSegmentation","labelmaps3D","numberOfFrames","referencedFramesPerLabelmap","_loop","labelmap3D","labelmapIndex","labelmaps2D","metadata","_loop2","_i","labelmap2D","segmentsOnLabelmap","segmentMetadata","labelmaps","_getLabelmapsFromReferencedFrameIndicies","addSegmentFromLabelmap","rleEncodedFrames","assignToDataset","BitsAllocated","BitsStored","HighBit","SegmentationFractionalType","_x","_x2","_x3","_x4","_generateToolState","apply","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_options$skipOverlapp","skipOverlapping","_options$tolerance","_options$TypedArrayCo","TypedArrayConstructor","_options$maxBytesPerC","maxBytesPerChunk","eventTarget","triggerEvent","pixelDataChunks","sopUIDImageIdIndexMap","overlapping","insertFunction","segmentsOnFrameArray","segmentsOnFrame","arrayBufferLength","labelmapBufferArray","imageIdMaps","segmentsPixelIndices","overlappingSegments","centroidXYZ","wrap","_callee$","_context","prev","next","abrupt","reduce","acc","_metadataProvider$get","checkSEGsOverlapping","t0","insertOverlappingPixelDataPlanar","insertPixelDataPlanar","BYTES_PER_ELEMENT","curr","indices","Map","sent","imageIdIndexBufferIndex","centroids","calculateCentroid","set","stop","findReferenceSourceImageId","frameSegment","FrameOfReferenceUID","PerFrameFunctionalGroup","frameSourceImageSequence","getImageIdOfSourceImageBySourceImageSequence","referencedSeriesSequence","ReferencedSeriesInstanceUID","getImageIdOfSourceImagebyGeometry","numberOfSegs","groupsLen","frameSegmentsMapping","_loop3","getSegmentIndex","imageIdIndex","findIndex","has","segmentArray","_ret","_iterator","_createForOfIteratorHelper","entries","_step","s","n","done","_step$value","role","temp2DArray","fill","view","readFromUnpackedChunks","j","len","err","e","f","M","m","tempBuffer","slice","tempSegmentsOnFrame","structuredClone","segmentIndexToProcess","_loop4","_i2","sourceImageMetadata","byteOffset","labelmap2DView","segmentOnFrame","_ret2","chunkSize","ceil","shouldTriggerEvent","Promise","resolve","processInChunks","min","indexCache","segmentIndexObject","percentComplete","round","SEGMENTATION_LOAD_PROGRESS","setTimeout","error","getUnpackedChunks","bitArray","chunks","maxBitsPerChunk","numberOfChunks","startBit","endBit","startByte","floor","endByte","chunk","unpackedChunk","PlanePositionSequence","ImagePositionPatient","imageIdsIndexc","offset","mapping","getUnpackedOffsetAndLength","chunkIndex","result","resultOffset","totalBytes","total","startChunkIndex","startOffsetInChunk","endChunkIndex","endOffsetInChunk","xAcc","yAcc","zAcc","worldXAcc","worldYAcc","worldZAcc","count","_i3","_Object$entries","_Object$entries$_i","bufferIndices","debug","imagePositionPatient","rowPixelSpacing","columnPixelSpacing","_iterator2","_step2","bufferIndex","worldX","worldY","worldZ","world","labelmaps3DorBrushData","cornerstoneToolsVersion","Segmentation_4X","Segmentation_3X","orientationText","_args","getPixelData","Perpendicular","Oblique","sourcePixelData","targetPixelData","constructor","numSlices","sourceSliceDataView","targetSliceDataView","TypedArrayClass","_multiframe$PixelRepr","validTypedArrays","Uint16Array","Int16Array","Uint32Array","Int32Array","PixelRepresentation","FloatPixelData","Float32Array","DoubleFloatPixelData","Float64Array","imageIdsIndex","ParametricMapObj","CornerstoneSR","CornerstoneSEG","CornerstonePMAP","ParametricMap","CodingScheme","codeValues","worldToImageCoords","getCornerstoneLabelFromDefaultState","_defaultState$finding","cornersoneFreeTextCodingValue","Cornerstone3DCodingScheme","freeTextLabel","fs","generateDatasetMeta","sopInstanceUIDToImageIdMap","referencedImageId","annotation","annotationUID","frameOfReferenceUID","label","sopInstanceUIDsToSeriesInstanceUIDMap","derivationSourceDatasets","instance","dsd","generateDerivationSourceDataset","tid1500MeasurementReport","imageToWorldCoords","TRACKING_UNIQUE_IDENTIFIER","_hooks$getToolClass","TrackingUniqueIdentifierGroup","TrackingUniqueIdentifierValue","UID","call","TrackingUniqueIdentifier","_MeasurementReport","CORNERSTONE_3D_TAG","worldCoords","point","imagePixelModule","xOffset","yOffset","secondPoint","arrowFirst","activeHandleIndex","_data$handles","pointImage","pointImage2","cornerstone3DTag","_defineProperty","width","_data$cachedStats","_ref","firstPointPairs","secondPointPairs","firstPointPairsDistance","secondPointPairsDistance","shortAxisPoints","longAxisPoints","longAxisStartImage","longAxisEndImage","shortAxisStartImage","shortAxisEndImage","_Bidirectional","MEASUREMENT_TYPE","angle","start1","_Angle","end1","_CobbAngle","trackingIdentifier","_trackingIdentifier$s","_trackingIdentifier$s2","toLowerCase","CircleROI","pointsWorld","worldPos","_CircleROI","EPSILON","EllipticalROI","majorAxisStart","vec3","fromValues","majorAxisEnd","minorAxisStart","minorAxisEnd","majorAxisVec","create","sub","normalize","minorAxisVec","columnCosinesVec","projectedMajorAxisOnColVec","dot","projectedMinorAxisOnColVec","absoluteOfMajorDotProduct","absoluteOfMinorDotProduct","ellipsePoints","rotation","top","bottom","left","right","topBottomLength","leftRightLength","_EllipticalROI","TOOLTYPE","RectangleROI","corners","_RectangleROI","PLANARFREEHANDROI","closedContourThreshold","PlanarFreehandROI","distanceBetweenFirstAndLastPoint","isOpenContour","pop","contour","polyline","closed","_data$contour","firstPoint","areaUnit","modalityUnit","mean","stdDev","_PlanarFreehandROI","PROBE","Probe","pointsImage","ULTRASOUND_DIRECTIONAL","UltrasoundDirectional","_UltrasoundDirectional","_createMultiframeSegmentationFromReferencedImages","SOPClassUID","SopClassUID","SOPInstanceUID","SopInstanceUID","voxelManager","getScalarData","generateLabelMaps2DFrom3D","scalarData","dimensions","segmentsOnLabelmap3D","Set","add","generateToolStateCornerstoneLegacy","generateToolStateCornerstone","getPatientModule","generalStudyModule","patientStudyModule","patientModule","patientDemographicModule","Modality","modality","PatientID","patientId","PatientName","patientName","PatientBirthDate","PatientAge","patientAge","PatientSex","patientSex","PatientWeight","patientWeight","StudyDate","studyDate","StudyTime","studyTime","StudyID","AccessionNumber","accessionNumber","getReferencedFrameOfReferenceSequence","RTReferencedStudySequence","RTReferencedSeriesSequence","ContourImageSequence","ReferencedInstanceSequence","getReferencedSeriesSequence","_index","DicomMetadataStore","series","getSeries","ReferencedSeries","instances","getRTROIObservationsSequence","ObservationNumber","ReferencedROINumber","RTROIInterpretedType","ROIInterpreter","getRTSeriesModule","SeriesNumber","getStructureSetModule","ROINumber","ROIName","name","ROIDescription","ROIGenerationAlgorithm","ReferencedFrameOfReferenceUID","_utilities$contours","contours","generateContourSetsFromLabelmap","AnnotationToPointData","dcmjs","generateRTSSFromSegmentations","segmentations","roiContours","contourSets","contourSet","segIndex","contourSequence","sliceContours","sliceContour","sopCommon","sliceContourPolyData","polyData","ContourGeometricType","NumberOfContourPoints","contourPoints","ContourData","pointData","toFixed","ContourNumber","segLabel","ROIContour","rtMetadata","_initializeDataset","roiContour","ROIDisplayColor","ContourSequence","StructureSetROISequence","ROIContourSequence","ReferencedFrameOfReferenceSequence","generateRTSSFromAnnotations","annotations","convert","RTROIObservationsSequence","imgMetadata","rtSOPInstanceUID","rtSeriesModule","Manufacturer","PositionReferenceIndicator","StructureSetLabel","StructureSetName","ReferringPhysicianName","OperatorsName","StructureSetDate","date","StructureSetTime","time","Cornerstone3DSR","CodeScheme","Cornerstone3DSEG","Cornerstone3DPMAP","Cornerstone3DRT","RTSS","Colors","dicomlab2RGBA","cielab","rgba","dicomlab2RGB","cross","out","Zx","Zy","Zz","norm","sum","den","subtract","a","b","geometryFromFunctionalGroups","geometry","pixelMeasures","PixelMeasuresSequence","planeOrientation","firstFunctionalGroup","lastFunctionalGroup","firstPosition","lastPosition","origin","spacing","PixelSpacing","SpacingBetweenSlices","columnStepToPatient","rowStepToPatient","planeNormal","sliceStep","direction","generateSegments","RecommendedDisplayCIELabValue","SegmentNumber","functionalGroups","size","functionalGroup","segmentNumber","frameSize","nextOffset","packedSegment","VTKjsSEG","adaptersSR","Cornerstone","Cornerstone3D","adaptersSEG","VTKjs","adaptersPMAP","adaptersRT"],"mappings":"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"}