NeoScan_Radiologist/app/modules/Dashboard/navigation/navigationUtils.ts
2025-08-05 18:01:36 +05:30

209 lines
5.5 KiB
TypeScript

/*
* File: navigationUtils.ts
* Description: Navigation utilities for Dashboard module
* Design & Developed by Tech4Biz Solutions
* Copyright (c) Spurrin Innovations. All rights reserved.
*/
import { DashboardNavigationProp } from './navigationTypes';
import { Patient, Alert as AlertType } from '../../../shared/types';
/**
* DashboardNavigationUtils - Utility functions for Dashboard module navigation
*
* This module provides helper functions for common navigation patterns
* within the Dashboard module, ensuring consistent navigation behavior.
*/
/**
* Navigate to ER Dashboard screen
* @param navigation - Navigation prop from React Navigation
* @param params - Optional parameters for the dashboard
*/
export const navigateToERDashboard = (
navigation: DashboardNavigationProp,
params?: {
filter?: 'all' | 'critical' | 'active' | 'pending';
refresh?: boolean;
}
): void => {
navigation.navigate('ERDashboard', params);
};
/**
* Navigate to Patient Details screen
* @param navigation - Navigation prop from React Navigation
* @param patientId - Required patient ID
* @param patient - Optional patient data
* @param fromScreen - Optional source screen
*/
export const navigateToPatientDetails = (
navigation: DashboardNavigationProp,
patientId: string,
patient?: Patient,
fromScreen?: keyof import('./navigationTypes').DashboardStackParamList
): void => {
navigation.navigate('PatientDetails', {
patientId,
patient,
fromScreen,
});
};
/**
* Navigate to Alert Details screen
* @param navigation - Navigation prop from React Navigation
* @param alertId - Required alert ID
* @param alert - Optional alert data
* @param fromScreen - Optional source screen
*/
export const navigateToAlertDetails = (
navigation: DashboardNavigationProp,
alertId: string,
alert?: AlertType,
fromScreen?: keyof import('./navigationTypes').DashboardStackParamList
): void => {
navigation.navigate('AlertDetails', {
alertId,
alert,
fromScreen,
});
};
/**
* Navigate to Department Stats screen
* @param navigation - Navigation prop from React Navigation
* @param department - Required department name
* @param dateRange - Optional date range for statistics
*/
export const navigateToDepartmentStats = (
navigation: DashboardNavigationProp,
department: string,
dateRange?: {
start: Date;
end: Date;
}
): void => {
navigation.navigate('DepartmentStats', {
department,
dateRange,
});
};
/**
* Navigate to Quick Actions screen
* @param navigation - Navigation prop from React Navigation
* @param actionType - Optional action type to pre-select
* @param patientId - Optional patient ID for patient-specific actions
*/
export const navigateToQuickActions = (
navigation: DashboardNavigationProp,
actionType?: 'emergency' | 'scan' | 'report' | 'consultation',
patientId?: string
): void => {
navigation.navigate('QuickActions', {
actionType,
patientId,
});
};
/**
* Go back to previous screen
* @param navigation - Navigation prop from React Navigation
*/
export const goBack = (navigation: DashboardNavigationProp): void => {
if (navigation.canGoBack()) {
navigation.goBack();
}
};
/**
* Reset navigation stack to ER Dashboard screen
* @param navigation - Navigation prop from React Navigation
* @param params - Optional parameters for the dashboard
*/
export const resetToERDashboard = (
navigation: DashboardNavigationProp,
params?: {
filter?: 'all' | 'critical' | 'active' | 'pending';
refresh?: boolean;
}
): void => {
navigation.reset({
index: 0,
routes: [{ name: 'ERDashboard', params }],
});
};
/**
* Replace current screen with ER Dashboard screen
* @param navigation - Navigation prop from React Navigation
* @param params - Optional parameters for the dashboard
*/
export const replaceWithERDashboard = (
navigation: DashboardNavigationProp,
params?: {
filter?: 'all' | 'critical' | 'active' | 'pending';
refresh?: boolean;
}
): void => {
navigation.replace('ERDashboard', params);
};
/**
* Navigate to ER Dashboard and clear back stack
* @param navigation - Navigation prop from React Navigation
* @param params - Optional parameters for the dashboard
*/
export const navigateToERDashboardAndClearStack = (
navigation: DashboardNavigationProp,
params?: {
filter?: 'all' | 'critical' | 'active' | 'pending';
refresh?: boolean;
}
): void => {
navigation.reset({
index: 0,
routes: [{ name: 'ERDashboard', params }],
});
};
/**
* Navigate to Patient Details and clear back stack
* @param navigation - Navigation prop from React Navigation
* @param patientId - Required patient ID
* @param patient - Optional patient data
*/
export const navigateToPatientDetailsAndClearStack = (
navigation: DashboardNavigationProp,
patientId: string,
patient?: Patient
): void => {
navigation.reset({
index: 0,
routes: [{ name: 'PatientDetails', params: { patientId, patient } }],
});
};
/**
* Navigate to Alert Details and clear back stack
* @param navigation - Navigation prop from React Navigation
* @param alertId - Required alert ID
* @param alert - Optional alert data
*/
export const navigateToAlertDetailsAndClearStack = (
navigation: DashboardNavigationProp,
alertId: string,
alert?: AlertType
): void => {
navigation.reset({
index: 0,
routes: [{ name: 'AlertDetails', params: { alertId, alert } }],
});
};
/*
* End of File: navigationUtils.ts
* Design & Developed by Tech4Biz Solutions
* Copyright (c) Spurrin Innovations. All rights reserved.
*/