Browse Source

出入区时间保存并格式化

zlh 4 days ago
parent
commit
29533e9bdb

+ 8 - 8
ruoyi-admin/src/main/java/com/ruoyi/web/work/domain/Visit.java

@@ -86,14 +86,14 @@ public class Visit{
     @TableField(exist = false)
     private String endTime;//结束时间
 
-//    private String createBy;  //创建人
-//    @TableField(fill = FieldFill.INSERT)
-//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-//    private Data createTime;  //创建时间
-//    private String updateBy;  //更新人
-//    @TableField(fill = FieldFill.UPDATE)
-//    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-//    private Data updateTime;  //更新时间
+    private String createBy;  //创建人
+    @TableField(fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;  //创建时间
+    private String updateBy;  //更新人
+    @TableField(fill = FieldFill.UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;  //更新时间
 
     @TableField(exist = false)
     private List<Patient> patients;

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

@@ -7,6 +7,7 @@ import ca.uhn.hl7v2.model.v24.segment.PV2;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.core.domain.entity.SysDept;
+import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.system.mapper.SysDeptMapper;
 import com.ruoyi.web.work.domain.Visit;
 import com.ruoyi.web.work.hl7.service.HL7DiagnosisService;
@@ -17,7 +18,7 @@ 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.Date;
 import java.text.ParseException;
 import java.util.List;
 
@@ -54,8 +55,10 @@ public class HL7VisitServiceImpl extends ServiceImpl<VisitMapper, Visit> impleme
             String wardCode = pv1.getAssignedPatientLocation().getBuilding().getValue();//病区代码
             String wardName = pv1.getAssignedPatientLocation().getFloor().getValue();//病区名称
             String level = pv2.getVisitUserCode(0).getValue(); //危重级别:0-一般病人1-危重病人
-            String entryTime = pv2.getExpectedAdmitDateTime().getTimeOfAnEvent().getValue(); //入区时间
-            String exitTime = pv2.getExpectedDischargeDateTime().getTimeOfAnEvent().getValue(); //出区时间
+            //String admissionTime = pv1.getAdmitDateTime().getTimeOfAnEvent().getValue(); //入院时间
+            //String dischargeTime = pv1.getDischargeDateTime(0).getTimeOfAnEvent().getValue();//出院时间
+            String entryTime =DateUtils.toDateFormat(pv2.getExpectedAdmitDateTime().getTimeOfAnEvent().getValue(),"yyyyMMddHHmmss","yyyy-MM-dd HH:mm:ss"); //入区时间
+            String exitTime =DateUtils.toDateFormat(pv2.getExpectedDischargeDateTime().getTimeOfAnEvent().getValue(),"yyyyMMddHHmmss","yyyy-MM-dd HH:mm:ss") ; //出区时间
             String reasonArea = pv2.getVisitDescription().getValue();//出区原因
             visitEntity.setWardName(wardName);
             visitEntity.setWardCode(wardCode);
@@ -91,11 +94,40 @@ public class HL7VisitServiceImpl extends ServiceImpl<VisitMapper, Visit> impleme
      */
     @Override
     public void saveVisitInfo(List<DG1> dg1All,PV1 pv1,PV2 pv2, Long patId) throws Exception {
+        String department = pv1.getAssignedPatientLocation().getRoom().getValue(); //科室
         String deptCode = pv1.getAssignedPatientLocation().getPointOfCare().getValue();//科室代码
         LambdaQueryWrapper<Visit> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(Visit::getDeptCode,deptCode).eq(Visit::getPatId,patId);
         Visit visitEntity = baseMapper.selectOne(wrapper); //根据科室部门代码和患者id查
         if (visitEntity != null) {
+            String hospitalStatus = pv1.getBedStatus().getValue(); // 在院状态
+            String doctorCode = pv1.getAttendingDoctor(0).getIDNumber().getValue(); //医生代码
+            String physician = pv1.getAttendingDoctor(0).getFamilyName().getSurname().getValue(); //主治医师
+            String bed = pv1.getAssignedPatientLocation().getBed().getValue(); //床位代码
+            String wardCode = pv1.getAssignedPatientLocation().getBuilding().getValue();//病区代码
+            String wardName = pv1.getAssignedPatientLocation().getFloor().getValue();//病区名称
+            String level = pv2.getVisitUserCode(0).getValue(); //危重级别:0-一般病人1-危重病人
+            //String admissionTime = pv1.getAdmitDateTime().getTimeOfAnEvent().getValue(); //入院时间
+            //String dischargeTime = pv1.getDischargeDateTime(0).getTimeOfAnEvent().getValue();//出院时间
+            String entryTime =DateUtils.toDateFormat(pv2.getExpectedAdmitDateTime().getTimeOfAnEvent().getValue(),"yyyyMMddHHmmss","yyyy-MM-dd HH:mm:ss"); //入区时间
+            String exitTime =DateUtils.toDateFormat(pv2.getExpectedDischargeDateTime().getTimeOfAnEvent().getValue(),"yyyyMMddHHmmss","yyyy-MM-dd HH:mm:ss"); //出区时间
+            String reasonArea = pv2.getVisitDescription().getValue();//出区原因
+            visitEntity.setWardName(wardName);
+            visitEntity.setWardCode(wardCode);
+            visitEntity.setDeptCode(deptCode);
+            visitEntity.setLevel(level); //危重级别:0-一般病人1-危重病人
+            visitEntity.setReasonArea(reasonArea); //出区原因
+            //visitEntity.setAdmissionTime(admissionTime); //入院时间
+            //visitEntity.setDischargeTime(dischargeTime); //出院时间
+            visitEntity.setExitTime(exitTime); //出区时间
+            visitEntity.setEntryTime(entryTime); //入区时间
+            visitEntity.setDepartment(department);
+            visitEntity.setBed(bed);
+            visitEntity.setHospitalStatus(hospitalStatus); //在院状态
+            visitEntity.setDoctorCode(doctorCode);
+            visitEntity.setPhysician(physician);
+            baseMapper.updateById(visitEntity);
+            log.info("成功更新患者ID为{}的就诊信息", patId);
             // 如果已存在且科室代码匹配,保存诊断信息
             Long dbVisitId = visitEntity.getId(); //就诊dbVisitId
             dg1Service.saveDiagnosisInfo(dg1All,dbVisitId,pv1,patId);
@@ -178,8 +210,8 @@ public class HL7VisitServiceImpl extends ServiceImpl<VisitMapper, Visit> impleme
         String admissionTime = pv1.getAdmitDateTime().getTimeOfAnEvent().getValue(); //入院时间
         String dischargeTime = pv1.getDischargeDateTime(0).getTimeOfAnEvent().getValue();//出院时间
         String level = pv2.getVisitUserCode(0).getValue(); //危重级别:0-一般病人1-危重病人
-        String entryTime = pv2.getExpectedAdmitDateTime().getTimeOfAnEvent().getValue(); //入区时间
-        String exitTime = pv2.getExpectedDischargeDateTime().getTimeOfAnEvent().getValue(); //出区时间
+        String entryTime = DateUtils.toDateFormat(pv2.getExpectedAdmitDateTime().getTimeOfAnEvent().getValue(),"yyyyMMddHHmmss","yyyy-MM-dd HH:mm:ss") ; //入区时间
+        String exitTime = DateUtils.toDateFormat(pv2.getExpectedDischargeDateTime().getTimeOfAnEvent().getValue(),"yyyyMMddHHmmss","yyyy-MM-dd HH:mm:ss"); //出区时间
         String reasonArea = pv2.getVisitDescription().getValue();//出区原因
         String babyCode = pv2.getNewbornBabyIndicator().getValue();//婴儿信息标识:Y-是 N-否
         Visit entity = new Visit();

+ 13 - 0
ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java

@@ -8,6 +8,7 @@ import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.time.ZoneId;
 import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.Calendar;
 import java.util.Date;
 
@@ -175,6 +176,18 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
         return (year == todayYear && month == todayMonth && day == todayDay);
     }
 
+    public static String toDateFormat(String dateStr, String inputFormat, String outputFormat) {
+        if(StringUtils.isBlank(dateStr)){
+            return null;
+        }
+        // 定义输入格式
+        DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern(inputFormat);
+        LocalDateTime dateTime = LocalDateTime.parse(dateStr, inputFormatter);
+        // 定义输出格式
+        DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern(outputFormat);
+        return dateTime.format(outputFormatter);
+    }
+
     public static void main(String[] args) {
         System.out.println(datePath());
     }