From c35be316708252221782994282f8734ab5903703 Mon Sep 17 00:00:00 2001 From: wtt Date: Wed, 2 Sep 2020 10:06:35 +0800 Subject: [PATCH] update --- .../lyms/platform/common/utils/StringUtils.java | 33 ++++ .../web/facade/BabyAutoDiagnoseRiskFacade.java | 171 ++++++++++++++++++--- 2 files changed, 186 insertions(+), 18 deletions(-) diff --git a/platform-common/src/main/java/com/lyms/platform/common/utils/StringUtils.java b/platform-common/src/main/java/com/lyms/platform/common/utils/StringUtils.java index 53947d1..dfcd4f5 100644 --- a/platform-common/src/main/java/com/lyms/platform/common/utils/StringUtils.java +++ b/platform-common/src/main/java/com/lyms/platform/common/utils/StringUtils.java @@ -51,8 +51,41 @@ public final class StringUtils { // } int day = (days % 7); return "孕" + str + (day > 0 ? "+" + day + "天" : ""); + } + /** + * 孕周转天数 + * @param dueWeek 入参实例 1周2天 + * @Author: 武涛涛 + * @Date: 2020/9/2 9:33 + */ + public static String dueWeekSwitchDays(String dueWeek) { + Integer day=0; + try { + if(StringUtils.isNotEmpty(dueWeek) && dueWeek.contains("周") && dueWeek.contains("天")){ + String zhou = dueWeek.substring(0, dueWeek.indexOf("周")); + String tian = dueWeek.substring(dueWeek.indexOf("周")+1,dueWeek.indexOf("天")); + if(StringUtils.isNotEmpty(zhou) ){ + int zhoui = Integer.parseInt(zhou); + day += zhoui * 7; + } + if(StringUtils.isNotEmpty(tian) ){ + int tiani = Integer.parseInt(tian); + day += tiani; + } + } + } catch (NumberFormatException e) { + e.printStackTrace(); + } + + return day.toString(); + } + public static void main(String[] args) { + System.out.println(dueWeekSwitchDays("1周2天")); + } + + //体重克算成千克 public static String cutBabyWeight(String babyWeight) { if (StringUtils.isEmpty(babyWeight)) { 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 index 55d6744..b493869 100644 --- 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 @@ -14,6 +14,7 @@ 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.collections.MapUtils; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; @@ -21,6 +22,7 @@ import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Component; +import java.lang.reflect.Field; import java.util.*; /** @@ -51,7 +53,7 @@ public class BabyAutoDiagnoseRiskFacade { * @Author: 武涛涛 * @Date: 2020/8/31 13:52 */ - public void autoBabyRisk(BabyAutoRiskRequest babyAutoRiskRequest, Integer userId) { + public void autoBabyRisk(BabyAutoRiskRequest babyAutoRiskRequest, Integer userId) throws NoSuchFieldException, IllegalAccessException { /* 儿童建档分两种方式: 1 孕妇分娩自动建档, @@ -77,7 +79,7 @@ public class BabyAutoDiagnoseRiskFacade { * @Author: 武涛涛 * @Date: 2020/8/31 14:56 */ - private List > autoRisk(BabyAutoRiskRequest babyAutoRiskRequest, String hospitalId, Integer type) { + private List > autoRisk(BabyAutoRiskRequest babyAutoRiskRequest, String hospitalId, Integer type) throws NoSuchFieldException, IllegalAccessException { Set list = new HashSet <>(); List > riskList = new ArrayList <>(); @@ -108,7 +110,7 @@ public class BabyAutoDiagnoseRiskFacade { Map > mapItems = getRiskConfig(configModels); if (mapItems != null && mapItems.size() > 0) { - MaternalDeliverModel maternalDeliverModel = null; + MaternalDeliverModel maternalDeliverModel = new MaternalDeliverModel(); if (type == 0) { MatDeliverQuery deliverQuery = new MatDeliverQuery(); deliverQuery.setParentId(babyAutoRiskRequest.getParentId()); @@ -132,7 +134,7 @@ public class BabyAutoDiagnoseRiskFacade { List riskFactorId = patients.getRiskFactorId();//孕妇存在的高危 //诊断项 List items = mapItems.get(BabyAutoDiagnoseEnums.BabyDiagnoseEnums.ymczgwys.getId()); - if (CollectionUtils.isNotEmpty(items)) { + if (CollectionUtils.isNotEmpty(items) && CollectionUtils.isNotEmpty(riskFactorId)) { for (DiagnoseItemModel item : items) { if (ymczgwys(riskFactorId, item)) { list.addAll(item.getRiskIds());//item.getRiskIds() 诊断项,高危儿诊断项目 @@ -144,16 +146,33 @@ public class BabyAutoDiagnoseRiskFacade { /*分娩孕周*/ + if (isEnableItem(status, BabyAutoDiagnoseEnums.BabyDiagnoseEnums.fmyz.getId()) && StringUtils.isNotEmpty(maternalDeliverModel.getDueWeek())) { + + String dueWeek = com.lyms.platform.common.utils.StringUtils.dueWeekSwitchDays(maternalDeliverModel.getDueWeek()); + List items = mapItems.get(BabyAutoDiagnoseEnums.BabyDiagnoseEnums.fmyz.getId()); + if (CollectionUtils.isNotEmpty(items) && StringUtils.isNotEmpty(dueWeek)) { + for (DiagnoseItemModel item : items) { + + item.setValueTwo(com.lyms.platform.common.utils.StringUtils.dueWeekSwitchDays(item.getValueTwo())); + item.setValueFive(com.lyms.platform.common.utils.StringUtils.dueWeekSwitchDays(item.getValueFive())); + + if (compare(item, dueWeek) && CollectionUtils.isNotEmpty(item.getRiskIds())) { + list.addAll(item.getRiskIds()); + } + } + } + } + /*胎方位*/ - if (isEnableItem(status, BabyAutoDiagnoseEnums.BabyDiagnoseEnums.tfw.getId()) && maternalDeliverModel != null) { + if (isEnableItem(status, BabyAutoDiagnoseEnums.BabyDiagnoseEnums.tfw.getId()) && CollectionUtils.isNotEmpty(maternalDeliverModel.getPlacentas())) { 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)) { + if (CollectionUtils.isNotEmpty(items) && StringUtils.isNotEmpty(fetalPosition)) { for (DiagnoseItemModel item : items) { String valueTwo = item.getValueTwo(); @@ -168,7 +187,7 @@ public class BabyAutoDiagnoseRiskFacade { } } /*脐带长度*/ - if (isEnableItem(status, BabyAutoDiagnoseEnums.BabyDiagnoseEnums.twcd.getId()) && maternalDeliverModel != null) { + if (isEnableItem(status, BabyAutoDiagnoseEnums.BabyDiagnoseEnums.twcd.getId()) && CollectionUtils.isNotEmpty(maternalDeliverModel.getExtPlacentas())) { List extPlacentas = maternalDeliverModel.getExtPlacentas(); if (CollectionUtils.isNotEmpty(extPlacentas)) { MaternalDeliverModel.ExtPlacenta extPlacenta = extPlacentas.get(0); @@ -177,7 +196,7 @@ public class BabyAutoDiagnoseRiskFacade { String umbilicalCordLength = extPlacenta.getUmbilicalCordLength(); List items = mapItems.get(BabyAutoDiagnoseEnums.BabyDiagnoseEnums.twcd.getId()); - if (CollectionUtils.isNotEmpty(items)) { + if (CollectionUtils.isNotEmpty(items) && StringUtils.isNotEmpty(umbilicalCordLength)) { for (DiagnoseItemModel item : items) { if (compare(item, umbilicalCordLength) && CollectionUtils.isNotEmpty(item.getRiskIds())) { list.addAll(item.getRiskIds()); @@ -189,7 +208,7 @@ public class BabyAutoDiagnoseRiskFacade { } } /*脐带异常类型*/ - if (isEnableItem(status, BabyAutoDiagnoseEnums.BabyDiagnoseEnums.qdyclx.getId()) && maternalDeliverModel != null) { + if (isEnableItem(status, BabyAutoDiagnoseEnums.BabyDiagnoseEnums.qdyclx.getId()) && CollectionUtils.isNotEmpty(maternalDeliverModel.getExtPlacentas())) { List extPlacentas = maternalDeliverModel.getExtPlacentas(); if (CollectionUtils.isNotEmpty(extPlacentas)) { MaternalDeliverModel.ExtPlacenta extPlacenta = extPlacentas.get(0); @@ -212,7 +231,7 @@ public class BabyAutoDiagnoseRiskFacade { } /*分娩方式*/ - if (isEnableItem(status, BabyAutoDiagnoseEnums.BabyDiagnoseEnums.fmfs.getId()) && maternalDeliverModel != null) { + if (isEnableItem(status, BabyAutoDiagnoseEnums.BabyDiagnoseEnums.fmfs.getId()) && StringUtils.isNotEmpty(maternalDeliverModel.getDeliveryMode())) { if (StringUtils.isNotEmpty(maternalDeliverModel.getDeliveryMode())) { String deliveryMode = maternalDeliverModel.getDeliveryMode(); @@ -224,13 +243,13 @@ public class BabyAutoDiagnoseRiskFacade { fmfs = b.toString(); } } - if(StringUtils.isNotEmpty(fmfs)){ + 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)) { + if (valueTwo != null && valueTwo.equals(fmfs)) { list.addAll(item.getRiskIds()); } @@ -240,8 +259,8 @@ public class BabyAutoDiagnoseRiskFacade { } } - /*胎儿畸形*/ - if (isEnableItem(status, BabyAutoDiagnoseEnums.BabyDiagnoseEnums.tejx.getId()) && maternalDeliverModel != null) { + /*胎儿畸形 7 */ + if (isEnableItem(status, BabyAutoDiagnoseEnums.BabyDiagnoseEnums.tejx.getId()) && maternalDeliverModel.getBaby() != null) { List baby = maternalDeliverModel.getBaby(); if (CollectionUtils.isNotEmpty(baby)) { MaternalDeliverModel.Baby baby1 = baby.get(0); @@ -249,20 +268,103 @@ public class BabyAutoDiagnoseRiskFacade { List items = mapItems.get(BabyAutoDiagnoseEnums.BabyDiagnoseEnums.tejx.getId()); if (CollectionUtils.isNotEmpty(items)) { for (DiagnoseItemModel item : items) { + if (item != null && item.getTejx() != null) { + Map tejx = item.getTejx(); + if (tejx(baby1, tejx)) { + list.addAll(item.getRiskIds()); + } + } + } + } + } + } + } + /*Apgar评分 8 */ + if (isEnableItem(status, BabyAutoDiagnoseEnums.BabyDiagnoseEnums.pf.getId()) && maternalDeliverModel.getBaby() != null) { + List baby = maternalDeliverModel.getBaby(); + if (CollectionUtils.isNotEmpty(baby)) { + MaternalDeliverModel.Baby baby1 = baby.get(0); + if (baby1 != null) { + String[] strings = new String[3]; + Map m = JsonUtil.getMap(baby1.getApgarScore()); + if (MapUtils.isNotEmpty(m)) { + strings[0] = m.get("pf1") == null ? "" : m.get("pf1"); + strings[1] = m.get("pf5") == null ? "" : m.get("pf5"); + strings[2] = m.get("pf10") == null ? "" : m.get("pf10"); + } + for (int i = 0; i < strings.length; i++) { + if (StringUtils.isNotEmpty(strings[i])) { + List items = mapItems.get(BabyAutoDiagnoseEnums.BabyDiagnoseEnums.pf.getId()); + if (CollectionUtils.isNotEmpty(items)) { + for (DiagnoseItemModel item : items) { + if (compare(item, strings[i]) && CollectionUtils.isNotEmpty(item.getRiskIds())) { + list.addAll(item.getRiskIds()); + } + } + } + } + } - String valueTwo = item.getValueTwo(); - /*if (valueTwo.equals(umbilicalCordExType)) { - list.addAll(item.getRiskIds()); - }*/ + } + } + } + /*窒息分钟 9 */ + if (isEnableItem(status, BabyAutoDiagnoseEnums.BabyDiagnoseEnums.zxfz.getId()) && maternalDeliverModel.getBaby() != null) { + List baby = maternalDeliverModel.getBaby(); + if (CollectionUtils.isNotEmpty(baby)) { + MaternalDeliverModel.Baby baby1 = baby.get(0); + if (baby1 != null) { + String asphyxiaM = baby1.getAsphyxiaM(); + + List items = mapItems.get(BabyAutoDiagnoseEnums.BabyDiagnoseEnums.pf.getId()); + if (CollectionUtils.isNotEmpty(items) && StringUtils.isNotEmpty(asphyxiaM)) { + for (DiagnoseItemModel item : items) { + if (compare(item, asphyxiaM) && CollectionUtils.isNotEmpty(item.getRiskIds())) { + list.addAll(item.getRiskIds()); + } } } + } + } + } + + /*胎数 10 */ + if (isEnableItem(status, BabyAutoDiagnoseEnums.BabyDiagnoseEnums.ts.getId()) && maternalDeliverModel.getTireNumber() != null) { + String tireNumber = maternalDeliverModel.getTireNumber().toString(); + List items = mapItems.get(BabyAutoDiagnoseEnums.BabyDiagnoseEnums.ts.getId()); + if (CollectionUtils.isNotEmpty(items) && StringUtils.isNotEmpty(tireNumber)) { + for (DiagnoseItemModel item : items) { + String valueTwo = item.getValueTwo(); + if (valueTwo.equals(tireNumber)) { + list.addAll(item.getRiskIds()); + } } } + } + /*体重 11 */ + if (isEnableItem(status, BabyAutoDiagnoseEnums.BabyDiagnoseEnums.tz.getId()) && maternalDeliverModel.getBaby() != null) { + List baby = maternalDeliverModel.getBaby(); + if (CollectionUtils.isNotEmpty(baby)) { + MaternalDeliverModel.Baby baby1 = baby.get(0); + if (baby1 != null) { + String babyHeight = baby1.getBabyHeight(); + + List items = mapItems.get(BabyAutoDiagnoseEnums.BabyDiagnoseEnums.tz.getId()); + if (CollectionUtils.isNotEmpty(items) && StringUtils.isNotEmpty(babyHeight)) { + for (DiagnoseItemModel item : items) { + if (compare(item, babyHeight) && CollectionUtils.isNotEmpty(item.getRiskIds())) { + list.addAll(item.getRiskIds()); + } + } + } + } + } + } } @@ -280,6 +382,27 @@ public class BabyAutoDiagnoseRiskFacade { } /** + * 胎儿畸形 + * + * @param baby1 + * @param tejx + * @Author: 武涛涛 + * @Date: 2020/9/1 17:48 + */ + private boolean tejx(MaternalDeliverModel.Baby baby1, Map tejx) throws NoSuchFieldException, IllegalAccessException { + for (Map.Entry entry : tejx.entrySet()) { + Field field = baby1.getClass().getDeclaredField(entry.getKey());//获取指定字段Field + field.setAccessible(true);//设置权限 + boolean b = (boolean) field.get(baby1); + boolean b1 = (boolean) entry.getValue(); + if (b1 != b) { + return false; + } + } + return true; + } + + /** * 母存在高危因素,比较 * * @param riskFactorId @@ -484,4 +607,16 @@ public class BabyAutoDiagnoseRiskFacade { } + /** + * 将字符串的首字母转大写 + * + * @param str 需要转换的字符串 + * @return + */ + private static String captureName(String str) { + // 进行字母的ascii编码前移,效率要高于截取字符串进行转换的操作 + char[] cs = str.toCharArray(); + cs[0] -= 32; + return String.valueOf(cs); + } } -- 1.8.3.1