Shift create report to a separate file
This commit is contained in:
parent
d739b52e3e
commit
9fb3fe6dc2
@ -0,0 +1,47 @@
|
|||||||
|
import React from 'react';
|
||||||
|
import { DICOMSR } from '@ohif/core';
|
||||||
|
|
||||||
|
async function createReportAsync(servicesManager, dataSource, measurements) {
|
||||||
|
const {
|
||||||
|
UINotificationService,
|
||||||
|
UIDialogService,
|
||||||
|
DisplaySetService,
|
||||||
|
} = servicesManager.services;
|
||||||
|
const loadingDialogId = UIDialogService.create({
|
||||||
|
showOverlay: true,
|
||||||
|
isDraggable: false,
|
||||||
|
centralize: true,
|
||||||
|
// TODO: Create a loading indicator component + zeplin design?
|
||||||
|
content: Loading,
|
||||||
|
});
|
||||||
|
|
||||||
|
try {
|
||||||
|
const naturalizedReport = await DICOMSR.storeMeasurements(
|
||||||
|
measurements,
|
||||||
|
dataSource
|
||||||
|
);
|
||||||
|
|
||||||
|
DisplaySetService.makeDisplaySets([naturalizedReport], {
|
||||||
|
madeInClient: true,
|
||||||
|
});
|
||||||
|
UINotificationService.show({
|
||||||
|
title: 'STOW SR',
|
||||||
|
message: 'Measurements saved successfully',
|
||||||
|
type: 'success',
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
UINotificationService.show({
|
||||||
|
title: 'STOW SR',
|
||||||
|
message: error.message || 'Failed to store measurements',
|
||||||
|
type: 'error',
|
||||||
|
});
|
||||||
|
} finally {
|
||||||
|
UIDialogService.dismiss({ id: loadingDialogId });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function Loading() {
|
||||||
|
return <div className="text-primary-active">Loading...</div>;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default createReportAsync;
|
||||||
@ -5,6 +5,7 @@ import { DicomMetadataStore, DICOMSR } from '@ohif/core';
|
|||||||
import { useDebounce } from '@hooks';
|
import { useDebounce } from '@hooks';
|
||||||
import ActionButtons from './ActionButtons';
|
import ActionButtons from './ActionButtons';
|
||||||
import { useTrackedMeasurements } from '../../getContextModule';
|
import { useTrackedMeasurements } from '../../getContextModule';
|
||||||
|
import createReportAsync from './../../_shared/createReportAsync.js';
|
||||||
|
|
||||||
const DISPLAY_STUDY_SUMMARY_INITIAL_VALUE = {
|
const DISPLAY_STUDY_SUMMARY_INITIAL_VALUE = {
|
||||||
key: undefined, //
|
key: undefined, //
|
||||||
@ -21,12 +22,7 @@ function PanelMeasurementTableTracking({ servicesManager, extensionManager }) {
|
|||||||
measurementChangeTimestamp,
|
measurementChangeTimestamp,
|
||||||
200
|
200
|
||||||
);
|
);
|
||||||
const {
|
const { MeasurementService } = servicesManager.services;
|
||||||
MeasurementService,
|
|
||||||
UINotificationService,
|
|
||||||
UIDialogService,
|
|
||||||
DisplaySetService,
|
|
||||||
} = servicesManager.services;
|
|
||||||
const [
|
const [
|
||||||
trackedMeasurements,
|
trackedMeasurements,
|
||||||
sendTrackedMeasurementsEvent,
|
sendTrackedMeasurementsEvent,
|
||||||
@ -103,7 +99,20 @@ function PanelMeasurementTableTracking({ servicesManager, extensionManager }) {
|
|||||||
};
|
};
|
||||||
}, [MeasurementService, sendTrackedMeasurementsEvent]);
|
}, [MeasurementService, sendTrackedMeasurementsEvent]);
|
||||||
|
|
||||||
const activeMeasurementItem = 0;
|
function createReport() {
|
||||||
|
// TODO -> Eventually deal with multiple dataSources.
|
||||||
|
// Would need some way of saying which one is the "push" dataSource
|
||||||
|
const dataSources = extensionManager.getDataSources();
|
||||||
|
const dataSource = dataSources[0];
|
||||||
|
const measurements = MeasurementService.getMeasurements();
|
||||||
|
const trackedMeasurements = measurements.filter(
|
||||||
|
m =>
|
||||||
|
trackedStudy === m.referenceStudyUID &&
|
||||||
|
trackedSeries.includes(m.referenceSeriesUID)
|
||||||
|
);
|
||||||
|
|
||||||
|
return createReportAsync(servicesManager, dataSource, trackedMeasurements);
|
||||||
|
}
|
||||||
|
|
||||||
const exportReport = () => {
|
const exportReport = () => {
|
||||||
const measurements = MeasurementService.getMeasurements();
|
const measurements = MeasurementService.getMeasurements();
|
||||||
@ -117,52 +126,6 @@ function PanelMeasurementTableTracking({ servicesManager, extensionManager }) {
|
|||||||
DICOMSR.downloadReport(trackedMeasurements, dataSource);
|
DICOMSR.downloadReport(trackedMeasurements, dataSource);
|
||||||
};
|
};
|
||||||
|
|
||||||
const createReport = async () => {
|
|
||||||
const loadingDialogId = UIDialogService.create({
|
|
||||||
showOverlay: true,
|
|
||||||
isDraggable: false,
|
|
||||||
centralize: true,
|
|
||||||
// TODO: Create a loading indicator component + zeplin design?
|
|
||||||
content: () => <div className="text-primary-active">Loading...</div>,
|
|
||||||
});
|
|
||||||
|
|
||||||
try {
|
|
||||||
const measurements = MeasurementService.getMeasurements();
|
|
||||||
const trackedMeasurements = measurements.filter(
|
|
||||||
m =>
|
|
||||||
trackedStudy === m.referenceStudyUID &&
|
|
||||||
trackedSeries.includes(m.referenceSeriesUID)
|
|
||||||
);
|
|
||||||
|
|
||||||
const dataSources = extensionManager.getDataSources();
|
|
||||||
// TODO -> Eventually deal with multiple dataSources.
|
|
||||||
// Would need some way of saying which one is the "push" dataSource
|
|
||||||
const dataSource = dataSources[0];
|
|
||||||
|
|
||||||
const naturalizedReport = await DICOMSR.storeMeasurements(
|
|
||||||
trackedMeasurements,
|
|
||||||
dataSource
|
|
||||||
);
|
|
||||||
|
|
||||||
DisplaySetService.makeDisplaySets([naturalizedReport], {
|
|
||||||
madeInClient: true,
|
|
||||||
});
|
|
||||||
UINotificationService.show({
|
|
||||||
title: 'STOW SR',
|
|
||||||
message: 'Measurements saved successfully',
|
|
||||||
type: 'success',
|
|
||||||
});
|
|
||||||
} catch (error) {
|
|
||||||
UINotificationService.show({
|
|
||||||
title: 'STOW SR',
|
|
||||||
message: error.message || 'Failed to store measurements',
|
|
||||||
type: 'error',
|
|
||||||
});
|
|
||||||
} finally {
|
|
||||||
UIDialogService.dismiss({ id: loadingDialogId });
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<div className="overflow-x-hidden overflow-y-auto invisible-scrollbar">
|
<div className="overflow-x-hidden overflow-y-auto invisible-scrollbar">
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user