All files / metadata/src/types MetadataModuleTypes.ts

0% Statements 0/0
0% Branches 0/0
0% Functions 0/0
0% Lines 0/0

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133                                                                                                                                                                                                                                                                         
import type { IDisplaySet } from '../displayset/IDisplaySet';
 
export interface DicomDateObject {
  year: number;
  month: number;
  day: number;
}
 
export interface DicomTimeObject {
  hours: number;
  minutes?: number;
  seconds?: number;
  fractionalSeconds?: number;
}
 
export interface GeneralSeriesModuleMetadata {
  modality: string;
  seriesInstanceUID: string;
  seriesNumber: number;
  studyInstanceUID: string;
  seriesDate: string;
  seriesTime: string;
}
 
export interface PatientStudyModuleMetadata {
  patientAge: number;
  patientSize: number;
  patientWeight: number;
}
 
export interface ImagePlaneModuleMetadata {
  frameOfReferenceUID: string;
  rows: number;
  columns: number;
  imageOrientationPatient: number[];
  rowCosines: number[];
  columnCosines: number[];
  imagePositionPatient: number[];
  sliceThickness?: number;
  sliceLocation: number;
  pixelSpacing: number[];
  rowPixelSpacing: number | null;
  columnPixelSpacing: number | null;
  usingDefaultValues?: boolean;
}
 
export interface ImagePixelModuleMetadata {
  samplesPerPixel: number;
  photometricInterpretation: string;
  rows: number;
  columns: number;
  bitsAllocated: number;
  bitsStored: number;
  highBit: number;
  pixelRepresentation: number;
  planarConfiguration: number;
  pixelAspectRatio: string;
  redPaletteColorLookupTableDescriptor: number[];
  greenPaletteColorLookupTableDescriptor: number[];
  bluePaletteColorLookupTableDescriptor: number[];
  redPaletteColorLookupTableData: number[];
  greenPaletteColorLookupTableData: number[];
  bluePaletteColorLookupTableData: number[];
  smallestPixelValue?: number;
  largestPixelValue?: number;
}
 
export interface SopCommonModuleMetadata {
  sopClassUID: string;
  sopInstanceUID: string;
}
 
/** ECG module: instance-derived fields used for ECG display sets (e.g. modality, series/study/sop UIDs). */
export interface EcgModuleMetadata {
  modality: string;
  sopInstanceUID: string;
  sopClassUID: string;
  seriesDescription?: string;
  seriesNumber?: number;
  seriesDate?: string;
  seriesTime?: string;
  seriesInstanceUID: string;
  studyInstanceUID: string;
}
 
export interface FrameMetadata extends SopCommonModuleMetadata {
  // This is a 1 based frame number
  frameNumber: number;
  numberOfFrames: number;
}
 
export interface TransferSyntaxMetadata {
  transferSyntaxUID: string;
}
 
/**
 * Compressed frame data when NATURALIZED has pixel data as a Value.
 * pixelData may be a single buffer or an array of per-frame data.
 */
export interface CompressedFrameDataMetadata {
  transferSyntaxUid: string;
  frameOfInterest: number;
  frameNumber: number;
  pixelData: ArrayBufferView | ArrayBufferView[];
}
 
/**
 * Maps metadata module names (MetadataModules enum values or literal strings) to their
 * return types. Used by getTyped() to infer the return type from the module type argument.
 * Names must match MetadataModules enum values (e.g. 'transferSyntax', 'imagePlaneModule').
 */
export interface MetadataModuleType {
  baseImageId: string;
  frameImageIds: Set<string>;
  generalSeriesModule: GeneralSeriesModuleMetadata;
  patientStudyModule: PatientStudyModuleMetadata;
  imagePlaneModule: ImagePlaneModuleMetadata;
  imagePixelModule: ImagePixelModuleMetadata;
  sopCommonModule: SopCommonModuleMetadata;
  ecgModule: EcgModuleMetadata;
  frameModule: FrameMetadata;
  transferSyntax: TransferSyntaxMetadata;
  compressedFrameData: CompressedFrameDataMetadata;
  /**
   * The display set stored by `registerDisplaySetMetadata` and resolved by the
   * display set provider. This is the full {@link IDisplaySet} (including
   * `instances` and any split-rule attributes such as `isClip`,
   * `numImageFrames`, `splitNumber`), not a narrowed projection, so a typed
   * `getTyped(MetadataModules.DISPLAY_SET, imageId)` read matches what is cached.
   */
  displaySetModule: IDisplaySet;
}