Przeglądaj źródła

增加日志机制

liuqq 3 lat temu
rodzic
commit
7968f2cb63

+ 50 - 36
src/main/java/com/diagbot/facade/DataPageDockFacade.java

@@ -12,10 +12,12 @@ import com.diagbot.entity.TranHospitalRelation;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.enums.StatusEnum;
 import com.diagbot.util.BeanUtil;
+import com.diagbot.util.CdssLogUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.vo.*;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
@@ -46,12 +48,17 @@ public class DataPageDockFacade {
     @Value("${data-page.url}")
     private String dataPageUrl;
 
+    @Autowired
+    private KlConceptStaticFacade KlConceptStaticFacade;
+
     /**
      * @Description:静态知识开单合理性
      * @Author:liuqq
      * @time: ${DATE} ${TIME}
      **/
     public RespDTO<String> getStaticKnowledge(HisStaticKnowledgeVO hisStaticKnowledgeVO){
+        String url="";
+        //基层子医院业务逻辑
         if(StringUtil.isNotEmpty(hisStaticKnowledgeVO.getHospitalCode()) && StringUtil.isNotEmpty(hisStaticKnowledgeVO.getHospitalName())){
             //查找基层医院
             Long hospitalId=getHospitalRelation(hisStaticKnowledgeVO.getHospitalCode(),hisStaticKnowledgeVO.getHospitalName());
@@ -63,27 +70,32 @@ public class DataPageDockFacade {
         }else if(hisStaticKnowledgeVO.getHospitalId()==null){
              return RespDTO.onError("请输入医院id");
         }
-
-        String url=dataPageUrl+"/informationOut.html?hospitalId="+hisStaticKnowledgeVO.getHospitalId()
-                +"&type="+hisStaticKnowledgeVO.getType()
-                +"&hisName="+hisStaticKnowledgeVO.getHisName();
-        if(StringUtil.isNotEmpty(hisStaticKnowledgeVO.getHisDetailName())){
-            url+="&hisDetailName="+hisStaticKnowledgeVO.getHisDetailName();
+        //初始日志记录信息
+        if (StringUtil.isNotBlank(hisStaticKnowledgeVO.getHospitalCode())) {
+            CdssLogUtil.addBizSubHospitalCode(hisStaticKnowledgeVO.getHospitalCode());
         }
-        try{
-            TranDatadockingLog tranDatadockingLog=new TranDatadockingLog();
-            tranDatadockingLog.setHospitalId(hisStaticKnowledgeVO.getHospitalId());
-            tranDatadockingLog.setParamIn(JSON.toJSONString(hisStaticKnowledgeVO));
-            tranDatadockingLog.setParamOut(url);
-            tranDatadockingLog.setRemark("页面推送模式,静态知识:"+hisStaticKnowledgeVO.getType());
-
-            tranDatadockingLog.setTransTime(new Date());
-
-            dataDockingLogFacade.save(tranDatadockingLog);
-        }catch (Exception e){
-            log.error("页面推送模式,增加日志异常",e.getMessage());
+        if (StringUtil.isNotBlank(hisStaticKnowledgeVO.getHospitalName())) {
+            CdssLogUtil.addBizSubHospitalName(hisStaticKnowledgeVO.getHospitalName());
+        }
+        if (hisStaticKnowledgeVO.getHospitalId()!=null) {
+            CdssLogUtil.addBizHospitalId(hisStaticKnowledgeVO.getHospitalId());
+        }
+        //判断是否有静态知识
+        StaticKnowledgeHISVO staticKnowledgeHISVO=new StaticKnowledgeHISVO();
+        BeanUtils.copyProperties(hisStaticKnowledgeVO,staticKnowledgeHISVO);
+        Boolean flag=KlConceptStaticFacade.isExistForHIS(staticKnowledgeHISVO);
+        //如果有返回静态知识url地址
+        if(flag){
+            url=dataPageUrl+"/informationOut.html?hospitalId="+hisStaticKnowledgeVO.getHospitalId()
+                    +"&type="+hisStaticKnowledgeVO.getType()
+                    +"&hisName="+hisStaticKnowledgeVO.getHisName();
+            if(StringUtil.isNotEmpty(hisStaticKnowledgeVO.getHisDetailName())){
+                url+="&hisDetailName="+hisStaticKnowledgeVO.getHisDetailName();
+            }
+            return RespDTO.onSuc(url);
+        }else{
+            return RespDTO.onError("无静态知识");
         }
-        return RespDTO.onSuc(url);
     }
 
     /**
@@ -92,9 +104,8 @@ public class DataPageDockFacade {
      * @time: ${DATE} ${TIME}
      **/
     public RespDTO<String> getDataService(DataPageDockVO dataPageDockVO) {
-        //参数校验
         if(StringUtil.isNotEmpty(dataPageDockVO.getHospitalCode()) && StringUtil.isNotEmpty(dataPageDockVO.getHospitalName())){
-            //查找基层医院
+            //基层医院业务逻辑
             Long hospitalId=getHospitalRelation(dataPageDockVO.getHospitalCode(),dataPageDockVO.getHospitalName());
             if(hospitalId!=null){
                 dataPageDockVO.setHospitalId(hospitalId);
@@ -108,6 +119,19 @@ public class DataPageDockFacade {
         }else if("".equals(dataPageDockVO.getPlanCode())){
             return RespDTO.onError("请输入方案编码");
         }
+        //初始日志记录信息
+        if (StringUtil.isNotBlank(dataPageDockVO.getHospitalCode())) {
+            CdssLogUtil.addBizSubHospitalCode(dataPageDockVO.getHospitalCode());
+        }
+        if (StringUtil.isNotBlank(dataPageDockVO.getHospitalName())) {
+            CdssLogUtil.addBizSubHospitalName(dataPageDockVO.getHospitalName());
+        }
+        if (dataPageDockVO.getHospitalId()!=null) {
+            CdssLogUtil.addBizHospitalId(dataPageDockVO.getHospitalId());
+        }
+        if (dataPageDockVO.getPlanCode()!=null) {
+            CdssLogUtil.addBizSceneName(dataPageDockVO.getPlanCode());
+        }
 
         String url="";
         String pushMrId="";
@@ -122,6 +146,9 @@ public class DataPageDockFacade {
             BeanUtil.copyProperties(dataPageDockVO,indicationPushVO);
             //ruleType(1:危急值提醒,2:开单合理项,3:高危药品、手术,4:其他提醒)
             indicationPushVO.setRuleType("2,3,4");
+            //日志中增加入参,将开单合理性参数进行拼接记录
+            //CdssLogUtil.addBizReq(indicationPushVO);
+            //调用开单合理性接口
             IndicationDTO indicationDTO = pushFacade.indicationPush(indicationPushVO);
             if (indicationDTO != null) {
                 if (ListUtil.isNotEmpty(indicationDTO.getBillMsgList()) || ListUtil.isNotEmpty(indicationDTO.getHighRiskList())
@@ -134,6 +161,8 @@ public class DataPageDockFacade {
             }else{
                 return RespDTO.onError("无开单合理性提醒!");
             }
+            //将开单合理性结果进行拼接记录
+            //CdssLogUtil.addBizResp(indicationPushVO);
         }
 
         if("hor".equals(dataPageDockVO.getShowType())){
@@ -141,21 +170,6 @@ public class DataPageDockFacade {
         }else{
             url=dataPageUrl+"/cdss.html?pushMrId="+pushMrId+"&mrId="+mrId+"&hospitalId="+dataPageDockVO.getHospitalId()+"&planCode="+dataPageDockVO.getPlanCode();
         }
-
-        try{
-            TranDatadockingLog tranDatadockingLog=new TranDatadockingLog();
-            tranDatadockingLog.setHospitalId(dataPageDockVO.getHospitalId());
-            tranDatadockingLog.setParamIn(JSON.toJSONString(dataPageDockVO));
-            tranDatadockingLog.setParamOut(url);
-            tranDatadockingLog.setRemark("页面推送模式,"+dataPageDockVO.getPlanCode());
-
-            tranDatadockingLog.setTransTime(new Date());
-
-            dataDockingLogFacade.save(tranDatadockingLog);
-        }catch (Exception e){
-            log.error("页面推送模式,增加日志异常",e.getMessage());
-        }
-
         return RespDTO.onSuc(url);
     }
 

+ 19 - 0
src/main/java/com/diagbot/util/CdssLogUtil.java

@@ -26,6 +26,7 @@ public class CdssLogUtil {
 
     private final static String CDSS_REQ = "Cdss_Req";
     private final static String CDSS_RESP = "Cdss_Resp";
+    private final static String CDSS_SCENE_NAME = "Cdss_Scene_Name";
     private final static String CDSS_HOSPITAL_ID = "Cdss_Hospital_Id";
     private final static String CDSS_SUB_HOSPITAL_NAME = "Cdss_Sub_Hospital_Name";
     private final static String CDSS_SUB_HOSPITAL_CODE = "Cdss_Sub_Hospital_Code";
@@ -197,6 +198,14 @@ public class CdssLogUtil {
         tranLog.setResult(result);
 
         //todo 个性化处理
+        //设置医院功能场景名称
+        String senceName=tranLog.getSceneName();
+        String sceneName=response.getHeader(CDSS_SCENE_NAME);
+        if (StringUtil.isNotBlank(sceneName)) {
+            senceName = sceneName;
+            response.setHeader(CDSS_SCENE_NAME, "");
+        }
+        tranLog.setSceneName(senceName);
 
         //设置医院id
         Long hospitalId = tranLog.getHospitalId();
@@ -281,6 +290,15 @@ public class CdssLogUtil {
         handleRespHeaderMap(CDSS_PATIENT_ID, o);
     }
 
+    /**
+     * 设置场景名称
+     *
+     * @param o
+     */
+    public static void addBizSceneName(Object o) {
+        handleRespHeaderMap(CDSS_SCENE_NAME, o);
+    }
+
 
     private static void handleRespHeaderMap(String key, Object o) {
         HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
@@ -293,4 +311,5 @@ public class CdssLogUtil {
         // 设置Header
         response.setHeader(key, value);
     }
+
 }

+ 3 - 0
src/main/java/com/diagbot/web/DataPageDockController.java

@@ -1,5 +1,6 @@
 package com.diagbot.web;
 
+import com.diagbot.annotation.CdssLog;
 import com.diagbot.annotation.SysLogger;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.facade.DataPageDockFacade;
@@ -33,6 +34,7 @@ public class DataPageDockController {
             notes = "")
     @PostMapping("/getDataService")
     @SysLogger("getDataService")
+    @CdssLog("页面推送")
     public RespDTO<String> getDataService(@Valid @RequestBody DataPageDockVO dataPageDockVO) {
         return dataPageDockFacade.getDataService(dataPageDockVO);
     }
@@ -41,6 +43,7 @@ public class DataPageDockController {
             notes = "")
     @PostMapping("/getStaticKnowledge")
     @SysLogger("getStaticKnowledge")
+    @CdssLog("静态知识")
     public RespDTO<String> getStaticKnowledge(@Valid @RequestBody HisStaticKnowledgeVO hisStaticKnowledgeVO){
         return dataPageDockFacade.getStaticKnowledge(hisStaticKnowledgeVO);
     }