|
@ -0,0 +1,279 @@
|
|
|
package com.yihu.hos.ws.thread;
|
|
|
|
|
|
import com.coreframework.remoting.Url;
|
|
|
import com.coreframework.remoting.reflect.InvokeRequest;
|
|
|
import com.coreframework.remoting.reflect.Rpc;
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
import com.mysql.fabric.proto.xmlrpc.XmlRpcClient;
|
|
|
import com.yihu.hos.config.Config;
|
|
|
import com.yihu.hos.resource.util.DateUtil;
|
|
|
import com.yihu.hos.resource.util.httpclient.HttpClientUtil;
|
|
|
import com.yihu.openplatform.service.AppKeyService;
|
|
|
import net.sf.json.JSONArray;
|
|
|
import net.sf.json.JSONObject;
|
|
|
import org.dom4j.Document;
|
|
|
import org.dom4j.DocumentHelper;
|
|
|
import org.dom4j.Element;
|
|
|
import org.dom4j.io.SAXReader;
|
|
|
|
|
|
import java.net.MalformedURLException;
|
|
|
import java.net.URL;
|
|
|
import java.util.*;
|
|
|
|
|
|
/**
|
|
|
* Created by lingfeng on 2016/6/23.
|
|
|
*/
|
|
|
public class PrescriptionThread extends Thread{
|
|
|
private HttpClientUtil httpClientUtil = new HttpClientUtil();
|
|
|
private Element data;
|
|
|
public PrescriptionThread(Element data){
|
|
|
this.data = data;
|
|
|
}
|
|
|
/*public void run() {
|
|
|
Map<String, Object> paramsMap = new HashMap<>();
|
|
|
Map<String, Object> params = new HashMap<>();
|
|
|
params.put("EventType", data.element("EventType").getText());
|
|
|
params.put("EventNo", data.element("EventNo").getText());
|
|
|
params.put("CardType", data.element("CardType").getText());
|
|
|
params.put("CardNo", data.element("CardNo").getText());
|
|
|
params.put("PatientId", data.element("PatientId").getText());
|
|
|
params.put("HospitalId", data.element("OrgCode").getText());
|
|
|
paramsMap.put("api", "17");
|
|
|
paramsMap.put("param", params.toString());
|
|
|
try {
|
|
|
String res = httpClientUtil.doPost("http://127.0.0.1:8081/gateway/transfer", paramsMap, null, null);
|
|
|
System.out.println(res);
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
}*/
|
|
|
|
|
|
public void run() {
|
|
|
Map<String, String> datasetMap = new HashMap<>();
|
|
|
datasetMap.put("HDSC01_15", "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n" +
|
|
|
"<Resp>\n" +
|
|
|
"<TransactionCode></TransactionCode>\n" +
|
|
|
"<RespCode>10000</RespCode>\n" +
|
|
|
"<RespMessage>成功</RespMessage>\n" +
|
|
|
"<Data>\n" +
|
|
|
"<Code>HDSC01_15</Code>\n" +
|
|
|
"<PatientId>123666</PatientId>\n" +
|
|
|
"<EventNo>123666</EventNo>\n" +
|
|
|
"<OrgCode>test</OrgCode>\n" +
|
|
|
"<CreateDate></CreateDate>" +
|
|
|
"<Data_1>" +
|
|
|
"<HDSA00_01_003>test</HDSA00_01_003>\n" +
|
|
|
"<PATIENT_ID>123666</PATIENT_ID>\n" +
|
|
|
"<HDSD03_01_031>123666</HDSD03_01_031>\n" +
|
|
|
"<HDSD00_04_002>123666</HDSD00_04_002>\n" +
|
|
|
"<JDSD00_04_008></JDSD00_04_008>\n" +
|
|
|
"<HDSD00_04_006></HDSD00_04_006>\n" +
|
|
|
"<HDSD00_04_013></HDSD00_04_013>\n" +
|
|
|
"<HDSD00_04_005></HDSD00_04_005>\n" +
|
|
|
"<JDSD00_04_001></JDSD00_04_001>\n" +
|
|
|
"<HDSD00_04_007></HDSD00_04_007>\n" +
|
|
|
"<JDSD00_04_002></JDSD00_04_002>\n" +
|
|
|
"<HDSD00_04_009></HDSD00_04_009>\n" +
|
|
|
"<JDSD00_04_003></JDSD00_04_003>\n" +
|
|
|
"<HDSD00_04_010></HDSD00_04_010>\n" +
|
|
|
"<JDSD00_04_004></JDSD00_04_004>\n" +
|
|
|
"<HDSD00_04_004></HDSD00_04_004>\n" +
|
|
|
"<JDSD00_04_009></JDSD00_04_009>\n" +
|
|
|
"<HDSD00_04_003></HDSD00_04_003>\n" +
|
|
|
"<HDSD00_04_001></HDSD00_04_001>\n" +
|
|
|
"<HDSD00_04_011></HDSD00_04_011>" +
|
|
|
"</Data_1>\n" +
|
|
|
"</Data>\n" +
|
|
|
"</Resp>");
|
|
|
datasetMap.put("HDSC01_04", "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n" +
|
|
|
"<Resp>\n" +
|
|
|
"<TransactionCode></TransactionCode>\n" +
|
|
|
"<RespCode>10000</RespCode>\n" +
|
|
|
"<RespMessage>成功</RespMessage>\n" +
|
|
|
"<Data>\n" +
|
|
|
"<Code>HDSC01_04</Code>\n" +
|
|
|
"<PatientId>123666</PatientId>\n" +
|
|
|
"<EventNo>123666</EventNo>\n" +
|
|
|
"<OrgCode>test</OrgCode>\n" +
|
|
|
"<CreateDate></CreateDate>" +
|
|
|
"<Data_1>" +
|
|
|
"<HDSD00_04_002>123666</HDSD00_04_002>\n" +
|
|
|
"<HDSD00_04_023></HDSD00_04_023>\n" +
|
|
|
"<HDSD00_04_021></HDSD00_04_021>\n" +
|
|
|
"<HDSD00_04_022></HDSD00_04_022>\n" +
|
|
|
"<HDSD00_04_024></HDSD00_04_024>\n" +
|
|
|
"<HDSD00_04_025></HDSD00_04_025>\n" +
|
|
|
"<HDSD00_04_026></HDSD00_04_026>\n" +
|
|
|
"<HDSB05_01_034></HDSB05_01_034>\n" +
|
|
|
"<HDSD00_04_027></HDSD00_04_027>\n" +
|
|
|
"<HDSD00_04_028></HDSD00_04_028>\n" +
|
|
|
"<HDSD00_04_012></HDSD00_04_012>" +
|
|
|
"</Data_1>\n" +
|
|
|
"</Data>\n" +
|
|
|
"</Resp>");
|
|
|
datasetMap.put("HDSC01_08", "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n" +
|
|
|
"<Resp>\n" +
|
|
|
"<TransactionCode></TransactionCode>\n" +
|
|
|
"<RespCode>10000</RespCode>\n" +
|
|
|
"<RespMessage>成功</RespMessage>\n" +
|
|
|
"<Data>\n" +
|
|
|
"<Code>HDSC01_08</Code>\n" +
|
|
|
"<PatientId>123666</PatientId>\n" +
|
|
|
"<EventNo>123666</EventNo>\n" +
|
|
|
"<OrgCode>test</OrgCode>\n" +
|
|
|
"<CreateDate></CreateDate>" +
|
|
|
"<Data_1>" +
|
|
|
"<HDSD00_04_002>123666</HDSD00_04_002>\n" +
|
|
|
"<HDSD00_04_008></HDSD00_04_008>\n" +
|
|
|
"<HDSD00_04_019></HDSD00_04_019>\n" +
|
|
|
"<HDSD00_04_035></HDSD00_04_035>\n" +
|
|
|
"<HDSD00_04_036></HDSD00_04_036>\n" +
|
|
|
"<HDSD00_04_023></HDSD00_04_023>\n" +
|
|
|
"<HDSD00_04_021></HDSD00_04_021>\n" +
|
|
|
"<HDSD00_04_022></HDSD00_04_022>\n" +
|
|
|
"<HDSD00_04_024></HDSD00_04_024>\n" +
|
|
|
"<HDSD00_04_025></HDSD00_04_025>\n" +
|
|
|
"<HDSD00_04_026></HDSD00_04_026>\n" +
|
|
|
"<HDSD00_04_027></HDSD00_04_027>\n" +
|
|
|
"<HDSB05_01_034></HDSB05_01_034>\n" +
|
|
|
"<HDSD00_04_028></HDSD00_04_028>\n" +
|
|
|
"<HDSD00_04_012></HDSD00_04_012>\n" +
|
|
|
"<HDSD00_04_031></HDSD00_04_031>\n" +
|
|
|
"<HDSD00_04_032></HDSD00_04_032>\n" +
|
|
|
"<HDSD00_04_033></HDSD00_04_033>\n" +
|
|
|
"<HDSD00_04_034></HDSD00_04_034>\n" +
|
|
|
"<HDSD00_04_030></HDSD00_04_030>" +
|
|
|
"</Data_1>\n" +
|
|
|
"</Data>\n" +
|
|
|
"</Resp>");
|
|
|
datasetMap.put("HDSC01_16", "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n" +
|
|
|
"<Resp>\n" +
|
|
|
"<TransactionCode></TransactionCode>\n" +
|
|
|
"<RespCode>10000</RespCode>\n" +
|
|
|
"<RespMessage>成功</RespMessage>\n" +
|
|
|
"<Data>\n" +
|
|
|
"<Code>HDSC01_08</Code>\n" +
|
|
|
"<PatientId>123666</PatientId>\n" +
|
|
|
"<EventNo>123666</EventNo>\n" +
|
|
|
"<OrgCode>test</OrgCode>\n" +
|
|
|
"<CreateDate></CreateDate>" +
|
|
|
"<Data_1>" +
|
|
|
"<HDSA00_01_003>test</HDSA00_01_003>\n" +
|
|
|
"<PATIENT_ID>123666</PATIENT_ID>\n" +
|
|
|
"<HDSA00_01_017>350181199101251517</HDSA00_01_017>\n" +
|
|
|
"<HDSD03_01_031>123666</HDSD03_01_031>\n" +
|
|
|
"<HDSD00_04_002>123666</HDSD00_04_002>\n" +
|
|
|
"<JDSD00_04_005></JDSD00_04_005>\n" +
|
|
|
"<JDSD00_04_006></JDSD00_04_006>\n" +
|
|
|
"<JDSD00_04_007></JDSD00_04_007>\n" +
|
|
|
"<JDSD00_04_010></JDSD00_04_010>" +
|
|
|
"</Data_1>\n" +
|
|
|
"</Data>\n" +
|
|
|
"</Resp>");
|
|
|
// InvokeRequest r = new InvokeRequest(new Url("127.0.0.1", 8891), "com.yihu.hos.service.basic", "GetPatientDataset", String.class);
|
|
|
// for (String datasetCode : datasetMap.keySet()) {
|
|
|
// r.add(String.class, "<Req>\n" +
|
|
|
// "<TransactionCode></TransactionCode>\n" +
|
|
|
// "<Data>\n" +
|
|
|
// "<PatientId>"+data.element("PatientId").getText()+"</PatientId>\n" +
|
|
|
// "<EventNo>"+data.element("EventNo").getText()+"</EventNo>\n" +
|
|
|
// "<DatasetCode>HDSC01_15</DatasetCode>\n" +
|
|
|
// "</Data>\n" +
|
|
|
// "</Req>");
|
|
|
//
|
|
|
// r.setSendTimeOutMills(3000);//设置默认的超时时间
|
|
|
// r.setSyncMode();//设置调用模式为同步模式
|
|
|
// try {
|
|
|
// Object s = Rpc.invoke(r);
|
|
|
// Document document = DocumentHelper.parseText(s.toString());
|
|
|
// Element root = document.getRootElement();
|
|
|
// Element respCode = root.element("RespCode");
|
|
|
// if (respCode.getText().equals("10000")) {
|
|
|
// datasetMap.put(datasetCode, s.toString());
|
|
|
// }
|
|
|
// System.out.println(s.toString());
|
|
|
// } catch (Exception e1) {
|
|
|
// e1.printStackTrace();
|
|
|
// }//调用并返回结果
|
|
|
// }
|
|
|
try {
|
|
|
for (String datasetCode : datasetMap.keySet()) {
|
|
|
String dataset = datasetMap.get(datasetCode);
|
|
|
Document document = DocumentHelper.parseText(dataset);
|
|
|
Element root = document.getRootElement();
|
|
|
Element data = root.element("Data");
|
|
|
Map<String, Object> params = new HashMap<>();
|
|
|
params.put("dataset", datasetCode);
|
|
|
params.put("data", XML2JsonData(data));
|
|
|
params.put("orgCode", data.element("OrgCode").getText());
|
|
|
String monogoResult = httpClientUtil.doPost(Config.monogoUrl, params, null, null);
|
|
|
if(monogoUrlValid(monogoResult, "处方mongo入库失败")) {
|
|
|
/**
|
|
|
* 上传
|
|
|
*/
|
|
|
params = new HashMap<String, Object>();
|
|
|
String jsonObject="{\"orgCode\":\""+data.element("OrgCode").getText()+"\",\"eventNo\":\""+data.element("EventNo").getText()+"\",\"patientId\":\""+data.element("PatientId").getText()+"\",\"referenceTime\":\""+data.element("CreateDate").getText()+"\"}";
|
|
|
params.put("patient", jsonObject);
|
|
|
httpClientUtil.doPost(Config.startCollect, params, null, null);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 采集完成推送
|
|
|
*/
|
|
|
AppKeyService.init(null, 3);
|
|
|
AppKeyService.setDebug(true);
|
|
|
HashMap<String, String> paramMap = new HashMap();
|
|
|
paramMap.put("type","35");//表示属于咨询的推送
|
|
|
// paramMap.put("appId","EsbCloud");//表示属于咨询的推送
|
|
|
paramMap.put("timestamp",new Date().getTime()+"");//表示属于咨询的推送
|
|
|
|
|
|
JSONObject jsonData=new JSONObject();//构造推送的数据
|
|
|
jsonData.put("operation", "1");
|
|
|
jsonData.put("uniqueId", "11113");
|
|
|
jsonData.put("org_code", data.element("OrgCode").getText());
|
|
|
jsonData.put("event_no", data.element("EventNo").getText());
|
|
|
jsonData.put("patientId", data.element("EventNo").getText());
|
|
|
paramMap.put("data", jsonData.toString());
|
|
|
Map result;
|
|
|
try {
|
|
|
result = AppKeyService.postToAllThirdParty(paramMap,"EsbCloud"); //paramMap为需要推送的参数,myt为调用者的appId
|
|
|
System.out.println(result);
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private static String XML2JsonData(Element data) throws Exception{
|
|
|
JSONArray object=new JSONArray();
|
|
|
try {
|
|
|
List<Element> datasetList = data.elements();
|
|
|
for (int i = 5; i < datasetList.size(); i++){
|
|
|
Element datasetElement = datasetList.get(i);
|
|
|
List<Element> metadataList = datasetElement.elements();
|
|
|
JSONObject jo = new JSONObject();
|
|
|
for (Element metadata : metadataList) {
|
|
|
if(metadata.hasContent()){
|
|
|
jo.put(metadata.getName(), metadata.getText());
|
|
|
}
|
|
|
}
|
|
|
object.add(jo);
|
|
|
}
|
|
|
}catch (Exception e){
|
|
|
throw new Exception("返回的xml转JSON错误");
|
|
|
}
|
|
|
return object.toString();
|
|
|
}
|
|
|
|
|
|
private boolean monogoUrlValid(String monogoUrl,String message) throws Exception {
|
|
|
JSONObject jo = JSONObject.fromObject(monogoUrl);
|
|
|
if ((Boolean) jo.get("successFlg")) {
|
|
|
return true;
|
|
|
} else {
|
|
|
throw new Exception(message+" --- "+jo.get("message").toString());
|
|
|
}
|
|
|
}
|
|
|
}
|