目录管理更新

This commit is contained in:
liuhongrui
2025-03-26 14:23:56 +08:00
parent 98039f1cc4
commit 5b77a40ee9
13 changed files with 232 additions and 39 deletions

View File

@@ -10,6 +10,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
@@ -21,6 +22,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.core.common.core.domain.R;
import com.core.common.utils.MessageUtils;
@@ -30,6 +32,7 @@ import com.openhis.administration.domain.Organization;
import com.openhis.administration.mapper.DeviceDefinitionMapper;
import com.openhis.administration.service.IDeviceDefinitionService;
import com.openhis.administration.service.IOrganizationService;
import com.openhis.common.constant.CommonConstants;
import com.openhis.common.constant.PromptMsgConstant;
import com.openhis.common.enums.DeviceCategory;
import com.openhis.common.enums.OrganizationType;
@@ -43,6 +46,8 @@ import com.openhis.web.datadictionary.dto.DeviceManageDto;
import com.openhis.web.datadictionary.dto.DeviceManageInitDto;
import com.openhis.web.datadictionary.dto.DeviceManageSelParam;
import com.openhis.web.datadictionary.dto.DeviceManageUpDto;
import com.openhis.web.datadictionary.mapper.DeviceManageMapper;
import com.openhis.web.doctorstation.dto.AdviceBaseDto;
/**
* 器材目录 impl
@@ -62,6 +67,9 @@ public class DeviceManageAppServiceImpl implements IDeviceManageAppService {
@Autowired
private IOrganizationService organizationService;
@Resource
DeviceManageMapper deviceManageMapper;
/**
* 器材目录初始化
*
@@ -106,15 +114,23 @@ public class DeviceManageAppServiceImpl implements IDeviceManageAppService {
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) {
// // 构建查询条件
// QueryWrapper<DeviceDefinition> queryWrapper = HisQueryUtils.buildQueryWrapper(deviceManageSelParam, searchKey,
// new HashSet<>(Arrays.asList("bus_no", "name", "py_str", "wb_str")), request);
// // 设置排序
// queryWrapper.orderByAsc("bus_no");
//
// // 分页查询
// Page<DeviceManageDto> deviceManagePage =
// HisPageUtils.selectPage(deviceDefinitionMapper, queryWrapper, pageNo, pageSize, DeviceManageDto.class);
// 构建查询条件
QueryWrapper<DeviceDefinition> queryWrapper = HisQueryUtils.buildQueryWrapper(deviceManageSelParam, searchKey,
QueryWrapper<DeviceManageDto> queryWrapper = HisQueryUtils.buildQueryWrapper(deviceManageSelParam, searchKey,
new HashSet<>(Arrays.asList("bus_no", "name", "py_str", "wb_str")), request);
// 设置排序
queryWrapper.orderByAsc("bus_no");
// 分页查询
Page<DeviceManageDto> deviceManagePage =
HisPageUtils.selectPage(deviceDefinitionMapper, queryWrapper, pageNo, pageSize, DeviceManageDto.class);
IPage<DeviceManageDto> deviceManagePage =
deviceManageMapper.getDevicePage(new Page<>(pageNo, pageSize), queryWrapper);
deviceManagePage.getRecords().forEach(e -> {
// 高值器材标志枚举类回显赋值
@@ -125,7 +141,7 @@ public class DeviceManageAppServiceImpl implements IDeviceManageAppService {
e.setYbMatchFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getYbMatchFlag()));
// 过敏标记枚举类回显赋值
e.setAllergenFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getAllergenFlag()));
//器材分类
// 器材分类
e.setCategoryEnum_enumText(EnumUtils.getInfoByValue(DeviceCategory.class, e.getCategoryEnum()));
});

View File

@@ -64,7 +64,7 @@ public class ItemDefinitionServiceImpl implements IItemDefinitionService {
.setConditionCode(
medicationManageUpDto.getDoseUnitCode_dictText() + "," + medicationManageUpDto.getLotNumber())
// 购入价
.setAmount(medicationManageUpDto.getPurchasePrice()).setPriority(0);
.setAmount(medicationManageUpDto.getPurchasePrice());
ChargeItemDefDetail chargeItemDefDetail2 = new ChargeItemDefDetail();
chargeItemDefDetail1.setDefinitionId(chargeItemDefinition.getId())
@@ -72,7 +72,7 @@ public class ItemDefinitionServiceImpl implements IItemDefinitionService {
.setConditionCode(
medicationManageUpDto.getDoseUnitCode_dictText() + "," + medicationManageUpDto.getLotNumber())
// 零售价
.setAmount(medicationManageUpDto.getRetailPrice()).setPriority(1);
.setAmount(medicationManageUpDto.getRetailPrice());
shargeItemDefDetails.add(chargeItemDefDetail2);
@@ -82,7 +82,7 @@ public class ItemDefinitionServiceImpl implements IItemDefinitionService {
.setConditionCode(
medicationManageUpDto.getDoseUnitCode_dictText() + "," + medicationManageUpDto.getLotNumber())
// 最高零售价
.setAmount(medicationManageUpDto.getMaximumRetailPrice()).setPriority(2);
.setAmount(medicationManageUpDto.getMaximumRetailPrice());
shargeItemDefDetails.add(chargeItemDefDetail3);

View File

@@ -164,10 +164,23 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi
e.setStatusEnum_enumText(EnumUtils.getInfoByValue(PublicationStatus.class, e.getStatusEnum()));
// 权限限制
e.setRestrictedEnum_enumText(EnumUtils.getInfoByValue(PermissionLimit.class, e.getRestrictedEnum()));
// 活动标记
// e.setActiveFlag_enumText(EnumUtils.getInfoByValue(AccountStatus.class, e.getActiveFlag()));
// 是否为活性
e.setActiveFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getActiveFlag()));
// 医保是否对码
e.setYbMatchFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getYbMatchFlag()));
//是否皮试
e.setSkinTestFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getSkinTestFlag()));;
//是否为注射药物
e.setInjectFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getInjectFlag()));
//是否限制使用
e.setRestrictedFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getRestrictedFlag()));
//儿童用药标志
e.setChildrenFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getChildrenFlag()));
// 适用范围
// e.setDomainEnum_enumText(EnumUtils.getInfoByValue(ApplicableScope.class, e.getDomainEnum()));
e.setDomainEnum_enumText(EnumUtils.getInfoByValue(ApplicableScope.class, e.getDomainEnum()));
// // 活动标记
// e.setActiveFlag_enumText(EnumUtils.getInfoByValue(AccountStatus.class, e.getActiveFlag()));
});
// 返回【药品录列表DTO】分页

View File

@@ -70,7 +70,7 @@ public class MedicationManageController {
* @return
*/
@GetMapping("/information-one")
public R<?> getMedicationOne(@PathVariable("id") Long id) {
public R<?> getMedicationOne(@RequestParam Long id) {
return medicationManageAppService.getMedicationOne(id);
}

View File

@@ -4,6 +4,7 @@ import java.math.BigDecimal;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.openhis.common.annotation.Dict;
import com.openhis.common.enums.DeviceCategory;
import com.openhis.common.enums.PublicationStatus;
@@ -84,8 +85,14 @@ public class DeviceManageDto {
/** 生产厂家 */
private Long manufacturerId;
/** 生产厂商文本 */
private Long manufacturerText;
/** 供应商 */
@JsonSerialize(using = ToStringSerializer.class)
@Dict(dictTable = "adm_supplier",dictCode = "id",dictText = "name")
private Long supplyId;
private String supplyId_dictText;
/** 说明 */
private String description;
@@ -105,4 +112,8 @@ public class DeviceManageDto {
/** 过敏标记 */
private Integer allergenFlag;
private String allergenFlag_enumText;
/** 售价 */
private BigDecimal price;
}

View File

@@ -9,6 +9,7 @@ import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
/**
* 诊疗目录分页检索
@@ -80,4 +81,8 @@ public class DiagnosisTreatmentDto {
/** 所在位置 */
@JsonSerialize(using = ToStringSerializer.class)
private Long locationId;
/** 售价 */
private BigDecimal price;
}

View File

@@ -6,7 +6,6 @@ import java.util.Date;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.openhis.common.annotation.Dict;
import com.openhis.common.enums.PublicationStatus;
import lombok.Data;
import lombok.experimental.Accessors;
@@ -34,13 +33,13 @@ public class MedicationManageDto {
private String statusEnum_enumText;
/** 所属科室 */
@Dict(dictTable = "adm_organization",dictCode = "id",dictText = "name")
@Dict(dictTable = "adm_organization", dictCode = "id", dictText = "name")
@JsonSerialize(using = ToStringSerializer.class)
private Long orgId;
private String orgId_dictText;
/** 所在位置 */
@Dict(dictTable = "adm_location",dictCode = "id",dictText = "name")
@Dict(dictTable = "adm_location", dictCode = "id", dictText = "name")
@JsonSerialize(using = ToStringSerializer.class)
private Long locationId;
private String locationId_dictText;
@@ -83,7 +82,9 @@ public class MedicationManageDto {
private BigDecimal dose;
/** 剂量单位 */
@Dict(dictCode = "unit_code")
private String doseUnitCode;
private String doseUnitCode_dictText;
/** 单次最大剂量 */
private BigDecimal maxUnit;
@@ -95,7 +96,9 @@ public class MedicationManageDto {
private BigDecimal usageLimit;
/** DDD值 */
@Dict(dictCode = "ddd_code")
private String dddCode;
private String dddCode_dictText;
/** DDD单位 */
@Dict(dictCode = "unit_code")
@@ -149,9 +152,6 @@ public class MedicationManageDto {
/** 所含耗材 */
private String comprisedText;
/** 成分 */
private String ingredient;
/** 拆零比 */
private BigDecimal partPercent;
@@ -162,9 +162,8 @@ public class MedicationManageDto {
private String approvalNumber;
/** 医保是否对码 */
@Dict(dictCode = "sys_yes_no")
private Integer ybMatchFlag;
private String ybMatchFlag_dictText;
private String ybMatchFlag_enumText;;
/** 医保编码 */
private String ybNo;
@@ -173,14 +172,12 @@ public class MedicationManageDto {
private String pharmacologyCategoryCode;
/** 是否皮试 */
@Dict(dictCode = "sys_yes_no")
private Integer skinTestFlag;
private String skinTestFlag_dictText;
private String skinTestFlag_enumText;
/** 是否为注射药物 */
@Dict(dictCode = "sys_yes_no")
private Integer injectFlag;
private String injectFlag_dictText;
private String injectFlag_enumText;
/** 生产厂家 */
@JsonSerialize(using = ToStringSerializer.class)
@@ -188,22 +185,20 @@ public class MedicationManageDto {
/** 供应商 */
@JsonSerialize(using = ToStringSerializer.class)
@Dict(dictTable = "adm_supplier",dictCode = "id",dictText = "name")
@Dict(dictTable = "adm_supplier", dictCode = "id", dictText = "name")
private Long supplyId;
private String supplyId_dictText;
/** 是否限制使用 */
@Dict(dictCode = "sys_yes_no")
private Integer restrictedFlag;
private String restrictedFlag_dictText;
private String restrictedFlag_enumText;
/** 限制使用范围 */
private String restrictedScope;
/** 儿童用药标志 */
@Dict(dictCode = "sys_yes_no")
private Integer childrenFlag;
private String childrenFlag_dictText;
private String childrenFlag_enumText;
/** 产品特性 */
private Integer characteristic;
@@ -212,31 +207,27 @@ public class MedicationManageDto {
private String nationalDrugCode;
/** 拆分属性 */
private String partAttribute;
private Integer partAttributeEnum;
private String partAttributeEnum_enumText;
/** 抗生素分类 */
@Dict(dictCode = "antibiotic_type_code")
private String antibioticCode;
private String antibioticCode_dictText;
/** 权限限制 */
private Integer restrictedEnum;
private String restrictedEnum_enumText;
/** 是否自制 */
@Dict(dictCode = "sys_yes_no")
private Integer selfFlag;
private String selfFlag_dictText;
/** 是否抗生素 */
@Dict(dictCode = "sys_yes_no")
private Integer antibioticFlag;
private String antibioticFlag_dictText;
/** 基药标识 */
@Dict(dictCode = "sys_yes_no")
private Integer basicFlag;
private String basicFlag_dictText;
@@ -244,15 +235,24 @@ public class MedicationManageDto {
private String manufacturerName;
/** 常规单位 */
@Dict(dictCode = "unit_code")
private String baseUnitCode;
private String baseUnitCode_dictText;
/** 当前库存数量(常规单位) */
@Dict(dictCode = "unit_code")
private String baseQuantity;
private String baseQuantity_dictText;
/** 当前库存数量(最小单位数量) */
private String minQuantity;
/** 售价 */
private BigDecimal price;
/** 单次最小用药频次 */
private String minRateCode;
/** 单次最大用药频次 */
private String maxRateCode;
}

View File

@@ -191,4 +191,27 @@ public class MedicationManageUpDto {
/** 最小费用 */
private String minimalFee;
/** 单次最小用药频次 */
private String minRateCode;
/** 单次最大用药频次 */
private String maxRateCode;
/** 药品状态 */
private Integer statusEnum;
/** 拆分属性 */
private String partAttribute;
/** 贯标国家编码 */
private String nationalDrugCode;
/** 是否抗生素 */
private Integer antibioticFlag;
/** 是否自制 */
private Integer selfFlag;
/** 系统类别???? */
}

View File

@@ -0,0 +1,30 @@
package com.openhis.web.datadictionary.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.openhis.web.datadictionary.dto.DeviceManageDto;
import com.openhis.web.outpatientmanage.dto.OutpatientInfusionPatientDto;
import org.apache.ibatis.annotations.Param;
/**
* 器材目录
*
* @author Wuser
* @date 2025/3/26
*/
public interface DeviceManageMapper {
/**
* 器材目录分页查询
*
* @param page 分页参数
* @param queryWrapper 查询条件
* @return 器材记录
*/
IPage<DeviceManageDto> getDevicePage(
@Param("page") Page<DeviceManageDto> page,
@Param(Constants.WRAPPER) QueryWrapper<DeviceManageDto> queryWrapper);
}

View File

@@ -0,0 +1,84 @@
<?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.openhis.web.datadictionary.mapper.DeviceManageMapper">
<select id="getDevicePage" parameterType="java.util.Map"
resultType="com.openhis.web.datadictionary.dto.DeviceManageDto">
SELECT
T3.id,
T3.bus_no,
T3.name,
T3.py_str,
T3.wb_str,
T3.category_enum,
T3.type_code,
T3.unit_code,
T3.size,
T3.part_percent,
T3.min_unit_code,
T3.org_id,
T3.location_id,
T3.model_number,
T3.hvcm_flag,
T3.sales_unit_code,
T3.approval_number,
T3.yb_flag,
T3.yb_no,
T3.yb_match_flag,
T3.status_enum,
T3.manufacturer_id,
T3.manufacturer_text,
T3.supply_id,
T3.description,
T3.jurisdiction,
T3.version,
T3.substance_text,
T3.allergen_flag,
T3.tenant_id,
T3.price
FROM
(
SELECT
T1.id,
T1.bus_no,
T1.name,
T1.py_str,
T1.wb_str,
T1.category_enum,
T1.type_code,
T1.unit_code,
T1.size,
T1.part_percent,
T1.min_unit_code,
T1.org_id,
T1.location_id,
T1.model_number,
T1.hvcm_flag,
T1.sales_unit_code,
T1.approval_number,
T1.yb_flag,
T1.yb_no,
T1.yb_match_flag,
T1.status_enum,
T1.manufacturer_id,
T1.manufacturer_text,
T1.supply_id,
T1.description,
T1.jurisdiction,
T1.version,
T1.substance_text,
T1.allergen_flag,
T1.tenant_id,
T2.price
FROM adm_device_definition T1
LEFT JOIN adm_charge_item_definition T2 ON T1.id = T2.instance_id
<where>
T1.delete_flag = '0'
AND T2.instance_table = 'adm_device_definition'
</where>
ORDER BY T1.bus_no
) AS T3
${ew.customSqlSegment}
</select>
</mapper>

View File

@@ -7,6 +7,7 @@
T2.medication_def_id,
T2.status_enum,
T2.org_id,
T2.location_id,
T2.dose_form_code,
T2.total_volume,
T2.ingredient_item,
@@ -63,13 +64,16 @@
T4.base_unit_code,
T4.base_quantity,
T4.min_unit_code,
T4.min_quantity
T4.min_quantity,
T5.price
FROM med_medication_definition T1
LEFT JOIN med_medication T2 ON T1.id = T2.medication_def_id
LEFT JOIN adm_supplier T3 ON T1.manufacturer_id = T3.id
LEFT JOIN wor_inventory_item T4 ON T1.id = T4.item_id
LEFT JOIN adm_charge_item_definition T5 ON T2.medication_def_id = T5.instance_id
<where>
T1.delete_flag = '0'
AND T5.instance_table = 'med_medication_definition'
<if test="searchKey!=null and searchKey!='' ">
AND ( T1.name LIKE CONCAT(CONCAT('%', #{searchKey}),'%') OR
T1.name_en LIKE CONCAT(CONCAT('%', #{searchKey}),'%') OR

View File

@@ -31,6 +31,7 @@ public class ChargeItemDefDetailServiceImpl extends ServiceImpl<ChargeItemDefApp
if (baseMapper.selectById(chargeItemDefDetail.getId()) == null) {
return false;
} else {
//todo deleteFlag=1
return baseMapper.updateById(chargeItemDefDetail) > 0;
}
} else {

View File

@@ -92,4 +92,10 @@ public class Medication extends HisBaseEntity {
/** DDD单位 */
private String dddUnitCode;
/** 单次最小用药频次 */
private String minRateCode;
/** 单次最大用药频次 */
private String maxRateCode;
}