Commit 28f48d668e48d8f271a1e1f2c80fba7c38df90b1

Authored by shiyang
1 parent 266e5d5120

隆化-隆化-男女临床检查项目填写是否完整 0:不完整 1:完整,历史数据添加字段clinicalCheckYn

Showing 4 changed files with 199 additions and 90 deletions

platform-dal/src/main/java/com/lyms/platform/pojo/PreEugenicsBaseModel.java View file @ 28f48d6
... ... @@ -443,6 +443,17 @@
443 443 //接收List<String> ids
444 444 private List<String> ids;
445 445  
  446 + //隆化-男女临床检查项目填写是否完整 0:不完整 1:完整
  447 + private Integer clinicalCheckYn;
  448 +
  449 + public Integer getClinicalCheckYn() {
  450 + return clinicalCheckYn;
  451 + }
  452 +
  453 + public void setClinicalCheckYn(Integer clinicalCheckYn) {
  454 + this.clinicalCheckYn = clinicalCheckYn;
  455 + }
  456 +
446 457 public List<String> getIds() {
447 458 return ids;
448 459 }
platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/PreEugenicsBaseController.java View file @ 28f48d6
... ... @@ -325,5 +325,16 @@
325 325 public BaseObjectResponse getBreastInspectList(CancerScreeningRequest queryRequest, HttpServletRequest request) {
326 326 return iPreEugenicsService.getBreastInspectList(queryRequest);
327 327 }
  328 +
  329 + /**
  330 + * 隆化-男女临床检查项目填写是否完整 0:不完整 1:完整,历史数据添加字段clinicalCheckYn
  331 + *
  332 + * @return
  333 + */
  334 + @RequestMapping(method = RequestMethod.GET, value = "/pastPreeugenicsBaseAdd")
  335 + @ResponseBody
  336 + public BaseResponse pastPreeugenicsBaseAdd() {
  337 + return iPreEugenicsService.pastPreeugenicsBaseAdd();
  338 + }
328 339 }
platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/IPreEugenicsService.java View file @ 28f48d6
... ... @@ -37,5 +37,7 @@
37 37 void exportYqys(PreEugenicsBaseListRequest param, Integer userId, HttpServletResponse response);
38 38  
39 39 BaseObjectResponse getBreastInspectList(CancerScreeningRequest queryRequest);
  40 + //隆化-历史数据添加字段
  41 + BaseResponse pastPreeugenicsBaseAdd();
40 42 }
platform-operate-api/src/main/java/com/lyms/platform/operate/web/service/impl/PreEugebicsServiceImpl.java View file @ 28f48d6
1 1 package com.lyms.platform.operate.web.service.impl;
2 2  
3 3 import java.util.*;
  4 +import java.util.concurrent.Callable;
  5 +import java.util.concurrent.Future;
  6 +import java.util.concurrent.TimeUnit;
4 7  
5 8 import com.google.common.collect.ArrayListMultimap;
6 9 import com.google.common.collect.Multimap;
... ... @@ -15,6 +18,7 @@
15 18 import com.lyms.platform.common.utils.*;
16 19 import com.lyms.platform.operate.web.facade.AutoMatchFacade;
17 20 import com.lyms.platform.operate.web.request.*;
  21 +import com.lyms.platform.operate.web.result.PatientRiskSortResult;
18 22 import com.lyms.platform.operate.web.utils.ResponseUtil;
19 23 import com.lyms.platform.permission.model.Organization;
20 24 import com.lyms.platform.permission.model.OrganizationQuery;
21 25  
22 26  
... ... @@ -22,12 +26,15 @@
22 26 import com.lyms.platform.permission.service.UsersService;
23 27 import com.lyms.platform.pojo.*;
24 28 import com.lyms.platform.query.CancerScreeningQuery;
  29 +import com.lyms.platform.query.PatientsQuery;
25 30 import com.lyms.platform.query.PremaritalCheckupQuery;
26 31 import com.lyms.platform.query.ResidentsArchiveQuery;
27 32 import org.apache.commons.collections.CollectionUtils;
28 33 import org.apache.commons.collections.MapUtils;
  34 +import org.bson.types.ObjectId;
