From 0997c0a5d157f416cfb49bde90509e84c19318e9 Mon Sep 17 00:00:00 2001 From: haown <454902499@qq.com> Date: Thu, 21 Sep 2023 17:11:12 +0800 Subject: [PATCH] =?UTF-8?q?add=3D=3D=3D>:=E7=A7=BB=E6=A4=8D=E4=B8=93?= =?UTF-8?q?=E7=97=85=E7=AD=9B=E6=9F=A5=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../constant/ScreeningProjectConstants.java | 17 + .../xinelu/common/core/domain/SelectVo.java | 36 ++ .../xinelu/common/core/domain/TimelineVo.java | 19 + .../com/xinelu/common/enums/UploadType.java | 86 ++++ .../com/xinelu/common/utils/DateUtils.java | 13 + xinelu-nurse-manage/pom.xml | 4 + .../ScreeningProjectController.java | 131 +++++ .../ScreeningRecordController.java | 126 +++++ .../screeningproject/ScreeningProject.java | 83 ++++ .../screeningrecord/ScreeningRecord.java | 147 ++++++ .../screeningrecord/ScreeningApplyDTO.java | 75 +++ .../ScreeningRecordApplyDTO.java | 144 ++++++ .../screeningrecord/ScreeningRecordDTO.java | 142 ++++++ .../ScreeningRecordSaveDTO.java | 27 ++ .../mapper/patientinfo/PatientInfoMapper.java | 8 + .../ScreeningProjectMapper.java | 31 ++ .../ScreeningRecordMapper.java | 101 ++++ .../impl/HospitalInfoServiceImpl.java | 11 +- .../patientinfo/IPatientInfoService.java | 8 + .../impl/PatientInfoServiceImpl.java | 6 +- .../IScreeningProjectService.java | 31 ++ .../impl/ScreeningProjectServiceImpl.java | 48 ++ .../IScreeningRecordService.java | 125 +++++ .../impl/ScreeningRecordServiceImpl.java | 457 ++++++++++++++++++ .../vo/screeningrecord/ScreeningRecordVo.java | 194 ++++++++ .../manage/patientinfo/PatientInfoMapper.xml | 38 ++ .../ScreeningProjectMapper.xml | 196 ++++++++ .../screeningrecord/ScreeningRecordMapper.xml | 365 ++++++++++++++ 28 files changed, 2662 insertions(+), 7 deletions(-) create mode 100644 xinelu-common/src/main/java/com/xinelu/common/constant/ScreeningProjectConstants.java create mode 100644 xinelu-common/src/main/java/com/xinelu/common/core/domain/SelectVo.java create mode 100644 xinelu-common/src/main/java/com/xinelu/common/core/domain/TimelineVo.java create mode 100644 xinelu-common/src/main/java/com/xinelu/common/enums/UploadType.java create mode 100644 xinelu-nurse-manage/src/main/java/com/xinelu/manage/controller/screeningproject/ScreeningProjectController.java create mode 100644 xinelu-nurse-manage/src/main/java/com/xinelu/manage/controller/screeningrecord/ScreeningRecordController.java create mode 100644 xinelu-nurse-manage/src/main/java/com/xinelu/manage/domain/screeningproject/ScreeningProject.java create mode 100644 xinelu-nurse-manage/src/main/java/com/xinelu/manage/domain/screeningrecord/ScreeningRecord.java create mode 100644 xinelu-nurse-manage/src/main/java/com/xinelu/manage/dto/screeningrecord/ScreeningApplyDTO.java create mode 100644 xinelu-nurse-manage/src/main/java/com/xinelu/manage/dto/screeningrecord/ScreeningRecordApplyDTO.java create mode 100644 xinelu-nurse-manage/src/main/java/com/xinelu/manage/dto/screeningrecord/ScreeningRecordDTO.java create mode 100644 xinelu-nurse-manage/src/main/java/com/xinelu/manage/dto/screeningrecord/ScreeningRecordSaveDTO.java create mode 100644 xinelu-nurse-manage/src/main/java/com/xinelu/manage/mapper/screeningproject/ScreeningProjectMapper.java create mode 100644 xinelu-nurse-manage/src/main/java/com/xinelu/manage/mapper/screeningrecord/ScreeningRecordMapper.java create mode 100644 xinelu-nurse-manage/src/main/java/com/xinelu/manage/service/screeningproject/IScreeningProjectService.java create mode 100644 xinelu-nurse-manage/src/main/java/com/xinelu/manage/service/screeningproject/impl/ScreeningProjectServiceImpl.java create mode 100644 xinelu-nurse-manage/src/main/java/com/xinelu/manage/service/screeningrecord/IScreeningRecordService.java create mode 100644 xinelu-nurse-manage/src/main/java/com/xinelu/manage/service/screeningrecord/impl/ScreeningRecordServiceImpl.java create mode 100644 xinelu-nurse-manage/src/main/java/com/xinelu/manage/vo/screeningrecord/ScreeningRecordVo.java create mode 100644 xinelu-nurse-manage/src/main/resources/mapper/manage/screeningproject/ScreeningProjectMapper.xml create mode 100644 xinelu-nurse-manage/src/main/resources/mapper/manage/screeningrecord/ScreeningRecordMapper.xml diff --git a/xinelu-common/src/main/java/com/xinelu/common/constant/ScreeningProjectConstants.java b/xinelu-common/src/main/java/com/xinelu/common/constant/ScreeningProjectConstants.java new file mode 100644 index 0000000..c49d603 --- /dev/null +++ b/xinelu-common/src/main/java/com/xinelu/common/constant/ScreeningProjectConstants.java @@ -0,0 +1,17 @@ +package com.xinelu.common.constant; + +/** + * @description: 筛查项目通用常量 + * @author: haown + * @create: 2023-09-08 17:08 + **/ +public class ScreeningProjectConstants { + + public static final String PLATELET = "血小板筛查"; + + public static final String EYE = "眼底病变筛查"; + + public static final String ALZHEIMER = "阿尔兹海默症筛查"; + + public static final String DOPPLER = "多普勒筛查"; +} diff --git a/xinelu-common/src/main/java/com/xinelu/common/core/domain/SelectVo.java b/xinelu-common/src/main/java/com/xinelu/common/core/domain/SelectVo.java new file mode 100644 index 0000000..899a8bc --- /dev/null +++ b/xinelu-common/src/main/java/com/xinelu/common/core/domain/SelectVo.java @@ -0,0 +1,36 @@ +package com.xinelu.common.core.domain; + +import java.util.List; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @description: 下拉框VO + * @author: haown + * @create: 2022-11-22 09:14 + **/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class SelectVo { + + private static final long serialVersionUID = 8507280915433781280L; + + /** + * 值 + */ + private String value; + + /** + * 标签 + */ + private String label; + + /** + * 子类 + */ + private List children; +} diff --git a/xinelu-common/src/main/java/com/xinelu/common/core/domain/TimelineVo.java b/xinelu-common/src/main/java/com/xinelu/common/core/domain/TimelineVo.java new file mode 100644 index 0000000..1b2c3ff --- /dev/null +++ b/xinelu-common/src/main/java/com/xinelu/common/core/domain/TimelineVo.java @@ -0,0 +1,19 @@ +package com.xinelu.common.core.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import java.util.Date; +import lombok.Data; + +/** + * @description: 时间轴 + * @author: haown + * @create: 2022-12-13 11:13 + **/ +@Data +public class TimelineVo { + + private String id; + + @JsonFormat(pattern = "yyyy-MM-dd") + private Date createTime; +} diff --git a/xinelu-common/src/main/java/com/xinelu/common/enums/UploadType.java b/xinelu-common/src/main/java/com/xinelu/common/enums/UploadType.java new file mode 100644 index 0000000..87f8d34 --- /dev/null +++ b/xinelu-common/src/main/java/com/xinelu/common/enums/UploadType.java @@ -0,0 +1,86 @@ +package com.xinelu.common.enums; + +import java.util.Arrays; + +/** + * @author gaoyu + * @description: 文件上传类型 + * @date 2022-11-30 10:46 + */ +public enum UploadType { + AVATAR("1001", "用户头像", "JPG,PNG,JPEG,BMP", "file/user/avatar/"), + + USER_CERT("1002", "用户证书", "JPG,PNG,JPEG,BMP", "file/user/cert/"), + + INSTITUTION_SIGNATURE("1003", "机构签章", "JPG,PNG,JPEG,BMP", "file/institution/signature/"), + + F_RESIDENT_SIGNATURE("1007", "医生随访签字","JPG,PNG,JPEG,BMP", "file/resident/followup/signature/"), + + F_RESIDENT_HEADIMG("1004", "居民随访头像(佐证)","JPG,PNG,JPEG,BMP", "file/resident/followup/signature/"), + + F_RESIDENT_FINGER("1008", "居民指纹","JPG,PNG,JPEG,BMP", "file/resident/followup/finger/"), + + A_RESIDENT_SIGNATURE("1005", "档案居民签名","JPG,PNG,JPEG,BMP", "file/resident/archive/signature/"), + + A_RESIDENT_HEADIMG("1006", "档案居民头像","JPG,PNG,JPEG,BMP", "file/resident/archive/headimg/"), + + A_RESIDENT_FAMILY_SIGNATURE("1007", "档案居民家属签名","JPG,PNG,JPEG,BMP", "file/resident/archive/family/signature/"), + + LEFT_EYE_RESULT("2001", "眼底镜筛查结果-左眼", "JPG,PNG,JPEG", "file/screening/lefteye/"), + + RIGHT_EYE_RESULT("2002", "眼底镜筛查结果-右眼", "JPG,PNG,JPEG", "file/screening/righteye/"), + + PLATELET_RESULT("2003", "血小板筛查结果", "JPG,PNG,JPEG,PDF", "file/screening/platelet/"), + + DOPPLER_RESULT("2004", "多普勒筛查结果", "JPG,PNG,JPEG", "file/screening/doppler/"), + + SCREENING_BARCODE("2005", "筛查预约条形码", "JPG,PNG,JPEG", "file/screening/barcode/"), + + REGISTRATION_BARCODE("2006", "登记条形码", "JPG,PNG,JPEG", "file/registration/barcode/"), + + ALZHEIMER_DISEASE_BARCODE("2007", "阿尔兹海默症结果", "DOC,DOCX", "file/alzheimer/disease/"), + + /** + * APP安装包保存路径 + */ + APP_UPLOAD_PATH("5001", "APP安装包", "APK", "file/apk/"), + + /** + * APP安装包二维码保存路径 + */ + APP_QRCODE_PATH("5002", "APP安装包二维码", "JPG,PNG", "file/img/qrcode/app/"), + + EMPTY("", "", "", ""); + + private final String code; + private final String label; + private final String suffix; + private final String path; + + UploadType(String code, String label, String suffix, String path) { + this.code = code; + this.label = label; + this.suffix = suffix; + this.path = path; + } + + public String getCode() { + return code; + } + + public String getLabel() { + return label; + } + + public String getSuffix() { + return suffix; + } + + public String getPath() { + return path; + } + + public static UploadType getUploadType(final String code) { + return Arrays.stream(UploadType.values()).filter(ut -> ut.code.equals(code)).findFirst().orElse(EMPTY); + } +} diff --git a/xinelu-common/src/main/java/com/xinelu/common/utils/DateUtils.java b/xinelu-common/src/main/java/com/xinelu/common/utils/DateUtils.java index 61422da..c93b5db 100644 --- a/xinelu-common/src/main/java/com/xinelu/common/utils/DateUtils.java +++ b/xinelu-common/src/main/java/com/xinelu/common/utils/DateUtils.java @@ -163,6 +163,19 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils { return Date.from(zdt.toInstant()); } + /** + * 得到日期字符串 默认格式(yyyy-MM-dd) pattern可以为:"yyyy-MM-dd" "HH:mm:ss" "E" + */ + public static String formatDate(Date date, Object... pattern) { + String formatDate = null; + if (pattern != null && pattern.length > 0) { + formatDate = DateFormatUtils.format(date, pattern[0].toString()); + } else { + formatDate = DateFormatUtils.format(date, "yyyy-MM-dd"); + } + return formatDate; + } + /** * 转换日期到字符串 * diff --git a/xinelu-nurse-manage/pom.xml b/xinelu-nurse-manage/pom.xml index 8da76a1..f4f7d50 100644 --- a/xinelu-nurse-manage/pom.xml +++ b/xinelu-nurse-manage/pom.xml @@ -34,5 +34,9 @@ swagger-models 1.6.2 + + com.xinelu + xinelu-system + \ No newline at end of file diff --git a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/controller/screeningproject/ScreeningProjectController.java b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/controller/screeningproject/ScreeningProjectController.java new file mode 100644 index 0000000..2284c69 --- /dev/null +++ b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/controller/screeningproject/ScreeningProjectController.java @@ -0,0 +1,131 @@ +package com.xinelu.manage.controller.screeningproject; + +import com.xinelu.common.core.controller.BaseController; +import com.xinelu.common.core.domain.R; +import com.xinelu.common.core.page.TableDataInfo; +import com.xinelu.common.utils.uuid.IdUtils; +import com.xinelu.manage.domain.screeningproject.ScreeningProject; +import com.xinelu.manage.service.screeningproject.IScreeningProjectService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; +import java.util.Objects; +import javax.annotation.Resource; +import org.apache.commons.lang3.BooleanUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @description: 项目控制器 + * @author: haown + * @create: 2023-01-19 10:49 + **/ +@RestController +@RequestMapping("/business/project") +@Api(tags = "项目控制器") +public class ScreeningProjectController extends BaseController { + @Resource + private IScreeningProjectService projectService; + + @ApiOperation("服务项目分页列表") + @GetMapping("list") + public TableDataInfo list(ScreeningProject project) { + startPage(); + List list = projectService.findList(project); + return getDataTable(list); + } + + @ApiOperation("服务项目列表") + @GetMapping("getList") + public R> getList(ScreeningProject project) { + List list = projectService.findList(project); + return R.ok(list); + } + + @ApiOperation("新增服务项目") + @PostMapping("add") + public R add(@RequestBody ScreeningProject project) { + if (projectService.checkSameProjectName(project.getProjectName(), project.getDeptId(), null)) { + return R.fail("【" + project.getDeptName() + "】已存在服务项目【" + project.getProjectName() + "】,不能重复添加"); + } + //价格校验 + if (Objects.isNull(project.getDiscount())) { + project.setDiscount(10); + if (Objects.isNull(project.getPrice())) { + project.setPrice(new BigDecimal(0)); + } + project.setDiscountPrice(project.getPrice()); + } + boolean greaterThan = Objects.nonNull(project.getDiscount()) && project.getDiscount() > 10; + boolean lessThan = Objects.nonNull(project.getDiscount()) && project.getDiscount() < 1; + if (BooleanUtils.isTrue(greaterThan) || BooleanUtils.isTrue(lessThan)) { + return R.fail("折扣不能大于10,或小于1"); + } + if (StringUtils.isBlank(project.getStatus())) { + project.setStatus("1"); + } + project.setDiscountPrice(project.getPrice().multiply(new BigDecimal(project.getDiscount())).multiply(new BigDecimal("0.1"))); + project.setProjectId(IdUtils.fastSimpleUUID()); + project.setCreateBy(getUsername()); + project.setCreateTime(new Date()); + project.setDelFlag("0"); + return projectService.insert(project) > 0 ? R.ok() : R.fail("保存失败"); + } + + @ApiOperation("修改服务项目") + @PostMapping("update") + public R update(@RequestBody ScreeningProject project) { + if (projectService.checkSameProjectName(project.getProjectName(), project.getDeptId(), project.getProjectId())) { + return R.fail("【" + project.getDeptName() + "】已存在服务项目【" + project.getProjectName() + "】,不能重复添加"); + } + //价格校验 + if (Objects.isNull(project.getDiscount())) { + project.setDiscount(10); + if (Objects.isNull(project.getPrice())) { + project.setPrice(new BigDecimal(0)); + } + project.setDiscountPrice(project.getPrice()); + } + boolean greaterThan = Objects.nonNull(project.getDiscount()) && project.getDiscount() > 10; + boolean lessThan = Objects.nonNull(project.getDiscount()) && project.getDiscount() < 1; + if (BooleanUtils.isTrue(greaterThan) || BooleanUtils.isTrue(lessThan)) { + return R.fail("折扣不能大于10,或小于1"); + } + if (StringUtils.isBlank(project.getStatus())) { + project.setStatus("1"); + } + project.setDiscountPrice(project.getPrice().multiply(new BigDecimal(project.getDiscount())).multiply(new BigDecimal("0.1"))); + project.setUpdateBy(getUsername()); + project.setUpdateTime(new Date()); + projectService.update(project); + return R.ok(); + } + + @ApiOperation("修改服务项目状态") + @PostMapping("changeStatus") + public R changeStatus(@RequestBody ScreeningProject project) { + project.setUpdateBy(getUsername()); + projectService.update(project); + return R.ok(); + } + + @ApiOperation("逻辑删除服务项目") + @PostMapping("delete/{projectId}") + @ApiImplicitParam(name = "projectId", value = "服务项目编号", required = true, dataTypeClass = String.class) + public R delete(@PathVariable String projectId) { + ScreeningProject project = new ScreeningProject(); + project.setProjectId(projectId); + project.setDelFlag("1"); + project.setUpdateBy(getUsername()); + projectService.delete(project); + return R.ok(); + } +} diff --git a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/controller/screeningrecord/ScreeningRecordController.java b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/controller/screeningrecord/ScreeningRecordController.java new file mode 100644 index 0000000..e857b97 --- /dev/null +++ b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/controller/screeningrecord/ScreeningRecordController.java @@ -0,0 +1,126 @@ +package com.xinelu.manage.controller.screeningrecord; + +import com.xinelu.common.annotation.RepeatSubmit; +import com.xinelu.common.core.controller.BaseController; +import com.xinelu.common.core.domain.R; +import com.xinelu.common.core.domain.SelectVo; +import com.xinelu.common.core.domain.TimelineVo; +import com.xinelu.common.core.page.TableDataInfo; +import com.xinelu.common.utils.StringUtils; +import com.xinelu.manage.domain.screeningrecord.ScreeningRecord; +import com.xinelu.manage.dto.screeningrecord.ScreeningRecordDTO; +import com.xinelu.manage.dto.screeningrecord.ScreeningRecordSaveDTO; +import com.xinelu.manage.service.screeningrecord.IScreeningRecordService; +import com.xinelu.manage.vo.screeningrecord.ScreeningRecordVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiOperation; +import java.util.List; +import javax.annotation.Resource; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @Author mengkuiliang + * @Description 筛查预约控制器 + * @Date 2023-01-29 13:57 + * @Param + * @return + **/ +@RestController +@RequestMapping("/business/screening") +@Api(tags = "筛查预约控制器") +public class ScreeningRecordController extends BaseController { + + @Resource + private IScreeningRecordService screeningRecordService; + + @GetMapping("/screeningList") + @ApiOperation(value = "居民预约筛查列表") + public TableDataInfo screeningList(ScreeningRecordDTO query) { + startPage(); + return getDataTable(screeningRecordService.screeningList(query)); + } + + @GetMapping("/list") + @ApiOperation(value = "获取列表") + public List list(ScreeningRecordDTO query) { + return screeningRecordService.list(query); + } + + @GetMapping("/detail/{screeningId}") + @ApiOperation(value = "获取预约详情") + public R detail(@PathVariable String screeningId) { + return R.ok(screeningRecordService.detail(screeningId)); + } + + @GetMapping("/getScreening/{registerId}") + @ApiOperation(value = "获取当前预约信息") + public R getScreeningByRegisterId(@PathVariable String registerId) { + return R.ok(screeningRecordService.getScreeningByRegisterId(registerId)); + } + + @GetMapping("/last/{registerId}") + @ApiOperation(value = "获取最新一次筛查结果") + public R last(@PathVariable String registerId) { + return R.ok(screeningRecordService.last(registerId,null)); + } + + @GetMapping("/timelineList/{registerId}") + @ApiOperation(value = "根据居民业务主键查询筛查记录时间轴", response = TimelineVo.class, notes = "根据居民业务主键查询筛查记录时间轴", httpMethod = "GET") + @ApiImplicitParam(name = "registerId", value = "居民业务主键", required = true, dataTypeClass = String.class) + public R> TimelineList(@PathVariable("registerId") String registerId) { + return R.ok(screeningRecordService.getTimelineList(registerId)); + } + + @GetMapping("/receive/{screeningId}") + @ApiOperation(value = "登记") + public R receive(@PathVariable("screeningId") String screeningId) { + if(StringUtils.isBlank(screeningId)) { + return R.fail("请选择预约信息"); + } + try { + String registrationCode = screeningRecordService.receive(screeningId); + return R.ok("预约已登记成功,条码:" + registrationCode + " 请及时进行筛查。"); + } catch (Exception e) { + return R.fail(e.getMessage()); + } + } + + @PostMapping("/update") + @ApiOperation(value = "修改") + public R update(@RequestBody ScreeningRecord body) { + // 判断是否已登记 + ScreeningRecordVo screeningRecordVo = screeningRecordService.detail(body.getScreeningId()); + if (StringUtils.equals("1", screeningRecordVo.getScreeningStatus())) { + return R.fail("该预约未登记,请先登记!"); + } + int flag = screeningRecordService.update(body); + return flag < 0 ? R.fail() : R.ok(); + } + + @PostMapping("/pushScreening") + @ApiOperation(value = "推送筛查项目") + @RepeatSubmit(interval = 2000, message = "请求过于频繁") + public R pushScreening(@RequestBody ScreeningRecordSaveDTO body) { + try { + if (StringUtils.isBlank(body.getRegisterId())) { + return R.fail("请选择居民!"); + } + if (CollectionUtils.isEmpty(body.getProjectList())) { + return R.fail("请选择筛查项目!"); + } + int flag = screeningRecordService.pushScreening(body); + return R.ok(flag > 0 ? "保存成功": "保存失败"); + } catch (Exception e) { + return R.fail(e.getMessage()); + } + } + + +} diff --git a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/domain/screeningproject/ScreeningProject.java b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/domain/screeningproject/ScreeningProject.java new file mode 100644 index 0000000..3ace40c --- /dev/null +++ b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/domain/screeningproject/ScreeningProject.java @@ -0,0 +1,83 @@ +package com.xinelu.manage.domain.screeningproject; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.xinelu.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import java.math.BigDecimal; +import java.util.Date; +import lombok.Data; + +/** + * 项目表 + * @TableName screening_project + */ +@Data +public class ScreeningProject extends BaseEntity { + /** + * 自增主键 + */ + private Long id; + + /** + * 项目业务主键 + */ + @ApiModelProperty("项目业务主键") + private String projectId; + + /** + * 项目名称 + */ + @ApiModelProperty("项目名称") + private String projectName; + + /** + * 项目类型(1:检查项目 2:套餐项目) + */ + @ApiModelProperty("项目类型(1:检查项目 2:套餐项目)") + private String projectType; + + /** + * 价格 + */ + private BigDecimal price; + + /** + * 折扣 + */ + private Integer discount; + + /** + * 优惠后价格 + */ + private BigDecimal discountPrice; + + /** + * 启用状态(0:启用 1:未启用) + */ + private String status; + + /** + * 医院编号 + */ + @ApiModelProperty("医院编号") + private String deptId; + + /** + * 医院名称 + */ + @ApiModelProperty("医院名称") + private String deptName; + + /** + * 删除标识(0:存在,1:已删除) + */ + private String delFlag; + + /** + * 创建时间 + * */ + @JsonFormat(pattern = "yyyy-MM-dd") + private Date createTime; + + private static final long serialVersionUID = 1L; +} diff --git a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/domain/screeningrecord/ScreeningRecord.java b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/domain/screeningrecord/ScreeningRecord.java new file mode 100644 index 0000000..1cc02cf --- /dev/null +++ b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/domain/screeningrecord/ScreeningRecord.java @@ -0,0 +1,147 @@ +package com.xinelu.manage.domain.screeningrecord; + +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + +/** + * 居民预约记录表 + * @TableName sd_screening_record + */ +@Data +public class ScreeningRecord implements Serializable { + /** + * 自增主键 + */ + private Long id; + + /** + * 业务主键 + */ + @ApiModelProperty("业务主键") + private String screeningId; + + /** + * 居民业务主键 + */ + @ApiModelProperty("居民业务主键") + private String registerId; + + /** + * 居民姓名 + */ + @ApiModelProperty("居民姓名") + private String residentName; + + /** + * 状态(1:已预约 2:取消预约 3:已登记 4:已完成) + */ + @ApiModelProperty("状态(1:已预约 2:取消预约 3:已登记 4:已完成)") + private String screeningStatus; + + /** + * 基础疾病 + */ + @ApiModelProperty("基础疾病") + private String disease; + + /** + * 医院编号 + */ + private String deptId; + + /** + * 医院名称 + */ + private String deptName; + + /** + * 预约项目业务主键 + */ + private String projectId; + + /** + * 预约项目名称 + * */ + private String projectName; + + /** + * 检查日期 + */ + private Date screeningDate; + + /** + * 预约开始时间 + */ + private Date applyStartTime; + + /** + * 预约结束时间 + */ + private Date applyEndTime; + + /** + * 内容 + */ + private String content; + + /** + * 诊断结果 + * */ + @ApiModelProperty("诊断结果") + private String diagnosticResult; + + /** + * 附件 + * */ + @ApiModelProperty("附件一") + private String attachment; + + /** + * 附件2 + * */ + @ApiModelProperty("附件二") + private String attachmentTwo; + + /** + * 医生编号 + */ + @ApiModelProperty("医生编号") + private String doctorId; + + /** + * 医生名称 + */ + @ApiModelProperty("医生名称") + private String doctorName; + + @ApiModelProperty("预约码") + private String applyCode; + + @ApiModelProperty(value = "预约条码") + private String applyBarcode; + + @ApiModelProperty("登记日期") + private Date registrationDate; + + @ApiModelProperty("登记码") + private String registrationCode; + + @ApiModelProperty(value = "登记条码") + private String registrationBarcode; + + @ApiModelProperty(value = "筛查种类,1:居民预约,2:医生推送") + private String screeningType; + + @ApiModelProperty(value = "医生推送日期") + private Date pushDate; + + private String assessRecordId; + /** + * 备注 + */ + private String remark; + + private static final long serialVersionUID = 1L; +} diff --git a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/dto/screeningrecord/ScreeningApplyDTO.java b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/dto/screeningrecord/ScreeningApplyDTO.java new file mode 100644 index 0000000..e7f0f81 --- /dev/null +++ b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/dto/screeningrecord/ScreeningApplyDTO.java @@ -0,0 +1,75 @@ +package com.xinelu.manage.dto.screeningrecord; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + +/** + * @Author mengkuiliang + * @Description 居民预约请求对象 + * @Date 2023-01-29 14:03 + * @Param + * @return + **/ +@Data +@ApiModel("居民预约请求对象") +public class ScreeningApplyDTO implements Serializable { + + /** + * 居民业务主键 + */ + @ApiModelProperty(value = "居民业务主键") + private String registerId; + + @ApiModelProperty(value = "居民身份证号") + private String identity; + + private String screeningId; + /** + * 预约开始时间 + */ + @ApiModelProperty(value = "预约开始时间", required = true) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date applyStartTime; + + /** + * 预约结束时间 + */ + @ApiModelProperty(value = "预约结束时间", required = true) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date applyEndTime; + + @ApiModelProperty(value = "预约机构业务主键", required = true) + private String deptId; + + @ApiModelProperty(value = "预约机构名称", required = true) + private String deptName; + + @ApiModelProperty(value = "预约项目业务主键", required = true) + private String projectId; + + @ApiModelProperty(value = "预约项目名称", required = true) + private String projectName; + + @ApiModelProperty(value = "附件一") + private String attachment; + + @ApiModelProperty(value = "附件二") + private String attachmentTwo; + + /** + * 删除标识(0:正常,1:已删除) + */ + @ApiModelProperty(value = "删除标识(0:正常,1:已删除)", hidden = true) + private String delFlag; + + /** + * 备注 + */ + @ApiModelProperty("备注") + private String remark; + +} diff --git a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/dto/screeningrecord/ScreeningRecordApplyDTO.java b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/dto/screeningrecord/ScreeningRecordApplyDTO.java new file mode 100644 index 0000000..eb4b776 --- /dev/null +++ b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/dto/screeningrecord/ScreeningRecordApplyDTO.java @@ -0,0 +1,144 @@ +package com.xinelu.manage.dto.screeningrecord; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + +/** + * @Author mengkuiliang + * @Description 居民预约记录请求对象 + * @Date 2023-01-29 14:03 + * @Param + * @return + **/ +@Data +@ApiModel("居民预约记录请求对象") +public class ScreeningRecordApplyDTO implements Serializable { + + /** + * 业务主键 + */ + @ApiModelProperty("业务主键") + private String screeningId; + + /** + * 居民业务主键 + */ + @ApiModelProperty(value = "居民业务主键", required = true) + private String registerId; + + /** + * 居民姓名 + */ + @ApiModelProperty(value = "居民姓名", required = true) + private String residentName; + + /** + * 状态(1:已预约 2:取消预约 3:已登记 4:已完成) + */ + @ApiModelProperty(value = "状态(1:已预约 2:取消预约 3:已登记 4:已完成)", hidden = true) + private String screeningStatus; + + /** + * 基础疾病 + */ + @ApiModelProperty(value = "基础疾病", required = true) + private String disease; + + /** + * 医院编号 + */ + @ApiModelProperty("医院编号") + private String deptId; + + /** + * 医院名称 + */ + @ApiModelProperty("医院名称") + private String deptName; + + @ApiModelProperty("项目业务主键") + private String projectId; + + /** + * 医院名称 + */ + @ApiModelProperty("项目名称") + private String projectName; + + /** + * 预约开始时间 + */ + @ApiModelProperty(value = "预约开始时间", required = true) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date applyStartTime; + + /** + * 预约结束时间 + */ + @ApiModelProperty(value = "预约结束时间", required = true) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date applyEndTime; + + /** + * 医生编号 + */ + @ApiModelProperty("医生编号") + private String doctorId; + + /** + * 医生名称 + */ + @ApiModelProperty("医生名称") + private String doctorName; + + /** + * 检查日期 + */ + @ApiModelProperty("检查日期") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date screeningDate; + + @ApiModelProperty("内容") + private String content; + + @ApiModelProperty("诊断结果") + private String diagnosticResult; + + @ApiModelProperty("附件一") + private String attachment; + + @ApiModelProperty("附件二") + private String attachmentTwo; + + @ApiModelProperty("预约码") + private String applyCode; + + @ApiModelProperty(value = "预约条码") + private String applyBarcode; + + @ApiModelProperty("登记日期") + private Date registrationDate; + + @ApiModelProperty("登记码") + private String registrationCode; + + @ApiModelProperty(value = "登记条码") + private String registrationBarcode; + + @ApiModelProperty(value = "筛查种类,1:居民预约,2:医生推送") + private String screeningType; + + private Date pushDate; + + private String assessRecordId; + /** + * 备注 + */ + @ApiModelProperty("备注") + private String remark; + +} diff --git a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/dto/screeningrecord/ScreeningRecordDTO.java b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/dto/screeningrecord/ScreeningRecordDTO.java new file mode 100644 index 0000000..26f50d9 --- /dev/null +++ b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/dto/screeningrecord/ScreeningRecordDTO.java @@ -0,0 +1,142 @@ +package com.xinelu.manage.dto.screeningrecord; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.xinelu.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.util.Date; +import lombok.Data; + +/** + * @Author mengkuiliang + * @Description 居民预约记录查询对象 + * @Date 2023-01-29 14:03 + * @Param + * @return + **/ +@Data +@ApiModel("居民预约记录查询对象") +public class ScreeningRecordDTO extends BaseEntity { + + /** + * 居民业务主键 + */ + @ApiModelProperty(value = "居民业务主键") + private String registerId; + + /** + * 居民姓名 + */ + @ApiModelProperty(value = "居民姓名") + private String residentName; + + /** + * 身份证号 + */ + @ApiModelProperty(value = "身份证号") + private String identity; + + /** + * 状态(1:已预约 2:取消预约 3:已登记 4:已完成) + */ + @ApiModelProperty(value = "状态(1:已预约 2:取消预约 3:已登记 4:已完成)") + private String screeningStatus; + + /** + * 家庭住址 + */ + @ApiModelProperty(value = "家庭住址") + private String address; + + /** + * 医院编号 + */ + @ApiModelProperty("医院编号") + private String deptId; + + /** + * 医院名称 + */ + @ApiModelProperty("医院名称") + private String deptName; + + @ApiModelProperty("预约项目业务主键") + private String projectId; + + @ApiModelProperty("预约项目名称") + private String projectName; + + /** + * 医生编号 + */ + @ApiModelProperty("医生编号") + private String doctorId; + + /** + * 医生名称 + */ + @ApiModelProperty("医生名称") + private String doctorName; + + /** + * 检查开始时间 + */ + @ApiModelProperty(value = "检查开始时间") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date screeningStartDate; + + /** + * 检查结束时间 + */ + @ApiModelProperty(value = "检查结束时间") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date screeningEndDate; + + /** + * 预约开始时间 + */ + @ApiModelProperty(value = "预约开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date applyStartDate; + + /** + * 预约结束时间 + */ + @ApiModelProperty(value = "预约结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date applyEndDate; + + @ApiModelProperty("预约码") + private String applyCode; + + @ApiModelProperty("登记状态,0:未登记,1:已登记") + private String registrationStatus; + + @ApiModelProperty("是否过期,0:生效中,1:已过期") + private String exceedStatus; + + @ApiModelProperty("是否生成筛查结果,0:未生成,1:已生成") + private String hasResult; + + @ApiModelProperty("是否诊断,0:未诊断,1:已诊断") + private String hasDiagnose; + + @ApiModelProperty(value = "筛查种类,1:居民预约,2:医生推送") + private String screeningType; + + @ApiModelProperty(value = "评估业务主键") + private String assessRecordId; + + /** + * 页码 + */ + @ApiModelProperty("页码") + private Integer pageNum; + + /** + * 页面大小 + */ + @ApiModelProperty("页面大小") + private Integer pageSize; + +} diff --git a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/dto/screeningrecord/ScreeningRecordSaveDTO.java b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/dto/screeningrecord/ScreeningRecordSaveDTO.java new file mode 100644 index 0000000..00971d0 --- /dev/null +++ b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/dto/screeningrecord/ScreeningRecordSaveDTO.java @@ -0,0 +1,27 @@ +package com.xinelu.manage.dto.screeningrecord; + +import com.xinelu.manage.domain.screeningproject.ScreeningProject; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.util.List; +import lombok.Data; + +/** + * @description: 推送筛查预约项目传输类 + * @author: haown + * @create: 2023-05-05 17:43 + **/ +@Data +@ApiModel("推送筛查预约项目传输类") +public class ScreeningRecordSaveDTO { + + @ApiModelProperty("居民业务主键") + private String registerId; + + @ApiModelProperty("筛查项目列表") + private List projectList; + + @ApiModelProperty("评估记录业务主键") + private String assessRecordId; + +} diff --git a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/mapper/patientinfo/PatientInfoMapper.java b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/mapper/patientinfo/PatientInfoMapper.java index b0156d7..ee23918 100644 --- a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/mapper/patientinfo/PatientInfoMapper.java +++ b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/mapper/patientinfo/PatientInfoMapper.java @@ -89,6 +89,14 @@ public interface PatientInfoMapper { **/ PatientInfoVO getPatientInfoById(Long id); + /** + * 根据cardNo查询所有信息 + * + * @param cardNo 用户身份证号 + * @return PatientInfo 结果 + **/ + PatientInfoVO getPatientInfoByCardNo(String cardNo); + /** * 新增被护理人基本信息 * diff --git a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/mapper/screeningproject/ScreeningProjectMapper.java b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/mapper/screeningproject/ScreeningProjectMapper.java new file mode 100644 index 0000000..59a5e26 --- /dev/null +++ b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/mapper/screeningproject/ScreeningProjectMapper.java @@ -0,0 +1,31 @@ +package com.xinelu.manage.mapper.screeningproject; + +import com.xinelu.manage.domain.screeningproject.ScreeningProject; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +/** +* @author haown +* @description 针对表【sd_project(项目表)】的数据库操作Mapper +* @createDate 2023-01-16 15:06:38 +* @Entity com.disease.business.domain.entity.Project +*/ +public interface ScreeningProjectMapper { + + List findList(ScreeningProject project); + + int deleteByPrimaryKey(String projectId); + + int insert(ScreeningProject record); + + int insertSelective(ScreeningProject record); + + ScreeningProject selectByPrimaryKey(String projectId); + + int updateByPrimaryKeySelective(ScreeningProject record); + + int updateByPrimaryKey(ScreeningProject record); + + Integer checkSameName(@Param("projectName") String projectName, @Param("deptId") String deptId, @Param("projectId") String projectId); + +} diff --git a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/mapper/screeningrecord/ScreeningRecordMapper.java b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/mapper/screeningrecord/ScreeningRecordMapper.java new file mode 100644 index 0000000..6948a6f --- /dev/null +++ b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/mapper/screeningrecord/ScreeningRecordMapper.java @@ -0,0 +1,101 @@ +package com.xinelu.manage.mapper.screeningrecord; + +import com.xinelu.common.core.domain.TimelineVo; +import com.xinelu.manage.domain.screeningrecord.ScreeningRecord; +import com.xinelu.manage.dto.screeningrecord.ScreeningRecordApplyDTO; +import com.xinelu.manage.dto.screeningrecord.ScreeningRecordDTO; +import com.xinelu.manage.vo.screeningrecord.ScreeningRecordVo; +import java.util.Date; +import java.util.List; +import org.apache.ibatis.annotations.Param; + +/** +* @author mengkuiliang +* @description 针对表【sd_screening_record(居民预约记录表)】的数据库操作Mapper +* @createDate 2023-01-29 13:53:13 +* @Entity com.disease.business.domain.entity.ScreeningRecord +*/ +public interface ScreeningRecordMapper { + + /** + * @Author mengkuiliang + * @Description 新增 + * @Date 2023-01-29 14:13 + * @Param [body] + * @return void + **/ + int insert(ScreeningRecordApplyDTO body); + + /** + * @Author mengkuiliang + * @Description 修改 + * @Date 2023-01-29 14:14 + * @Param [record] + * @return int + **/ + int update(ScreeningRecord record); + + /** + * @Author mengkuiliang + * @Description 更新预约状态 + * @Date 2023-01-29 14:14 + * @Param [screeningId] + * @return void + **/ + void updateStatus(@Param("screeningId") String screeningId, @Param("screeningStatus") String screeningStatus, @Param("screeningDate") Date screeningDate); + + /** + * @Author mengkuiliang + * @Description 获取预约详情 + * @Date 2023-01-29 14:14 + * @Param [screeningId] + * @return com.disease.business.domain.vo.ScreeningRecordVo + **/ + ScreeningRecordVo detail(String screeningId); + + /** + * @Author mengkuiliang + * @Description 获取当前居民预约信息 + * @Date 2023-01-29 14:51 + * @Param [registerId] + * @return com.disease.business.domain.vo.ScreeningRecordVo + **/ + ScreeningRecordVo getScreeningByRegisterId(String registerId); + + /** + * @Author mengkuiliang + * @Description 获取预约记录 + * @Date 2023-01-29 15:56 + * @Param [query] + * @return java.util.List + **/ + List list(ScreeningRecordDTO query); + + /** + * @Author mengkuiliang + * @Description 获取筛查结果记录 + * @Date 2023-01-29 15:56 + * @Param [query] + * @return java.util.List + **/ + List record(ScreeningRecordDTO query); + + /** + * @Author mengkuiliang + * @Description 获取最新一次筛查结果 + * @Date 2023-01-30 13:07 + * @Param [registerId] + * @return com.disease.business.domain.vo.ScreeningRecordVo + **/ + ScreeningRecordVo getScreeningOfLast(@Param("registerId") String registerId, @Param("screeningStatus")String screeningStatus, @Param("screeningType") String screeningType, @Param("projectId") String projectId); + + ScreeningRecord selectByScreeningId(String screeningId); + + List selectTimeLineList(@Param("registerId") String registerId); + + List screeningList(ScreeningRecordDTO query); +} + + + + diff --git a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/service/hospitalinfo/impl/HospitalInfoServiceImpl.java b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/service/hospitalinfo/impl/HospitalInfoServiceImpl.java index 2dd09a9..f0b5f66 100644 --- a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/service/hospitalinfo/impl/HospitalInfoServiceImpl.java +++ b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/service/hospitalinfo/impl/HospitalInfoServiceImpl.java @@ -10,6 +10,7 @@ import com.xinelu.common.utils.regex.RegexUtil; import com.xinelu.manage.domain.hospitalinfo.HospitalInfo; import com.xinelu.manage.mapper.hospitalinfo.HospitalInfoMapper; import com.xinelu.manage.service.hospitalinfo.IHospitalInfoService; +import com.xinelu.manage.service.nursestationitem.INurseStationItemService; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @@ -36,8 +37,8 @@ public class HospitalInfoServiceImpl implements IHospitalInfoService { private GenerateSystemCodeUtil generateSystemCodeUtil; @Resource private RegexUtil regexUtil; - //@Resource - //private INurseStationItemService nurseStationItemService; + @Resource + private INurseStationItemService nurseStationItemService; /** * 查询医院信息管理 @@ -153,8 +154,7 @@ public class HospitalInfoServiceImpl implements IHospitalInfoService { //修改路径 String substring = pictureUrl.substring(pictureUrl.indexOf("/profile")); //删除医院简介富文本图片 - //@TODO - //nurseStationItemService.deletePictureUrl(substring); + nurseStationItemService.deletePictureUrl(substring); } } return AjaxResult.success(); @@ -194,8 +194,7 @@ public class HospitalInfoServiceImpl implements IHospitalInfoService { //修改路径 String substring = pictureUrl.substring(pictureUrl.indexOf("/profile")); //删除富文本图片 - // @TODO - //nurseStationItemService.deletePictureUrl(substring); + nurseStationItemService.deletePictureUrl(substring); } } } diff --git a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/service/patientinfo/IPatientInfoService.java b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/service/patientinfo/IPatientInfoService.java index 40f9bdb..7c0504f 100644 --- a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/service/patientinfo/IPatientInfoService.java +++ b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/service/patientinfo/IPatientInfoService.java @@ -23,6 +23,14 @@ public interface IPatientInfoService { */ PatientInfoVO selectPatientInfoById(Long id); + /** + * 查询被护理人基本信息 + * + * @param cardNo 被护理人基本信息主键 + * @return 被护理人基本信息 + */ + PatientInfoVO selectPatientInfoByCardNo(String cardNo); + /** * 查询被护理人基本信息列表 * diff --git a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/service/patientinfo/impl/PatientInfoServiceImpl.java b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/service/patientinfo/impl/PatientInfoServiceImpl.java index dd57d76..2f0d9de 100644 --- a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/service/patientinfo/impl/PatientInfoServiceImpl.java +++ b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/service/patientinfo/impl/PatientInfoServiceImpl.java @@ -73,7 +73,11 @@ public class PatientInfoServiceImpl implements IPatientInfoService { return patientInfoById; } - /** + @Override public PatientInfoVO selectPatientInfoByCardNo(String cardNo) { + return patientInfoMapper.getPatientInfoByCardNo(cardNo); + } + + /** * 查询被护理人基本信息列表 * * @param patientInfo 被护理人基本信息 diff --git a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/service/screeningproject/IScreeningProjectService.java b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/service/screeningproject/IScreeningProjectService.java new file mode 100644 index 0000000..74f2491 --- /dev/null +++ b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/service/screeningproject/IScreeningProjectService.java @@ -0,0 +1,31 @@ +package com.xinelu.manage.service.screeningproject; + +import com.xinelu.manage.domain.screeningproject.ScreeningProject; +import java.util.List; + +/** + * @author haown + * @description 针对表【sd_project(项目表)】的数据库操作Service + * @createDate 2023-01-16 15:37:05 + */ +public interface IScreeningProjectService { + + List findList(ScreeningProject project); + + int insert(ScreeningProject project); + + int update(ScreeningProject project); + + void delete(ScreeningProject project); + + /** + * 检验机构是否存在相同名称服务项目 + * @param projectName 项目名称 + * @param deptId 机构id + * @param projectId 项目业务主键 + * @return {@link boolean} + * @author gaoyu + * @date 2022-11-23 10:20 + */ + boolean checkSameProjectName(String projectName, String deptId, String projectId); +} diff --git a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/service/screeningproject/impl/ScreeningProjectServiceImpl.java b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/service/screeningproject/impl/ScreeningProjectServiceImpl.java new file mode 100644 index 0000000..727f5a3 --- /dev/null +++ b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/service/screeningproject/impl/ScreeningProjectServiceImpl.java @@ -0,0 +1,48 @@ +package com.xinelu.manage.service.screeningproject.impl; + +import com.xinelu.manage.domain.screeningproject.ScreeningProject; +import com.xinelu.manage.mapper.screeningproject.ScreeningProjectMapper; +import com.xinelu.manage.service.screeningproject.IScreeningProjectService; +import com.xinelu.system.mapper.SysDeptMapper; +import java.util.List; +import javax.annotation.Resource; +import org.springframework.stereotype.Service; + +/** + * @description: 项目管理实现类 + * @author: haown + * @create: 2023-01-16 15:30 + **/ +@Service +public class ScreeningProjectServiceImpl implements IScreeningProjectService { + + @Resource + private ScreeningProjectMapper projectMapper; + @Resource + private SysDeptMapper deptMapper; + + @Override public List findList(ScreeningProject project) { + return projectMapper.findList(project); + } + + @Override public int insert(ScreeningProject project) { + // TODO 设置机构 + // project.setDeptName(deptMapper.selectDeptById(project.getDeptId()).getDeptName()); + return projectMapper.insertSelective(project); + } + + @Override + public int update(ScreeningProject project) { + // TODO 设置机构 + // project.setDeptName(deptMapper.selectDeptById(project.getDeptId()).getDeptName()); + return projectMapper.updateByPrimaryKey(project); + } + + @Override public void delete(ScreeningProject project) { + projectMapper.updateByPrimaryKeySelective(project); + } + + @Override public boolean checkSameProjectName(String projectName, String deptId, String projectId) { + return projectMapper.checkSameName(projectName, deptId, projectId) != null; + } +} diff --git a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/service/screeningrecord/IScreeningRecordService.java b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/service/screeningrecord/IScreeningRecordService.java new file mode 100644 index 0000000..1bf4172 --- /dev/null +++ b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/service/screeningrecord/IScreeningRecordService.java @@ -0,0 +1,125 @@ +package com.xinelu.manage.service.screeningrecord; + +import com.alibaba.fastjson2.JSONObject; +import com.xinelu.common.core.domain.SelectVo; +import com.xinelu.manage.domain.screeningrecord.ScreeningRecord; +import com.xinelu.manage.dto.screeningrecord.ScreeningApplyDTO; +import com.xinelu.manage.dto.screeningrecord.ScreeningRecordDTO; +import com.xinelu.manage.dto.screeningrecord.ScreeningRecordSaveDTO; +import com.xinelu.manage.vo.screeningrecord.ScreeningRecordVo; +import java.util.List; + +/** +* @author mengkuiliang +* @description 针对表【sd_screening_record(居民预约记录表)】的数据库操作Service +* @createDate 2023-01-29 13:53:13 +*/ +public interface IScreeningRecordService { + + List screeningList(ScreeningRecordDTO query); + + /** + * @Author mengkuiliang + * @Description 获取预约记录 + * @Date 2023-01-29 15:46 + * @Param + * @return + **/ + List list(ScreeningRecordDTO query); + + /** + * @Author mengkuiliang + * @Description 获取筛查结果记录 + * @Date 2023-01-30 13:30 + * @Param [query] + * @return java.util.List + **/ + List record(ScreeningRecordDTO query); + + /** + * @Author mengkuiliang + * @Description 预约保存 + * @Date 2023-01-29 14:09 + * @Param [body] + * @return void + **/ + String save(ScreeningApplyDTO body) throws Exception; + + /** + * 修改 + * @param body + * @return + * @throws Exception + */ + Integer update(ScreeningRecord body); + + /** + * @Author mengkuiliang + * @Description 取消预约 + * @Date 2023-01-29 14:09 + * @Param [screeningId] + * @return void + **/ + void cancel(String screeningId); + + /** + * @Author mengkuiliang + * @Description 获取预约详情 + * @Date 2023-01-29 14:09 + * @Param [screeningId] + * @return java.lang.Object + **/ + ScreeningRecordVo detail(String screeningId); + + void getRecordDetail(ScreeningRecordVo vo); + + /** + * @Author mengkuiliang + * @Description 登记 + * @Date 2023-01-29 14:31 + * @Param [body] + * @return String 条码号 + **/ + String receive(String screeningId) throws Exception; + + /** + * @Author mengkuiliang + * @Description 取消登记 + * @Date 2023-01-29 14:31 + * @Param [screeningId] + * @return void + **/ + void cancelReceive(String screeningId); + + /** + * @Author mengkuiliang + * @Description 获取当前居民预约信息 + * @Date 2023-01-29 14:54 + * @Param + * @return + **/ + ScreeningRecordVo getScreeningByRegisterId(String registerId); + + /** + * @Author mengkuiliang + * @Description 获取最新一次筛查结果 + * @Date 2023-01-30 11:45 + * @Param [registerId] + * @return void + **/ + ScreeningRecordVo last(String registerId,String projectId); + + /** + * @Author haown + * @Description 获取居民筛查记录时间轴 + * @Date 2023-02-06 20:49 + * @Param [registerId] + * @return void + **/ + List getTimelineList(String registerId); + + Integer pushScreening(ScreeningRecordSaveDTO body) throws Exception; + + JSONObject getInfo(String assessRecordId); + +} diff --git a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/service/screeningrecord/impl/ScreeningRecordServiceImpl.java b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/service/screeningrecord/impl/ScreeningRecordServiceImpl.java new file mode 100644 index 0000000..2fbd082 --- /dev/null +++ b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/service/screeningrecord/impl/ScreeningRecordServiceImpl.java @@ -0,0 +1,457 @@ +package com.xinelu.manage.service.screeningrecord.impl; + +import com.alibaba.fastjson2.JSONObject; +import com.xinelu.common.constant.ScreeningProjectConstants; +import com.xinelu.common.core.domain.SelectVo; +import com.xinelu.common.core.domain.TimelineVo; +import com.xinelu.common.core.domain.model.LoginUser; +import com.xinelu.common.enums.UploadType; +import com.xinelu.common.utils.DateUtils; +import com.xinelu.common.utils.SecurityUtils; +import com.xinelu.common.utils.bean.BeanUtils; +import com.xinelu.common.utils.uuid.IdUtils; +import com.xinelu.manage.domain.screeningproject.ScreeningProject; +import com.xinelu.manage.domain.screeningrecord.ScreeningRecord; +import com.xinelu.manage.dto.screeningrecord.ScreeningApplyDTO; +import com.xinelu.manage.dto.screeningrecord.ScreeningRecordApplyDTO; +import com.xinelu.manage.dto.screeningrecord.ScreeningRecordDTO; +import com.xinelu.manage.dto.screeningrecord.ScreeningRecordSaveDTO; +import com.xinelu.manage.mapper.screeningrecord.ScreeningRecordMapper; +import com.xinelu.manage.service.patientinfo.IPatientInfoService; +import com.xinelu.manage.service.screeningrecord.IScreeningRecordService; +import com.xinelu.manage.vo.patientinfo.PatientInfoVO; +import com.xinelu.manage.vo.screeningrecord.ScreeningRecordVo; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import javax.annotation.Resource; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +/** +* @author mengkuiliang +* @description 针对表【sd_screening_record(居民预约记录表)】的数据库操作Service实现 +* @createDate 2023-01-29 13:53:13 +*/ +@Service +public class ScreeningRecordServiceImpl implements IScreeningRecordService { + + @Resource + private ScreeningRecordMapper screeningRecordMapper; + @Resource + private IPatientInfoService patientService; + //@Resource + //private IScreeningProjectRecordService projectRecordService; + + @Override + public List screeningList(ScreeningRecordDTO query) { + // TODO 通过机构查询 + // query.setDeptId(SecurityUtils.getDeptId()); + return screeningRecordMapper.screeningList(query); + } + + /** + * @Author mengkuiliang + * @Description 获取预约记录 + * @Date 2023-01-29 15:55 + * @Param [query] + * @return java.util.List + **/ + @Override + public List list(ScreeningRecordDTO query) { + return screeningRecordMapper.list(query); + } + + /** + * @Author mengkuiliang + * @Description 获取筛查结果记录 + * @Date 2023-01-30 13:31 + * @Param [query] + * @return java.util.List + **/ + @Override + public List record(ScreeningRecordDTO query) { + return screeningRecordMapper.record(query); + } + + /** + * @Author mengkuiliang + * @Description 预约保存 + * @Date 2023-01-29 14:10 + * @Param [body] + * @return void + **/ + @Override + @Transactional(rollbackFor = Exception.class) + public String save(ScreeningApplyDTO body) throws Exception { + // 校验是否已经注册 + PatientInfoVO registerVo = patientService.selectPatientInfoByCardNo(body.getIdentity()); + if(registerVo == null) { + throw new Exception("用户未注册"); + } + // 查询 同一机构的同一筛查项目在同一天是否有预约 + ScreeningRecordDTO query = new ScreeningRecordDTO(); + query.setRegisterId(body.getRegisterId()); + query.setDeptId(body.getDeptId()); + query.setProjectId(body.getProjectId()); + query.setApplyStartDate(body.getApplyStartTime()); + query.setApplyEndDate(body.getApplyEndTime()); + List recordList = list(query); + if (!CollectionUtils.isEmpty(recordList)) { + throw new Exception("已在" + DateUtils.formatDate(body.getApplyStartTime(), "yyyy年MM月dd日") + "预约了" + body.getProjectName() + "项目不能重复预约"); + } + + body.setScreeningId(IdUtils.fastSimpleUUID()); + ScreeningRecordApplyDTO recordBody = new ScreeningRecordApplyDTO(); + BeanUtils.copyProperties(body, recordBody); + recordBody.setScreeningStatus("1"); + recordBody.setApplyCode(generateCode()); + recordBody.setScreeningType("1"); + // 预约条码 + recordBody.setApplyBarcode(generateBarcode(UploadType.SCREENING_BARCODE.getCode(), recordBody.getScreeningId(), recordBody.getApplyCode())); + int flag = screeningRecordMapper.insert(recordBody); + if(flag > 0) { + // 推送消息 + //JSONObject jsonObject = new JSONObject(); + //jsonObject.fluentPut("recipientName", registerVo.getResidentName()) + // .fluentPut("handleDate", recordBody.getApplyStartTime()) + // .fluentPut("hospitalName", recordBody.getDeptName()) + // .fluentPut("applyContent", recordBody.getProjectName()) + // .fluentPut("recipientIdentity", registerVo.getIdentity()) + // .fluentPut("sendTime", DateUtils.formatDate(new Date(), "yyyy-MM-dd HH:mm:ss")) + // .fluentPut("messageType", "5") + // .fluentPut("messageCategory", "1") + // .fluentPut("templateType", MessageTypeEnum.SCREENING_APPLY.getType()) + // .fluentPut("content", "预约成功,请准时赴约筛查!") + // .fluentPut("contentId", recordBody.getScreeningId()); + //FdmpPushMegUtil.sendPost(jsonObject); + } + return body.getRegisterId(); + } + + @Override + public Integer update(ScreeningRecord body) { + // TODO 用户id + //body.setDoctorId(SecurityUtils.getUserId()); + body.setDeptName(SecurityUtils.getLoginUser().getUser().getDept().getDeptName()); + body.setScreeningStatus("4"); + body.setScreeningDate(new Date()); + int flag = screeningRecordMapper.update(body); + if (flag > 0) { + // TODO 推送提醒 + //PatientInfoVO patientInfoVO = patientService.selectPatientInfoById(body.getRegisterId()); + //JSONObject jsonObject = new JSONObject(); + //jsonObject.fluentPut("senderNo", SecurityUtils.getUserId()) + // .fluentPut("senderName", SecurityUtils.getLoginUser().getUser().getNickName()) + // .fluentPut("recipientName", patientInfoVO.getPatientName()) + // .fluentPut("recipientIdentity", patientInfoVO.getCardNo()) + // .fluentPut("messageType", "6") + // .fluentPut("messageCategory", "1") + // .fluentPut("templateType", MessageTypeEnum.JTYSXXTZ.getType()) + // .fluentPut("sendTime", DateUtils.formatDate(new Date(), "yyyy-MM-dd HH:mm:ss")) + // .fluentPut("content", "您的筛查项目已检测完成,点击查看详情。") + // .fluentPut("contentId", body.getScreeningId()); + //FdmpPushMegUtil.sendPost(jsonObject); + } + return flag; + } + + /** + * @Author mengkuiliang + * @Description 取消预约 + * @Date 2023-01-29 14:10 + * @Param [screeningId] + * @return void + **/ + @Override + public void cancel(String screeningId) { + screeningRecordMapper.updateStatus(screeningId, "2", null); + } + + /** + * @Author mengkuiliang + * @Description 登记 + * @Date 2023-01-29 14:31 + * @Param [body] + * @return void + **/ + @Override + public String receive(String screeningId) throws Exception { + LoginUser loginUser = SecurityUtils.getLoginUser(); + ScreeningRecord screeningRecord = screeningRecordMapper.selectByScreeningId(screeningId); + // 判断预约是否过期,是否已登记 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + if (sdf.parse(DateUtils.formatDate(screeningRecord.getApplyEndTime(), "yyyy-MM-dd")).before(sdf.parse(DateUtils.formatDate(new Date(), "yyyy-MM-dd")))){ + throw new Exception("患者预约已过期,不可进行登记。"); + } + if (StringUtils.equals("3", screeningRecord.getScreeningStatus()) || StringUtils.equals("4", screeningRecord.getScreeningStatus())) { + throw new Exception("该预约已登记,请勿重复登记。"); + } + // TODO 当前登录用户id + //screeningRecord.setDoctorId(loginUser.getUserId()); + screeningRecord.setDoctorName(loginUser.getUser().getNickName()); + screeningRecord.setRegistrationDate(new Date()); + screeningRecord.setScreeningStatus("3"); + // 生成登记条码 + screeningRecord.setRegistrationCode(generateCode()); + screeningRecord.setRegistrationBarcode(generateBarcode(UploadType.REGISTRATION_BARCODE.getCode(), screeningRecord.getScreeningId(), screeningRecord.getRegistrationCode())); + int flag = screeningRecordMapper.update(screeningRecord); + return screeningRecord.getRegistrationCode(); + + } + + /** + * @Author mengkuiliang + * @Description 取消登记 + * @Date 2023-01-29 14:31 + * @Param [screeningId] + * @return void + **/ + @Override + public void cancelReceive(String screeningId) { + screeningRecordMapper.updateStatus(screeningId, "1", null); + } + + /** + * @Author mengkuiliang + * @Description 获取预约详情 + * @Date 2023-01-29 14:10 + * @Param [screeningId] + * @return com.disease.business.domain.vo.ScreeningRecordVo + **/ + @Override + public ScreeningRecordVo detail(String screeningId) { + ScreeningRecordVo recordVo = screeningRecordMapper.detail(screeningId); + if(recordVo == null) { + return null; + } + return recordVo; + } + + /** + * @Author mengkuiliang + * @Description 获取当前居民预约信息 + * @Date 2023-01-29 14:10 + * @Param [screeningId] + * @return com.disease.business.domain.vo.ScreeningRecordVo + **/ + @Override + public ScreeningRecordVo getScreeningByRegisterId(String registerId) { + ScreeningRecordVo recordVo = screeningRecordMapper.getScreeningByRegisterId(registerId); + if(recordVo == null) { + return null; + } + getRecordDetail(recordVo); + return recordVo; + } + + /** + * @Author mengkuiliang + * @Description 获取最新一次筛查结果 + * @Date 2023-01-30 11:46 + * @Param [registerId] + * @return com.disease.business.domain.vo.ProjectRecordVo + **/ + @Override + public ScreeningRecordVo last(String registerId,String projectId) { + ScreeningRecordVo recordVo = screeningRecordMapper.getScreeningOfLast(registerId, null, "1",projectId); + if(recordVo == null) { + return null; + } + // TODO 获取文件类型 + //File fileInfo = sysFileService.getFile(recordVo.getAttachment()); + //if (fileInfo != null) { + // recordVo.setFileType(fileInfo.getSuffix()); + //} + + if (!StringUtils.contains(recordVo.getProjectName(), ScreeningProjectConstants.ALZHEIMER)) { + getRecordDetail(recordVo); + } + return recordVo; + } + + @Override public List getTimelineList(String registerId) { + List timelineVos = screeningRecordMapper.selectTimeLineList(registerId); + // 按照年份进行分组 + Map> groupByTime = timelineVos.stream().collect(Collectors.groupingBy(item-> DateUtils.formatDate(item.getCreateTime(), "yyyy"))); + List timeList = new ArrayList<>(); + + for (String time : groupByTime.keySet()) { + List timelineVoList = groupByTime.get(time); + List children = timelineVoList.stream().map(child -> { + SelectVo result = new SelectVo(); + result.setLabel(DateUtils.formatDate(child.getCreateTime(), "yyyy-MM-dd")); + result.setValue(child.getId()); + return result; + }).collect(Collectors.toList()); + + timeList.add(SelectVo.builder() + .label(time) + .value(time) + .children(children).build()); + } + return timeList; + } + + @Override public Integer pushScreening(ScreeningRecordSaveDTO body) throws Exception { + List projectList = body.getProjectList(); + int flag = 0; + + String assessRecordId = ""; + // 查询居民最新一次评估记录 + //List riskAssessRecords = riskAssessRecordMapper.selectByPatientId(body.getRegisterId()); + //if (riskAssessRecords != null && riskAssessRecords.size() > 0) { + // RiskAssessRecord riskAssessRecord = riskAssessRecords.get(riskAssessRecords.size() - 1); + // if (riskAssessRecord != null) { + // assessRecordId = riskAssessRecord.getAssessRecordId(); + // } + //} else { + // throw new Exception("还未评估,请评估后推送"); + //} + for (ScreeningProject project : projectList) { + ScreeningRecordApplyDTO screeningRecord = new ScreeningRecordApplyDTO(); + screeningRecord.setAssessRecordId(assessRecordId); + screeningRecord.setScreeningId(IdUtils.fastSimpleUUID()); + screeningRecord.setProjectId(project.getProjectId()); + screeningRecord.setProjectName(project.getProjectName()); + screeningRecord.setRegisterId(body.getRegisterId()); + // TODO 用户id + //screeningRecord.setDoctorId(SecurityUtils.getUserId()); + screeningRecord.setDoctorName(SecurityUtils.getLoginUser().getUser().getNickName()); + // TODO 机构id + //screeningRecord.setDeptId(SecurityUtils.getDeptId()); + screeningRecord.setDeptName(SecurityUtils.getLoginUser().getUser().getDept().getDeptName()); + screeningRecord.setScreeningStatus("1"); + screeningRecord.setScreeningType("2"); + screeningRecord.setApplyStartTime(new Date()); + flag += screeningRecordMapper.insert(screeningRecord); + } + if (flag > 0) { + // TODO 推送消息通知 + //JSONObject jsonObject = new JSONObject(); + //RegisterVo register = registerService.getByRegisterId(body.getRegisterId()); + //jsonObject.fluentPut("senderNo", SecurityUtils.getUserId()) + // .fluentPut("senderName", SecurityUtils.getLoginUser().getUser().getNickName()) + // .fluentPut("doctorName", SecurityUtils.getLoginUser().getUser().getNickName()) + // .fluentPut("recipientName", register.getResidentName()) + // .fluentPut("recipientIdentity", register.getIdentity()) + // .fluentPut("sendTime", DateUtils.formatDate(new Date(), "yyyy-MM-dd HH:mm:ss")) + // .fluentPut("messageType", "4") + // .fluentPut("messageCategory", "1") + // .fluentPut("templateType", MessageTypeEnum.JTYSXXTZ.getType()) + // .fluentPut("content", "根据评估结果您需筛查,详情请点击查看。") + // .fluentPut("contentId", assessRecordId); + //FdmpPushMegUtil.sendPost(jsonObject); + } + return flag; + } + + @Override public JSONObject getInfo(String assessRecordId) { + // 根据评估记录业务主键查询医生推荐筛查项目 + JSONObject retObject = new JSONObject(); + ScreeningRecordDTO query = new ScreeningRecordDTO(); + query.setAssessRecordId(assessRecordId); + List screeningRecordVoList = list(query); + if (screeningRecordVoList != null && screeningRecordVoList.size() > 0) { + List projectName = screeningRecordVoList.stream().map(ScreeningRecordVo::getProjectName).collect(Collectors.toList()); + retObject.fluentPut("projectName", String.join("," , projectName)) + .fluentPut("doctorName", screeningRecordVoList.get(0).getDoctorName()); + // TODO 居民信息 + //PatientInfoVO patientInfoVO = patientService.selectPatientInfoById(screeningRecordVoList.get(0).getRegisterId()); + //retObject.fluentPut("name", patientInfoVO.getPatientName()); + } + + // 根据评估记录业务主键查询评估记录 + //RiskAssessRecord riskAssessRecord = riskAssessRecordMapper.selectById(assessRecordId); + //if (riskAssessRecord != null) { + // String assessResult = "高血压等级:" + getRiskLevel(riskAssessRecord.getRiskLevelHbp()) +";糖尿病风险等级:" +getRiskLevel(riskAssessRecord.getRiskLevelDm()); + // retObject.fluentPut("assessResult", assessResult); + //} else { + // retObject.fluentPut("assessResult", "未评估"); + //} + return retObject; + } + + private String getRiskLevel(String riskLevel) { + String value = "正常"; + switch (riskLevel) { + case "0" : + value = "正常"; + break; + case "1" : + value = "低危"; + break; + case "2" : + value = "中危"; + break; + case "3" : + value = "高危"; + break; + } + return value; + } + /** 获取检测项目记录 */ + @Override + public void getRecordDetail(ScreeningRecordVo vo) { + // 拼接预约时间区间 + vo.setApplyTime(DateUtils.formatDate(vo.getApplyStartTime(), "yyyy年MM月dd日") + " " + DateUtils.formatDate(vo.getApplyStartTime(), "HH:mm") + "~" + DateUtils.formatDate(vo.getApplyEndTime(), "HH:mm")); + setAttachment(vo); + } + + /** 获取图片附件转base64 */ + private void setAttachment(ScreeningRecordVo record) { + // TODO 文件转换为base64 + //if(!StringUtils.isBlank(record.getAttachment())) { + // File fileInfo = sysFileService.getFile(record.getAttachment()); + // if(fileInfo != null) { + // record.setAttachment(FileUtils.PicToBase64(fileInfo.getFilePath())); + // } + //} + //if(!StringUtils.isBlank(record.getAttachmentTwo())) { + // File fileInfo = sysFileService.getFile(record.getAttachmentTwo()); + // if(fileInfo != null) { + // record.setAttachmentTwo(FileUtils.PicToBase64(fileInfo.getFilePath())); + // } + //} + } + + /** + * 生成预约码 + * @return + */ + private String generateCode() { + return System.currentTimeMillis() + ""; + } + + /** + * 生成条码 + * @param code + * @param screeningId + * @param content + */ + private String generateBarcode(String code, String screeningId, String content) { + // TODO 文件保存 + //String fileDir = UploadType.getUploadType(code).getPath() + DateUtils.formatDate(new Date(), "yyyy-MM-dd") + "/"; + //String fileName = screeningId + ".jpg"; + //QrCodeUtils.createTxm(content, fileDir, fileName); + //File sysFile = new File(); + //sysFile.setFileId(IdUtils.fastSimpleUUID()); + //sysFile.setOriginalFilename(screeningId + ".jpg"); + //sysFile.setFilePath(fileDir); + //sysFile.setContentType("image/jpeg"); + //sysFile.setSuffix("jpg"); + //sysFile.setUploadType(code); + //fileService.insert(sysFile); + //return sysFile.getFileId(); + return null; + } +} + + + + diff --git a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/vo/screeningrecord/ScreeningRecordVo.java b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/vo/screeningrecord/ScreeningRecordVo.java new file mode 100644 index 0000000..e694760 --- /dev/null +++ b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/vo/screeningrecord/ScreeningRecordVo.java @@ -0,0 +1,194 @@ +package com.xinelu.manage.vo.screeningrecord; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.xinelu.manage.vo.patientinfo.PatientInfoVO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.util.Date; +import lombok.Data; + +/** + * @Author mengkuiliang + * @Description 居民预约记录展示对象 + * @Date 2023-01-29 14:06 + * @Param + * @return + **/ +@Data +@ApiModel("居民预约记录展示对象") +public class ScreeningRecordVo { + + /** 居民信息 */ + @ApiModelProperty("居民信息") + private PatientInfoVO patientInfoVO; + + /** + * 业务主键 + */ + @ApiModelProperty("业务主键") + private String screeningId; + + /** + * 居民业务主键 + */ + @ApiModelProperty("居民业务主键") + private String registerId; + + /** + * 居民姓名 + */ + @ApiModelProperty("居民姓名") + private String residentName; + + /** + * 性别(1:男 2:女) + */ + private String gender; + + /** + * 身份证号 + */ + private String identity; + + /** + * 出生日期 + */ + @JsonFormat(pattern = "yyyy-MM-dd") + private Date birthday; + + /** + * 联系电话 + */ + private String phone; + + @ApiModelProperty("纳入管理状态") + private String manageStatus; + + @ApiModelProperty("纳入管理时间") + private Date manageDate; + + /** + * 状态(1:已预约 2:取消预约 3:已登记 4:已完成) + */ + @ApiModelProperty("状态(1:已预约 2:取消预约 3:已登记 4:已完成)") + private String screeningStatus; + + /** + * 基础疾病 + */ + @ApiModelProperty("基础疾病") + private String disease; + + @ApiModelProperty("预约项目id") + private String projectId; + + @ApiModelProperty("预约项目") + private String projectName; + + @ApiModelProperty(value = "诊断结果") + private String diagnosticResult; + + @ApiModelProperty("附件一") + private String attachment; + + @ApiModelProperty("附件二") + private String attachmentTwo; + /** + * 医院编号 + */ + @ApiModelProperty("医院编号") + private String deptId; + + /** + * 医院名称 + */ + @ApiModelProperty("医院名称") + private String deptName; + + /** + * 医生编号 + */ + @ApiModelProperty("医生编号") + private String doctorId; + + /** + * 医生名称 + */ + @ApiModelProperty("医生名称") + private String doctorName; + + /** + * 检查日期 + */ + @ApiModelProperty("检查日期") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date screeningDate; + + /** + * 预约开始时间 + */ + @ApiModelProperty("预约开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date applyStartTime; + + /** + * 预约结束时间 + */ + @ApiModelProperty("预约结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date applyEndTime; + + /** + * 预约时间区间 + */ + @ApiModelProperty("预约时间区间") + private String applyTime; + + @ApiModelProperty("预约码") + private String applyCode; + + @ApiModelProperty("预约条码") + private String applyBarcode; + + @ApiModelProperty("登记日期") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm") + private Date registrationDate; + + @ApiModelProperty("登记码") + private String registrationCode; + + @ApiModelProperty(value = "登记条码") + private String registrationBarcode; + + @ApiModelProperty("是否过期,0:生效中,1:已过期") + private String exceedStatus; + + @ApiModelProperty("是否生成筛查结果,0:未生成,1:已生成") + private String hasResult; + + @ApiModelProperty("是否诊断,0:未诊断,1:已诊断") + private String hasDiagnose; + + @ApiModelProperty(value = "筛查种类,1:居民预约,2:医生推送") + private String screeningType; + + @ApiModelProperty(value = "医生推送日期") + private Date pushDate; + + @ApiModelProperty(value = "评估业务主键") + private String assessRecordId; + + /** + * 备注 + */ + @ApiModelProperty("备注") + private String remark; + + + /** + * 文件类型 + */ + @ApiModelProperty("文件类型") + private String fileType; + +} diff --git a/xinelu-nurse-manage/src/main/resources/mapper/manage/patientinfo/PatientInfoMapper.xml b/xinelu-nurse-manage/src/main/resources/mapper/manage/patientinfo/PatientInfoMapper.xml index cb5503e..dbc2589 100644 --- a/xinelu-nurse-manage/src/main/resources/mapper/manage/patientinfo/PatientInfoMapper.xml +++ b/xinelu-nurse-manage/src/main/resources/mapper/manage/patientinfo/PatientInfoMapper.xml @@ -533,6 +533,44 @@ and del_flag = 0 + + insert into patient_info diff --git a/xinelu-nurse-manage/src/main/resources/mapper/manage/screeningproject/ScreeningProjectMapper.xml b/xinelu-nurse-manage/src/main/resources/mapper/manage/screeningproject/ScreeningProjectMapper.xml new file mode 100644 index 0000000..fbf02c1 --- /dev/null +++ b/xinelu-nurse-manage/src/main/resources/mapper/manage/screeningproject/ScreeningProjectMapper.xml @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + + + + + + + + + + + id,project_id,project_name, + project_type,price,discount, + discount_price,status,dept_id, + dept_name,create_by,create_time, + update_by,update_time,del_flag, + remark + + + + + + + + delete from sd_project + where project_id = #{projectId,jdbcType=VARCHAR} + + + insert into sd_project + ( id,project_id,project_name + ,project_type,price,discount + ,discount_price,status,dept_id + ,dept_name,create_by,create_time + ,update_by,update_time,del_flag + ,remark) + values (#{id,jdbcType=BIGINT},#{projectId,jdbcType=VARCHAR},#{projectName,jdbcType=VARCHAR} + ,#{projectType,jdbcType=CHAR},#{price,jdbcType=DECIMAL},#{discount,jdbcType=INTEGER} + ,#{discountPrice,jdbcType=VARCHAR},#{status,jdbcType=CHAR},#{deptId,jdbcType=VARCHAR} + ,#{deptName,jdbcType=VARCHAR},#{createBy,jdbcType=VARCHAR},#{createTime,jdbcType=DATE} + ,#{updateBy,jdbcType=VARCHAR},#{updateTime,jdbcType=DATE},#{delFlag,jdbcType=CHAR} + ,#{remark,jdbcType=VARCHAR}) + + + insert into sd_project + + id, + project_id, + project_name, + project_type, + price, + discount, + discount_price, + status, + dept_id, + dept_name, + create_by, + create_time, + update_by, + update_time, + del_flag, + remark, + + + #{id,jdbcType=BIGINT}, + #{projectId,jdbcType=VARCHAR}, + #{projectName,jdbcType=VARCHAR}, + #{projectType,jdbcType=CHAR}, + #{price,jdbcType=DECIMAL}, + #{discount,jdbcType=INTEGER}, + #{discountPrice,jdbcType=DECIMAL}, + #{status,jdbcType=CHAR}, + #{deptId,jdbcType=VARCHAR}, + #{deptName,jdbcType=VARCHAR}, + #{createBy,jdbcType=VARCHAR}, + #{createTime,jdbcType=DATE}, + #{updateBy,jdbcType=VARCHAR}, + #{updateTime,jdbcType=DATE}, + #{delFlag,jdbcType=CHAR}, + #{remark,jdbcType=VARCHAR}, + + + + update sd_project + + + project_name = #{projectName,jdbcType=VARCHAR}, + + + project_type = #{projectType,jdbcType=CHAR}, + + + price = #{price,jdbcType=DECIMAL}, + + + discount = #{discount,jdbcType=INTEGER}, + + + discount_price = #{discountPrice,jdbcType=VARCHAR}, + + + status = #{status,jdbcType=CHAR}, + + + dept_id = #{deptId,jdbcType=VARCHAR}, + + + dept_name = #{deptName,jdbcType=VARCHAR}, + + + create_by = #{createBy,jdbcType=VARCHAR}, + + + create_time = #{createTime,jdbcType=DATE}, + + + update_by = #{updateBy,jdbcType=VARCHAR}, + + + update_time = #{updateTime,jdbcType=DATE}, + + + del_flag = #{delFlag,jdbcType=CHAR}, + + + remark = #{remark,jdbcType=VARCHAR}, + + + where project_id = #{projectId,jdbcType=VARCHAR} + + + update sd_project + set + project_name = #{projectName,jdbcType=VARCHAR}, + project_type = #{projectType,jdbcType=CHAR}, + price = #{price,jdbcType=DECIMAL}, + discount = #{discount,jdbcType=INTEGER}, + discount_price = #{discountPrice,jdbcType=VARCHAR}, + status = #{status,jdbcType=CHAR}, + dept_id = #{deptId,jdbcType=VARCHAR}, + dept_name = #{deptName,jdbcType=VARCHAR}, + create_by = #{createBy,jdbcType=VARCHAR}, + create_time = #{createTime,jdbcType=DATE}, + update_by = #{updateBy,jdbcType=VARCHAR}, + update_time = #{updateTime,jdbcType=DATE}, + del_flag = #{delFlag,jdbcType=CHAR}, + remark = #{remark,jdbcType=VARCHAR} + where project_id = #{projectId,jdbcType=VARCHAR} + + + diff --git a/xinelu-nurse-manage/src/main/resources/mapper/manage/screeningrecord/ScreeningRecordMapper.xml b/xinelu-nurse-manage/src/main/resources/mapper/manage/screeningrecord/ScreeningRecordMapper.xml new file mode 100644 index 0000000..31b20ef --- /dev/null +++ b/xinelu-nurse-manage/src/main/resources/mapper/manage/screeningrecord/ScreeningRecordMapper.xml @@ -0,0 +1,365 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id,screening_id,register_id,screening_status, + disease,dept_id,IFNULL(dept_name, '') as dept_name, + project_id, project_name, + apply_start_time,apply_end_time, screening_date, + content,diagnostic_result,attachment,attachment_two, + doctor_id,IFNULL(doctor_name,'') as doctor_name,apply_barcode,registration_date,screening_type,push_date,assess_record_id, + remark + + + + screening_id,register_id,screening_status, + disease,dept_id,dept_name, + project_id, project_name, + apply_start_time, apply_end_time, screening_date, + content,diagnostic_result,attachment,attachment_two, + doctor_id,doctor_name,apply_code,apply_barcode,registration_date,screening_type,push_date,assess_record_id,remark + + + + + insert into sd_screening_record () + values (#{screeningId}, #{registerId}, #{screeningStatus}, + #{disease}, #{deptId}, #{deptName}, + #{projectId},#{projectName}, + #{applyStartTime}, #{applyEndTime},#{screeningDate}, + #{content}, #{diagnosticResult},#{attachment},#{attachmentTwo}, + #{doctorId}, #{doctorName},#{applyCode},#{applyBarcode},#{registrationDate},#{screeningType},#{pushDate},#{assessRecordId},#{remark}) + + + + + update sd_screening_record + + + disease = #{disease}, + + + screening_status = #{screeningStatus}, + + + dept_id = #{deptId}, + + + dept_name = #{deptName}, + + + project_id = #{projectId}, + + + project_name = #{projectName}, + + + apply_start_time = #{applyStartTime}, + + + apply_end_time = #{applyEndTime}, + + + screening_date = #{screeningDate}, + + + content = #{content}, + + + diagnostic_result = #{diagnosticResult}, + + + attachment = #{attachment}, + + + attachment_two = #{attachmentTwo}, + + + doctor_id = #{doctorId}, + + + doctor_name = #{doctorName}, + + + apply_code = #{applyCode}, + + + apply_barcode = #{applyBarcode}, + + + registration_date = #{registrationDate}, + + + registration_code = #{registrationCode}, + + + registration_barcode = #{registrationBarcode}, + + + screening_type = #{screeningType}, + + + push_date = #{pushDate}, + + + remark = #{remark}, + + + where screening_id = #{screeningId} + + + + + update sd_screening_record set screening_status = #{screeningStatus} + + ,screening_date = #{screeningDate} + + where screening_id = #{screeningId} + + + + + + + + + + + and screening_status = #{screeningStatus} + + + and register_id = #{registerId} + + + and resident_name like concat(#{residentName}, '%') + + + and identity = #{identity} + + + and address like concat('%', #{address}, '%') + + + and dept_id = #{deptId} + + + and dept_name = #{deptName} + + + and project_id = #{projectId} + + + and doctor_id = #{doctorId} + + + and doctor_name = #{doctorName} + + + and date_format(apply_start_time, '%y%m%d') >= date_format(#{applyStartDate}, '%y%m%d') + + + and date_format(apply_end_time, '%y%m%d') <= date_format(#{applyEndDate}, '%y%m%d') + + + and screening_date >= #{screeningStartDate} + + + and screening_date <= #{screeningEndDate} + + + and screening_type = #{screeningType} + + + and assess_record_id = #{assessRecordId} + + + + + + + + + + + + + + +