From d608a5701206936c32dbccbf4d0c029c98389969 Mon Sep 17 00:00:00 2001 From: shiyang Date: Sun, 20 Feb 2022 17:43:25 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9A=86=E5=8C=96-=E5=A6=87=E5=A5=B3=E5=81=A5?= =?UTF-8?q?=E5=BA=B7=E7=AE=A1=E7=90=86-=E5=AD=95=E5=89=8D=E4=BC=98?= =?UTF-8?q?=E7=94=9F-=E7=BB=93=E6=9E=9C=E5=BB=BA=E8=AE=AE-=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E9=A1=B9=E5=8F=8A=E5=BC=82=E5=B8=B8=E6=8E=A8=E8=8D=90?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E3=80=82=E8=B7=91=E5=8E=86=E5=8F=B2=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/PreEugenicsBaseController.java | 16 +- .../web/result/PreEugenicsBaseListResult.java | 28 ++ .../operate/web/service/IPreEugenicsService.java | 2 + .../web/service/impl/PreEugebicsServiceImpl.java | 338 +++++++++++++++++++-- 4 files changed, 350 insertions(+), 34 deletions(-) diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PreEugenicsBaseController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PreEugenicsBaseController.java index 74cd038..ac12c3c 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PreEugenicsBaseController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PreEugenicsBaseController.java @@ -328,7 +328,7 @@ public class PreEugenicsBaseController extends BaseController { /** * 隆化-男女临床检查项目填写是否完整 0:不完整 1:完整,历史数据添加字段clinicalCheckYn - * + *跑历史数据 * @return */ @RequestMapping(method = RequestMethod.GET, value = "/pastPreeugenicsBaseAdd") @@ -338,7 +338,7 @@ public class PreEugenicsBaseController extends BaseController { } /** - * 结果建议-异常项及异常推荐 + * 隆化-结果建议-异常项及异常推荐 * * @param id * @Author: sy @@ -350,4 +350,16 @@ public class PreEugenicsBaseController extends BaseController { public BaseObjectResponse getAbnormityProposal(String id) { return iPreEugenicsService.getAbnormityProposal(id); } + + /** + * 隆化-结果建议-异常项及异常推荐,历史数据添加字段,abnormity、abnormityProposal + * 跑历史数据 + * @return + */ + @RequestMapping(method = RequestMethod.GET, value = "/pastAbnormityProposalAdd") + @ResponseBody + public BaseResponse pastAbnormityProposalAdd() { + return iPreEugenicsService.pastAbnormityProposalAdd(); + } + } \ No newline at end of file diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/PreEugenicsBaseListResult.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/PreEugenicsBaseListResult.java index 248c5b4..f72509f 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/PreEugenicsBaseListResult.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/result/PreEugenicsBaseListResult.java @@ -2,6 +2,8 @@ package com.lyms.platform.operate.web.result; import com.lyms.platform.pojo.PreEugenicsBaseModel; +import java.util.List; + public class PreEugenicsBaseListResult extends PreEugenicsBaseModel { @@ -94,6 +96,32 @@ public class PreEugenicsBaseListResult extends PreEugenicsBaseModel { //隆化-男女临床检查项目填写是否完整 0:不完整 1:完整 private Integer clinicalCheckYn; + //隆化-结果建议,评估异常项 + List abnormity; + + //隆化-结果建议,异常项建议 + List abnormityProposal; + + @Override + public List getAbnormity() { + return abnormity; + } + + @Override + public void setAbnormity(List abnormity) { + this.abnormity = abnormity; + } + + @Override + public List getAbnormityProposal() { + return abnormityProposal; + } + + @Override + public void setAbnormityProposal(List abnormityProposal) { + this.abnormityProposal = abnormityProposal; + } + public Integer getClinicalCheckYn() { return clinicalCheckYn; } diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IPreEugenicsService.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IPreEugenicsService.java index 46991b1..fbf5020 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IPreEugenicsService.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IPreEugenicsService.java @@ -41,4 +41,6 @@ public interface IPreEugenicsService extends IFormReportService> getAbnormityRoProposal(PreEugenicsBaseModel model){ Map> map=new HashMap(); List abnormityList=new ArrayList<>(); @@ -1482,18 +1482,19 @@ public class PreEugebicsServiceImpl extends BaseServiceImpl implements IPreEugen //女方bmi(身高体重) String bmi=null!=model.getWifePhysiqueCheck().get("bmi")?model.getWifePhysiqueCheck().get("bmi").toString():null; if(StringUtils.isNotEmpty(bmi)){ - if(Double.parseDouble(bmi)>25||Double.parseDouble(bmi)<19){ - abnormityList.add("体重指数:女方: "+bmi); + double bm=Double.parseDouble(bmi); + if(bm>25||bm<19){ + abnormityList.add("体重指数:女方: "+bm); abnormityProposal.add("体重超重或肥胖对女性内分泌系统、胎儿发育、分娩过程等会产生不良影响," + "建议合理饮食,将控制体重在正常范围内。"); } } - //女方血压 - int gaoya=null!=model.getWifePhysiqueCheck().get("ssy")?(int)model.getWifePhysiqueCheck().get("ssy"):0;//高压 - int diya=null!=model.getWifePhysiqueCheck().get("szy")?(int)model.getWifePhysiqueCheck().get("szy"):0;//低压 - if(0!=gaoya&&0!=diya){ + //女方血压偏高/偏低 + Integer gaoya=null!=model.getWifePhysiqueCheck().get("ssy")?(Integer)model.getWifePhysiqueCheck().get("ssy"):null;//高压 + Integer diya=null!=model.getWifePhysiqueCheck().get("szy")?(Integer)model.getWifePhysiqueCheck().get("szy"):null;//低压 + if(null!=gaoya&&null!=diya){ if(gaoya>140||diya>90||gaoya<90||diya<50){ - abnormityList.add("血压偏高/偏低:女方: "+gaoya+"/"+diya+"mmHg"); + abnormityList.add("血压:女方: "+gaoya+"/"+diya+"mmHg"); abnormityProposal.add("慢性高血压是妊娠的高危因素,应请内科会诊,全面检查,明确疾病程度、是否有合并症,评价是否适宜妊娠。" + "适宜 妊娠者要积极治疗,待血压控制稳定后在医生的指导下怀孕。有严重合并症 、血压控制不好者不宜怀孕。"); } @@ -1502,57 +1503,330 @@ public class PreEugebicsServiceImpl extends BaseServiceImpl implements IPreEugen //女方,高龄 String age=model.getWifeAge(); if(StringUtils.isNotEmpty(age) && Integer.parseInt(age)>35){ - abnormityList.add("高龄:女方: "+age); + abnormityList.add("年龄:女方: "+age+" 岁"); abnormityProposal.add("妊娠16-23周应进行产前诊断(细胞遗传学诊断)"); } //女方临床检查 if(MapUtils.isNotEmpty(model.getWifeClinicalCheck())){ - //血细胞分析(女方淋巴细胞比例偏高 L ,女方血小板偏高 PLT ) - List xxbfx= null!=model.getWifePhysiqueCheck().get("xxbfx")? (List) model.getWifePhysiqueCheck().get("xxbfx") :null; - if(CollectionUtils.isNotEmpty(xxbfx) && xxbfx.size()>=5 - && StringUtils.isNotEmpty(xxbfx.get(5).toString()) - && StringUtils.isNotEmpty(xxbfx.get(2).toString())){ - int l=Integer.parseInt(xxbfx.get(5)); - int plt=Integer.parseInt(xxbfx.get(2)); - if(l<20 || l>40){ - abnormityList.add("淋巴细胞比例偏高/偏低 L:女方: "+l); + //血细胞分析(贫血 HB, 淋巴细胞比例偏高 L ,血小板偏高 PLT ) + List xxbfx= null!=model.getWifeClinicalCheck().get("xxbfx")? (List) model.getWifeClinicalCheck().get("xxbfx") :null; + if(CollectionUtils.isNotEmpty(xxbfx)){ + Integer hb=StringUtils.isNotEmpty(xxbfx.get(0))?Integer.valueOf(xxbfx.get(0)):null; + Integer l=StringUtils.isNotEmpty(xxbfx.get(5))?Integer.valueOf(xxbfx.get(5)):null; + Integer plt=StringUtils.isNotEmpty(xxbfx.get(2))?Integer.valueOf(xxbfx.get(2)):null; + if(null!=hb&&(hb<120 || hb>160)){ + abnormityList.add("血细胞 HB:女方: "+hb+" g/L"); + abnormityProposal.add("建议复查,经内科大夫治疗恢复正常后再考虑怀孕。"); + } + if(null!=l&&(l<20 || l>40)){ + abnormityList.add("血细胞 L:女方: "+l+"%"); abnormityProposal.add("常见于传染性单核细胞增多症,淋巴细胞性白血病,结核等。明确诊断后再考虑怀孕。"); } - if(plt<100 || plt>300){ - abnormityList.add("血小板偏高/偏低 PLT:女方: "+plt); + if(null!=plt&&(plt<100 || plt>300)){ + abnormityList.add("血细胞 PLT:女方: "+plt+" ×10\u2079/L"); abnormityProposal.add("常见于原发性增多:慢性粒细胞性白血病,真性红细胞增多症,原发性血小板增多症等," + "反应性增多:急性感染,急性溶血等。明确诊断后并及时治疗,根据病情评估是否适宜怀孕。"); } } //女方肌酐偏低 - String jigan=null!=model.getWifePhysiqueCheck().get("jigan")?model.getWifePhysiqueCheck().get("jigan").toString():null; + String jigan=null!=model.getWifeClinicalCheck().get("jigan")?model.getWifeClinicalCheck().get("jigan").toString():null; if(StringUtils.isNotEmpty(jigan)){ - int jg=Integer.parseInt(jigan); + Integer jg=Integer.valueOf(jigan); if(jg<41||jg>73){ - abnormityList.add("肌酐偏高/偏低 PLT:女方: "+jg); + abnormityList.add("肌酐 PLT:女方: "+jg+" u mol/L"); abnormityProposal.add("建议复查,请肾科明确诊断。"); } } //女方乙肝 - //女转氨酶升高 - //女方梅毒螺旋体阳性 + List yigan=null!=model.getWifeClinicalCheck().get("yigan")?(List) model.getWifeClinicalCheck().get("yigan"):null; + if(CollectionUtils.isNotEmpty(yigan) && Arrays.asList(yigan.toArray()).contains(1)){ + StringBuffer sb=new StringBuffer(); + for (int i=0;i31){ + abnormityList.add("谷丙转氨酶(ALT):女方: "+zam+" U/L"); + abnormityProposal.add("转氨酶升高,提示有肝细胞损伤,建议到综合医院肝病专科进一步诊治,建议治愈并停药3个月以上再生育。"); + } + } + //女方梅毒螺旋体筛查阳性 + String meidu=null!=model.getWifeClinicalCheck().get("meidu")?model.getWifeClinicalCheck().get("meidu").toString():null; + if(StringUtils.isNotEmpty(meidu)){ + int md=Integer.parseInt(meidu); + if(md==1){ + abnormityList.add("梅毒螺旋体:女方: 阳性"); + abnormityProposal.add("为梅毒血清学初筛试验异常,阳性者需进一步做确证试验,若确诊为梅毒,建议治疗痊愈后生育。"); + } + } //女方巨细胞(IGM)阳性 - //女方贫 贫血范围HB - //女方促甲状腺激素偏高 - //女方促甲状腺激素偏低 + String jxbbdIgM=null!=model.getWifeClinicalCheck().get("jxbbdIgM")?model.getWifeClinicalCheck().get("jxbbdIgM").toString():null; + if(StringUtils.isNotEmpty(jxbbdIgM)){ + int igm=Integer.parseInt(jxbbdIgM); + if(igm==1){ + abnormityList.add("巨细胞病毒(IGM):女方: 阳性"); + abnormityProposal.add("建议复查,治疗转阴后三个月再复查正常后考虑怀孕。"); + } + } + //女方促甲状腺激素(偏高、偏低) + String cjzxjs=null!=model.getWifeClinicalCheck().get("cjzxjs")?model.getWifeClinicalCheck().get("cjzxjs").toString():null; + if(StringUtils.isNotEmpty(cjzxjs)){ + int js=Integer.parseInt(cjzxjs); + if(js>50){//偏高 + abnormityList.add("促甲状腺激素(TSH):女方: "+js+" u IU/ml"); + abnormityProposal.add("常见于原发性甲减,亚临床甲减,地方性甲状腺肿,亚急性甲状腺炎或慢性淋巴细胞性甲状腺炎。" + + "建议明确诊断,由产科医生和内分泌科医生评估是否适合妊娠。"); + }else if(js<30){//偏低 + abnormityList.add("促甲状腺激素(TSH):女方: "+js+" u IU/ml"); + abnormityProposal.add("常见于甲亢,亚临床甲亢。建议明确诊断,由产科医生和内分泌科医生评估是否适合妊娠。"); + } + } //女方血糖偏高 - //女方妇科B超检查异常 + String xuetang=null!=model.getWifeClinicalCheck().get("xuetang")?model.getWifeClinicalCheck().get("xuetang").toString():null; + if(StringUtils.isNotEmpty(xuetang)){ + double xt=Double.parseDouble(xuetang); + if(xt<3.33||xt>6.11){ + abnormityList.add("血糖:女方: "+xt+" mmol/L"); + abnormityProposal.add("为糖尿病初筛检测异常,建议由产科和内分泌科医生提供专业咨询指导。确诊糖尿病者由专科医生评价病情程度、" + + "是否适合妊娠以及妊娠的最佳时机,并在整个孕期严密监测病情发展变化。"); + } + } } + //女方妇科B超检查异常 + if(MapUtils.isNotEmpty(model.getWifeBCheck())){ + List bcjc= null!=model.getWifeBCheck().get("bcjc")? (List) model.getWifeBCheck().get("bcjc") :null; + if(CollectionUtils.isNotEmpty(bcjc)){ + int bc=(int)bcjc.get(0); + if(bc==1){ + abnormityList.add("妇科B超检查:女方: 异常"); + abnormityProposal.add("建议您根据B超检查结果提示的具体异常类型前往正规医院妇产科门诊就医,明确诊断后在妇产科医生治疗和指导下怀孕。"); + } + } + } + /**男*/ + //男体格检查 + if(MapUtils.isNotEmpty(model.getHusbandPhysiqueCheck())){ + //bmi(身高体重) + String bmi=null!=model.getHusbandPhysiqueCheck().get("bmi")?model.getHusbandPhysiqueCheck().get("bmi").toString():null; + if(StringUtils.isNotEmpty(bmi)){ + double bm=Double.parseDouble(bmi); + if(bm>25||bm<19){ + abnormityList.add("体重指数:男方: "+bm); + abnormityProposal.add("提示营养过度或者肥胖,可以生育,建议由男科和内分泌科医生提供咨询指导。"); + } + } + //男血压偏高/偏低 + Integer gaoya=null!=model.getHusbandPhysiqueCheck().get("ssy")?(Integer)model.getHusbandPhysiqueCheck().get("ssy"):null;//高压 + Integer diya=null!=model.getHusbandPhysiqueCheck().get("szy")?(Integer)model.getHusbandPhysiqueCheck().get("szy"):null;//低压 + if(null!=gaoya&&null!=diya){ + if(gaoya>140||diya>90||gaoya<90||diya<50){ + abnormityList.add("血压:男方: "+gaoya+"/"+diya+" mmHg"); + abnormityProposal.add("改善生活行为,如减轻体重、减少钠盐摄入、补充钙和钾盐、减少脂肪摄入、戒烟和限制饮酒、增加运动等;使用降压药物;" + + "血压控制目标值至少<140/90mmHg;协同控制多重心血管危险因素。可以生育,建议由心内科医生提供咨询指导。"); + } + } + //甲状腺疾病 + List jzx= null!=model.getHusbandPhysiqueCheck().get("jzx")? (List) model.getHusbandPhysiqueCheck().get("jzx") :null; + if(CollectionUtils.isNotEmpty(jzx)){ + if(null!=jzx.get(0)&&1==jzx.get(0)){ + abnormityList.add("甲状腺:男方: 异常"); + abnormityProposal.add("针对功能亢进者,采用手术切除导致功能亢进的肿瘤或增生组织,或者放射治疗毁坏肿瘤或增生组织,或者药物治疗抑制激素的合成和释放;" + + "针对功能减退者,采用有关缺乏激素的替代治疗或补充治疗,或者内分泌腺组织移植、提供身体的需要;建议暂不生育,由内分泌科、外科医生提供咨询指导、治疗后可以生育。"); + } + } - - - + } + //男一般情况 + if(MapUtils.isNotEmpty(model.getHusbandBaseInfo())){ + //男是否吸烟 + List ysyy= null!=model.getHusbandBaseInfo().get("ysyy")? (List) model.getHusbandBaseInfo().get("ysyy") :null; + if(CollectionUtils.isNotEmpty(ysyy)){ + Integer xiyan=null!=ysyy.get(3)?Integer.valueOf(ysyy.get(3).toString()):null; + Integer hejiu=null!=ysyy.get(5)?Integer.valueOf(ysyy.get(5).toString()):null; + if(null!=xiyan&&1==xiyan){ + abnormityList.add("是否吸烟:男方: 吸烟"); + abnormityProposal.add("吸烟是明确的导致胎儿先天畸形的危险因素,烟草中的有害物质可以致癌,对心脑血管、呼吸和消化等多个系统和器官产生影响;" + + "可以导致精液质量下降;建议暂不生育,至少戒烟3个月后再行生育,由男科或泌尿外科等专科医生提供咨询指导。"); + } + if(null!=hejiu&&(1==hejiu||2==hejiu)){ + abnormityList.add("是否饮酒:男方: 饮酒"); + abnormityProposal.add("酒精可以对消化道、肝脏、神经等系统、器官产生危害;可以导致精液质量下降;建议暂不生育,至少戒酒3个月后再行生育," + + "由男科或泌尿外科等专科医生提供咨询指导。"); + } + } + } + //男临床检查 + if(MapUtils.isNotEmpty(model.getHusbandClinicalCheck())){ + //男肌酐偏低 + String jigan=null!=model.getHusbandClinicalCheck().get("jigan")?model.getHusbandClinicalCheck().get("jigan").toString():null; + if(StringUtils.isNotEmpty(jigan)){ + Integer jg=Integer.valueOf(jigan); + if(jg<41||jg>73){ + abnormityList.add("肌酐 PLT:男方: "+jg+" u mol/L"); + abnormityProposal.add("肌酐值降低,可见于肌肉消瘦者,建议暂不生育,到综合医院由泌尿外科或肾病专科医生提供咨询指导、治疗后可以生育。"); + } + } + //男方乙肝 + List yigan=null!=model.getHusbandClinicalCheck().get("yigan")?(List) model.getHusbandClinicalCheck().get("yigan"):null; + if(CollectionUtils.isNotEmpty(yigan) && Arrays.asList(yigan.toArray()).contains(1)){ + StringBuffer sb=new StringBuffer(); + for (int i=0;i31){ + abnormityList.add("谷丙转氨酶(ALT):男方: "+zam+" U/L"); + abnormityProposal.add("转氨酶升高,提示有肝细胞损伤,建议到综合医院肝病专科进一步诊治,建议治愈并停药3个月以上再生育。"); + } + } + //男方梅毒螺旋体筛查阳性 + String meidu=null!=model.getHusbandClinicalCheck().get("meidu")?model.getHusbandClinicalCheck().get("meidu").toString():null; + if(StringUtils.isNotEmpty(meidu)){ + int md=Integer.parseInt(meidu); + if(md==1){ + abnormityList.add("梅毒螺旋体:男方: 阳性"); + abnormityProposal.add("为梅毒血清学初筛试验异常,阳性者需进一步做确证试验,若确诊为梅毒,建议治疗痊愈后生育。"); + } + } + } map.put("abnormity",abnormityList); map.put("abnormityProposal",abnormityProposal); return map; } + @Override + public BaseResponse pastAbnormityProposalAdd() { + Query query=new Query(); + query.addCriteria(Criteria.where("hospitalId").is("2100001605")); + List preEugenicsBaseModels = mongoTemplate.find(query, PreEugenicsBaseModel.class); + if (CollectionUtils.isNotEmpty(preEugenicsBaseModels)) { + int batchSize = 20; + int end = 0; + List listFuture = new ArrayList <>(); + for (int i = 0; i < preEugenicsBaseModels.size(); i += batchSize) { + end = (end + batchSize); + if (end > preEugenicsBaseModels.size()) { + end = preEugenicsBaseModels.size(); + } + final List risks = preEugenicsBaseModels.subList(i, end); + listFuture.add(commonThreadPool.submit(new Callable() { + @Override + public Object call() throws Exception { + if (CollectionUtils.isNotEmpty(risks)) { + for (PreEugenicsBaseModel model : risks) { + try { + Map> map = getAbnormityRoProposal(model); + if(MapUtils.isNotEmpty(map)){ + model.setAbnormity(map.get("abnormity")); + model.setAbnormityProposal(map.get("abnormityProposal")); + Query query = Query.query(Criteria.where("id").is(model.getId())); + Update update = MongoConvertHelper + .convertToNativeUpdate(ReflectionUtils.getUpdateField(model)); + mongoTemplate.updateFirst(query, update, PreEugenicsBaseModel.class); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + } + return null; + } + })); + } + + } + return new BaseObjectResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功"); + } + public static final String AREA_URL = PropertiesUtils.getPropertyValue("area_url"); } -- 1.8.3.1