提交辅助检查相关代码

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

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

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

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

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

@ -23,11 +23,10 @@
</sql> </sql>
<select id="queryAskPrimaryList" resultType="com.supervision.vo.ask.DiagnosisPrimaryVO"> <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 from vp_diagnosis_primary t1
left join vp_disease t2 on t1.primary_diagnosis_id = t2.id left join vp_disease t2 on t1.primary_diagnosis_id = t2.id
<where> <where>
t1.delete_flag = 0
<if test="processId != null and processId != ''"> <if test="processId != null and processId != ''">
AND process_id = #{processId} AND process_id = #{processId}
</if> </if>

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

@ -1,18 +1,19 @@
package com.supervision.service.impl; 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.dto.DiseaseAncillaryDto;
import com.supervision.exception.BusinessException; import com.supervision.exception.BusinessException;
import com.supervision.model.*; import com.supervision.model.*;
import com.supervision.model.Process; import com.supervision.model.Process;
import com.supervision.vo.ask.AncillaryItemReqVo; import com.supervision.pojo.vo.AskAncillaryBatchReqVO;
import com.supervision.vo.ask.AskAncillaryHistoryResVO; import com.supervision.vo.ask.*;
import com.supervision.pojo.vo.AskAncillaryResultReqVO; import com.supervision.pojo.vo.AskAncillaryResultReqVO;
import com.supervision.vo.ask.ConfigAncillaryItemResVO;
import com.supervision.service.*; import com.supervision.service.*;
import com.supervision.util.UserUtil; import com.supervision.util.UserUtil;
import com.supervision.vo.ask.DiagnosisAncillaryRecordVo;
import com.supervision.vo.result.ConfigAncillaryItemVo; import com.supervision.vo.result.ConfigAncillaryItemVo;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.*; import java.util.*;
@ -33,6 +34,8 @@ public class AskAncillaryServiceImpl implements AskAncillaryService {
private final DiagnosisAncillaryRecordService diagnosisAncillaryRecordService; private final DiagnosisAncillaryRecordService diagnosisAncillaryRecordService;
private final DiagnosisPrimaryService diagnosisPrimaryService;
@Override @Override
public List<ConfigAncillaryItemResVO> queryAncillaryItemList(AncillaryItemReqVo ancillaryItemReqVo) { public List<ConfigAncillaryItemResVO> queryAncillaryItemList(AncillaryItemReqVo ancillaryItemReqVo) {
@ -40,14 +43,42 @@ public class AskAncillaryServiceImpl implements AskAncillaryService {
return ancillaryItemService.queryAncillaryItemList(ancillaryItemReqVo); 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 @Override
public DiagnosisAncillaryRecordVo execAskAncillaryResult(AskAncillaryResultReqVO reqVO) { public DiagnosisAncillaryRecordVo execAskAncillaryResult(AskAncillaryResultReqVO reqVO) {
// 首先根据process_id查新到流程ID // 首先根据process_id查新到流程ID
Process process = Optional.ofNullable(processService.getById(reqVO.getProcessId())).orElseThrow(() -> new BusinessException("未找到流程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(); DiseaseAncillary diseaseAncillaryQueryBean = new DiseaseAncillary();
diseaseAncillaryQueryBean.setItemId(reqVO.getItemId()); diseaseAncillaryQueryBean.setItemId(itemId);
diseaseAncillaryQueryBean.setDiseaseId(process.getDiseaseId()); diseaseAncillaryQueryBean.setDiseaseId(process.getDiseaseId());
DiseaseAncillaryDto diseaseAncillary = diseaseAncillaryService.queryDiseaseAncillaryDtoOne(diseaseAncillaryQueryBean, () -> { DiseaseAncillaryDto diseaseAncillary = diseaseAncillaryService.queryDiseaseAncillaryDtoOne(diseaseAncillaryQueryBean, () -> {
DiseaseAncillaryDto get = new DiseaseAncillaryDto(); DiseaseAncillaryDto get = new DiseaseAncillaryDto();
@ -57,34 +88,52 @@ public class AskAncillaryServiceImpl implements AskAncillaryService {
DiagnosisAncillaryRecord record = new DiagnosisAncillaryRecord(); DiagnosisAncillaryRecord record = new DiagnosisAncillaryRecord();
record.setProcessId(process.getId()); record.setProcessId(process.getId());
record.setItemId(reqVO.getItemId()); record.setItemId(itemId);
record.setPrimaryId(reqVO.getPrimaryId()); record.setPrimaryId(primaryId);
record.setAncillaryId(diseaseAncillary.getId()); record.setAncillaryId(diseaseAncillary.getId());
record.setResult(diseaseAncillary.getResult()); record.setResult(diseaseAncillary.getResult());
record.setCreateUserId(UserUtil.getUser().getId()); record.setCreateUserId(UserUtil.getUser().getId());
record.setUpdateUserId(UserUtil.getUser().getId()); record.setUpdateUserId(UserUtil.getUser().getId());
record.insert(); record.insert();
record.setItemName(diseaseAncillary.getItemName());
return record;
//重组返回结果
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;
} }
@Override @Override
public List<AskAncillaryHistoryResVO> queryAskAncillaryHistory(String processId) { public List<AskAncillaryHistoryResVO> queryAskAncillaryHistory(String processId) {
return diagnosisAncillaryRecordService.queryAncillaryRecord(processId) List<AskAncillaryHistoryResVO> historyList = diagnosisAncillaryRecordService.queryAncillaryRecord(processId);
.stream().filter(distinctPredicateNotNull(AskAncillaryHistoryResVO::getItemId)).collect(Collectors.toList()); // 找到问诊流程对应的初步诊断项目
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);
} }
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);
} }
return resList;
}
} }

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

Loading…
Cancel
Save