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:
parent
042dbb13b4
commit
3dec7cfcda
@ -175,7 +175,8 @@ function PanelStudyBrowser({
|
|||||||
setExpandedStudyInstanceUIDs(updatedExpandedStudyInstanceUIDs);
|
setExpandedStudyInstanceUIDs(updatedExpandedStudyInstanceUIDs);
|
||||||
|
|
||||||
if (!shouldCollapseStudy) {
|
if (!shouldCollapseStudy) {
|
||||||
requestDisplaySetCreationForStudy(DisplaySetService, StudyInstanceUID);
|
const madeInClient = true
|
||||||
|
requestDisplaySetCreationForStudy(DisplaySetService, StudyInstanceUID, madeInClient);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,8 @@
|
|||||||
function requestDisplaySetCreationForStudy(
|
function requestDisplaySetCreationForStudy(
|
||||||
dataSource,
|
dataSource,
|
||||||
DisplaySetService,
|
DisplaySetService,
|
||||||
StudyInstanceUID
|
StudyInstanceUID,
|
||||||
|
madeInClient,
|
||||||
) {
|
) {
|
||||||
// TODO: is this already short-circuited by the map of Retrieve promises?
|
// TODO: is this already short-circuited by the map of Retrieve promises?
|
||||||
if (
|
if (
|
||||||
@ -12,7 +13,7 @@ function requestDisplaySetCreationForStudy(
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
dataSource.retrieveSeriesMetadata({ StudyInstanceUID });
|
dataSource.retrieveSeriesMetadata({ StudyInstanceUID, madeInClient });
|
||||||
}
|
}
|
||||||
|
|
||||||
export default requestDisplaySetCreationForStudy;
|
export default requestDisplaySetCreationForStudy;
|
||||||
|
|||||||
@ -377,7 +377,7 @@ function OHIFCornerstoneSRViewport({
|
|||||||
evt.preventDefault();
|
evt.preventDefault();
|
||||||
}}
|
}}
|
||||||
onPillClick={() => {
|
onPillClick={() => {
|
||||||
sendTrackedMeasurementsEvent('PROMPT_HYDRATE_SR', {
|
sendTrackedMeasurementsEvent('RESTORE_PROMPT_HYDRATE_SR', {
|
||||||
displaySetInstanceUID: displaySet.displaySetInstanceUID,
|
displaySetInstanceUID: displaySet.displaySetInstanceUID,
|
||||||
viewportIndex,
|
viewportIndex,
|
||||||
});
|
});
|
||||||
|
|||||||
@ -164,6 +164,7 @@ function TrackedMeasurementsContextProvider(
|
|||||||
console.log('sending event...', trackedMeasurements);
|
console.log('sending event...', trackedMeasurements);
|
||||||
sendTrackedMeasurementsEvent('PROMPT_HYDRATE_SR', {
|
sendTrackedMeasurementsEvent('PROMPT_HYDRATE_SR', {
|
||||||
displaySetInstanceUID: displaySet.displaySetInstanceUID,
|
displaySetInstanceUID: displaySet.displaySetInstanceUID,
|
||||||
|
SeriesInstanceUID: displaySet.SeriesInstanceUID,
|
||||||
viewportIndex: activeViewportIndex,
|
viewportIndex: activeViewportIndex,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@ -22,6 +22,7 @@ const machineConfiguration = {
|
|||||||
prevTrackedSeries: [],
|
prevTrackedSeries: [],
|
||||||
prevIgnoredSeries: [],
|
prevIgnoredSeries: [],
|
||||||
//
|
//
|
||||||
|
ignoredSRSeriesForHydration: [],
|
||||||
isDirty: false,
|
isDirty: false,
|
||||||
},
|
},
|
||||||
states: {
|
states: {
|
||||||
@ -39,7 +40,11 @@ const machineConfiguration = {
|
|||||||
actions: ['setTrackedStudyAndMultipleSeries', 'setIsDirtyToClean'],
|
actions: ['setTrackedStudyAndMultipleSeries', 'setIsDirtyToClean'],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
PROMPT_HYDRATE_SR: 'promptHydrateStructuredReport',
|
PROMPT_HYDRATE_SR: {
|
||||||
|
target: 'promptHydrateStructuredReport',
|
||||||
|
cond: 'hasNotIgnoredSRSeriesForHydration',
|
||||||
|
},
|
||||||
|
RESTORE_PROMPT_HYDRATE_SR: 'promptHydrateStructuredReport'
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
promptBeginTracking: {
|
promptBeginTracking: {
|
||||||
@ -218,6 +223,8 @@ const machineConfiguration = {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
target: 'idle',
|
target: 'idle',
|
||||||
|
actions: ['ignoreHydrationForSRSeries'],
|
||||||
|
cond: 'shouldIgnoreHydrationForSR'
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
onError: {
|
onError: {
|
||||||
@ -300,6 +307,9 @@ const defaultOptions = {
|
|||||||
prevIgnoredSeries: [...ctx.ignoredSeries],
|
prevIgnoredSeries: [...ctx.ignoredSeries],
|
||||||
ignoredSeries: [...ctx.ignoredSeries, evt.data.SeriesInstanceUID],
|
ignoredSeries: [...ctx.ignoredSeries, evt.data.SeriesInstanceUID],
|
||||||
})),
|
})),
|
||||||
|
ignoreHydrationForSRSeries: assign((ctx, evt) => ({
|
||||||
|
ignoredSRSeriesForHydration: [...ctx.ignoredSRSeriesForHydration, evt.data.srSeriesInstanceUID],
|
||||||
|
})),
|
||||||
addTrackedSeries: assign((ctx, evt) => ({
|
addTrackedSeries: assign((ctx, evt) => ({
|
||||||
prevTrackedSeries: [...ctx.trackedSeries],
|
prevTrackedSeries: [...ctx.trackedSeries],
|
||||||
trackedSeries: [...ctx.trackedSeries, evt.data.SeriesInstanceUID],
|
trackedSeries: [...ctx.trackedSeries, evt.data.SeriesInstanceUID],
|
||||||
@ -348,6 +358,8 @@ const defaultOptions = {
|
|||||||
evt.data && evt.data.userResponse === RESPONSE.NO_NOT_FOR_SERIES,
|
evt.data && evt.data.userResponse === RESPONSE.NO_NOT_FOR_SERIES,
|
||||||
shouldPromptSaveReport: (ctx, evt) =>
|
shouldPromptSaveReport: (ctx, evt) =>
|
||||||
evt.data && evt.data.userResponse === RESPONSE.CREATE_REPORT,
|
evt.data && evt.data.userResponse === RESPONSE.CREATE_REPORT,
|
||||||
|
shouldIgnoreHydrationForSR: (ctx, evt) =>
|
||||||
|
evt.data && evt.data.userResponse === RESPONSE.CANCEL,
|
||||||
shouldSaveAndContinueWithSameReport: (ctx, evt) =>
|
shouldSaveAndContinueWithSameReport: (ctx, evt) =>
|
||||||
evt.data &&
|
evt.data &&
|
||||||
evt.data.userResponse === RESPONSE.CREATE_REPORT &&
|
evt.data.userResponse === RESPONSE.CREATE_REPORT &&
|
||||||
@ -363,6 +375,9 @@ const defaultOptions = {
|
|||||||
hasRemainingTrackedSeries: (ctx, evt) =>
|
hasRemainingTrackedSeries: (ctx, evt) =>
|
||||||
ctx.trackedSeries.length > 1 ||
|
ctx.trackedSeries.length > 1 ||
|
||||||
!ctx.trackedSeries.includes(evt.SeriesInstanceUID),
|
!ctx.trackedSeries.includes(evt.SeriesInstanceUID),
|
||||||
|
hasNotIgnoredSRSeriesForHydration: (ctx, evt) => {
|
||||||
|
return !ctx.ignoredSRSeriesForHydration.includes(evt.SeriesInstanceUID)
|
||||||
|
},
|
||||||
isNewStudy: (ctx, evt) =>
|
isNewStudy: (ctx, evt) =>
|
||||||
!ctx.ignoredSeries.includes(evt.SeriesInstanceUID) &&
|
!ctx.ignoredSeries.includes(evt.SeriesInstanceUID) &&
|
||||||
ctx.trackedStudy !== evt.StudyInstanceUID,
|
ctx.trackedStudy !== evt.StudyInstanceUID,
|
||||||
|
|||||||
@ -11,8 +11,9 @@ const RESPONSE = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
function promptUser({ servicesManager, extensionManager }, ctx, evt) {
|
function promptUser({ servicesManager, extensionManager }, ctx, evt) {
|
||||||
const { UIViewportDialogService } = servicesManager.services;
|
const { UIViewportDialogService, DisplaySetService } = servicesManager.services;
|
||||||
const { viewportIndex, displaySetInstanceUID } = evt;
|
const { viewportIndex, displaySetInstanceUID } = evt;
|
||||||
|
const srDisplaySet = DisplaySetService.getDisplaySetByUID(displaySetInstanceUID)
|
||||||
|
|
||||||
return new Promise(async function(resolve, reject) {
|
return new Promise(async function(resolve, reject) {
|
||||||
const promptResult = await _askTrackMeasurements(
|
const promptResult = await _askTrackMeasurements(
|
||||||
@ -37,6 +38,7 @@ function promptUser({ servicesManager, extensionManager }, ctx, evt) {
|
|||||||
resolve({
|
resolve({
|
||||||
userResponse: promptResult,
|
userResponse: promptResult,
|
||||||
displaySetInstanceUID: evt.displaySetInstanceUID,
|
displaySetInstanceUID: evt.displaySetInstanceUID,
|
||||||
|
srSeriesInstanceUID: srDisplaySet.SeriesInstanceUID,
|
||||||
viewportIndex,
|
viewportIndex,
|
||||||
StudyInstanceUID,
|
StudyInstanceUID,
|
||||||
SeriesInstanceUIDs,
|
SeriesInstanceUIDs,
|
||||||
|
|||||||
@ -260,7 +260,8 @@ function PanelStudyBrowserTracking({
|
|||||||
setExpandedStudyInstanceUIDs(updatedExpandedStudyInstanceUIDs);
|
setExpandedStudyInstanceUIDs(updatedExpandedStudyInstanceUIDs);
|
||||||
|
|
||||||
if (!shouldCollapseStudy) {
|
if (!shouldCollapseStudy) {
|
||||||
requestDisplaySetCreationForStudy(DisplaySetService, StudyInstanceUID);
|
const madeInClient = true
|
||||||
|
requestDisplaySetCreationForStudy(DisplaySetService, StudyInstanceUID, madeInClient);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,8 @@
|
|||||||
function requestDisplaySetCreationForStudy(
|
function requestDisplaySetCreationForStudy(
|
||||||
dataSource,
|
dataSource,
|
||||||
DisplaySetService,
|
DisplaySetService,
|
||||||
StudyInstanceUID
|
StudyInstanceUID,
|
||||||
|
madeInClient,
|
||||||
) {
|
) {
|
||||||
if (
|
if (
|
||||||
DisplaySetService.activeDisplaySets.some(
|
DisplaySetService.activeDisplaySets.some(
|
||||||
@ -11,7 +12,7 @@ function requestDisplaySetCreationForStudy(
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
dataSource.retrieveSeriesMetadata({ StudyInstanceUID });
|
dataSource.retrieveSeriesMetadata({ StudyInstanceUID, madeInClient });
|
||||||
}
|
}
|
||||||
|
|
||||||
export default requestDisplaySetCreationForStudy;
|
export default requestDisplaySetCreationForStudy;
|
||||||
|
|||||||
@ -71,7 +71,7 @@ class HangingProtocolService {
|
|||||||
this.customAttributeRetrievalCallbacks
|
this.customAttributeRetrievalCallbacks
|
||||||
);
|
);
|
||||||
|
|
||||||
// if there is no pre-defiend protocol
|
// if there is no pre-defined protocol
|
||||||
if (!protocol || protocol.id === undefined) {
|
if (!protocol || protocol.id === undefined) {
|
||||||
const matchedProtocol = this.ProtocolEngine.run(metaData);
|
const matchedProtocol = this.ProtocolEngine.run(metaData);
|
||||||
this._setProtocol(matchedProtocol);
|
this._setProtocol(matchedProtocol);
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
@ -39,9 +39,11 @@ async function defaultRouteInit({
|
|||||||
|
|
||||||
const { unsubscribe: seriesAddedUnsubscribe } = DicomMetadataStore.subscribe(
|
const { unsubscribe: seriesAddedUnsubscribe } = DicomMetadataStore.subscribe(
|
||||||
DicomMetadataStore.EVENTS.SERIES_ADDED,
|
DicomMetadataStore.EVENTS.SERIES_ADDED,
|
||||||
({ StudyInstanceUID }) => {
|
({ StudyInstanceUID, madeInClient }) => {
|
||||||
const studyMetadata = DicomMetadataStore.getStudy(StudyInstanceUID);
|
const studyMetadata = DicomMetadataStore.getStudy(StudyInstanceUID);
|
||||||
HangingProtocolService.run(studyMetadata);
|
if (!madeInClient) {
|
||||||
|
HangingProtocolService.run(studyMetadata);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
unsubscriptions.push(seriesAddedUnsubscribe);
|
unsubscriptions.push(seriesAddedUnsubscribe);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user