feat: allow saving to same SR series (#4889)
This commit is contained in:
1 parent
7b40963997
commit
62e5a62066
9 files changed
+167
-63
No files matched your search
@@ -0,0 +1,48 @@
|
||||
const MIN_SR_SERIES_NUMBER = 4700;
|
||||
|
||||
export function getNextSeriesNumber({ displaySetService, modality, minSeriesNumber }) {
|
||||
const activeDisplaySets = displaySetService.getActiveDisplaySets();
|
||||
const modalityDisplaySets = activeDisplaySets.filter(ds => ds.Modality === modality);
|
||||
const modalitySeriesNumbers = modalityDisplaySets.map(ds => ds.SeriesNumber);
|
||||
const maxSeriesNumber = Math.max(...modalitySeriesNumbers, minSeriesNumber);
|
||||
|
||||
const allSeriesNumbers = activeDisplaySets.map(ds => ds.SeriesNumber);
|
||||
|
||||
let finalSeriesNumber = maxSeriesNumber + 1;
|
||||
while (allSeriesNumbers.includes(finalSeriesNumber)) {
|
||||
finalSeriesNumber++;
|
||||
}
|
||||
|
||||
return { SeriesNumber: finalSeriesNumber, InstanceNumber: 1 };
|
||||
}
|
||||
|
||||
export function getSRSeriesAndInstanceNumber({ displaySetService, SeriesInstanceUid }) {
|
||||
if (!SeriesInstanceUid) {
|
||||
return getNextSeriesNumber({
|
||||
displaySetService,
|
||||
modality: 'SR',
|
||||
minSeriesNumber: MIN_SR_SERIES_NUMBER,
|
||||
});
|
||||
}
|
||||
|
||||
const displaySetsMap = displaySetService.getDisplaySetCache();
|
||||
const displaySets = Array.from(displaySetsMap.values());
|
||||
const srDisplaySet = displaySets.find(
|
||||
ds => ds.Modality === 'SR' && ds.SeriesInstanceUID === SeriesInstanceUid
|
||||
);
|
||||
const InstanceNumber = srDisplaySet.instances?.length + 1;
|
||||
|
||||
if (!srDisplaySet?.SeriesNumber || !InstanceNumber) {
|
||||
return getNextSeriesNumber({
|
||||
displaySetService,
|
||||
modality: 'SR',
|
||||
minSeriesNumber: MIN_SR_SERIES_NUMBER,
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
SeriesNumber: srDisplaySet.SeriesNumber,
|
||||
InstanceNumber,
|
||||
referenceDisplaySet: srDisplaySet,
|
||||
};
|
||||
}
|
||||
Reference in new issue
Block a user