diff --git a/virtual-patient-model/src/main/java/com/supervision/vo/ask/ProcessMedicalResVo.java b/virtual-patient-model/src/main/java/com/supervision/vo/ask/ProcessMedicalResVo.java index 48278419..bc90385c 100644 --- a/virtual-patient-model/src/main/java/com/supervision/vo/ask/ProcessMedicalResVo.java +++ b/virtual-patient-model/src/main/java/com/supervision/vo/ask/ProcessMedicalResVo.java @@ -15,6 +15,16 @@ public class ProcessMedicalResVo extends ProcessMedical { */ private String processNo; + /** + * 实例类型 0:学习实例 1:考核实例 + */ + private String processType; + + /** + * 用户id + */ + private String userId; + /** * 病例编号 */ @@ -80,5 +90,10 @@ public class ProcessMedicalResVo extends ProcessMedical { */ private String patientHabitation; + /** + * 结束问诊时间 + */ + private LocalDateTime finishAskTime; + } diff --git a/virtual-patient-model/src/main/java/com/supervision/vo/ask/ProcessMedicalViewDetailResVo.java b/virtual-patient-model/src/main/java/com/supervision/vo/ask/ProcessMedicalViewDetailResVo.java new file mode 100644 index 00000000..e8c87645 --- /dev/null +++ b/virtual-patient-model/src/main/java/com/supervision/vo/ask/ProcessMedicalViewDetailResVo.java @@ -0,0 +1,29 @@ +package com.supervision.vo.ask; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; +import java.util.List; + +@Data +@EqualsAndHashCode(callSuper = true) +public class ProcessMedicalViewDetailResVo extends ProcessMedicalResVo{ + + @ApiModelProperty("初步诊断疾病名") + private List primaryDiseaseNameList; + + @ApiModelProperty("体格检查名列表") + private List physicalDiagnosisNameList; + + @ApiModelProperty("辅助检查名列表") + private List ancillaryDiagnosisNameList; + + @ApiModelProperty("用户名") + private String userName; + + @ApiModelProperty("结束问诊日期") + private LocalDateTime finishDiagnosisTime; + +} diff --git a/virtual-patient-model/src/main/resources/mapper/ProcessMedicalMapper.xml b/virtual-patient-model/src/main/resources/mapper/ProcessMedicalMapper.xml index 013591b2..f9da3247 100644 --- a/virtual-patient-model/src/main/resources/mapper/ProcessMedicalMapper.xml +++ b/virtual-patient-model/src/main/resources/mapper/ProcessMedicalMapper.xml @@ -42,6 +42,7 @@ pr.update_time as recentTime, pr.process_type as processType, pr.user_id as userId, + pr.finish_ask_time as finishAskTime, pm.process_id as processId, pm.disease_id as diseaseId, mr.id as medicalRecId, diff --git a/virtual-patient-web/src/main/java/com/supervision/controller/MedicalRecordController.java b/virtual-patient-web/src/main/java/com/supervision/controller/MedicalRecordController.java index 6b1bf4e7..0a47e682 100644 --- a/virtual-patient-web/src/main/java/com/supervision/controller/MedicalRecordController.java +++ b/virtual-patient-web/src/main/java/com/supervision/controller/MedicalRecordController.java @@ -1,20 +1,16 @@ package com.supervision.controller; -import cn.hutool.core.util.StrUtil; -import com.supervision.exception.BusinessException; -import com.supervision.model.DiagnosisQaRecord; import com.supervision.model.ProcessMedical; import com.supervision.service.MedicalRecordService; import com.supervision.vo.ask.ProcessMedicalResVo; +import com.supervision.vo.ask.ProcessMedicalViewDetailResVo; import io.swagger.annotations.Api; -import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; -import java.util.List; @Slf4j @Api(tags = "电子病例") @@ -45,4 +41,12 @@ public class MedicalRecordController { return medicalRecordService.findByProcessId(processId); } + + + @ApiOperation("电子病例视图") + @GetMapping("queryViewDetails") + public ProcessMedicalViewDetailResVo queryViewDetail(@ApiParam("流程id") @RequestParam("processId") String processId){ + + return medicalRecordService.queryViewDetail(processId); + } } diff --git a/virtual-patient-web/src/main/java/com/supervision/service/MedicalRecordService.java b/virtual-patient-web/src/main/java/com/supervision/service/MedicalRecordService.java index 388eb0e7..585fcfcd 100644 --- a/virtual-patient-web/src/main/java/com/supervision/service/MedicalRecordService.java +++ b/virtual-patient-web/src/main/java/com/supervision/service/MedicalRecordService.java @@ -1,10 +1,9 @@ package com.supervision.service; -import com.supervision.model.DiagnosisQaRecord; import com.supervision.model.ProcessMedical; import com.supervision.vo.ask.ProcessMedicalResVo; +import com.supervision.vo.ask.ProcessMedicalViewDetailResVo; -import java.util.List; public interface MedicalRecordService { boolean saveMedicalRecord(ProcessMedical processMedical); @@ -12,4 +11,6 @@ public interface MedicalRecordService { ProcessMedicalResVo findByProcessId(String processId); boolean updateMedicalRecord(ProcessMedical processMedical); + + ProcessMedicalViewDetailResVo queryViewDetail(String processId); } diff --git a/virtual-patient-web/src/main/java/com/supervision/service/impl/MedicalRecordServiceImpl.java b/virtual-patient-web/src/main/java/com/supervision/service/impl/MedicalRecordServiceImpl.java index 12e1027a..8662c478 100644 --- a/virtual-patient-web/src/main/java/com/supervision/service/impl/MedicalRecordServiceImpl.java +++ b/virtual-patient-web/src/main/java/com/supervision/service/impl/MedicalRecordServiceImpl.java @@ -1,16 +1,20 @@ package com.supervision.service.impl; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.lang.Assert; import com.supervision.model.Process; import com.supervision.model.ProcessMedical; -import com.supervision.service.MedicalRecordService; -import com.supervision.service.ProcessMedicalService; -import com.supervision.service.ProcessService; -import com.supervision.vo.ask.ProcessMedicalResVo; +import com.supervision.model.User; +import com.supervision.service.*; +import com.supervision.vo.ask.*; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + @Service @RequiredArgsConstructor @@ -21,6 +25,14 @@ public class MedicalRecordServiceImpl implements MedicalRecordService { private final ProcessService processService; + private final DiagnosisPrimaryService diagnosisPrimaryService; + + private final DiagnosisPhysicalRecordService diagnosisPhysicalRecordService; + + private final DiagnosisAncillaryRecordService diagnosisAncillaryRecordService; + + private final UserService userService; + @Override public boolean saveMedicalRecord(ProcessMedical processMedical) { @@ -45,6 +57,42 @@ public class MedicalRecordServiceImpl implements MedicalRecordService { return processMedicalService.updateById(processMedical); } + @Override + public ProcessMedicalViewDetailResVo queryViewDetail(String processId) { + + Assert.notEmpty(processId,"流程id不能为空"); + + // 1.获取电子病例基本信息 + ProcessMedicalResVo processMedicalResVo = this.findByProcessId(processId); + if (Objects.isNull(processMedicalResVo)){ + return null; + } + ProcessMedicalViewDetailResVo resultVo = BeanUtil.toBean(processMedicalResVo, ProcessMedicalViewDetailResVo.class); + + // 2. 获取初步诊断疾病信息 + List diagnosisPrimaryVOS = diagnosisPrimaryService.queryAskPrimaryList(processId); + resultVo.setPrimaryDiseaseNameList( + diagnosisPrimaryVOS.stream().map(DiagnosisPrimaryVO::getPrimaryDiseaseName).distinct().collect(Collectors.toList())); + + // 3. 获取检查项目信息 + // 3.1 体格检查 + List askPhysicalHistoryResVOS = diagnosisPhysicalRecordService.queryAskPhysicalHistory(processId); + resultVo.setPhysicalDiagnosisNameList( + askPhysicalHistoryResVOS.stream().map(AskPhysicalHistoryResVO::getToolName).distinct().collect(Collectors.toList())); + // 3.2 辅助检查 + List askAncillaryHistoryResVOS = diagnosisAncillaryRecordService.queryAncillaryRecord(processId); + resultVo.setAncillaryDiagnosisNameList( + askAncillaryHistoryResVOS.stream().map(AskAncillaryHistoryResVO::getItemName).distinct().collect(Collectors.toList())); + + // 4. 获取用户姓名 + User user = userService.getById(processMedicalResVo.getUserId()); + if (Objects.nonNull(user)){ + resultVo.setUserName(user.getName()); + } + + return resultVo; + } + private void saveAssert(ProcessMedical processMedical){ Assert.notEmpty(processMedical.getProcessId(),"流程id不为空");