Browse Source

实现功能:从检查列表删除选中体位

dengdx 2 weeks ago
parent
commit
2cb48b96ad

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

@@ -87,3 +87,9 @@ export const fetchViewDetail = async (id: string): Promise<View> => {
   const response = await axiosInstance.get(`/auth/protocol/view/${id}`);
   return response.data.data;
 };
+
+export const deleteBodyPosition = async (
+  sop_instance_uid: string
+): Promise<void> => {
+  await axiosInstance.delete(`/auth/image/${sop_instance_uid}`);
+};

+ 17 - 0
src/pages/exam/ContentAreaLarge.tsx

@@ -20,6 +20,8 @@ import { patientSizes } from '../../states/patientSize';
 import { WorkstationTypeLabels } from '../../states/workstation';
 import { FormattedMessage } from 'react-intl';
 import { useSelector, useDispatch } from 'react-redux';
+import { deleteBodyPosition } from '../../API/patient/viewActions';
+import { setByIndex } from '../../states/exam/bodyPositionListSlice';
 import { RootState } from '../../states/store';
 import {
   setAprConfig,
@@ -192,6 +194,21 @@ const ContentAreaLarge = () => {
                   type="primary"
                   style={{ width: '100%' }}
                   icon={<DeleteOutlined />}
+                  onClick={async () => {
+                    const selectedBodyPosition = useSelector(
+                      (state: RootState) =>
+                        state.bodyPositionList.selectedBodyPosition
+                    );
+                    if (
+                      selectedBodyPosition &&
+                      selectedBodyPosition.sop_instance_uid
+                    ) {
+                      await deleteBodyPosition(
+                        selectedBodyPosition.sop_instance_uid
+                      );
+                      dispatch(setByIndex(0));
+                    }
+                  }}
                 />
               </Tooltip>
             </Col>

+ 1 - 1
src/pages/exam/components/BodyPositionList.tsx

@@ -75,7 +75,7 @@ const BodyPositionList: React.FC<BodyPositionListProps> = ({ layout }) => {
             const viewDetail = await fetchViewDetail(view.view_id);
             return {
               ...viewDetail,
-              sop_instance_id: view.sop_instance_uid,
+              sop_instance_uid: view.sop_instance_uid,
               collimator_length:
                 viewDetail.config_object.DX.CollimatorSizeLength || 0,
               collimator_width:

+ 12 - 3
src/states/exam/bodyPositionListSlice.ts

@@ -12,7 +12,7 @@ export interface ExtendedBodyPosition extends BodyPosition {
   collimator_width: number | string;
   sid: string;
   work: Work;
-  sop_instance_id?: string;
+  sop_instance_uid?: string;
   series_instance_uid?: string;
   study_instance_uid?: string;
   secondary_sop_uid?: string;
@@ -48,9 +48,18 @@ const bodyPositionListSlice = createSlice({
     ) => {
       state.selectedBodyPosition = action.payload;
     },
+    setByIndex: (state, action: PayloadAction<number>) => {
+      if (action.payload >= 0 && action.payload < state.bodyPositions.length) {
+        state.selectedBodyPosition = state.bodyPositions[action.payload];
+      }
+    },
   },
 });
 
-export const { addBodyPosition, setBodyPositions, setSelectedBodyPosition } =
-  bodyPositionListSlice.actions;
+export const {
+  addBodyPosition,
+  setBodyPositions,
+  setSelectedBodyPosition,
+  setByIndex,
+} = bodyPositionListSlice.actions;
 export default bodyPositionListSlice.reducer;