package com.smartor.service.impl;
|
|
import ca.uhn.hl7v2.HL7Exception;
|
import ca.uhn.hl7v2.model.Message;
|
import ca.uhn.hl7v2.parser.PipeParser;
|
import com.ruoyi.common.utils.StringUtils;
|
import com.smartor.domain.HospitalRecord;
|
import com.smartor.domain.HospitalUserinfo;
|
import com.smartor.domain.ServiceThirdData;
|
import com.smartor.mapper.ServiceThirdDataMapper;
|
import com.smartor.service.IHospitalRecordService;
|
import com.smartor.service.IHospitalUserinfoService;
|
import com.smartor.service.IServiceThirdDataService;
|
import com.smartor.yiwudataanalysis.ADT_A01;
|
import com.smartor.yiwudataanalysis.ADT_A03;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.util.CollectionUtils;
|
|
import java.text.SimpleDateFormat;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
|
/**
|
* 第三方厂商数据Service业务层处理
|
*
|
* @author ruoyi
|
* @date 2023-10-10
|
*/
|
@Slf4j
|
@Service
|
public class ServiceThirdDataServiceImpl implements IServiceThirdDataService {
|
|
@Autowired
|
private ServiceThirdDataMapper serviceThirdDataMapper;
|
|
@Autowired
|
private IHospitalRecordService iHospitalRecordService;
|
@Autowired
|
private IHospitalUserinfoService iHospitalUserinfoService;
|
|
@Override
|
public List<ServiceThirdData> queryList(ServiceThirdData serviceThirdData) {
|
|
log.error("------serviceThirdData的入参:{}", serviceThirdData);
|
List<ServiceThirdData> serviceThirdDataList = serviceThirdDataMapper.selectServiceThirdDataList(serviceThirdData);
|
log.error("------serviceThirdDataList获取数据的数量:{}", serviceThirdDataList.size());
|
for (ServiceThirdData std : serviceThirdDataList) {
|
PipeParser parser = new PipeParser();
|
Message message = null;
|
try {
|
String dataInfo = std.getDataInfo().substring(1);
|
dataInfo = dataInfo.replaceAll("\n", "");
|
dataInfo = dataInfo.substring(0, dataInfo.length() - 1);
|
message = parser.parse(dataInfo);
|
List<Object> objectList = new ArrayList<>();
|
if (serviceThirdData.getDataType().equals("ADT^A03")) {
|
ADT_A03 adt_a03 = new ADT_A03();
|
objectList = adt_a03.explainPID(message, dataInfo);
|
} else if (serviceThirdData.getDataType().equals("ADT^A01")) {
|
ADT_A01 adt_a01 = new ADT_A01();
|
objectList = adt_a01.explainPID(message, dataInfo);
|
}
|
|
HospitalUserinfo hospitalUserinfo = (HospitalUserinfo) objectList.get(1);
|
Date currentTime = new Date();
|
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
String formattedDate = formatter.format(currentTime);
|
hospitalUserinfo.setCreateTime(currentTime);
|
|
//只有入院才会往userInfo里写用户信息
|
if (serviceThirdData.getDataType().equals("ADT^A03") && StringUtils.isNotBlank(hospitalUserinfo.getPatientID())) {
|
//先判断一下,patientid是否已经在表中存在,如果存在,就不插入了,不存在,就插入
|
HospitalUserinfo hospitalUserinfo1 = new HospitalUserinfo();
|
hospitalUserinfo1.setPatientID(hospitalUserinfo.getPatientID());
|
List<HospitalUserinfo> hospitalUserinfos = iHospitalUserinfoService.selectHospitalUserinfoList(hospitalUserinfo1);
|
if (CollectionUtils.isEmpty(hospitalUserinfos)) {
|
iHospitalUserinfoService.insertHospitalUserinfo(hospitalUserinfo);
|
} else {
|
iHospitalUserinfoService.updateHospitalUserinfoByPatientID(hospitalUserinfo);
|
hospitalUserinfo.setID(hospitalUserinfos.get(0).getID());
|
}
|
}
|
|
HospitalRecord hospitalRecord = (HospitalRecord) objectList.get(0);
|
log.error("hospitalRecord的值为:{}", hospitalRecord);
|
//如果patientid为空,再存record就成脏数据了
|
if (StringUtils.isNotBlank(hospitalUserinfo.getPatientID())) {
|
hospitalRecord.setMessageID(std.getId().toString());
|
iHospitalRecordService.insertHospitalRecord(hospitalRecord);
|
}
|
//将service_third_data的id放到messageid里,方便后面查看问题
|
ServiceThirdData serviceThirdData2 = new ServiceThirdData();
|
serviceThirdData2.setId(std.getId());
|
if (StringUtils.isEmpty(hospitalUserinfo.getPatientID())) {
|
serviceThirdData2.setRemark("PatientID为空");
|
}
|
serviceThirdData2.setUserInfoId(hospitalUserinfo.getID());
|
log.error("serviceThirdData2的参数:{}", serviceThirdData2);
|
int ii = serviceThirdDataMapper.updateIsDeal(serviceThirdData2);
|
log.error("是否修改成功:{}", ii);
|
} catch (HL7Exception e) {
|
e.printStackTrace();
|
}
|
|
}
|
|
return new ArrayList<>();
|
}
|
|
|
}
|