فهرست منبع

电子病历评级-推理

Zhaops 6 سال پیش
والد
کامیت
6cb18a0777

+ 18 - 0
icss-service/src/main/java/com/diagbot/dto/PushEMRDTO.java

@@ -0,0 +1,18 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/3/11 16:36
+ */
+@Getter
+@Setter
+public class PushEMRDTO {
+    private List<String> lisList;
+    private List<String> pacsList;
+}

+ 28 - 1
icss-service/src/main/java/com/diagbot/facade/PushFacade.java

@@ -10,6 +10,7 @@ import com.diagbot.client.bean.Response;
 import com.diagbot.client.bean.ResponseData;
 import com.diagbot.client.bean.SearchData;
 import com.diagbot.dto.PushDTO;
+import com.diagbot.dto.PushEMRDTO;
 import com.diagbot.dto.PushKYJDTO;
 import com.diagbot.dto.QuestionDTO;
 import com.diagbot.entity.DeptInfo;
@@ -468,7 +469,33 @@ public class PushFacade {
         return vitalDTO;
     }
 
-    public void pushEMR(){
+    /**
+     * 电子病历评级推理
+     *
+     * @param pushVO
+     * @return
+     */
+    public PushEMRDTO pushEMR(PushVO pushVO) {
+        PushEMRDTO pushEMRDTO = new PushEMRDTO();
+        ResponseData data = pushAI(pushVO);
+        String featureType = pushVO.getFeatureType();
+        String[] featureTypes = featureType.split(",|,");
+        Set<String> featureTypeSet = new HashSet(Arrays.asList(featureTypes));
 
+        if (featureTypeSet.contains(String.valueOf(QuestionTypeEnum.Lis.getKey()))) {
+            List<FeatureRate> labs = data.getLabs();
+            if (labs.size() > 0) {
+                List<String> lisList = labs.stream().map(lab -> lab.getFeatureName()).collect(Collectors.toList());
+                pushEMRDTO.setLisList(lisList);
+            }
+        }
+        if (featureTypeSet.contains(String.valueOf(QuestionTypeEnum.Pacs.getKey()))) {
+            List<FeatureRate> pacsFeatures = data.getPacs();
+            if (pacsFeatures.size() > 0) {
+                List<String> pacsList = pacsFeatures.stream().map(pacs -> pacs.getFeatureName()).collect(Collectors.toList());
+                pushEMRDTO.setPacsList(pacsList);
+            }
+        }
+        return pushEMRDTO;
     }
 }

+ 26 - 0
icss-service/src/main/java/com/diagbot/web/PushController.java

@@ -3,6 +3,7 @@ package com.diagbot.web;
 import com.diagbot.annotation.SysLogger;
 import com.diagbot.client.bean.ResponseData;
 import com.diagbot.dto.PushDTO;
+import com.diagbot.dto.PushEMRDTO;
 import com.diagbot.dto.PushKYJDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.enums.InputModeEnum;
@@ -122,4 +123,29 @@ public class PushController {
     public RespDTO<PushKYJDTO> pushKYJ(@RequestBody @Valid PushKYJVO pushKYJVO) {
         return RespDTO.onSuc(pushFacade.pushKYJ(pushKYJVO));
     }
+
+    @ApiOperation(value = "推理接口-电子病历评级[by:zhaops]",
+            notes = "age: 年龄(必填)<br>" +
+                    "sex:性别(必填),1:男,2:女<br>" +
+                    "symptom:症状,String<br>" +
+                    "other:其它史,String<br>" +
+                    "vital:查体,String<br>" +
+                    "lis:化验,Array<br>" +
+                    "lis:name:套餐名称(必填),String<br>" +
+                    "lis:detailName:化验项名称(必填),String<br>" +
+                    "lis:uniqueName:公表名称,String<br>" +
+                    "lis:value:值,Double<br>" +
+                    "lis:maxValue:最大值,Double<br>" +
+                    "lis:minValue:最小值,Double<br>" +
+                    "lis:units:单位,String<br>" +
+                    "lis:otherValue:其他结果,包括阴性阳性,文字描述等,String<br>" +
+                    "lis:source:数据来源(必填),Integer<br>" +
+                    "pacs:辅检,String<br>" +
+                    "diag:诊断,String<br>" +
+                    "featureType:类型(必填),1:症状,3:其他史,4:查体,5:化验,6:辅检,7:诊断,8:治疗方案,String<br>")
+    @PostMapping("/pushEMR")
+    @SysLogger("pushEMR")
+    public RespDTO<PushEMRDTO> pushEMR(@RequestBody @Valid PushVO pushVO) {
+        return RespDTO.onSuc(pushFacade.pushEMR(pushVO));
+    }
 }

