fix: 修复门诊医生站手术申请单保存后未生成手术医嘱 (#318)
- 在 RequestFormManageAppServiceImpl.saveRequestForm 方法中添加手术医嘱生成逻辑 - 当 typeCode 为 PROCEDURE(24) 时,额外生成 ServiceRequest 手术医嘱 - 同时生成对应的 ChargeItem 收费项目 - 医嘱状态设置为 DRAFT(待签发) - 关联申请单的 prescriptionNo 处方号
This commit is contained in:
@@ -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[] {"申请单"}));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user