Initial commit from prod-batam
This commit is contained in:
350
extensions/tmtv/src/getHangingProtocolModule.ts
Normal file
350
extensions/tmtv/src/getHangingProtocolModule.ts
Normal file
@@ -0,0 +1,350 @@
|
||||
import {
|
||||
ctAXIAL,
|
||||
ctCORONAL,
|
||||
ctSAGITTAL,
|
||||
fusionAXIAL,
|
||||
fusionCORONAL,
|
||||
fusionSAGITTAL,
|
||||
mipSAGITTAL,
|
||||
ptAXIAL,
|
||||
ptCORONAL,
|
||||
ptSAGITTAL,
|
||||
} from './utils/hpViewports';
|
||||
|
||||
/**
|
||||
* represents a 3x4 viewport layout configuration. The layout displays CT axial, sagittal, and coronal
|
||||
* images in the first row, PT axial, sagittal, and coronal images in the second row, and fusion axial,
|
||||
* sagittal, and coronal images in the third row. The fourth column is fully spanned by a MIP sagittal
|
||||
* image, covering all three rows. It has synchronizers for windowLevel for all CT and PT images, and
|
||||
* also camera synchronizer for each orientation
|
||||
*/
|
||||
const stage1: AppTypes.HangingProtocol.ProtocolStage = {
|
||||
name: 'default',
|
||||
id: 'default',
|
||||
viewportStructure: {
|
||||
layoutType: 'grid',
|
||||
properties: {
|
||||
rows: 3,
|
||||
columns: 4,
|
||||
layoutOptions: [
|
||||
{
|
||||
x: 0,
|
||||
y: 0,
|
||||
width: 1 / 4,
|
||||
height: 1 / 3,
|
||||
},
|
||||
{
|
||||
x: 1 / 4,
|
||||
y: 0,
|
||||
width: 1 / 4,
|
||||
height: 1 / 3,
|
||||
},
|
||||
{
|
||||
x: 2 / 4,
|
||||
y: 0,
|
||||
width: 1 / 4,
|
||||
height: 1 / 3,
|
||||
},
|
||||
{
|
||||
x: 0,
|
||||
y: 1 / 3,
|
||||
width: 1 / 4,
|
||||
height: 1 / 3,
|
||||
},
|
||||
{
|
||||
x: 1 / 4,
|
||||
y: 1 / 3,
|
||||
width: 1 / 4,
|
||||
height: 1 / 3,
|
||||
},
|
||||
{
|
||||
x: 2 / 4,
|
||||
y: 1 / 3,
|
||||
width: 1 / 4,
|
||||
height: 1 / 3,
|
||||
},
|
||||
{
|
||||
x: 0,
|
||||
y: 2 / 3,
|
||||
width: 1 / 4,
|
||||
height: 1 / 3,
|
||||
},
|
||||
{
|
||||
x: 1 / 4,
|
||||
y: 2 / 3,
|
||||
width: 1 / 4,
|
||||
height: 1 / 3,
|
||||
},
|
||||
{
|
||||
x: 2 / 4,
|
||||
y: 2 / 3,
|
||||
width: 1 / 4,
|
||||
height: 1 / 3,
|
||||
},
|
||||
{
|
||||
x: 3 / 4,
|
||||
y: 0,
|
||||
width: 1 / 4,
|
||||
height: 1,
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
viewports: [
|
||||
ctAXIAL,
|
||||
ctSAGITTAL,
|
||||
ctCORONAL,
|
||||
ptAXIAL,
|
||||
ptSAGITTAL,
|
||||
ptCORONAL,
|
||||
fusionAXIAL,
|
||||
fusionSAGITTAL,
|
||||
fusionCORONAL,
|
||||
mipSAGITTAL,
|
||||
],
|
||||
createdDate: '2021-02-23T18:32:42.850Z',
|
||||
};
|
||||
|
||||
/**
|
||||
* The layout displays CT axial image in the top-left viewport, fusion axial image
|
||||
* in the top-right viewport, PT axial image in the bottom-left viewport, and MIP
|
||||
* sagittal image in the bottom-right viewport. The layout follows a simple grid
|
||||
* pattern with 2 rows and 2 columns. It includes synchronizers as well.
|
||||
*/
|
||||
const stage2 = {
|
||||
name: 'Fusion 2x2',
|
||||
id: 'Fusion-2x2',
|
||||
viewportStructure: {
|
||||
layoutType: 'grid',
|
||||
properties: {
|
||||
rows: 2,
|
||||
columns: 2,
|
||||
},
|
||||
},
|
||||
viewports: [ctAXIAL, fusionAXIAL, ptAXIAL, mipSAGITTAL],
|
||||
};
|
||||
|
||||
/**
|
||||
* The top row displays CT images in axial, sagittal, and coronal orientations from
|
||||
* left to right, respectively. The bottom row displays PT images in axial, sagittal,
|
||||
* and coronal orientations from left to right, respectively.
|
||||
* The layout follows a simple grid pattern with 2 rows and 3 columns.
|
||||
* It includes synchronizers as well.
|
||||
*/
|
||||
const stage3: AppTypes.HangingProtocol.ProtocolStage = {
|
||||
name: '2x3-layout',
|
||||
id: '2x3-layout',
|
||||
viewportStructure: {
|
||||
layoutType: 'grid',
|
||||
properties: {
|
||||
rows: 2,
|
||||
columns: 3,
|
||||
},
|
||||
},
|
||||
viewports: [ctAXIAL, ctSAGITTAL, ctCORONAL, ptAXIAL, ptSAGITTAL, ptCORONAL],
|
||||
};
|
||||
|
||||
/**
|
||||
* In this layout, the top row displays PT images in coronal, sagittal, and axial
|
||||
* orientations from left to right, respectively, followed by a MIP sagittal image
|
||||
* that spans both rows on the rightmost side. The bottom row displays fusion images
|
||||
* in coronal, sagittal, and axial orientations from left to right, respectively.
|
||||
* There is no viewport in the bottom row's rightmost position, as the MIP sagittal viewport
|
||||
* from the top row spans the full height of both rows.
|
||||
* It includes synchronizers as well.
|
||||
*/
|
||||
const stage4: AppTypes.HangingProtocol.ProtocolStage = {
|
||||
name: '2x4-layout',
|
||||
id: '2x4-layout',
|
||||
viewportStructure: {
|
||||
layoutType: 'grid',
|
||||
properties: {
|
||||
rows: 2,
|
||||
columns: 4,
|
||||
layoutOptions: [
|
||||
{
|
||||
x: 0,
|
||||
y: 0,
|
||||
width: 1 / 4,
|
||||
height: 1 / 2,
|
||||
},
|
||||
{
|
||||
x: 1 / 4,
|
||||
y: 0,
|
||||
width: 1 / 4,
|
||||
height: 1 / 2,
|
||||
},
|
||||
{
|
||||
x: 2 / 4,
|
||||
y: 0,
|
||||
width: 1 / 4,
|
||||
height: 1 / 2,
|
||||
},
|
||||
{
|
||||
x: 3 / 4,
|
||||
y: 0,
|
||||
width: 1 / 4,
|
||||
height: 1,
|
||||
},
|
||||
{
|
||||
x: 0,
|
||||
y: 1 / 2,
|
||||
width: 1 / 4,
|
||||
height: 1 / 2,
|
||||
},
|
||||
{
|
||||
x: 1 / 4,
|
||||
y: 1 / 2,
|
||||
width: 1 / 4,
|
||||
height: 1 / 2,
|
||||
},
|
||||
{
|
||||
x: 2 / 4,
|
||||
y: 1 / 2,
|
||||
width: 1 / 4,
|
||||
height: 1 / 2,
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
viewports: [
|
||||
ptCORONAL,
|
||||
ptSAGITTAL,
|
||||
ptAXIAL,
|
||||
mipSAGITTAL,
|
||||
fusionCORONAL,
|
||||
fusionSAGITTAL,
|
||||
fusionAXIAL,
|
||||
],
|
||||
};
|
||||
|
||||
/**
|
||||
* This layout displays three fusion viewports: axial, sagittal, and coronal.
|
||||
* It follows a simple grid pattern with 1 row and 3 columns.
|
||||
*/
|
||||
// const stage0: AppTypes.HangingProtocol.ProtocolStage = {
|
||||
// name: 'Fusion 1x3',
|
||||
// viewportStructure: {
|
||||
// layoutType: 'grid',
|
||||
// properties: {
|
||||
// rows: 1,
|
||||
// columns: 3,
|
||||
// },
|
||||
// },
|
||||
// viewports: [fusionAXIAL, fusionSAGITTAL, fusionCORONAL],
|
||||
// };
|
||||
|
||||
const ptCT: AppTypes.HangingProtocol.Protocol = {
|
||||
id: '@ohif/extension-tmtv.hangingProtocolModule.ptCT',
|
||||
locked: true,
|
||||
name: 'Default',
|
||||
createdDate: '2021-02-23T19:22:08.894Z',
|
||||
modifiedDate: '2022-10-04T19:22:08.894Z',
|
||||
availableTo: {},
|
||||
editableBy: {},
|
||||
imageLoadStrategy: 'interleaveTopToBottom', // "default" , "interleaveTopToBottom", "interleaveCenter"
|
||||
protocolMatchingRules: [
|
||||
{
|
||||
attribute: 'ModalitiesInStudy',
|
||||
constraint: {
|
||||
contains: ['CT', 'PT'],
|
||||
},
|
||||
},
|
||||
{
|
||||
attribute: 'StudyDescription',
|
||||
constraint: {
|
||||
contains: 'PETCT',
|
||||
},
|
||||
},
|
||||
{
|
||||
attribute: 'StudyDescription',
|
||||
constraint: {
|
||||
contains: 'PET/CT',
|
||||
},
|
||||
},
|
||||
],
|
||||
displaySetSelectors: {
|
||||
ctDisplaySet: {
|
||||
seriesMatchingRules: [
|
||||
{
|
||||
attribute: 'Modality',
|
||||
constraint: {
|
||||
equals: {
|
||||
value: 'CT',
|
||||
},
|
||||
},
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
attribute: 'isReconstructable',
|
||||
constraint: {
|
||||
equals: {
|
||||
value: true,
|
||||
},
|
||||
},
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
attribute: 'SeriesDescription',
|
||||
constraint: {
|
||||
contains: 'CT',
|
||||
},
|
||||
},
|
||||
{
|
||||
attribute: 'SeriesDescription',
|
||||
constraint: {
|
||||
contains: 'CT WB',
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
ptDisplaySet: {
|
||||
seriesMatchingRules: [
|
||||
{
|
||||
attribute: 'Modality',
|
||||
constraint: {
|
||||
equals: 'PT',
|
||||
},
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
attribute: 'isReconstructable',
|
||||
constraint: {
|
||||
equals: {
|
||||
value: true,
|
||||
},
|
||||
},
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
attribute: 'SeriesDescription',
|
||||
constraint: {
|
||||
contains: 'Corrected',
|
||||
},
|
||||
},
|
||||
{
|
||||
weight: 2,
|
||||
attribute: 'SeriesDescription',
|
||||
constraint: {
|
||||
doesNotContain: {
|
||||
value: 'Uncorrected',
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
stages: [stage1, stage2, stage3, stage4],
|
||||
numberOfPriorsReferenced: -1,
|
||||
};
|
||||
|
||||
function getHangingProtocolModule() {
|
||||
return [
|
||||
{
|
||||
name: ptCT.id,
|
||||
protocol: ptCT,
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
export default getHangingProtocolModule;
|
||||
Reference in New Issue
Block a user