Skip to content

Commit

Permalink
feat(hangingProtocols): added selection of the HangingProtocol stage …
Browse files Browse the repository at this point in the history
…from the url (#4310)
  • Loading branch information
Sofien-Sellami authored Oct 17, 2024
1 parent e8f9345 commit fa2435d
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 6 deletions.
4 changes: 4 additions & 0 deletions extensions/tmtv/src/getHangingProtocolModule.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import {
*/
const stage1 = {
name: 'default',
id: 'default',
viewportStructure: {
layoutType: 'grid',
properties: {
Expand Down Expand Up @@ -112,6 +113,7 @@ const stage1 = {
*/
const stage2 = {
name: 'Fusion 2x2',
id: 'Fusion-2x2',
viewportStructure: {
layoutType: 'grid',
properties: {
Expand All @@ -131,6 +133,7 @@ const stage2 = {
*/
const stage3 = {
name: '2x3-layout',
id: '2x3-layout',
viewportStructure: {
layoutType: 'grid',
properties: {
Expand All @@ -152,6 +155,7 @@ const stage3 = {
*/
const stage4 = {
name: '2x4-layout',
id: '2x4-layout',
viewportStructure: {
layoutType: 'grid',
properties: {
Expand Down
17 changes: 15 additions & 2 deletions platform/app/src/routes/Mode/Mode.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ export default function ModeRoute({
const { extensions, sopClassHandlers, hotkeys: hotkeyObj, hangingProtocol } = mode;

const runTimeHangingProtocolId = lowerCaseSearchParams.get('hangingprotocolid');
const runTimeStageId = lowerCaseSearchParams.get('stageid');
const token = lowerCaseSearchParams.get('token');

if (token) {
Expand Down Expand Up @@ -216,6 +217,16 @@ export default function ModeRoute({
? runTimeHangingProtocolId
: hangingProtocol;

// Determine the index of the stageId if the hangingProtocolIdToUse is defined
const stageIndex = hangingProtocolIdToUse
? hangingProtocolService.getStageIndex(hangingProtocolIdToUse, {
stageId: runTimeStageId || undefined,
})
: -1;
// Ensure that the stage index is never negative
// If stageIndex is negative (e.g., if stage wasn't found), use 0 as the default
const stageIndexToUse = Math.max(0, stageIndex);

// Sets the active hanging protocols - if hangingProtocol is undefined,
// resets to default. Done before the onModeEnter to allow the onModeEnter
// to perform custom hanging protocol actions
Expand Down Expand Up @@ -265,7 +276,8 @@ export default function ModeRoute({
dataSource,
filters,
},
hangingProtocolIdToUse
hangingProtocolIdToUse,
stageIndexToUse
);
}

Expand All @@ -277,7 +289,8 @@ export default function ModeRoute({
filters,
appConfig,
},
hangingProtocolIdToUse
hangingProtocolIdToUse,
stageIndexToUse
);
};

Expand Down
7 changes: 5 additions & 2 deletions platform/app/src/routes/Mode/defaultRouteInit.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ const { sortingCriteria, getSplitParam } = utils;
*/
export async function defaultRouteInit(
{ servicesManager, studyInstanceUIDs, dataSource, filters, appConfig }: withAppTypes,
hangingProtocolId
hangingProtocolId,
stageIndex
) {
const { displaySetService, hangingProtocolService, uiNotificationService, customizationService } =
servicesManager.services;
Expand All @@ -41,7 +42,9 @@ export async function defaultRouteInit(

// run the hanging protocol matching on the displaySets with the predefined
// hanging protocol in the mode configuration
hangingProtocolService.run({ studies, activeStudy, displaySets }, hangingProtocolId);
hangingProtocolService.run({ studies, activeStudy, displaySets }, hangingProtocolId, {
stageIndex,
});
}

const unsubscriptions = [];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -394,7 +394,7 @@ export default class HangingProtocolService extends PubSubService {
* the studies to display in viewports.
* @param protocol is a specific protocol to apply.
*/
public run({ studies, displaySets, activeStudy }, protocolId) {
public run({ studies, displaySets, activeStudy }, protocolId, options = {}) {
this.studies = [...(studies || this.studies)];
this.displaySets = displaySets;
this.setActiveStudyUID((activeStudy || studies[0])?.StudyInstanceUID);
Expand All @@ -406,7 +406,7 @@ export default class HangingProtocolService extends PubSubService {

if (protocolId && typeof protocolId === 'string') {
const protocol = this.getProtocolById(protocolId);
this._setProtocol(protocol);
this._setProtocol(protocol, options);
return;
}

Expand Down

0 comments on commit fa2435d

Please sign in to comment.