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 | } |