针对导入的患者,手动创建任务时,同步生成画像数据

This commit is contained in:
zhuangyuanke 2024-12-11 16:01:58 +08:00
parent 929370c09d
commit 528dbcfe65
5 changed files with 70 additions and 19 deletions

View File

@ -55,10 +55,10 @@ public class SignPatientManageRouteNode extends BaseEntity {
@Excel(name = "任务执行类型(批量还是单个执行,'批量任务BATCH_TASK,单个实时拔打任务ACTUAL_TIME_TASK'") @Excel(name = "任务执行类型(批量还是单个执行,'批量任务BATCH_TASK,单个实时拔打任务ACTUAL_TIME_TASK'")
private String taskExcuteType; private String taskExcuteType;
/** 任务计划执行时间格式YYYY-MM-dd HH:mm */ /** 任务计划执行时间格式YYYY-MM-dd HH:mm:ss */
@ApiModelProperty(value = "任务计划执行时间格式yyyy-MM-dd HH:mm") @ApiModelProperty(value = "任务计划执行时间格式yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "任务计划执行时间格式yyyy-MM-dd HH:mm", width = 30, dateFormat = "yyyy-MM-dd HH:mm") @Excel(name = "任务计划执行时间格式yyyy-MM-dd HH:mm:ss", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime nodePlanTime; private LocalDateTime nodePlanTime;

View File

@ -211,6 +211,7 @@ public class LabelFieldContentServiceImpl implements ILabelFieldContentService {
patientTaskDto.setPatientId(patientId); patientTaskDto.setPatientId(patientId);
//根据患者id查询节点富文本所需标签 //根据患者id查询节点富文本所需标签
List<SignPatientManageRouteNode> nodeList = signPatientManageRouteNodeMapper.getNodeList(patientTaskDto); List<SignPatientManageRouteNode> nodeList = signPatientManageRouteNodeMapper.getNodeList(patientTaskDto);
//同上一句代码 好像有重复zyk 20241211
List<SignPatientManageRouteNode> routeNodeContentList = signPatientManageRouteNodeMapper.getRouteNodeContentList(patientId); List<SignPatientManageRouteNode> routeNodeContentList = signPatientManageRouteNodeMapper.getRouteNodeContentList(patientId);
if (CollectionUtils.isNotEmpty(routeNodeContentList)) { if (CollectionUtils.isNotEmpty(routeNodeContentList)) {
nodeList.addAll(routeNodeContentList); nodeList.addAll(routeNodeContentList);

View File

@ -54,13 +54,18 @@ import com.xinelu.manage.mapper.signpatientmanageroutenode.SignPatientManageRout
import com.xinelu.manage.mapper.signpatientrecord.SignPatientRecordMapper; import com.xinelu.manage.mapper.signpatientrecord.SignPatientRecordMapper;
import com.xinelu.manage.mapper.signroutetriggercondition.SignRouteTriggerConditionMapper; import com.xinelu.manage.mapper.signroutetriggercondition.SignRouteTriggerConditionMapper;
import com.xinelu.manage.service.aiob.IAIOBService; import com.xinelu.manage.service.aiob.IAIOBService;
import com.xinelu.manage.service.labelfieldcontent.ILabelFieldContentService;
import com.xinelu.manage.service.labelfieldcontent.impl.LabelFieldContentServiceImpl;
import com.xinelu.manage.service.patienttaskstatistics.IPatientTaskStatisticsService; import com.xinelu.manage.service.patienttaskstatistics.IPatientTaskStatisticsService;
import com.xinelu.manage.service.propagandainfo.IPropagandaInfoService; import com.xinelu.manage.service.propagandainfo.IPropagandaInfoService;
import com.xinelu.manage.service.questioninfo.IQuestionInfoService; import com.xinelu.manage.service.questioninfo.IQuestionInfoService;
import com.xinelu.manage.service.signpatientmanageroute.ISignPatientManageRouteService; import com.xinelu.manage.service.signpatientmanageroute.ISignPatientManageRouteService;
import com.xinelu.manage.service.signpatientmanageroutenode.ISignPatientManageRouteNodeService; import com.xinelu.manage.service.signpatientmanageroutenode.ISignPatientManageRouteNodeService;
import com.xinelu.manage.service.signpatientrecord.ISignPatientRecordService;
import com.xinelu.manage.service.specialdiseasenode.ISpecialDiseaseNodeService; import com.xinelu.manage.service.specialdiseasenode.ISpecialDiseaseNodeService;
import com.xinelu.manage.service.specialdiseaseroute.ISpecialDiseaseRouteService; import com.xinelu.manage.service.specialdiseaseroute.ISpecialDiseaseRouteService;
import com.xinelu.manage.vo.labelfieldcontent.LabelField;
import com.xinelu.manage.vo.labelfieldcontent.LabelFieldAndPartitionDict;
import com.xinelu.manage.vo.labelfieldcontent.LabelFieldInfoContentVo; import com.xinelu.manage.vo.labelfieldcontent.LabelFieldInfoContentVo;
import com.xinelu.manage.vo.manualfollowup.ManualFollowPatientVO; import com.xinelu.manage.vo.manualfollowup.ManualFollowPatientVO;
import com.xinelu.manage.vo.manualfollowup.ManualFollowUpVO; import com.xinelu.manage.vo.manualfollowup.ManualFollowUpVO;
@ -145,6 +150,11 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout
@Resource @Resource
private IPatientTaskStatisticsService patientTaskStatisticsService; private IPatientTaskStatisticsService patientTaskStatisticsService;
@Resource
private ILabelFieldContentService labelFieldContentService;
@Resource @Resource
private PatientInfoMapper patientInfoMapper; private PatientInfoMapper patientInfoMapper;
@Resource @Resource
@ -226,7 +236,7 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout
//任务路由主表 新增 //任务路由主表 新增
int insertRoute = signPatientManageRouteMapper.insertSignPatientManageRoute(signPatientManageRoute); int insertRoute = signPatientManageRouteMapper.insertSignPatientManageRoute(signPatientManageRoute);
if (insertRoute < 0) { if (insertRoute < 0) {
return AjaxResult.error(901,"新增签约患者管理任务路径失败!请联系管理员!"); return AjaxResult.error(901,"患者管理任务路径失败!请联系管理员!");//新增签约
} }
// 新增节点表 // 新增节点表
List<SignPatientManageRouteNode> signPatientManageRouteNodes = new ArrayList<>(); List<SignPatientManageRouteNode> signPatientManageRouteNodes = new ArrayList<>();
@ -240,13 +250,13 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout
if(StringUtils.isNotBlank(signPatientManageRoute.getImportMainId())) if(StringUtils.isNotBlank(signPatientManageRoute.getImportMainId()))
{ routeNode.setTaskExcuteType(TaskExcuteTypeEnum.BATCH_TASK.getInfo());} { routeNode.setTaskExcuteType(TaskExcuteTypeEnum.BATCH_TASK.getInfo());}
if(Objects.isNull(signPatientManageRoute.getSignPatientRecordId())) { if(Objects.isNull(signPatientManageRoute.getSignPatientRecordId())) {
//更新 审核状态为 已审核适用场景手动创建任务 zyk 20241204 //更新 审核状态为 已审核适用场景对未签约患者 手动创建任务 zyk 20241204
routeNode.setRouteCheckStatus(RouteCheckStatusEnum.AGREE.getInfo()); routeNode.setRouteCheckStatus(RouteCheckStatusEnum.AGREE.getInfo());
} }
extracted(signPatientManageRoute, signPatientManageRouteNodes, routeNode); extracted(signPatientManageRoute, signPatientManageRouteNodes, routeNode);
} }
if (CollectionUtils.isEmpty(signPatientManageRouteNodes)) { if (CollectionUtils.isEmpty(signPatientManageRouteNodes)) {
return AjaxResult.error(901,"创建任务中至少有一个管理任务节点!"); return AjaxResult.error(901,"创建任务中至少有一个管理任务节点!可能是因为时间或其它属性信息不全导致,请完善后重试。");
} }
//批量插入任务 //批量插入任务
int insertBatchCount = signPatientManageRouteNodeMapper.insertBatch(signPatientManageRouteNodes); int insertBatchCount = signPatientManageRouteNodeMapper.insertBatch(signPatientManageRouteNodes);
@ -257,21 +267,36 @@ public class SignPatientManageRouteServiceImpl implements ISignPatientManageRout
SignPatientRecord signPatientRecord = new SignPatientRecord(); SignPatientRecord signPatientRecord = new SignPatientRecord();
if(Objects.isNull(signPatientManageRoute.getSignPatientRecordId())) { // if(Objects.isNull(signPatientManageRoute.getSignPatientRecordId())) {
//更新 签约记录的 审核状态为 已审核适用场景手动创建任务 zyk 20241204 // //更新 签约记录的 审核状态为 已审核适用场景手动创建任务 zyk 20241204
signPatientRecord.setRouteCheckStatus(RouteCheckStatusEnum.AGREE.getInfo()); // signPatientRecord.setRouteCheckStatus(RouteCheckStatusEnum.AGREE.getInfo());
} // }
else // else
{
//×××××更新 签约记录的 审核状态为 未审核适用场景手动创建任务 zyk 20241204
signPatientRecord.setRouteCheckStatus(RouteCheckStatusEnum.UNAUDITED.getInfo());
}
//×××××更新 签约记录的 审核状态为 未审核适用场景对已签约患者 手动创建任务 zyk 20241204
if(Objects.nonNull(signPatientManageRoute.getSignPatientRecordId()))
{
signPatientRecord.setRouteCheckStatus(RouteCheckStatusEnum.UNAUDITED.getInfo());
signPatientRecord.setId(signPatientManageRoute.getSignPatientRecordId()); signPatientRecord.setId(signPatientManageRoute.getSignPatientRecordId());
int updateRecord = signPatientRecordMapper.updateByPrimaryKeySelective(signPatientRecord); int updateRecord = signPatientRecordMapper.updateByPrimaryKeySelective(signPatientRecord);
if (updateRecord < 0) { if (updateRecord < 0) {
return AjaxResult.error(901,"修改签约患者管理任务路径失败!请联系管理员!"); return AjaxResult.error(901,"修改签约患者管理任务路径失败!请联系管理员!");
} }
}
//适用场景对未签约患者 手动创建任务
else
{
//获取画像信息
List<LabelFieldAndPartitionDict> labelFieldAndPartitionDictList = labelFieldContentService.groupingValue(0L,signPatientManageRoute.getPatientId());
// 画像信息保存
LabelField labelField = new LabelField();
labelField.setLabelFieldAndPartitionDictList(labelFieldAndPartitionDictList);
labelFieldContentService.insertLabelField(labelField);
// 替换手动生成的任务中的标签
signPatientManageRouteNodeService.manualCreateTaskLabelReplaceByPatientId(signPatientManageRoute.getPatientId());
}
return AjaxResult.success(); return AjaxResult.success();
} }

View File

@ -160,6 +160,11 @@ public interface ISignPatientManageRouteNodeService {
* @param signRecordId 签约记录主键 * @param signRecordId 签约记录主键
*/ */
void manualCreateTaskLabelReplace(Long signRecordId); void manualCreateTaskLabelReplace(Long signRecordId);
/**
* 手动创建的任务标签替换
* @param patientId 患者Id
*/
void manualCreateTaskLabelReplaceByPatientId(Long patientId);
/** /**
* 根据触发条件生成子路径任务 * 根据触发条件生成子路径任务

View File

@ -786,6 +786,26 @@ public class SignPatientManageRouteNodeServiceImpl implements ISignPatientManage
manageRouteQuery.setSignPatientRecordId(signRecordId); manageRouteQuery.setSignPatientRecordId(signRecordId);
manageRouteQuery.setTaskCreateType(TaskCreateTypeConstant.MANUAL_CREATE); manageRouteQuery.setTaskCreateType(TaskCreateTypeConstant.MANUAL_CREATE);
List<SignPatientManageRoute> manageRouteList = signRouteMapper.selectSignPatientManageRouteList(manageRouteQuery); List<SignPatientManageRoute> manageRouteList = signRouteMapper.selectSignPatientManageRouteList(manageRouteQuery);
manualCreateTaskLabelReplaceForManageRouteList(manageRouteList);
}
/**
* 手动创建的任务标签替换
* @param patientId 签约记录主键
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void manualCreateTaskLabelReplaceByPatientId(Long patientId) {
SignPatientManageRoute manageRouteQuery = new SignPatientManageRoute();
manageRouteQuery.setPatientId(patientId);
manageRouteQuery.setTaskCreateType(TaskCreateTypeConstant.MANUAL_CREATE);
List<SignPatientManageRoute> manageRouteList = signRouteMapper.selectSignPatientManageRouteList(manageRouteQuery);
manualCreateTaskLabelReplaceForManageRouteList(manageRouteList);
}
/**
* 手动创建的任务标签替换
* @param manageRouteList
*/
public void manualCreateTaskLabelReplaceForManageRouteList(List<SignPatientManageRoute> manageRouteList) {
if (CollectionUtils.isNotEmpty(manageRouteList)) { if (CollectionUtils.isNotEmpty(manageRouteList)) {
// 查询患者画像信息 // 查询患者画像信息
List<LabelFieldInfoContentVo> labelFieldContentList = labelFieldContentMapper.selectByPatientId(manageRouteList.get(0).getPatientId()); List<LabelFieldInfoContentVo> labelFieldContentList = labelFieldContentMapper.selectByPatientId(manageRouteList.get(0).getPatientId());
@ -852,7 +872,7 @@ public class SignPatientManageRouteNodeServiceImpl implements ISignPatientManage
// 任务统计表中插入数据 // 任务统计表中插入数据
if (CollectionUtils.isNotEmpty(manageNodeList)) { if (CollectionUtils.isNotEmpty(manageNodeList)) {
patientTaskStatisticsService.insertOrUpdate(PatientTaskStatistics.builder() patientTaskStatisticsService.insertOrUpdate(PatientTaskStatistics.builder()
.signPatientRecordId(signRecordId) .signPatientRecordId(manageRouteList.get(0).getSignPatientRecordId())
.patientId(manageRouteList.get(0).getPatientId()) .patientId(manageRouteList.get(0).getPatientId())
.taskNum(BigDecimal.valueOf(manageNodeList.size())) .taskNum(BigDecimal.valueOf(manageNodeList.size()))
.taskExecuteNum(BigDecimal.ZERO) .taskExecuteNum(BigDecimal.ZERO)