| | |
| | | package com.smartor.service.impl; |
| | | |
| | | import java.util.List; |
| | | |
| | | 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; |
| | | |
| | | |
| | | /** |
| | |
| | | * @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) { |
| | | return null; |
| | | |
| | | 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(formattedDate); |
| | | |
| | | //只有入院才会往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()); |
| | | int ii = serviceThirdDataMapper.updateIsDeal(serviceThirdData2); |
| | | System.out.println("是否修改成功:" + ii); |
| | | } catch (HL7Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | } |
| | | |
| | | return new ArrayList<>(); |
| | | } |
| | | |
| | | |
| | | } |