| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- [1mdiff --git a/src/states/exam/examWorksCacheSlice.ts b/src/states/exam/examWorksCacheSlice.ts[m
- [1mindex faff66a..58ce8de 100644[m
- [1m--- a/src/states/exam/examWorksCacheSlice.ts[m
- [1m+++ b/src/states/exam/examWorksCacheSlice.ts[m
- [36m@@ -1,8 +1,11 @@[m
- import { createSlice, PayloadAction, createAsyncThunk } from '@reduxjs/toolkit';[m
- import { Task as Work } from '@/domain/work';[m
- import { copyImage } from '@/API/patient/workActions';[m
- [32m+[m[32mimport { appendBodyPositionToStudy, AppendViewRequest } from '@/API/exam/appendBodyPosition';[m
- import { dview } from '@/domain/dview';[m
- [31m-import { addViewsToBodyPosition } from './bodyPositionListSlice';[m
- [32m+[m[32mimport { addViewsToBodyPosition, addBodyPosition } from './bodyPositionListSlice';[m
- [32m+[m[32mimport { ExtendedBodyPosition } from './bodyPositionListSlice';[m
- [32m+[m[32mimport { fetchViewDetail } from '@/API/patient/viewActions';[m
- import { message } from 'antd';[m
- [m
- interface ExamWorksCacheState {[m
- [36m@@ -52,23 +55,91 @@[m [mexport const { addWork, removeWork, clearWorks, setLoading, addDviews } =[m
- examWorksCacheSlice.actions;[m
- export const copyPositionThunk = createAsyncThunk([m
- 'examWorksCache/copyPosition',[m
- [31m- async ({ instanceUid }: { instanceUid: string }, { dispatch }) => {[m
- [32m+[m[32m async ({ instanceUid }: { instanceUid: string }, { dispatch, getState }) => {[m
- dispatch(setLoading(true));[m
- try {[m
- [31m- const dviews: dview[] = await copyImage(instanceUid);[m
- [31m- // const dviews: dview[] = response.data.series.flatMap((series: any) =>[m
- [31m- // series.images.map((image: any) => ({[m
- [31m- // view_id: image.view_id,[m
- [31m- // series_instance_uid: image.series_instance_uid,[m
- [31m- // study_instance_uid: image.study_instance_uid,[m
- [31m- // study_id: image.study_id,[m
- [31m- // procedure_id: series.procedure_id,[m
- [31m- // view_description: image.view_description,[m
- [31m- // view_type: image.view_id // Assuming view_type is the same as view_id[m
- [31m- // }))[m
- [31m- // );[m
- [31m- dispatch(addDviews({ instanceUid, dviews }));[m
- [31m- dispatch(addViewsToBodyPosition({ instanceUid, dviews }));[m
- [32m+[m[32m // 获取当前选中的体位信息[m
- [32m+[m[32m const state = getState() as any;[m
- [32m+[m[32m const selectedBodyPosition = state.bodyPositionList.selectedBodyPosition;[m
- [32m+[m
- [32m+[m[32m if (!selectedBodyPosition) {[m
- [32m+[m[32m throw new Error('未找到选中的体位信息');[m
- [32m+[m[32m }[m
- [32m+[m
- [32m+[m[32m // 构建追加体位的请求[m
- [32m+[m[32m const request: AppendViewRequest = {[m
- [32m+[m[32m study_id: selectedBodyPosition.work.StudyID,[m
- [32m+[m[32m views: [{[m
- [32m+[m[32m view_id: selectedBodyPosition.view_id,[m
- [32m+[m[32m procedure_id: selectedBodyPosition.procedure_id || '',[m
- [32m+[m[32m }],[m
- [32m+[m[32m };[m
- [32m+[m
- [32m+[m[32m console.log('[copyPositionThunk] Copying position with request:', request);[m
- [32m+[m
- [32m+[m[32m // 调用追加体位接口[m
- [32m+[m[32m const response = await appendBodyPositionToStudy(request);[m
- [32m+[m
- [32m+[m[32m // 处理响应,将新创建的体位添加到状态管理中[m
- [32m+[m[32m const newBodyPositions: ExtendedBodyPosition[] = [];[m
- [32m+[m
- [32m+[m[32m for (const series of response.data.series) {[m
- [32m+[m[32m for (const image of series.images) {[m
- [32m+[m[32m // 获取完整的 view 详情[m
- [32m+[m[32m const viewDetail = await fetchViewDetail(image.view_id);[m
- [32m+[m
- [32m+[m[32m const dviewData: dview = {[m
- [32m+[m[32m view_id: image.view_id,[m
- [32m+[m[32m series_instance_uid: image.series_instance_uid,[m
- [32m+[m[32m study_instance_uid: image.study_instance_uid,[m
- [32m+[m[32m study_id: image.study_id,[m
- [32m+[m[32m procedure_id: series.procedure_id,[m
- [32m+[m[32m view_description: image.view_description,[m
- [32m+[m[32m view_type: image.view_id,[m
- [32m+[m[32m PrimarySopUID: image.sop_instance_uid,[m
- [32m+[m[32m thumbnail_file: image.image_file_path,[m
- [32m+[m[32m image_file: image.image_file_path,[m
- [32m+[m[32m image_file_path: image.image_file_path,[m
- [32m+[m[32m expose_status: 'Unexposed',[m
- [32m+[m[32m judged_status: image.judged_status,[m
- [32m+[m[32m };[m
- [32m+[m
- [32m+[m[32m const extendedBodyPosition: ExtendedBodyPosition = {[m
- [32m+[m[32m ...viewDetail,[m
- [32m+[m[32m collimator_length:[m
- [32m+[m[32m viewDetail.config_object.DX?.CollimatorSizeLength ||[m
- [32m+[m[32m viewDetail.config_object?.Common?.CollimatorSizeLength ||[m
- [32m+[m[32m 0,[m
- [32m+[m[32m collimator_width:[m
- [32m+[m[32m viewDetail.config_object.DX?.CollimatorSizeWidth ||[m
- [32m+[m[32m viewDetail.config_object?.Common?.CollimatorSizeWidth ||[m
- [32m+[m[32m 0,[m
- [32m+[m[32m sid: '',[m
- [32m+[m[32m patient_name: selectedBodyPosition.patient_name,[m
- [32m+[m[32m patient_id: selectedBodyPosition.patient_id,[m
- [32m+[m[32m registration_number: selectedBodyPosition.registration_number,[m
- [32m+[m[32m study_description: selectedBodyPosition.study_description,[m
- [32m+[m[32m body_position_image: viewDetail.view_icon_name,[m
- [32m+[m[32m work: selectedBodyPosition.work,[m
- [32m+[m[32m study_instance_uid: selectedBodyPosition.study_instance_uid,[m
- [32m+[m[32m sop_instance_uid: image.sop_instance_uid,[m
- [32m+[m[32m series_instance_uid: image.series_instance_uid,[m
- [32m+[m[32m secondary_sop_uid: image.secondary_sop_uid,[m
- [32m+[m[32m study_id: image.study_id,[m
- [32m+[m[32m dview: dviewData,[m
- [32m+[m[32m };[m
- [32m+[m
- [32m+[m[32m newBodyPositions.push(extendedBodyPosition);[m
- [32m+[m[32m }[m
- [32m+[m[32m }[m
- [32m+[m
- [32m+[m[32m // 将新体位添加到 bodyPositionList[m
- [32m+[m[32m for (const bodyPosition of newBodyPositions) {[m
- [32m+[m[32m dispatch(addBodyPosition(bodyPosition));[m
- [32m+[m[32m }[m
- [32m+[m
- [32m+[m[32m message.success(`复制体位成功`);[m
- [32m+[m
- } catch (error) {[m
- console.error('Error in copyPositionThunk:', error);[m
- message.error(`复制体位失败 ${error.message}`, 3);[m
|