feat(health): 新增慢性疾病档案模块

- 新增慢性疾病档案实体类、VO、DTO
- 新增Mapper接口和MyBatis映射文件
- 新增Service接口和实现类
- 新增Controller控制器
- 新增数据库建表SQL、菜单和字典数据
- 支持关联成员和疾病知识库
- 支持疾病状态管理和启用/停用
This commit is contained in:
bot5
2026-03-17 23:32:37 +08:00
parent 2389344f99
commit eaa823a8b7
9 changed files with 885 additions and 0 deletions

View File

@@ -0,0 +1,128 @@
package com.intc.health.controller;
import java.util.List;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import javax.annotation.Resource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.intc.common.log.annotation.Log;
import com.intc.common.log.enums.BusinessType;
import com.intc.common.security.annotation.RequiresPermissions;
import com.intc.health.domain.ChronicDiseaseRecord;
import com.intc.health.domain.vo.ChronicDiseaseRecordVo;
import com.intc.health.domain.dto.ChronicDiseaseRecordDto;
import com.intc.health.service.IChronicDiseaseRecordService;
import com.intc.common.core.web.controller.BaseController;
import com.intc.common.core.web.domain.AjaxResult;
import com.intc.common.core.utils.poi.ExcelUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.intc.common.core.web.page.TableDataInfo;
/**
* 慢性疾病档案Controller
*
* @author bot5
* @date 2026-03-17
*/
@Api(tags = "慢性疾病档案")
@RestController
@RequestMapping("/chronicDisease")
public class ChronicDiseaseRecordController extends BaseController
{
@Resource
private IChronicDiseaseRecordService chronicDiseaseRecordService;
/**
* 查询慢性疾病档案列表
*/
@ApiOperation(value = "查询慢性疾病档案列表", response = ChronicDiseaseRecordVo.class)
@RequiresPermissions("health:chronicDisease:list")
@GetMapping("/list")
public TableDataInfo list(ChronicDiseaseRecordDto chronicDiseaseRecordDto)
{
startPage();
List<ChronicDiseaseRecordVo> list = chronicDiseaseRecordService.selectChronicDiseaseRecordList(chronicDiseaseRecordDto);
return getDataTable(list);
}
/**
* 根据成员ID查询慢性疾病档案列表
*/
@ApiOperation(value = "根据成员ID查询慢性疾病档案列表", response = ChronicDiseaseRecordVo.class)
@RequiresPermissions("health:chronicDisease:list")
@GetMapping("/listByMember/{memberId}")
public AjaxResult listByMember(@PathVariable("memberId") Long memberId)
{
List<ChronicDiseaseRecordVo> list = chronicDiseaseRecordService.selectChronicDiseaseRecordByMemberId(memberId);
return success(list);
}
/**
* 导出慢性疾病档案列表
*/
@ApiOperation(value = "导出慢性疾病档案列表")
@RequiresPermissions("health:chronicDisease:export")
@Log(title = "慢性疾病档案", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, ChronicDiseaseRecordDto chronicDiseaseRecordDto)
{
List<ChronicDiseaseRecordVo> list = chronicDiseaseRecordService.selectChronicDiseaseRecordList(chronicDiseaseRecordDto);
ExcelUtil<ChronicDiseaseRecordVo> util = new ExcelUtil<ChronicDiseaseRecordVo>(ChronicDiseaseRecordVo.class);
util.exportExcel(response, list, "慢性疾病档案数据");
}
/**
* 获取慢性疾病档案详细信息
*/
@ApiOperation(value = "获取慢性疾病档案详细信息")
@RequiresPermissions("health:chronicDisease:query")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return success(chronicDiseaseRecordService.selectChronicDiseaseRecordById(id));
}
/**
* 新增慢性疾病档案
*/
@ApiOperation(value = "新增慢性疾病档案")
@RequiresPermissions("health:chronicDisease:add")
@Log(title = "慢性疾病档案", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody ChronicDiseaseRecord chronicDiseaseRecord)
{
return toAjax(chronicDiseaseRecordService.insertChronicDiseaseRecord(chronicDiseaseRecord));
}
/**
* 修改慢性疾病档案
*/
@ApiOperation(value = "修改慢性疾病档案")
@RequiresPermissions("health:chronicDisease:edit")
@Log(title = "慢性疾病档案", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody ChronicDiseaseRecord chronicDiseaseRecord)
{
return toAjax(chronicDiseaseRecordService.updateChronicDiseaseRecord(chronicDiseaseRecord));
}
/**
* 删除慢性疾病档案
*/
@ApiOperation(value = "删除慢性疾病档案")
@RequiresPermissions("health:chronicDisease:remove")
@Log(title = "慢性疾病档案", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(chronicDiseaseRecordService.deleteChronicDiseaseRecordByIds(ids));
}
}

