123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- import { createSlice, PayloadAction } from '@reduxjs/toolkit';
- import { View as BodyPosition } from '../../API/patient/viewActions';
- import { Work } from './examWorksCacheSlice';
- import { dview } from '@/domain/dview';
- export interface ExtendedBodyPosition extends BodyPosition {
- patient_name: string;
- patient_id: string;
- registration_number: string;
- study_description: string;
- body_position_image: string;
- collimator_length: number | string;
- collimator_width: number | string;
- sid: string;
- work: Work;
- sop_instance_uid: string;
- series_instance_uid?: string;
- study_instance_uid?: string;
- secondary_sop_uid?: string;
- study_id?: string;
- dview: dview;
- }
- interface BodyPositionListState {
- bodyPositions: ExtendedBodyPosition[];
- selectedBodyPosition: ExtendedBodyPosition | null;
- }
- const initialState: BodyPositionListState = {
- bodyPositions: [],
- selectedBodyPosition: null,
- };
- const bodyPositionListSlice = createSlice({
- name: 'bodyPositionList',
- initialState,
- reducers: {
- addBodyPosition: (state, action: PayloadAction<ExtendedBodyPosition>) => {
- state.bodyPositions.push(action.payload);
- },
- setBodyPositions: (
- state,
- action: PayloadAction<ExtendedBodyPosition[]>
- ) => {
- state.bodyPositions = action.payload;
- },
- setSelectedBodyPosition: (
- state,
- action: PayloadAction<ExtendedBodyPosition | null>
- ) => {
- state.selectedBodyPosition = action.payload;
- },
- setByIndex: (state, action: PayloadAction<number>) => {
- if (action.payload >= 0 && action.payload < state.bodyPositions.length) {
- state.selectedBodyPosition = state.bodyPositions[action.payload];
- }
- },
- addViewsToBodyPosition: (
- state,
- action: PayloadAction<{ instanceUid: string; dviews: dview[] }>
- ) => {
- const [dview] = action.payload.dviews;
- if (dview && state.selectedBodyPosition) {
- const newBodyPosition: ExtendedBodyPosition = {
- ...state.selectedBodyPosition,
- work: {
- ...state.selectedBodyPosition.work,
- Views: [...state.selectedBodyPosition.work.Views, dview],
- },
- sop_instance_uid: action.payload.instanceUid,
- };
- state.bodyPositions.push(newBodyPosition);
- }
- },
- removeBodyPositionBySopInstanceUid: (
- state,
- action: PayloadAction<string>
- ) => {
- state.bodyPositions = state.bodyPositions.filter(
- (bodyPosition) => bodyPosition.sop_instance_uid !== action.payload
- );
- },
- },
- });
- export const {
- addBodyPosition,
- setBodyPositions,
- setSelectedBodyPosition,
- setByIndex,
- addViewsToBodyPosition,
- removeBodyPositionBySopInstanceUid,
- } = bodyPositionListSlice.actions;
- export default bodyPositionListSlice.reducer;
|