diff --git a/postdischarge-admin/src/main/resources/template/出院患者信息导入表.xlsx b/postdischarge-admin/src/main/resources/template/出院患者信息导入表.xlsx index e914f235..b1213419 100644 Binary files a/postdischarge-admin/src/main/resources/template/出院患者信息导入表.xlsx and b/postdischarge-admin/src/main/resources/template/出院患者信息导入表.xlsx differ diff --git a/postdischarge-admin/src/main/resources/template/在院患者信息导入表.xlsx b/postdischarge-admin/src/main/resources/template/在院患者信息导入表.xlsx index 1f2ede01..b068f26f 100644 Binary files a/postdischarge-admin/src/main/resources/template/在院患者信息导入表.xlsx and b/postdischarge-admin/src/main/resources/template/在院患者信息导入表.xlsx differ diff --git a/postdischarge-admin/src/main/resources/template/门诊患者信息导入表.xlsx b/postdischarge-admin/src/main/resources/template/门诊患者信息导入表.xlsx index 199e6176..68b0cfbb 100644 Binary files a/postdischarge-admin/src/main/resources/template/门诊患者信息导入表.xlsx and b/postdischarge-admin/src/main/resources/template/门诊患者信息导入表.xlsx differ diff --git a/postdischarge-admin/src/main/resources/template/预住院患者信息导入表.xlsx b/postdischarge-admin/src/main/resources/template/预住院患者信息导入表.xlsx index fe410cea..708660df 100644 Binary files a/postdischarge-admin/src/main/resources/template/预住院患者信息导入表.xlsx and b/postdischarge-admin/src/main/resources/template/预住院患者信息导入表.xlsx differ diff --git a/postdischarge-common/src/main/java/com/xinelu/common/constant/DeviceStatusConstants.java b/postdischarge-common/src/main/java/com/xinelu/common/constant/DeviceStatusConstants.java new file mode 100644 index 00000000..c3246f60 --- /dev/null +++ b/postdischarge-common/src/main/java/com/xinelu/common/constant/DeviceStatusConstants.java @@ -0,0 +1,19 @@ +package com.xinelu.common.constant; + +/** + * @description: 设备状态常量 + * @author: haown + * @create: 2024-03-13 10:46 + **/ +public class DeviceStatusConstants { + + /** + * 绑定 + */ + public static final String BIND = "BIND"; + + /** + * 解绑 + */ + public static final String UN_BIND = "UN_BIND"; +} diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/controller/importdownload/ImportDownloadController.java b/postdischarge-manage/src/main/java/com/xinelu/manage/controller/importdownload/ImportDownloadController.java index 08502b62..3f72aab4 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/controller/importdownload/ImportDownloadController.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/controller/importdownload/ImportDownloadController.java @@ -2,6 +2,13 @@ package com.xinelu.manage.controller.importdownload; import com.xinelu.common.constant.Constants; import com.xinelu.common.exception.ServiceException; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import java.io.File; +import java.io.IOException; +import java.util.Objects; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.util.ResourceUtils; @@ -9,12 +16,6 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import javax.servlet.ServletOutputStream; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.io.IOException; -import java.util.Objects; - /** * 导入与下载Controller * @@ -22,6 +23,7 @@ import java.util.Objects; * @date 2024-02-26 */ +@Api(tags = "导入与下载控制器") @RestController @RequestMapping("/system/importDownload") public class ImportDownloadController { @@ -32,6 +34,8 @@ public class ImportDownloadController { * @param fileType 文件类型 * @param res http请求 **/ + @ApiOperation(value = "下载导入模板", notes = "fileType:agency:机构信息模板,department:科室信息模板," + + "outpatient:门诊患者模板,prehospitalized:预住院患者模板,inhospital:在院患者模板,discharged:出院患者模板") @RequestMapping("downloadTemplate") public void download(@RequestParam(value = "fileType") String fileType, HttpServletResponse res) throws IOException { if (StringUtils.isBlank(fileType)) { diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/controller/patientprehospitalization/PatientPreHospitalizationController.java b/postdischarge-manage/src/main/java/com/xinelu/manage/controller/patientprehospitalization/PatientPreHospitalizationController.java index 790fc153..36c390da 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/controller/patientprehospitalization/PatientPreHospitalizationController.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/controller/patientprehospitalization/PatientPreHospitalizationController.java @@ -101,7 +101,8 @@ public class PatientPreHospitalizationController extends BaseController { * @return 导入结果 * @throws Exception 异常信息 */ - @Log(title = "导入患者就诊信息", businessType = BusinessType.IMPORT) + @ApiOperation("导入预住院患者信息") + @Log(title = "导入预住院患者信息", businessType = BusinessType.IMPORT) @PostMapping("/importInfo") public AjaxResult importPatientList(MultipartFile file) throws Exception { // 判断excel里面是否有数据/文件格式 diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/controller/patientvisitrecord/PatientVisitRecordController.java b/postdischarge-manage/src/main/java/com/xinelu/manage/controller/patientvisitrecord/PatientVisitRecordController.java index 0221df0c..35a9076d 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/controller/patientvisitrecord/PatientVisitRecordController.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/controller/patientvisitrecord/PatientVisitRecordController.java @@ -4,12 +4,14 @@ import com.xinelu.common.annotation.Log; import com.xinelu.common.constant.Constants; import com.xinelu.common.core.controller.BaseController; import com.xinelu.common.core.domain.AjaxResult; +import com.xinelu.common.core.domain.R; import com.xinelu.common.core.page.TableDataInfo; import com.xinelu.common.enums.BusinessType; 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.PatientVisitRecordSaveDto; import com.xinelu.manage.service.patientvisitrecord.IPatientVisitRecordService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -19,6 +21,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang3.StringUtils; import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; @@ -97,13 +100,26 @@ public class PatientVisitRecordController extends BaseController { return toAjax(patientVisitRecordService.insertPatientVisitRecord(patientVisitRecord)); } - /** + /** + * 患者配置——就诊信息保存 + */ + @ApiOperation("患者配置——就诊信息保存") + @PreAuthorize("@ss.hasPermi('manage:visit:add')") + @Log(title = "患者就诊记录基本信息", businessType = BusinessType.INSERT) + @PostMapping("saveRecord") + public R saveRecord(@Validated @RequestBody PatientVisitRecordSaveDto saveDto) { + patientVisitRecordService.saveRecord(saveDto); + return R.ok(); + } + + + /** * 修改患者就诊记录基本信息 */ @PreAuthorize("@ss.hasPermi('manage:visit:edit')") @Log(title = "患者就诊记录基本信息", businessType = BusinessType.UPDATE) @PutMapping - public AjaxResult edit(@RequestBody PatientVisitRecord patientVisitRecord) { + public AjaxResult edit(@RequestBody PatientVisitRecordSaveDto patientVisitRecord) { return toAjax(patientVisitRecordService.updatePatientVisitRecord(patientVisitRecord)); } @@ -124,9 +140,10 @@ public class PatientVisitRecordController extends BaseController { * @return 导入结果 * @throws Exception 异常信息 */ + @ApiOperation(value = "导入患者就诊记录", notes = "patientType: outpatient:门诊患者,inhospital:在院患者,discharged:出院患者") @Log(title = "导入患者就诊信息", businessType = BusinessType.IMPORT) @PostMapping("/importPatientInfo") - public AjaxResult importPatientList(MultipartFile file, @RequestParam(value = "patientType") String patientType) throws Exception { + public AjaxResult importPatientList(MultipartFile file, @RequestParam(value = "patientType") String patientType) throws Exception { // 判断excel里面是否有数据/文件格式 if (Objects.isNull(file) || StringUtils.isBlank(file.getOriginalFilename())) { return AjaxResult.error("请选择需要导入的文件!"); diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/controller/projectdevice/ProjectDeviceController.java b/postdischarge-manage/src/main/java/com/xinelu/manage/controller/projectdevice/ProjectDeviceController.java index 80366369..0dd7fbfe 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/controller/projectdevice/ProjectDeviceController.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/controller/projectdevice/ProjectDeviceController.java @@ -33,11 +33,11 @@ public class ProjectDeviceController extends BaseController { @Resource private IProjectDeviceService projectDeviceService; -/** - * 查询检测项目设备列表 - */ -@PreAuthorize("@ss.hasPermi('manage:projectdevice:list')") -@GetMapping("/list") + /** + * 查询检测项目设备列表 + */ + @PreAuthorize("@ss.hasPermi('manage:projectdevice:list')") + @GetMapping("/list") public TableDataInfo list(ProjectDevice projectDevice) { startPage(); List list = projectDeviceService.selectProjectDeviceList(projectDevice); diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/controller/projectresult/ProjectResultController.java b/postdischarge-manage/src/main/java/com/xinelu/manage/controller/projectresult/ProjectResultController.java index d9907636..3f053824 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/controller/projectresult/ProjectResultController.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/controller/projectresult/ProjectResultController.java @@ -41,6 +41,7 @@ public class ProjectResultController extends BaseController { /** * 查询检测项目结果列表 */ + @ApiOperation("查询检测项目结果列表") @PreAuthorize("@ss.hasPermi('manage:projectresult:list')") @GetMapping("/list") public TableDataInfo list(ProjectResult projectResult) { @@ -64,6 +65,7 @@ public class ProjectResultController extends BaseController { /** * 获取检测项目结果详细信息 */ + @ApiOperation("根据id获取检测项目结果详细信息") @PreAuthorize("@ss.hasPermi('manage:projectresult:query')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/project/Project.java b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/project/Project.java index f6ce23ae..9e2c4b13 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/project/Project.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/project/Project.java @@ -4,6 +4,7 @@ import com.xinelu.common.annotation.Excel; import com.xinelu.common.core.domain.BaseEntity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import java.math.BigDecimal; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; @@ -51,9 +52,9 @@ public class Project extends BaseEntity { @Excel(name = "项目别名") private String projectAlias; - /** 是否启用,0:是,1:否 */ - @ApiModelProperty(value = "是否启用,0:是,1:否") - @Excel(name = "是否启用,0:是,1:否") + /** 是否启用,0:否,1:是 */ + @ApiModelProperty(value = "是否启用,0:否,1:是") + @Excel(name = "是否启用,0:否,1:是") private Integer enableStatus; /** 判断模式,定量:QUANTIFY,定性:QUALITATIVE */ @@ -64,12 +65,12 @@ public class Project extends BaseEntity { /** 项目指标最大值 */ @ApiModelProperty(value = "项目指标最大值") @Excel(name = "项目指标最大值") - private Integer maxValue; + private BigDecimal maxValue; /** 项目指标最小值 */ @ApiModelProperty(value = "项目指标最小值") @Excel(name = "项目指标最小值") - private Integer minValue; + private BigDecimal minValue; /** 项目指标默认值 */ @ApiModelProperty(value = "项目指标默认值") diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/projectdevice/ProjectDevice.java b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/projectdevice/ProjectDevice.java index 84c1c6b9..8a35d1a5 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/projectdevice/ProjectDevice.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/projectdevice/ProjectDevice.java @@ -1,5 +1,6 @@ package com.xinelu.manage.domain.projectdevice; +import com.fasterxml.jackson.annotation.JsonFormat; import com.xinelu.common.core.domain.BaseEntity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -50,9 +51,9 @@ public class ProjectDevice extends BaseEntity { @ApiModelProperty("设备编码") private String deviceCode; /** - * 设备状态 + * 设备状态,绑定:BIND,解绑:UN_BIND */ - @ApiModelProperty("设备状态") + @ApiModelProperty("设备状态,绑定:BIND,解绑:UN_BIND") private String deviceStatus; /** * 备注信息 @@ -63,6 +64,7 @@ public class ProjectDevice extends BaseEntity { * 设备绑定时间 */ @ApiModelProperty("设备绑定时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date deviceBindTime; /** * 设备解绑时间 diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/projectlastresult/ProjectLastResult.java b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/projectlastresult/ProjectLastResult.java index 9ac32e86..2f3ecfcc 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/projectlastresult/ProjectLastResult.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/projectlastresult/ProjectLastResult.java @@ -4,6 +4,7 @@ import com.xinelu.common.annotation.Excel; import com.xinelu.common.core.domain.BaseEntity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import java.math.BigDecimal; import java.util.Date; import lombok.Data; @@ -94,12 +95,12 @@ public class ProjectLastResult extends BaseEntity { * 项目指标最大值 */ @ApiModelProperty("项目指标最大值") - private Integer maxValue; + private BigDecimal maxValue; /** * 项目指标最小值 */ @ApiModelProperty("项目指标最小值") - private Integer minValue; + private BigDecimal minValue; /** * 项目指标默认值 */ diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/projectresult/ProjectResult.java b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/projectresult/ProjectResult.java index 340357ef..73ad82cf 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/domain/projectresult/ProjectResult.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/domain/projectresult/ProjectResult.java @@ -5,6 +5,7 @@ import com.xinelu.common.annotation.Excel; import com.xinelu.common.core.domain.BaseEntity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import java.math.BigDecimal; import java.util.Date; import lombok.AllArgsConstructor; import lombok.Data; @@ -102,12 +103,12 @@ private static final long serialVersionUID=1L; /** 项目指标最大值 */ @ApiModelProperty(value = "项目指标最大值") @Excel(name = "项目指标最大值") - private Integer maxValue; + private BigDecimal maxValue; /** 项目指标最小值 */ @ApiModelProperty(value = "项目指标最小值") @Excel(name = "项目指标最小值") - private Integer minValue; + private BigDecimal minValue; /** 项目指标默认值 */ @ApiModelProperty(value = "项目指标默认值") diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/dto/patientvisitrecord/PatientVisitRecordImportDto.java b/postdischarge-manage/src/main/java/com/xinelu/manage/dto/patientvisitrecord/PatientVisitRecordImportDto.java index 64f759dd..70ecb3cf 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/dto/patientvisitrecord/PatientVisitRecordImportDto.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/dto/patientvisitrecord/PatientVisitRecordImportDto.java @@ -83,6 +83,10 @@ public class PatientVisitRecordImportDto { @Excel(name = "住院号") private String inHospitalNumber; + @ApiModelProperty(value = "门诊号") + @Excel(name = "门诊号") + private String outpatientNumber; + /** 责任护士 */ @ApiModelProperty(value = "责任护士") @Excel(name = "责任护士") diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/dto/patientvisitrecord/PatientVisitRecordSaveDto.java b/postdischarge-manage/src/main/java/com/xinelu/manage/dto/patientvisitrecord/PatientVisitRecordSaveDto.java new file mode 100644 index 00000000..5f8a47f2 --- /dev/null +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/dto/patientvisitrecord/PatientVisitRecordSaveDto.java @@ -0,0 +1,110 @@ +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.util.Date; +import javax.validation.constraints.NotBlank; +import lombok.Data; + +/** + * @description: 患者配置——就诊信息保存传输对象 + * @author: haown + * @create: 2024-03-13 14:46 + **/ +@ApiModel("患者配置——就诊信息保存传输对象") +@Data +public class PatientVisitRecordSaveDto { + + /** 患者表id */ + @ApiModelProperty(value = "患者表id") + @NotBlank(message = "患者数据不能为空") + private Long patientId; + + /** + * 就诊类型,门诊:OUTPATIENT_SERVICE,住院:BE_HOSPITALIZED + */ + @ApiModelProperty(value = "就诊类型,门诊:OUTPATIENT_SERVICE,住院:BE_HOSPITALIZED") + @NotBlank(message = "就诊类型不能为空") + private String visitType; + + /** 主要诊断 */ + @ApiModelProperty(value = "主要诊断") + @NotBlank(message = "主要诊断不能为空") + private String mainDiagnosis; + + /** 就诊流水号 */ + @ApiModelProperty(value = "就诊流水号") + @NotBlank(message = "就诊流水号不能为空") + private String visitSerialNumber; + + /** 主治医生id */ + @ApiModelProperty(value = "主治医生id") + @NotBlank(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 */ + @NotBlank(message = "科室不能为空") + @ApiModelProperty(value = "所属科室id") + private Long departmentId; + + /** 所属科室名称 */ + @ApiModelProperty(value = "所属科室名称") + private String departmentName; + + /** 入院时间 */ + @ApiModelProperty(value = "入院时间") + @NotBlank(message = "入院时间不能为空") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date admissionTime; + + /** 出院时间 */ + @ApiModelProperty(value = "出院时间") + @NotBlank(message = "出院时间不能为空") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date dischargeTime; + + @ApiModelProperty(value = "住院/门诊号") + private String inHospitalNumber; + + /** 入院病历信息,存储患者入院的整个病历信息 */ + @ApiModelProperty(value = "入院病历信息,存储患者入院的整个病历信息") + @NotBlank(message = "入院病历不能为空") + private String inHospitalInfo; + + /** 出院病历信息,存储患者出院的整个病历信息 */ + @ApiModelProperty(value = "出院病历信息,存储患者出院的整个病历信息") + @NotBlank(message = "出院病历不能为空") + private String outHospitalInfo; + + /** 门诊记录信息(就诊记录-门诊记录) */ + @ApiModelProperty(value = "门诊记录信息") + @NotBlank(message = "门诊记录信息不能为空") + private String outpatientVisitInfo; + +} diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/project/ProjectMapper.java b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/project/ProjectMapper.java index a42e0f4a..638232c9 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/project/ProjectMapper.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/project/ProjectMapper.java @@ -2,7 +2,7 @@ package com.xinelu.manage.mapper.project; import com.xinelu.manage.domain.project.Project; import java.util.List; - +import org.apache.ibatis.annotations.Param; /** * 检测项目Mapper接口 @@ -58,4 +58,6 @@ public interface ProjectMapper { * @return 结果 */ public int deleteProjectByIds(Long[] ids); + + List hasSameCodeProject(@Param("id")Long id, @Param("groupId")Long groupId, @Param("projectCode")String projectCode); } diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/projectgroup/ProjectGroupMapper.java b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/projectgroup/ProjectGroupMapper.java index 1e15d504..b1cd7e55 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/projectgroup/ProjectGroupMapper.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/mapper/projectgroup/ProjectGroupMapper.java @@ -62,4 +62,6 @@ public interface ProjectGroupMapper { * @return 结果 */ public int deleteProjectGroupByIds(Long[] ids); + + List hasSameCodeGroup(@Param("id")Long id, @Param("groupCode")String groupCode); } diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/patientprehospitalization/impl/PatientPreHospitalizationServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/patientprehospitalization/impl/PatientPreHospitalizationServiceImpl.java index 903b3762..89c7fdb8 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/patientprehospitalization/impl/PatientPreHospitalizationServiceImpl.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/patientprehospitalization/impl/PatientPreHospitalizationServiceImpl.java @@ -78,6 +78,7 @@ public class PatientPreHospitalizationServiceImpl implements IPatientPreHospital preHospitalization.setPatientId(patientList.get(0).getId()); } // 保存预住院信息 + preHospitalization.setDelFlag(0); preHospitalization.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName()); preHospitalization.setCreateTime(DateUtils.getNowDate()); return preHospitalizationMapper.insertSelective(preHospitalization); diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/patientvisitrecord/IPatientVisitRecordService.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/patientvisitrecord/IPatientVisitRecordService.java index 79be4e0e..65c5ad8a 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/patientvisitrecord/IPatientVisitRecordService.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/patientvisitrecord/IPatientVisitRecordService.java @@ -4,7 +4,9 @@ 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.PatientVisitRecordSaveDto; import java.util.List; +import org.springframework.web.bind.annotation.RequestBody; /** * 患者就诊记录基本信息Service接口 @@ -37,13 +39,20 @@ public interface IPatientVisitRecordService { */ public int insertPatientVisitRecord(PatientVisitRecord patientVisitRecord); + /** + * 患者配置——就诊信息保存 + * @param saveDto + * @return + */ + int saveRecord(@RequestBody PatientVisitRecordSaveDto saveDto); + /** * 修改患者就诊记录基本信息 * - * @param patientVisitRecord 患者就诊记录基本信息 + * @param updDto 患者就诊记录基本信息 * @return 结果 */ - public int updatePatientVisitRecord(PatientVisitRecord patientVisitRecord); + public int updatePatientVisitRecord(PatientVisitRecordSaveDto updDto); /** * 批量删除患者就诊记录基本信息 diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/patientvisitrecord/impl/PatientVisitRecordServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/patientvisitrecord/impl/PatientVisitRecordServiceImpl.java index c2aa39d1..0bee65c1 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/patientvisitrecord/impl/PatientVisitRecordServiceImpl.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/patientvisitrecord/impl/PatientVisitRecordServiceImpl.java @@ -1,7 +1,7 @@ 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.VisitTypeConstants; import com.xinelu.common.core.domain.AjaxResult; import com.xinelu.common.exception.ServiceException; @@ -9,7 +9,6 @@ import com.xinelu.common.utils.DateUtils; import com.xinelu.common.utils.SecurityUtils; import com.xinelu.common.utils.StringUtils; import com.xinelu.common.utils.bean.BeanUtils; -import com.xinelu.common.utils.poi.ExcelUtil; import com.xinelu.common.utils.regex.RegexUtil; import com.xinelu.manage.domain.agency.Agency; import com.xinelu.manage.domain.department.Department; @@ -18,13 +17,15 @@ 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.PatientVisitRecordSaveDto; import com.xinelu.manage.mapper.agency.AgencyMapper; 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 java.io.File; -import java.io.FileInputStream; +import java.time.LocalDate; +import java.time.ZoneId; +import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -83,19 +84,46 @@ public class PatientVisitRecordServiceImpl implements IPatientVisitRecordService */ @Override public int insertPatientVisitRecord(PatientVisitRecord patientVisitRecord) { - patientVisitRecord.setCreateTime(DateUtils.getNowDate()); - return patientVisitRecordMapper.insertPatientVisitRecord(patientVisitRecord); + patientVisitRecord.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName()); + patientVisitRecord.setCreateTime(DateUtils.getNowDate()); + return patientVisitRecordMapper.insertPatientVisitRecord(patientVisitRecord); } - /** + @Override public int saveRecord(PatientVisitRecordSaveDto saveDto) { + PatientVisitRecord patientVisitRecord = new PatientVisitRecord(); + // 查询患者信息 + PatientInfo patientInfo = patientMapper.selectPatientInfoById(saveDto.getPatientId()); + BeanUtils.copyBeanProp(patientVisitRecord, patientInfo); + BeanUtils.copyBeanProp(patientVisitRecord, saveDto); + patientVisitRecord.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName()); + patientVisitRecord.setCreateTime(DateUtils.getNowDate()); + // 住院时间,出院时间-入院时间 + LocalDate admissionTime = saveDto.getAdmissionTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + LocalDate dischargeTime = saveDto.getDischargeTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + long daysBetween = ChronoUnit.DAYS.between(admissionTime, dischargeTime); + patientVisitRecord.setHospitalizationDays((int) daysBetween + 1); + patientVisitRecordMapper.insertPatientVisitRecord(patientVisitRecord); + return 0; + } + + /** * 修改患者就诊记录基本信息 * - * @param patientVisitRecord 患者就诊记录基本信息 + * @param updDto 患者就诊记录基本信息 * @return 结果 */ @Override - public int updatePatientVisitRecord(PatientVisitRecord patientVisitRecord) { - patientVisitRecord.setUpdateTime(DateUtils.getNowDate()); + public int updatePatientVisitRecord(PatientVisitRecordSaveDto updDto) { + PatientVisitRecord patientVisitRecord = new PatientVisitRecord(); + BeanUtils.copyBeanProp(patientVisitRecord, updDto); + patientVisitRecord.setUpdateBy(SecurityUtils.getLoginUser().getUser().getNickName()); + patientVisitRecord.setUpdateTime(DateUtils.getNowDate()); + // 住院时间,出院时间-入院时间 + LocalDate admissionTime = updDto.getAdmissionTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + LocalDate dischargeTime = updDto.getDischargeTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + long daysBetween = ChronoUnit.DAYS.between(admissionTime, dischargeTime); + patientVisitRecord.setHospitalizationDays((int) daysBetween + 1); + patientVisitRecordMapper.insertPatientVisitRecord(patientVisitRecord); return patientVisitRecordMapper.updatePatientVisitRecord(patientVisitRecord); } @@ -142,17 +170,15 @@ public class PatientVisitRecordServiceImpl implements IPatientVisitRecordService patientVisitRecord.setCreateTime(DateUtils.getNowDate()); patientVisitRecord.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName()); switch (patientType) { - // 预住院患者 - case PatientTypeConstants.PRE_HOSPITALIZED_PATIENT: - break; // 在院患者 - case PatientTypeConstants.IN_HOSPITAL_PATIENT: - case PatientTypeConstants.DISCHARGED_PATIENT: + case Constants.IN_HOSPITAL: + case Constants.DISCHARGED: patientVisitRecord.setVisitType(VisitTypeConstants.BE_HOSPITALIZED); break; // 门诊患者 - case PatientTypeConstants.OUTPATIENT: + case Constants.OUTPATIENT: patientVisitRecord.setVisitType(VisitTypeConstants.OUTPATIENT_SERVICE); + patientVisitRecord.setInHospitalNumber(item.getOutpatientNumber());// 门诊、住院号共用一个字段 break; } // 根据身份证号查询患者信息 @@ -250,14 +276,10 @@ public class PatientVisitRecordServiceImpl implements IPatientVisitRecordService } public static void main(String[] args) { - String filePath = "E:\\在院患者导入.xlsx"; - ExcelUtil util = new ExcelUtil<>(PatientVisitRecordImportDto.class); - File file = new File(filePath); - try { - List list = util.importExcel(new FileInputStream(file)); - //importPatientList(list); - } catch (Exception e) { - throw new RuntimeException(e); - } + LocalDate date1 = LocalDate.of(2020, 1, 1); + LocalDate date2 = LocalDate.of(2020, 1, 2); + + long daysBetween = ChronoUnit.DAYS.between(date1, date2); + System.out.println("Days between: " + daysBetween); } } diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/project/impl/ProjectServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/project/impl/ProjectServiceImpl.java index 31eda437..436b1708 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/project/impl/ProjectServiceImpl.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/project/impl/ProjectServiceImpl.java @@ -1,11 +1,15 @@ package com.xinelu.manage.service.project.impl; +import com.xinelu.common.exception.ServiceException; import com.xinelu.common.utils.DateUtils; +import com.xinelu.common.utils.SecurityUtils; +import com.xinelu.common.utils.StringUtils; import com.xinelu.manage.domain.project.Project; import com.xinelu.manage.mapper.project.ProjectMapper; import com.xinelu.manage.service.project.IProjectService; import java.util.List; import javax.annotation.Resource; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; /** @@ -49,8 +53,21 @@ public class ProjectServiceImpl implements IProjectService { */ @Override public int insertProject(Project project) { - project.setCreateTime(DateUtils.getNowDate()); - return projectMapper.insertProject(project); + if (StringUtils.isBlank(project.getProjectName())) { + throw new ServiceException("请输入检测项目名称"); + } + if (StringUtils.isBlank(project.getProjectCode())) { + throw new ServiceException("请输入检测项目编码"); + } + // 查询是否有相同code的检测项目 + List projects = projectMapper.hasSameCodeProject(null, project.getGroupId(), project.getProjectCode()); + if (CollectionUtils.isNotEmpty(projects)) { + throw new ServiceException("已存在编码为【"+project.getProjectCode() +"】的检测项目"); + } + project.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName()); + project.setCreateTime(DateUtils.getNowDate()); + project.setDelFlag(0); + return projectMapper.insertProject(project); } /** @@ -61,7 +78,13 @@ public class ProjectServiceImpl implements IProjectService { */ @Override public int updateProject(Project project) { - project.setUpdateTime(DateUtils.getNowDate()); + // 查询是否有相同code的检测项目 + List projects = projectMapper.hasSameCodeProject(project.getId(), project.getGroupId(), project.getProjectCode()); + if (CollectionUtils.isNotEmpty(projects)) { + throw new ServiceException("已存在编码为【"+project.getProjectCode() +"】的检测项目"); + } + project.setUpdateBy(SecurityUtils.getLoginUser().getUser().getNickName()); + project.setUpdateTime(DateUtils.getNowDate()); return projectMapper.updateProject(project); } diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/projectdevice/impl/ProjectDeviceServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/projectdevice/impl/ProjectDeviceServiceImpl.java index 3e5c2c03..300377a4 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/projectdevice/impl/ProjectDeviceServiceImpl.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/projectdevice/impl/ProjectDeviceServiceImpl.java @@ -1,11 +1,16 @@ package com.xinelu.manage.service.projectdevice.impl; +import com.xinelu.common.constant.DeviceStatusConstants; +import com.xinelu.common.exception.ServiceException; import com.xinelu.common.utils.DateUtils; +import com.xinelu.common.utils.SecurityUtils; +import com.xinelu.common.utils.StringUtils; import com.xinelu.manage.domain.projectdevice.ProjectDevice; import com.xinelu.manage.mapper.projectdevice.ProjectDeviceMapper; import com.xinelu.manage.service.projectdevice.IProjectDeviceService; import java.util.List; import javax.annotation.Resource; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; /** @@ -49,8 +54,30 @@ public class ProjectDeviceServiceImpl implements IProjectDeviceService { */ @Override public int insertProjectDevice(ProjectDevice projectDevice) { - projectDevice.setCreateTime(DateUtils.getNowDate()); - return projectDeviceMapper.insertProjectDevice(projectDevice); + // 查询居民是否绑定过相同类型的设备 + if (StringUtils.isBlank(projectDevice.getDeviceType())) { + throw new ServiceException("请选择设备类型"); + } + ProjectDevice query = new ProjectDevice(); + query.setPatientId(projectDevice.getPatientId()); + query.setDeviceType(projectDevice.getDeviceType()); + query.setDeviceStatus(DeviceStatusConstants.BIND); + List deviceList = projectDeviceMapper.selectProjectDeviceList(projectDevice); + if (CollectionUtils.isNotEmpty(deviceList)) { + throw new ServiceException("该居民已绑定过相同设备类型的设备,请解绑后重新绑定"); + } + // 根据设备编码查询是否已被绑定 + query.setPatientId(null); + query.setDeviceCode(projectDevice.getDeviceCode()); + deviceList = projectDeviceMapper.selectProjectDeviceList(projectDevice); + if (CollectionUtils.isNotEmpty(deviceList)) { + throw new ServiceException("该设备已被绑定,请解绑后重新绑定"); + } + projectDevice.setDeviceStatus(DeviceStatusConstants.BIND); + projectDevice.setDeviceBindTime(DateUtils.getNowDate()); + projectDevice.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName()); + projectDevice.setCreateTime(DateUtils.getNowDate()); + return projectDeviceMapper.insertProjectDevice(projectDevice); } /** @@ -61,7 +88,8 @@ public class ProjectDeviceServiceImpl implements IProjectDeviceService { */ @Override public int updateProjectDevice(ProjectDevice projectDevice) { - projectDevice.setUpdateTime(DateUtils.getNowDate()); + projectDevice.setUpdateBy(SecurityUtils.getLoginUser().getUser().getNickName()); + projectDevice.setUpdateTime(DateUtils.getNowDate()); return projectDeviceMapper.updateProjectDevice(projectDevice); } diff --git a/postdischarge-manage/src/main/java/com/xinelu/manage/service/projectgroup/impl/ProjectGroupServiceImpl.java b/postdischarge-manage/src/main/java/com/xinelu/manage/service/projectgroup/impl/ProjectGroupServiceImpl.java index 80db55fc..d6bb22af 100644 --- a/postdischarge-manage/src/main/java/com/xinelu/manage/service/projectgroup/impl/ProjectGroupServiceImpl.java +++ b/postdischarge-manage/src/main/java/com/xinelu/manage/service/projectgroup/impl/ProjectGroupServiceImpl.java @@ -3,6 +3,7 @@ package com.xinelu.manage.service.projectgroup.impl; import com.xinelu.common.exception.ServiceException; import com.xinelu.common.utils.DateUtils; import com.xinelu.common.utils.SecurityUtils; +import com.xinelu.common.utils.StringUtils; import com.xinelu.manage.domain.projectgroup.ProjectGroup; import com.xinelu.manage.dto.projectgroup.ProjectGroupSaveListDto; import com.xinelu.manage.mapper.projectgroup.ProjectGroupMapper; @@ -54,6 +55,17 @@ public class ProjectGroupServiceImpl implements IProjectGroupService { */ @Override public int insertProjectGroup(ProjectGroup projectGroup) { + if (StringUtils.isBlank(projectGroup.getGroupName())) { + throw new ServiceException("请输入检测项目分组名称"); + } + if (StringUtils.isBlank(projectGroup.getGroupCode())) { + throw new ServiceException("请输入检测项目分组编码"); + } + // 查询是否有相同编码的项目组 + List list = projectGroupMapper.hasSameCodeGroup(null, projectGroup.getGroupCode()); + if (CollectionUtils.isNotEmpty(list)) { + throw new ServiceException("已存在编码为【"+projectGroup.getGroupCode() +"】的分组"); + } projectGroup.setCreateTime(DateUtils.getNowDate()); projectGroup.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName()); projectGroup.setDelFlag(0); @@ -65,6 +77,11 @@ public class ProjectGroupServiceImpl implements IProjectGroupService { List list = saveDto.getList(); if (CollectionUtils.isNotEmpty(list)) { for (ProjectGroup projectGroup : list) { + // 查询是否有相同编码的项目组 + List groupList = projectGroupMapper.hasSameCodeGroup(null, projectGroup.getGroupCode()); + if (CollectionUtils.isNotEmpty(groupList)) { + throw new ServiceException("已存在编码为【"+projectGroup.getGroupCode() +"】的分组"); + } projectGroup.setCreateTime(DateUtils.getNowDate()); projectGroup.setCreateBy(SecurityUtils.getLoginUser().getUser().getNickName()); projectGroup.setDelFlag(0); @@ -86,6 +103,11 @@ public class ProjectGroupServiceImpl implements IProjectGroupService { */ @Override public int updateProjectGroup(ProjectGroup projectGroup) { + // 查询是否有相同编码的项目组 + List groupList = projectGroupMapper.hasSameCodeGroup(projectGroup.getId(), projectGroup.getGroupCode()); + if (CollectionUtils.isNotEmpty(groupList)) { + throw new ServiceException("已存在编码为【"+projectGroup.getGroupCode() +"】的分组"); + } projectGroup.setUpdateTime(DateUtils.getNowDate()); projectGroup.setUpdateBy(SecurityUtils.getLoginUser().getUser().getNickName()); return projectGroupMapper.updateProjectGroup(projectGroup); diff --git a/postdischarge-manage/src/main/resources/mapper/manage/patientprehospitalization/PatientPreHospitalizationMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/patientprehospitalization/PatientPreHospitalizationMapper.xml index 3ed61a32..cad2d1c9 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/patientprehospitalization/PatientPreHospitalizationMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/patientprehospitalization/PatientPreHospitalizationMapper.xml @@ -291,7 +291,7 @@ 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 - from patient_info patient left join patient_pre_hospitalization p + from patient_info patient left join patient_pre_hospitalization p on p.patient_id = patient.id p.del_flag = 0 and patient.patient_type = 'PRE_HOSPITALIZED_PATIENT' diff --git a/postdischarge-manage/src/main/resources/mapper/manage/project/ProjectMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/project/ProjectMapper.xml index 4879e421..9658d9d8 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/project/ProjectMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/project/ProjectMapper.xml @@ -34,6 +34,7 @@ + + + del_flag = 0 + + and id != #{id} + + + and group_id = #{groupId} + + + and project_code = #{projectCode} + + + \ No newline at end of file diff --git a/postdischarge-manage/src/main/resources/mapper/manage/projectdevice/ProjectDeviceMapper.xml b/postdischarge-manage/src/main/resources/mapper/manage/projectdevice/ProjectDeviceMapper.xml index 42b822db..1f313d9b 100644 --- a/postdischarge-manage/src/main/resources/mapper/manage/projectdevice/ProjectDeviceMapper.xml +++ b/postdischarge-manage/src/main/resources/mapper/manage/projectdevice/ProjectDeviceMapper.xml @@ -31,9 +31,9 @@ + + + del_flag = 0 + + and id != #{id} + + + and group_code = #{groupCode} + + + \ No newline at end of file