NeoScan_Physician/app/modules/Dashboard/redux/dashboardSlice.ts
2025-07-22 17:36:29 +05:30

90 lines
2.2 KiB
TypeScript

/*
* File: dashboardSlice.ts
* Description: Redux slice for Dashboard state management
* Design & Developed by Tech4Biz Solutions
* Copyright (c) Spurrin Innovations. All rights reserved.
*/
import { createSlice, PayloadAction } from '@reduxjs/toolkit';
// Sample case type
export interface Case {
id: string;
patientName: string;
status: 'critical' | 'urgent' | 'routine';
aiConfidence: number;
description: string;
}
// Dashboard state type
interface DashboardState {
caseQueue: Case[];
loading: boolean;
error: string | null;
patientData:[]
}
const initialState: DashboardState = {
caseQueue: [],
loading: false,
error: null,
patientData:[]
};
/**
* Dashboard slice for managing case queue and dashboard state
*/
const dashboardSlice = createSlice({
name: 'dashboard',
initialState,
reducers: {
fetchCasesStart(state) {
state.loading = true;
state.error = null;
},
fetchCasesSuccess(state, action: PayloadAction<Case[]>) {
state.caseQueue = action.payload;
state.loading = false;
},
fetchCasesFailure(state, action: PayloadAction<string>) {
state.loading = false;
state.error = action.payload;
},
clearCases(state) {
state.caseQueue = [];
},
fetchPatientsSuccess(state, action: PayloadAction<[]>) {
const caseTypes: ('Critical' | 'Emergency' | 'Routine')[] = ['Critical', 'Emergency', 'Routine'];
// Function to get random case type
const getRandomCaseType = (): 'Critical' | 'Emergency' | 'Routine' => {
return caseTypes[Math.floor(Math.random() * caseTypes.length)];
};
// Add type attribute to each patient
const patientsWithType :any = action.payload.map((patient: any) => ({
...patient,
type: getRandomCaseType()
}));
state.loading = false;
state.patientData = patientsWithType;
}
},
});
export const {
fetchCasesStart,
fetchCasesSuccess,
fetchCasesFailure,
clearCases,
fetchPatientsSuccess
} = dashboardSlice.actions;
export default dashboardSlice.reducer;
/*
* End of File: dashboardSlice.ts
* Design & Developed by Tech4Biz Solutions
* Copyright (c) Spurrin Innovations. All rights reserved.
*/