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.common.utils.SecurityUtils; import com.ltkj.hosp.domain.TjCustomer; import com.ltkj.hosp.domain.TjOrder; import com.ltkj.hosp.domain.TjOrderDetail; import com.ltkj.hosp.domain.TjProject; import com.ltkj.hosp.hisDto.OutpinexamapplyDto; import com.ltkj.hosp.hisDto.OutpinregapplyDto; import com.ltkj.hosp.hisDto.OutpintestapplyDetailsDto; import com.ltkj.hosp.hisDto.OutpintestapplyDto; import com.ltkj.hosp.service.ITjCustomerService; import com.ltkj.hosp.service.ITjOrderDetailService; import com.ltkj.hosp.service.ITjOrderService; import com.ltkj.hosp.service.ITjProjectService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; 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; //将方法返回值解析成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 void HisApiMethods(TjCustomer customer, Long orderId) { HisApiGetMethodService hisApiGetMethodService = new HisApiGetMethodService(); 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.setHisRegistrationId(pationid); outpinregapplyDto.setSqysbm(SecurityUtils.getUsername()); 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(); if (null != hisRegistrationId) { //门诊医生接诊 AjaxResult result3 = controller.Outpinconapply(hisRegistrationId, date, SecurityUtils.getUsername()); String result4 = getAjaxResult(result3); JSONObject object2 = getJSONObject(result4); String code2 = object2.getStr("ResultCode"); if (code2.equals("0")) { Map data = object2.getJSONObject("ResultData"); String toString = data.get("his_registration_id").toString(); if (null != toString) { //检验申请 OutpintestapplyDto dto = new OutpintestapplyDto(); dto.setHisRegistrationId(hisRegistrationId); dto.setSfjz(customer.getCusIdcard()); dto.setSqysbm(SecurityUtils.getUsername()); dto.setMzksbm("0101"); dto.setSjrq(date); dto.setCzybm("00029"); dto.setCzyksbm("0101"); dto.setSfjz("1"); List detailList = detailService.getTjOrderDetailListByOrderId(orderId.toString()); List detailsDtos = new ArrayList<>(); if (null != detailList && detailList.size() > 0) { LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.in(TjProject::getProId, detailList.stream().map(TjOrderDetail::getProId).collect(Collectors.toList())); List projects = projectService.list(wq); if (null != projects && projects.size() > 0) { for (TjProject project : projects) { OutpintestapplyDetailsDto detailsDto = new OutpintestapplyDetailsDto(); // if(null !=project.getHisXmbm()){ // detailsDto.setMxfyxmbm(project.getHisXmbm()); // }else { // detailsDto.setMxfyxmbm(null); // } detailsDto.setMxfyxmbm("tj001"); detailsDto.setSfzhfy("1"); detailsDto.setSl(1); detailsDtos.add(detailsDto); } } } 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")) { Map datas = object3.getJSONObject("ResultData"); datas.put("cardId", hisRegistrationId); JSONObject object4 = JSONUtil.parseObj(datas); if(null ==orderService.getHuoQuJysqdh(hisRegistrationId)){ hisApiGetMethodService.save(object4, "Outpintestapply"); } //门诊检查申请 OutpinexamapplyDto outpinexamapplyDto = new OutpinexamapplyDto(); outpinexamapplyDto.setHisRegistrationId(hisRegistrationId); outpinexamapplyDto.setSfzh(customer.getCusIdcard()); outpinexamapplyDto.setSqysbm(SecurityUtils.getUsername()); outpinexamapplyDto.setMzksbm("0101"); outpinexamapplyDto.setCzybm("00029"); outpinexamapplyDto.setCzyksbm("0101"); List detailLists = detailService.getTjOrderDetailListByOrderId(orderId.toString()); List detailsDtoss = new ArrayList<>(); if (null != detailList && detailList.size() > 0) { LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.in(TjProject::getProId, detailLists.stream().map(TjOrderDetail::getProId).collect(Collectors.toList())); List projects = projectService.list(wq); if (null != projects && projects.size() > 0) { for (TjProject project : projects) { OutpintestapplyDetailsDto detailsDto = new OutpintestapplyDetailsDto(); detailsDto.setMxfyxmbm("tj001"); detailsDto.setSfzhfy("1"); detailsDto.setSl(1); detailsDtoss.add(detailsDto); } } } 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")) { Map map = object5.getJSONObject("ResultData"); map.put("cardId", hisRegistrationId); JSONObject jsonObject = JSONUtil.parseObj(map); if(null ==orderService.getHuoQuJcsqdh(hisRegistrationId)) hisApiGetMethodService.save(jsonObject, "Outpinexamapply"); } } } } } } } } } } } //退费后取消接诊作废申请单等操作 @Transactional public void 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()); //作废门诊检查申请 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()); } //作废门诊申请 AjaxResult ajaxResult = controller.Outpindeltestapply(order.getCardId(), "00029", jysqdh); String result2 = getAjaxResult(ajaxResult); JSONObject object1 = getJSONObject(result2); String code1 = object1.getStr("ResultCode"); if(code1.equals("0")){ orderService.delHuoQuJysqdh(order.getCardId()); } controller.Outpinunconapply(order.getCardId(),date,"00029"); } }