Forráskód Böngészése

1、调整引擎模式接口

liuqq 3 éve
szülő
commit
4c8484d45c

+ 49 - 34
src/main/java/com/diagbot/facade/DataPageDockFacade.java

@@ -163,27 +163,34 @@ public class DataPageDockFacade {
      * @Author:liuqq
      * @time: ${DATE} ${TIME}
      **/
-    public PushDTO getEnginePush(DataEngineVO dataEngineVO) {
+    public RespDTO getEnginePush(DataEngineVO dataEngineVO) {
+        //基层子医院业务逻辑
+        if(StringUtil.isNotEmpty(dataEngineVO.getHospitalCode()) && StringUtil.isNotEmpty(dataEngineVO.getHospitalName())){
+            //查找基层医院
+            Long hospitalId=getHospitalRelation(dataEngineVO.getHospitalCode(),dataEngineVO.getHospitalName());
+            if(hospitalId!=null){
+                dataEngineVO.setHospitalId(hospitalId);
+            }else{
+                return RespDTO.onError("子医院信息异常");
+            }
+        }else if(dataEngineVO.getHospitalId()==null){
+            return RespDTO.onError("请输入医院id");
+        }else if("".equals(dataEngineVO.getPlanCode())){
+            return RespDTO.onError("请输入方案编码");
+        }
+        //初始日志记录信息
+        dataEngineVO.setSubHospitalCode(dataEngineVO.getHospitalCode());
+        dataEngineVO.setSubHospitalName(dataEngineVO.getHospitalName());
+        dataEngineVO.setSceneName(dataEngineVO.getPlanCode());
+        //dataEngineVO.setFeatureType("1,4,5,6,7,8,9,10");//推理类型
+
         PushVO pushVO = new PushVO();
         BeanUtil.copyProperties(dataEngineVO, pushVO);
+        //增加处理后的入参
+        CdssLogUtil.addBizReq(pushVO);
         PushDTO pushDTO=pushFacade.push(pushVO);
         pushDTO.setDebug(null);
-
-        try{
-            TranDatadockingLog tranDatadockingLog=new TranDatadockingLog();
-            tranDatadockingLog.setHospitalId(dataEngineVO.getHospitalId());
-            tranDatadockingLog.setParamIn(JSON.toJSONString(dataEngineVO));
-            tranDatadockingLog.setParamOut(JSON.toJSONString(pushDTO));
-            tranDatadockingLog.setRemark("数据引擎模式,"+dataEngineVO.getPlanCode());
-
-            tranDatadockingLog.setTransTime(new Date());
-
-            dataDockingLogFacade.save(tranDatadockingLog);
-        }catch (Exception e){
-            log.error("数据引擎模式,增加日志异常",e.getMessage());
-        }
-
-        return pushDTO;
+        return RespDTO.onSuc(pushDTO);
     }
 
     /**
@@ -192,29 +199,37 @@ public class DataPageDockFacade {
      * @time: ${DATE} ${TIME}
      **/
     public RespDTO getEngineIndicationPush(DataEngineVO dataEngineVO) {
+        //基层子医院业务逻辑
+        if(StringUtil.isNotEmpty(dataEngineVO.getHospitalCode()) && StringUtil.isNotEmpty(dataEngineVO.getHospitalName())){
+            //查找基层医院
+            Long hospitalId=getHospitalRelation(dataEngineVO.getHospitalCode(),dataEngineVO.getHospitalName());
+            if(hospitalId!=null){
+                dataEngineVO.setHospitalId(hospitalId);
+            }else{
+                return RespDTO.onError("子医院信息异常");
+            }
+        }else if(dataEngineVO.getHospitalId()==null){
+            return RespDTO.onError("请输入医院id");
+        }else if("".equals(dataEngineVO.getPlanCode())){
+            return RespDTO.onError("请输入方案编码");
+        }
+        //初始日志记录信息
+        dataEngineVO.setSubHospitalCode(dataEngineVO.getHospitalCode());
+        dataEngineVO.setSubHospitalName(dataEngineVO.getHospitalName());
+        dataEngineVO.setSceneName(dataEngineVO.getPlanCode());
+        //dataEngineVO.setFeatureType("1,4,5,6,7,8,9,10");//推理类型
+        //dataEngineVO.setRuleType("2,3,4");//推理类型(1:危急值提醒,2:开单合理项,3:高危药品、手术,4:其他提醒)
+
         IndicationPushVO indicationPushVO=new IndicationPushVO();
         BeanUtil.copyProperties(dataEngineVO, indicationPushVO);
-        //ruleType(1:危急值提醒,2:开单合理项,3:高危药品、手术,4:其他提醒)
-        indicationPushVO.setRuleType("2,3,4");
+
+        //增加处理后的入参
+        CdssLogUtil.addBizReq(indicationPushVO);
         IndicationDTO indicationDTO=pushFacade.indicationPush(indicationPushVO);
         indicationDTO.setDebug(null);
 
-        try{
-            TranDatadockingLog tranDatadockingLog=new TranDatadockingLog();
-            tranDatadockingLog.setHospitalId(dataEngineVO.getHospitalId());
-            tranDatadockingLog.setParamIn(JSON.toJSONString(dataEngineVO));
-            tranDatadockingLog.setParamOut(JSON.toJSONString(dataEngineVO));
-            tranDatadockingLog.setRemark("数据引擎模式,"+dataEngineVO.getPlanCode());
-
-            tranDatadockingLog.setTransTime(new Date());
-
-            dataDockingLogFacade.save(tranDatadockingLog);
-        }catch (Exception e){
-            log.error("数据引擎模式,增加日志异常",e.getMessage());
-        }
-
         if (indicationDTO != null) {
-            if (ListUtil.isNotEmpty(indicationDTO.getBillMsgList()) || ListUtil.isNotEmpty(indicationDTO.getHighRiskList())
+            if (ListUtil.isNotEmpty(indicationDTO.getHighRiskList())
                     || ListUtil.isNotEmpty(indicationDTO.getCriticalValList()) || ListUtil.isNotEmpty(indicationDTO.getOtherList()))
             {
                 return RespDTO.onSuc(indicationDTO);

+ 166 - 1
src/main/java/com/diagbot/vo/DataEngineVO.java

@@ -1,15 +1,22 @@
 package com.diagbot.vo;
 
+import com.diagbot.biz.push.entity.Item;
+import com.diagbot.biz.push.entity.Lis;
+import com.diagbot.biz.push.entity.Pacs;
+import com.diagbot.biz.push.entity.Scale;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
 
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
 
 @Getter
 @Setter
-public class DataEngineVO extends SearchData{
+public class DataEngineVO extends CdssLogBaseVO{
 
     @NotNull(message = "请输入方案编码")
     private String planCode;//方案编码,用于控制哪些展示项
@@ -38,4 +45,162 @@ public class DataEngineVO extends SearchData{
      * 医院名称
      */
     private String hospitalName;
+
+    /**
+     * 年龄文本数据
+     */
+    private String age;
+
+    /**
+     * 性别(1:男,2:女,3:通用)
+     */
+    private Integer sex;
+    /**
+     * 婚姻
+     */
+    private String marriage = "";
+    /**
+     * 主诉
+     */
+    private String chief = "";
+    /**
+     * 现病史
+     */
+    private String symptom = "";
+    /**
+     * 查体
+     */
+    private String vital = "";
+    /**
+     * 既往史
+     */
+    private String pasts = "";
+    /**
+     * 传染病史
+     */
+    private String infectious = "";
+    /**
+     * 手术外伤史
+     */
+    private String surgical = "";
+    /**
+     * 过敏史
+     */
+    private String allergy = "";
+    /**
+     * 接种史
+     */
+    private String vaccination = "";
+    /**
+     * 个人史
+     */
+    private String personal = "";
+    /**
+     * 婚育史
+     */
+    private String marital = "";
+    /**
+     * 家族史
+     */
+    private String family = "";
+    /**
+     * 月经史
+     */
+    private String menstrual = "";
+    /**
+     * 其他史
+     */
+    private String other = "";
+    /**
+     * 化验文本数据
+     */
+    private String lisString = "";
+    /**
+     * 辅检文本数据
+     */
+    private String pacsString = "";
+    /**
+     * 诊断文本数据
+     */
+    private String diagString = "";
+    /**
+     * 药品文本数据
+     */
+    private String drugString = "";
+    /**
+     * 科室
+     */
+    private List<Item> dept = new ArrayList<>();
+    /**
+     * 化验项目和结果
+     */
+    private List<Lis> lis = new ArrayList<>();
+    /**
+     * 辅检项目和结果
+     */
+    private List<Pacs> pacs = new ArrayList<>();
+    /**
+     * 诊断
+     */
+    private List<Item> diag = new ArrayList<>();
+    /**
+     * 药品
+     */
+    private List<Drug> drug = new ArrayList<>();
+    /**
+     * 手术及操作
+     */
+    private List<Item> operation = new ArrayList<>();
+    /**
+     * 输血记录
+     */
+    private List<ItemExt> transfusion = new ArrayList<>();
+    /**
+     * 当前化验开单项
+     */
+    private List<Lis> lisOrder = new ArrayList<>();
+    /**
+     * 当前辅检开单项
+     */
+    private List<Pacs> pacsOrder = new ArrayList<>();
+    /**
+     * 当前诊断开单项
+     */
+    private List<Item> diagOrder = new ArrayList<>();
+    /**
+     * 当前药品开单项
+     */
+    private List<Drug> drugOrder = new ArrayList<>();
+    /**
+     * 当前手术开单项
+     */
+    private List<Item> operationOrder = new ArrayList<>();
+    /**
+     * 当前输血开单项
+     */
+    private List<ItemExt> transfusionOrder = new ArrayList<>();
+    /**
+     * 其他开单项
+     */
+    private List<Item> otherOrder = new ArrayList<>();
+    /**
+     * 选中诊断
+     */
+    private Item diseaseName;
+    /**
+     * 选中手术
+     */
+    private Item operationName;
+    /**
+     * 其他指标
+     */
+    private Map<String, String> otherIndex;
+    /**
+     * 其他医嘱
+     */
+    private List<Item> otherAdvice = new ArrayList<>();
+    /**
+     * 量表结果
+     */
+    private List<Scale> scale = new ArrayList<>();
 }

+ 9 - 2
src/main/java/com/diagbot/web/DataPageDockController.java

@@ -52,6 +52,7 @@ public class DataPageDockController {
             notes = "")
     @PostMapping("/getDataEngine")
     @SysLogger("getDataEngine")
+    @CdssLog("推理")
     public RespDTO<T> getDataEngine(@Valid @RequestBody DataEngineVO dataEngineVO) {
         //类型(多选必填),1:症状,4:查体结果,5:检验,6:检查,7:诊断,8:药品,9:手术,10:一般治疗
         if("medical_record".equals(dataEngineVO.getPlanCode())){
@@ -62,10 +63,16 @@ public class DataPageDockController {
             //医嘱推送
             dataEngineVO.setFeatureType("5,6,8,10");
             return RespDTO.onSuc(dataPageDockFacade.getEnginePush(dataEngineVO));
-        }else if("order_rational".equals(dataEngineVO.getPlanCode())  || "reference_pacs".equals(dataEngineVO.getPlanCode()) || "reference_lis".equals(dataEngineVO.getPlanCode())){
+        }else if("order_rational".equals(dataEngineVO.getPlanCode())){
             //规则类型(1:危急值提醒,2:开单合理项,3:高危药品、手术,4:其他提醒)
             //开单合理性
-            dataEngineVO.setRuleType("1,2,3,4");
+            dataEngineVO.setRuleType("2,3,4");
+            //dataEngineVO.setRuleType("2");
+            return RespDTO.onSuc(dataPageDockFacade.getEngineIndicationPush(dataEngineVO));
+        }else if("reference_pacs".equals(dataEngineVO.getPlanCode()) || "reference_lis".equals(dataEngineVO.getPlanCode())){
+            //规则类型(1:危急值提醒,2:开单合理项,3:高危药品、手术,4:其他提醒)
+            //开单合理性
+            dataEngineVO.setRuleType("4");
             //dataEngineVO.setRuleType("2");
             return RespDTO.onSuc(dataPageDockFacade.getEngineIndicationPush(dataEngineVO));
         }else if("operation_plan".equals(dataEngineVO.getPlanCode())){