修改字段名。

This commit is contained in:
haown 2024-03-25 13:29:44 +08:00
parent b88fcc7f84
commit 706a7e3d3a
13 changed files with 359 additions and 163 deletions

View File

@ -11,6 +11,7 @@ import com.xinelu.common.utils.poi.ExcelUtil;
import com.xinelu.manage.domain.patientvisitrecord.PatientVisitRecord;
import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordDto;
import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordImportDto;
import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordInfoSaveDto;
import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordSaveDto;
import com.xinelu.manage.service.patientvisitrecord.IPatientVisitRecordService;
import io.swagger.annotations.Api;
@ -97,8 +98,9 @@ public class PatientVisitRecordController extends BaseController {
@PreAuthorize("@ss.hasPermi('manage:visit:add')")
@Log(title = "患者就诊记录基本信息", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody PatientVisitRecord patientVisitRecord) {
return toAjax(patientVisitRecordService.insertPatientVisitRecord(patientVisitRecord));
public R<String> add(@Valid @RequestBody PatientVisitRecordSaveDto patientVisitRecord) {
patientVisitRecordService.insertPatientVisitRecord(patientVisitRecord);
return R.ok();
}
/**
@ -119,7 +121,7 @@ public class PatientVisitRecordController extends BaseController {
@PreAuthorize("@ss.hasPermi('manage:visit:add')")
@Log(title = "患者就诊记录基本信息", businessType = BusinessType.INSERT)
@PostMapping("saveRecord")
public R<String> saveRecord(@Valid @RequestBody PatientVisitRecordSaveDto saveDto) {
public R<String> saveRecord(@Valid @RequestBody PatientVisitRecordInfoSaveDto saveDto) {
patientVisitRecordService.saveRecord(saveDto);
return R.ok();
}
@ -132,7 +134,7 @@ public class PatientVisitRecordController extends BaseController {
@PreAuthorize("@ss.hasPermi('manage:visit:edit')")
@Log(title = "患者就诊记录基本信息", businessType = BusinessType.UPDATE)
@PutMapping("updateRecord")
public AjaxResult updateRecord(@Valid @RequestBody PatientVisitRecordSaveDto patientVisitRecord) {
public AjaxResult updateRecord(@Valid @RequestBody PatientVisitRecordInfoSaveDto patientVisitRecord) {
return toAjax(patientVisitRecordService.updateRecord(patientVisitRecord));
}

View File

@ -89,25 +89,25 @@ public class PatientInfo extends BaseEntity {
@Excel(name = "签约时间格式yyyy-MM-dd HH:mm:ss", width = 30, dateFormat = "yyyy-MM-dd")
private LocalDateTime signTime;
/** 开证医生(预住院患者) */
@ApiModelProperty(value = "开证医生")
@Excel(name = "开证医生", readConverterExp = "预住院患者")
private String certificateIssuingDoctor;
/** 就诊方式门诊OUTPATIENT_SERVICE住院BE_IN_HOSPITAL */
@ApiModelProperty(value = "就诊方式门诊OUTPATIENT_SERVICE住院BE_IN_HOSPITAL")
@Excel(name = "就诊方式门诊OUTPATIENT_SERVICE住院BE_IN_HOSPITAL")
private String visitMethod;
/** 主治医生id */
@ApiModelProperty(value = "主治医生id")
@Excel(name = "主治医生id")
private Long attendingPhysicianId;
/** 主治医生姓名 */
@ApiModelProperty(value = "主治医生姓名")
@Excel(name = "主治医生姓名")
private String attendingPhysicianName;
/** 主要诊断 */
@ApiModelProperty(value = "主要诊断")
private String mainDiagnosis;
/** 主治医生 */
@ApiModelProperty(value = "主治医生")
@Excel(name = "主治医生")
private String attendingPhysician;
/** 所属医院id */
@ApiModelProperty(value = "所属医院id")
private Long hospitalAgencyId;
@ -148,14 +148,14 @@ public class PatientInfo extends BaseEntity {
@ApiModelProperty(value = "责任护士")
private String responsibleNurse;
/** 最新一条就诊记录id */
@ApiModelProperty(value = "最新一条就诊记录id")
private Long patientVisitRecordId;
/** 就诊流水号 */
@ApiModelProperty(value = "就诊流水号")
private String visitSerialNumber;
/** 手术名称 */
@ApiModelProperty(value = "手术名称")
private String surgicalName;
/** 入院时间时间格式yyyy-MM-dd */
@ApiModelProperty(value = "入院时间")
private LocalDate admissionDate;
@ -164,10 +164,6 @@ public class PatientInfo extends BaseEntity {
@ApiModelProperty(value = "出院时间(出院患者)")
private LocalDate dischargeDate;
/** 病历内容 */
@ApiModelProperty(value = "病历内容")
private String medicalRecordContent;
/** 预约治疗组(取值以及枚举未知?) */
@ApiModelProperty(value = "预约治疗组(取值以及枚举未知?)")
private String appointmentTreatmentGroup;
@ -189,10 +185,11 @@ public class PatientInfo extends BaseEntity {
@Excel(name = "门诊/住院号 ", readConverterExp = "门诊/住院号 ")
private String inHospitalNumber;
/** 就诊时间门诊患者时间格式yyyy-MM-dd */
@ApiModelProperty(value = "就诊时间")
@Excel(name = "就诊时间", readConverterExp = "门=诊患者")
private LocalDate visitTime;
/** 就诊时间格式yyyy-MM-dd HH:mm:ss */
@ApiModelProperty(value = "就诊时间格式yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "就诊时间格式yyyy-MM-dd HH:mm:ss", width = 30, dateFormat = "yyyy-MM-dd")
private LocalDateTime visitDate;
/** 出院方式(出院患者) */
@ApiModelProperty(value = "出院方式")

View File

@ -3,7 +3,6 @@ package com.xinelu.manage.dto.patientinfo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate;
import java.util.Date;
import lombok.Data;
/**
@ -52,8 +51,8 @@ public class PatientInfoDto {
private String patientType;
/** 主治医生 */
@ApiModelProperty(value = "主治医生")
private String attendingPhysician;
@ApiModelProperty(value = "主治医生id")
private Long attendingPhysicianId;
/** 患者来源微信小程序WE_CHAT_APPLET微信公众号WE_CHAT_OFFICIAL_ACCOUNT管理端MANAGE_END */
@ApiModelProperty(value = "患者来源微信小程序WE_CHAT_APPLET微信公众号WE_CHAT_OFFICIAL_ACCOUNT管理端MANAGE_END")

View File

@ -1,5 +1,6 @@
package com.xinelu.manage.dto.patientvisitrecord;
import com.xinelu.common.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate;
import lombok.Data;
@ -17,6 +18,11 @@ public class PatientVisitRecordDto {
@ApiModelProperty(value = "患者表id")
private Long patientId;
/** 所属医院id */
@ApiModelProperty(value = "所属医院id")
@Excel(name = "所属医院id")
private Long hospitalAgencyId;
/**
* 就诊类型门诊OUTPATIENT_SERVICE住院BE_HOSPITALIZED
*/

View File

@ -82,7 +82,7 @@ public class PatientVisitRecordImportDto {
/** 主治医生 */
@ApiModelProperty(value = "主治医生")
@Excel(name = "主治医生")
private String attendingPhysician;
private String attendingPhysicianName;
@ApiModelProperty(value = "住院/门诊号")
@Excel(name = "住院号")

View File

@ -0,0 +1,123 @@
package com.xinelu.manage.dto.patientvisitrecord;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xinelu.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDateTime;
import javax.validation.constraints.NotNull;
import lombok.Data;
/**
* @description: 患者配置就诊信息保存传输对象
* @author: haown
* @create: 2024-03-13 14:46
**/
@ApiModel("患者配置——就诊信息保存传输对象")
@Data
public class PatientVisitRecordInfoSaveDto {
/** 就诊信息表id */
@ApiModelProperty(value = "就诊信息表id")
private Long id;
/** 患者表id */
@ApiModelProperty(value = "患者表id")
@NotNull(message = "患者数据不能为空")
private Long patientId;
/**
* 就诊类型门诊OUTPATIENT_SERVICE住院BE_HOSPITALIZED
*/
@ApiModelProperty(value = "就诊类型门诊OUTPATIENT_SERVICE住院BE_HOSPITALIZED")
@NotNull(message = "就诊类型不能为空")
private String visitMethod;
/** 主要诊断 */
@ApiModelProperty(value = "主要诊断")
@NotNull(message = "主要诊断不能为空")
private String mainDiagnosis;
/** 就诊流水号 */
@ApiModelProperty(value = "就诊流水号")
@NotNull(message = "就诊流水号不能为空")
private String visitSerialNumber;
/** 主治医生id */
@ApiModelProperty(value = "主治医生id")
@NotNull(message = "主治医生不能为空")
private Long attendingPhysicianId;
/** 主治医生姓名 */
@ApiModelProperty(value = "主治医生姓名")
private String attendingPhysicianName;
/** 所属医院id */
@ApiModelProperty(value = "所属医院id")
@Excel(name = "所属医院id")
private Long hospitalAgencyId;
/** 所属医院名称 */
@ApiModelProperty(value = "所属医院名称")
@Excel(name = "所属医院名称")
private String hospitalAgencyName;
/** 所属院区id */
@ApiModelProperty(value = "所属院区id")
@Excel(name = "所属院区id")
private Long campusAgencyId;
/** 所属院区名称 */
@ApiModelProperty(value = "所属院区名称")
@Excel(name = "所属院区名称")
private String campusAgencyName;
/** 所属科室id */
@NotNull(message = "科室不能为空")
@ApiModelProperty(value = "所属科室id")
private Long departmentId;
/** 所属科室名称 */
@ApiModelProperty(value = "所属科室名称")
private String departmentName;
/** 所属病区id */
@ApiModelProperty(value = "所属病区id")
@Excel(name = "所属病区id")
private Long wardId;
/** 所属病区名称 */
@ApiModelProperty(value = "所属病区名称")
@Excel(name = "所属病区名称")
private String wardName;
/** 入院时间 */
@ApiModelProperty(value = "入院时间")
@NotNull(message = "入院时间不能为空")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime admissionTime;
/** 出院时间 */
@ApiModelProperty(value = "出院时间")
@NotNull(message = "出院时间不能为空")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime dischargeTime;
@ApiModelProperty(value = "住院/门诊号")
private String inHospitalNumber;
/** 入院病历信息,存储患者入院的整个病历信息 */
@ApiModelProperty(value = "入院病历信息,存储患者入院的整个病历信息")
@NotNull(message = "入院病历不能为空")
private String inHospitalInfo;
/** 出院病历信息,存储患者出院的整个病历信息 */
@ApiModelProperty(value = "出院病历信息,存储患者出院的整个病历信息")
private String outHospitalInfo;
/** 手术名称 */
@ApiModelProperty(value = "手术名称")
@Excel(name = "手术名称")
private String surgicalName;
}

View File

@ -2,78 +2,86 @@ package com.xinelu.manage.dto.patientvisitrecord;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xinelu.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.time.LocalDate;
import java.time.LocalDateTime;
import javax.validation.constraints.NotNull;
import lombok.Data;
/**
* @description: 患者配置就诊信息保存传输对象
* @description: 就诊记录保存传输对象
* @author: haown
* @create: 2024-03-13 14:46
* @create: 2024-03-25 09:43
**/
@ApiModel("患者配置——就诊信息保存传输对象")
@Data
public class PatientVisitRecordSaveDto {
/** 就诊信息表id */
@ApiModelProperty(value = "就诊信息表id")
/** 主键Id */
private Long id;
/** 患者表id */
@ApiModelProperty(value = "患者表id")
@NotNull(message = "患者数据不能为空")
private Long patientId;
/**
* 就诊类型门诊OUTPATIENT_SERVICE住院BE_HOSPITALIZED
*/
/** 身份证号 */
@ApiModelProperty(value = "身份证号")
@NotNull(message = "身份证号不能为空")
private String cardNo;
/** 姓名 */
@ApiModelProperty(value = "姓名")
private String patientName;
/** 患者电话 */
@ApiModelProperty(value = "患者电话")
private String patientPhone;
/** 家属电话 */
@ApiModelProperty(value = "家属电话")
private String familyMemberPhone;
/** 地址 */
@ApiModelProperty(value = "地址")
private String address;
/** 性别MALEFEMALE */
@ApiModelProperty(value = "性别MALEFEMALE")
private String sex;
/** 出生日期格式yyyy-MM-dd */
@ApiModelProperty(value = "出生日期格式yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDate birthDate;
/** 就诊类型门诊OUTPATIENT_SERVICE住院BE_HOSPITALIZED */
@ApiModelProperty(value = "就诊类型门诊OUTPATIENT_SERVICE住院BE_HOSPITALIZED")
@NotNull(message = "就诊类型不能为空")
private String visitMethod;
/** 主要诊断 */
@ApiModelProperty(value = "主要诊断")
@NotNull(message = "主要诊断不能为空")
private String mainDiagnosis;
/** 就诊流水号 */
@ApiModelProperty(value = "就诊流水号")
@NotNull(message = "就诊流水号不能为空")
private String visitSerialNumber;
/** 主治医生id */
@ApiModelProperty(value = "主治医生id")
@NotNull(message = "主治医生不能为空")
private Long attendingPhysicianId;
/** 主治医生姓名 */
@ApiModelProperty(value = "主治医生姓名")
private String attendingPhysicianName;
/** 就诊时间格式yyyy-MM-dd HH:mm:ss */
@ApiModelProperty(value = "就诊时间格式yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDateTime visitDate;
/** 所属医院id */
@ApiModelProperty(value = "所属医院id")
@Excel(name = "所属医院id")
@NotNull(message = "所属医院不能为空")
private Long hospitalAgencyId;
/** 所属医院名称 */
@ApiModelProperty(value = "所属医院名称")
@Excel(name = "所属医院名称")
@NotNull(message = "所属医院不能为空")
private String hospitalAgencyName;
/** 所属院区id */
@ApiModelProperty(value = "所属院区id")
@Excel(name = "所属院区id")
private Long campusAgencyId;
/** 所属院区名称 */
@ApiModelProperty(value = "所属院区名称")
@Excel(name = "所属院区名称")
private String campusAgencyName;
/** 所属科室id */
@NotNull(message = "科室不能为空")
@ApiModelProperty(value = "所属科室id")
private Long departmentId;
@ -83,41 +91,72 @@ public class PatientVisitRecordSaveDto {
/** 所属病区id */
@ApiModelProperty(value = "所属病区id")
@Excel(name = "所属病区id")
private Long wardId;
/** 所属病区名称 */
@ApiModelProperty(value = "所属病区名称")
@Excel(name = "所属病区名称")
private String wardName;
/** 主治医生id */
@ApiModelProperty(value = "主治医生id")
private Long attendingPhysicianId;
/** 主治医生姓名 */
@ApiModelProperty(value = "主治医生姓名")
private String attendingPhysicianName;
/** 主要诊断 */
@ApiModelProperty(value = "主要诊断")
private String mainDiagnosis;
/** 入院时间 */
@ApiModelProperty(value = "入院时间")
@NotNull(message = "入院时间不能为空")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime admissionTime;
/** 出院时间 */
@ApiModelProperty(value = "出院时间")
@NotNull(message = "出院时间不能为空")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime dischargeTime;
@ApiModelProperty(value = "住院/门诊号")
private String inHospitalNumber;
/** _记录时间入院记录 */
@ApiModelProperty(value = "_记录时间")
@Excel(name = "_记录时间", readConverterExp = "入=院记录")
private LocalDateTime recordTime;
/** 住院天数(出院记录),单位为:天 */
@ApiModelProperty(value = "住院天数")
@Excel(name = "住院天数", readConverterExp = "出=院记录")
private Integer hospitalizationDays;
/** 入院病历信息,存储患者入院的整个病历信息 */
@ApiModelProperty(value = "入院病历信息,存储患者入院的整个病历信息")
@NotNull(message = "入院病历不能为空")
private String inHospitalInfo;
/** 出院病历信息,存储患者出院的整个病历信息 */
@ApiModelProperty(value = "出院病历信息,存储患者出院的整个病历信息")
private String outHospitalInfo;
/** 就诊流水号 */
@ApiModelProperty(value = "就诊流水号")
private String visitSerialNumber;
/** 门诊/住院号 */
@ApiModelProperty(value = "门诊/住院号")
@NotNull(message = "门诊/住院号不能为空")
private String inHospitalNumber;
/** 责任护士 */
@ApiModelProperty(value = "责任护士")
private String responsibleNurse;
/** 手术名称 */
@ApiModelProperty(value = "手术名称")
@Excel(name = "手术名称")
private String surgicalName;
/** 患者类型预住院患者PRE_HOSPITALIZED_PATIENT在院患者IN_HOSPITAL_PATIENT门诊患者OUTPATIENT出院患者DISCHARGED_PATIENT
签约患者CONTRACTED_PATIENT */
@ApiModelProperty(value = "患者类型预住院患者PRE_HOSPITALIZED_PATIENT在院患者IN_HOSPITAL_PATIENT门诊患者OUTPATIENT出院患者DISCHARGED_PATIENT签约患者CONTRACTED_PATIENT")
@NotNull(message = "患者类型不能为空")
private String patientType;
}

View File

@ -61,4 +61,7 @@ public interface PatientVisitRecordMapper {
* @return 结果
*/
public int deletePatientVisitRecordByIds(Long[] ids);
PatientVisitRecord judgeRepeat(@Param("hospitalAgencyId") Long hospitalAgencyId, @Param("cardNo") String cardNo,
@Param("inHospitalNumber") String inHospitalNumber);
}

View File

@ -190,7 +190,7 @@ public class PatientPreHospitalizationServiceImpl implements IPatientPreHospital
PatientInfo updInfo = patientInfoList.get(0);
String[] ignore = {"id"};
BeanUtils.copyProperties(preHospitalization,updInfo, ignore);
updInfo.setVisitTime(preHospitalization.getRegistrationDate());
updInfo.setVisitDate(preHospitalization.getRegistrationDate().atStartOfDay());
updInfo.setPatientType(PatientTypeConstants.PRE_HOSPITALIZED_PATIENT);
patientInfoMapper.updatePatientInfo(updInfo);
preHospitalization.setPatientId(patientInfoList.get(0).getId());
@ -198,7 +198,7 @@ public class PatientPreHospitalizationServiceImpl implements IPatientPreHospital
PatientInfo saveInfo = new PatientInfo();
// 添加居民
BeanUtils.copyProperties(preHospitalization, saveInfo);
saveInfo.setVisitTime(preHospitalization.getRegistrationDate());
saveInfo.setVisitDate(preHospitalization.getRegistrationDate().atStartOfDay());
saveInfo.setPatientType(PatientTypeConstants.PRE_HOSPITALIZED_PATIENT);
patientInfoMapper.insertPatientInfo(saveInfo);
preHospitalization.setPatientId(saveInfo.getId());

View File

@ -4,6 +4,7 @@ import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.manage.domain.patientvisitrecord.PatientVisitRecord;
import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordDto;
import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordImportDto;
import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordInfoSaveDto;
import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordSaveDto;
import java.util.List;
import org.springframework.web.bind.annotation.RequestBody;
@ -37,7 +38,7 @@ public interface IPatientVisitRecordService {
* @param patientVisitRecord 患者就诊记录基本信息
* @return 结果
*/
public int insertPatientVisitRecord(PatientVisitRecord patientVisitRecord);
public void insertPatientVisitRecord(PatientVisitRecordSaveDto patientVisitRecord);
/**
* 修改患者就诊记录基本信息
@ -52,7 +53,7 @@ public interface IPatientVisitRecordService {
* @param saveDto
* @return
*/
int saveRecord(@RequestBody PatientVisitRecordSaveDto saveDto);
int saveRecord(@RequestBody PatientVisitRecordInfoSaveDto saveDto);
/**
* 修改患者就诊记录基本信息
@ -60,7 +61,7 @@ public interface IPatientVisitRecordService {
* @param updDto 患者就诊记录基本信息
* @return 结果
*/
public int updateRecord(PatientVisitRecordSaveDto updDto);
public int updateRecord(PatientVisitRecordInfoSaveDto updDto);
/**
* 批量删除患者就诊记录基本信息

View File

@ -18,6 +18,7 @@ import com.xinelu.manage.domain.patientvisitrecord.PatientVisitRecord;
import com.xinelu.manage.dto.patientinfo.PatientInfoDto;
import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordDto;
import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordImportDto;
import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordInfoSaveDto;
import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordSaveDto;
import com.xinelu.manage.mapper.agency.AgencyMapper;
import com.xinelu.manage.mapper.department.DepartmentMapper;
@ -83,81 +84,115 @@ public class PatientVisitRecordServiceImpl implements IPatientVisitRecordService
/**
* 新增患者就诊记录基本信息
*
* @param patientVisitRecord 患者就诊记录基本信息
* @param saveDto 患者就诊记录基本信息
* @return 结果
*/
@Override
public int insertPatientVisitRecord(PatientVisitRecord patientVisitRecord) {
@Transactional(rollbackFor = Exception.class)
public void insertPatientVisitRecord(PatientVisitRecordSaveDto saveDto) {
// 根据机构id患者身份证号判断门诊/住院号是否重复
PatientVisitRecord patientVisitRecord = patientVisitRecordMapper.judgeRepeat(saveDto.getHospitalAgencyId(), saveDto.getCardNo(), saveDto.getInHospitalNumber());
if (ObjectUtils.isNotEmpty(patientVisitRecord)) {
throw new ServiceException("门诊/住院号重复,请确认后重新输入!");
}
PatientVisitRecord saveBody = new PatientVisitRecord();
BeanUtils.copyBeanProp(saveBody, saveDto);
setVisitDate(saveBody);
// 1保存患者信息-查询是否有患者档案
PatientInfoDto patientInfoDto = new PatientInfoDto();
patientInfoDto.setHospitalAgencyId(patientVisitRecord.getHospitalAgencyId());
patientInfoDto.setHospitalAgencyId(saveBody.getHospitalAgencyId());
patientInfoDto.setCardNo(patientInfoDto.getCardNo());
List<PatientInfo> patientInfoList = patientInfoMapper.selectPatientInfoList(patientInfoDto);
// 患者档案信息新增/修改
PatientInfo patientInfo = new PatientInfo();
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());
saveBody.setPatientId(patientInfo.getId());
} else {
PatientInfo patientInfo = patientInfoList.get(0);
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);
saveBody.setPatientId(patientId);
}
patientVisitRecord.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName());
patientVisitRecord.setCreateTime(LocalDateTime.now());
return patientVisitRecordMapper.insertPatientVisitRecord(patientVisitRecord);
// 保存/修改就诊记录
Long recordId = saveOrUpate(saveBody);
// 修改患者最近一次就诊记录id
patientInfo.setPatientVisitRecordId(recordId);
patientInfo.setVisitDate(saveBody.getVisitDate());
patientInfoMapper.updatePatientInfo(patientInfo);
}
private Long saveOrUpate(PatientVisitRecord patientVisitRecord) {
PatientVisitRecordDto query = new PatientVisitRecordDto();
query.setHospitalAgencyId(patientVisitRecord.getHospitalAgencyId());
query.setInHospitalNumber(patientVisitRecord.getInHospitalNumber());
List<PatientVisitRecord> patientVisitRecordList = patientVisitRecordMapper.selectPatientVisitRecordList(query);
if (CollectionUtils.isEmpty(patientVisitRecordList)) {
patientVisitRecord.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName());
patientVisitRecord.setCreateTime(LocalDateTime.now());
patientVisitRecordMapper.insertPatientVisitRecord(patientVisitRecord);
} else {
patientVisitRecord.setId(patientVisitRecordList.get(0).getId());
patientVisitRecord.setUpdateBy(SecurityUtils.getLoginUser().getUser().getNickName());
patientVisitRecord.setUpdateTime(LocalDateTime.now());
patientVisitRecordMapper.updatePatientVisitRecord(patientVisitRecord);
}
return patientVisitRecord.getId();
}
@Override
@Transactional
@Transactional(rollbackFor = Exception.class)
public int updatePatientVisitRecord(PatientVisitRecord patientVisitRecord) {
// 根据机构id患者身份证号判断门诊/住院号是否重复
PatientVisitRecord object = patientVisitRecordMapper.judgeRepeat(patientVisitRecord.getHospitalAgencyId(), patientVisitRecord.getCardNo(), patientVisitRecord.getInHospitalNumber());
if (ObjectUtils.isNotEmpty(object)) {
throw new ServiceException("门诊/住院号重复,请确认后重新输入!");
}
// 修改患者基本信息
PatientInfo patientInfo = patientMapper.selectPatientInfoById(patientVisitRecord.getPatientId());
setVisitDate(patientVisitRecord);
BeanUtils.copyBeanProp(patientInfo, patientVisitRecord);
setPatientType(patientInfo, patientVisitRecord);
patientMapper.updatePatientInfo(patientInfo);
// 修改就诊记录信息
return patientVisitRecordMapper.updatePatientVisitRecord(patientVisitRecord);
}
@Override
public int saveRecord(PatientVisitRecordSaveDto saveDto) {
@Transactional(rollbackFor = Exception.class)
public int saveRecord(PatientVisitRecordInfoSaveDto saveDto) {
PatientVisitRecord patientVisitRecord = new PatientVisitRecord();
// 查询患者基本信息
PatientBaseInfoVo patientBaseInfo = patientMapper.getPatientBaseInfo(saveDto.getPatientId());
BeanUtils.copyBeanProp(patientVisitRecord, patientBaseInfo);
// 根据机构id患者身份证号判断门诊/住院号是否重复
PatientVisitRecord object = patientVisitRecordMapper.judgeRepeat(patientVisitRecord.getHospitalAgencyId(), patientVisitRecord.getCardNo(), patientVisitRecord.getInHospitalNumber());
if (ObjectUtils.isNotEmpty(object)) {
throw new ServiceException("门诊/住院号重复,请确认后重新输入!");
}
BeanUtils.copyBeanProp(patientVisitRecord, saveDto);
patientVisitRecord.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName());
patientVisitRecord.setCreateTime(LocalDateTime.now());
// 住院时间出院时间-入院时间
long daysBetween = ChronoUnit.DAYS.between(saveDto.getAdmissionTime(), saveDto.getDischargeTime());
patientVisitRecord.setHospitalizationDays((int) daysBetween + 1);
if (StringUtils.equals(VisitMethodConstants.OUTPATIENT_SERVICE, saveDto.getVisitMethod())) {
patientVisitRecord.setVisitDate(saveDto.getDischargeTime());
} else if (StringUtils.equals(VisitMethodConstants.BE_HOSPITALIZED, saveDto.getVisitMethod())) {
patientVisitRecord.setVisitDate(saveDto.getAdmissionTime());
}
setVisitDate(patientVisitRecord);
int flag = patientVisitRecordMapper.insertPatientVisitRecord(patientVisitRecord);
if (flag > 0) {
// 修改患者信息
PatientInfo patientInfo = patientMapper.selectPatientInfoById(saveDto.getPatientId());
BeanUtils.copyBeanProp(patientInfo, patientVisitRecord);
patientInfo.setId(saveDto.getPatientId());
// 设置患者类型
setPatientType(patientInfo, patientVisitRecord);
patientInfo.setPatientVisitRecordId(patientVisitRecord.getId());
patientMapper.updatePatientInfo(patientInfo);
}
return flag;
@ -171,7 +206,7 @@ public class PatientVisitRecordServiceImpl implements IPatientVisitRecordService
*/
@Override
@Transactional
public int updateRecord(PatientVisitRecordSaveDto updDto) {
public int updateRecord(PatientVisitRecordInfoSaveDto updDto) {
if (updDto.getId() == null) {
throw new ServiceException("数据传输错误");
}
@ -180,13 +215,7 @@ public class PatientVisitRecordServiceImpl implements IPatientVisitRecordService
patientVisitRecord.setUpdateBy(SecurityUtils.getLoginUser().getUser().getNickName());
patientVisitRecord.setUpdateTime(LocalDateTime.now());
// 住院时间出院时间-入院时间
long daysBetween = ChronoUnit.DAYS.between(updDto.getAdmissionTime(), updDto.getDischargeTime());
patientVisitRecord.setHospitalizationDays((int) daysBetween + 1);
if (StringUtils.equals(VisitMethodConstants.OUTPATIENT_SERVICE, updDto.getVisitMethod())) {
patientVisitRecord.setVisitDate(updDto.getDischargeTime());
} else if (StringUtils.equals(VisitMethodConstants.BE_HOSPITALIZED, updDto.getVisitMethod())) {
patientVisitRecord.setVisitDate(updDto.getAdmissionTime());
}
setVisitDate(patientVisitRecord);
int flag = patientVisitRecordMapper.updatePatientVisitRecord(patientVisitRecord);
if (flag > 0) {
// 查询患者信息
@ -201,6 +230,7 @@ public class PatientVisitRecordServiceImpl implements IPatientVisitRecordService
return flag;
}
/**
* 批量删除患者就诊记录基本信息
*
@ -351,8 +381,7 @@ public class PatientVisitRecordServiceImpl implements IPatientVisitRecordService
return AjaxResult.success();
}
private void setPatientType(PatientInfo patientInfo, PatientVisitRecord patientVisitRecord) {
private void setVisitDate(PatientVisitRecord patientVisitRecord) {
if (StringUtils.equals(VisitMethodConstants.OUTPATIENT_SERVICE, patientVisitRecord.getVisitMethod())) {
patientVisitRecord.setVisitDate(patientVisitRecord.getDischargeTime());
} else if (StringUtils.equals(VisitMethodConstants.BE_HOSPITALIZED, patientVisitRecord.getVisitMethod())) {
@ -361,7 +390,9 @@ public class PatientVisitRecordServiceImpl implements IPatientVisitRecordService
patientVisitRecord.setHospitalizationDays((int) daysBetween + 1);
patientVisitRecord.setVisitDate(patientVisitRecord.getAdmissionTime());
}
}
private void setPatientType(PatientInfo patientInfo, PatientVisitRecord patientVisitRecord) {
if (StringUtils.equals(VisitMethodConstants.BE_HOSPITALIZED, patientVisitRecord.getVisitMethod())) {
// 住院患者有出院时间设置患者类型为出院没有出院时间设置患者类型为在院
if (patientVisitRecord.getDischargeTime() == null) {

View File

@ -17,10 +17,10 @@
<result property="signPatientRecordId" column="sign_patient_record_id" />
<result property="serviceStatus" column="service_status" />
<result property="signTime" column="sign_time" />
<result property="certificateIssuingDoctor" column="certificate_issuing_doctor" />
<result property="visitMethod" column="visit_method" />
<result property="attendingPhysicianId" column="attending_physician_id" />
<result property="attendingPhysicianName" column="attending_physician_name" />
<result property="mainDiagnosis" column="main_diagnosis" />
<result property="attendingPhysician" column="attending_physician" />
<result property="hospitalAgencyId" column="hospital_agency_id" />
<result property="hospitalAgencyName" column="hospital_agency_name" />
<result property="campusAgencyId" column="campus_agency_id" />
@ -30,17 +30,16 @@
<result property="wardId" column="ward_id" />
<result property="wardName" column="ward_name" />
<result property="responsibleNurse" column="responsible_nurse" />
<result property="patientVisitRecordId" column="patient_visit_record_id" />
<result property="visitSerialNumber" column="visit_serial_number" />
<result property="surgicalName" column="surgical_name" />
<result property="admissionDate" column="admission_date" />
<result property="dischargeDate" column="discharge_date" />
<result property="medicalRecordContent" column="medical_record_content" />
<result property="appointmentTreatmentGroup" column="appointment_treatment_group" />
<result property="registrationNo" column="registration_no" />
<result property="registrationDate" column="registration_date" />
<result property="appointmentDate" column="appointment_date" />
<result property="inHospitalNumber" column="in_hospital_number" />
<result property="visitTime" column="visit_time" />
<result property="visitDate" column="visit_date" />
<result property="dischargeMethod" column="discharge_method" />
<result property="openId" column="open_id" />
<result property="unionId" column="union_id" />
@ -64,11 +63,11 @@
patient_type,
sign_status,
sign_time,
certificate_issuing_doctor, visit_method, main_diagnosis, attending_physician,
visit_method, attending_physician_id, attending_physician_name, main_diagnosis,
hospital_agency_id, hospital_agency_name, campus_agency_id, campus_agency_name, department_id, department_name, ward_id, ward_name,
responsible_nurse, visit_serial_number, surgical_name,
admission_date, discharge_date, medical_record_content, appointment_treatment_group,
registration_no, registration_date, appointment_date, in_hospital_number, visit_time, discharge_method,
responsible_nurse, patient_visit_record_id, visit_serial_number,
admission_date, discharge_date, appointment_treatment_group,
registration_no, registration_date, appointment_date, in_hospital_number, visit_date, discharge_method,
open_id, union_id, patient_source, del_flag, create_by, create_time, update_by, update_time
from patient_info
</sql>
@ -96,6 +95,9 @@
</otherwise>
</choose>
</if>
<if test="attendingPhysicianId != null">
and attending_physician_id = #{attendingPhysicianId}
</if>
<if test="mainDiagnosis != null and mainDiagnosis != ''">
and main_diagnosis like concat('%', #{mainDiagnosis}, '%')
</if>
@ -111,21 +113,14 @@
<if test="wardId != null ">
and ward_id = #{wardId}
</if>
<if test="attendingPhysician != null and attendingPhysician != ''">
and attending_physician = #{attendingPhysician}
</if>
<if test="visitMethod != null and visitMethod != ''">
and visit_method = #{visitMethod}
</if>
<if test="surgicalName != null and surgicalName != ''">
and surgical_name like concat('%', #{surgicalName}, '%')
</if>
<if test="visitTimeStart != null ">
and visit_time >= #{visitTimeStart}
and visit_date >= #{visitTimeStart}
</if>
<if test="visitTimeEnd != null ">
and visit_time &lt;= #{visitTimeEnd}
and visit_date &lt;= #{visitTimeEnd}
</if>
<if test="admissionDateStart != null ">
and admission_date >= #{admissionDateStart}
@ -142,9 +137,6 @@
<if test="appointmentTreatmentGroup != null and appointmentTreatmentGroup != ''">
and appointment_treatment_group = #{appointmentTreatmentGroup}
</if>
<if test="certificateIssuingDoctor != null and certificateIssuingDoctor != ''">
and certificate_issuing_doctor = #{certificateIssuingDoctor}
</if>
<if test="registrationNo != null and registrationNo != ''">
and registration_no = #{registrationNo}
</if>
@ -200,13 +192,13 @@
</if>
<if test="signTime != null">sign_time,
</if>
<if test="certificateIssuingDoctor != null">certificate_issuing_doctor,
</if>
<if test="visitMethod != null">visit_method,
</if>
<if test="mainDiagnosis != null">main_diagnosis,
<if test="attendingPhysicianId != null">attending_physician_id,
</if>
<if test="attendingPhysician != null">attending_physician,
<if test="attendingPhysicianName != null">attending_physician_name,
</if>
<if test="mainDiagnosis != null">main_diagnosis,
</if>
<if test="hospitalAgencyId != null">hospital_agency_id,
</if>
@ -227,11 +219,11 @@
<if test="responsibleNurse != null">
responsible_nurse,
</if>
<if test="patientVisitRecordId != null">
patient_visit_record_id,
</if>
<if test="visitSerialNumber != null">
visit_serial_number,
</if>
<if test="surgicalName != null">
surgical_name,
</if>
<if test="admissionDate != null">
admission_date,
@ -239,8 +231,6 @@
<if test="dischargeDate != null">
discharge_date,
</if>
<if test="medicalRecordContent != null">medical_record_content,
</if>
<if test="appointmentTreatmentGroup != null">appointment_treatment_group,
</if>
<if test="registrationNo != null">registration_no,
@ -251,7 +241,7 @@
</if>
<if test="inHospitalNumber != null">in_hospital_number,
</if>
<if test="visitTime != null">visit_time,
<if test="visitDate != null">visit_date,
</if>
<if test="dischargeMethod != null">discharge_method,
</if>
@ -297,13 +287,13 @@
</if>
<if test="signTime != null">#{signTime},
</if>
<if test="certificateIssuingDoctor != null">#{certificateIssuingDoctor},
</if>
<if test="visitMethod != null">#{visitMethod},
</if>
<if test="mainDiagnosis != null">#{mainDiagnosis},
<if test="attendingPhysicianId != null">#{attendingPhysicianId},
</if>
<if test="attendingPhysician != null">#{attendingPhysician},
<if test="attendingPhysicianName != null">#{attendingPhysicianName},
</if>
<if test="mainDiagnosis != null">#{mainDiagnosis},
</if>
<if test="hospitalAgencyId != null">#{hospitalAgencyId},
</if>
@ -323,16 +313,14 @@
</if>
<if test="responsibleNurse != null">#{responsibleNurse},
</if>
<if test="visitSerialNumber != null">#{visitSerialNumber},
<if test="patientVisitRecordId != null">#{patientVisitRecordId},
</if>
<if test="surgicalName != null">#{surgicalName},
<if test="visitSerialNumber != null">#{visitSerialNumber},
</if>
<if test="admissionDate != null">#{admissionDate},
</if>
<if test="dischargeDate != null">#{dischargeDate},
</if>
<if test="medicalRecordContent != null">#{medicalRecordContent},
</if>
<if test="appointmentTreatmentGroup != null">#{appointmentTreatmentGroup},
</if>
<if test="registrationNo != null">#{registrationNo},
@ -343,7 +331,7 @@
</if>
<if test="inHospitalNumber != null">#{inHospitalNumber},
</if>
<if test="visitTime != null">#{visitTime},
<if test="visitDate != null">#{visitDate},
</if>
<if test="dischargeMethod != null">#{dischargeMethod},
</if>
@ -403,18 +391,18 @@
<if test="signTime != null">sign_time =
#{signTime},
</if>
<if test="certificateIssuingDoctor != null">certificate_issuing_doctor =
#{certificateIssuingDoctor},
</if>
<if test="visitMethod != null">visit_method =
#{visitMethod},
</if>
<if test="attendingPhysicianId != null">attending_physician_id =
#{attendingPhysicianId},
</if>
<if test="attendingPhysicianName != null">attending_physician_name =
#{attendingPhysicianName},
</if>
<if test="mainDiagnosis != null">main_diagnosis =
#{mainDiagnosis},
</if>
<if test="attendingPhysician != null">attending_physician =
#{attendingPhysician},
</if>
<if test="hospitalAgencyId != null">hospital_agency_id =
#{hospitalAgencyId},
</if>
@ -442,21 +430,18 @@
<if test="responsibleNurse != null">responsible_nurse =
#{responsibleNurse},
</if>
<if test="patientVisitRecordId != null">patient_visit_record_id =
#{patientVisitRecordId},
</if>
<if test="visitSerialNumber != null">visit_serial_number =
#{visitSerialNumber},
</if>
<if test="surgicalName != null">surgical_name =
#{surgicalName},
</if>
<if test="admissionDate != null">
admission_date = #{admissionDate},
</if>
<if test="dischargeDate != null">
discharge_date = #{dischargeDate},
</if>
<if test="medicalRecordContent != null">medical_record_content =
#{medicalRecordContent},
</if>
<if test="appointmentTreatmentGroup != null">appointment_treatment_group =
#{appointmentTreatmentGroup},
</if>
@ -472,8 +457,8 @@
<if test="inHospitalNumber != null">in_hospital_number =
#{inHospitalNumber},
</if>
<if test="visitTime != null">visit_time =
#{visitTime},
<if test="visitDate != null">visit_date =
#{visitDate},
</if>
<if test="dischargeMethod != null">discharge_method =
#{dischargeMethod},

View File

@ -59,6 +59,9 @@
<if test="patientId != null ">
and patient_id = #{patientId}
</if>
<if test="hospitalAgencyId != null">
and hospital_agency_id = #{hospitalAgencyId}
</if>
<if test="visitMethod != null ">
and visit_method = #{visitMethod}
</if>
@ -428,4 +431,11 @@
#{item.updateTime,jdbcType=TIMESTAMP},#{item.remark,jdbcType=VARCHAR})
</foreach>
</insert>
<select id="judgeRepeat" resultMap="PatientVisitRecordResult">>
<include refid="selectPatientVisitRecordVo"/>
where
hospital_agency_id = #{hospitalAgencyId,jdbcType=NUMERIC}
AND card_no != #{cardNo,jdbcType=VARCHAR}
AND in_hospital_number = #{inHospitalNumber,jdbcType=VARCHAR}
</select>
</mapper>