From b8430e3feca2cca5322f0ef23255950c6abe0608 Mon Sep 17 00:00:00 2001 From: liupanting Date: Tue, 25 Feb 2025 16:17:21 +0800 Subject: [PATCH] =?UTF-8?q?=E7=96=BE=E7=97=85=E7=9B=AE=E5=BD=95=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DiseaseManageController.java | 124 +++++++++---- .../datadictionary/dto/DiseaseManageDto.java | 4 - .../dto/DiseaseManageSelParam.java | 22 +++ .../dto/DiseaseManageUpDto.java | 56 ++++++ .../datadictionary/dto/DiseaseSourceDto.java | 5 + .../dto/MedicationManageDto.java | 167 ++++++++++++++++++ .../service/IConditionDefinitionService.java | 14 -- .../impl/ConditionDefinitionServiceImpl.java | 39 ---- 8 files changed, 340 insertions(+), 91 deletions(-) create mode 100644 openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiseaseManageSelParam.java create mode 100644 openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiseaseManageUpDto.java create mode 100644 openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageDto.java diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/DiseaseManageController.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/DiseaseManageController.java index 1a4272fe..bf4ad9d7 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/DiseaseManageController.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/DiseaseManageController.java @@ -2,23 +2,31 @@ package com.openhis.web.datadictionary.controller; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashSet; import java.util.List; -import java.util.stream.Collectors; +import java.util.concurrent.CopyOnWriteArrayList; import javax.servlet.http.HttpServletRequest; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.core.common.core.domain.R; import com.core.common.utils.MessageUtils; import com.core.common.utils.bean.BeanUtils; import com.openhis.clinical.domain.ConditionDefinition; +import com.openhis.clinical.mapper.ConditionDefinitionMapper; import com.openhis.clinical.service.IConditionDefinitionService; import com.openhis.common.constant.PromptMsgConstant; import com.openhis.common.enums.ConditionDefinitionSource; +import com.openhis.common.enums.PublicationStatus; +import com.openhis.common.utils.HisPageUtils; +import com.openhis.common.utils.HisQueryUtils; import com.openhis.web.datadictionary.dto.DiseaseManageDto; +import com.openhis.web.datadictionary.dto.DiseaseManageSelParam; +import com.openhis.web.datadictionary.dto.DiseaseManageUpDto; import com.openhis.web.datadictionary.dto.DiseaseSourceDto; import lombok.AllArgsConstructor; @@ -36,6 +44,7 @@ import lombok.extern.slf4j.Slf4j; @AllArgsConstructor public class DiseaseManageController { private final IConditionDefinitionService iConditionDefinitionService; + private final ConditionDefinitionMapper conditionDefinitionMapper; /** * 病种目录分类查询 @@ -60,36 +69,29 @@ public class DiseaseManageController { /** * 查询病种目录分页列表 - * - * @param searchKey 查询条件 - * @param status 查询条件-状态 - * @param status 查询条件-疾病种类 + * + * @param diseaseManageSelParam 查询条件 + * @param searchKey 查询条件-模糊查询 * @param pageNo 当前页码 * @param pageSize 查询条数 * @return */ @GetMapping("/information-page") - public R getDiseaseList(@RequestParam(value = "searchKey", defaultValue = "") String searchKey, - @RequestParam(value = "status", defaultValue = "-1") Integer status, - @RequestParam(value = "sourceEnum", defaultValue = "-1") Integer sourceEnum, + public R getDiseaseList(@RequestBody DiseaseManageSelParam diseaseManageSelParam, + @RequestParam(value = "searchKey", defaultValue = "") String searchKey, @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) { - // 查询【病种目录】分页列表 - Page diseasePage = - iConditionDefinitionService.getPage(searchKey, status, sourceEnum, pageNo, pageSize); - - // 获取入病种目录列表 - Page diseaseManageDtoPage = new Page<>(); - diseaseManageDtoPage.setRecords(diseasePage.getRecords().stream().map(entity -> { - // 定义【入病种目录列表DTO】 - DiseaseManageDto dto = new DiseaseManageDto(); - BeanUtils.copyProperties(entity, dto); - return dto; - }).collect(Collectors.toList())); - + // 构建查询条件 + QueryWrapper queryWrapper = HisQueryUtils.buildQueryWrapper(diseaseManageSelParam, + searchKey, new HashSet<>(Arrays.asList("condition_code", "name", "py_str", "wb_str")), request); + // 设置排序 + queryWrapper.orderByAsc("condition_code"); + // 分页查询 + Page diseasePage = + HisPageUtils.selectPage(conditionDefinitionMapper, queryWrapper, pageNo, pageSize, DiseaseManageDto.class); // 返回【病种目录列表DTO】分页 - return R.ok(diseaseManageDtoPage); + return R.ok(diseasePage); } /** @@ -109,49 +111,103 @@ public class DiseaseManageController { /** * 病种目录编辑 * - * @param diseaseManageDtos 病种目录列表 + * @param diseaseManageDto 病种目录列表 * @return */ @PutMapping("/information") - public R editDisease(@RequestBody List diseaseManageDtos) { - List conditionDefinitionList = new ArrayList<>(); + public R editDisease(@RequestBody DiseaseManageUpDto diseaseManageDto) { + + ConditionDefinition conditionDefinition = new ConditionDefinition(); + BeanUtils.copyProperties(diseaseManageDto, conditionDefinition); + + // 更新病种信息 + return iConditionDefinitionService.updateById(conditionDefinition) + ? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"疾病目录"})) + : R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null)); + } + + /** + * 病种目录停用 + * + * @param ids 病种目录ID列表 + * @return + */ + @PutMapping("/information-stop") + public R editDiseaseStop(@RequestBody List ids) { + List conditionDefinitionList = new CopyOnWriteArrayList<>(); + // 取得更新值 - for (DiseaseManageDto detail : diseaseManageDtos) { + for (Long detail : ids) { ConditionDefinition conditionDefinition = new ConditionDefinition(); - BeanUtils.copyProperties(detail, conditionDefinition); + conditionDefinition.setId(detail); + conditionDefinition.setStatusEnum(PublicationStatus.RETIRED); conditionDefinitionList.add(conditionDefinition); } // 更新病种信息 return iConditionDefinitionService.updateBatchById(conditionDefinitionList) - ? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, null)) + ? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"疾病目录"})) + : R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null)); + } + + /** + * 病种目录启用 + * + * @param ids 病种目录ID列表 + * @return + */ + @PutMapping("/information-start") + public R editDiseaseStart(@RequestBody List ids) { + List conditionDefinitionList = new CopyOnWriteArrayList<>(); + + // 取得更新值 + for (Long detail : ids) { + ConditionDefinition conditionDefinition = new ConditionDefinition(); + conditionDefinition.setId(detail); + conditionDefinition.setStatusEnum(PublicationStatus.ACTIVE); + conditionDefinitionList.add(conditionDefinition); + } + // 更新病种信息 + return iConditionDefinitionService.updateBatchById(conditionDefinitionList) + ? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"疾病目录"})) : R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null)); } /** * 新增外来病种目录 * - * @param diseaseManageDto 病种目录实体 + * @param diseaseManageUpDto 病种目录 * @return */ @PostMapping("/information") - public R addDisease(@Validated @RequestBody DiseaseManageDto diseaseManageDto) { + public R addDisease(@Validated @RequestBody DiseaseManageUpDto diseaseManageUpDto) { ConditionDefinition conditionDefinition = new ConditionDefinition(); - BeanUtils.copyProperties(diseaseManageDto, conditionDefinition); + BeanUtils.copyProperties(diseaseManageUpDto, conditionDefinition); // 新增外来病种目录 + conditionDefinition.setStatusEnum(PublicationStatus.DRAFT); return iConditionDefinitionService.addDisease(conditionDefinition) ? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"疾病目录"})) : R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00008, null)); - } /** * 新增医保病种目录 * - * @param conditionDefinition 病种目录实体 + * @param diseaseManageUpDto 病种目录 * @return */ @PostMapping("/information-yb") - public R addYbDisease(@RequestBody ConditionDefinition conditionDefinition) { + public R addYbDisease(@RequestBody DiseaseManageUpDto diseaseManageUpDto) { + return null; + } + + /** + * 病种目录导出 + * + * @param diseaseManageDto 病种目录 + * @return + */ + @GetMapping("/information-export") + public R exportDisease(@RequestBody DiseaseManageDto diseaseManageDto) { return null; } } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiseaseManageDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiseaseManageDto.java index 63b3c15b..d710d634 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiseaseManageDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiseaseManageDto.java @@ -1,7 +1,5 @@ package com.openhis.web.datadictionary.dto; -import javax.validation.constraints.NotBlank; - import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.openhis.common.enums.ConditionDefinitionSource; @@ -27,11 +25,9 @@ public class DiseaseManageDto { private ConditionDefinitionSource sourceEnum; /** 编码 */ - @NotBlank(message = "疾病编码不能为空") private String conditionCode; /** 诊断名称 */ - @NotBlank(message = "疾病名称不能为空") private String name; /** 诊断名称拼音 */ diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiseaseManageSelParam.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiseaseManageSelParam.java new file mode 100644 index 00000000..700ed780 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiseaseManageSelParam.java @@ -0,0 +1,22 @@ +package com.openhis.web.datadictionary.dto; + +import com.openhis.common.enums.ConditionDefinitionSource; +import com.openhis.common.enums.PublicationStatus; + +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 疾病目录分页检索条件 + * + * @author lpt + * @date 2025-02-25 + */ +@Data +@Accessors(chain = true) +public class DiseaseManageSelParam { + /** 所属分类 */ + private ConditionDefinitionSource sourceEnum; + /** 状态 */ + private PublicationStatus statusEnum; +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiseaseManageUpDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiseaseManageUpDto.java new file mode 100644 index 00000000..9344291d --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiseaseManageUpDto.java @@ -0,0 +1,56 @@ +package com.openhis.web.datadictionary.dto; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import com.openhis.common.enums.ConditionDefinitionSource; +import com.openhis.common.enums.PublicationStatus; +import lombok.Data; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; + +/** + * 疾病目录更新Dto + * + * @author lpt + * @date 2025-02-25 + */ +@Data +@Accessors(chain = true) +public class DiseaseManageUpDto { + /** ID */ + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** 所属分类 */ + private ConditionDefinitionSource sourceEnum; + + /** 编码 */ + @NotBlank(message = "疾病编码不能为空") + private String conditionCode; + + /** 诊断名称 */ + @NotBlank(message = "疾病名称不能为空") + private String name; + + /** 诊断名称拼音 */ + private String pyStr; + + /** 诊断名称五笔拼音 */ + private String wbStr; + + /** 类型 */ + private String typeCode; + + /** 描述 */ + private String description; + + /** 医保标记 */ + private Integer ybFlag; + + /** 医保编码 */ + private String ybNo; + + /** 医保对码标记 */ + private Integer ybMatchFlag; +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiseaseSourceDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiseaseSourceDto.java index 2d7bf785..a14f861a 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiseaseSourceDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/DiseaseSourceDto.java @@ -1,8 +1,12 @@ package com.openhis.web.datadictionary.dto; +import com.core.common.core.domain.entity.SysDept; import lombok.Data; import lombok.experimental.Accessors; +import java.util.ArrayList; +import java.util.List; + /** * 疾病目录种别dto * @@ -15,4 +19,5 @@ public class DiseaseSourceDto { private Integer value; private String code; private String info; + List children = new ArrayList<>(); } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageDto.java new file mode 100644 index 00000000..9038ec22 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageDto.java @@ -0,0 +1,167 @@ +package com.openhis.web.datadictionary.dto; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; +import lombok.experimental.Accessors; + +import javax.validation.constraints.NotBlank; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 药品目录Dto + * + * @author lpt + * @date 2025-02-25 + */ +@Data +@Accessors(chain = true) +public class MedicationManageDto { + + /** ID */ + @TableId(type = IdType.ASSIGN_ID) + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + /** 药品编码 */ + @JsonSerialize(using = ToStringSerializer.class) + private Long medicationDefId; + + /** 药品状态 */ + private Integer statusEnum; + + /** 所属科室 */ + private Long orgId; + + /** 剂型 */ + private String doseFormCode; + + /** 规格 */ + private String totalVolume; + + /** 成分 */ + private String ingredientItem; + + /** 是否为活性 */ + private Integer activeFlag; + + /** 批次号 */ + private String lotNumber; + + /** 生效日期 */ + private Date effectiveDate; + + /** 到期日期 */ + private Date expirationDate; + + /** 用法 */ + private String methodCode; + + /** 用药频次 */ + private String rateCode; + + /** 单次剂量 */ + private BigDecimal dose; + + /** 剂量单位 */ + private String doseUnitCode; + + /** 单次最大剂量 */ + private BigDecimal maxUnit; + + /** 药品定义 */ + private String definition; + + /** 药品编号 */ + @NotBlank(message = "药品编号不能为空") + private String busNo; + + /** 药品名称 */ + @NotBlank(message = "药品名称不能为空") + private String name; + + /** 适用范围 */ + private Integer domainEnum; + + /** 药品版本 */ + private String version; + + /** 英文药名 */ + private String nameEn; + + /** 药品名称拼音码 */ + private String pyStr; + + /** 药品五笔码 */ + private String wbStr; + + /** 药品分类 */ + private Integer categoryCode; + + /** 商品名称 */ + private String merchandiseName; + + /** 商品名称拼音码 */ + private String merchandisePyStr; + + /** 商品五笔码 */ + private String merchandiseWbStr; + + /** 药品单位 */ + private String unitCode; + + /** 最小单位 */ + private String minUnitCode; + + /** 所含耗材 */ + private String comprisedText; + + /** 成分 */ + private String ingredient; + + /** 拆零比 */ + private BigDecimal partPercent; + + /** 剂量形式 */ + private Integer doseFrom; + + /** 批准文号 */ + private String approvalNumber; + + /** 医保是否对码 */ + private Integer ybMatchFlag; + + /** 医保编码 */ + private String ybNo; + + /** 药理作用分类 */ + private String pharmacologyCategoryCode; + + /** 是否皮试 */ + private Integer skinTestFlag; + + /** 是否为注射药物 */ + private Integer injectFlag; + + /** 生产厂家 */ + private Long manufacturerId; + + /** 供应商 */ + private Long supplyId; + + /** 是否限制使用 */ + private Integer restrictedFlag; + + /** 限制使用范围 */ + private String restrictedScope; + + /** 儿童用药标志 */ + private Integer childrenFlag; + + /** 产品特性 */ + private Integer characteristic; + +} diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/clinical/service/IConditionDefinitionService.java b/openhis-server/openhis-domain/src/main/java/com/openhis/clinical/service/IConditionDefinitionService.java index 77588421..860f561a 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/clinical/service/IConditionDefinitionService.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/clinical/service/IConditionDefinitionService.java @@ -1,6 +1,5 @@ package com.openhis.clinical.service; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.openhis.clinical.domain.ConditionDefinition; @@ -12,19 +11,6 @@ import com.openhis.clinical.domain.ConditionDefinition; */ public interface IConditionDefinitionService extends IService { - /** - * 查询病种目录分页列表 - * - * @param searchKey 查询条件 - * @param status 查询条件-状态 - * @param sourceEnum 查询条件-疾病种类 - * @param pageNo 当前页码 - * @param pageSize 查询条数 - * @return - */ - Page getPage(String searchKey, Integer status, Integer sourceEnum, Integer pageNo, - Integer pageSize); - /** * 新增病种 * diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/clinical/service/impl/ConditionDefinitionServiceImpl.java b/openhis-server/openhis-domain/src/main/java/com/openhis/clinical/service/impl/ConditionDefinitionServiceImpl.java index a4c59484..4176329f 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/clinical/service/impl/ConditionDefinitionServiceImpl.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/clinical/service/impl/ConditionDefinitionServiceImpl.java @@ -2,12 +2,10 @@ package com.openhis.clinical.service.impl; import java.util.List; -import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.openhis.clinical.domain.ConditionDefinition; import com.openhis.clinical.mapper.ConditionDefinitionMapper; @@ -30,43 +28,6 @@ public class ConditionDefinitionServiceImpl extends ServiceImpl getPage(String searchKey, Integer status, Integer sourceEnum, Integer pageNo, - Integer pageSize) { - Page conditionList; - // 生成查询条件 - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - // 模糊查询项目 - if (StringUtils.isNotEmpty(searchKey)) { - // 模糊查询项目为【疾病编码】,【疾病名称】,【拼音】,【五笔】 - queryWrapper.and(q -> q.like(ConditionDefinition::getConditionCode, searchKey).or() - .like(ConditionDefinition::getName, searchKey).or().like(ConditionDefinition::getPyStr, searchKey).or() - .like(ConditionDefinition::getWbStr, searchKey)); - } - // 查询状态 - if (status != -1) { - queryWrapper.eq(ConditionDefinition::getStatusEnum, status); - } - // 分类查询 - if (sourceEnum != -1) { - queryWrapper.eq(ConditionDefinition::getSourceEnum, sourceEnum); - } - // 查询病种目录列表 - conditionList = conditionDefinitionMapper.selectPage(new Page<>(pageNo, pageSize), queryWrapper); - // 返回病种目录列表 - return conditionList; - } - /** * 新增病种 *