Index: ssts-datasync/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/SyncDataFromHIPDao.java
===================================================================
diff -u -r27131 -r27486
--- ssts-datasync/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/SyncDataFromHIPDao.java (.../SyncDataFromHIPDao.java) (revision 27131)
+++ ssts-datasync/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/SyncDataFromHIPDao.java (.../SyncDataFromHIPDao.java) (revision 27486)
@@ -3,6 +3,7 @@
import java.util.List;
import com.forgon.disinfectsystem.datasynchronization.model.OrgUnitVo;
+import com.forgon.disinfectsystem.datasynchronization.model.PatientInfoVO;
import com.forgon.disinfectsystem.datasynchronization.model.UserVo;
import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance;
import com.forgon.disinfectsystem.entity.operationreservation.OperationReservation;
@@ -54,5 +55,12 @@
* @return
*/
public TousseInstance tousseDetailQuery(String xmlStr);
+
+ /**
+ * 根据住院号查询病人信息
+ * @param hospitalNum
+ * @return
+ */
+ public PatientInfoVO findPatientInfoByHospitalNum(String hospitalNum);
}
Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/dysrmyy/HIPMessageWebServiceImpl.java
===================================================================
diff -u -r27131 -r27486
--- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/dysrmyy/HIPMessageWebServiceImpl.java (.../HIPMessageWebServiceImpl.java) (revision 27131)
+++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/dysrmyy/HIPMessageWebServiceImpl.java (.../HIPMessageWebServiceImpl.java) (revision 27486)
@@ -80,18 +80,20 @@
// 同步到数据库中
dataSynchronizationManager.processSyncOrgUnitData(new OrgUnitVo[] {orgUnitVo});
}
- String returnMsg = ""
- + ""
- + " "
- + " "
- + " "
- + " "
- + " -
"
- + " "
- + " -
"
- + " "
- + " "
- + " ";
+ StringBuilder returnMsgSB = new StringBuilder();
+ returnMsgSB.append("");
+ returnMsgSB.append("");
+ returnMsgSB.append(" ");
+ returnMsgSB.append(" ");
+ returnMsgSB.append(" ");
+ returnMsgSB.append(" ");
+ returnMsgSB.append(" -
");
+ returnMsgSB.append(" ");
+ returnMsgSB.append(" -
");
+ returnMsgSB.append(" ");
+ returnMsgSB.append(" ");
+ returnMsgSB.append(" ");
+ String returnMsg = returnMsgSB.toString();
logger.info("organizationInfoRegister ---> " + returnMsg);
return returnMsg;
}
@@ -191,16 +193,12 @@
if (bd instanceof TousseInstance) {
// 1、查询器械包实例
TousseInstance tousseInstance = (TousseInstance) bd;
- if (!TousseInstance.STATUS_STERILED.equals(tousseInstance.getStatus())) {
- throw new RuntimeException("患者消毒物料使用登记失败 :消毒物料处于" + tousseInstance.getStatus() + "状态");
- }
// 2、查询患者信息
// (可以调用手麻系统提供患者查询服务,或者调用HIS系统提供患者查询服务,实现其中一种即可,之前已经实现手麻系统提供患者查询服务,所以这里调用的是手麻系统提供患者查询服务)
- PatientInfoVO[] patients = dataSynchronizationManager.findPatientInfoByHospitalNum(useRecord.getPatientIDCard());
- if (patients == null || patients.length == 0) {
+ PatientInfoVO patient = sycnDataFromHIPDao.findPatientInfoByHospitalNum(useRecord.getHospitalNum());
+ if (patient == null) {
throw new RuntimeException("患者消毒物料使用登记失败 :未找到住院号为" + useRecord.getHospitalNum() + "的患者信息");
}
- PatientInfoVO patient = patients[0];
// 3、创建使用记录
UseRecord newUseRecord = new UseRecord();
newUseRecord.setHospitalNum(patient.getHospitalNumber());
Index: ssts-web/src/main/webapp/logonSSOForDysyy.jsp
===================================================================
diff -u -r27131 -r27486
--- ssts-web/src/main/webapp/logonSSOForDysyy.jsp (.../logonSSOForDysyy.jsp) (revision 27131)
+++ ssts-web/src/main/webapp/logonSSOForDysyy.jsp (.../logonSSOForDysyy.jsp) (revision 27486)
@@ -18,22 +18,22 @@
String sid = request.getParameter("sid");
if(StringUtils.isNotBlank(sid)){
//String xmlInput = "123546" + sid + "";
- String xmlResult = CssdUtils.sendPostRequest(DatasyncConstant.HIPWebServiceAddress,
+ /* String xmlResult = CssdUtils.sendPostRequest(DatasyncConstant.HIPWebServiceAddress,
WebServiceClientHelper.transferSpecialWordParam(
WebServiceClientHelper.buildCallWebServiceInputXml(DatasyncConstant.MethodName_GetUserInfo, sid)
- ), Constants.CHARSET_UTF8);
+ ), Constants.CHARSET_UTF8); */
+ String param = WebServiceClientHelper.buildCallWebServiceInputXml(DatasyncConstant.MethodName_GetUserInfo, sid);
+ String xmlResult = WebServiceClientHelper.doPostSoap1_2(DatasyncConstant.HIPWebServiceAddress, param, "HIPMessageServer");
String userName = "";
try{
- JSONObject json = (JSONObject)CssdUtils.xml2JsonCommon(xmlResult);
- String typeCode = json.optJSONObject("message_cont")
- .optJSONObject("acknowledgement").optString("@typeCode");
+ JSONObject xmlResultJson = (JSONObject)CssdUtils.xml2JsonCommon(xmlResult);
+ JSONObject json = xmlResultJson.optJSONObject("soapenv:Body").optJSONObject("urn:HIPMessageServerResponse").optJSONObject("urn:payload").optJSONObject("res");
+ JSONObject message_contJSON = json.optJSONArray("message_cont").optJSONObject(0);
+ JSONObject acknowledgementDetailJSON = message_contJSON.optJSONArray("acknowledgementDetail").optJSONObject(0)
+ String typeCode = message_contJSON.optString("@typeCode");
if("AA".equals(typeCode)){
- String text = json.optJSONObject("message_cont")
- .optJSONObject("acknowledgement")
- .optJSONObject("acknowledgementDetail")
- .optString("text");
- JSONObject textJson = JSONObject.fromObject(text);
- userName = textJson.optString("user_name");
+ userName = acknowledgementDetailJSON.optString("staff_code");
+ System.out.println("userName === " + userName);
if(userName == null){
message.add("xml的格式有误");
}
Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/dysrmyy/WebServiceClientHelper.java
===================================================================
diff -u -r27131 -r27486
--- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/dysrmyy/WebServiceClientHelper.java (.../WebServiceClientHelper.java) (revision 27131)
+++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/dysrmyy/WebServiceClientHelper.java (.../WebServiceClientHelper.java) (revision 27486)
@@ -1,13 +1,22 @@
package com.forgon.disinfectsystem.datasynchronization.dao.dysrmyy;
+import java.nio.charset.Charset;
import java.util.UUID;
import net.sf.json.JSON;
import net.sf.json.JSONObject;
import net.sf.json.xml.XMLSerializer;
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;
import com.forgon.tools.json.AESUtil;
@@ -94,6 +103,21 @@
soap.append("");
soap.append("");
inputXml = soap.toString();
+ } else if (DatasyncConstant.MethodName_OperationAppInfoQuery.equals(methodName)) {
+ StringBuilder soap = new StringBuilder();
+ soap.append("");
+ soap.append("");
+ soap.append("" + (WebServiceClientHelper.USERNAME) + "");
+ soap.append("" + (WebServiceClientHelper.PASSWORD) + "");
+ soap.append("VQWHc2A2Y03wM2Yfumbd2g==2018-09-19T01:09:51.634Z");
+ soap.append("");
+ soap.append("");
+ soap.append("" + methodName + "");
+ soap.append("");
+ soap.append("");
+ soap.append("");
+ soap.append("");
+ inputXml = soap.toString();
} else {
throw new RuntimeException("不存在此方法:" + methodName);
}
@@ -249,4 +273,45 @@
return paramTransfer;
}
+ /**
+ * 使用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(100000)
+ .setConnectTimeout(100000).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(">", ">");
+ }
+ // 释放资源
+ 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/dysrmyy/DatasyncConstant.java
===================================================================
diff -u -r27131 -r27486
--- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/dysrmyy/DatasyncConstant.java (.../DatasyncConstant.java) (revision 27131)
+++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/dysrmyy/DatasyncConstant.java (.../DatasyncConstant.java) (revision 27486)
@@ -26,7 +26,7 @@
/**
* 调用集成平台提供的webservice(DYSYY-53 二期合同接口开发)
*/
- public static String HIPWebServiceAddress = "http://192.168.28.123:6998/services/HIPService?wsdl";
+ public static String HIPWebServiceAddress = "http://192.168.28.203:6998/services/HIPService.HIPServiceHttpSoap12Endpoint";
//公网环境的接口地址
//public static String WebserviceAddress = "http://218.6.146.70:8086/ExternalServices/ZL_InformationService.asmx/Custom";
@@ -57,6 +57,11 @@
public static String MethodName_GetUserInfo = "getUserInfo";
/**
+ * 调用集成平台提供的webservice,根据住院号查询病人信息(DYSYY-53 二期合同接口开发)
+ */
+ public static String MethodName_OperationAppInfoQuery = "OperationAppInfoQuery";
+
+ /**
* 请求参数的特殊字符替换
*/
public static Map paramSpecialWordReplaceMap;
Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/dysrmyy/SycnDataFromHIPDaoImpl.java
===================================================================
diff -u -r27131 -r27486
--- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/dysrmyy/SycnDataFromHIPDaoImpl.java (.../SycnDataFromHIPDaoImpl.java) (revision 27131)
+++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/dysrmyy/SycnDataFromHIPDaoImpl.java (.../SycnDataFromHIPDaoImpl.java) (revision 27486)
@@ -4,32 +4,45 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.UUID;
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+
import org.apache.commons.lang.StringUtils;
+import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Node;
import org.dom4j.XPath;
import org.springframework.beans.factory.annotation.Autowired;
+import com.forgon.directory.model.OrgUnit;
import com.forgon.disinfectsystem.barcode.service.BarcodeManager;
+import com.forgon.disinfectsystem.common.CssdUtils;
import com.forgon.disinfectsystem.datasynchronization.dao.SyncDataFromHIPDao;
import com.forgon.disinfectsystem.datasynchronization.model.OrgUnitVo;
+import com.forgon.disinfectsystem.datasynchronization.model.PatientInfoVO;
import com.forgon.disinfectsystem.datasynchronization.model.UserVo;
import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance;
import com.forgon.disinfectsystem.entity.operationreservation.OperationReservation;
import com.forgon.disinfectsystem.entity.useRecord.UseRecord;
import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseInstanceManager;
import com.forgon.tools.Constants;
import com.forgon.tools.date.DateTools;
+import com.forgon.tools.hibernate.ObjectDao;
public class SycnDataFromHIPDaoImpl implements SyncDataFromHIPDao {
+ private static Logger logger = Logger.getLogger(SycnDataFromHIPDaoImpl.class);
+
@Autowired
private TousseInstanceManager tousseInstanceManager;
@Autowired
private BarcodeManager barcodeManager;
+ @Autowired
+ private ObjectDao objectDao;
/**
* 根据document和Xpath表达式解析数据
@@ -65,15 +78,15 @@
String deptXpath = "";
String deptCodeXpath = "";
String deptNameXpath = "";
- String parentDeptCodeXpath = "";
+ String parentDeptIdXpath = "";
if (StringUtils.equals("OrganizationInfoRegister", action)) {
idXpath = "/PRPM_IN401030UV01/s:id/@extension";
deptXpath = "/PRPM_IN401030UV01/s:controlActProcess/s:subject/s:registrationRequest/s:subject1/s:assignedEntity";
deptCodeXpath = deptXpath
+ "/s:id/s:item/@extension";
deptNameXpath = deptXpath
+ "/s:assignedPrincipalOrganization/s:name/s:item/s:part/@value";
- parentDeptCodeXpath = deptXpath
+ parentDeptIdXpath = deptXpath
+ "/s:assignedPrincipalOrganization/s:asAffiliate/s:scoper2/s:id/s:item/@extension";
} else if (StringUtils.equals("OrganizationInfoUpdate", action)){
idXpath = "/PRPM_IN403010UV01/s:id/@extension";
@@ -82,7 +95,7 @@
+ "/s:id/s:item/@extension";
deptNameXpath = deptXpath
+ "/s:assignedPrincipalOrganization/s:name/s:item/s:part/@value";
- parentDeptCodeXpath = deptXpath
+ parentDeptIdXpath = deptXpath
+ "/s:assignedPrincipalOrganization/s:asAffiliate/s:affiliatedPrincipalOrganization/s:id/s:item/@extension";
} else {
throw new RuntimeException("action不为OrganizationInfoRegister或者OrganizationInfoUpdate!");
@@ -93,16 +106,16 @@
String messageId = processDataByXpath(document, nameSpaceURIMap, idXpath);
String deptCode = processDataByXpath(document, nameSpaceURIMap, deptCodeXpath);
String deptName = processDataByXpath(document, nameSpaceURIMap, deptNameXpath);
- String parentDeptCode = processDataByXpath(document, nameSpaceURIMap, parentDeptCodeXpath);
+ String parentDeptId = processDataByXpath(document, nameSpaceURIMap, parentDeptIdXpath);
- if (messageId == null || deptCode == null || deptName == null || parentDeptCode == null) {
+ if (messageId == null || deptCode == null || deptName == null || parentDeptId == null) {
throw new RuntimeException("xml中的必须项不能为空!");
}
-
+ OrgUnit orgUnit = (OrgUnit) objectDao.getById(OrgUnit.class.getSimpleName(), parentDeptId);
OrgUnitVo orgUnitVo = new OrgUnitVo();
orgUnitVo.setCoding(deptCode);
orgUnitVo.setName(deptName);
- orgUnitVo.setParentCoding(parentDeptCode);
+ orgUnitVo.setParentCoding(orgUnit == null ? null : orgUnit.getOrgUnitCoding());
orgUnitVo.setSource(Constants.SOURCE_SYNC);
// 临时用于保存消息id
orgUnitVo.setMessageId(messageId);
@@ -128,24 +141,24 @@
String userXpath = "";
String userCodeXpath = "";
String userNameXpath = "";
- String deptCodeXpath = "";
+ String deptIdXpath = "";
if (StringUtils.equals("ProviderInfoRegister", action)) {
messageIdXpath = "/PRPM_IN301010UV01/s:id/@extension";
userXpath = "/PRPM_IN301010UV01/s:controlActProcess/s:subject/s:registrationRequest/s:subject1/s:healthCareProvider";
userCodeXpath = userXpath
- + "/s:id/s:item/@extension";
+ + "/s:id/s:staffCode/@extension";
userNameXpath = userXpath
+ "/s:healthCarePrincipalPerson/s:name/s:item/s:part/@value";
- deptCodeXpath = userXpath
+ deptIdXpath = userXpath
+ "/s:healthCarePrincipalPerson/s:asAffiliate/s:affiliatedPrincipalOrganization/s:id/s:item/@extension";
} else if (StringUtils.equals("ProviderInfoUpdate", action)){
messageIdXpath = "/PRPM_IN303010UV01/s:id/@extension";
userXpath = "/PRPM_IN303010UV01/s:controlActProcess/s:subject/s:registrationRequest/s:subject1/s:healthCareProvider";
userCodeXpath = userXpath
- + "/s:id/s:item/@extension";
+ + "/s:id/s:staffCode/@extension";
userNameXpath = userXpath
+ "/s:healthCarePrincipalPerson/s:name/s:item/s:part/@value";
- deptCodeXpath = userXpath
+ deptIdXpath = userXpath
+ "/s:healthCarePrincipalPerson/s:asAffiliate/s:affiliatedPrincipalOrganization/s:id/s:item/@extension";
} else {
throw new RuntimeException("action不为ProviderInfoRegister或者ProviderInfoUpdate!");
@@ -156,14 +169,15 @@
String messageId = processDataByXpath(document, nameSpaceURIMap, messageIdXpath);
String userCode = processDataByXpath(document, nameSpaceURIMap, userCodeXpath);
String userName = processDataByXpath(document, nameSpaceURIMap, userNameXpath);
- String deptCode = processDataByXpath(document, nameSpaceURIMap, deptCodeXpath);
- if (messageId == null || userCode == null || userName == null || deptCode == null) {
+ String deptId = processDataByXpath(document, nameSpaceURIMap, deptIdXpath);
+ if (messageId == null || userCode == null || userName == null || deptId == null) {
throw new RuntimeException("xml中关键的参数不能为空!");
}
+ OrgUnit orgUnit = (OrgUnit) objectDao.getById(OrgUnit.class.getSimpleName(), deptId);
UserVo userVo = new UserVo();
userVo.setCoding(userCode);
userVo.setName(userName);
- userVo.setOrgUnitCoding(deptCode);
+ userVo.setOrgUnitCoding(orgUnit == null ? null : orgUnit.getOrgUnitCoding());
userVo.setSource(Constants.SOURCE_SYNC);
// 保存消息id
userVo.setMessageId(messageId);
@@ -238,7 +252,7 @@
// 2、生成使用记录
UseRecord useRecord = new UseRecord();
useRecord.setTousseInstanceList(list);
- useRecord.setPatientIDCard(inpatientno);
+ useRecord.setHospitalNum(inpatientno);
useRecord.setDepartCoding(excutdeptno);
useRecord.setOperator(excutor);
// 存放使用记录录入时间
@@ -278,4 +292,132 @@
}
}
+ @Override
+ public PatientInfoVO findPatientInfoByHospitalNum(String hospitalNum) {
+ try{
+ String requestXml = buildSendPostRequestInputXml(hospitalNum);
+ logger.info("手术申请单查询请求信息:" + requestXml);
+ logger.info("手术申请单查询请求地址:" + DatasyncConstant.HIPWebServiceAddress);
+ String param = WebServiceClientHelper.buildCallWebServiceInputXml(DatasyncConstant.MethodName_OperationAppInfoQuery, requestXml);
+ logger.info("手术申请单查询sendPostRequest:" + param);
+ String xmlResult = null;
+ try {
+ xmlResult = WebServiceClientHelper.doPostSoap1_2(DatasyncConstant.HIPWebServiceAddress, param, "HIPMessageServer");
+ logger.info("手术申请单查询返回信息:\n" + xmlResult);
+ } catch (Exception e) {
+ logger.info("手术申请单查询失败!" + e.getMessage());
+ }
+
+ JSONObject json = (JSONObject)CssdUtils.xml2JsonCommon(xmlResult);
+ JSONObject xmlResultJson = json.optJSONObject("soapenv:Body").optJSONObject("urn:HIPMessageServerResponse").optJSONObject("urn:payload").optJSONObject("QUMT_IN020040UV01");
+ String acknowledgement = xmlResultJson.optJSONObject("sender").optJSONObject("acknowledgement").optString("@typeCode");
+ logger.info("acknowledgement : " + acknowledgement);
+ if (!StringUtils.equals("AA", acknowledgement)) {
+ logger.info("手术申请单查询失败!acknowledgement = " + acknowledgement);
+ return null;
+ }
+ PatientInfoVO vo = new PatientInfoVO();
+ JSONObject procedureRequest = xmlResultJson.optJSONObject("controlActProcess").optJSONObject("subject").optJSONObject("procedureRequest");
+ JSONObject componentOf1 = procedureRequest.optJSONObject("componentOf1");
+ JSONObject patient = componentOf1.optJSONObject("encounter").optJSONObject("subject").optJSONObject("patient");
+ // 患者基本信息
+ if (patient != null) {
+ String tNumber = patient.optJSONObject("id").optJSONArray("item").optJSONObject(0).optString("@extension");
+ logger.info("tNumber : " + tNumber);
+ String patientName = patient.optJSONObject("patientPerson").optJSONObject("name").optJSONObject("item").optJSONObject("part").optString("@value");
+ logger.info("patientName : " + patientName);
+ String patientAge = patient.optJSONObject("patientPerson").optJSONObject("birthTime").optJSONObject("originalText").optString("@value");
+ logger.info("patientAge : " + patientAge);
+ String patientSex = patient.optJSONObject("patientPerson").optJSONObject("administrativeGenderCode").optJSONObject("displayName").optString("@value");
+ logger.info("patientSex : " + patientSex);
+ String patientIDCard = patient.optJSONObject("patientPerson").optJSONObject("id").optJSONArray("item").optJSONObject(0).optString("@extension");
+ logger.info("patientIDCard : " + patientIDCard);
+ vo.setPatientNumber(tNumber);
+ vo.setPatientName(patientName);
+ vo.setPatientAge(patientAge);
+ vo.setPatientSex(patientSex);
+ vo.setPatientIDCard(patientIDCard);
+ }
+
+ JSONObject procedureRequest2 = null;
+ JSONArray component2 = new JSONArray();
+ Object obj = procedureRequest.opt("component2");
+ if(obj instanceof JSONArray){
+ component2 = (JSONArray)obj;
+ } else if (obj instanceof JSONObject){
+ component2.add((JSONObject)obj);
+ }
+ procedureRequest2 = component2.optJSONObject(0).optJSONObject("procedureRequest");
+ // 手术信息
+ if (procedureRequest2 != null) {
+ String doctorName = procedureRequest2.optJSONObject("performer").optJSONObject("assignedEntity").optJSONObject("assignedPerson").optJSONObject("name").optJSONObject("item").optJSONArray("part").optJSONObject(0).optString("@value");
+ logger.info("doctorName : " + doctorName);
+ String operation = procedureRequest2.optJSONObject("code").optJSONObject("displayName").optString("@value");
+ logger.info("operation : " + operation);
+ vo.setDoctorName(doctorName);
+ vo.setOperation(operation);
+ }
+
+ JSONObject serviceDeliveryLocation = componentOf1.optJSONObject("encounter").optJSONObject("location").optJSONObject("serviceDeliveryLocation");
+ // 住院信息
+ if (serviceDeliveryLocation != null) {
+ String patientArea = serviceDeliveryLocation.optJSONObject("serviceProviderOrganization").optJSONObject("asOrganizationPartOf").optJSONObject("wholeOrganization").optJSONObject("name").optJSONObject("item").optJSONObject("part").optString("@value");
+ logger.info("patientArea : " + patientArea);
+ String opRoomId = null;
+ String bedNumber = serviceDeliveryLocation.optJSONObject("location").optJSONObject("name").optJSONObject("item").optJSONObject("part").optString("@value");
+ logger.info("bedNumber : " + bedNumber);
+ String roomNumber = serviceDeliveryLocation.optJSONObject("location").optJSONObject("asLocatedEntityPartOf").optJSONObject("location").optJSONObject("name").optJSONObject("item").optJSONObject("part").optString("@value");
+ logger.info("roomNumber : " + roomNumber);
+ vo.setPatientArea(patientArea);
+ vo.setOpRoomId(opRoomId);
+ vo.setBedNumber(bedNumber);
+ vo.setRoomNumber(roomNumber);
+ }
+ String remark = procedureRequest.optJSONObject("text").optString("@value");
+ logger.info("remark : " + remark);
+ String washHandNurse = null;
+ String circuitNurse = null;
+
+ vo.setHospitalNumber(hospitalNum);
+ vo.setType(PatientInfoVO.TYPE_HOSPITAL);
+ vo.setRemark(remark);
+ vo.setWashHandNurse(washHandNurse);
+ vo.setCircuitNurse(circuitNurse);
+ return vo;
+ }catch(Exception e){
+ logger.error("根据住院号查询病人信息失败" + e);
+ }
+
+ return null;
+ }
+
+ /**
+ * DYSYY-53 二期合同接口开发
+ * @param hospitalNum
+ * @return
+ */
+ private static String buildSendPostRequestInputXml(String hospitalNum){
+
+ StringBuilder requestMsgSB = new StringBuilder();
+ UUID uuid = UUID.randomUUID();
+ requestMsgSB.append("");
+ requestMsgSB.append("");
+ requestMsgSB.append("");
+ requestMsgSB.append("");
+ requestMsgSB.append("");
+ requestMsgSB.append("");
+ requestMsgSB.append("");
+ requestMsgSB.append(" ");
+ requestMsgSB.append(" ");
+ requestMsgSB.append("");
+ requestMsgSB.append(" ");
+ requestMsgSB.append(" ");
+ requestMsgSB.append("");
+ requestMsgSB.append(" ");
+ requestMsgSB.append("");
+
+ return requestMsgSB.toString();
+ }
+
}