29 35 import org.springframework.beans.BeanUtils;
30 36 import org.springframework.beans.factory.annotation.Autowired;
  37 +import org.springframework.beans.factory.annotation.Qualifier;
31 38 import org.springframework.data.domain.Sort;
32 39 import org.springframework.data.mongodb.core.MongoTemplate;
33 40 import org.springframework.data.mongodb.core.aggregation.Aggregation;
... ... @@ -36,6 +43,7 @@
36 43 import org.springframework.data.mongodb.core.query.Criteria;
37 44 import org.springframework.data.mongodb.core.query.Query;
38 45 import org.springframework.data.mongodb.core.query.Update;
  46 +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
39 47 import org.springframework.stereotype.Service;
40 48  
41 49 import com.lyms.platform.biz.service.BasicConfigService;
... ... @@ -85,6 +93,10 @@
85 93 @Autowired
86 94 private CancerScreeningService cancerScreenService;
87 95  
  96 + @Autowired
  97 + @Qualifier("commonThreadPool")
  98 + private ThreadPoolTaskExecutor commonThreadPool;
  99 +
88 100 /**
89 101 * 根据身份证号获取对应的孕前优生信息
90 102 *
... ... @@ -276,6 +288,10 @@
276 288 model.setHospitalId(hospitalId);
277 289 model.setCreated(new Date());
278 290 model.setIsSync(1);
  291 + if("2100001605".equals(hospitalId)){
  292 + //隆化-男女临床检查项目填写是否完整 0:不完整 1:完整
  293 + model.setClinicalCheckYn(clinicalCheckYnEdit(param));
  294 + }
279 295 mongoTemplate.insert(model);
280 296 return new BaseResponse();
281 297 }
282 298  
283 299  
... ... @@ -308,12 +324,114 @@
308 324 return new BaseResponse("参数缺失", ErrorCodeConstants.PARAMETER_ERROR);
309 325 }
310 326 Query query = Query.query(Criteria.where("id").is(param.getId()));
  327 + if("2100001605".equals(param.getHospitalId())){
  328 + //隆化-男女临床检查项目填写是否完整 0:不完整 1:完整
  329 + param.setClinicalCheckYn(clinicalCheckYnEdit(param));
  330 + }
  331 +
311 332 Update update = MongoConvertHelper
312 333 .convertToNativeUpdate(ReflectionUtils.getUpdateField(param));
313 334 mongoTemplate.updateFirst(query, update, PreEugenicsBaseModel.class);
314 335 return new BaseResponse();
315 336 }
  337 + //判断男女临床检查项目填写是否完整
  338 + public Integer clinicalCheckYnEdit(PreEugenicsBaseRequest param) {
  339 + Integer clinicalCheckYn=1;
  340 + //女
  341 + Integer clinicalCheckYnWoman=1;
  342 + Map <String, Object> map=param.getWifeClinicalCheck();
  343 + if (map != null && map.size() > 0) {
  344 + //血细胞分析
  345 + List<String> xxbfx =null!= map.get("xxbfx")?(List<String>) map.get("xxbfx"):null;
  346 + int xxbfxYn=CollectionUtils.isNotEmpty(xxbfx)?1:0;
  347 + if(xxbfxYn==1){
  348 + for (String s : xxbfx) {
  349 + if(StringUtils.isEmpty(s)){
  350 + xxbfxYn=0;
  351 + }
  352 + }
  353 + }
316 354  
  355 + //白带检查
  356 + List<Integer> bdjc =null!= map.get("bdjc")?(List<Integer>) map.get("bdjc"):null;
  357 + int bdjcYn=CollectionUtils.isNotEmpty(bdjc)?1:0;
  358 + if(bdjcYn==1) {
  359 + for (Integer s : bdjc) {
  360 + if (null == s || -1 == s) {
  361 + bdjcYn = 0;
  362 + }
  363 + }
  364 + }
  365 + //乙肝
  366 + List<Integer> yigan =null!= map.get("yigan")?(List<Integer>) map.get("yigan"):null;
  367 + int yiganYn=CollectionUtils.isNotEmpty(yigan)?1:0;
  368 + if(yiganYn==1) {
  369 + for (Integer s : yigan) {
  370 + if (null == s || -1 == s) {
  371 + yiganYn = 0;
  372 + }
  373 + }
  374 + }
  375 + String gbzam = null != map.get("gbzam") ? map.get("gbzam").toString() : "";//谷丙转氨酶
  376 + String jigan = null != map.get("jigan") ? map.get("jigan").toString() : "";//肌酐
  377 + String xuetang = null != map.get("xuetang") ? map.get("xuetang").toString() : "";//血糖
  378 + String cjzxjs = null != map.get("cjzxjs") ? map.get("cjzxjs").toString() : "";//促甲状腺*激素
  379 + Integer rh = null != map.get("rh") ? (Integer) map.get("rh") : null;//Rh
  380 + Integer abo = null != map.get("abo") ? (Integer) map.get("abo") : null;//血型
  381 + Integer fzbd = null != map.get("fzbd") ? (Integer) map.get("fzbd") : null;//风疹病毒IgG
  382 + Integer meidu = null != map.get("meidu") ? (Integer) map.get("meidu") : null;//梅毒螺旋体筛查
  383 + Integer jxbbd = null != map.get("jxbbd") ? (Integer) map.get("jxbbd") : null;//巨细胞病毒IgG
  384 + Integer jxbbdIgM = null != map.get("jxbbdIgM") ? (Integer) map.get("jxbbdIgM") : null;//巨细胞病毒IgM
  385 + Integer gxt = null != map.get("gxt") ? (Integer) map.get("gxt") : null;//弓形体IgG
  386 + Integer gxtIgM = null != map.get("gxtIgM") ? (Integer) map.get("gxtIgM") : null;//弓形体IgM
  387 + Object ncg=null != map.get("ncg")? map.get("ncg") : null;//尿液常规检查
  388 +
  389 + if (Arrays.asList(xxbfxYn,bdjcYn,yiganYn).contains(0)||
  390 + Arrays.asList(gbzam, jigan, xuetang,cjzxjs).contains("") ||
  391 + Arrays.asList(null,-1).contains(fzbd) ||
  392 + Arrays.asList(null,-1).contains(meidu) ||
  393 + Arrays.asList(null,-1).contains(jxbbd) ||
  394 + Arrays.asList(null,-1).contains(jxbbdIgM) ||
  395 + Arrays.asList(null,-1).contains(gxt) ||
  396 + Arrays.asList(null,-1).contains(gxtIgM) ||
  397 + null==rh ||null==abo|| null==ncg) {
  398 + clinicalCheckYnWoman=0;
  399 + }
  400 + }
  401 + //男
  402 + Integer clinicalCheckYnMan=1;
  403 + Map <String, Object> map2=param.getHusbandClinicalCheck();
  404 + if (map2 != null && map2.size() > 0) {
  405 + //乙肝
  406 + List<Integer> yigan =null!= map2.get("yigan")?(List<Integer>) map2.get("yigan"):null;
  407 + int yiganYn=CollectionUtils.isNotEmpty(yigan)?1:0;
  408 + if(yiganYn==1) {
  409 + for (Integer s : yigan) {
  410 + if (null == s || -1 == s) {
  411 + yiganYn = 0;
  412 + }
  413 + }
  414 + }
  415 + String gbzam = null != map2.get("gbzam") ? map2.get("gbzam").toString() : "";//谷丙转氨酶
  416 + String jigan = null != map2.get("jigan") ? map2.get("jigan").toString() : "";//肌酐
  417 + Integer rh = null != map2.get("rh") ? (Integer) map2.get("rh") : null;//Rh
  418 + Integer abo = null != map2.get("abo") ? (Integer) map2.get("abo") : null;//血型
  419 + Integer meidu = null != map2.get("meidu") ? (Integer) map2.get("meidu") : null;//梅毒螺旋体筛查
  420 + Object ncg=null != map2.get("ncg")? map2.get("ncg") : null;//尿液常规检查
  421 +
  422 + if (0==yiganYn||
  423 + Arrays.asList(gbzam, jigan).contains("") ||
  424 + Arrays.asList(null,-1).contains(meidu) ||
  425 + null==rh ||null==abo|| null==ncg) {
  426 + clinicalCheckYnMan=0;
  427 + }
  428 + }
  429 + if(Arrays.asList(clinicalCheckYnWoman,clinicalCheckYnMan).contains(0)){
  430 + clinicalCheckYn=0;
  431 + }
  432 + return clinicalCheckYn;
  433 + }
  434 +
317 435 /**
318 436 * 列表
319 437 *
... ... @@ -362,54 +480,8 @@
362 480 //隆化定制-妻子和丈夫临床检查完整状态 0:不完整 1:完整
363 481 if("2100001605".equals(hospitalId)){
364 482 Integer clinicalCheckYn=param.getClinicalCheckYn();
365   - if(clinicalCheckYn!=null){
366   - if(0==clinicalCheckYn){
367   - MongoCondition c = MongoCondition.newInstance();
368   - MongoCondition con1 = MongoCondition.newInstance("wifeClinicalCheck", false, MongoOper.EXISTS);
369   - MongoCondition con2 = MongoCondition.newInstance("wifeClinicalCheck.xxbfx.0","", MongoOper.IS);
370   - MongoCondition con3 = MongoCondition.newInstance("wifeClinicalCheck.xxbfx.1","", MongoOper.IS);
371   - MongoCondition con4 = MongoCondition.newInstance("wifeClinicalCheck.xxbfx.2","", MongoOper.IS);
372   - MongoCondition con5 = MongoCondition.newInstance("wifeClinicalCheck.xxbfx.3","", MongoOper.IS);
373   - MongoCondition con6 = MongoCondition.newInstance("wifeClinicalCheck.xxbfx.4","", MongoOper.IS);
374   - MongoCondition con7 = MongoCondition.newInstance("wifeClinicalCheck.xxbfx.5","", MongoOper.IS);
375   - MongoCondition con8 = MongoCondition.newInstance("wifeClinicalCheck.xxbfx.6","", MongoOper.IS);
376   - MongoCondition con9 = MongoCondition.newInstance("wifeClinicalCheck.xxbfx.7","", MongoOper.IS);
377   - MongoCondition con10 = MongoCondition.newInstance("wifeClinicalCheck.xxbfx.8","", MongoOper.IS);
378   - MongoCondition con11 = MongoCondition.newInstance("wifeClinicalCheck.gbzam","", MongoOper.IS);
379   - MongoCondition con12 = MongoCondition.newInstance("wifeClinicalCheck.jigan","", MongoOper.IS);
380   - MongoCondition con13 = MongoCondition.newInstance("wifeClinicalCheck.xuetang","", MongoOper.IS);
381   - MongoCondition con14 = MongoCondition.newInstance("wifeClinicalCheck.abo",false, MongoOper.EXISTS);
382   - MongoCondition con15 = MongoCondition.newInstance("husbandClinicalCheck",false, MongoOper.EXISTS);
383   - MongoCondition con16 = MongoCondition.newInstance("husbandClinicalCheck.gbzam","", MongoOper.IS);
384   - MongoCondition con17 = MongoCondition.newInstance("husbandClinicalCheck.jigan","", MongoOper.IS);
385   - MongoCondition con18 = MongoCondition.newInstance("husbandClinicalCheck.abo",false, MongoOper.EXISTS);
386   - query.addCriteria(c.orCondition(new MongoCondition[]{con1, con2, con3, con4, con5, con6, con7, con8
387   - , con9, con10, con11, con12, con13, con14, con15, con16, con17, con18}).getCriteria());
388   - }
389   - if(1==clinicalCheckYn){
390   - MongoCondition c = MongoCondition.newInstance();
391   - MongoCondition con1 = MongoCondition.newInstance("wifeClinicalCheck", true, MongoOper.EXISTS);
392   - MongoCondition con2 = MongoCondition.newInstance("wifeClinicalCheck.xxbfx.0","", MongoOper.NE);
393   - MongoCondition con3 = MongoCondition.newInstance("wifeClinicalCheck.xxbfx.1","", MongoOper.NE);
394   - MongoCondition con4 = MongoCondition.newInstance("wifeClinicalCheck.xxbfx.2","", MongoOper.NE);
395   - MongoCondition con5 = MongoCondition.newInstance("wifeClinicalCheck.xxbfx.3","", MongoOper.NE);
396   - MongoCondition con6 = MongoCondition.newInstance("wifeClinicalCheck.xxbfx.4","", MongoOper.NE);
397   - MongoCondition con7 = MongoCondition.newInstance("wifeClinicalCheck.xxbfx.5","", MongoOper.NE);
398   - MongoCondition con8 = MongoCondition.newInstance("wifeClinicalCheck.xxbfx.6","", MongoOper.NE);
399   - MongoCondition con9 = MongoCondition.newInstance("wifeClinicalCheck.xxbfx.7","", MongoOper.NE);
400   - MongoCondition con10 = MongoCondition.newInstance("wifeClinicalCheck.xxbfx.8","", MongoOper.NE);
401   - MongoCondition con11 = MongoCondition.newInstance("wifeClinicalCheck.gbzam","", MongoOper.NE);
402   - MongoCondition con12 = MongoCondition.newInstance("wifeClinicalCheck.jigan","", MongoOper.NE);
403   - MongoCondition con13 = MongoCondition.newInstance("wifeClinicalCheck.xuetang","", MongoOper.NE);
404   - MongoCondition con14 = MongoCondition.newInstance("wifeClinicalCheck.abo",true, MongoOper.EXISTS);
405   - MongoCondition con15 = MongoCondition.newInstance("husbandClinicalCheck",true, MongoOper.EXISTS);
406   - MongoCondition con16 = MongoCondition.newInstance("husbandClinicalCheck.gbzam","", MongoOper.NE);
407   - MongoCondition con17 = MongoCondition.newInstance("husbandClinicalCheck.jigan","", MongoOper.NE);
408   - MongoCondition con18 = MongoCondition.newInstance("husbandClinicalCheck.abo",true, MongoOper.EXISTS);
409   - query.addCriteria(c.orCondition(new MongoCondition[]{con1, con2, con3, con4, con5, con6, con7, con8
410   - , con9, con10, con11, con12, con13, con14, con15, con16, con17, con18}).getCriteria());
411   - }
412   -
  483 + if(null!=clinicalCheckYn){
  484 + query.addCriteria(Criteria.where("clinicalCheckYn").is(clinicalCheckYn));
413 485 }
414 486 }
415 487  
... ... @@ -604,10 +676,6 @@
604 676 setDoctorName(result.getHusbandClinicalCheck());
605 677 setDoctorName(result.getHusbandOtherCheck());
606 678 setDoctorName(result.getResultAdvice());
607   - //男女婚检是否完整
608   - setClinicalCheckYnWife(result.getWifeClinicalCheck(),result);
609   - setClinicalCheckYnHusband(result.getHusbandClinicalCheck(),result);
610   -
611 679 return result;
612 680 }
613 681  
... ... @@ -626,44 +694,6 @@
626 694 }
627 695 }
628 696 }
629   - private void setClinicalCheckYnWife(Map <String, Object> map,PreEugenicsBaseListResult result) {
630   - if (map != null && map.size() > 0) {
631   - List<String> xxbfx =null!= map.get("xxbfx")?(List<String>) map.get("xxbfx"):null;
632   - for (String s : xxbfx) {
633   - if(StringUtils.isEmpty(s)){
634   - result.setClinicalCheckYn(0);
635   - }
636   - }
637   - String gbzam = null != map.get("gbzam") ? map.get("gbzam").toString() : "";
638   - String jigan = null != map.get("jigan") ? map.get("jigan").toString() : "";
639   - String xuetang = null != map.get("xuetang") ? map.get("xuetang").toString() : "";
640   - Integer abo = null != map.get("abo") ? (Integer) map.get("abo") : null;
641   - if (Arrays.asList(gbzam, jigan, xuetang).contains("") ||
642   - null==abo ||
643   - null==result.getClinicalCheckYn()||
644   - 0==result.getClinicalCheckYn()) {
645   - result.setClinicalCheckYn(0);
646   - } else {
647   - result.setClinicalCheckYn(1);
648   - }
649   - }else {
650   - result.setClinicalCheckYn(0);
651   - }
652   - }
653   - private void setClinicalCheckYnHusband(Map <String, Object> map,PreEugenicsBaseListResult result) {
654   - if (map != null && map.size() > 0) {
655   - String gbzam = null!=map.get("gbzam")?map.get("gbzam").toString():"";
656   - String jigan = null!=map.get("jigan")?map.get("jigan").toString():"";
657   - Integer abo = null!=map.get("abo")?(Integer) map.get("abo"):null;
658   - if(Arrays.asList(gbzam,jigan).contains("")||abo==null){
659   - result.setClinicalCheckYn(0);
660   - }else {
661   - result.setClinicalCheckYn(1);
662   - }
663   - }else {
664   - result.setClinicalCheckYn(0);
665   - }
666   - }
667 697  
668 698 /**
669 699 * 单个查询
... ... @@ -1383,6 +1413,61 @@
1383 1413 return new BaseObjectResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功").setData(areaList);
1384 1414 }
1385 1415  
  1416 + @Override
  1417 + public BaseResponse pastPreeugenicsBaseAdd() {
  1418 + Query query=new Query();
  1419 + query.addCriteria(Criteria.where("hospitalId").is("2100001605"));
  1420 + List <PreEugenicsBaseModel> preEugenicsBaseModels = mongoTemplate.find(query, PreEugenicsBaseModel.class);
  1421 +
  1422 + for (PreEugenicsBaseModel model : preEugenicsBaseModels) {
  1423 +// if(model.getId().equals("61b17d47500c783ccdf941d1")){
  1424 + PreEugenicsBaseRequest result = new PreEugenicsBaseRequest();
  1425 + result.setWifeClinicalCheck(model.getWifeClinicalCheck());
  1426 + result.setHusbandClinicalCheck(model.getHusbandClinicalCheck());
  1427 + Object a=new ObjectId();
  1428 + Query query2 = Query.query(Criteria.where("id").is(model.getId()));
  1429 + //隆化-男女临床检查项目填写是否完整 0:不完整 1:完整
  1430 + model.setClinicalCheckYn(clinicalCheckYnEdit(result));
  1431 + Update update = MongoConvertHelper
  1432 + .convertToNativeUpdate(ReflectionUtils.getUpdateField(model));
  1433 + mongoTemplate.updateFirst(query2, update, PreEugenicsBaseModel.class);
  1434 + }
  1435 +// }
  1436 +
  1437 +// if (CollectionUtils.isNotEmpty(preEugenicsBaseModels)) {
  1438 +// int batchSize = 20;
  1439 +// int end = 0;
  1440 +// List <Future> listFuture = new ArrayList <>();
  1441 +// for (int i = 0; i < preEugenicsBaseModels.size(); i += batchSize) {
  1442 +// end = (end + batchSize);
  1443 +// if (end > preEugenicsBaseModels.size()) {
  1444 +// end = preEugenicsBaseModels.size();
  1445 +// }
  1446 +// final List<PreEugenicsBaseModel> risks = preEugenicsBaseModels.subList(i, end);
  1447 +// listFuture.add(commonThreadPool.submit(new Callable() {
  1448 +// @Override
  1449 +// public Object call() throws Exception {
  1450 +// if (CollectionUtils.isNotEmpty(risks)) {
  1451 +// for (PreEugenicsBaseModel model : risks) {
  1452 +// PreEugenicsBaseRequest result = new PreEugenicsBaseRequest();
  1453 +// result.setWifeClinicalCheck(model.getWifeClinicalCheck());
  1454 +// result.setHusbandClinicalCheck(model.getHusbandClinicalCheck());
  1455 +// Query query = Query.query(Criteria.where("id").is(model.getId()));
  1456 +// //隆化-男女临床检查项目填写是否完整 0:不完整 1:完整
  1457 +// model.setClinicalCheckYn(clinicalCheckYnEdit(result));
  1458 +// Update update = MongoConvertHelper
  1459 +// .convertToNativeUpdate(ReflectionUtils.getUpdateField(model));
  1460 +// mongoTemplate.updateFirst(query, update, PreEugenicsBaseModel.class);
  1461 +// }
  1462 +// }
  1463 +// return null;
  1464 +// }
  1465 +// }));
  1466 +// }
  1467 +//
  1468 +// }
  1469 + return new BaseObjectResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功");
  1470 + }
1386 1471  
1387 1472  
1388 1473 public static final String AREA_URL = PropertiesUtils.getPropertyValue("area_url");