|
@@ -0,0 +1,183 @@
|
|
|
+package com.diagbot.aggregate;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.diagbot.client.TranServiceClient;
|
|
|
+import com.diagbot.dto.HisInquiryDTO;
|
|
|
+import com.diagbot.dto.HisInquirysForDjDTO;
|
|
|
+import com.diagbot.dto.RespDTO;
|
|
|
+import com.diagbot.entity.DoctorInfo;
|
|
|
+import com.diagbot.entity.HospitalDept;
|
|
|
+import com.diagbot.entity.InquiryDetail;
|
|
|
+import com.diagbot.entity.InquiryInfo;
|
|
|
+import com.diagbot.entity.PatientInfo;
|
|
|
+import com.diagbot.enums.IsDeleteEnum;
|
|
|
+import com.diagbot.enums.SexTypeEnum;
|
|
|
+import com.diagbot.facade.InquiryDetailFacade;
|
|
|
+import com.diagbot.util.BeanUtil;
|
|
|
+import com.diagbot.util.DateUtil;
|
|
|
+import com.diagbot.util.ListUtil;
|
|
|
+import com.diagbot.util.RespDTOUtil;
|
|
|
+import io.github.lvyahui8.spring.annotation.DataConsumer;
|
|
|
+import io.github.lvyahui8.spring.annotation.DataProvider;
|
|
|
+import io.github.lvyahui8.spring.annotation.InvokeParameter;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Optional;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @Description:
|
|
|
+ * @author: rengb
|
|
|
+ * @time: 2019/10/23 10:18
|
|
|
+ */
|
|
|
+@Component
|
|
|
+public class InquiryInfoAggregate {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private TranServiceClient tranServiceClient;
|
|
|
+ @Autowired
|
|
|
+ private InquiryDetailFacade inquiryDetailFacade;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 历史病历列表-添加详情
|
|
|
+ *
|
|
|
+ * @param inquiryInfoList 病历集合
|
|
|
+ * @param hospitalDeptMap 科室信息
|
|
|
+ * @param doctorInfoMap 医生信息
|
|
|
+ * @param patientInfoMap 患者信息
|
|
|
+ * @param inquiryDetailMap 病历明细信息
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @DataProvider("hisInquirysAddDetail")
|
|
|
+ public List<HisInquiryDTO> hisInquirysAddDetail(
|
|
|
+ @InvokeParameter("inquiryInfoList") List<InquiryInfo> inquiryInfoList,
|
|
|
+ @DataConsumer("hospitalDeptInfoMapByIds") Map<Long, HospitalDept> hospitalDeptMap,
|
|
|
+ @DataConsumer("doctorInfoMapByIds") Map<Long, DoctorInfo> doctorInfoMap,
|
|
|
+ @DataConsumer("patientInfoMapByIds") Map<Long, PatientInfo> patientInfoMap,
|
|
|
+ @DataConsumer("getDetailsByInquryIds") Map<Long, List<InquiryDetail>> inquiryDetailMap) {
|
|
|
+
|
|
|
+ List<HisInquiryDTO> hisInquiryDTOList = new ArrayList<>();
|
|
|
+ inquiryInfoList.forEach(i -> {
|
|
|
+ HisInquiryDTO hisInquiryDTO = new HisInquiryDTO();
|
|
|
+ BeanUtil.copyProperties(i, hisInquiryDTO);
|
|
|
+ hisInquiryDTO.setInquiryDate(i.getGmtModified());
|
|
|
+ hisInquiryDTO.setInquiryTime(i.getGmtModified());
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取科室信息map
|
|
|
+ *
|
|
|
+ * @param inquiryInfoList 病历集合
|
|
|
+ * @return 科室信息
|
|
|
+ */
|
|
|
+ @DataProvider("hospitalDeptInfoMapByIds")
|
|
|
+ public Map<Long, HospitalDept> hospitalDeptInfoMapByIds(
|
|
|
+ @InvokeParameter("inquiryInfoList") List<InquiryInfo> inquiryInfoList) {
|
|
|
+ List<Long> hospitalDeptIdList = inquiryInfoList.stream()
|
|
|
+ .map(i -> i.getHospitalDeptId()).distinct().collect(Collectors.toList());
|
|
|
+ RespDTO<Map<Long, HospitalDept>> retData = tranServiceClient.hospitalDeptInfoMapByIds(hospitalDeptIdList);
|
|
|
+ RespDTOUtil.respNGDeal(retData, "获取科室信息失败");
|
|
|
+ return retData.data;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取医生信息map
|
|
|
+ *
|
|
|
+ * @param inquiryInfoList 病历集合
|
|
|
+ * @return 医生信息
|
|
|
+ */
|
|
|
+ @DataProvider("doctorInfoMapByIds")
|
|
|
+ public Map<Long, DoctorInfo> doctorInfoMapByIds(
|
|
|
+ @InvokeParameter("inquiryInfoList") List<InquiryInfo> inquiryInfoList) {
|
|
|
+ List<Long> doctorIdList = inquiryInfoList.stream()
|
|
|
+ .map(i -> i.getDoctorId()).distinct().collect(Collectors.toList());
|
|
|
+ RespDTO<Map<Long, DoctorInfo>> retData = tranServiceClient.doctorInfoMapByIds(doctorIdList);
|
|
|
+ RespDTOUtil.respNGDealCover(retData, "获取医生信息失败");
|
|
|
+ return retData.data;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取病人信息map
|
|
|
+ *
|
|
|
+ * @param inquiryInfoList 病历集合
|
|
|
+ * @return 病人信息
|
|
|
+ */
|
|
|
+ @DataProvider("patientInfoMapByIds")
|
|
|
+ public Map<Long, PatientInfo> patientInfoMapByIds(
|
|
|
+ @InvokeParameter("inquiryInfoList") List<InquiryInfo> inquiryInfoList) {
|
|
|
+ List<Long> patientIdList = inquiryInfoList.stream()
|
|
|
+ .map(i -> i.getPatientId()).distinct().collect(Collectors.toList());
|
|
|
+ RespDTO<Map<Long, PatientInfo>> retData = tranServiceClient.patientInfoMapByIds(patientIdList);
|
|
|
+ RespDTOUtil.respNGDealCover(retData, "获取患者信息失败");
|
|
|
+ return retData.data;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取病历明细map
|
|
|
+ *
|
|
|
+ * @param inquiryInfoList 病历集合
|
|
|
+ * @return 病历明细
|
|
|
+ */
|
|
|
+ @DataProvider("getDetailsByInquryIds")
|
|
|
+ public Map<Long, List<InquiryDetail>> getDetailsByInquryIds(
|
|
|
+ @InvokeParameter("inquiryInfoList") List<InquiryInfo> inquiryInfoList) {
|
|
|
+ List<Long> inquiryIdList = inquiryInfoList.stream()
|
|
|
+ .map(i -> i.getId()).distinct().collect(Collectors.toList());
|
|
|
+ if (ListUtil.isNotEmpty(inquiryIdList)) {
|
|
|
+ QueryWrapper<InquiryDetail> queryWrapper = new QueryWrapper<InquiryDetail>();
|
|
|
+ queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
+ .in("inquiry_id", inquiryIdList);
|
|
|
+ List<InquiryDetail> inquiryDetails = inquiryDetailFacade.list(queryWrapper);
|
|
|
+ return inquiryDetails.stream().collect(Collectors.groupingBy(InquiryDetail::getInquiryId));
|
|
|
+ }
|
|
|
+ return new HashMap<>();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 对接-历史病历列表-添加详情
|
|
|
+ *
|
|
|
+ * @param inquiryInfoList
|
|
|
+ * @param inquiryDetailMap
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @DataProvider("hisInquirysForDjAddDetail")
|
|
|
+ public List<HisInquirysForDjDTO> hisInquirysForDjAddDetail(
|
|
|
+ @InvokeParameter("inquiryInfoList") List<InquiryInfo> inquiryInfoList,
|
|
|
+ @DataConsumer("getDetailsByInquryIds") Map<Long, List<InquiryDetail>> inquiryDetailMap) {
|
|
|
+ List<HisInquirysForDjDTO> hisInquirysForDjDTOList = BeanUtil.listCopyTo(
|
|
|
+ inquiryInfoList, HisInquirysForDjDTO.class);
|
|
|
+
|
|
|
+ hisInquirysForDjDTOList.forEach(i -> {
|
|
|
+ i.setContentList(inquiryDetailMap.get(i.getId()).stream()
|
|
|
+ .map(k -> k.getContentValue()).collect(Collectors.toList()));
|
|
|
+ });
|
|
|
+ return hisInquirysForDjDTOList;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|