Fix contour annotations RTSS saving (#5545)
* [WIP] Fix contour annotations RTSS saving * fix: Export image sop image reference provider * Fixes for download with filename * Updates to fix metadata issues with CS3D * Updates to save menu * Fixing some additional re-save metadata * Add support for saving with predecessor image sequence * PR comment fixes * fix: Load RTSS after save * fix segmentation save * fix load of mixed seg/rt studies * Use frame module to get information on the frame shown * Fix study browser to use instances.length when numImageFrames not present * fix: Load of display set split from multiple non-FOR referenes * Fix RT and SEG applying to wrong series because of using referenced series sequence without checkout sop instances * Fix save seg * Update to released CS3D versions * test: Add revokeObjectURL to test download blob * Add hard dependency on mode-basic to fix build order issues * fix: build * Try to fix build segmentation * PR comments * PR comment update
This commit is contained in:
1 parent
9c5043ca2c
commit
57205703bb
68 files changed
+962
-648
No files matched your search
@@ -3,8 +3,6 @@ import { utils } from '@ohif/core';
|
||||
import createReportAsync from '../Actions/createReportAsync';
|
||||
import { createReportDialogPrompt } from '../Panels';
|
||||
import PROMPT_RESPONSES from './_shared/PROMPT_RESPONSES';
|
||||
import { getSRSeriesAndInstanceNumber } from './getSRSeriesAndInstanceNumber';
|
||||
import { getSeriesDateTime } from './getCurrentDicomDateTime';
|
||||
|
||||
const { filterAnd, filterMeasurementsByStudyUID, filterMeasurementsBySeriesUID } =
|
||||
utils.MeasurementFilters;
|
||||
@@ -27,9 +25,14 @@ async function promptSaveReport({ servicesManager, commandsManager, extensionMan
|
||||
} = ctx;
|
||||
let displaySetInstanceUIDs;
|
||||
|
||||
const measurementData = measurementService.getMeasurements(measurementFilter);
|
||||
const predecessorImageId = findPredecessorImageId(measurementData);
|
||||
|
||||
try {
|
||||
const promptResult = await createReportDialogPrompt({
|
||||
title: defaultSaveTitle,
|
||||
predecessorImageId,
|
||||
minSeriesNumber: 3000,
|
||||
extensionManager,
|
||||
servicesManager,
|
||||
});
|
||||
@@ -37,16 +40,9 @@ async function promptSaveReport({ servicesManager, commandsManager, extensionMan
|
||||
if (promptResult.action === PROMPT_RESPONSES.CREATE_REPORT) {
|
||||
const dataSources = extensionManager.getDataSources(promptResult.dataSourceName);
|
||||
const dataSource = dataSources[0];
|
||||
const measurementData = measurementService.getMeasurements(measurementFilter);
|
||||
|
||||
const SeriesDescription = promptResult.value || defaultSaveTitle;
|
||||
|
||||
const { SeriesNumber, InstanceNumber, referenceDisplaySet } = getSRSeriesAndInstanceNumber({
|
||||
displaySetService,
|
||||
SeriesInstanceUid: promptResult.series,
|
||||
});
|
||||
|
||||
const { SeriesDate, SeriesTime } = referenceDisplaySet ?? getSeriesDateTime();
|
||||
const { series, priorSeriesNumber, value: reportName } = promptResult;
|
||||
const SeriesDescription = reportName || defaultSaveTitle;
|
||||
|
||||
const getReport = async () => {
|
||||
return commandsManager.runCommand(
|
||||
@@ -57,11 +53,8 @@ async function promptSaveReport({ servicesManager, commandsManager, extensionMan
|
||||
additionalFindingTypes: ['ArrowAnnotate'],
|
||||
options: {
|
||||
SeriesDescription,
|
||||
SeriesNumber,
|
||||
InstanceNumber,
|
||||
SeriesInstanceUID: promptResult.series,
|
||||
SeriesDate,
|
||||
SeriesTime,
|
||||
SeriesNumber: 1 + priorSeriesNumber,
|
||||
predecessorImageId: series,
|
||||
},
|
||||
},
|
||||
'CORNERSTONE_STRUCTURED_REPORT'
|
||||
@@ -90,4 +83,20 @@ async function promptSaveReport({ servicesManager, commandsManager, extensionMan
|
||||
}
|
||||
}
|
||||
|
||||
export function findPredecessorImageId(annotations) {
|
||||
let predecessorImageId;
|
||||
for (const annotation of annotations) {
|
||||
if (
|
||||
predecessorImageId &&
|
||||
annotation.predecessorImageId &&
|
||||
annotation.predecessorImageId !== predecessorImageId
|
||||
) {
|
||||
console.warn('Found multiple source predecessors, not defaulting to same series');
|
||||
return;
|
||||
}
|
||||
predecessorImageId ||= annotation.predecessorImageId;
|
||||
}
|
||||
return predecessorImageId;
|
||||
}
|
||||
|
||||
export default promptSaveReport;
|
||||
Reference in new issue
Block a user