* feat: Update to use pnpm (#6031) [simulated squash-merge] * feat: load DICOM SEG images via imageLoader * feat: load DICOM SEG images via imageLoader * PR review fixes * Test fragment of compressed multiframes * fix: Removed dependencies incorrectly * Update frame as a targetted change to avoid stripping remaining params * lock * Update test to agree with the missing representation branch * test(contour): contour color change coverage (#6042) * test(contour): contour interactions delete segment (#6069) --------- Co-authored-by: Bill Wallace <wayfarer3130@gmail.com> * chore(version): Update package versions to 3.13.0-beta.98 [skip ci] * feat(testing): OHIF Test Agent Skills (#5993) * chore(version): Update package versions to 3.13.0-beta.99 [skip ci] * test(contour): Add the ContourSegmentToggleLock.spec.ts test file to test contour locking (#6072) * chore(version): Update package versions to 3.13.0-beta.100 [skip ci] * chore(testing): Flock lock for playwright tests; Pin node version for OHIF; add more workers (#6099) * update Cypress apt deps for Ubuntu Noble (drop libgconf-2-4, libasound2→libasound2t64) * chore(version): Update package versions to 3.13.0-beta.101 [skip ci] * Debug fixes * perf(seg): pass explicit frame decode concurrency (16) to SEG loader Pass an explicit concurrency value (SEG_FRAME_DECODE_CONCURRENCY = 16) into createFromDicomSegImageId rather than relying on the adapter default, so the SEG frame fetch/decode parallelism is set at the call site and is ready to become configurable. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * docs(behaviours): add behaviours section + multiframe Part 10 prefetch proposal Start a "Behaviours" docs section for documenting how the system and UI behave end-to-end (observed behaviours, design proposals, and failure modes), with an index README and a Docusaurus category. First entry is the proposal for loading a multiframe SEG as a single Part 10 instance: prefetch the whole instance (gated by loadMultiframeAsPart10RaceTimeMs), parse it with dcmjs (handling multipart/related vs raw DICOM), and register the per-frame compressed pixels into the Cornerstone3D core image cache (the single uniform frame registry) so the per-frame load path is served locally while the standard decode path is unchanged. Best-effort: falls back to per-frame fetches on any failure. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Pre-cache the image data using a full part10 file for performance * Add customizations to specify type of segmentation save * Add clearcache of the cacheData * Bump @cornerstonejs/* pins 5.1.3 -> 5.4.10 to match libs/@cornerstonejs base libs/@cornerstonejs (fix/use-imageLoader-for-seg) is based on the released cs3d 5.4.10 (merge-base with origin/main is the 5.4.10 version bump), so pin OHIF to that release. The local branch changes still reach the app via the cs3d:link symlinks; these pins keep the lockfile/npm fallback aligned. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * Fix seg OOM * fix: file meta garbage element, bogus NumberOfFrames, unguarded source-map-loader - dicomWriter: drop the naturalized meta.TransferSyntaxUID assignment that dcmjs wrote as a garbage (0000,0000) element into every saved file's meta group (download / clipboard / local wadouri blob / local store); keep the hex 00020010 assignment, which is required for string-form _meta fallbacks. - registerNaturalizedDatasetForLocalWadouri: keep the computed frame count local so single-frame IODs (SR, RTSTRUCT) no longer gain a bogus NumberOfFrames element in their serialized form. - rsbuild.config: resolve source-map-loader opportunistically (it is not a project dependency; the rule only serves the gitignored cs3d-link workflow) so fresh clones no longer crash at config load. - Regression tests for both writer fixes (mutation-checked). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * PR review comment fixes * Update versions --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Co-authored-by: diattamo <mmddiatta@gmail.com> Co-authored-by: ohif-bot <danny.ri.brown+ohif-bot@gmail.com> Co-authored-by: Joe Boccanfuso <109477394+jbocce@users.noreply.github.com>
114 lines
4.3 KiB
TypeScript
114 lines
4.3 KiB
TypeScript
import { Types } from '@ohif/core';
|
|
|
|
import getDataSourcesModule from './getDataSourcesModule';
|
|
import getLayoutTemplateModule from './getLayoutTemplateModule';
|
|
import getPanelModule from './getPanelModule';
|
|
import getSopClassHandlerModule from './getSopClassHandlerModule';
|
|
import getToolbarModule from './getToolbarModule';
|
|
import getCommandsModule from './commandsModule';
|
|
import getHangingProtocolModule from './getHangingProtocolModule';
|
|
import getStudiesForPatientByMRN from './Panels/getStudiesForPatientByMRN';
|
|
import getCustomizationModule from './getCustomizationModule';
|
|
import getViewportModule from './getViewportModule';
|
|
import { id } from './id';
|
|
import preRegistration from './init';
|
|
import { createReportDialogPrompt } from './Panels';
|
|
|
|
import { ContextMenuController, CustomizableContextMenuTypes } from './CustomizableContextMenu';
|
|
import * as dicomWebUtils from './DicomWebDataSource/utils';
|
|
import createReportAsync from './Actions/createReportAsync';
|
|
import StaticWadoClient from './DicomWebDataSource/utils/StaticWadoClient';
|
|
import { cleanDenaturalizedDataset } from './DicomWebDataSource/utils';
|
|
import { useViewportsByPositionStore } from './stores/useViewportsByPositionStore';
|
|
import { useViewportGridStore } from './stores/useViewportGridStore';
|
|
import { useUIStateStore } from './stores/useUIStateStore';
|
|
import { useDisplaySetSelectorStore } from './stores/useDisplaySetSelectorStore';
|
|
import { useHangingProtocolStageIndexStore } from './stores/useHangingProtocolStageIndexStore';
|
|
import { useToggleHangingProtocolStore } from './stores/useToggleHangingProtocolStore';
|
|
import { useToggleOneUpViewportGridStore } from './stores/useToggleOneUpViewportGridStore';
|
|
import { callInputDialogAutoComplete, callInputDialog } from './utils/callInputDialog';
|
|
import { releaseLocalWadouriRegistrations } from './utils/registerNaturalizedDatasetForLocalWadouri';
|
|
import colorPickerDialog from './utils/colorPickerDialog';
|
|
|
|
import promptSaveReport from './utils/promptSaveReport';
|
|
import promptLabelAnnotation from './utils/promptLabelAnnotation';
|
|
import usePatientInfo from './hooks/usePatientInfo';
|
|
import { PanelStudyBrowserHeader } from './Panels/StudyBrowser/PanelStudyBrowserHeader';
|
|
import * as utils from './utils';
|
|
import { Toolbox } from './utils';
|
|
import MoreDropdownMenu from './Components/MoreDropdownMenu';
|
|
import requestDisplaySetCreationForStudy from './Panels/requestDisplaySetCreationForStudy';
|
|
import { Toolbar } from './Toolbar/Toolbar';
|
|
|
|
const defaultExtension: Types.Extensions.Extension = {
|
|
/**
|
|
* Only required property. Should be a unique value across all extensions.
|
|
*/
|
|
id,
|
|
preRegistration,
|
|
onModeExit() {
|
|
useViewportGridStore.getState().clearViewportGridState();
|
|
useUIStateStore.getState().clearUIState();
|
|
useDisplaySetSelectorStore.getState().clearDisplaySetSelectorMap();
|
|
useHangingProtocolStageIndexStore.getState().clearHangingProtocolStageIndexMap();
|
|
useToggleHangingProtocolStore.getState().clearToggleHangingProtocol();
|
|
useViewportsByPositionStore.getState().clearViewportsByPosition();
|
|
// Free the Part 10 Blobs (and any parsed copies) retained for locally
|
|
// generated instances (SEG etc.) registered with the wadouri loader.
|
|
releaseLocalWadouriRegistrations();
|
|
},
|
|
getDataSourcesModule,
|
|
getViewportModule,
|
|
getLayoutTemplateModule,
|
|
getPanelModule,
|
|
getHangingProtocolModule,
|
|
getSopClassHandlerModule,
|
|
getToolbarModule,
|
|
getCommandsModule,
|
|
getUtilityModule({ servicesManager }) {
|
|
return [
|
|
{
|
|
name: 'common',
|
|
exports: {
|
|
getStudiesForPatientByMRN,
|
|
},
|
|
},
|
|
];
|
|
},
|
|
|
|
getCustomizationModule,
|
|
};
|
|
|
|
export default defaultExtension;
|
|
|
|
export {
|
|
ContextMenuController,
|
|
CustomizableContextMenuTypes,
|
|
getStudiesForPatientByMRN,
|
|
dicomWebUtils,
|
|
createReportAsync,
|
|
StaticWadoClient,
|
|
cleanDenaturalizedDataset,
|
|
// Export all stores
|
|
useDisplaySetSelectorStore,
|
|
useHangingProtocolStageIndexStore,
|
|
useToggleHangingProtocolStore,
|
|
useToggleOneUpViewportGridStore,
|
|
useUIStateStore,
|
|
useViewportGridStore,
|
|
useViewportsByPositionStore,
|
|
callInputDialogAutoComplete,
|
|
promptSaveReport,
|
|
promptLabelAnnotation,
|
|
colorPickerDialog,
|
|
usePatientInfo,
|
|
PanelStudyBrowserHeader,
|
|
utils,
|
|
Toolbox,
|
|
MoreDropdownMenu,
|
|
requestDisplaySetCreationForStudy,
|
|
callInputDialog,
|
|
createReportDialogPrompt,
|
|
Toolbar,
|
|
};
|