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 com.sun.jna.platform.win32.WinDef; import com.sun.org.apache.xpath.internal.operations.Bool; import jodd.util.StringUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.security.PrivateKey; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; /** * @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; @Autowired private PacsApiMethodService pacsApiMethodService; // 体检开检查申请单调用此接口推送给pacs服务 public boolean OrderAdd(String tjNumber) { try { //从体检数据库中查询出申请单数据 调用 pacs webservice 接口 OrderAdd实现申请单推送 HashMap hashMap = new HashMap<>(); if (true){ HashMap result = new HashMap<>(); // result.put("PatientId",0); // result.put("PatType","PatType"); // result.put("Operator","Operator"); // result.put("HisID","HisID"); hashMap.put("Root",result); } return ComSjyjtPacs(XmlUtil.mapToXmlStr(hashMap)); }catch (Exception ex) { return false; } } // 体检撤销申请单后调用此接口撤销pacs申请单 public boolean OrderDelete(String tjNumber) { //入参字段 // HIS或体检病人ID // 病人类型 // 操作人工号 // HIS或体检申请单号 try { //从体检数据库中查询出申请单数据 调用 pacs webservice 接口 OrderAdd实现申请单推送 HashMap hashMap = new HashMap<>(); if (null == null){ HashMap result = new HashMap<>(); result.put("PatientId",0); result.put("PatType","PatType"); result.put("Operator","Operator"); result.put("HisID","HisID"); hashMap.put("Root",result); } return ComSjyjtPacs(XmlUtil.mapToXmlStr(hashMap)); }catch (Exception ex) { return false; } } // 陕健医集团调用pacs接口Webservice public boolean ComSjyjtPacs(String inputLine) { String apiUrl = "http://100.100.100.222:8000/WebInterfaceService.asmx"; // 替换为你的API URL try { URL url = new URL(apiUrl); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); int responseCode = connection.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); // 打印结果 System.out.println(response.toString()); } else { // System.out.println("ComSjyjtPacs陕健医集团调用pacs接口Webservice调用失败!”); } } catch (Exception e) { e.printStackTrace(); } return true; } @PostMapping("InvokeRisService") public String InvokeRisService(String dataSourceName, String action, String message) { String rusue=null; switch (StringUtil.toLowerCase(action) ) { case "qeryorder": rusue= queryOrder(dataSourceName); break; case "updateorderstatus": rusue= updateOrderstatus(dataSourceName); break; case "reportverifyupload": rusue= reportVerifyUpload(dataSourceName); break; } HashMap hashMap = new HashMap<>(); // 执行状态 执行状态 1 成功, 0失败 // 结果消息 HashMap result = new HashMap<>(); if(rusue==null) { result.put("Code", 1); result.put("Message", "接口成功"); } else { result.put("Code", 0); result.put("Message", rusue); } hashMap.put("ResultInfor", result); return XmlUtil.mapToXmlStr(hashMap); } private String updateOrderstatus(@RequestBody String json) { // HIS或体检病人ID // 病人类型 // 操作人工号 // HIS或体检申请单号 // 单据状态 Map map = XmlUtil.xmlToMap(json); JSONObject parseObj = JSONUtil.parseObj(map); String msgStr = ""; //必填HIS或体检病人ID String PatientId = parseObj.getStr("PatientId"); // 必填 病人类型病人类型O:门诊,I:住院,P:体检 String PatType = parseObj.getStr("PatType"); // 必填 操作人工号 String Operator = parseObj.getStr("Operator"); // 必填 HIS或体检申请单号 String HisID = parseObj.getStr("HisID"); // 必填 单据状态 单据状态 1已登记,0取消登记 String OrderStatus = parseObj.getStr("OrderStatus"); if (PatientId == "") { msgStr = msgStr + "HIS或体检病人ID未填写 ; "; } if (PatType == "") { msgStr = msgStr + "病人类型未填写 ; "; } if (Operator == "") { msgStr = msgStr + "操作人工号未填写 ; "; } if (HisID == "") { msgStr = msgStr + "HIS或体检申请单号未填写 ; "; } if (OrderStatus == "") { msgStr = msgStr + "单据状态未填写 ; "; } HashMap hashMap = new HashMap<>(); // 执行状态 执行状态 1 成功, 0失败 // 结果消息 HashMap result = new HashMap<>(); if(msgStr=="") { result.put("Code", 1); result.put("Message", "接口成功"); } else { result.put("Code", 0); result.put("Message", msgStr); } hashMap.put("ResultInfor", result); return XmlUtil.mapToXmlStr(hashMap); } // @PostMapping("QueryOrder") private String queryOrder(@RequestBody String json){ Map 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 hashMap = new HashMap<>(); if (customer == null){ HashMap result = new HashMap<>(); result.put("Code",0); result.put("Message","未查询到人员信息"); hashMap.put("ResultInfor",result); return XmlUtil.mapToXmlStr(hashMap); } List list = tjOrderService.list(new LambdaQueryWrapper().eq(TjOrder::getUserId, customer.getCusId()).orderByDesc(TjOrder::getCreateTime)); if (list.isEmpty()){ HashMap result = new HashMap<>(); result.put("Code",0); result.put("Message","未查询到记录信息"); hashMap.put("ResultInfor",result); return XmlUtil.mapToXmlStr(hashMap); } TjOrder tjOrder = list.get(0); List detailList = transitionService.getTbTransitionListByCusId(customer.getCusIdcard(), tjOrder.getCardId()); 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); HashMap 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 = ""; HashMap examItem = new HashMap<>(); List> lists = new ArrayList<>(); for (TjProject project : projects) { HashMap examItems = new HashMap<>(); examItems.put("HisID", tjOrder.getTjNumber() + String.valueOf(project.getProId()).substring(String.valueOf(project.getProId()).length() - 4)); examItems.put("EmergencyFlag", "0"); examItems.put("ExamItemID", project.getHisXmbm()); examItems.put("ExamItemName", project.getHisXmmc()); examItems.put("OrderDT", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(tjOrder.getCreateTime())); SysDept dept = deptService.getById(project.getDeptId()); examItems.put("Modality", dept.getModality()); // examItems += ""+ // XmlUtil.mapToXmlStr(examItem) // .replaceAll("","") // .replaceAll("","") // .replaceAll("","") // .replaceAll("","") // +""; lists.add(examItems); } examItem.put("ExamItem",list); hashMap.put("ExamItemList", examItem); hashMap.put("PatientInfor",patientInfo); HashMap result = new HashMap<>(); result.put("Code",1); result.put("Message","查询成功"); hashMap.put("ResultInfor",result); return XmlUtil.mapToXmlStr(hashMap) .replaceAll("<","<").replaceAll(">",">"); } //@PostMapping("ReportVerifyUpload") private String reportVerifyUpload(@RequestBody String json){ Map map = XmlUtil.xmlToMap(json); HashMap reportInfor = (HashMap) 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(); // 如果返回格式为 // // HIS或体检申请单号 // HIS或体检申请单号 // HIS或体检申请单号 // HashMap hashMap = (HashMap) map.get("ApplyInfos"); ArrayList strings = (ArrayList) hashMap.get("HisID"); for (String s : strings) { LtkjExamJcsqd jcsqd = ltkjExamJcsqdService.getOne(new LambdaQueryWrapper().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 result = new HashMap<>(); result.put("Code",1); result.put("Message","查询成功"); return XmlUtil.mapToXmlStr(hashMap) .replaceAll("<","<").replaceAll(">",">"); } @GetMapping("test") public String test(){ TjCustomer tjCustomer = customerService.getById(1870373229901938690L); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(TjOrder::getUserId,tjCustomer.getCusId()); TjOrder order = tjOrderService.getOne(wrapper); pacsApiMethodService.OrderAdd(tjCustomer,order); return "1111"; } }