药品目录更新

This commit is contained in:
liuhongrui
2025-03-27 17:52:01 +08:00
parent 547b776666
commit 7b312aeb2c
10 changed files with 266 additions and 134 deletions

View File

@@ -1,6 +1,9 @@
package com.openhis.web.datadictionary.appservice; package com.openhis.web.datadictionary.appservice;
import com.openhis.administration.domain.ChargeItemDefinition;
import com.openhis.administration.domain.DeviceDefinition;
import com.openhis.medication.domain.MedicationDetail; import com.openhis.medication.domain.MedicationDetail;
import com.openhis.web.datadictionary.dto.DeviceManageUpDto;
import com.openhis.web.datadictionary.dto.MedicationManageUpDto; import com.openhis.web.datadictionary.dto.MedicationManageUpDto;
/** /**
@@ -19,4 +22,20 @@ public interface IItemDefinitionService {
*/ */
boolean addItem(MedicationManageUpDto medicationManageUpDto, MedicationDetail medicationDetail); boolean addItem(MedicationManageUpDto medicationManageUpDto, MedicationDetail medicationDetail);
// /**
// * 添加器材的项目定价
// *
// * @param deviceManageUpDto 器材目录信息
// * @param deviceDefinition 器材信息
// */
// boolean addItem(DeviceManageUpDto deviceManageUpDto, DeviceDefinition deviceDefinition);
/**
* 修改项目定价表
*
* @param chargeItemDefinition 项目定价表信息
*/
boolean updateItem(ChargeItemDefinition chargeItemDefinition);
} }

View File

