package com.ltkj.web.controller.his; import cn.hutool.core.date.DateUtil; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ltkj.common.core.domain.AjaxResult; import com.ltkj.hosp.domain.*; import com.ltkj.hosp.hisDto.*; import com.ltkj.hosp.service.*; import com.ltkj.system.service.ISysConfigService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /* @Authot:zjh * @Date: 2024-05-30 * */ @Component public class HisApiMethod { @Autowired private HisApiMethodService controller; @Resource private ITjOrderService orderService; @Autowired private ITjCustomerService customerService; @Resource private ITjOrderDetailService detailService; @Resource private ITjProjectService projectService; @Resource private ITbTransitionService tbTransitionService; @Autowired private HisApiConfigService hisApiConfigService; @Autowired private HisApiGetMethodService hisApiGetMethodService; @Resource private ISysConfigService configService; @Resource private ITbTransitionService transitionService; @Autowired private LtkjJianchajianyanTreeService ltkjJianchajianyanTreeService; @Autowired private LtkjJfzhglmxjfxmzdService ltkjJfzhglmxjfxmzdService; @Autowired private LtkjMxjfxmzdService ltkjMxjfxmzdService; @Autowired private LtkjEjjfxmzdService ltkjEjjfxmzdService; //将方法返回值解析成json格式 public JSONObject getJSONObject(String builder) { String Response = JSONUtil.parseObj(builder).getStr("Response"); return JSONUtil.parseObj(Response); } //获取方法返回值信息 public String getAjaxResult(AjaxResult result) { return result.get("data").toString(); } //对接his总接口 注册挂号接诊申请单操作 @Transactional public AjaxResult HisApiMethods(TjCustomer customer, Long orderId) { TjOrder tjOrder = orderService.getById(orderId); Date dates = new Date(); final String date = DateUtil.format(dates, "yyyy-MM-dd HH:mm:ss"); AjaxResult result = controller.Outpincreateapply(customer); String result1 = getAjaxResult(result); JSONObject object = getJSONObject(result1); String code = object.getStr("ResultCode"); if (code.equals("0")) { JSONArray resultDatass = object.getJSONArray("ResultData"); Map resultData = (Map) resultDatass.get(0); if (null != resultData && resultData.size() > 0) { String pationid = resultData.get("PationId").toString(); if (null != pationid) { customer.setPationId(pationid); customerService.updateById(customer); OutpinregapplyDto outpinregapplyDto = new OutpinregapplyDto(); outpinregapplyDto.setPationid(pationid); outpinregapplyDto.setSqysbm("00029"); outpinregapplyDto.setMzksbm("0101"); outpinregapplyDto.setCzybm("00029"); outpinregapplyDto.setSfjz("0"); outpinregapplyDto.setGhzlbm("01"); outpinregapplyDto.setYwckbm("0001"); outpinregapplyDto.setSflstd("0"); outpinregapplyDto.setGhrq(date); //门诊挂号 AjaxResult ajaxResult = controller.Outpinregapply(outpinregapplyDto); String result2 = getAjaxResult(ajaxResult); JSONObject object1 = getJSONObject(result2); String code1 = object1.getStr("ResultCode"); if (code1.equals("0")) { JSONArray resultDatas = object1.getJSONArray("ResultData"); if (null != resultDatas && resultDatas.size() > 0) { Map resultDatasss = (Map) resultDatas.get(0); String hisRegistrationId = resultDatasss.get("his_registration_id").toString(); //门诊医生接诊 controller.Outpinconapply(hisRegistrationId, date,"00029"); customer.setCardId(hisRegistrationId); customerService.updateById(customer); transitionService.updateCardIdByTjNumAndIdCard(customer.getCusIdcard(),hisRegistrationId,tjOrder.getTjNumber()); tjOrder.setCardId(hisRegistrationId); orderService.updateById(tjOrder); } } AjaxResult error = tijianshenqing(customer, date); if (error != null) return error; return AjaxResult.success(); } } } return AjaxResult.error(); } //体检对his申请单调用方法 private AjaxResult tijianshenqing(TjCustomer customer, String date) { //检验申请 OutpintestapplyDto dto = new OutpintestapplyDto(); dto.setHisRegistrationId(customer.getCardId()); dto.setSfjz(customer.getCusIdcard()); dto.setSqysbm("00029"); dto.setMzksbm("0101"); dto.setSjrq(date); dto.setCzybm("00029"); dto.setCzyksbm("0101"); dto.setSfjz("1"); List detailList = tbTransitionService.getTbTransitionListByCusId(customer.getCusIdcard(), customer.getCardId()); List detailsDtos = new ArrayList<>(); if (null != detailList && detailList.size() > 0) { LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.in(TjProject::getProId, detailList.stream().map(TbTransition::getParentProId).collect(Collectors.toList())); wq.groupBy(TjProject::getHisXmbm); wq.in(TjProject::getDeptId, "241","317"); List projects = projectService.list(wq); if (null != projects && projects.size() > 0) { for (TjProject project : projects) { if (0 == project.getProParentId() && project.getProPrice().compareTo(BigDecimal.ZERO) != 0) { if (null != project.getHisXmbm()) { OutpintestapplyDetailsDto detailsDto = new OutpintestapplyDetailsDto(); detailsDto.setMxfyxmbm(project.getHisXmbm()); if(project.getSfzhfy().equals("Y")){ detailsDto.setSfzhfy("1"); }else { detailsDto.setSfzhfy("0"); } detailsDto.setSl(project.getSl()); detailsDtos.add(detailsDto); } } } } } if (detailsDtos.size()>0) { dto.setDetails(detailsDtos); AjaxResult ajaxResult1 = controller.Outpintestapply(dto); String result5 = getAjaxResult(ajaxResult1); JSONObject object3 = getJSONObject(result5); String code3 = object3.getStr("ResultCode"); if (code3.equals("0")) { List details = dto.getDetails(); for (OutpintestapplyDetailsDto detail : details) { LtkjJianchajianyanTree tree = new LtkjJianchajianyanTree(); tree.setCardId(dto.getHisRegistrationId()); LambdaQueryWrapper wrapper4 = new LambdaQueryWrapper<>(); wrapper4.eq(TjCustomer::getCardId,tree.getCardId()); TjCustomer tjCustomer = customerService.getOne(wrapper4); tree.setPationid(tjCustomer.getPationId()); JSONObject resultData = object3.getJSONObject("ResultData"); tree.setSqdh(resultData.getStr("jysqdh")); tree.setFyhj(resultData.getStr("fyhj")); String mxfyxmbm = detail.getMxfyxmbm(); tree.setHisXmdm(mxfyxmbm); tree.setType("检验"); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(TjProject::getHisXmbm,mxfyxmbm); List list = projectService.list(wrapper); String tj_price = ""; for (TjProject project : list) { tj_price+= project.getProPrice()+"、"; } tree.setTjPrice(tj_price.substring(0,tj_price.length()-1)); LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); if (detail.getSfzhfy().equals("1")) wrapper1.eq(LtkjJfzhglmxjfxmzd::getZhxmdm,mxfyxmbm); else wrapper1.eq(LtkjJfzhglmxjfxmzd::getXmdm,mxfyxmbm); List ltkjJfzhglmxjfxmzds = ltkjJfzhglmxjfxmzdService.list(wrapper1); if (ltkjJfzhglmxjfxmzds != null && !ltkjJfzhglmxjfxmzds.isEmpty()){ String xmdm = ltkjJfzhglmxjfxmzds.get(0).getXmdm(); LambdaQueryWrapper wrapper2 = new LambdaQueryWrapper<>(); wrapper2.eq(LtkjMxjfxmzd::getXmdm,xmdm); LtkjMxjfxmzd mxjfxmzd = ltkjMxjfxmzdService.getOne(wrapper2); LambdaQueryWrapper wrapper3 = new LambdaQueryWrapper<>(); wrapper3.eq(LtkjEjjfxmzd::getEjkmdm,mxjfxmzd.getEjkmdm()); LtkjEjjfxmzd ejjfxmzd = ltkjEjjfxmzdService.getOne(wrapper3); tree.setXmfl(ejjfxmzd.getYjkmdm()); } ltkjJianchajianyanTreeService.save(tree); } // Map datas = object3.getJSONObject("ResultData"); // datas.put("cardId", customer.getCardId()); // JSONObject object4 = JSONUtil.parseObj(datas); // LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); // lambdaQueryWrapper.eq(HisApiConfig::getApiMethod, "Outpintestapply"); // HisApiConfig hisApiConfig = hisApiConfigService.getOne(lambdaQueryWrapper); // hisApiGetMethodService.save(object4, "Outpintestapply", hisApiConfig,JSONUtil.toJsonStr(BeanUtil.beanToMap(dto))); }else { return AjaxResult.error(); } } //门诊检查申请 OutpinexamapplyDto outpinexamapplyDto = new OutpinexamapplyDto(); outpinexamapplyDto.setHisRegistrationId(customer.getCardId()); outpinexamapplyDto.setSfzh(customer.getCusIdcard()); outpinexamapplyDto.setSqysbm("00029"); outpinexamapplyDto.setMzksbm("0101"); outpinexamapplyDto.setCzybm("00029"); outpinexamapplyDto.setCzyksbm("0101"); List detailLists = tbTransitionService.getTbTransitionListByCusId(customer.getCusIdcard(), customer.getCardId()); List detailsDtoss = new ArrayList<>(); if (null != detailLists && detailLists.size() > 0) { LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.in(TjProject::getProId, detailLists.stream().map(TbTransition::getParentProId).collect(Collectors.toList())); wq.groupBy(TjProject::getHisXmbm); wq.in(TjProject::getDeptId, "247", "248", "249", "250", "251", "252", "271", "273", "274", "275","298"); List projects = projectService.list(wq); if (null != projects && projects.size() > 0) { for (TjProject project : projects) { if (0 == project.getProParentId() && project.getProPrice().compareTo(BigDecimal.ZERO) != 0) { if (null != project.getHisXmbm()) { OutpintestapplyDetailsDto detailsDto = new OutpintestapplyDetailsDto(); detailsDto.setMxfyxmbm(project.getHisXmbm()); if(project.getSfzhfy().equals("Y")){ detailsDto.setSfzhfy("1"); }else { detailsDto.setSfzhfy("0"); } detailsDto.setSl(project.getSl()); detailsDtoss.add(detailsDto); } } } } } if (detailsDtoss.size()>0) { outpinexamapplyDto.setDetails(detailsDtoss); AjaxResult ajaxResult2 = controller.Outpinexamapply(outpinexamapplyDto); String result6 = getAjaxResult(ajaxResult2); JSONObject object5 = getJSONObject(result6); String code4 = object5.getStr("ResultCode"); if (code4.equals("0")) { List details = outpinexamapplyDto.getDetails(); for (OutpintestapplyDetailsDto detail : details) { LtkjJianchajianyanTree tree = new LtkjJianchajianyanTree(); tree.setCardId(outpinexamapplyDto.getHisRegistrationId()); LambdaQueryWrapper wrapper4 = new LambdaQueryWrapper<>(); wrapper4.eq(TjCustomer::getCardId,tree.getCardId()); TjCustomer tjCustomer = customerService.getOne(wrapper4); tree.setPationid(tjCustomer.getPationId()); JSONObject resultData = object5.getJSONObject("ResultData"); tree.setSqdh(resultData.getStr("jcsqdh")); tree.setFyhj(resultData.getStr("fyhj")); String mxfyxmbm = detail.getMxfyxmbm(); tree.setHisXmdm(mxfyxmbm); tree.setType("检查"); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(TjProject::getHisXmbm,mxfyxmbm); List list = projectService.list(wrapper); String tj_price = ""; for (TjProject project : list) { tj_price+= project.getProPrice()+"、"; } tree.setTjPrice(tj_price.substring(0,tj_price.length()-1)); LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); if (detail.getSfzhfy().equals("1")) wrapper1.eq(LtkjJfzhglmxjfxmzd::getZhxmdm,mxfyxmbm); else wrapper1.eq(LtkjJfzhglmxjfxmzd::getXmdm,mxfyxmbm); List ltkjJfzhglmxjfxmzds = ltkjJfzhglmxjfxmzdService.list(wrapper1); if (ltkjJfzhglmxjfxmzds != null && !ltkjJfzhglmxjfxmzds.isEmpty()){ String xmdm = ltkjJfzhglmxjfxmzds.get(0).getXmdm(); LambdaQueryWrapper wrapper2 = new LambdaQueryWrapper<>(); wrapper2.eq(LtkjMxjfxmzd::getXmdm,xmdm); LtkjMxjfxmzd mxjfxmzd = ltkjMxjfxmzdService.getOne(wrapper2); LambdaQueryWrapper wrapper3 = new LambdaQueryWrapper<>(); wrapper3.eq(LtkjEjjfxmzd::getEjkmdm,mxjfxmzd.getEjkmdm()); LtkjEjjfxmzd ejjfxmzd = ltkjEjjfxmzdService.getOne(wrapper3); tree.setXmfl(ejjfxmzd.getYjkmdm()); } ltkjJianchajianyanTreeService.save(tree); } // Map map = object5.getJSONObject("ResultData"); // map.put("cardId", customer.getCardId()); // JSONObject jsonObject = JSONUtil.parseObj(map); // LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); // lambdaQueryWrapper.eq(HisApiConfig::getApiMethod, "Outpinexamapply"); // HisApiConfig hisApiConfig = hisApiConfigService.getOne(lambdaQueryWrapper); // hisApiGetMethodService.save(jsonObject, "Outpinexamapply", hisApiConfig,JSONUtil.toJsonStr(BeanUtil.beanToMap(outpinexamapplyDto))); }else { return AjaxResult.error(); } } //门诊治疗处置申请 OutpintreatapplyDto dao = new OutpintreatapplyDto(); dao.setHisRegistrationId(customer.getCardId()); dao.setSfzh(customer.getCusIdcard()); dao.setSqysbm("00029"); dao.setMzksbm("0101"); dao.setSjrq(date); dao.setCzybm("00029"); dao.setCzyksbm("0101"); List details = tbTransitionService.getTbTransitionListByCusId(customer.getCusIdcard(), customer.getCardId()); List detailDtos = new ArrayList<>(); if (null != details && details.size() > 0) { LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.in(TjProject::getProId, details.stream().map(TbTransition::getParentProId).collect(Collectors.toList())); wq.groupBy(TjProject::getHisXmbm); wq.in(TjProject::getDeptId, "100", "240", "253", "254", "255", "257", "258", "259", "269", "270"); // wq.isNull(TjProject::getDeptId); List projects = projectService.list(wq); if (null != projects && projects.size() > 0) { for (TjProject project : projects) { if (0 == project.getProParentId() && project.getProPrice().compareTo(BigDecimal.ZERO) != 0) { if (null != project.getHisXmbm()) { OutpintestapplyDetailsDto detailsDto = new OutpintestapplyDetailsDto(); detailsDto.setMxfyxmbm(project.getHisXmbm()); if (project.getSfzhfy().equals("Y")) { detailsDto.setSfzhfy("1"); } else { detailsDto.setSfzhfy("0"); } detailsDto.setSl(project.getSl()); detailDtos.add(detailsDto); } } } } } if (detailDtos.size()>0) { dao.setDetails(detailDtos); AjaxResult mzylyzsq1 = controller.Outpintreatapply(dao); String mzylyzsq2 = getAjaxResult(mzylyzsq1); JSONObject mzylyzsq3 = getJSONObject(mzylyzsq2); String code5 = mzylyzsq3.getStr("ResultCode"); if (code5.equals("0")) { List details1 = dao.getDetails(); for (OutpintestapplyDetailsDto detail : details1) { LtkjJianchajianyanTree tree = new LtkjJianchajianyanTree(); tree.setCardId(dao.getHisRegistrationId()); LambdaQueryWrapper wrapper4 = new LambdaQueryWrapper<>(); wrapper4.eq(TjCustomer::getCardId,tree.getCardId()); TjCustomer tjCustomer = customerService.getOne(wrapper4); tree.setPationid(tjCustomer.getPationId()); JSONObject resultData = mzylyzsq3.getJSONObject("ResultData"); tree.setSqdh(resultData.getStr("zlczh")); tree.setFyhj(resultData.getStr("fyhj")); String mxfyxmbm = detail.getMxfyxmbm(); tree.setHisXmdm(mxfyxmbm); tree.setType("处置"); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(TjProject::getHisXmbm,mxfyxmbm); List list = projectService.list(wrapper); String tj_price = ""; for (TjProject project : list) { tj_price+= project.getProPrice()+"、"; } tree.setTjPrice(tj_price.substring(0, tj_price.length() - 1)); LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); if (detail.getSfzhfy().equals("1")) wrapper1.eq(LtkjJfzhglmxjfxmzd::getZhxmdm,mxfyxmbm); else wrapper1.eq(LtkjJfzhglmxjfxmzd::getXmdm,mxfyxmbm); List ltkjJfzhglmxjfxmzds = ltkjJfzhglmxjfxmzdService.list(wrapper1); if (ltkjJfzhglmxjfxmzds != null && !ltkjJfzhglmxjfxmzds.isEmpty()){ String xmdm = ltkjJfzhglmxjfxmzds.get(0).getXmdm(); LambdaQueryWrapper wrapper2 = new LambdaQueryWrapper<>(); wrapper2.eq(LtkjMxjfxmzd::getXmdm,xmdm); LtkjMxjfxmzd mxjfxmzd = ltkjMxjfxmzdService.getOne(wrapper2); LambdaQueryWrapper wrapper3 = new LambdaQueryWrapper<>(); wrapper3.eq(LtkjEjjfxmzd::getEjkmdm,mxjfxmzd.getEjkmdm()); LtkjEjjfxmzd ejjfxmzd = ltkjEjjfxmzdService.getOne(wrapper3); tree.setXmfl(ejjfxmzd.getYjkmdm()); } ltkjJianchajianyanTreeService.save(tree); } // Map map = mzylyzsq3.getJSONObject("ResultData"); // map.put("cardId", customer.getCardId()); // JSONObject jsonObject = JSONUtil.parseObj(map); // LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); // lambdaQueryWrapper.eq(HisApiConfig::getApiMethod, "Outpintreatapply"); // HisApiConfig hisApiConfig = hisApiConfigService.getOne(lambdaQueryWrapper); // hisApiGetMethodService.save(jsonObject, "Outpintreatapply", hisApiConfig,JSONUtil.toJsonStr(BeanUtil.beanToMap(dao))); }else { return AjaxResult.error(); } } return null; } //退费后取消接诊作废申请单等操作 @Transactional public boolean ZfHisApiMethods(TjCustomer customer, TjOrder order) { Date dates = new Date(); final String date = DateUtil.format(dates, "yyyy-MM-dd HH:mm:ss"); String jcsqdh = orderService.getHuoQuJcsqdh(order.getCardId()); String jysqdh = orderService.getHuoQuJysqdh(order.getCardId()); String zlsqdh = orderService.getHuoQuZlsqdh(order.getCardId()); //2.1.6.5 作废门诊检查申请 if (null !=jcsqdh){ AjaxResult result = controller.Outpindelexamapply(order.getCardId(), "00029", jcsqdh); String result1 = getAjaxResult(result); JSONObject object = getJSONObject(result1); String code = object.getStr("ResultCode"); if (code.equals("0")) { orderService.delHuoQuJcsqdh(order.getCardId()); }else { return false; } } //2.1.6.3 作废门诊检验申请 AjaxResult ajaxResult =null; String result2 =null; JSONObject object1 =null; String code1 =null; if(null !=jysqdh){ ajaxResult = controller.Outpindeltestapply(order.getCardId(), "00029", jysqdh); result2 = getAjaxResult(ajaxResult); object1 = getJSONObject(result2); code1 = object1.getStr("ResultCode"); if (code1.equals("0")) { orderService.delHuoQuJysqdh(order.getCardId()); }else { return false; } } //2.1.6.9 作废门诊治疗处置申请 if(null !=zlsqdh){ ajaxResult = controller.Outpintdelreatapply(order.getCardId(), "00029", zlsqdh); result2 = getAjaxResult(ajaxResult); object1 = getJSONObject(result2); code1 = object1.getStr("ResultCode"); if (!code1.equals("0")){ return false; } } //2.1.3 门诊医生取消接诊 ajaxResult = controller.Outpinunconapply(order.getCardId(), date, "00029"); result2 = getAjaxResult(ajaxResult); object1 = getJSONObject(result2); code1 = object1.getStr("ResultCode"); if (!code1.equals("0")){ return false; } return true; } //获取门诊结算记录 @Transactional public void getHisMzJsJl(TjOrder order) { Date dates = new Date(); final String date = DateUtil.format(dates, "yyyy-MM-dd HH:mm:ss"); } }