Commit c35be316708252221782994282f8734ab5903703

Authored by wtt
1 parent 71870b62ac

update

Showing 2 changed files with 186 additions and 18 deletions

platform-common/src/main/java/com/lyms/platform/common/utils/StringUtils.java View file @ c35be31
... ... @@ -51,7 +51,40 @@
51 51 // }
52 52 int day = (days % 7);
53 53 return "孕" + str + (day > 0 ? "+" + day + "天" : "");
  54 + }
  55 + /**
  56 + * 孕周转天数
  57 + * @param dueWeek 入参实例 1周2天
  58 + * @Author: 武涛涛
  59 + * @Date: 2020/9/2 9:33
  60 + */
  61 + public static String dueWeekSwitchDays(String dueWeek) {
  62 + Integer day=0;
  63 + try {
  64 + if(StringUtils.isNotEmpty(dueWeek) && dueWeek.contains("周") && dueWeek.contains("天")){
  65 + String zhou = dueWeek.substring(0, dueWeek.indexOf("周"));
  66 + String tian = dueWeek.substring(dueWeek.indexOf("周")+1,dueWeek.indexOf("天"));
  67 + if(StringUtils.isNotEmpty(zhou) ){
  68 + int zhoui = Integer.parseInt(zhou);
  69 + day += zhoui * 7;
  70 + }
  71 + if(StringUtils.isNotEmpty(tian) ){
  72 + int tiani = Integer.parseInt(tian);
  73 + day += tiani;
  74 + }
  75 + }
  76 + } catch (NumberFormatException e) {
  77 + e.printStackTrace();
  78 + }
  79 +
  80 + return day.toString();
  81 +
54 82 }
  83 +
  84 + public static void main(String[] args) {
  85 + System.out.println(dueWeekSwitchDays("1周2天"));
  86 + }
  87 +
