Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/gxzyyf1/WebServiceClientHelper.java
===================================================================
diff -u
--- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/gxzyyf1/WebServiceClientHelper.java (revision 0)
+++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/gxzyyf1/WebServiceClientHelper.java (revision 27969)
@@ -0,0 +1,93 @@
+package com.forgon.disinfectsystem.datasynchronization.dao.gxzyyf1;
+
+import java.nio.charset.Charset;
+import org.apache.commons.lang.StringUtils;
+import org.apache.http.HttpEntity;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.http.util.EntityUtils;
+import org.apache.log4j.Logger;
+
+/**
+ * 广西中医药附一webservice帮助类
+ * @author ZhouPeiMian
+ * @since 2020-05-15
+ *
+ */
+public class WebServiceClientHelper {
+
+ public static Logger logger = Logger.getLogger(WebServiceClientHelper.class);
+
+ /**
+ * 构造接口输入参数
+ * @param transIdName
+ * @param arg
+ * @return
+ */
+ public static String buildInputString(String methodName , String... arg){
+ String inputXml = "";
+ if(StringUtils.equals(methodName, DatasyncConstant.MethodName_ClinicNumber)
+ || StringUtils.equals(methodName, DatasyncConstant.MethodName_HospitalNumber)){
+ StringBuffer inputXmlSB = new StringBuffer();
+ inputXmlSB.append("");
+ inputXmlSB.append("");
+ inputXmlSB.append("");
+ inputXmlSB.append("");
+ inputXmlSB.append("{\"method\": \"getPatientInfo\",\"patientid\":" + arg[0] + "}");
+ inputXmlSB.append("");
+ inputXmlSB.append("");
+ inputXmlSB.append("");
+ inputXml = inputXmlSB.toString();
+ } else {
+ throw new RuntimeException("不存在此方法:" + methodName);
+ }
+ return inputXml;
+ }
+
+ /**
+ * 使用SOAP1.2发送消息
+ *
+ * @param postUrl
+ * @param soapXml
+ * @param soapAction
+ * @return
+ */
+ public static String doPostSoap1_2(String postUrl, String soapXml, String soapAction) {
+ String retStr = "";
+ // 创建HttpClientBuilder
+ HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
+ // HttpClient
+ CloseableHttpClient closeableHttpClient = httpClientBuilder.build();
+ HttpPost httpPost = new HttpPost(postUrl);
+ // 设置请求和传输超时时间
+ RequestConfig requestConfig = RequestConfig.custom()
+ .setSocketTimeout(3000000)
+ .setConnectTimeout(3000000).build();
+ httpPost.setConfig(requestConfig);
+ try {
+ httpPost.setHeader("Content-Type", "application/soap+xml;charset=UTF-8;action=\"HIPMessageServer\"");
+ httpPost.setHeader("action", soapAction);
+ StringEntity data = new StringEntity(soapXml,Charset.forName("UTF-8"));
+ httpPost.setEntity(data);
+ CloseableHttpResponse response = closeableHttpClient.execute(httpPost);
+ HttpEntity httpEntity = response.getEntity();
+ if (httpEntity != null) {
+ // 打印响应内容
+ retStr = EntityUtils.toString(httpEntity, "UTF-8");
+ retStr = retStr.replaceAll("<", "<");
+ retStr = retStr.replaceAll(">", ">");
+ retStr = retStr.replaceAll(""", "\"");
+ }
+ // 释放资源
+ closeableHttpClient.close();
+ } catch (Exception e) {
+ logger.info("exception in doPostSoap1_2:" + e);
+ }
+ return retStr;
+ }
+
+}
Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/gxzyyf1/FindPatientInfoByHospitalNumDaoImpl.java
===================================================================
diff -u
--- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/gxzyyf1/FindPatientInfoByHospitalNumDaoImpl.java (revision 0)
+++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/gxzyyf1/FindPatientInfoByHospitalNumDaoImpl.java (revision 27969)
@@ -0,0 +1,116 @@
+package com.forgon.disinfectsystem.datasynchronization.dao.gxzyyf1;
+
+import net.sf.json.JSON;
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+import net.sf.json.xml.XMLSerializer;
+
+import org.apache.log4j.Logger;
+
+import com.forgon.disinfectsystem.datasynchronization.dao.FindPatientInfoByHospitalNumDao;
+import com.forgon.disinfectsystem.datasynchronization.model.PatientInfoVO;
+
+/**
+ * 根据住院号查询病人信息(广西中医药附一)
+ * @author ZhouPeiMian
+ * @since 2020-05-15
+ *
+ */
+public class FindPatientInfoByHospitalNumDaoImpl implements
+ FindPatientInfoByHospitalNumDao {
+
+ Logger logger = Logger.getLogger(FindPatientInfoByHospitalNumDaoImpl.class);
+
+ @Override
+ public PatientInfoVO[] findPatientInfoByHospitalNum(String hospitalNum) {
+ try {
+ String inputXml = WebServiceClientHelper.buildInputString(DatasyncConstant.MethodName_HospitalNumber, hospitalNum);
+ logger.info("住院号病人同步接口请求信息:" + inputXml);
+ String result = WebServiceClientHelper.doPostSoap1_2(DatasyncConstant.WebserviceAddress, inputXml, DatasyncConstant.MethodName_HospitalNumber);
+ /*String result = ""
+ + ""
+ + ""
+ + "{"ResultCode":0,"ErrorMsg":"成功","DATA":[{"hospitalNumber":"90095652","searialNumber":"2940336|3","patientName":"黄金凤","patientAge":"75","patientSex":"女 ","operationTime":"2020.05.14","patientIDCard":"450802194503102323","doctorName":"莫怡","patientArea":"骨科","roomNumber":"骨科","bedNumber":"GK028","remark":null,"washHandNurse":null,"circuitNurse":null,"opRoomId":null}]}"
+ + ""
+ + ""
+ + "";*/
+ logger.info("住院号病人同步接口返回信息:" + result);
+ int startIndex = result.indexOf("");
+ if(startIndex == -1){
+ return null;
+ }
+ int endIndex = result.indexOf("");
+ if(endIndex == -1 || endIndex < startIndex){
+ return null;
+ }
+ String xmlString = result.substring(startIndex + "".length(), endIndex);
+ XMLSerializer xmlSerializer = new XMLSerializer();
+ JSON json = xmlSerializer.read("" + xmlString + "");
+ JSONObject patientInfos = json.isArray() ? ((JSONArray)json).getJSONObject(0) : (JSONObject)json;
+ if(patientInfos != null){
+ if(patientInfos != null){
+ Integer status = patientInfos.optInt("ResultCode", 1);
+ if(DatasyncConstant.ResultCode_Fail.intValue() == status.intValue()){
+ logger.info("根据住院号查询病人信息失败:ResultCode = " + status + "; Message = " + patientInfos.optString("ErrorMsg"));
+ return null;
+ }
+ JSONArray patientInfoArr = patientInfos.optJSONArray("DATA");
+ if(patientInfoArr != null && patientInfoArr.size() > 0){
+ int i = 0;
+ PatientInfoVO[] patientInfoVOArray = new PatientInfoVO[patientInfoArr.size()];
+ for (Object object : patientInfoArr) {
+ JSONObject patientInfo = (JSONObject) object;
+ Object tNumber = patientInfo.opt("hospitalNumber");
+ Object patientName = patientInfo.opt("patientName");
+ Object patientAge = patientInfo.opt("patientAge");
+ Object patientSex = patientInfo.opt("patientSex");
+ Object patientIDCard = patientInfo.opt("patientIDCard");
+ Object doctorName = patientInfo.opt("doctorName");
+ Object operation = patientInfo.opt("operation");
+ Object opRoomId = patientInfo.opt("opRoomId");
+ Object operationTime = patientInfo.opt("operationTime");//
+ Object patientArea = patientInfo.opt("patientArea");
+ Object bedNumber = patientInfo.opt("bedNumber");
+ Object roomNumber = patientInfo.opt("roomNumber");
+ Object remark = patientInfo.opt("remark");
+
+ Object washHandNurse = patientInfo.opt("washHandNurse");
+ Object circuitNurse = patientInfo.opt("circuitNurse");
+
+ PatientInfoVO vo = new PatientInfoVO();
+ vo.setPatientNumber(tNumber instanceof String ? (String)tNumber : "");
+ vo.setPatientName(patientName instanceof String ? (String)patientName : "");
+ vo.setPatientAge(patientAge instanceof String ? (String)patientAge : "");
+ vo.setPatientSex(patientSex instanceof String ? ((String)patientSex).trim() : "");
+ vo.setPatientIDCard(patientIDCard instanceof String ? (String)patientIDCard : "");
+ vo.setDoctorName(doctorName instanceof String ? (String)doctorName : "");
+ vo.setOperation(operation instanceof String ? (String)operation : "");
+ vo.setOpRoomId(opRoomId instanceof String ? (String)opRoomId : "");
+ vo.setOperationTime(operationTime instanceof String ? ((String)operationTime).replace(".", "-") : "");
+ vo.setPatientArea(patientArea instanceof String ? (String)patientArea : "");
+ vo.setBedNumber(bedNumber instanceof String ? (String)bedNumber : "");
+ vo.setRoomNumber(roomNumber instanceof String ? (String)roomNumber : "");
+ vo.setRemark(remark instanceof String ? (String)remark : "");
+
+ vo.setWashHandNurse(washHandNurse instanceof String ? (String)washHandNurse : "");
+ vo.setCircuitNurse(circuitNurse instanceof String ? (String)circuitNurse : "");
+ patientInfoVOArray[i++] = vo;
+ }
+ return patientInfoVOArray;
+ }
+ }
+ }
+ } catch (Exception e) {
+ logger.error("根据住院号查询病人信息失败" + e);
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ @Override
+ public PatientInfoVO[] findPatientInfoByHospitalNumBeforeOperation(
+ String clinicNumber) {
+ return null;
+ }
+
+}
Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/gxzyyf1/DatasyncConstant.java
===================================================================
diff -u
--- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/gxzyyf1/DatasyncConstant.java (revision 0)
+++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/gxzyyf1/DatasyncConstant.java (revision 27969)
@@ -0,0 +1,36 @@
+package com.forgon.disinfectsystem.datasynchronization.dao.gxzyyf1;
+
+/**
+ * 广西中医药附一接口相关常量
+ * @author ZhouPeiMian
+ * @since 2020-05-15
+ *
+ */
+public class DatasyncConstant {
+
+ /**
+ * Webservice地址
+ */
+ public final static String WebserviceAddress = "http://192.168.211.108:8080/axis/HIS2.jws?wsdl";
+
+ /**
+ * 按诊疗号查询病人信息的接口方法名
+ */
+ public final static String MethodName_ClinicNumber = "call";
+
+ /**
+ * 按住院号查询病人信息的接口方法名
+ */
+ public final static String MethodName_HospitalNumber = "call ";
+
+ /**
+ * 病人信息查询成功标识
+ */
+ public final static Integer ResultCode_Success = 0;
+
+ /**
+ * 病人信息查询失败标识
+ */
+ public final static Integer ResultCode_Fail = 1;
+
+}
Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/gxzyyf1/FindPatientInfoByTreatmentNumDaoImpl.java
===================================================================
diff -u
--- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/gxzyyf1/FindPatientInfoByTreatmentNumDaoImpl.java (revision 0)
+++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/gxzyyf1/FindPatientInfoByTreatmentNumDaoImpl.java (revision 27969)
@@ -0,0 +1,104 @@
+package com.forgon.disinfectsystem.datasynchronization.dao.gxzyyf1;
+
+import net.sf.json.JSON;
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+import net.sf.json.xml.XMLSerializer;
+
+import org.apache.log4j.Logger;
+
+import com.forgon.disinfectsystem.datasynchronization.dao.FindPatientInfoByTreatmentNumDao;
+import com.forgon.disinfectsystem.datasynchronization.model.PatientInfoVO;
+
+/**
+ * 根据诊疗号查询病人信息(广西中医药附一)
+ * @author ZhouPeiMian
+ * @since 2020-05-15
+ *
+ */
+public class FindPatientInfoByTreatmentNumDaoImpl implements
+ FindPatientInfoByTreatmentNumDao {
+
+ Logger logger = Logger.getLogger(FindPatientInfoByTreatmentNumDaoImpl.class);
+
+ @Override
+ public PatientInfoVO[] findPatientInfoByTreatmentNum(String clinicNumber) {
+ try {
+ String inputXml = WebServiceClientHelper.buildInputString(DatasyncConstant.MethodName_ClinicNumber, clinicNumber);
+ logger.info("诊疗号病人同步接口请求信息:" + inputXml);
+ String result = WebServiceClientHelper.doPostSoap1_2(DatasyncConstant.WebserviceAddress, inputXml, DatasyncConstant.MethodName_HospitalNumber);
+ /*String result = ""
+ + ""
+ + ""
+ + "{\"ResultCode\":0,\"ErrorMsg\":\"成功\",\"DATA\":[{\"hospitalNumber\":\"90091265\",\"searialNumber\":\"277816|41\",\"patientName\":\"姚业英\",\"patientAge\":\"56\",\"patientSex\":\"女 \",\"operationTime\":\"2020.04.28\",\"patientIDCard\":\"450105196311220042\",\"doctorName\":\"杨朔\",\"patientArea\":\"心血管内科二区\",\"roomNumber\":\"心血管内科二区\",\"bedNumber\":\"XXG031\",\"remark\":null,\"washHandNurse\":null,\"circuitNurse\":null,\"opRoomId\":null}]}"
+ + ""
+ + ""
+ + "";*/
+ logger.info("诊疗号病人同步接口返回信息:" + result);
+ int startIndex = result.indexOf("");
+ if(startIndex == -1){
+ return null;
+ }
+ int endIndex = result.indexOf("");
+ if(endIndex == -1 || endIndex < startIndex){
+ return null;
+ }
+ String xmlString = result.substring(startIndex + "".length(), endIndex);
+ XMLSerializer xmlSerializer = new XMLSerializer();
+ JSON json = xmlSerializer.read("" + xmlString + "");
+ JSONObject patientInfos = json.isArray() ? ((JSONArray)json).getJSONObject(0) : (JSONObject)json;
+ if(patientInfos != null){
+ if(patientInfos != null){
+ Integer status = patientInfos.optInt("ResultCode", 1);
+ if(DatasyncConstant.ResultCode_Fail.intValue() == status.intValue()){
+ logger.info("根据诊疗号查询病人信息失败:ResultCode = " + status + "; Message = " + patientInfos.optString("ErrorMsg"));
+ return null;
+ }
+ JSONArray patientInfoArr = patientInfos.optJSONArray("DATA");
+ if(patientInfoArr != null && patientInfoArr.size() > 0){
+ int i = 0;
+ PatientInfoVO[] patientInfoVOArray = new PatientInfoVO[patientInfoArr.size()];
+ for (Object object : patientInfoArr) {
+ JSONObject patientInfo = (JSONObject) object;
+ Object tNumber = patientInfo.opt("hospitalNumber");
+ Object patientName = patientInfo.opt("patientName");
+ Object patientAge = patientInfo.opt("patientAge");
+ Object patientSex = patientInfo.opt("patientSex");
+ Object patientIDCard = patientInfo.opt("patientIDCard");
+ Object doctorName = patientInfo.opt("doctorName");
+ Object operation = patientInfo.opt("operation");
+ Object operationTime = patientInfo.opt("operationTime");
+ Object patientArea = patientInfo.opt("patientArea");
+ Object bedNumber = patientInfo.opt("bedNumber");
+ Object roomNumber = patientInfo.opt("roomNumber");
+ Object remark = patientInfo.opt("remark");
+
+ PatientInfoVO vo = new PatientInfoVO();
+ vo.setPatientNumber(tNumber instanceof String ? (String)tNumber : "");
+ vo.setClinicNumber(vo.getPatientNumber());
+ vo.setPatientName(patientName instanceof String ? (String)patientName : "");
+ vo.setPatientAge(patientAge instanceof String ? (String)patientAge : "");
+ vo.setPatientIDCard(patientIDCard instanceof String ? (String)patientIDCard : "");
+ vo.setDoctorName(doctorName instanceof String ? (String)doctorName : "");
+ vo.setOperation(operation instanceof String ? (String)operation : "");
+ vo.setOperationTime(operationTime instanceof String ? ((String)operationTime).replace(".", "-") : "");
+ vo.setPatientArea(patientArea instanceof String ? (String)patientArea : "");
+ vo.setBedNumber(bedNumber instanceof String ? (String)bedNumber : "");
+ vo.setRoomNumber(roomNumber instanceof String ? (String)roomNumber : "");
+ vo.setRemark(remark instanceof String ? (String)remark : "");
+ vo.setPatientSex(patientSex instanceof String ? ((String)patientSex).trim() : "");
+
+ patientInfoVOArray[i++] = vo;
+ }
+ return patientInfoVOArray;
+ }
+ }
+ }
+ } catch (Exception e) {
+ logger.error("根据诊疗号查询病人信息失败" + e);
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+}