UNPKG

ami-cjs.js

Version:

<p align="center"> <img src="https://cloud.githubusercontent.com/assets/214063/23213764/78ade038-f90c-11e6-8208-4fcade5f3832.png" width="60%"> </p>

163 lines (137 loc) 3.67 kB
/** * Imports ***/ import ModelsBase from '../models/models.base'; /** * Series object. * * @module models/series */ export default class ModelsSeries extends ModelsBase { constructor() { super(); this._concatenationUID = -1; this._seriesInstanceUID = -1; this._seriesNumber = -1; this._modality = 'Modality not set'; this._dimensionIndexSequence = []; // it is used in the loader in case a dicom/nifti contains multiple frames // should be updated after merge or renamed this._numberOfFrames = 0; this._numberOfChannels = 1; // SEGMENTATION STUFF this._segmentationType = null; this._segmentationSegments = []; // STACK this._stack = []; } /** * Validate a series. * * Requirements: * - mergeSeries method * - _seriesInstanceUID * - _numberOfFrames * - _numberOfChannels * _ _stack * * @param {ModelsSeries} model - Model to be validated as series. * * @returns {boolean} True if series is valid. False if not. * * @override */ validate(model) { if (!(super.validate(model) && typeof model.mergeSeries === 'function' && model.hasOwnProperty('_seriesInstanceUID') && model.hasOwnProperty('_numberOfFrames') && model.hasOwnProperty('_numberOfChannels') && model.hasOwnProperty('_stack') && typeof model._stack !== 'undefined' && Array === model._stack.constructor)) { return false; } return true; } /** * Merge current series with provided series. * 2 series can ONLY be merge if they have the same SeriesInstanceUID. * * Also merges the stacks inside a series. * * @param {ModelsSeries} series - Series to be merged against current series. * * @returns {boolean} True if series could be merge. False if not. * * @override */ merge(series) { if(!this.validate(series)) { return false; } if (this._seriesInstanceUID === series.seriesInstanceUID) { return this.mergeModels(this._stack, series.stack); } else { return false; } } /** * Merge current series with provided array of series. * 2 series can ONLY be merge if they have the same SeriesInstanceUID. * * Also merges the stacks inside a series. * * @param {Array.<ModelsSeries>} target - Series to be merged against current series. * * @returns {Array.<ModelsSeries>} Array of series properly merged. */ mergeSeries(target) { let seriesContainer = [this]; this.mergeModels(seriesContainer, target); return seriesContainer; } /** * Setters/Getters */ set seriesInstanceUID(seriesInstanceUID) { this._seriesInstanceUID = seriesInstanceUID; } get seriesInstanceUID() { return this._seriesInstanceUID; } set numberOfFrames(numberOfFrames) { this._numberOfFrames = numberOfFrames; } get numberOfFrames() { return this._numberOfFrames; } set numberOfChannels(numberOfChannels) { this._numberOfChannels = numberOfChannels; } get numberOfChannels() { return this._numberOfChannels; } set stack(stack) { this._stack = stack; } get stack() { return this._stack; } set modality(modality) { this._modality = modality; } get modality() { return this._modality; } set segmentationType(segmentationType) { this._segmentationType = segmentationType; } get segmentationType() { return this._segmentationType; } set segmentationSegments(segmentationSegments) { this._segmentationSegments = segmentationSegments; } get segmentationSegments() { return this._segmentationSegments; } }