Selaa lähdekoodia

Merge branch 'dev/mix20191203_staticSearch2' into dev/mix20191204_package

gaodm 5 vuotta sitten
vanhempi
commit
174efc4825

+ 15 - 0
aipt-service/src/main/java/com/diagbot/aggregate/PushItemAggregate.java

@@ -1,7 +1,9 @@
 package com.diagbot.aggregate;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.diagbot.client.TranServiceClient;
+import com.diagbot.client.bean.CalculateData;
 import com.diagbot.client.bean.FeatureRate;
 import com.diagbot.client.bean.HosCodeVO;
 import com.diagbot.client.bean.MedicalIndication;
@@ -14,6 +16,7 @@ import com.diagbot.entity.Concept;
 import com.diagbot.enums.ConceptTypeEnum;
 import com.diagbot.enums.FeatureTypeEnum;
 import com.diagbot.enums.LexiconTypeEnum;
+import com.diagbot.facade.ClinicalFacade;
 import com.diagbot.facade.ConceptFacade;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.FastJsonUtils;
@@ -49,6 +52,8 @@ public class PushItemAggregate {
     private ConceptFacade conceptFacade;
     @Autowired
     private TranServiceClient tranServiceClient;
+    @Autowired
+    private ClinicalFacade clinicalFacade;
 
     @DataProvider("setAll")
     public PushDTO setAll(
@@ -317,6 +322,16 @@ public class PushItemAggregate {
                                     }
                                     detail.setContent(scaleJson);
                                 }
+                            } else if (detail.getType().equals(2)) {
+                                JSONObject calcJson = detail.getContent();
+                                CalculateData calcData = new CalculateData();
+                                calcData.setData(JSON.parseObject(FastJsonUtils.getBeanToJson(detail)));
+                                calcData.setType(2);
+                                Map<String, Object> resultMap = clinicalFacade.scaleCalc(calcData);
+                                if (resultMap.containsKey("result") && calcJson != null) {
+                                    calcJson.put("result", resultMap.get("result"));
+                                    detail.setContent(calcJson);
+                                }
                             }
                         }
                     }

+ 18 - 0
prec-service/src/main/java/com/diagbot/dto/GetInquiryDetailDTO.java