+ 2 - 1
tran-service/src/main/java/com/diagbot/client/ICSSServiceClient.java

@@ -1,5 +1,6 @@
 package com.diagbot.client;
 
+import com.diagbot.client.bean.ICSSPushDTO;
 import com.diagbot.client.hystrix.ICSSServiceHystrix;
 import com.diagbot.dto.EMRIntroduceDTO;
 import com.diagbot.dto.RespDTO;
@@ -34,5 +35,5 @@ public interface ICSSServiceClient {
      * @return
      */
     @PostMapping("/push/pushEMR")
-    RespDTO<List<String>> pushEMR(@RequestBody PushVO pushVO);
+    RespDTO<ICSSPushDTO> pushEMR(@RequestBody PushVO pushVO);
 }

+ 18 - 0
tran-service/src/main/java/com/diagbot/client/bean/ICSSPushDTO.java

@@ -0,0 +1,18 @@
+package com.diagbot.client.bean;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/3/11 16:51
+ */
+@Getter
+@Setter
+public class ICSSPushDTO {
+    private List<String> lisList;
+    private List<String> pacsList;
+}

+ 2 - 1
tran-service/src/main/java/com/diagbot/client/hystrix/ICSSServiceHystrix.java

@@ -1,6 +1,7 @@
 package com.diagbot.client.hystrix;
 
 import com.diagbot.client.ICSSServiceClient;
+import com.diagbot.client.bean.ICSSPushDTO;
 import com.diagbot.dto.EMRIntroduceDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.vo.EMRIntroduceVO;
@@ -25,7 +26,7 @@ public class ICSSServiceHystrix implements ICSSServiceClient {
         return null;
     }
 
