|
@ -0,0 +1,212 @@
|
|
|
package com.yihu.jw.care.service.visit;
|
|
|
|
|
|
import com.fasterxml.jackson.databind.JavaType;
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
import com.yihu.jw.care.dao.visit.BaseVisitDao;
|
|
|
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.care.visit.BaseVisitDO;
|
|
|
import com.yihu.jw.patient.dao.BasePatientDao;
|
|
|
import com.yihu.jw.util.common.IdCardUtil;
|
|
|
import com.yihu.jw.util.date.DateUtil;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import javax.transaction.Transactional;
|
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* Created by yeshijie on 2021/11/11.
|
|
|
*/
|
|
|
@Service
|
|
|
public class BaseVisitService {
|
|
|
|
|
|
@Autowired
|
|
|
private BaseVisitDao baseVisitDao;
|
|
|
@Autowired
|
|
|
private ObjectMapper objectMapper;
|
|
|
@Autowired
|
|
|
private BasePatientDao patientDao;
|
|
|
@Autowired
|
|
|
private BaseDoctorDao doctorDao;
|
|
|
|
|
|
/**
|
|
|
* 获取走访列表-日历
|
|
|
*/
|
|
|
public List<Map<String, Object>> getListByDoctor(String doctorCode, String startTime, String endTime) throws Exception {
|
|
|
List<Map<String, Object>> re = new ArrayList<>();
|
|
|
Map<String, Map<String, Object>> temp = new HashMap<>();
|
|
|
|
|
|
List<BaseVisitDO> list = baseVisitDao.findByDoctor(doctorCode, DateUtil.strToDate(startTime), DateUtil.strToDate(endTime));
|
|
|
if (list != null && list.size() > 0) {
|
|
|
for (BaseVisitDO visitDO : list) {
|
|
|
String date = DateUtil.dateToStrShort(visitDO.getVisitPlanDate());
|
|
|
Map<String, String> map = getVisitDetail(visitDO);
|
|
|
if (temp.containsKey(date)) {
|
|
|
Map<String, Object> vo = temp.get(date);
|
|
|
vo.put("num", Integer.parseInt(vo.get("num").toString()) + 1);
|
|
|
((List<Map<String, String>>) vo.get("list")).add(map);
|
|
|
temp.put(date, vo);
|
|
|
} else {
|
|
|
Map<String, Object> vo = new HashMap<>();
|
|
|
List<Map<String, String>> list1 = new ArrayList<>();
|
|
|
vo.put("date", date);
|
|
|
vo.put("num", 1);
|
|
|
list1.add(map);
|
|
|
vo.put("list", list1);
|
|
|
temp.put(date, vo);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
for (Map<String, Object> map : temp.values()) {
|
|
|
re.add(map);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return re;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 转译走访信息
|
|
|
*/
|
|
|
private Map<String, String> getVisitDetail(BaseVisitDO visitDO) {
|
|
|
Map<String, String> re = new HashMap<>();
|
|
|
re.put("id", visitDO.getId());
|
|
|
re.put("visitDate", DateUtil.dateToStrLong(visitDO.getVisitDate()));
|
|
|
re.put("visitPlanDate", DateUtil.dateToStrLong(visitDO.getVisitPlanDate()));
|
|
|
re.put("type", visitDO.getType());
|
|
|
re.put("status", visitDO.getStatus());
|
|
|
re.put("doctor", visitDO.getDoctor());
|
|
|
re.put("doctorName", visitDO.getDoctorName());
|
|
|
re.put("patient", visitDO.getPatient());
|
|
|
re.put("patientName", visitDO.getPatientName());
|
|
|
return re;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 删除
|
|
|
* @param id
|
|
|
* @return
|
|
|
*/
|
|
|
public String delVisti(String id){
|
|
|
BaseVisitDO visitDO = baseVisitDao.findOne(id);
|
|
|
if(visitDO == null){
|
|
|
return "走访已删除,请勿重复操作";
|
|
|
}
|
|
|
if("1".equals(visitDO.getStatus())){
|
|
|
return "走访已完成不能删除";
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 修改走访计划时间
|
|
|
* @param id
|
|
|
* @return
|
|
|
*/
|
|
|
public String updVisit(String id,String visitPlanDate){
|
|
|
BaseVisitDO visitDO = baseVisitDao.findOne(id);
|
|
|
if("1".equals(visitDO.getStatus())){
|
|
|
return "走访已完成不能修改";
|
|
|
}
|
|
|
Date planDate = DateUtil.strToDate(visitPlanDate);
|
|
|
if(DateUtil.compareDateTime(planDate,new Date())<0){
|
|
|
return "计划走访日期不能早于当前日期";
|
|
|
}
|
|
|
visitDO.setVisitPlanDate(planDate);
|
|
|
visitDO.setStatus("0");
|
|
|
baseVisitDao.save(visitDO);
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 完成走访
|
|
|
* @param id
|
|
|
* @return
|
|
|
*/
|
|
|
public String completeVisit(String id,String visitContent,String visitImg){
|
|
|
BaseVisitDO visitDO = baseVisitDao.findOne(id);
|
|
|
if("1".equals(visitDO.getStatus())){
|
|
|
return "走访已完成,请勿重复操作";
|
|
|
}
|
|
|
visitDO.setVisitDate(new Date());
|
|
|
visitDO.setStatus("1");
|
|
|
visitDO.setVisitContent(visitContent);
|
|
|
visitDO.setVisitImg(visitImg);
|
|
|
baseVisitDao.save(visitDO);
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取走访详情
|
|
|
* @param id
|
|
|
* @return
|
|
|
*/
|
|
|
public Map<String, String> findVisitDetail(String id){
|
|
|
Map<String, String> re = new HashMap<>();
|
|
|
BaseVisitDO visitDO = baseVisitDao.findOne(id);
|
|
|
re.put("id", visitDO.getId());
|
|
|
re.put("visitDate", DateUtil.dateToStrLong(visitDO.getVisitDate()));
|
|
|
re.put("visitPlanDate", DateUtil.dateToStrLong(visitDO.getVisitPlanDate()));
|
|
|
re.put("type", visitDO.getType());
|
|
|
re.put("status", visitDO.getStatus());
|
|
|
re.put("doctor", visitDO.getDoctor());
|
|
|
re.put("doctorName", visitDO.getDoctorName());
|
|
|
re.put("patient", visitDO.getPatient());
|
|
|
re.put("patientName", visitDO.getPatientName());
|
|
|
re.put("visitImg",visitDO.getVisitImg());
|
|
|
re.put("visitContent",visitDO.getVisitContent());
|
|
|
|
|
|
BasePatientDO patient = patientDao.findById(visitDO.getPatient());
|
|
|
if (patient != null) {
|
|
|
re.put("idcard", patient.getIdcard());
|
|
|
String mobile = patient.getMobile();
|
|
|
re.put("mobile", mobile);
|
|
|
re.put("sex", String.valueOf(patient.getSex()));
|
|
|
re.put("birthday", DateUtil.dateToStrLong(patient.getBirthday()));
|
|
|
re.put("photo", patient.getPhoto());
|
|
|
re.put("age", IdCardUtil.getAgeByIdcardOrBirthday(patient.getIdcard(),patient.getBirthday())+"");
|
|
|
}
|
|
|
|
|
|
return re;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 新增随访计划(批量)
|
|
|
*/
|
|
|
@Transactional
|
|
|
public void addVistiPlan(String doctorCode, String patientCode, String data) throws Exception {
|
|
|
//批量随访计划
|
|
|
JavaType javaType = objectMapper.getTypeFactory().constructParametricType(List.class, Map.class);
|
|
|
List<Map<String, String>> list = objectMapper.readValue(data, javaType);
|
|
|
if (list != null && list.size() > 0) {
|
|
|
//获取患者信息
|
|
|
BasePatientDO patient = patientDao.findById(patientCode);
|
|
|
if (patient == null) {
|
|
|
throw new Exception("获取不到用户信息!");
|
|
|
}
|
|
|
BaseDoctorDO doctor = doctorDao.findById(doctorCode);
|
|
|
if (doctor == null) {
|
|
|
throw new Exception("获取不到医生信息!");
|
|
|
}
|
|
|
|
|
|
List<BaseVisitDO> visitPlans = new ArrayList<>();
|
|
|
for (Map<String, String> map : list) {
|
|
|
BaseVisitDO visitDO = new BaseVisitDO();
|
|
|
visitDO.setType("1");
|
|
|
visitDO.setStatus("0");
|
|
|
Date date = DateUtil.strToDate(map.get("date"));
|
|
|
visitDO.setVisitPlanDate(date);
|
|
|
visitDO.setDoctor(doctorCode);
|
|
|
visitDO.setDoctorName(doctor.getName());
|
|
|
visitDO.setPatient(patientCode);
|
|
|
visitDO.setPatientName(patient.getName());
|
|
|
visitPlans.add(visitDO);
|
|
|
}
|
|
|
|
|
|
baseVisitDao.save(visitPlans);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|