diff --git a/platform-dal/src/main/java/com/lyms/platform/pojo/DiagnoseConfigModel.java b/platform-dal/src/main/java/com/lyms/platform/pojo/DiagnoseConfigModel.java index 553b692..40dab35 100644 --- a/platform-dal/src/main/java/com/lyms/platform/pojo/DiagnoseConfigModel.java +++ b/platform-dal/src/main/java/com/lyms/platform/pojo/DiagnoseConfigModel.java @@ -21,7 +21,7 @@ public class DiagnoseConfigModel extends BaseModel { private String hospitalId; //是否启用 0停用 1启用 private String enable; - private List> status; + private List> configs; private Date created; private Date modified; @@ -67,11 +67,11 @@ public class DiagnoseConfigModel extends BaseModel { this.enable = enable; } - public List> getStatus() { - return status; + public List> getConfigs() { + return configs; } - public void setStatus(List> status) { - this.status = status; + public void setConfigs(List> configs) { + this.configs = configs; } } diff --git a/platform-dal/src/main/java/com/lyms/platform/pojo/DiagnoseItemModel.java b/platform-dal/src/main/java/com/lyms/platform/pojo/DiagnoseItemModel.java index da9ef44..561a947 100644 --- a/platform-dal/src/main/java/com/lyms/platform/pojo/DiagnoseItemModel.java +++ b/platform-dal/src/main/java/com/lyms/platform/pojo/DiagnoseItemModel.java @@ -28,7 +28,6 @@ public class DiagnoseItemModel extends BaseModel { private String valueThree; private String valueFour; private String valueFive; - private String valueSix; private Date created; private Date modified; @@ -36,7 +35,7 @@ public class DiagnoseItemModel extends BaseModel { private Integer weight; //高危id - private String riskId; + private List riskIds; public String getConfigId() { return configId; @@ -70,12 +69,12 @@ public class DiagnoseItemModel extends BaseModel { this.modified = modified; } - public String getRiskId() { - return riskId; + public List getRiskIds() { + return riskIds; } - public void setRiskId(String riskId) { - this.riskId = riskId; + public void setRiskIds(List riskIds) { + this.riskIds = riskIds; } public String getId() { @@ -150,11 +149,5 @@ public class DiagnoseItemModel extends BaseModel { this.valueFive = valueFive; } - public String getValueSix() { - return valueSix; - } - public void setValueSix(String valueSix) { - this.valueSix = valueSix; - } } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AntenatalExaminationFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AntenatalExaminationFacade.java index 054a622..7e156f8 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AntenatalExaminationFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/AntenatalExaminationFacade.java @@ -119,6 +119,10 @@ public class AntenatalExaminationFacade { @Autowired private SieveFacade sieveFacade; + + @Autowired + private DiagnoseConfigService diagnoseConfigService; + /** * 处理区域隐藏建档 * @@ -2645,18 +2649,157 @@ public class AntenatalExaminationFacade { public BaseResponse getAntenatalExRisk(AntExAddRequest antExAddRequest, Integer userId) { + + List list = new ArrayList<>(); + Patients patients = patientsService.findOnePatientById(antExAddRequest.getParentId()); String hospitalId = autoMatchFacade.getHospitalId(userId); + DiagnoseConfigQuery diagnoseConfigQuery = new DiagnoseConfigQuery(); + diagnoseConfigQuery.setHospitalId(hospitalId); + List configModels = diagnoseConfigService.queryDiagnoseConfigs(diagnoseConfigQuery); - return null; + if (CollectionUtils.isNotEmpty(configModels)) + { + + DiagnoseConfigModel configModel = configModels.get(0); + + DiagnoseItemsQuery diagnoseItemsQuery = new DiagnoseItemsQuery(); + diagnoseItemsQuery.setConfigId(configModel.getId()); + + List diagnoseItemModels = diagnoseConfigService.queryDiagnoseItems(diagnoseItemsQuery); + + } + + return new BaseObjectResponse().setData(list).setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功"); } public BaseResponse getAntexExRisk(AntExcAddRequest antExcAddRequest, Integer userId) { + + List list = new ArrayList<>(); + Patients patients = patientsService.findOnePatientById(antExcAddRequest.getParentId()); - String hospitalId = autoMatchFacade.getHospitalId(userId); - return null; + + DiagnoseConfigQuery diagnoseConfigQuery = new DiagnoseConfigQuery(); + diagnoseConfigQuery.setHospitalId(patients.getHospitalId()); + List configModels = diagnoseConfigService.queryDiagnoseConfigs(diagnoseConfigQuery); + + Map> mapItems = getRiskConfig(configModels); + if (mapItems != null && mapItems.size() > 0) + { + + Integer age = DateUtil.getAge(patients.getBirth(), new Date()); + //年龄高危匹配 + List detailItems = mapItems.get(DiagnoseEnums.DiagnoseItemEnums.age.getId()); + if (CollectionUtils.isNotEmpty(detailItems)) + { + for (DiagnoseItemModel item : detailItems) + { + if (compare(item,age) && CollectionUtils.isNotEmpty(item.getRiskIds())) + { + list.addAll(item.getRiskIds()); + } + } + } + } + + return new BaseObjectResponse().setData(list).setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功"); + } + + /** + * + * @param expId 表达式id + * @param value 计算值 + * @param calValue 被计算值 + * @return + */ + private boolean compare(String expId,String value,Integer calValue) + { + Integer id = Integer.parseInt(expId); + switch (id) + { + case 1 : + return calValue > Integer.parseInt(value); + case 2 : + return calValue >= Integer.parseInt(value) ; + case 3 : + return calValue < Integer.parseInt(value); + case 4 : + return calValue <= Integer.parseInt(value) ; + case 5 : + return calValue == Integer.parseInt(value); + case 6 : + return Integer.parseInt(value) != calValue; + default: return false; + } + } + + private boolean compare(DiagnoseItemModel item,Integer calValue) + { + String expId1 = item.getValueOne(); + String value1 = item.getValueTwo(); + String logic = item.getValueThree(); + String expId2 = item.getValueFour(); + String value2 = item.getValueFive(); + + if (StringUtils.isNotEmpty(expId1) && + StringUtils.isNotEmpty(value1) && + StringUtils.isNotEmpty(expId2) && + StringUtils.isNotEmpty(value2) && + StringUtils.isNotEmpty(logic)) + { + Integer logicId = Integer.parseInt(logic); + switch (logicId) + { + case 1 : + return compare(expId1, value1, calValue) && compare(expId2, value2, calValue); + case 2 : + return compare(expId1, value1, calValue) || compare(expId2, value2, calValue); + + default: return false; + } + } + else if (StringUtils.isNotEmpty(expId1) && + StringUtils.isNotEmpty(value1)) + { + return compare(expId1, value1, calValue); + } + return false; + } + + + private Map> getRiskConfig(List configModels) + { + Map> mapItems = new HashMap<>(); + + if (CollectionUtils.isNotEmpty(configModels)) + { + DiagnoseConfigModel configModel = configModels.get(0); + + DiagnoseItemsQuery diagnoseItemsQuery = new DiagnoseItemsQuery(); + diagnoseItemsQuery.setConfigId(configModel.getId()); + + List diagnoseItemModels = diagnoseConfigService.queryDiagnoseItems(diagnoseItemsQuery); + if (CollectionUtils.isNotEmpty(diagnoseItemModels)) + { + for (DiagnoseEnums.DiagnoseItemEnums diagnoses : DiagnoseEnums.DiagnoseItemEnums.values()) + { + + List diagnoseItemList = new ArrayList<>(); + for (DiagnoseItemModel item : diagnoseItemModels) + { + if (diagnoses.getId() == Integer.parseInt(item.getParentId())) + { + diagnoseItemList.add(item); + } + } + mapItems.put(diagnoses.getId(),diagnoseItemList); + } + } + } + + return mapItems; } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/DiagnoseConfigFacde.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/DiagnoseConfigFacde.java index 265aa16..f11f8df 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/DiagnoseConfigFacde.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/DiagnoseConfigFacde.java @@ -5,6 +5,7 @@ import com.lyms.platform.common.constants.ErrorCodeConstants; import com.lyms.platform.common.enums.OptActionEnums; import com.lyms.platform.common.result.BaseObjectResponse; import com.lyms.platform.common.result.BaseResponse; +import com.lyms.platform.common.utils.JsonUtil; import com.lyms.platform.common.utils.StringUtils; import com.lyms.platform.operate.web.request.DiagnoseConfigRequest; import com.lyms.platform.operate.web.result.DiagnoseConfigResult; @@ -18,6 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -47,11 +49,30 @@ public class DiagnoseConfigFacde { String hospitalId = autoMatchFacade.getHospitalId(userId); DiagnoseConfigModel diagnoseConfigModel = request.convertToDataModel(); + + Map> items = new HashMap<>(); + + List> configs = request.getConfigs(); + if (CollectionUtils.isNotEmpty(configs)) + { + for (Map config : configs) + { + String configItems = config.get("items"); + if (StringUtils.isNotEmpty(configItems)) + { + items.put(Integer.parseInt(config.get("id")), JsonUtil.toList(configItems,DiagnoseItemModel.class)); + } + config.remove("items"); + } + diagnoseConfigModel.setConfigs(configs); + } + + diagnoseConfigModel = diagnoseConfigService.saveDiagnoseConfig(diagnoseConfigModel); operateLogFacade.addAddOptLog(userId,Integer.parseInt(hospitalId),diagnoseConfigModel, OptActionEnums.ADD.getId(), "添加高危诊断基础配置"); - Map> items = request.getItems(); + if (items != null && items.size() > 0) { for(Integer key : items.keySet()) @@ -94,6 +115,24 @@ public class DiagnoseConfigFacde { String hospitalId = autoMatchFacade.getHospitalId(userId); DiagnoseConfigModel diagnoseConfigModel = request.convertToDataModel(); + + Map> items = new HashMap<>(); + + List> configs = request.getConfigs(); + if (CollectionUtils.isNotEmpty(configs)) + { + for (Map config : configs) + { + String configItems = config.get("items"); + if (StringUtils.isNotEmpty(configItems)) + { + items.put(Integer.parseInt(config.get("id")), JsonUtil.toList(configItems,DiagnoseItemModel.class)); + } + config.remove("items"); + } + diagnoseConfigModel.setConfigs(configs); + } + diagnoseConfigService.updateDiagnoseConfig(diagnoseConfigModel); if (CollectionUtils.isNotEmpty(befores)) @@ -101,7 +140,6 @@ public class DiagnoseConfigFacde { operateLogFacade.addModifyOptLog(userId, Integer.parseInt(hospitalId), befores.get(0), diagnoseConfigModel, OptActionEnums.UPDATE.getId(), "更新高危诊断基础配置"); - Map> items = request.getItems(); DiagnoseItemsQuery diagnoseItemsQuery = new DiagnoseItemsQuery(); diagnoseItemsQuery.setConfigId(request.getId()); @@ -155,25 +193,31 @@ public class DiagnoseConfigFacde { { DiagnoseConfigResult result = new DiagnoseConfigResult(); - result.convertToResult(configModel); + DiagnoseItemsQuery diagnoseItemsQuery = new DiagnoseItemsQuery(); diagnoseItemsQuery.setConfigId(configModel.getId()); List diagnoseItemModels = diagnoseConfigService.queryDiagnoseItems(diagnoseItemsQuery); - if (CollectionUtils.isNotEmpty(diagnoseItemModels)) + if (CollectionUtils.isNotEmpty(diagnoseItemModels) && CollectionUtils.isNotEmpty(configModel.getConfigs())) { - List results = new ArrayList<>(); - for (DiagnoseItemModel model : diagnoseItemModels) + for (Map config : configModel.getConfigs()) { - DiagnoseItemResult itemResult = new DiagnoseItemResult(); - itemResult.convertToResult(model); - - results.add(itemResult); + List itemModels = new ArrayList<>(); + for (DiagnoseItemModel diagnose : diagnoseItemModels) + { + if (config.get("id").equals(diagnose.getParentId())) + { + DiagnoseItemResult dr = new DiagnoseItemResult(); + dr.convertToResult(diagnose); + itemModels.add(dr); + } + } + config.put("items",JsonUtil.array2JsonString(itemModels)); } - result.setResults(results); } - new BaseObjectResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功").setData(result); + result.convertToResult(configModel); + return new BaseObjectResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功").setData(result); } return new BaseResponse().setErrorcode(ErrorCodeConstants.NO_DATA).setErrormsg("没有数据"); } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/DiagnoseConfigRequest.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/DiagnoseConfigRequest.java index 6f679ca..b75c18e 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/DiagnoseConfigRequest.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/DiagnoseConfigRequest.java @@ -1,9 +1,12 @@ package com.lyms.platform.operate.web.request; import com.lyms.platform.common.base.IBasicRequestConvert; +import com.lyms.platform.common.utils.StringUtils; import com.lyms.platform.pojo.DiagnoseConfigModel; import com.lyms.platform.pojo.DiagnoseItemModel; +import org.apache.commons.collections.CollectionUtils; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -16,8 +19,7 @@ public class DiagnoseConfigRequest implements IBasicRequestConvert> status; - private Map> items; + private List> configs; public String getId() { return id; @@ -43,20 +45,12 @@ public class DiagnoseConfigRequest implements IBasicRequestConvert> getStatus() { - return status; + public List> getConfigs() { + return configs; } - public void setStatus(List> status) { - this.status = status; - } - - public Map> getItems() { - return items; - } - - public void setItems(Map> items) { - this.items = items; + public void setConfigs(List> configs) { + this.configs = configs; } @Override @@ -65,7 +59,6 @@ public class DiagnoseConfigRequest implements IBasicRequestConvert> status; + private List> configs; - private List results; public String getId() { @@ -44,20 +43,12 @@ public class DiagnoseConfigResult implements IBasicResultConvert> getStatus() { - return status; + public List> getConfigs() { + return configs; } - public void setStatus(List> status) { - this.status = status; - } - - public List getResults() { - return results; - } - - public void setResults(List results) { - this.results = results; + public void setConfigs(List> configs) { + this.configs = configs; } @Override @@ -65,7 +56,7 @@ public class DiagnoseConfigResult implements IBasicResultConvert { - private String id; - private String configId; - private String hospitalId; - private String parentId; +// private String id; +// private String configId; +// private String hospitalId; +// private String parentId; //是否启用 0停用 1启用 - private Integer enable; +// private Integer enable; private String valueOne; private String valueTwo; private String valueThree; private String valueFour; private String valueFive; - private String valueSix; - //权重 - private Integer weight; +// //权重 +// private Integer weight; //高危id - private String riskId; + private List riskIds; @Override public DiagnoseItemResult convertToResult(DiagnoseItemModel model) { - setId(model.getId()); - setConfigId(model.getConfigId()); - setHospitalId(model.getHospitalId()); - setParentId(model.getParentId()); - setEnable(model.getEnable()); +// setId(model.getId()); +// setConfigId(model.getConfigId()); +// setHospitalId(model.getHospitalId()); +// setParentId(model.getParentId()); +// setEnable(model.getEnable()); setValueOne(model.getValueOne()); setValueTwo(model.getValueTwo()); setValueThree(model.getValueThree()); setValueFour(model.getValueFour()); setValueFive(model.getValueFive()); - setValueSix(model.getValueSix()); - setWeight(model.getWeight()); - setRiskId(model.getRiskId()); + setRiskIds(model.getRiskIds()); return this; } - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getConfigId() { - return configId; - } - - public void setConfigId(String configId) { - this.configId = configId; - } - - public String getHospitalId() { - return hospitalId; - } - - public void setHospitalId(String hospitalId) { - this.hospitalId = hospitalId; - } - - public String getParentId() { - return parentId; - } - - public void setParentId(String parentId) { - this.parentId = parentId; - } - public Integer getEnable() { - return enable; - } - - public void setEnable(Integer enable) { - this.enable = enable; - } public String getValueOne() { return valueOne; @@ -125,27 +86,12 @@ public class DiagnoseItemResult implements IBasicResultConvert getRiskIds() { + return riskIds; } - public void setRiskId(String riskId) { - this.riskId = riskId; + public void setRiskIds(List riskIds) { + this.riskIds = riskIds; } }