|
|
|
|
@@ -451,10 +451,12 @@ public class DoctorStationChineseMedicalAppServiceImpl implements IDoctorStation
|
|
|
|
|
// 删除费用项
|
|
|
|
|
iChargeItemService.deleteByServiceTableAndId(CommonConstants.TableName.MED_MEDICATION_REQUEST,
|
|
|
|
|
adviceSaveDto.getRequestId());
|
|
|
|
|
// 删除代煎费
|
|
|
|
|
iChargeItemService.remove(new LambdaQueryWrapper<ChargeItem>()
|
|
|
|
|
.eq(ChargeItem::getPrescriptionNo, adviceSaveDto.getPrescriptionNo())
|
|
|
|
|
.eq(ChargeItem::getProductId, sufferingDefinitionId));
|
|
|
|
|
// 删除代煎费(按处方号精确清理)
|
|
|
|
|
if (adviceSaveDto.getPrescriptionNo() != null) {
|
|
|
|
|
iChargeItemService.remove(new LambdaQueryWrapper<ChargeItem>()
|
|
|
|
|
.eq(ChargeItem::getPrescriptionNo, adviceSaveDto.getPrescriptionNo())
|
|
|
|
|
.eq(ChargeItem::getProductId, sufferingDefinitionId));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -464,6 +466,7 @@ public class DoctorStationChineseMedicalAppServiceImpl implements IDoctorStation
|
|
|
|
|
.filter(e -> e.getGroupId() != null)
|
|
|
|
|
.collect(Collectors.groupingBy(AdviceSaveDto::getGroupId))
|
|
|
|
|
.forEach((groupId, groupList) -> {
|
|
|
|
|
// 先查询当前groupId是否已经被签发生成过处方号
|
|
|
|
|
List<MedicationRequest> list = iMedicationRequestService
|
|
|
|
|
.list(new LambdaQueryWrapper<MedicationRequest>()
|
|
|
|
|
.eq(MedicationRequest::getGroupId, groupId));
|
|
|
|
|
@@ -613,8 +616,12 @@ public class DoctorStationChineseMedicalAppServiceImpl implements IDoctorStation
|
|
|
|
|
Long encounterDiagnosisId = medicineList.get(0).getEncounterDiagnosisId();
|
|
|
|
|
// 中药付数
|
|
|
|
|
BigDecimal chineseHerbsDoseQuantity = medicineList.get(0).getChineseHerbsDoseQuantity();
|
|
|
|
|
// 处方号
|
|
|
|
|
String prescriptionNo = insertOrUpdateList.get(0).getPrescriptionNo();
|
|
|
|
|
// 收集所有处方号(不同分组可能有不同处方号)
|
|
|
|
|
List<String> prescriptionNos = insertOrUpdateList.stream()
|
|
|
|
|
.map(AdviceSaveDto::getPrescriptionNo)
|
|
|
|
|
.filter(Objects::nonNull)
|
|
|
|
|
.distinct()
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
// 签发时,生成中药代煎的账单
|
|
|
|
|
if (Whether.YES.getValue().equals(sufferingFlag) && is_sign) {
|
|
|
|
|
@@ -623,9 +630,10 @@ public class DoctorStationChineseMedicalAppServiceImpl implements IDoctorStation
|
|
|
|
|
AdviceBaseDto adviceBaseDto = new AdviceBaseDto();
|
|
|
|
|
adviceBaseDto.setAdviceDefinitionId(sufferingDefinitionId); // 医嘱定义id
|
|
|
|
|
|
|
|
|
|
// 先删除中药代煎的账单
|
|
|
|
|
// 先删除该就诊关联的所有中药代煎账单
|
|
|
|
|
iChargeItemService.remove(new LambdaQueryWrapper<ChargeItem>()
|
|
|
|
|
.eq(ChargeItem::getPrescriptionNo, prescriptionNo).eq(ChargeItem::getProductId, sufferingDefinitionId));
|
|
|
|
|
.eq(ChargeItem::getEncounterId, encounterId)
|
|
|
|
|
.eq(ChargeItem::getProductId, sufferingDefinitionId));
|
|
|
|
|
|
|
|
|
|
// 对应的诊疗医嘱信息
|
|
|
|
|
AdviceBaseDto activityAdviceBaseDto = iDoctorStationAdviceAppService.getAdviceBaseInfo(adviceBaseDto, null,
|
|
|
|
|
@@ -634,40 +642,42 @@ public class DoctorStationChineseMedicalAppServiceImpl implements IDoctorStation
|
|
|
|
|
// 费用定价
|
|
|
|
|
AdvicePriceDto advicePriceDto = activityAdviceBaseDto.getPriceList().get(0);
|
|
|
|
|
if (advicePriceDto != null) {
|
|
|
|
|
// 生成账单
|
|
|
|
|
chargeItem = new ChargeItem();
|
|
|
|
|
chargeItem.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源
|
|
|
|
|
chargeItem.setPrescriptionNo(prescriptionNo); // 处方号
|
|
|
|
|
chargeItem.setStatusEnum(ChargeItemStatus.PLANNED.getValue()); // 收费状态
|
|
|
|
|
chargeItem.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.CHARGE_ITEM_NO.getPrefix(), 4));
|
|
|
|
|
chargeItem.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源
|
|
|
|
|
chargeItem.setPatientId(patientId); // 患者
|
|
|
|
|
chargeItem.setContextEnum(ChargeItemContext.ACTIVITY.getValue()); // 类型
|
|
|
|
|
chargeItem.setEncounterId(encounterId); // 就诊id
|
|
|
|
|
chargeItem.setDefinitionId(advicePriceDto.getDefinitionId()); // 费用定价ID
|
|
|
|
|
chargeItem.setEntererId(SecurityUtils.getLoginUser().getPractitionerId());// 开立人ID
|
|
|
|
|
chargeItem.setRequestingOrgId(orgId); // 开立科室
|
|
|
|
|
chargeItem.setEnteredDate(curDate); // 开立时间
|
|
|
|
|
chargeItem.setProductTable(activityAdviceBaseDto.getAdviceTableName());// 产品所在表
|
|
|
|
|
chargeItem.setProductId(activityAdviceBaseDto.getAdviceDefinitionId());// 收费项id
|
|
|
|
|
chargeItem.setAccountId(accountId);// 关联账户ID
|
|
|
|
|
chargeItem.setConditionId(conditionId); // 诊断id
|
|
|
|
|
chargeItem.setEncounterDiagnosisId(encounterDiagnosisId); // 就诊诊断id
|
|
|
|
|
// 为每个处方号分别生成代煎账单
|
|
|
|
|
for (String prescriptionNo : prescriptionNos) {
|
|
|
|
|
chargeItem = new ChargeItem();
|
|
|
|
|
chargeItem.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue()); // 生成来源
|
|
|
|
|
chargeItem.setPrescriptionNo(prescriptionNo); // 处方号
|
|
|
|
|
chargeItem.setStatusEnum(ChargeItemStatus.PLANNED.getValue()); // 收费状态
|
|
|
|
|
chargeItem.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.CHARGE_ITEM_NO.getPrefix(), 4));
|
|
|
|
|
chargeItem.setPatientId(patientId); // 患者
|
|
|
|
|
chargeItem.setContextEnum(ChargeItemContext.ACTIVITY.getValue()); // 类型
|
|
|
|
|
chargeItem.setEncounterId(encounterId); // 就诊id
|
|
|
|
|
chargeItem.setDefinitionId(advicePriceDto.getDefinitionId()); // 费用定价ID
|
|
|
|
|
chargeItem.setEntererId(SecurityUtils.getLoginUser().getPractitionerId());// 开立人ID
|
|
|
|
|
chargeItem.setRequestingOrgId(orgId); // 开立科室
|
|
|
|
|
chargeItem.setEnteredDate(curDate); // 开立时间
|
|
|
|
|
chargeItem.setProductTable(activityAdviceBaseDto.getAdviceTableName());// 产品所在表
|
|
|
|
|
chargeItem.setProductId(activityAdviceBaseDto.getAdviceDefinitionId());// 收费项id
|
|
|
|
|
chargeItem.setAccountId(accountId);// 关联账户ID
|
|
|
|
|
chargeItem.setConditionId(conditionId); // 诊断id
|
|
|
|
|
chargeItem.setEncounterDiagnosisId(encounterDiagnosisId); // 就诊诊断id
|
|
|
|
|
|
|
|
|
|
chargeItem.setQuantityValue(quantity); // 数量
|
|
|
|
|
chargeItem.setQuantityUnit(activityAdviceBaseDto.getUnitCode()); // 单位
|
|
|
|
|
chargeItem.setUnitPrice(advicePriceDto.getPrice()); // 单价
|
|
|
|
|
// 计算总价,保留6位小数
|
|
|
|
|
BigDecimal qty = quantity;
|
|
|
|
|
chargeItem.setTotalPrice(qty.multiply(advicePriceDto.getPrice()).setScale(6, RoundingMode.HALF_UP)); // 总价
|
|
|
|
|
chargeItem.setTcmFlag(Whether.YES.getValue());// 中医标识
|
|
|
|
|
iChargeItemService.save(chargeItem);
|
|
|
|
|
chargeItem.setQuantityValue(quantity); // 数量
|
|
|
|
|
chargeItem.setQuantityUnit(activityAdviceBaseDto.getUnitCode()); // 单位
|
|
|
|
|
chargeItem.setUnitPrice(advicePriceDto.getPrice()); // 单价
|
|
|
|
|
// 计算总价,保留6位小数
|
|
|
|
|
BigDecimal qty = quantity;
|
|
|
|
|
chargeItem.setTotalPrice(qty.multiply(advicePriceDto.getPrice()).setScale(6, RoundingMode.HALF_UP)); // 总价
|
|
|
|
|
chargeItem.setTcmFlag(Whether.YES.getValue());// 中医标识
|
|
|
|
|
iChargeItemService.save(chargeItem);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else if (Whether.NO.getValue().equals(sufferingFlag)) {
|
|
|
|
|
// 删除中药代煎的账单
|
|
|
|
|
// 删除该就诊关联的所有中药代煎账单
|
|
|
|
|
iChargeItemService.remove(new LambdaQueryWrapper<ChargeItem>()
|
|
|
|
|
.eq(ChargeItem::getPrescriptionNo, prescriptionNo).eq(ChargeItem::getProductId, sufferingDefinitionId));
|
|
|
|
|
.eq(ChargeItem::getEncounterId, encounterId)
|
|
|
|
|
.eq(ChargeItem::getProductId, sufferingDefinitionId));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 签发时,把草稿状态的账单更新为待收费[中医]
|
|
|
|
|
|