@@ -72,6 +72,24 @@ public class GetInquiryDetailDTO {
     @ApiModelProperty(value="医院名称")
     private String hospitalName;
 
+    /**
+     * 子医院id
+     */
+    @ApiModelProperty(value="子医院id")
+    private Long sonHospitalId;
+
+    /**
+     * 子医院code
+     */
+    @ApiModelProperty(value="子医院code")
+    private String sonHospitalCode;
+
+    /**
+     * 子医院名称
+     */
+    @ApiModelProperty(value="子医院名称")
+    private String sonHospitalName;
+
     /**
      * 医院科室id
      */

+ 25 - 4
prec-service/src/main/java/com/diagbot/dto/HisInquiryDTO.java

@@ -67,6 +67,24 @@ public class HisInquiryDTO{
     @ApiModelProperty(value="医院名称")
     private String hospitalName;
 
+    /**
+     * 子医院id
+     */
+    @ApiModelProperty(value="子医院id")
+    private Long sonHospitalId;
+
+    /**
+     * 子医院code
+     */
+    @ApiModelProperty(value="子医院code")
+    private String sonHospitalCode;
+
+    /**
+     * 子医院名称
+     */
+    @ApiModelProperty(value="子医院名称")
+    private String sonHospitalName;
+
     /**
      * 医院科室id
      */
@@ -181,8 +199,11 @@ public class HisInquiryDTO{
      */
     @ApiModelProperty(value="内容JSON字符串")
     private String dataJson;
-	
-	
-	
-	
+
+    /**
+     * 详情
+     */
+    @ApiModelProperty(value="详情")
+	private InquiryDetailFlatDTO detail;
+
 }

+ 54 - 0
prec-service/src/main/java/com/diagbot/dto/InquiryDetailFlatDTO.java

@@ -0,0 +1,54 @@
+package com.diagbot.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: rengb
+ * @time: 2019/12/3 13:44
+ */
+@Getter
+@Setter
+public class InquiryDetailFlatDTO {
+
+    /**
+     * 主诉
+     */
+    @ApiModelProperty(value = "主诉")
+    private String chiefComplaint;
+
+    /**
+     * 现病史
+     */
+    @ApiModelProperty(value = "现病史")
+    private String xbs;
+
+    /**
+     * 其他史
+     */
+    @ApiModelProperty(value = "其他史")
+    private String qts;
+
+    /**
+     * 补充内容
+     */
+    @ApiModelProperty(value = "补充内容")
+    private String supplement;
+
+    /**
+     * 儿童体质辨识测试
+     */
+    @ApiModelProperty(value = "儿童体质辨识测试")
+    private String physicalRes;
+
+    /**
+     * 最近一次报告图
+     */
+    @ApiModelProperty(value = "最近一次报告图")
+    private List<GetInquiryDetailImgDTO> imageList;
+
+}

+ 70 - 15
prec-service/src/main/java/com/diagbot/facade/InquiryInfoFacade.java

@@ -5,6 +5,7 @@ import com.diagbot.client.TranServiceClient;
 import com.diagbot.dto.GetInquiryDetailDTO;
 import com.diagbot.dto.GetInquiryDetailImgDTO;
 import com.diagbot.dto.HisInquiryDTO;
+import com.diagbot.dto.InquiryDetailFlatDTO;
 import com.diagbot.dto.RecordCheckDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.SaveInquiryDTO;
@@ -38,9 +39,11 @@ import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
+import java.util.Comparator;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @author: zhoutg
@@ -237,6 +240,31 @@ public class InquiryInfoFacade extends InquiryInfoServiceImpl {
             i.setPatientAge(DateUtil.yearCompare(i.getPatientBirthday(), DateUtil.now()));
         });
 
+        if (hisInquirysVO.getIsHaveDetail() == 1) {
+            List<Long> inquiryIdList = hisInquiryDTOList.stream().map(i -> i.getId()).collect(Collectors.toList());
+
+            QueryWrapper<InquiryDetail> inquiryDetailQe = new QueryWrapper<>();
+            inquiryDetailQe.in("inquiry_id", inquiryIdList);
+            Map<Long, List<InquiryDetail>> inquiryDetailListMap = inquiryDetailFacade.list(inquiryDetailQe)
+                    .stream().collect(Collectors.groupingBy(InquiryDetail::getInquiryId));
+
+            QueryWrapper<InquiryReport> inquiryReportQe = new QueryWrapper<>();
+            inquiryReportQe.in("inquiry_id", inquiryIdList);
+            Map<Long, List<InquiryReport>> inquiryReportListMap = inquiryReportFacade.list(inquiryReportQe)
+                    .stream().collect(Collectors.groupingBy(InquiryReport::getInquiryId));
+
+            QueryWrapper<InquiryEvaluator> inquiryEvaluatorQe = new QueryWrapper<>();
+            inquiryEvaluatorQe.in("inquiry_id", inquiryIdList);
+            Map<Long, List<InquiryEvaluator>> inquiryEvaluatorListMap = inquiryEvaluatorFacade.list(inquiryEvaluatorQe)
+                    .stream().collect(Collectors.groupingBy(InquiryEvaluator::getInquiryId));
+
+            hisInquiryDTOList.forEach(i -> {
+                i.setDetail(getInquiryDetailFlat(inquiryDetailListMap.get(i.getId()),
+                        inquiryReportListMap.get(i.getId()),
+                        inquiryEvaluatorListMap.get(i.getId())));
+            });
+        }
+
         return hisInquiryDTOList;
     }
 