55 88  
56 89 //体重克算成千克
57 90 public static String cutBabyWeight(String babyWeight) {
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/BabyAutoDiagnoseRiskFacade.java View file @ c35be31
... ... @@ -14,6 +14,7 @@
14 14 import com.lyms.platform.query.DiagnoseItemsQuery;
15 15 import com.lyms.platform.query.MatDeliverQuery;
16 16 import org.apache.commons.collections.CollectionUtils;
  17 +import org.apache.commons.collections.MapUtils;
17 18 import org.apache.commons.lang.StringUtils;
18 19 import org.springframework.beans.factory.annotation.Autowired;
19 20 import org.springframework.data.mongodb.core.MongoTemplate;
... ... @@ -21,6 +22,7 @@
21 22 import org.springframework.data.mongodb.core.query.Query;
22 23 import org.springframework.stereotype.Component;
23 24  
  25 +import java.lang.reflect.Field;
24 26 import java.util.*;
25 27  
26 28 /**
... ... @@ -51,7 +53,7 @@
51 53 * @Author: 武涛涛
52 54 * @Date: 2020/8/31 13:52
53 55 */
54   - public void autoBabyRisk(BabyAutoRiskRequest babyAutoRiskRequest, Integer userId) {
  56 + public void autoBabyRisk(BabyAutoRiskRequest babyAutoRiskRequest, Integer userId) throws NoSuchFieldException, IllegalAccessException {
55 57 /*
56 58 儿童建档分两种方式:
57 59 1 孕妇分娩自动建档,
... ... @@ -77,7 +79,7 @@
77 79 * @Author: 武涛涛
78 80 * @Date: 2020/8/31 14:56
79 81 */
80   - private List <Map <String, String>> autoRisk(BabyAutoRiskRequest babyAutoRiskRequest, String hospitalId, Integer type) {
  82 + private List <Map <String, String>> autoRisk(BabyAutoRiskRequest babyAutoRiskRequest, String hospitalId, Integer type) throws NoSuchFieldException, IllegalAccessException {
81 83 Set <String> list = new HashSet <>();
82 84 List <Map <String, String>> riskList = new ArrayList <>();
83 85  
... ... @@ -108,7 +110,7 @@
108 110 Map <Integer, List <DiagnoseItemModel>> mapItems = getRiskConfig(configModels);
109 111 if (mapItems != null && mapItems.size() > 0) {
110 112  
111   - MaternalDeliverModel maternalDeliverModel = null;
  113 + MaternalDeliverModel maternalDeliverModel = new MaternalDeliverModel();
112 114 if (type == 0) {
113 115 MatDeliverQuery deliverQuery = new MatDeliverQuery();
114 116 deliverQuery.setParentId(babyAutoRiskRequest.getParentId());
... ... @@ -132,7 +134,7 @@
132 134 List <String> riskFactorId = patients.getRiskFactorId();//孕妇存在的高危
133 135 //诊断项
134 136 List <DiagnoseItemModel> items = mapItems.get(BabyAutoDiagnoseEnums.BabyDiagnoseEnums.ymczgwys.getId());
135   - if (CollectionUtils.isNotEmpty(items)) {
  137 + if (CollectionUtils.isNotEmpty(items) && CollectionUtils.isNotEmpty(riskFactorId)) {
136 138 for (DiagnoseItemModel item : items) {
137 139 if (ymczgwys(riskFactorId, item)) {
138 140 list.addAll(item.getRiskIds());//item.getRiskIds() 诊断项,高危儿诊断项目
139 141  
140 142  
141 143  
... ... @@ -144,16 +146,33 @@
144 146  
145 147  
146 148 /*分娩孕周*/
  149 + if (isEnableItem(status, BabyAutoDiagnoseEnums.BabyDiagnoseEnums.fmyz.getId()) && StringUtils.isNotEmpty(maternalDeliverModel.getDueWeek())) {
147 150  
  151 + String dueWeek = com.lyms.platform.common.utils.StringUtils.dueWeekSwitchDays(maternalDeliverModel.getDueWeek());
  152 + List <DiagnoseItemModel> items = mapItems.get(BabyAutoDiagnoseEnums.BabyDiagnoseEnums.fmyz.getId());
  153 + if (CollectionUtils.isNotEmpty(items) && StringUtils.isNotEmpty(dueWeek)) {
  154 + for (DiagnoseItemModel item : items) {
  155 +
  156 + item.setValueTwo(com.lyms.platform.common.utils.StringUtils.dueWeekSwitchDays(item.getValueTwo()));
  157 + item.setValueFive(com.lyms.platform.common.utils.StringUtils.dueWeekSwitchDays(item.getValueFive()));
  158 +
  159 + if (compare(item, dueWeek) && CollectionUtils.isNotEmpty(item.getRiskIds())) {
  160 + list.addAll(item.getRiskIds());
  161 + }
  162 + }
  163 + }
  164 + }
  165 +
  166 +
148 167 /*胎方位*/
149   - if (isEnableItem(status, BabyAutoDiagnoseEnums.BabyDiagnoseEnums.tfw.getId()) && maternalDeliverModel != null) {
  168 + if (isEnableItem(status, BabyAutoDiagnoseEnums.BabyDiagnoseEnums.tfw.getId()) && CollectionUtils.isNotEmpty(maternalDeliverModel.getPlacentas())) {
150 169 List placentas = maternalDeliverModel.getPlacentas();
151 170 if (CollectionUtils.isNotEmpty(placentas)) {
152 171 MatDeliverAddRequest.Placenta placenta = (MatDeliverAddRequest.Placenta) placentas.get(0);
153 172 if (placenta != null && StringUtils.isNotEmpty(placenta.getFetalPosition())) {
154 173 String fetalPosition = placenta.getFetalPosition();
155 174 List <DiagnoseItemModel> items = mapItems.get(BabyAutoDiagnoseEnums.BabyDiagnoseEnums.tfw.getId());
156   - if (CollectionUtils.isNotEmpty(items)) {
  175 + if (CollectionUtils.isNotEmpty(items) && StringUtils.isNotEmpty(fetalPosition)) {
157 176 for (DiagnoseItemModel item : items) {
158 177  
159 178 String valueTwo = item.getValueTwo();
... ... @@ -168,7 +187,7 @@
168 187 }
169 188 }
170 189 /*脐带长度*/
171   - if (isEnableItem(status, BabyAutoDiagnoseEnums.BabyDiagnoseEnums.twcd.getId()) && maternalDeliverModel != null) {
  190 + if (isEnableItem(status, BabyAutoDiagnoseEnums.BabyDiagnoseEnums.twcd.getId()) && CollectionUtils.isNotEmpty(maternalDeliverModel.getExtPlacentas())) {
172 191 List <MaternalDeliverModel.ExtPlacenta> extPlacentas = maternalDeliverModel.getExtPlacentas();
173 192 if (CollectionUtils.isNotEmpty(extPlacentas)) {
174 193 MaternalDeliverModel.ExtPlacenta extPlacenta = extPlacentas.get(0);
... ... @@ -177,7 +196,7 @@
177 196 String umbilicalCordLength = extPlacenta.getUmbilicalCordLength();
178 197  
179 198 List <DiagnoseItemModel> items = mapItems.get(BabyAutoDiagnoseEnums.BabyDiagnoseEnums.twcd.getId());
180   - if (CollectionUtils.isNotEmpty(items)) {
  199 + if (CollectionUtils.isNotEmpty(items) && StringUtils.isNotEmpty(umbilicalCordLength)) {
181 200 for (DiagnoseItemModel item : items) {
182 201 if (compare(item, umbilicalCordLength) && CollectionUtils.isNotEmpty(item.getRiskIds())) {
183 202 list.addAll(item.getRiskIds());
... ... @@ -189,7 +208,7 @@
189 208 }
190 209 }
191 210 /*脐带异常类型*/
192   - if (isEnableItem(status, BabyAutoDiagnoseEnums.BabyDiagnoseEnums.qdyclx.getId()) && maternalDeliverModel != null) {
  211 + if (isEnableItem(status, BabyAutoDiagnoseEnums.BabyDiagnoseEnums.qdyclx.getId()) && CollectionUtils.isNotEmpty(maternalDeliverModel.getExtPlacentas())) {
193 212 List <MaternalDeliverModel.ExtPlacenta> extPlacentas = maternalDeliverModel.getExtPlacentas();
194 213 if (CollectionUtils.isNotEmpty(extPlacentas)) {
195 214 MaternalDeliverModel.ExtPlacenta extPlacenta = extPlacentas.get(0);
... ... @@ -212,7 +231,7 @@
212 231 }
213 232  
214 233 /*分娩方式*/
215   - if (isEnableItem(status, BabyAutoDiagnoseEnums.BabyDiagnoseEnums.fmfs.getId()) && maternalDeliverModel != null) {
  234 + if (isEnableItem(status, BabyAutoDiagnoseEnums.BabyDiagnoseEnums.fmfs.getId()) && StringUtils.isNotEmpty(maternalDeliverModel.getDeliveryMode())) {
216 235  
217 236 if (StringUtils.isNotEmpty(maternalDeliverModel.getDeliveryMode())) {
218 237 String deliveryMode = maternalDeliverModel.getDeliveryMode();
219 238  
... ... @@ -224,13 +243,13 @@
224 243 fmfs = b.toString();
225 244 }
226 245 }
227   - if(StringUtils.isNotEmpty(fmfs)){
  246 + if (StringUtils.isNotEmpty(fmfs)) {
228 247 List <DiagnoseItemModel> items = mapItems.get(BabyAutoDiagnoseEnums.BabyDiagnoseEnums.fmfs.getId());
229 248 if (CollectionUtils.isNotEmpty(items)) {
230 249 for (DiagnoseItemModel item : items) {
231 250  
232 251 String valueTwo = item.getValueTwo();
233   - if (valueTwo.equals(fmfs)) {
  252 + if (valueTwo != null && valueTwo.equals(fmfs)) {
234 253 list.addAll(item.getRiskIds());
235 254 }
236 255  
... ... @@ -240,8 +259,8 @@
240 259  
241 260 }
242 261 }
243   - /*胎儿畸形*/
244   - if (isEnableItem(status, BabyAutoDiagnoseEnums.BabyDiagnoseEnums.tejx.getId()) && maternalDeliverModel != null) {
  262 + /*胎儿畸形 7 */
  263 + if (isEnableItem(status, BabyAutoDiagnoseEnums.BabyDiagnoseEnums.tejx.getId()) && maternalDeliverModel.getBaby() != null) {
245 264 List <MaternalDeliverModel.Baby> baby = maternalDeliverModel.getBaby();
246 265 if (CollectionUtils.isNotEmpty(baby)) {
247 266 MaternalDeliverModel.Baby baby1 = baby.get(0);
248 267  
249 268  
250 269  
251 270  
252 271  
253 272  
254 273  
255 274  
256 275  
... ... @@ -249,22 +268,105 @@
249 268 List <DiagnoseItemModel> items = mapItems.get(BabyAutoDiagnoseEnums.BabyDiagnoseEnums.tejx.getId());
250 269 if (CollectionUtils.isNotEmpty(items)) {
251 270 for (DiagnoseItemModel item : items) {
  271 + if (item != null && item.getTejx() != null) {
  272 + Map <String, Object> tejx = item.getTejx();
  273 + if (tejx(baby1, tejx)) {
  274 + list.addAll(item.getRiskIds());
  275 + }
  276 + }
  277 + }
  278 + }
  279 + }
  280 + }
  281 + }
  282 + /*Apgar评分 8 */
  283 + if (isEnableItem(status, BabyAutoDiagnoseEnums.BabyDiagnoseEnums.pf.getId()) && maternalDeliverModel.getBaby() != null) {
  284 + List <MaternalDeliverModel.Baby> baby = maternalDeliverModel.getBaby();
  285 + if (CollectionUtils.isNotEmpty(baby)) {
  286 + MaternalDeliverModel.Baby baby1 = baby.get(0);
  287 + if (baby1 != null) {
  288 + String[] strings = new String[3];
  289 + Map <String, String> m = JsonUtil.getMap(baby1.getApgarScore());
  290 + if (MapUtils.isNotEmpty(m)) {
  291 + strings[0] = m.get("pf1") == null ? "" : m.get("pf1");
  292 + strings[1] = m.get("pf5") == null ? "" : m.get("pf5");
  293 + strings[2] = m.get("pf10") == null ? "" : m.get("pf10");
  294 + }
  295 + for (int i = 0; i < strings.length; i++) {
  296 + if (StringUtils.isNotEmpty(strings[i])) {
  297 + List <DiagnoseItemModel> items = mapItems.get(BabyAutoDiagnoseEnums.BabyDiagnoseEnums.pf.getId());
  298 + if (CollectionUtils.isNotEmpty(items)) {
  299 + for (DiagnoseItemModel item : items) {
  300 + if (compare(item, strings[i]) && CollectionUtils.isNotEmpty(item.getRiskIds())) {
  301 + list.addAll(item.getRiskIds());
  302 + }
  303 + }
  304 + }
  305 + }
  306 + }
252 307  
253   - String valueTwo = item.getValueTwo();
254   - /*if (valueTwo.equals(umbilicalCordExType)) {
255   - list.addAll(item.getRiskIds());
256   - }*/
  308 + }
  309 + }
257 310  
  311 + }
  312 + /*窒息分钟 9 */
  313 + if (isEnableItem(status, BabyAutoDiagnoseEnums.BabyDiagnoseEnums.zxfz.getId()) && maternalDeliverModel.getBaby() != null) {
  314 + List <MaternalDeliverModel.Baby> baby = maternalDeliverModel.getBaby();
  315 + if (CollectionUtils.isNotEmpty(baby)) {
  316 + MaternalDeliverModel.Baby baby1 = baby.get(0);
  317 + if (baby1 != null) {
  318 + String asphyxiaM = baby1.getAsphyxiaM();
  319 +
  320 + List <DiagnoseItemModel> items = mapItems.get(BabyAutoDiagnoseEnums.BabyDiagnoseEnums.pf.getId());
  321 + if (CollectionUtils.isNotEmpty(items) && StringUtils.isNotEmpty(asphyxiaM)) {
  322 + for (DiagnoseItemModel item : items) {
  323 + if (compare(item, asphyxiaM) && CollectionUtils.isNotEmpty(item.getRiskIds())) {
  324 + list.addAll(item.getRiskIds());
  325 + }
258 326 }
259 327 }
  328 + }
  329 + }
  330 + }
260 331  
  332 + /*胎数 10 */
  333 + if (isEnableItem(status, BabyAutoDiagnoseEnums.BabyDiagnoseEnums.ts.getId()) && maternalDeliverModel.getTireNumber() != null) {
  334 + String tireNumber = maternalDeliverModel.getTireNumber().toString();
261 335  
  336 + List <DiagnoseItemModel> items = mapItems.get(BabyAutoDiagnoseEnums.BabyDiagnoseEnums.ts.getId());
  337 + if (CollectionUtils.isNotEmpty(items) && StringUtils.isNotEmpty(tireNumber)) {
  338 + for (DiagnoseItemModel item : items) {
  339 +
  340 + String valueTwo = item.getValueTwo();
  341 + if (valueTwo.equals(tireNumber)) {
  342 + list.addAll(item.getRiskIds());
  343 + }
262 344 }
263 345 }
  346 +
264 347 }
265 348  
  349 + /*体重 11 */
  350 + if (isEnableItem(status, BabyAutoDiagnoseEnums.BabyDiagnoseEnums.tz.getId()) && maternalDeliverModel.getBaby() != null) {
  351 + List <MaternalDeliverModel.Baby> baby = maternalDeliverModel.getBaby();
  352 + if (CollectionUtils.isNotEmpty(baby)) {
  353 + MaternalDeliverModel.Baby baby1 = baby.get(0);
  354 + if (baby1 != null) {
  355 + String babyHeight = baby1.getBabyHeight();
266 356  
  357 + List <DiagnoseItemModel> items = mapItems.get(BabyAutoDiagnoseEnums.BabyDiagnoseEnums.tz.getId());
  358 + if (CollectionUtils.isNotEmpty(items) && StringUtils.isNotEmpty(babyHeight)) {
  359 + for (DiagnoseItemModel item : items) {
  360 + if (compare(item, babyHeight) && CollectionUtils.isNotEmpty(item.getRiskIds())) {
  361 + list.addAll(item.getRiskIds());
  362 + }
  363 + }
  364 + }
  365 + }
  366 + }
  367 + }
267 368  
  369 +
268 370 }
269 371  
270 372  
... ... @@ -280,6 +382,27 @@
280 382 }
281 383  
282 384 /**
  385 + * 胎儿畸形
  386 + *
  387 + * @param baby1
  388 + * @param tejx
  389 + * @Author: 武涛涛
  390 + * @Date: 2020/9/1 17:48
  391 + */
  392 + private boolean tejx(MaternalDeliverModel.Baby baby1, Map <String, Object> tejx) throws NoSuchFieldException, IllegalAccessException {
  393 + for (Map.Entry <String, Object> entry : tejx.entrySet()) {
  394 + Field field = baby1.getClass().getDeclaredField(entry.getKey());//获取指定字段Field
  395 + field.setAccessible(true);//设置权限
  396 + boolean b = (boolean) field.get(baby1);
  397 + boolean b1 = (boolean) entry.getValue();
  398 + if (b1 != b) {
  399 + return false;
  400 + }
  401 + }
  402 + return true;
  403 + }
  404 +
  405 + /**
283 406 * 母存在高危因素,比较
284 407 *
285 408 * @param riskFactorId
... ... @@ -484,5 +607,17 @@
484 607  
485 608 }
486 609  
  610 + /**
  611 + * 将字符串的首字母转大写
  612 + *
  613 + * @param str 需要转换的字符串
  614 + * @return
  615 + */
  616 + private static String captureName(String str) {
  617 + // 进行字母的ascii编码前移,效率要高于截取字符串进行转换的操作
  618 + char[] cs = str.toCharArray();
  619 + cs[0] -= 32;
  620 + return String.valueOf(cs);
  621 + }
487 622 }