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.info("------serviceThirdData的入参:{}", serviceThirdData); 
 | 
        List<ServiceThirdData> serviceThirdDataList = serviceThirdDataMapper.selectServiceThirdDataList(serviceThirdData); 
 | 
        log.info("------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.info("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.info("serviceThirdData2的参数:{}", serviceThirdData2); 
 | 
                int ii = serviceThirdDataMapper.updateIsDeal(serviceThirdData2); 
 | 
                log.info("是否修改成功:{}", ii); 
 | 
            } catch (HL7Exception e) { 
 | 
                e.printStackTrace(); 
 | 
            } 
 | 
  
 | 
        } 
 | 
  
 | 
        return new ArrayList<>(); 
 | 
    } 
 | 
  
 | 
  
 | 
} 
 |