zhaowenxuan
2024-12-02 b98bda282397df60077efbe4c1ad35a44bdfffb9
2024-12-02
6个文件已修改
1个文件已添加
343 ■■■■■ 已修改文件
ltkj-admin/src/main/java/com/ltkj/web/controller/pacs/PacsApiMethodService.java 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/pacs/PacsServiceController.java 195 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysRoleController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-common/src/main/java/com/ltkj/common/core/domain/entity/SysDept.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-framework/src/main/java/com/ltkj/framework/config/SecurityConfig.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-framework/src/main/java/com/ltkj/framework/config/WebConfig.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-system/src/main/resources/mapper/system/SysDeptMapper.xml 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/pacs/PacsApiMethodService.java
@@ -4,17 +4,21 @@
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;
@@ -24,6 +28,7 @@
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@@ -51,6 +56,12 @@
    private LtkjJianchajianyanTreeService ltkjJianchajianyanTreeService;
    @Autowired
    private ISysConfigService configService;
    @Autowired
    private ITbTransitionService transitionService;
    @Autowired
    private ITjOrderService tjOrderService;
    @Autowired
    private LtkjExamJcsqdService ltkjExamJcsqdService;
    /**
@@ -221,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;
    }
}
ltkj-admin/src/main/java/com/ltkj/web/controller/pacs/PacsServiceController.java
New file
@@ -0,0 +1,195 @@
package com.ltkj.web.controller.pacs;
import cn.hutool.core.util.XmlUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ltkj.common.core.domain.entity.SysDept;
import com.ltkj.hosp.domain.TbTransition;
import com.ltkj.hosp.domain.TjCustomer;
import com.ltkj.hosp.domain.TjOrder;
import com.ltkj.hosp.domain.TjProject;
import com.ltkj.hosp.service.*;
import com.ltkj.hosp.sqlDomain.LtkjExamJcbgd;
import com.ltkj.hosp.sqlDomain.LtkjExamJcsqd;
import com.ltkj.system.service.ISysDeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
 * @Company: 西安路泰科技有限公司
 * @Author: zhaowenxuan
 * @Date: 2024/12/2 14:36
 */
