feat(typings): Enhance typing support with withAppTypes and custom services throughout OHIF (#4090)

This commit is contained in:
Ibrahim authored and GitHub committed 2024-05-08 12:12:49 -04:00
1 parent b2cd0172d6
commit 374065bc3b
153 files changed
+842 -657

No files matched your search

@@ -24,7 +24,7 @@ const SR_SOPCLASSHANDLERID = '@ohif/extension-cornerstone-dicom-sr.sopClassHandl
* @param {*} param0
*/
function TrackedMeasurementsContextProvider(
{ servicesManager, commandsManager, extensionManager }, // Bound by consumer
{ servicesManager, commandsManager, extensionManager }: withAppTypes, // Bound by consumer
{ children } // Component props
) {
const [appConfig] = useAppConfig();
@@ -1,6 +1,10 @@
import { hydrateStructuredReport as baseHydrateStructuredReport } from '@ohif/extension-cornerstone-dicom-sr';
function hydrateStructuredReport({ servicesManager, extensionManager, appConfig }, ctx, evt) {
function hydrateStructuredReport(
{ servicesManager, extensionManager, appConfig }: withAppTypes,
ctx,
evt
) {
const { displaySetService } = servicesManager.services;
const { viewportId, displaySetInstanceUID } = evt;
const srDisplaySet = displaySetService.getDisplaySetByUID(displaySetInstanceUID);
@@ -9,21 +9,18 @@ const RESPONSE = {
NO_NOT_FOR_SERIES: 4,
};
function promptTrackNewStudy({ servicesManager, extensionManager }, ctx, evt) {
const { UIViewportDialogService } = servicesManager.services;
const appConfig = extensionManager._appConfig;
function promptTrackNewStudy({ servicesManager, extensionManager }: withAppTypes, ctx, evt) {
const { uiViewportDialogService } = servicesManager.services;
// When the state change happens after a promise, the state machine sends the retult in evt.data;
// In case of direct transition to the state, the state machine sends the data in evt;
const { viewportId, StudyInstanceUID, SeriesInstanceUID } = evt.data || evt;
return new Promise(async function (resolve, reject) {
let promptResult = appConfig?.disableConfirmationPrompts
? RESPONSE.SET_STUDY_AND_SERIES
: await _askTrackMeasurements(UIViewportDialogService, viewportId);
let promptResult = await _askTrackMeasurements(uiViewportDialogService, viewportId);
if (promptResult === RESPONSE.SET_STUDY_AND_SERIES) {
promptResult = ctx.isDirty
? await _askSaveDiscardOrCancel(UIViewportDialogService, viewportId)
? await _askSaveDiscardOrCancel(uiViewportDialogService, viewportId)
: RESPONSE.SET_STUDY_AND_SERIES;
}
@@ -37,7 +34,10 @@ function promptTrackNewStudy({ servicesManager, extensionManager }, ctx, evt) {
});
}
function _askTrackMeasurements(UIViewportDialogService, viewportId) {
function _askTrackMeasurements(
UIViewportDialogService: AppTypes.UIViewportDialogService,
viewportId
) {
return new Promise(function (resolve, reject) {
const message = i18n.t('MeasurementTable:Track measurements for this series?');
const actions = [
@@ -78,7 +78,10 @@ function _askTrackMeasurements(UIViewportDialogService, viewportId) {
});
}
function _askSaveDiscardOrCancel(UIViewportDialogService, viewportId) {
function _askSaveDiscardOrCancel(
UIViewportDialogService: AppTypes.UIViewportDialogService,
viewportId
) {
return new Promise(function (resolve, reject) {
const message =
'Measurements cannot span across multiple studies. Do you want to save your tracked measurements?';
@@ -18,7 +18,7 @@ const DISPLAY_STUDY_SUMMARY_INITIAL_VALUE = {
description: '', // 'CHEST/ABD/PELVIS W CONTRAST',
};
function PanelMeasurementTableTracking({ servicesManager, extensionManager }) {
function PanelMeasurementTableTracking({ servicesManager, extensionManager }: withAppTypes) {
const [viewportGrid] = useViewportGrid();
const { t } = useTranslation('MeasurementTable');
const [measurementChangeTimestamp, setMeasurementsUpdated] = useState(Date.now().toString());
@@ -18,7 +18,7 @@ function PanelStudyBrowserTracking({
getStudiesForPatientByMRN,
requestDisplaySetCreationForStudy,
dataSource,
}) {
}: withAppTypes) {
const {
displaySetService,
uiDialogService,
@@ -21,7 +21,11 @@ function _getStudyForPatientUtility(extensionManager) {
* @param {object} commandsManager
* @param {object} extensionManager
*/
function WrappedPanelStudyBrowserTracking({ commandsManager, extensionManager, servicesManager }) {
function WrappedPanelStudyBrowserTracking({
commandsManager,
extensionManager,
servicesManager,
}: withAppTypes) {
const dataSource = extensionManager.getActiveDataSource()[0];
const getStudiesForPatientByMRN = _getStudyForPatientUtility(extensionManager);
@@ -8,7 +8,7 @@ import { useTrackedMeasurements } from './../getContextModule';
import { BaseVolumeViewport, Enums } from '@cornerstonejs/core';
import { useTranslation } from 'react-i18next';
function TrackedCornerstoneViewport(props) {
function TrackedCornerstoneViewport(props: withAppTypes) {
const { displaySets, viewportId, servicesManager, extensionManager } = props;
const {
@@ -251,7 +251,7 @@ TrackedCornerstoneViewport.defaultProps = {
function _getNextMeasurementUID(
direction,
servicesManager,
servicesManager: AppTypes.ServicesManager,
trackedMeasurementId,
trackedMeasurements
) {