|
@@ -0,0 +1,446 @@
|
|
|
+package com.diagbot.facade;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.diagbot.dto.GetTopPatientInfoDjDTO;
|
|
|
+import com.diagbot.dto.RegisterInfoDTO;
|
|
|
+import com.diagbot.dto.SignInDTO;
|
|
|
+import com.diagbot.entity.DoctorInfo;
|
|
|
+import com.diagbot.entity.HospitalDept;
|
|
|
+import com.diagbot.entity.HospitalInfo;
|
|
|
+import com.diagbot.entity.PatientInfo;
|
|
|
+import com.diagbot.entity.SysSet;
|
|
|
+import com.diagbot.enums.SysTypeEnum;
|
|
|
+import com.diagbot.enums.VisibleIdTypeEnum;
|
|
|
+import com.diagbot.exception.CommonException;
|
|
|
+import com.diagbot.exception.ServiceErrorCode;
|
|
|
+import com.diagbot.idc.VisibleIdCreater;
|
|
|
+import com.diagbot.service.DoctorInfoService;
|
|
|
+import com.diagbot.service.HospitalDeptService;
|
|
|
+import com.diagbot.service.impl.PatientInfoServiceImpl;
|
|
|
+import com.diagbot.util.BeanUtil;
|
|
|
+import com.diagbot.util.DateUtil;
|
|
|
+import com.diagbot.util.IdCard;
|
|
|
+import com.diagbot.util.ListUtil;
|
|
|
+import com.diagbot.util.StringUtil;
|
|
|
+import com.diagbot.vo.GetTopPatientInfoDjVO;
|
|
|
+import com.diagbot.vo.InquiryQuoteVO;
|
|
|
+import com.diagbot.vo.SignInVO;
|
|
|
+import com.google.common.collect.Lists;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.beans.factory.annotation.Qualifier;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @Description: 对接-患者业务逻辑
|
|
|
+ * @author: wangyu
|
|
|
+ * @time: 2018/11/19 13:19
|
|
|
+ */
|
|
|
+@Component
|
|
|
+public class PatientInfoDjFacade extends PatientInfoServiceImpl {
|
|
|
+ @Autowired
|
|
|
+ private HospitalInfoFacade hospitalInfoFacade;
|
|
|
+ @Autowired
|
|
|
+ private HospitalDeptFacade hospitalDeptFacade;
|
|
|
+ @Autowired
|
|
|
+ @Qualifier("hospitalDeptServiceImpl")
|
|
|
+ private HospitalDeptService hospitalDeptService;
|
|
|
+ @Autowired
|
|
|
+ private DoctorInfoFacade doctorInfoFacade;
|
|
|
+ @Autowired
|
|
|
+ @Qualifier("doctorInfoServiceImpl")
|
|
|
+ private DoctorInfoService doctorInfoService;
|
|
|
+ @Autowired
|
|
|
+ private SysSetFacade sysSetFacade;
|
|
|
+ @Autowired
|
|
|
+ private VisibleIdCreater visibleIdCreater;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 对接-页面顶部病人医生科室信息——查询
|
|
|
+ *
|
|
|
+ * @param getTopPatientInfoDjVO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public GetTopPatientInfoDjDTO getTopPatientInfoDj(GetTopPatientInfoDjVO getTopPatientInfoDjVO) {
|
|
|
+ GetTopPatientInfoDjDTO getTopPatientInfoDjDTO = this.baseMapper.getTopPatientInfoDj(getTopPatientInfoDjVO);
|
|
|
+ getTopPatientInfoDjDTO.setSystemTime(DateUtil.now());
|
|
|
+ getTopPatientInfoDjDTO.setRecordId(getTopPatientInfoDjVO.getRecordId());
|
|
|
+ getTopPatientInfoDjDTO.setPatientAge(DateUtil.yearCompare(getTopPatientInfoDjDTO.getBirthday(), DateUtil.now()));
|
|
|
+
|
|
|
+ List<String> hospitalCodeList = Lists.newArrayList();
|
|
|
+ hospitalCodeList.add(getTopPatientInfoDjVO.getHospitalCode());
|
|
|
+ if (StringUtil.isNotBlank(getTopPatientInfoDjVO.getSonHospitalCode())) {
|
|
|
+ hospitalCodeList.add(getTopPatientInfoDjVO.getSonHospitalCode());
|
|
|
+ }
|
|
|
+ QueryWrapper<HospitalInfo> hospitalInfoQe = new QueryWrapper<>();
|
|
|
+ hospitalInfoQe.in("code", hospitalCodeList);
|
|
|
+ Map<String, HospitalInfo> hospitalInfoMap = hospitalInfoFacade.list(hospitalInfoQe)
|
|
|
+ .stream().collect(Collectors.toMap(HospitalInfo::getCode, i -> i));
|
|
|
+
|
|
|
+ HospitalInfo hospitalInfo = hospitalInfoMap.get(getTopPatientInfoDjVO.getHospitalCode());
|
|
|
+ HospitalInfo sonHospitalInfo = hospitalInfoMap.get(getTopPatientInfoDjVO.getSonHospitalCode());
|
|
|
+ getTopPatientInfoDjDTO.setHospitalId(hospitalInfo.getId());
|
|
|
+ getTopPatientInfoDjDTO.setHospitalCode(hospitalInfo.getCode());
|
|
|
+ getTopPatientInfoDjDTO.setHospitalName(hospitalInfo.getName());
|
|
|
+ if (sonHospitalInfo != null) {
|
|
|
+ getTopPatientInfoDjDTO.setSonHospitalId(sonHospitalInfo.getId());
|
|
|
+ getTopPatientInfoDjDTO.setSonHospitalCode(sonHospitalInfo.getCode());
|
|
|
+ getTopPatientInfoDjDTO.setSonHospitalName(sonHospitalInfo.getName());
|
|
|
+ }
|
|
|
+
|
|
|
+ QueryWrapper<HospitalDept> hospitalDeptQe = new QueryWrapper<>();
|
|
|
+ hospitalDeptQe.eq("hospital_code",
|
|
|
+ StringUtil.isBlank(getTopPatientInfoDjVO.getSonHospitalCode())
|
|
|
+ ? getTopPatientInfoDjVO.getHospitalCode()
|
|
|
+ : getTopPatientInfoDjVO.getSonHospitalCode());
|
|
|
+ hospitalDeptQe.eq("code", getTopPatientInfoDjVO.getHospitalDeptCode());
|
|
|
+ HospitalDept hospitalDept = hospitalDeptFacade.getOne(hospitalDeptQe, false);
|
|
|
+ if (hospitalDept != null) {
|
|
|
+ getTopPatientInfoDjDTO.setHospitalDeptId(hospitalDept.getId());
|
|
|
+ getTopPatientInfoDjDTO.setHospitalDeptCode(hospitalDept.getCode());
|
|
|
+ getTopPatientInfoDjDTO.setHospitalDeptName(hospitalDept.getName());
|
|
|
+ getTopPatientInfoDjDTO.setSelfDeptName(hospitalDept.getConceptDeptName());
|
|
|
+ }
|
|
|
+
|
|
|
+ return getTopPatientInfoDjDTO;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 患者登录
|
|
|
+ *
|
|
|
+ * @param signInVO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public List<SignInDTO> signIn(SignInVO signInVO) {
|
|
|
+ List<SignInDTO> retList = null;
|
|
|
+
|
|
|
+ RegisterInfoDTO rif = getRegisterInfo(signInVO);
|
|
|
+ if (rif != null) {
|
|
|
+ generateByRif(rif);
|
|
|
+ retList = rifConverSin(rif);
|
|
|
+ } else {
|
|
|
+ retList = autoGenePatinfo(signInVO);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (retList == null) {
|
|
|
+ throw new CommonException(ServiceErrorCode.IQC_NOT_FOUND);
|
|
|
+ }
|
|
|
+
|
|
|
+ return retList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 自动生成患者信息
|
|
|
+ *
|
|
|
+ * @param signInVO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<SignInDTO> autoGenePatinfo(SignInVO signInVO) {
|
|
|
+ QueryWrapper<SysSet> sysSetQe = new QueryWrapper<>();
|
|
|
+ sysSetQe.eq("sys_type", SysTypeEnum.PREC_SERVICE.getKey());
|
|
|
+ sysSetQe.and(qe1 -> qe1
|
|
|
+ .and(qe2 -> qe2
|
|
|
+ .eq("hospital_code", signInVO.getHospitalCode())
|
|
|
+ .eq("code", "patientinfo"))
|
|
|
+ .or(qe3 -> qe3
|
|
|
+ .eq("hospital_code",
|
|
|
+ StringUtil.isBlank(signInVO.getSonHospitalCode()) ? signInVO.getHospitalCode()
|
|
|
+ : signInVO.getSonHospitalCode())
|
|
|
+ .eq("code", "default_dept")));
|
|
|
+ Map<String, String> sysSetCodeValue = sysSetFacade.list(sysSetQe).stream()
|
|
|
+ .collect(Collectors.toMap(SysSet::getCode, i -> i.getValue()));
|
|
|
+
|
|
|
+ if (StringUtil.isBlank(sysSetCodeValue.get("patientinfo"))
|
|
|
+ || !sysSetCodeValue.get("patientinfo").equals("1")) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ if (!signInVO.getPatientInfoType().equals("101")) {
|
|
|
+ throw new CommonException(ServiceErrorCode.IDCARD_LOGIN);
|
|
|
+ }
|
|
|
+
|
|
|
+ List<SignInDTO> retList = Lists.newArrayList();
|
|
|
+ SignInDTO signInDTO = new SignInDTO();
|
|
|
+ signInDTO.setHospitalCode(signInVO.getHospitalCode());
|
|
|
+ signInDTO.setHospitalName(signInVO.getHospitalName());
|
|
|
+ signInDTO.setSonHospitalCode(signInVO.getSonHospitalCode());
|
|
|
+ signInDTO.setSonHospitalName(signInVO.getSonHospitalName());
|
|
|
+
|
|
|
+ String hospitalDeptCode = sysSetCodeValue.get("default_dept");
|
|
|
+ signInDTO.setHospitalDeptCode(hospitalDeptCode);
|
|
|
+
|
|
|
+ QueryWrapper<HospitalDept> hospitalDeptQe = new QueryWrapper<>();
|
|
|
+ hospitalDeptQe.eq("hospital_code",
|
|
|
+ StringUtil.isBlank(signInVO.getSonHospitalCode()) ? signInVO.getHospitalCode() : signInVO.getSonHospitalCode());
|
|
|
+ hospitalDeptQe.eq("code", hospitalDeptCode);
|
|
|
+ signInDTO.setHospitalDeptName(hospitalDeptFacade.getOne(hospitalDeptQe, false).getName());
|
|
|
+
|
|
|
+ QueryWrapper<PatientInfo> patientInfoQe = new QueryWrapper<>();
|
|
|
+ patientInfoQe.eq("id_no", signInVO.getPatientInfo());
|
|
|
+ patientInfoQe.eq("name", signInVO.getPatientName());
|
|
|
+ PatientInfo patientInfo = getOne(patientInfoQe, false);
|
|
|
+ if (patientInfo == null) {
|
|
|
+ patientInfo = new PatientInfo();
|
|
|
+ patientInfo.setGmtCreate(DateUtil.now());
|
|
|
+ patientInfo.setHospitalCode(signInVO.getHospitalCode());
|
|
|
+ patientInfo.setIdNo(signInVO.getPatientInfo());
|
|
|
+ patientInfo.setIdentityNum(signInVO.getPatientInfo());
|
|
|
+ patientInfo.setName(signInVO.getPatientName());
|
|
|
+ patientInfo.setSex(IdCard.getGenderByIdCard(signInVO.getPatientInfo()));
|
|
|
+ patientInfo.setBirthday(DateUtil.parseDate(IdCard.getBirthByIdCard(signInVO.getPatientInfo()), "yyyyMMdd"));
|
|
|
+
|
|
|
+ patientInfo.setCode("" + visibleIdCreater.getNextShortId(VisibleIdTypeEnum.PATIENT_NO.getKey()));
|
|
|
+ patientInfo.setRemark("1");//自动生成标志
|
|
|
+
|
|
|
+ save(patientInfo);
|
|
|
+ }
|
|
|
+ signInDTO.setPatientCode(patientInfo.getCode());
|
|
|
+ signInDTO.setPatientName(patientInfo.getName());
|
|
|
+
|
|
|
+ retList.add(signInDTO);
|
|
|
+ return retList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * his返回的挂号信息转化给前端
|
|
|
+ *
|
|
|
+ * @param rif
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<SignInDTO> rifConverSin(RegisterInfoDTO rif) {
|
|
|
+ List<SignInDTO> retList = Lists.newArrayList();
|
|
|
+ rif.getDetail().forEach(i -> {
|
|
|
+ SignInDTO signInDTO = new SignInDTO(
|
|
|
+ rif.getHospitalCode(),
|
|
|
+ rif.getHospitalName(),
|
|
|
+ rif.getSonHospitalCode(),
|
|
|
+ rif.getSonHospitalName(),
|
|
|
+ i.getHospitalDeptCode(),
|
|
|
+ i.getHospitalDeptName(),
|
|
|
+ i.getDoctorInfo().getCode(),
|
|
|
+ i.getDoctorInfo().getName(),
|
|
|
+ rif.getPatientInfo().getCode(),
|
|
|
+ rif.getPatientInfo().getName(),
|
|
|
+ i.getRecordTime(),
|
|
|
+ i.getRecordId(),
|
|
|
+ i.getRegisterNum()
|
|
|
+ );
|
|
|
+ retList.add(signInDTO);
|
|
|
+ });
|
|
|
+ return retList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 由挂号信息检查病人科室医生信息,有更新,无插入
|
|
|
+ *
|
|
|
+ * @param rif
|
|
|
+ */
|
|
|
+ private void generateByRif(RegisterInfoDTO rif) {
|
|
|
+ String hospitalCode = rif.getHospitalCode();
|
|
|
+ String hospitalName = rif.getHospitalName();
|
|
|
+ String sonHospitalCode = rif.getSonHospitalCode();
|
|
|
+ String sonHospitalName = rif.getSonHospitalName();
|
|
|
+
|
|
|
+ PatientInfo patientInfo = rif.getPatientInfo();
|
|
|
+ QueryWrapper<PatientInfo> patientInfoQe = new QueryWrapper<>();
|
|
|
+ patientInfoQe.eq("hospital_code", hospitalCode);
|
|
|
+ patientInfoQe.eq("code", patientInfo.getCode());
|
|
|
+ PatientInfo patientInfoQuery = getOne(patientInfoQe, false);
|
|
|
+ if (patientInfoQuery == null) {
|
|
|
+ patientInfo.setHospitalCode(hospitalCode);
|
|
|
+ save(patientInfo);
|
|
|
+ } else {
|
|
|
+ BeanUtil.copyProperties(patientInfo, patientInfoQuery);
|
|
|
+ updateById(patientInfoQuery);
|
|
|
+ }
|
|
|
+
|
|
|
+ List<String> deptCodeList = rif.getDetail().stream()
|
|
|
+ .filter(i -> StringUtil.isNotBlank(i.getHospitalDeptCode()) && StringUtil.isNotBlank(i.getHospitalDeptName()))
|
|
|
+ .map(i -> i.getHospitalDeptCode())
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ QueryWrapper<HospitalDept> hospitalDeptQe = new QueryWrapper<>();
|
|
|
+ hospitalDeptQe.eq("hospital_code", StringUtil.isBlank(sonHospitalCode) ? hospitalCode : sonHospitalCode);
|
|
|
+ hospitalDeptQe.in("code", deptCodeList);
|
|
|
+ Map<String, HospitalDept> deptMap = hospitalDeptFacade.list(hospitalDeptQe)
|
|
|
+ .stream()
|
|
|
+ .collect(Collectors.toMap(HospitalDept::getCode, i -> i));
|
|
|
+ List<HospitalDept> deptSaveOrUpdateList = Lists.newArrayList();
|
|
|
+ rif.getDetail().stream()
|
|
|
+ .filter(i -> StringUtil.isNotBlank(i.getHospitalDeptCode()) && StringUtil.isNotBlank(i.getHospitalDeptName()))
|
|
|
+ .forEach(i -> {
|
|
|
+ HospitalDept hospitalDeptQuery = deptMap.get(i.getHospitalDeptCode());
|
|
|
+ if (hospitalDeptQuery == null) {
|
|
|
+ HospitalDept hospitalDept = new HospitalDept();
|
|
|
+ hospitalDept.setHospitalCode(StringUtil.isNotBlank(sonHospitalCode) ? sonHospitalCode : hospitalCode);
|
|
|
+ hospitalDept.setHospitalName(StringUtil.isNotBlank(sonHospitalCode) ? sonHospitalName : hospitalName);
|
|
|
+ hospitalDept.setCode(i.getHospitalDeptCode());
|
|
|
+ hospitalDept.setName(i.getHospitalDeptName());
|
|
|
+ hospitalDept.setconceptDeptName("全科");
|
|
|
+ deptSaveOrUpdateList.add(hospitalDept);
|
|
|
+ } else {
|
|
|
+ hospitalDeptQuery.setName(i.getHospitalDeptName());
|
|
|
+ deptSaveOrUpdateList.add(hospitalDeptQuery);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ if (ListUtil.isNotEmpty(deptSaveOrUpdateList)) {
|
|
|
+ hospitalDeptService.saveBatch(deptSaveOrUpdateList);
|
|
|
+ }
|
|
|
+
|
|
|
+ List<String> doctorCodeList = rif.getDetail().stream()
|
|
|
+ .filter(i -> i.getDoctorInfo() != null).map(i -> i.getDoctorInfo())
|
|
|
+ .filter(i -> StringUtil.isNotBlank(i.getCode()) && StringUtil.isNotBlank(i.getName()))
|
|
|
+ .map(i -> i.getCode()).collect(Collectors.toList());
|
|
|
+ QueryWrapper<DoctorInfo> doctorInfoQe = new QueryWrapper<>();
|
|
|
+ doctorInfoQe.eq("hospital_code", hospitalCode);
|
|
|
+ doctorInfoQe.in("code", doctorCodeList);
|
|
|
+ Map<String, DoctorInfo> doctorMap = doctorInfoFacade.list(doctorInfoQe)
|
|
|
+ .stream().collect(Collectors.toMap(DoctorInfo::getCode, i -> i));
|
|
|
+ List<DoctorInfo> doctorSaveOrUpdateList = Lists.newArrayList();
|
|
|
+ rif.getDetail().stream()
|
|
|
+ .filter(i -> i.getDoctorInfo() != null).map(i -> i.getDoctorInfo())
|
|
|
+ .filter(i -> StringUtil.isNotBlank(i.getCode()) && StringUtil.isNotBlank(i.getName()))
|
|
|
+ .forEach(i -> {
|
|
|
+ DoctorInfo doctorInfo = new DoctorInfo();
|
|
|
+ DoctorInfo doctorInfoQuery = doctorMap.get(i.getCode());
|
|
|
+ if (doctorInfoQuery != null) {
|
|
|
+ BeanUtil.copyProperties(doctorInfoQuery, doctorInfo);
|
|
|
+ }
|
|
|
+ BeanUtil.copyProperties(i, doctorInfo);
|
|
|
+ doctorInfo.setHospitalCode(hospitalCode);
|
|
|
+ doctorSaveOrUpdateList.add(doctorInfo);
|
|
|
+ });
|
|
|
+ if (ListUtil.isNotEmpty(doctorSaveOrUpdateList)) {
|
|
|
+ doctorInfoService.saveOrUpdateBatch(doctorSaveOrUpdateList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 对接---获取挂号信息
|
|
|
+ * 某一时刻患者只可能在一家医院,所以获取到的挂号信息只能是当前医院的,当出现江干的大小医院情况时可采用2种:
|
|
|
+ * 1、预问诊必须选择小医院,对方接口小医院要求必传;2、his返回时间最近的一家医院挂号信息(可能不准确)。
|
|
|
+ * 大小医院信息使用his返回来的(未选择小医院时有用)
|
|
|
+ *
|
|
|
+ * @param signInVO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private RegisterInfoDTO getRegisterInfo(SignInVO signInVO) {
|
|
|
+ // String time = DateUtil.formatDateTime(new Date());
|
|
|
+ // List<SignInDTO> list = Lists.newArrayList();
|
|
|
+ // list.add(new SignInDTO("A001", "浙江大学医学院附属邵逸夫医院",
|
|
|
+ // "D01", "全科", "YS001", "付医生",
|
|
|
+ // "1600", "王明明", time, "4468352", "15"));
|
|
|
+ // list.add(new SignInDTO("A001", "浙江大学医学院附属邵逸夫医院",
|
|
|
+ // "D02", "儿科", "YS001", "付医生",
|
|
|
+ // "1600", "王明明", time, "4468352", "18"));
|
|
|
+ // if (signInVO.getPatientInfoType().equals("101")) {
|
|
|
+ // if (signInVO.getPatientInfo().equals("10123439991230120X")) {
|
|
|
+ // list.remove(1);
|
|
|
+ // } else if (signInVO.getPatientInfo().equals("666666180002301234")) {
|
|
|
+ // list.clear();
|
|
|
+ // } else if (signInVO.getPatientInfo().equals("100000201901010000")) {
|
|
|
+ // return null;
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+
|
|
|
+ RegisterInfoDTO registerInfoDTO = new RegisterInfoDTO();
|
|
|
+
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 病历引用时,更新患者医生科室信息
|
|
|
+ *
|
|
|
+ * @param inquiryQuoteVO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public InquiryQuoteVO inquiryQuote(InquiryQuoteVO inquiryQuoteVO) {
|
|
|
+ List<String> hospitalCodeList = Lists.newArrayList();
|
|
|
+ hospitalCodeList.add(inquiryQuoteVO.getHospitalCode());
|
|
|
+
|
|
|
+ String hospitalCode = inquiryQuoteVO.getHospitalCode();
|
|
|
+ String hospitalName = inquiryQuoteVO.getHospitalName();
|
|
|
+
|
|
|
+ if (StringUtil.isNotBlank(inquiryQuoteVO.getSonHospitalCode())) {
|
|
|
+ hospitalCodeList.add(inquiryQuoteVO.getSonHospitalCode());
|
|
|
+ hospitalCode = inquiryQuoteVO.getSonHospitalCode();
|
|
|
+ hospitalName = inquiryQuoteVO.getSonHospitalName();
|
|
|
+ }
|
|
|
+
|
|
|
+ QueryWrapper<HospitalInfo> hospitalInfoQe = new QueryWrapper<>();
|
|
|
+ hospitalInfoQe.in("code", hospitalCodeList);
|
|
|
+ Map<String, Long> hospitalInfoIdMap = hospitalInfoFacade.list(hospitalInfoQe)
|
|
|
+ .stream().collect(Collectors.toMap(HospitalInfo::getCode, i -> i.getId()));
|
|
|
+
|
|
|
+ inquiryQuoteVO.setHospitalId(hospitalInfoIdMap.get(inquiryQuoteVO.getHospitalCode()));
|
|
|
+ if (StringUtil.isNotBlank(inquiryQuoteVO.getSonHospitalCode())) {
|
|
|
+ inquiryQuoteVO.setSonHospitalId(hospitalInfoIdMap.get(inquiryQuoteVO.getSonHospitalCode()));
|
|
|
+ }
|
|
|
+
|
|
|
+ Date now = DateUtil.now();
|
|
|
+ if (inquiryQuoteVO.getDeptInfo() != null) {
|
|
|
+ QueryWrapper<HospitalDept> hospitalDeptQe = new QueryWrapper<>();
|
|
|
+ hospitalDeptQe.eq("hospital_code", hospitalCode);
|
|
|
+ hospitalDeptQe.eq("code", inquiryQuoteVO.getDeptInfo().getCode());
|
|
|
+ HospitalDept hospitalDept = hospitalDeptFacade.getOne(hospitalDeptQe, false);
|
|
|
+ Long deptId = null;
|
|
|
+ if (hospitalDept == null) {
|
|
|
+ hospitalDept = new HospitalDept();
|
|
|
+ hospitalDept.setGmtCreate(now);
|
|
|
+ hospitalDept.setHospitalCode(hospitalCode);
|
|
|
+ hospitalDept.setHospitalName(hospitalName);
|
|
|
+ hospitalDept.setconceptDeptName("全科");
|
|
|
+ } else {
|
|
|
+ deptId = hospitalDept.getId().longValue();
|
|
|
+ }
|
|
|
+ BeanUtil.copyProperties(inquiryQuoteVO.getDeptInfo(), hospitalDept);
|
|
|
+ hospitalDept.setGmtModified(now);
|
|
|
+ hospitalDept.setId(deptId);
|
|
|
+ hospitalDeptFacade.saveOrUpdate(hospitalDept);
|
|
|
+ inquiryQuoteVO.getDeptInfo().setId(hospitalDept.getId());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (inquiryQuoteVO.getDoctorInfo() != null) {
|
|
|
+ QueryWrapper<DoctorInfo> doctorInfoQe = new QueryWrapper<>();
|
|
|
+ doctorInfoQe.eq("hospital_code", inquiryQuoteVO.getHospitalCode());
|
|
|
+ doctorInfoQe.eq("code", inquiryQuoteVO.getDoctorInfo().getCode());
|
|
|
+ DoctorInfo doctorInfo = doctorInfoFacade.getOne(doctorInfoQe, false);
|
|
|
+ Long doctorId = null;
|
|
|
+ if (doctorInfo == null) {
|
|
|
+ doctorInfo = new DoctorInfo();
|
|
|
+ doctorInfo.setGmtCreate(now);
|
|
|
+ doctorInfo.setHospitalCode(inquiryQuoteVO.getHospitalCode());
|
|
|
+ } else {
|
|
|
+ doctorId = doctorInfo.getId().longValue();
|
|
|
+ }
|
|
|
+ BeanUtil.copyProperties(inquiryQuoteVO.getDoctorInfo(), doctorInfo);
|
|
|
+ doctorInfo.setGmtModified(now);
|
|
|
+ doctorInfo.setId(doctorId);
|
|
|
+ doctorInfoFacade.saveOrUpdate(doctorInfo);
|
|
|
+ inquiryQuoteVO.getDoctorInfo().setId(doctorInfo.getId());
|
|
|
+ }
|
|
|
+
|
|
|
+ QueryWrapper<PatientInfo> patientInfoQe = new QueryWrapper<>();
|
|
|
+ patientInfoQe.eq("hospital_code", inquiryQuoteVO.getHospitalCode());
|
|
|
+ patientInfoQe.eq("code", inquiryQuoteVO.getPatientInfo().getCode());
|
|
|
+ PatientInfo patientInfo = getOne(patientInfoQe, false);
|
|
|
+ Long patientId = null;
|
|
|
+ if (patientInfo == null) {
|
|
|
+ patientInfo = new PatientInfo();
|
|
|
+ patientInfo.setGmtCreate(now);
|
|
|
+ patientInfo.setHospitalCode(inquiryQuoteVO.getHospitalCode());
|
|
|
+ } else {
|
|
|
+ patientId = patientInfo.getId().longValue();
|
|
|
+ }
|
|
|
+ BeanUtil.copyProperties(inquiryQuoteVO.getPatientInfo(), patientInfo);
|
|
|
+ patientInfo.setGmtModified(now);
|
|
|
+ patientInfo.setId(patientId);
|
|
|
+ saveOrUpdate(patientInfo);
|
|
|
+ inquiryQuoteVO.getPatientInfo().setId(patientInfo.getId());
|
|
|
+
|
|
|
+ return inquiryQuoteVO;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|