@ -4,6 +4,7 @@ package com.docus.webservice.handler;
import com.alibaba.fastjson.JSON ;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper ;
import com.docus.webservice.dto.SelectColumn ;
import com.docus.webservice.dto.SystemCollectConfig ;
import com.docus.webservice.entity.* ;
import com.docus.webservice.enums.Codes ;
@ -17,6 +18,7 @@ import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger ;
import org.springframework.beans.factory.annotation.Autowired ;
import javax.annotation.Resource ;
import javax.jws.WebService ;
import java.io.ByteArrayInputStream ;
import java.io.File ;
@ -24,6 +26,9 @@ import java.io.IOException;
import java.io.UnsupportedEncodingException ;
import java.text.SimpleDateFormat ;
import java.util.* ;
import java.util.concurrent.CompletableFuture ;
import java.util.concurrent.CopyOnWriteArrayList ;
import java.util.concurrent.ThreadPoolExecutor ;
@WebService
public class TBasicWebService implements ITBasicWebService {
@ -53,6 +58,8 @@ public class TBasicWebService implements ITBasicWebService {
private TSealMapper tSealMapper ;
private Logger log = LogManager . getLogger ( TBasicWebService . class ) ;
@Resource
private ThreadPoolExecutor threadPoolExecutor ;
/ * *
* 获 取 jar 包 所 在 位 置
@ -81,85 +88,428 @@ public class TBasicWebService implements ITBasicWebService {
mrReportErrorService . save ( mrReportError ) ;
}
// /**
// * 住院成员信息新增
// *
// * @param tbasic
// * @return
// */
// @Override
// public String OUT_HOS_REG(String tbasic) {
// log.info("住院成员信息新增xml" + tbasic);
// try {
// //解析xml
// HashMap<String, Object> tBasicMap = new HashMap<>();
// HashMap<String, Object> tBasicSubMap = new HashMap<>();
// HashMap dateMap = new HashMap<>();
// // Date disDate=null;
// parseXml(tbasic, tBasicMap, tBasicSubMap, dateMap);
// //处理业务
// TBasic tBasic;
// if (tBasicMap != null && tBasicMap.size() > 0) {
// tBasic = JSON.parseObject(JSON.toJSONString(tBasicMap), TBasic.class);
//// if(StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))||StringUtils.isNotBlank(String.valueOf("is_dead"))){
//// String isDead=StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))?String.valueOf(tBasicMap.get("isDead")):String.valueOf(tBasicMap.get("is_dead"));
//// tBasic.setIsDead(isDead);
//// }
// //特殊处理出院时间 没有就取当前时间
// Date currentDate = new Date();
//// if(tBasic.getDisDate()==null){
//// tBasic.setDisDate(currentDate);
//// }
// //tBasic.setCreateTime(currentDate);
// tBasic.setCreateTime(currentDate);
// itBasicService.savaAndSub(tBasic, tBasicSubMap,String.valueOf(dateMap.get("preJzh")));
// // this.saveAndCall(tBasic);
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// SimpleDateFormat sdf1 = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy",Locale.US);
// if (dateMap.size() > 1) {
// Date admissDate = sdf1.parse(String.valueOf(dateMap.get("admissDate")));
// Date disDate = sdf1.parse(String.valueOf(dateMap.get("disDate")));
// tBasic.setAdmissDate(sdf.parse(sdf.format(admissDate)));
// tBasic.setDisDate(sdf.parse(sdf.format(disDate)));
// tBasic.setInpatientNo(dateMap.get("inpatientNo").toString());
// }
// pcmachineService.saveAndCall(tBasic);
// } else {
// insertLog(tbasic);
// log.info("请提供完整的xml");
// return ResultUtils.fail("请提供完整的xml");
// }
// } catch (RuntimeException e) {
// insertLog(tbasic);
// log.error("OUT_HOS_REG方法中错误信息:" + e.getMessage());
// return ResultUtils.fail(e.getMessage());
// } catch (Exception e) {
// e.printStackTrace();
// log.error("OUT_HOS_REG方法中错误信息:" + e.getMessage());
// return ResultUtils.fail(e.getMessage());
// }
// log.info("OUT_HOS_REG返回结果:" + ResultUtils.success().asXML());
// return ResultUtils.success().asXML();
// }
//
//
// /**
// * 住院解析xml
// *
// * @param tbasic
// * @param tBasicMap
// * @param tBasicSubMap
// */
// private void parseXml(String tbasic, HashMap<String, Object> tBasicMap, HashMap<String, Object> tBasicSubMap, HashMap dateMap) {
// XmlUtils xmlUtils = null;
// log.info("开始解析xml");
// try {
// xmlUtils = new XmlUtils(new ByteArrayInputStream(tbasic.getBytes("UTF-8")));
// } catch (UnsupportedEncodingException e) {
// e.printStackTrace();
// }
// //解析json映射文件
// String json = JsonUtils.readJsonFile(CurrentPath() + Codes.JSON_ADDRESS.getMessage());
// Map jsonMap = JSON.parseObject(json, Map.class);
//
// List<SelectColumn> selectColumns = JSON.parseArray(String.valueOf(jsonMap.get(Codes.SELECT_COLUMNS.getMessage())), SelectColumn.class);
// String value;
// for (SelectColumn selectColumn : selectColumns) {
// try {
// value = xmlUtils.getElementText(selectColumn.getQualityColumn()) == null ? null : String.valueOf(xmlUtils.getElementText(selectColumn.getQualityColumn()));
// } catch (RuntimeException e) {
// String message = e.getMessage();
// log.error("解析xml出现:" + message);
// throw new RuntimeException(message);
// }
// if (StringUtils.isBlank(value)) {
// if (selectColumn.getByNull() == 0) {
// insertLog(tbasic);
// log.error(selectColumn.getQualityColumn() + " 字段不能为空值");
// throw new RuntimeException(selectColumn.getQualityColumn() + " 字段不能为空值");
// } else {
// continue;
// }
// } else {
// if (selectColumn.getTableName().equals("t_basic")) {
// tBasicMap.put(selectColumn.getColumnName(), value);
// }
// if (selectColumn.getTableName().equals("t_basic_sub")) {
// tBasicSubMap.put(selectColumn.getColumnName(), value);
// }
// }
// }
// try {
// String preJzh = xmlUtils.getElementText("PRE_INHOSP_NO");
// System.err.println(preJzh);
// if (null != preJzh && !"".equals(preJzh)) {
// //预住院患者记录
// TBasic tBasic = tBasicMapper.selectOne(new QueryWrapper<TBasic>().eq("jzh", preJzh));
// //正式住院患者记录
// TBasic tBasic1 = tBasicMapper.selectOne(new QueryWrapper<TBasic>().eq("jzh", tBasicMap.get("jzh")));
// if (null != tBasic && null != tBasic1) {
// dateMap.put("admissDate", tBasic.getAdmissDate().toString());
// dateMap.put("disDate", tBasic1.getAdmissDate().toString());
// dateMap.put("inpatientNo", tBasic.getInpatientNo());
// //将预住院患者病历文件patient_id改为正式住院的patient_id, 合并病历
// int i = tScanAssortMapper.updateByPatientId(tBasic1.getPatientId(), tBasic.getPatientId());
// if (i <= 0) {
// log.info("当前预住院没有文件!");
// }else {
// log.info( tBasic1.getJzh()+"本次预住院合并"+i+"份报告");
// }
// } else {
// log.error("正式住院: "+tBasicMap.get("jzh") + " 预住院或正式住院患者不存在!");
// }
// }
// dateMap.put("preJzh",preJzh);
// } catch (Exception e) {
// log.error("预住院错误信息{}", e.getMessage());
// }
//
// }
//
// /**
// * 住院成员信息修改
// *
// * @param tbasic
// * @return
// */
// @Override
// public String OUT_HOS_CAN(String tbasic) {
// log.info("住院成员信息修改xml" + tbasic);
// try {
// long l = System.currentTimeMillis();
// HashMap<String, Object> tBasicMap = new HashMap<>();
// HashMap<String, Object> tBasicSubMap = new HashMap<>();
// HashMap<String, Date> dateMap = new HashMap<>();
// //parseXml(tbasic, tBasicMap, tBasicSubMap);
// parseXml(tbasic, tBasicMap, tBasicSubMap, dateMap);
// TBasic tBasic;
// XmlUtils xmlUtils = new XmlUtils(new ByteArrayInputStream(tbasic.getBytes("UTF-8")));
// String elementText = xmlUtils.getElementText("IS_ADM_CANCEL");
// if (elementText.equals("1")) {
// tBasic = JSON.parseObject(JSON.toJSONString(tBasicMap), TBasic.class);
// tBasic.setIsCancel("1");
// int update = tBasicMapper.update(tBasic, new QueryWrapper<TBasic>().eq("jzh", tBasic.getJzh()));
// if (update > 0) {
// log.info(tBasic.getJzh() + "取消入院成功!");
// }
//
// } else {
// long l1 = System.currentTimeMillis();
// log.info("解析xml时间------" + (l1 - l));
// //处理业务
// long l2 = System.currentTimeMillis();
//
// if (tBasicMap != null && tBasicMap.size() > 0) {
// long l3 = System.currentTimeMillis();
// tBasic = JSON.parseObject(JSON.toJSONString(tBasicMap), TBasic.class);
//// if(StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))||StringUtils.isNotBlank(String.valueOf("is_dead"))){
//// String isDead=StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))?String.valueOf(tBasicMap.get("isDead")):String.valueOf(tBasicMap.get("is_dead"));
//// tBasic.setIsDead(isDead);
//// }
// long l4 = System.currentTimeMillis();
// log.info("获取tBasic对象时间----------" + (l4 - l3));
// if (StringUtils.isBlank(tBasic.getEmpId())) {
// insertLog(tbasic);
// log.info("emp_id字段不能为空值");
// return ResultUtils.fail("emp_id字段不能为空值");
// }
// long l5 = System.currentTimeMillis();
// tBasic.setUpdateTime(new Date());
// try {
// itBasicService.updateAndSub(tBasic, tBasicSubMap,String.valueOf(dateMap.get("preJzh")));
//// this.saveAndCall(tBasic);
// long l6 = System.currentTimeMillis();
// log.info("update耗时----------" + (l6 - l5));
// long l7 = System.currentTimeMillis();
// tBasic.setAdmissDate(dateMap.get("admissDate"));
// tBasic.setDisDate(dateMap.get("disDate"));
// pcmachineService.saveAndCall(tBasic);
// long l8 = System.currentTimeMillis();
// log.info("saveAndCall耗时-------" + (l8 - l7));
// } catch (RuntimeException e) {
// insertLog(tbasic);
// e.printStackTrace();
// log.error("OUT_HOS_CAN方法中错误信息:" + e.getMessage());
// return ResultUtils.fail(e.getMessage());
// }
// } else {
// insertLog(tbasic);
// return ResultUtils.fail("请提供完整的xml");
// }
// long l3 = System.currentTimeMillis();
// log.info("业务处理时间------------" + (l3 - l2));
// }
//
// } catch (Exception e) {
// e.printStackTrace();
// log.error("OUT_HOS_CAN方法中错误信息:" + e.getMessage());
// return ResultUtils.fail(e.getMessage());
// }
// log.info("OUT_HOS_CAN方法运行结果:" + ResultUtils.success().asXML());
// return ResultUtils.success().asXML();
// }
//
//
// /**
// * 出院成员信息新增
// *
// * @param tbasic
// * @return
// */
// @Override
// public String DISCHARGE_REG(String tbasic) {
// log.info("出院成员信息新增xml" + tbasic);
// try {
// //解析xml
// HashMap<String, Object> tBasicMap = new HashMap<>();
// HashMap<String, Object> tBasicSubMap = new HashMap<>();
// HashMap<String, Object> tBasicExtendMap = new HashMap<>();
// OutParseXml(tbasic, tBasicMap, tBasicSubMap, tBasicExtendMap);
// //处理业务
// TBasic tBasic;
// XmlUtils xmlUtils = new XmlUtils(new ByteArrayInputStream(tbasic.getBytes("UTF-8")));
//// String elementText = xmlUtils.getElementText("IS_ADM_CANCEL");
//// if (elementText.equals("1")) {
//// tBasic = JSON.parseObject(JSON.toJSONString(tBasicMap), TBasic.class);
//// tBasic.setIsCancel("1");
//// int update = tBasicMapper.update(tBasic, new QueryWrapper<TBasic>().eq("jzh", tBasic.getJzh()));
//// if (update > 0) {
//// log.info(tBasic.getJzh() + "取消入院成功!");
//// }
////
//// }else {
// TBasicExtend tBasicExtend;
// if (tBasicMap != null && tBasicMap.size() > 0) {
// tBasic = JSON.parseObject(JSON.toJSONString(tBasicMap), TBasic.class);
// tBasicExtend = JSON.parseObject(JSON.toJSONString(tBasicExtendMap), TBasicExtend.class);
// tBasicExtend.setPatientId(tBasic.getPatientId());
//// if(StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))||StringUtils.isNotBlank(String.valueOf("is_dead"))){
//// String isDead=StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))?String.valueOf(tBasicMap.get("isDead")):String.valueOf(tBasicMap.get("is_dead"));
//// tBasic.setIsDead(isDead);
//// }
// //特殊处理出院时间 没有就取当前时间
//
//// if(tBasic.getDisDate()==null){
//// tBasic.setDisDate(currentDate);
//// }
// //tBasic.setCreateTime(currentDate);
//
// itBasicService.OutSavaAndSub(tBasic, tBasicSubMap, tBasicExtend);
// // this.saveAndCall(tBasic);
// pcmachineService.saveAndCallOut(tBasic);
// } else {
// insertLog(tbasic);
// log.info("请提供完整的xml");
// return ResultUtils.fail("请提供完整的xml");
// }
// // }
// } catch (RuntimeException e) {
// insertLog(tbasic);
// log.error("DISCHARGE_REG方法中错误信息:" + e.getMessage());
// return ResultUtils.fail(e.getMessage());
// } catch (Exception e) {
// e.printStackTrace();
// log.error("DISCHARGE_REG方法中错误信息:" + e.getMessage());
// return ResultUtils.fail(e.getMessage());
// }
// log.info("DISCHARGE_REG返回结果:" + ResultUtils.success().asXML());
// return ResultUtils.success().asXML();
// }
//
// /**
// * 出院成员信息修改
// *
// * @param tbasic
// * @return
// */
// @Override
// public String DISCHARGE_CAN(String tbasic) {
// log.info("出院成员信息修改xml" + tbasic);
//
// try {
//
// long l = System.currentTimeMillis();
// HashMap<String, Object> tBasicMap = new HashMap<>();
// HashMap<String, Object> tBasicSubMap = new HashMap<>();
// HashMap<String, Object> tBasicExtendMap = new HashMap<>();
// TBasic tBasic;
// TBasicExtend tBasicExtend;
// OutParseXml(tbasic, tBasicMap, tBasicSubMap, tBasicExtendMap);
// long l1 = System.currentTimeMillis();
// log.info("解析xml时间------" + (l1 - l));
// //处理业务
// long l2 = System.currentTimeMillis();
//
// if (tBasicMap != null && tBasicMap.size() > 0) {
// long l3 = System.currentTimeMillis();
// tBasic = JSON.parseObject(JSON.toJSONString(tBasicMap), TBasic.class);
// tBasicExtend = JSON.parseObject(JSON.toJSONString(tBasicExtendMap), TBasicExtend.class);
// tBasicExtend.setPatientId(tBasic.getPatientId());
//// if(StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))||StringUtils.isNotBlank(String.valueOf("is_dead"))){
//// String isDead=StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))?String.valueOf(tBasicMap.get("isDead")):String.valueOf(tBasicMap.get("is_dead"));
//// tBasic.setIsDead(isDead);
//// }
// long l4 = System.currentTimeMillis();
// log.info("获取tBasic对象时间----------" + (l4 - l3));
// if (StringUtils.isBlank(tBasic.getJzh())) {
// insertLog(tbasic);
// log.info("INHOSP_NO字段不能为空值");
// return ResultUtils.fail("INHOSP_NO字段不能为空值");
// }
// long l5 = System.currentTimeMillis();
// tBasic.setUpdateTime(new Date());
// try {
// itBasicService.OutUpdateAndSub(tBasic, tBasicSubMap, tBasicExtend);
//// this.saveAndCall(tBasic);
// long l6 = System.currentTimeMillis();
// log.info("update耗时----------" + (l6 - l5));
// long l7 = System.currentTimeMillis();
// pcmachineService.saveAndCallOut(tBasic);
// long l8 = System.currentTimeMillis();
// log.info("saveAndCall耗时-------" + (l8 - l7));
// } catch (RuntimeException e) {
// insertLog(tbasic);
// e.printStackTrace();
// log.error("DISCHARGE_CAN方法中错误信息:" + e.getMessage());
// return ResultUtils.fail(e.getMessage());
// }
// } else {
// insertLog(tbasic);
// return ResultUtils.fail("请提供完整的xml");
// }
// long l3 = System.currentTimeMillis();
// log.info("业务处理时间------------" + (l3 - l2));
// } catch (Exception e) {
// e.printStackTrace();
// log.error("DISCHARGE_CAN方法中错误信息:" + e.getMessage());
// return ResultUtils.fail(e.getMessage());
// }
// log.info("DISCHARGE_CAN方法运行结果:" + ResultUtils.success().asXML());
// return ResultUtils.success().asXML();
// }
//
/ * *
* 住 院 成 员 信 息 新 增
* 病案 封 存
*
* @param tbasic
* @param t seal
* @return
* /
@Override
public String OUT_HOS_REG ( String tbasic ) {
log . info ( "住院成员信息新增xml" + tbasic ) ;
public String MEDICAL_RECORD_SEAL( String tseal ) {
log . info ( " 病案封存" + tseal ) ;
try {
//解析xml
HashMap < String , Object > tBasicMap = new HashMap < > ( ) ;
HashMap < String , Object > tBasicSubMap = new HashMap < > ( ) ;
HashMap dateMap = new HashMap < > ( ) ;
// Date disDate=null;
parseXml ( tbasic , tBasicMap , tBasicSubMap , dateMap ) ;
HashMap < String , Object > tSealMap = new HashMap < > ( ) ;
SealParseXml ( tseal , tSealMap ) ;
//处理业务
TBasic tBasic ;
if ( tBasicMap ! = null & & tBasicMap . size ( ) > 0 ) {
tBasic = JSON . parseObject ( JSON . toJSONString ( tBasicMap ) , TBasic . class ) ;
// if(StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))||StringUtils.isNotBlank(String.valueOf("is_dead"))){
// String isDead=StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))?String.valueOf(tBasicMap.get("isDead")):String.valueOf(tBasicMap.get("is_dead"));
// tBasic.setIsDead(isDead);
// }
//特殊处理出院时间 没有就取当前时间
Date currentDate = new Date ( ) ;
// if(tBasic.getDisDate()==null){
// tBasic.setDisDate(currentDate);
// }
//tBasic.setCreateTime(currentDate);
tBasic . setCreateTime ( currentDate ) ;
itBasicService . savaAndSub ( tBasic , tBasicSubMap , String . valueOf ( dateMap . get ( "preJzh" ) ) ) ;
// this.saveAndCall(tBasic);
SimpleDateFormat sdf = new SimpleDateFormat ( "yyyy-MM-dd HH:mm:ss" ) ;
SimpleDateFormat sdf1 = new SimpleDateFormat ( "EEE MMM dd HH:mm:ss zzz yyyy" , Locale . US ) ;
if ( dateMap . size ( ) > 1 ) {
Date admissDate = sdf1 . parse ( String . valueOf ( dateMap . get ( "admissDate" ) ) ) ;
Date disDate = sdf1 . parse ( String . valueOf ( dateMap . get ( "disDate" ) ) ) ;
tBasic . setAdmissDate ( sdf . parse ( sdf . format ( admissDate ) ) ) ;
tBasic . setDisDate ( sdf . parse ( sdf . format ( disDate ) ) ) ;
tBasic . setInpatientNo ( dateMap . get ( "inpatientNo" ) . toString ( ) ) ;
TSeal tSeal ;
if ( tSealMap ! = null & & tSealMap . size ( ) > 0 ) {
tSeal = JSON . parseObject ( JSON . toJSONString ( tSealMap ) , TSeal . class ) ;
int insert = tSealMapper . insert ( tSeal ) ;
if ( insert > 0 ) {
log . info ( tSeal . getJzh ( ) + "----封存信息插入成功!" ) ;
} else {
log . info ( tSeal . getJzh ( ) + "----封存信息插入失败!" ) ;
}
pcmachineService . saveAndCall ( tBasic ) ;
sealCollect ( tSeal . getSealId ( ) ) ;
} else {
insertLog ( tbasic ) ;
insertLog ( tseal ) ;
log . info ( "请提供完整的xml" ) ;
return ResultUtils . fail ( "请提供完整的xml" ) ;
}
} catch ( RuntimeException e ) {
insertLog ( tbasic ) ;
log . error ( "OUT_HOS_REG方法中错误信息:" + e . getMessage ( ) ) ;
insertLog ( tseal ) ;
log . error ( "MEDICAL_RECORD_SEAL方法中错误信息:" + e . getMessage ( ) ) ;
return ResultUtils . fail ( e . getMessage ( ) ) ;
} catch ( Exception e ) {
e . printStackTrace ( ) ;
log . error ( "OUT_HOS_REG方法中错误信息:" + e . getMessage ( ) ) ;
log . error ( "MEDICAL_RECORD_SEAL中错误信息:" + e . getMessage ( ) ) ;
return ResultUtils . fail ( e . getMessage ( ) ) ;
}
log . info ( "OUT_HOS_REG返回结果:" + ResultUtils . success ( ) . asXML ( ) ) ;
log . info ( " MEDICAL_RECORD_SEAL 返回结果:" + ResultUtils . success ( ) . asXML ( ) ) ;
return ResultUtils . success ( ) . asXML ( ) ;
}
/ * *
* 住 院 解 析 xml
*
* @param tbasic
* @param tBasicMap
* @param tBasicSubMap
// * 封存解析xml
// *
// * @param tSeal
// * @param tSealMap
* /
private void parseXml ( String tbasic , HashMap < String , Object > tBasicMap , HashMap < String , Object > tBasicSubMap , HashMap dateMap ) {
private void SealParseXml( String tSeal , HashMap < String , Object > tSeal Map) {
XmlUtils xmlUtils = null ;
log . info ( "开始解析xml" ) ;
try {
xmlUtils = new XmlUtils ( new ByteArrayInputStream ( tbasic . getBytes ( "UTF-8" ) ) ) ;
xmlUtils = new XmlUtils ( new ByteArrayInputStream ( t Seal . getBytes ( "UTF-8" ) ) ) ;
} catch ( UnsupportedEncodingException e ) {
e . printStackTrace ( ) ;
}
if ( StringUtils . isBlank ( xmlUtils . getElementText ( "SEAL_ID" ) ) ) {
log . error ( "SEAL_ID 字段不能为空值" ) ;
throw new RuntimeException ( "SEAL_ID 字段不能为空值" ) ;
}
//解析json映射文件
String json = JsonUtils . readJsonFile ( CurrentPath ( ) + Codes . JSON_ADDRESS . getMessage ( ) ) ;
String json = JsonUtils . readJsonFile ( CurrentPath ( ) + Codes . JSON_ SEAL_ ADDRESS. getMessage ( ) ) ;
Map jsonMap = JSON . parseObject ( json , Map . class ) ;
List < SelectColumn > selectColumns = JSON . parseArray ( String . valueOf ( jsonMap . get ( Codes . SELECT_COLUMNS . getMessage ( ) ) ) , SelectColumn . class ) ;
@ -174,334 +524,92 @@ public class TBasicWebService implements ITBasicWebService {
}
if ( StringUtils . isBlank ( value ) ) {
if ( selectColumn . getByNull ( ) = = 0 ) {
insertLog ( t basic ) ;
insertLog ( t Seal ) ;
log . error ( selectColumn . getQualityColumn ( ) + " 字段不能为空值" ) ;
throw new RuntimeException ( selectColumn . getQualityColumn ( ) + " 字段不能为空值" ) ;
} else {
continue ;
}
} else {
if ( selectColumn . getTableName ( ) . equals ( "t_basic" ) ) {
tBasicMap . put ( selectColumn . getColumnName ( ) , value ) ;
}
if ( selectColumn . getTableName ( ) . equals ( "t_basic_sub" ) ) {
tBasicSubMap . put ( selectColumn . getColumnName ( ) , value ) ;
if ( selectColumn . getTableName ( ) . equals ( "t_seal" ) ) {
tSealMap . put ( selectColumn . getColumnName ( ) , value ) ;
}
}
}
try {
String preJzh = xmlUtils . getElementText ( "PRE_INHOSP_NO" ) ;
System . err . println ( preJzh ) ;
if ( null ! = preJzh & & ! "" . equals ( preJzh ) ) {
//预住院患者记录
TBasic tBasic = tBasicMapper . selectOne ( new QueryWrapper < TBasic > ( ) . eq ( "jzh" , preJzh ) ) ;
//正式住院患者记录
TBasic tBasic1 = tBasicMapper . selectOne ( new QueryWrapper < TBasic > ( ) . eq ( "jzh" , tBasicMap . get ( "jzh" ) ) ) ;
if ( null ! = tBasic & & null ! = tBasic1 ) {
dateMap . put ( "admissDate" , tBasic . getAdmissDate ( ) . toString ( ) ) ;
dateMap . put ( "disDate" , tBasic1 . getAdmissDate ( ) . toString ( ) ) ;
dateMap . put ( "inpatientNo" , tBasic . getInpatientNo ( ) ) ;
//将预住院患者病历文件patient_id改为正式住院的patient_id, 合并病历
int i = tScanAssortMapper . updateByPatientId ( tBasic1 . getPatientId ( ) , tBasic . getPatientId ( ) ) ;
if ( i < = 0 ) {
log . info ( "当前预住院没有文件!" ) ;
} else {
log . info ( tBasic1 . getJzh ( ) + "本次预住院合并" + i + "份报告" ) ;
}
} else {
log . error ( "正式住院: " + tBasic1 . getJzh ( ) + " 预住院或正式住院患者不存在!" ) ;
}
}
dateMap . put ( "preJzh" , preJzh ) ;
} catch ( Exception e ) {
log . error ( "预住院错误信息{}" , e . getMessage ( ) ) ;
}
}
/ * *
* 住 院 成 员 信 息 修 改
*
* @param tbasic
* @return
* /
@Override
public String OUT_HOS_CAN ( String tbasic ) {
log . info ( "住院成员信息修改xml" + tbasic ) ;
private void sealCollect ( String sealId ) {
final String systemCollectConfigFileName = "dataConfig" + File . separator + "SystemCollectConfig" ;
List < SystemCollectConfig . CollectConfig > sealCollectConfigs ;
try {
long l = System . currentTimeMillis ( ) ;
HashMap < String , Object > tBasicMap = new HashMap < > ( ) ;
HashMap < String , Object > tBasicSubMap = new HashMap < > ( ) ;
HashMap < String , Date > dateMap = new HashMap < > ( ) ;
//parseXml(tbasic, tBasicMap, tBasicSubMap);
parseXml ( tbasic , tBasicMap , tBasicSubMap , dateMap ) ;
TBasic tBasic ;
XmlUtils xmlUtils = new XmlUtils ( new ByteArrayInputStream ( tbasic . getBytes ( "UTF-8" ) ) ) ;
String elementText = xmlUtils . getElementText ( "IS_ADM_CANCEL" ) ;
if ( elementText . equals ( "1" ) ) {
tBasic = JSON . parseObject ( JSON . toJSONString ( tBasicMap ) , TBasic . class ) ;
tBasic . setIsCancel ( "1" ) ;
int update = tBasicMapper . update ( tBasic , new QueryWrapper < TBasic > ( ) . eq ( "jzh" , tBasic . getJzh ( ) ) ) ;
if ( update > 0 ) {
log . info ( tBasic . getJzh ( ) + "取消入院成功!" ) ;
}
String configJson = FileUtils . readJsonFromCurrentProject ( systemCollectConfigFileName ) ;
} else {
long l1 = System . currentTimeMillis ( ) ;
log . info ( "解析xml时间------" + ( l1 - l ) ) ;
//处理业务
long l2 = System . currentTimeMillis ( ) ;
if ( tBasicMap ! = null & & tBasicMap . size ( ) > 0 ) {
long l3 = System . currentTimeMillis ( ) ;
tBasic = JSON . parseObject ( JSON . toJSONString ( tBasicMap ) , TBasic . class ) ;
// if(StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))||StringUtils.isNotBlank(String.valueOf("is_dead"))){
// String isDead=StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))?String.valueOf(tBasicMap.get("isDead")):String.valueOf(tBasicMap.get("is_dead"));
// tBasic.setIsDead(isDead);
// }
long l4 = System . currentTimeMillis ( ) ;
log . info ( "获取tBasic对象时间----------" + ( l4 - l3 ) ) ;
if ( StringUtils . isBlank ( tBasic . getEmpId ( ) ) ) {
insertLog ( tbasic ) ;
log . info ( "emp_id字段不能为空值" ) ;
return ResultUtils . fail ( "emp_id字段不能为空值" ) ;
}
long l5 = System . currentTimeMillis ( ) ;
tBasic . setUpdateTime ( new Date ( ) ) ;
try {
itBasicService . updateAndSub ( tBasic , tBasicSubMap , String . valueOf ( dateMap . get ( "preJzh" ) ) ) ;
// this.saveAndCall(tBasic);
long l6 = System . currentTimeMillis ( ) ;
log . info ( "update耗时----------" + ( l6 - l5 ) ) ;
long l7 = System . currentTimeMillis ( ) ;
tBasic . setAdmissDate ( dateMap . get ( "admissDate" ) ) ;
tBasic . setDisDate ( dateMap . get ( "disDate" ) ) ;
pcmachineService . saveAndCall ( tBasic ) ;
long l8 = System . currentTimeMillis ( ) ;
log . info ( "saveAndCall耗时-------" + ( l8 - l7 ) ) ;
} catch ( RuntimeException e ) {
insertLog ( tbasic ) ;
e . printStackTrace ( ) ;
log . error ( "OUT_HOS_CAN方法中错误信息:" + e . getMessage ( ) ) ;
return ResultUtils . fail ( e . getMessage ( ) ) ;
}
} else {
insertLog ( tbasic ) ;
return ResultUtils . fail ( "请提供完整的xml" ) ;
SystemCollectConfig systemCollectConfig = JSON . parseObject ( configJson , SystemCollectConfig . class ) ;
String sealCollectClassify = systemCollectConfig . getSealCollectClassify ( ) ;
if ( ! SystemCollectConfig . Classify . SEAL_COLLECT . getClassify ( ) . equals ( sealCollectClassify ) ) {
throw new RuntimeException ( "封存病案采集配置未配置!" ) ;
}
sealCollectConfigs = systemCollectConfig . getSealCollectConfigs ( ) ;
for ( SystemCollectConfig . CollectConfig config : sealCollectConfigs ) {
if ( StringUtils . isBlank ( config . getDesc ( ) ) | | StringUtils . isBlank ( config . getUrl ( ) ) ) {
throw new RuntimeException ( "封存病案采集配置中描述和地址不能为空!" ) ;
}
long l3 = System . currentTimeMillis ( ) ;
log . info ( "业务处理时间------------" + ( l3 - l2 ) ) ;
}
} catch ( Exception e ) {
e . printStackTrace ( ) ;
log . error ( "OUT_HOS_CAN方法中错误信息:" + e . getMessage ( ) ) ;
return ResultUtils . fail ( e . getMessage ( ) ) ;
} catch ( RuntimeException runtimeException ) {
log . error ( runtimeException . getMessage ( ) , runtimeException ) ;
return ;
} catch ( Exception ex ) {
log . error ( "封存病案获取采集配置出现未知错误!" , ex ) ;
return ;
}
log . info ( "OUT_HOS_CAN方法运行结果:" + ResultUtils . success ( ) . asXML ( ) ) ;
return ResultUtils . success ( ) . asXML ( ) ;
}
/ * *
* 出 院 成 员 信 息 新 增
*
* @param tbasic
* @return
* /
@Override
public String DISCHARGE_REG ( String tbasic ) {
log . info ( "出院成员信息新增xml" + tbasic ) ;
try {
//解析xml
HashMap < String , Object > tBasicMap = new HashMap < > ( ) ;
HashMap < String , Object > tBasicSubMap = new HashMap < > ( ) ;
HashMap < String , Object > tBasicExtendMap = new HashMap < > ( ) ;
OutParseXml ( tbasic , tBasicMap , tBasicSubMap , tBasicExtendMap ) ;
//处理业务
TBasic tBasic ;
XmlUtils xmlUtils = new XmlUtils ( new ByteArrayInputStream ( tbasic . getBytes ( "UTF-8" ) ) ) ;
String elementText = xmlUtils . getElementText ( "IS_ADM_CANCEL" ) ;
if ( elementText . equals ( "1" ) ) {
tBasic = JSON . parseObject ( JSON . toJSONString ( tBasicMap ) , TBasic . class ) ;
tBasic . setIsCancel ( "1" ) ;
int update = tBasicMapper . update ( tBasic , new QueryWrapper < TBasic > ( ) . eq ( "jzh" , tBasic . getJzh ( ) ) ) ;
if ( update > 0 ) {
log . info ( tBasic . getJzh ( ) + "取消入院成功!" ) ;
}
} else {
TBasicExtend tBasicExtend ;
if ( tBasicMap ! = null & & tBasicMap . size ( ) > 0 ) {
tBasic = JSON . parseObject ( JSON . toJSONString ( tBasicMap ) , TBasic . class ) ;
tBasicExtend = JSON . parseObject ( JSON . toJSONString ( tBasicExtendMap ) , TBasicExtend . class ) ;
tBasicExtend . setPatientId ( tBasic . getPatientId ( ) ) ;
// if(StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))||StringUtils.isNotBlank(String.valueOf("is_dead"))){
// String isDead=StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))?String.valueOf(tBasicMap.get("isDead")):String.valueOf(tBasicMap.get("is_dead"));
// tBasic.setIsDead(isDead);
// }
//特殊处理出院时间 没有就取当前时间
// if(tBasic.getDisDate()==null){
// tBasic.setDisDate(currentDate);
// }
//tBasic.setCreateTime(currentDate);
itBasicService . OutSavaAndSub ( tBasic , tBasicSubMap , tBasicExtend ) ;
// this.saveAndCall(tBasic);
pcmachineService . saveAndCallOut ( tBasic ) ;
} else {
insertLog ( tbasic ) ;
log . info ( "请提供完整的xml" ) ;
return ResultUtils . fail ( "请提供完整的xml" ) ;
}
// 添加封存采集任务的容器
List < CompletableFuture < Void > > completableFutureList = new CopyOnWriteArrayList < > ( ) ;
for ( SystemCollectConfig . CollectConfig config : sealCollectConfigs ) {
CompletableFuture < Void > completableFuture = CompletableFuture . runAsync ( ( ) - > {
sealCollect ( sealId , config ) ;
} , threadPoolExecutor ) ;
completableFutureList . add ( completableFuture ) ;
}
// 封存采集任务的容器不为空,阻塞到所有任务完成
if ( ! completableFutureList . isEmpty ( ) ) {
CompletableFuture < Void > allFutures = CompletableFuture . allOf ( completableFutureList . toArray ( new CompletableFuture [ 0 ] ) ) ;
try {
allFutures . get ( ) ;
} catch ( Exception ex ) {
log . error ( ex . getMessage ( ) , ex ) ;
}
} catch ( RuntimeException e ) {
insertLog ( tbasic ) ;
log . error ( "DISCHARGE_REG方法中错误信息:" + e . getMessage ( ) ) ;
return ResultUtils . fail ( e . getMessage ( ) ) ;
} catch ( Exception e ) {
e . printStackTrace ( ) ;
log . error ( "DISCHARGE_REG方法中错误信息:" + e . getMessage ( ) ) ;
return ResultUtils . fail ( e . getMessage ( ) ) ;
}
log . info ( "DISCHARGE_REG返回结果:" + ResultUtils . success ( ) . asXML ( ) ) ;
return ResultUtils . success ( ) . asXML ( ) ;
}
/ * *
* 出 院 成 员 信 息 修 改
*
* @param tbasic
* @return
* /
@Override
public String DISCHARGE_CAN ( String tbasic ) {
log . info ( "出院成员信息修改xml" + tbasic ) ;
private void sealCollect ( String sealId , SystemCollectConfig . CollectConfig config ) {
String url = config . getUrl ( ) + "?sealId=" + sealId ;
String desc = config . getDesc ( ) ;
try {
long l = System . currentTimeMillis ( ) ;
HashMap < String , Object > tBasicMap = new HashMap < > ( ) ;
HashMap < String , Object > tBasicSubMap = new HashMap < > ( ) ;
HashMap < String , Object > tBasicExtendMap = new HashMap < > ( ) ;
TBasic tBasic ;
TBasicExtend tBasicExtend ;
OutParseXml ( tbasic , tBasicMap , tBasicSubMap , tBasicExtendMap ) ;
long l1 = System . currentTimeMillis ( ) ;
log . info ( "解析xml时间------" + ( l1 - l ) ) ;
//处理业务
long l2 = System . currentTimeMillis ( ) ;
if ( tBasicMap ! = null & & tBasicMap . size ( ) > 0 ) {
long l3 = System . currentTimeMillis ( ) ;
tBasic = JSON . parseObject ( JSON . toJSONString ( tBasicMap ) , TBasic . class ) ;
tBasicExtend = JSON . parseObject ( JSON . toJSONString ( tBasicExtendMap ) , TBasicExtend . class ) ;
tBasicExtend . setPatientId ( tBasic . getPatientId ( ) ) ;
// if(StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))||StringUtils.isNotBlank(String.valueOf("is_dead"))){
// String isDead=StringUtils.isNotBlank(String.valueOf(tBasicMap.get("isDead")))?String.valueOf(tBasicMap.get("isDead")):String.valueOf(tBasicMap.get("is_dead"));
// tBasic.setIsDead(isDead);
// }
long l4 = System . currentTimeMillis ( ) ;
log . info ( "获取tBasic对象时间----------" + ( l4 - l3 ) ) ;
if ( StringUtils . isBlank ( tBasic . getJzh ( ) ) ) {
insertLog ( tbasic ) ;
log . info ( "INHOSP_NO字段不能为空值" ) ;
return ResultUtils . fail ( "INHOSP_NO字段不能为空值" ) ;
}
long l5 = System . currentTimeMillis ( ) ;
tBasic . setUpdateTime ( new Date ( ) ) ;
try {
itBasicService . OutUpdateAndSub ( tBasic , tBasicSubMap , tBasicExtend ) ;
// this.saveAndCall(tBasic);
long l6 = System . currentTimeMillis ( ) ;
log . info ( "update耗时----------" + ( l6 - l5 ) ) ;
long l7 = System . currentTimeMillis ( ) ;
pcmachineService . saveAndCallOut ( tBasic ) ;
long l8 = System . currentTimeMillis ( ) ;
log . info ( "saveAndCall耗时-------" + ( l8 - l7 ) ) ;
} catch ( RuntimeException e ) {
insertLog ( tbasic ) ;
e . printStackTrace ( ) ;
log . error ( "DISCHARGE_CAN方法中错误信息:" + e . getMessage ( ) ) ;
return ResultUtils . fail ( e . getMessage ( ) ) ;
}
} else {
insertLog ( tbasic ) ;
return ResultUtils . fail ( "请提供完整的xml" ) ;
}
long l3 = System . currentTimeMillis ( ) ;
log . info ( "业务处理时间------------" + ( l3 - l2 ) ) ;
} catch ( Exception e ) {
e . printStackTrace ( ) ;
log . error ( "DISCHARGE_CAN方法中错误信息:" + e . getMessage ( ) ) ;
return ResultUtils . fail ( e . getMessage ( ) ) ;
log . info ( "{},采集地址:{}" , desc , url ) ;
String result = HttpUtils . get ( url ) ;
log . info ( "{},采集地址:{},采集结果:{}" , desc , url , result ) ;
} catch ( Exception ex ) {
log . error ( desc + ",采集地址:" + url + ",采集失败!" , ex ) ;
}
log . info ( "DISCHARGE_CAN方法运行结果:" + ResultUtils . success ( ) . asXML ( ) ) ;
return ResultUtils . success ( ) . asXML ( ) ;
}
/ * *
* 病 案 封 存
*
* @param tseal
* @return
* /
// @Override
// public String MEDICAL_RECORD_SEAL(String tseal) {
// log.info("病案封存" + tseal);
// try {
// //解析xml
// HashMap<String, Object> tSealMap = new HashMap<>();
// SealParseXml(tseal, tSealMap);
// //处理业务
// TSeal tSeal;
// if (tSealMap != null && tSealMap.size() > 0) {
// tSeal = JSON.parseObject(JSON.toJSONString(tSealMap), TSeal.class);
// int insert = tSealMapper.insert(tSeal);
// if (insert > 0){
// log.info(tSeal.getJzh()+"----封存信息插入成功!");
// }else {
// log.info(tSeal.getJzh()+"----封存信息插入失败!");
// }
// } else {
// insertLog(tseal);
// log.info("请提供完整的xml");
// return ResultUtils.fail("请提供完整的xml");
// }
// } catch (RuntimeException e) {
// insertLog(tseal);
// log.error("MEDICAL_RECORD_SEAL方法中错误信息:" + e.getMessage());
// return ResultUtils.fail(e.getMessage());
// } catch (Exception e) {
// e.printStackTrace();
// log.error("MEDICAL_RECORD_SEAL中错误信息:" + e.getMessage());
// return ResultUtils.fail(e.getMessage());
// }
// log.info("MEDICAL_RECORD_SEAL返回结果:" + ResultUtils.success().asXML());
// return ResultUtils.success().asXML();
// }
// /**
// * 封存 解析xml
// * 出院解析xml
// *
// * @param tSeal
// * @param tSealMap
// * @param tbasic
// * @param tBasicMap
// * @param tBasicSubMap
// */
// private void SealParseXml(String tSeal, HashMap<String, Object> tSeal Map) {
// private void OutParseXml(String tbasic, HashMap<String, Object> tBasicMap, HashMap<String, Object> tBasicSubMap, HashMap<String, Object> tBasicExtendMap) {
// XmlUtils xmlUtils = null;
// log.info("开始解析xml");
// try {
// xmlUtils = new XmlUtils(new ByteArrayInputStream(t Seal .getBytes("UTF-8")));
// xmlUtils = new XmlUtils(new ByteArrayInputStream(tbasic.getBytes("UTF-8")));
// } catch (UnsupportedEncodingException e) {
// e.printStackTrace();
// }
//
// if (StringUtils.isBlank(xmlUtils.getElementText("SEAL_ID"))){
// log.error("SEAL_ID 字段不能为空值");
// throw new RuntimeException("SEAL_ID 字段不能为空值");
// }
// //解析json映射文件
// String json = JsonUtils.readJsonFile(CurrentPath() + Codes.JSON_ SEAL _ADDRESS.getMessage());
// String json = JsonUtils.readJsonFile(CurrentPath() + Codes.JSON_OUT_ADDRESS.getMessage());
// Map jsonMap = JSON.parseObject(json, Map.class);
//
// List<SelectColumn> selectColumns = JSON.parseArray(String.valueOf(jsonMap.get(Codes.SELECT_COLUMNS.getMessage())), SelectColumn.class);
@ -516,76 +624,32 @@ public class TBasicWebService implements ITBasicWebService {
// }
// if (StringUtils.isBlank(value)) {
// if (selectColumn.getByNull() == 0) {
// insertLog(t Seal );
// insertLog(t basic );
// log.error(selectColumn.getQualityColumn() + " 字段不能为空值");
// throw new RuntimeException(selectColumn.getQualityColumn() + " 字段不能为空值");
// } else {
// continue;
// }
// } else {
// if (selectColumn.getTableName().equals("t_seal")) {
// tSealMap.put(selectColumn.getColumnName(), value);
// if (selectColumn.getTableName().equals("t_basic")) {
// tBasicMap.put(selectColumn.getColumnName(), value);
// }
// if (selectColumn.getTableName().equals("t_basic_extend")) {
// tBasicExtendMap.put(selectColumn.getColumnName(), value);
// }
// if (selectColumn.getTableName().equals("t_basic_sub")) {
// tBasicSubMap.put(selectColumn.getColumnName(), value);
// }
// }
// }
// try {
// TBasic tBasic = tBasicMapper.selectOne(new QueryWrapper<TBasic>().eq("jzh", tBasicMap.get("jzh")));
// tBasicMap.put("patient_id",tBasic.getPatientId());
//
// itBasicService.merge(tBasicMap);
// }catch (Exception e) {
// log.info(e.getMessage());
// }
// }
//
/ * *
* 出 院 解 析 xml
*
* @param tbasic
* @param tBasicMap
* @param tBasicSubMap
* /
private void OutParseXml ( String tbasic , HashMap < String , Object > tBasicMap , HashMap < String , Object > tBasicSubMap , HashMap < String , Object > tBasicExtendMap ) {
XmlUtils xmlUtils = null ;
log . info ( "开始解析xml" ) ;
try {
xmlUtils = new XmlUtils ( new ByteArrayInputStream ( tbasic . getBytes ( "UTF-8" ) ) ) ;
} catch ( UnsupportedEncodingException e ) {
e . printStackTrace ( ) ;
}
//解析json映射文件
String json = JsonUtils . readJsonFile ( CurrentPath ( ) + Codes . JSON_OUT_ADDRESS . getMessage ( ) ) ;
Map jsonMap = JSON . parseObject ( json , Map . class ) ;
List < SelectColumn > selectColumns = JSON . parseArray ( String . valueOf ( jsonMap . get ( Codes . SELECT_COLUMNS . getMessage ( ) ) ) , SelectColumn . class ) ;
String value ;
for ( SelectColumn selectColumn : selectColumns ) {
try {
value = xmlUtils . getElementText ( selectColumn . getQualityColumn ( ) ) = = null ? null : String . valueOf ( xmlUtils . getElementText ( selectColumn . getQualityColumn ( ) ) ) ;
} catch ( RuntimeException e ) {
String message = e . getMessage ( ) ;
log . error ( "解析xml出现:" + message ) ;
throw new RuntimeException ( message ) ;
}
if ( StringUtils . isBlank ( value ) ) {
if ( selectColumn . getByNull ( ) = = 0 ) {
insertLog ( tbasic ) ;
log . error ( selectColumn . getQualityColumn ( ) + " 字段不能为空值" ) ;
throw new RuntimeException ( selectColumn . getQualityColumn ( ) + " 字段不能为空值" ) ;
} else {
continue ;
}
} else {
if ( selectColumn . getTableName ( ) . equals ( "t_basic" ) ) {
tBasicMap . put ( selectColumn . getColumnName ( ) , value ) ;
}
if ( selectColumn . getTableName ( ) . equals ( "t_basic_extend" ) ) {
tBasicExtendMap . put ( selectColumn . getColumnName ( ) , value ) ;
}
if ( selectColumn . getTableName ( ) . equals ( "t_basic_sub" ) ) {
tBasicSubMap . put ( selectColumn . getColumnName ( ) , value ) ;
}
}
}
TBasic tBasic = tBasicMapper . selectOne ( new QueryWrapper < TBasic > ( ) . eq ( "jzh" , tBasicMap . get ( "jzh" ) ) ) ;
tBasicMap . put ( "patient_id" , tBasic . getPatientId ( ) ) ;
try {
itBasicService . merge ( tBasicMap ) ;
} catch ( Exception e ) {
log . error ( e . getMessage ( ) ) ;
}
}
}