Browse Source

解决问题:整改数据结构后,体位列表不显示

dengdx 2 weeks ago
parent
commit
32db4aaae3

+ 5 - 0
src/API/patient/viewActions.ts

@@ -82,3 +82,8 @@ export const fetchViews = async (
 
 
   return response.data;
   return response.data;
 };
 };
+
+export const fetchViewDetail = async (id: string): Promise<View> => {
+  const response = await axiosInstance.get(`/auth/protocol/view/${id}`);
+  return response.data.data;
+};

+ 35 - 23
src/pages/exam/components/BodyPositionList.tsx

@@ -13,6 +13,7 @@ import { PlusOutlined } from '@ant-design/icons';
 import ImageViewer from './ImageViewer';
 import ImageViewer from './ImageViewer';
 import { getViewIconUrl } from '../../../API/bodyPosition';
 import { getViewIconUrl } from '../../../API/bodyPosition';
 import { changeBodyPosition } from '@/API/exam/changeBodyPosition';
 import { changeBodyPosition } from '@/API/exam/changeBodyPosition';
+import { fetchViewDetail } from '@/API/patient/viewActions';
 
 
 interface BodyPositionListProps {
 interface BodyPositionListProps {
   layout: 'horizontal' | 'vertical';
   layout: 'horizontal' | 'vertical';
@@ -64,29 +65,40 @@ const BodyPositionList: React.FC<BodyPositionListProps> = ({ layout }) => {
   };
   };
 
 
   useEffect(() => {
   useEffect(() => {
-    alert(
-      `${works.length} works found == ${works[0].Views.length} views in the first work`
-    );
-    const bodyPositions: ExtendedBodyPosition[] = works.flatMap((work) =>
-      work.Views.map((view) => ({
-        ...view,
-        // ...work,
-        collimator_length: view.config_object.DX.CollimatorSizeLength || 0,
-        collimator_width: view.config_object.DX.CollimatorSizeWidth || 0,
-        sid: '', //todo 这里还缺少值的来源
-        patient_name: work.PatientName,
-        patient_id: work.PatientID,
-        registration_number: work.AccessionNumber,
-        study_description: work.StudyDescription,
-        body_position_image: view.view_icon_name,
-        work: work,
-      }))
-    );
-    dispatch(setBodyPositions(bodyPositions));
-    //选中第一个
-    if (bodyPositions.length > 0) {
-      dispatch(setSelectedBodyPosition(bodyPositions[0]));
-    }
+    const fetchBodyPositions = async () => {
+      alert(
+        `${works.length} works found == ${works[0].Views.length} views in the first work`
+      );
+      const bodyPositions: ExtendedBodyPosition[] = await Promise.all(
+        works.flatMap((work) =>
+          work.Views.map(async (view) => {
+            const viewDetail = await fetchViewDetail(view.view_id);
+            return {
+              ...viewDetail,
+              sop_instance_id: view.sop_instance_uid,
+              collimator_length:
+                viewDetail.config_object.DX.CollimatorSizeLength || 0,
+              collimator_width:
+                viewDetail.config_object.DX.CollimatorSizeWidth || 0,
+              sid: '', //todo 这里还缺少值的来源
+              patient_name: work.PatientName,
+              patient_id: work.PatientID,
+              registration_number: work.AccessionNumber,
+              study_description: work.StudyDescription,
+              body_position_image: viewDetail.view_icon_name,
+              work: work,
+            };
+          })
+        )
+      );
+      dispatch(setBodyPositions(bodyPositions));
+      //选中第一个
+      if (bodyPositions.length > 0) {
+        dispatch(setSelectedBodyPosition(bodyPositions[0]));
+      }
+    };
+
+    fetchBodyPositions();
   }, [works, dispatch]);
   }, [works, dispatch]);
 
 
   return (
   return (

+ 5 - 0
src/states/exam/bodyPositionListSlice.ts

@@ -12,6 +12,11 @@ export interface ExtendedBodyPosition extends BodyPosition {
   collimator_width: number | string;
   collimator_width: number | string;
   sid: string;
   sid: string;
   work: Work;
   work: Work;
+  sop_instance_id?: string;
+  series_instance_uid?: string;
+  study_instance_uid?: string;
+  secondary_sop_uid?: string;
+  study_id?: string;
 }
 }
 
 
 interface BodyPositionListState {
 interface BodyPositionListState {