|
@@ -0,0 +1,477 @@
|
|
|
+package com.diagbot.facade;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.diagbot.client.TranServiceClient;
|
|
|
+import com.diagbot.dto.GetInquiryDetailImgDTO;
|
|
|
+import com.diagbot.dto.GetInquiryDetailSyfDTO;
|
|
|
+import com.diagbot.dto.HisInquirySyfDTO;
|
|
|
+import com.diagbot.dto.InquiryDetailFlatSyfDTO;
|
|
|
+import com.diagbot.dto.RecordCheckSyfDTO;
|
|
|
+import com.diagbot.dto.SaveInquiryDTO;
|
|
|
+import com.diagbot.dto.ScaleDTO;
|
|
|
+import com.diagbot.entity.InquiryDetail;
|
|
|
+import com.diagbot.entity.InquiryEvaluator;
|
|
|
+import com.diagbot.entity.InquiryInfo;
|
|
|
+import com.diagbot.entity.InquiryReport;
|
|
|
+import com.diagbot.entity.Scale;
|
|
|
+import com.diagbot.enums.InquiryQuotedTypeEnum;
|
|
|
+import com.diagbot.enums.IsDeleteEnum;
|
|
|
+import com.diagbot.enums.SexEnum;
|
|
|
+import com.diagbot.exception.CommonErrorCode;
|
|
|
+import com.diagbot.exception.CommonException;
|
|
|
+import com.diagbot.service.impl.InquiryDetailServiceImpl;
|
|
|
+import com.diagbot.service.impl.InquiryInfoServiceImpl;
|
|
|
+import com.diagbot.service.impl.InquiryReportServiceImpl;
|
|
|
+import com.diagbot.service.impl.ScaleServiceImpl;
|
|
|
+import com.diagbot.util.BeanUtil;
|
|
|
+import com.diagbot.util.DateUtil;
|
|
|
+import com.diagbot.util.EntityUtil;
|
|
|
+import com.diagbot.util.ListUtil;
|
|
|
+import com.diagbot.util.StringUtil;
|
|
|
+import com.diagbot.vo.GetInquiryDetailVO;
|
|
|
+import com.diagbot.vo.GetScaleVO;
|
|
|
+import com.diagbot.vo.HisInquirysVO;
|
|
|
+import com.diagbot.vo.RecordCheckVO;
|
|
|
+import com.diagbot.vo.SaveInquirySyfVO;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+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
|
|
|
+ * @time: 2018/8/6 9:11
|
|
|
+ */
|
|
|
+@Component
|
|
|
+public class InquiryInfoSyfFacade extends InquiryInfoServiceImpl {
|
|
|
+
|
|
|
+ @Value("${imageUrl.prefix}")
|
|
|
+ private String imageUrlPrefix;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private InquiryDetailFacade inquiryDetailFacade;
|
|
|
+ @Autowired
|
|
|
+ private InquiryReportFacade inquiryReportFacade;
|
|
|
+ @Autowired
|
|
|
+ private InquiryEvaluatorFacade inquiryEvaluatorFacade;
|
|
|
+ @Autowired
|
|
|
+ @Qualifier("inquiryDetailServiceImpl")
|
|
|
+ private InquiryDetailServiceImpl inquiryDetailServiceImpl;
|
|
|
+ @Autowired
|
|
|
+ @Qualifier("inquiryReportServiceImpl")
|
|
|
+ private InquiryReportServiceImpl inquiryReportServiceImpl;
|
|
|
+ @Autowired
|
|
|
+ @Qualifier("scaleServiceImpl")
|
|
|
+ private ScaleServiceImpl scaleServiceImpl;
|
|
|
+ @Autowired
|
|
|
+ private TranServiceClient tranServiceClient;
|
|
|
+ @Autowired
|
|
|
+ private InquiryQuoteFacade inquiryQuoteFacade;
|
|
|
+ @Autowired
|
|
|
+ private SysSetFacade sysSetFacade;
|
|
|
+ @Autowired
|
|
|
+ private InquiryScaleFacade inquiryScaleFacade;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 问诊记录保存
|
|
|
+ *
|
|
|
+ * @param saveInquirySyfVO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public SaveInquiryDTO saveInquiry(SaveInquirySyfVO saveInquirySyfVO) {
|
|
|
+ SaveInquiryDTO saveInquiryDTO = new SaveInquiryDTO();
|
|
|
+ Date now = DateUtil.now();
|
|
|
+
|
|
|
+ QueryWrapper<InquiryInfo> inquiryInfoQe = new QueryWrapper<>();
|
|
|
+ inquiryInfoQe.eq("is_deleted", IsDeleteEnum.N.getKey());
|
|
|
+ inquiryInfoQe.eq("hospital_dept_id", saveInquirySyfVO.getHospitalDeptId());
|
|
|
+ inquiryInfoQe.eq("hospital_id", saveInquirySyfVO.getHospitalId());
|
|
|
+ inquiryInfoQe.eq("patient_id", saveInquirySyfVO.getPatientId());
|
|
|
+ inquiryInfoQe.eq("is_quoted", 0);
|
|
|
+ inquiryInfoQe.eq(saveInquirySyfVO.getSonHospitalId() != null,
|
|
|
+ "son_hospital_id", saveInquirySyfVO.getSonHospitalId());
|
|
|
+ inquiryInfoQe.eq(saveInquirySyfVO.getDoctorId() != null,
|
|
|
+ "doctor_id", saveInquirySyfVO.getDoctorId());
|
|
|
+ inquiryInfoQe.eq(StringUtil.isNotBlank(saveInquirySyfVO.getInquiryCode()),
|
|
|
+ "inquiry_code", saveInquirySyfVO.getInquiryCode());
|
|
|
+ inquiryInfoQe.orderByDesc("gmt_modified");
|
|
|
+ InquiryInfo inquiryInfo = this.getOne(inquiryInfoQe, false);
|
|
|
+
|
|
|
+ if (inquiryInfo == null) {
|
|
|
+ inquiryInfo = new InquiryInfo();
|
|
|
+ inquiryInfo.setGmtCreate(now);
|
|
|
+ } else {
|
|
|
+ QueryWrapper<InquiryDetail> inquiryDetailQe = new QueryWrapper<>();
|
|
|
+ inquiryDetailQe.eq("inquiry_id", inquiryInfo.getId());
|
|
|
+ inquiryDetailFacade.remove(inquiryDetailQe);
|
|
|
+
|
|
|
+ QueryWrapper<InquiryReport> inquiryReportQe = new QueryWrapper<>();
|
|
|
+ inquiryReportQe.eq("inquiry_id", inquiryInfo.getId());
|
|
|
+ inquiryReportFacade.remove(inquiryReportQe);
|
|
|
+
|
|
|
+ QueryWrapper<Scale> scaleQe = new QueryWrapper<>();
|
|
|
+ scaleQe.eq("inquiry_id", inquiryInfo.getId());
|
|
|
+ inquiryScaleFacade.remove(scaleQe);
|
|
|
+ }
|
|
|
+
|
|
|
+ BeanUtil.copyProperties(saveInquirySyfVO, inquiryInfo);
|
|
|
+ inquiryInfo.setGmtModified(now);
|
|
|
+ saveOrUpdate(inquiryInfo);
|
|
|
+
|
|
|
+ Long inquiryId = inquiryInfo.getId();
|
|
|
+
|
|
|
+ // 问诊明细
|
|
|
+ List<InquiryDetail> inquiryDetailList = BeanUtil.listCopyTo(saveInquirySyfVO.getDetailList(), InquiryDetail.class);
|
|
|
+ inquiryDetailList.forEach(i -> {
|
|
|
+ i.setInquiryId(inquiryId);
|
|
|
+ i.setGmtCreate(now);
|
|
|
+ i.setGmtModified(now);
|
|
|
+ });
|
|
|
+ inquiryDetailServiceImpl.saveBatch(inquiryDetailList);
|
|
|
+
|
|
|
+ // 治疗报告
|
|
|
+ List<InquiryReport> inquiryReportList = BeanUtil.listCopyTo(saveInquirySyfVO.getReportList(), InquiryReport.class);
|
|
|
+ inquiryReportList.forEach(i -> {
|
|
|
+ i.setInquiryId(inquiryId);
|
|
|
+ i.setNarrowImage("0");
|
|
|
+ i.setGmtCreate(now);
|
|
|
+ i.setGmtModified(now);
|
|
|
+ });
|
|
|
+ inquiryReportServiceImpl.saveBatch(inquiryReportList);
|
|
|
+
|
|
|
+ // 量表
|
|
|
+ List<Scale> scaleList = BeanUtil.listCopyTo(saveInquirySyfVO.getScaleList(), Scale.class);
|
|
|
+ scaleList.forEach(i -> {
|
|
|
+ i.setInquiryId(inquiryId);
|
|
|
+ i.setGmtCreate(now);
|
|
|
+ i.setGmtModified(now);
|
|
|
+ });
|
|
|
+ scaleServiceImpl.saveBatch(scaleList);
|
|
|
+
|
|
|
+ saveInquiryDTO.setInquiryId(inquiryId);
|
|
|
+ return saveInquiryDTO;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 问诊记录检查确认
|
|
|
+ *
|
|
|
+ * @param recordCheckVO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public RecordCheckSyfDTO recordCheck(RecordCheckVO recordCheckVO) {
|
|
|
+ RecordCheckSyfDTO recordCheckSyfDTO = new RecordCheckSyfDTO();
|
|
|
+ QueryWrapper<InquiryInfo> inquiryInfoQe = new QueryWrapper<>();
|
|
|
+ inquiryInfoQe.eq("is_deleted", IsDeleteEnum.N.getKey());
|
|
|
+ inquiryInfoQe.eq("hospital_id", recordCheckVO.getHospitalId());
|
|
|
+ inquiryInfoQe.eq("hospital_dept_id", recordCheckVO.getHospitalDeptId());
|
|
|
+ inquiryInfoQe.eq("doctor_id", recordCheckVO.getDoctorId());
|
|
|
+ inquiryInfoQe.eq("patient_id", recordCheckVO.getPatientId());
|
|
|
+ inquiryInfoQe.eq("inquiry_code", recordCheckVO.getInquiryCode());
|
|
|
+ InquiryInfo inquiryInfo = this.getOne(inquiryInfoQe, false);
|
|
|
+
|
|
|
+ if (inquiryInfo == null) {
|
|
|
+ return recordCheckSyfDTO;
|
|
|
+ } else {
|
|
|
+ QueryWrapper<InquiryDetail> inquiryDetailQe = new QueryWrapper<>();
|
|
|
+ inquiryDetailQe.eq("inquiry_id", inquiryInfo.getId());
|
|
|
+ recordCheckSyfDTO.setDetailCount(inquiryDetailFacade.count(inquiryDetailQe));
|
|
|
+
|
|
|
+ QueryWrapper<InquiryEvaluator> inquiryEvaluatorQe = new QueryWrapper<>();
|
|
|
+ inquiryEvaluatorQe.eq("inquiry_id", inquiryInfo.getId());
|
|
|
+ recordCheckSyfDTO.setPhysicalCount(inquiryEvaluatorFacade.count(inquiryEvaluatorQe));
|
|
|
+
|
|
|
+ QueryWrapper<Scale> inquiryScaleQe = new QueryWrapper<>();
|
|
|
+ inquiryScaleQe.eq("inquiry_id", inquiryInfo.getId());
|
|
|
+ recordCheckSyfDTO.setScaleCount(inquiryScaleFacade.count(inquiryScaleQe));
|
|
|
+ }
|
|
|
+ return recordCheckSyfDTO;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 历史病历列表
|
|
|
+ *
|
|
|
+ * @param hisInquirysVO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public List<HisInquirySyfDTO> hisInquirys(HisInquirysVO hisInquirysVO) {
|
|
|
+ if (StringUtil.isBlank(hisInquirysVO.getHospitalCode())) {
|
|
|
+ throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "医院信息(医院id或者医院编码)必传!");
|
|
|
+ }
|
|
|
+
|
|
|
+ QueryWrapper<InquiryInfo> inquiryInfoQe = new QueryWrapper<InquiryInfo>();
|
|
|
+ inquiryInfoQe.eq("is_deleted", IsDeleteEnum.N.getKey());
|
|
|
+ inquiryInfoQe.eq(!sysSetFacade.isQuoteShow(hisInquirysVO.getHospitalCode()),
|
|
|
+ "is_quoted", InquiryQuotedTypeEnum.Disable.getKey());
|
|
|
+ inquiryInfoQe.eq(hisInquirysVO.getHospitalId() != null,
|
|
|
+ "hospital_id", hisInquirysVO.getHospitalId());
|
|
|
+ inquiryInfoQe.eq(StringUtil.isNotBlank(hisInquirysVO.getHospitalCode()),
|
|
|
+ "hospital_code", hisInquirysVO.getHospitalCode());
|
|
|
+
|
|
|
+ if (StringUtil.isNotBlank(hisInquirysVO.getSonHospitalCode())) {
|
|
|
+ inquiryInfoQe.and(qe ->
|
|
|
+ qe.eq("son_hospital_code", hisInquirysVO.getSonHospitalCode())
|
|
|
+ .or()
|
|
|
+ .eq("son_hospital_code", "")
|
|
|
+ .or()
|
|
|
+ .isNull("son_hospital_code"));
|
|
|
+ }
|
|
|
+
|
|
|
+ inquiryInfoQe.eq(hisInquirysVO.getHospitalDeptId() != null,
|
|
|
+ "hospital_dept_id", hisInquirysVO.getHospitalDeptId());
|
|
|
+ inquiryInfoQe.eq(StringUtil.isNotBlank(hisInquirysVO.getHospitalDeptCode()),
|
|
|
+ "hospital_dept_code", hisInquirysVO.getHospitalDeptCode());
|
|
|
+ inquiryInfoQe.eq(hisInquirysVO.getDoctorId() != null,
|
|
|
+ "doctor_id", hisInquirysVO.getDoctorId());
|
|
|
+ inquiryInfoQe.eq(StringUtil.isNotBlank(hisInquirysVO.getDoctorCode()),
|
|
|
+ "doctor_code", hisInquirysVO.getDoctorCode());
|
|
|
+ inquiryInfoQe.eq(hisInquirysVO.getPatientId() != null,
|
|
|
+ "patient_id", hisInquirysVO.getPatientId());
|
|
|
+ inquiryInfoQe.eq(StringUtil.isNotBlank(hisInquirysVO.getPatientCode()),
|
|
|
+ "patient_code", hisInquirysVO.getPatientCode());
|
|
|
+ inquiryInfoQe.eq(StringUtil.isNotBlank(hisInquirysVO.getPatientIdNo()),
|
|
|
+ "patient_id_no", hisInquirysVO.getPatientIdNo());
|
|
|
+ inquiryInfoQe.eq(StringUtil.isNotBlank(hisInquirysVO.getPatientName()),
|
|
|
+ "patient_name", hisInquirysVO.getPatientName());
|
|
|
+ inquiryInfoQe.eq(hisInquirysVO.getType() != null,
|
|
|
+ "type", hisInquirysVO.getType());
|
|
|
+ String day = DateUtil.formatDateTime(DateUtil.getFirstTimeOfDay(DateUtil.addDay(DateUtil.now(),
|
|
|
+ -hisInquirysVO.getDayLimit())));
|
|
|
+ inquiryInfoQe.ge("gmt_modified", day);
|
|
|
+
|
|
|
+ inquiryInfoQe.ge(hisInquirysVO.getStartDate() != null,
|
|
|
+ "gmt_create", hisInquirysVO.getStartDate());
|
|
|
+ inquiryInfoQe.le(hisInquirysVO.getEndDate() != null,
|
|
|
+ "gmt_create", hisInquirysVO.getEndDate());
|
|
|
+
|
|
|
+ if (hisInquirysVO.getOrderType() == null || hisInquirysVO.getOrderType() == 1) {
|
|
|
+ inquiryInfoQe.orderByDesc("gmt_modified");
|
|
|
+ } else if (hisInquirysVO.getOrderType() == 2) {
|
|
|
+ inquiryInfoQe.orderByAsc("gmt_modified");
|
|
|
+ } else if (hisInquirysVO.getOrderType() == 3) {
|
|
|
+ inquiryInfoQe.orderByDesc("inquiry_code");
|
|
|
+ } else if (hisInquirysVO.getOrderType() == 4) {
|
|
|
+ inquiryInfoQe.orderByAsc("inquiry_code");
|
|
|
+ } else {
|
|
|
+ inquiryInfoQe.orderByDesc("gmt_modified");
|
|
|
+ }
|
|
|
+
|
|
|
+ List<HisInquirySyfDTO> hisInquiryDTOList = BeanUtil.listCopyTo(list(inquiryInfoQe), HisInquirySyfDTO.class);
|
|
|
+ hisInquiryDTOList.forEach(i -> {
|
|
|
+ i.setPatientSexMsg(SexEnum.getName(i.getPatientSex()));
|
|
|
+ i.setInquiryDate(i.getGmtModified());
|
|
|
+ i.setInquiryTime(i.getGmtModified());
|
|
|
+ i.setPatientAge(DateUtil.yearCompare(i.getPatientBirthday(), DateUtil.now()));
|
|
|
+ });
|
|
|
+
|
|
|
+ if (ListUtil.isNotEmpty(hisInquiryDTOList) && 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()), null));
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ return hisInquiryDTOList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 病历详情
|
|
|
+ *
|
|
|
+ * @param getInquiryDetailVO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public GetInquiryDetailSyfDTO getInquiryDetail(GetInquiryDetailVO getInquiryDetailVO) {
|
|
|
+ if (StringUtil.isBlank(getInquiryDetailVO.getHospitalCode())) {
|
|
|
+ throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "医院信息(医院id或者医院编码)必传!");
|
|
|
+ }
|
|
|
+ /*if (getInquiryDetailVO.getHospitalDeptId() == null && StringUtil.isBlank(getInquiryDetailVO.getHospitalDeptCode())) {
|
|
|
+ throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "科室信息(科室id或者科室编码)必传!");
|
|
|
+ }
|
|
|
+ if (getInquiryDetailVO.getDoctorId() == null && StringUtil.isBlank(getInquiryDetailVO.getDoctorCode())) {
|
|
|
+ throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "医生信息(医生id或者医生编码)必传!");
|
|
|
+ }*/
|
|
|
+ if (getInquiryDetailVO.getPatientId() == null
|
|
|
+ && StringUtil.isBlank(getInquiryDetailVO.getPatientCode())
|
|
|
+ && (StringUtil.isBlank(getInquiryDetailVO.getPatientIdNo())
|
|
|
+ || StringUtil.isBlank(getInquiryDetailVO.getPatientName()))) {
|
|
|
+ throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "患者信息(患者id或者患者编码或者患者病历号)必传!");
|
|
|
+ }
|
|
|
+
|
|
|
+ QueryWrapper<InquiryInfo> inquiryInfoQe = new QueryWrapper<InquiryInfo>();
|
|
|
+ inquiryInfoQe.eq(getInquiryDetailVO.getInquiryId() != null,
|
|
|
+ "id", getInquiryDetailVO.getInquiryId());
|
|
|
+ inquiryInfoQe.eq("is_deleted", IsDeleteEnum.N.getKey());
|
|
|
+ inquiryInfoQe.eq(!sysSetFacade.isQuoteShow(getInquiryDetailVO.getHospitalCode()),
|
|
|
+ "is_quoted", InquiryQuotedTypeEnum.Disable.getKey());
|
|
|
+ inquiryInfoQe.eq(getInquiryDetailVO.getHospitalId() != null,
|
|
|
+ "hospital_id", getInquiryDetailVO.getHospitalId());
|
|
|
+ inquiryInfoQe.eq(StringUtil.isNotBlank(getInquiryDetailVO.getHospitalCode()),
|
|
|
+ "hospital_code", getInquiryDetailVO.getHospitalCode());
|
|
|
+
|
|
|
+ if (StringUtil.isNotBlank(getInquiryDetailVO.getSonHospitalCode())) {
|
|
|
+ inquiryInfoQe.and(qe ->
|
|
|
+ qe.eq("son_hospital_code", getInquiryDetailVO.getSonHospitalCode())
|
|
|
+ .or()
|
|
|
+ .eq("son_hospital_code", "")
|
|
|
+ .or()
|
|
|
+ .isNull("son_hospital_code"));
|
|
|
+ }
|
|
|
+
|
|
|
+ inquiryInfoQe.eq(getInquiryDetailVO.getHospitalDeptId() != null,
|
|
|
+ "hospital_dept_id", getInquiryDetailVO.getHospitalDeptId());
|
|
|
+ inquiryInfoQe.eq(StringUtil.isNotBlank(getInquiryDetailVO.getHospitalDeptCode()),
|
|
|
+ "hospital_dept_code", getInquiryDetailVO.getHospitalDeptCode());
|
|
|
+ inquiryInfoQe.eq(getInquiryDetailVO.getDoctorId() != null,
|
|
|
+ "doctor_id", getInquiryDetailVO.getDoctorId());
|
|
|
+ inquiryInfoQe.eq(StringUtil.isNotBlank(getInquiryDetailVO.getDoctorCode()),
|
|
|
+ "doctor_code", getInquiryDetailVO.getDoctorCode());
|
|
|
+ inquiryInfoQe.eq(getInquiryDetailVO.getPatientId() != null,
|
|
|
+ "patient_id", getInquiryDetailVO.getPatientId());
|
|
|
+ inquiryInfoQe.eq(StringUtil.isNotBlank(getInquiryDetailVO.getPatientCode()),
|
|
|
+ "patient_code", getInquiryDetailVO.getPatientCode());
|
|
|
+ inquiryInfoQe.eq(StringUtil.isNotBlank(getInquiryDetailVO.getPatientIdNo()),
|
|
|
+ "patient_id_no", getInquiryDetailVO.getPatientIdNo());
|
|
|
+ inquiryInfoQe.eq(StringUtil.isNotBlank(getInquiryDetailVO.getPatientName()),
|
|
|
+ "patient_name", getInquiryDetailVO.getPatientName());
|
|
|
+ inquiryInfoQe.eq(StringUtil.isNotBlank(getInquiryDetailVO.getInquiryCode()),
|
|
|
+ "inquiry_code", getInquiryDetailVO.getInquiryCode());
|
|
|
+ String day = DateUtil.formatDateTime(DateUtil.getFirstTimeOfDay(DateUtil.addDay(DateUtil.now(),
|
|
|
+ -getInquiryDetailVO.getDayLimit())));
|
|
|
+ inquiryInfoQe.ge("gmt_modified", day);
|
|
|
+ inquiryInfoQe.orderByDesc("gmt_modified");
|
|
|
+
|
|
|
+ InquiryInfo inquiryInfo = this.getOne(inquiryInfoQe, false);
|
|
|
+ if (inquiryInfo == null) {
|
|
|
+ throw new CommonException(CommonErrorCode.NOT_EXISTS, "该病历不存在!");
|
|
|
+ }
|
|
|
+
|
|
|
+ QueryWrapper<InquiryDetail> inquiryDetailQe = new QueryWrapper<>();
|
|
|
+ inquiryDetailQe.eq("inquiry_id", inquiryInfo.getId());
|
|
|
+ List<InquiryDetail> inquiryDetailList = inquiryDetailFacade.list(inquiryDetailQe);
|
|
|
+
|
|
|
+ QueryWrapper<InquiryReport> inquiryReportQe = new QueryWrapper<>();
|
|
|
+ inquiryReportQe.eq("inquiry_id", inquiryInfo.getId());
|
|
|
+ List<InquiryReport> inquiryReportList = inquiryReportFacade.list(inquiryReportQe);
|
|
|
+
|
|
|
+ QueryWrapper<InquiryEvaluator> inquiryEvaluatorQe = new QueryWrapper<>();
|
|
|
+ inquiryEvaluatorQe.eq("inquiry_id", inquiryInfo.getId());
|
|
|
+ inquiryEvaluatorQe.orderByDesc("gmt_modified");
|
|
|
+ inquiryEvaluatorQe.last("limit 0,1");
|
|
|
+ List<InquiryEvaluator> inquiryEvaluatorList = inquiryEvaluatorFacade.list(inquiryEvaluatorQe);
|
|
|
+
|
|
|
+ QueryWrapper<Scale> scaleQe = new QueryWrapper<>();
|
|
|
+ scaleQe.eq("inquiry_id", inquiryInfo.getId());
|
|
|
+ List<Scale> scaleList = inquiryScaleFacade.list(scaleQe);
|
|
|
+
|
|
|
+ GetInquiryDetailSyfDTO getInquiryDetailDTO = new GetInquiryDetailSyfDTO();
|
|
|
+ BeanUtil.copyProperties(inquiryInfo, getInquiryDetailDTO);
|
|
|
+ getInquiryDetailDTO.setPatientSexMsg(SexEnum.getName(inquiryInfo.getPatientSex()));
|
|
|
+ getInquiryDetailDTO.setInquiryDate(inquiryInfo.getGmtModified());
|
|
|
+ getInquiryDetailDTO.setInquiryTime(inquiryInfo.getGmtModified());
|
|
|
+ getInquiryDetailDTO.setPatientAge(DateUtil.yearCompare(inquiryInfo.getPatientBirthday(), DateUtil.now()));
|
|
|
+
|
|
|
+ BeanUtil.copyProperties(
|
|
|
+ getInquiryDetailFlat(inquiryDetailList, inquiryReportList, inquiryEvaluatorList, scaleList),
|
|
|
+ getInquiryDetailDTO);
|
|
|
+
|
|
|
+ return getInquiryDetailDTO;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取预问诊病历详情
|
|
|
+ *
|
|
|
+ * @param inquiryDetailList 病历明细
|
|
|
+ * @param inquiryReportList 报告图
|
|
|
+ * @param inquiryEvaluatorList 体质辨识
|
|
|
+ * @param scaleList 量表结果
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private InquiryDetailFlatSyfDTO getInquiryDetailFlat(List<InquiryDetail> inquiryDetailList,
|
|
|
+ List<InquiryReport> inquiryReportList,
|
|
|
+ List<InquiryEvaluator> inquiryEvaluatorList,
|
|
|
+ List<Scale> scaleList) {
|
|
|
+ InquiryDetailFlatSyfDTO inquiryDetailFlatSyfDTO = new InquiryDetailFlatSyfDTO();
|
|
|
+
|
|
|
+ if (ListUtil.isNotEmpty(inquiryDetailList)) {
|
|
|
+ Map<Integer, InquiryDetail> inquiryDetailMap
|
|
|
+ = EntityUtil.makeEntityMap(inquiryDetailList, "type");
|
|
|
+ if (null != inquiryDetailMap.get(1)) {
|
|
|
+ inquiryDetailFlatSyfDTO.setChiefComplaint(inquiryDetailMap.get(1).getContentValue());
|
|
|
+ }
|
|
|
+ if (null != inquiryDetailMap.get(2)) {
|
|
|
+ inquiryDetailFlatSyfDTO.setXbs(inquiryDetailMap.get(2).getContentValue());
|
|
|
+ }
|
|
|
+ if (null != inquiryDetailMap.get(3)) {
|
|
|
+ inquiryDetailFlatSyfDTO.setQts(inquiryDetailMap.get(3).getContentValue());
|
|
|
+ }
|
|
|
+ if (null != inquiryDetailMap.get(4)) {
|
|
|
+ inquiryDetailFlatSyfDTO.setSupplement(inquiryDetailMap.get(4).getContentValue());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ inquiryDetailFlatSyfDTO.setPhysicalRes(
|
|
|
+ ListUtil.isNotEmpty(inquiryEvaluatorList) ?
|
|
|
+ inquiryEvaluatorList.stream()
|
|
|
+ .max(Comparator.comparing(InquiryEvaluator::getGmtModified))
|
|
|
+ .map(i -> i.getPhysicalRes())
|
|
|
+ .get() :
|
|
|
+ null
|
|
|
+ );
|
|
|
+ if (ListUtil.isNotEmpty(inquiryReportList)) {
|
|
|
+ inquiryReportList.stream()
|
|
|
+ .sorted(Comparator.comparing(InquiryReport::getOrderNum))
|
|
|
+ .forEach(inquiryReport -> {
|
|
|
+ if (StringUtil.isNotBlank(inquiryReport.getOriginalImage())) {
|
|
|
+ inquiryReport.setOriginalImage(imageUrlPrefix + inquiryReport.getOriginalImage());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ inquiryDetailFlatSyfDTO.setImageList(BeanUtil.listCopyTo(inquiryReportList, GetInquiryDetailImgDTO.class));
|
|
|
+ }
|
|
|
+ if (ListUtil.isNotEmpty(scaleList)) {
|
|
|
+ inquiryDetailFlatSyfDTO.setScaleList(BeanUtil.listCopyTo(scaleList, ScaleDTO.class));
|
|
|
+ }
|
|
|
+ return inquiryDetailFlatSyfDTO;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取量表数据
|
|
|
+ *
|
|
|
+ * @param getScaleVO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public ScaleDTO getScale(GetScaleVO getScaleVO) {
|
|
|
+ ScaleDTO scaleDTO = new ScaleDTO();
|
|
|
+ Scale scale = inquiryScaleFacade.getOne(new QueryWrapper<Scale>().lambda()
|
|
|
+ .eq(Scale::getIsDeleted, IsDeleteEnum.N.getKey())
|
|
|
+ .eq(Scale::getInquiryId, getScaleVO.getInquiryId())
|
|
|
+ .eq(Scale::getScaleName, getScaleVO.getScaleName()), false);
|
|
|
+ if (scale == null) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ BeanUtil.copyProperties(scale, scaleDTO);
|
|
|
+ return scaleDTO;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|