209 lines
5.5 KiB
TypeScript
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.
|
|
*/
|