Explorar el Código

漏洞修复-SCRM处方详情接口 - 返回完整未脱敏医疗隐私数据

wjj hace 11 horas
padre
commit
52c249dd0c

+ 16 - 1
fs-admin/src/main/java/com/fs/his/controller/FsPrescribeDataScrmController.java

@@ -9,6 +9,7 @@ import com.fs.his.domain.FsPrescribeDataScrm;
 import com.fs.his.dto.DoctorNotPrescribeQueryDto;
 import com.fs.his.dto.DoctorNotPrescribeQueryDto;
 import com.fs.his.dto.NotRecommendUseQueryDto;
 import com.fs.his.dto.NotRecommendUseQueryDto;
 import com.fs.his.service.IFsPrescribeDataScrmService;
 import com.fs.his.service.IFsPrescribeDataScrmService;
+import com.fs.his.utils.PhoneUtil;
 import com.fs.his.vo.*;
 import com.fs.his.vo.*;
 import com.fs.hisStore.domain.FsStoreOrderScrm;
 import com.fs.hisStore.domain.FsStoreOrderScrm;
 import com.fs.hisStore.service.IFsStoreOrderScrmService;
 import com.fs.hisStore.service.IFsStoreOrderScrmService;
@@ -50,7 +51,9 @@ public class FsPrescribeDataScrmController extends BaseController
     @GetMapping(value = "/{prescribeId}")
     @GetMapping(value = "/{prescribeId}")
     public AjaxResult getInfo(@PathVariable("prescribeId") Long prescribeId)
     public AjaxResult getInfo(@PathVariable("prescribeId") Long prescribeId)
     {
     {
-        return AjaxResult.success(fsPrescribeScrmService.selectFsPrescribeDataScrmByPrescribeId(prescribeId));
+        FsPrescribeDataScrm prescribeDataScrm = fsPrescribeScrmService.selectFsPrescribeDataScrmByPrescribeId(prescribeId);
+        maskPrescribePrivacy(prescribeDataScrm);
+        return AjaxResult.success(prescribeDataScrm);
     }
     }
 
 
     /**
     /**
@@ -62,11 +65,23 @@ public class FsPrescribeDataScrmController extends BaseController
         FsStoreOrderScrm fsStoreOrderScrm = storeOrderScrmService.selectFsStoreOrderByOrderCode(orderCode);
         FsStoreOrderScrm fsStoreOrderScrm = storeOrderScrmService.selectFsStoreOrderByOrderCode(orderCode);
         if (fsStoreOrderScrm != null){
         if (fsStoreOrderScrm != null){
             FsPrescribeDataScrm fsPrescribeDataScrm=fsPrescribeScrmService.selectFsPrescribeDataScrmByPrescribeId(fsStoreOrderScrm.getPrescribeId());
             FsPrescribeDataScrm fsPrescribeDataScrm=fsPrescribeScrmService.selectFsPrescribeDataScrmByPrescribeId(fsStoreOrderScrm.getPrescribeId());
+            maskPrescribePrivacy(fsPrescribeDataScrm);
             return AjaxResult.success(fsPrescribeDataScrm);
             return AjaxResult.success(fsPrescribeDataScrm);
         }
         }
         return AjaxResult.error("未找到订单信息");
         return AjaxResult.error("未找到订单信息");
     }
     }
 
 
+    /**
+     * 脱敏处方中的患者姓名、电话
+     */
+    private void maskPrescribePrivacy(FsPrescribeDataScrm prescribe) {
+        if (prescribe == null) {
+            return;
+        }
+        prescribe.setPatientName(PhoneUtil.maskName(prescribe.getPatientName()));
+        prescribe.setPatientTel(PhoneUtil.maskPhoneMiddleFive(prescribe.getPatientTel()));
+    }
+
 
 
     /**
     /**
      * 获取客户信息+问答信息(根据客户信息表id)
      * 获取客户信息+问答信息(根据客户信息表id)

+ 16 - 1
fs-company/src/main/java/com/fs/company/controller/his/FsPrescribeDataScrmController.java

@@ -5,6 +5,7 @@ import com.fs.common.core.controller.BaseController;
 import com.fs.common.core.domain.AjaxResult;
 import com.fs.common.core.domain.AjaxResult;
 import com.fs.his.domain.FsPrescribeDataScrm;
 import com.fs.his.domain.FsPrescribeDataScrm;
 import com.fs.his.service.IFsPrescribeDataScrmService;
 import com.fs.his.service.IFsPrescribeDataScrmService;
+import com.fs.his.utils.PhoneUtil;
 import com.fs.his.vo.CustomerInfoVO;
 import com.fs.his.vo.CustomerInfoVO;
 import com.fs.his.vo.DoctorSignVO;
 import com.fs.his.vo.DoctorSignVO;
 import com.fs.his.vo.PrescribeScrmDoctorAdviceVO;
 import com.fs.his.vo.PrescribeScrmDoctorAdviceVO;
@@ -41,7 +42,9 @@ public class FsPrescribeDataScrmController extends BaseController
     @GetMapping(value = "/{prescribeId}")
     @GetMapping(value = "/{prescribeId}")
     public AjaxResult getInfo(@PathVariable("prescribeId") Long prescribeId)
     public AjaxResult getInfo(@PathVariable("prescribeId") Long prescribeId)
     {
     {
-        return AjaxResult.success(fsPrescribeScrmService.selectFsPrescribeDataScrmByPrescribeId(prescribeId));
+        FsPrescribeDataScrm prescribeDataScrm = fsPrescribeScrmService.selectFsPrescribeDataScrmByPrescribeId(prescribeId);
+        maskPrescribePrivacy(prescribeDataScrm);
+        return AjaxResult.success(prescribeDataScrm);
     }
     }
 
 
     /**
     /**
@@ -53,11 +56,23 @@ public class FsPrescribeDataScrmController extends BaseController
         FsStoreOrderScrm fsStoreOrderScrm = storeOrderScrmService.selectFsStoreOrderByOrderCode(orderCode);
         FsStoreOrderScrm fsStoreOrderScrm = storeOrderScrmService.selectFsStoreOrderByOrderCode(orderCode);
         if (fsStoreOrderScrm != null){
         if (fsStoreOrderScrm != null){
             FsPrescribeDataScrm fsPrescribeDataScrm=fsPrescribeScrmService.selectFsPrescribeDataScrmByPrescribeId(fsStoreOrderScrm.getPrescribeId());
             FsPrescribeDataScrm fsPrescribeDataScrm=fsPrescribeScrmService.selectFsPrescribeDataScrmByPrescribeId(fsStoreOrderScrm.getPrescribeId());
+            maskPrescribePrivacy(fsPrescribeDataScrm);
             return AjaxResult.success(fsPrescribeDataScrm);
             return AjaxResult.success(fsPrescribeDataScrm);
         }
         }
         return AjaxResult.error("未找到订单信息");
         return AjaxResult.error("未找到订单信息");
     }
     }
 
 
+    /**
+     * 脱敏处方中的患者姓名、电话
+     */
+    private void maskPrescribePrivacy(FsPrescribeDataScrm prescribe) {
+        if (prescribe == null) {
+            return;
+        }
+        prescribe.setPatientName(PhoneUtil.maskName(prescribe.getPatientName()));
+        prescribe.setPatientTel(PhoneUtil.maskPhoneMiddleFive(prescribe.getPatientTel()));
+    }
+
 
 
     /**
     /**
      * 获取客户信息+问答信息(根据客户信息表id)
      * 获取客户信息+问答信息(根据客户信息表id)

+ 17 - 0
fs-service/src/main/java/com/fs/his/utils/PhoneUtil.java

@@ -200,4 +200,21 @@ public class PhoneUtil {
         }
         }
         return phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
         return phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
     }
     }
+
+    /**
+     * 姓名脱敏处理,保留首字符,其余用*替换 (例如: 张三 -> 张*,张三丰 -> 张**)
+     * @param name 原始姓名
+     * @return 脱敏后的姓名
+     */
+    public static String maskName(String name) {
+        if (name == null || name.length() <= 1) {
+            return name;
+        }
+        StringBuilder sb = new StringBuilder();
+        sb.append(name.charAt(0));
+        for (int i = 1; i < name.length(); i++) {
+            sb.append('*');
+        }
+        return sb.toString();
+    }
 }
 }