bodyPositionDetailSlice.ts 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import { createSlice, PayloadAction } from '@reduxjs/toolkit';
  2. import { RootState } from '../store';
  3. import { setSelectedBodyPosition } from './bodyPositionListSlice';
  4. interface BodyPositionDetailState {
  5. view_name: string;
  6. view_description: string;
  7. view_icon_name: string;
  8. patient_name: string;
  9. patient_id: string;
  10. registration_number: string;
  11. study_description: string;
  12. body_position_image: string;
  13. collimator_length: string | number;
  14. collimator_width: string | number;
  15. sid: string;
  16. // 🆕 添加以下字段
  17. expose_status: string; // 'Exposed' | 'Unexposed'
  18. sop_instance_uid: string; // 用于获取缩略图 URL
  19. // Add other relevant fields as needed
  20. }
  21. const initialState: BodyPositionDetailState = {
  22. view_name: '',
  23. view_description: '',
  24. view_icon_name: '',
  25. patient_name: '',
  26. patient_id: '',
  27. registration_number: '',
  28. study_description: '',
  29. body_position_image: '',
  30. collimator_length: '',
  31. collimator_width: '',
  32. sid: '',
  33. // 🆕 添加初始值
  34. expose_status: 'Unexposed',
  35. sop_instance_uid: '',
  36. // Initialize other fields as needed
  37. };
  38. const bodyPositionDetailSlice = createSlice({
  39. name: 'bodyPositionDetail',
  40. initialState,
  41. reducers: {
  42. setBodyPositionDetail: (
  43. state,
  44. action: PayloadAction<BodyPositionDetailState>
  45. ) => {
  46. return {
  47. ...state,
  48. ...action.payload,
  49. };
  50. },
  51. },
  52. extraReducers: (builder) => {
  53. builder.addCase(setSelectedBodyPosition, (state, action) => {
  54. const selectedBodyPosition = action.payload;
  55. if (selectedBodyPosition) {
  56. return {
  57. ...state,
  58. view_name: selectedBodyPosition.view_name,
  59. view_description: selectedBodyPosition.view_description,
  60. view_icon_name: selectedBodyPosition.view_icon_name,
  61. patient_name: selectedBodyPosition.patient_name,
  62. patient_id: selectedBodyPosition.patient_id,
  63. registration_number: selectedBodyPosition.registration_number,
  64. study_description: selectedBodyPosition.study_description,
  65. body_position_image: selectedBodyPosition.body_position_image,
  66. collimator_length: selectedBodyPosition.collimator_length,
  67. collimator_width: selectedBodyPosition.collimator_width,
  68. sid: selectedBodyPosition.sid,
  69. // 🆕 添加字段映射
  70. expose_status: selectedBodyPosition.dview.expose_status,
  71. sop_instance_uid: selectedBodyPosition.sop_instance_uid,
  72. };
  73. }
  74. return state;
  75. });
  76. },
  77. });
  78. export const { setBodyPositionDetail } = bodyPositionDetailSlice.actions;
  79. export default bodyPositionDetailSlice.reducer;