larvitar 3.8.8 → 3.8.10

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.
@@ -2324,7 +2324,7 @@ export type MetaDataTypes = {
2324
2324
  x0040a136?: number;
2325
2325
  x0040a138?: number;
2326
2326
  x0040a13a?: string;
2327
- x0040a160?: number;
2327
+ x0040a160?: string;
2328
2328
  x0040a167?: MetaDataTypes[];
2329
2329
  x0040a168?: MetaDataTypes[];
2330
2330
  x0040a16a?: string;
@@ -2346,7 +2346,7 @@ export type MetaDataTypes = {
2346
2346
  x0040a300?: MetaDataTypes[];
2347
2347
  x0040a301?: MetaDataTypes[];
2348
2348
  x0040a307?: string;
2349
- x0040a30a?: number;
2349
+ x0040a30a?: string;
2350
2350
  x0040a313?: MetaDataTypes[];
2351
2351
  x0040a33a?: string;
2352
2352
  x0040a340?: MetaDataTypes[];
@@ -0,0 +1,50 @@
1
+ import { MetaData, RenderOptions, Series, SRNode, SRParseResult, SRStyleConfig, SRViewerData } from "./types";
2
+ /**
3
+ * Check if a DICOM series is a Structured Report (SR)
4
+ * @param {Series} serie - The DICOM series object
5
+ * @return {boolean} - True if the series is an SR
6
+ */
7
+ export declare const isSR: (serie: Series) => boolean;
8
+ /**
9
+ * Parse DICOM SR metadata into a structured header and tree representation
10
+ * @param {MetaData} metadata - The DICOM SR metadata object
11
+ * @return {SRParseResult} - Object containing header fields and content tree
12
+ */
13
+ export declare const parseSR: (metadata: MetaData) => SRParseResult;
14
+ /**
15
+ * This function returns pure data without creating DOM elements
16
+ *
17
+ * @param {MetaData} metadata - The DICOM SR metadata
18
+ * @return {SRViewerData} - Structured data for custom rendering
19
+ */
20
+ export declare const getSRData: (metadata: MetaData) => SRViewerData;
21
+ /**
22
+ * Render a complete SR tree as an interactive DOM structure
23
+ * @param {SRNode[]} tree - Array of root SR nodes
24
+ * @param {RenderOptions} opts - Rendering options (expandDepth, etc.)
25
+ * @return {HTMLElement} - The rendered tree as a DOM element
26
+ */
27
+ export declare const renderSRTree: (tree: SRNode[], opts?: RenderOptions) => HTMLElement;
28
+ /**
29
+ * @param {MetaData} metadata - The DICOM SR metadata
30
+ * @param {RenderOptions} opts - Rendering options
31
+ * @return {HTMLElement} - The complete SR viewer DOM element
32
+ */
33
+ export declare const createSRViewer: (metadata: MetaData, opts?: RenderOptions) => HTMLElement;
34
+ /**
35
+ * Mount a complete SR viewer UI into a container element
36
+ * @param {MetaData} metadata - The DICOM SR metadata
37
+ * @param {string} containerElementId - The DOM element to mount into
38
+ * @param {RenderOptions} opts - Rendering options
39
+ */
40
+ export declare const mountSRViewer: (metadata: MetaData, containerElementId: string, opts?: RenderOptions) => void;
41
+ /**
42
+ * Inject CSS styles for the SR viewer into the document head
43
+ * @param {SRStyleConfig} styleConfig - Optional style configuration object
44
+ */
45
+ export declare const injectSRStyles: (styleConfig?: SRStyleConfig) => void;
46
+ /**
47
+ * Update existing SR styles without full re-injection
48
+ * @param {SRStyleConfig} styleConfig - Style configuration to apply
49
+ */
50
+ export declare const updateSRStyles: (styleConfig: SRStyleConfig) => void;
@@ -0,0 +1,22 @@
1
+ declare const BaseAnnotationTool: any;
2
+ import { Coords, EventData, Handles, MeasurementData } from "../types";
3
+ /**
4
+ * @public
5
+ * @class NorbergAngleTool
6
+ * @memberof Tools.Annotation
7
+ * @classdesc Tool for measuring distances with adjustable angle segments at both endpoints.
8
+ * Shows angle arcs and allows 45-degree adjustment segments.
9
+ * @extends Tools.Base.BaseAnnotationTool
10
+ */
11
+ export default class NorbergAngleTool extends BaseAnnotationTool {
12
+ configuration: any;
13
+ constructor(props?: any);
14
+ createNewMeasurement(eventData: EventData): MeasurementData | undefined;
15
+ pointNearTool(element: HTMLElement, data: MeasurementData, coords: Coords): boolean;
16
+ activateHandleNearCursor(element: HTMLElement, handles: Handles, coords: Coords, distanceThreshold: number): void;
17
+ updateCachedStats(image: any, element: HTMLElement, data: MeasurementData): void;
18
+ drawAngleArc(context: CanvasRenderingContext2D, centerPoint: Coords, startAngleDegrees: number, endAngleDegrees: number, radius: number, color: string, counterClockwise?: boolean): void;
19
+ drawAngleLabel(context: CanvasRenderingContext2D, point: Coords, angle: number, labelAngle: number, distance: number, color: string): void;
20
+ renderToolData(evt: any): void;
21
+ }
22
+ export {};
@@ -385,6 +385,14 @@ export type PixelSpacing = {
385
385
  colPixelSpacing: number;
386
386
  };
387
387
  export interface MeasurementData {
388
+ startSegmentAngle?: number;
389
+ startSegmentLength?: number;
390
+ endSegmentAngle?: number;
391
+ endSegmentLength?: number;
392
+ endAngleCustomized?: boolean;
393
+ endSegmentCustomized?: boolean;
394
+ startAngleCustomized?: boolean;
395
+ startSegmentCustomized?: boolean;
388
396
  computeMeasurements?: boolean;
389
397
  polyBoundingBox?: Rectangle;
390
398
  meanStdDev?: {
@@ -465,6 +473,8 @@ export interface Handles {
465
473
  initialRotation?: number;
466
474
  points?: HandlePosition[];
467
475
  invalidHandlePlacement?: boolean;
476
+ endAngleHandle?: HandlePosition;
477
+ startAngleHandle?: HandlePosition;
468
478
  }
469
479
  export interface MeasurementMouseEvent {
470
480
  detail: EventData;
@@ -374,4 +374,164 @@ export interface CornerstoneElement {
374
374
  id: string;
375
375
  };
376
376
  }
377
+ export interface SRNode {
378
+ label: string;
379
+ relationshipType: string;
380
+ valueType: string;
381
+ value: string;
382
+ children: SRNode[];
383
+ }
384
+ export interface SRHeader {
385
+ patientName: string;
386
+ studyDescription: string;
387
+ manufacturer: string;
388
+ completionFlag: string;
389
+ verificationFlag: string;
390
+ contentDate: string;
391
+ contentTime: string;
392
+ seriesDescription: string;
393
+ }
394
+ export interface SRParseResult {
395
+ header: SRHeader;
396
+ tree: SRNode[];
397
+ }
398
+ export interface RenderOptions {
399
+ expandDepth?: number;
400
+ }
401
+ export interface SRStyleConfig {
402
+ container?: {
403
+ fontFamily?: string;
404
+ fontSize?: string;
405
+ color?: string;
406
+ background?: string;
407
+ borderRadius?: string;
408
+ padding?: string;
409
+ minHeight?: string;
410
+ };
411
+ headerCard?: {
412
+ background?: string;
413
+ border?: string;
414
+ borderRadius?: string;
415
+ padding?: string;
416
+ marginBottom?: string;
417
+ };
418
+ title?: {
419
+ color?: string;
420
+ fontSize?: string;
421
+ fontWeight?: string;
422
+ margin?: string;
423
+ letterSpacing?: string;
424
+ };
425
+ headerGrid?: {
426
+ display?: string;
427
+ gridTemplateColumns?: string;
428
+ gap?: string;
429
+ };
430
+ headerKey?: {
431
+ color?: string;
432
+ fontSize?: string;
433
+ textTransform?: string;
434
+ letterSpacing?: string;
435
+ };
436
+ headerValue?: {
437
+ color?: string;
438
+ fontWeight?: string;
439
+ };
440
+ toolbar?: {
441
+ display?: string;
442
+ gap?: string;
443
+ alignItems?: string;
444
+ marginBottom?: string;
445
+ };
446
+ button?: {
447
+ background?: string;
448
+ border?: string;
449
+ color?: string;
450
+ borderRadius?: string;
451
+ padding?: string;
452
+ fontSize?: string;
453
+ cursor?: string;
454
+ hoverBackground?: string;
455
+ hoverColor?: string;
456
+ };
457
+ searchInput?: {
458
+ background?: string;
459
+ border?: string;
460
+ color?: string;
461
+ borderRadius?: string;
462
+ padding?: string;
463
+ fontSize?: string;
464
+ focusBorderColor?: string;
465
+ };
466
+ tree?: {
467
+ listStyle?: string;
468
+ margin?: string;
469
+ padding?: string;
470
+ paddingLeft?: string;
471
+ };
472
+ node?: {
473
+ padding?: string;
474
+ borderTop?: string;
475
+ };
476
+ nodeHeader?: {
477
+ display?: string;
478
+ gap?: string;
479
+ padding?: string;
480
+ borderRadius?: string;
481
+ hoverBackground?: string;
482
+ };
483
+ containerLabel?: {
484
+ fontWeight?: string;
485
+ color?: string;
486
+ fontSize?: string;
487
+ };
488
+ toggle?: {
489
+ width?: string;
490
+ height?: string;
491
+ color?: string;
492
+ fontSize?: string;
493
+ cursor?: string;
494
+ borderRadius?: string;
495
+ hoverBackground?: string;
496
+ };
497
+ bullet?: {
498
+ width?: string;
499
+ height?: string;
500
+ color?: string;
501
+ fontSize?: string;
502
+ };
503
+ icon?: {
504
+ fontSize?: string;
505
+ };
506
+ descriptor?: {
507
+ color?: string;
508
+ fontWeight?: string;
509
+ fontSize?: string;
510
+ fontStyle?: string;
511
+ };
512
+ label?: {
513
+ color?: string;
514
+ };
515
+ separator?: {
516
+ color?: string;
517
+ };
518
+ value?: {
519
+ color?: string;
520
+ fontWeight?: string;
521
+ };
522
+ empty?: {
523
+ color?: string;
524
+ fontStyle?: string;
525
+ padding?: string;
526
+ };
527
+ }
528
+ export interface SRViewerData {
529
+ header: SRHeader;
530
+ tree: SRNode[];
531
+ metadata: {
532
+ isEmpty: boolean;
533
+ nodeCount: number;
534
+ maxDepth: number;
535
+ };
536
+ }
377
537
  export {};
package/dist/index.d.ts CHANGED
@@ -13,6 +13,7 @@ import store from "./imaging/imageStore";
13
13
  import { parseContours } from "./imaging/imageContours";
14
14
  import { parseECG } from "./imaging/parsers/ecg";
15
15
  import { renderECG, unrenderECG, syncECGFrame, updateECGMarker, updateECGTotalTime, getDefaultECGLayout } from "./imaging/waveforms/ecg";
16
+ import { isSR, parseSR, renderSRTree, mountSRViewer, injectSRStyles, createSRViewer, getSRData } from "./imaging/srUtils";
16
17
  import { getImagePresets, setImagePreset, setImageCustomPreset } from "./imaging/imagePresets";
17
18
  import { getNormalOrientation, getMinPixelValue, getMaxPixelValue, getMinMaxPixelValue, getPixelRepresentation, getTypedArrayFromDataType, getSortedStack, randomId, getMeanValue, getReslicedMetadata, getReslicedPixeldata, getDistanceBetweenSlices, getImageMetadata } from "./imaging/imageUtils";
18
19
  import { buildHeader, getCachedPixelData, buildData, buildDataAsync, importNRRDImage, exportImageToBase64, exportImageToBase64OriginalSizes } from "./imaging/imageIo";
@@ -40,7 +41,7 @@ import { applyDSAShift } from "./imaging/postProcessing/applyDSA";
40
41
  import { applyConvolutionFilter, applySharpening, applyGaussianBlur, addCustomKernel, getKernels } from "./imaging/postProcessing/applyKernel";
41
42
  import { addMouseKeyHandlers, removeMouseKeyHandlers, toggleMouseToolsListeners } from "./imaging/tools/interaction";
42
43
  import { updateImageManager, populateImageManager, getImageManager, resetImageManager, removeDataFromImageManager, getDataFromImageManager, getSopInstanceUIDFromImageManager, getImageTracker, populateGSPSManager, getGSPSManager, resetGSPSManager, getFileManager, resetFileManager, populateFileManager, getDataFromFileManager } from "./imaging/imageManagers";
43
- export { VERSION, Plotly, cornerstone, cornerstoneTools, parseDicom, cornerstoneFileImageLoader, segModule, cornerstoneDICOMImageLoader, checkAndClearMemory, checkMemoryAllocation, getUsedMemory, getAvailableMemory, getPerformanceMonitor, activatePerformanceMonitor, deactivatePerformanceMonitor, store, parseECG, renderECG, unrenderECG, syncECGFrame, updateECGMarker, updateECGTotalTime, getDefaultECGLayout, getImagePresets, setImagePreset, setImageCustomPreset, getNormalOrientation, getMinPixelValue, getMaxPixelValue, getMinMaxPixelValue, getPixelRepresentation, getTypedArrayFromDataType, getSortedStack, randomId, getMeanValue, getReslicedMetadata, getReslicedPixeldata, getDistanceBetweenSlices, getImageMetadata, buildHeader, getCachedPixelData, buildData, buildDataAsync, importNRRDImage, exportImageToBase64, exportImageToBase64OriginalSizes, anonymize, customizeByteArray, buildLayer, updateLayer, getActiveLayer, setActiveLayer, initializeImageLoader, initializeWebImageLoader, initializeFileImageLoader, registerNRRDImageLoader, registerResliceLoader, registerMultiFrameImageLoader, registerSingleFrameImageLoader, registerDsaImageLoader, updateLoadedStack, reset, readFile, readFiles, parseDataSet, clearImageParsing, convertQidoMetadata, clearImageCache, clearStandardImageCache, clearDSAImageCache, loadAndCacheImages, renderFileImage, renderDICOMPDF, renderWebImage, disableViewport, unloadViewport, resizeViewport, renderImage, redrawImage, resetViewports, updateViewportData, toggleMouseToolsListeners, storeViewportData, invertImage, flipImageHorizontal, flipImageVertical, rotateImageLeft, rotateImageRight, updateImageManager, populateImageManager, getImageManager, resetImageManager, removeDataFromImageManager, getDataFromImageManager, getSopInstanceUIDFromImageManager, getImageTracker, populateGSPSManager, getGSPSManager, resetGSPSManager, populateFileManager, getFileManager, resetFileManager, getDataFromFileManager, resliceSeries, getColormapsList, applyColorMap, addColorMap, fillPixelData, HSVToRGB, parseContours, getImageFrame, buildNrrdImage, getNrrdImageId, loadNrrdImage, getImageIdFromSlice, getSliceNumberFromImageId, getNrrdSerieDimensions, loadReslicedImage, getDicomImageId, cacheImage, cacheImages, loadAndCacheImageStack, loadAndCacheDsaImageStack, loadMultiFrameImage, buildMultiFrameImage, getMultiFrameImageId, clearMultiFrameCache, setSingleFrameCache, getSingleFrameCache, clearSingleFrameCache, loadSingleFrameImage, populateDsaImageIds, resetFileLoader, getFileCustomImageId, applyDSAShift, applyConvolutionFilter, applySharpening, applyGaussianBlur, addCustomKernel, getKernels, addDiameterTool, addContoursTool, addMaskEditingTool, getCurrentMaskData, addStackStateToElement, addSeedsTool, clearMeasurements, getToolState, clearToolStateByName, updateDiameterTool, addToolStateSingleSlice, clearCornerstoneElements, syncToolStack, updateStackToolState, setSegmentationConfig, csToolsUpdateStack, initializeCSTools, setToolsStyle, addDefaultTools, addTool, setToolActive, setToolDisabled, setToolEnabled, setToolPassive, DEFAULT_TOOLS, dvTools, getDefaultToolsByType, setDefaultToolsProps, registerExternalTool, addMouseKeyHandlers, removeMouseKeyHandlers, initSegmentationModule, addSegmentationMask, setActiveLabelmap, setActiveSegment, undoLastStroke, redoLastStroke, setBrushProps, hexToRgb, rgbToHex, clearSegmentationState, deleteMask, enableBrushTool, disableBrushTool, toggleContourMode, toggleVisibility, getActiveLabelmapBuffer, updateTemporalViewportData, logger, setLogLevel };
44
+ export { VERSION, Plotly, cornerstone, cornerstoneTools, parseDicom, cornerstoneFileImageLoader, segModule, cornerstoneDICOMImageLoader, checkAndClearMemory, checkMemoryAllocation, getUsedMemory, getAvailableMemory, getPerformanceMonitor, activatePerformanceMonitor, deactivatePerformanceMonitor, store, parseECG, renderECG, unrenderECG, syncECGFrame, updateECGMarker, updateECGTotalTime, getDefaultECGLayout, isSR, parseSR, renderSRTree, mountSRViewer, injectSRStyles, createSRViewer, getSRData, getImagePresets, setImagePreset, setImageCustomPreset, getNormalOrientation, getMinPixelValue, getMaxPixelValue, getMinMaxPixelValue, getPixelRepresentation, getTypedArrayFromDataType, getSortedStack, randomId, getMeanValue, getReslicedMetadata, getReslicedPixeldata, getDistanceBetweenSlices, getImageMetadata, buildHeader, getCachedPixelData, buildData, buildDataAsync, importNRRDImage, exportImageToBase64, exportImageToBase64OriginalSizes, anonymize, customizeByteArray, buildLayer, updateLayer, getActiveLayer, setActiveLayer, initializeImageLoader, initializeWebImageLoader, initializeFileImageLoader, registerNRRDImageLoader, registerResliceLoader, registerMultiFrameImageLoader, registerSingleFrameImageLoader, registerDsaImageLoader, updateLoadedStack, reset, readFile, readFiles, parseDataSet, clearImageParsing, convertQidoMetadata, clearImageCache, clearStandardImageCache, clearDSAImageCache, loadAndCacheImages, renderFileImage, renderDICOMPDF, renderWebImage, disableViewport, unloadViewport, resizeViewport, renderImage, redrawImage, resetViewports, updateViewportData, toggleMouseToolsListeners, storeViewportData, invertImage, flipImageHorizontal, flipImageVertical, rotateImageLeft, rotateImageRight, updateImageManager, populateImageManager, getImageManager, resetImageManager, removeDataFromImageManager, getDataFromImageManager, getSopInstanceUIDFromImageManager, getImageTracker, populateGSPSManager, getGSPSManager, resetGSPSManager, populateFileManager, getFileManager, resetFileManager, getDataFromFileManager, resliceSeries, getColormapsList, applyColorMap, addColorMap, fillPixelData, HSVToRGB, parseContours, getImageFrame, buildNrrdImage, getNrrdImageId, loadNrrdImage, getImageIdFromSlice, getSliceNumberFromImageId, getNrrdSerieDimensions, loadReslicedImage, getDicomImageId, cacheImage, cacheImages, loadAndCacheImageStack, loadAndCacheDsaImageStack, loadMultiFrameImage, buildMultiFrameImage, getMultiFrameImageId, clearMultiFrameCache, setSingleFrameCache, getSingleFrameCache, clearSingleFrameCache, loadSingleFrameImage, populateDsaImageIds, resetFileLoader, getFileCustomImageId, applyDSAShift, applyConvolutionFilter, applySharpening, applyGaussianBlur, addCustomKernel, getKernels, addDiameterTool, addContoursTool, addMaskEditingTool, getCurrentMaskData, addStackStateToElement, addSeedsTool, clearMeasurements, getToolState, clearToolStateByName, updateDiameterTool, addToolStateSingleSlice, clearCornerstoneElements, syncToolStack, updateStackToolState, setSegmentationConfig, csToolsUpdateStack, initializeCSTools, setToolsStyle, addDefaultTools, addTool, setToolActive, setToolDisabled, setToolEnabled, setToolPassive, DEFAULT_TOOLS, dvTools, getDefaultToolsByType, setDefaultToolsProps, registerExternalTool, addMouseKeyHandlers, removeMouseKeyHandlers, initSegmentationModule, addSegmentationMask, setActiveLabelmap, setActiveSegment, undoLastStroke, redoLastStroke, setBrushProps, hexToRgb, rgbToHex, clearSegmentationState, deleteMask, enableBrushTool, disableBrushTool, toggleContourMode, toggleVisibility, getActiveLabelmapBuffer, updateTemporalViewportData, logger, setLogLevel };
44
45
  export declare const updateLarvitarManager: (...args: any) => any;
45
46
  export declare const populateLarvitarManager: (...args: any) => any;
46
47
  export declare const getLarvitarManager: (...args: any) => any;