fix: 修复门诊医生站手术申请单保存后未生成手术医嘱 (#318)

- 在 RequestFormManageAppServiceImpl.saveRequestForm 方法中添加手术医嘱生成逻辑
- 当 typeCode 为 PROCEDURE(24) 时,额外生成 ServiceRequest 手术医嘱
- 同时生成对应的 ChargeItem 收费项目
- 医嘱状态设置为 DRAFT(待签发)
- 关联申请单的 prescriptionNo 处方号
This commit is contained in:
2026-03-31 16:35:34 +08:00
parent c052ea7c39
commit a8a205aa48

View File

@@ -28,6 +28,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
@@ -211,6 +212,52 @@ public class RequestFormManageAppServiceImpl implements IRequestFormManageAppSer
}
}
// 如果是手术申请单,需要额外生成手术医嘱
if (ActivityDefCategory.PROCEDURE.getCode().equals(typeCode)) {
// 生成手术医嘱
ServiceRequest surgeryServiceRequest = new ServiceRequest();
surgeryServiceRequest.setStatusEnum(RequestStatus.DRAFT.getValue());
surgeryServiceRequest.setBusNo(String.format("%04d", (int) (Math.random() * 10000)));
surgeryServiceRequest.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue());
surgeryServiceRequest.setPrescriptionNo(prescriptionNo);
surgeryServiceRequest.setTherapyEnum(TherapyTimeType.TEMPORARY.getValue());
surgeryServiceRequest.setQuantity(BigDecimal.valueOf(1));
surgeryServiceRequest.setUnitCode("");
surgeryServiceRequest.setCategoryEnum(4); // 4-手术
// 从 activityList 中获取第一个手术 ID 作为活动 ID
if (!activityList.isEmpty()) {
surgeryServiceRequest.setActivityId(activityList.get(0).getAdviceDefinitionId());
}
surgeryServiceRequest.setPatientId(patientId);
surgeryServiceRequest.setRequesterId(practitionerId);
surgeryServiceRequest.setEncounterId(encounterId);
surgeryServiceRequest.setAuthoredTime(curDate);
surgeryServiceRequest.setOrgId(orgId);
iServiceRequestService.save(surgeryServiceRequest);
// 生成手术收费项目
ChargeItem surgeryChargeItem = new ChargeItem();
surgeryChargeItem.setStatusEnum(ChargeItemStatus.DRAFT.getValue());
surgeryChargeItem.setBusNo(AssignSeqEnum.CHARGE_ITEM_NO.getPrefix().concat(surgeryServiceRequest.getBusNo()));
surgeryChargeItem.setGenerateSourceEnum(GenerateSource.DOCTOR_PRESCRIPTION.getValue());
surgeryChargeItem.setPatientId(patientId);
surgeryChargeItem.setContextEnum(3); // 3-诊疗
surgeryChargeItem.setEncounterId(encounterId);
surgeryChargeItem.setEntererId(practitionerId);
surgeryChargeItem.setEnteredDate(curDate);
surgeryChargeItem.setServiceTable(CommonConstants.TableName.WOR_SERVICE_REQUEST);
surgeryChargeItem.setServiceId(surgeryServiceRequest.getId());
surgeryChargeItem.setProductTable(CommonConstants.TableName.WOR_ACTIVITY_DEFINITION);
if (!activityList.isEmpty()) {
surgeryChargeItem.setProductId(activityList.get(0).getAdviceDefinitionId());
}
surgeryChargeItem.setAccountId(activityList.isEmpty() ? null : activityList.get(0).getAccountId());
surgeryChargeItem.setRequestingOrgId(orgId);
surgeryChargeItem.setQuantityValue(BigDecimal.valueOf(1));
surgeryChargeItem.setQuantityUnit("");
iChargeItemService.save(surgeryChargeItem);
}
return R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"申请单"}));
}