Commit fbf11d3ae61008c004b76aa0087e93ef4d3eb9f4
1 parent
2047b6c517
Exists in
master
and in
6 other branches
修复异常
Showing 2 changed files with 250 additions and 9 deletions
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ApplyOrderFacade.java
View file @
fbf11d3
... | ... | @@ -7,13 +7,18 @@ |
7 | 7 | import com.lyms.platform.common.constants.ErrorCodeConstants; |
8 | 8 | import com.lyms.platform.common.enums.*; |
9 | 9 | import com.lyms.platform.common.exception.BusinessException; |
10 | -import com.lyms.platform.common.result.*; | |
10 | +import com.lyms.platform.common.result.BaseListResponse; | |
11 | +import com.lyms.platform.common.result.BaseObjectResponse; | |
12 | +import com.lyms.platform.common.result.BaseResponse; | |
11 | 13 | import com.lyms.platform.common.utils.*; |
12 | 14 | import com.lyms.platform.operate.web.request.*; |
13 | 15 | import com.lyms.platform.operate.web.result.*; |
14 | 16 | import com.lyms.platform.operate.web.utils.CommonsHelper; |
15 | 17 | import com.lyms.platform.operate.web.utils.FunvCommonUtil; |
16 | -import com.lyms.platform.permission.model.*; | |
18 | +import com.lyms.platform.permission.model.Organization; | |
19 | +import com.lyms.platform.permission.model.OrganizationQuery; | |
20 | +import com.lyms.platform.permission.model.PatientService; | |
21 | +import com.lyms.platform.permission.model.Users; | |
17 | 22 | import com.lyms.platform.permission.service.CouponService; |
18 | 23 | import com.lyms.platform.permission.service.OrganizationService; |
19 | 24 | import com.lyms.platform.permission.service.UsersService; |
... | ... | @@ -22,7 +27,8 @@ |
22 | 27 | import org.apache.commons.collections.CollectionUtils; |
23 | 28 | import org.apache.commons.lang.StringUtils; |
24 | 29 | import org.apache.commons.lang.math.NumberUtils; |
25 | -import org.apache.http.HttpResponse; | |
30 | +import org.slf4j.Logger; | |
31 | +import org.slf4j.LoggerFactory; | |
26 | 32 | import org.springframework.beans.factory.annotation.Autowired; |
27 | 33 | import org.springframework.data.mongodb.core.MongoTemplate; |
28 | 34 | import org.springframework.data.mongodb.core.query.Criteria; |
... | ... | @@ -31,7 +37,6 @@ |
31 | 37 | import org.springframework.stereotype.Component; |
32 | 38 | |
33 | 39 | import javax.servlet.ServletOutputStream; |
34 | -import javax.servlet.http.HttpServletRequest; | |
35 | 40 | import javax.servlet.http.HttpServletResponse; |
36 | 41 | import java.io.*; |
37 | 42 | import java.text.SimpleDateFormat; |
... | ... | @@ -47,6 +52,7 @@ |
47 | 52 | public static final String HUADA_URL = PropertiesUtils.getPropertyValue("huada_url"); |
48 | 53 | public static final String SYSCODE = PropertiesUtils.getPropertyValue("huada_syscode"); |
49 | 54 | public static final String SECRET = PropertiesUtils.getPropertyValue("huada_secret"); |
55 | + public static final String HIS_VERSION = PropertiesUtils.getPropertyValue("his_version"); | |
50 | 56 | |
51 | 57 | @Autowired |
52 | 58 | private ApplyOrderService applyOrderService; |
... | ... | @@ -86,6 +92,11 @@ |
86 | 92 | @Autowired |
87 | 93 | private MongoTemplate mongoTemplate; |
88 | 94 | |
95 | + @Autowired | |
96 | + private SieveFacade sieveFacade; | |
97 | + | |
98 | + Logger logger = LoggerFactory.getLogger(ApplyOrderFacade.class); | |
99 | + | |
89 | 100 | //添加回执单 |
90 | 101 | public BaseResponse addReferralReceipt(ReferralReceiptRequest referralReceipt) { |
91 | 102 | ReferralApplyOrderModel referralApplyOrderModel = new ReferralApplyOrderModel(); |
... | ... | @@ -389,7 +400,7 @@ |
389 | 400 | if (CollectionUtils.isNotEmpty(sieveModels)) { |
390 | 401 | SieveModel sieveModel = sieveModels.get(0); |
391 | 402 | mongoTemplate.updateFirst(Query.query(Criteria.where("_id").is(sieveModel.getId())), Update.update("sieveType", sieveApplyOrderModel.getSieveType()). |
392 | - set("costType",sieveApplyOrderModel.getCostType()), SieveModel.class); | |
403 | + set("costType", sieveApplyOrderModel.getCostType()), SieveModel.class); | |
393 | 404 | if (sieveModel.getSieveHospitalId() != null && !sieveModel.getSieveHospitalId().equals(sieveApplyOrderAddRequest.getSieveHospitalId())) { |
394 | 405 | sieveModel.setSieveHospitalId(sieveApplyOrderAddRequest.getSieveHospitalId()); |
395 | 406 | sieveService.updateOneChanQianDiaSieve(sieveModel); |
396 | 407 | |
397 | 408 | |
398 | 409 | |
... | ... | @@ -503,16 +514,140 @@ |
503 | 514 | int days = DateUtil.daysBetween(sieveModel.getLastMenses(), sieveModel.getApplyDate()); |
504 | 515 | sieveModel.setDueWeek(days); |
505 | 516 | SieveService.handOrder(sieveModel); |
517 | + sieveModel.setSieveType(sieveApplyOrderModel.getSieveType()); | |
518 | + sieveModel.setCostType(sieveApplyOrderModel.getCostType()); | |
506 | 519 | sieveService.updateOneChanQianDiaSieve(sieveModel); |
507 | 520 | operateLogFacade.addModifyOptLog(userId, Integer.parseInt(hospitalId), sieveModels.get(0), sieveModel, OptActionEnums.UPDATE.getId(), "增加产前筛查"); |
508 | 521 | } |
522 | + // 调用华大接口 | |
523 | + System.out.println("debug=========>开始调用华大接口"); | |
524 | + callHuaDa(sieveApplyOrderModel, hospitalId); | |
525 | + System.out.println("debug=========>结束调用华大接口"); | |
509 | 526 | } else { |
510 | 527 | return new BaseResponse().setErrorcode(ErrorCodeConstants.DATA_EXIST).setErrormsg("已申请过产筛"); |
511 | 528 | } |
529 | + | |
530 | + | |
531 | + | |
512 | 532 | return new BaseResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功"); |
513 | 533 | } |
514 | 534 | |
515 | 535 | /** |
536 | + * 调用华大接口 | |
537 | + * | |
538 | + * @param sieveApplyOrderModel | |
539 | + * @param hospitalId | |
540 | + */ | |
541 | + private void callHuaDa(SieveApplyOrderModel sieveApplyOrderModel, String hospitalId) { | |
542 | + try{ | |
543 | + String sieveType = sieveApplyOrderModel.getSieveType(); | |
544 | + //if ("4".equals(HIS_VERSION)) { | |
545 | + if (StringUtils.isNotEmpty(sieveType) && "2".equals(sieveType)) { | |
546 | + final String productCode = "DX1331"; | |
547 | + HuadaSieveApplyOrderAddRequest request = new HuadaSieveApplyOrderAddRequest(); | |
548 | + // 产品编号 | |
549 | + request.setProductCode(productCode); | |
550 | + // 客户编号 | |
551 | + Organization organization = organizationService.getOrganization(Integer.parseInt(hospitalId)); | |
552 | + String shortCode = organization.getShortCode(); | |
553 | + request.setCustomerCode(shortCode); | |
554 | + // 孕妇姓名 | |
555 | + Patients patients = mongoTemplate.findOne(Query.query(Criteria.where("_id").is(sieveApplyOrderModel.getParentId())), Patients.class); | |
556 | + String username = patients.getUsername(); | |
557 | + request.setSampleName(username); | |
558 | + // 样品编号(如果是正常双胎的情况:样本编号后要加+D;如果是减胎的情况:样本编号后要加+V;如果是重抽血的情况:样本编号后要加+R;) | |
559 | + request.setSampleNum(sieveApplyOrderModel.getNumber()); | |
560 | + // 采样日期 | |
561 | + request.setBloodDate(DateUtil.getYmd(sieveApplyOrderModel.getCollectionDate())); | |
562 | + // 送检单唯一标识 | |
563 | + request.setExtBaseInfoId(sieveApplyOrderModel.getId()); | |
564 | + // 样品管类型 STRECK:STRECK | |
565 | + // EDTA:EDTA | |
566 | + // K牌采血管:K牌采血管 | |
567 | + // G牌采血管:G牌采血管 | |
568 | + String d = "1".equals(sieveApplyOrderModel.getFetusNum()) || "4".equals(sieveApplyOrderModel.getFetusNum()) ? "D" :""; | |
569 | + request.setTubeType(sieveApplyOrderModel.getYpglx() + d); | |
570 | + // 孕周(格式:18w+1)注:“w”必须小写,“+”号后面的天数必须是0~6 | |
571 | + request.setGestationalWeeks(sieveApplyOrderModel.getYunSize()); | |
572 | + // 证件类型(01:身份证、02:护照) | |
573 | + request.setZidcardType("01"); | |
574 | + // 孕妇联系电话 | |
575 | + request.setMotherPhoneNum(patients.getPhone()); | |
576 | + // 收费类型(样本用途)(工作量,只有收费、免费) | |
577 | + // | |
578 | + //{ | |
579 | + //1:科研收费 | |
580 | + // 2:科研免费 | |
581 | + // 3:临床收费 | |
582 | + // 4:临床免费 | |
583 | + // 咱们页面可以支持医生填写免费和收费,并且能统计。最终给华大传数据,所有用户默认成【临床收费】 | |
584 | + // | |
585 | + // 后台固定传参:3 | |
586 | + request.setChargeType("3"); | |
587 | + // 孕妇年龄 | |
588 | + request.setAge(DateUtil.getAge(patients.getBirth()).toString()); | |
589 | + // 末次月经,就诊末次月经 | |
590 | + request.setLmp(DateUtil.getYmd(patients.getLastMenses())); | |
591 | + // 是否是否体外受精-胚胎移植(IVF) | |
592 | + // { | |
593 | + // 0:是否IVF-否 | |
594 | + // 1:是否IVF-是 | |
595 | + request.setAdosculation(sieveApplyOrderModel.getIvf()); | |
596 | + // 既往史: 一年内异体输血 | |
597 | + // { | |
598 | + // 0:既往史: 一年内异体输血-无 | |
599 | + // 1:既往史: 一年内异体输血-有(不接受) | |
600 | + // } | |
601 | + request.setAllogeneticTransfusion(sieveApplyOrderModel.getYtsx()); | |
602 | + // 四周内异体细胞免疫 | |
603 | + // { | |
604 | + // 0:四周内异体细胞免疫-无 | |
605 | + // 1:四周内异体细胞免疫-有(不接受) | |
606 | + // } | |
607 | + request.setCellularImmunity(sieveApplyOrderModel.getYtxbzl()); | |
608 | + // 干细胞治疗 | |
609 | + // { | |
610 | + // 0:干细胞治疗-无 | |
611 | + // 1:干细胞治疗-有(不接受) | |
612 | + // } | |
613 | + request.setStemCell(sieveApplyOrderModel.getGxbzl()); | |
614 | + // 样本类型 | |
615 | + // | |
616 | + // { | |
617 | + //S051:样本类型-全血 | |
618 | + // } | |
619 | + request.setSampleType("S051"); | |
620 | + // 辅助检查(B超结果),页面传入什么输入 | |
621 | + // { | |
622 | + // 0:辅助检查(重要)-正常(单胎活) | |
623 | + // 1:辅助检查(重要)-正常(双胎活) | |
624 | + // 2:辅助检查(重要)-正常(多胎活) | |
625 | + // 3:辅助检查(重要)-异常(单胎) | |
626 | + // 4:辅助检查(重要)-异常(双胎) | |
627 | + // 5:辅助检查(重要)-异常(多胎) | |
628 | + // 6:辅助检查(重要)-减胎 | |
629 | + // } | |
630 | + request.setBtypeUltrasonic(sieveApplyOrderModel.getFetusNum()); | |
631 | + // 其他辅助筛查,页面传入什么输入 | |
632 | + // { | |
633 | + // 0:筛查模式-未做 | |
634 | + // 1:筛查模式-nt筛查 | |
635 | + // 2:筛查模式-早孕期筛查 | |
636 | + // 3:筛查模式-中孕期筛查 | |
637 | + // 4:筛查模式-早中孕期联合筛查 | |
638 | + // } | |
639 | + request.setScreeningModel(sieveApplyOrderModel.getSieveModel()); | |
640 | + request.setIdCard(patients.getCardNo()); | |
641 | + huadaSaveSampleInfo(request); | |
642 | + } | |
643 | + // } | |
644 | + }catch (Exception e){ | |
645 | + e.printStackTrace(); | |
646 | + logger.error("调用华大接口失败", e); | |
647 | + } | |
648 | + } | |
649 | + | |
650 | + /** | |
516 | 651 | * 查询转诊申请 |
517 | 652 | * |
518 | 653 | * @param id |
519 | 654 | |
... | ... | @@ -1485,7 +1620,41 @@ |
1485 | 1620 | HuadaCallbackModel huadaCallbackModel = JSONObject.parseObject(rows.toString(), HuadaCallbackModel.class); |
1486 | 1621 | System.out.println(huadaCallbackModel.toString()); |
1487 | 1622 | |
1623 | + String cardId = huadaCallbackModel.getCardId(); | |
1624 | + Patients patients = mongoTemplate.findOne(Query.query(Criteria.where("cardNo").is(cardId)), Patients.class); | |
1625 | + if (patients != null) { | |
1626 | + String patientsId = patients.getId(); | |
1627 | + SieveResultModel sieveResultModel = mongoTemplate.findOne(Query.query(Criteria.where("parentId").is(patientsId)), SieveResultModel.class); | |
1628 | + SieveResultModel model = getSieveResultModel(huadaCallbackModel, patientsId); | |
1629 | + if (sieveResultModel != null) { | |
1630 | + Update update = new Update(); | |
1631 | + Map<String, Object> object = BeanUtils.objectToObjectMap(model); | |
1632 | + Set<Map.Entry<String, Object>> entries = object.entrySet(); | |
1633 | + for (Map.Entry<String, Object> entry : entries) { | |
1634 | + Object entryValue = entry.getValue(); | |
1635 | + if (entryValue != null) { | |
1636 | + if (entryValue instanceof String) { | |
1637 | + if (StringUtils.isEmpty(entryValue.toString())) { | |
1638 | + continue; | |
1639 | + } | |
1640 | + } | |
1641 | + update.set(entry.getKey(), entry.getValue()); | |
1642 | + } | |
1643 | + } | |
1644 | + mongoTemplate.updateFirst(Query.query(Criteria.where("_id").is(sieveResultModel.getId())), update, SieveResultModel.class); | |
1645 | + logger.info(String.format("更新产筛结果: { %s }", update.toString())); | |
1646 | + } else { | |
1647 | + mongoTemplate.insert(model); | |
1648 | + logger.info(String.format("新增产筛结果: { %s }", model.toString())); | |
1649 | + } | |
1488 | 1650 | |
1651 | + // 后续业务操作 | |
1652 | + SieveAddRequest sieveAddRequest = new SieveAddRequest(); | |
1653 | + sieveAddRequest.setParentId(patientsId); | |
1654 | + Integer userId = null; | |
1655 | + sieveFacade.addOrUpdateSieveModel(sieveAddRequest, userId, model); | |
1656 | + | |
1657 | + } | |
1489 | 1658 | } catch (Exception e) { |
1490 | 1659 | e.printStackTrace(); |
1491 | 1660 | map.put("code", "500"); |
... | ... | @@ -1495,6 +1664,61 @@ |
1495 | 1664 | map.put("code", "200"); |
1496 | 1665 | map.put("msg", "success"); |
1497 | 1666 | return map; |
1667 | + } | |
1668 | + | |
1669 | + /** | |
1670 | + * 组装 SieveResultModel | |
1671 | + * | |
1672 | + * @param huadaCallbackModel | |
1673 | + * @param patientsId | |
1674 | + * @return | |
1675 | + */ | |
1676 | + private SieveResultModel getSieveResultModel(final HuadaCallbackModel huadaCallbackModel, String patientsId) { | |
1677 | + SieveResultModel newModel = new SieveResultModel(); | |
1678 | + newModel.setResultTime(new Date()); | |
1679 | + newModel.setReportType("1"); | |
1680 | + newModel.setParentId(patientsId); | |
1681 | + newModel.setSampleInfoId(huadaCallbackModel.getSampleInfoId()); | |
1682 | + newModel.setSampleReportId(huadaCallbackModel.getSampleReportId()); | |
1683 | + // 底风险0 高风险2 | |
1684 | + newModel.setSbst(huadaCallbackModel.getT18().contains("未检出") ? "0" : "2"); | |
1685 | + newModel.setStzhz13(huadaCallbackModel.getT13().contains("未检出") ? "0" : "2"); | |
1686 | + newModel.setTszhz(huadaCallbackModel.getT21().contains("未检出") ? "0" : "2"); | |
1687 | + | |
1688 | + final String[] split18 = huadaCallbackModel.getT18Risk().split("/"); | |
1689 | + final String[] split13 = huadaCallbackModel.getT13Risk().split("/"); | |
1690 | + final String[] split21 = huadaCallbackModel.getT21Risk().split("/"); | |
1691 | + /*Map<String, String> map18 = Maps.newHashMap(); | |
1692 | + map18.put("valueOne", split18[0]); | |
1693 | + map18.put("valueTwo", split18[1]); | |
1694 | + map18.put("valueKey", huadaCallbackModel.getZ18ZScore()); | |
1695 | + Map<String, String> map13 = Maps.newHashMap(); | |
1696 | + map13.put("valueOne", split13[0]); | |
1697 | + map13.put("valueTwo", split13[1]); | |
1698 | + map13.put("valueKey", huadaCallbackModel.getZ13ZScore()); | |
1699 | + Map<String, String> map21 = Maps.newHashMap(); | |
1700 | + map21.put("valueOne", split21[0]); | |
1701 | + map21.put("valueTwo", split21[1]); | |
1702 | + map21.put("valueKey", huadaCallbackModel.getZ21ZScore());*/ | |
1703 | + newModel.setSbstValue(new HashMap<String, String>(){{ | |
1704 | + put("valueOne", split18[0]);put("valueTwo", split18[1]);put("valueKey", huadaCallbackModel.getZ18ZScore()); }}); | |
1705 | + newModel.setStzhz13Value(new HashMap<String, String>(){{ | |
1706 | + put("valueOne", split13[0]);put("valueTwo", split13[1]);put("valueKey", huadaCallbackModel.getZ13ZScore()); }}); | |
1707 | + newModel.setTszhzValue(new HashMap<String, String>(){{ | |
1708 | + put("valueOne", split21[0]);put("valueTwo", split21[1]);put("valueKey", huadaCallbackModel.getZ21ZScore()); }}); | |
1709 | + | |
1710 | + String reportTypeStr = huadaGetReportType(newModel.getSampleReportId()); | |
1711 | + String reportType = "1"; | |
1712 | + if ("正式报告".equals(reportTypeStr)) { | |
1713 | + reportType = "1"; | |
1714 | + } else if ("重取报告".equals(reportTypeStr)) { | |
1715 | + reportType = "2"; | |
1716 | + } else if ("失败报告".equals(reportTypeStr)) { | |
1717 | + reportType = "3"; | |
1718 | + } | |
1719 | + newModel.setReportType(reportType); | |
1720 | + | |
1721 | + return newModel; | |
1498 | 1722 | } |
1499 | 1723 | |
1500 | 1724 | public void huadaFtp(String sampleReportId,HttpServletResponse response) { |
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/SieveFacade.java
View file @
fbf11d3
... | ... | @@ -126,6 +126,22 @@ |
126 | 126 | } |
127 | 127 | |
128 | 128 | |
129 | + addOrUpdateSieveModel(sieveAddRequest, userId, sieveResultModel); | |
130 | + | |
131 | + | |
132 | + return new BaseResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功"); | |
133 | + } | |
134 | + | |
135 | + /** | |
136 | + * add or update SieveModel | |
137 | + * and addTrackDownInfo() | |
138 | + * | |
139 | + * | |
140 | + * @param sieveAddRequest | |
141 | + * @param userId | |
142 | + * @param sieveResultModel | |
143 | + */ | |
144 | + public void addOrUpdateSieveModel(SieveAddRequest sieveAddRequest, Integer userId, SieveResultModel sieveResultModel) { | |
129 | 145 | SieveQuery sieveQuery = new SieveQuery(); |
130 | 146 | sieveQuery.setParentId(sieveAddRequest.getParentId()); |
131 | 147 | sieveQuery.setYn(YnEnums.YES.getId()); |
... | ... | @@ -157,9 +173,6 @@ |
157 | 173 | //添加追访记录 |
158 | 174 | addTrackDownInfo(userId, patients); |
159 | 175 | } |
160 | - | |
161 | - | |
162 | - return new BaseResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功"); | |
163 | 176 | } |
164 | 177 | |
165 | 178 | |
... | ... | @@ -233,7 +246,11 @@ |
233 | 246 | trackDownRecord.setTrackType(TrackDownDateEnums.E.getId()); |
234 | 247 | } |
235 | 248 | } |
236 | - trackDownService.addOrupdateTrackDownRecord(userId, trackDownRecord); | |
249 | + | |
250 | + // 兼容华大接口调用 | |
251 | + if (userId != null) { | |
252 | + trackDownService.addOrupdateTrackDownRecord(userId, trackDownRecord); | |
253 | + } | |
237 | 254 | } |
238 | 255 | } |
239 | 256 |