View File

@@ -0,0 +1,119 @@
package com.intc.health.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.intc.common.core.annotation.Excel;
import com.intc.common.core.web.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
* 慢性疾病档案对象 chronic_disease_record
*
* @author bot5
* @date 2026-03-17
*/
@ApiModel("慢性疾病档案对象")
@Data
public class ChronicDiseaseRecord extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键 */
private Long id;
/** 关联成员ID */
@ApiModelProperty(value = "关联成员ID")
@NotNull(message = "成员不能为空")
@Excel(name = "成员ID")
private Long memberId;
/** 成员名称(冗余字段) */
@Excel(name = "成员名称")
private String memberName;
/** 关联疾病ID关联health_diseases表可选 */
@ApiModelProperty(value = "关联疾病ID")
@Excel(name = "疾病ID")
private Long diseaseId;
/** 疾病名称 */
@ApiModelProperty(value = "疾病名称")
@NotNull(message = "疾病名称不能为空")
@Excel(name = "疾病名称")
private String diseaseName;
/** 疾病编码ICD-10标准 */
@ApiModelProperty(value = "疾病编码ICD-10标准")
@Excel(name = "疾病编码")
private String diseaseCode;
/** 确诊日期 */
@ApiModelProperty(value = "确诊日期")
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "确诊日期", width = 30, dateFormat = "yyyy-MM-dd")
private Date diagnosisDate;
/** 状态1-稳定 2-需关注 3-急性期 */
@ApiModelProperty(value = "状态1-稳定 2-需关注 3-急性期")
@NotNull(message = "状态不能为空")
@Excel(name = "状态", readConverterExp = "1=稳定,2=需关注,3=急性期")
private Integer diseaseStatus;
/** 主治医生 */
@ApiModelProperty(value = "主治医生")
@Excel(name = "主治医生")
private String mainDoctor;
/** 就诊医院 */
@ApiModelProperty(value = "就诊医院")
@Excel(name = "就诊医院")
private String hospital;
/** 科室 */
@ApiModelProperty(value = "科室")
@Excel(name = "科室")
private String department;
/** 备注说明 */
@ApiModelProperty(value = "备注说明")
private String notes;
/** 是否启用1-是 0-否 */
@ApiModelProperty(value = "是否启用1-是 0-否")
@Excel(name = "是否启用", readConverterExp = "1=是,0=否")
private Integer isActive;
/** 删除标志0代表存在 1代表删除 */
private String delFlag;
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("memberId", getMemberId())
.append("memberName", getMemberName())
.append("diseaseId", getDiseaseId())
.append("diseaseName", getDiseaseName())
.append("diseaseCode", getDiseaseCode())
.append("diagnosisDate", getDiagnosisDate())
.append("diseaseStatus", getDiseaseStatus())
.append("mainDoctor", getMainDoctor())
.append("hospital", getHospital())
.append("department", getDepartment())
.append("notes", getNotes())
.append("isActive", getIsActive())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.append("delFlag", getDelFlag())
.append("remark", getRemark())
.toString();
}
}

View File

@@ -0,0 +1,55 @@
package com.intc.health.domain.dto;
import lombok.Data;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
/**
* 慢性疾病档案Dto对象 chronic_disease_record
*
* @author bot5
* @date 2026-03-17
*/
@ApiModel("慢性疾病档案Dto对象")
@Data
public class ChronicDiseaseRecordDto implements Serializable
{
private static final long serialVersionUID = 1L;
/** 关联成员ID */
@ApiModelProperty(value = "关联成员ID")
private Long memberId;
/** 关联疾病ID */
@ApiModelProperty(value = "关联疾病ID")
private Long diseaseId;
/** 疾病名称 */
@ApiModelProperty(value = "疾病名称")
private String diseaseName;
/** 疾病编码 */
@ApiModelProperty(value = "疾病编码")
private String diseaseCode;
/** 状态1-稳定 2-需关注 3-急性期 */
@ApiModelProperty(value = "状态")
private Integer diseaseStatus;
/** 是否启用 */
@ApiModelProperty(value = "是否启用")
private Integer isActive;
/** 确诊日期-开始 */
@ApiModelProperty(value = "确诊日期-开始")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date diagnosisDateStart;
/** 确诊日期-结束 */
@ApiModelProperty(value = "确诊日期-结束")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date diagnosisDateEnd;
}