@@ -303,12 +331,10 @@ public class InquiryInfoFacade extends InquiryInfoServiceImpl {
 
         QueryWrapper<InquiryDetail> inquiryDetailQe = new QueryWrapper<>();
         inquiryDetailQe.eq("inquiry_id", inquiryInfo.getId());
-        inquiryDetailQe.orderByAsc("type");
         List<InquiryDetail> inquiryDetailList = inquiryDetailFacade.list(inquiryDetailQe);
 
         QueryWrapper<InquiryReport> inquiryReportQe = new QueryWrapper<>();
         inquiryReportQe.eq("inquiry_id", inquiryInfo.getId());
-        inquiryReportQe.orderByAsc("order_num");
         List<InquiryReport> inquiryReportList = inquiryReportFacade.list(inquiryReportQe);
 
         QueryWrapper<InquiryEvaluator> inquiryEvaluatorQe = new QueryWrapper<>();
@@ -324,34 +350,63 @@ public class InquiryInfoFacade extends InquiryInfoServiceImpl {
         getInquiryDetailDTO.setInquiryTime(inquiryInfo.getGmtModified());
         getInquiryDetailDTO.setPatientAge(DateUtil.yearCompare(inquiryInfo.getPatientBirthday(), DateUtil.now()));
 
+        BeanUtil.copyProperties(
+                getInquiryDetailFlat(inquiryDetailList, inquiryReportList, inquiryEvaluatorList),
+                getInquiryDetailDTO);
+
+        return getInquiryDetailDTO;
+    }
+
+    /**
+     * 获取预问诊病历详情
+     *
+     * @param inquiryDetailList    病历明细
+     * @param inquiryReportList    报告图
+     * @param inquiryEvaluatorList 体质辨识
+     * @return
+     */
+    private InquiryDetailFlatDTO getInquiryDetailFlat(List<InquiryDetail> inquiryDetailList,
+                                                      List<InquiryReport> inquiryReportList,
+                                                      List<InquiryEvaluator> inquiryEvaluatorList) {
+
+        InquiryDetailFlatDTO inquiryDetailFlatDTO = new InquiryDetailFlatDTO();
+
         if (ListUtil.isNotEmpty(inquiryDetailList)) {
             Map<Integer, InquiryDetail> inquiryDetailMap
                     = EntityUtil.makeEntityMap(inquiryDetailList, "type");
             if (null != inquiryDetailMap.get(1)) {
-                getInquiryDetailDTO.setChiefComplaint(inquiryDetailMap.get(1).getContentValue());
+                inquiryDetailFlatDTO.setChiefComplaint(inquiryDetailMap.get(1).getContentValue());
             }
             if (null != inquiryDetailMap.get(2)) {
-                getInquiryDetailDTO.setXbs(inquiryDetailMap.get(2).getContentValue());
+                inquiryDetailFlatDTO.setXbs(inquiryDetailMap.get(2).getContentValue());
             }
             if (null != inquiryDetailMap.get(3)) {
-                getInquiryDetailDTO.setQts(inquiryDetailMap.get(3).getContentValue());
+                inquiryDetailFlatDTO.setQts(inquiryDetailMap.get(3).getContentValue());
             }
             if (null != inquiryDetailMap.get(4)) {
-                getInquiryDetailDTO.setSupplement(inquiryDetailMap.get(4).getContentValue());
+                inquiryDetailFlatDTO.setSupplement(inquiryDetailMap.get(4).getContentValue());
             }
         }
-        getInquiryDetailDTO.setPhysicalRes(
-                ListUtil.isNotEmpty(inquiryEvaluatorList) ? inquiryEvaluatorList.get(0).getPhysicalRes() : null);
+        inquiryDetailFlatDTO.setPhysicalRes(
+                ListUtil.isNotEmpty(inquiryEvaluatorList) ?
+                        inquiryEvaluatorList.stream()
+                                .max(Comparator.comparing(InquiryEvaluator::getGmtModified))
+                                .map(i -> i.getPhysicalRes())
+                                .get() :
+                        null
+        );
         if (ListUtil.isNotEmpty(inquiryReportList)) {
-            for (InquiryReport inquiryReport : inquiryReportList) {
-                if (StringUtil.isNotBlank(inquiryReport.getOriginalImage())) {
-                    inquiryReport.setOriginalImage(imageUrlPrefix + inquiryReport.getOriginalImage());
-                }
-            }
-            getInquiryDetailDTO.setImageList(BeanUtil.listCopyTo(inquiryReportList, GetInquiryDetailImgDTO.class));
+            inquiryReportList.stream()
+                    .sorted(Comparator.comparing(InquiryReport::getOrderNum))
+                    .forEach(inquiryReport -> {
+                        if (StringUtil.isNotBlank(inquiryReport.getOriginalImage())) {
+                            inquiryReport.setOriginalImage(imageUrlPrefix + inquiryReport.getOriginalImage());
+                        }
+                    });
+            inquiryDetailFlatDTO.setImageList(BeanUtil.listCopyTo(inquiryReportList, GetInquiryDetailImgDTO.class));
         }
 
-        return getInquiryDetailDTO;
+        return inquiryDetailFlatDTO;
     }
 
     /**

+ 60 - 55
prec-service/src/main/java/com/diagbot/vo/HisInquirysVO.java

@@ -1,114 +1,119 @@
 package com.diagbot.vo;
 
-import java.util.Date;
-
-import org.springframework.format.annotation.DateTimeFormat;
-
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
 
 /**
  * @Description:
  * @author: rengb
  * @time: 2018/11/19 18:58
  */
-@ApiModel(value="历史病历列表接口传参")
+@ApiModel(value = "历史病历列表接口传参")
 @Getter
 @Setter
 public class HisInquirysVO {
-	
-	/**
+
+    /**
      * 医院id
      */
-	@ApiModelProperty(value="医院id")
+    @ApiModelProperty(value = "医院id")
     private Long hospitalId;
-	
-	 /**
+
+    /**
      * 医院编码
      */
-	@ApiModelProperty(value="医院编码")
+    @ApiModelProperty(value = "医院编码")
     private String hospitalCode;
 
     /**
      * 医院科室id
      */
-	@ApiModelProperty(value="医院科室id")
+    @ApiModelProperty(value = "医院科室id")
     private Long hospitalDeptId;
 
     /**
      * 医院科室编码
      */
-	@ApiModelProperty(value="医院科室编码")
+    @ApiModelProperty(value = "医院科室编码")
     private String hospitalDeptCode;
 
     /**
      * 医生id
      */
-	@ApiModelProperty(value="医生id")
+    @ApiModelProperty(value = "医生id")
     private Long doctorId;
-	
+
     /**
      * 医生编码
      */
-	@ApiModelProperty(value="医生编码")
+    @ApiModelProperty(value = "医生编码")
     private String doctorCode;
 
     /**
      * 患者id
      */
-	@ApiModelProperty(value="患者id")
+    @ApiModelProperty(value = "患者id")
     private Long patientId;
-	
+
     /**
      * 患者编号
      */
-	@ApiModelProperty(value="患者编号")
+    @ApiModelProperty(value = "患者编号")
     private String patientCode;
-	
+
     /**
      * 患者病历号
      */
-	@ApiModelProperty(value="患者病历号")
+    @ApiModelProperty(value = "患者病历号")
     private String patientIdNo;
 
-	/**
-	 * 患者姓名
-	 */
-	@ApiModelProperty(value="患者姓名")
-	private String patientName;
-    
+    /**
+     * 患者姓名
+     */
+    @ApiModelProperty(value = "患者姓名")
+    private String patientName;
+
     /**
      * 病历分类(1:门诊,2:住院)
      */
-	@ApiModelProperty(value="病历分类(1:门诊,2:住院)")
+    @ApiModelProperty(value = "病历分类(1:门诊,2:住院)")
     private Integer type;
-    
-	/**
-	 * 开始时间
-	 */
-	@ApiModelProperty(value="开始时间,格式为:2018-11-28 17:25:30")
-	@DateTimeFormat(pattern="yyyy-MM-dd hh:mm:ss")
-	private Date startDate;
-	
-	/**
-	 * 结束时间
-	 */
-	@ApiModelProperty(value="结束时间,格式为:2018-11-28 17:25:30")
-	@DateTimeFormat(pattern="yyyy-MM-dd hh:mm:ss")
-	private Date endDate;
-	
-	/**
-	 * 排序类型:1、时间降序;2、时间升序;3、就诊号降序;4、就诊号升序; 
-	 */
-	@ApiModelProperty(value="排序类型:1、时间降序;2、时间升序;3、就诊号降序;4、就诊号升序;")
-	private Integer orderType=1;
-
-	/**
-	 * 有效天数限制
-	 */
-	@ApiModelProperty(value = "有效天数限制")
-	private int dayLimit = 15;
-	   
+
+    /**
+     * 开始时间
+     */
+    @ApiModelProperty(value = "开始时间,格式为:2018-11-28 17:25:30")
+    @DateTimeFormat(pattern = "yyyy-MM-dd hh:mm:ss")
+    private Date startDate;
+
+    /**
+     * 结束时间
+     */
+    @ApiModelProperty(value = "结束时间,格式为:2018-11-28 17:25:30")
+    @DateTimeFormat(pattern = "yyyy-MM-dd hh:mm:ss")
+    private Date endDate;
+
+    /**
+     * 排序类型:1、时间降序;2、时间升序;3、就诊号降序;4、就诊号升序;
+     */
+    @ApiModelProperty(value = "排序类型:1、时间降序;2、时间升序;3、就诊号降序;4、就诊号升序;")
+    private Integer orderType = 1;
+
+    /**
+     * 有效天数限制
+     */
+    @ApiModelProperty(value = "有效天数限制")
+    private int dayLimit = 15;
+
+    /**
+     * 是否查询详情,0-不查(默认) 1-查询
+     */
+    @ApiModelProperty(value = "是否查询详情,0-不查(默认) 1-查询")
+    private Integer isHaveDetail = 0;
+
 }