package com.ltkj.web.controller.pacs; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.RandomUtil; 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.AgeResult; import com.ltkj.common.utils.DateUtils; import com.ltkj.hosp.domain.*; import com.ltkj.hosp.hisDto.OutpintestapplyDetailsDto; import com.ltkj.hosp.pacsDto.SavePacsApply; import com.ltkj.hosp.service.*; import com.ltkj.system.service.ISysDeptService; import com.ltkj.web.controller.his.HisApiGetMethodService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.time.DateFormatUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; /** * @Company: 西安路泰科技有限公司 * @Author: zhaowenxuan * @Date: 2024/9/18 10:55 */ @Slf4j @Component public class PacsApiMethodService { @Autowired private HisApiGetMethodService getMethodService; @Autowired private ISysDeptService deptService; @Autowired private ITjProjectService projectService; @Autowired private LtkjJfzhglmxjfxmzdService ltkjJfzhglmxjfxmzdService; @Autowired private LtkjMxjfxmzdService ltkjMxjfxmzdService; @Autowired private LtkjEjjfxmzdService ltkjEjjfxmzdService; @Autowired private LtkjJianchajianyanTreeService ltkjJianchajianyanTreeService; /** * pas 检查申请信息保存 * @param savePacsApply * @return */ private AjaxResult savePacsApply(SavePacsApply savePacsApply){ Map map = BeanUtil.beanToMap(savePacsApply); return getMethodService.getPacsData("savePacsApply", map); } /** * pas 结果获取 * @param regNo 检查申请单号 * @return */ public AjaxResult getPacsReport(String regNo){ HashMap hashMap = new HashMap<>(); hashMap.put("regNo", regNo); return getMethodService.getPacsData("getPacsReport",hashMap); } /** * pas 检查申请信息作废 * @param regNo 检查申请单号 * @param examNo 体检号 * @param name 病人姓名 * @return */ public AjaxResult updatePacsApply(String regNo,String examNo,String name){ HashMap hashMap = new HashMap<>(); hashMap.put("regNo", regNo); hashMap.put("examNo", examNo); hashMap.put("name", name); log.info("作废检查 ->{}",JSONUtil.toJsonStr(hashMap)); // return getMethodService.getPacsData("updatePacsApply",hashMap); return AjaxResult.success(); } public Boolean save(TjOrder tjOrder, TjCustomer tjCustomer,List detailList) { if (detailList != null && !detailList.isEmpty()) { LambdaQueryWrapper wq = new LambdaQueryWrapper<>(); wq.in(TjProject::getProId, detailList.stream().map(TbTransition::getParentProId).collect(Collectors.toList())); wq.in(TjProject::getDeptId,deptService.getJcDeptIds()); List projects = projectService.list(wq); ArrayList errorPacsList = new ArrayList<>(); ArrayList successPacsList = new ArrayList<>(); int allTotal = 0; if (projects != null && !projects.isEmpty()){ for (TjProject project : projects) { if (0 == project.getProParentId() && project.getProPrice().compareTo(BigDecimal.ZERO) != 0) { if (null != project.getHisXmbm()) { SavePacsApply savePacsApply = new SavePacsApply(); savePacsApply.setExamNo(tjOrder.getCardId()); savePacsApply.setName(tjCustomer.getCusName()); savePacsApply.setSex(tjCustomer.getCusSex()==1?"2":"1"); AgeResult ageResult = DateUtils.calculateAge(tjCustomer.getCusBrithday()); savePacsApply.setAge(String.valueOf(ageResult.getAge())); savePacsApply.setAgeUnit(String.valueOf(ageResult.getUnit())); savePacsApply.setBirthday(DateFormatUtils.format(tjCustomer.getCusBrithday(), "yyyy-MM-dd")); savePacsApply.setCardNumber(tjCustomer.getCusIdcard()); savePacsApply.setTel(tjCustomer.getCusPhone()); Date date = new Date(); String regNo = "jk_"+DateFormatUtils.format(date, "yyyyMMddHHmmss") +"_"+project.getHisXmbm(); savePacsApply.setRegNo(regNo); savePacsApply.setCheckItemID(project.getHisXmbm()); savePacsApply.setCheckItem(project.getHisXmmc()); // TODO 检查部位 savePacsApply.setCheckPosition(""); savePacsApply.setAmount(project.getProPrice()); savePacsApply.setApplyDate(DateFormatUtils.format(date, "yyyy-MM-dd HH:mm:ss")); savePacsApply.setApplyDepment("0101"); savePacsApply.setApplyDepmentName("体检中心"); savePacsApply.setApplyDoctor("00029"); savePacsApply.setApplyDoctorName("王健萍"); savePacsApply.setExecDepment("0101"); savePacsApply.setExecDepmentName("体检中心"); savePacsApply.setCreateTime(savePacsApply.getApplyDate()); // TODO 检查设备 savePacsApply.setDevice(""); // TODO 检查设备类型 savePacsApply.setDeviceType(""); log.info("检查申请 ->{}",JSONUtil.toJsonStr(savePacsApply)); if (true) return false; AjaxResult ajaxResult = savePacsApply(savePacsApply); String result = ajaxResult.get("data").toString(); JSONObject object = JSONUtil.parseObj(JSONUtil.parseObj(result).getStr("Response")); log.info("请求返回 ->{}",object); String code = object.getStr("ResultCode"); allTotal++; if(code.equals("0")){ successPacsList.add(savePacsApply); LtkjJianchajianyanTree tree = new LtkjJianchajianyanTree(); tree.setCardId(tjOrder.getCardId()); tree.setPationid(tjCustomer.getPationId()); tree.setSqdh(regNo); tree.setFyhj(String.valueOf(project.getProPrice())); tree.setHisXmdm(project.getHisXmbm()); tree.setType("检查"); tree.setTjPrice(String.valueOf(project.getProPrice())); LambdaQueryWrapper wrapper1 = new LambdaQueryWrapper<>(); if (project.getSfzhfy().equals("Y")) wrapper1.eq(LtkjJfzhglmxjfxmzd::getZhxmdm, project.getHisXmbm()); else wrapper1.eq(LtkjJfzhglmxjfxmzd::getXmdm, project.getHisXmbm()); 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()); } tree.setCreateTime(DateUtil.date()); ltkjJianchajianyanTreeService.save(tree); }else { errorPacsList.add(savePacsApply); } } } } } log.info("检查总计 ->{}个",allTotal); if (!errorPacsList.isEmpty()){ log.info("成功 ->{}",successPacsList); log.error("失败 ->{}",errorPacsList); } } return true; } /* 查询检查结果、更新查询状态 */ // 调用返回检验结果: // exec usp_tjjk_pacsjg ‘体检号’ // 调用更新状态: // exec usp_tjjk_pacszt ‘体检号’ }