From 7b312aeb2cff6c63a987a7a814a68e9f808858aa Mon Sep 17 00:00:00 2001 From: liuhongrui Date: Thu, 27 Mar 2025 17:52:01 +0800 Subject: [PATCH 01/30] =?UTF-8?q?=E8=8D=AF=E5=93=81=E7=9B=AE=E5=BD=95?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../appservice/IItemDefinitionService.java | 19 ++ .../IMedicationManageAppService.java | 6 +- .../impl/ItemDefinitionServiceImpl.java | 40 +++- .../impl/MedicationManageAppServiceImpl.java | 50 +++-- .../MedicationManageController.java | 15 +- .../dto/MedicationManageDto.java | 17 +- .../dto/MedicationManageUpDto.java | 13 +- .../dto/MedicationSearchParam.java | 22 +++ .../mapper/MedicationManageSearchMapper.java | 36 ++-- .../MedicationManageSearchMapper.xml | 182 ++++++++++++------ 10 files changed, 266 insertions(+), 134 deletions(-) create mode 100644 openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationSearchParam.java diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/IItemDefinitionService.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/IItemDefinitionService.java index 28ab2d00..5d46b400 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/IItemDefinitionService.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/IItemDefinitionService.java @@ -1,6 +1,9 @@ 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.web.datadictionary.dto.DeviceManageUpDto; import com.openhis.web.datadictionary.dto.MedicationManageUpDto; /** @@ -19,4 +22,20 @@ public interface IItemDefinitionService { */ boolean addItem(MedicationManageUpDto medicationManageUpDto, MedicationDetail medicationDetail); + +// /** +// * 添加器材的项目定价 +// * +// * @param deviceManageUpDto 器材目录信息 +// * @param deviceDefinition 器材信息 +// */ +// boolean addItem(DeviceManageUpDto deviceManageUpDto, DeviceDefinition deviceDefinition); + + /** + * 修改项目定价表 + * + * @param chargeItemDefinition 项目定价表信息 + */ + boolean updateItem(ChargeItemDefinition chargeItemDefinition); + } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/IMedicationManageAppService.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/IMedicationManageAppService.java index bb194317..7851f248 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/IMedicationManageAppService.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/IMedicationManageAppService.java @@ -8,6 +8,7 @@ import java.util.List; import javax.servlet.http.HttpServletRequest; 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.RequestBody; import org.springframework.web.bind.annotation.RequestParam; @@ -32,14 +33,11 @@ public interface IMedicationManageAppService { * 药品目录查询 * * @param searchKey 查询条件 - * @param ybMatchFlag 查询条件-是否对码 - * @param statusEnum 查询条件-状态 - * @param categoryCode 查询条件-药品分类 * @param pageNo 当前页码 * @param pageSize 查询条数 * @return 药品目录查询结果 */ - R getMedicationList(String searchKey, Integer ybMatchFlag, Integer statusEnum, String categoryCode, + R getMedicationList(MedicationSearchParam medicationSearchParam,String searchKey, Integer pageNo, Integer pageSize, HttpServletRequest request); /** diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/ItemDefinitionServiceImpl.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/ItemDefinitionServiceImpl.java index 1a7671de..24520d38 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/ItemDefinitionServiceImpl.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/ItemDefinitionServiceImpl.java @@ -3,6 +3,8 @@ package com.openhis.web.datadictionary.appservice.impl; import java.util.ArrayList; 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.stereotype.Service; @@ -34,6 +36,7 @@ public class ItemDefinitionServiceImpl implements IItemDefinitionService { @Autowired IChargeItemDefDetailService chargeItemDefDetailService; + /** * 添加项目定价 * @@ -52,7 +55,7 @@ public class ItemDefinitionServiceImpl implements IItemDefinitionService { // .setOrgId(SecurityUtils.getLoginUser().getOrgId()) .setOrgId(1l)// todo 没数据先写死 // 财务类别 - .setTypeCode(medicationManageUpDto.getMinimalFee()) + .setTypeCode(medicationManageUpDto.getTypeCode()) // 医保类别 .setYbType(medicationManageUpDto.getYbType()).setConditionFlag(Whether.YES.getValue()) .setPrice(medicationManageUpDto.getRetailPrice()); @@ -62,17 +65,17 @@ public class ItemDefinitionServiceImpl implements IItemDefinitionService { List shargeItemDefDetails = new ArrayList<>(); ChargeItemDefDetail chargeItemDefDetail1 = new ChargeItemDefDetail(); chargeItemDefDetail1.setDefinitionId(chargeItemDefinition.getId()) - // 单位+批次(unit,pici) 用,符号拼装 - .setConditionCode(StringUtils.joinStrings( - medicationManageUpDto.getDoseUnitCode_dictText() + "," + medicationManageUpDto.getLotNumber())) + // 条件:采购 + .setConditionCode(ConditionCode.PROCUREMENT.getCode()) // 购入价 .setAmount(medicationManageUpDto.getPurchasePrice()); ChargeItemDefDetail chargeItemDefDetail2 = new ChargeItemDefDetail(); chargeItemDefDetail2.setDefinitionId(chargeItemDefinition.getId()) - // 单位+批次(unit,pici) 用,符号拼装 - .setConditionCode(StringUtils.joinStrings( - medicationManageUpDto.getDoseUnitCode_dictText() + "," + medicationManageUpDto.getLotNumber())) + // 条件:单位 + .setConditionCode(ConditionCode.UNIT.getCode()) + //单位枚举 + .setConditionValue(medicationManageUpDto.getUnitCode()) // 零售价 .setAmount(medicationManageUpDto.getRetailPrice()); @@ -80,9 +83,8 @@ public class ItemDefinitionServiceImpl implements IItemDefinitionService { ChargeItemDefDetail chargeItemDefDetail3 = new ChargeItemDefDetail(); chargeItemDefDetail3.setDefinitionId(chargeItemDefinition.getId()) - // 单位+批次(unit,pici) 用,符号拼装 - .setConditionCode(StringUtils.joinStrings( - medicationManageUpDto.getDoseUnitCode_dictText() + "," + medicationManageUpDto.getLotNumber())) + // 条件:限制 + .setConditionCode(ConditionCode.LIMIT.getCode()) // 最高零售价 .setAmount(medicationManageUpDto.getMaximumRetailPrice()); @@ -94,4 +96,22 @@ public class ItemDefinitionServiceImpl implements IItemDefinitionService { return false; } + /** + * 修改项目定价表 + * + * @param chargeItemDefinition 项目定价表信息 + */ + @Override + public boolean updateItem(ChargeItemDefinition chargeItemDefinition) { + + // 关联项目和代码位为key,更新表 + LambdaUpdateWrapper 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); + } + } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/MedicationManageAppServiceImpl.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/MedicationManageAppServiceImpl.java index 3c14c756..d36a1dd8 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/MedicationManageAppServiceImpl.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/appservice/impl/MedicationManageAppServiceImpl.java @@ -4,6 +4,8 @@ package com.openhis.web.datadictionary.appservice.impl; import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -14,10 +16,11 @@ import javax.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; 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.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.core.common.core.domain.R; 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.poi.ExcelUtil; import com.core.system.service.ISysDictTypeService; +import com.openhis.administration.domain.ChargeItemDefinition; import com.openhis.administration.domain.Supplier; import com.openhis.administration.service.ISupplierService; 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.Whether; import com.openhis.common.utils.EnumUtils; +import com.openhis.common.utils.HisQueryUtils; import com.openhis.medication.domain.Medication; import com.openhis.medication.domain.MedicationDefinition; 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.MedicationManageInitDto; import com.openhis.web.datadictionary.dto.MedicationManageUpDto; +import com.openhis.web.datadictionary.dto.MedicationSearchParam; import com.openhis.web.datadictionary.mapper.MedicationManageSearchMapper; /** @@ -137,26 +143,19 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi * @return 药品目录查询结果 */ @Override - public R getMedicationList(@RequestParam(value = "searchKey", defaultValue = "") String searchKey, - @RequestParam(value = "ybMatchFlag", defaultValue = "-1") Integer ybMatchFlag, - @RequestParam(value = "statusEnum", defaultValue = "-1") Integer statusEnum, - @RequestParam(value = "categoryCode", defaultValue = "") String categoryCode, + public R getMedicationList(MedicationSearchParam medicationSearchParam, + @RequestParam(value = "searchKey", defaultValue = "") String searchKey, @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) { - // 分页设置 - Integer offset = (pageNo - 1) * pageSize; - // 获取租户ID - Integer tenantId = SecurityUtils.getLoginUser().getTenantId(); - // 查询药品目录列表 - List medicationDetailList = medicationManageSearchMapper.getPage(searchKey, ybMatchFlag, - statusEnum, categoryCode, tenantId, pageSize, offset); - // 查询总记录数 - long total = - medicationManageSearchMapper.getPageCount(searchKey, ybMatchFlag, statusEnum, categoryCode, tenantId); - // 创建Page对象并设置属性 - Page medicationManageDtoPage = new Page<>(pageNo, pageSize, total); - medicationManageDtoPage.setRecords(medicationDetailList); + // 构建查询条件 + QueryWrapper queryWrapper = HisQueryUtils.buildQueryWrapper(medicationSearchParam, + searchKey, new HashSet<>(Arrays.asList("name", "name_en", "merchandise_name", "bus_no", "py_str", "wb_str", + "merchandise_py_str", "merchandise_wb_str")), + null); + + IPage medicationManageDtoPage = + medicationManageSearchMapper.getPage(new Page<>(pageNo, pageSize), queryWrapper); // 枚举类回显赋值 medicationManageDtoPage.getRecords().forEach(e -> { @@ -216,10 +215,21 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi medicationDefinition .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)) { + // 更新主表药品信息 - 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.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null)); } else { @@ -317,7 +327,7 @@ public class MedicationManageAppServiceImpl implements IMedicationManageAppServi // 添加药品成功后,添加相应的条件价格表信息 boolean insertItemDefinitionSuccess = itemDefinitionServic.addItem(medicationManageUpDto, medicationDetail); - return (insertMedicationSuccess || insertItemDefinitionSuccess) + return (insertMedicationSuccess && insertItemDefinitionSuccess) ? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"药品目录"})) : R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00008, null)); } else { diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/MedicationManageController.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/MedicationManageController.java index 1c3dac5c..679ec3cc 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/MedicationManageController.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/MedicationManageController.java @@ -5,6 +5,7 @@ import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import com.openhis.web.datadictionary.dto.MedicationSearchParam; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -44,22 +45,18 @@ public class MedicationManageController { /** * 查询药品目录分页列表 * - * @param searchKey 查询条件 - * @param statusEnum 查询条件-状态 - * @param ybMatchFlag 查询条件-是否对码 - * @param categoryCode 查询条件-药品分类 + * @param medicationSearchParam 查询条件 + * @param searchKey 模糊查询条件 * @param pageNo 当前页码 * @param pageSize 查询条数 * @return */ @GetMapping("/information-page") - public R getMedicationList(@RequestParam(value = "searchKey", defaultValue = "") String searchKey, - @RequestParam(value = "ybMatchFlag", defaultValue = "-1") Integer ybMatchFlag, - @RequestParam(value = "statusEnum", defaultValue = "-1") Integer statusEnum, - @RequestParam(value = "categoryCode", defaultValue = "") String categoryCode, + public R getMedicationList( + MedicationSearchParam medicationSearchParam,@RequestParam(value = "searchKey", defaultValue = "") String searchKey, @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, @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); } 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 index f236f982..a2183a8c 100644 --- 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 @@ -142,7 +142,9 @@ public class MedicationManageDto { private String merchandiseWbStr; /** 药品单位 */ + @Dict(dictCode = "unit_code") private String unitCode; + private String unitCode_dictText; /** 最小单位 */ @Dict(dictCode = "unit_code") @@ -156,8 +158,9 @@ public class MedicationManageDto { private BigDecimal partPercent; /** 剂量形式 */ + @Dict(dictCode = "dose_from_code") private Integer doseFrom; - private String doseFrom_enumText; + private String doseFrom_dictText; /** 批准文号 */ private String approvalNumber; @@ -236,11 +239,6 @@ public class MedicationManageDto { /** 生产厂家名称 */ private String manufacturerName; - /** 常规单位 */ - @Dict(dictCode = "unit_code") - private String baseUnitCode; - private String baseUnitCode_dictText; - /** 当前库存数量(常规单位) */ private String baseQuantity; @@ -256,5 +254,12 @@ public class MedicationManageDto { /** 单次最大用药频次 */ private String maxRateCode; + /** 医保类别 */ + private String ybType; + + /** 财务类别 */ + @Dict(dictCode = "fin_type_code") + private String typeCode; + private String typeCode_dictText; } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageUpDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageUpDto.java index dd976187..f8b14754 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageUpDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationManageUpDto.java @@ -121,7 +121,9 @@ public class MedicationManageUpDto { private String merchandiseWbStr; /** 药品单位 */ + @Dict(dictCode = "unit_code") private String unitCode; + private String unitCode_dictText; /** 最小单位 */ private String minUnitCode; @@ -136,7 +138,9 @@ public class MedicationManageUpDto { private BigDecimal partPercent; /** 剂量形式 */ + @Dict(dictCode = "dose_from_code") private Integer doseFrom; + private String doseFrom_dictText; /** 批准文号 */ private String approvalNumber; @@ -194,8 +198,10 @@ public class MedicationManageUpDto { /** 医保类别 */ private String ybType; - /** 最小费用 */ - private String minimalFee; + /** 财务类别 */ + @Dict(dictCode = "fin_type_code") + private String typeCode; + private String typeCode_dictText; /** 单次最小用药频次 */ private String minRateCode; @@ -205,6 +211,7 @@ public class MedicationManageUpDto { /** 药品状态 */ private Integer statusEnum; + private String statusEnum_enumText; /** 拆分属性 */ private Integer partAttributeEnum; @@ -227,5 +234,7 @@ public class MedicationManageUpDto { /** 用量限定 */ private BigDecimal usageLimit; + + /** 系统类别???? */ } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationSearchParam.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationSearchParam.java new file mode 100644 index 00000000..a8f2c5d2 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/MedicationSearchParam.java @@ -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; +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/mapper/MedicationManageSearchMapper.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/mapper/MedicationManageSearchMapper.java index 47ecd5af..8546160c 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/mapper/MedicationManageSearchMapper.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/mapper/MedicationManageSearchMapper.java @@ -2,6 +2,11 @@ package com.openhis.web.datadictionary.mapper; 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.springframework.stereotype.Repository; @@ -17,35 +22,18 @@ import com.openhis.web.datadictionary.dto.MedicationManageDto; */ @Repository public interface MedicationManageSearchMapper extends BaseMapper { - /** - * 药品目录分页查询 - * - * @param searchKey 模糊查询条件 - * @param ybMatchFlag 是否对码 - * @param statusEnum 状态 - * @param categoryCode 分类 - * @param tenantId 租户 - * @param pageSize - * @param offset - * @return - */ - List 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 ybMatchFlag 是否对码 - * @param statusEnum 状态 - * @param categoryCode 分类 - * @param tenantId 租户 + * + * @param page 分页 + * @param queryWrapper 查询条件 * @return */ - Long getPageCount(@Param("searchKey") String searchKey, @Param("ybMatchFlag") Integer ybMatchFlag, - @Param("statusEnum") Integer statusEnum, @Param("categoryCode") String categoryCode, - @Param("tenantId") Integer tenantId); + IPage getPage( + @Param("page") Page page, + @Param(Constants.WRAPPER) QueryWrapper queryWrapper); + /** * 药品详情 diff --git a/openhis-server/openhis-application/src/main/resources/mapper/datadictionary/MedicationManageSearchMapper.xml b/openhis-server/openhis-application/src/main/resources/mapper/datadictionary/MedicationManageSearchMapper.xml index 760e0fa3..29a7d488 100644 --- a/openhis-server/openhis-application/src/main/resources/mapper/datadictionary/MedicationManageSearchMapper.xml +++ b/openhis-server/openhis-application/src/main/resources/mapper/datadictionary/MedicationManageSearchMapper.xml @@ -1,8 +1,81 @@ + - - + SELECT + encounter_id, + organization_id, + department_name, + id_card, + patient_name, + gender_enum, + encounter_date + + FROM + ( + SELECT + DISTINCT + T2.id AS encounter_id, + TO_CHAR(T2.start_time,'YYYY-MM-DD') AS encounter_date, + T2.organization_id, + T3.gender_enum, + T3.name AS patient_name, + T3.id_card, + T6.name AS department_name + + FROM med_medication_dispense AS T1 + + INNER JOIN adm_encounter AS T2 + ON T1.encounter_id = T2.id + + INNER JOIN adm_patient AS T3 + ON T1.patient_id = T3.id + + INNER JOIN med_medication AS T4 + ON T1.medication_id = T4.id + + INNER JOIN med_medication_definition AS T5 + ON T4.medication_def_id = T5.id + AND T5.category_code IN ('1','2') + + INNER JOIN adm_organization AS T6 + ON T2.organization_id = T6.id + + WHERE + T1.status_enum = 3 + + ORDER BY + T2.start_time desc, + T2.organization_id + ) + ${ew.customSqlSegment} + + + + + \ No newline at end of file diff --git a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/DispenseStatusEnum.java b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/DispenseStatusEnum.java new file mode 100644 index 00000000..07943141 --- /dev/null +++ b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/DispenseStatusEnum.java @@ -0,0 +1,71 @@ +package com.openhis.common.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 药品请求状态 + * + * @author wangyang + * @date 2025-03-14 + */ +@Getter +@AllArgsConstructor +public enum DispenseStatusEnum implements HisEnumInterface { + + /** + * 草稿 + */ + DRAFT(0, "DR", "草稿"), + + /** + * 待配药 + */ + PREPARATION(1, "PR", "待配药"), + + /** + * 待发药 + */ + IN_PROGRESS(2, "IN", "待发药"), + + /** + * 已发药 + */ + COMPLETED(3, "CO", "已发药"), + + /** + * 暂停 + */ + ON_HOLD(4, "ON", "暂停"), + + /** + * 停止 + */ + STOPPED(5, "ST", "停止"), + + /** + * 未知 + */ + UNKNOWN(6, "UN", "未知"), + + /** + * 拒绝发药 已汇总,部分发药,部分退药,已退药 + */ + DECLINED(7, "DE", "拒绝发药 已汇总,部分发药,部分退药,已退药"); + + private Integer value; + private String code; + private String info; + + public static DispenseStatusEnum getByValue(Integer value) { + if (value == null) { + return null; + } + for (DispenseStatusEnum val : values()) { + if (val.getValue().equals(value)) { + return val; + } + } + return null; + } +} diff --git a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/NotPerformedReasonEnum.java b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/NotPerformedReasonEnum.java new file mode 100644 index 00000000..e9eb5288 --- /dev/null +++ b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/NotPerformedReasonEnum.java @@ -0,0 +1,136 @@ +package com.openhis.common.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 药品请求状态 + * + * @author wangyang + * @date 2025-03-14 + */ +@Getter +@AllArgsConstructor +public enum NotPerformedReasonEnum implements HisEnumInterface { + + /** + * 订单已停止 + */ + ORDER_STOPPED(1,"OS", "订单已停止"), + + /** + * 过时订单 + */ + OUTDATED_ORDER(2, "OO", "过时订单"), + + /** + * 不完整的数据 + */ + INCOMPLETE_DATA(3, "ID", "不完整的数据"), + + /** + * 产品不可用 + */ + PRODUCT_NOT_AVAILABLE(4, "PNA", "产品不可用"), + + /** + * 道德/宗教 + */ + MORAL_RELIGIOUS(5, "MR", "道德/宗教"), + + /** + * 无法提供护理 + */ + UNABLE_PROVIDE(6, "UP", "无法提供护理"), + + /** + * 先尝试其他治疗方法 + */ + OTHER_TREATMENT(7, "OT", "先尝试其他治疗方法"), + + /** + * 处方/请求需要澄清 + */ + PRESCRIPTION_REQUEST_CLARIFICATION(8, "PRC", "处方/请求需要澄清"), + + /** + * 药物水平过高 + */ + EXCESSIVE_DRUG_LEVELS(9, "EDL", "药物水平过高"), + + /** + * 入院 + */ + HOSPITALIZED(10, "HO", "入院"), + + /** + * 实验室干扰问题 + */ + LABORATORY_INTERFERENCE_ISSUE(11, "LII", "实验室干扰问题"), + + /** + * 患者不可用 + */ + PATIENT_UNAVAILABLE(12, "PU", "患者不可用"), + + /** + * 患者怀孕或哺乳 + */ + PATIENT_PREGNANT_BREASTFEEDING(13, "PPB", "患者怀孕或哺乳"), + + /** + * 过敏 + */ + ALLERGY(14, "AL", "过敏"), + + /** + * 药物与另一种药物相互作用 + */ + ANOTHER_DRUG(15, "AD", "药物与另一种药物相互作用"), + + /** + * 重复治疗 + */ + REPEAT_TREATMENT(16, "RT", "重复治疗"), + + /** + * 疑似不耐受 + */ + SUSPECTED_INTOLERANCE(17, "SI", "疑似不耐受"), + + /** + * 计划手术的患者 + */ + PATIENTS_PLANNING_SURGERY(18, "PPS", "计划手术的患者"), + + /** + * 冲洗 + */ + WASH(19, "WA", "冲洗"), + + /** + * 药物缺货 + */ + DRUG_SHORTAGE(20, "DS", "药物缺货"), + + /** + * 药物不可用 + */ + MEDICATION_NOT_AVAILABLE(21, "MNA", "药物不可用"); + + private Integer value; + private String code; + private String info; + + public static NotPerformedReasonEnum getByValue(Integer value) { + if (value == null) { + return null; + } + for (NotPerformedReasonEnum val : values()) { + if (val.getValue().equals(value)) { + return val; + } + } + return null; + } +} diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IOrganizationService.java b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IOrganizationService.java index dd66aa3b..d868ba68 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IOrganizationService.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IOrganizationService.java @@ -3,6 +3,8 @@ package com.openhis.administration.service; import com.baomidou.mybatisplus.extension.service.IService; import com.openhis.administration.domain.Organization; +import java.util.List; + /** * 机构管理Service接口 * @@ -27,4 +29,11 @@ public interface IOrganizationService extends IService { */ boolean inactiveOrg(Long orgId); + /** + * 获取机构下拉列表 + * + * @param classEnum 机构分类 + * @return 机构下拉列表 + */ + List getList(Integer classEnum); } \ No newline at end of file diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/impl/OrganizationServiceImpl.java b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/impl/OrganizationServiceImpl.java index 2c66cfb7..af19a220 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/impl/OrganizationServiceImpl.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/impl/OrganizationServiceImpl.java @@ -1,13 +1,15 @@ package com.openhis.administration.service.impl; -import org.springframework.stereotype.Service; - +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.openhis.administration.domain.Organization; import com.openhis.administration.mapper.OrganizationMapper; import com.openhis.administration.service.IOrganizationService; import com.openhis.common.enums.AccountStatus; +import org.springframework.stereotype.Service; + +import java.util.List; /** * 机构管理Service业务层处理 @@ -45,4 +47,15 @@ public class OrganizationServiceImpl extends ServiceImpl 0; } + /** + * 获取机构下拉列表 + * + * @param classEnum 机构分类 + * @return 机构下拉列表 + */ + @Override + public List getList(Integer classEnum) { + return baseMapper.selectList(new LambdaQueryWrapper().select(Organization::getId, Organization::getName) + .eq(Organization::getClassEnum, classEnum)); + } } \ No newline at end of file From 5d538e714fb1d1af6f78494f6544c3f19ba3d7be Mon Sep 17 00:00:00 2001 From: wangyang <446708998@qq.com> Date: Fri, 28 Mar 2025 13:19:40 +0800 Subject: [PATCH 18/30] up --- .../appservice/impl/IDispenseAddAppServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/appservice/impl/IDispenseAddAppServiceImpl.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/appservice/impl/IDispenseAddAppServiceImpl.java index 0d385b9b..f91cbb41 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/appservice/impl/IDispenseAddAppServiceImpl.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/appservice/impl/IDispenseAddAppServiceImpl.java @@ -1,7 +1,7 @@ package com.openhis.web.pharmacymanage.appservice.impl; import com.core.common.utils.DateUtils; -import com.openhis.common.enums.DispenseStatus; +import com.openhis.common.enums.DispenseStatusEnum; import com.openhis.medication.domain.MedicationDispense; import com.openhis.medication.domain.MedicationRequest; import com.openhis.medication.service.IMedicationDispenseService; @@ -43,7 +43,7 @@ public class IDispenseAddAppServiceImpl implements IDispenseAddAppService { // 药品发放id medicationDispense.setBusNo(medicationRequest.getBusNo()); // 药品发放状态 - medicationDispense.setStatusEnum(DispenseStatus.DRAFT.getValue()); + medicationDispense.setStatusEnum(DispenseStatusEnum.DRAFT.getValue()); // 状态变更时间 medicationDispense.setStatusChangedTime(DateUtils.getNowDate()); // 发药类型 From f81a553c21300dfaf7f141c86776824365202330 Mon Sep 17 00:00:00 2001 From: "Zhang.WH" Date: Fri, 28 Mar 2025 13:43:04 +0800 Subject: [PATCH 19/30] =?UTF-8?q?=E5=8F=91=E8=8D=AF=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/OutpatientRefundAppServiceImpl.java | 27 ++-- .../mapper/OutpatientRefundAppMapper.java | 4 +- .../appservice/IDispenseAddAppService.java | 22 ---- .../IWesternMedicineDispenseAppService.java | 18 ++- .../impl/IDispenseAddAppServiceImpl.java | 88 ------------- ...esternMedicineDispenseAppServiceImpl.java} | 118 +++++++++--------- .../WesternMedicineDispenseController.java | 29 +++-- .../dto/DispenseInventoryDto.java | 4 +- .../dto/EncounterInfoPageDto.java | 4 +- .../dto/EncounterInfoSearchParam.java | 4 +- .../web/pharmacymanage/dto/PageInitDto.java | 4 +- .../dto/PrescriptionInfoDto.java | 6 +- .../dto/PrescriptionMedicineInfoDto.java | 6 +- .../dto/PrescriptionPatientInfoDto.java | 6 +- .../mapper/WesternMedicineDispenseMapper.java | 21 ++-- .../OutpatientRefundAppMapper.xml | 63 +++++----- .../openhis/common/enums/DispenseStatus.java | 96 ++++++++++++++ .../common/enums/DispenseStatusEnum.java | 71 ----------- .../openhis/common/enums/RequestStatus.java | 27 ++-- .../service/impl/OrganizationServiceImpl.java | 11 +- .../IPaymentReconciliationService.java | 4 +- .../PaymentReconciliationServiceImpl.java | 24 ++-- .../service/IMedicationDispenseService.java | 9 ++ .../impl/MedicationDispenseServiceImpl.java | 60 ++++++++- 24 files changed, 358 insertions(+), 368 deletions(-) delete mode 100644 openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/appservice/IDispenseAddAppService.java delete mode 100644 openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/appservice/impl/IDispenseAddAppServiceImpl.java rename openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/appservice/impl/{IWesternMedicineDispenseAppServiceImpl.java => WesternMedicineDispenseAppServiceImpl.java} (73%) create mode 100644 openhis-server/openhis-common/src/main/java/com/openhis/common/enums/DispenseStatus.java delete mode 100644 openhis-server/openhis-common/src/main/java/com/openhis/common/enums/DispenseStatusEnum.java diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/chargemanage/appservice/impl/OutpatientRefundAppServiceImpl.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/chargemanage/appservice/impl/OutpatientRefundAppServiceImpl.java index 8dfd14ae..fdc0baaf 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/chargemanage/appservice/impl/OutpatientRefundAppServiceImpl.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/chargemanage/appservice/impl/OutpatientRefundAppServiceImpl.java @@ -4,22 +4,18 @@ package com.openhis.web.chargemanage.appservice.impl; import java.util.List; -import java.util.stream.Collectors; -import com.openhis.web.chargemanage.dto.RefundItemDto; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.core.common.core.domain.R; -import com.core.common.utils.MessageUtils; -import com.openhis.administration.domain.ChargeItem; import com.openhis.administration.service.IChargeItemService; import com.openhis.common.constant.CommonConstants; -import com.openhis.common.constant.PromptMsgConstant; import com.openhis.common.enums.PaymentStatus; import com.openhis.financial.service.IPaymentReconciliationService; import com.openhis.web.chargemanage.appservice.IOutpatientRefundAppService; import com.openhis.web.chargemanage.dto.EncounterPatientPaymentDto; +import com.openhis.web.chargemanage.dto.RefundItemDto; import com.openhis.web.chargemanage.mapper.OutpatientRefundAppMapper; /** @@ -61,28 +57,19 @@ public class OutpatientRefundAppServiceImpl implements IOutpatientRefundAppServi @Override public R refundPayment(List paymentIdList) { - List refundItemList = outpatientRefundAppMapper.selectRefundItem(paymentIdList, CommonConstants.TableName.MED_MEDICATION_REQUEST, - CommonConstants.TableName.WOR_SERVICE_REQUEST, CommonConstants.TableName.WOR_DEVICE_REQUEST, - CommonConstants.Common.THREE); - // 医生同意退费 // 查询所有的chargeid,对应生成一个负的chargeitem // 根据每个 chargeitem判断对应的服务,药品,耗材是否已发放执行 // 若已发放/执行需要对应的发药人/执行人审批(药品耗材需要先退药) - for (Long paymentId : paymentIdList) { - // 根据支付id获取对应收费项目的id列表 - List chargeItemIdList = paymentReconciliationService.getChargeItemIdListByPayment(paymentId); - if (chargeItemIdList == null) { - return R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00006, null)); - } - // 根据收费项目id列表获取收费信息 - List chargeItemList = chargeItemService.getChargeItemInfo(chargeItemIdList); + // 根据支付id获取对应收费项目的id列表 + List chargeItemIdList = paymentReconciliationService.getChargeItemIdListByPayment(paymentIdList); - List prescriptionNoList = - chargeItemList.stream().map(ChargeItem::getPrescriptionNo).collect(Collectors.toList()); + //根据收费项目id列表查询退费项 + List refundItemList = outpatientRefundAppMapper.selectRefundItem(chargeItemIdList, + CommonConstants.TableName.MED_MEDICATION_REQUEST, CommonConstants.TableName.WOR_SERVICE_REQUEST, + CommonConstants.TableName.WOR_DEVICE_REQUEST, CommonConstants.Common.THREE); - } return null; } } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/chargemanage/mapper/OutpatientRefundAppMapper.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/chargemanage/mapper/OutpatientRefundAppMapper.java index aa0eab06..a4e7132c 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/chargemanage/mapper/OutpatientRefundAppMapper.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/chargemanage/mapper/OutpatientRefundAppMapper.java @@ -36,14 +36,14 @@ public interface OutpatientRefundAppMapper { /** * 查询退费项目 * - * @param paymentIdList 支付编号列表 + * @param chargeItemIdList 收费项列表 * @param medMedicationRequest 药品请求表 * @param worServiceRequest 服务请求表 * @param worDeviceRequest 耗材请求表 * @param three 用于字符截位 * @return 退费项目列表 */ - List selectRefundItem(@Param("paymentIdList") List paymentIdList, + List selectRefundItem(@Param("chargeItemIdList") List chargeItemIdList, @Param("medMedicationRequest") String medMedicationRequest, @Param("worServiceRequest") String worServiceRequest, @Param("worDeviceRequest") String worDeviceRequest, @Param("three") Integer three); diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/appservice/IDispenseAddAppService.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/appservice/IDispenseAddAppService.java deleted file mode 100644 index abd8b1b0..00000000 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/appservice/IDispenseAddAppService.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.openhis.web.pharmacymanage.appservice; - -import com.openhis.medication.domain.MedicationRequest; - -import java.util.List; - -/** - * 新增药品发放草稿 应用实现接口 - * - * @author wangyang - * @date 2025/3/14 - */ -public interface IDispenseAddAppService { - - /** - * 新增药品发放草稿 - * - * @param medicationRequestList - * @return 无 - */ - boolean addMedicationDispense(List medicationRequestList); -} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/appservice/IWesternMedicineDispenseAppService.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/appservice/IWesternMedicineDispenseAppService.java index 8978f2e4..c4b75ec5 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/appservice/IWesternMedicineDispenseAppService.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/appservice/IWesternMedicineDispenseAppService.java @@ -1,10 +1,10 @@ package com.openhis.web.pharmacymanage.appservice; +import javax.servlet.http.HttpServletRequest; + import com.core.common.core.domain.R; import com.openhis.web.pharmacymanage.dto.EncounterInfoSearchParam; -import javax.servlet.http.HttpServletRequest; - /** * 处方管理 应用实现接口 * @@ -29,14 +29,12 @@ public interface IWesternMedicineDispenseAppService { * @param request 请求数据 * @return 就诊病人分页列表 */ - R getEncounterInfoListPage(EncounterInfoSearchParam encounterInfoSearchParam, - Integer pageNo, - Integer pageSize, - HttpServletRequest request); - + R getEncounterInfoListPage(EncounterInfoSearchParam encounterInfoSearchParam, Integer pageNo, Integer pageSize, + HttpServletRequest request); /** * 查询处方单列表 + * * @param encounterId 就诊号 * @return 处方单列表 */ @@ -44,18 +42,18 @@ public interface IWesternMedicineDispenseAppService { /** * 处方单核对发药 + * * @param prescriptionNo 处方号 * @return 处理结果 */ R medicineDispense(String prescriptionNo); - /** * 处方单作废 + * * @param prescriptionNo 处方号 * @param notPerformedReasonEnum 未发药原因 * @return 处理结果 */ - R medicineCancel(String prescriptionNo, - Integer notPerformedReasonEnum); + R medicineCancel(String prescriptionNo, Integer notPerformedReasonEnum); } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/appservice/impl/IDispenseAddAppServiceImpl.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/appservice/impl/IDispenseAddAppServiceImpl.java deleted file mode 100644 index f91cbb41..00000000 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/appservice/impl/IDispenseAddAppServiceImpl.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.openhis.web.pharmacymanage.appservice.impl; - -import com.core.common.utils.DateUtils; -import com.openhis.common.enums.DispenseStatusEnum; -import com.openhis.medication.domain.MedicationDispense; -import com.openhis.medication.domain.MedicationRequest; -import com.openhis.medication.service.IMedicationDispenseService; -import com.openhis.web.pharmacymanage.appservice.IDispenseAddAppService; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.List; - -/** - * 西药发放 应用实现类 - * - * @author wangyang - * @date 2025/3/14 - */ -@Service -public class IDispenseAddAppServiceImpl implements IDispenseAddAppService { - - @Resource - IMedicationDispenseService iMedicationDispenseService; - - /** - * 新增药品发放草稿 - * - * @param medicationRequestList 药品请求数据 - * @return 无 - */ - @Override - public boolean addMedicationDispense(List medicationRequestList) { - - List medicationDispenseList = new ArrayList<>(); - MedicationDispense medicationDispense; - - for (MedicationRequest medicationRequest : medicationRequestList) { - - medicationDispense = new MedicationDispense(); - - // 药品发放id - medicationDispense.setBusNo(medicationRequest.getBusNo()); - // 药品发放状态 - medicationDispense.setStatusEnum(DispenseStatusEnum.DRAFT.getValue()); - // 状态变更时间 - medicationDispense.setStatusChangedTime(DateUtils.getNowDate()); - // 发药类型 - medicationDispense.setDispenseEnum(medicationRequest.getCategoryEnum()); - // 药品编码 - medicationDispense.setMedicationId(medicationRequest.getMedicationId()); - // 请求数量 - medicationDispense.setQuantity(medicationRequest.getQuantity()); - // 请求单位编码 - medicationDispense.setUnitCode(medicationRequest.getUnitCode()); - // 产品批号 - medicationDispense.setLotNumber(medicationRequest.getLotNumber()); - // 患者id - medicationDispense.setPatientId(medicationRequest.getPatientId()); - // 就诊id - medicationDispense.setEncounterId(medicationRequest.getEncounterId()); - // 支持用药信息 - medicationDispense.setSupportInfo(medicationRequest.getSupportInfo()); - // 发药人 - medicationDispense.setPractitionerId(0L); - // 发放药房 - medicationDispense.setLocationId(medicationRequest.getPerformOrg()); - // 药品请求id - medicationDispense.setMedReqId(medicationRequest.getId()); - // 已发药数量 - medicationDispense.setDispenseQuantity(0); - // 用法 - medicationDispense.setMethodCode(medicationRequest.getMethodCode()); - // 用药频次 - medicationDispense.setFrequencyCode(medicationRequest.getRateCode()); - // 单次剂量 - medicationDispense.setDose(medicationRequest.getDose()); - // 剂量单位 - medicationDispense.setDoseUnitCode(medicationRequest.getDoseUnitCode()); - // 单次最大剂量 - medicationDispense.setMaxUnit(medicationRequest.getMaxDose()); - - medicationDispenseList.add(medicationDispense); - } - return iMedicationDispenseService.saveBatch(medicationDispenseList); - } -} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/appservice/impl/IWesternMedicineDispenseAppServiceImpl.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/appservice/impl/WesternMedicineDispenseAppServiceImpl.java similarity index 73% rename from openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/appservice/impl/IWesternMedicineDispenseAppServiceImpl.java rename to openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/appservice/impl/WesternMedicineDispenseAppServiceImpl.java index a819ef33..e49323c3 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/appservice/impl/IWesternMedicineDispenseAppServiceImpl.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/appservice/impl/WesternMedicineDispenseAppServiceImpl.java @@ -1,5 +1,19 @@ package com.openhis.web.pharmacymanage.appservice.impl; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import javax.servlet.http.HttpServletRequest; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.core.common.core.domain.R; @@ -9,7 +23,7 @@ import com.core.common.utils.SecurityUtils; import com.openhis.administration.domain.Organization; import com.openhis.administration.service.IOrganizationService; import com.openhis.common.constant.PromptMsgConstant; -import com.openhis.common.enums.DispenseStatusEnum; +import com.openhis.common.enums.DispenseStatus; import com.openhis.common.enums.NotPerformedReasonEnum; import com.openhis.common.enums.OrganizationClass; import com.openhis.common.utils.HisQueryUtils; @@ -20,18 +34,6 @@ import com.openhis.web.pharmacymanage.dto.*; import com.openhis.web.pharmacymanage.mapper.WesternMedicineDispenseMapper; import com.openhis.workflow.domain.InventoryItem; import com.openhis.workflow.service.IInventoryItemService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import javax.servlet.http.HttpServletRequest; -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.util.ArrayList; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import java.util.stream.Collectors; -import java.util.stream.Stream; /** * 西药发放 应用实现类 @@ -40,7 +42,7 @@ import java.util.stream.Stream; * @date 2025/3/14 */ @Service -public class IWesternMedicineDispenseAppServiceImpl implements IWesternMedicineDispenseAppService { +public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDispenseAppService { @Autowired private IOrganizationService iOrganizationService; @@ -67,14 +69,15 @@ public class IWesternMedicineDispenseAppServiceImpl implements IWesternMedicineD // 获取科室下拉选列表 List organizationList = iOrganizationService.getList(OrganizationClass.CLINIC.getValue()); List organizationOptions = organizationList.stream() - .map(organization -> new PageInitDto.DepartmentOption(organization.getId(), - organization.getName())).collect(Collectors.toList()); + .map(organization -> new PageInitDto.DepartmentOption(organization.getId(), organization.getName())) + .collect(Collectors.toList()); // 未发药原因下拉选列表 List notPerformedReasonOptions = - Stream.of(NotPerformedReasonEnum.values()).map(notPerformedReason -> - new PageInitDto.NotPerformedReasonOption(notPerformedReason.getValue(), - notPerformedReason.getInfo())).collect(Collectors.toList()); + Stream.of(NotPerformedReasonEnum.values()) + .map(notPerformedReason -> new PageInitDto.NotPerformedReasonOption(notPerformedReason.getValue(), + notPerformedReason.getInfo())) + .collect(Collectors.toList()); initDto.setDepartmentOptions(organizationOptions).setNotPerformedReasonOptions(notPerformedReasonOptions); return R.ok(initDto); @@ -90,33 +93,32 @@ public class IWesternMedicineDispenseAppServiceImpl implements IWesternMedicineD * @return 就诊病人列表 */ @Override - public R getEncounterInfoListPage(EncounterInfoSearchParam encounterInfoSearchParam, - Integer pageNo, - Integer pageSize, - HttpServletRequest request) { + public R getEncounterInfoListPage(EncounterInfoSearchParam encounterInfoSearchParam, Integer pageNo, + Integer pageSize, HttpServletRequest request) { // 查询条件设定 String condition = encounterInfoSearchParam.getCondition(); - if (!condition.isEmpty()){ + if (!condition.isEmpty()) { Pattern pattern = Pattern.compile(".*\\d.*"); Matcher matcher = pattern.matcher(encounterInfoSearchParam.getCondition()); - encounterInfoSearchParam.setIdCard(matcher.find() ? condition:""); - encounterInfoSearchParam.setPatientName(!matcher.find() ? condition:""); + encounterInfoSearchParam.setIdCard(matcher.find() ? condition : ""); + encounterInfoSearchParam.setPatientName(!matcher.find() ? condition : ""); } // 构建查询条件 QueryWrapper queryWrapper = - HisQueryUtils.buildQueryWrapper(encounterInfoSearchParam,null,null, request); + HisQueryUtils.buildQueryWrapper(encounterInfoSearchParam, null, null, request); // 查询就诊病人列表 - Page encounterInfoPageDto = westernMedicineDispenseMapper.selectEncounterInfoListPage( - new Page<>(pageNo, pageSize), queryWrapper); + Page encounterInfoPageDto = + westernMedicineDispenseMapper.selectEncounterInfoListPage(new Page<>(pageNo, pageSize), queryWrapper); return R.ok(encounterInfoPageDto); } /** * 查询处方单列表 + * * @param encounterId 就诊号 * @return 处方单列表 */ @@ -124,15 +126,15 @@ public class IWesternMedicineDispenseAppServiceImpl implements IWesternMedicineD public R getPrescriptionInfo(Long encounterId) { // 患者基本信息查询 - PrescriptionPatientInfoDto prescriptionPatientInfoDto = westernMedicineDispenseMapper. - selectPrescriptionPatientInfo(encounterId); + PrescriptionPatientInfoDto prescriptionPatientInfoDto = + westernMedicineDispenseMapper.selectPrescriptionPatientInfo(encounterId); // 处方单信息查询 - List prescriptionMedicineInfoList = westernMedicineDispenseMapper. - selectPrescriptionMedicineInfoList(encounterId); + List prescriptionMedicineInfoList = + westernMedicineDispenseMapper.selectPrescriptionMedicineInfoList(encounterId); // 计算合计金额 - if(!prescriptionMedicineInfoList.isEmpty()) { + if (!prescriptionMedicineInfoList.isEmpty()) { BigDecimal totalPrice = new BigDecimal(0); for (PrescriptionMedicineInfoDto item : prescriptionMedicineInfoList) { totalPrice.add(item.getTotal_price()); @@ -149,6 +151,7 @@ public class IWesternMedicineDispenseAppServiceImpl implements IWesternMedicineD /** * 处方单核对发药 + * * @param prescriptionNo 处方号 * @return 处理结果 */ @@ -161,9 +164,9 @@ public class IWesternMedicineDispenseAppServiceImpl implements IWesternMedicineD boolean iInventoryItemUpdFlg = true; // 获取药品待发放和库存信息 - List dispenseInventoryList = westernMedicineDispenseMapper. - selectDispenseInventoryInfoByPrescriptionNo(prescriptionNo); - if(!dispenseInventoryList.isEmpty()){ + List dispenseInventoryList = + westernMedicineDispenseMapper.selectDispenseInventoryInfoByPrescriptionNo(prescriptionNo); + if (!dispenseInventoryList.isEmpty()) { MedicationDispense medicationDispense; InventoryItem inventoryItem; for (DispenseInventoryDto dispenseInventoryDto : dispenseInventoryList) { @@ -173,7 +176,7 @@ public class IWesternMedicineDispenseAppServiceImpl implements IWesternMedicineD // id medicationDispense.setId(dispenseInventoryDto.getDispenseId()); // 药品发放状态 - medicationDispense.setStatusEnum(DispenseStatusEnum.COMPLETED.getValue()); + medicationDispense.setStatusEnum(DispenseStatus.COMPLETED.getValue()); // 状态变更时间 medicationDispense.setStatusChangedTime(DateUtils.getNowDate()); // 发药人 @@ -189,23 +192,23 @@ public class IWesternMedicineDispenseAppServiceImpl implements IWesternMedicineD // 库存表项目设定 inventoryItem = new InventoryItem(); // 库存数量 - if (dispenseInventoryDto.getDispenseUnitCode().equals(dispenseInventoryDto. - getInventoryBaseUnitCode())) { + if (dispenseInventoryDto.getDispenseUnitCode() + .equals(dispenseInventoryDto.getInventoryBaseUnitCode())) { // id inventoryItem.setId(dispenseInventoryDto.getInventoryId()); // 包装数量 inventoryItem.setBaseQuantity(new BigDecimal(dispenseInventoryDto.getDispenseQuantity())); // 拆零数量(拆零比×包装数量) - inventoryItem.setMinQuantity(dispenseInventoryDto.getPartPercent(). - multiply(new BigDecimal(dispenseInventoryDto.getDispenseQuantity()))); - } else if (dispenseInventoryDto.getDispenseUnitCode().equals(dispenseInventoryDto. - getInventoryMinUnitCode())) { + inventoryItem.setMinQuantity(dispenseInventoryDto.getPartPercent() + .multiply(new BigDecimal(dispenseInventoryDto.getDispenseQuantity()))); + } else if (dispenseInventoryDto.getDispenseUnitCode() + .equals(dispenseInventoryDto.getInventoryMinUnitCode())) { // 拆零数量 inventoryItem.setMinQuantity(new BigDecimal(dispenseInventoryDto.getDispenseQuantity())); // 包装数量(拆零数量÷拆零比) - inventoryItem.setBaseQuantity(new BigDecimal(dispenseInventoryDto.getDispenseQuantity()). - divide(dispenseInventoryDto.getPartPercent(),RoundingMode.HALF_UP)); + inventoryItem.setBaseQuantity(new BigDecimal(dispenseInventoryDto.getDispenseQuantity()) + .divide(dispenseInventoryDto.getPartPercent(), RoundingMode.HALF_UP)); } inventoryItemList.add(inventoryItem); } @@ -215,28 +218,28 @@ public class IWesternMedicineDispenseAppServiceImpl implements IWesternMedicineD // 库存更新 iInventoryItemUpdFlg = iInventoryItemService.updateBatchById(inventoryItemList); } - return iMedicationDispenseUpdFlg && iInventoryItemUpdFlg ? - R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00004, null)) - : R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00010, null)); + return iMedicationDispenseUpdFlg && iInventoryItemUpdFlg + ? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00004, null)) + : R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00010, null)); } /** * 作废 + * * @param prescriptionNo 处方号 * @param notPerformedReasonEnum 未发药原因 * @return 处理结果 */ @Override - public R medicineCancel(String prescriptionNo, - Integer notPerformedReasonEnum) { + public R medicineCancel(String prescriptionNo, Integer notPerformedReasonEnum) { List medicationDispenseList = new ArrayList<>(); boolean iMedicationDispenseUpdFlg = true; // 获取药品待发放记录 - List dispenseInventoryList = westernMedicineDispenseMapper. - selectDispenseInventoryInfoByPrescriptionNo(prescriptionNo); - if(!dispenseInventoryList.isEmpty()){ + List dispenseInventoryList = + westernMedicineDispenseMapper.selectDispenseInventoryInfoByPrescriptionNo(prescriptionNo); + if (!dispenseInventoryList.isEmpty()) { MedicationDispense medicationDispense; for (DispenseInventoryDto dispenseInventoryDto : dispenseInventoryList) { @@ -245,7 +248,7 @@ public class IWesternMedicineDispenseAppServiceImpl implements IWesternMedicineD // id medicationDispense.setId(dispenseInventoryDto.getDispenseId()); // 药品发放状态 - medicationDispense.setStatusEnum(DispenseStatusEnum.DECLINED.getValue()); + medicationDispense.setStatusEnum(DispenseStatus.DECLINED.getValue()); // 未发药原因 medicationDispense.setNotPerformedReasonEnum(notPerformedReasonEnum); // 状态变更时间 @@ -257,8 +260,7 @@ public class IWesternMedicineDispenseAppServiceImpl implements IWesternMedicineD // 药品发放更新 iMedicationDispenseUpdFlg = iMedicationDispenseService.updateBatchById(medicationDispenseList); } - return iMedicationDispenseUpdFlg? - R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00004, null)) - : R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00010, null)); + return iMedicationDispenseUpdFlg ? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00004, null)) + : R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00010, null)); } } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/controller/WesternMedicineDispenseController.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/controller/WesternMedicineDispenseController.java index 63701cb3..db9063ac 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/controller/WesternMedicineDispenseController.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/controller/WesternMedicineDispenseController.java @@ -1,17 +1,19 @@ package com.openhis.web.pharmacymanage.controller; -import com.core.common.core.domain.R; -import com.openhis.web.pharmacymanage.appservice.IWesternMedicineDispenseAppService; -import com.openhis.web.pharmacymanage.dto.EncounterInfoSearchParam; -import lombok.AllArgsConstructor; -import lombok.extern.slf4j.Slf4j; +import javax.servlet.http.HttpServletRequest; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import javax.servlet.http.HttpServletRequest; +import com.core.common.core.domain.R; +import com.openhis.web.pharmacymanage.appservice.IWesternMedicineDispenseAppService; +import com.openhis.web.pharmacymanage.dto.EncounterInfoSearchParam; + +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; /** * 西药发药 @@ -49,11 +51,10 @@ public class WesternMedicineDispenseController { */ @GetMapping("/encounter-list") public R getEncounterInfoList(EncounterInfoSearchParam encounterInfoSearchParam, - @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, - @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, - HttpServletRequest request) { - return iWesternMedicineDispenseService.getEncounterInfoListPage(encounterInfoSearchParam, - pageNo, pageSize, request); + @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) { + return iWesternMedicineDispenseService.getEncounterInfoListPage(encounterInfoSearchParam, pageNo, pageSize, + request); } /** @@ -66,6 +67,8 @@ public class WesternMedicineDispenseController { return iWesternMedicineDispenseService.getPrescriptionInfo(encounterId); } + // todo:配药逻辑 + /** * 核对发药 * @@ -84,7 +87,7 @@ public class WesternMedicineDispenseController { */ @GetMapping("/medicine-cancel") public R medicineCancel(@RequestParam(value = "prescriptionNo") String prescriptionNo, - @RequestParam(value = "prescriptionNo") Integer notPerformedReasonEnum) { - return iWesternMedicineDispenseService.medicineCancel(prescriptionNo,notPerformedReasonEnum); + @RequestParam(value = "prescriptionNo") Integer notPerformedReasonEnum) { + return iWesternMedicineDispenseService.medicineCancel(prescriptionNo, notPerformedReasonEnum); } } \ No newline at end of file diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/DispenseInventoryDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/DispenseInventoryDto.java index 1e0e470f..8f545de7 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/DispenseInventoryDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/DispenseInventoryDto.java @@ -3,11 +3,11 @@ */ package com.openhis.web.pharmacymanage.dto; +import java.math.BigDecimal; + import lombok.Data; import lombok.experimental.Accessors; -import java.math.BigDecimal; - /** * 药品发放和库存表连接信息 * diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/EncounterInfoPageDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/EncounterInfoPageDto.java index d8cb007f..dc1eeed6 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/EncounterInfoPageDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/EncounterInfoPageDto.java @@ -3,11 +3,11 @@ */ package com.openhis.web.pharmacymanage.dto; +import java.io.Serializable; + import lombok.Data; import lombok.experimental.Accessors; -import java.io.Serializable; - /** * 就诊人员列表 * diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/EncounterInfoSearchParam.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/EncounterInfoSearchParam.java index e9ca23a1..d46515c4 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/EncounterInfoSearchParam.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/EncounterInfoSearchParam.java @@ -3,11 +3,11 @@ */ package com.openhis.web.pharmacymanage.dto; +import java.io.Serializable; + import lombok.Data; import lombok.experimental.Accessors; -import java.io.Serializable; - /** * 处方列表查询条件 * diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/PageInitDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/PageInitDto.java index 2ec69933..d5dd601a 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/PageInitDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/PageInitDto.java @@ -3,11 +3,11 @@ */ package com.openhis.web.pharmacymanage.dto; +import java.util.List; + import lombok.Data; import lombok.experimental.Accessors; -import java.util.List; - /** * * @author wangyang diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/PrescriptionInfoDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/PrescriptionInfoDto.java index aa11d25d..0272c80a 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/PrescriptionInfoDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/PrescriptionInfoDto.java @@ -3,12 +3,12 @@ */ package com.openhis.web.pharmacymanage.dto; -import lombok.Data; -import lombok.experimental.Accessors; - import java.io.Serializable; import java.util.List; +import lombok.Data; +import lombok.experimental.Accessors; + /** * 处方信息 * diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/PrescriptionMedicineInfoDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/PrescriptionMedicineInfoDto.java index 90c8d618..c89af2d4 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/PrescriptionMedicineInfoDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/PrescriptionMedicineInfoDto.java @@ -3,12 +3,12 @@ */ package com.openhis.web.pharmacymanage.dto; -import lombok.Data; -import lombok.experimental.Accessors; - import java.io.Serializable; import java.math.BigDecimal; +import lombok.Data; +import lombok.experimental.Accessors; + /** * 就诊人员列表 * diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/PrescriptionPatientInfoDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/PrescriptionPatientInfoDto.java index 69182e78..e22cdea8 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/PrescriptionPatientInfoDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/dto/PrescriptionPatientInfoDto.java @@ -3,13 +3,13 @@ */ package com.openhis.web.pharmacymanage.dto; -import lombok.Data; -import lombok.experimental.Accessors; - import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; +import lombok.Data; +import lombok.experimental.Accessors; + /** * 患者基本信息 * diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/mapper/WesternMedicineDispenseMapper.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/mapper/WesternMedicineDispenseMapper.java index 5e367ae9..0fcabf4c 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/mapper/WesternMedicineDispenseMapper.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/pharmacymanage/mapper/WesternMedicineDispenseMapper.java @@ -3,37 +3,40 @@ */ package com.openhis.web.pharmacymanage.mapper; +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.openhis.web.pharmacymanage.dto.*; -import org.apache.ibatis.annotations.Param; -import org.springframework.stereotype.Repository; - -import java.util.List; @Repository public interface WesternMedicineDispenseMapper { /** * 就诊病人列表分页查询 + * * @param page 分页 * @param queryWrapper 查询条件 * @return 就诊病人列表 */ Page selectEncounterInfoListPage(@Param("page") Page page, - @Param(Constants.WRAPPER) QueryWrapper queryWrapper); + @Param(Constants.WRAPPER) QueryWrapper queryWrapper); /** * 患者基本信息查询 + * * @param encounterId 就诊号 * @return 患者基本信息 */ PrescriptionPatientInfoDto selectPrescriptionPatientInfo(@Param("encounterId") Long encounterId); - /** * 处方单查询 + * * @param encounterId 就诊号 * @return 处方单列表 */ @@ -41,8 +44,10 @@ public interface WesternMedicineDispenseMapper { /** * 待发药和库存信息查询 - * @param prescriptionNo 处方号 + * + * @param prescriptionNo 处方号 * @return 待发药信息 */ - List selectDispenseInventoryInfoByPrescriptionNo(@Param("prescriptionNo") String prescriptionNo); + List + selectDispenseInventoryInfoByPrescriptionNo(@Param("prescriptionNo") String prescriptionNo); } diff --git a/openhis-server/openhis-application/src/main/resources/mapper/chargemanage/OutpatientRefundAppMapper.xml b/openhis-server/openhis-application/src/main/resources/mapper/chargemanage/OutpatientRefundAppMapper.xml index 6cb71a77..93fbf507 100644 --- a/openhis-server/openhis-application/src/main/resources/mapper/chargemanage/OutpatientRefundAppMapper.xml +++ b/openhis-server/openhis-application/src/main/resources/mapper/chargemanage/OutpatientRefundAppMapper.xml @@ -24,47 +24,46 @@ AND T1.delete_flag = '0' \ No newline at end of file diff --git a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/DispenseStatus.java b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/DispenseStatus.java new file mode 100644 index 00000000..5e949485 --- /dev/null +++ b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/DispenseStatus.java @@ -0,0 +1,96 @@ +package com.openhis.common.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 药品请求状态 + * + * @author wangyang + * @date 2025-03-14 + */ +@Getter +@AllArgsConstructor +public enum DispenseStatus implements HisEnumInterface { + + /** + * 草稿 + */ + DRAFT(1, "DR", "草稿"), + + /** + * 待配药 + */ + PREPARATION(2, "PR", "待配药"), + + /** + * 待发药 + */ + IN_PROGRESS(3, "IN", "待发药"), + + /** + * 已发药 + */ + COMPLETED(4, "CO", "已发药"), + + /** + * 暂停 + */ + ON_HOLD(5, "ON", "暂停"), + + /** + * 停止 + */ + STOPPED(6, "ST", "停止"), + + /** + * 拒绝发药 + */ + DECLINED(7, "DE", "拒绝发药 已退药"), + + /** + * 已汇总 + */ + SUMMARIZED(8, "SR", "已汇总"), + + /** + * 部分发药 + */ + PART_COMPLETED(9, "PC", "部分发药"), + + /** + * 部分退药 + */ + PART_REFUND(10, "PR", "部分退药"), + + /** + * 退药中 + */ + IN_REFUND(11, "IR", "退药中"), + + /** + * 已退药 + */ + REFUNDED(12, "RE", "已退药"), + + /** + * 未知 + */ + UNKNOWN(13, "UN", "未知"); + + private Integer value; + private String code; + private String info; + + public static DispenseStatus getByValue(Integer value) { + if (value == null) { + return null; + } + for (DispenseStatus val : values()) { + if (val.getValue().equals(value)) { + return val; + } + } + return null; + } +} diff --git a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/DispenseStatusEnum.java b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/DispenseStatusEnum.java deleted file mode 100644 index 07943141..00000000 --- a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/DispenseStatusEnum.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.openhis.common.enums; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * 药品请求状态 - * - * @author wangyang - * @date 2025-03-14 - */ -@Getter -@AllArgsConstructor -public enum DispenseStatusEnum implements HisEnumInterface { - - /** - * 草稿 - */ - DRAFT(0, "DR", "草稿"), - - /** - * 待配药 - */ - PREPARATION(1, "PR", "待配药"), - - /** - * 待发药 - */ - IN_PROGRESS(2, "IN", "待发药"), - - /** - * 已发药 - */ - COMPLETED(3, "CO", "已发药"), - - /** - * 暂停 - */ - ON_HOLD(4, "ON", "暂停"), - - /** - * 停止 - */ - STOPPED(5, "ST", "停止"), - - /** - * 未知 - */ - UNKNOWN(6, "UN", "未知"), - - /** - * 拒绝发药 已汇总,部分发药,部分退药,已退药 - */ - DECLINED(7, "DE", "拒绝发药 已汇总,部分发药,部分退药,已退药"); - - private Integer value; - private String code; - private String info; - - public static DispenseStatusEnum getByValue(Integer value) { - if (value == null) { - return null; - } - for (DispenseStatusEnum val : values()) { - if (val.getValue().equals(value)) { - return val; - } - } - return null; - } -} diff --git a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/RequestStatus.java b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/RequestStatus.java index 8fb13339..71abcc59 100644 --- a/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/RequestStatus.java +++ b/openhis-server/openhis-common/src/main/java/com/openhis/common/enums/RequestStatus.java @@ -23,37 +23,42 @@ public enum RequestStatus implements HisEnumInterface { /** * 已发送 */ - COMPLETED(2, "completed", "已发送"), + ACTIVE(2, "active", "已发送"), + + /** + * 已完成 + */ + COMPLETED(3, "completed", "已完成"), /** * 暂停 */ - ON_HOLD(3, "on_hold", "暂停"), + ON_HOLD(4, "on_hold", "暂停"), /** * 撤回 */ - CANCELLED(4, "cancelled", "撤回"), + CANCELLED(5, "cancelled", "撤回"), /** * 停止 */ - STOPPED(5, "stopped", "停止"), + STOPPED(6, "stopped", "停止"), /** * 不可用 */ - ENDED(6, "ended", "不可用"), - - /** - * 未知 - */ - UNKNOWN(7, "unknown", "未知"), + ENDED(7, "ended", "不可用"), /** * 已汇总 */ - SUMMARIZED(8, "summarized", "已汇总"); + SUMMARIZED(8, "summarized", "已汇总"), + + /** + * 未知 + */ + UNKNOWN(9, "unknown", "未知"); @EnumValue private final Integer value; diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/impl/OrganizationServiceImpl.java b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/impl/OrganizationServiceImpl.java index af19a220..0c0288d3 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/impl/OrganizationServiceImpl.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/impl/OrganizationServiceImpl.java @@ -1,5 +1,9 @@ package com.openhis.administration.service.impl; +import java.util.List; + +import org.springframework.stereotype.Service; + import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -7,9 +11,6 @@ import com.openhis.administration.domain.Organization; import com.openhis.administration.mapper.OrganizationMapper; import com.openhis.administration.service.IOrganizationService; import com.openhis.common.enums.AccountStatus; -import org.springframework.stereotype.Service; - -import java.util.List; /** * 机构管理Service业务层处理 @@ -55,7 +56,7 @@ public class OrganizationServiceImpl extends ServiceImpl getList(Integer classEnum) { - return baseMapper.selectList(new LambdaQueryWrapper().select(Organization::getId, Organization::getName) - .eq(Organization::getClassEnum, classEnum)); + return baseMapper.selectList(new LambdaQueryWrapper() + .select(Organization::getId, Organization::getName).eq(Organization::getClassEnum, classEnum)); } } \ No newline at end of file diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/financial/service/IPaymentReconciliationService.java b/openhis-server/openhis-domain/src/main/java/com/openhis/financial/service/IPaymentReconciliationService.java index 090ff014..25e3eb15 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/financial/service/IPaymentReconciliationService.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/financial/service/IPaymentReconciliationService.java @@ -16,8 +16,8 @@ public interface IPaymentReconciliationService extends IService getChargeItemIdListByPayment(Long paymentId); + List getChargeItemIdListByPayment(List paymentIdList); } \ No newline at end of file diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/financial/service/impl/PaymentReconciliationServiceImpl.java b/openhis-server/openhis-domain/src/main/java/com/openhis/financial/service/impl/PaymentReconciliationServiceImpl.java index c9e49c4b..639fb487 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/financial/service/impl/PaymentReconciliationServiceImpl.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/financial/service/impl/PaymentReconciliationServiceImpl.java @@ -1,5 +1,6 @@ package com.openhis.financial.service.impl; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -30,21 +31,28 @@ public class PaymentReconciliationServiceImpl extends ServiceImpl getChargeItemIdListByPayment(Long paymentId) { + public List getChargeItemIdListByPayment(List paymentIdList) { // 根据支付id获取支付信息 - PaymentReconciliation paymentReconciliation = - paymentReconciliationMapper.selectOne(new LambdaQueryWrapper() - .select(PaymentReconciliation::getChargeItemIds).eq(PaymentReconciliation::getId, paymentId)); - if (paymentReconciliation == null) { + List paymentReconciliationList = + paymentReconciliationMapper.selectList(new LambdaQueryWrapper() + .select(PaymentReconciliation::getChargeItemIds).in(PaymentReconciliation::getId, paymentIdList)); + if (paymentReconciliationList.isEmpty()) { return null; } + // 拆解所有的chargeItemId,拼装成一个集合 + List chargeItemIdList = paymentReconciliationList.stream().map(PaymentReconciliation::getChargeItemIds) + .collect(Collectors.toList()); + List chargeItemIds = new ArrayList<>(); + for (String chargeItemId : chargeItemIdList) { + chargeItemIds.addAll(Arrays.stream(chargeItemId.split(CommonConstants.Common.COMMA)).map(Long::parseLong) + .collect(Collectors.toList())); + } // 将收费项目集合转换成列表 - return Arrays.stream(paymentReconciliation.getChargeItemIds().split(CommonConstants.Common.COMMA)) - .map(Long::parseLong).collect(Collectors.toList()); + return chargeItemIds; } } \ No newline at end of file diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/medication/service/IMedicationDispenseService.java b/openhis-server/openhis-domain/src/main/java/com/openhis/medication/service/IMedicationDispenseService.java index 0b7d859b..c8d090b1 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/medication/service/IMedicationDispenseService.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/medication/service/IMedicationDispenseService.java @@ -1,7 +1,10 @@ package com.openhis.medication.service; +import java.util.List; + import com.baomidou.mybatisplus.extension.service.IService; import com.openhis.medication.domain.MedicationDispense; +import com.openhis.medication.domain.MedicationRequest; /** * 药品发放管理Service接口 @@ -11,4 +14,10 @@ import com.openhis.medication.domain.MedicationDispense; */ public interface IMedicationDispenseService extends IService { + /** + * 新增草稿状态的药品发放信息 + * + * @param medicationRequestList 药品请求信息 + */ + void addMedicationDispense(List medicationRequestList); } \ No newline at end of file diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/medication/service/impl/MedicationDispenseServiceImpl.java b/openhis-server/openhis-domain/src/main/java/com/openhis/medication/service/impl/MedicationDispenseServiceImpl.java index 64495b73..a8da42f2 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/medication/service/impl/MedicationDispenseServiceImpl.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/medication/service/impl/MedicationDispenseServiceImpl.java @@ -1,9 +1,14 @@ package com.openhis.medication.service.impl; +import java.util.List; + import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.core.common.utils.DateUtils; +import com.openhis.common.enums.DispenseStatus; import com.openhis.medication.domain.MedicationDispense; +import com.openhis.medication.domain.MedicationRequest; import com.openhis.medication.mapper.MedicationDispenseMapper; import com.openhis.medication.service.IMedicationDispenseService; @@ -14,6 +19,59 @@ import com.openhis.medication.service.IMedicationDispenseService; * @date 2025-02-20 */ @Service -public class MedicationDispenseServiceImpl extends ServiceImpl implements IMedicationDispenseService { +public class MedicationDispenseServiceImpl extends ServiceImpl + implements IMedicationDispenseService { + /** + * 新增草稿状态的药品发放信息 + * + * @param medicationRequestList 药品请求信息 + */ + @Override + public void addMedicationDispense(List medicationRequestList) { + for (MedicationRequest medicationRequest : medicationRequestList) { + MedicationDispense medicationDispense = new MedicationDispense(); + // 药品发放id + medicationDispense.setBusNo(medicationRequest.getBusNo()); + // 药品发放状态 + medicationDispense.setStatusEnum(DispenseStatus.DRAFT.getValue()); + // 状态变更时间 + medicationDispense.setStatusChangedTime(DateUtils.getNowDate()); + // 发药类型 + medicationDispense.setDispenseEnum(medicationRequest.getCategoryEnum()); + // 药品编码 + medicationDispense.setMedicationId(medicationRequest.getMedicationId()); + // 请求数量 + medicationDispense.setQuantity(medicationRequest.getQuantity()); + // 请求单位编码 + medicationDispense.setUnitCode(medicationRequest.getUnitCode()); + // 产品批号 + medicationDispense.setLotNumber(medicationRequest.getLotNumber()); + // 患者id + medicationDispense.setPatientId(medicationRequest.getPatientId()); + // 就诊id + medicationDispense.setEncounterId(medicationRequest.getEncounterId()); + // 支持用药信息 + medicationDispense.setSupportInfo(medicationRequest.getSupportInfo()); + // 发药人 + medicationDispense.setPractitionerId(medicationRequest.getPractitionerId()); + // 发放药房 + medicationDispense.setLocationId(medicationRequest.getPerformOrg()); + // 药品请求id + medicationDispense.setMedReqId(medicationRequest.getId()); + // 已发药数量 + medicationDispense.setDispenseQuantity(0); + // 用法 + medicationDispense.setMethodCode(medicationRequest.getMethodCode()); + // 用药频次 + medicationDispense.setFrequencyCode(medicationRequest.getRateCode()); + // 单次剂量 + medicationDispense.setDose(medicationRequest.getDose()); + // 剂量单位 + medicationDispense.setDoseUnitCode(medicationRequest.getDoseUnitCode()); + // 单次最大剂量 + medicationDispense.setMaxUnit(medicationRequest.getMaxDose()); + baseMapper.insert(medicationDispense); + } + } } \ No newline at end of file From e6ded1204760180915218b3400660d873e284e76 Mon Sep 17 00:00:00 2001 From: duhe Date: Fri, 28 Mar 2025 13:53:39 +0800 Subject: [PATCH 20/30] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E8=B0=83=E6=95=B4=20up=20by=20dh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/catalog/device/components/device.js | 6 +- .../src/views/catalog/device/index.vue | 2 +- .../components/diagnosistreatment.js | 9 --- .../catalog/diagnosistreatment/index.vue | 4 +- .../catalog/disease/components/disease.js | 6 +- .../src/views/catalog/disease/index.vue | 75 +++++-------------- .../catalog/medicine/components/medicine.js | 1 - .../src/views/catalog/medicine/index.vue | 2 +- 8 files changed, 29 insertions(+), 76 deletions(-) diff --git a/openhis-ui-vue3/src/views/catalog/device/components/device.js b/openhis-ui-vue3/src/views/catalog/device/components/device.js index 475a2a00..5450c90a 100644 --- a/openhis-ui-vue3/src/views/catalog/device/components/device.js +++ b/openhis-ui-vue3/src/views/catalog/device/components/device.js @@ -1,5 +1,4 @@ import request from '@/utils/request' -import { parseStrEmpty } from "@/utils/openhis"; // 查询器材目录列表 export function getDeviceList(query) { @@ -14,8 +13,9 @@ export function getDeviceList(query) { // 查询器材目录详细 export function getDeviceOne(id) { return request({ - url: '/data-dictionary/device/information-one/' + parseStrEmpty(id), - method: 'get' + url: '/data-dictionary/device/information-one', + method: 'get', + params: { id } // 确保参数正确传递 }) } diff --git a/openhis-ui-vue3/src/views/catalog/device/index.vue b/openhis-ui-vue3/src/views/catalog/device/index.vue index 964435f1..ee427f4b 100644 --- a/openhis-ui-vue3/src/views/catalog/device/index.vue +++ b/openhis-ui-vue3/src/views/catalog/device/index.vue @@ -449,7 +449,7 @@ const filterNode = (value, data) => { function getDiseaseTreatmentList() { getDiseaseTreatmentInit().then((response) => { console.log(response, "response器材目录分类查询下拉树结构"); - deviceCategories.value = response.data.deviceCategories; + deviceCategories.value = response.data.deviceCategories.sort((a, b) => { return parseInt(a.value) - parseInt(b.value) }); statusFlagOptions.value = response.data.statusFlagOptions; exeOrganizations.value = response.data.exeOrganizations; }); diff --git a/openhis-ui-vue3/src/views/catalog/diagnosistreatment/components/diagnosistreatment.js b/openhis-ui-vue3/src/views/catalog/diagnosistreatment/components/diagnosistreatment.js index e442de4d..a91a821b 100644 --- a/openhis-ui-vue3/src/views/catalog/diagnosistreatment/components/diagnosistreatment.js +++ b/openhis-ui-vue3/src/views/catalog/diagnosistreatment/components/diagnosistreatment.js @@ -1,5 +1,4 @@ import request from '@/utils/request' -import { parseStrEmpty } from "@/utils/openhis"; // 查询诊疗目录列表 export function getDiagnosisTreatmentList(query) { @@ -37,14 +36,6 @@ export function editDiagnosisTreatment(data) { }) } -// // 删除诊疗目录 -// export function delUser(userId) { -// return request({ -// url: '/system/user/' + userId, -// method: 'delete' -// }) -// } - // 诊疗目录分类查询 export function getDiseaseTreatmentInit() { return request({ diff --git a/openhis-ui-vue3/src/views/catalog/diagnosistreatment/index.vue b/openhis-ui-vue3/src/views/catalog/diagnosistreatment/index.vue index efa94062..b1caf059 100644 --- a/openhis-ui-vue3/src/views/catalog/diagnosistreatment/index.vue +++ b/openhis-ui-vue3/src/views/catalog/diagnosistreatment/index.vue @@ -354,7 +354,7 @@ -