zhaowenxuan
2024-12-02 b98bda282397df60077efbe4c1ad35a44bdfffb9
ltkj-admin/src/main/java/com/ltkj/web/controller/pacs/PacsApiMethodService.java
@@ -4,17 +4,22 @@
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.XmlUtil;
import cn.hutool.http.HttpRequest;
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.core.domain.entity.SysDept;
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.hosp.sqlDomain.LtkjExamJcsqd;
import com.ltkj.system.service.ISysConfigService;
import com.ltkj.system.service.ISysDeptService;
import com.ltkj.web.controller.his.HisApiGetMethodService;
import lombok.extern.slf4j.Slf4j;
@@ -23,6 +28,7 @@
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@@ -48,6 +54,14 @@
    private LtkjEjjfxmzdService ltkjEjjfxmzdService;
    @Autowired
    private LtkjJianchajianyanTreeService ltkjJianchajianyanTreeService;
    @Autowired
    private ISysConfigService configService;
    @Autowired
    private ITbTransitionService transitionService;
    @Autowired
    private ITjOrderService tjOrderService;
    @Autowired
    private LtkjExamJcsqdService ltkjExamJcsqdService;
    /**
@@ -127,6 +141,8 @@
    public int saveProjects(TjOrder tjOrder, TjCustomer tjCustomer, List<TjProject> projects, JSONArray array, ArrayList<SavePacsApply> successPacsList, ArrayList<SavePacsApply> errorPacsList) {
        int allTotal = 0;
        if (projects != null && !projects.isEmpty()) {
            String dept = configService.selectConfigByKey("request_default_dept");
            String ysbm = configService.selectConfigByKey("request_default_ysbm");
            for (TjProject project : projects) {
                if (0 == project.getProParentId() && project.getProPrice().compareTo(BigDecimal.ZERO) != 0) {
                    if (null != project.getHisXmbm()) {
@@ -154,11 +170,11 @@
                        savePacsApply.setCheckPosition("-");
                        savePacsApply.setAmount(project.getProPrice());
                        savePacsApply.setApplyDate(DateFormatUtils.format(date, "yyyy-MM-dd HH:mm:ss"));
                        savePacsApply.setApplyDepment("0101");
                        savePacsApply.setApplyDepment(dept);
                        savePacsApply.setApplyDepmentName("体检中心");
                        savePacsApply.setApplyDoctor("00029");
                        savePacsApply.setApplyDoctor(ysbm);
                        savePacsApply.setApplyDoctorName("王健萍");
                        savePacsApply.setExecDepment("0101");
                        savePacsApply.setExecDepment(dept);
                        savePacsApply.setExecDepmentName("体检中心");
                        savePacsApply.setCreateTime(savePacsApply.getApplyDate());
                        // TODO 检查设备
@@ -216,4 +232,124 @@
    // exec usp_tjjk_pacsjg ‘体检号’
    // 调用更新状态:
    // exec usp_tjjk_pacszt ‘体检号’
    /**
     * 调用pacs申请单推送
     * xml传递
     */
    public boolean OrderAdd(TjCustomer customer,TjOrder tjOrder){
        List<TbTransition> detailList = transitionService.getTbTransitionListByCusId(customer.getCusIdcard(), tjOrder.getCardId());
        LambdaQueryWrapper<TjProject> wq = new LambdaQueryWrapper<>();
        wq.in(TjProject::getProId, detailList.stream().map(TbTransition::getParentProId).collect(Collectors.toList()));
        wq.in(TjProject::getDeptId, deptService.getJcDeptIds());
        List<TjProject> projects = projectService.list(wq);
        HashMap<String, Object> root = new HashMap<>();
        HashMap<String, Object> hashMap = new HashMap<>();
        HashMap<String, Object> patientInfo = new HashMap<>();
        patientInfo.put("PatientId",customer.getCusId());
        patientInfo.put("VisitNo",tjOrder.getTjNumber());
        patientInfo.put("PatType","P");
        patientInfo.put("PatientName",customer.getCusName());
        if (customer.getCusSex() == 0) patientInfo.put("PatientSex","M");
        else if (customer.getCusSex() == 1) patientInfo.put("PatientSex","F");
        else patientInfo.put("PatientSex","O");
        patientInfo.put("PatBirthday",customer.getCusBrithday());
        patientInfo.put("IdCard",customer.getCusIdcard());
        String examItems = "";
        String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
        for (TjProject project : projects) {
            HashMap<String, Object> examItem = new HashMap<>();
            // 申请单号规则:体检号_project.getProId()后四位
            examItem.put("HisID", tjOrder.getTjNumber() + String.valueOf(project.getProId()).substring(String.valueOf(project.getProId()).length() - 4));
            examItem.put("EmergencyFlag", "0");
            examItem.put("ExamItemID", project.getHisXmbm());
            examItem.put("ExamItemName", project.getHisXmmc());
            examItem.put("OrderDT", date);
            SysDept dept = deptService.getById(project.getDeptId());
            examItem.put("Modality", dept.getModality());
            // TODO 收费标识 1是收费 和 0未收费
            examItem.put("ChargeFlag","");
            examItems += "<ExamItem>"+
                    XmlUtil.mapToXmlStr(examItem)
                            .replaceAll("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>","")
                            .replaceAll("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>","")
                            .replaceAll("<xml>","")
                            .replaceAll("</xml>","")
                    +"</ExamItem>";
        }
        hashMap.put("PatientInfor",patientInfo);
        hashMap.put("ExamItemList",examItems);
        root.put("Root",hashMap);
        String result = HttpRequest.post("").body(XmlUtil.mapToXmlStr(root)).contentType("application/xml;charset:utf-8;").execute().body();
        Map<String, Object> map = XmlUtil.xmlToMap(result);
        if (map.get("Code").toString().equals("1")){
            for (TjProject project : projects) {
                LtkjJianchajianyanTree tree = new LtkjJianchajianyanTree();
                tree.setCardId(tjOrder.getTjNumber());
                tree.setPationid(String.valueOf(customer.getCusId()));
                tree.setSqdh(tjOrder.getTjNumber() + String.valueOf(project.getProId()).substring(String.valueOf(project.getProId()).length() - 4));
                tree.setFyhj(String.valueOf(project.getProPrice()));
                tree.setHisXmdm(project.getHisXmbm());
                tree.setType("检查");
                tree.setService("pacs");
                tree.setTjPrice(String.valueOf(project.getProPrice()));
                LambdaQueryWrapper<LtkjJfzhglmxjfxmzd> wrapper1 = new LambdaQueryWrapper<>();
                if (project.getSfzhfy().equals("Y"))
                    wrapper1.eq(LtkjJfzhglmxjfxmzd::getZhxmdm, project.getHisXmbm());
                else wrapper1.eq(LtkjJfzhglmxjfxmzd::getXmdm, project.getHisXmbm());
                List<LtkjJfzhglmxjfxmzd> ltkjJfzhglmxjfxmzds = ltkjJfzhglmxjfxmzdService.list(wrapper1);
                if (ltkjJfzhglmxjfxmzds != null && !ltkjJfzhglmxjfxmzds.isEmpty()) {
                    String xmdm = ltkjJfzhglmxjfxmzds.get(0).getXmdm();
                    LambdaQueryWrapper<LtkjMxjfxmzd> wrapper2 = new LambdaQueryWrapper<>();
                    wrapper2.eq(LtkjMxjfxmzd::getXmdm, xmdm);
                    LtkjMxjfxmzd mxjfxmzd = ltkjMxjfxmzdService.getOne(wrapper2);
                    LambdaQueryWrapper<LtkjEjjfxmzd> 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);
                LtkjExamJcsqd jcsqd = new LtkjExamJcsqd();
                jcsqd.setTjh(tjOrder.getTjNumber());
                jcsqd.setTmh(tree.getSqdh());
                jcsqd.setJcxmid(tree.getHisXmdm());
                jcsqd.setJcxmmc(project.getHisXmmc());
                jcsqd.setSqsj(date);
                ltkjExamJcsqdService.save(jcsqd);
            }
            return true;
        }
        return false;
    }
    /**
     * 调用pacs申请单作废
     * @param sqdh 申请单号
     * @param czrid 操作人编码
     * @return
     */
    public boolean OrderDelete(String sqdh,String czrid){
        HashMap<String, Object> root = new HashMap<>();
        HashMap<String, Object> hashMap = new HashMap<>();
        LtkjJianchajianyanTree tree = ltkjJianchajianyanTreeService.getOne(new LambdaQueryWrapper<LtkjJianchajianyanTree>().eq(LtkjJianchajianyanTree::getSqdh, sqdh));
        String pationid = tree.getPationid();
        hashMap.put("PatientId",pationid);
        hashMap.put("PatType","P");
        hashMap.put("Operator",czrid);
        hashMap.put("HisID",sqdh);
        root.put("Root",hashMap);
        String result = HttpRequest.post("").body(XmlUtil.mapToXmlStr(root)).contentType("application/xml;charset:utf-8;").execute().body();
        Map<String, Object> map = XmlUtil.xmlToMap(result);
        if (map.get("Code").toString().equals("1")){
            ltkjJianchajianyanTreeService.removeById(tree);
            return true;
        }
        return false;
    }
}