Browse Source

历史病历修改

rgb 6 years ago
parent
commit
18be43dbb5

+ 21 - 0
common/src/main/java/com/diagbot/util/DateUtil.java

@@ -663,4 +663,25 @@ public class DateUtil {
         calendar.setTime(date);
         return calendar.getTimeInMillis();
     }
+    
+    /**
+     * 计算2个日期相差多少年
+     * @param fromDate
+     * @param toDate
+     * @return
+     */
+    public static Integer yearCompare(Date fromDate,Date toDate){
+    	if(fromDate==null||toDate==null){
+    		return null;
+    	}
+    	Calendar  from  =  Calendar.getInstance();
+        from.setTime(fromDate);
+        Calendar  to  =  Calendar.getInstance();
+        to.setTime(toDate);
+        int fromYear = from.get(Calendar.YEAR);
+        int toYear = to.get(Calendar.YEAR);
+        int year = toYear  -  fromYear;
+        return year;
+    }
+    
 }

+ 59 - 7
icss-service/src/main/java/com/diagbot/dto/HisInquiryDTO.java

@@ -1,7 +1,9 @@
 package com.diagbot.dto;
 
 import java.util.Date;
+import java.util.List;
 
+import com.diagbot.entity.InquiryDetail;
 import com.fasterxml.jackson.annotation.JsonFormat;
 
 import io.swagger.annotations.ApiModel;
@@ -26,9 +28,9 @@ public class HisInquiryDTO{
 	private Long id;
 	
     /**
-     * 就诊序列
+     * 门诊
      */
-	@ApiModelProperty(value="就诊序列号")
+	@ApiModelProperty(value="门诊号")
     private String inquiryCode;
 
     /**
@@ -50,9 +52,9 @@ public class HisInquiryDTO{
     private String diagnose;
 
     /**
-     * 类型:1:结构化 2:文本模式
+     * 类型:0:结构化 1:文本模式
      */
-	@ApiModelProperty(value="类型:1:结构化 2:文本模式")
+	@ApiModelProperty(value="类型:0:结构化 1:文本模式")
     private Integer sign;
 
     /**
@@ -63,10 +65,60 @@ public class HisInquiryDTO{
 	
 	
 	/**
-	 * 病历时间
+	 * 就诊日期
 	 */
 	@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
-	@ApiModelProperty(value="病历时间")
-	private Date gmtCreate;
+	@ApiModelProperty(value="就诊日期")
+	private Date inquiryDate;
+	
+	/**
+	 * 就诊时间
+	 */
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+	@ApiModelProperty(value="就诊时间")
+	private Date inquiryTime;
+	
+    /**
+     * 医院科室名称
+     */
+	@ApiModelProperty(value="医院科室名称")
+    private String hospitalDeptName;
+    
+    /**
+     * 医生姓名
+     */
+	@ApiModelProperty(value="医生姓名")
+    private String doctorName;
+    
+    /**
+     * 病人姓名
+     */
+	@ApiModelProperty(value="病人姓名")
+    private String patientName;
+	
+    /**
+     * 病人性别
+     */
+	@ApiModelProperty(value="病人性别")
+    private String patientSex;
+	
+    /**
+     * 病人年龄
+     */
+	@ApiModelProperty(value="病人年龄")
+    private Integer patientAge;
+	
+    /**
+     * 病人证件号码
+     */
+	@ApiModelProperty(value="病人证件号码")
+    private String patientIdNo;
+	
+	/**
+     * 病历明细
+     */
+	@ApiModelProperty(value="病历明细")
+	private List<InquiryDetail> detailList;
+	
 	
 }

+ 9 - 8
icss-service/src/main/java/com/diagbot/entity/DoctorInfo.java

