修改就诊记录。
This commit is contained in:
parent
badef731f1
commit
e8438abe59
Binary file not shown.
@ -0,0 +1,21 @@
|
||||
package com.xinelu.common.enums;
|
||||
|
||||
/**
|
||||
* @Description 患者来源枚举类
|
||||
* @Author haown
|
||||
* @Date 2024-03-21
|
||||
*/
|
||||
public enum PatientSourceEnum {
|
||||
/**
|
||||
* 微信小程序
|
||||
*/
|
||||
WE_CHAT_APPLET,
|
||||
/**
|
||||
* 微信公众号
|
||||
*/
|
||||
WE_CHAT_OFFICIAL_ACCOUNT,
|
||||
/**
|
||||
* 管理端
|
||||
*/
|
||||
MANAGE_END
|
||||
}
|
||||
@ -13,6 +13,7 @@ import com.xinelu.common.utils.file.FileTypeUtils;
|
||||
import com.xinelu.common.utils.file.FileUtils;
|
||||
import com.xinelu.common.utils.file.ImageUtils;
|
||||
import com.xinelu.common.utils.reflect.ReflectUtils;
|
||||
import java.time.ZoneId;
|
||||
import org.apache.commons.lang3.RegExUtils;
|
||||
import org.apache.poi.hssf.usermodel.*;
|
||||
import org.apache.poi.ooxml.POIXMLDocumentPart;
|
||||
@ -269,6 +270,13 @@ public class ExcelUtil<T> {
|
||||
} else if (val instanceof Double) {
|
||||
val = DateUtil.getJavaDate((Double) val);
|
||||
}
|
||||
} else if (LocalDate.class == fieldType) {
|
||||
if (val instanceof String) {
|
||||
val = DateUtils.parseDate(val);
|
||||
} else if (val instanceof Double) {
|
||||
val = DateUtil.getJavaDate((Double) val);
|
||||
}
|
||||
val = ((Date) val).toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
||||
} else if (Boolean.TYPE == fieldType || Boolean.class == fieldType) {
|
||||
val = Convert.toBool(val, false);
|
||||
}
|
||||
|
||||
@ -44,6 +44,7 @@ public class PatientInfoController extends BaseController {
|
||||
@PreAuthorize("@ss.hasPermi('manage:patientInfo:list')")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list(PatientInfoDto patientInfo) {
|
||||
// 根据用户权限判断查询数据权限
|
||||
startPage();
|
||||
List<PatientInfo> list = patientInfoService.selectPatientInfoList(patientInfo);
|
||||
return getDataTable(list);
|
||||
|
||||
@ -93,6 +93,7 @@ public class PatientVisitRecordController extends BaseController {
|
||||
/**
|
||||
* 新增患者就诊记录基本信息
|
||||
*/
|
||||
@ApiOperation("新增患者就诊记录基本信息")
|
||||
@PreAuthorize("@ss.hasPermi('manage:visit:add')")
|
||||
@Log(title = "患者就诊记录基本信息", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
@ -100,6 +101,17 @@ public class PatientVisitRecordController extends BaseController {
|
||||
return toAjax(patientVisitRecordService.insertPatientVisitRecord(patientVisitRecord));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改患者就诊记录基本信息
|
||||
*/
|
||||
@ApiOperation("修改患者就诊记录基本信息")
|
||||
@PreAuthorize("@ss.hasPermi('manage:visit:edit')")
|
||||
@Log(title = "患者就诊记录基本信息", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@Valid @RequestBody PatientVisitRecord patientVisitRecord) {
|
||||
return toAjax(patientVisitRecordService.updatePatientVisitRecord(patientVisitRecord));
|
||||
}
|
||||
|
||||
/**
|
||||
* 患者配置——就诊信息保存
|
||||
*/
|
||||
@ -116,12 +128,12 @@ public class PatientVisitRecordController extends BaseController {
|
||||
/**
|
||||
* 修改患者就诊记录基本信息
|
||||
*/
|
||||
@ApiOperation("修改患者就诊记录基本信息")
|
||||
@ApiOperation("患者配置——就诊信息修改")
|
||||
@PreAuthorize("@ss.hasPermi('manage:visit:edit')")
|
||||
@Log(title = "患者就诊记录基本信息", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public AjaxResult edit(@Valid @RequestBody PatientVisitRecordSaveDto patientVisitRecord) {
|
||||
return toAjax(patientVisitRecordService.updatePatientVisitRecord(patientVisitRecord));
|
||||
@PutMapping("updateRecord")
|
||||
public AjaxResult updateRecord(@Valid @RequestBody PatientVisitRecordSaveDto patientVisitRecord) {
|
||||
return toAjax(patientVisitRecordService.updateRecord(patientVisitRecord));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
package com.xinelu.manage.domain.patientprehospitalization;
|
||||
|
||||
import com.xinelu.common.annotation.Excel;
|
||||
import com.xinelu.common.core.domain.BaseEntity;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
@ -28,31 +29,37 @@ public class PatientPreHospitalization extends BaseEntity {
|
||||
* 姓名
|
||||
*/
|
||||
@ApiModelProperty("姓名")
|
||||
@Excel(name = "姓名")
|
||||
private String patientName;
|
||||
/**
|
||||
* 患者电话
|
||||
*/
|
||||
@ApiModelProperty("患者电话")
|
||||
@Excel(name = "电话")
|
||||
private String patientPhone;
|
||||
/**
|
||||
* 身份证号
|
||||
*/
|
||||
@ApiModelProperty("身份证号")
|
||||
@Excel(name = "身份证号")
|
||||
private String cardNo;
|
||||
/**
|
||||
* 性别,男:MALE,女:FEMALE
|
||||
*/
|
||||
@ApiModelProperty("性别,男:MALE,女:FEMALE")
|
||||
@Excel(name = "性别",readConverterExp = "MALE=男,FEMALE=女")
|
||||
private String sex;
|
||||
/**
|
||||
* 出生日期,格式:yyyy-MM-dd
|
||||
*/
|
||||
@ApiModelProperty("出生日期,格式:yyyy-MM-dd")
|
||||
@Excel(name = "出生日期")
|
||||
private LocalDate birthDate;
|
||||
/**
|
||||
* 家属电话
|
||||
*/
|
||||
@ApiModelProperty("家属电话")
|
||||
@Excel(name = "家属电话")
|
||||
private String familyMemberPhone;
|
||||
/**
|
||||
* 住址
|
||||
@ -63,6 +70,7 @@ public class PatientPreHospitalization extends BaseEntity {
|
||||
* 主要诊断
|
||||
*/
|
||||
@ApiModelProperty("主要诊断")
|
||||
@Excel(name = "诊断")
|
||||
private String mainDiagnosis;
|
||||
/**
|
||||
* 所属医院id
|
||||
@ -93,6 +101,7 @@ public class PatientPreHospitalization extends BaseEntity {
|
||||
* 所属科室名称
|
||||
*/
|
||||
@ApiModelProperty("所属科室名称")
|
||||
@Excel(name = "科室名称")
|
||||
private String departmentName;
|
||||
/**
|
||||
* 所属病区id
|
||||
@ -102,27 +111,32 @@ public class PatientPreHospitalization extends BaseEntity {
|
||||
/**
|
||||
* 所属病区名称
|
||||
*/
|
||||
@Excel(name = "预约病区")
|
||||
@ApiModelProperty("所属病区名称")
|
||||
private String wardName;
|
||||
/**
|
||||
* 预约治疗组(取值以及枚举未知?)
|
||||
*/
|
||||
@ApiModelProperty("预约治疗组(取值以及枚举未知?)")
|
||||
@Excel(name = "预约治疗组")
|
||||
private String appointmentTreatmentGroup;
|
||||
/**
|
||||
* 登记号(预住院患者)
|
||||
*/
|
||||
@ApiModelProperty("登记号(预住院患者)")
|
||||
@Excel(name = "登记号")
|
||||
private String registrationNo;
|
||||
/**
|
||||
* 登记日期(预住院患者),时间格式:yyyy-MM-dd
|
||||
*/
|
||||
@ApiModelProperty("登记日期(预住院患者),时间格式:yyyy-MM-dd")
|
||||
@Excel(name = "登记日期")
|
||||
private LocalDate registrationDate;
|
||||
/**
|
||||
* 预约时间(预住院患者),时间格式:yyyy-MM-dd
|
||||
*/
|
||||
@ApiModelProperty("预约时间(预住院患者),时间格式:yyyy-MM-dd")
|
||||
@Excel(name = "预约日期")
|
||||
private LocalDate appointmentDate;
|
||||
/**
|
||||
* 开证医生id
|
||||
@ -133,6 +147,7 @@ public class PatientPreHospitalization extends BaseEntity {
|
||||
* 开证医生姓名
|
||||
*/
|
||||
@ApiModelProperty("开证医生姓名")
|
||||
@Excel(name = "开证医生")
|
||||
private String certificateIssuingDoctorName;
|
||||
/**
|
||||
* 责任护士
|
||||
|
||||
@ -2,6 +2,7 @@ package com.xinelu.manage.mapper.patientinfo;
|
||||
|
||||
import com.xinelu.manage.domain.patientinfo.PatientInfo;
|
||||
import com.xinelu.manage.dto.patientinfo.PatientInfoDto;
|
||||
import com.xinelu.manage.vo.patientinfo.PatientBaseInfoVo;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -19,6 +20,8 @@ public interface PatientInfoMapper {
|
||||
*/
|
||||
public PatientInfo selectPatientInfoById(Long id);
|
||||
|
||||
public PatientBaseInfoVo getPatientBaseInfo(Long id);
|
||||
|
||||
/**
|
||||
* 查询患者信息列表
|
||||
*
|
||||
|
||||
@ -18,16 +18,16 @@ import com.xinelu.manage.mapper.department.DepartmentMapper;
|
||||
import com.xinelu.manage.mapper.patientinfo.PatientInfoMapper;
|
||||
import com.xinelu.manage.mapper.patientprehospitalization.PatientPreHospitalizationMapper;
|
||||
import com.xinelu.manage.service.patientprehospitalization.IPatientPreHospitalizationService;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.BooleanUtils;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import javax.annotation.Resource;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.BooleanUtils;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
* @author haown
|
||||
@ -54,9 +54,10 @@ public class PatientPreHospitalizationServiceImpl implements IPatientPreHospital
|
||||
|
||||
@Override
|
||||
public int insert(PatientPreHospitalization preHospitalization) {
|
||||
// 根据身份证号查询是否有患者信息
|
||||
// 根据身份证号+医院id查询是否有患者信息
|
||||
PatientInfoDto patientInfoDto = new PatientInfoDto();
|
||||
patientInfoDto.setCardNo(preHospitalization.getCardNo());
|
||||
patientInfoDto.setHospitalAgencyId(preHospitalization.getHospitalAgencyId());
|
||||
List<PatientInfo> patientList = patientInfoMapper.selectPatientInfoList(patientInfoDto);
|
||||
if (CollectionUtils.isEmpty(patientList)) {
|
||||
// 保存患者信息
|
||||
@ -117,11 +118,15 @@ public class PatientPreHospitalizationServiceImpl implements IPatientPreHospital
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public AjaxResult importList(List<PatientPreHospitalization> patientList) {
|
||||
//判断添加的数据是否为空
|
||||
if (CollectionUtils.isEmpty(patientList)) {
|
||||
return AjaxResult.error("请添加预住院患者导入信息!");
|
||||
}
|
||||
if (SecurityUtils.getLoginUser().getUser().getAgencyId() == null) {
|
||||
return AjaxResult.error("您未设置机构信息,导入失败");
|
||||
}
|
||||
// 根据患者身份证号做去重处理
|
||||
List<PatientPreHospitalization> importDataList = patientList.stream().filter(item -> StringUtils.isNotBlank(item.getCardNo())).distinct().collect(Collectors.toList());
|
||||
// 校验联系电话格式是否正确
|
||||
@ -133,48 +138,32 @@ public class PatientPreHospitalizationServiceImpl implements IPatientPreHospital
|
||||
for (PatientPreHospitalization item : importDataList) {
|
||||
PatientPreHospitalization preHospitalization = new PatientPreHospitalization();
|
||||
BeanUtils.copyProperties(item, preHospitalization);
|
||||
// 根据医院名称查询医院id
|
||||
Agency agency = new Agency();
|
||||
if (StringUtils.isNotBlank(item.getHospitalAgencyName())) {
|
||||
agency.setAgencyName(item.getHospitalAgencyName());
|
||||
agency.setNodeType(NodeTypeConstants.HOSPITAL);
|
||||
List<Agency> agencyList = agencyMapper.selectAgencyList(agency);
|
||||
if (CollectionUtils.isNotEmpty(agencyList)) {
|
||||
preHospitalization.setHospitalAgencyId(agencyList.get(0).getId());
|
||||
}
|
||||
} else {
|
||||
preHospitalization.setHospitalAgencyId(SecurityUtils.getLoginUser().getUser().getAgencyId());
|
||||
Agency agencyData = agencyMapper.selectAgencyById(SecurityUtils.getLoginUser().getUser().getAgencyId());
|
||||
if (ObjectUtils.isNotEmpty(agencyData)) {
|
||||
preHospitalization.setHospitalAgencyName(agencyData.getAgencyName());
|
||||
}
|
||||
}
|
||||
// 查询院区id
|
||||
if (StringUtils.isNotBlank(item.getCampusAgencyName())) {
|
||||
agency.setAgencyName(item.getWardName());
|
||||
agency.setNodeType(NodeTypeConstants.CAMPUS);
|
||||
List<Agency> campusList = agencyMapper.selectAgencyList(agency);
|
||||
if (CollectionUtils.isNotEmpty(campusList)) {
|
||||
preHospitalization.setCampusAgencyId(campusList.get(0).getId());
|
||||
}
|
||||
// 设置机构/院区为当前登录用户机构信息
|
||||
preHospitalization.setHospitalAgencyId(SecurityUtils.getLoginUser().getUser().getAgencyId());
|
||||
Agency agencyData = agencyMapper.selectAgencyById(SecurityUtils.getLoginUser().getUser().getAgencyId());
|
||||
if (ObjectUtils.isNotEmpty(agencyData)) {
|
||||
if (StringUtils.equals(NodeTypeConstants.HOSPITAL, agencyData.getNodeType())) { // 节点类型为机构
|
||||
preHospitalization.setHospitalAgencyName(agencyData.getAgencyName());
|
||||
} else if (StringUtils.equals(NodeTypeConstants.CAMPUS, agencyData.getNodeType())) { // 节点类型为院区
|
||||
preHospitalization.setCampusAgencyId(agencyData.getId());
|
||||
preHospitalization.setCampusAgencyName(agencyData.getAgencyName());
|
||||
// 机构设为院区所属机构
|
||||
preHospitalization.setHospitalAgencyId(agencyData.getParentId());
|
||||
Agency agency = agencyMapper.selectAgencyById(agencyData.getParentId());
|
||||
preHospitalization.setHospitalAgencyName(agency.getAgencyName());
|
||||
}
|
||||
}
|
||||
|
||||
// 查询科室id
|
||||
Department department = new Department();
|
||||
if (StringUtils.isNotBlank(item.getDepartmentName())) {
|
||||
department.setAgencyName(item.getHospitalAgencyName());
|
||||
department.setAgencyName(preHospitalization.getHospitalAgencyName());
|
||||
department.setDepartmentName(item.getDepartmentName());
|
||||
department.setNodeType(NodeTypeConstants.DEPARTMENT);
|
||||
List<Department> deptList = departmentMapper.selectDepartmentList(department);
|
||||
if (CollectionUtils.isNotEmpty(deptList)) {
|
||||
preHospitalization.setDepartmentId(deptList.get(0).getId());
|
||||
}
|
||||
} else {
|
||||
preHospitalization.setDepartmentId(SecurityUtils.getLoginUser().getUser().getDepartmentId());
|
||||
Department department1 = departmentMapper.selectDepartmentById(SecurityUtils.getLoginUser().getUser().getDepartmentId());
|
||||
if (ObjectUtils.isNotEmpty(department1)) {
|
||||
preHospitalization.setDepartmentName(department1.getDepartmentName());
|
||||
}
|
||||
}
|
||||
// 查询病区
|
||||
if (StringUtils.isNotBlank(item.getWardName())) {
|
||||
@ -187,28 +176,36 @@ public class PatientPreHospitalizationServiceImpl implements IPatientPreHospital
|
||||
}
|
||||
}
|
||||
|
||||
preHospitalization.setDelFlag(0);
|
||||
preHospitalization.setCreateTime(LocalDateTime.now());
|
||||
preHospitalization.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName());
|
||||
|
||||
// 根据身份证号查询患者信息
|
||||
// 根据身份证号+机构id查询患者信息
|
||||
PatientInfoDto patientQuery = new PatientInfoDto();
|
||||
patientQuery.setCardNo(item.getCardNo());
|
||||
patientQuery.setHospitalAgencyId(preHospitalization.getHospitalAgencyId());
|
||||
List<PatientInfo> patientInfoList = patientInfoMapper.selectPatientInfoList(patientQuery);
|
||||
if (CollectionUtils.isNotEmpty(patientInfoList)) {
|
||||
// 修改居民信息
|
||||
PatientInfo updInfo = patientInfoList.get(0);
|
||||
BeanUtils.copyBeanProp(updInfo, item);
|
||||
String[] ignore = {"id"};
|
||||
BeanUtils.copyProperties(preHospitalization,updInfo, ignore);
|
||||
updInfo.setVisitTime(preHospitalization.getRegistrationDate());
|
||||
updInfo.setPatientType(PatientTypeConstants.PRE_HOSPITALIZED_PATIENT);
|
||||
patientInfoMapper.updatePatientInfo(updInfo);
|
||||
preHospitalization.setPatientId(patientInfoList.get(0).getId());
|
||||
} else {
|
||||
PatientInfo saveInfo = new PatientInfo();
|
||||
// 添加居民
|
||||
BeanUtils.copyBeanProp(saveInfo, item);
|
||||
BeanUtils.copyProperties(preHospitalization, saveInfo);
|
||||
saveInfo.setVisitTime(preHospitalization.getRegistrationDate());
|
||||
saveInfo.setPatientType(PatientTypeConstants.PRE_HOSPITALIZED_PATIENT);
|
||||
patientInfoMapper.insertPatientInfo(saveInfo);
|
||||
preHospitalization.setPatientId(saveInfo.getId());
|
||||
}
|
||||
// 根据患者身份证号和预约时间查询是否有记录
|
||||
PatientPreHospitalization preHospitalizationQuery = new PatientPreHospitalization();
|
||||
preHospitalizationQuery.setHospitalAgencyId(preHospitalization.getHospitalAgencyId());
|
||||
preHospitalizationQuery.setCardNo(item.getCardNo());
|
||||
preHospitalizationQuery.setAppointmentDate(item.getAppointmentDate());
|
||||
List<PatientPreHospitalization> list = preHospitalizationMapper.selectApplyList(preHospitalizationQuery);
|
||||
|
||||
@ -39,6 +39,14 @@ public interface IPatientVisitRecordService {
|
||||
*/
|
||||
public int insertPatientVisitRecord(PatientVisitRecord patientVisitRecord);
|
||||
|
||||
/**
|
||||
* 修改患者就诊记录基本信息
|
||||
*
|
||||
* @param patientVisitRecord 患者就诊记录基本信息
|
||||
* @return 结果
|
||||
*/
|
||||
public int updatePatientVisitRecord(PatientVisitRecord patientVisitRecord);
|
||||
|
||||
/**
|
||||
* 患者配置——就诊信息保存
|
||||
* @param saveDto
|
||||
@ -52,7 +60,7 @@ public interface IPatientVisitRecordService {
|
||||
* @param updDto 患者就诊记录基本信息
|
||||
* @return 结果
|
||||
*/
|
||||
public int updatePatientVisitRecord(PatientVisitRecordSaveDto updDto);
|
||||
public int updateRecord(PatientVisitRecordSaveDto updDto);
|
||||
|
||||
/**
|
||||
* 批量删除患者就诊记录基本信息
|
||||
|
||||
@ -2,8 +2,10 @@ package com.xinelu.manage.service.patientvisitrecord.impl;
|
||||
|
||||
import com.xinelu.common.constant.Constants;
|
||||
import com.xinelu.common.constant.NodeTypeConstants;
|
||||
import com.xinelu.common.constant.PatientTypeConstants;
|
||||
import com.xinelu.common.constant.VisitMethodConstants;
|
||||
import com.xinelu.common.core.domain.AjaxResult;
|
||||
import com.xinelu.common.enums.PatientSourceEnum;
|
||||
import com.xinelu.common.exception.ServiceException;
|
||||
import com.xinelu.common.utils.SecurityUtils;
|
||||
import com.xinelu.common.utils.StringUtils;
|
||||
@ -22,6 +24,7 @@ import com.xinelu.manage.mapper.department.DepartmentMapper;
|
||||
import com.xinelu.manage.mapper.patientinfo.PatientInfoMapper;
|
||||
import com.xinelu.manage.mapper.patientvisitrecord.PatientVisitRecordMapper;
|
||||
import com.xinelu.manage.service.patientvisitrecord.IPatientVisitRecordService;
|
||||
import com.xinelu.manage.vo.patientinfo.PatientBaseInfoVo;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.ArrayList;
|
||||
@ -32,6 +35,7 @@ import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.BooleanUtils;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
* 患者就诊记录基本信息Service业务层处理
|
||||
@ -51,6 +55,8 @@ public class PatientVisitRecordServiceImpl implements IPatientVisitRecordService
|
||||
private AgencyMapper agencyMapper;
|
||||
@Resource
|
||||
private DepartmentMapper departmentMapper;
|
||||
@Resource
|
||||
private PatientInfoMapper patientInfoMapper;
|
||||
|
||||
/**
|
||||
* 查询患者就诊记录基本信息
|
||||
@ -82,17 +88,58 @@ public class PatientVisitRecordServiceImpl implements IPatientVisitRecordService
|
||||
*/
|
||||
@Override
|
||||
public int insertPatientVisitRecord(PatientVisitRecord patientVisitRecord) {
|
||||
// 1、保存患者信息-查询是否有患者档案
|
||||
PatientInfoDto patientInfoDto = new PatientInfoDto();
|
||||
patientInfoDto.setHospitalAgencyId(patientVisitRecord.getHospitalAgencyId());
|
||||
patientInfoDto.setCardNo(patientInfoDto.getCardNo());
|
||||
List<PatientInfo> patientInfoList = patientInfoMapper.selectPatientInfoList(patientInfoDto);
|
||||
// 患者档案信息新增/修改
|
||||
if(CollectionUtils.isEmpty(patientInfoList)) {
|
||||
PatientInfo patientInfo = new PatientInfo();
|
||||
// 新增档案
|
||||
BeanUtils.copyBeanProp(patientInfo, patientVisitRecord);
|
||||
patientInfo.setPatientSource(PatientSourceEnum.MANAGE_END.name());
|
||||
patientInfo.setDelFlag(0);
|
||||
setPatientType(patientInfo, patientVisitRecord);
|
||||
patientInfo.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName());
|
||||
patientInfo.setCreateTime(LocalDateTime.now());
|
||||
patientInfoMapper.insertPatientInfo(patientInfo);
|
||||
patientVisitRecord.setPatientId(patientInfo.getId());
|
||||
} else {
|
||||
PatientInfo patientInfo = patientInfoList.get(0);
|
||||
Long patientId = patientInfo.getId();
|
||||
// 修改档案
|
||||
BeanUtils.copyBeanProp(patientInfo, patientVisitRecord);
|
||||
patientInfo.setUpdateBy(SecurityUtils.getLoginUser().getUser().getNickName());
|
||||
patientInfo.setUpdateTime(LocalDateTime.now());
|
||||
patientInfo.setId(patientId);
|
||||
setPatientType(patientInfo, patientVisitRecord);
|
||||
patientInfoMapper.updatePatientInfo(patientInfo);
|
||||
patientVisitRecord.setPatientId(patientId);
|
||||
}
|
||||
patientVisitRecord.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName());
|
||||
patientVisitRecord.setCreateTime(LocalDateTime.now());
|
||||
return patientVisitRecordMapper.insertPatientVisitRecord(patientVisitRecord);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
@Transactional
|
||||
public int updatePatientVisitRecord(PatientVisitRecord patientVisitRecord) {
|
||||
// 修改患者基本信息
|
||||
PatientInfo patientInfo = patientMapper.selectPatientInfoById(patientVisitRecord.getPatientId());
|
||||
BeanUtils.copyBeanProp(patientInfo, patientVisitRecord);
|
||||
setPatientType(patientInfo, patientVisitRecord);
|
||||
patientMapper.updatePatientInfo(patientInfo);
|
||||
// 修改就诊记录信息
|
||||
return patientVisitRecordMapper.updatePatientVisitRecord(patientVisitRecord);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int saveRecord(PatientVisitRecordSaveDto saveDto) {
|
||||
PatientVisitRecord patientVisitRecord = new PatientVisitRecord();
|
||||
// 查询患者信息
|
||||
PatientInfo patientInfo = patientMapper.selectPatientInfoById(saveDto.getPatientId());
|
||||
BeanUtils.copyBeanProp(patientVisitRecord, patientInfo);
|
||||
// 查询患者基本信息
|
||||
PatientBaseInfoVo patientBaseInfo = patientMapper.getPatientBaseInfo(saveDto.getPatientId());
|
||||
BeanUtils.copyBeanProp(patientVisitRecord, patientBaseInfo);
|
||||
BeanUtils.copyBeanProp(patientVisitRecord, saveDto);
|
||||
patientVisitRecord.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName());
|
||||
patientVisitRecord.setCreateTime(LocalDateTime.now());
|
||||
@ -107,9 +154,10 @@ public class PatientVisitRecordServiceImpl implements IPatientVisitRecordService
|
||||
int flag = patientVisitRecordMapper.insertPatientVisitRecord(patientVisitRecord);
|
||||
if (flag > 0) {
|
||||
// 修改患者信息
|
||||
patientInfo.setVisitMethod(saveDto.getVisitMethod());
|
||||
patientInfo.setDepartmentId(saveDto.getDepartmentId());
|
||||
patientInfo.setDepartmentName(saveDto.getDepartmentName());
|
||||
PatientInfo patientInfo = patientMapper.selectPatientInfoById(saveDto.getPatientId());
|
||||
BeanUtils.copyBeanProp(patientInfo, patientVisitRecord);
|
||||
patientInfo.setId(saveDto.getPatientId());
|
||||
setPatientType(patientInfo, patientVisitRecord);
|
||||
patientMapper.updatePatientInfo(patientInfo);
|
||||
}
|
||||
return flag;
|
||||
@ -122,7 +170,8 @@ public class PatientVisitRecordServiceImpl implements IPatientVisitRecordService
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int updatePatientVisitRecord(PatientVisitRecordSaveDto updDto) {
|
||||
@Transactional
|
||||
public int updateRecord(PatientVisitRecordSaveDto updDto) {
|
||||
if (updDto.getId() == null) {
|
||||
throw new ServiceException("数据传输错误");
|
||||
}
|
||||
@ -146,6 +195,7 @@ public class PatientVisitRecordServiceImpl implements IPatientVisitRecordService
|
||||
patientInfo.setVisitMethod(updDto.getVisitMethod());
|
||||
patientInfo.setDepartmentId(updDto.getDepartmentId());
|
||||
patientInfo.setDepartmentName(updDto.getDepartmentName());
|
||||
setPatientType(patientInfo, patientVisitRecord);
|
||||
patientMapper.updatePatientInfo(patientInfo);
|
||||
}
|
||||
return flag;
|
||||
@ -300,4 +350,27 @@ public class PatientVisitRecordServiceImpl implements IPatientVisitRecordService
|
||||
}
|
||||
return AjaxResult.success();
|
||||
}
|
||||
|
||||
private void setPatientType(PatientInfo patientInfo, PatientVisitRecord patientVisitRecord) {
|
||||
|
||||
if (StringUtils.equals(VisitMethodConstants.OUTPATIENT_SERVICE, patientVisitRecord.getVisitMethod())) {
|
||||
patientVisitRecord.setVisitDate(patientVisitRecord.getDischargeTime());
|
||||
} else if (StringUtils.equals(VisitMethodConstants.BE_HOSPITALIZED, patientVisitRecord.getVisitMethod())) {
|
||||
// 住院时间,出院时间-入院时间
|
||||
long daysBetween = ChronoUnit.DAYS.between(patientVisitRecord.getAdmissionTime(), patientVisitRecord.getDischargeTime());
|
||||
patientVisitRecord.setHospitalizationDays((int) daysBetween + 1);
|
||||
patientVisitRecord.setVisitDate(patientVisitRecord.getAdmissionTime());
|
||||
}
|
||||
|
||||
if (StringUtils.equals(VisitMethodConstants.BE_HOSPITALIZED, patientVisitRecord.getVisitMethod())) {
|
||||
// 住院患者:有出院时间,设置患者类型为出院,没有出院时间,设置患者类型为在院
|
||||
if (patientVisitRecord.getDischargeTime() == null) {
|
||||
patientInfo.setPatientType(PatientTypeConstants.IN_HOSPITAL_PATIENT);
|
||||
} else {
|
||||
patientInfo.setPatientType(PatientTypeConstants.DISCHARGED_PATIENT);
|
||||
}
|
||||
} else if (StringUtils.equals(VisitMethodConstants.OUTPATIENT_SERVICE, patientVisitRecord.getVisitMethod())) {
|
||||
patientInfo.setPatientType(PatientTypeConstants.OUTPATIENT);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,51 @@
|
||||
package com.xinelu.manage.vo.patientinfo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.xinelu.common.annotation.Excel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import java.time.LocalDate;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @description: 患者基本信息
|
||||
* @author: haown
|
||||
* @create: 2024-03-21 17:16
|
||||
**/
|
||||
@Data
|
||||
public class PatientBaseInfoVo {
|
||||
/** 主键id */
|
||||
private Long id;
|
||||
|
||||
/** 患者姓名 */
|
||||
@ApiModelProperty(value = "患者姓名")
|
||||
@Excel(name = "患者姓名")
|
||||
private String patientName;
|
||||
|
||||
/** 患者电话 */
|
||||
@ApiModelProperty(value = "患者电话")
|
||||
@Excel(name = "患者电话")
|
||||
private String patientPhone;
|
||||
|
||||
/** 家属电话 */
|
||||
@ApiModelProperty(value = "家属电话")
|
||||
private String familyMemberPhone;
|
||||
|
||||
/** 出生日期,格式:yyyy-MM-dd */
|
||||
@ApiModelProperty(value = "出生日期,格式:yyyy-MM-dd")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDate birthDate;
|
||||
|
||||
/** 身份证号 */
|
||||
@ApiModelProperty(value = "身份证号")
|
||||
private String cardNo;
|
||||
|
||||
/** 性别,男:MALE,女:FEMALE */
|
||||
@ApiModelProperty(value = "性别,男:MALE,女:FEMALE")
|
||||
@Excel(name = "性别,男:MALE,女:FEMALE")
|
||||
private String sex;
|
||||
|
||||
/** 住址 */
|
||||
@ApiModelProperty(value = "住址")
|
||||
@Excel(name = "住址")
|
||||
private String address;
|
||||
}
|
||||
@ -165,6 +165,13 @@
|
||||
where id = #{id}
|
||||
</select>
|
||||
|
||||
<select id="getPatientBaseInfo" parameterType="Long" resultType="com.xinelu.manage.vo.patientinfo.PatientBaseInfoVo">
|
||||
select id, patient_name, patient_phone, family_member_phone,
|
||||
birth_date, card_no, sex, address
|
||||
from patient_info
|
||||
where id = #{id}
|
||||
</select>
|
||||
|
||||
<insert id="insertPatientInfo" parameterType="com.xinelu.manage.domain.patientinfo.PatientInfo" useGeneratedKeys="true" keyProperty="id">
|
||||
insert into patient_info
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
|
||||
@ -290,7 +290,7 @@
|
||||
p.campus_agency_name,
|
||||
p.department_name,p.ward_name,
|
||||
p.appointment_treatment_group,p.registration_no,p.registration_date,
|
||||
p.appointment_date,p.certificate_issuing_doctor_id,p.certificate_issuing_doctor_name
|
||||
p.appointment_date, p.certificate_issuing_doctor_id,p.certificate_issuing_doctor_name, patient.create_time
|
||||
from patient_info patient left join patient_pre_hospitalization p on p.patient_id = patient.id
|
||||
<where>
|
||||
p.del_flag = 0 and patient.patient_type = 'PRE_HOSPITALIZED_PATIENT'
|
||||
@ -356,9 +356,9 @@
|
||||
department_name,ward_id,ward_name,
|
||||
appointment_treatment_group,registration_no,registration_date,
|
||||
appointment_date,certificate_issuing_doctor_id,certificate_issuing_doctor_name,
|
||||
responsible_nurse,del_flag,search_value,
|
||||
responsible_nurse,del_flag,
|
||||
create_by,create_time,update_by,
|
||||
update_time,remark,params)
|
||||
update_time)
|
||||
values
|
||||
<foreach collection="recordList" item="item" separator=",">
|
||||
(#{item.id,jdbcType=NUMERIC},#{item.patientId,jdbcType=NUMERIC},#{item.patientName,jdbcType=VARCHAR},
|
||||
@ -369,9 +369,9 @@
|
||||
#{item.departmentName,jdbcType=VARCHAR},#{item.wardId,jdbcType=NUMERIC},#{item.wardName,jdbcType=VARCHAR},
|
||||
#{item.appointmentTreatmentGroup,jdbcType=VARCHAR},#{item.registrationNo,jdbcType=VARCHAR},#{item.registrationDate,jdbcType=TIMESTAMP},
|
||||
#{item.appointmentDate,jdbcType=TIMESTAMP},#{item.certificateIssuingDoctorId,jdbcType=NUMERIC},#{item.certificateIssuingDoctorName,jdbcType=VARCHAR},
|
||||
#{item.responsibleNurse,jdbcType=VARCHAR},#{item.delFlag,jdbcType=NUMERIC},#{item.searchValue,jdbcType=VARCHAR},
|
||||
#{item.responsibleNurse,jdbcType=VARCHAR},#{item.delFlag,jdbcType=NUMERIC},
|
||||
#{item.createBy,jdbcType=VARCHAR},#{item.createTime,jdbcType=TIMESTAMP},#{item.updateBy,jdbcType=VARCHAR},
|
||||
#{item.updateTime,jdbcType=TIMESTAMP},#{item.remark,jdbcType=VARCHAR},#{item.params})
|
||||
#{item.updateTime,jdbcType=TIMESTAMP})
|
||||
</foreach>
|
||||
</insert>
|
||||
</mapper>
|
||||
|
||||
@ -50,7 +50,7 @@
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectPatientVisitRecordVo">
|
||||
select id, patient_id, card_no, patient_name, patient_phone, family_member_phone, address, sex, birth_date, age, nation, visit_type, visit_date, visit_name, hospital_agency_id, hospital_agency_name, campus_agency_id, campus_agency_name, department_id, department_name, ward_id, ward_name, attending_physician_id, attending_physician_name, main_diagnosis, marriage, medical_history_narrator, admission_time, discharge_time, record_time, outpatient_visit_info, hospitalization_days, in_hospital_info, out_hospital_info, visit_serial_number, in_hospital_number, responsible_nurse, surgical_name, create_by, create_time, update_by, update_time from patient_visit_record
|
||||
select id, patient_id, card_no, patient_name, patient_phone, family_member_phone, address, sex, birth_date, age, nation, visit_method, visit_date, visit_name, hospital_agency_id, hospital_agency_name, campus_agency_id, campus_agency_name, department_id, department_name, ward_id, ward_name, attending_physician_id, attending_physician_name, main_diagnosis, marriage, medical_history_narrator, admission_time, discharge_time, record_time, outpatient_visit_info, hospitalization_days, in_hospital_info, out_hospital_info, visit_serial_number, in_hospital_number, responsible_nurse, surgical_name, create_by, create_time, update_by, update_time from patient_visit_record
|
||||
</sql>
|
||||
|
||||
<select id="selectPatientVisitRecordList" parameterType="com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordDto" resultMap="PatientVisitRecordResult">
|
||||
@ -397,7 +397,7 @@
|
||||
insert into patient_visit_record(patient_id,card_no,
|
||||
patient_name,patient_phone,family_member_phone,
|
||||
address,sex,birth_date,
|
||||
age,nation,visit_type,
|
||||
age,nation,visit_method,
|
||||
visit_date,visit_name,hospital_agency_id,
|
||||
hospital_agency_name,campus_agency_id,campus_agency_name,
|
||||
department_id,department_name,ward_id,
|
||||
|
||||
@ -423,5 +423,6 @@
|
||||
<where>
|
||||
sign.del_flag = 0 and sign.patient_id = #{patientId}
|
||||
</where>
|
||||
order by sign.sign_time desc
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user