From a29e94de803f79bbb3372d00ad8eb14b4224edc2 Mon Sep 17 00:00:00 2001 From: Ibrahim <93064150+IbrahimCSAE@users.noreply.github.com> Date: Wed, 5 Jun 2024 12:26:17 -0400 Subject: [PATCH] fix(seg): maintain algorithm name and algorithm type when DICOM seg is exported or downloaded (#4203) --- extensions/cornerstone-dicom-seg/package.json | 4 ++-- .../cornerstone-dicom-seg/src/commandsModule.ts | 4 ++-- extensions/cornerstone-dicom-sr/package.json | 6 +++--- .../cornerstone-dynamic-volume/package.json | 6 +++--- extensions/cornerstone/package.json | 10 +++++----- .../SegmentationServiceTypes.ts | 4 ++++ extensions/measurement-tracking/package.json | 4 ++-- modes/segmentation/src/index.tsx | 2 +- platform/app/package.json | 2 +- platform/core/package.json | 2 +- .../src/components/DateRange/DateRange.tsx | 2 +- .../InputMultiSelect/InputMultiSelect.tsx | 2 +- platform/ui/src/components/Select/Select.css | 15 +++++++++++++++ 13 files changed, 41 insertions(+), 22 deletions(-) diff --git a/extensions/cornerstone-dicom-seg/package.json b/extensions/cornerstone-dicom-seg/package.json index bb8b10402..2c36f5034 100644 --- a/extensions/cornerstone-dicom-seg/package.json +++ b/extensions/cornerstone-dicom-seg/package.json @@ -46,8 +46,8 @@ }, "dependencies": { "@babel/runtime": "^7.20.13", - "@cornerstonejs/adapters": "^1.77.3", - "@cornerstonejs/core": "^1.77.3", + "@cornerstonejs/adapters": "^1.77.6", + "@cornerstonejs/core": "^1.77.6", "@kitware/vtk.js": "30.4.1", "react-color": "^2.19.3" } diff --git a/extensions/cornerstone-dicom-seg/src/commandsModule.ts b/extensions/cornerstone-dicom-seg/src/commandsModule.ts index ff451a0a4..5aeac96d2 100644 --- a/extensions/cornerstone-dicom-seg/src/commandsModule.ts +++ b/extensions/cornerstone-dicom-seg/src/commandsModule.ts @@ -278,8 +278,8 @@ const commandsModule = ({ const segmentMetadata = { SegmentNumber: segmentIndex.toString(), SegmentLabel: label, - SegmentAlgorithmType: 'MANUAL', - SegmentAlgorithmName: 'OHIF Brush', + SegmentAlgorithmType: segment?.algorithmType || 'MANUAL', + SegmentAlgorithmName: segment?.algorithmName || 'OHIF Brush', RecommendedDisplayCIELabValue, SegmentedPropertyCategoryCodeSequence: { CodeValue: 'T-D0050', diff --git a/extensions/cornerstone-dicom-sr/package.json b/extensions/cornerstone-dicom-sr/package.json index 2bd016b0e..b4d23d0df 100644 --- a/extensions/cornerstone-dicom-sr/package.json +++ b/extensions/cornerstone-dicom-sr/package.json @@ -46,9 +46,9 @@ }, "dependencies": { "@babel/runtime": "^7.20.13", - "@cornerstonejs/adapters": "^1.77.3", - "@cornerstonejs/core": "^1.77.3", - "@cornerstonejs/tools": "^1.77.3", + "@cornerstonejs/adapters": "^1.77.6", + "@cornerstonejs/core": "^1.77.6", + "@cornerstonejs/tools": "^1.77.6", "classnames": "^2.3.2" } } diff --git a/extensions/cornerstone-dynamic-volume/package.json b/extensions/cornerstone-dynamic-volume/package.json index 095c1eff1..f15b95482 100644 --- a/extensions/cornerstone-dynamic-volume/package.json +++ b/extensions/cornerstone-dynamic-volume/package.json @@ -42,9 +42,9 @@ }, "dependencies": { "@babel/runtime": "^7.20.13", - "@cornerstonejs/core": "^1.77.3", - "@cornerstonejs/streaming-image-volume-loader": "^1.77.3", - "@cornerstonejs/tools": "^1.77.3", + "@cornerstonejs/core": "^1.77.6", + "@cornerstonejs/streaming-image-volume-loader": "^1.77.6", + "@cornerstonejs/tools": "^1.77.6", "classnames": "^2.3.2" } } diff --git a/extensions/cornerstone/package.json b/extensions/cornerstone/package.json index 155a78ea4..e416ef7db 100644 --- a/extensions/cornerstone/package.json +++ b/extensions/cornerstone/package.json @@ -38,7 +38,7 @@ "@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2", "@cornerstonejs/codec-openjpeg": "^1.2.2", "@cornerstonejs/codec-openjph": "^2.4.2", - "@cornerstonejs/dicom-image-loader": "^1.77.3", + "@cornerstonejs/dicom-image-loader": "^1.77.6", "@icr/polyseg-wasm": "^0.4.0", "@ohif/core": "3.9.0-beta.34", "@ohif/ui": "3.9.0-beta.34", @@ -55,10 +55,10 @@ }, "dependencies": { "@babel/runtime": "^7.20.13", - "@cornerstonejs/adapters": "^1.77.3", - "@cornerstonejs/core": "^1.77.3", - "@cornerstonejs/streaming-image-volume-loader": "^1.77.3", - "@cornerstonejs/tools": "^1.77.3", + "@cornerstonejs/adapters": "^1.77.6", + "@cornerstonejs/core": "^1.77.6", + "@cornerstonejs/streaming-image-volume-loader": "^1.77.6", + "@cornerstonejs/tools": "^1.77.6", "@icr/polyseg-wasm": "^0.4.0", "@kitware/vtk.js": "30.4.1", "html2canvas": "^1.4.1", diff --git a/extensions/cornerstone/src/services/SegmentationService/SegmentationServiceTypes.ts b/extensions/cornerstone/src/services/SegmentationService/SegmentationServiceTypes.ts index cb65154d2..68c6540cb 100644 --- a/extensions/cornerstone/src/services/SegmentationService/SegmentationServiceTypes.ts +++ b/extensions/cornerstone/src/services/SegmentationService/SegmentationServiceTypes.ts @@ -22,6 +22,10 @@ type Segment = { isLocked: boolean; // display texts displayText?: string[]; + // The name of algorithm used to generate the segment. (0062,0009) + algorithmName?: string; + // Type of algorithm used to generate the segment. (0062,0008) + algorithmType?: string; }; type Segmentation = { diff --git a/extensions/measurement-tracking/package.json b/extensions/measurement-tracking/package.json index ba6534b8f..70d825c5c 100644 --- a/extensions/measurement-tracking/package.json +++ b/extensions/measurement-tracking/package.json @@ -32,8 +32,8 @@ "start": "yarn run dev" }, "peerDependencies": { - "@cornerstonejs/core": "^1.77.3", - "@cornerstonejs/tools": "^1.77.3", + "@cornerstonejs/core": "^1.77.6", + "@cornerstonejs/tools": "^1.77.6", "@ohif/core": "3.9.0-beta.34", "@ohif/extension-cornerstone-dicom-sr": "3.9.0-beta.34", "@ohif/ui": "3.9.0-beta.34", diff --git a/modes/segmentation/src/index.tsx b/modes/segmentation/src/index.tsx index 11c5b18fd..771d1bc12 100644 --- a/modes/segmentation/src/index.tsx +++ b/modes/segmentation/src/index.tsx @@ -157,7 +157,7 @@ function modeFactory({ modeConfiguration }) { /** List of extensions that are used by the mode */ extensions: extensionDependencies, /** HangingProtocol used by the mode */ - // hangingProtocol: [''], + hangingProtocol: ['@ohif/mnGrid'], /** SopClassHandlers used by the mode */ sopClassHandlers: [ohif.sopClassHandler, segmentation.sopClassHandler], /** hotkeys for mode */ diff --git a/platform/app/package.json b/platform/app/package.json index 3b342244d..f5cc1389c 100644 --- a/platform/app/package.json +++ b/platform/app/package.json @@ -53,7 +53,7 @@ "@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2", "@cornerstonejs/codec-openjpeg": "^1.2.2", "@cornerstonejs/codec-openjph": "^2.4.5", - "@cornerstonejs/dicom-image-loader": "^1.77.3", + "@cornerstonejs/dicom-image-loader": "^1.77.6", "@emotion/serialize": "^1.1.3", "@ohif/core": "3.9.0-beta.34", "@ohif/extension-cornerstone": "3.9.0-beta.34", diff --git a/platform/core/package.json b/platform/core/package.json index 0c1be08c9..2f4399f96 100644 --- a/platform/core/package.json +++ b/platform/core/package.json @@ -37,7 +37,7 @@ "@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2", "@cornerstonejs/codec-openjpeg": "^1.2.2", "@cornerstonejs/codec-openjph": "^2.4.2", - "@cornerstonejs/dicom-image-loader": "^1.77.3", + "@cornerstonejs/dicom-image-loader": "^1.77.6", "@ohif/ui": "3.9.0-beta.34", "cornerstone-math": "0.1.9", "dicom-parser": "^1.8.21" diff --git a/platform/ui-next/src/components/DateRange/DateRange.tsx b/platform/ui-next/src/components/DateRange/DateRange.tsx index 7af8e7aa0..5c2fdecf1 100644 --- a/platform/ui-next/src/components/DateRange/DateRange.tsx +++ b/platform/ui-next/src/components/DateRange/DateRange.tsx @@ -90,7 +90,7 @@ export function DatePickerWithRange({ value={start} onChange={e => handleInputChange(e, 'start')} className={cn( - 'border-inputfield-main focus:border-inputfield-focus h-full w-full justify-start rounded border bg-black py-[6.5px] pl-[6.5px] pr-[6.5px] text-left text-sm font-normal hover:bg-black hover:text-white', + 'border-inputfield-main focus:border-inputfield-focus h-[32px] w-full justify-start rounded border bg-black py-[6.5px] pl-[6.5px] pr-[6.5px] text-left text-sm font-normal hover:bg-black hover:text-white', !start && 'text-muted-foreground' )} data-cy="input-date-range-start" diff --git a/platform/ui/src/components/InputMultiSelect/InputMultiSelect.tsx b/platform/ui/src/components/InputMultiSelect/InputMultiSelect.tsx index 7a5ee8d42..9197833d0 100644 --- a/platform/ui/src/components/InputMultiSelect/InputMultiSelect.tsx +++ b/platform/ui/src/components/InputMultiSelect/InputMultiSelect.tsx @@ -30,7 +30,7 @@ const InputMultiSelect = ({ value={value} isMulti={true} isClearable={false} - isSearchable={false} + isSearchable={true} closeMenuOnSelect={false} hideSelectedOptions={false} onChange={(selectedOptions, action) => { diff --git a/platform/ui/src/components/Select/Select.css b/platform/ui/src/components/Select/Select.css index e3dd2f4da..03b1bd345 100644 --- a/platform/ui/src/components/Select/Select.css +++ b/platform/ui/src/components/Select/Select.css @@ -6,6 +6,21 @@ @apply border-gray-500; } +.customSelect__control { + height: 32px; +} + +.customSelect__value-container { + padding-top: 0px !important; + padding-bottom: 0px !important; +} + +.customSelect__input { + @apply text-white !important; + font-size: 0.75rem !important; + line-height: 1.25 !important; +} + .customSelect__wrapper .customSelect__control:focus, .customSelect__wrapper .customSelect__control--menu-is-open { @apply border-gray-500 outline-none;