提交辅助检查相关代码

dev_2.0.0
liu 1 year ago
parent 0bde7b509a
commit fd5a8226f3

@ -54,6 +54,9 @@ public class ConfigAncillaryItem implements Serializable {
@ApiModelProperty("检查名称")
private String itemName;
@ApiModelProperty("检查部位名称")
private String locationName;
@ApiModelProperty("英文名")
private String itemNameEn;

@ -81,5 +81,11 @@ public class DiagnosisAncillaryRecord extends Model<DiagnosisAncillaryRecord> im
@TableField(exist = false)
private static final long serialVersionUID = 1L;
/**
*
*/
@TableField(exist = false)
private String itemName;
}

@ -37,6 +37,10 @@ public class DiagnosisPrimary implements Serializable {
@ApiModelProperty("初步诊断疾病ID,关联disease表ID")
private String primaryDiagnosisId;
@ApiModelProperty("初步诊断疾病名称,对应disease_name_alias,注意,这里不存在于数据库中")
@TableField(exist = false)
private String primaryDiagnosisName;
@ApiModelProperty("是否删除(0否1是)如删除,仅页面不显示")
private Integer deleteFlag;
@ -67,4 +71,6 @@ public class DiagnosisPrimary implements Serializable {
private static final long serialVersionUID = 1L;
}

@ -1,10 +1,14 @@
package com.supervision.vo.ask;
import com.fasterxml.jackson.annotation.JsonFilter;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.supervision.model.DiagnosisPrimary;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
@Data
@ApiModel
@ -25,6 +29,9 @@ public class AskAncillaryHistoryResVO {
@ApiModelProperty("关联的初步诊断ID")
private String primaryId;
@ApiModelProperty("关联的初步诊断")
private List<DiagnosisPrimaryVO> primaryList;
@ApiModelProperty("检查时间")
private LocalDateTime createTime;
}

@ -10,6 +10,7 @@
<result property="code" column="code" jdbcType="VARCHAR"/>
<result property="itemClass" column="item_class" jdbcType="VARCHAR"/>
<result property="itemName" column="item_name" jdbcType="VARCHAR"/>
<result property="locationName" column="location_name" jdbcType="VARCHAR"/>
<result property="info" column="info" jdbcType="VARCHAR"/>
<result column="call_out_question" jdbcType="ARRAY" property="callOutQuestion"
typeHandler="com.supervision.handler.StringListTypeHandler"/>
@ -21,7 +22,7 @@
<sql id="Base_Column_List">
id
,type,item_class,item_name,
,type,item_class,item_name,location_name,
info,create_user_id,create_time,
update_user_id,update_time
</sql>

@ -23,11 +23,10 @@
</sql>
<select id="queryAskPrimaryList" resultType="com.supervision.vo.ask.DiagnosisPrimaryVO">
select t1.*, t2.disease_name as primaryDiseaseName
select t1.*, if(t2.disease_name_alias is null, t2.disease_name, t2.disease_name_alias) as primaryDiseaseName
from vp_diagnosis_primary t1
left join vp_disease t2 on t1.primary_diagnosis_id = t2.id
<where>
t1.delete_flag = 0
<if test="processId != null and processId != ''">
AND process_id = #{processId}
</if>

@ -1,5 +1,7 @@
package com.supervision.controller;
import com.supervision.model.ConfigAncillaryItem;
import com.supervision.pojo.vo.AskAncillaryBatchReqVO;
import com.supervision.vo.ask.AncillaryItemReqVo;
import com.supervision.vo.ask.AskAncillaryHistoryResVO;
import com.supervision.pojo.vo.AskAncillaryResultReqVO;
@ -9,11 +11,10 @@ import com.supervision.vo.ask.DiagnosisAncillaryRecordVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
@Api(tags = "辅助检查")
@RestController
@ -29,12 +30,32 @@ public class AskAncillaryController {
return askAncillaryService.queryAncillaryItemList(ancillaryItemReqVo);
}
@ApiOperation("查询辅助检查项目目录树")
@GetMapping("queryAncillaryItemTree")
public Map<String, List<ConfigAncillaryItem>> queryAncillaryItemTree(){
return askAncillaryService.queryAncillaryItemTree();
}
@ApiOperation("批量进行辅助检查")
@PostMapping("execAskAncillaryBatch")
public void execAskAncillaryBatch(@RequestBody List<AskAncillaryBatchReqVO> reqVO){
askAncillaryService.execAskAncillaryBatch(reqVO);
}
@ApiOperation("获取批量辅助检查的结果")
@GetMapping("queryAskAncillaryBatchResult")
public void queryAskAncillaryBatchResult(String processId){
}
@Deprecated
@ApiOperation("进行辅助检查,并获取结果")
@GetMapping("queryAskAncillaryResult")
public DiagnosisAncillaryRecordVo execAskAncillaryResult(AskAncillaryResultReqVO reqVO) {
return askAncillaryService.execAskAncillaryResult(reqVO);
}
@Deprecated
@ApiOperation("查询辅助检查的历史记录")
@GetMapping("queryAskAncillaryHistory")
public List<AskAncillaryHistoryResVO> queryAskAncillaryHistory(String processId) {

@ -0,0 +1,19 @@
package com.supervision.pojo.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
public class AskAncillaryBatchReqVO {
@ApiModelProperty("体格检查项ID")
private String ancillaryItemId;
@ApiModelProperty("流程ID")
private String processId;
@ApiModelProperty("初步诊断ID,支持多选")
private List<String> primaryId;
}

@ -1,5 +1,7 @@
package com.supervision.service;
import com.supervision.model.ConfigAncillaryItem;
import com.supervision.pojo.vo.AskAncillaryBatchReqVO;
import com.supervision.vo.ask.AncillaryItemReqVo;
import com.supervision.vo.ask.AskAncillaryHistoryResVO;
import com.supervision.pojo.vo.AskAncillaryResultReqVO;
@ -7,12 +9,17 @@ import com.supervision.vo.ask.ConfigAncillaryItemResVO;
import com.supervision.vo.ask.DiagnosisAncillaryRecordVo;
import java.util.List;
import java.util.Map;
public interface AskAncillaryService {
List<ConfigAncillaryItemResVO> queryAncillaryItemList(AncillaryItemReqVo ancillaryItemReqVo);
Map<String, List<ConfigAncillaryItem>> queryAncillaryItemTree();
void execAskAncillaryBatch(List<AskAncillaryBatchReqVO> reqVO);
@Deprecated
DiagnosisAncillaryRecordVo execAskAncillaryResult(AskAncillaryResultReqVO reqVO);
List<AskAncillaryHistoryResVO> queryAskAncillaryHistory(String processId);

@ -1,18 +1,19 @@
package com.supervision.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.supervision.dto.DiseaseAncillaryDto;
import com.supervision.exception.BusinessException;
import com.supervision.model.*;
import com.supervision.model.Process;
import com.supervision.vo.ask.AncillaryItemReqVo;
import com.supervision.vo.ask.AskAncillaryHistoryResVO;
import com.supervision.pojo.vo.AskAncillaryBatchReqVO;
import com.supervision.vo.ask.*;
import com.supervision.pojo.vo.AskAncillaryResultReqVO;
import com.supervision.vo.ask.ConfigAncillaryItemResVO;
import com.supervision.service.*;
import com.supervision.util.UserUtil;
import com.supervision.vo.ask.DiagnosisAncillaryRecordVo;
import com.supervision.vo.result.ConfigAncillaryItemVo;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;
import java.util.*;
@ -33,6 +34,8 @@ public class AskAncillaryServiceImpl implements AskAncillaryService {
private final DiagnosisAncillaryRecordService diagnosisAncillaryRecordService;
private final DiagnosisPrimaryService diagnosisPrimaryService;
@Override
public List<ConfigAncillaryItemResVO> queryAncillaryItemList(AncillaryItemReqVo ancillaryItemReqVo) {
@ -40,14 +43,42 @@ public class AskAncillaryServiceImpl implements AskAncillaryService {
return ancillaryItemService.queryAncillaryItemList(ancillaryItemReqVo);
}
@Override
public Map<String, List<ConfigAncillaryItem>> queryAncillaryItemTree() {
List<ConfigAncillaryItem> list = ancillaryItemService.list();
return list.stream().collect(Collectors.groupingBy(ConfigAncillaryItem::getType));
}
@Override
public void execAskAncillaryBatch(List<AskAncillaryBatchReqVO> reqVO) {
// 首先根据process_id查新到流程ID
Process process = Optional.ofNullable(processService.getById(reqVO.stream().findAny()
.orElseThrow(() -> new BusinessException("流程ID不能为空")).getProcessId()))
.orElseThrow(() -> new BusinessException("未找到流程ID"));
for (AskAncillaryBatchReqVO item : reqVO) {
for (String primaryId : item.getPrimaryId()) {
// 执行并保存结果
execSaveDiagnosisAncillaryRecord(item.getAncillaryItemId(), primaryId, process);
}
}
}
@Deprecated
@Override
public DiagnosisAncillaryRecordVo execAskAncillaryResult(AskAncillaryResultReqVO reqVO) {
// 首先根据process_id查新到流程ID
Process process = Optional.ofNullable(processService.getById(reqVO.getProcessId())).orElseThrow(() -> new BusinessException("未找到流程ID"));
DiagnosisAncillaryRecord record = execSaveDiagnosisAncillaryRecord(reqVO.getItemId(), reqVO.getPrimaryId(), process);
//重组返回结果
DiagnosisAncillaryRecordVo recordVo = BeanUtil.toBean(record, DiagnosisAncillaryRecordVo.class);
recordVo.setAncillaryName(record.getItemName());
return recordVo;
}
private DiagnosisAncillaryRecord execSaveDiagnosisAncillaryRecord(String itemId, String primaryId, Process process) {
// 找到对应的项目的检查结果
DiseaseAncillary diseaseAncillaryQueryBean = new DiseaseAncillary();
diseaseAncillaryQueryBean.setItemId(reqVO.getItemId());
diseaseAncillaryQueryBean.setItemId(itemId);
diseaseAncillaryQueryBean.setDiseaseId(process.getDiseaseId());
DiseaseAncillaryDto diseaseAncillary = diseaseAncillaryService.queryDiseaseAncillaryDtoOne(diseaseAncillaryQueryBean, () -> {
DiseaseAncillaryDto get = new DiseaseAncillaryDto();
@ -57,34 +88,52 @@ public class AskAncillaryServiceImpl implements AskAncillaryService {
DiagnosisAncillaryRecord record = new DiagnosisAncillaryRecord();
record.setProcessId(process.getId());
record.setItemId(reqVO.getItemId());
record.setPrimaryId(reqVO.getPrimaryId());
record.setItemId(itemId);
record.setPrimaryId(primaryId);
record.setAncillaryId(diseaseAncillary.getId());
record.setResult(diseaseAncillary.getResult());
record.setCreateUserId(UserUtil.getUser().getId());
record.setUpdateUserId(UserUtil.getUser().getId());
record.insert();
//重组返回结果
DiagnosisAncillaryRecordVo diagnosisAncillaryRecordVo = new DiagnosisAncillaryRecordVo();
diagnosisAncillaryRecordVo.setProcessId(record.getProcessId());
diagnosisAncillaryRecordVo.setItemId(record.getItemId());
diagnosisAncillaryRecordVo.setAncillaryId(record.getAncillaryId());
diagnosisAncillaryRecordVo.setResult(record.getResult());
diagnosisAncillaryRecordVo.setAncillaryName(diseaseAncillary.getItemName());
return diagnosisAncillaryRecordVo;
record.setItemName(diseaseAncillary.getItemName());
return record;
}
@Override
public List<AskAncillaryHistoryResVO> queryAskAncillaryHistory(String processId) {
return diagnosisAncillaryRecordService.queryAncillaryRecord(processId)
.stream().filter(distinctPredicateNotNull(AskAncillaryHistoryResVO::getItemId)).collect(Collectors.toList());
List<AskAncillaryHistoryResVO> historyList = diagnosisAncillaryRecordService.queryAncillaryRecord(processId);
// 找到问诊流程对应的初步诊断项目
List<DiagnosisPrimaryVO> diagnosisPrimaryVOS = diagnosisPrimaryService.queryAskPrimaryList(processId);
Map<String, DiagnosisPrimaryVO> primaryMap = diagnosisPrimaryVOS.stream().collect(Collectors.toMap(DiagnosisPrimaryVO::getId, Function.identity()));
// 这里需要根据item和primaryId进行去重,对于完全相同的,只保留一个,
Map<String, List<AskAncillaryHistoryResVO>> collect = historyList.stream().collect(Collectors.groupingBy(e -> e.getItemId() + e.getPrimaryId()));
List<AskAncillaryHistoryResVO> distinctItemIdAndPrimaryIdList = new ArrayList<>();
collect.values().forEach(e -> {
Optional<AskAncillaryHistoryResVO> any = e.stream().findAny();
any.ifPresent(distinctItemIdAndPrimaryIdList::add);
});
List<AskAncillaryHistoryResVO> resList = new ArrayList<>();
// 对于item相同的,primaryId不同的,进行合并
Map<String, List<AskAncillaryHistoryResVO>> resMap = distinctItemIdAndPrimaryIdList.stream()
.collect(Collectors.groupingBy(AskAncillaryHistoryResVO::getPrimaryId));
for (Map.Entry<String, List<AskAncillaryHistoryResVO>> entry : resMap.entrySet()) {
List<AskAncillaryHistoryResVO> value = entry.getValue();
List<DiagnosisPrimaryVO> diagnosisPrimaryList = new ArrayList<>();
Optional<AskAncillaryHistoryResVO> any = value.stream().findAny();
if (any.isPresent()){
AskAncillaryHistoryResVO bean = BeanUtil.toBean(any.get(), AskAncillaryHistoryResVO.class);
for (AskAncillaryHistoryResVO node: value) {
DiagnosisPrimaryVO diagnosisPrimaryVO = primaryMap.get(node.getPrimaryId());
if (ObjectUtil.isNotEmpty(diagnosisPrimaryVO)){
diagnosisPrimaryList.add(diagnosisPrimaryVO);
}
}
bean.setPrimaryId(null);
bean.setPrimaryList(diagnosisPrimaryList);
resList.add(bean);
}
}
return resList;
}
public static <K> Predicate<K> distinctPredicateNotNull(Function<K,Object> function){
ConcurrentHashMap<Object, Boolean> map = new ConcurrentHashMap<>();
return t-> null != function.apply(t) && null == map.putIfAbsent(function.apply(t), true);
}
}

@ -3,7 +3,6 @@ package com.supervision.service.impl;
import cn.hutool.core.lang.Assert;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.lock.annotation.Lock4j;
import com.supervision.constant.UserTokenConstant;
import com.supervision.service.DiagnoseHallService;
import com.supervision.service.ProcessService;
import com.supervision.vo.result.DiagnoseProcessReqVo;
@ -11,8 +10,6 @@ import com.supervision.vo.result.DiagnoseProcessResVo;
import com.supervision.usermanage.UserResourceCheck;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
@Service
@ -24,7 +21,6 @@ public class DiagnoseHallServiceImpl implements DiagnoseHallService {
private final ProcessService processService;
@Lock4j(name = "achieveDiagnoseResource")
@Override
public boolean achieveDiagnoseResource() {
// 如果小于数字人最大连接数,则可以连接

Loading…
Cancel
Save