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 jodd.util.StringUtil; 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.security.PrivateKey; 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("InvokeRisService") public String InvokeRisService(String dataSourceName, String action, String message) { switch (StringUtil.toLowerCase(action) ) { case "qeryorder": return queryOrder(dataSourceName); break; case "updateorderstatus": updateOrderstatus(dataSourceName); break; case "reportverifyupload": return reportVerifyUpload(dataSourceName); break; } } 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()); // ArrayList> examItems = new ArrayList<>(); String examItems = ""; for (TjProject project : projects) { HashMap 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 += ""+ XmlUtil.mapToXmlStr(examItem) .replaceAll("","") .replaceAll("","") .replaceAll("","") .replaceAll("","") +""; } hashMap.put("ExamItemList", examItems); 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(">",">"); } }