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("<","<").replaceAll(">",">"); } @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("<","<").replaceAll(">",">"); } } 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}