View File

@@ -0,0 +1,24 @@
package com.intc.health.domain.vo;
import com.intc.health.domain.ChronicDiseaseRecord;
import lombok.Data;
import io.swagger.annotations.ApiModel;
/**
* 慢性疾病档案Vo对象 chronic_disease_record
*
* @author bot5
* @date 2026-03-17
*/
@ApiModel("慢性疾病档案Vo对象")
@Data
public class ChronicDiseaseRecordVo extends ChronicDiseaseRecord
{
private static final long serialVersionUID = 1L;
/** 疾病类型来自health_diseases表 */
private String diseaseType;
/** 疾病症状来自health_diseases表 */
private String diseaseSymptom;
}

View File

@@ -0,0 +1,87 @@
package com.intc.health.mapper;
import java.util.List;
import com.intc.health.domain.vo.ChronicDiseaseRecordVo;
import com.intc.health.domain.dto.ChronicDiseaseRecordDto;
import org.apache.ibatis.annotations.Param;
/**
* 慢性疾病档案Mapper接口
*
* @author bot5
* @date 2026-03-17
*/
public interface ChronicDiseaseRecordMapper
{
/**
* 查询慢性疾病档案
*
* @param id 慢性疾病档案主键
* @return 慢性疾病档案
*/
public ChronicDiseaseRecordVo selectChronicDiseaseRecordById(Long id);
/**
* 查询慢性疾病档案列表
*
* @param chronicDiseaseRecordDto 慢性疾病档案
* @return 慢性疾病档案集合
*/
public List<ChronicDiseaseRecordVo> selectChronicDiseaseRecordList(ChronicDiseaseRecordDto chronicDiseaseRecordDto);
/**
* 根据成员ID查询慢性疾病档案列表
*
* @param memberId 成员ID
* @return 慢性疾病档案集合
*/
public List<ChronicDiseaseRecordVo> selectChronicDiseaseRecordByMemberId(Long memberId);
/**
* 新增慢性疾病档案
*
* @param chronicDiseaseRecord 慢性疾病档案
* @return 结果
*/
public int insertChronicDiseaseRecord(com.intc.health.domain.ChronicDiseaseRecord chronicDiseaseRecord);
/**
* 修改慢性疾病档案
*
* @param chronicDiseaseRecord 慢性疾病档案
* @return 结果
*/
public int updateChronicDiseaseRecord(com.intc.health.domain.ChronicDiseaseRecord chronicDiseaseRecord);
/**
* 删除慢性疾病档案
*
* @param id 慢性疾病档案主键
* @return 结果
*/
public int deleteChronicDiseaseRecordById(Long id);
/**
* 批量删除慢性疾病档案
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteChronicDiseaseRecordByIds(Long[] ids);
/**
* 逻辑删除慢性疾病档案
*
* @param id 慢性疾病档案主键
* @return 结果
*/
public int removeChronicDiseaseRecordById(Long id);
/**
* 批量逻辑删除慢性疾病档案
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int removeChronicDiseaseRecordByIds(Long[] ids);
}

View File

@@ -0,0 +1,71 @@
package com.intc.health.service;
import java.util.List;
import com.intc.health.domain.ChronicDiseaseRecord;
import com.intc.health.domain.dto.ChronicDiseaseRecordDto;
import com.intc.health.domain.vo.ChronicDiseaseRecordVo;
/**
* 慢性疾病档案Service接口
*
* @author bot5
* @date 2026-03-17
*/
public interface IChronicDiseaseRecordService
{
/**
* 查询慢性疾病档案
*
* @param id 慢性疾病档案主键
* @return 慢性疾病档案
*/
public ChronicDiseaseRecordVo selectChronicDiseaseRecordById(Long id);
/**
* 查询慢性疾病档案列表
*
* @param chronicDiseaseRecordDto 慢性疾病档案
* @return 慢性疾病档案集合
*/
public List<ChronicDiseaseRecordVo> selectChronicDiseaseRecordList(ChronicDiseaseRecordDto chronicDiseaseRecordDto);
/**
* 根据成员ID查询慢性疾病档案列表
*
* @param memberId 成员ID
* @return 慢性疾病档案集合
*/
public List<ChronicDiseaseRecordVo> selectChronicDiseaseRecordByMemberId(Long memberId);
/**
* 新增慢性疾病档案
*
* @param chronicDiseaseRecord 慢性疾病档案
* @return 结果
*/
public int insertChronicDiseaseRecord(ChronicDiseaseRecord chronicDiseaseRecord);
/**
* 修改慢性疾病档案
*
* @param chronicDiseaseRecord 慢性疾病档案
* @return 结果
*/
public int updateChronicDiseaseRecord(ChronicDiseaseRecord chronicDiseaseRecord);
/**
* 批量删除慢性疾病档案
*
* @param ids 需要删除的慢性疾病档案主键集合
* @return 结果
*/
public int deleteChronicDiseaseRecordByIds(Long[] ids);
/**
* 删除慢性疾病档案信息
*
* @param id 慢性疾病档案主键
* @return 结果
*/
public int deleteChronicDiseaseRecordById(Long id);
}

View File

@@ -0,0 +1,124 @@
package com.intc.health.service.impl;
import com.intc.common.core.utils.DateUtils;
import com.intc.common.core.utils.IdWorker;
import com.intc.common.security.utils.SecurityUtils;
import com.intc.health.domain.ChronicDiseaseRecord;
import com.intc.health.domain.dto.ChronicDiseaseRecordDto;
import com.intc.health.domain.vo.ChronicDiseaseRecordVo;
import com.intc.health.mapper.ChronicDiseaseRecordMapper;
import com.intc.health.service.IChronicDiseaseRecordService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* 慢性疾病档案Service业务层处理
*
* @author bot5
* @date 2026-03-17
*/
@Service
public class ChronicDiseaseRecordServiceImpl implements IChronicDiseaseRecordService
{
@Resource
private ChronicDiseaseRecordMapper chronicDiseaseRecordMapper;
/**
* 查询慢性疾病档案
*
* @param id 慢性疾病档案主键
* @return 慢性疾病档案
*/
@Override
public ChronicDiseaseRecordVo selectChronicDiseaseRecordById(Long id)
{
return chronicDiseaseRecordMapper.selectChronicDiseaseRecordById(id);
}
/**
* 查询慢性疾病档案列表
*
* @param chronicDiseaseRecordDto 慢性疾病档案
* @return 慢性疾病档案
*/
@Override
public List<ChronicDiseaseRecordVo> selectChronicDiseaseRecordList(ChronicDiseaseRecordDto chronicDiseaseRecordDto)
{
return chronicDiseaseRecordMapper.selectChronicDiseaseRecordList(chronicDiseaseRecordDto);
}
/**
* 根据成员ID查询慢性疾病档案列表
*
* @param memberId 成员ID
* @return 慢性疾病档案集合
*/
@Override
public List<ChronicDiseaseRecordVo> selectChronicDiseaseRecordByMemberId(Long memberId)
{
return chronicDiseaseRecordMapper.selectChronicDiseaseRecordByMemberId(memberId);
}
/**
* 新增慢性疾病档案
*
* @param chronicDiseaseRecord 慢性疾病档案
* @return 结果
*/
@Override
public int insertChronicDiseaseRecord(ChronicDiseaseRecord chronicDiseaseRecord)
{
chronicDiseaseRecord.setCreateBy(SecurityUtils.getUsername());
chronicDiseaseRecord.setCreateTime(DateUtils.getNowDate());
chronicDiseaseRecord.setId(IdWorker.getId());
// 默认启用
if (chronicDiseaseRecord.getIsActive() == null) {
chronicDiseaseRecord.setIsActive(1);
}
// 默认状态为稳定
if (chronicDiseaseRecord.getDiseaseStatus() == null) {
chronicDiseaseRecord.setDiseaseStatus(1);
}
return chronicDiseaseRecordMapper.insertChronicDiseaseRecord(chronicDiseaseRecord);
}
/**
* 修改慢性疾病档案
*
* @param chronicDiseaseRecord 慢性疾病档案
* @return 结果
*/
@Override
public int updateChronicDiseaseRecord(ChronicDiseaseRecord chronicDiseaseRecord)
{
chronicDiseaseRecord.setUpdateBy(SecurityUtils.getUsername());
chronicDiseaseRecord.setUpdateTime(DateUtils.getNowDate());
return chronicDiseaseRecordMapper.updateChronicDiseaseRecord(chronicDiseaseRecord);
}
/**
* 批量删除慢性疾病档案
*
* @param ids 需要删除的慢性疾病档案主键
* @return 结果
*/
@Override
public int deleteChronicDiseaseRecordByIds(Long[] ids)
{
return chronicDiseaseRecordMapper.removeChronicDiseaseRecordByIds(ids);
}
/**
* 删除慢性疾病档案信息
*
* @param id 慢性疾病档案主键
* @return 结果
*/
@Override
public int deleteChronicDiseaseRecordById(Long id)
{
return chronicDiseaseRecordMapper.removeChronicDiseaseRecordById(id);
}
}

View File

@@ -0,0 +1,172 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.intc.health.mapper.ChronicDiseaseRecordMapper">
<resultMap type="ChronicDiseaseRecordVo" id="ChronicDiseaseRecordResult">
<result property="id" column="id"/>
<result property="memberId" column="member_id"/>
<result property="memberName" column="member_name"/>
<result property="diseaseId" column="disease_id"/>
<result property="diseaseName" column="disease_name"/>
<result property="diseaseCode" column="disease_code"/>
<result property="diagnosisDate" column="diagnosis_date"/>
<result property="diseaseStatus" column="disease_status"/>
<result property="mainDoctor" column="main_doctor"/>
<result property="hospital" column="hospital"/>
<result property="department" column="department"/>
<result property="notes" column="notes"/>
<result property="isActive" column="is_active"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
<result property="delFlag" column="del_flag"/>
<result property="remark" column="remark"/>
<result property="diseaseType" column="disease_type"/>
<result property="diseaseSymptom" column="disease_symptom"/>
</resultMap>
<sql id="selectChronicDiseaseRecordVo">
select a.id, a.member_id, a.disease_id, a.disease_name, a.disease_code, a.diagnosis_date,
a.disease_status, a.main_doctor, a.hospital, a.department, a.notes, a.is_active,
a.create_by, a.create_time, a.update_by, a.update_time, a.del_flag, a.remark,
p.name as member_name,
d.type as disease_type,
d.symptom as disease_symptom
from chronic_disease_record a
left join health_person p on a.member_id = p.id
left join health_diseases d on a.disease_id = d.id
</sql>
<select id="selectChronicDiseaseRecordList" parameterType="ChronicDiseaseRecordDto" resultMap="ChronicDiseaseRecordResult">
<include refid="selectChronicDiseaseRecordVo"/>
<where>
a.del_flag = '0'
<if test="memberId != null">
and a.member_id = #{memberId}
</if>
<if test="diseaseId != null">
and a.disease_id = #{diseaseId}
</if>
<if test="diseaseName != null and diseaseName != ''">
and a.disease_name like '%' || #{diseaseName} || '%'
</if>
<if test="diseaseCode != null and diseaseCode != ''">
and a.disease_code = #{diseaseCode}
</if>
<if test="diseaseStatus != null">
and a.disease_status = #{diseaseStatus}
</if>
<if test="isActive != null">
and a.is_active = #{isActive}
</if>
<if test="diagnosisDateStart != null">
and a.diagnosis_date &gt;= #{diagnosisDateStart}
</if>
<if test="diagnosisDateEnd != null">
and a.diagnosis_date &lt;= #{diagnosisDateEnd}
</if>
</where>
order by a.create_time desc
</select>
<select id="selectChronicDiseaseRecordById" parameterType="Long" resultMap="ChronicDiseaseRecordResult">
<include refid="selectChronicDiseaseRecordVo"/>
where a.id = #{id}
</select>
<select id="selectChronicDiseaseRecordByMemberId" parameterType="Long" resultMap="ChronicDiseaseRecordResult">
<include refid="selectChronicDiseaseRecordVo"/>
where a.del_flag = '0' and a.is_active = 1 and a.member_id = #{memberId}
order by a.disease_status desc, a.create_time desc
</select>
<insert id="insertChronicDiseaseRecord" parameterType="ChronicDiseaseRecord">
insert into chronic_disease_record
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">id,</if>
<if test="memberId != null">member_id,</if>
<if test="diseaseId != null">disease_id,</if>
<if test="diseaseName != null and diseaseName != ''">disease_name,</if>
<if test="diseaseCode != null">disease_code,</if>
<if test="diagnosisDate != null">diagnosis_date,</if>
<if test="diseaseStatus != null">disease_status,</if>
<if test="mainDoctor != null">main_doctor,</if>
<if test="hospital != null">hospital,</if>
<if test="department != null">department,</if>
<if test="notes != null">notes,</if>
<if test="isActive != null">is_active,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="delFlag != null">del_flag,</if>
<if test="remark != null">remark,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">#{id},</if>
<if test="memberId != null">#{memberId},</if>
<if test="diseaseId != null">#{diseaseId},</if>
<if test="diseaseName != null and diseaseName != ''">#{diseaseName},</if>
<if test="diseaseCode != null">#{diseaseCode},</if>
<if test="diagnosisDate != null">#{diagnosisDate},</if>
<if test="diseaseStatus != null">#{diseaseStatus},</if>
<if test="mainDoctor != null">#{mainDoctor},</if>
<if test="hospital != null">#{hospital},</if>
<if test="department != null">#{department},</if>
<if test="notes != null">#{notes},</if>
<if test="isActive != null">#{isActive},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="delFlag != null">#{delFlag},</if>
<if test="remark != null">#{remark},</if>
</trim>
</insert>
<update id="updateChronicDiseaseRecord" parameterType="ChronicDiseaseRecord">
update chronic_disease_record
<trim prefix="SET" suffixOverrides=",">
<if test="memberId != null">member_id = #{memberId},</if>
<if test="diseaseId != null">disease_id = #{diseaseId},</if>
<if test="diseaseName != null and diseaseName != ''">disease_name = #{diseaseName},</if>
<if test="diseaseCode != null">disease_code = #{diseaseCode},</if>
<if test="diagnosisDate != null">diagnosis_date = #{diagnosisDate},</if>
<if test="diseaseStatus != null">disease_status = #{diseaseStatus},</if>
<if test="mainDoctor != null">main_doctor = #{mainDoctor},</if>
<if test="hospital != null">hospital = #{hospital},</if>
<if test="department != null">department = #{department},</if>
<if test="notes != null">notes = #{notes},</if>
<if test="isActive != null">is_active = #{isActive},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="remark != null">remark = #{remark},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteChronicDiseaseRecordById" parameterType="Long">
delete from chronic_disease_record where id = #{id}
</delete>
<delete id="deleteChronicDiseaseRecordByIds" parameterType="String">
delete from chronic_disease_record where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<update id="removeChronicDiseaseRecordById" parameterType="Long">
update chronic_disease_record set del_flag = '1' where id = #{id}
</update>
<update id="removeChronicDiseaseRecordByIds" parameterType="String">
update chronic_disease_record set del_flag = '1' where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</update>
</mapper>

View File

@@ -0,0 +1,105 @@
-- ========================================
-- 慢性疾病档案表
-- ========================================
DROP TABLE IF EXISTS chronic_disease_record;
CREATE TABLE chronic_disease_record (
id BIGSERIAL PRIMARY KEY,
member_id BIGINT NOT NULL,
disease_id BIGINT,
disease_name VARCHAR(100) NOT NULL,
disease_code VARCHAR(20),
diagnosis_date DATE,
disease_status SMALLINT NOT NULL DEFAULT 1,
main_doctor VARCHAR(50),
hospital VARCHAR(100),
department VARCHAR(50),
notes TEXT,
is_active SMALLINT DEFAULT 1,
-- 若依标准字段
create_by VARCHAR(64) DEFAULT '',
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
update_by VARCHAR(64) DEFAULT '',
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
remark VARCHAR(500) DEFAULT '',
del_flag SMALLINT DEFAULT 0
);
COMMENT ON TABLE chronic_disease_record IS '慢性疾病档案表';
COMMENT ON COLUMN chronic_disease_record.id IS '主键ID';
COMMENT ON COLUMN chronic_disease_record.member_id IS '关联成员ID';
COMMENT ON COLUMN chronic_disease_record.disease_id IS '关联疾病ID关联health_diseases表';
COMMENT ON COLUMN chronic_disease_record.disease_name IS '疾病名称(高血压/糖尿病/冠心病等)';
COMMENT ON COLUMN chronic_disease_record.disease_code IS '疾病编码ICD-10标准';
COMMENT ON COLUMN chronic_disease_record.diagnosis_date IS '确诊日期';
COMMENT ON COLUMN chronic_disease_record.disease_status IS '状态1-稳定 2-需关注 3-急性期';
COMMENT ON COLUMN chronic_disease_record.main_doctor IS '主治医生';
COMMENT ON COLUMN chronic_disease_record.hospital IS '就诊医院';
COMMENT ON COLUMN chronic_disease_record.department IS '科室';
COMMENT ON COLUMN chronic_disease_record.notes IS '备注说明';
COMMENT ON COLUMN chronic_disease_record.is_active IS '是否启用1-是 0-否';
COMMENT ON COLUMN chronic_disease_record.create_by IS '创建者';
COMMENT ON COLUMN chronic_disease_record.create_time IS '创建时间';
COMMENT ON COLUMN chronic_disease_record.update_by IS '更新者';
COMMENT ON COLUMN chronic_disease_record.update_time IS '更新时间';
COMMENT ON COLUMN chronic_disease_record.remark IS '备注';
COMMENT ON COLUMN chronic_disease_record.del_flag IS '删除标记0-正常 1-删除';
CREATE INDEX idx_cdr_member_id ON chronic_disease_record(member_id);
CREATE INDEX idx_cdr_disease_id ON chronic_disease_record(disease_id);
CREATE INDEX idx_cdr_disease_status ON chronic_disease_record(disease_status);
CREATE INDEX idx_cdr_is_active ON chronic_disease_record(is_active);
-- ========================================
-- 菜单 SQL若依框架标准格式
-- ========================================
-- 慢性疾病档案菜单
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES ('慢性疾病档案', 0, 5, 'chronicDisease', 'health/chronicDisease/index', 1, 0, 'C', '0', '0', 'health:chronicDisease:list', '#', 'admin', NOW(), '慢性疾病档案菜单');
-- 获取刚插入的菜单ID
SELECT @parentId := LAST_INSERT_ID();
-- 按钮权限
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES ('慢性疾病档案查询', @parentId, 1, '#', '', 1, 0, 'F', '0', '0', 'health:chronicDisease:query', '#', 'admin', NOW(), '');
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES ('慢性疾病档案权增', @parentId, 2, '#', '', 1, 0, 'F', '0', '0', 'health:chronicDisease:add', '#', 'admin', NOW(), '');
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES ('慢性疾病档案修改', @parentId, 3, '#', '', 1, 0, 'F', '0', '0', 'health:chronicDisease:edit', '#', 'admin', NOW(), '');
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES ('慢性疾病档案删除', @parentId, 4, '#', '', 1, 0, 'F', '0', '0', 'health:chronicDisease:remove', '#', 'admin', NOW(), '');
INSERT INTO sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
VALUES ('慢性疾病档案导出', @parentId, 5, '#', '', 1, 0, 'F', '0', '0', 'health:chronicDisease:export', '#', 'admin', NOW(), '');
-- ========================================
-- 字典数据
-- ========================================
-- 疾病状态字典
INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
VALUES ('疾病状态', 'disease_status', '0', 'admin', NOW(), '慢性疾病状态');
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
VALUES (1, '稳定', '1', 'disease_status', '', 'success', 'Y', '0', 'admin', NOW(), '疾病状态-稳定');
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
VALUES (2, '需关注', '2', 'disease_status', '', 'warning', 'N', '0', 'admin', NOW(), '疾病状态-需关注');
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
VALUES (3, '急性期', '3', 'disease_status', '', 'danger', 'N', '0', 'admin', NOW(), '疾病状态-急性期');
-- 是否启用字典(如果不存在)
INSERT INTO sys_dict_type (dict_name, dict_type, status, create_by, create_time, remark)
VALUES ('是否启用', 'is_active', '0', 'admin', NOW(), '是否启用状态')
ON CONFLICT (dict_type) DO NOTHING;
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
VALUES (1, '', '1', 'is_active', '', 'success', 'Y', '0', 'admin', NOW(), '启用')
ON CONFLICT DO NOTHING;
INSERT INTO sys_dict_data (dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
VALUES (2, '', '0', 'is_active', '', 'danger', 'N', '0', 'admin', NOW(), '停用')
ON CONFLICT DO NOTHING;