diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ApplyOrderController.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ApplyOrderController.java index a4f5e62..e25d48a 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ApplyOrderController.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/controller/ApplyOrderController.java @@ -86,7 +86,6 @@ public class ApplyOrderController extends BaseController { //华大基因,检查结果回调 @RequestMapping("/huadaCallback") - @ResponseBody public Map huadaCallback(@RequestParam(value = "params") String params, @RequestParam(value = "syscode") String syscode, @RequestParam(value = "sign") String sign, @@ -102,8 +101,13 @@ public class ApplyOrderController extends BaseController { //华大基因,6.6.查询报告类型 @RequestMapping(method = RequestMethod.POST,value = "/huadaGetReportType") - public void huadaGetReportType( @RequestParam(value = "sampleReportId") String sampleReportId) { - applyOrderFacade.huadaGetReportType(sampleReportId); + @ResponseBody + public Map huadaGetReportType( @RequestParam(value = "sampleReportId") String sampleReportId) { + String s = applyOrderFacade.huadaGetReportType(sampleReportId); + System.out.println(s); + Map map = new HashMap(); + map.put("s",s); + return map; } @RequestMapping(method = RequestMethod.GET, value = "/sieveapply") diff --git a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ApplyOrderFacade.java b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ApplyOrderFacade.java index 8ff4e4e..f5cd64d 100644 --- a/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ApplyOrderFacade.java +++ b/platform-operate-api/src/main/java/com/lyms/platform/operate/web/facade/ApplyOrderFacade.java @@ -3,23 +3,17 @@ package com.lyms.platform.operate.web.facade; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import com.google.common.collect.Maps; import com.lyms.platform.biz.service.*; import com.lyms.platform.common.constants.ErrorCodeConstants; import com.lyms.platform.common.enums.*; import com.lyms.platform.common.exception.BusinessException; -import com.lyms.platform.common.result.BaseListResponse; -import com.lyms.platform.common.result.BaseObjectResponse; -import com.lyms.platform.common.result.BaseResponse; +import com.lyms.platform.common.result.*; import com.lyms.platform.common.utils.*; import com.lyms.platform.operate.web.request.*; import com.lyms.platform.operate.web.result.*; import com.lyms.platform.operate.web.utils.CommonsHelper; import com.lyms.platform.operate.web.utils.FunvCommonUtil; -import com.lyms.platform.permission.model.Organization; -import com.lyms.platform.permission.model.OrganizationQuery; -import com.lyms.platform.permission.model.PatientService; -import com.lyms.platform.permission.model.Users; +import com.lyms.platform.permission.model.*; import com.lyms.platform.permission.service.CouponService; import com.lyms.platform.permission.service.OrganizationService; import com.lyms.platform.permission.service.UsersService; @@ -28,8 +22,7 @@ import com.lyms.platform.query.*; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.math.NumberUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.apache.http.HttpResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; @@ -38,6 +31,7 @@ import org.springframework.data.mongodb.core.query.Update; import org.springframework.stereotype.Component; import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.text.SimpleDateFormat; @@ -53,7 +47,6 @@ public class ApplyOrderFacade { public static final String HUADA_URL = PropertiesUtils.getPropertyValue("huada_url"); public static final String SYSCODE = PropertiesUtils.getPropertyValue("huada_syscode"); public static final String SECRET = PropertiesUtils.getPropertyValue("huada_secret"); - public static final String HIS_VERSION = PropertiesUtils.getPropertyValue("his_version"); @Autowired private ApplyOrderService applyOrderService; @@ -93,8 +86,6 @@ public class ApplyOrderFacade { @Autowired private MongoTemplate mongoTemplate; - Logger logger = LoggerFactory.getLogger(ApplyOrderFacade.class); - //添加回执单 public BaseResponse addReferralReceipt(ReferralReceiptRequest referralReceipt) { ReferralApplyOrderModel referralApplyOrderModel = new ReferralApplyOrderModel(); @@ -398,7 +389,7 @@ public class ApplyOrderFacade { if (CollectionUtils.isNotEmpty(sieveModels)) { SieveModel sieveModel = sieveModels.get(0); mongoTemplate.updateFirst(Query.query(Criteria.where("_id").is(sieveModel.getId())), Update.update("sieveType", sieveApplyOrderModel.getSieveType()). - set("costType", sieveApplyOrderModel.getCostType()), SieveModel.class); + set("costType",sieveApplyOrderModel.getCostType()), SieveModel.class); if (sieveModel.getSieveHospitalId() != null && !sieveModel.getSieveHospitalId().equals(sieveApplyOrderAddRequest.getSieveHospitalId())) { sieveModel.setSieveHospitalId(sieveApplyOrderAddRequest.getSieveHospitalId()); sieveService.updateOneChanQianDiaSieve(sieveModel); @@ -512,140 +503,16 @@ public class ApplyOrderFacade { int days = DateUtil.daysBetween(sieveModel.getLastMenses(), sieveModel.getApplyDate()); sieveModel.setDueWeek(days); SieveService.handOrder(sieveModel); - sieveModel.setSieveType(sieveApplyOrderModel.getSieveType()); - sieveModel.setCostType(sieveApplyOrderModel.getCostType()); sieveService.updateOneChanQianDiaSieve(sieveModel); operateLogFacade.addModifyOptLog(userId, Integer.parseInt(hospitalId), sieveModels.get(0), sieveModel, OptActionEnums.UPDATE.getId(), "增加产前筛查"); } - // 调用华大接口 - System.out.println("debug=========>开始调用华大接口"); - callHuaDa(sieveApplyOrderModel, hospitalId); - System.out.println("debug=========>结束调用华大接口"); } else { return new BaseResponse().setErrorcode(ErrorCodeConstants.DATA_EXIST).setErrormsg("已申请过产筛"); } - - - return new BaseResponse().setErrorcode(ErrorCodeConstants.SUCCESS).setErrormsg("成功"); } /** - * 调用华大接口 - * - * @param sieveApplyOrderModel - * @param hospitalId - */ - private void callHuaDa(SieveApplyOrderModel sieveApplyOrderModel, String hospitalId) { - try{ - String sieveType = sieveApplyOrderModel.getSieveType(); - //if ("4".equals(HIS_VERSION)) { - if (StringUtils.isNotEmpty(sieveType) && "2".equals(sieveType)) { - final String productCode = "DX1331"; - HuadaSieveApplyOrderAddRequest request = new HuadaSieveApplyOrderAddRequest(); - // 产品编号 - request.setProductCode(productCode); - // 客户编号 - Organization organization = organizationService.getOrganization(Integer.parseInt(hospitalId)); - String shortCode = organization.getShortCode(); - request.setCustomerCode(shortCode); - // 孕妇姓名 - Patients patients = mongoTemplate.findOne(Query.query(Criteria.where("_id").is(sieveApplyOrderModel.getParentId())), Patients.class); - String username = patients.getUsername(); - request.setSampleName(username); - // 样品编号(如果是正常双胎的情况:样本编号后要加+D;如果是减胎的情况:样本编号后要加+V;如果是重抽血的情况:样本编号后要加+R;) - request.setSampleNum(sieveApplyOrderModel.getNumber()); - // 采样日期 - request.setBloodDate(DateUtil.getYmd(sieveApplyOrderModel.getCollectionDate())); - // 送检单唯一标识 - request.setExtBaseInfoId(sieveApplyOrderModel.getId()); - // 样品管类型 STRECK:STRECK - // EDTA:EDTA - // K牌采血管:K牌采血管 - // G牌采血管:G牌采血管 - String d = "1".equals(sieveApplyOrderModel.getFetusNum()) || "4".equals(sieveApplyOrderModel.getFetusNum()) ? "D" :""; - request.setTubeType(sieveApplyOrderModel.getYpglx() + d); - // 孕周(格式:18w+1)注:“w”必须小写,“+”号后面的天数必须是0~6 - request.setGestationalWeeks(sieveApplyOrderModel.getYunSize()); - // 证件类型(01:身份证、02:护照) - request.setZidcardType("01"); - // 孕妇联系电话 - request.setMotherPhoneNum(patients.getPhone()); - // 收费类型(样本用途)(工作量,只有收费、免费) - // - //{ - //1:科研收费 - // 2:科研免费 - // 3:临床收费 - // 4:临床免费 - // 咱们页面可以支持医生填写免费和收费,并且能统计。最终给华大传数据,所有用户默认成【临床收费】 - // - // 后台固定传参:3 - request.setChargeType("3"); - // 孕妇年龄 - request.setAge(DateUtil.getAge(patients.getBirth()).toString()); - // 末次月经,就诊末次月经 - request.setLmp(DateUtil.getYmd(patients.getLastMenses())); - // 是否是否体外受精-胚胎移植(IVF) - // { - // 0:是否IVF-否 - // 1:是否IVF-是 - request.setAdosculation(sieveApplyOrderModel.getIvf()); - // 既往史: 一年内异体输血 - // { - // 0:既往史: 一年内异体输血-无 - // 1:既往史: 一年内异体输血-有(不接受) - // } - request.setAllogeneticTransfusion(sieveApplyOrderModel.getYtsx()); - // 四周内异体细胞免疫 - // { - // 0:四周内异体细胞免疫-无 - // 1:四周内异体细胞免疫-有(不接受) - // } - request.setCellularImmunity(sieveApplyOrderModel.getYtxbzl()); - // 干细胞治疗 - // { - // 0:干细胞治疗-无 - // 1:干细胞治疗-有(不接受) - // } - request.setStemCell(sieveApplyOrderModel.getGxbzl()); - // 样本类型 - // - // { - //S051:样本类型-全血 - // } - request.setSampleType("S051"); - // 辅助检查(B超结果),页面传入什么输入 - // { - // 0:辅助检查(重要)-正常(单胎活) - // 1:辅助检查(重要)-正常(双胎活) - // 2:辅助检查(重要)-正常(多胎活) - // 3:辅助检查(重要)-异常(单胎) - // 4:辅助检查(重要)-异常(双胎) - // 5:辅助检查(重要)-异常(多胎) - // 6:辅助检查(重要)-减胎 - // } - request.setBtypeUltrasonic(sieveApplyOrderModel.getFetusNum()); - // 其他辅助筛查,页面传入什么输入 - // { - // 0:筛查模式-未做 - // 1:筛查模式-nt筛查 - // 2:筛查模式-早孕期筛查 - // 3:筛查模式-中孕期筛查 - // 4:筛查模式-早中孕期联合筛查 - // } - request.setScreeningModel(sieveApplyOrderModel.getSieveModel()); - request.setIdCard(patients.getCardNo()); - huadaSaveSampleInfo(request); - } - // } - }catch (Exception e){ - e.printStackTrace(); - logger.error("调用华大接口失败", e); - } - } - - /** * 查询转诊申请 * * @param id @@ -1570,7 +1437,6 @@ public class ApplyOrderFacade { timestamp = timestamp.replaceAll(" ", "%20");//空格替换成 %20 String syscode = signParams.get("syscode").toString(); String sign = signParams.get("sign").toString(); - System.out.println(JsonUtil.obj2JsonString(map)); String s = HttpClientUtil.sendPost(HUADA_URL + "/intf?method=saveSampleInfo&" + "timestamp=" + timestamp + "&syscode=" + syscode + "&sign=" + sign, map); System.out.println(s); //{"code":"200","msg":"success","rows":{"successedList":[{"msg":"INSP190001417198 ,样例号: 18S4074733R 保存成功!","result":true,"canseqId":"2018101700007123"}],"failedList":[]}} @@ -1601,7 +1467,7 @@ public class ApplyOrderFacade { String data = null; try { //5.3.查询报告详情 - Map signParams = getSignParams(SYSCODE, SECRET); + Map signParams = getSignParams(SYSCODE, SECRET); String timestamp1 = signParams.get("timestamp").toString(); timestamp1 = timestamp1.replaceAll(" ", "%20");//空格替换成 %20 String syscode1 = signParams.get("syscode").toString(); @@ -1614,42 +1480,12 @@ public class ApplyOrderFacade { JSONObject jsonMapParams = new JSONObject(mapParams); map1.put("params", jsonMapParams.toString()); data = HttpClientUtil.sendPost(HUADA_URL + "/intf?method=findReportDetail&" + "timestamp=" + timestamp1 + "&syscode=" + syscode1 + "&sign=" + sign1, map1); - System.out.println("data="+data); JSONObject jsonObject = JSONObject.parseObject(data); - System.out.println("json="+jsonObject.toJSONString()); Object rows = jsonObject.get("rows"); HuadaCallbackModel huadaCallbackModel = JSONObject.parseObject(rows.toString(), HuadaCallbackModel.class); System.out.println(huadaCallbackModel.toString()); - String cardId = huadaCallbackModel.getCardId(); - Patients patients = mongoTemplate.findOne(Query.query(Criteria.where("cardNo").is(cardId)), Patients.class); - if (patients != null) { - String patientsId = patients.getId(); - SieveResultModel sieveResultModel = mongoTemplate.findOne(Query.query(Criteria.where("parentId").is(patientsId)), SieveResultModel.class); - if (sieveResultModel != null) { - Update update = new Update(); - SieveResultModel model = getSieveResultModel(huadaCallbackModel, patientsId); - Map object = BeanUtils.objectToObjectMap(model); - Set> entries = object.entrySet(); - for (Map.Entry entry : entries) { - Object entryValue = entry.getValue(); - if (entryValue != null) { - if (entryValue instanceof String) { - if (StringUtils.isEmpty(entryValue.toString())) { - continue; - } - } - update.set(entry.getKey(), entry.getValue()); - } - } - mongoTemplate.updateFirst(Query.query(Criteria.where("_id").is(sieveResultModel.getId())), update, SieveResultModel.class); - logger.info(String.format("更新产筛结果: { %s }", update.toString())); - } else { - SieveResultModel model = getSieveResultModel(huadaCallbackModel, patientsId); - mongoTemplate.insert(model); - logger.info(String.format("新增产筛结果: { %s }", model.toString())); - } - } + } catch (Exception e) { e.printStackTrace(); map.put("code", "500"); @@ -1661,49 +1497,6 @@ public class ApplyOrderFacade { return map; } - /** - * 组装 SieveResultModel - * - * @param huadaCallbackModel - * @param patientsId - * @return - */ - private SieveResultModel getSieveResultModel(final HuadaCallbackModel huadaCallbackModel, String patientsId) { - SieveResultModel newModel = new SieveResultModel(); - newModel.setResultTime(new Date()); - newModel.setReportType("1"); - newModel.setParentId(patientsId); - newModel.setSampleInfoId(huadaCallbackModel.getSampleInfoId()); - newModel.setSampleReportId(huadaCallbackModel.getSampleReportId()); - // 底风险0 高风险2 - newModel.setSbst(huadaCallbackModel.getT18().contains("未检出") ? "0" : "2"); - newModel.setStzhz13(huadaCallbackModel.getT13().contains("未检出") ? "0" : "2"); - newModel.setTszhz(huadaCallbackModel.getT21().contains("未检出") ? "0" : "2"); - - final String[] split18 = huadaCallbackModel.getT18Risk().split("/"); - final String[] split13 = huadaCallbackModel.getT13Risk().split("/"); - final String[] split21 = huadaCallbackModel.getT21Risk().split("/"); - /*Map map18 = Maps.newHashMap(); - map18.put("valueOne", split18[0]); - map18.put("valueTwo", split18[1]); - map18.put("valueKey", huadaCallbackModel.getZ18ZScore()); - Map map13 = Maps.newHashMap(); - map13.put("valueOne", split13[0]); - map13.put("valueTwo", split13[1]); - map13.put("valueKey", huadaCallbackModel.getZ13ZScore()); - Map map21 = Maps.newHashMap(); - map21.put("valueOne", split21[0]); - map21.put("valueTwo", split21[1]); - map21.put("valueKey", huadaCallbackModel.getZ21ZScore());*/ - newModel.setSbstValue(new HashMap(){{ - put("valueOne", split18[0]);put("valueTwo", split18[1]);put("valueKey", huadaCallbackModel.getZ18ZScore()); }}); - newModel.setStzhz13Value(new HashMap(){{ - put("valueOne", split13[0]);put("valueTwo", split13[1]);put("valueKey", huadaCallbackModel.getZ13ZScore()); }}); - newModel.setTszhzValue(new HashMap(){{ - put("valueOne", split21[0]);put("valueTwo", split21[1]);put("valueKey", huadaCallbackModel.getZ21ZScore()); }}); - return newModel; - } - public void huadaFtp(String sampleReportId,HttpServletResponse response) { try { @@ -1732,7 +1525,7 @@ public class ApplyOrderFacade { } } - public void huadaGetReportType(String sampleReportId) { + public String huadaGetReportType(String sampleReportId) { try { Map signParams = getSignParams(SYSCODE, SECRET); String timestamp1 = signParams.get("timestamp").toString(); @@ -1745,11 +1538,18 @@ public class ApplyOrderFacade { JSONObject jsonMapParams = new JSONObject(mapParams); map1.put("params", jsonMapParams.toString()); String data = HttpClientUtil.sendPost(HUADA_URL + "/intf?method=getReportType&" + "timestamp=" + timestamp1 + "&syscode=" + syscode1 + "&sign=" + sign1, map1); - System.out.println(data); - + if(!data.isEmpty()){ + net.sf.json.JSONObject jsonObject11 = net.sf.json.JSONObject.fromObject(data); + net.sf.json.JSONArray rows = (net.sf.json.JSONArray)jsonObject11.get("rows"); + net.sf.json.JSONObject reporttype = (net.sf.json.JSONObject)rows.get(0); + String reporttype1 = reporttype.get("REPORTTYPE").toString(); + return reporttype1; + } } catch (Exception e) { e.printStackTrace(); + return ""; } + return ""; } /** * 根据byte数组,生成文件