diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/patientmanage/appservice/impl/PatientInformationServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/patientmanage/appservice/impl/PatientInformationServiceImpl.java index fd72e0ca..8018fd8d 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/patientmanage/appservice/impl/PatientInformationServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/patientmanage/appservice/impl/PatientInformationServiceImpl.java @@ -308,12 +308,20 @@ public class PatientInformationServiceImpl implements IPatientInformationService * @return 患者信息 */ private Patient handlePatientInfo(PatientBaseInfoDto patientInfoDto) { - Patient patient = new Patient(); - patient.setId(patientInfoDto.getId()); - if (patientInfoDto.getId() == null) { + Patient patient; + if (patientInfoDto.getId() != null) { + // 更新现有患者信息 + patient = patientService.getById(patientInfoDto.getId()); + if (patient == null) { + throw new ServiceException("患者信息不存在,无法更新"); + } + } else { + // 新增患者信息 + patient = new Patient(); patient.setBusNo(assignSeqUtil.getSeq(AssignSeqEnum.PATIENT_NUM.getPrefix(), 10)); - patientInfoDto.setActiveFlag(PublicationStatus.ACTIVE.getValue()); // 默认启用 + patient.setActiveFlag(PublicationStatus.ACTIVE.getValue()); // 默认启用 } + patient.setName(patientInfoDto.getName()); // 患者姓名 patient.setPyStr(ChineseConvertUtils.toPinyinFirstLetter(patientInfoDto.getName())); // 拼音首拼 patient.setWbStr(ChineseConvertUtils.toWBFirstLetter(patientInfoDto.getName())); // 五笔首拼 @@ -337,7 +345,14 @@ public class PatientInformationServiceImpl implements IPatientInformationService patient.setDeceasedDate(patientInfoDto.getDeceasedDate()); // 死亡时间 patient.setNationalityCode(patientInfoDto.getNationalityCode());// 民族 patient.setActiveFlag(patientInfoDto.getActiveFlag());// 活动标识 - patientService.saveOrUpdate(patient); + + if (patientInfoDto.getId() != null) { + // 更新操作 + patientService.updateById(patient); + } else { + // 新增操作 + patientService.save(patient); + } return patient; } diff --git a/openhis-server-new/openhis-domain/src/main/java/com/openhis/administration/service/impl/PatientServiceImpl.java b/openhis-server-new/openhis-domain/src/main/java/com/openhis/administration/service/impl/PatientServiceImpl.java index 449d1b6e..0aa2eb59 100644 --- a/openhis-server-new/openhis-domain/src/main/java/com/openhis/administration/service/impl/PatientServiceImpl.java +++ b/openhis-server-new/openhis-domain/src/main/java/com/openhis/administration/service/impl/PatientServiceImpl.java @@ -32,18 +32,11 @@ public class PatientServiceImpl extends ServiceImpl impl */ @Override public boolean saveOrUpdatePatient(Patient patient) { - - // 身份证ID,患者ID,确定唯一患者 - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(Patient::getId, patient.getId()).eq(Patient::getIdCard, patient.getIdCard()); - - Patient existingPatient = baseMapper.selectOne(queryWrapper); - if (existingPatient != null) { - // 如果记录存在,更新记录 - patient.setId(existingPatient.getId()); + if (patient.getId() != null) { + // 如果提供了ID,则直接更新该ID的记录 return baseMapper.updateById(patient) > 0; } else { - // 如果记录不存在,插入新记录 + // 如果没有提供ID,则插入新记录 return baseMapper.insert(patient) > 0; } }