@@ -8,6 +8,7 @@ import java.util.List;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.openhis.web.datadictionary.dto.MedicationSearchParam;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
@@ -32,14 +33,11 @@ public interface IMedicationManageAppService {
* 药品目录查询 * 药品目录查询
* *
* @param searchKey 查询条件 * @param searchKey 查询条件
* @param ybMatchFlag 查询条件-是否对码
* @param statusEnum 查询条件-状态
* @param categoryCode 查询条件-药品分类
* @param pageNo 当前页码 * @param pageNo 当前页码
* @param pageSize 查询条数 * @param pageSize 查询条数
* @return 药品目录查询结果 * @return 药品目录查询结果
*/ */
R<?> getMedicationList(String searchKey, Integer ybMatchFlag, Integer statusEnum, String categoryCode, R<?> getMedicationList(MedicationSearchParam medicationSearchParam,String searchKey,
Integer pageNo, Integer pageSize, HttpServletRequest request); Integer pageNo, Integer pageSize, HttpServletRequest request);
/** /**

View File

@@ -3,6 +3,8 @@ package com.openhis.web.datadictionary.appservice.impl;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.openhis.common.enums.ConditionCode;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -34,6 +36,7 @@ public class ItemDefinitionServiceImpl implements IItemDefinitionService {
@Autowired @Autowired
IChargeItemDefDetailService chargeItemDefDetailService; IChargeItemDefDetailService chargeItemDefDetailService;
/** /**
* 添加项目定价 * 添加项目定价
* *
@@ -52,7 +55,7 @@ public class ItemDefinitionServiceImpl implements IItemDefinitionService {
// .setOrgId(SecurityUtils.getLoginUser().getOrgId()) // .setOrgId(SecurityUtils.getLoginUser().getOrgId())
.setOrgId(1l)// todo 没数据先写死 .setOrgId(1l)// todo 没数据先写死
// 财务类别 // 财务类别
.setTypeCode(medicationManageUpDto.getMinimalFee()) .setTypeCode(medicationManageUpDto.getTypeCode())
// 医保类别 // 医保类别
.setYbType(medicationManageUpDto.getYbType()).setConditionFlag(Whether.YES.getValue()) .setYbType(medicationManageUpDto.getYbType()).setConditionFlag(Whether.YES.getValue())
.setPrice(medicationManageUpDto.getRetailPrice()); .setPrice(medicationManageUpDto.getRetailPrice());
@@ -62,17 +65,17 @@ public class ItemDefinitionServiceImpl implements IItemDefinitionService {
List<ChargeItemDefDetail> shargeItemDefDetails = new ArrayList<>(); List<ChargeItemDefDetail> shargeItemDefDetails = new ArrayList<>();
ChargeItemDefDetail chargeItemDefDetail1 = new ChargeItemDefDetail(); ChargeItemDefDetail chargeItemDefDetail1 = new ChargeItemDefDetail();
chargeItemDefDetail1.setDefinitionId(chargeItemDefinition.getId()) chargeItemDefDetail1.setDefinitionId(chargeItemDefinition.getId())
// 单位+批次unit,pici 用,符号拼装 // 条件:采购
.setConditionCode(StringUtils.joinStrings( .setConditionCode(ConditionCode.PROCUREMENT.getCode())
medicationManageUpDto.getDoseUnitCode_dictText() + "," + medicationManageUpDto.getLotNumber()))
// 购入价 // 购入价
.setAmount(medicationManageUpDto.getPurchasePrice()); .setAmount(medicationManageUpDto.getPurchasePrice());
ChargeItemDefDetail chargeItemDefDetail2 = new ChargeItemDefDetail(); ChargeItemDefDetail chargeItemDefDetail2 = new ChargeItemDefDetail();
chargeItemDefDetail2.setDefinitionId(chargeItemDefinition.getId()) chargeItemDefDetail2.setDefinitionId(chargeItemDefinition.getId())
// 单位+批次unit,pici 用,符号拼装 // 条件:单位
.setConditionCode(StringUtils.joinStrings( .setConditionCode(ConditionCode.UNIT.getCode())
medicationManageUpDto.getDoseUnitCode_dictText() + "," + medicationManageUpDto.getLotNumber())) //单位枚举
.setConditionValue(medicationManageUpDto.getUnitCode())
// 零售价 // 零售价
.setAmount(medicationManageUpDto.getRetailPrice()); .setAmount(medicationManageUpDto.getRetailPrice());
@@ -80,9 +83,8 @@ public class ItemDefinitionServiceImpl implements IItemDefinitionService {
ChargeItemDefDetail chargeItemDefDetail3 = new ChargeItemDefDetail(); ChargeItemDefDetail chargeItemDefDetail3 = new ChargeItemDefDetail();
chargeItemDefDetail3.setDefinitionId(chargeItemDefinition.getId()) chargeItemDefDetail3.setDefinitionId(chargeItemDefinition.getId())
// 单位+批次unit,pici 用,符号拼装 // 条件:限制
.setConditionCode(StringUtils.joinStrings( .setConditionCode(ConditionCode.LIMIT.getCode())
medicationManageUpDto.getDoseUnitCode_dictText() + "," + medicationManageUpDto.getLotNumber()))
// 最高零售价 // 最高零售价
.setAmount(medicationManageUpDto.getMaximumRetailPrice()); .setAmount(medicationManageUpDto.getMaximumRetailPrice());
@@ -94,4 +96,22 @@ public class ItemDefinitionServiceImpl implements IItemDefinitionService {
return false; return false;
} }
/**
* 修改项目定价表
*
* @param chargeItemDefinition 项目定价表信息
*/
@Override
public boolean updateItem(ChargeItemDefinition chargeItemDefinition) {
// 关联项目和代码位为key更新表
LambdaUpdateWrapper<ChargeItemDefinition> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(ChargeItemDefinition::getInstanceId, chargeItemDefinition.getInstanceId());
updateWrapper.eq(ChargeItemDefinition::getInstanceTable, chargeItemDefinition.getInstanceTable())
.set(ChargeItemDefinition::getYbType, chargeItemDefinition.getYbType())
.set(ChargeItemDefinition::getTypeCode, chargeItemDefinition.getTypeCode());
return chargeItemDefinitionService.update(null, updateWrapper);
}
} }

View File

