专病路径

This commit is contained in:
zhangheng 2024-05-30 10:53:38 +08:00
parent 4d2ed89d41
commit 8c8764bf0d

View File

@ -143,7 +143,7 @@ public class SpecialDiseaseNodeServiceImpl implements ISpecialDiseaseNodeService
if (StringUtils.isNotBlank(diseaseNode.getRouteNodeName()) && Objects.nonNull(diseaseNode.getRouteNodeDay()) && StringUtils.isNotBlank(diseaseNode.getTaskType()) && StringUtils.isNotBlank(diseaseNode.getTaskSubdivision()) && StringUtils.isNotBlank(diseaseNode.getTaskStatus())) { if (StringUtils.isNotBlank(diseaseNode.getRouteNodeName()) && Objects.nonNull(diseaseNode.getRouteNodeDay()) && StringUtils.isNotBlank(diseaseNode.getTaskType()) && StringUtils.isNotBlank(diseaseNode.getTaskSubdivision()) && StringUtils.isNotBlank(diseaseNode.getTaskStatus())) {
diseaseNode.setRouteId(specialDiseaseRoute.getId()); diseaseNode.setRouteId(specialDiseaseRoute.getId());
diseaseNode.setRouteName(specialDiseaseNode.getRouteName()); diseaseNode.setRouteName(specialDiseaseNode.getRouteName());
diseaseNode.setTemplateType(diseaseNode.getTaskSubdivisiontemplateType()); diseaseNode.setTemplateType(StringUtils.isBlank(diseaseNode.getTaskSubdivisiontemplateType()) ? "" : diseaseNode.getTaskSubdivisiontemplateType());
diseaseNode.setUpdateTime(LocalDateTime.now()); diseaseNode.setUpdateTime(LocalDateTime.now());
diseaseNode.setUpdateBy(SecurityUtils.getUsername()); diseaseNode.setUpdateBy(SecurityUtils.getUsername());
specialDiseaseNodeVOS.add(diseaseNode); specialDiseaseNodeVOS.add(diseaseNode);
@ -206,88 +206,89 @@ public class SpecialDiseaseNodeServiceImpl implements ISpecialDiseaseNodeService
return AjaxResult.success(specialDiseaseNodeMapper.updateSpecialDiseaseNode(specialDiseaseNode)); return AjaxResult.success(specialDiseaseNodeMapper.updateSpecialDiseaseNode(specialDiseaseNode));
} }
@Override @Override
public List<List<PatientNodeParamsCurrent>> getParams(Long id, Long patientId) { public List<List<PatientNodeParamsCurrent>> getParams(Long id, Long patientId) {
List<List<PatientNodeParamsCurrent>> retList = new ArrayList<>(); List<List<PatientNodeParamsCurrent>> retList = new ArrayList<>();
// 根据节点id查询是否有已经维护的参数 // 根据节点id查询是否有已经维护的参数
PatientNodeParamsCurrent paramsQuery = new PatientNodeParamsCurrent(); PatientNodeParamsCurrent paramsQuery = new PatientNodeParamsCurrent();
paramsQuery.setPatientId(patientId); paramsQuery.setPatientId(patientId);
paramsQuery.setRouteNodeId(id); paramsQuery.setRouteNodeId(id);
List<PatientNodeParamsCurrent> nodeParams = patientNodeParamsCurrentMapper.selectPatientNodeParamsCurrentList(paramsQuery); List<PatientNodeParamsCurrent> nodeParams = patientNodeParamsCurrentMapper.selectPatientNodeParamsCurrentList(paramsQuery);
// 查询SpecialDiseaseNode中包含的可编辑标签 // 查询SpecialDiseaseNode中包含的可编辑标签
List<PatientNodeParamsCurrent> diseaseNodeParams = new ArrayList<>(); List<PatientNodeParamsCurrent> diseaseNodeParams = new ArrayList<>();
SpecialDiseaseNode specialDiseaseNode = specialDiseaseNodeMapper.selectSpecialDiseaseNodeById(id); SpecialDiseaseNode specialDiseaseNode = specialDiseaseNodeMapper.selectSpecialDiseaseNodeById(id);
if (StringUtils.isNotBlank(specialDiseaseNode.getNodeContent()) && specialDiseaseNode.getNodeContent().contains("data-fieldMark")) { if (StringUtils.isNotBlank(specialDiseaseNode.getNodeContent()) && specialDiseaseNode.getNodeContent().contains("data-fieldMark")) {
JSONObject paramValues = getParamsValue(specialDiseaseNode.getTaskSubdivision(), patientId); JSONObject paramValues = getParamsValue(specialDiseaseNode.getTaskSubdivision(), patientId);
Document document = Jsoup.parse(specialDiseaseNode.getNodeContent()); Document document = Jsoup.parse(specialDiseaseNode.getNodeContent());
// 需要提取的span // 需要提取的span
Elements spanlist = document.select("span[data-w-e-type]"); Elements spanlist = document.select("span[data-w-e-type]");
for (Element span : spanlist) { for (Element span : spanlist) {
PatientNodeParamsCurrent nodeParamCurrent = new PatientNodeParamsCurrent(); PatientNodeParamsCurrent nodeParamCurrent = new PatientNodeParamsCurrent();
String paramKey = span.attr("data-fieldMark"); String paramKey = span.attr("data-fieldMark");
String paramName = span.attr("data-fileSpan"); String paramName = span.attr("data-fileSpan");
nodeParamCurrent.setSn("1"); nodeParamCurrent.setSn("1");
nodeParamCurrent.setParamName(paramName); nodeParamCurrent.setParamName(paramName);
nodeParamCurrent.setParamKey(paramKey); nodeParamCurrent.setParamKey(paramKey);
nodeParamCurrent.setParamValue(paramValues.getOrDefault(paramKey, "").toString()); nodeParamCurrent.setParamValue(paramValues.getOrDefault(paramKey, "").toString());
diseaseNodeParams.add(nodeParamCurrent); diseaseNodeParams.add(nodeParamCurrent);
} }
// nodeParams去重 // nodeParams去重
diseaseNodeParams = diseaseNodeParams.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(()-> new TreeSet<>(Comparator.comparing(PatientNodeParamsCurrent::getParamKey))), ArrayList::new)); diseaseNodeParams = diseaseNodeParams.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(PatientNodeParamsCurrent::getParamKey))), ArrayList::new));
} }
// 之前未维护过参数专病路径节点中的参数为返回值 // 之前未维护过参数专病路径节点中的参数为返回值
if (CollectionUtils.isEmpty(nodeParams)) { if (CollectionUtils.isEmpty(nodeParams)) {
retList.add(diseaseNodeParams); retList.add(diseaseNodeParams);
} else { } else {
// 之前维护过参数则将参数进行对比 // 之前维护过参数则将参数进行对比
Map<String, List<PatientNodeParamsCurrent>> groupBySn = nodeParams.stream().collect(Collectors.groupingBy(PatientNodeParamsCurrent::getSn)); Map<String, List<PatientNodeParamsCurrent>> groupBySn = nodeParams.stream().collect(Collectors.groupingBy(PatientNodeParamsCurrent::getSn));
for (String sn : groupBySn.keySet()) { for (String sn : groupBySn.keySet()) {
List<PatientNodeParamsCurrent> oldParams = groupBySn.get(sn); List<PatientNodeParamsCurrent> oldParams = groupBySn.get(sn);
//List<String> paramKeys = oldParams.stream().map(PatientNodeParamsCurrent::getParamKey).collect(Collectors.toList()); //List<String> paramKeys = oldParams.stream().map(PatientNodeParamsCurrent::getParamKey).collect(Collectors.toList());
//List<String> newKeys = diseaseNodeParams.stream().map(PatientNodeParamsCurrent::getParamKey).collect(Collectors.toList()); //List<String> newKeys = diseaseNodeParams.stream().map(PatientNodeParamsCurrent::getParamKey).collect(Collectors.toList());
//if (ListUtils.isEqualList(paramKeys, newKeys)) { //if (ListUtils.isEqualList(paramKeys, newKeys)) {
// retList.add(oldParams); // retList.add(oldParams);
//} else { //} else {
// for(PatientNodeParamsCurrent nodeParam : diseaseNodeParams) { // for(PatientNodeParamsCurrent nodeParam : diseaseNodeParams) {
// if (!paramKeys.contains(nodeParam.getParamKey())) { // if (!paramKeys.contains(nodeParam.getParamKey())) {
// oldParams.add(nodeParam); // oldParams.add(nodeParam);
// } // }
// if (!newKeys.contains(nodeParam.getParamKey())) { // if (!newKeys.contains(nodeParam.getParamKey())) {
// oldParams.remove(nodeParam); // oldParams.remove(nodeParam);
// } // }
// } // }
retList.add(oldParams); retList.add(oldParams);
//} //}
} }
} }
return retList; return retList;
} }
/** /**
* 根据任务细分类型获取患者的真实信息 * 根据任务细分类型获取患者的真实信息
* @param taskSubdivision 任务细分类型code *
* @param patientId 患者主键 * @param taskSubdivision 任务细分类型code
* @return 实际信息 * @param patientId 患者主键
*/ * @return 实际信息
private JSONObject getParamsValue(String taskSubdivision, Long patientId) { */
JSONObject retObj = new JSONObject(); private JSONObject getParamsValue(String taskSubdivision, Long patientId) {
PatientInfo patientInfo = patientInfoMapper.selectPatientInfoById(patientId); JSONObject retObj = new JSONObject();
switch (taskSubdivision) { PatientInfo patientInfo = patientInfoMapper.selectPatientInfoById(patientId);
// 健康档案 switch (taskSubdivision) {
case "HEALTH_ARCHIVE": // 健康档案
retObj = JSONObject.parseObject(JSONObject.toJSONString(patientInfo)); case "HEALTH_ARCHIVE":
// 性别转换成中文计算年龄 retObj = JSONObject.parseObject(JSONObject.toJSONString(patientInfo));
retObj.fluentPut("sex", PatientSexEnum.getInfoByCode(patientInfo.getSex()).getInfo()) // 性别转换成中文计算年龄
.fluentPut("age", BaseUtil.getAge(patientInfo.getBirthDate())); retObj.fluentPut("sex", PatientSexEnum.getInfoByCode(patientInfo.getSex()).getInfo())
break; .fluentPut("age", BaseUtil.getAge(patientInfo.getBirthDate()));
default: break;
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd"); default:
retObj.fluentPut("patientName", patientInfo.getPatientName()) DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd");
.fluentPut("dischargeTime", patientInfo.getDischargeTime() == null ? "" : patientInfo.getDischargeTime().format(df)) retObj.fluentPut("patientName", patientInfo.getPatientName())
.fluentPut("visitDate", patientInfo.getVisitDate().format(df)); .fluentPut("dischargeTime", patientInfo.getDischargeTime() == null ? "" : patientInfo.getDischargeTime().format(df))
break; .fluentPut("visitDate", patientInfo.getVisitDate().format(df));
} break;
return retObj; }
} return retObj;
}
} }