42 lines
1.5 KiB
TypeScript
42 lines
1.5 KiB
TypeScript
import { DisplaySetService, Types } from '@ohif/core';
|
|
|
|
import getNextSRSeriesNumber from './getNextSRSeriesNumber';
|
|
|
|
/**
|
|
* Find an SR having the same series description.
|
|
* This is used by the store service in order to store DICOM SR's having the
|
|
* same Series Description into a single series under consecutive instance numbers
|
|
* That way, they are all organized as a set and could have tools to view
|
|
* "prior" SR instances.
|
|
*
|
|
* @param SeriesDescription - is the description to look for
|
|
* @param displaySetService - the display sets to search for DICOM SR in
|
|
* @returns SeriesMetadata from a DICOM SR having the same series description
|
|
*/
|
|
export default function findSRWithSameSeriesDescription(
|
|
SeriesDescription: string,
|
|
displaySetService: DisplaySetService
|
|
): Types.SeriesMetadata {
|
|
const activeDisplaySets = displaySetService.getActiveDisplaySets();
|
|
const srDisplaySets = activeDisplaySets.filter(ds => ds.Modality === 'SR');
|
|
const sameSeries = srDisplaySets.find(ds => ds.SeriesDescription === SeriesDescription);
|
|
if (sameSeries) {
|
|
console.log('Storing to same series', sameSeries);
|
|
const { instance } = sameSeries;
|
|
const { SeriesInstanceUID, SeriesDescription, SeriesDate, SeriesTime, SeriesNumber, Modality } =
|
|
instance;
|
|
return {
|
|
SeriesInstanceUID,
|
|
SeriesDescription,
|
|
SeriesDate,
|
|
SeriesTime,
|
|
SeriesNumber,
|
|
Modality,
|
|
InstanceNumber: sameSeries.instances.length + 1,
|
|
};
|
|
}
|
|
|
|
const SeriesNumber = getNextSRSeriesNumber(displaySetService);
|
|
return { SeriesDescription, SeriesNumber };
|
|
}
|