-    public RespDTO<List<String>> pushEMR(@RequestBody PushVO pushVO) {
+    public RespDTO<ICSSPushDTO> pushEMR(@RequestBody PushVO pushVO) {
         log.error("【hystrix】调用{}异常", "getIntroduceByEMR");
         return null;
     }

+ 18 - 0
tran-service/src/main/java/com/diagbot/dto/PushEMRDTO.java

@@ -0,0 +1,18 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/3/11 16:36
+ */
+@Getter
+@Setter
+public class PushEMRDTO {
+    private List<String> lisList;
+    private List<String> pacsList;
+}

+ 3 - 3
tran-service/src/main/java/com/diagbot/facade/EMRInfoFacade.java

@@ -41,9 +41,9 @@ public class EMRInfoFacade {
         //公表转换
         String uniqueName = "";
         Integer type = emrInfoVO.getType();
-        if (type.equals(TypeEnum.Lis)) {
+        if (type.equals(TypeEnum.Lis.getKey())) {
             uniqueName = lisConfigMap.get(emrInfoVO.getMealName()).get(emrInfoVO.getItemName());
-        } else if (type.equals(TypeEnum.Pacs)) {
+        } else if (type.equals(TypeEnum.Pacs.getKey())) {
             uniqueName = pacsConfigMap.get(emrInfoVO.getMealName());
         }
 
@@ -76,4 +76,4 @@ public class EMRInfoFacade {
         List<EMRIntroduceDTO> emrIntroduceDTOList = respDTO.data;
         return emrIntroduceDTOList;
     }
-}
+}

+ 64 - 0
tran-service/src/main/java/com/diagbot/facade/EMRPushFacade.java

@@ -0,0 +1,64 @@
+package com.diagbot.facade;
+
+import com.diagbot.client.ICSSServiceClient;
+import com.diagbot.client.bean.ICSSPushDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.StringUtil;
+import com.diagbot.vo.EMRPushVO;
+import com.diagbot.vo.LisResult;
+import com.diagbot.vo.LisResultVO;
+import com.diagbot.vo.PushVO;
+import com.google.common.collect.Lists;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/3/11 16:47
+ */
+@Component
+public class EMRPushFacade {
+    @Autowired
+    private ICSSServiceClient icssServiceClient;
+    @Autowired
+    private TranLisConfigFacade tranLisConfigFacade;
+
+    /**
+     * 电子病历评级-推理
+     *
+     * @param emrPushVO
+     * @return
+     */
+    public ICSSPushDTO emrPush(EMRPushVO emrPushVO) {
+        PushVO pushVO = new PushVO();
+        BeanUtil.copyProperties(emrPushVO, pushVO);
+        pushVO.setFeatureType(emrPushVO.getType());
+
+        //化验项转公表内容,参数处理
+        if (emrPushVO.getLis() != null && emrPushVO.getLis().size() > 0) {
+            Map<String, Map<String, String>> lisConfigMap = tranLisConfigFacade.getLisConfigByHosCode(emrPushVO.getHosCode());
+            List<LisResultVO> lisResultVOList = emrPushVO.getLis();
+            List<LisResult> lisResultList = Lists.newLinkedList();
+            for (LisResultVO lisResultVO : lisResultVOList) {
+                if (StringUtil.isNotBlank(lisResultVO.getMealName()) && StringUtil.isNotBlank(lisResultVO.getItemName())) {
+                    lisResultVO.setUniqueName(lisConfigMap.get(lisResultVO.getMealName()).get(lisResultVO.getItemName()));
+                }
+                LisResult lisResult = new LisResult();
+                BeanUtil.copyProperties(lisResultVO, lisResult);
+                lisResult.setName(lisResultVO.getMealName());
+                lisResult.setDetailName(lisResultVO.getItemName());
+                lisResultList.add(lisResult);
+            }
+            pushVO.setLis(lisResultList);
+        }
+
+        BeanUtil.copyProperties(emrPushVO, pushVO);
+        RespDTO<ICSSPushDTO> respDTO = icssServiceClient.pushEMR(pushVO);
+        return respDTO.data;
+    }
+}

+ 20 - 1
tran-service/src/main/java/com/diagbot/vo/EMRPushVO.java

@@ -3,6 +3,10 @@ package com.diagbot.vo;
 import lombok.Getter;
 import lombok.Setter;
 
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
 /**
  * @Description:
  * @Author:zhaops
@@ -11,4 +15,19 @@ import lombok.Setter;
 @Getter
 @Setter
 public class EMRPushVO {
-}
+    @NotBlank(message = "请输入医院编码")
+    private String hosCode;
+    @NotNull(message = "请输入年龄")
+    private Integer age;
+    @NotNull(message = "请输入性别")
+    private Integer sex;
+    @NotBlank(message = "请输入推送类型")
+    private String  type;//5-检验,6-检查
+    private String symptom;
+    private String diag;
+    private String vital;
+    private List<LisResultVO> lis;
+    private String pacs;
+    private String past;
+    private String other;
+}

+ 22 - 0
tran-service/src/main/java/com/diagbot/vo/LisResultVO.java

@@ -0,0 +1,22 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/3/11 17:02
+ */
+@Getter
+@Setter
+public class LisResultVO {
+    private String mealName;//套餐名称
+    private String itemName;//化验项名称
+    private String uniqueName;//公表名称
+    private Double value;//值
+    private Double maxValue;//最大值
+    private Double minValue;//最小值
+    private String units;//单位
+    private String otherValue;//其他结果,包括阴性阳性,文字描述等
+}

+ 51 - 0
tran-service/src/main/java/com/diagbot/web/EMRPushController.java

@@ -0,0 +1,51 @@
+package com.diagbot.web;
+
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.client.bean.ICSSPushDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.facade.EMRPushFacade;
+import com.diagbot.vo.EMRPushVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/3/11 16:46
+ */
+@RestController
+@RequestMapping("/EMRPush")
+@Api(value = "电子病历评级-推理相关API", tags = { "电子病历评级-推理相关API" })
+public class EMRPushController {
+    @Autowired
+    EMRPushFacade emrPushFacade;
+
+    @ApiOperation(value = "电子病历评级-推理[by:zhaops]",
+            notes = "age: 年龄(必填)<br>" +
+                    "sex:性别(必填),1:男,2:女<br>" +
+                    "symptom:症状,String<br>" +
+                    "other:其它史,String<br>" +
+                    "vital:查体,String<br>" +
+                    "lis:化验,Array<br>" +
+                    "lis:mealName:套餐名称(必填),String<br>" +
+                    "lis:itemName:化验项名称(必填),String<br>" +
+                    "lis:uniqueName:公表名称,String<br>" +
+                    "lis:value:值,Double<br>" +
+                    "lis:maxValue:最大值,Double<br>" +
+                    "lis:minValue:最小值,Double<br>" +
+                    "lis:units:单位,String<br>" +
+                    "lis:otherValue:其他结果,包括阴性阳性,文字描述等,String<br>" +
+                    "pacs:辅检,String<br>" +
+                    "diag:诊断,String<br>" +
+                    "type:类型(必填),5:化验,6:辅检,String<br>")
+    @PostMapping("/emrPush")
+    @SysLogger("emrPush")
+    public RespDTO<ICSSPushDTO> emrPush(@RequestBody EMRPushVO emrPushVO) {
+        return RespDTO.onSuc(emrPushFacade.emrPush(emrPushVO));
+    }
+}