This commit is contained in:
liuhongrui
2025-02-25 16:18:21 +08:00
8 changed files with 340 additions and 91 deletions

View File

@@ -2,23 +2,31 @@ package com.openhis.web.datadictionary.controller;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.concurrent.CopyOnWriteArrayList;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.core.common.core.domain.R; import com.core.common.core.domain.R;
import com.core.common.utils.MessageUtils; import com.core.common.utils.MessageUtils;
import com.core.common.utils.bean.BeanUtils; import com.core.common.utils.bean.BeanUtils;
import com.openhis.clinical.domain.ConditionDefinition; import com.openhis.clinical.domain.ConditionDefinition;
import com.openhis.clinical.mapper.ConditionDefinitionMapper;
import com.openhis.clinical.service.IConditionDefinitionService; import com.openhis.clinical.service.IConditionDefinitionService;
import com.openhis.common.constant.PromptMsgConstant; import com.openhis.common.constant.PromptMsgConstant;
import com.openhis.common.enums.ConditionDefinitionSource; 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.DiseaseManageDto;
import com.openhis.web.datadictionary.dto.DiseaseManageSelParam;
import com.openhis.web.datadictionary.dto.DiseaseManageUpDto;
import com.openhis.web.datadictionary.dto.DiseaseSourceDto; import com.openhis.web.datadictionary.dto.DiseaseSourceDto;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@@ -36,6 +44,7 @@ import lombok.extern.slf4j.Slf4j;
@AllArgsConstructor @AllArgsConstructor
public class DiseaseManageController { public class DiseaseManageController {
private final IConditionDefinitionService iConditionDefinitionService; private final IConditionDefinitionService iConditionDefinitionService;
private final ConditionDefinitionMapper conditionDefinitionMapper;
/** /**
* 病种目录分类查询 * 病种目录分类查询
@@ -60,36 +69,29 @@ public class DiseaseManageController {
/** /**
* 查询病种目录分页列表 * 查询病种目录分页列表
* *
* @param searchKey 查询条件 * @param diseaseManageSelParam 查询条件
* @param status 查询条件-状态 * @param searchKey 查询条件-模糊查询
* @param status 查询条件-疾病种类
* @param pageNo 当前页码 * @param pageNo 当前页码
* @param pageSize 查询条数 * @param pageSize 查询条数
* @return * @return
*/ */
@GetMapping("/information-page") @GetMapping("/information-page")
public R<?> getDiseaseList(@RequestParam(value = "searchKey", defaultValue = "") String searchKey, public R<?> getDiseaseList(@RequestBody DiseaseManageSelParam diseaseManageSelParam,
@RequestParam(value = "status", defaultValue = "-1") Integer status, @RequestParam(value = "searchKey", defaultValue = "") String searchKey,
@RequestParam(value = "sourceEnum", defaultValue = "-1") Integer sourceEnum,
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) { @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) {
// 查询【病种目录】分页列表 // 构建查询条件
Page<ConditionDefinition> diseasePage = QueryWrapper<ConditionDefinition> queryWrapper = HisQueryUtils.buildQueryWrapper(diseaseManageSelParam,
iConditionDefinitionService.getPage(searchKey, status, sourceEnum, pageNo, pageSize); searchKey, new HashSet<>(Arrays.asList("condition_code", "name", "py_str", "wb_str")), request);
// 设置排序
// 获取入病种目录列表 queryWrapper.orderByAsc("condition_code");
Page<DiseaseManageDto> diseaseManageDtoPage = new Page<>(); // 分页查询
diseaseManageDtoPage.setRecords(diseasePage.getRecords().stream().map(entity -> { Page<DiseaseManageDto> diseasePage =
// 定义【入病种目录列表DTO】 HisPageUtils.selectPage(conditionDefinitionMapper, queryWrapper, pageNo, pageSize, DiseaseManageDto.class);
DiseaseManageDto dto = new DiseaseManageDto();
BeanUtils.copyProperties(entity, dto);
return dto;
}).collect(Collectors.toList()));
// 返回【病种目录列表DTO】分页 // 返回【病种目录列表DTO】分页
return R.ok(diseaseManageDtoPage); return R.ok(diseasePage);
} }
/** /**
@@ -109,49 +111,103 @@ public class DiseaseManageController {
/** /**
* 病种目录编辑 * 病种目录编辑
* *
* @param diseaseManageDtos 病种目录列表 * @param diseaseManageDto 病种目录列表
* @return * @return
*/ */
@PutMapping("/information") @PutMapping("/information")
public R<?> editDisease(@RequestBody List<DiseaseManageDto> diseaseManageDtos) { public R<?> editDisease(@RequestBody DiseaseManageUpDto diseaseManageDto) {
List<ConditionDefinition> conditionDefinitionList = new ArrayList<>();
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<Long> ids) {
List<ConditionDefinition> conditionDefinitionList = new CopyOnWriteArrayList<>();
// 取得更新值 // 取得更新值
for (DiseaseManageDto detail : diseaseManageDtos) { for (Long detail : ids) {
ConditionDefinition conditionDefinition = new ConditionDefinition(); ConditionDefinition conditionDefinition = new ConditionDefinition();
BeanUtils.copyProperties(detail, conditionDefinition); conditionDefinition.setId(detail);
conditionDefinition.setStatusEnum(PublicationStatus.RETIRED);
conditionDefinitionList.add(conditionDefinition); conditionDefinitionList.add(conditionDefinition);
} }
// 更新病种信息 // 更新病种信息
return iConditionDefinitionService.updateBatchById(conditionDefinitionList) 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<Long> ids) {
List<ConditionDefinition> 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)); : R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null));
} }
/** /**
* 新增外来病种目录 * 新增外来病种目录
* *
* @param diseaseManageDto 病种目录实体 * @param diseaseManageUpDto 病种目录
* @return * @return
*/ */
@PostMapping("/information") @PostMapping("/information")
public R<?> addDisease(@Validated @RequestBody DiseaseManageDto diseaseManageDto) { public R<?> addDisease(@Validated @RequestBody DiseaseManageUpDto diseaseManageUpDto) {
ConditionDefinition conditionDefinition = new ConditionDefinition(); ConditionDefinition conditionDefinition = new ConditionDefinition();
BeanUtils.copyProperties(diseaseManageDto, conditionDefinition); BeanUtils.copyProperties(diseaseManageUpDto, conditionDefinition);
// 新增外来病种目录 // 新增外来病种目录
conditionDefinition.setStatusEnum(PublicationStatus.DRAFT);
return iConditionDefinitionService.addDisease(conditionDefinition) return iConditionDefinitionService.addDisease(conditionDefinition)
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"疾病目录"})) ? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"疾病目录"}))
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00008, null)); : R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00008, null));
} }
/** /**
* 新增医保病种目录 * 新增医保病种目录
* *
* @param conditionDefinition 病种目录实体 * @param diseaseManageUpDto 病种目录
* @return * @return
*/ */
@PostMapping("/information-yb") @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; return null;
} }
} }

