From 71870b62ac62d5256b6bb1aacf26ebab503f08b7 Mon Sep 17 00:00:00 2001 From: wtt Date: Tue, 1 Sep 2020 14:08:28 +0800 Subject: [PATCH] update --- .../biz/service/DiagnoseConfigService.java | 2 +- .../com/lyms/platform/pojo/AutoBabyRiskRecord.java | 138 ++++++ .../lyms/platform/pojo/DiagnoseConfigModel.java | 13 + .../com/lyms/platform/pojo/DiagnoseItemModel.java | 41 +- .../lyms/platform/query/DiagnoseConfigQuery.java | 26 +- .../web/controller/DiagnoseConfigController.java | 3 +- .../web/facade/BabyAutoDiagnoseRiskFacade.java | 487 +++++++++++++++++++++ .../operate/web/facade/DiagnoseConfigFacde.java | 8 +- .../operate/web/facade/MatDeliverFacade.java | 13 + .../operate/web/request/BabyAutoRiskRequest.java | 21 + .../operate/web/request/DiagnoseConfigRequest.java | 11 + 11 files changed, 754 insertions(+), 9 deletions(-) create mode 100644 platform-dal/src/main/java/com/lyms/platform/pojo/AutoBabyRiskRecord.java create mode 100644 platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyAutoDiagnoseRiskFacade.java create mode 100644 platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/BabyAutoRiskRequest.java diff --git a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/DiagnoseConfigService.java b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/DiagnoseConfigService.java index c1fc088..fe600f2 100644 --- a/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/DiagnoseConfigService.java +++ b/platform-biz-patient-service/src/main/java/com/lyms/platform/biz/service/DiagnoseConfigService.java @@ -33,7 +33,7 @@ public class DiagnoseConfigService { diagnoseConfigQuery.mysqlBuild(diagnoseConfigDao.queryDiagnoseConfigCount(diagnoseConfigQuery.convertToQuery())); query.start(diagnoseConfigQuery.getOffset()).end(diagnoseConfigQuery.getLimit()); } - return diagnoseConfigDao.queryDiagnoseConfigs(query.addOrder(Sort.Direction.DESC, "created")); + return diagnoseConfigDao.queryDiagnoseConfigs(query.addOrder(Direction.ASC, "created")); } public DiagnoseConfigModel saveDiagnoseConfig(DiagnoseConfigModel data){ return diagnoseConfigDao.saveDiagnoseConfig(data); diff --git a/platform-dal/src/main/java/com/lyms/platform/pojo/AutoBabyRiskRecord.java b/platform-dal/src/main/java/com/lyms/platform/pojo/AutoBabyRiskRecord.java new file mode 100644 index 0000000..dde272a --- /dev/null +++ b/platform-dal/src/main/java/com/lyms/platform/pojo/AutoBabyRiskRecord.java @@ -0,0 +1,138 @@ +package com.lyms.platform.pojo; + +import com.lyms.platform.beans.SerialIdEnum; +import com.lyms.platform.common.result.BaseModel; +import org.springframework.data.mongodb.core.mapping.Document; + +import java.util.Date; +import java.util.List; + + +/** + * 儿童自动诊断高危实体类 + */ +@Document(collection="lyms_baby_auto_risk_record") +public class AutoBabyRiskRecord extends BaseModel { + + private static final long serialVersionUID = SerialIdEnum.TrackCountRecord.getCid(); + + private String id; + private String fid; + private String hospitalId; + private String pid; + private String patientId; + //高危评分 + private Integer hScore; + //高危等级 + private List hLevel; + //风险因素 + private List hRisk; + private Date created; + private Date modified; + //状态 0 未确认 已经确认 + private Integer status; + //诊断来源 0建档 1初诊 2复诊 + private Integer type; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getFid() { + return fid; + } + + public void setFid(String fid) { + this.fid = fid; + } + + public String getHospitalId() { + return hospitalId; + } + + public void setHospitalId(String hospitalId) { + this.hospitalId = hospitalId; + } + + public String getPid() { + return pid; + } + + public void setPid(String pid) { + this.pid = pid; + } + + public String getPatientId() { + return patientId; + } + + public void setPatientId(String patientId) { + this.patientId = patientId; + } + + public Integer gethScore() { + return hScore; + } + + public void sethScore(Integer hScore) { + this.hScore = hScore; + } + + public List gethLevel() { + return hLevel; + } + + public void sethLevel(List hLevel) { + this.hLevel = hLevel; + } + + public List gethRisk() { + return hRisk; + } + + public void sethRisk(List hRisk) { + this.hRisk = hRisk; + } + + public Date getCreated() { + return created; + } + + public void setCreated(Date created) { + this.created = created; + } + + public Date getModified() { + return modified; + } + + public void setModified(Date modified) { + this.modified = modified; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + + + + + +} \ No newline at end of file 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 40dab35..9667efc 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 @@ -26,6 +26,19 @@ public class DiagnoseConfigModel extends BaseModel { private Date created; private Date modified; + /*儿童自动诊断新增字段*/ + //默认是孕妇类型,type=2是儿童类型 + private String type; + + + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } public Date getCreated() { return created; 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 3d91293..75bc61a 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 @@ -30,18 +30,24 @@ public class DiagnoseItemModel extends BaseModel { private String valueFive; private String valueSix; private String valueSeven; - - private Date created; private Date modified; - //权重 private Integer weight; - - //高危id + //高危id,20200827新增儿童的,“高危儿诊断项目” private List riskIds; + /*儿童自动诊断新增字段*/ + //畸形详情,在转换成MaternalDeliverModel.Baby判断使用 + private Map tejx; + //母亲存在的高危因素 + private List riskFactorIds; + //20200827新增儿童的,“高危儿详情项” + private List riskBabyInfoIds; + + + public String getValueSix() { return valueSix; } @@ -54,6 +60,31 @@ public class DiagnoseItemModel extends BaseModel { return valueSeven; } + + public Map getTejx() { + return tejx; + } + + public void setTejx(Map tejx) { + this.tejx = tejx; + } + + public List getRiskFactorIds() { + return riskFactorIds; + } + + public void setRiskFactorIds(List riskFactorIds) { + this.riskFactorIds = riskFactorIds; + } + + public List getRiskBabyInfoIds() { + return riskBabyInfoIds; + } + + public void setRiskBabyInfoIds(List riskBabyInfoIds) { + this.riskBabyInfoIds = riskBabyInfoIds; + } + public void setValueSeven(String valueSeven) { this.valueSeven = valueSeven; } diff --git a/platform-dal/src/main/java/com/lyms/platform/query/DiagnoseConfigQuery.java b/platform-dal/src/main/java/com/lyms/platform/query/DiagnoseConfigQuery.java index 037a85a..5a02683 100644 --- a/platform-dal/src/main/java/com/lyms/platform/query/DiagnoseConfigQuery.java +++ b/platform-dal/src/main/java/com/lyms/platform/query/DiagnoseConfigQuery.java @@ -20,6 +20,25 @@ public class DiagnoseConfigQuery extends BaseQuery implements IConvertToNativeQu private String hospitalId; //是否启用 0停用 1启用 private Integer enable; + //默认是孕妇类型,type=2是儿童类型 + private String type; + private boolean typeb; + + public boolean isTypeb() { + return typeb; + } + + public void setTypeb(boolean typeb) { + this.typeb = typeb; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } @Override public MongoQuery convertToQuery() { @@ -36,7 +55,12 @@ public class DiagnoseConfigQuery extends BaseQuery implements IConvertToNativeQu if (null != enable) { condition = condition.and("enable", enable, MongoOper.IS); } - + if (null != type) { + condition = condition.and("type", type, MongoOper.IS); + } + if (typeb) { + condition = condition.and("type", null, MongoOper.IS); + } Criteria c1 = null; if (null != c1) { diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/DiagnoseConfigController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/DiagnoseConfigController.java index 3b4d157..3d090ab 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/DiagnoseConfigController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/DiagnoseConfigController.java @@ -66,9 +66,10 @@ public class DiagnoseConfigController extends BaseController { @ResponseBody @TokenRequired public BaseResponse queryDiagnoseConfig(@RequestParam("hospitalId")String hospitalId, + @RequestParam(required = false) String type, HttpServletRequest request) { - return diagnoseConfigFacde.queryDiagnoseConfig(hospitalId, getUserId(request)); + return diagnoseConfigFacde.queryDiagnoseConfig(hospitalId,type, getUserId(request)); } } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyAutoDiagnoseRiskFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyAutoDiagnoseRiskFacade.java new file mode 100644 index 0000000..55d6744 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyAutoDiagnoseRiskFacade.java @@ -0,0 +1,487 @@ +package com.lyms.platform.operate.web.facade; + +import com.lyms.platform.biz.service.BasicConfigService; +import com.lyms.platform.biz.service.DiagnoseConfigService; +import com.lyms.platform.biz.service.MatDeliverService; +import com.lyms.platform.biz.service.PatientsService; +import com.lyms.platform.common.enums.BabyAutoDiagnoseEnums; +import com.lyms.platform.common.utils.ExceptionUtils; +import com.lyms.platform.common.utils.JsonUtil; +import com.lyms.platform.operate.web.request.BabyAutoRiskRequest; +import com.lyms.platform.operate.web.request.MatDeliverAddRequest; +import com.lyms.platform.pojo.*; +import com.lyms.platform.query.DiagnoseConfigQuery; +import com.lyms.platform.query.DiagnoseItemsQuery; +import com.lyms.platform.query.MatDeliverQuery; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.Query; +import org.springframework.stereotype.Component; + +import java.util.*; + +/** + * 儿童自动诊断高危逻辑类 + */ +@Component +public class BabyAutoDiagnoseRiskFacade { + @Autowired + private DiagnoseConfigFacde diagnoseConfigFacde; + @Autowired + private BasicConfigFacade basicConfigFacade; + @Autowired + private DiagnoseConfigService diagnoseConfigService; + @Autowired + private PatientsService patientsService; + @Autowired + private BasicConfigService basicConfigService; + @Autowired + private MongoTemplate mongoTemplate; + @Autowired + private MatDeliverService matDeliverService; + + /** + * 儿童建档,自动高危自动挡 + * + * @param babyAutoRiskRequest + * @param userId + * @Author: 武涛涛 + * @Date: 2020/8/31 13:52 + */ + public void autoBabyRisk(BabyAutoRiskRequest babyAutoRiskRequest, Integer userId) { + /* + 儿童建档分两种方式: + 1 孕妇分娩自动建档, + 分娩建档,通过parentId获取,分娩信息自动生成高危 + + 2 儿童模块中直接建档, + 通过儿童档案id(buildId),获取儿童档案信息,自动生成高危 + + 儿童检查: + 通过检查信息,判断符合条件,自动生成高危(注意儿童检查好像就一个体重,需要自动生成) + */ + + + List > riskList = autoRisk(babyAutoRiskRequest, babyAutoRiskRequest.getHospitalId(), 0); +// saveAutoRisk(riskList, null, pat.getHospitalId(), pat.getPid(), pat.getId(), 0); + } + + /** + * 儿童,自动判定高危因素 + * + * @param hospitalId + * @param type 0 孕妇分娩儿童建档, 1儿童直接建档,2 儿童检查 + * @Author: 武涛涛 + * @Date: 2020/8/31 14:56 + */ + private List > autoRisk(BabyAutoRiskRequest babyAutoRiskRequest, String hospitalId, Integer type) { + Set list = new HashSet <>(); + List > riskList = new ArrayList <>(); + + //获取儿童诊断配置 + DiagnoseConfigQuery diagnoseConfigQuery = new DiagnoseConfigQuery(); + diagnoseConfigQuery.setHospitalId(hospitalId); + diagnoseConfigQuery.setType("2"); + List configModels = diagnoseConfigService.queryDiagnoseConfigs(diagnoseConfigQuery); + + //存储儿童诊断配置,单个项目状态信息 + Map status = new HashMap <>(); + if (CollectionUtils.isNotEmpty(configModels)) { + DiagnoseConfigModel model = configModels.get(0); + List > configs = model.getConfigs(); + + //判断儿童诊断配置是否开启 + if (model == null || "0".equals(model.getEnable()) || configs == null || configs.size() == 0) { + return riskList; + } + if (CollectionUtils.isNotEmpty(configs)) { + for (Map map : configs) { + status.put(map.get("id"), map.get("status")); + } + } + } + + //获取诊断项详情 + Map > mapItems = getRiskConfig(configModels); + if (mapItems != null && mapItems.size() > 0) { + + MaternalDeliverModel maternalDeliverModel = null; + if (type == 0) { + MatDeliverQuery deliverQuery = new MatDeliverQuery(); + deliverQuery.setParentId(babyAutoRiskRequest.getParentId()); + List maternalDeliverModels = matDeliverService.query(deliverQuery); + if (CollectionUtils.isNotEmpty(maternalDeliverModels)) { + maternalDeliverModel = maternalDeliverModels.get(0); + } + } else if (type == 1) { + maternalDeliverModel = new MaternalDeliverModel(); + + // 儿童查询获取母亲档案信息,执行“孕母存在高危因素” + + //儿童建档就将建档信息,复制到分娩类来使用 + } + + + /*孕母存在高危因素*/ + if (isEnableItem(status, BabyAutoDiagnoseEnums.BabyDiagnoseEnums.ymczgwys.getId()) && type == 0) { + Patients patients = patientsService.findOnePatientById(babyAutoRiskRequest.getParentId()); + if (patients != null && CollectionUtils.isNotEmpty(patients.getRiskFactorId())) { + List riskFactorId = patients.getRiskFactorId();//孕妇存在的高危 + //诊断项 + List items = mapItems.get(BabyAutoDiagnoseEnums.BabyDiagnoseEnums.ymczgwys.getId()); + if (CollectionUtils.isNotEmpty(items)) { + for (DiagnoseItemModel item : items) { + if (ymczgwys(riskFactorId, item)) { + list.addAll(item.getRiskIds());//item.getRiskIds() 诊断项,高危儿诊断项目 + } + } + } + } + } + + + /*分娩孕周*/ + + /*胎方位*/ + if (isEnableItem(status, BabyAutoDiagnoseEnums.BabyDiagnoseEnums.tfw.getId()) && maternalDeliverModel != null) { + List placentas = maternalDeliverModel.getPlacentas(); + if (CollectionUtils.isNotEmpty(placentas)) { + MatDeliverAddRequest.Placenta placenta = (MatDeliverAddRequest.Placenta) placentas.get(0); + if (placenta != null && StringUtils.isNotEmpty(placenta.getFetalPosition())) { + String fetalPosition = placenta.getFetalPosition(); + List items = mapItems.get(BabyAutoDiagnoseEnums.BabyDiagnoseEnums.tfw.getId()); + if (CollectionUtils.isNotEmpty(items)) { + for (DiagnoseItemModel item : items) { + + String valueTwo = item.getValueTwo(); + if (valueTwo.equals(fetalPosition)) { + list.addAll(item.getRiskIds());//item.getRiskIds() 诊断项,高危儿诊断项目 + } + + } + } + + } + } + } + /*脐带长度*/ + if (isEnableItem(status, BabyAutoDiagnoseEnums.BabyDiagnoseEnums.twcd.getId()) && maternalDeliverModel != null) { + List extPlacentas = maternalDeliverModel.getExtPlacentas(); + if (CollectionUtils.isNotEmpty(extPlacentas)) { + MaternalDeliverModel.ExtPlacenta extPlacenta = extPlacentas.get(0); + + if (extPlacenta != null && StringUtils.isNotEmpty(extPlacenta.getUmbilicalCordLength())) { + String umbilicalCordLength = extPlacenta.getUmbilicalCordLength(); + + List items = mapItems.get(BabyAutoDiagnoseEnums.BabyDiagnoseEnums.twcd.getId()); + if (CollectionUtils.isNotEmpty(items)) { + for (DiagnoseItemModel item : items) { + if (compare(item, umbilicalCordLength) && CollectionUtils.isNotEmpty(item.getRiskIds())) { + list.addAll(item.getRiskIds()); + } + + } + } + } + } + } + /*脐带异常类型*/ + if (isEnableItem(status, BabyAutoDiagnoseEnums.BabyDiagnoseEnums.qdyclx.getId()) && maternalDeliverModel != null) { + List extPlacentas = maternalDeliverModel.getExtPlacentas(); + if (CollectionUtils.isNotEmpty(extPlacentas)) { + MaternalDeliverModel.ExtPlacenta extPlacenta = extPlacentas.get(0); + + if (extPlacenta != null && StringUtils.isNotEmpty(extPlacenta.getUmbilicalCordExType())) { + String umbilicalCordExType = extPlacenta.getUmbilicalCordExType(); + List items = mapItems.get(BabyAutoDiagnoseEnums.BabyDiagnoseEnums.qdyclx.getId()); + if (CollectionUtils.isNotEmpty(items)) { + for (DiagnoseItemModel item : items) { + + String valueTwo = item.getValueTwo(); + if (valueTwo.equals(umbilicalCordExType)) { + list.addAll(item.getRiskIds()); + } + + } + } + } + } + } + + /*分娩方式*/ + if (isEnableItem(status, BabyAutoDiagnoseEnums.BabyDiagnoseEnums.fmfs.getId()) && maternalDeliverModel != null) { + + if (StringUtils.isNotEmpty(maternalDeliverModel.getDeliveryMode())) { + String deliveryMode = maternalDeliverModel.getDeliveryMode(); + Map m = JsonUtil.str2Obj(deliveryMode, Map.class); + String fmfs = null; + if (m != null) { + Object b = m.get("fmfs"); + if (b != null) { + fmfs = b.toString(); + } + } + if(StringUtils.isNotEmpty(fmfs)){ + List items = mapItems.get(BabyAutoDiagnoseEnums.BabyDiagnoseEnums.fmfs.getId()); + if (CollectionUtils.isNotEmpty(items)) { + for (DiagnoseItemModel item : items) { + + String valueTwo = item.getValueTwo(); + if (valueTwo.equals(fmfs)) { + list.addAll(item.getRiskIds()); + } + + } + } + } + + } + } + /*胎儿畸形*/ + if (isEnableItem(status, BabyAutoDiagnoseEnums.BabyDiagnoseEnums.tejx.getId()) && maternalDeliverModel != null) { + List baby = maternalDeliverModel.getBaby(); + if (CollectionUtils.isNotEmpty(baby)) { + MaternalDeliverModel.Baby baby1 = baby.get(0); + if (baby1 != null) { + List items = mapItems.get(BabyAutoDiagnoseEnums.BabyDiagnoseEnums.tejx.getId()); + if (CollectionUtils.isNotEmpty(items)) { + for (DiagnoseItemModel item : items) { + + String valueTwo = item.getValueTwo(); + /*if (valueTwo.equals(umbilicalCordExType)) { + list.addAll(item.getRiskIds()); + }*/ + + } + } + + + } + } + } + + + + } + + + if (list.size() > 0) { + List ids = new ArrayList <>(); + for (String id : list) { + ids.add(id); + } + riskList = diagnoseConfigFacde.getRiskName(ids); + } + System.out.println(riskList.toString()); + return riskList; + } + + /** + * 母存在高危因素,比较 + * + * @param riskFactorId + * @param item + * @Author: 武涛涛 + * @Date: 2020/9/1 9:38 + */ + private boolean ymczgwys(List riskFactorId, DiagnoseItemModel item) { + List riskFactorIds = item.getRiskFactorIds();//诊断项,母亲存在的高危因素 + for (String ris : riskFactorIds) { + //孕妇存在的高危,诊断项,母亲存在的高危因素都有,说明符合,就添加 + if (!riskFactorId.contains(ris)) { + return false; + } + } + return true; + } + + /** + * 胎方位,比较 + * + * @param items + * @param fetalPosition + * @Author: 武涛涛 + * @Date: 2020/8/31 17:05 + */ + private boolean compare(List items, String fetalPosition) { + if (CollectionUtils.isNotEmpty(items)) { + for (DiagnoseItemModel item : items) { + String valueTwo = item.getValueTwo(); + if (valueTwo.equals(fetalPosition)) { + return true; + } + } + } + return false; + } + + + private boolean contain(String value, String content) { + return content.contains(value); + } + + /** + * 获取诊断项详情 + * + * @param configModels + * @Author: 武涛涛 + * @Date: 2020/8/31 14:48 + */ + 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()); + //通过ConfigId获取儿童诊断配置-- 诊断配置项详情 + List diagnoseItemModels = diagnoseConfigService.queryDiagnoseItems(diagnoseItemsQuery); + if (CollectionUtils.isNotEmpty(diagnoseItemModels)) { + + //遍历诊断依据枚举检查与诊断配置项是否匹配,将匹配的诊断项存储mapItems key是id,value DiagnoseItemModelList + for (BabyAutoDiagnoseEnums.BabyDiagnoseEnums diagnoses : BabyAutoDiagnoseEnums.BabyDiagnoseEnums.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; + } + + /** + * 每一项是否启用 + * + * @param status + * @param id + * @Author: 武涛涛 + * @Date: 2020/8/31 13:58 + */ + private boolean isEnableItem(Map status, Integer id) { + if (status != null && status.size() > 0) { + if ("true".equals(status.get(String.valueOf(id)))) { + return true; + } + } + return false; + } + + /** + * @param expId 表达式id + * @param value 计算值 + * @param calValue 被计算值 + * @return + */ + private boolean compare(String expId, String value, String calValue) { + try { + Double compareValue = Double.parseDouble(calValue); + + Integer id = Integer.parseInt(expId); + switch (id) { + case 1: + return compareValue > Double.parseDouble(value); + case 2: + return compareValue >= Double.parseDouble(value); + case 3: + return compareValue < Double.parseDouble(value); + case 4: + return compareValue <= Double.parseDouble(value); + case 5: + return compareValue == Double.parseDouble(value); + case 6: + return compareValue != Double.parseDouble(value); + default: + return false; + } + } catch (Exception e) { + ExceptionUtils.catchException(e, "risk compare error"); + } + return false; + } + + private boolean compare(DiagnoseItemModel item, String 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; + } + + /** + * 保存,儿童自动诊断高危 + * + * @param risks 高危因素 + * @param fid 产检id(初诊、复诊) + * @param hospitalId 医院id + * @param pid + * @param patientId + * @param type 0 建档诊断 1产检诊断 + * @Author: 武涛涛 + * @Date: 2020/8/31 13:56 + */ + private void saveAutoRisk(List > risks, String fid, String hospitalId, String pid, String patientId, Integer type) { + if (CollectionUtils.isNotEmpty(risks)) { + List rLevel = new ArrayList(); + List hRisk = new ArrayList(); + Integer score = 0; + for (Map risk : risks) { + rLevel.add(risk.get("riskLevel")); + hRisk.add(risk.get("id")); + score += StringUtils.isNotEmpty(risk.get("code")) ? Integer.parseInt(risk.get("code")) : 0; + } + + if (StringUtils.isNotEmpty(fid)) { + Query query = new Query(); + query.addCriteria(Criteria.where("fid").is(fid)); + AutoRiskRecord autoRisk = mongoTemplate.findOne(query, AutoRiskRecord.class); + if (autoRisk != null) { + return; + } + } + AutoRiskRecord riskRecord = new AutoRiskRecord(); + riskRecord.setPatientId(patientId); + riskRecord.setFid(fid); + riskRecord.setPid(pid); + riskRecord.setHospitalId(hospitalId); + riskRecord.setStatus(0); + riskRecord.setType(type); + riskRecord.sethRisk(hRisk); + riskRecord.sethLevel(rLevel); + riskRecord.sethScore(score); + riskRecord.setCreated(new Date()); + riskRecord.setModified(new Date()); + mongoTemplate.save(riskRecord); + + } + + } + +} 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 fbc5895..9df588c 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 @@ -185,10 +185,16 @@ public class DiagnoseConfigFacde { return new BaseResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg(ErrorCodeConstants.SUCCESS_DESCRIPTION); } - public BaseResponse queryDiagnoseConfig(String hospitalId, Integer userId) { + public BaseResponse queryDiagnoseConfig(String hospitalId,String type, Integer userId) { DiagnoseConfigQuery diagnoseConfigQuery = new DiagnoseConfigQuery(); diagnoseConfigQuery.setHospitalId(hospitalId); + if(StringUtils.isNotEmpty(type)){ + diagnoseConfigQuery.setType(type); + }else { + diagnoseConfigQuery.setTypeb(true); + } + List configModels = diagnoseConfigService.queryDiagnoseConfigs(diagnoseConfigQuery); if (CollectionUtils.isEmpty(configModels)) { diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/MatDeliverFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/MatDeliverFacade.java index caafedb..ba0e978 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/MatDeliverFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/MatDeliverFacade.java @@ -79,6 +79,8 @@ public class MatDeliverFacade { @Autowired private MatDeliverService matDeliverService; @Autowired + private BabyAutoDiagnoseRiskFacade babyAutoDiagnoseRiskFacade; + @Autowired private MatDeliverFollowService matDeliverFollowService; @Autowired private AntenatalExaminationFacade antenatalExaminationFacade; @@ -447,6 +449,17 @@ public class MatDeliverFacade { //新增分娩信息 matDeliverService.addMatDeliver(maternalDeliverModel); + //儿童自动诊断 + try { + BabyAutoRiskRequest babyAutoRiskRequest = new BabyAutoRiskRequest(); + babyAutoRiskRequest.setParentId(maternalDeliverModel.getParentId()); + + babyAutoDiagnoseRiskFacade.autoBabyRisk(babyAutoRiskRequest,userId); + } catch (Exception e) { + e.printStackTrace(); + } + + operateLogFacade.addAddOptLog(userId, Integer.parseInt(hospitalId), maternalDeliverModel, OptActionEnums.ADD.getId(), "添加分娩"); /** 使用优惠券 */ diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/BabyAutoRiskRequest.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/BabyAutoRiskRequest.java new file mode 100644 index 0000000..ab3c206 --- /dev/null +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/request/BabyAutoRiskRequest.java @@ -0,0 +1,21 @@ +package com.lyms.platform.operate.web.request; + +/** + * + * 儿童检查,自动高危入参类 + * @Author: 武涛涛 + * @Date: 2020/8/31 14:03 + */ +public class BabyAutoRiskRequest extends MatDeliverAddRequest { + + + private String hospitalId; + public String getHospitalId() { + return hospitalId; + } + + public void setHospitalId(String hospitalId) { + this.hospitalId = hospitalId; + } + +} 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 b75c18e..5ebce52 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 @@ -20,6 +20,16 @@ public class DiagnoseConfigRequest implements IBasicRequestConvert> configs; + //默认是孕妇类型,type=2是儿童类型 + private String type; + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } public String getId() { return id; @@ -59,6 +69,7 @@ public class DiagnoseConfigRequest implements IBasicRequestConvert