|
@ -2,13 +2,17 @@ package com.yihu.jw.hospital.module.rehabilitation.service;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.yihu.jw.cron.CronUtils;
|
|
|
import com.yihu.jw.doctor.dao.BaseDoctorDao;
|
|
|
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
|
|
|
import com.yihu.jw.entity.base.patient.BasePatientDO;
|
|
|
import com.yihu.jw.entity.base.servicePackage.ServiceItemPlanDO;
|
|
|
import com.yihu.jw.entity.door.SignFamily;
|
|
|
import com.yihu.jw.entity.specialist.RehabilitationServiceItemDO;
|
|
|
import com.yihu.jw.entity.specialist.SpecialistPatientRelationDO;
|
|
|
import com.yihu.jw.entity.specialist.rehabilitation.*;
|
|
|
import com.yihu.jw.entity.util.TransforSqlUtl;
|
|
|
import com.yihu.jw.hospital.module.door.dao.ServiceItemPlanDao;
|
|
|
import com.yihu.jw.hospital.module.rehabilitation.dao.*;
|
|
|
import com.yihu.jw.hospital.module.specialist.dao.PatientDiseaseServerDao;
|
|
|
import com.yihu.jw.hospital.module.specialist.dao.PatientMedicalRecordsRehabilitationDao;
|
|
@ -36,6 +40,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.sql.Timestamp;
|
|
|
import java.text.DecimalFormat;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@ -56,6 +61,8 @@ public class RehabilitationManageService {
|
|
|
@Autowired
|
|
|
private RehabilitationDetailDao rehabilitationDetailDao;
|
|
|
@Autowired
|
|
|
private RehabilitationServiceItemDao serviceItemDao;
|
|
|
@Autowired
|
|
|
private PatientRehabilitationPlanDao patientRehabilitationPlanDao;
|
|
|
@Autowired
|
|
|
private GuidanceMessageLogDao guidanceMessageLogDao;
|
|
@ -81,6 +88,8 @@ public class RehabilitationManageService {
|
|
|
private SystemDictService systemDictService;
|
|
|
@Autowired
|
|
|
private PatientRehabilitationPlanLogDao patientRehabilitationPlanLogDao;
|
|
|
@Autowired
|
|
|
private ServiceItemPlanDao serviceItemPlanDao;
|
|
|
|
|
|
//添加康复计划日志
|
|
|
public void addPlanLog(String planId,String doctorCode,String doctorName){
|
|
@ -118,6 +127,9 @@ public class RehabilitationManageService {
|
|
|
List<RehabilitationDetailDO> detailDOList = planDO.getDetailDOList();
|
|
|
Map<String,RehabilitationDetailDO> map = detailDOList.stream().collect(Collectors.toMap
|
|
|
(RehabilitationDetailDO::getHospitalServiceItemId, log->log,(oldLog, newLog)->oldLog));
|
|
|
List<ServiceItemPlanDO> planDOList = new ArrayList<>();
|
|
|
List<RehabilitationServiceItemDO> itemDOList = serviceItemDao.findList();
|
|
|
Map<String, String> serviceItemMap = itemDOList.stream().collect(Collectors.toMap(RehabilitationServiceItemDO::getCode, RehabilitationServiceItemDO::getName));
|
|
|
for (RehabilitationDetailDO detailDO : detailDOS){
|
|
|
String serviceItemId = detailDO.getHospitalServiceItemId();
|
|
|
if(map.containsKey(serviceItemId)){
|
|
@ -127,9 +139,13 @@ public class RehabilitationManageService {
|
|
|
detailDO.setDept(newDetail.getDept());
|
|
|
detailDO.setDeptName(newDetail.getDeptName());
|
|
|
//生成执行计划列表
|
|
|
planDOList = addServicePlan(serviceItemMap,planDO1,detailDO,planDOList);
|
|
|
}
|
|
|
}
|
|
|
rehabilitationDetailDao.saveAll(detailDOS);
|
|
|
if(planDOList.size()>0){
|
|
|
serviceItemPlanDao.saveAll(planDOList);
|
|
|
}
|
|
|
planDO1.setStatus(1);
|
|
|
patientRehabilitationPlanDao.save(planDO1);
|
|
|
addPlanLog(planDO.getId(),uid,null);
|
|
@ -141,6 +157,40 @@ public class RehabilitationManageService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
public List<ServiceItemPlanDO> addServicePlan(Map<String, String> serviceItemMap,PatientRehabilitationPlanDO planDO,
|
|
|
RehabilitationDetailDO detailDO,List<ServiceItemPlanDO> planDOList){
|
|
|
String planId = planDO.getId();
|
|
|
String pateint = planDO.getPatient();
|
|
|
String relationType = detailDO.getHospitalServiceItemId();
|
|
|
Integer plan_start_time_type = detailDO.getTimeType();//计划开始时间类型
|
|
|
String server_count = detailDO.getServerCount();//服务次数
|
|
|
if(StringUtils.isBlank(server_count)){
|
|
|
return planDOList;
|
|
|
}
|
|
|
String planDetailId = detailDO.getId();
|
|
|
String doctor = detailDO.getDoctor();
|
|
|
String doctorName = detailDO.getDoctorName();
|
|
|
String frequency_code = detailDO.getFrequencyCode();
|
|
|
LocalDateTime localDateTime = LocalDateTime.now();
|
|
|
int addNum = 0;
|
|
|
localDateTime = localDateTime.plusDays(addNum);
|
|
|
List<String> timeList = CronUtils.getExecutionTimeByNum(frequency_code,Integer.parseInt(server_count),localDateTime);
|
|
|
for (String time :timeList){
|
|
|
ServiceItemPlanDO itemPlanDO = new ServiceItemPlanDO();
|
|
|
itemPlanDO.setPlanTime(time);
|
|
|
itemPlanDO.setPatient(pateint);
|
|
|
itemPlanDO.setName(serviceItemMap.get(relationType));
|
|
|
itemPlanDO.setStatus("0");
|
|
|
itemPlanDO.setRelationType(relationType);
|
|
|
itemPlanDO.setPlanId(planId);
|
|
|
itemPlanDO.setPlanDetailId(planDetailId);
|
|
|
itemPlanDO.setDoctor(doctor);
|
|
|
itemPlanDO.setDoctorName(doctorName);
|
|
|
planDOList.add(itemPlanDO);
|
|
|
}
|
|
|
return planDOList;
|
|
|
}
|
|
|
|
|
|
public List<Map<String, Object>> selectPlanByPatient(String patient, Integer status, String planId, String doctor) {
|
|
|
if (StringUtils.isNoneBlank(planId)) {
|
|
|
String planSql = "select p.patient " +
|