diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/regdoctorstation/utils/RegPrescriptionUtils.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/regdoctorstation/utils/RegPrescriptionUtils.java index 1a5dcae06..83a499a85 100755 --- a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/regdoctorstation/utils/RegPrescriptionUtils.java +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/regdoctorstation/utils/RegPrescriptionUtils.java @@ -26,9 +26,11 @@ public class RegPrescriptionUtils { if (medicineList == null || medicineList.isEmpty()) { return; } - // 1. 按诊断ID分组(不同诊断必须分开) + // 1. 按诊断ID分组(不同诊断必须分开,null值归为一组) Map> diagnosisGroups = - medicineList.stream().collect(Collectors.groupingBy(RegAdviceSaveDto::getConditionDefinitionId)); + medicineList.stream().collect(Collectors.groupingBy(dto -> + dto.getConditionDefinitionId() != null ? dto.getConditionDefinitionId() : 0L + )); // 2. 处理每个诊断组 diagnosisGroups.values().forEach(this::processDiagnosisGroup); } @@ -40,14 +42,18 @@ public class RegPrescriptionUtils { if (diagnosisGroup.isEmpty()) { return; } - // 1. 按药品性质分组 + // 1. 按药品性质分组(null值归为普通药品) Map> pharmacologyGroups = - diagnosisGroup.stream().collect(Collectors.groupingBy(RegAdviceSaveDto::getPharmacologyCategoryCode)); + diagnosisGroup.stream().collect(Collectors.groupingBy(dto -> + dto.getPharmacologyCategoryCode() != null ? dto.getPharmacologyCategoryCode() : "0" + )); // 2. 处理每个药品性质组 pharmacologyGroups.values().forEach(pharmaGroup -> { // 2.1 按治疗类型分组 Map> therapyGroups = - pharmaGroup.stream().collect(Collectors.groupingBy(RegAdviceSaveDto::getTherapyEnum)); + pharmaGroup.stream().collect(Collectors.groupingBy(dto -> + dto.getTherapyEnum() != null ? dto.getTherapyEnum() : 0 + )); // 2.2 为每组治疗类型生成唯一处方号 therapyGroups.forEach((therapyEnum, group) -> { String prescriptionNo = generatePrescriptionNo(pharmaGroup.get(0).getPharmacologyCategoryCode()); @@ -60,6 +66,9 @@ public class RegPrescriptionUtils { * 根据药品性质生成处方号(前缀规则与原工具类一致) */ private String generatePrescriptionNo(String pharmacologyCategoryCode) { + if (pharmacologyCategoryCode == null || pharmacologyCategoryCode.isEmpty()) { + return assignSeqUtil.getSeq(AssignSeqEnum.PRESCRIPTION_COMMON_NO.getPrefix(), 8); + } switch (pharmacologyCategoryCode) { case "2": // 麻醉药品 return assignSeqUtil.getSeq(AssignSeqEnum.PRESCRIPTION_NARCOTIC_NO.getPrefix(), 8); @@ -74,4 +83,4 @@ public class RegPrescriptionUtils { } } -} +} \ No newline at end of file