@@ -74,7 +74,7 @@ public class DoctorInfo implements Serializable {
     /**
      * 医生性别
      */
-    private String sex;
+    private Integer sex;
 
     /**
      * 证件类型
@@ -171,14 +171,15 @@ public class DoctorInfo implements Serializable {
     public void setName(String name) {
         this.name = name;
     }
-    public String getSex() {
-        return sex;
-    }
+    public Integer getSex() {
+		return sex;
+	}
 
-    public void setSex(String sex) {
-        this.sex = sex;
-    }
-    public String getIdType() {
+	public void setSex(Integer sex) {
+		this.sex = sex;
+	}
+
+	public String getIdType() {
         return idType;
     }
 

+ 10 - 8
icss-service/src/main/java/com/diagbot/entity/PatientInfo.java

@@ -69,7 +69,7 @@ public class PatientInfo implements Serializable {
     /**
      * 性别
      */
-    private String sex;
+    private Integer sex;
 
     /**
      * 出生日期
@@ -209,14 +209,16 @@ public class PatientInfo implements Serializable {
     public void setName(String name) {
         this.name = name;
     }
-    public String getSex() {
-        return sex;
-    }
 
-    public void setSex(String sex) {
-        this.sex = sex;
-    }
-    public Date getBirthday() {
+    public Integer getSex() {
+		return sex;
+	}
+
+	public void setSex(Integer sex) {
+		this.sex = sex;
+	}
+
+	public Date getBirthday() {
         return birthday;
     }
 

+ 51 - 0
icss-service/src/main/java/com/diagbot/enums/SexTypeEnum.java

@@ -0,0 +1,51 @@
+package com.diagbot.enums;
+
+import com.diagbot.core.KeyedNamed;
+
+import lombok.Setter;
+/**
+ * 
+ * @author rgb
+ * @Description: TODO
+ * @date 2018年12月11日 下午2:31:42
+ */
+public enum SexTypeEnum implements KeyedNamed {
+    Disable(1, "男"),
+    Enable(2, "女");
+
+    @Setter
+    private Integer key;
+
+    @Setter
+    private String name;
+
+    SexTypeEnum(Integer key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static SexTypeEnum getEnum(Integer key) {
+        for (SexTypeEnum item : SexTypeEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(Integer key) {
+        SexTypeEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    @Override
+    public int getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+}
+

+ 18 - 0
icss-service/src/main/java/com/diagbot/facade/HospitalDeptFacade.java

@@ -0,0 +1,18 @@
+/**
+ * 
+ */
+package com.diagbot.facade;
+
+import org.springframework.stereotype.Component;
+
+import com.diagbot.service.impl.HospitalDeptServiceImpl;
+
+/**
+ * @Description
+ * @author rgb
+ * @time 2018年12月11日上午11:32:13
+ */
+@Component
+public class HospitalDeptFacade extends HospitalDeptServiceImpl {
+
+}

+ 15 - 1
icss-service/src/main/java/com/diagbot/facade/InquiryDetailFacade.java

@@ -1,13 +1,15 @@
 package com.diagbot.facade;
 
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
-import com.diagbot.util.ListUtil;
 import org.springframework.stereotype.Component;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.diagbot.entity.InquiryDetail;
 import com.diagbot.service.impl.InquiryDetailServiceImpl;
+import com.diagbot.util.ListUtil;
 
 /**
  * @Description
@@ -49,5 +51,17 @@ public class InquiryDetailFacade extends InquiryDetailServiceImpl {
 		return this.list(queryWrapper);
 	}
 	
+	/**
+	 * 根据病历id集合获取病历明细
+	 * @param inquiryIds
+	 * @return
+	 */
+	public Map<Long,List<InquiryDetail>> getDetailsByInquryIds(List<Long> inquiryIds){
+		QueryWrapper<InquiryDetail> queryWrapper = new QueryWrapper<InquiryDetail>();
+		queryWrapper.eq("is_deleted", "N").in("inquiry_id", inquiryIds);
+		List<InquiryDetail> inquiryDetails = this.list(queryWrapper);
+		return inquiryDetails.stream().collect(Collectors.groupingBy(InquiryDetail::getInquiryId));
+	}
+	
 
 }

+ 54 - 6
icss-service/src/main/java/com/diagbot/facade/InquiryInfoFacade.java

@@ -5,28 +5,34 @@ import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
+import java.util.stream.Collectors;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.diagbot.dto.GetInquiryDetailDTO;
 import com.diagbot.dto.HisInquiryDTO;
 import com.diagbot.dto.ReadInquiryDTO;
 import com.diagbot.dto.SaveInquiryDTO;
+import com.diagbot.entity.DoctorInfo;
+import com.diagbot.entity.HospitalDept;
 import com.diagbot.entity.HospitalInfo;
 import com.diagbot.entity.InquiryDetail;
 import com.diagbot.entity.InquiryInfo;
 import com.diagbot.entity.PatientInfo;
+import com.diagbot.enums.SexTypeEnum;
 import com.diagbot.service.impl.InquiryInfoServiceImpl;
 import com.diagbot.util.BeanUtil;
+import com.diagbot.util.DateUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.vo.GetInquiryDetailVO;
 import com.diagbot.vo.HisInquirysVO;
 import com.diagbot.vo.ReadInquiryVO;
 import com.diagbot.vo.SaveInquiryDetailVO;
 import com.diagbot.vo.SaveInquiryVO;
-import org.springframework.transaction.annotation.Transactional;
 
 /**
  * @Description
@@ -42,6 +48,12 @@ public class InquiryInfoFacade extends InquiryInfoServiceImpl {
 	private HospitalInfoFacade hospitalInfoFacade;
 	@Autowired
 	private PatientInfoFacade patientInfoFacade;
+	@Autowired
+	private DoctorInfoFacade doctorInfoFacade;
+	@Autowired
+	private HospitalDeptFacade hospitalDeptFacade;
+	
+	
 	
 	/**
 	 * 问诊记录保存
@@ -137,14 +149,19 @@ public class InquiryInfoFacade extends InquiryInfoServiceImpl {
 	 */
 	public List<HisInquiryDTO> hisInquirys(HisInquirysVO hisInquirysVO){
 		QueryWrapper<InquiryInfo> queryWrapper = new QueryWrapper<InquiryInfo>();
+		queryWrapper.eq("is_deleted", "N");
 		queryWrapper.eq("hospital_id", hisInquirysVO.getHospitalId());
 		queryWrapper.eq("hospital_dept_id", hisInquirysVO.getHospitalDeptId());
 		queryWrapper.eq("doctor_id", hisInquirysVO.getDoctorId());
-		queryWrapper.eq("type", hisInquirysVO.getType());
-		queryWrapper.eq("sign", hisInquirysVO.getSign());
 		if(hisInquirysVO.getPatientId()!=null){
 			queryWrapper.eq("patient_id", hisInquirysVO.getPatientId());
 		}
+		if(hisInquirysVO.getType()!=null){
+			queryWrapper.eq("type", hisInquirysVO.getType());
+		}
+		if(hisInquirysVO.getSign()!=null){
+			queryWrapper.eq("sign", hisInquirysVO.getSign());
+		}
 		if(hisInquirysVO.getStartDate()!=null){
 			queryWrapper.ge("gmt_create", hisInquirysVO.getStartDate());
 		}
@@ -156,10 +173,41 @@ public class InquiryInfoFacade extends InquiryInfoServiceImpl {
 		}else if(hisInquirysVO.getOrderType()==2){
 			queryWrapper.orderByAsc("gmt_create");
 		}
-		
 		List<InquiryInfo> inquiryInfoList = this.list(queryWrapper);
-
-		List<HisInquiryDTO> hisInquiryDTOList = BeanUtil.listCopyTo(inquiryInfoList, HisInquiryDTO.class);
+		if(inquiryInfoList.size()==0){
+			return null;
+		}
+		
+		List<Long> hospitalDeptIdList = inquiryInfoList.stream().map(i->i.getHospitalDeptId()).collect(Collectors.toList());
+		List<Long> doctorIdList = inquiryInfoList.stream().map(i->i.getDoctorId()).collect(Collectors.toList());
+		List<Long> patientIdList = inquiryInfoList.stream().map(i->i.getPatientId()).collect(Collectors.toList());
+		List<Long> inquiryIdList = inquiryInfoList.stream().map(i->i.getId()).collect(Collectors.toList());
+		
+		Map<Long,HospitalDept> hospitalDeptMap = hospitalDeptFacade.listByIds(hospitalDeptIdList).stream().filter(i->i.getIsDeleted().equals("N")&&i.getStatus()==1).collect(Collectors.toMap(HospitalDept::getId, i->i));
+		Map<Long,DoctorInfo> doctorInfoMap = doctorInfoFacade.listByIds(doctorIdList).stream().filter(i->i.getIsDeleted().equals("N")).collect(Collectors.toMap(DoctorInfo::getId, i->i));
+		Map<Long,PatientInfo> patientInfoMap = patientInfoFacade.listByIds(patientIdList).stream().filter(i->i.getIsDeleted().equals("N")).collect(Collectors.toMap(PatientInfo::getId, i->i));
+		Map<Long,List<InquiryDetail>> inquiryDetailMap = inquiryDetailFacade.getDetailsByInquryIds(inquiryIdList);
+		
+		List<HisInquiryDTO> hisInquiryDTOList = new ArrayList<>();
+		inquiryInfoList.forEach(i->{
+			HisInquiryDTO hisInquiryDTO = new HisInquiryDTO();
+			BeanUtil.copyProperties(i, hisInquiryDTO);
+			hisInquiryDTO.setInquiryDate(i.getGmtCreate());
+			hisInquiryDTO.setInquiryTime(i.getGmtCreate());
+			hisInquiryDTO.setHospitalDeptName(Optional.ofNullable(hospitalDeptMap.get(i.getHospitalDeptId())).map(t->t.getName()).orElse(null));
+			hisInquiryDTO.setDoctorName(Optional.ofNullable(doctorInfoMap.get(i.getDoctorId())).map(t->t.getName()).orElse(null));
+			PatientInfo patientInfo = patientInfoMap.get(i.getPatientId());
+			if(patientInfo!=null){
+				hisInquiryDTO.setPatientName(patientInfo.getName());
+				hisInquiryDTO.setPatientIdNo(patientInfo.getIdNo());
+				hisInquiryDTO.setPatientSex(SexTypeEnum.getName(patientInfo.getSex()));
+				hisInquiryDTO.setPatientAge(DateUtil.yearCompare(patientInfo.getBirthday(),DateUtil.now()));
+			}
+			
+			hisInquiryDTO.setDetailList(inquiryDetailMap.get(i.getId()));
+			hisInquiryDTOList.add(hisInquiryDTO);
+		});
+		
 		
 		return hisInquiryDTOList;
 	}

+ 1 - 0
icss-service/src/main/java/com/diagbot/facade/PatientInfoFacade.java

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.diagbot.dto.GetTopPatientInfoDTO;
 import com.diagbot.dto.PatientInfoDTO;
 import com.diagbot.entity.PatientInfo;
+import com.diagbot.enums.SexTypeEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.service.impl.PatientInfoServiceImpl;

+ 3 - 3
icss-service/src/main/java/com/diagbot/vo/HisInquirysVO.java

@@ -52,13 +52,13 @@ public class HisInquirysVO {
      * 病历分类(1:门诊,2:住院)
      */
 	@ApiModelProperty(value="病历分类(1:门诊,2:住院)")
-    private Integer type=1;
+    private Integer type;
     
     /**
      * 内容输入类型:1:结构化 2:文本模式
      */
-	@ApiModelProperty(value="内容输入类型:1:结构化 2:文本模式")
-    private Integer sign=1;
+	@ApiModelProperty(value="内容输入类型:0:结构化 1:文本模式")
+    private Integer sign;
     
 	/**
 	 * 开始时间

+ 1 - 1
icss-service/src/main/resources/mapper/PatientInfoMapper.xml

@@ -52,7 +52,7 @@
 		d.id as patientId,
 		d.`code` as patientCode,
 		d.`name` as patientName,
-		d.sex as patientSex,
+		case when d.sex=1 then '男' when d.sex=2 then '女' else '未知' end as patientSex,
 		d.id_no as patientIdNo,
 		ROUND(DATEDIFF(CURDATE(), d.birthday)/365.2422) as patientAge
 		FROM tran_hospital_info a JOIN tran_hospital_dept b