Commit c35be316708252221782994282f8734ab5903703
1 parent
71870b62ac
Exists in
master
and in
6 other branches
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 | } |