bug 467 569
This commit is contained in:
@@ -239,8 +239,8 @@ public class AdviceUtils {
|
||||
BigDecimal totalQuantity = matchedInventories.stream()
|
||||
.map(dto -> dto.getQuantity() != null ? dto.getQuantity() : BigDecimal.ZERO)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
BigDecimal requestQuantity = medicationRequestUseExe.getExecuteTimesNum()
|
||||
.multiply(medicationRequestUseExe.getMinUnitQuantity());
|
||||
// 只校验单次执行所需数量,不按全部执行次数校验(长期医嘱多次执行由发药流程逐次管控库存)
|
||||
BigDecimal requestQuantity = medicationRequestUseExe.getMinUnitQuantity();
|
||||
if (requestQuantity.compareTo(totalQuantity) > 0) {
|
||||
tipsList
|
||||
.add("【" + medicationRequestUseExe.getBusNo() + "】在" + matchedInventories.get(0).getLocationName() + "库存不足");
|
||||
|
||||
@@ -628,8 +628,8 @@ public class ATDManageAppServiceImpl implements IATDManageAppService {
|
||||
// 查询患者待取的药品
|
||||
List<MedicationDispense> medicationDispenseList = medicationDispenseService
|
||||
.list(new LambdaQueryWrapper<MedicationDispense>().eq(MedicationDispense::getEncounterId, encounterId)
|
||||
.in(MedicationDispense::getStatusEnum, DispenseStatus.PREPARATION.getValue(),
|
||||
DispenseStatus.PENDING_REFUND.getValue(), DispenseStatus.SUMMARIZED.getValue())
|
||||
.in(MedicationDispense::getStatusEnum, DispenseStatus.EXECUTED.getValue(),
|
||||
DispenseStatus.PENDING_REFUND.getValue(), DispenseStatus.SUBMITTED.getValue())
|
||||
.eq(MedicationDispense::getDeleteFlag, DelFlag.NO.getCode()));
|
||||
if (!medicationDispenseList.isEmpty()) {
|
||||
return R.fail("患者有待取的药品,请先取药");
|
||||
@@ -696,8 +696,8 @@ public class ATDManageAppServiceImpl implements IATDManageAppService {
|
||||
// 查询患者待取的药品
|
||||
List<MedicationDispense> medicationDispenseList = medicationDispenseService
|
||||
.list(new LambdaQueryWrapper<MedicationDispense>().eq(MedicationDispense::getEncounterId, encounterId)
|
||||
.in(MedicationDispense::getStatusEnum, DispenseStatus.PREPARATION.getValue(),
|
||||
DispenseStatus.PENDING_REFUND.getValue(), DispenseStatus.SUMMARIZED.getValue())
|
||||
.in(MedicationDispense::getStatusEnum, DispenseStatus.EXECUTED.getValue(),
|
||||
DispenseStatus.PENDING_REFUND.getValue(), DispenseStatus.SUBMITTED.getValue())
|
||||
.eq(MedicationDispense::getDeleteFlag, DelFlag.NO.getCode()));
|
||||
if (!medicationDispenseList.isEmpty()) {
|
||||
return R.fail("患者有待取的药品,请先取药");
|
||||
@@ -762,8 +762,8 @@ public class ATDManageAppServiceImpl implements IATDManageAppService {
|
||||
@Override
|
||||
public R<?> getPendingMedication(Long encounterId) {
|
||||
Integer tenantId = SecurityUtils.getLoginUser().getTenantId();
|
||||
return R.ok(atdManageAppMapper.getPendingMedication(encounterId, DispenseStatus.PREPARATION.getValue(),
|
||||
DispenseStatus.SUMMARIZED.getValue(), RequestStatus.CANCELLED.getValue(), tenantId));
|
||||
return R.ok(atdManageAppMapper.getPendingMedication(encounterId, DispenseStatus.EXECUTED.getValue(),
|
||||
DispenseStatus.SUBMITTED.getValue(), RequestStatus.CANCELLED.getValue(), tenantId));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -545,8 +545,8 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
|
||||
for (MedicationDispense medicationDispense : longMedDispenseList) {
|
||||
if (DispenseStatus.COMPLETED.getValue().equals(medicationDispense.getStatusEnum())) {
|
||||
longMedDispensedList.add(medicationDispense);
|
||||
} else if (DispenseStatus.PREPARATION.getValue().equals(medicationDispense.getStatusEnum())
|
||||
|| DispenseStatus.SUMMARIZED.getValue().equals(medicationDispense.getStatusEnum())) {
|
||||
} else if (DispenseStatus.EXECUTED.getValue().equals(medicationDispense.getStatusEnum())
|
||||
|| DispenseStatus.SUBMITTED.getValue().equals(medicationDispense.getStatusEnum())) {
|
||||
longMedUndispenseList.add(medicationDispense);
|
||||
}
|
||||
}
|
||||
@@ -573,8 +573,8 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
|
||||
for (MedicationDispense medicationDispense : tempMedDispenseList) {
|
||||
if (DispenseStatus.COMPLETED.getValue().equals(medicationDispense.getStatusEnum())) {
|
||||
tempMedDispensedList.add(medicationDispense);
|
||||
} else if (DispenseStatus.PREPARATION.getValue().equals(medicationDispense.getStatusEnum())
|
||||
|| DispenseStatus.SUMMARIZED.getValue().equals(medicationDispense.getStatusEnum())) {
|
||||
} else if (DispenseStatus.EXECUTED.getValue().equals(medicationDispense.getStatusEnum())
|
||||
|| DispenseStatus.SUBMITTED.getValue().equals(medicationDispense.getStatusEnum())) {
|
||||
tempMedUndispenseList.add(medicationDispense);
|
||||
}
|
||||
}
|
||||
@@ -1063,7 +1063,7 @@ public class AdviceProcessAppServiceImpl implements IAdviceProcessAppService {
|
||||
.eq(MedicationDispense::getMedReqId, tempMedicationRequest.getId())
|
||||
.set(MedicationDispense::getProcedureId, procedureId)
|
||||
.set(MedicationDispense::getPlannedDispenseTime, expectedDate)
|
||||
.set(MedicationDispense::getStatusEnum, DispenseStatus.PREPARATION.getValue()));
|
||||
.set(MedicationDispense::getStatusEnum, DispenseStatus.EXECUTED.getValue()));
|
||||
|
||||
// 更新账单状态
|
||||
chargeItemService.update(
|
||||
|
||||
@@ -119,7 +119,7 @@ public class MedicineSummaryAppServiceImpl implements IMedicineSummaryAppService
|
||||
LocationForm.BED.getValue(), ParticipantType.ADMITTING_DOCTOR.getCode(),
|
||||
AccountType.PERSONAL_CASH_ACCOUNT.getCode(), ChargeItemStatus.BILLABLE.getValue(),
|
||||
ChargeItemStatus.BILLED.getValue(), ChargeItemStatus.REFUNDED.getValue(),
|
||||
DispenseStatus.SUMMARIZED.getValue());
|
||||
DispenseStatus.SUBMITTED.getValue());
|
||||
medicineDispenseFormPage.getRecords().forEach(e -> {
|
||||
// 是否皮试
|
||||
e.setSkinTestFlag_enumText(EnumUtils.getInfoByValue(Whether.class, e.getSkinTestFlag()));
|
||||
@@ -156,8 +156,8 @@ public class MedicineSummaryAppServiceImpl implements IMedicineSummaryAppService
|
||||
|
||||
// 汇总单分页列表
|
||||
Page<MedicineSummaryFormDto> medicineSummaryFormPage = medicineSummaryAppMapper.selectMedicineSummaryFormPage(
|
||||
new Page<>(pageNo, pageSize), queryWrapper, DispenseStatus.COMPLETED.getValue(),
|
||||
DispenseStatus.PREPARATION.getValue(), SupplyType.SUMMARY_DISPENSE.getValue());
|
||||
new Page<>(pageNo, pageSize), queryWrapper, DispenseStatus.PREPARATION.getValue(),
|
||||
SupplyType.SUMMARY_DISPENSE.getValue());
|
||||
medicineSummaryFormPage.getRecords().forEach(e -> {
|
||||
// 发药状态(汇总单展示文案)
|
||||
e.setStatusEnum_enumText(getSummaryFormStatusText(e.getStatusEnum()));
|
||||
@@ -203,7 +203,7 @@ public class MedicineSummaryAppServiceImpl implements IMedicineSummaryAppService
|
||||
throw new ServiceException("未找到药品发放信息");
|
||||
}
|
||||
if (medicationDispenseList.stream().map(MedicationDispense::getStatusEnum)
|
||||
.anyMatch(x -> x.equals(DispenseStatus.SUMMARIZED.getValue()))) {
|
||||
.anyMatch(x -> x.equals(DispenseStatus.SUBMITTED.getValue()))) {
|
||||
throw new ServiceException("药品已汇总,请勿重复汇总");
|
||||
}
|
||||
// 查询药品信息
|
||||
@@ -295,7 +295,7 @@ public class MedicineSummaryAppServiceImpl implements IMedicineSummaryAppService
|
||||
* 汇总发药单状态展示文案(药品医嘱状态映射表:汇总申请→已提交,发药→已发药)
|
||||
*/
|
||||
private String getSummaryFormStatusText(Integer statusEnum) {
|
||||
if (DispenseStatus.PREPARATION.getValue().equals(statusEnum)) {
|
||||
if (DispenseStatus.EXECUTED.getValue().equals(statusEnum)) {
|
||||
return "已提交";
|
||||
}
|
||||
if (DispenseStatus.COMPLETED.getValue().equals(statusEnum)) {
|
||||
|
||||
@@ -46,14 +46,13 @@ public interface MedicineSummaryAppMapper {
|
||||
*
|
||||
* @param page 分页信息
|
||||
* @param queryWrapper 查询条件
|
||||
* @param completed 发药状态:已完成
|
||||
* @param preparation 发药状态:待配药
|
||||
* @param summaryDispense 单据类型:汇总发药
|
||||
* @return 汇总单列表
|
||||
*/
|
||||
Page<MedicineSummaryFormDto> selectMedicineSummaryFormPage(@Param("page") Page<MedicineSummaryFormDto> page,
|
||||
@Param(Constants.WRAPPER) QueryWrapper<DispenseFormSearchParam> queryWrapper,
|
||||
@Param("completed") Integer completed, @Param("preparation") Integer preparation,
|
||||
@Param("preparation") Integer preparation,
|
||||
@Param("summaryDispense") Integer summaryDispense);
|
||||
|
||||
/**
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.openhis.web.pharmacymanage.appservice.impl;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.core.common.core.domain.R;
|
||||
import com.core.common.exception.ServiceException;
|
||||
@@ -192,7 +193,7 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
|
||||
= westernMedicineDispenseMapper.selectEncounterInfoListPage(new Page<>(pageNo, pageSize), queryWrapper,
|
||||
statusEnum, DispenseStatus.IN_PROGRESS.getValue(), DispenseStatus.COMPLETED.getValue(),
|
||||
DispenseStatus.PREPARATION.getValue(), DispenseStatus.PREPARED.getValue(),
|
||||
DispenseStatus.SUMMARIZED.getValue());
|
||||
DispenseStatus.SUMMARIZED.getValue(), DispenseStatus.SUBMITTED.getValue());
|
||||
encounterInfoPage.getRecords().forEach(encounterInfo -> {
|
||||
// 性别
|
||||
encounterInfo.setGenderEnum_enumText(
|
||||
@@ -230,7 +231,8 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
|
||||
= westernMedicineDispenseMapper.selectMedicineDispenseOrderPage(new Page<>(pageNo, pageSize), queryWrapper,
|
||||
DispenseStatus.IN_PROGRESS.getValue(), DispenseStatus.COMPLETED.getValue(),
|
||||
DispenseStatus.PREPARATION.getValue(), DispenseStatus.PREPARED.getValue(), dispenseStatus,
|
||||
PublicationStatus.ACTIVE.getValue(), DispenseStatus.SUMMARIZED.getValue());
|
||||
PublicationStatus.ACTIVE.getValue(), DispenseStatus.SUMMARIZED.getValue(),
|
||||
DispenseStatus.SUBMITTED.getValue());
|
||||
medicineDispenseOrderPage.getRecords().forEach(medicineDispenseOrder -> {
|
||||
// 发药状态
|
||||
medicineDispenseOrder.setStatusEnum_enumText(
|
||||
@@ -254,6 +256,9 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
|
||||
*/
|
||||
@Override
|
||||
public R<?> medicinePrepare(List<DispenseItemDto> dispenseMedicineList) {
|
||||
if (dispenseMedicineList == null || dispenseMedicineList.isEmpty()) {
|
||||
throw new ServiceException("配药信息不能为空");
|
||||
}
|
||||
// 追溯码集合
|
||||
List<String> traceNoList
|
||||
= dispenseMedicineList.stream().map(DispenseItemDto::getTraceNo).collect(Collectors.toList());
|
||||
@@ -355,7 +360,7 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
|
||||
}
|
||||
// 发药单状态校验
|
||||
if (unDispenseInventoryList.stream().map(UnDispenseInventoryDto::getDispenseStatus)
|
||||
.anyMatch(x -> !x.equals(DispenseStatus.PREPARED.getValue()))) {
|
||||
.anyMatch(x -> !x.equals(DispenseStatus.SUBMITTED.getValue()))) {
|
||||
throw new ServiceException("发药失败,请检查发药单状态");
|
||||
}
|
||||
|
||||
@@ -471,6 +476,11 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
|
||||
}
|
||||
// 药品发放更新
|
||||
medicationDispenseService.updateBatchById(dispenseUpdateList);
|
||||
// 更新医嘱状态为已完成
|
||||
List<Long> medReqIdList = unDispenseInventoryList.stream()
|
||||
.map(UnDispenseInventoryDto::getRequestId).distinct().collect(Collectors.toList());
|
||||
medicationRequestService.update(new MedicationRequest().setStatusEnum(RequestStatus.DISPENSE_COMPLETED.getValue()),
|
||||
new LambdaUpdateWrapper<MedicationRequest>().in(MedicationRequest::getId, medReqIdList));
|
||||
// 库存更新
|
||||
inventoryItemService.updateBatchById(inventoryItemList);
|
||||
// 追溯码管理表数据追加
|
||||
|
||||
@@ -35,7 +35,8 @@ public interface WesternMedicineDispenseMapper {
|
||||
@Param(Constants.WRAPPER) QueryWrapper<EncounterInfoSearchParam> queryWrapper,
|
||||
@Param("statusEnum") Integer statusEnum, @Param("inProgress") Integer inProgress,
|
||||
@Param("completed") Integer completed, @Param("preparation") Integer preparation,
|
||||
@Param("prepared") Integer prepared, @Param("summarized") Integer summarized);
|
||||
@Param("prepared") Integer prepared, @Param("summarized") Integer summarized,
|
||||
@Param("submitted") Integer submitted);
|
||||
|
||||
/**
|
||||
* 发药单查询
|
||||
@@ -55,7 +56,7 @@ public interface WesternMedicineDispenseMapper {
|
||||
@Param("inProgress") Integer inProgress, @Param("completed") Integer completed,
|
||||
@Param("preparation") Integer preparation, @Param("prepared") Integer prepared,
|
||||
@Param("dispenseStatus") Integer dispenseStatus, @Param("active") Integer active,
|
||||
@Param("summarized") Integer summarized);
|
||||
@Param("summarized") Integer summarized, @Param("submitted") Integer submitted);
|
||||
|
||||
/**
|
||||
* 获取配药人下拉选列表
|
||||
|
||||
@@ -239,7 +239,7 @@
|
||||
ON wsr.source_location_id = al.id
|
||||
AND al.delete_flag = '0'
|
||||
WHERE wsr.delete_flag = '0'
|
||||
AND wsd.status_enum IN (#{preparation}, #{completed})
|
||||
AND wsd.status_enum = #{preparation}
|
||||
AND wsr.type_enum = #{summaryDispense}
|
||||
GROUP BY wsr.tenant_id,
|
||||
wsr.bus_no ,
|
||||
|
||||
@@ -105,6 +105,9 @@
|
||||
<if test="statusEnum == 4">
|
||||
T4.status_enum = #{completed}
|
||||
</if>
|
||||
<if test="statusEnum == 18">
|
||||
T4.status_enum = #{submitted}
|
||||
</if>
|
||||
AND T4.summary_no IS NOT NULL
|
||||
AND T4.summary_no != ''
|
||||
) AS ii
|
||||
@@ -277,6 +280,9 @@
|
||||
<if test="dispenseStatus == 4">
|
||||
T1.status_enum = #{completed}
|
||||
</if>
|
||||
<if test="dispenseStatus == 18">
|
||||
T1.status_enum = #{submitted}
|
||||
</if>
|
||||
AND T14.inventory_status_enum = #{active}
|
||||
ORDER BY prescription_no DESC
|
||||
) AS ii
|
||||
|
||||
@@ -29,9 +29,9 @@ public enum DispenseStatus implements HisEnumInterface {
|
||||
IN_PROGRESS(3, "IN", "待发药"),
|
||||
|
||||
/**
|
||||
* 已发药
|
||||
* 已发药/已完成
|
||||
*/
|
||||
COMPLETED(4, "CO", "已发放"),
|
||||
COMPLETED(4, "CO", "已发药/已完成"),
|
||||
|
||||
/**
|
||||
* 暂停
|
||||
@@ -91,7 +91,17 @@ public enum DispenseStatus implements HisEnumInterface {
|
||||
/**
|
||||
* 已退药
|
||||
*/
|
||||
RETURNED(17, "RT", "已退药");
|
||||
RETURNED(17, "RT", "已退药"),
|
||||
|
||||
/**
|
||||
* 已执行
|
||||
*/
|
||||
EXECUTED(11, "EX", "已执行"),
|
||||
|
||||
/**
|
||||
* 已提交
|
||||
*/
|
||||
SUBMITTED(18, "SB", "已提交");
|
||||
|
||||
private Integer value;
|
||||
private String code;
|
||||
|
||||
@@ -25,9 +25,9 @@ public enum RequestStatus implements HisEnumInterface {
|
||||
ACTIVE(2, "active", "已发送"),
|
||||
|
||||
/**
|
||||
* 已完成
|
||||
* 已校对
|
||||
*/
|
||||
COMPLETED(3, "completed", "已完成"),
|
||||
COMPLETED(3, "completed", "已校对"),
|
||||
|
||||
/**
|
||||
* 暂停
|
||||
@@ -72,7 +72,12 @@ public enum RequestStatus implements HisEnumInterface {
|
||||
/**
|
||||
* 已接收(检查申请:医技科室已接单)
|
||||
*/
|
||||
CHECK_RECEIVED(12, "check_received", "已接收");
|
||||
CHECK_RECEIVED(12, "check_received", "已接收"),
|
||||
|
||||
/**
|
||||
* 已完成(药品发药完成)
|
||||
*/
|
||||
DISPENSE_COMPLETED(20, "dispense_completed", "已完成");
|
||||
|
||||
@EnumValue
|
||||
private final Integer value;
|
||||
|
||||
@@ -141,7 +141,7 @@ public class MedicationDispenseServiceImpl extends ServiceImpl<MedicationDispens
|
||||
// 药品发放id
|
||||
medicationDispense.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.MEDICATION_DIS_NO.getPrefix(), 4));
|
||||
// 药品发放状态
|
||||
medicationDispense.setStatusEnum(DispenseStatus.PREPARATION.getValue());
|
||||
medicationDispense.setStatusEnum(DispenseStatus.EXECUTED.getValue());
|
||||
// 状态变更时间
|
||||
medicationDispense.setStatusChangedTime(DateUtils.getNowDate());
|
||||
// 发药类型
|
||||
@@ -300,7 +300,7 @@ public class MedicationDispenseServiceImpl extends ServiceImpl<MedicationDispens
|
||||
baseMapper.update(null,
|
||||
new LambdaUpdateWrapper<MedicationDispense>()
|
||||
.set(MedicationDispense::getStatusEnum,
|
||||
DispenseStatus.SUMMARIZED.getValue())
|
||||
DispenseStatus.SUBMITTED.getValue())
|
||||
.set(MedicationDispense::getStatusChangedTime, DateUtils.getNowDate())
|
||||
.set(MedicationDispense::getSummaryNo, busNo)
|
||||
.in(MedicationDispense::getId, medDispenseId)
|
||||
@@ -332,7 +332,7 @@ public class MedicationDispenseServiceImpl extends ServiceImpl<MedicationDispens
|
||||
int result = baseMapper.update(null,
|
||||
new LambdaUpdateWrapper<MedicationDispense>()
|
||||
.set(MedicationDispense::getStatusEnum,
|
||||
DispenseStatus.PREPARATION.getValue())
|
||||
DispenseStatus.EXECUTED.getValue())
|
||||
.set(MedicationDispense::getSummaryNo, null)
|
||||
.in(MedicationDispense::getSummaryNo, summaryNoList)
|
||||
.eq(MedicationDispense::getDeleteFlag, DelFlag.NO.getCode()));
|
||||
@@ -368,6 +368,6 @@ public class MedicationDispenseServiceImpl extends ServiceImpl<MedicationDispens
|
||||
.in(MedicationDispense::getSummaryNo, summaryNoList)
|
||||
.eq(MedicationDispense::getDeleteFlag, DelFlag.NO.getCode())
|
||||
.eq(MedicationDispense::getStatusEnum,
|
||||
DispenseStatus.SUMMARIZED.getValue()));
|
||||
DispenseStatus.SUBMITTED.getValue()));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user