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<String, Object> hashMap = new HashMap<>();
|
if (true){
|
HashMap<String, Object> 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)
|
{
|
//入参字段
|
// <PatientId> HIS或体检病人ID </PatientId>
|
// <PatType>病人类型</PatType >
|
// <Operator>操作人工号</Operator>
|
// <HisID>HIS或体检申请单号</HisID>
|
try {
|
//从体检数据库中查询出申请单数据 调用 pacs webservice 接口 OrderAdd实现申请单推送
|
|
HashMap<String, Object> hashMap = new HashMap<>();
|
if (null == null){
|
HashMap<String, Object> 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<String, Object> hashMap = new HashMap<>();
|
// <Code>执行状态 执行状态 1 成功, 0失败</Code>
|
// <Message>结果消息</Message>
|
HashMap<String, Object> 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) {
|
// <PatientId> HIS或体检病人ID </PatientId>
|
// <PatType>病人类型</PatType >
|
// <Operator>操作人工号</Operator>
|
// <HisID>HIS或体检申请单号</HisID>
|
// <OrderStatus>单据状态</OrderStatus>
|
Map<String, Object> 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<String, Object> hashMap = new HashMap<>();
|
// <Code>执行状态 执行状态 1 成功, 0失败</Code>
|
// <Message>结果消息</Message>
|
HashMap<String, Object> 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<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",0);
|
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",0);
|
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());
|
|
// String examItems = "";
|
HashMap<String, Object> examItem = new HashMap<>();
|
List<Map<String,Object>> lists = new ArrayList<>();
|
for (TjProject project : projects) {
|
HashMap<String, Object> 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 += "<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>";
|
lists.add(examItems);
|
}
|
examItem.put("ExamItem",list);
|
hashMap.put("ExamItemList", examItem);
|
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")
|
private 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(">",">");
|
}
|
|
@GetMapping("test")
|
public String test(){
|
TjCustomer tjCustomer = customerService.getById(1870373229901938690L);
|
LambdaQueryWrapper<TjOrder> wrapper = new LambdaQueryWrapper<>();
|
wrapper.eq(TjOrder::getUserId,tjCustomer.getCusId());
|
TjOrder order = tjOrderService.getOne(wrapper);
|
pacsApiMethodService.OrderAdd(tjCustomer,order);
|
return "1111";
|
}
|
}
|