diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/IDoctorStationEmrAppService.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/IDoctorStationEmrAppService.java index 32a18f44..d422e4ac 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/IDoctorStationEmrAppService.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/IDoctorStationEmrAppService.java @@ -52,4 +52,10 @@ public interface IDoctorStationEmrAppService { */ R deleteEmrTemplate(Long id); + /** + * 获取病历详情 + * @param encounterId 就诊id + * @return 病历详情 + */ + R getEmrDetail(Long encounterId); } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationEmrAppServiceImpl.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationEmrAppServiceImpl.java index 3520e9f8..535b2627 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationEmrAppServiceImpl.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationEmrAppServiceImpl.java @@ -13,8 +13,11 @@ import org.springframework.stereotype.Service; import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.TypeReference; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.core.common.core.domain.R; +import com.core.common.utils.SecurityUtils; +import com.openhis.common.enums.BindingType; import com.openhis.document.domain.Emr; import com.openhis.document.domain.EmrDetail; import com.openhis.document.domain.EmrDict; @@ -56,7 +59,16 @@ public class DoctorStationEmrAppServiceImpl implements IDoctorStationEmrAppServi Emr emr = new Emr(); BeanUtils.copyProperties(patientEmrDto, emr); String contextStr = patientEmrDto.getContextJson().toString(); - boolean saveSuccess = emrService.save(emr.setContextJson(contextStr)); + Emr patientEmr = emrService.getOne(new LambdaQueryWrapper().eq(Emr::getEncounterId, emr.getEncounterId())); + boolean saveSuccess; + // 如果已经保存病历,再次保存走更新 + if (patientEmr != null) { + saveSuccess = emrService.update(new LambdaUpdateWrapper().eq(Emr::getEncounterId, emr.getEncounterId()) + .set(Emr::getContextJson, contextStr)); + } else { + saveSuccess = + emrService.save(emr.setContextJson(contextStr).setRecordId(SecurityUtils.getLoginUser().getUserId())); + } if (!saveSuccess) { return R.fail(); } @@ -69,14 +81,18 @@ public class DoctorStationEmrAppServiceImpl implements IDoctorStationEmrAppServi // 遍历病历内容map for (Map.Entry entry : emrContextMap.entrySet()) { EmrDetail emrDetail = new EmrDetail(); - emrDetail.setEmrId(emr.getId()); if (!emrDictList.isEmpty() && emrDictList.contains(entry.getKey())) { + emrDetail.setEmrId(emr.getId()); emrDetail.setEmrKey(entry.getKey()); emrDetail.setEmrValue(entry.getValue()); } emrDetailList.add(emrDetail); } - boolean save = emrDetailService.saveBatch(emrDetailList); + boolean save = true; + if (!emrDictList.isEmpty()) { + save = emrDetailService.saveBatch(emrDetailList); + } + return save ? R.ok() : R.fail(); } @@ -95,6 +111,18 @@ public class DoctorStationEmrAppServiceImpl implements IDoctorStationEmrAppServi return R.ok(page); } + /** + * 获取病历详情 + * + * @param encounterId 就诊id + * @return 病历详情 + */ + @Override + public R getEmrDetail(Long encounterId) { + Emr emrDetail = emrService.getOne(new LambdaQueryWrapper().eq(Emr::getEncounterId, encounterId)); + return R.ok(emrDetail); + } + /** * 保存病历模板 * @@ -104,7 +132,11 @@ public class DoctorStationEmrAppServiceImpl implements IDoctorStationEmrAppServi @Override public R addEmrTemplate(EmrTemplateDto emrTemplateDto) { EmrTemplate emrTemplate = new EmrTemplate(); + String contextStr = emrTemplateDto.getContextJson().toString(); BeanUtils.copyProperties(emrTemplateDto, emrTemplate); + // todo 获取当前登录用户的科室id + emrTemplate.setUserId(SecurityUtils.getLoginUser().getUserId()); + emrTemplate.setContextJson(contextStr); return emrTemplateService.save(emrTemplate) ? R.ok() : R.fail(); } @@ -119,9 +151,14 @@ public class DoctorStationEmrAppServiceImpl implements IDoctorStationEmrAppServi @Override public R getEmrTemplate(EmrTemplateDto emrTemplateDto, Integer pageNo, Integer pageSize) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.like(EmrTemplate::getTemplateName, emrTemplateDto.getTemplateName()) - .eq(EmrTemplate::getUseScopeCode, emrTemplateDto.getUseScopeCode()) - .eq(EmrTemplate::getUserId, emrTemplateDto.getUserId()); + queryWrapper + .eq(EmrTemplate::getUseScopeCode, emrTemplateDto.getUseScopeCode()); + if (emrTemplateDto.getTemplateName() != null){ + queryWrapper.like(EmrTemplate::getTemplateName, emrTemplateDto.getTemplateName()); + } + if (BindingType.PERSONAL.getValue().toString().equals(emrTemplateDto.getUseScopeCode())) { + queryWrapper.eq(EmrTemplate::getUserId, SecurityUtils.getLoginUser().getUserId()); + } Page emrTemplatePage = emrTemplateService.page(new Page<>(pageNo, pageSize), queryWrapper); return R.ok(emrTemplatePage); } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/controller/DoctorStationEmrController.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/controller/DoctorStationEmrController.java index 841a0655..e3128a14 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/controller/DoctorStationEmrController.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/controller/DoctorStationEmrController.java @@ -51,6 +51,17 @@ public class DoctorStationEmrController { return iDoctorStationEmrAppService.getPatientEmrHistory(patientEmrDto, pageNo, pageSize); } + /** + * 获取患者病历详情 + * + * @param encounterId 就诊id + * @return 病历详情 + */ + @GetMapping("/emr-detail") + public R getEmrDetail(@RequestParam(value = "encounterId") Long encounterId) { + return iDoctorStationEmrAppService.getEmrDetail(encounterId); + } + /** * 保存病历模板 * @@ -84,7 +95,7 @@ public class DoctorStationEmrController { * @return 操作结果 */ @DeleteMapping("emr-template") - public R deleteEmrTemplate(@RequestParam Long id) { + public R deleteEmrTemplate(@RequestParam(value = "id") Long id) { return iDoctorStationEmrAppService.deleteEmrTemplate(id); } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/EmrTemplateDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/EmrTemplateDto.java index 7d56fc28..1bc1f0e4 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/EmrTemplateDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/EmrTemplateDto.java @@ -3,6 +3,7 @@ */ package com.openhis.web.doctorstation.dto; +import com.alibaba.fastjson2.JSONObject; import lombok.Data; import lombok.experimental.Accessors; @@ -26,7 +27,7 @@ public class EmrTemplateDto implements Serializable { private String templateName; /** 模板类型 */ - private String templateTypeEnum; + private String templateTypeCode; /** 使用范围 */ @NotBlank @@ -36,6 +37,6 @@ public class EmrTemplateDto implements Serializable { private Long userId; /** 病历内容 */ - private String contextJson; + private JSONObject contextJson; } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/PatientEmrDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/PatientEmrDto.java index 50c73b8e..4aa902a5 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/PatientEmrDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/PatientEmrDto.java @@ -36,7 +36,6 @@ public class PatientEmrDto implements Serializable { private String emrStatus; /** 记录人 */ - @NotNull private Long recordId; diff --git a/openhis-server/openhis-application/src/main/resources/mapper/doctorstation/DoctorStationDiagnosisAppMapper.xml b/openhis-server/openhis-application/src/main/resources/mapper/doctorstation/DoctorStationDiagnosisAppMapper.xml index dc2318cf..92f22d6e 100644 --- a/openhis-server/openhis-application/src/main/resources/mapper/doctorstation/DoctorStationDiagnosisAppMapper.xml +++ b/openhis-server/openhis-application/src/main/resources/mapper/doctorstation/DoctorStationDiagnosisAppMapper.xml @@ -78,7 +78,7 @@