fix: Address various layout and prompt bugs (#2472)

* fix: layout should not reset when opening a new study in studyBrowser

* fix: added state to handle ignored SR series for hydration
This commit is contained in:
Alireza authored and GitHub committed 2021-07-19 14:31:40 +02:00
1 parent 042dbb13b4
commit 3dec7cfcda
11 files changed
+38 -14

No files matched your search

@@ -175,7 +175,8 @@ function PanelStudyBrowser({
setExpandedStudyInstanceUIDs(updatedExpandedStudyInstanceUIDs);
if (!shouldCollapseStudy) {
requestDisplaySetCreationForStudy(DisplaySetService, StudyInstanceUID);
const madeInClient = true
requestDisplaySetCreationForStudy(DisplaySetService, StudyInstanceUID, madeInClient);
}
}
@@ -1,7 +1,8 @@
function requestDisplaySetCreationForStudy(
dataSource,
DisplaySetService,
StudyInstanceUID
StudyInstanceUID,
madeInClient,
) {
// TODO: is this already short-circuited by the map of Retrieve promises?
if (
@@ -12,7 +13,7 @@ function requestDisplaySetCreationForStudy(
return;
}
dataSource.retrieveSeriesMetadata({ StudyInstanceUID });
dataSource.retrieveSeriesMetadata({ StudyInstanceUID, madeInClient });
}
export default requestDisplaySetCreationForStudy;
@@ -377,7 +377,7 @@ function OHIFCornerstoneSRViewport({
evt.preventDefault();
}}
onPillClick={() => {
sendTrackedMeasurementsEvent('PROMPT_HYDRATE_SR', {
sendTrackedMeasurementsEvent('RESTORE_PROMPT_HYDRATE_SR', {
displaySetInstanceUID: displaySet.displaySetInstanceUID,
viewportIndex,
});
@@ -164,6 +164,7 @@ function TrackedMeasurementsContextProvider(
console.log('sending event...', trackedMeasurements);
sendTrackedMeasurementsEvent('PROMPT_HYDRATE_SR', {
displaySetInstanceUID: displaySet.displaySetInstanceUID,
SeriesInstanceUID: displaySet.SeriesInstanceUID,
viewportIndex: activeViewportIndex,
});
}
@@ -22,6 +22,7 @@ const machineConfiguration = {
prevTrackedSeries: [],
prevIgnoredSeries: [],
//
ignoredSRSeriesForHydration: [],
isDirty: false,
},
states: {
@@ -39,7 +40,11 @@ const machineConfiguration = {
actions: ['setTrackedStudyAndMultipleSeries', 'setIsDirtyToClean'],
},
],
PROMPT_HYDRATE_SR: 'promptHydrateStructuredReport',
PROMPT_HYDRATE_SR: {
target: 'promptHydrateStructuredReport',
cond: 'hasNotIgnoredSRSeriesForHydration',
},
RESTORE_PROMPT_HYDRATE_SR: 'promptHydrateStructuredReport'
},
},
promptBeginTracking: {
@@ -218,6 +223,8 @@ const machineConfiguration = {
},
{
target: 'idle',
actions: ['ignoreHydrationForSRSeries'],
cond: 'shouldIgnoreHydrationForSR'
},
],
onError: {
@@ -300,6 +307,9 @@ const defaultOptions = {
prevIgnoredSeries: [...ctx.ignoredSeries],
ignoredSeries: [...ctx.ignoredSeries, evt.data.SeriesInstanceUID],
})),
ignoreHydrationForSRSeries: assign((ctx, evt) => ({
ignoredSRSeriesForHydration: [...ctx.ignoredSRSeriesForHydration, evt.data.srSeriesInstanceUID],
})),
addTrackedSeries: assign((ctx, evt) => ({
prevTrackedSeries: [...ctx.trackedSeries],
trackedSeries: [...ctx.trackedSeries, evt.data.SeriesInstanceUID],
@@ -348,6 +358,8 @@ const defaultOptions = {
evt.data && evt.data.userResponse === RESPONSE.NO_NOT_FOR_SERIES,
shouldPromptSaveReport: (ctx, evt) =>
evt.data && evt.data.userResponse === RESPONSE.CREATE_REPORT,
shouldIgnoreHydrationForSR: (ctx, evt) =>
evt.data && evt.data.userResponse === RESPONSE.CANCEL,
shouldSaveAndContinueWithSameReport: (ctx, evt) =>
evt.data &&
evt.data.userResponse === RESPONSE.CREATE_REPORT &&
@@ -363,6 +375,9 @@ const defaultOptions = {
hasRemainingTrackedSeries: (ctx, evt) =>
ctx.trackedSeries.length > 1 ||
!ctx.trackedSeries.includes(evt.SeriesInstanceUID),
hasNotIgnoredSRSeriesForHydration: (ctx, evt) => {
return !ctx.ignoredSRSeriesForHydration.includes(evt.SeriesInstanceUID)
},
isNewStudy: (ctx, evt) =>
!ctx.ignoredSeries.includes(evt.SeriesInstanceUID) &&
ctx.trackedStudy !== evt.StudyInstanceUID,
@@ -11,8 +11,9 @@ const RESPONSE = {
};
function promptUser({ servicesManager, extensionManager }, ctx, evt) {
const { UIViewportDialogService } = servicesManager.services;
const { UIViewportDialogService, DisplaySetService } = servicesManager.services;
const { viewportIndex, displaySetInstanceUID } = evt;
const srDisplaySet = DisplaySetService.getDisplaySetByUID(displaySetInstanceUID)
return new Promise(async function(resolve, reject) {
const promptResult = await _askTrackMeasurements(
@@ -37,6 +38,7 @@ function promptUser({ servicesManager, extensionManager }, ctx, evt) {
resolve({
userResponse: promptResult,
displaySetInstanceUID: evt.displaySetInstanceUID,
srSeriesInstanceUID: srDisplaySet.SeriesInstanceUID,
viewportIndex,
StudyInstanceUID,
SeriesInstanceUIDs,
@@ -260,7 +260,8 @@ function PanelStudyBrowserTracking({
setExpandedStudyInstanceUIDs(updatedExpandedStudyInstanceUIDs);
if (!shouldCollapseStudy) {
requestDisplaySetCreationForStudy(DisplaySetService, StudyInstanceUID);
const madeInClient = true
requestDisplaySetCreationForStudy(DisplaySetService, StudyInstanceUID, madeInClient);
}
}
@@ -1,7 +1,8 @@
function requestDisplaySetCreationForStudy(
dataSource,
DisplaySetService,
StudyInstanceUID
StudyInstanceUID,
madeInClient,
) {
if (
DisplaySetService.activeDisplaySets.some(
@@ -11,7 +12,7 @@ function requestDisplaySetCreationForStudy(
return;
}
dataSource.retrieveSeriesMetadata({ StudyInstanceUID });
dataSource.retrieveSeriesMetadata({ StudyInstanceUID, madeInClient });
}
export default requestDisplaySetCreationForStudy;