Ver código fonte

优化ris保存

dengdx 2 meses atrás
pai
commit
fb01655a2b

+ 6 - 4
src/domain/patient/risSaveLogic.ts

@@ -4,6 +4,8 @@ import store from '@/states/store';
 import { setPage, setPageSize } from '@/states/patient/worklist/slices/searchSlice';
 import { fetchWorkThunk } from '@/states/patient/worklist/slices/workSlice';
 import { WorkFilter } from '@/states/patient/worklist/types/workfilter';
+import mapToTask from './mapToTask';
+import { Task } from '../work';
 
 /**
  * RIS数据保存成功弹框
@@ -53,9 +55,9 @@ const triggerSearch = () => {
 /**
  * 保存单个RIS数据到本地
  * @param entryId RIS条目ID
- * @param onSuccess 可选的成功回调函数,接收保存的study信息
+ * @param onSuccess 可选的成功回调函数,接收保存的task信息
  */
-export const saveRisData = async (entryId: string, onSuccess?: (study: any) => void) => {
+export const saveRisData = async (entryId: string, onSuccess?: (task: Task) => void) => {
   try {
     console.log('RIS双击保存本地参数:', entryId);
 
@@ -69,9 +71,9 @@ export const saveRisData = async (entryId: string, onSuccess?: (study: any) => v
 
     // 显示成功弹框(暂逝后自动刷新)
     showSaveSuccessModal(1, () => {
-      // 执行成功回调,传递study信息
+      // 执行成功回调,传递task信息
       if (onSuccess) {
-        onSuccess(response.data);
+        onSuccess(mapToTask(response.data));
       }
     });
 

+ 3 - 3
src/pages/exam/components/AppendViewModal.tsx

@@ -85,7 +85,7 @@ const AppendViewModal: React.FC<AppendViewModalProps> = ({
       message.error('未找到当前检查信息');
       return;
     }
-
+console.log(`[AppendViewModal] Appending views to Study ID: ${finalStudyId} 传递来的studyId:${studyId}`, selectedViews);
     try {
       await dispatch(
         appendViewsThunk({
@@ -96,8 +96,8 @@ const AppendViewModal: React.FC<AppendViewModalProps> = ({
       ).unwrap();
 
       message.success(`成功追加 ${selectedViews.length} 个体位`);
-      dispatch(setModalOpen(false));
-      onCancel();
+      //dispatch(setModalOpen(false));
+      //onCancel();
 
       // 调用成功回调
       if (onSuccess) {

+ 8 - 62
src/pages/patient/worklist.tsx

@@ -33,7 +33,7 @@ const WorklistPage: React.FC = () => {
   const [columnConfig, setColumnConfig] = useState<ColumnConfig[]>([]); // 新增:列配置状态
   const [selectedPatientForPortrait, setSelectedPatientForPortrait] = useState<Task | null>(null); // 照片显示用的选中患者
   const [isAppendModalOpen, setIsAppendModalOpen] = useState(false); // 追加体位模态框状态
-  const [currentStudy, setCurrentStudy] = useState<any>(null); // 当前保存的study信息
+  const [currentStudy, setCurrentStudy] = useState<Task | null>(null); // 当前保存的study信息
 
   // 启用RIS自动同步(在后台静默运行)
   useRisAutoSync();
@@ -134,9 +134,9 @@ const WorklistPage: React.FC = () => {
     // 判断是否为RIS数据
     if (record.entry_id) {
       // RIS数据:触发保存到本地,保存成功后打开追加体位对话框
-      saveRisData(record.entry_id, (study) => {
-        console.log('[WorklistPage] RIS数据保存成功,Study ID:', study.study_id, '打开追加体位对话框');
-        setCurrentStudy(study);
+      saveRisData(record.entry_id, (task) => {
+        console.log('[WorklistPage] RIS数据保存成功,Study ID:', task.StudyID, '打开追加体位对话框');
+        setCurrentStudy(task);
         setIsAppendModalOpen(true);
       });
     } else {
@@ -243,68 +243,14 @@ const WorklistPage: React.FC = () => {
           setIsAppendModalOpen(false);
           setCurrentStudy(null); // 关闭时清空study信息
         }}
-        studyId={currentStudy?.study_id}
+        studyId={currentStudy?.StudyID}
         currentWork={currentStudy}
         onSuccess={() => {
+          setIsAppendModalOpen(false);
           // 追加成功后进入检查
           if (currentStudy) {
-            // 创建Task对象用于进入检查
-            const taskForExam: Task = {
-              StudyInstanceUID: currentStudy.study_instance_uid,
-              StudyID: currentStudy.study_id,
-              SpecificCharacterSet: currentStudy.specific_character_set,
-              AccessionNumber: currentStudy.accession_number,
-              PatientID: currentStudy.patient_id,
-              PatientName: currentStudy.patient_name,
-              DisplayPatientName: currentStudy.patient_name,
-              PatientSize: currentStudy.patient_size,
-              PatientAge: currentStudy.patient_age,
-              PatientSex: currentStudy.patient_sex,
-              AdmittingTime: currentStudy.admitting_time || '',
-              RegSource: currentStudy.reg_source,
-              StudyStatus: currentStudy.study_status,
-              RequestedProcedureID: '',
-              PerformedProtocolCodeValue: '',
-              PerformedProtocolCodeMeaning: '',
-              PerformedProcedureStepID: '',
-              StudyDescription: currentStudy.study_description,
-              StudyStartDatetime: currentStudy.study_start_datetime || '',
-              ScheduledProcedureStepStartDate: currentStudy.scheduled_procedure_step_start_date || '',
-              StudyLock: currentStudy.study_lock,
-              OperatorID: currentStudy.operator_name,
-              Modality: currentStudy.modality,
-              Views: [], // 会在worklistToExam中填充
-              Thickness: currentStudy.thickness,
-              PatientType: currentStudy.patient_type,
-              StudyType: currentStudy.study_type,
-              QRCode: '',
-              IsExported: currentStudy.is_exported,
-              IsEdited: currentStudy.is_edited,
-              WorkRef: '',
-              IsAppended: currentStudy.is_appended,
-              CreationTime: currentStudy.create_time,
-              MappedStatus: currentStudy.mapped_status,
-              IsDelete: false,
-              patient_dob: currentStudy.patient_dob,
-              ref_physician: currentStudy.ref_physician,
-              weight: currentStudy.weight,
-              length: currentStudy.length,
-              comment: currentStudy.comment,
-              // 宠物相关字段
-              owner_name: currentStudy.owner_name,
-              chip_number: currentStudy.chip_number,
-              variety: currentStudy.variety,
-              sex_neutered: currentStudy.sex_neutered,
-              is_anaesthesia: currentStudy.is_anaesthesia,
-              is_sedation: currentStudy.is_sedation,
-              pregnancy_status: currentStudy.pregnancy_status,
-              // 患者照片字段
-              portrait_status: currentStudy.portrait_status,
-              portrait_file: currentStudy.portrait_file,
-            };
-
-            console.log('[WorklistPage] 追加成功,进入检查:', taskForExam.StudyID);
-            worklistToExam(taskForExam);
+            console.log('[WorklistPage] 追加成功,进入检查:', currentStudy.StudyID);
+            worklistToExam(currentStudy);
           }
         }}
       />