@RestController
@RequestMapping("/pacs/InvokeRisService")
public class PacsServiceController {
    @Autowired
    private ISysDeptService deptService;
    @Autowired
    private ITjProjectService projectService;
    @Autowired
    private ITbTransitionService transitionService;
    @Autowired
    private ITjCustomerService customerService;
    @Autowired
    private ITjOrderService tjOrderService;
    @Autowired
    private LtkjExamJcsqdService ltkjExamJcsqdService;
    @Autowired
    private LtkjExamJcbgdService ltkjExamJcbgdService;
    @PostMapping("QueryOrder")
    public String queryOrder(@RequestBody String json){
        Map<String, Object> map = XmlUtil.xmlToMap(json);
        JSONObject parseObj = JSONUtil.parseObj(map);
        String hospitalID = parseObj.getStr("HospitalID");
        // 必填 查询ID,根据IDType给
        String queryID = parseObj.getStr("QueryID");
        // 必填 ID类别 1病人id,2申请单号,根据业务情况可以扩展其他类型。
        String idType = parseObj.getStr("IDType");
        // 非必填 病人类型O:门诊,I:住院,P:体检
        String patType = parseObj.getStr("PatType");
        // 非必填 检查类别:US(超声)、ES(内镜)、CT、CR、DX等
        String modality = parseObj.getStr("Modality");
        // 必填 申请单状态:1已登记,0 未登记,2.全部
        String orderSatus = parseObj.getStr("OrderSatus");
        TjCustomer customer = null;
        switch (idType){
            case "1":
                customer = customerService.getById(queryID);
        }
        HashMap<String, Object> hashMap = new HashMap<>();
        if (customer == null){
            HashMap<String, Object> result = new HashMap<>();
            result.put("Code",500);
            result.put("Message","未查询到人员信息");
            hashMap.put("ResultInfor",result);
            return XmlUtil.mapToXmlStr(hashMap);
        }
        List<TjOrder> list = tjOrderService.list(new LambdaQueryWrapper<TjOrder>().eq(TjOrder::getUserId, customer.getCusId()).orderByDesc(TjOrder::getCreateTime));
        if (list.isEmpty()){
            HashMap<String, Object> result = new HashMap<>();
            result.put("Code",500);
            result.put("Message","未查询到记录信息");
            hashMap.put("ResultInfor",result);
            return XmlUtil.mapToXmlStr(hashMap);
        }
        TjOrder tjOrder = list.get(0);
        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> 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());
//        ArrayList<HashMap<String, Object>> examItems = new ArrayList<>();
        String examItems = "";
        for (TjProject project : projects) {
            HashMap<String, Object> examItem = new HashMap<>();
            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", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(tjOrder.getCreateTime()));
            SysDept dept = deptService.getById(project.getDeptId());
            examItem.put("Modality", dept.getModality());
            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("ExamItemList", examItems);
        hashMap.put("PatientInfor",patientInfo);
        HashMap<String, Object> result = new HashMap<>();
        result.put("Code",1);
        result.put("Message","查询成功");
        hashMap.put("ResultInfor",result);
        return XmlUtil.mapToXmlStr(hashMap)
                .replaceAll("&lt;","<").replaceAll("&gt;",">");
    }
    @PostMapping("ReportVerifyUpload")
    public String reportVerifyUpload(@RequestBody String json){
        Map<String, Object> map = XmlUtil.xmlToMap(json);
        HashMap<String, Object> reportInfor = (HashMap<String, Object>) map.get("ReportInfor");
        // cus_id
        String patientId = reportInfor.get("PatientId").toString();
        String reportID = reportInfor.get("ReportID").toString();
        // 报告医生
        String reportDR = reportInfor.get("ReportDR").toString();
        // 报告医生id
        String reportDRCode = reportInfor.get("ReportDRCode").toString();
        // 报告时间
        String reportDT = reportInfor.get("ReportDT").toString();
        // 审核医师
        String verifyDR = reportInfor.get("VerifyDR").toString();
        // 审核医师编号
        String verifyDRCode = reportInfor.get("VerifyDRCode").toString();
        // 审核时间
        String verifyDT = reportInfor.get("VerifyDT").toString();
        // 检查所见
        String studyResult = reportInfor.get("StudyResult").toString();
        // 诊断结果
        String diagResult = reportInfor.get("DiagResult").toString();
        // 如果返回格式为
//        <ApplyInfos>
//          <HisID>HIS或体检申请单号</HisID>
//          <HisID>HIS或体检申请单号</HisID>
//          <HisID>HIS或体检申请单号</HisID>
//      </ApplyInfos>
        HashMap<String, Object> hashMap = (HashMap<String, Object>) map.get("ApplyInfos");
        ArrayList<String> strings = (ArrayList<String>) hashMap.get("HisID");
        for (String s : strings) {
            LtkjExamJcsqd jcsqd = ltkjExamJcsqdService.getOne(new LambdaQueryWrapper<LtkjExamJcsqd>().eq(LtkjExamJcsqd::getTmh, s));
            LtkjExamJcbgd jcbgd = new LtkjExamJcbgd();
            jcbgd.setTjh(jcsqd.getTjh());
            jcbgd.setTmh(s);
            jcbgd.setXmdm(jcsqd.getJcxmid());
            jcbgd.setXmmc(jcsqd.getJcxmmc());
            jcbgd.setBgNr(diagResult);
            jcbgd.setShysxm(verifyDR);
            jcbgd.setShysdm(verifyDRCode);
            jcbgd.setYxzd(studyResult);
            jcbgd.setYxbx(diagResult);
            jcbgd.setZdsj(reportDT);
            jcbgd.setSqsj(jcsqd.getSqsj());
            jcbgd.setJcbw(jcsqd.getJcxmmc());
            ltkjExamJcbgdService.save(jcbgd);
            jcsqd.setBgys(reportDR);
            jcsqd.setBgysid(reportDRCode);
            jcsqd.setJgsj(reportDT);
            jcsqd.setBw(jcsqd.getJcxmmc());
            jcsqd.setJgzt(studyResult);
            jcsqd.setJgbx(diagResult);
            ltkjExamJcsqdService.updateById(jcsqd);
        }
        HashMap<String, Object> result = new HashMap<>();
        result.put("Code",1);
        result.put("Message","查询成功");
        return XmlUtil.mapToXmlStr(hashMap)
                .replaceAll("&lt;","<").replaceAll("&gt;",">");
    }
}
ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysRoleController.java
@@ -181,6 +181,10 @@
    public TableDataInfo allocatedList(SysUser user) {
        startPage();
        List<SysUser> list = userService.selectAllocatedList(user);
        for (SysUser sysUser : list) {
            SysDept dept = deptService.getById(sysUser.getDeptId());
            sysUser.setDept(dept);
        }
        return getDataTable(list);
    }
