Commit 2047b6c517039232708bd8982b5baa8fdc9a433f

Authored by wtt
1 parent d3ee0c15ce

华大基因,查询报告类型2

Showing 2 changed files with 24 additions and 220 deletions

platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ApplyOrderController.java View file @ 2047b6c
... ... @@ -86,7 +86,6 @@
86 86  
87 87 //华大基因,检查结果回调
88 88 @RequestMapping("/huadaCallback")
89   - @ResponseBody
90 89 public Map huadaCallback(@RequestParam(value = "params") String params,
91 90 @RequestParam(value = "syscode") String syscode,
92 91 @RequestParam(value = "sign") String sign,
... ... @@ -102,8 +101,13 @@
102 101  
103 102 //华大基因,6.6.查询报告类型
104 103 @RequestMapping(method = RequestMethod.POST,value = "/huadaGetReportType")
105   - public void huadaGetReportType( @RequestParam(value = "sampleReportId") String sampleReportId) {
106   - applyOrderFacade.huadaGetReportType(sampleReportId);
  104 + @ResponseBody
  105 + public Map huadaGetReportType( @RequestParam(value = "sampleReportId") String sampleReportId) {
  106 + String s = applyOrderFacade.huadaGetReportType(sampleReportId);
  107 + System.out.println(s);
  108 + Map map = new HashMap();
  109 + map.put("s",s);
  110 + return map;
107 111 }
108 112  
109 113 @RequestMapping(method = RequestMethod.GET, value = "/sieveapply")
platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ApplyOrderFacade.java View file @ 2047b6c
... ... @@ -3,23 +3,17 @@
3 3 import com.alibaba.fastjson.JSON;
4 4 import com.alibaba.fastjson.JSONArray;
5 5 import com.alibaba.fastjson.JSONObject;
6   -import com.google.common.collect.Maps;
7 6 import com.lyms.platform.biz.service.*;
8 7 import com.lyms.platform.common.constants.ErrorCodeConstants;
9 8 import com.lyms.platform.common.enums.*;
10 9 import com.lyms.platform.common.exception.BusinessException;
11   -import com.lyms.platform.common.result.BaseListResponse;
12   -import com.lyms.platform.common.result.BaseObjectResponse;
13   -import com.lyms.platform.common.result.BaseResponse;
  10 +import com.lyms.platform.common.result.*;
14 11 import com.lyms.platform.common.utils.*;
15 12 import com.lyms.platform.operate.web.request.*;
16 13 import com.lyms.platform.operate.web.result.*;
17 14 import com.lyms.platform.operate.web.utils.CommonsHelper;
18 15 import com.lyms.platform.operate.web.utils.FunvCommonUtil;
19   -import com.lyms.platform.permission.model.Organization;
20   -import com.lyms.platform.permission.model.OrganizationQuery;
21   -import com.lyms.platform.permission.model.PatientService;
22   -import com.lyms.platform.permission.model.Users;
  16 +import com.lyms.platform.permission.model.*;
23 17 import com.lyms.platform.permission.service.CouponService;
24 18 import com.lyms.platform.permission.service.OrganizationService;
25 19 import com.lyms.platform.permission.service.UsersService;
... ... @@ -28,8 +22,7 @@
28 22 import org.apache.commons.collections.CollectionUtils;
29 23 import org.apache.commons.lang.StringUtils;
30 24 import org.apache.commons.lang.math.NumberUtils;
31   -import org.slf4j.Logger;
32   -import org.slf4j.LoggerFactory;
  25 +import org.apache.http.HttpResponse;
33 26 import org.springframework.beans.factory.annotation.Autowired;
34 27 import org.springframework.data.mongodb.core.MongoTemplate;
35 28 import org.springframework.data.mongodb.core.query.Criteria;
... ... @@ -38,6 +31,7 @@
38 31 import org.springframework.stereotype.Component;
39 32  
40 33 import javax.servlet.ServletOutputStream;
  34 +import javax.servlet.http.HttpServletRequest;
41 35 import javax.servlet.http.HttpServletResponse;
42 36 import java.io.*;
43 37 import java.text.SimpleDateFormat;
... ... @@ -53,7 +47,6 @@
53 47 public static final String HUADA_URL = PropertiesUtils.getPropertyValue("huada_url");
54 48 public static final String SYSCODE = PropertiesUtils.getPropertyValue("huada_syscode");
55 49 public static final String SECRET = PropertiesUtils.getPropertyValue("huada_secret");
56   - public static final String HIS_VERSION = PropertiesUtils.getPropertyValue("his_version");
57 50  
58 51 @Autowired
59 52 private ApplyOrderService applyOrderService;
... ... @@ -93,8 +86,6 @@
93 86 @Autowired
94 87 private MongoTemplate mongoTemplate;
95 88  
96   - Logger logger = LoggerFactory.getLogger(ApplyOrderFacade.class);
97   -
98 89 //添加回执单
99 90 public BaseResponse addReferralReceipt(ReferralReceiptRequest referralReceipt) {
100 91 ReferralApplyOrderModel referralApplyOrderModel = new ReferralApplyOrderModel();
... ... @@ -398,7 +389,7 @@
398 389 if (CollectionUtils.isNotEmpty(sieveModels)) {
399 390 SieveModel sieveModel = sieveModels.get(0);
400 391 mongoTemplate.updateFirst(Query.query(Criteria.where("_id").is(sieveModel.getId())), Update.update("sieveType", sieveApplyOrderModel.getSieveType()).
401   - set("costType", sieveApplyOrderModel.getCostType()), SieveModel.class);
  392 + set("costType",sieveApplyOrderModel.getCostType()), SieveModel.class);
402 393 if (sieveModel.getSieveHospitalId() != null && !sieveModel.getSieveHospitalId().equals(sieveApplyOrderAddRequest.getSieveHospitalId())) {
403 394 sieveModel.setSieveHospitalId(sieveApplyOrderAddRequest.getSieveHospitalId());
404 395 sieveService.updateOneChanQianDiaSieve(sieveModel);
405 396  
406 397  
407 398  
... ... @@ -512,140 +503,16 @@
512 503 int days = DateUtil.daysBetween(sieveModel.getLastMenses(), sieveModel.getApplyDate());
513 504 sieveModel.setDueWeek(days);
514 505 SieveService.handOrder(sieveModel);
515   - sieveModel.setSieveType(sieveApplyOrderModel.getSieveType());
516   - sieveModel.setCostType(sieveApplyOrderModel.getCostType());
517 506 sieveService.updateOneChanQianDiaSieve(sieveModel);
518 507 operateLogFacade.addModifyOptLog(userId, Integer.parseInt(hospitalId), sieveModels.get(0), sieveModel, OptActionEnums.UPDATE.getId(), "增加产前筛查");
519 508 }
520   - // 调用华大接口
521   - System.out.println("debug=========>开始调用华大接口");
522   - callHuaDa(sieveApplyOrderModel, hospitalId);
523   - System.out.println("debug=========>结束调用华大接口");
524 509 } else {
525 510 return new BaseResponse().setErrorcode(ErrorCodeConstants.DATA_EXIST).setErrormsg("已申请过产筛");
526 511 }
527   -
528   -
529   -
530 512 return new BaseResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功");
531 513 }
532 514  
533 515 /**
534   - * 调用华大接口
535   - *
536   - * @param sieveApplyOrderModel
537   - * @param hospitalId
538   - */
539   - private void callHuaDa(SieveApplyOrderModel sieveApplyOrderModel, String hospitalId) {
540   - try{
541   - String sieveType = sieveApplyOrderModel.getSieveType();
542   - //if ("4".equals(HIS_VERSION)) {
543   - if (StringUtils.isNotEmpty(sieveType) && "2".equals(sieveType)) {
544   - final String productCode = "DX1331";
545   - HuadaSieveApplyOrderAddRequest request = new HuadaSieveApplyOrderAddRequest();
546   - // 产品编号
547   - request.setProductCode(productCode);
548   - // 客户编号
549   - Organization organization = organizationService.getOrganization(Integer.parseInt(hospitalId));
550   - String shortCode = organization.getShortCode();
551   - request.setCustomerCode(shortCode);
552   - // 孕妇姓名
553   - Patients patients = mongoTemplate.findOne(Query.query(Criteria.where("_id").is(sieveApplyOrderModel.getParentId())), Patients.class);
554   - String username = patients.getUsername();
555   - request.setSampleName(username);
556   - // 样品编号(如果是正常双胎的情况:样本编号后要加+D;如果是减胎的情况:样本编号后要加+V;如果是重抽血的情况:样本编号后要加+R;)
557   - request.setSampleNum(sieveApplyOrderModel.getNumber());
558   - // 采样日期
559   - request.setBloodDate(DateUtil.getYmd(sieveApplyOrderModel.getCollectionDate()));
560   - // 送检单唯一标识
561   - request.setExtBaseInfoId(sieveApplyOrderModel.getId());
562   - // 样品管类型 STRECK:STRECK
563   - // EDTA:EDTA
564   - // K牌采血管:K牌采血管
565   - // G牌采血管:G牌采血管
566   - String d = "1".equals(sieveApplyOrderModel.getFetusNum()) || "4".equals(sieveApplyOrderModel.getFetusNum()) ? "D" :"";
567   - request.setTubeType(sieveApplyOrderModel.getYpglx() + d);
568   - // 孕周(格式:18w+1)注:“w”必须小写,“+”号后面的天数必须是0~6
569   - request.setGestationalWeeks(sieveApplyOrderModel.getYunSize());
570   - // 证件类型(01:身份证、02:护照)
571   - request.setZidcardType("01");
572   - // 孕妇联系电话
573   - request.setMotherPhoneNum(patients.getPhone());
574   - // 收费类型(样本用途)(工作量,只有收费、免费)
575   - //
576   - //{
577   - //1:科研收费
578   - // 2:科研免费
579   - // 3:临床收费
580   - // 4:临床免费
581   - // 咱们页面可以支持医生填写免费和收费,并且能统计。最终给华大传数据,所有用户默认成【临床收费】
582   - //
583   - // 后台固定传参:3
584   - request.setChargeType("3");
585   - // 孕妇年龄
586   - request.setAge(DateUtil.getAge(patients.getBirth()).toString());
587   - // 末次月经,就诊末次月经
588   - request.setLmp(DateUtil.getYmd(patients.getLastMenses()));
589   - // 是否是否体外受精-胚胎移植(IVF)
590   - // {
591   - // 0:是否IVF-否
592   - // 1:是否IVF-是
593   - request.setAdosculation(sieveApplyOrderModel.getIvf());
594   - // 既往史: 一年内异体输血
595   - // {
596   - // 0:既往史: 一年内异体输血-无
597   - // 1:既往史: 一年内异体输血-有(不接受)
598   - // }
599   - request.setAllogeneticTransfusion(sieveApplyOrderModel.getYtsx());
600   - // 四周内异体细胞免疫
601   - // {
602   - // 0:四周内异体细胞免疫-无
603   - // 1:四周内异体细胞免疫-有(不接受)
604   - // }
605   - request.setCellularImmunity(sieveApplyOrderModel.getYtxbzl());
606   - // 干细胞治疗
607   - // {
608   - // 0:干细胞治疗-无
609   - // 1:干细胞治疗-有(不接受)
610   - // }
611   - request.setStemCell(sieveApplyOrderModel.getGxbzl());
612   - // 样本类型
613   - //
614   - // {
615   - //S051:样本类型-全血
616   - // }
617   - request.setSampleType("S051");
618   - // 辅助检查(B超结果),页面传入什么输入
619   - // {
620   - // 0:辅助检查(重要)-正常(单胎活)
621   - // 1:辅助检查(重要)-正常(双胎活)
622   - // 2:辅助检查(重要)-正常(多胎活)
623   - // 3:辅助检查(重要)-异常(单胎)
624   - // 4:辅助检查(重要)-异常(双胎)
625   - // 5:辅助检查(重要)-异常(多胎)
626   - // 6:辅助检查(重要)-减胎
627   - // }
628   - request.setBtypeUltrasonic(sieveApplyOrderModel.getFetusNum());
629   - // 其他辅助筛查,页面传入什么输入
630   - // {
631   - // 0:筛查模式-未做
632   - // 1:筛查模式-nt筛查
633   - // 2:筛查模式-早孕期筛查
634   - // 3:筛查模式-中孕期筛查
635   - // 4:筛查模式-早中孕期联合筛查
636   - // }
637   - request.setScreeningModel(sieveApplyOrderModel.getSieveModel());
638   - request.setIdCard(patients.getCardNo());
639   - huadaSaveSampleInfo(request);
640   - }
641   - // }
642   - }catch (Exception e){
643   - e.printStackTrace();
644   - logger.error("调用华大接口失败", e);
645   - }
646   - }
647   -
648   - /**
649 516 * 查询转诊申请
650 517 *
651 518 * @param id
... ... @@ -1570,7 +1437,6 @@
1570 1437 timestamp = timestamp.replaceAll(" ", "%20");//空格替换成 %20
1571 1438 String syscode = signParams.get("syscode").toString();
1572 1439 String sign = signParams.get("sign").toString();
1573   - System.out.println(JsonUtil.obj2JsonString(map));
1574 1440 String s = HttpClientUtil.sendPost(HUADA_URL + "/intf?method=saveSampleInfo&" + "timestamp=" + timestamp + "&syscode=" + syscode + "&sign=" + sign, map);
1575 1441 System.out.println(s);
1576 1442 //{"code":"200","msg":"success","rows":{"successedList":[{"msg":"INSP190001417198 ,样例号: 18S4074733R 保存成功!","result":true,"canseqId":"2018101700007123"}],"failedList":[]}}
... ... @@ -1601,7 +1467,7 @@
1601 1467 String data = null;
1602 1468 try {
1603 1469 //5.3.查询报告详情
1604   - Map<String, Object> signParams = getSignParams(SYSCODE, SECRET);
  1470 + Map<String, Object> signParams = getSignParams(SYSCODE, SECRET);
1605 1471 String timestamp1 = signParams.get("timestamp").toString();
1606 1472 timestamp1 = timestamp1.replaceAll(" ", "%20");//空格替换成 %20
1607 1473 String syscode1 = signParams.get("syscode").toString();
1608 1474  
1609 1475  
... ... @@ -1614,42 +1480,12 @@
1614 1480 JSONObject jsonMapParams = new JSONObject(mapParams);
1615 1481 map1.put("params", jsonMapParams.toString());
1616 1482 data = HttpClientUtil.sendPost(HUADA_URL + "/intf?method=findReportDetail&" + "timestamp=" + timestamp1 + "&syscode=" + syscode1 + "&sign=" + sign1, map1);
1617   - System.out.println("data="+data);
1618 1483 JSONObject jsonObject = JSONObject.parseObject(data);
1619   - System.out.println("json="+jsonObject.toJSONString());
1620 1484 Object rows = jsonObject.get("rows");
1621 1485 HuadaCallbackModel huadaCallbackModel = JSONObject.parseObject(rows.toString(), HuadaCallbackModel.class);
1622 1486 System.out.println(huadaCallbackModel.toString());
1623 1487  
1624   - String cardId = huadaCallbackModel.getCardId();
1625   - Patients patients = mongoTemplate.findOne(Query.query(Criteria.where("cardNo").is(cardId)), Patients.class);
1626   - if (patients != null) {
1627   - String patientsId = patients.getId();
1628   - SieveResultModel sieveResultModel = mongoTemplate.findOne(Query.query(Criteria.where("parentId").is(patientsId)), SieveResultModel.class);
1629   - if (sieveResultModel != null) {
1630   - Update update = new Update();
1631   - SieveResultModel model = getSieveResultModel(huadaCallbackModel, patientsId);
1632   - Map<String, Object> object = BeanUtils.objectToObjectMap(model);
1633   - Set<Map.Entry<String, Object>> entries = object.entrySet();
1634   - for (Map.Entry<String, Object> entry : entries) {
1635   - Object entryValue = entry.getValue();
1636   - if (entryValue != null) {
1637   - if (entryValue instanceof String) {
1638   - if (StringUtils.isEmpty(entryValue.toString())) {
1639   - continue;
1640   - }
1641   - }
1642   - update.set(entry.getKey(), entry.getValue());
1643   - }
1644   - }
1645   - mongoTemplate.updateFirst(Query.query(Criteria.where("_id").is(sieveResultModel.getId())), update, SieveResultModel.class);
1646   - logger.info(String.format("更新产筛结果: { %s }", update.toString()));
1647   - } else {
1648   - SieveResultModel model = getSieveResultModel(huadaCallbackModel, patientsId);
1649   - mongoTemplate.insert(model);
1650   - logger.info(String.format("新增产筛结果: { %s }", model.toString()));
1651   - }
1652   - }
  1488 +
1653 1489 } catch (Exception e) {
1654 1490 e.printStackTrace();
1655 1491 map.put("code", "500");
... ... @@ -1661,49 +1497,6 @@
1661 1497 return map;
1662 1498 }
1663 1499  
1664   - /**
1665   - * 组装 SieveResultModel
1666   - *
1667   - * @param huadaCallbackModel
1668   - * @param patientsId
1669   - * @return
1670   - */
1671   - private SieveResultModel getSieveResultModel(final HuadaCallbackModel huadaCallbackModel, String patientsId) {
1672   - SieveResultModel newModel = new SieveResultModel();
1673   - newModel.setResultTime(new Date());
1674   - newModel.setReportType("1");
1675   - newModel.setParentId(patientsId);
1676   - newModel.setSampleInfoId(huadaCallbackModel.getSampleInfoId());
1677   - newModel.setSampleReportId(huadaCallbackModel.getSampleReportId());
1678   - // 底风险0 高风险2
1679   - newModel.setSbst(huadaCallbackModel.getT18().contains("未检出") ? "0" : "2");
1680   - newModel.setStzhz13(huadaCallbackModel.getT13().contains("未检出") ? "0" : "2");
1681   - newModel.setTszhz(huadaCallbackModel.getT21().contains("未检出") ? "0" : "2");
1682   -
1683   - final String[] split18 = huadaCallbackModel.getT18Risk().split("/");
1684   - final String[] split13 = huadaCallbackModel.getT13Risk().split("/");
1685   - final String[] split21 = huadaCallbackModel.getT21Risk().split("/");
1686   - /*Map<String, String> map18 = Maps.newHashMap();
1687   - map18.put("valueOne", split18[0]);
1688   - map18.put("valueTwo", split18[1]);
1689   - map18.put("valueKey", huadaCallbackModel.getZ18ZScore());
1690   - Map<String, String> map13 = Maps.newHashMap();
1691   - map13.put("valueOne", split13[0]);
1692   - map13.put("valueTwo", split13[1]);
1693   - map13.put("valueKey", huadaCallbackModel.getZ13ZScore());
1694   - Map<String, String> map21 = Maps.newHashMap();
1695   - map21.put("valueOne", split21[0]);
1696   - map21.put("valueTwo", split21[1]);
1697   - map21.put("valueKey", huadaCallbackModel.getZ21ZScore());*/
1698   - newModel.setSbstValue(new HashMap<String, String>(){{
1699   - put("valueOne", split18[0]);put("valueTwo", split18[1]);put("valueKey", huadaCallbackModel.getZ18ZScore()); }});
1700   - newModel.setStzhz13Value(new HashMap<String, String>(){{
1701   - put("valueOne", split13[0]);put("valueTwo", split13[1]);put("valueKey", huadaCallbackModel.getZ13ZScore()); }});
1702   - newModel.setTszhzValue(new HashMap<String, String>(){{
1703   - put("valueOne", split21[0]);put("valueTwo", split21[1]);put("valueKey", huadaCallbackModel.getZ21ZScore()); }});
1704   - return newModel;
1705   - }
1706   -
1707 1500 public void huadaFtp(String sampleReportId,HttpServletResponse response) {
1708 1501  
1709 1502 try {
... ... @@ -1732,7 +1525,7 @@
1732 1525 }
1733 1526  
1734 1527 }
1735   - public void huadaGetReportType(String sampleReportId) {
  1528 + public String huadaGetReportType(String sampleReportId) {
1736 1529 try {
1737 1530 Map<String, Object> signParams = getSignParams(SYSCODE, SECRET);
1738 1531 String timestamp1 = signParams.get("timestamp").toString();
1739 1532  
1740 1533  
... ... @@ -1745,11 +1538,18 @@
1745 1538 JSONObject jsonMapParams = new JSONObject(mapParams);
1746 1539 map1.put("params", jsonMapParams.toString());
1747 1540 String data = HttpClientUtil.sendPost(HUADA_URL + "/intf?method=getReportType&" + "timestamp=" + timestamp1 + "&syscode=" + syscode1 + "&sign=" + sign1, map1);
1748   - System.out.println(data);
1749   -
  1541 + if(!data.isEmpty()){
  1542 + net.sf.json.JSONObject jsonObject11 = net.sf.json.JSONObject.fromObject(data);
  1543 + net.sf.json.JSONArray rows = (net.sf.json.JSONArray)jsonObject11.get("rows");
  1544 + net.sf.json.JSONObject reporttype = (net.sf.json.JSONObject)rows.get(0);
  1545 + String reporttype1 = reporttype.get("REPORTTYPE").toString();
  1546 + return reporttype1;
  1547 + }
1750 1548 } catch (Exception e) {
1751 1549 e.printStackTrace();
  1550 + return "";
1752 1551 }
  1552 + return "";
1753 1553 }
1754 1554 /**
1755 1555 * 根据byte数组,生成文件