1
0
Prechádzať zdrojové kódy

优化hl7入库orc段

adminAndroot 9 mesiacov pred
rodič
commit
ecc7d59ec6

+ 4 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/work/hl7/service/HL7PatientService.java

@@ -1,7 +1,11 @@
 package com.ruoyi.web.work.hl7.service;
 
 import ca.uhn.hl7v2.model.Message;
+import com.ruoyi.web.work.domain.Patient;
 
 public interface HL7PatientService {
     Message savePatientInfo(Message message) throws Exception;
+
+    //根据卫宁患者ID查询患者
+    Patient findPatientByWnPatId(String wnPatId);
 }

+ 4 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/work/hl7/service/HL7VisitService.java

@@ -4,6 +4,7 @@ import ca.uhn.hl7v2.HL7Exception;
 import ca.uhn.hl7v2.model.v24.segment.DG1;
 import ca.uhn.hl7v2.model.v24.segment.PV1;
 import ca.uhn.hl7v2.model.v24.segment.PV2;
+import com.ruoyi.web.work.domain.Visit;
 
 import java.text.ParseException;
 import java.util.List;
@@ -18,4 +19,7 @@ public interface HL7VisitService {
 
     //更新患者就诊记录的在院状态、出院时间、出院方式
     Long updateVisitHospitalStatus(Long dbPid, PV1 pv1) throws HL7Exception;
+
+    //根据患者id和送检科室查询是否本次就诊的报告
+    Visit findVisitByPatIdAndDeptName(Long patId, String inspectionDeptName);
 }

+ 2 - 5
ruoyi-admin/src/main/java/com/ruoyi/web/work/hl7/service/impl/HL7PatientServiceImpl.java

@@ -8,15 +8,12 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.web.work.hl7.service.*;
 import com.ruoyi.web.work.hl7.util.DateTimeConverter;
 import com.ruoyi.web.work.domain.Patient;
-import com.ruoyi.web.work.domain.Visit;
 import com.ruoyi.web.work.hl7.response.ResponseSuccessful;
 import com.ruoyi.web.work.mapper.PatientMapper;
-import com.ruoyi.web.work.mapper.VisitMapper;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.StringUtils;
 
 import java.util.List;
 
@@ -149,8 +146,8 @@ public class HL7PatientServiceImpl extends ServiceImpl<PatientMapper, Patient> i
         return null;
     }
 
-    // 提取方法:根据卫宁患者ID查询患者
-    private Patient findPatientByWnPatId(String wnPatId) {
+    //根据卫宁患者ID查询患者
+    public Patient findPatientByWnPatId(String wnPatId) {
         LambdaQueryWrapper<Patient> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(Patient::getWnPatId, wnPatId);
         return baseMapper.selectOne(wrapper);

+ 11 - 16
ruoyi-admin/src/main/java/com/ruoyi/web/work/hl7/service/impl/HL7ReportServiceImpl.java

@@ -7,16 +7,15 @@ import ca.uhn.hl7v2.model.v24.segment.ORC;
 import ca.uhn.hl7v2.model.v24.segment.PID;
 import ca.uhn.hl7v2.model.v24.segment.PV1;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.web.work.domain.Patient;
 import com.ruoyi.web.work.domain.Report;
 import com.ruoyi.web.work.domain.Visit;
+import com.ruoyi.web.work.hl7.service.HL7PatientService;
 import com.ruoyi.web.work.hl7.service.HL7RequestService;
 import com.ruoyi.web.work.hl7.service.HL7ReportService;
-import com.ruoyi.web.work.mapper.PatientMapper;
+import com.ruoyi.web.work.hl7.service.HL7VisitService;
 import com.ruoyi.web.work.mapper.ReportMapper;
-import com.ruoyi.web.work.mapper.VisitMapper;
 import lombok.extern.log4j.Log4j2;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -33,10 +32,10 @@ import java.text.ParseException;
 public class HL7ReportServiceImpl extends ServiceImpl<ReportMapper, Report> implements HL7ReportService {
 
     @Autowired
-    private PatientMapper patientMapper;
+    private HL7PatientService patientService;
 
     @Autowired
-    private VisitMapper visitMapper;
+    private HL7VisitService visitService;
 
     @Autowired
     private HL7RequestService obrService;
@@ -53,17 +52,13 @@ public class HL7ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impl
         PID pid = oruR01.getPATIENT_RESULT().getPATIENT().getPID();
         String cardId = pv1.getVisitNumber().getID().getValue(); //推送过来的数据就诊卡号
         String wnPatId = pid.getPatientID().getID().getValue(); //卫宁患者ID
-        String inspectionDepartmentName = orc.getOrderingFacilityName(0).getOrganizationName().getValue();//送检科室
-        //根据患者标识符查询患者是否存在
-        LambdaQueryWrapper<Patient> lambdaQueryWrapper = Wrappers.lambdaQuery(Patient.class).eq(Patient::getWnPatId, wnPatId);
-        Patient entity = patientMapper.selectOne(lambdaQueryWrapper);
+        String inspectionDeptName = orc.getOrderingFacilityName(0).getOrganizationName().getValue();//送检科室
+        //根据卫宁患者标识符查询患者是否存在
+        Patient entity = patientService.findPatientByWnPatId(wnPatId);
         if (entity != null){
-            //保存当前患者的检测报告
-            Long patientId = entity.getId(); //患者ID
-            //根据患者id和送检科室查询是否本次就诊的检测报告
-            LambdaQueryWrapper<Visit> wrapper = new LambdaQueryWrapper<>();
-            wrapper.eq(Visit::getPatId,patientId).eq(Visit::getDepartment,inspectionDepartmentName);
-            Visit visitEntity = visitMapper.selectOne(wrapper);
+            Long patId = entity.getId();//患者ID
+            //根据患者id和送检科室查询是否本次就诊的报告
+            Visit visitEntity = visitService.findVisitByPatIdAndDeptName(patId,inspectionDeptName);
             if (visitEntity != null){
                 Long visitId = visitEntity.getId(); //就诊ID
                 //根据就诊id查询申请报告单表 如果当前报告存在更新
@@ -80,7 +75,7 @@ public class HL7ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impl
                 }else {
                     //保存本次就诊记录的检查报告orc
                     log.info("保存患者当前就诊的检查报告:{}",visitId);
-                    Long orcId = this.saveReport(patientId,visitEntity.getCardId(),orc,visitId);
+                    Long orcId = this.saveReport(patId,visitEntity.getCardId(),orc,visitId);
                     //保存当前患者请求报告obr
                     obrService.saveRequestReportObr(oruR01,orcId);
                     log.info("保存当前存在的患者报告单完成!");

+ 13 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/work/hl7/service/impl/HL7VisitServiceImpl.java

@@ -125,6 +125,19 @@ public class HL7VisitServiceImpl extends ServiceImpl<VisitMapper, Visit> impleme
     }
 
     /**
+     * 根据患者id和送检科室查询是否本次就诊的报告
+     * @param patId 患者id
+     * @param inspectionDeptName 送检科室
+     * @return
+     */
+    @Override
+    public Visit findVisitByPatIdAndDeptName(Long patId, String inspectionDeptName) {
+        LambdaQueryWrapper<Visit> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(Visit::getPatId, patId).eq(Visit::getDepartment,inspectionDeptName);
+        return baseMapper.selectOne(queryWrapper);
+    }
+
+    /**
      * 就诊记录基本信息
      * @param pv1
      * @param pv2