|
@@ -663,15 +663,273 @@ public class RuleConvertFacade {
|
|
|
}
|
|
|
|
|
|
List<String> conds = items.stream().map(i -> i.getHighriskcond()).filter(i -> StringUtil.isNotBlank(i)).distinct().collect(Collectors.toList());
|
|
|
- Map<Integer, Map<String, Object>> condMap = new LinkedHashMap<>();
|
|
|
+ /*Map<Integer, Map<String, Object>> condMap = new LinkedHashMap<>();
|
|
|
if (ListUtil.isNotEmpty(conds)) {
|
|
|
for (String cond : conds) {
|
|
|
condMap.putAll(getHighriskCondMap(cond));
|
|
|
}
|
|
|
+ }*/
|
|
|
+
|
|
|
+ //过滤非高危手术
|
|
|
+ items = items
|
|
|
+ .stream()
|
|
|
+ .filter(item -> !(StringUtil.isBlank(item.getOpgrade()) || item.getOpgrade().equals("0") || item.getOpgrade().equals("1")))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ //按高危条件分类
|
|
|
+ items.forEach(item -> {
|
|
|
+ if (StringUtil.isBlank(item.getHighriskcond())) {
|
|
|
+ item.setHighriskcond("");
|
|
|
+ }
|
|
|
+ });
|
|
|
+ Map<String, List<YiBaoOperationName>> condItemMap = EntityUtil.makeEntityListMap(items, "highriskcond");
|
|
|
+
|
|
|
+ for (Map.Entry<String, List<YiBaoOperationName>> entry : condItemMap.entrySet()) {
|
|
|
+ if (entry.getKey().equals("")) {
|
|
|
+ if (ListUtil.isNotEmpty(entry.getValue())) {
|
|
|
+ entry.getValue().forEach(item -> {
|
|
|
+ ResultHighriskOperation result = new ResultHighriskOperation();
|
|
|
+ result.setHighriskItemName(item.getName());
|
|
|
+ result.setLevel(item.getOpgrade());
|
|
|
+ if (item.getOpgrade().equals("2")) {
|
|
|
+ result.setSuccess(0);
|
|
|
+ result.setMessage("缺少高危条件");
|
|
|
+ }
|
|
|
+ retOptList.add(result);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (ListUtil.isEmpty(entry.getValue())) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<Integer, Map<String, Object>> condMap = new LinkedHashMap<>();
|
|
|
+ condMap.putAll(getHighriskCondMap(entry.getKey()));
|
|
|
+
|
|
|
+ //条件相同的规则条数大于条件数,1对1遍历
|
|
|
+ if (entry.getValue().size() > condMap.size()) {
|
|
|
+ Integer condIndex = 0;
|
|
|
+ for (YiBaoOperationName item : entry.getValue()) {
|
|
|
+ ResultHighriskOperation result = new ResultHighriskOperation();
|
|
|
+ result.setHighriskItemName(item.getName());
|
|
|
+ result.setLevel(item.getOpgrade());
|
|
|
+ //带条件高危手术
|
|
|
+ if (item.getOpgrade().equals("2")) {
|
|
|
+ result.setFactorItemCond(item.getHighriskcond());
|
|
|
+ Map<String, Object> subCondMap = condMap.get(condIndex++);
|
|
|
+ if (condIndex.equals(condMap.size())) {
|
|
|
+ condIndex = 0;
|
|
|
+ }
|
|
|
+ String type = subCondMap.get("type").toString();
|
|
|
+ if (type.equals(TypeEnum.age.getName())) {
|
|
|
+ ResultHighriskOperation ageResult = new ResultHighriskOperation();
|
|
|
+ BeanUtil.copyProperties(result, ageResult);
|
|
|
+ ageResult.setFactorItemType(TypeEnum.age.getName());
|
|
|
+ ageResult.setFactorItemName(subCondMap.get("name").toString());
|
|
|
+ if (subCondMap.containsKey("最大值")) {
|
|
|
+ ageResult.setFactorItemMaxValue((BigDecimal) subCondMap.get("最大值"));
|
|
|
+ }
|
|
|
+ if (subCondMap.containsKey("最小值")) {
|
|
|
+ ageResult.setFactorItemMinValue((BigDecimal) subCondMap.get("最小值"));
|
|
|
+ }
|
|
|
+ if (subCondMap.containsKey("单位")) {
|
|
|
+ ageResult.setFactorItemUnit(subCondMap.get("单位").toString());
|
|
|
+ }
|
|
|
+ if (subCondMap.containsKey("范围")) {
|
|
|
+ ageResult.setFactorItemRange((Integer) subCondMap.get("范围"));
|
|
|
+ }
|
|
|
+ retOptList.add(ageResult);
|
|
|
+ } else if (type.equals(TypeEnum.vital.getName())) {
|
|
|
+ ResultHighriskOperation vitalResult = new ResultHighriskOperation();
|
|
|
+ BeanUtil.copyProperties(result, vitalResult);
|
|
|
+ vitalResult.setFactorItemName(subCondMap.get("name").toString());
|
|
|
+ vitalResult.setFactorItemType(TypeEnum.vital.getName());
|
|
|
+ if (subCondMap.containsKey("最大值")) {
|
|
|
+ vitalResult.setFactorItemMaxValue((BigDecimal) subCondMap.get("最大值"));
|
|
|
+ }
|
|
|
+ if (subCondMap.containsKey("最小值")) {
|
|
|
+ vitalResult.setFactorItemMinValue((BigDecimal) subCondMap.get("最小值"));
|
|
|
+ }
|
|
|
+ if (subCondMap.containsKey("单位")) {
|
|
|
+ vitalResult.setFactorItemUnit((String) subCondMap.get("单位"));
|
|
|
+ }
|
|
|
+ if (subCondMap.containsKey("范围")) {
|
|
|
+ vitalResult.setFactorItemRange((Integer) subCondMap.get("范围"));
|
|
|
+ }
|
|
|
+ retOptList.add(vitalResult);
|
|
|
+ } else if (type.equals(TypeEnum.disease.getName())) {
|
|
|
+ ResultHighriskOperation diagResult = new ResultHighriskOperation();
|
|
|
+ BeanUtil.copyProperties(result, diagResult);
|
|
|
+ diagResult.setFactorItemType(TypeEnum.disease.getName());
|
|
|
+ diagResult.setFactorItemName(subCondMap.get("name").toString());
|
|
|
+ retOptList.add(diagResult);
|
|
|
+ } else if (type.equals(TypeEnum.lis.getName())) {
|
|
|
+ ResultHighriskOperation lisResult = new ResultHighriskOperation();
|
|
|
+ BeanUtil.copyProperties(result, lisResult);
|
|
|
+ lisResult.setFactorItemType(TypeEnum.lis.getName());
|
|
|
+ lisResult.setFactorItemName(subCondMap.get("name").toString());
|
|
|
+ if (subCondMap.containsKey("最大值")) {
|
|
|
+ lisResult.setFactorItemMaxValue((BigDecimal) subCondMap.get("最大值"));
|
|
|
+ }
|
|
|
+ if (subCondMap.containsKey("最小值")) {
|
|
|
+ lisResult.setFactorItemMinValue((BigDecimal) subCondMap.get("最小值"));
|
|
|
+ }
|
|
|
+ if (subCondMap.containsKey("单位")) {
|
|
|
+ lisResult.setFactorItemUnit((String) subCondMap.get("单位"));
|
|
|
+ }
|
|
|
+ if (subCondMap.containsKey("范围")) {
|
|
|
+ lisResult.setFactorItemRange((Integer) subCondMap.get("范围"));
|
|
|
+ }
|
|
|
+ if (subCondMap.containsKey("结果")) {
|
|
|
+ lisResult.setInputValue((String) subCondMap.get("结果"));
|
|
|
+ }
|
|
|
+ retOptList.add(lisResult);
|
|
|
+ } else if (type.equals(TypeEnum.pacsDecs.getName())) {
|
|
|
+ ResultHighriskOperation pacsDescResult = new ResultHighriskOperation();
|
|
|
+ BeanUtil.copyProperties(result, pacsDescResult);
|
|
|
+ pacsDescResult.setFactorItemType(TypeEnum.pacsDecs.getName());
|
|
|
+ pacsDescResult.setInputValue(subCondMap.get("name").toString());
|
|
|
+ retOptList.add(pacsDescResult);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ retOptList.add(result);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ for (YiBaoOperationName item : entry.getValue()) {
|
|
|
+ ResultHighriskOperation result = new ResultHighriskOperation();
|
|
|
+ result.setHighriskItemName(item.getName());
|
|
|
+ result.setLevel(item.getOpgrade());
|
|
|
+ //带条件高危手术
|
|
|
+ if (item.getOpgrade().equals("2")) {
|
|
|
+ String highriskcond = item.getHighriskcond();
|
|
|
+ JSONObject jobj = JSONObject.parseObject(highriskcond);
|
|
|
+ if (null != jobj) {
|
|
|
+ // 判断年龄
|
|
|
+ JSONObject ageobj = jobj.getJSONObject("年龄");
|
|
|
+ if (ageobj != null) {
|
|
|
+ ResultHighriskOperation ageResult = new ResultHighriskOperation();
|
|
|
+ BeanUtil.copyProperties(result, ageResult);
|
|
|
+ ageResult.setFactorItemType(TypeEnum.age.getName());
|
|
|
+ ageResult.setFactorItemName("年龄");
|
|
|
+ if (ageobj.containsKey("最大值")) {
|
|
|
+ ageResult.setFactorItemMaxValue(ageobj.getBigDecimal("最大值"));
|
|
|
+ }
|
|
|
+ if (ageobj.containsKey("最小值")) {
|
|
|
+ ageResult.setFactorItemMinValue(ageobj.getBigDecimal("最小值"));
|
|
|
+ }
|
|
|
+ if (ageobj.containsKey("单位")) {
|
|
|
+ ageResult.setFactorItemUnit(ageobj.getString("单位"));
|
|
|
+ }
|
|
|
+ if (ageobj.containsKey("范围")) {
|
|
|
+ ageResult.setFactorItemRange(ageobj.getInteger("范围"));
|
|
|
+ }
|
|
|
+ retOptList.add(ageResult);
|
|
|
+ }
|
|
|
+ // 判断生命体征和查体
|
|
|
+ JSONObject vitalObj = jobj.getJSONObject("生命体征及查体");
|
|
|
+ if (null != vitalObj) {
|
|
|
+ for (Map.Entry<String, Object> subEntry : vitalObj.entrySet()) {
|
|
|
+ ResultHighriskOperation vitalResult = new ResultHighriskOperation();
|
|
|
+ BeanUtil.copyProperties(result, vitalResult);
|
|
|
+ vitalResult.setFactorItemName(subEntry.getKey());
|
|
|
+ vitalResult.setFactorItemType(TypeEnum.vital.getName());
|
|
|
+ if (ObjectUtils.isEmpty(subEntry.getValue())) {
|
|
|
+ retOptList.add(vitalResult);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ JSONObject subVitalObj = (JSONObject) subEntry.getValue();
|
|
|
+ if (null != subVitalObj) {
|
|
|
+ if (subVitalObj.containsKey("最大值")) {
|
|
|
+ vitalResult.setFactorItemMaxValue(subVitalObj.getBigDecimal("最大值"));
|
|
|
+ }
|
|
|
+ if (subVitalObj.containsKey("最小值")) {
|
|
|
+ vitalResult.setFactorItemMinValue(subVitalObj.getBigDecimal("最小值"));
|
|
|
+ }
|
|
|
+ if (subVitalObj.containsKey("单位")) {
|
|
|
+ vitalResult.setFactorItemUnit(subVitalObj.getString("单位"));
|
|
|
+ }
|
|
|
+ if (subVitalObj.containsKey("范围")) {
|
|
|
+ vitalResult.setFactorItemRange(subVitalObj.getInteger("范围"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ retOptList.add(vitalResult);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 判断合并疾病
|
|
|
+ JSONObject diagobj = jobj.getJSONObject("合并疾病");
|
|
|
+ if (null != diagobj) {
|
|
|
+ for (Map.Entry<String, Object> subEntry : diagobj.entrySet()) {
|
|
|
+ ResultHighriskOperation diagResult = new ResultHighriskOperation();
|
|
|
+ BeanUtil.copyProperties(result, diagResult);
|
|
|
+ diagResult.setFactorItemType(TypeEnum.disease.getName());
|
|
|
+ diagResult.setFactorItemName(subEntry.getKey());
|
|
|
+ retOptList.add(diagResult);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 判断化验结果
|
|
|
+ JSONObject lisobj = jobj.getJSONObject("化验结果");
|
|
|
+ if (null != lisobj) {
|
|
|
+ for (Map.Entry<String, Object> subEntry : lisobj.entrySet()) {
|
|
|
+ ResultHighriskOperation lisResult = new ResultHighriskOperation();
|
|
|
+ BeanUtil.copyProperties(result, lisResult);
|
|
|
+ lisResult.setFactorItemType(TypeEnum.lis.getName());
|
|
|
+ lisResult.setFactorItemName(subEntry.getKey());
|
|
|
+ if (ObjectUtils.isEmpty(subEntry.getValue())) {
|
|
|
+ retOptList.add(lisResult);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ JSONObject subLisObj = (JSONObject) subEntry.getValue();
|
|
|
+ if (null != subLisObj) {
|
|
|
+ if (subLisObj.containsKey("最大值")) {
|
|
|
+ lisResult.setFactorItemMaxValue(subLisObj.getBigDecimal("最大值"));
|
|
|
+ }
|
|
|
+ if (subLisObj.containsKey("最小值")) {
|
|
|
+ lisResult.setFactorItemMinValue(subLisObj.getBigDecimal("最小值"));
|
|
|
+ }
|
|
|
+ if (subLisObj.containsKey("单位")) {
|
|
|
+ lisResult.setFactorItemUnit(subLisObj.getString("单位"));
|
|
|
+ }
|
|
|
+ if (subLisObj.containsKey("范围")) {
|
|
|
+ lisResult.setFactorItemRange(subLisObj.getInteger("范围"));
|
|
|
+ }
|
|
|
+ if (subLisObj.containsKey("结果")) {
|
|
|
+ lisResult.setInputValue(subLisObj.getString("结果"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ retOptList.add(lisResult);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 判断辅检结果,暂不处理
|
|
|
+ JSONObject pacsObj = jobj.getJSONObject("辅检结果");
|
|
|
+ // 判断辅检结果描述
|
|
|
+ JSONObject pacsDescObj = jobj.getJSONObject("辅检结果描述");
|
|
|
+ if (null != pacsDescObj) {
|
|
|
+ for (Map.Entry<String, Object> subEntry : pacsDescObj.entrySet()) {
|
|
|
+ ResultHighriskOperation pacsDescResult = new ResultHighriskOperation();
|
|
|
+ BeanUtil.copyProperties(result, pacsDescResult);
|
|
|
+ pacsDescResult.setFactorItemType(TypeEnum.pacsDecs.getName());
|
|
|
+ pacsDescResult.setFactorItemName("胸部CT");
|
|
|
+ pacsDescResult.setFactorItemHisName("胸部CT");
|
|
|
+ pacsDescResult.setInputValue(subEntry.getKey());
|
|
|
+ retOptList.add(pacsDescResult);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ } else {
|
|
|
+ retOptList.add(result);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
+
|
|
|
//转换高危手术记录
|
|
|
- Integer condIndex = 0;
|
|
|
+ /*Integer condIndex = 0;
|
|
|
for (YiBaoOperationName item : items) {
|
|
|
//非高危手术
|
|
|
if (StringUtil.isBlank(item.getOpgrade()) || item.getOpgrade().equals("0") || item.getOpgrade().equals("1")) {
|
|
@@ -763,7 +1021,7 @@ public class RuleConvertFacade {
|
|
|
pacsDescResult.setFactorItemType(TypeEnum.pacsDecs.getName());
|
|
|
pacsDescResult.setInputValue(subCondMap.get("name").toString());
|
|
|
retOptList.add(pacsDescResult);
|
|
|
- }
|
|
|
+ }*/
|
|
|
/* String highriskcond = item.getHighriskcond();
|
|
|
JSONObject jobj = JSONObject.parseObject(highriskcond);
|
|
|
if (null != jobj) {
|
|
@@ -881,10 +1139,10 @@ public class RuleConvertFacade {
|
|
|
}
|
|
|
}
|
|
|
}*/
|
|
|
- } else {
|
|
|
+ /* } else {
|
|
|
retOptList.add(result);
|
|
|
}
|
|
|
- }
|
|
|
+ }*/
|
|
|
|
|
|
//手术名称映射
|
|
|
for (ResultHighriskOperation result : retOptList) {
|