View File

@@ -1,7 +1,5 @@
package com.openhis.web.datadictionary.dto; package com.openhis.web.datadictionary.dto;
import javax.validation.constraints.NotBlank;
import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.openhis.common.enums.ConditionDefinitionSource; import com.openhis.common.enums.ConditionDefinitionSource;
@@ -27,11 +25,9 @@ public class DiseaseManageDto {
private ConditionDefinitionSource sourceEnum; private ConditionDefinitionSource sourceEnum;
/** 编码 */ /** 编码 */
@NotBlank(message = "疾病编码不能为空")
private String conditionCode; private String conditionCode;
/** 诊断名称 */ /** 诊断名称 */
@NotBlank(message = "疾病名称不能为空")
private String name; private String name;
/** 诊断名称拼音 */ /** 诊断名称拼音 */

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -1,8 +1,12 @@
package com.openhis.web.datadictionary.dto; package com.openhis.web.datadictionary.dto;
import com.core.common.core.domain.entity.SysDept;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.util.ArrayList;
import java.util.List;
/** /**
* 疾病目录种别dto * 疾病目录种别dto
* *
@@ -15,4 +19,5 @@ public class DiseaseSourceDto {
private Integer value; private Integer value;
private String code; private String code;
private String info; private String info;
List<DiseaseSourceDto> children = new ArrayList<>();
} }

View File

@@ -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;
}

View File

@@ -1,6 +1,5 @@
package com.openhis.clinical.service; package com.openhis.clinical.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.openhis.clinical.domain.ConditionDefinition; import com.openhis.clinical.domain.ConditionDefinition;
@@ -12,19 +11,6 @@ import com.openhis.clinical.domain.ConditionDefinition;
*/ */
public interface IConditionDefinitionService extends IService<ConditionDefinition> { public interface IConditionDefinitionService extends IService<ConditionDefinition> {
/**
* 查询病种目录分页列表
*
* @param searchKey 查询条件
* @param status 查询条件-状态
* @param sourceEnum 查询条件-疾病种类
* @param pageNo 当前页码
* @param pageSize 查询条数
* @return
*/
Page<ConditionDefinition> getPage(String searchKey, Integer status, Integer sourceEnum, Integer pageNo,
Integer pageSize);
/** /**
* 新增病种 * 新增病种
* *

View File

@@ -2,12 +2,10 @@ package com.openhis.clinical.service.impl;
import java.util.List; import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.openhis.clinical.domain.ConditionDefinition; import com.openhis.clinical.domain.ConditionDefinition;
import com.openhis.clinical.mapper.ConditionDefinitionMapper; import com.openhis.clinical.mapper.ConditionDefinitionMapper;
@@ -30,43 +28,6 @@ public class ConditionDefinitionServiceImpl extends ServiceImpl<ConditionDefinit
private final ConditionDefinitionMapper conditionDefinitionMapper; private final ConditionDefinitionMapper conditionDefinitionMapper;
/**
* 查询病种目录分页列表
*
* @param searchKey 查询条件
* @param status 查询条件-状态
* @param sourceEnum 查询条件-疾病种类
* @param pageNo 当前页码
* @param pageSize 查询条数
* @return
*/
@Override
public Page<ConditionDefinition> getPage(String searchKey, Integer status, Integer sourceEnum, Integer pageNo,
Integer pageSize) {
Page<ConditionDefinition> conditionList;
// 生成查询条件
LambdaQueryWrapper<ConditionDefinition> 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;
}
/** /**
* 新增病种 * 新增病种
* *