Index: ssts-web/src/main/webapp/disinfectsystem/config/szslhqzxyy/spring/HIS.xml
===================================================================
diff -u -r31031 -r31346
--- ssts-web/src/main/webapp/disinfectsystem/config/szslhqzxyy/spring/HIS.xml (.../HIS.xml) (revision 31031)
+++ ssts-web/src/main/webapp/disinfectsystem/config/szslhqzxyy/spring/HIS.xml (.../HIS.xml) (revision 31346)
@@ -60,31 +60,12 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
+
+
+
Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/szslhqzxyy/HTTPClientHelper.java
===================================================================
diff -u
--- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/szslhqzxyy/HTTPClientHelper.java (revision 0)
+++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/szslhqzxyy/HTTPClientHelper.java (revision 31346)
@@ -0,0 +1,165 @@
+package com.forgon.disinfectsystem.datasynchronization.dao.szslhqzxyy;
+
+import java.util.Calendar;
+import java.util.UUID;
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+import org.apache.commons.lang3.StringUtils;
+import com.forgon.tools.date.DateTools;
+
+/**
+ * 深圳市龙华区中心医院帮助类
+ * @author ZhouPeiMian
+ * @since 2021-05-18
+ *
+ */
+public class HTTPClientHelper {
+
+ /**
+ * 构建请求信息
+ {
+ "service": {//固定(serviceCode、serviceName、eventCode、eventName)
+ "serviceCode": "S0028",
+ "serviceName": "住院就诊信息查询服务"
+ },
+ "event": {
+ "eventCode": "E002803",
+ "eventName": "查询患者最近一次住院信息"
+ },
+ "id": "22a0f9e0-4454-11dc-a6be-3603d6504810",//我方规则生成要求唯一
+ "creationTime": "20130116T112855",//格式固定,查询时间(年月日+T+时分秒)
+ "sender": {
+ "id": "6000",//固定
+ "softwareName": {
+ "code": "CSSD",//固定
+ "name": "消毒供应质量追溯系统"//固定
+ },
+ "softwareProvider": {
+ "code": "DXsoft",//固定
+ "name": "广州丁香软件有限公司"//固定
+ },
+ "organization": {
+ "code": "20",
+ "name": "深圳市龙华区中心医院"//固定,根据医院变化,code和name
+ }
+ },
+ "receiver": {
+ "id": "1200",
+ "softwareName": {
+ "code": "ESB",//固定
+ "name": "区域集成平台"//固定
+ },
+ "softwareProvider": {
+ "code": "Caradigm",//固定
+ "name": "恺恩泰(北京)科技有限公司"//固定
+ },
+ "organization": {
+ "code": "20",//固定
+ "name": "深圳市龙华区中心医院"//固定
+ }
+ },
+ "query": {
+ "ENCOUNTER": {
+ "ENCOUNTER_INPATIENT": [
+ {
+ "DATA_ELEMENT_ID": "LHDE0020001",//固定
+ "DATA_ELEMENT_NAME": "患者主索引号码",//固定
+ "DATA_ELEMENT_EN_NAME": "EMPI_ID",//固定
+ "DATA_ELEMENT_VALUE": "10889150"//非固定,需要输入病人门诊号
+ }
+ ]
+ }
+ }
+ }*/
+ public static JSONObject buildInputStr(String serviceCode, String serviceName, String eventCode, String eventName, String value){
+ JSONObject requestBody = new JSONObject();
+ JSONObject service = new JSONObject();
+ service.put("serviceCode", serviceCode);
+ service.put("serviceName", serviceName);
+ requestBody.put("service", service);
+
+ JSONObject event = new JSONObject();
+ event.put("eventCode", eventCode);
+ event.put("eventName", eventName);
+ requestBody.put("event", event);
+
+ requestBody.put("id", UUID.randomUUID().toString());
+ requestBody.put("creationTime", DateTools.formatTime(Calendar.getInstance(), "yyyyMMdd'T'HHmmss"));
+
+ JSONObject sender = new JSONObject();
+ sender.put("id", "6000");
+ JSONObject softwareNameS = new JSONObject();
+ softwareNameS.put("code", "CSSD");
+ softwareNameS.put("name", "消毒供应质量追溯系统");
+ sender.put("softwareName", softwareNameS);
+ JSONObject softwareProviderS = new JSONObject();
+ softwareProviderS.put("code", "DXsoft");
+ softwareProviderS.put("name", "广州丁香软件有限公司");
+ sender.put("softwareProvider", softwareProviderS);
+ JSONObject organizationS = new JSONObject();
+ organizationS.put("code", "20");
+ organizationS.put("name", "深圳市龙华区中心医院");
+ sender.put("organization", organizationS);
+ requestBody.put("sender", sender);
+
+ JSONObject receiver = new JSONObject();
+ receiver.put("id", "1200");
+ JSONObject softwareNameR = new JSONObject();
+ softwareNameR.put("code", "ESB");
+ softwareNameR.put("name", "区域集成平台");
+ receiver.put("softwareName", softwareNameR);
+ JSONObject softwareProviderR = new JSONObject();
+ softwareProviderR.put("code", "Caradigm");
+ softwareProviderR.put("name", "恺恩泰(北京)科技有限公司");
+ receiver.put("softwareProvider", softwareProviderR);
+ JSONObject organizationR = new JSONObject();
+ organizationR.put("code", "20");
+ organizationR.put("name", "深圳市龙华区中心医院");
+ receiver.put("organization", organizationR);
+ requestBody.put("receiver", receiver);
+
+ JSONObject query = new JSONObject();
+ JSONObject ENCOUNTER = new JSONObject();
+ JSONArray ENCOUNTER_INPATIENT = new JSONArray();
+ JSONObject queryMessage = new JSONObject();
+ queryMessage.put("DATA_ELEMENT_ID", "LHDE0020001");
+ queryMessage.put("DATA_ELEMENT_NAME", "患者主索引号码");
+ queryMessage.put("DATA_ELEMENT_EN_NAME", "EMPI_ID");
+ queryMessage.put("DATA_ELEMENT_VALUE", value);
+ ENCOUNTER_INPATIENT.add(queryMessage);
+ ENCOUNTER.put("ENCOUNTER_INPATIENT", ENCOUNTER_INPATIENT);
+ query.put("ENCOUNTER", ENCOUNTER);
+ requestBody.put("query", query);
+
+ return requestBody;
+ }
+
+ /**
+ * 患者年龄处理:
+ * 根据患者出生日期(YYYYMMDD)计算年龄
+ * @param birthday(YYYY-MM-DD hh:mm:ss )
+ * @return age
+ */
+ public static String birthdayToAge(String birthday) {
+ if(StringUtils.isNotBlank(birthday)) {
+ Integer year = Integer.parseInt(birthday.substring(0, 4));
+ Integer month = Integer.parseInt(birthday.substring(4, 6));
+ Integer day = Integer.parseInt(birthday.substring(6, 8));
+ Calendar now = Calendar.getInstance();
+ Integer currentYear = now.get(Calendar.YEAR);
+ Integer currentMonth = now.get(Calendar.MONTH) + 1;
+ Integer currentDay = now.get(Calendar.DAY_OF_MONTH);
+ Integer age = currentYear - year;
+ if(currentMonth == month) {
+ if(currentDay < day) {
+ age -= 1;
+ }
+ } else if(currentMonth < month) {
+ age -= 1;
+ }
+ return age.toString();
+ }
+ return null;
+ }
+
+}
Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/szslhqzxyy/FindPatientInfoByHospitalNumDaoImpl.java
===================================================================
diff -u
--- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/szslhqzxyy/FindPatientInfoByHospitalNumDaoImpl.java (revision 0)
+++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/szslhqzxyy/FindPatientInfoByHospitalNumDaoImpl.java (revision 31346)
@@ -0,0 +1,141 @@
+package com.forgon.disinfectsystem.datasynchronization.dao.szslhqzxyy;
+
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+import java.util.ArrayList;
+import java.util.List;
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.log4j.Logger;
+import com.forgon.disinfectsystem.common.CssdUtils;
+import com.forgon.disinfectsystem.datasynchronization.dao.FindPatientInfoByHospitalNumDao;
+import com.forgon.disinfectsystem.datasynchronization.model.PatientInfoVO;
+
+/**
+ * 根据住院号查询病人信息(深圳市龙华区中心医院)
+ * @author ZhouPeiMian
+ * @since 2021-05-18
+ *
+ */
+public class FindPatientInfoByHospitalNumDaoImpl implements
+ FindPatientInfoByHospitalNumDao {
+
+ Logger logger = Logger.getLogger(FindPatientInfoByHospitalNumDaoImpl.class);
+
+ @Override
+ public PatientInfoVO[] findPatientInfoByHospitalNum(String hospitalNum) {
+ try {
+ JSONObject json = HTTPClientHelper.buildInputStr(DatasyncConstant.ServiceCode_ZY, DatasyncConstant.ServiceName_ZY,
+ DatasyncConstant.EventCode_ZY, DatasyncConstant.EventName_ZY, hospitalNum);
+ logger.info("住院病人信息同步接口请求信息:" + json);
+ JSONObject result = CssdUtils.sendJSONRequestByHttpPost(DatasyncConstant.URL, json);
+ //String resultStr = "{'service':{'serviceCode':'S0028','serviceName':'住院就诊信息查询服务'},'event':{'eventCode':'E002803','eventName':'查询患者最近一次住院信息'},'id':'1d1d8b06-8e21-403d-85c2-1378f0b1b5e5','creationTime':'20210421T052630','sender':{'id':'1200','softwareName':{'code':'ESB','name':'区域集成平台'},'softwareProvider':{'code':'Caradigm','name':'恺恩泰(北京)科技有限公司'},'organization':{'code':'20','name':'深圳市龙华区中心医院'}},'receiver':{'id':'2000','softwareName':{'code':'HIS','name':'医院信息管理系统'},'softwareProvider':{'code':'Neusoft','name':'东软集团股份有限公司'},'organization':{'code':'20','name':'深圳市龙华区中心医院'}},'queryAck':{'ackCode':'AA','targetMessageId':'22a0f9e0-4454-11dc-a6be-3603d6504810','ackDetail':'消息处理成功','ENCOUNTERS':[{'ENCOUNTER_INPATIENT':[{'DATA_ELEMENT_ID':'LHDE0020001','DATA_ELEMENT_NAME':'患者主索引号码','DATA_ELEMENT_EN_NAME':'EMPI_ID','DATA_ELEMENT_VALUE':'10889150'},{'DATA_ELEMENT_ID':'LHDE0020002','DATA_ELEMENT_NAME':'患者主键','DATA_ELEMENT_EN_NAME':'PK_PATIENT','DATA_ELEMENT_VALUE':'20_2000_0101996716'},{'DATA_ELEMENT_ID':'LHDE0020003','DATA_ELEMENT_NAME':'就诊ID','DATA_ELEMENT_EN_NAME':'ENCOUNTER_ID','DATA_ELEMENT_VALUE':'20_3_2000_580852'},{'DATA_ELEMENT_ID':'LHDE0020004','DATA_ELEMENT_NAME':'机构/院部代码','DATA_ELEMENT_EN_NAME':'ORG_CODE','DATA_ELEMENT_VALUE':'20'},{'DATA_ELEMENT_ID':'LHDE0020005','DATA_ELEMENT_NAME':'机构/院部名称','DATA_ELEMENT_EN_NAME':'ORG_NAME','DATA_ELEMENT_VALUE':'深圳市龙华区中心医院'},{'DATA_ELEMENT_ID':'LHDE0020006','DATA_ELEMENT_NAME':'就诊类别代码','DATA_ELEMENT_EN_NAME':'ENCOUNTER_TYPE_CODE','DATA_ELEMENT_VALUE':'3'},{'DATA_ELEMENT_ID':'LHDE0020007','DATA_ELEMENT_NAME':'就诊类别名称','DATA_ELEMENT_EN_NAME':'ENCOUNTER_TYPE_NAME','DATA_ELEMENT_VALUE':'住院'},{'DATA_ELEMENT_ID':'LHDE0020008','DATA_ELEMENT_NAME':'就诊流水号','DATA_ELEMENT_EN_NAME':'VISIT_ID','DATA_ELEMENT_VALUE':'580852'},{'DATA_ELEMENT_ID':'LHDE0020009','DATA_ELEMENT_NAME':'就诊次数','DATA_ELEMENT_EN_NAME':'VISIT_NO','DATA_ELEMENT_VALUE':'1'},{'DATA_ELEMENT_ID':'LHDE0020010','DATA_ELEMENT_NAME':'病人姓名','DATA_ELEMENT_EN_NAME':'PATIENT_NAME','DATA_ELEMENT_VALUE':'陈富长'},{'DATA_ELEMENT_ID':'LHDE0020011','DATA_ELEMENT_NAME':'性别代码','DATA_ELEMENT_EN_NAME':'GENDER_CODE','DATA_ELEMENT_VALUE':'1'},{'DATA_ELEMENT_ID':'LHDE0020012','DATA_ELEMENT_NAME':'性别名称','DATA_ELEMENT_EN_NAME':'GENDER_NAME','DATA_ELEMENT_VALUE':'男性'},{'DATA_ELEMENT_ID':'LHDE0020013','DATA_ELEMENT_NAME':'出生日期','DATA_ELEMENT_EN_NAME':'DATE_OF_BIRTH','DATA_ELEMENT_VALUE':'19590716'},{'DATA_ELEMENT_ID':'LHDE0020014','DATA_ELEMENT_NAME':'年龄-年','DATA_ELEMENT_EN_NAME':'AGE_YEAR','DATA_ELEMENT_VALUE':'61'},{'DATA_ELEMENT_ID':'LHDE0020015','DATA_ELEMENT_NAME':'年龄-月','DATA_ELEMENT_EN_NAME':'AGE_MONTH','DATA_ELEMENT_VALUE':'0'},{'DATA_ELEMENT_ID':'LHDE0020016','DATA_ELEMENT_NAME':'年龄-天','DATA_ELEMENT_EN_NAME':'AGE_DAY','DATA_ELEMENT_VALUE':'0'},{'DATA_ELEMENT_ID':'LHDE0020017','DATA_ELEMENT_NAME':'年龄-时','DATA_ELEMENT_EN_NAME':'AGE_HOUR','DATA_ELEMENT_VALUE':'0'},{'DATA_ELEMENT_ID':'LHDE0020018','DATA_ELEMENT_NAME':'婚姻状况代码','DATA_ELEMENT_EN_NAME':'MARITAL_STATUS_CODE','DATA_ELEMENT_VALUE':'90'},{'DATA_ELEMENT_ID':'LHDE0020019','DATA_ELEMENT_NAME':'婚姻状况名称','DATA_ELEMENT_EN_NAME':'MARITAL_STATUS_NAME','DATA_ELEMENT_VALUE':'未说明的婚姻状况'},{'DATA_ELEMENT_ID':'LHDE0020020','DATA_ELEMENT_NAME':'病人来源代码','DATA_ELEMENT_EN_NAME':'PATIENT_RESOURCE_CODE','DATA_ELEMENT_VALUE':'1'},{'DATA_ELEMENT_ID':'LHDE0020021','DATA_ELEMENT_NAME':'病人来源名称','DATA_ELEMENT_EN_NAME':'PATIENT_RESOURCE_NAME','DATA_ELEMENT_VALUE':'本市'},{'DATA_ELEMENT_ID':'LHDE0020022','DATA_ELEMENT_NAME':'病人类别代码','DATA_ELEMENT_EN_NAME':'PATIENT_TYPE_CODE','DATA_ELEMENT_VALUE':'1'},{'DATA_ELEMENT_ID':'LHDE0020023','DATA_ELEMENT_NAME':'病人类别名称','DATA_ELEMENT_EN_NAME':'PATIENT_TYPE_NAME','DATA_ELEMENT_VALUE':'自费'},{'DATA_ELEMENT_ID':'LHDE0020068','DATA_ELEMENT_NAME':'住院在院标志','DATA_ELEMENT_EN_NAME':'IN_HOSPITAL_FLAG','DATA_ELEMENT_VALUE':'1'},{'DATA_ELEMENT_ID':'LHDE0020069','DATA_ELEMENT_NAME':'入院方式','DATA_ELEMENT_EN_NAME':'ADMISSION_MODE','DATA_ELEMENT_VALUE':'2'},{'DATA_ELEMENT_ID':'LHDE0020070','DATA_ELEMENT_NAME':'入院途径代码','DATA_ELEMENT_EN_NAME':'ADMISSION_WAY_CODE','DATA_ELEMENT_VALUE':'2'},{'DATA_ELEMENT_ID':'LHDE0020071','DATA_ELEMENT_NAME':'入院途径名称','DATA_ELEMENT_EN_NAME':'ADMISSION_WAY_NAME','DATA_ELEMENT_VALUE':'门诊'},{'DATA_ELEMENT_ID':'LHDE0020072','DATA_ELEMENT_NAME':'入院状态代码','DATA_ELEMENT_EN_NAME':'ADMISSION_STATUS_CODE','DATA_ELEMENT_VALUE':'2'},{'DATA_ELEMENT_ID':'LHDE0020073','DATA_ELEMENT_NAME':'入院状态名称','DATA_ELEMENT_EN_NAME':'ADMISSION_STATUS_NAME','DATA_ELEMENT_VALUE':'急'},{'DATA_ELEMENT_ID':'LHDE0020074','DATA_ELEMENT_NAME':'入院时间','DATA_ELEMENT_EN_NAME':'ADMISSION_DATE_TIME','DATA_ELEMENT_VALUE':'20210421T123030'},{'DATA_ELEMENT_ID':'LHDE0020075','DATA_ELEMENT_NAME':'入院科室代码','DATA_ELEMENT_EN_NAME':'ADMISSION_DEPT_ID','DATA_ELEMENT_VALUE':'342'},{'DATA_ELEMENT_ID':'LHDE0020076','DATA_ELEMENT_NAME':'入院科室名称','DATA_ELEMENT_EN_NAME':'ADMISSION_DEPT_NAME','DATA_ELEMENT_VALUE':'脊柱关节外科住院'},{'DATA_ELEMENT_ID':'LHDE0020077','DATA_ELEMENT_NAME':'入院病区代码','DATA_ELEMENT_EN_NAME':'ADMISSION_WARD_ID','DATA_ELEMENT_VALUE':'200342'},{'DATA_ELEMENT_ID':'LHDE0020078','DATA_ELEMENT_NAME':'入院病区名称','DATA_ELEMENT_EN_NAME':'ADMISSION_WARD_NAME','DATA_ELEMENT_VALUE':'脊柱关节外科'},{'DATA_ELEMENT_ID':'LHDE0020079','DATA_ELEMENT_NAME':'当前病区代码','DATA_ELEMENT_EN_NAME':'VISIT_WARD_ID','DATA_ELEMENT_VALUE':'200342'},{'DATA_ELEMENT_ID':'LHDE0020080','DATA_ELEMENT_NAME':'当前病区名称','DATA_ELEMENT_EN_NAME':'VISIT_WARD_NAME','DATA_ELEMENT_VALUE':'脊柱关节外科'},{'DATA_ELEMENT_ID':'LHDE0020081','DATA_ELEMENT_NAME':'床号','DATA_ELEMENT_EN_NAME':'BED_NO','DATA_ELEMENT_VALUE':'28'},{'DATA_ELEMENT_ID':'LHDE0020082','DATA_ELEMENT_NAME':'科主任医师ID','DATA_ELEMENT_EN_NAME':'DIVISION_DIRECTOR_ID','DATA_ELEMENT_VALUE':''},{'DATA_ELEMENT_ID':'LHDE0020083','DATA_ELEMENT_NAME':'科主任医师名称','DATA_ELEMENT_EN_NAME':'DIVISION_DIRECTOR_NAME','DATA_ELEMENT_VALUE':''},{'DATA_ELEMENT_ID':'LHDE0020084','DATA_ELEMENT_NAME':'主任医师ID','DATA_ELEMENT_EN_NAME':'CHIEF_DOCTOR_ID','DATA_ELEMENT_VALUE':'10001991'},{'DATA_ELEMENT_ID':'LHDE0020085','DATA_ELEMENT_NAME':'主任医师名称','DATA_ELEMENT_EN_NAME':'CHIEF_DOCTOR_NAME','DATA_ELEMENT_VALUE':'周炳华'},{'DATA_ELEMENT_ID':'LHDE0020086','DATA_ELEMENT_NAME':'主治医师ID','DATA_ELEMENT_EN_NAME':'ATTEND_DOCTOR_ID','DATA_ELEMENT_VALUE':'10001890'},{'DATA_ELEMENT_ID':'LHDE0020087','DATA_ELEMENT_NAME':'主治医师姓名','DATA_ELEMENT_EN_NAME':'ATTEND_DOCTOR_NAME','DATA_ELEMENT_VALUE':'杨寿志'},{'DATA_ELEMENT_ID':'LHDE0020088','DATA_ELEMENT_NAME':'住院医师ID','DATA_ELEMENT_EN_NAME':'RESIDENT_DOCTOR_ID','DATA_ELEMENT_VALUE':'10001890'},{'DATA_ELEMENT_ID':'LHDE0020089','DATA_ELEMENT_NAME':'住院医师姓名','DATA_ELEMENT_EN_NAME':'RESIDENT_DOCTOR_NAME','DATA_ELEMENT_VALUE':'杨寿志'},{'DATA_ELEMENT_ID':'LHDE0020090','DATA_ELEMENT_NAME':'责任医师ID','DATA_ELEMENT_EN_NAME':'RESPONSIBLE_DOCTOR_ID','DATA_ELEMENT_VALUE':'10001890'},{'DATA_ELEMENT_ID':'LHDE0020091','DATA_ELEMENT_NAME':'责任医师姓名','DATA_ELEMENT_EN_NAME':'RESPONSIBLE_DOCTOR_NAME','DATA_ELEMENT_VALUE':'杨寿志'},{'DATA_ELEMENT_ID':'LHDE0020092','DATA_ELEMENT_NAME':'责任护士ID','DATA_ELEMENT_EN_NAME':'RESPONSIBLE_NURSE_ID','DATA_ELEMENT_VALUE':'10001190'},{'DATA_ELEMENT_ID':'LHDE0020093','DATA_ELEMENT_NAME':'责任护士姓名','DATA_ELEMENT_EN_NAME':'RESPONSIBLE_NURSE_NAME','DATA_ELEMENT_VALUE':'丛云萍'},{'DATA_ELEMENT_ID':'LHDE0020094','DATA_ELEMENT_NAME':'入院诊断代码','DATA_ELEMENT_EN_NAME':'ADMISSION_DIAG_CODE','DATA_ELEMENT_VALUE':''},{'DATA_ELEMENT_ID':'LHDE0020095','DATA_ELEMENT_NAME':'入院诊断名称','DATA_ELEMENT_EN_NAME':'ADMISSION_DIAG_NAME','DATA_ELEMENT_VALUE':'腰椎骨折'},{'DATA_ELEMENT_ID':'LHDE0020096','DATA_ELEMENT_NAME':'入院诊断描述','DATA_ELEMENT_EN_NAME':'ADMISSION_DIAG_DESC','DATA_ELEMENT_VALUE':''},{'DATA_ELEMENT_ID':'LHDE0020097','DATA_ELEMENT_NAME':'出院诊断时间','DATA_ELEMENT_EN_NAME':'DISCHARGE_DIAG_DATE_TIME','DATA_ELEMENT_VALUE':''},{'DATA_ELEMENT_ID':'LHDE0020098','DATA_ELEMENT_NAME':'出院诊断代码','DATA_ELEMENT_EN_NAME':'DISCHARGE_DIAG_CODE','DATA_ELEMENT_VALUE':''},{'DATA_ELEMENT_ID':'LHDE0020099','DATA_ELEMENT_NAME':'出院诊断名称','DATA_ELEMENT_EN_NAME':'DISCHARGE_DIAG_NAME','DATA_ELEMENT_VALUE':''},{'DATA_ELEMENT_ID':'LHDE0020100','DATA_ELEMENT_NAME':'出院诊断描述','DATA_ELEMENT_EN_NAME':'DISCHARGE_DIAG_DESC','DATA_ELEMENT_VALUE':''},{'DATA_ELEMENT_ID':'LHDE0020101','DATA_ELEMENT_NAME':'出院时间','DATA_ELEMENT_EN_NAME':'DISCHARGE_DATE_TIME','DATA_ELEMENT_VALUE':''},{'DATA_ELEMENT_ID':'LHDE0020102','DATA_ELEMENT_NAME':'出院科室代码','DATA_ELEMENT_EN_NAME':'DISCHARGE_DEPT_ID','DATA_ELEMENT_VALUE':''},{'DATA_ELEMENT_ID':'LHDE0020103','DATA_ELEMENT_NAME':'出院科室名称','DATA_ELEMENT_EN_NAME':'DISCHARGE_DEPT_NAME','DATA_ELEMENT_VALUE':''},{'DATA_ELEMENT_ID':'LHDE0020104','DATA_ELEMENT_NAME':'出院病区代码','DATA_ELEMENT_EN_NAME':'DISCHARGE_WARD_ID','DATA_ELEMENT_VALUE':''},{'DATA_ELEMENT_ID':'LHDE0020105','DATA_ELEMENT_NAME':'出院病区名称','DATA_ELEMENT_EN_NAME':'DISCHARGE_WARD_NAME','DATA_ELEMENT_VALUE':''},{'DATA_ELEMENT_ID':'LHDE0020106','DATA_ELEMENT_NAME':'离院方式代码','DATA_ELEMENT_EN_NAME':'DISCHARGE_METHOD_CODE','DATA_ELEMENT_VALUE':''},{'DATA_ELEMENT_ID':'LHDE0020107','DATA_ELEMENT_NAME':'离院方式名称','DATA_ELEMENT_EN_NAME':'DISCHARGE_METHOD_NAME','DATA_ELEMENT_VALUE':''},{'DATA_ELEMENT_ID':'LHDE0020108','DATA_ELEMENT_NAME':'出院方式','DATA_ELEMENT_EN_NAME':'DISCHARGE_MODE','DATA_ELEMENT_VALUE':''},{'DATA_ELEMENT_ID':'LHDE0020109','DATA_ELEMENT_NAME':'出院31天内再住院标志','DATA_ELEMENT_EN_NAME':'REINPAT_31D_FLAG','DATA_ELEMENT_VALUE':''},{'DATA_ELEMENT_ID':'LHDE0020110','DATA_ELEMENT_NAME':'实施临床路径标志代码','DATA_ELEMENT_EN_NAME':'CP_TYPE_CODE','DATA_ELEMENT_VALUE':''},{'DATA_ELEMENT_ID':'LHDE0020111','DATA_ELEMENT_NAME':'临床路径代码','DATA_ELEMENT_EN_NAME':'CP_CODE','DATA_ELEMENT_VALUE':''}]}]}}";
+ //JSONObject result = JSONObject.fromObject(resultStr);
+ logger.info("住院病人信息同步接口返回信息:" + result);
+ if(result == null){
+ return null;
+ }
+ JSONObject queryAck = result.optJSONObject("queryAck");
+ if(queryAck == null){
+ logger.info("住院病人信息同步接口返回信息没有queryAck节点");
+ return null;
+ }
+ if(!StringUtils.equals(queryAck.optString("ackCode"), "AA")){
+ logger.info("住院病人信息同步接口返回信息: ackCode = " + queryAck.optString("ackCode") + "; ackDetail = " + queryAck.optString("ackDetail"));
+ return null;
+ }
+ JSONArray ENCOUNTERS = queryAck.optJSONArray("ENCOUNTERS");
+ if(ENCOUNTERS == null){
+ logger.info("住院病人信息同步接口返回信息没有ENCOUNTERS节点");
+ return null;
+ }
+
+ List patientInfoVOList = new ArrayList();
+ for (Object object : ENCOUNTERS) {
+ JSONObject jsonObj = (JSONObject) object;
+ JSONArray ENCOUNTER_INPATIENT = jsonObj.optJSONArray("ENCOUNTER_INPATIENT");
+ if(ENCOUNTER_INPATIENT == null){
+ logger.info("住院病人信息同步接口返回信息没有ENCOUNTER_INPATIENT节点");
+ continue;
+ }
+ PatientInfoVO vo = new PatientInfoVO();
+ String PATIENT_NAME = "";
+ String DATE_OF_BIRTH = "";
+ String GENDER_CODE = "";
+ String GENDER_NAME = "男";
+ String AGE_MONTH = "";
+ String AGE_DAY = "";
+ String AGE_HOUR = "";
+ String VISIT_WARD_NAME = "";
+ String BED_NO = "";
+ String VISIT_NO = "";
+ for (Object object2 : ENCOUNTER_INPATIENT) {
+ JSONObject jsonObj2 = (JSONObject) object2;
+ String DATA_ELEMENT_EN_NAME = jsonObj2.optString("DATA_ELEMENT_EN_NAME");
+ String DATA_ELEMENT_VALUE = jsonObj2.optString("DATA_ELEMENT_VALUE");
+ if(StringUtils.equals(DATA_ELEMENT_EN_NAME, "PATIENT_NAME")){
+ PATIENT_NAME = DATA_ELEMENT_VALUE;
+ }else if(StringUtils.equals(DATA_ELEMENT_EN_NAME, "DATE_OF_BIRTH")){
+ DATE_OF_BIRTH = DATA_ELEMENT_VALUE;
+ }else if(StringUtils.equals(DATA_ELEMENT_EN_NAME, "AGE_MONTH")){
+ AGE_MONTH = DATA_ELEMENT_VALUE;
+ }else if(StringUtils.equals(DATA_ELEMENT_EN_NAME, "AGE_DAY")){
+ AGE_DAY = DATA_ELEMENT_VALUE;
+ }else if(StringUtils.equals(DATA_ELEMENT_EN_NAME, "AGE_HOUR")){
+ AGE_HOUR = DATA_ELEMENT_VALUE;
+ }else if(StringUtils.equals(DATA_ELEMENT_EN_NAME, "GENDER_CODE")){
+ GENDER_CODE = DATA_ELEMENT_VALUE;
+ }else if(StringUtils.equals(DATA_ELEMENT_EN_NAME, "VISIT_WARD_NAME")){
+ VISIT_WARD_NAME = DATA_ELEMENT_VALUE;
+ }else if(StringUtils.equals(DATA_ELEMENT_EN_NAME, "BED_NO")){
+ BED_NO = DATA_ELEMENT_VALUE;
+ }else if(StringUtils.equals(DATA_ELEMENT_EN_NAME, "VISIT_NO")){
+ VISIT_NO = DATA_ELEMENT_VALUE;
+ }
+ }
+ String patientAge = HTTPClientHelper.birthdayToAge(DATE_OF_BIRTH);
+ if(StringUtils.equals(patientAge, "0")){
+ if(!StringUtils.equals(AGE_MONTH, "0")){
+ patientAge = AGE_MONTH + "月";
+ }else if(!StringUtils.equals(AGE_DAY, "0")){
+ patientAge = AGE_MONTH + "天";
+ }else if(!StringUtils.equals(AGE_HOUR, "0")){
+ patientAge = AGE_MONTH + "时";
+ }
+ }
+ if(StringUtils.equals(GENDER_CODE, "2")){
+ GENDER_NAME = "女";
+ }
+ vo.setHospitalNumber(hospitalNum);
+ vo.setPatientName(PATIENT_NAME);
+ vo.setPatientAge(patientAge);
+ vo.setPatientSex(GENDER_NAME);
+ vo.setAscriptionDepartment(VISIT_WARD_NAME);
+ vo.setBedNumber(BED_NO);
+ vo.setVisitAmount(VISIT_NO);
+ patientInfoVOList.add(vo);
+ }
+ if (CollectionUtils.isNotEmpty(patientInfoVOList)) {
+ PatientInfoVO[] patientInfoArray = {patientInfoVOList.get(0)};
+ logger.info("完成解析住院病人信息,姓名为:" + patientInfoVOList.get(0).getPatientName());
+ return patientInfoArray;
+ }
+ } catch (Exception e) {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ e.printStackTrace(new PrintStream(baos));
+ String exception = baos.toString();
+ logger.error("根据病人住院号查询病人信息失败" + exception);
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ @Override
+ public PatientInfoVO[] findPatientInfoByHospitalNumBeforeOperation(
+ String hospitalNum) {
+ return findPatientInfoByHospitalNum(hospitalNum);
+ }
+
+}
Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/szslhqzxyy/FindPatientInfoByTreatmentNumDaoImpl.java
===================================================================
diff -u
--- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/szslhqzxyy/FindPatientInfoByTreatmentNumDaoImpl.java (revision 0)
+++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/szslhqzxyy/FindPatientInfoByTreatmentNumDaoImpl.java (revision 31346)
@@ -0,0 +1,104 @@
+package com.forgon.disinfectsystem.datasynchronization.dao.szslhqzxyy;
+
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+import java.util.ArrayList;
+import java.util.List;
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.log4j.Logger;
+import com.forgon.disinfectsystem.common.CssdUtils;
+import com.forgon.disinfectsystem.datasynchronization.dao.FindPatientInfoByTreatmentNumDao;
+import com.forgon.disinfectsystem.datasynchronization.model.PatientInfoVO;
+
+/**
+ * 根据诊疗号查询病人信息(深圳市龙华区中心医院)
+ * @author ZhouPeiMian
+ * @since 2021-05-19
+ *
+ */
+public class FindPatientInfoByTreatmentNumDaoImpl implements
+ FindPatientInfoByTreatmentNumDao {
+
+ Logger logger = Logger.getLogger(FindPatientInfoByTreatmentNumDaoImpl.class);
+
+ @Override
+ public PatientInfoVO[] findPatientInfoByTreatmentNum(String clinicNumber) {
+ try {
+ JSONObject json = HTTPClientHelper.buildInputStr(DatasyncConstant.ServiceCode_MZ, DatasyncConstant.ServiceName_MZ,
+ DatasyncConstant.EventCode_MZ, DatasyncConstant.EventName_MZ, clinicNumber);
+ logger.info("门诊病人信息同步接口请求信息:" + json);
+ JSONObject result = CssdUtils.sendJSONRequestByHttpPost(DatasyncConstant.URL, json);
+ //String resultStr = "{'service':{'serviceCode':'S0025','serviceName':'门诊就诊信息查询服务'},'event':{'eventCode':'E002501','eventName':'查询门诊就诊信息'},'id':'ae9576d3-a7bd-46d0-ac4d-abfffde9e4dd','creationTime':'20210506T1114385','sender':{'id':'1200','softwareName':{'code':'ESB','name':'区域集成平台'},'softwareProvider':{'code':'Caradigm','name':'恺恩泰(北京)科技有限公司'},'organization':{'code':'20','name':'深圳市龙华区中心医院'}},'receiver':{'id':'3100','softwareName':{'code':'LIS','name':'区域临床检验信息系统'},'softwareProvider':{'code':'Xhlis','name':'上海杏和软件有限公司'},'organization':{'code':'20','name':'深圳市龙华区中心医院'}},'queryAck':{'ackCode':'AA','targetMessageId':'22a0f9e0-4454-12dc-a6be-1235','ackDetail':'消息处理成功','ENCOUNTERS':[{'ENCOUNTER_OUTPATIENT':[{'DATA_ELEMENT_ID':'LHDE0020001','DATA_ELEMENT_NAME':'患者主索引号码','DATA_ELEMENT_EN_NAME':'EMPI_ID','DATA_ELEMENT_VALUE':'10001294'},{'DATA_ELEMENT_ID':'LHDE0020006','DATA_ELEMENT_NAME':'就诊类别代码','DATA_ELEMENT_EN_NAME':'ENCOUNTER_TYPE_CODE','DATA_ELEMENT_VALUE':'1'},{'DATA_ELEMENT_ID':'LHDE0020007','DATA_ELEMENT_NAME':'就诊类别名称','DATA_ELEMENT_EN_NAME':'ENCOUNTER_TYPE_NAME','DATA_ELEMENT_VALUE':'门诊'},{'DATA_ELEMENT_ID':'LHDE0020008','DATA_ELEMENT_NAME':'就诊流水号','DATA_ELEMENT_EN_NAME':'VISIT_ID','DATA_ELEMENT_VALUE':'191425'},{'DATA_ELEMENT_ID':'LHDE0020009','DATA_ELEMENT_NAME':'就诊次数','DATA_ELEMENT_EN_NAME':'VISIT_NO','DATA_ELEMENT_VALUE':'1'},{'DATA_ELEMENT_ID':'LHDE0020010','DATA_ELEMENT_NAME':'病人姓名','DATA_ELEMENT_EN_NAME':'PATIENT_NAME','DATA_ELEMENT_VALUE':'罗会琴'},{'DATA_ELEMENT_ID':'LHDE0020011','DATA_ELEMENT_NAME':'性别代码','DATA_ELEMENT_EN_NAME':'GENDER_CODE','DATA_ELEMENT_VALUE':'2'},{'DATA_ELEMENT_ID':'LHDE0020029','DATA_ELEMENT_NAME':'挂号科室代码','DATA_ELEMENT_EN_NAME':'REGISTER_DEPT_ID','DATA_ELEMENT_VALUE':'393'},{'DATA_ELEMENT_ID':'LHDE0020030','DATA_ELEMENT_NAME':'挂号科室名称','DATA_ELEMENT_EN_NAME':'REGISTER_DEPT_NAME','DATA_ELEMENT_VALUE':'妇科门诊'},{'DATA_ELEMENT_ID':'LHDE0020050','DATA_ELEMENT_NAME':'就诊科室代码','DATA_ELEMENT_EN_NAME':'VISIT_DEPT_ID','DATA_ELEMENT_VALUE':''},{'DATA_ELEMENT_ID':'LHDE0020051','DATA_ELEMENT_NAME':'就诊科室名称','DATA_ELEMENT_EN_NAME':'VISIT_DEPT_NAME','DATA_ELEMENT_VALUE':''},{'DATA_ELEMENT_ID':'LHDE0020052','DATA_ELEMENT_NAME':'就诊开始时间','DATA_ELEMENT_EN_NAME':'VISIT_START_DATE_TIME','DATA_ELEMENT_VALUE':'20201217T000000'},{'DATA_ELEMENT_ID':'LHDE0020053','DATA_ELEMENT_NAME':'就诊结束时间','DATA_ELEMENT_EN_NAME':'VISIT_END_DATE_TIME','DATA_ELEMENT_VALUE':'20201217T000000'}]}]}}";
+ //JSONObject result = JSONObject.fromObject(resultStr);
+ logger.info("门诊病人信息同步接口返回信息:" + result);
+ if(result == null){
+ return null;
+ }
+ JSONObject queryAck = result.optJSONObject("queryAck");
+ if(queryAck == null){
+ logger.info("门诊病人信息同步接口返回信息没有queryAck节点");
+ return null;
+ }
+ if(!StringUtils.equals(queryAck.optString("ackCode"), "AA")){
+ logger.info("门诊病人信息同步接口返回信息: ackCode = " + queryAck.optString("ackCode") + "; ackDetail = " + queryAck.optString("ackDetail"));
+ return null;
+ }
+ JSONArray ENCOUNTERS = queryAck.optJSONArray("ENCOUNTERS");
+ if(ENCOUNTERS == null){
+ logger.info("门诊病人信息同步接口返回信息没有ENCOUNTERS节点");
+ return null;
+ }
+
+ List patientInfoVOList = new ArrayList();
+ for (Object object : ENCOUNTERS) {
+ JSONObject jsonObj = (JSONObject) object;
+ JSONArray ENCOUNTER_INPATIENT = jsonObj.optJSONArray("ENCOUNTER_OUTPATIENT");
+ if(ENCOUNTER_INPATIENT == null){
+ logger.info("门诊病人信息同步接口返回信息没有ENCOUNTER_OUTPATIENT节点");
+ continue;
+ }
+ PatientInfoVO vo = new PatientInfoVO();
+ String PATIENT_NAME = "";
+ String GENDER_CODE = "";
+ String VISIT_DEPT_NAME = "";
+ for (Object object2 : ENCOUNTER_INPATIENT) {
+ JSONObject jsonObj2 = (JSONObject) object2;
+ String DATA_ELEMENT_EN_NAME = jsonObj2.optString("DATA_ELEMENT_EN_NAME");
+ String DATA_ELEMENT_VALUE = jsonObj2.optString("DATA_ELEMENT_VALUE");
+ if(StringUtils.equals(DATA_ELEMENT_EN_NAME, "PATIENT_NAME")){
+ PATIENT_NAME = DATA_ELEMENT_VALUE;
+ }else if(StringUtils.equals(DATA_ELEMENT_EN_NAME, "GENDER_CODE")){
+ GENDER_CODE = DATA_ELEMENT_VALUE;
+ }else if(StringUtils.equals(DATA_ELEMENT_EN_NAME, "VISIT_DEPT_NAME")){
+ VISIT_DEPT_NAME = DATA_ELEMENT_VALUE;
+ }
+ }
+ String GENDER_NAME = "男";
+ if(StringUtils.equals(GENDER_CODE, "2")){
+ GENDER_NAME = "女";
+ }
+ vo.setClinicNumber(clinicNumber);
+ vo.setPatientName(PATIENT_NAME);
+ vo.setPatientSex(GENDER_NAME);
+ vo.setAscriptionDepartment(VISIT_DEPT_NAME);
+ patientInfoVOList.add(vo);
+ }
+ if (CollectionUtils.isNotEmpty(patientInfoVOList)) {
+ PatientInfoVO[] patientInfoArray = {patientInfoVOList.get(0)};
+ logger.info("完成解析门诊病人信息,姓名为:" + patientInfoVOList.get(0).getPatientName());
+ return patientInfoArray;
+ }
+ } catch (Exception e) {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ e.printStackTrace(new PrintStream(baos));
+ String exception = baos.toString();
+ logger.error("根据病人诊疗号查询病人信息失败" + exception);
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+}
Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/szslhqzxyy/DatasyncConstant.java
===================================================================
diff -u
--- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/szslhqzxyy/DatasyncConstant.java (revision 0)
+++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/szslhqzxyy/DatasyncConstant.java (revision 31346)
@@ -0,0 +1,44 @@
+package com.forgon.disinfectsystem.datasynchronization.dao.szslhqzxyy;
+
+/**
+ * 深圳市龙华区中心医院接口相关常量
+ * @author ZhouPeiMian
+ * @since 2021-05-18
+ *
+ */
+public class DatasyncConstant {
+
+ /**
+ * HTTP接口地址http://10.254.147.41/hipmessage/CSSD
+ */
+ public final static String URL = "http://10.254.147.41/hipmessage/CSSD";
+
+ /**
+ * 获取门诊病人信息的serviceCode(入参)
+ */
+ public final static String ServiceCode_MZ = "S0025";
+
+ public final static String ServiceName_MZ = "门诊就诊信息查询服务";
+
+ /**
+ * 获取门诊病人信息的eventCode(入参)
+ */
+ public final static String EventCode_MZ = "E002501";
+
+ public final static String EventName_MZ = "查询门诊就诊信息";
+
+
+ /**
+ * 获取住院病人信息的serviceCode(入参)
+ */
+ public final static String ServiceCode_ZY = "S0028";
+
+ public final static String ServiceName_ZY = "住院就诊信息查询服务";
+
+ /**
+ * 获取住院病人信息的eventCode(入参)
+ */
+ public final static String EventCode_ZY = "E002803";
+
+ public final static String EventName_ZY = "查询患者最近一次住院信息";
+}