ltkj-common/src/main/java/com/ltkj/common/core/domain/entity/SysDept.java
@@ -217,6 +217,8 @@
    @TableField(exist = false)
    private List<SysDept> children = new ArrayList<SysDept>();
    private String modality;
    public Long getDeptId() {
        return deptId;
    }
ltkj-framework/src/main/java/com/ltkj/framework/config/SecurityConfig.java
@@ -116,7 +116,7 @@
                // 静态资源,可匿名访问
                .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
                .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
                .antMatchers("/jmreport/**","/lis/**").anonymous()
                .antMatchers("/jmreport/**","/lis/**","/pacs/**").anonymous()
                // 除上面外的所有请求全部需要鉴权认证
                .anyRequest().authenticated()
                .and()
ltkj-framework/src/main/java/com/ltkj/framework/config/WebConfig.java
@@ -21,7 +21,7 @@
                        "/cus/package/getPackageList",
                        "/cus/package/projectListByPacId/**",
                        "/cus/hospital/getHospList",
                        "/lis/**","/api/His/**"
                        "/lis/**","/api/His/**","/pacs/**"
                });
    }
}
ltkj-system/src/main/resources/mapper/system/SysDeptMapper.xml
@@ -43,6 +43,7 @@
        <result property="standardDeptCode" column="standard_dept_code"/>
        <result property="deptTypeCode" column="dept_type_code"/>
        <result property="deptFcusTypeCode" column="dept_fcus_type_code"/>
        <result property="modality" column="modality"/>
    </resultMap>
    <sql id="selectDeptVo">
@@ -79,7 +80,8 @@
               d.peofile,
               d.standard_dept_code,
               d.dept_type_code,
               d.dept_fcus_type_code
               d.dept_fcus_type_code,
               d.modality
        from sys_dept d
    </sql>
@@ -200,6 +202,7 @@
        <if test="deptFcusTypeCode != null">dept_fcus_type_code,</if>
        <if test="createBy != null and createBy != ''">create_by,</if>
        <if test="modality != null and modality != ''">modality,</if>
        create_time
        )values(
        <if test="deptId != null and deptId != 0">#{deptId},</if>
@@ -236,6 +239,7 @@
        <if test="deptFcusTypeCode != null">#{deptFcusTypeCode},</if>
        <if test="createBy != null and createBy != ''">#{createBy},</if>
        <if test="modality != null and modality != ''">#{modality},</if>
        sysdate()
        )
    </insert>
@@ -277,6 +281,7 @@
            <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
            <if test="modality != null and modality != ''">modality = #{modality},</if>
            update_time = sysdate()
        </set>
        where dept_id = #{deptId}