@@ -4,6 +4,8 @@
package com.openhis.web.datadictionary.appservice.impl; package com.openhis.web.datadictionary.appservice.impl;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
@@ -14,10 +16,11 @@ import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
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.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.core.common.core.domain.R; import com.core.common.core.domain.R;
import com.core.common.core.domain.entity.SysDictData; import com.core.common.core.domain.entity.SysDictData;
@@ -27,6 +30,7 @@ import com.core.common.utils.SecurityUtils;
import com.core.common.utils.bean.BeanUtils; import com.core.common.utils.bean.BeanUtils;
import com.core.common.utils.poi.ExcelUtil; import com.core.common.utils.poi.ExcelUtil;
import com.core.system.service.ISysDictTypeService; import com.core.system.service.ISysDictTypeService;
import com.openhis.administration.domain.ChargeItemDefinition;
import com.openhis.administration.domain.Supplier; import com.openhis.administration.domain.Supplier;
import com.openhis.administration.service.ISupplierService; import com.openhis.administration.service.ISupplierService;
import com.openhis.common.constant.CommonConstants; import com.openhis.common.constant.CommonConstants;
@@ -36,6 +40,7 @@ import com.openhis.common.enums.PermissionLimit;
import com.openhis.common.enums.PublicationStatus; import com.openhis.common.enums.PublicationStatus;
import com.openhis.common.enums.Whether; import com.openhis.common.enums.Whether;
import com.openhis.common.utils.EnumUtils; import com.openhis.common.utils.EnumUtils;
import com.openhis.common.utils.HisQueryUtils;
import com.openhis.medication.domain.Medication; import com.openhis.medication.domain.Medication;
import com.openhis.medication.domain.MedicationDefinition; import com.openhis.medication.domain.MedicationDefinition;
import com.openhis.medication.domain.MedicationDetail; import com.openhis.medication.domain.MedicationDetail;
@@ -46,6 +51,7 @@ import com.openhis.web.datadictionary.appservice.IMedicationManageAppService;
import com.openhis.web.datadictionary.dto.MedicationManageDto; import com.openhis.web.datadictionary.dto.MedicationManageDto;
import com.openhis.web.datadictionary.dto.MedicationManageInitDto; import com.openhis.web.datadictionary.dto.MedicationManageInitDto;
import com.openhis.web.datadictionary.dto.MedicationManageUpDto; import com.openhis.web.datadictionary.dto.MedicationManageUpDto;
import com.openhis.web.datadictionary.dto.MedicationSearchParam;
import com.openhis.web.datadictionary.mapper.MedicationManageSearchMapper; import com.openhis.web.datadictionary.mapper.MedicationManageSearchMapper;
/** /**
@@ -137,26 +143,19 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi
* @return 药品目录查询结果 * @return 药品目录查询结果
*/ */
@Override @Override
public R<?> getMedicationList(@RequestParam(value = "searchKey", defaultValue = "") String searchKey, public R<?> getMedicationList(MedicationSearchParam medicationSearchParam,
@RequestParam(value = "ybMatchFlag", defaultValue = "-1") Integer ybMatchFlag, @RequestParam(value = "searchKey", defaultValue = "") String searchKey,
@RequestParam(value = "statusEnum", defaultValue = "-1") Integer statusEnum,
@RequestParam(value = "categoryCode", defaultValue = "") String categoryCode,
@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) {
// 分页设置 // 构建查询条件
Integer offset = (pageNo - 1) * pageSize; QueryWrapper<MedicationManageDto> queryWrapper = HisQueryUtils.buildQueryWrapper(medicationSearchParam,
// 获取租户ID searchKey, new HashSet<>(Arrays.asList("name", "name_en", "merchandise_name", "bus_no", "py_str", "wb_str",
Integer tenantId = SecurityUtils.getLoginUser().getTenantId(); "merchandise_py_str", "merchandise_wb_str")),
// 查询药品目录列表 null);
List<MedicationManageDto> medicationDetailList = medicationManageSearchMapper.getPage(searchKey, ybMatchFlag,
statusEnum, categoryCode, tenantId, pageSize, offset); IPage<MedicationManageDto> medicationManageDtoPage =
// 查询总记录数 medicationManageSearchMapper.getPage(new Page<>(pageNo, pageSize), queryWrapper);
long total =
medicationManageSearchMapper.getPageCount(searchKey, ybMatchFlag, statusEnum, categoryCode, tenantId);
// 创建Page对象并设置属性
Page<MedicationManageDto> medicationManageDtoPage = new Page<>(pageNo, pageSize, total);
medicationManageDtoPage.setRecords(medicationDetailList);
// 枚举类回显赋值 // 枚举类回显赋值
medicationManageDtoPage.getRecords().forEach(e -> { medicationManageDtoPage.getRecords().forEach(e -> {
@@ -216,10 +215,21 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi
medicationDefinition medicationDefinition
.setMerchandiseWbStr(ChineseConvertUtils.toWBFirstLetter(medicationDefinition.getMerchandiseName())); .setMerchandiseWbStr(ChineseConvertUtils.toWBFirstLetter(medicationDefinition.getMerchandiseName()));
ChargeItemDefinition chargeItemDefinition = new ChargeItemDefinition();
chargeItemDefinition.setYbType(medicationManageUpDto.getYbType())
.setTypeCode(medicationManageUpDto.getTypeCode())
.setInstanceTable(CommonConstants.TableName.MED_MEDICATION_DEFINITION)
.setInstanceId(medicationManageUpDto.getMedicationDefId());
// 更新子表药品信息 // 更新子表药品信息
if (medicationService.updateById(medication)) { if (medicationService.updateById(medication)) {
// 更新主表药品信息 // 更新主表药品信息
return medicationDefinitionService.updateById(medicationDefinition) boolean updateMedicationDefinition = medicationDefinitionService.updateById(medicationDefinition);
// 更新价格表
boolean updateChargeItemDefinition = itemDefinitionServic.updateItem(chargeItemDefinition);
return (updateMedicationDefinition && updateChargeItemDefinition)
? 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.M00007, null)); : R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null));
} else { } else {
@@ -317,7 +327,7 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi
// 添加药品成功后,添加相应的条件价格表信息 // 添加药品成功后,添加相应的条件价格表信息
boolean insertItemDefinitionSuccess = itemDefinitionServic.addItem(medicationManageUpDto, medicationDetail); boolean insertItemDefinitionSuccess = itemDefinitionServic.addItem(medicationManageUpDto, medicationDetail);
return (insertMedicationSuccess || insertItemDefinitionSuccess) return (insertMedicationSuccess && insertItemDefinitionSuccess)
? 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));
} else { } else {

View File

@@ -5,6 +5,7 @@ import java.util.List;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.openhis.web.datadictionary.dto.MedicationSearchParam;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -44,22 +45,18 @@ public class MedicationManageController {
/** /**
* 查询药品目录分页列表 * 查询药品目录分页列表
* *
* @param searchKey 查询条件 * @param medicationSearchParam 查询条件
* @param statusEnum 查询条件-状态 * @param searchKey 模糊查询条件
* @param ybMatchFlag 查询条件-是否对码
* @param categoryCode 查询条件-药品分类
* @param pageNo 当前页码 * @param pageNo 当前页码
* @param pageSize 查询条数 * @param pageSize 查询条数
* @return * @return
*/ */
@GetMapping("/information-page") @GetMapping("/information-page")
public R<?> getMedicationList(@RequestParam(value = "searchKey", defaultValue = "") String searchKey, public R<?> getMedicationList(
@RequestParam(value = "ybMatchFlag", defaultValue = "-1") Integer ybMatchFlag, MedicationSearchParam medicationSearchParam,@RequestParam(value = "searchKey", defaultValue = "") String searchKey,
@RequestParam(value = "statusEnum", defaultValue = "-1") Integer statusEnum,
@RequestParam(value = "categoryCode", defaultValue = "") String categoryCode,
@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) {
return medicationManageAppService.getMedicationList(searchKey, ybMatchFlag, statusEnum, categoryCode, pageNo, return medicationManageAppService.getMedicationList(medicationSearchParam,searchKey,pageNo,
pageSize, request); pageSize, request);
} }

View File

@@ -142,7 +142,9 @@ public class MedicationManageDto {
private String merchandiseWbStr; private String merchandiseWbStr;
/** 药品单位 */ /** 药品单位 */
@Dict(dictCode = "unit_code")
private String unitCode; private String unitCode;
private String unitCode_dictText;
/** 最小单位 */ /** 最小单位 */
@Dict(dictCode = "unit_code") @Dict(dictCode = "unit_code")
@@ -156,8 +158,9 @@ public class MedicationManageDto {
private BigDecimal partPercent; private BigDecimal partPercent;
/** 剂量形式 */ /** 剂量形式 */
@Dict(dictCode = "dose_from_code")
private Integer doseFrom; private Integer doseFrom;
private String doseFrom_enumText; private String doseFrom_dictText;
/** 批准文号 */ /** 批准文号 */
private String approvalNumber; private String approvalNumber;
@@ -236,11 +239,6 @@ public class MedicationManageDto {
/** 生产厂家名称 */ /** 生产厂家名称 */
private String manufacturerName; private String manufacturerName;
/** 常规单位 */
@Dict(dictCode = "unit_code")
private String baseUnitCode;
private String baseUnitCode_dictText;
/** 当前库存数量(常规单位) */ /** 当前库存数量(常规单位) */
private String baseQuantity; private String baseQuantity;
@@ -256,5 +254,12 @@ public class MedicationManageDto {
/** 单次最大用药频次 */ /** 单次最大用药频次 */
private String maxRateCode; private String maxRateCode;
/** 医保类别 */
private String ybType;
/** 财务类别 */
@Dict(dictCode = "fin_type_code")
private String typeCode;
private String typeCode_dictText;
} }

View File

@@ -121,7 +121,9 @@ public class MedicationManageUpDto {
private String merchandiseWbStr; private String merchandiseWbStr;
/** 药品单位 */ /** 药品单位 */
@Dict(dictCode = "unit_code")
private String unitCode; private String unitCode;
private String unitCode_dictText;
/** 最小单位 */ /** 最小单位 */
private String minUnitCode; private String minUnitCode;
@@ -136,7 +138,9 @@ public class MedicationManageUpDto {
private BigDecimal partPercent; private BigDecimal partPercent;
/** 剂量形式 */ /** 剂量形式 */
@Dict(dictCode = "dose_from_code")
private Integer doseFrom; private Integer doseFrom;
private String doseFrom_dictText;
/** 批准文号 */ /** 批准文号 */
private String approvalNumber; private String approvalNumber;
@@ -194,8 +198,10 @@ public class MedicationManageUpDto {
/** 医保类别 */ /** 医保类别 */
private String ybType; private String ybType;
/** 最小费用 */ /** 财务类别 */
private String minimalFee; @Dict(dictCode = "fin_type_code")
private String typeCode;
private String typeCode_dictText;
/** 单次最小用药频次 */ /** 单次最小用药频次 */
private String minRateCode; private String minRateCode;
@@ -205,6 +211,7 @@ public class MedicationManageUpDto {
/** 药品状态 */ /** 药品状态 */
private Integer statusEnum; private Integer statusEnum;
private String statusEnum_enumText;
/** 拆分属性 */ /** 拆分属性 */
private Integer partAttributeEnum; private Integer partAttributeEnum;
@@ -227,5 +234,7 @@ public class MedicationManageUpDto {
/** 用量限定 */ /** 用量限定 */
private BigDecimal usageLimit; private BigDecimal usageLimit;
/** 系统类别???? */ /** 系统类别???? */
} }

View File

@@ -0,0 +1,22 @@
package com.openhis.web.datadictionary.dto;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 药品查询信息
*
* @author liuhr
* @date 2025/3/27
*/
@Data
@Accessors(chain = true)
public class MedicationSearchParam {
/** 医保是否对码 */
private Integer ybMatchFlag;
/** 药品状态 */
private Integer statusEnum;
/** 药品分类 */
private String categoryCode;
}

View File

@@ -2,6 +2,11 @@ package com.openhis.web.datadictionary.mapper;
import java.util.List; import java.util.List;
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.outpatientmanage.dto.OutpatientInfusionRecordDto;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@@ -17,35 +22,18 @@ import com.openhis.web.datadictionary.dto.MedicationManageDto;
*/ */
@Repository @Repository
public interface MedicationManageSearchMapper extends BaseMapper<ChargeItemDefinition> { public interface MedicationManageSearchMapper extends BaseMapper<ChargeItemDefinition> {
/**
* 药品目录分页查询
*
* @param searchKey 模糊查询条件
* @param ybMatchFlag 是否对码
* @param statusEnum 状态
* @param categoryCode 分类
* @param tenantId 租户
* @param pageSize
* @param offset
* @return
*/
List<MedicationManageDto> getPage(@Param("searchKey") String searchKey, @Param("ybMatchFlag") Integer ybMatchFlag,
@Param("statusEnum") Integer statusEnum, @Param("categoryCode") String categoryCode,
@Param("tenantId") Integer tenantId, @Param("pageSize") Integer pageSize, @Param("offset") Integer offset);
/** /**
* 药品目录分页查询 * 药品目录分页查询
* *
* @param searchKey 模糊查询条件 * @param page 分页
* @param ybMatchFlag 是否对码 * @param queryWrapper 查询条件
* @param statusEnum 状态
* @param categoryCode 分类
* @param tenantId 租户
* @return * @return
*/ */
Long getPageCount(@Param("searchKey") String searchKey, @Param("ybMatchFlag") Integer ybMatchFlag, IPage<MedicationManageDto> getPage(
@Param("statusEnum") Integer statusEnum, @Param("categoryCode") String categoryCode, @Param("page") Page<OutpatientInfusionRecordDto> page,
@Param("tenantId") Integer tenantId); @Param(Constants.WRAPPER) QueryWrapper<MedicationManageDto> queryWrapper);
/** /**
* 药品详情 * 药品详情

View File

@@ -1,8 +1,81 @@
<?xml version="1.0" encoding="UTF-8" ?> <?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"> <!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.MedicationManageSearchMapper"> <mapper namespace="com.openhis.web.datadictionary.mapper.MedicationManageSearchMapper">
<!-- 药品信息分页查询-->
<select id="getPage" parameterType="java.util.Map" <select id="getPage" parameterType="java.util.Map"
resultType="com.openhis.web.datadictionary.dto.MedicationManageDto"> resultType="com.openhis.web.datadictionary.dto.MedicationManageDto">
SELECT
T6.id,
T6.medication_def_id,
T6.status_enum,
T6.org_id,
T6.location_id,
T6.dose_form_code,
T6.total_volume,
T6.ingredient_item,
T6.active_flag,
T6.lot_number,
T6.effective_date,
T6.expiration_date,
T6.method_code,
T6.rate_code,
T6.dose,
T6.dose_unit_code,
T6.max_unit,
T6.definition,
T6.usage_limit,
T6.ddd_code,
T6.ddd_unit_code,
T6.min_rate_code,
T6.max_rate_code,
T6.bus_no,
T6.name,
T6.domain_enum,
T6.version,
T6.name_en,
T6.py_str,
T6.wb_str,
T6.category_code,
T6.merchandise_name,
T6.merchandise_py_str,
T6.merchandise_wb_str,
T6.unit_code,
T6.comprised_text,
T6.ingredient,
T6.part_percent,
T6.dose_from,
T6.approval_number,
T6.yb_match_flag,
T6.yb_no,
T6.pharmacology_category_code,
T6.skin_test_flag,
T6.inject_flag,
T6.manufacturer_id,
T6.supply_id,
T6.restricted_flag,
T6.restricted_scope,
T6.children_flag,
T6.characteristic,
T6.national_drug_code,
T6.part_attribute_enum,
T6.antibiotic_code,
T6.restricted_enum,
T6.self_flag,
T6.antibiotic_flag,
T6.basic_flag,
T6.remark,
T6.manufacturer_name,
T6.base_unit_code,
T6.base_quantity,
T6.min_unit_code,
T6.min_quantity,
T6.yb_type,
T6.retail_price,
T6.purchase_price,
T6.retail_price,
T6.tenant_id
FROM
(
SELECT T2.id, SELECT T2.id,
T2.medication_def_id, T2.medication_def_id,
T2.status_enum, T2.status_enum,
@@ -24,6 +97,8 @@
T2.usage_limit, T2.usage_limit,
T2.ddd_code, T2.ddd_code,
T2.ddd_unit_code, T2.ddd_unit_code,
T2.min_rate_code,
T2.max_rate_code,
T1.bus_no, T1.bus_no,
T1.name, T1.name,
T1.domain_enum, T1.domain_enum,
@@ -65,7 +140,20 @@
T4.base_quantity, T4.base_quantity,
T4.min_unit_code, T4.min_unit_code,
T4.min_quantity, T4.min_quantity,
T5.price T5.yb_type,
T1.tenant_id,
T5.price as retail_price,--零售价
(SELECT T7.amount
FROM adm_charge_item_definition T5
LEFT JOIN adm_charge_item_def_detail T7 ON T7.definition_id = T5.id
WHERE T7.condition_code = '2'--2:采购价
) as purchase_price,--购入价
(
SELECT T7.amount
FROM adm_charge_item_definition T5
LEFT JOIN adm_charge_item_def_detail T7 ON T7.definition_id = T5.id
WHERE T7.condition_code = '4'--4:限制
) as maximum_retail_price--最高零售价
FROM med_medication_definition T1 FROM med_medication_definition T1
LEFT JOIN med_medication T2 ON T1.id = T2.medication_def_id 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 adm_supplier T3 ON T1.manufacturer_id = T3.id
@@ -74,31 +162,9 @@
<where> <where>
T1.delete_flag = '0' T1.delete_flag = '0'
AND T5.instance_table = 'med_medication_definition' 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
T1.merchandise_name LIKE CONCAT(CONCAT('%', #{searchKey}),'%') OR
T1.bus_no LIKE CONCAT(CONCAT('%', #{searchKey}),'%') OR
T1.py_str LIKE CONCAT(CONCAT('%', #{searchKey}),'%') OR
T1.wb_str LIKE CONCAT(CONCAT('%', #{searchKey}),'%') OR
T1.merchandise_py_str LIKE CONCAT(CONCAT('%', #{searchKey}),'%') OR
T1.merchandise_wb_str LIKE CONCAT(CONCAT('%', #{searchKey}),'%'))
</if>
<if test="ybMatchFlag!= -1">
AND T1.yb_match_flag = #{ybMatchFlag}
</if>
<if test="statusEnum!= -1">
AND T2.status_enum = #{statusEnum}
</if>
<if test="categoryCode!=null and categoryCode!='' ">
AND T1.category_code = #{categoryCode}
</if>
<if test="tenantId!= null">
AND T1.tenant_id = #{tenantId}
</if>
</where> </where>
ORDER BY T1.bus_no ) AS T6
LIMIT #{pageSize} OFFSET #{offset} ${ew.customSqlSegment}
</select> </select>
<select id="getOne" resultType="com.openhis.web.datadictionary.dto.MedicationManageDto"> <select id="getOne" resultType="com.openhis.web.datadictionary.dto.MedicationManageDto">
@@ -106,6 +172,7 @@
T2.medication_def_id, T2.medication_def_id,
T2.status_enum, T2.status_enum,
T2.org_id, T2.org_id,
T2.location_id,
T2.dose_form_code, T2.dose_form_code,
T2.total_volume, T2.total_volume,
T2.ingredient_item, T2.ingredient_item,
@@ -119,6 +186,11 @@
T2.dose_unit_code, T2.dose_unit_code,
T2.max_unit, T2.max_unit,
T2.definition, T2.definition,
T2.usage_limit,
T2.ddd_code,
T2.ddd_unit_code,
T2.min_rate_code,
T2.max_rate_code,
T1.bus_no, T1.bus_no,
T1.name, T1.name,
T1.domain_enum, T1.domain_enum,
@@ -143,48 +215,40 @@
T1.skin_test_flag, T1.skin_test_flag,
T1.inject_flag, T1.inject_flag,
T1.manufacturer_id, T1.manufacturer_id,
T1.manufacturer_text,
T1.supply_id, T1.supply_id,
T1.restricted_flag, T1.restricted_flag,
T1.restricted_scope, T1.restricted_scope,
T1.children_flag, T1.children_flag,
T1.characteristic T1.characteristic,
T1.national_drug_code,
T1.part_attribute_enum,
T1.antibiotic_code,
T1.restricted_enum,
T1.self_flag,
T1.antibiotic_flag,
T1.basic_flag,
T3.type_code,
T3.yb_type,
T3.price as retail_price,--零售价
(SELECT T4.amount
FROM adm_charge_item_definition T3
LEFT JOIN adm_charge_item_def_detail T4 ON T4.definition_id = T3.id
WHERE T4.condition_code = '2'--2:采购价
) as purchase_price,--购入价
(
SELECT T4.amount
FROM adm_charge_item_definition T3
LEFT JOIN adm_charge_item_def_detail T4 ON T4.definition_id = T3.id
WHERE T4.condition_code = '4'--4:限制
) as maximum_retail_price--最高零售价
FROM med_medication_definition T1 FROM med_medication_definition T1
LEFT JOIN med_medication T2 on T1.id = T2.medication_def_id LEFT JOIN med_medication T2 on T1.id = T2.medication_def_id
LEFT JOIN adm_charge_item_definition T3 ON T2.medication_def_id = T3.instance_id
<where> <where>
T1.delete_flag = '0' T1.delete_flag = '0'
<if test="id!= 0"> <if test="id!= null">
AND T1.id = #{id} AND T2.id = #{id}
</if>
<if test="tenantId!= null">
AND T1.tenant_id = #{tenantId}
</if>
</where>
</select>
<select id="getPageCount" resultType="java.lang.Long">
SELECT COUNT(*)
FROM med_medication_definition T1
LEFT JOIN med_medication T2 on T1.id = T2.medication_def_id
<where>
T1.delete_flag = '0'
<if test="searchKey!=null and searchKey!='' ">
AND ( T1.name LIKE CONCAT(CONCAT('%', #{searchKey}),'%') OR
T1.name_en LIKE CONCAT(CONCAT('%', #{searchKey}),'%') OR
T1.merchandise_name LIKE CONCAT(CONCAT('%', #{searchKey}),'%') OR
T1.bus_no LIKE CONCAT(CONCAT('%', #{searchKey}),'%') OR
T1.py_str LIKE CONCAT(CONCAT('%', #{searchKey}),'%') OR
T1.wb_str LIKE CONCAT(CONCAT('%', #{searchKey}),'%') OR
T1.merchandise_py_str LIKE CONCAT(CONCAT('%', #{searchKey}),'%') OR
T1.merchandise_wb_str LIKE CONCAT(CONCAT('%', #{searchKey}),'%'))
</if>
<if test="ybMatchFlag!= -1">
AND T1.yb_match_flag = #{ybMatchFlag}
</if>
<if test="statusEnum!= -1">
AND T2.status_enum = #{statusEnum}
</if>
<if test="categoryCode!=null and categoryCode!='' ">
AND T1.category_code = #{categoryCode}
</if> </if>
<if test="tenantId!= null"> <if test="tenantId!= null">
AND T1.tenant_id = #{tenantId} AND T1.tenant_id = #{tenantId}