1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- import { createSlice, PayloadAction, Middleware } from '@reduxjs/toolkit';
- import { AprConfig, getAprExposureParams } from '../../API/exam/APRActions';
- interface AprState {
- aprConfig: AprConfig;
- bodysize: string;
- workstation: string;
- isAECEnabled: boolean;
- currentExposureMode: string;
- }
- const initialState: AprState = {
- aprConfig: {
- AECDensity: 0,
- AECField: '',
- AECFilm: 0,
- Dose: 0,
- ExposureMode: 0,
- Focus: 0,
- TOD: 0,
- TubeLoad: 0,
- kV: 0,
- mA: 0,
- mAs: 0,
- ms: 0,
- },
- bodysize: '',
- workstation: '',
- isAECEnabled: false,
- currentExposureMode: '',
- };
- const aprSlice = createSlice({
- name: 'apr',
- initialState,
- reducers: {
- setAprConfig: (state, action: PayloadAction<AprConfig>) => {
- state.aprConfig = action.payload;
- },
- setBodysize: (state, action: PayloadAction<string>) => {
- state.bodysize = action.payload;
- },
- setWorkstation: (state, action: PayloadAction<string>) => {
- state.workstation = action.payload;
- },
- setIsAECEnabled: (state, action: PayloadAction<boolean>) => {
- state.isAECEnabled = action.payload;
- },
- setCurrentExposureMode: (state, action: PayloadAction<string>) => {
- state.currentExposureMode = action.payload;
- },
- },
- });
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- const aprMiddleware: Middleware = (store) => (next) => (action: any) => {
- if (
- action.type === aprSlice.actions.setBodysize.type ||
- action.type === aprSlice.actions.setWorkstation.type
- ) {
- const state = store.getState();
- const id =
- state.bodyPositionList.selectedBodyPosition?.view_id || 'default_id'; // Dynamically determined based on selectedBodyPosition
- const workStationId = parseInt(state.apr.workstation, 10);
- const patientSize = state.apr.bodysize;
- if (state.apr.bodysize && state.apr.workstation) {
- getAprExposureParams(id, workStationId, patientSize).then((data) => {
- store.dispatch(setAprConfig(data));
- });
- }
- }
- return next(action);
- };
- export const {
- setAprConfig,
- setBodysize,
- setWorkstation,
- setIsAECEnabled,
- setCurrentExposureMode,
- } = aprSlice.actions;
- export default aprSlice.reducer;
- export { aprMiddleware };
|