From 79f9fbd9f999e26af3f0bca534d825eb687e092c Mon Sep 17 00:00:00 2001 From: zjh <1084500556@qq.com> Date: 星期三, 25 十二月 2024 08:47:24 +0800 Subject: [PATCH] 20241225 --- ltkj-admin/src/main/java/com/ltkj/web/controller/pacs/PacsApiMethodService.java | 217 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 214 insertions(+), 3 deletions(-) diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/pacs/PacsApiMethodService.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/pacs/PacsApiMethodService.java index f4d4e2b..fc7d4a7 100644 --- a/ltkj-admin/src/main/java/com/ltkj/web/controller/pacs/PacsApiMethodService.java +++ b/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; @@ -22,9 +27,13 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.io.ByteArrayOutputStream; +import java.io.IOException; import java.math.BigDecimal; +import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; +import javax.xml.soap.*; /** * @Company: 瑗垮畨璺嘲绉戞妧鏈夐檺鍏徃 @@ -48,6 +57,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 +144,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 +173,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 +235,196 @@ // exec usp_tjjk_pacsjg 鈥樹綋妫�鍙封�� // 璋冪敤鏇存柊鐘舵�侊細 // exec usp_tjjk_pacszt 鈥樹綋妫�鍙封�� + + + /** + * 璋冪敤pacs鐢宠鍗曟帹閫� + * xml浼犻�� + */ + public boolean OrderAdd(TjCustomer customer,TjOrder tjOrder){ + String hospbm = configService.selectConfigByKey("common_api_service_hospbm"); + + 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<>(); + + String xmlRequest = ""; + + MessageFactory messageFactory = null; + try { + // 鍒涘缓SOAP娑堟伅 + messageFactory = MessageFactory.newInstance(); + SOAPMessage soapMessage = messageFactory.createMessage(); + // 鍒涘缓SOAP Envelope + SOAPPart soapPart = soapMessage.getSOAPPart(); + SOAPEnvelope envelope = soapPart.getEnvelope(); + envelope.addNamespaceDeclaration("xmlns", "http://tempuri.org/"); + + // 鍒涘缓SOAP Body + SOAPBody soapBody = envelope.getBody(); + SOAPElement rootElement = soapBody.addChildElement("OrderAdd", "xmlns"); + rootElement.addChildElement("dataSourceName").addTextNode("hisDataSource"); + + // PatientInfor 閮ㄥ垎 + SOAPElement patientInfor = rootElement.addChildElement("PatientInfor"); + if (customer.getCusSex() == 0) patientInfor.addChildElement("PatientSex").addTextNode("M"); + else if (customer.getCusSex() == 1) patientInfor.addChildElement("PatientSex").addTextNode("F"); + else patientInfor.addChildElement("PatientSex").addTextNode("O"); + patientInfor.addChildElement("PatBirthday").addTextNode(new SimpleDateFormat("yyyy-MM-dd").format(customer.getCusBrithday())); + patientInfor.addChildElement("VisitNo").addTextNode(tjOrder.getTjNumber()); + patientInfor.addChildElement("PatientId").addTextNode(String.valueOf(customer.getCusId())); + patientInfor.addChildElement("HospitalID").addTextNode("shanxiqinxamjyy"); + patientInfor.addChildElement("IdCard").addTextNode(customer.getCusIdcard()); + patientInfor.addChildElement("PatientName").addTextNode(customer.getCusName()); + patientInfor.addChildElement("PatType").addTextNode("P"); + + // ExamItemList 閮ㄥ垎 + SOAPElement examItemList = rootElement.addChildElement("ExamItemList"); + + String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); + for (TjProject project : projects) { + SOAPElement examItem = examItemList.addChildElement("ExamItem"); + examItem.addChildElement("HisID").addTextNode(tjOrder.getTjNumber() + String.valueOf(project.getProId()).substring(String.valueOf(project.getProId()).length() - 4)); + examItem.addChildElement("EmergencyFlag").addTextNode("0"); + examItem.addChildElement("ExamItemID").addTextNode(project.getHisXmbm()); + examItem.addChildElement("ExamItemName").addTextNode(project.getHisXmmc()); + examItem.addChildElement("OrderDT").addTextNode(date); + SysDept dept = deptService.getById(project.getDeptId()); + examItem.addChildElement("Modality").addTextNode(dept.getModality()); + examItem.addChildElement("ChargeFlag").addTextNode("1"); + } + + // 淇濆瓨SOAP娑堟伅 + soapMessage.saveChanges(); + + // 鎵撳嵃鐢熸垚鐨凷OAP璇锋眰 + System.out.println("鐢熸垚鐨凷OAP璇锋眰鍐呭锛�"); + ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + soapMessage.writeTo(byteArrayOutputStream); + xmlRequest = byteArrayOutputStream.toString("UTF-8"); + } catch (SOAPException | IOException e) { + log.error("SOAP寮傚父 ->{}",String.valueOf(e)); + } + + +// 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",new SimpleDateFormat("yyyy-MM-dd").format(customer.getCusBrithday())); +// patientInfo.put("IdCard",customer.getCusIdcard()); +// patientInfo.put("hospitalid","chkwyy"); +// patientInfo.put("HospitalID",hospbm); +// +// HashMap<String, Object> examItemList = new HashMap<>(); +// List<Map<String, Object>> examItemsList = new ArrayList<>(); + 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()); +// // 鏀惰垂鏍囪瘑锛�1 鏄敹璐癸紝0 鏈敹璐� +// examItem.put("ChargeFlag", "1"); +// +// examItemsList.add(examItem); // 灏嗘瘡涓狤xamItem娣诲姞鍒伴泦鍚� +// } +// +// // 鏋勯�犳渶缁堢殑ExamItemList +// examItemList.put("ExamItem", examItemsList); +// hashMap.put("ExamItemList", examItemList); +// +// hashMap.put("PatientInfor", patientInfo); +// +// // 灏嗘暟鎹皝瑁呭埌鏍硅妭鐐� +// root.put("Root", hashMap); +// +// // 浣跨敤Hutool灏哅ap杞崲涓篨ML瀛楃涓� +// String xmlRequest = XmlUtil.mapToXmlStr(root); + + String result = "1"; + log.info("璋冪敤pacs浼犻�掑弬鏁扮殑鍊间负: "+xmlRequest); + 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; + } } -- Gitblit v1.8.0