zhangzw 4 лет назад
Родитель
Сommit
3a64cb6bd2
47 измененных файлов с 1385 добавлено и 450 удалено
  1. 11 0
      pom.xml
  2. 4 1
      src/main/java/com/diagbot/MrqcSysApplication.java
  3. 3 2
      src/main/java/com/diagbot/entity/MedLisResult.java
  4. 1 1
      src/main/java/com/diagbot/entity/MedPacsResult.java
  5. 13 0
      src/main/java/com/diagbot/entity/QcType.java
  6. 47 0
      src/main/java/com/diagbot/enums/data/DoctorAdviceStatusEnum.java
  7. 3 1
      src/main/java/com/diagbot/enums/data/ReturnToTypeEnum.java
  8. 1 11
      src/main/java/com/diagbot/facade/BehospitalInfoFacade.java
  9. 0 3
      src/main/java/com/diagbot/facade/DoctorAdviceFacade.java
  10. 0 8
      src/main/java/com/diagbot/facade/MedLisInfoFacade.java
  11. 0 1
      src/main/java/com/diagbot/facade/MedPacsInfoFacade.java
  12. 1 5
      src/main/java/com/diagbot/facade/QcTypeFacade.java
  13. 1 5
      src/main/java/com/diagbot/facade/QcresultInfoFacade.java
  14. 1 5
      src/main/java/com/diagbot/facade/SysRoleFacade.java
  15. 1 6
      src/main/java/com/diagbot/facade/SysUserFacade.java
  16. 95 53
      src/main/java/com/diagbot/facade/data/ABehospitalInfoFacade.java
  17. 6 5
      src/main/java/com/diagbot/facade/data/ADoctorAdviceFacade.java
  18. 7 5
      src/main/java/com/diagbot/facade/data/AHomeDiagnoseInfoFacade.java
  19. 6 5
      src/main/java/com/diagbot/facade/data/AHomeOperationInfoFacade.java
  20. 16 11
      src/main/java/com/diagbot/facade/data/AHomePageFacade.java
  21. 12 3
      src/main/java/com/diagbot/facade/data/AMedCrisisFacade.java
  22. 10 9
      src/main/java/com/diagbot/facade/data/AMedLisResultFacade.java
  23. 10 9
      src/main/java/com/diagbot/facade/data/AMedPacsResultFacade.java
  24. 7 1
      src/main/java/com/diagbot/facade/data/AMedRecordTypeFacade.java
  25. 16 6
      src/main/java/com/diagbot/facade/data/AMedicalRecordContentFacade.java
  26. 87 35
      src/main/java/com/diagbot/facade/data/AMedicalRecordFacade.java
  27. 1 1
      src/main/java/com/diagbot/task/BasDoctorInfoTask.java
  28. 1 1
      src/main/java/com/diagbot/task/BehospitalInfoAnalyzeTask.java
  29. 1 1
      src/main/java/com/diagbot/task/MedCrisisTask.java
  30. 141 0
      src/main/java/com/diagbot/util/SocketClient.java
  31. 161 0
      src/main/java/com/diagbot/util/SocketServer.java
  32. 24 0
      src/main/java/com/diagbot/util/SqlProperties.java
  33. 296 241
      src/main/java/com/diagbot/util/TZDBConn.java
  34. 279 0
      src/main/java/com/diagbot/util/YWAnalysis.java
  35. 77 0
      src/main/java/com/diagbot/util/YWDateUtils.java
  36. 1 1
      src/main/java/com/diagbot/vo/data/ADeleteFlagVO.java
  37. 1 1
      src/main/java/com/diagbot/vo/data/AMedLisResultVO.java
  38. 1 1
      src/main/java/com/diagbot/vo/data/AMedPacsResultVO.java
  39. 4 0
      src/main/java/com/diagbot/vo/data/AMedicalRecordContentVO.java
  40. 5 0
      src/main/java/com/diagbot/vo/data/AMedicalRecordVO.java
  41. 1 0
      src/main/java/com/diagbot/vo/data/APlaceFileVO.java
  42. 4 4
      src/main/resources/application-local.yml
  43. 11 5
      src/main/resources/jdbc.properties
  44. 4 1
      src/main/resources/mapper/DoctorAdviceMapper.xml
  45. 1 1
      src/main/resources/mapper/MedLisResultMapper.xml
  46. 1 1
      src/main/resources/mapper/MedPacsResultMapper.xml
  47. 11 0
      src/main/resources/sql.properties

+ 11 - 0
pom.xml

@@ -223,6 +223,17 @@
             <scope>runtime</scope>
         </dependency>
 
+        <!--hl7解析工具-->
+        <dependency>
+            <groupId>ca.uhn.hapi</groupId>
+            <artifactId>hapi-base</artifactId>
+            <version>2.2</version>
+        </dependency>
+        <dependency>
+            <groupId>ca.uhn.hapi</groupId>
+            <artifactId>hapi-structures-v24</artifactId>
+            <version>2.3</version>
+        </dependency>
     </dependencies>
 
     <!-- 私有仓库 -->

+ 4 - 1
src/main/java/com/diagbot/MrqcSysApplication.java

@@ -1,5 +1,6 @@
 package com.diagbot;
 
+import com.diagbot.util.SocketServer;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
@@ -11,6 +12,7 @@ import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
 import org.springframework.cloud.netflix.hystrix.EnableHystrix;
 import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;
 import org.springframework.cloud.openfeign.EnableFeignClients;
+import org.springframework.context.ApplicationContext;
 
 
 /**
@@ -28,6 +30,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
 public class MrqcSysApplication {
 
     public static void main(String[] args) {
-        SpringApplication.run(MrqcSysApplication.class, args);
+        ApplicationContext applicationContext =  SpringApplication.run(MrqcSysApplication.class, args);
+        applicationContext.getBean(SocketServer.class).start();
     }
 }

+ 3 - 2
src/main/java/com/diagbot/entity/MedLisResult.java

@@ -7,7 +7,7 @@ import java.util.Date;
 
 /**
  * <p>
- * 
+ *
  * </p>
  *
  * @author zhoutg
@@ -21,7 +21,7 @@ public class MedLisResult implements Serializable {
     /**
      * 报告单号
      */
-    private Integer reptNo;
+    private String repNo;
 
     /**
      * 医院ID
@@ -48,6 +48,7 @@ public class MedLisResult implements Serializable {
      */
     private String result;
 
+    private String reference;
     /**
      * 最小参考值
      */

+ 1 - 1
src/main/java/com/diagbot/entity/MedPacsResult.java

@@ -21,7 +21,7 @@ public class MedPacsResult implements Serializable {
     /**
      * 报告单号
      */
-    private String reptNo;
+    private String repNo;
 
     /**
      * 医院ID

+ 13 - 0
src/main/java/com/diagbot/entity/QcType.java

@@ -29,6 +29,11 @@ public class QcType implements Serializable {
      */
     private Long hospitalId;
 
+    /**
+     * 性别
+     */
+    private String sex;
+
     /**
      * 质控类型名称
      */
@@ -79,6 +84,14 @@ public class QcType implements Serializable {
         this.hospitalId = hospitalId;
     }
 
+    public String getSex() {
+        return sex;
+    }
+
+    public void setSex(String sex) {
+        this.sex = sex;
+    }
+
     public String getName() {
         return name;
     }

+ 47 - 0
src/main/java/com/diagbot/enums/data/DoctorAdviceStatusEnum.java

@@ -0,0 +1,47 @@
+package com.diagbot.enums.data;
+
+import lombok.Setter;
+
+public enum DoctorAdviceStatusEnum implements AKeyedNamed {
+    IP_ADVICE("IP", "新开"),
+    SC_ADVICE("SC", "复核"),
+    CM_ADVICE("CM", "执行"),
+    DC_ADVICE("DC", "停止"),
+    HD_ADVICE("HD", "删除"),
+    CA_ADVICE("CA", "撤销");
+
+    @Setter
+    private String key;
+
+    @Setter
+    private String name;
+
+    DoctorAdviceStatusEnum(String key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static DoctorAdviceStatusEnum getEnum(String key) {
+        for (DoctorAdviceStatusEnum item : DoctorAdviceStatusEnum.values()) {
+            if (key.equals(item.getKey())) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(String key) {
+        DoctorAdviceStatusEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    @Override
+    public String getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+}

+ 3 - 1
src/main/java/com/diagbot/enums/data/ReturnToTypeEnum.java

@@ -7,7 +7,9 @@ public enum ReturnToTypeEnum implements AKeyedNamed{
     BETTER("2", "好转"),
     NO_CURE("3", "未愈"),
     DEATH("4", "死亡"),
-    OTHER("9", "其他");
+    OTHER("5", "其他");
+//    OTHER("9", "其他");
+
 
     @Setter
     private String key;

+ 1 - 11
src/main/java/com/diagbot/facade/BehospitalInfoFacade.java

@@ -12,24 +12,14 @@ import com.diagbot.entity.HomeOperationInfo;
 import com.diagbot.entity.HomePage;
 import com.diagbot.entity.MedCheckInfo;
 import com.diagbot.entity.MedCrisisInfo;
-import com.diagbot.entity.MedLisInfo;
 import com.diagbot.entity.MedLisResult;
-import com.diagbot.entity.MedPacsInfo;
 import com.diagbot.entity.MedPacsResult;
 import com.diagbot.entity.MedicalRecord;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.service.impl.BehospitalInfoServiceImpl;
-import com.diagbot.util.BeanUtil;
-import com.diagbot.util.DateUtil;
-import com.diagbot.util.EncrypDES;
-import com.diagbot.util.EntityUtil;
-import com.diagbot.util.ExcelUtils;
-import com.diagbot.util.ListUtil;
-import com.diagbot.util.MapUtil;
-import com.diagbot.util.StringUtil;
-import com.diagbot.util.SysUserUtils;
+import com.diagbot.util.*;
 import com.diagbot.vo.AlgorithmVO;
 import com.diagbot.vo.AnalyzeApiVO;
 import com.diagbot.vo.AnalyzeCdsVO;

+ 0 - 3
src/main/java/com/diagbot/facade/DoctorAdviceFacade.java

@@ -2,7 +2,6 @@ package com.diagbot.facade;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.dto.DoctorAdviceDTO;
-import com.diagbot.entity.DoctorAdvice;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.service.impl.DoctorAdviceServiceImpl;
@@ -11,8 +10,6 @@ import com.diagbot.util.SysUserUtils;
 import com.diagbot.vo.DoctorAdviceVO;
 import org.springframework.stereotype.Component;
 
-import java.util.Collection;
-
 /**
  * @Description:
  * @author: zhoutg

+ 0 - 8
src/main/java/com/diagbot/facade/MedLisInfoFacade.java

@@ -7,18 +7,10 @@ import com.diagbot.exception.CommonException;
 import com.diagbot.service.impl.MedLisInfoServiceImpl;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.SysUserUtils;
-import com.diagbot.vo.CheckInfoVO;
 import com.diagbot.vo.ExamineInfoVO;
 import com.diagbot.vo.ExamineSonInfoVO;
 import org.springframework.stereotype.Component;
 
-
-import com.diagbot.dto.DoctorAdviceDTO;
-import org.springframework.stereotype.Component;
-
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-
 /**
  * @Description:
  * @author: cy

+ 0 - 1
src/main/java/com/diagbot/facade/MedPacsInfoFacade.java

@@ -2,7 +2,6 @@ package com.diagbot.facade;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.dto.CheckInfoDTO;
-import com.diagbot.dto.DoctorAdviceDTO;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.service.impl.MedPacsInfoServiceImpl;

+ 1 - 5
src/main/java/com/diagbot/facade/QcTypeFacade.java

@@ -15,11 +15,7 @@ import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.service.impl.QcTypeCasesEntryServiceImpl;
 import com.diagbot.service.impl.QcTypeServiceImpl;
-import com.diagbot.util.BeanUtil;
-import com.diagbot.util.DateUtil;
-import com.diagbot.util.EntityUtil;
-import com.diagbot.util.ListUtil;
-import com.diagbot.util.SysUserUtils;
+import com.diagbot.util.*;
 import com.diagbot.vo.DeleteQcTypeVO;
 import com.diagbot.vo.QcEntryHospitalVO;
 import com.diagbot.vo.QcTypeCasesEntryVO;

+ 1 - 5
src/main/java/com/diagbot/facade/QcresultInfoFacade.java

@@ -15,11 +15,7 @@ import com.diagbot.exception.CommonException;
 import com.diagbot.service.impl.MedQcresultCasesServiceImpl;
 import com.diagbot.service.impl.QcresultDetailServiceImpl;
 import com.diagbot.service.impl.QcresultInfoServiceImpl;
-import com.diagbot.util.BeanUtil;
-import com.diagbot.util.DateUtil;
-import com.diagbot.util.ListUtil;
-import com.diagbot.util.StringUtil;
-import com.diagbot.util.SysUserUtils;
+import com.diagbot.util.*;
 import com.diagbot.vo.AlgorithmVO;
 import com.diagbot.vo.AnalyzeVO;
 import com.diagbot.vo.GetDetailVO;

+ 1 - 5
src/main/java/com/diagbot/facade/SysRoleFacade.java

@@ -14,11 +14,7 @@ import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.service.impl.SysRoleMenuServiceImpl;
 import com.diagbot.service.impl.SysRolePermissionServiceImpl;
 import com.diagbot.service.impl.SysRoleServiceImpl;
-import com.diagbot.util.BeanUtil;
-import com.diagbot.util.DateUtil;
-import com.diagbot.util.EntityUtil;
-import com.diagbot.util.ListUtil;
-import com.diagbot.util.SysUserUtils;
+import com.diagbot.util.*;
 import com.diagbot.vo.SysMenuSaveVO;
 import com.diagbot.vo.SysPermissionSaveVO;
 import com.diagbot.vo.SysRoleMenuQueryVO;

+ 1 - 6
src/main/java/com/diagbot/facade/SysUserFacade.java

@@ -31,12 +31,7 @@ import com.diagbot.exception.ServiceErrorCode;
 import com.diagbot.service.impl.SysUserDeptServiceImpl;
 import com.diagbot.service.impl.SysUserRoleServiceImpl;
 import com.diagbot.service.impl.SysUserServiceImpl;
-import com.diagbot.util.BeanUtil;
-import com.diagbot.util.DateUtil;
-import com.diagbot.util.EntityUtil;
-import com.diagbot.util.ListUtil;
-import com.diagbot.util.StringUtil;
-import com.diagbot.util.SysUserUtils;
+import com.diagbot.util.*;
 import com.diagbot.vo.BasDeptInfoVO;
 import com.diagbot.vo.SysUserBaseVO;
 import com.diagbot.vo.SysUserDeptVO;

+ 95 - 53
src/main/java/com/diagbot/facade/data/ABehospitalInfoFacade.java

@@ -3,20 +3,15 @@ package com.diagbot.facade.data;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.ABehospitalInfoDTO;
-import com.diagbot.entity.BehospitalInfo;
-import com.diagbot.entity.MedicalRecord;
-import com.diagbot.entity.QcAbnormal;
-import com.diagbot.entity.QcType;
+import com.diagbot.entity.*;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.facade.QcAbnormalFacade;
 import com.diagbot.facade.QcTypeFacade;
 import com.diagbot.service.impl.BehospitalInfoServiceImpl;
-import com.diagbot.util.BeanUtil;
-import com.diagbot.util.DateUtil;
-import com.diagbot.util.StringUtil;
-import com.diagbot.util.TZDBConn;
+import com.diagbot.util.*;
 import com.diagbot.vo.data.ABehospitalInfoVO;
 import com.diagbot.vo.data.ADeleteFlagVO;
 import com.diagbot.vo.data.APlaceFileVO;
@@ -47,14 +42,22 @@ public class ABehospitalInfoFacade extends BehospitalInfoServiceImpl {
     @Autowired
     private QcAbnormalFacade qcAbnormalFacade;
 
+    @Autowired
+    private AMedRecordTypeFacade aMedRecordTypeFacade;
+    @Autowired
+    private SqlProperties sqlProperties;
+
     private TZDBConn tzDBConn = new TZDBConn();
 
+    private YWAnalysis ywAnalysis = new YWAnalysis();
     /**
      * 终末质控-同步前一天的入院记录
      */
     public void executeBehospital() {
         //String sql="select * from br_inpatientinfo where cjcxrq>=dateadd(day,-2,getdate()) and cjcxrq<=getdate()";
-        String sql="select * from br_inpatientinfo where cjcxrq>=(select CONVERT(varchar,GETDATE()-2,23)) and cjcxrq<(select CONVERT(varchar,GETDATE(),23)) ORDER BY cjcxrq DESC";
+        //String sql="select * from br_inpatientinfo where cjcxrq>=(select CONVERT(varchar,GETDATE()-2,23)) and cjcxrq<(select CONVERT(varchar,GETDATE(),23)) ORDER BY cjcxrq DESC";
+        //String sql = "SELECT * FROM AI_V_SENDPATIENTINFO t WHERE t.BEHOSPITALDATE >= to_date('2018-11-01','yyyy-mm-dd')";
+        String sql = sqlProperties.getBeHospitalInfoSql();
         List<BehospitalInfo> behospitalInfoList = tzDBConn.getBehospitalInfo(sql);
         execute(behospitalInfoList);
     }
@@ -68,7 +71,6 @@ public class ABehospitalInfoFacade extends BehospitalInfoServiceImpl {
         execute(behospitalInfoList);
     }
 
-
     /**
      * 通过接口更新病人住院记录信息
      * @param list
@@ -158,49 +160,88 @@ public class ABehospitalInfoFacade extends BehospitalInfoServiceImpl {
      * @param s
      * @return
      */
-    private Long initQcTypeId(BehospitalInfo s){
-        Long qcTypeId=Long.valueOf("0");
-        try {
-            MedicalRecord medicalRecord = aMedicalRecordFacade.getOne(new QueryWrapper<MedicalRecord>()
-                    .eq("behospital_code", s.getBehospitalCode())
-                    .eq("hospital_id", s.getHospitalId())
-                    .eq("mode_id", Long.valueOf("1"))
-                    .eq("is_deleted",IsDeleteEnum.N), false);
-            if(medicalRecord!=null){
-                QcType qcType=qcTypeFacade.getOne(new QueryWrapper<QcType>()
-                        .eq("name",medicalRecord.getRecTitle())
-                        .eq("hospital_id", s.getHospitalId())
-                        .eq("is_deleted",IsDeleteEnum.N), false);
-                if(qcType!=null){
-                    qcTypeId=qcType.getId();
-                }else{
-                    //新增类型到qc_type表中
-                    QcType qctype=new QcType();
-                    qctype.setHospitalId(s.getHospitalId());
-                    qctype.setName(medicalRecord.getRecTitle());
-                    qctype.setGmtCreate(new Date());
-
-                    Long id=qcTypeFacade.saveT(qctype);
-                    qcTypeId=id;
-
-                    //新增类型到监测表中
-                    QcAbnormal qcAbnormal=new QcAbnormal();
-                    qcAbnormal.setHospitalId(s.getHospitalId());
-                    qcAbnormal.setBehospitalCode(s.getBehospitalCode());
-                    qcAbnormal.setType(2);
-                    qcAbnormal.setDescription(medicalRecord.getRecTitle());
-                    qcAbnormal.setGmtCreate(new Date());
-                    qcAbnormalFacade.getBaseMapper().insert(qcAbnormal);
+//    private Long initQcTypeId(BehospitalInfo s){
+//        Long qcTypeId=Long.valueOf("0");
+//        try {
+//            MedicalRecord medicalRecord = aMedicalRecordFacade.getOne(new QueryWrapper<MedicalRecord>()
+//                    .eq("behospital_code", s.getBehospitalCode())
+//                    .eq("hospital_id", s.getHospitalId())
+//                    .eq("mode_id", Long.valueOf("1"))
+//                    .eq("is_deleted",IsDeleteEnum.N), false);
+//            if(medicalRecord!=null){
+//                QcType qcType=qcTypeFacade.getOne(new QueryWrapper<QcType>()
+//                        .eq("name",medicalRecord.getRecTitle())
+//                        .eq("hospital_id", s.getHospitalId())
+//                        .eq("is_deleted",IsDeleteEnum.N), false);
+//                if(qcType!=null){
+//                    qcTypeId=qcType.getId();
+//                }else{
+//                    //新增类型到qc_type表中
+//                    QcType qctype=new QcType();
+//                    qctype.setHospitalId(s.getHospitalId());
+//                    qctype.setName(medicalRecord.getRecTitle());
+//                    qctype.setGmtCreate(new Date());
+//
+//                    Long id=qcTypeFacade.saveT(qctype);
+//                    qcTypeId=id;
+//
+//                    //新增类型到监测表中
+//                    QcAbnormal qcAbnormal=new QcAbnormal();
+//                    qcAbnormal.setHospitalId(s.getHospitalId());
+//                    qcAbnormal.setBehospitalCode(s.getBehospitalCode());
+//                    qcAbnormal.setType(2);
+//                    qcAbnormal.setDescription(medicalRecord.getRecTitle());
+//                    qcAbnormal.setGmtCreate(new Date());
+//                    qcAbnormalFacade.getBaseMapper().insert(qcAbnormal);
+//                }
+//            }
+//            //aMedAbnormalInfoFacade.saveAbnormalInfo("病人住院登记-qctypeid初始化",JSON.toJSONString(s),qcTypeId.toString(),"操作正常!");
+//            return qcTypeId;
+//        }catch (Exception e){
+//            aMedAbnormalInfoFacade.saveAbnormalInfo("病人住院登记-qctypeid初始化异常",JSON.toJSONString(s),"",e.getMessage());
+//            return qcTypeId;
+//        }
+//    }
+    private Long initQcTypeId(BehospitalInfo s) {
+        Long qcTypeId = Long.valueOf("0");
+        List<MedicalRecord> medicalRecord = aMedicalRecordFacade.list(new QueryWrapper<MedicalRecord>()
+                .eq("behospital_code", s.getBehospitalCode())
+                .eq("hospital_id", s.getHospitalId())
+                .eq("mode_id", Long.valueOf("1"))
+                .eq("is_deleted", IsDeleteEnum.N)
+                .orderByDesc("rec_date"));
+        List<QcType> qcTypeList = qcTypeFacade.list(new QueryWrapper<QcType>()
+                .eq("beh_dept_id", s.getBehDeptId())
+                .eq("hospital_id", s.getHospitalId())
+                .eq("is_deleted", IsDeleteEnum.N));
+        if (medicalRecord.size() > 0) {
+//            MedRecordType medRecordType =aMedRecordTypeFacade.getOne(new QueryWrapper<MedRecordType>()
+//                    .eq("hospital_id",medicalRecord.get(0).getHospitalId())
+//                    .eq("type_id",medicalRecord.get(0).getRecTypeId())
+//                    .eq("is_deleted", IsDeleteEnum.N));
+//            if (medRecordType != null){
+                if(qcTypeList == null || qcTypeList.size() == 0){
+                    QcType qcType = qcTypeFacade.getOne(new QueryWrapper<QcType>()
+                            .eq("default_module", 1)
+                            .eq("hospital_id", s.getHospitalId())
+//                            .eq("sex", s.getSex())
+                            .eq("is_deleted", IsDeleteEnum.N));
+                    qcTypeId = qcType.getId();
+                } else if (qcTypeList.size() == 1) {
+                    qcTypeId = qcTypeList.get(0).getId();
+                }else {
+                    QcType qcType = new QcType();
+                    qcTypeList.stream().forEach(ss -> {
+                        if (ss.getSex().equals(s.getSex())) {
+                            qcType.setId(ss.getId());
+                        }
+                    });
+                    qcTypeId = qcType.getId();
                 }
-            }
-            //aMedAbnormalInfoFacade.saveAbnormalInfo("病人住院登记-qctypeid初始化",JSON.toJSONString(s),qcTypeId.toString(),"操作正常!");
-            return qcTypeId;
-        }catch (Exception e){
-            aMedAbnormalInfoFacade.saveAbnormalInfo("病人住院登记-qctypeid初始化异常",JSON.toJSONString(s),"",e.getMessage());
-            return qcTypeId;
+//            }
         }
+        return qcTypeId;
     }
-
     public RespDTO deleteFlag(ADeleteFlagVO aDeleteFlagVO){
         try {
             //验证数据是否存在
@@ -229,7 +270,9 @@ public class ABehospitalInfoFacade extends BehospitalInfoServiceImpl {
     public RespDTO placeFileFlag(APlaceFileVO aPlaceFileVO){
         try {
             //验证数据是否存在
-            if(StringUtil.isBlank(aPlaceFileVO.getBehospitalCode())){
+            if(StringUtil.isBlank(aPlaceFileVO.getIsProfile())){
+                return RespDTO.onError("请选择是否归档!");
+            } else if(StringUtil.isBlank(aPlaceFileVO.getBehospitalCode())){
                 return RespDTO.onError("请输入病人住院编码!");
             }else if(aPlaceFileVO.getHospitalId()==null){
                 return RespDTO.onError("请输入医院编码!");
@@ -238,10 +281,9 @@ public class ABehospitalInfoFacade extends BehospitalInfoServiceImpl {
                 updateWrapper.eq("behospital_code", aPlaceFileVO.getBehospitalCode())
                         .eq("hospital_id", aPlaceFileVO.getHospitalId())
                         .eq("is_deleted",IsDeleteEnum.N)
-                        .set("is_placefile","1")
+                        .set("is_placefile",aPlaceFileVO.getIsProfile())
                         .set("placefile_date",aPlaceFileVO.getPlaceFileDate().isEmpty()?DateUtil.formatDateTime(DateUtil.now()):DateUtil.parseDateTime(aPlaceFileVO.getPlaceFileDate()))
                         .set("gmt_modified", DateUtil.now());
-
                 Boolean flag=update(new BehospitalInfo(),updateWrapper);
                 return RespDTO.onSuc(flag);
             }

+ 6 - 5
src/main/java/com/diagbot/facade/data/ADoctorAdviceFacade.java

@@ -10,10 +10,7 @@ import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.enums.data.DaPrescriptionEnum;
 import com.diagbot.enums.data.DoctorAdviceTypeEnum;
 import com.diagbot.service.impl.DoctorAdviceServiceImpl;
-import com.diagbot.util.BeanUtil;
-import com.diagbot.util.DateUtil;
-import com.diagbot.util.StringUtil;
-import com.diagbot.util.TZDBConn;
+import com.diagbot.util.*;
 import com.diagbot.vo.data.ADeleteFlagVO;
 import com.diagbot.vo.data.ADoctorAdviceVO;
 import com.google.common.collect.Lists;
@@ -34,6 +31,9 @@ public class ADoctorAdviceFacade extends DoctorAdviceServiceImpl{
     @Autowired
     private AMedAbnormalInfoFacade aMedAbnormalInfoFacade;
 
+    @Autowired
+    private SqlProperties sqlProperties;
+
     private TZDBConn tzDBConn = new TZDBConn();
 
     /**
@@ -41,7 +41,8 @@ public class ADoctorAdviceFacade extends DoctorAdviceServiceImpl{
      */
     public void executeDoctorAdvice() {
         //String sql="select * from br_doctadvice where cjcxrq>=dateadd(day,-2,getdate()) and cjcxrq<=getdate()";
-        String sql="select * from br_doctadvice where BRZYID in (select BRZYID from br_inpatientinfo where cjcxrq>=(select CONVERT(varchar,GETDATE()-2,23)) and cjcxrq<(select CONVERT(varchar,GETDATE(),23)) and requestflag='1')";
+        //String sql="select * from br_doctadvice where BRZYID in (select BRZYID from br_inpatientinfo where cjcxrq>=(select CONVERT(varchar,GETDATE()-2,23)) and cjcxrq<(select CONVERT(varchar,GETDATE(),23)) and requestflag='1')";
+        String sql = sqlProperties.getDoctorAdviceSql();
         List<DoctorAdvice> doctorAdviceList = tzDBConn.getDoctorAdvice(sql);
         execute(doctorAdviceList);
     }

+ 7 - 5
src/main/java/com/diagbot/facade/data/AHomeDiagnoseInfoFacade.java

@@ -8,10 +8,7 @@ import com.diagbot.dto.data.AHomeDiagnoseDTO;
 import com.diagbot.entity.HomeDiagnoseInfo;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.service.impl.HomeDiagnoseInfoServiceImpl;
-import com.diagbot.util.BeanUtil;
-import com.diagbot.util.DateUtil;
-import com.diagbot.util.StringUtil;
-import com.diagbot.util.TZDBConn;
+import com.diagbot.util.*;
 import com.diagbot.vo.data.ADeleteFlagVO;
 import com.diagbot.vo.data.AHomeDiagnoseVO;
 import com.google.common.collect.Lists;
@@ -32,6 +29,10 @@ public class AHomeDiagnoseInfoFacade extends HomeDiagnoseInfoServiceImpl{
     @Autowired
     private AMedAbnormalInfoFacade aMedAbnormalInfoFacade;
 
+    @Autowired
+    private SqlProperties sqlProperties;
+
+
     private TZDBConn tzDBConn = new TZDBConn();
 
     /**
@@ -40,7 +41,8 @@ public class AHomeDiagnoseInfoFacade extends HomeDiagnoseInfoServiceImpl{
     public void executeHomeDiagnose() {
         //String sql="select * from br_recdiagnose where BASYID in (select BASYID from br_rechome where cjcxrq>=dateadd(day,-2,getdate()) and cjcxrq<=getdate())";//今年的数据
         //前一天的数据
-        String sql="select * from br_recdiagnose where BASYID in (select BASYID from br_rechome where cjcxrq>=(select CONVERT(varchar,GETDATE()-1,23)) and cjcxrq<(select CONVERT(varchar,GETDATE(),23)))";
+        //String sql="select * from br_recdiagnose where BASYID in (select BASYID from br_rechome where cjcxrq>=(select CONVERT(varchar,GETDATE()-1,23)) and cjcxrq<(select CONVERT(varchar,GETDATE(),23)))";
+        String sql = sqlProperties.getHomeDiagnoseInfoSql();
         List<HomeDiagnoseInfo> homeDiagnoseList = tzDBConn.getHomeDiagnose(sql);
         execute(homeDiagnoseList);
     }

+ 6 - 5
src/main/java/com/diagbot/facade/data/AHomeOperationInfoFacade.java

@@ -8,10 +8,7 @@ import com.diagbot.dto.data.AHomeOperationDTO;
 import com.diagbot.entity.HomeOperationInfo;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.service.impl.HomeOperationInfoServiceImpl;
-import com.diagbot.util.BeanUtil;
-import com.diagbot.util.DateUtil;
-import com.diagbot.util.StringUtil;
-import com.diagbot.util.TZDBConn;
+import com.diagbot.util.*;
 import com.diagbot.vo.data.ADeleteFlagVO;
 import com.diagbot.vo.data.AHomeOperationVO;
 import com.google.common.collect.Lists;
@@ -32,6 +29,9 @@ public class AHomeOperationInfoFacade extends HomeOperationInfoServiceImpl{
     @Autowired
     private AMedAbnormalInfoFacade aMedAbnormalInfoFacade;
 
+    @Autowired
+    private SqlProperties sqlProperties;
+
     private TZDBConn tzDBConn = new TZDBConn();
 
     /**
@@ -40,7 +40,8 @@ public class AHomeOperationInfoFacade extends HomeOperationInfoServiceImpl{
     public void executeHomeOperation() {
         //String sql="select * from br_recoperation where cjcxrq>=dateadd(day,-2,getdate()) and cjcxrq<=getdate()";
         //前一天数据
-        String sql="select * from br_recoperation where cjcxrq>=(select CONVERT(varchar,GETDATE()-2,23)) and cjcxrq<(select CONVERT(varchar,GETDATE(),23))";
+        //String sql="select * from br_recoperation where cjcxrq>=(select CONVERT(varchar,GETDATE()-2,23)) and cjcxrq<(select CONVERT(varchar,GETDATE(),23))";
+        String sql = sqlProperties.getHomeOperationInfoSql();
         List<HomeOperationInfo> homeOperationList = tzDBConn.getHomeOperation(sql);
         execute(homeOperationList);
     }

+ 16 - 11
src/main/java/com/diagbot/facade/data/AHomePageFacade.java

@@ -45,6 +45,9 @@ public class AHomePageFacade extends HomePageServiceImpl{
 
     @Autowired
     private ReadProperties readProperties;
+    @Autowired
+    private SqlProperties sqlProperties;
+
 
     private TZDBConn tzDBConn = new TZDBConn();
 
@@ -54,7 +57,9 @@ public class AHomePageFacade extends HomePageServiceImpl{
     public void executeHomePage() {
         //String sql="select * from br_rechome where cjcxrq>=dateadd(day,-2,getdate()) and cjcxrq<=getdate()";
         //同步前一天的数据
-        String sql="select * from br_rechome where cjcxrq>=(CONVERT(varchar,GETDATE()-2,23)) and cjcxrq<(CONVERT(varchar,GETDATE(),23))";
+        //String sql="select * from br_rechome where cjcxrq>=(CONVERT(varchar,GETDATE()-2,23)) and cjcxrq<(CONVERT(varchar,GETDATE(),23))";
+        String sql = "select * from AI_V_SENDHOMEPAGEING a where a.BEHOSPITALCODE='10522280'";
+//        String sql = "select * from AI_V_SENDHOMEPAGEING a where a.BEHOSPITALCODE in (select t.BEHOSPITALCODE from AI_V_SENDMRRECORDING t where t.recTitle like '入院记录') ";
         List<HomePage> homePageList = tzDBConn.getHomePage(sql);
         execute(homePageList);
     }
@@ -128,14 +133,14 @@ public class AHomePageFacade extends HomePageServiceImpl{
                 //初始化入参
                 HomePage homePage=new HomePage();
                 BeanUtil.copyProperties(s,homePage);
-                if(StringUtil.isNotEmpty(s.getSex())){
+                //if(StringUtil.isNotEmpty(s.getSex())){
                     //性别,1:男,2:女
-                    homePage.setSex(SexEnum.getName(s.getSex()));
-                }
-                if(StringUtil.isNotEmpty(s.getMarriage())){
+                    //homePage.setSex(SexEnum.getName(s.getSex()));
+                //}
+                //if(StringUtil.isNotEmpty(s.getMarriage())){
                     //婚姻,1:未婚,2:已婚,3:丧偶,4:离婚,9:其他
-                    homePage.setMarriage(MarriageEnum.getName(s.getMarriage()));
-                }
+                    //homePage.setMarriage(MarriageEnum.getName(s.getMarriage()));
+                //}
                 if(StringUtil.isNotEmpty(s.getIsMedAllergy())){
                     //过敏史,1:无,2:有
                     homePage.setIsMedAllergy(IsMedAllergyEnum.getName(s.getIsMedAllergy()));
@@ -189,16 +194,16 @@ public class AHomePageFacade extends HomePageServiceImpl{
                 }
 
                 if(StringUtil.isNotBlank(s.getBirthday())){
-                    homePage.setBirthday(DateUtil.parseDateTime(DateUtil.formatDateTime(DateUtil.parseDate(s.getBirthday(),"yyyy/MM/dd"))));
+                    homePage.setBirthday(DateUtil.parseDateTime(DateUtil.formatDateTime(DateUtil.parseDate(s.getBirthday(),"yyyy-MM-dd"))));
                 }
                 if(StringUtil.isNotBlank(s.getBehospitalDate())){
-                    homePage.setBehospitalDate(DateUtil.parseDateTime(DateUtil.formatDateTime(DateUtil.parseDate(s.getBehospitalDate(),"yyyy/MM/dd HH:mm"))));
+                    homePage.setBehospitalDate(DateUtil.parseDateTime(DateUtil.formatDateTime(DateUtil.parseDate(s.getBehospitalDate(),"yyyy-MM-dd HH:mm"))));
                 }
                 if(StringUtil.isNotBlank(s.getLeaveHospitalDate())){
-                    homePage.setLeaveHospitalDate(DateUtil.parseDateTime(DateUtil.formatDateTime(DateUtil.parseDate(s.getLeaveHospitalDate(),"yyyy/MM/dd HH:mm"))));
+                    homePage.setLeaveHospitalDate(DateUtil.parseDateTime(DateUtil.formatDateTime(DateUtil.parseDate(s.getLeaveHospitalDate(),"yyyy-MM-dd HH:mm"))));
                 }
                 if(StringUtil.isNotBlank(s.getQcDate())){
-                    homePage.setQcDate(DateUtil.parseDateTime(DateUtil.formatDateTime(DateUtil.parseDate(s.getQcDate(),"yyyy/MM/dd"))));
+                    homePage.setQcDate(DateUtil.parseDateTime(DateUtil.formatDateTime(DateUtil.parseDate(s.getQcDate(),"yyyy-MM-dd"))));
                 }
                 homePageList.add(homePage);
 

+ 12 - 3
src/main/java/com/diagbot/facade/data/AMedCrisisFacade.java

@@ -5,12 +5,11 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.data.AMedCrisisDTO;
+import com.diagbot.entity.HomePage;
 import com.diagbot.entity.MedCrisisInfo;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.service.impl.MedCrisisInfoServiceImpl;
-import com.diagbot.util.BeanUtil;
-import com.diagbot.util.DateUtil;
-import com.diagbot.util.StringUtil;
+import com.diagbot.util.*;
 import com.diagbot.vo.data.ADeleteFlagVO;
 import com.diagbot.vo.data.AMedCrisisVO;
 import com.google.common.collect.Lists;
@@ -31,6 +30,16 @@ public class AMedCrisisFacade extends MedCrisisInfoServiceImpl{
     @Autowired
     private AMedAbnormalInfoFacade aMedAbnormalInfoFacade;
 
+    @Autowired
+    private SqlProperties sqlProperties;
+    private TZDBConn tzDBConn = new TZDBConn();
+
+    public void executeMedCrisisResult() {
+        String sql = sqlProperties.getCrisisInfoSql();
+        List<MedCrisisInfo> medCrisisInfoList = tzDBConn.getMedCrisisInfo(sql);
+        execute(medCrisisInfoList);
+    }
+
     public RespDTO<List<AMedCrisisDTO>> executeMedCrisis(List<AMedCrisisVO> list) {
         try {
             if(list!=null && list.size()>0){

+ 10 - 9
src/main/java/com/diagbot/facade/data/AMedLisResultFacade.java

@@ -7,10 +7,7 @@ import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.MedLisResult;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.service.impl.MedLisResultServiceImpl;
-import com.diagbot.util.BeanUtil;
-import com.diagbot.util.DateUtil;
-import com.diagbot.util.StringUtil;
-import com.diagbot.util.TZDBConn;
+import com.diagbot.util.*;
 import com.diagbot.vo.data.ADeleteFlagVO;
 import com.diagbot.vo.data.AMedLisResultVO;
 import com.google.common.collect.Lists;
@@ -31,6 +28,8 @@ public class AMedLisResultFacade extends MedLisResultServiceImpl {
     @Autowired
     private AMedAbnormalInfoFacade aMedAbnormalInfoFacade;
 
+    @Autowired
+    private SqlProperties sqlProperties;
 
     private TZDBConn tzDBConn = new TZDBConn();
 
@@ -40,7 +39,8 @@ public class AMedLisResultFacade extends MedLisResultServiceImpl {
     public void executeMedLisResult() {
         //String sql="select * from br_rechome where cjcxrq>=dateadd(day,-2,getdate()) and cjcxrq<=getdate()";
         //同步前一天的数据
-        String sql="select * from br_rechome where cjcxrq>=(select CONVERT(varchar,GETDATE()-2,23)) and cjcxrq<(select CONVERT(varchar,GETDATE(),23))";
+        //String sql="select * from br_rechome where cjcxrq>=(select CONVERT(varchar,GETDATE()-2,23)) and cjcxrq<(select CONVERT(varchar,GETDATE(),23))";
+        String sql = sqlProperties.getLisResultSql();
         List<MedLisResult> medLisResultList= tzDBConn.getLisResult(sql);
         execute(medLisResultList);
     }
@@ -50,7 +50,7 @@ public class AMedLisResultFacade extends MedLisResultServiceImpl {
             if(list!=null && list.size()>0){
                 //循环验证数据有效性
                 for (AMedLisResultVO aMedLisResultVO:list) {
-                    if(StringUtil.isEmpty(aMedLisResultVO.getReptNo())){
+                    if(StringUtil.isEmpty(aMedLisResultVO.getRepNo())){
                         return RespDTO.onError("请输入报告单号!");
                     }else if(aMedLisResultVO.getHospitalId()==null){
                         return RespDTO.onError("请输入医院编码!");
@@ -85,7 +85,8 @@ public class AMedLisResultFacade extends MedLisResultServiceImpl {
             if (medLisResultList != null && medLisResultList.size() > 0) {
                 medLisResultList.stream().forEach(s -> {
                     MedLisResult medLisResult = this.getOne(new QueryWrapper<MedLisResult>()
-                            .eq("rept_no", s.getReptNo())
+                            .eq("rep_no", s.getRepNo())
+                            .eq("item_code",s.getItemCode())
                             .eq("hospital_id", s.getHospitalId()), false);
                     if (medLisResult != null) {
                         s.setGmtModified(new Date());
@@ -111,13 +112,13 @@ public class AMedLisResultFacade extends MedLisResultServiceImpl {
     public RespDTO deleteFlag(ADeleteFlagVO aDeleteFlagVO){
         try {
             //验证数据是否存在
-            if(StringUtil.isEmpty(aDeleteFlagVO.getReptNo())){
+            if(StringUtil.isEmpty(aDeleteFlagVO.getRepNo())){
                 return RespDTO.onError("请输入报告单号!");
             }else if(aDeleteFlagVO.getHospitalId()==null){
                 return RespDTO.onError("请输入医院编码!");
             }else {
                 UpdateWrapper<MedLisResult> updateWrapper=new UpdateWrapper<>();
-                updateWrapper.eq("rept_no", aDeleteFlagVO.getReptNo())
+                updateWrapper.eq("rep_no", aDeleteFlagVO.getRepNo())
                         .eq("hospital_id", aDeleteFlagVO.getHospitalId())
                         .eq("is_deleted",IsDeleteEnum.N)
                         .set("is_deleted",IsDeleteEnum.Y)

+ 10 - 9
src/main/java/com/diagbot/facade/data/AMedPacsResultFacade.java

@@ -7,10 +7,7 @@ import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.MedPacsResult;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.service.impl.MedPacsResultServiceImpl;
-import com.diagbot.util.BeanUtil;
-import com.diagbot.util.DateUtil;
-import com.diagbot.util.StringUtil;
-import com.diagbot.util.TZDBConn;
+import com.diagbot.util.*;
 import com.diagbot.vo.data.ADeleteFlagVO;
 import com.diagbot.vo.data.AMedPacsResultVO;
 import com.google.common.collect.Lists;
@@ -31,6 +28,9 @@ public class AMedPacsResultFacade extends MedPacsResultServiceImpl {
     @Autowired
     private AMedAbnormalInfoFacade aMedAbnormalInfoFacade;
 
+    @Autowired
+    private SqlProperties sqlProperties;
+
     private TZDBConn tzDBConn = new TZDBConn();
 
     /**
@@ -39,7 +39,8 @@ public class AMedPacsResultFacade extends MedPacsResultServiceImpl {
     public void executeMedPacsResult() {
         //String sql="select * from br_rechome where cjcxrq>=dateadd(day,-2,getdate()) and cjcxrq<=getdate()";
         //同步前一天的数据
-        String sql="select * from br_rechome where cjcxrq>=(select CONVERT(varchar,GETDATE()-2,23)) and cjcxrq<(select CONVERT(varchar,GETDATE(),23))";
+        //String sql="select * from br_rechome where cjcxrq>=(select CONVERT(varchar,GETDATE()-2,23)) and cjcxrq<(select CONVERT(varchar,GETDATE(),23))";
+        String sql = sqlProperties.getPacsResultSql();
         List<MedPacsResult> medPacsResultList= tzDBConn.getPacsResult(sql);
         execute(medPacsResultList);
     }
@@ -49,7 +50,7 @@ public class AMedPacsResultFacade extends MedPacsResultServiceImpl {
             if(list!=null && list.size()>0){
                 //循环验证数据有效性
                 for (AMedPacsResultVO aMedPacsResultVO:list) {
-                    if(StringUtil.isEmpty(aMedPacsResultVO.getReptNo())){
+                    if(StringUtil.isEmpty(aMedPacsResultVO.getRepNo())){
                         return RespDTO.onError("请输入报告单号!");
                     }else if(aMedPacsResultVO.getHospitalId()==null){
                         return RespDTO.onError("请输入医院编码!");
@@ -84,7 +85,7 @@ public class AMedPacsResultFacade extends MedPacsResultServiceImpl {
             if (medPacsResultList != null && medPacsResultList.size() > 0) {
                 medPacsResultList.stream().forEach(s -> {
                     MedPacsResult medPacsResult = this.getOne(new QueryWrapper<MedPacsResult>()
-                            .eq("rept_no", s.getReptNo())
+                            .eq("rep_no", s.getRepNo())
                             .eq("hospital_id", s.getHospitalId()), false);
                     if (medPacsResult != null) {
                         s.setGmtModified(new Date());
@@ -110,13 +111,13 @@ public class AMedPacsResultFacade extends MedPacsResultServiceImpl {
     public RespDTO deleteFlag(ADeleteFlagVO aDeleteFlagVO){
         try {
             //验证数据是否存在
-            if(StringUtil.isEmpty(aDeleteFlagVO.getReptNo())){
+            if(StringUtil.isEmpty(aDeleteFlagVO.getRepNo())){
                 return RespDTO.onError("请输入报告单号!");
             }else if(aDeleteFlagVO.getHospitalId()==null){
                 return RespDTO.onError("请输入医院编码!");
             }else {
                 UpdateWrapper<MedPacsResult> updateWrapper=new UpdateWrapper<>();
-                updateWrapper.eq("rept_no", aDeleteFlagVO.getReptNo())
+                updateWrapper.eq("rep_no", aDeleteFlagVO.getRepNo())
                         .eq("hospital_id", aDeleteFlagVO.getHospitalId())
                         .eq("is_deleted",IsDeleteEnum.N)
                         .set("is_deleted",IsDeleteEnum.Y)

+ 7 - 1
src/main/java/com/diagbot/facade/data/AMedRecordTypeFacade.java

@@ -7,6 +7,7 @@ import com.diagbot.entity.MedRecordType;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.service.impl.MedRecordTypeServiceImpl;
 import com.diagbot.util.BeanUtil;
+import com.diagbot.util.SqlProperties;
 import com.diagbot.util.TZDBConn;
 import com.diagbot.vo.data.AMedicalRecordTypeVO;
 import com.google.common.collect.Lists;
@@ -24,6 +25,9 @@ public class AMedRecordTypeFacade extends MedRecordTypeServiceImpl {
     @Qualifier("medRecordTypeServiceImpl")
     private MedRecordTypeServiceImpl medRecordTypeService;
 
+    @Autowired
+    private SqlProperties sqlProperties;
+
     private TZDBConn tzDBConn = new TZDBConn();
 
     /**
@@ -31,7 +35,9 @@ public class AMedRecordTypeFacade extends MedRecordTypeServiceImpl {
      */
     public void executeMRType() {
         //String sql="select * from ar_medirecclass where SFZFPB='1'";
-        String sql="select * from ar_medirecclass where SFZFPB='1' and cjcxrq>=(select CONVERT(varchar,GETDATE()-2,23)) and cjcxrq<(select CONVERT(varchar,GETDATE(),23))";
+        //String sql="select * from ar_medirecclass where SFZFPB='1' and cjcxrq>=(select CONVERT(varchar,GETDATE()-2,23)) and cjcxrq<(select CONVERT(varchar,GETDATE(),23))";
+        //String sql = "select * from AI_V_SENDRECORDTYPES t where t.TYPEID != 'qt'";
+        String sql = sqlProperties.getRecordTypeSql();
         List<MedRecordType> medRecordTypeList = tzDBConn.getMedicalRecordType(sql);
         execute(medRecordTypeList);
     }

+ 16 - 6
src/main/java/com/diagbot/facade/data/AMedicalRecordContentFacade.java

@@ -8,19 +8,20 @@ import com.diagbot.dto.data.AMedicalRecordContentDTO;
 import com.diagbot.entity.MedicalRecordContent;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.service.impl.MedicalRecordContentServiceImpl;
-import com.diagbot.util.BeanUtil;
-import com.diagbot.util.DateUtil;
-import com.diagbot.util.StringUtil;
-import com.diagbot.util.TZDBConn;
+import com.diagbot.util.*;
 import com.diagbot.vo.data.ADeleteFlagVO;
 import com.diagbot.vo.data.AMedicalRecordContentVO;
 import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.stereotype.Component;
 
+import java.io.IOException;
+import java.io.InputStream;
 import java.util.Date;
 import java.util.List;
+import java.util.Properties;
 
 @Component
 public class AMedicalRecordContentFacade extends MedicalRecordContentServiceImpl{
@@ -32,6 +33,9 @@ public class AMedicalRecordContentFacade extends MedicalRecordContentServiceImpl
     @Autowired
     private AMedAbnormalInfoFacade aMedAbnormalInfoFacade;
 
+    @Autowired
+    private SqlProperties sqlProperties;
+
     private TZDBConn tzDBConn = new TZDBConn();
 
     /**
@@ -39,11 +43,15 @@ public class AMedicalRecordContentFacade extends MedicalRecordContentServiceImpl
      */
     public void executeMrRecordContent() {
         //String sql="select * from mr_mrcontent  where cjcxrq>=dateadd(day,-2,getdate()) and cjcxrq<=getdate()";
-        String sql="select BLJLID,BLJLNR from mr_mrcontent  where cjcxrq>=(select CONVERT(varchar,GETDATE()-2,23)) and cjcxrq<(select CONVERT(varchar,GETDATE(),23)) ORDER BY cjcxrq DESC";
+        //String sql="select BLJLID,BLJLNR from mr_mrcontent  where cjcxrq>=(select CONVERT(varchar,GETDATE()-2,23)) and cjcxrq<(select CONVERT(varchar,GETDATE(),23)) ORDER BY cjcxrq DESC";
+        //String sql="SELECT RECID AS BLJLID,CONTENTS AS BLJLNR FROM AI_V_SENDMRRECORDING t WHERE t.RECDATE>=to_date('2018-11-01','yyyy-mm-dd') AND t.RECDATE<=to_date('2019-12-30','yyyy-mm-dd') ORDER BY t.RECDATE ASC";
+        //String sql="SELECT RECID AS BLJLID,CONTENTS AS BLJLNR FROM AI_V_SENDMRRECORDING t WHERE t.RECDATE>=to_date('2019-12-30','yyyy-mm-dd') AND t.RECDATE<=to_date('2020-06-30','yyyy-mm-dd') ORDER BY t.RECDATE ASC";
+        //String sql="SELECT RECID AS BLJLID,CONTENTS AS BLJLNR FROM AI_V_SENDMRRECORDING t WHERE t.RECDATE>=to_date('2020-06-30','yyyy-mm-dd') AND t.RECDATE<=to_date('2020-10-16','yyyy-mm-dd') ORDER BY t.RECDATE ASC";
+        //String sql="SELECT RECID AS BLJLID,CONTENTS AS BLJLNR FROM AI_V_SENDMRRECORDING t";
+        String sql = sqlProperties.getRecordContentSql();
         List<MedicalRecordContent> mrContentList = tzDBConn.getMedicalRecordContent(sql);
         execute(mrContentList);
     }
-
     /**
      * 数据引擎-通过接口更新病历内容
      * @param list
@@ -124,3 +132,5 @@ public class AMedicalRecordContentFacade extends MedicalRecordContentServiceImpl
         }
     }
 }
+
+

+ 87 - 35
src/main/java/com/diagbot/facade/data/AMedicalRecordFacade.java

@@ -20,10 +20,13 @@ import com.diagbot.vo.data.ADeleteFlagVO;
 import com.diagbot.vo.data.AMedicalRecordVO;
 import com.diagbot.vo.data.AMrContentVO;
 import com.google.common.collect.Lists;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.beans.Transient;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -58,14 +61,22 @@ public class AMedicalRecordFacade extends MedicalRecordServiceImpl {
     @Autowired
     private AMedAbnormalInfoFacade aMedAbnormalInfoFacade;
 
+    @Autowired
+    private AMedRecordTypeFacade aMedRecordTypeFacade;
+
     private TZDBConn tzDBConn = new TZDBConn();
 
+    @Autowired
+    private SqlProperties sqlProperties;
     /**
      * 终末质控-同步前一天的病历记录
      */
     public void executeMrRecord() {
         //String sql="select * from mr_medicalrecords  where cjcxrq>=dateadd(day,-2,getdate()) and cjcxrq<=getdate()";
-        String sql="select * from mr_medicalrecords  where cjcxrq>=(select CONVERT(varchar,GETDATE()-2,23)) and cjcxrq<(select CONVERT(varchar,GETDATE(),23)) ORDER BY cjcxrq DESC";
+        //String sql="select * from mr_medicalrecords  where cjcxrq>=(select CONVERT(varchar,GETDATE()-2,23)) and cjcxrq<(select CONVERT(varchar,GETDATE(),23)) ORDER BY cjcxrq DESC";
+        //String sql="SELECT RECID AS BLJLID,BEHOSPITALCODE AS BRZYID,RECTYPEID AS BLMBID,RECDATE AS BCJLSJ,RECTITLE AS BLJLMC FROM AI_V_SENDMRRECORDING t t WHERE t.RECDATE>=to_date('2020-06-30','yyyy-mm-dd') AND t.RECDATE<=to_date('2020-10-16','yyyy-mm-dd') ORDER BY t.RECDATE ASC";
+        //String sql="SELECT RECID AS BLJLID,BEHOSPITALCODE AS BRZYID,RECTYPEID AS BLMBID,RECDATE AS BCJLSJ,RECTITLE AS BLJLMC FROM AI_V_SENDMRRECORDING t";
+        String sql = sqlProperties.getRecordInfoSql();
         List<MedicalRecord> medicalRecordList = tzDBConn.getMedicalRecord(sql);
         execute(medicalRecordList);
     }
@@ -75,6 +86,7 @@ public class AMedicalRecordFacade extends MedicalRecordServiceImpl {
      * @param list
      * @return
      */
+    @Transactional
     public RespDTO<List<AMedicalRecordDTO>> executeMrRecord(List<AMedicalRecordVO> list) {
         try {
             if(list!=null && list.size()>0) {
@@ -88,7 +100,6 @@ public class AMedicalRecordFacade extends MedicalRecordServiceImpl {
                         return RespDTO.onError("请输入病人住院编码!");
                     }
                 }
-
                 //装载数据
                 List<MedicalRecord> medicalRecordList = Lists.newArrayList();
                 list.stream().forEach(s->{
@@ -98,7 +109,6 @@ public class AMedicalRecordFacade extends MedicalRecordServiceImpl {
                     medicalRecordList.add(medicalRecord);
                 });
                 execute(medicalRecordList);
-
                 List<AMedicalRecordDTO> medicalRecordDTOList = BeanUtil.listCopyTo(list, AMedicalRecordDTO.class);
                 return RespDTO.onSuc(medicalRecordDTOList);
             }else{
@@ -122,15 +132,15 @@ public class AMedicalRecordFacade extends MedicalRecordServiceImpl {
                 AMrContentDTO aMrContentDTO=new AMrContentDTO();
                 //循环验证数据有效性
                 for (AMedicalRecordVO aMedicalRecordVO : aMrContentVO.getRecords()) {
-                    if ("".equals(aMedicalRecordVO.getRecId())) {
+                    if (aMedicalRecordVO.getRecId() == null || "".equals(aMedicalRecordVO.getRecId())) {
                         return RespDTO.onError("请输入文书序号!");
                     } else if (aMedicalRecordVO.getHospitalId() == null) {
                         return RespDTO.onError("请输入医院编码!");
-                    } else if ("".equals(aMedicalRecordVO.getBehospitalCode())) {
+                    } else if (aMedicalRecordVO.getBehospitalCode() == null || "".equals(aMedicalRecordVO.getBehospitalCode())) {
                         return RespDTO.onError("请输入病人住院编码!");
-                    } else if ("".equals(aMedicalRecordVO.getRecTypeId())) {
+                    } else if (aMedicalRecordVO.getRecTypeId() == null || "".equals(aMedicalRecordVO.getRecTypeId())) {
                         return RespDTO.onError("请输入病历类别编号!");
-                    } else if ("".equals(aMedicalRecordVO.getRecTitle())) {
+                    } else if (aMedicalRecordVO.getRecTitle() == null || "".equals(aMedicalRecordVO.getRecTitle())) {
                         return RespDTO.onError("请输入病历标题!");
                     } else if (aMedicalRecordVO.getContents() == null || aMedicalRecordVO.getContents().size() == 0) {
                         return RespDTO.onError("请输入文书详情!");
@@ -138,7 +148,6 @@ public class AMedicalRecordFacade extends MedicalRecordServiceImpl {
                 }
                 //更新文书信息
                 executeMrRecord(aMrContentVO.getRecords());
-
                 aMrContentVO.getRecords().stream().forEach(s -> {
                     //更新文书详情
                     aMedicalRecordContentFacade.executeMrRecordContent(s.getContents());
@@ -199,7 +208,7 @@ public class AMedicalRecordFacade extends MedicalRecordServiceImpl {
                 //接口引擎模式
                 return RespDTO.onSuc(map);
             }else{
-                if(modeId==0 || modeId==null){
+                if(modeId==null ||modeId==0 ){
                     return RespDTO.onError("无对应的文书类型");
                 }
                 //页面模式
@@ -251,33 +260,33 @@ public class AMedicalRecordFacade extends MedicalRecordServiceImpl {
                                 .eq("is_deleted",IsDeleteEnum.N), false);
                         if(behospitalInfo!=null){
                             //如果病人住院信息存在,更新对应的qc_type_id
-                            Long qcTypeId=Long.valueOf("0");
-                            QcType qcType=qcTypeFacade.getOne(new QueryWrapper<QcType>()
-                                    .eq("name",s.getRecTitle())
-                                    .eq("hospital_id", s.getHospitalId())
-                                    .eq("is_deleted",IsDeleteEnum.N), false);
-                            if(qcType!=null){
-                                behospitalInfo.setQcTypeId(qcType.getId());
-                            }else{
-                                //新增类型到qc_type表中
-                                QcType qctype=new QcType();
-                                qctype.setHospitalId(s.getHospitalId());
-                                qctype.setName(s.getRecTitle());
-                                qctype.setGmtCreate(new Date());
-
-                                Long id=qcTypeFacade.saveT(qctype);
-                                behospitalInfo.setQcTypeId(id);
-
-                                //新增类型到监测表中
-                                QcAbnormal qcAbnormal=new QcAbnormal();
-                                qcAbnormal.setHospitalId(s.getHospitalId());
-                                qcAbnormal.setBehospitalCode(s.getBehospitalCode());
-                                qcAbnormal.setType(2);
-                                qcAbnormal.setDescription(s.getRecTitle());
-                                qcAbnormal.setGmtCreate(new Date());
-                                qcAbnormalService.getBaseMapper().insert(qcAbnormal);
-                            }
+                            Long qcTypeId = initQcTypeId(s,behospitalInfo);
+                            behospitalInfo.setQcTypeId(qcTypeId);
                             behospitalInfoList.add(behospitalInfo);
+//                            QcType qcType=qcTypeFacade.getOne(new QueryWrapper<QcType>()
+//                                    .eq("name",s.getRecTitle())
+//                                    .eq("hospital_id", s.getHospitalId())
+//                                    .eq("is_deleted",IsDeleteEnum.N), false);
+//                            if(qcType!=null){
+//                                behospitalInfo.setQcTypeId(qcType.getId());
+//                            }else{
+//                                //新增类型到qc_type表中
+//                                QcType qctype=new QcType();
+//                                qctype.setHospitalId(s.getHospitalId());
+//                                qctype.setName(s.getRecTitle());
+//                                qctype.setGmtCreate(new Date());
+//                                Long id=qcTypeFacade.saveT(qctype);
+//                                behospitalInfo.setQcTypeId(id);
+//                                //新增类型到监测表中
+//                                QcAbnormal qcAbnormal=new QcAbnormal();
+//                                qcAbnormal.setHospitalId(s.getHospitalId());
+//                                qcAbnormal.setBehospitalCode(s.getBehospitalCode());
+//                                qcAbnormal.setType(2);
+//                                qcAbnormal.setDescription(s.getRecTitle());
+//                                qcAbnormal.setGmtCreate(new Date());
+//                                qcAbnormalService.getBaseMapper().insert(qcAbnormal);
+//                            }
+//                            behospitalInfoList.add(behospitalInfo);
                         }
                     }
                     s.setModeId(modeId);
@@ -285,6 +294,7 @@ public class AMedicalRecordFacade extends MedicalRecordServiceImpl {
                     MedicalRecord mRecord = this.getOne(new QueryWrapper<MedicalRecord>()
                             .eq("rec_id", s.getRecId())
                             .eq("hospital_id", s.getHospitalId())
+                            .eq("is_deleted",IsDeleteEnum.N)
                             .eq("behospital_code", s.getBehospitalCode()), false);
                     if (mRecord != null) {
                         s.setGmtModified(new Date());
@@ -314,6 +324,48 @@ public class AMedicalRecordFacade extends MedicalRecordServiceImpl {
     }
 
 
+    /**
+     * 初始化质控类型ID
+     *
+     * @param medicalRecord
+     * @return
+     */
+    private Long initQcTypeId(MedicalRecord medicalRecord,BehospitalInfo behospitalInfo) {
+        Long qcTypeId = Long.valueOf("0");
+        List<QcType> qcTypeList = qcTypeFacade.list(new QueryWrapper<QcType>()
+                .eq("beh_dept_id", behospitalInfo.getBehDeptId())
+                .eq("hospital_id", behospitalInfo.getHospitalId())
+                .eq("is_deleted", IsDeleteEnum.N));
+        if (medicalRecord != null) {
+//            MedRecordType medRecordType =aMedRecordTypeFacade.getOne(new QueryWrapper<MedRecordType>()
+//                    .eq("hospital_id",medicalRecord.getHospitalId())
+//                    .eq("type_id",medicalRecord.getRecTypeId())
+//                    .eq("is_deleted", IsDeleteEnum.N));
+//            if (medRecordType!=null) {
+                if (qcTypeList.size() == 0) {
+                    QcType qcType = qcTypeFacade.getOne(new QueryWrapper<QcType>()
+                            .eq("default_module", 1)
+                            .eq("hospital_id", behospitalInfo.getHospitalId())
+//                            .eq("sex", behospitalInfo.getSex())
+                            .eq("is_deleted", IsDeleteEnum.N));
+                    qcTypeId = qcType.getId();
+                } else if (qcTypeList.size() == 1) {
+                    qcTypeId = qcTypeList.get(0).getId();
+                } else {
+                    QcType qcType = new QcType();
+                    qcTypeList.forEach(ss -> {
+                        if (ss.getSex().equals(behospitalInfo.getSex())) {
+                            qcType.setId(ss.getId());
+                        }
+                    });
+                    qcTypeId = qcType.getId();
+                }
+//            }
+
+        }
+        return qcTypeId;
+    }
+
     /**
      * 初始化模型ID
      * @param medicalRecord

+ 1 - 1
src/main/java/com/diagbot/task/BasDoctorInfoTask.java

@@ -46,7 +46,7 @@ public class BasDoctorInfoTask implements SchedulingConfigurer{
                         && task001.getIsDeleted().equals(IsDeleteEnum.N.getKey())
                         && task001.getIsUsed().equals(1)) {
                     log.info("执行动态定时任务: " + LocalDateTime.now().toLocalTime());
-                    //aBasDoctorInfoFacade.executeDoctor();
+                    aBasDoctorInfoFacade.executeDoctor();
                 }
             }
         }, new Trigger() {

+ 1 - 1
src/main/java/com/diagbot/task/BehospitalInfoAnalyzeTask.java

@@ -53,7 +53,7 @@ public class BehospitalInfoAnalyzeTask implements SchedulingConfigurer {
                         && task001.getIsUsed().equals(1)) {
                     log.info("执行动态定时任务: " + LocalDateTime.now().toLocalTime());
                     TaskVO taskVO = new TaskVO();
-                    behospitalInfoFacade.execute(taskVO, param);
+//                    behospitalInfoFacade.execute(taskVO, param);
                 }
             }
         }, new Trigger() {

+ 1 - 1
src/main/java/com/diagbot/task/MedCrisisTask.java

@@ -44,7 +44,7 @@ public class MedCrisisTask implements SchedulingConfigurer {
                         && task001.getIsDeleted().equals(IsDeleteEnum.N.getKey())
                         && task001.getIsUsed().equals(1)) {
                     log.info("执行动态定时任务: " + LocalDateTime.now().toLocalTime());
-                    //aMedCrisisFacade.executeMedCrisis();
+                    aMedCrisisFacade.executeMedCrisisResult();
                 }
             }
         }, new Trigger() {

+ 141 - 0
src/main/java/com/diagbot/util/SocketClient.java

@@ -0,0 +1,141 @@
+package com.diagbot.util;
+
+import ca.uhn.hl7v2.model.Message;
+import ca.uhn.hl7v2.parser.PipeParser;
+import ca.uhn.hl7v2.util.Terser;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.Socket;
+
+public class SocketClient {
+    public static void main(String[] args) throws Exception {
+        String msg1 = "MSH|^~\\&|HIS^1|MediInfo|MediII^1|MediInfo|20201106092139||ADT^A01^ADT_A01|62c6a92b14bf4ac3b2c1223eaec56354|P|2.4\n" +
+                "EVN|A01|20201106092139||||20201106092139\n" +
+                "PID||1101722206^0|1101722206^^^JG01~000251286^^^JG02~~~~1101722206^^^JG06~~~~1101722206^^^JG10|0|ChenXiangNian^陈相年||19821227000000|F|||浙江金华义乌北苑街道季宅一区92-1-406&amp;北苑街道季宅一区92-1-406^^330700^330000^445700^^H~^^^^^^W^义乌市北苑街道季宅一区92-1-406~^^^^^^R||^^02^^^^15067919181|||M^已婚|||422827198212272025|||01^苗族|湖北省恩施土家族苗族市|||||^中国||0||0\n" +
+                "NK1|1|^蒋中友|配偶||~^^^^^^13967414569~^^^^^^15067919181||||||||^^义乌市北苑街道季宅一区92-1-406\n" +
+                "PV1|1|I|508^^^51944&amp;乳腺外科^^乳腺外科病区||||376^^冯庆菁^^^^^^^^^^^0827&amp;乳腺组||||||||||698^^黄晓芸|01|10530126||XJ01||||||||0|||||||||||||51944||20201106092003||||||1|V|30281\n" +
+                "OBX|1|NM|25^年龄||37|岁|||||F|||20201106092003\n" +
+                "DG1|1|N63.x00||双乳房肿块微创||A\n" +
+                "IN1|1|^^^0|0";
+        String msg2 = "MSH|^~\\&|HIS^1|MediInfo|MediII^1|MediInfo|20201106090519||ADT^A01^ADT_A01|f769b50c01f54ce7abdfa42652ca1f0a|P|2.4\n" +
+                "EVN|A01|20201106090519||||20201106090519\n" +
+                "PID||1100652958^0|1100652958^^^JG01~000165210^^^JG02~~~~C09ADC576^^^JG06~6601176457^^^JG07~C09ADC576^^^JG08~~1100652958^^^JG10|0|DingShengJue^丁胜珏||19901031000000|F|||浙江金华义乌北苑街道星城嘉园1-2-505&amp;北苑街道星城嘉园1-2-505^^330700^330000^322000^^H~^^^^^^W^义乌市北苑街道星城嘉园1-2-505~^^^^^^R||^^02^^^^15057918211|||M^已婚||C09ADC576|33078219901031002X|||^汉族|浙江省金华市|||||^中国||0||0\n" +
+                "NK1|1|^李荷香|婆婆||~^^^^^^15024561473~^^^^^^15057918211||||||||^^义乌市北苑街道星城嘉园1-2-505\n" +
+                "PV1|2|I|521^^^52103&amp;产科^^幸福颐家西||||374^^陈林海^^^^^^^^^^^0767&amp;产A组||||||||||422^^王璐|190|10530088||XJH14||||||||0|||||||||||||52103||20201106090237||||||2|V|E0456\n" +
+                "OBX|1|NM|25^年龄||30|岁|||||F|||20201106090237\n" +
+                "DG1|1|Z33.X52||双胎妊娠 晚期妊娠||A\n" +
+                "IN1|1|^^^0^330782\\T\\3\\T\\330782D1560000051020459524740972:C09ADC576\\T\\丁胜珏\\T\\14\\T\\\\T\\\\T\\00\\T\\\\T\\C09ADC576\\T\\6601176457\\T\\\\T\\C09ADC576\\T\\\\T\\\\T\\\\T\\|0";
+        String msg3 = "MSH|^~\\&|HIS^1|MediInfo|MediII^1|MediInfo|20201106084358||ADT^A01^ADT_A01|44fd408115f54b1fa99ee0b5358c00cf|P|2.4\n" +
+                "EVN|A01|20201106084358||||20201106084358\n" +
+                "PID||1101525977^0|1101525977^^^JG01~000251284^^^JG02~~~~C0A6C2F40^^^JG06~6600631838^^^JG07~C0A6C2F40^^^JG08~~1101525977^^^JG10|0|ChenZhiMin^陈志敏||19920117000000|F|||浙江金华义乌北苑街道畈东村10组&amp;北苑街道畈东村10组^^330700^330000^^^H~^^^^^^W^义乌市畈东村61-2-501~^^^^^^R||^^02^^^^15988507440|||M^已婚||C0A6C2F40|330782199201174323|||^汉族||||||^中国||0||0\n" +
+                "NK1|1|^朱超群|配偶||~^^^^^^15356905170~^^^^^^15988507440||||||||^^义乌市畈东村61-2-501\n" +
+                "PV1|1|I|502^^^52103&amp;产科^^产一西||||441^^金苏君^^^^^^^^^^^0767&amp;产A组||||||||||441^^金苏君|01|10530087||XJ01||||||||0|||||||||||||52103||20201106084133||||||1|V|30281\n" +
+                "OBX|1|NM|25^年龄||28|岁|||||F|||20201106084133\n" +
+                "DG1|1|Z33.X52||晚期妊娠||A\n" +
+                "IN1|1|^^^0|0";
+        String msg4 = "MSH|^~\\&|HIS^1|MediInfo|MediII^1|MediInfo|20201106081925||ADT^A01^ADT_A01|29f25ac25d1e4336897adaf3ce0989a9|P|2.4\n" +
+                "EVN|A01|20201106081925||||20201106081925\n" +
+                "PID||1101579562^0|1101579562^^^JG01~000251282^^^JG02~~~~1101579562^^^JG06~~~~1101579562^^^JG10|0|YangGanYao^杨乾垚||20170403000000|M|||浙江金华义乌城西街道万商华府3-3-20&amp;城西街道万商华府3-3-20^^330700^330000^325100^^H~^^^^^^W^义乌市城西街道万商华府3-3-20~^^^^^^R||^^02^^^^13600595050|||S^未婚||||||^汉族||||||^中国||0||0\n" +
+                "NK1|1|^杨显忠|父亲||~^^^^^^13738907387~^^^^^^13600595050||||||||^^义乌市城西街道万商华府3-3-20\n" +
+                "PV1|1|I|510^^^52424&amp;儿科(住)^^普儿病区||||443^^徐兰飞^^^^^^^^^^^0527&amp;儿科住院医生||||||||||10216^^丁俊超|01|10530085||XJ01||||||||0|||||||||||||52424||20201106081502||||||1|V|E0456\n" +
+                "OBX|1|NM|25^年龄||3|岁|||||F|||20201106081502\n" +
+                "DG1|1|J02.900||急性咽炎||A\n" +
+                "IN1|1|^^^0|0";
+        String msg5 = "MSH|^~\\&|HIS^1|MediInfo|MediII^1|MediInfo|20201106061324||ADT^A01^ADT_A01|13d8a19057c04029b50d77aba6b2e335|P|2.4\n" +
+                "EVN|A01|20201106061324||||20201106061324\n" +
+                "PID||1101560659^0|1101560659^^^JG01~000251058^^^JG02~~~~1101560659^^^JG06~~~~1101560659^^^JG10|0|HuangLu^黄璐||19940306000000|F|||安徽省郎溪县毕桥镇长何新村白塘6号^^^340000^^^H~^^^^^^W^江东街道西谷村42栋2单元~^^^^^^R||^^02^^^^18969399075|||O^其他|||342522199403063943|||01||||||||0||0\n" +
+                "NK1|1|^赵品超|11|&amp;义乌青口西谷42-2-5|~^^^^^^18969399075~^^^^^^18969399075||||||||^^江东街道西谷村42栋2单元\n" +
+                "PV1|1|I|503^^^52103&amp;产科^^产二东||||816^^程芙蓉^^^^^^^^^^^0767&amp;产A组||||||||||10213^^陈婷|01|10530071||XJ01||||||||0|||||||||||||52103||20201106061141||||||1|V|860\n" +
+                "OBX|1|NM|25^年龄||26|岁|||||F|||20201106061141\n" +
+                "DG1|1|O42.900||胎膜早破||A\n" +
+                "IN1|1|^^^0|0";
+        String msg6 = "MSH|^~\\&|HIS^1|MediInfo|MediII^1|MediInfo|20201106160446||OMP^O09|a34fce72b13647a69a6181f030eaa3b5|P|2.4\n" +
+                "PID||1101632180^0|1101632180^^^JG01~000243746^^^JG02~~~~C22874529^^^JG06~6600709192^^^JG07~C22874529^^^JG08~~1101632180^^^JG10|0|FengZhangYue^冯樟月||19630402000000|F|||浙江金华义乌佛堂镇田心二村3组&佛堂镇田心二村3组^^330700^330000^322000^^H~^^^^^^W^-~^^^^^^R||^^02^^^^13957929996|||M^已婚||C22874529|33072519630402612X|||^汉族|浙江金华义乌|||||^中国||0||0\n" +
+                "PV1|1|I|508^^833西^51944&乳腺外科^^乳腺外科病区||||10205^^徐高^^^^^^^^^^^0827&乳腺组||||||||||10205^^徐高|190|10529960||XJH12||||20201106150700||||0|||||||||||||51944||20201105153342||||||1|V|E0456\n" +
+                "ORC|NW|1028500307||1028500307^1^1|CM|二甲双胍缓释片0.5G*1   2片  自备|1^BID^1天2次^20201106155606^^^1^^1|||||10304^^周广慧||||8^文本^0\n" +
+                "RXO|^二甲双胍缓释片0.5G*1   2片  自备||||||||||1|||||||||0^^^^^0\n" +
+                "RXR|75^口服^0";
+        String msg7 = "MSH|^~\\&|LIS|LIS|MediII|MediII|20201108134546||OUL^R21^OUL_R21|B38ECFCD3F310B0FE0530D049FC0610E|P|2.4\n" +
+                "PID|1|1100487485|1100487485^^^JG01~^^^JG02~^^^JG03~^^^JG04~^^^JG05~1100487485^^^JG06~^^^JG07~^^^JG08~^^^JG09~1100487485^^^JG10||^蒋颜颜||19960601|F\n" +
+                "NTE|1||妊娠\n" +
+                "PV1|1|O||R|||||||||||||||1007690958||||||||||||||||||||||||||||||||V\n" +
+                "ORC|OK|1006650223^^1008548799|^^201108MYE00040||||||20201107153754|||10199^^冯玉|51964^^^^^^^^中医妇科||||51964^中医妇科\n" +
+                "OBR|1|1006650223^^201108MYE00040||0000000824^安检3(+1)项|||20201107154637|||||5177302^免疫室||20201107154720|002&血清|||||24|岁|20201108134438|||F|||||||||C0030&&王京|C0046&&朱玲玲\n" +
+                "NTE|1||~建议定期跟踪随访RPR并检测TPPA!\n" +
+                "OBX|1|ST|0387^人免疫缺陷病毒抗原.抗体^^^HIV-Ag/Ab||阴性||阴性|N|||F|||||002^0^AA^阴性\n" +
+                "OBX|2|ST|0190^丙型肝炎抗体^^^HCV-Ab||阴性||阴性|N|||F|||||002^0^AA^阴性\n" +
+                "OBX|3|ST|0191^丙型肝炎核心抗原^^^HCV-Ag||阴性||阴性|N|||F|||||002^0^AA^阴性\n" +
+                "OBX|4|ST|0189^梅毒螺旋体抗体^^^TP-Ab||阳性||阴性|A|||F|||||002^0^BA^阴性\n" +
+                "OBX|5|ST|6078^梅毒甲苯胺红不加热血清试验^^^TRUST||弱阳性||阴性|A|||F|||||002^0^BA^阴性";
+        //        socketClient2F(msg1);
+//        String sUid = UUID.randomUUID().toString();
+        String msg9="MSH|^~\\&|PACS|PACS|MediII|MediII|20201117130815||ORU^R01|CEC9D0B4761646978F1F147620C5F374|P|2.4\n" +
+                "PID||1101737952|1101737952~000251952~||XiangHuiJieZhiZi^项慧杰之子||20201113000000|M|||浙江金华义乌城店路575号&城店路575号||^^^^^^15088205523|^^^^^^||S^未婚||||||^汉族||||||^中国\n" +
+                "PV1||I||R|||349^^金志彪|||||||||||01|10533496||XJ01|||||||||||||||||||||51766||20201117093701|||||||V\n" +
+                "ORC|UX|1002650202|DR93790||CM||||20201117105016|B0140^^王晓庆||778^^陈淑君|51772^^^^^^^^放射科|||^|51766^新生儿科^|||82^1|||||F\n" +
+                "OBR|1|1002650202|DR93790^^121649959|92091^小儿胸腹联合片^^DR^胸部||||||||51772^放射科^||||||||||20201117130815|^82|DR|C|||||||||B0140&&王晓庆|B0008&&陈爱萍\n" +
+                "NTE|1||\n" +
+                "OBX|1|CE|IMP||    胸廓两侧对称,气管居中。两侧肺野纹理增多,未见明显实质性病变。双侧肋膈角锐利。心影及横膈未见明显异常。\\X000d\\\n" +
+                "    腹部肠腔内可见部分积气,未见肠腔异常扩张,肠壁间距不宽,肠曲至侧腹壁距离不宽,未见阳性结石和钙化,双侧腹脂线清晰。\\X000d\\\n" +
+                "||||||F\n" +
+                "OBX|2|TX|GDT||    1.两侧肺野纹理增多,请结合临床。\\X000d\\\n" +
+                "    2.腹部目前未见明显异常征象。\\X000d\\\n" +
+                "||||||F\n" +
+                "OBX|3|RP|ZMF||||||||F";
+        msg9 = msg9.replaceAll("\n", "\r").replace("\u000B", "").replace("\u001C", "").replace("\\\r","");
+        PipeParser pipeParser = PipeParser.getInstanceWithNoValidation();
+        Message message = pipeParser.parse(msg9);
+        Terser terser = new Terser(message);
+        System.out.println(terser);
+////        String station = "PID-8";//所取字段位置
+//        String val1 = terser.get("/.ORDER_OBSERVATION/NTE-1");
+//        StringBuilder responseMsg = new StringBuilder();
+//        responseMsg.append("MSH|")
+//                .append(terser.get("/." + "MSH-2") + "|")
+//                .append(terser.get("/." + "MSH-3") + "|")
+//                .append(terser.get("/." + "MSH-4") + "|")
+//                .append(terser.get("/." + "MSH-5") + "|")
+//                .append(terser.get("/." + "MSH-6") + "|")
+//                .append(terser.get("/." + "MSH-7") + "||")
+//                .append("ACK|" + sUid + "|")
+//                .append(terser.get("/." + "MSH-11") + "|")
+//                .append(terser.get("/." + "MSH-12") + "\n")
+//                .append("MSA|AA|")
+//                .append(terser.get("/." + "MSH-10"));
+//        System.out.println(responseMsg);
+    }
+
+    public static void socketClient2F(String message) throws IOException {
+        final Logger logger = LoggerFactory.getLogger(SocketClient.class);
+        String host = "127.0.0.1";
+        int port = 8091;
+        Socket socket = new Socket(host, port);
+        // 建立连接后获得输出流
+        OutputStream outputStream = socket.getOutputStream();
+        //首先需要计算得知消息的长度
+        byte[] sendBytes = message.getBytes("UTF-8");
+        //然后将消息的长度优先发送出去
+//        outputStream.write(sendBytes.length >> 8);
+//        outputStream.write(sendBytes.length);
+        //然后将消息再次发送出去
+        outputStream.write(sendBytes);
+        outputStream.flush();
+        socket.shutdownOutput();
+        InputStream inputStream = socket.getInputStream();
+        byte[] bytes = new byte[1024];
+        int len;
+        StringBuilder sb = new StringBuilder();
+        while ((len = inputStream.read(bytes)) != -1) {
+            // 注意指定编码格式,发送方和接收方一定要统一,建议使用UTF-8
+            sb.append(new String(bytes, 0, len, "UTF-8"));
+        }
+        System.out.println(sb);
+        outputStream.close();
+        inputStream.close();
+        socket.close();
+    }
+
+}

+ 161 - 0
src/main/java/com/diagbot/util/SocketServer.java

@@ -0,0 +1,161 @@
+package com.diagbot.util;
+
+import ca.uhn.hl7v2.model.Message;
+import ca.uhn.hl7v2.parser.PipeParser;
+import ca.uhn.hl7v2.util.Terser;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.util.UUID;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+
+@Service
+public class SocketServer {
+    protected final Logger logger = LoggerFactory.getLogger(this.getClass());
+    //    @Value("${port}")
+    private Integer port;
+    private boolean started;
+    private ServerSocket serverSocket;
+    //使用多线程,需要线程池,防止并发过高时创建过多线程耗尽资源
+    private ExecutorService threadPool = Executors.newCachedThreadPool();
+    @Autowired
+    private YWAnalysis ywAnalysis;
+
+    public void start() {
+        start(8091);
+    }
+
+    private void start(Integer port) {
+        try {
+            serverSocket = new ServerSocket(port == null ? this.port : port);
+            started = true;
+            logger.info("Socket服务已启动,占用端口: {}", serverSocket.getLocalPort());
+        } catch (IOException e) {
+            logger.error("端口异常信息", e);
+            System.exit(0);
+        }
+        while (started) {
+            try {
+                Socket socket = serverSocket.accept();
+                Runnable runnable = () -> {
+                    try {
+                        //接收客户端数据
+                        StringBuilder socketReceiveMsg = onMessage(socket);
+                        String receiveMsg = String.valueOf(socketReceiveMsg).replaceAll("\n", "\r").replace("\u000B", "").replace("\u001C", "").replace("\\\r","");
+                        //处理逻辑
+                        logger.info("receiveMsg========================>");
+                        System.out.println(receiveMsg);
+                        ywAnalysis.executeAnalysis(receiveMsg);
+                        //返回给his消息格式
+                        StringBuilder responseMsg = getResponseMsg(receiveMsg);
+                        logger.info("responseMsg========================>");
+                        System.out.println(responseMsg);
+                        sendMessage(socket, String.valueOf(responseMsg));
+                        socket.close();
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                };
+                //接收线程返回结果
+                Future future = threadPool.submit(runnable);
+                logger.info(future.isDone() + "--------");
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+    /**
+     * 接收客户端消息
+     *
+     * @param socket
+     * @return
+     */
+    private static StringBuilder onMessage(Socket socket) {
+        byte[] bytes = new byte[2048];
+        int len;
+        try {
+            // 建立好连接后,从socket中获取输入流,并建立缓冲区进行读取
+            InputStream inputStream = socket.getInputStream();
+            StringBuilder sb = new StringBuilder();
+            sb.append(new String(bytes, 0, inputStream.read(bytes), "UTF-8"));
+//            while ((len = inputStream.read(bytes)) != -1) {
+//
+//                // 注意指定编码格式,发送方和接收方一定要统一,建议使用UTF-8
+//                sb.append(new String(bytes, 0, len, "UTF-8"));
+//            }
+            //此处,需要关闭服务器的输出流,但不能使用inputStream.close().
+            socket.shutdownInput();
+            return sb;
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    /**
+     * 发送消息
+     *
+     * @param socket
+     * @param message
+     */
+    private static void sendMessage(Socket socket, String message) {
+        try {
+            //向客户端返回数据
+            OutputStream outputStream = socket.getOutputStream();
+            //首先需要计算得知消息的长度
+            byte[] sendBytes = message.getBytes("UTF-8");
+            //然后将消息的长度优先发送出去
+//            outputStream.write(sendBytes.length >> 8);
+//            outputStream.write(sendBytes.length);
+            //然后将消息再次发送出去
+            outputStream.write(sendBytes);
+            outputStream.flush();
+            outputStream.close();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 生成返回客户端消息
+     *
+     * @param receiveMsg
+     * @return
+     */
+    private StringBuilder getResponseMsg(String receiveMsg) {
+        StringBuilder responseMsg = new StringBuilder();
+        try {
+            PipeParser pipeParser = PipeParser.getInstanceWithNoValidation();
+            Message message = pipeParser.parse(receiveMsg);
+            Terser terser = new Terser(message);
+            String sUid = UUID.randomUUID().toString();
+            responseMsg.append("\u000B").append("MSH|")
+                    .append(terser.get("/." + "MSH-2") + "|")
+                    .append(terser.get("/." + "MSH-3") + "|")
+                    .append(terser.get("/." + "MSH-4") + "|")
+                    .append(terser.get("/." + "MSH-5") + "|")
+                    .append(terser.get("/." + "MSH-6") + "|")
+                    .append(YWDateUtils.getCurrentTime() + "||")
+                    .append("ACK|" + sUid + "|")
+                    .append(terser.get("/." + "MSH-11") + "|")
+                    .append(terser.get("/." + "MSH-12"))
+                    .append("\r\n")
+                    .append("MSA|AA|")
+                    .append(terser.get("/." + "MSH-10")).append("\u001C");
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return responseMsg;
+    }
+
+}

+ 24 - 0
src/main/java/com/diagbot/util/SqlProperties.java

@@ -0,0 +1,24 @@
+package com.diagbot.util;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.context.annotation.PropertySource;
+import org.springframework.stereotype.Component;
+
+@Component
+@ConfigurationProperties(prefix = "medical")
+@PropertySource(value = "sql.properties")
+@Data
+public class SqlProperties {
+    private String recordInfoSql;
+    private String recordContentSql;
+    private String beHospitalInfoSql;
+    private String doctorAdviceSql;
+    private String homePageSql;
+    private String lisResultSql;
+    private String pacsResultSql;
+    private String recordTypeSql;
+    private String homeDiagnoseInfoSql;
+    private String homeOperationInfoSql;
+    private String crisisInfoSql;
+}

+ 296 - 241
src/main/java/com/diagbot/util/TZDBConn.java

@@ -1,9 +1,12 @@
 package com.diagbot.util;
 
+import com.alibaba.druid.pool.DruidDataSource;
 import com.diagbot.entity.*;
+import com.diagbot.enums.data.DoctorAdviceStatusEnum;
 import com.google.common.collect.Lists;
 
 import java.sql.*;
+import java.util.Date;
 import java.util.List;
 import java.util.ResourceBundle;
 
@@ -13,12 +16,13 @@ public class TZDBConn {
     private static final String USERNAME = getValue("jdbc.username");
     private static final String PASSWORD = getValue("jdbc.password");
 
-	public static final Long HOSPITAL_ID=Long.valueOf("3");//1:长兴,2:邵逸夫,3:台州市立医院
+	public static final Long HOSPITAL_ID=Long.valueOf("5");//1:长兴,2:邵逸夫,3:台州市立医院
     
     private static Connection connection = null;
     private static PreparedStatement sta = null;
 	private static ResultSet rs = null;
-	
+	private static DruidDataSource druidDataSource;
+
 	/**
      * 读取属性文件中的信息
      *
@@ -171,16 +175,16 @@ public class TZDBConn {
 			ResultSet rs =dbconn.Query(sql, null);
 			while(rs.next()){
 				HomeDiagnoseInfo homeDiagnose=new HomeDiagnoseInfo();
-				homeDiagnose.setHomePageId(rs.getString("BASYID"));//病案首页ID
+				homeDiagnose.setHomePageId(rs.getString("HOMEPAGEID"));//病案首页ID
 				homeDiagnose.setHospitalId(HOSPITAL_ID);//医院ID
-				homeDiagnose.setDiagnoseOrderNo(rs.getString("BAZDXH"));//诊断序号
-				homeDiagnose.setDiagnoseName(rs.getString("ZDJBMC"));//诊断名称
-				homeDiagnose.setDiagnoseType(rs.getString("ZDLBDM"));//诊断类别
-				homeDiagnose.setDiagnoseTypeShort(rs.getString("ZCZDPB"));//诊断判别
-				homeDiagnose.setBehospitalType(rs.getString("RYQKBM"));//入院情况
-				//homeDiagnoseVO.setLeaveHospitalType(rs.getString("RYQKBM"));//出院情况
-				//homeDiagnoseVO.setPathologyDiagnose(rs.getString("BASYID"));//病理号
-				homeDiagnose.setIcdCode(rs.getString("ICDM"));//诊断编码
+				homeDiagnose.setDiagnoseOrderNo(rs.getString("DIAGNOSEORDERNO"));//诊断序号
+				homeDiagnose.setDiagnoseName(rs.getString("DIAGNOSENAME"));//诊断名称
+				homeDiagnose.setDiagnoseType(rs.getString("DIAGNOSETYPE"));//诊断类别
+				homeDiagnose.setDiagnoseTypeShort(rs.getString("DIAGNOSETYPESHORT"));//诊断判别
+				homeDiagnose.setBehospitalType(rs.getString("BEHOSPITALTYPE"));//入院情况
+				homeDiagnose.setLeaveHospitalType(rs.getString("LEAVEHOSPITALTYPE"));//出院情况
+				homeDiagnose.setPathologyDiagnose(rs.getString("PATHOLOGYDIAGNOSE"));//病理号
+				homeDiagnose.setIcdCode(rs.getString("ICDCODE"));//诊断编码
 
 				homeDiagnoseVOList.add(homeDiagnose);
 			}
@@ -204,20 +208,20 @@ public class TZDBConn {
 			ResultSet rs =dbconn.Query(sql, null);
 			while(rs.next()){
 				HomeOperationInfo homeOperationVO=new HomeOperationInfo();
-				homeOperationVO.setHomePageId(rs.getString("BASYID"));//病案首页ID
+				homeOperationVO.setHomePageId(rs.getString("HOMEPAGEID"));//病案首页ID
 				homeOperationVO.setHospitalId(HOSPITAL_ID);//医院ID
-				homeOperationVO.setOperationOrderNo(rs.getString("BRSSXH"));//手术序号
-				homeOperationVO.setOperationDate(rs.getDate("BRSSRQ"));//手术日期
-				homeOperationVO.setOperationCode(rs.getString("SSDMID"));//手术编码
-				homeOperationVO.setOperationDoctorId(rs.getString("SSYSID"));//手术医生
-				homeOperationVO.setFirstAssistantId(rs.getString("YZHSID"));//一助医生
-				homeOperationVO.setSecondAssistantId(rs.getString("EZHSID"));//二助医生
-				homeOperationVO.setCutLevel(rs.getString("QKDJDM"));//切口等级
-				homeOperationVO.setHealingLevel(rs.getString("QKDJDM"));//愈合等级
-				homeOperationVO.setOperationName(rs.getString("BRSSMC"));//手术名称
-				homeOperationVO.setOperationLevel(rs.getString("SSJBID"));//手术级别
-				homeOperationVO.setAnaesthesiaName(rs.getString("MZFFMC"));//麻醉方式
-				homeOperationVO.setShamOperationName(rs.getString("NSSMC"));//拟手术名称
+				homeOperationVO.setOperationOrderNo(rs.getString("OPERATIONORDERNO"));//手术序号
+				homeOperationVO.setOperationDate(rs.getDate("OPERATIONDATE"));//手术日期
+				homeOperationVO.setOperationCode(rs.getString("OPERATIONCODE"));//手术编码
+				homeOperationVO.setOperationDoctorId(rs.getString("OPERATIONDOCTORID"));//手术医生
+				homeOperationVO.setFirstAssistantId(rs.getString("FIRSTASSISTANTID"));//一助医生
+				homeOperationVO.setSecondAssistantId(rs.getString("SECONDASSISTANTID"));//二助医生
+				homeOperationVO.setCutLevel(rs.getString("CUTLEVEL"));//切口等级
+				homeOperationVO.setHealingLevel(rs.getString("HEALINGLEVEL"));//愈合等级
+				homeOperationVO.setOperationName(rs.getString("OPERATIONNAME"));//手术名称
+				homeOperationVO.setOperationLevel(rs.getString("OPERATIONLEVEL"));//手术级别
+				homeOperationVO.setAnaesthesiaName(rs.getString("ANAESTHESIANAME"));//麻醉方式
+				homeOperationVO.setShamOperationName(rs.getString("SHAMOPERATIONNAME"));//拟手术名称
 				
 				homeOperationVOList.add(homeOperationVO);
 			}
@@ -241,139 +245,138 @@ public class TZDBConn {
 			ResultSet rs =dbconn.Query(sql, null);
 			while(rs.next()){
                 HomePage homePageVO=new HomePage();
-                homePageVO.setHomePageId(rs.getString("BASYID"));//病案首页ID
+                homePageVO.setHomePageId(rs.getString("HOMEPAGEID"));//病案首页ID
                 homePageVO.setHospitalId(HOSPITAL_ID);//医院ID
-                homePageVO.setBehospitalCode(rs.getString("BRZYID"));//病人住院序号
-                homePageVO.setHospitalCode(rs.getString("ZZJGID"));//组织机构id
-                homePageVO.setHospitalName(rs.getString("ZZJGMC"));//医疗机构名称
-                homePageVO.setOrgCode(rs.getString("ZZJGBH"));//医疗机构代码
-                homePageVO.setPayType(rs.getString("YLFKLB"));//医疗付费方式
-                homePageVO.setHealthCard(rs.getString("BRJKKH"));//健康卡号
-                homePageVO.setBehospitalNum(rs.getString("BRZYCS"));//住院次数
-                homePageVO.setFileCode(rs.getString("BRBABH"));//病案号
-                homePageVO.setName(rs.getString("BRBAXM"));//姓名
-                homePageVO.setSex(rs.getString("BRBAXB"));//性别
-                homePageVO.setBirthday(rs.getDate("BRCSRQ"));//出生日期
-                if(StringUtil.isNotBlank(rs.getString("BRDQNL"))){
-                    homePageVO.setAge(rs.getString("BRDQNL").equals("-")?null:rs.getString("BRDQNL"));//病人年龄
+                homePageVO.setBehospitalCode(rs.getString("BEHOSPITALCODE"));//病人住院序号
+                homePageVO.setHospitalCode(rs.getString("HOSPITALCODE"));//组织机构id
+                homePageVO.setHospitalName(rs.getString("HOSPITALNAME"));//医疗机构名称
+                homePageVO.setOrgCode(rs.getString("ORGCODE"));//医疗机构代码
+                homePageVO.setPayType(rs.getString("PAYTYPE"));//医疗付费方式
+                homePageVO.setHealthCard(rs.getString("HEALTHCARD"));//健康卡号
+                homePageVO.setBehospitalNum(rs.getString("BEHOSPITALNUM"));//住院次数
+                homePageVO.setFileCode(rs.getString("FILECODE"));//病案号
+                homePageVO.setName(rs.getString("NAME"));//姓名
+                homePageVO.setSex(rs.getString("SEX"));//性别
+                homePageVO.setBirthday(rs.getDate("BIRTHDAY"));//出生日期
+				homePageVO.setAge(rs.getString("AGE"));//病人年龄
+//                if(StringUtil.isNotBlank(rs.getString("AGE"))){
+//                    homePageVO.setAge(rs.getString("AGE").equals("-")?null:rs.getString("AGE"));//病人年龄
+//                }
+                homePageVO.setAgeUnit(rs.getString("AGEUNIT"));//年龄单位
+                homePageVO.setNationality(rs.getString("NATIONALITY"));//国籍
+                homePageVO.setNewbornMonth(rs.getString("NEWBORNMONTH"));//新生儿出生月数
+                homePageVO.setNewbornDay(rs.getString("NEWBORNDAY"));//新生儿出生天数
+                homePageVO.setNewbornWeight(rs.getString("NEWBORNWEIGHT"));//新生儿出生体重
+                homePageVO.setNewbornBehospitalWeight(rs.getString("NEWBORNBEHOSPITALWEIGHT"));//新生儿入院体重
+                homePageVO.setBornAddress(rs.getString("BORNADDRESS"));//出生地
+                homePageVO.setBornPlace(rs.getString("BORNPLACE"));//籍贯
+                homePageVO.setNation(rs.getString("NATION"));//民族
+                homePageVO.setIdentityCardNo(rs.getString("IDENTITYCARDNO"));//身份证号
+                homePageVO.setJobType(rs.getString("JOBTYPE"));//职业
+                homePageVO.setMarriage(rs.getString("MARRIAGE"));//婚姻
+                homePageVO.setCurAddress(rs.getString("CURADDRESS"));//现住址
+                homePageVO.setCurPhone(rs.getString("CURPHONE"));//现住址电话
+                homePageVO.setCurPostCode(rs.getString("CURPOSTCODE"));//现住址邮编
+                homePageVO.setResidenceAddress(rs.getString("RESIDENCEADDRESS"));//户口地址
+                homePageVO.setResidencePostCode(rs.getString("RESIDENCEPOSTCODE"));//户口地址邮编
+                homePageVO.setWorkAddress(rs.getString("WORKADDRESS"));//工作单位
+                homePageVO.setWorkPhone(rs.getString("WORKPHONE"));//工作单位电话
+                homePageVO.setWorkPostCode(rs.getString("WORKPOSTCODE"));//工作单位邮编
+                homePageVO.setContactName(rs.getString("CONTACTNAME"));//联系人姓名
+                homePageVO.setContactRelation(rs.getString("CONTACTRELATION"));//联系人关系
+                homePageVO.setContactAddress(rs.getString("CONTACTADDRESS"));//联系人地址
+                homePageVO.setContactPhone(rs.getString("CONTACTPHONE"));//联系人电话
+                homePageVO.setBehospitalWay(rs.getString("BEHOSPITALWAY"));//入院途径
+                homePageVO.setBehospitalDate(rs.getDate("BEHOSPITALDATE"));//入院时间
+                homePageVO.setBehospitalDept(rs.getString("BEHOSPITALDEPT"));//入院科室
+                homePageVO.setBehospitalWard(rs.getString("BEHOSPITALWARD"));//入院病房
+                homePageVO.setBehospitalBedId(rs.getString("BEHOSPITALBEDID"));//入院床位序号
+                homePageVO.setBehospitalBedCode(rs.getString("BEHOSPITALBEDCODE"));//入院床位号码
+                homePageVO.setChangeDept(rs.getString("CHANGEDEPT"));//转科科别
+                homePageVO.setLeaveHospitalDate(rs.getDate("LEAVEHOSPITALDATE"));//出院时间
+                homePageVO.setLeaveHospitalDept(rs.getString("LEAVEHOSPITALDEPT"));//出院科别
+                homePageVO.setLeaveHospitalWard(rs.getString("LEAVEHOSPITALWARD"));//出院病房
+                homePageVO.setLeaveHospitalBedId(rs.getString("LEAVEHOSPITALBEDID"));//出院床位序号
+                homePageVO.setLeaveHospitalBedCode(rs.getString("LEAVEHOSPITALBEDCODE"));//出院床位号码
+                homePageVO.setBehospitalDayNum(rs.getString("BEHOSPITALDAYNUM"));//实际住院天数
+                homePageVO.setOutpatientEmrDiagnose(rs.getString("OUTPATIENTEMRDIAGNOSE"));//门急诊诊断
+                homePageVO.setOutpatientEmrDiagnoseCode(rs.getString("OUTPATIENTEMRDIAGNOSECODE"));//门急诊诊断编码
+                homePageVO.setPoisonFactor(rs.getString("POISONFACTOR"));//损伤中毒因素
+                homePageVO.setPoisonFactorCode(rs.getString("POISONFACTORCODE"));//损伤中毒因素编码
+                homePageVO.setPathologyDiagnose(rs.getString("PATHOLOGYDIAGNOSE"));//病理诊断
+                homePageVO.setPathologyDiagnoseCode(rs.getString("PATHOLOGYDIAGNOSECODE"));//病理诊断编码
+                homePageVO.setPathologyDiagnoseId(rs.getString("PATHOLOGYDIAGNOSEID"));//病理诊断编号
+                homePageVO.setIsMedAllergy(rs.getString("ISMEDALLERGY"));//药物过敏
+                homePageVO.setMedAllergyName(rs.getString("MEDALLERGYNAME"));//过敏药物
+                homePageVO.setAutopsy(rs.getString("AUTOPSY"));//死亡患者尸检
+                homePageVO.setBloodType(rs.getString("BLOODTYPE"));//血型
+                homePageVO.setRh(rs.getString("RH"));//Rh
+                homePageVO.setDeptDirector(rs.getString("DEPTDIRECTOR"));//科主任
+                homePageVO.setDirectorDoctor(rs.getString("DIRECTORDOCTOR"));//主任医师
+                homePageVO.setAttendingDoctor(rs.getString("ATTENDINGDOCTOR"));//主治医师
+                homePageVO.setBehospitalDoctor(rs.getString("BEHOSPITALDOCTOR"));//住院医师
+                homePageVO.setResponseNurse(rs.getString("RESPONSENURSE"));//责任护士
+                homePageVO.setStudyDoctor(rs.getString("STUDYDOCTOR"));//进修医师
+                homePageVO.setPracticeDoctor(rs.getString("PRACTICEDOCTOR"));//实习医师
+                homePageVO.setEncodeMan(rs.getString("ENCODEMAN"));//编码员
+                homePageVO.setHomePageQuality(rs.getString("HOMEPAGEQUALITY"));//病案质量
+                homePageVO.setQcDoctor(rs.getString("QCDOCTOR"));//质控医师
+                homePageVO.setQcNurse(rs.getString("QCNURSE"));//质控护士
+                if(!"".equals(rs.getString("QCDATE"))){
+                    homePageVO.setQcDate(DateUtil.parseDate(rs.getString("QCDATE"),DateUtil.DATE_TIME_FORMAT));//质控日期
                 }
-                homePageVO.setAgeUnit(rs.getString("BRNLDW"));//年龄单位
-                homePageVO.setNationality(rs.getString("BRBAGJ"));//国籍
-                homePageVO.setNewbornMonth(rs.getString("YENLYS"));//新生儿出生月数
-                homePageVO.setNewbornDay(rs.getString("YENLTS"));//新生儿出生天数
-                homePageVO.setNewbornWeight(rs.getString("YECSTZ"));//新生儿出生体重
-                homePageVO.setNewbornBehospitalWeight(rs.getString("YERYTZ"));//新生儿入院体重
-                homePageVO.setBornAddress(rs.getString("BRCSDZ"));//出生地
-                homePageVO.setBornPlace(rs.getString("BRBAJG"));//籍贯
-                homePageVO.setNation(rs.getString("BRBAMZ"));//民族
-                homePageVO.setIdentityCardNo(rs.getString("BRSFZH"));//身份证号
-                homePageVO.setJobType(rs.getString("BRBASF"));//职业
-                homePageVO.setMarriage(rs.getString("BRHYZK"));//婚姻
-                homePageVO.setCurAddress(rs.getString("BRLXDZ"));//现住址
-                homePageVO.setCurPhone(rs.getString("BRLXDH"));//现住址电话
-                homePageVO.setCurPostCode(rs.getString("LXDZYB"));//现住址邮编
-                homePageVO.setResidenceAddress(rs.getString("BRHKDZ"));//户口地址
-                homePageVO.setResidencePostCode(rs.getString("HKDZYB"));//户口地址邮编
-                homePageVO.setWorkAddress(rs.getString("GZDWMC"));//工作单位
-                homePageVO.setWorkPhone(rs.getString("GZDWDH"));//工作单位电话
-                homePageVO.setWorkPostCode(rs.getString("GZDWYB"));//工作单位邮编
-                homePageVO.setContactName(rs.getString("LXRYXM"));//联系人姓名
-                homePageVO.setContactRelation(rs.getString("LXRYGX"));//联系人关系
-                homePageVO.setContactAddress(rs.getString("LXRYDZ"));//联系人地址
-                homePageVO.setContactPhone(rs.getString("LXRYDH"));//联系人电话
-                homePageVO.setBehospitalWay(rs.getString("RYLYDM"));//入院途径
-                homePageVO.setBehospitalDate(rs.getDate("BRRYRQ"));//入院时间
-                homePageVO.setBehospitalDept(rs.getString("RYKSID"));//入院科室
-                homePageVO.setBehospitalWard(rs.getString("RYBQID"));//入院病房
-                homePageVO.setBehospitalBedId(rs.getString("RYCWID"));//入院床位序号
-                homePageVO.setBehospitalBedCode(rs.getString("RYCWHM"));//入院床位号码
-                homePageVO.setChangeDept(rs.getString("BRZKKB"));//转科科别
-                homePageVO.setLeaveHospitalDate(rs.getDate("BRCYRQ"));//出院时间
-                homePageVO.setLeaveHospitalDept(rs.getString("CYKSID"));//出院科别
-                homePageVO.setLeaveHospitalWard(rs.getString("CYBQID"));//出院病房
-                homePageVO.setLeaveHospitalBedId(rs.getString("CYCWID"));//出院床位序号
-                homePageVO.setLeaveHospitalBedCode(rs.getString("CYCWHM"));//出院床位号码
-                homePageVO.setBehospitalDayNum(rs.getString("SJZYTS"));//实际住院天数
-                homePageVO.setOutpatientEmrDiagnose(rs.getString("BRMZZD"));//门急诊诊断
-                homePageVO.setOutpatientEmrDiagnoseCode(rs.getString("MZZDDM"));//门急诊诊断编码
-                homePageVO.setPoisonFactor(rs.getString("SSZDYSMC"));//损伤中毒因素
-                homePageVO.setPoisonFactorCode(rs.getString("SSZDYSBM"));//损伤中毒因素编码
-                homePageVO.setPathologyDiagnose(rs.getString("BLZDMC"));//病理诊断
-                homePageVO.setPathologyDiagnoseCode(rs.getString("BLZDBM"));//病理诊断编码
-                homePageVO.setPathologyDiagnoseId(rs.getString("BLZDBH"));//病理诊断编号
-                homePageVO.setIsMedAllergy(rs.getString("YWYWGM"));//药物过敏
-                homePageVO.setMedAllergyName(rs.getString("BRGMYW"));//过敏药物
-                homePageVO.setAutopsy(rs.getString("BRSFSJ"));//死亡患者尸检
-                homePageVO.setBloodType(rs.getString("BRBAXX"));//血型
-                homePageVO.setRh(rs.getString("BRBARH"));//Rh
-                homePageVO.setDeptDirector(rs.getString("KZR"));//科主任
-                homePageVO.setDirectorDoctor(rs.getString("ZRYS"));//主任医师
-                homePageVO.setAttendingDoctor(rs.getString("ZZYS"));//主治医师
-                homePageVO.setBehospitalDoctor(rs.getString("ZYYS"));//住院医师
-                homePageVO.setResponseNurse(rs.getString("ZRHS"));//责任护士
-                homePageVO.setStudyDoctor(rs.getString("JXYS"));//进修医师
-                homePageVO.setPracticeDoctor(rs.getString("SXYS"));//实习医师
-                homePageVO.setEncodeMan(rs.getString("BMY"));//编码员
-                homePageVO.setHomePageQuality(rs.getString("BRBAZL"));//病案质量
-                homePageVO.setQcDoctor(rs.getString("BAZKYS"));//质控医师
-                homePageVO.setQcNurse(rs.getString("BAZKHS"));//质控护士
-                if(!"".equals(rs.getString("BAZKRQ"))){
-                    homePageVO.setQcDate(DateUtil.parseDate(rs.getString("BAZKRQ"),DateUtil.DATE_TIME_FORMAT));//质控日期
-                }
-                homePageVO.setLeaveHospitalType(rs.getString("BRLYFS"));//离院方式
-                homePageVO.setAcceptOrgCode(rs.getString("ZYJGMC"));//接收机构名称
-                homePageVO.setAgainBehospitalPlan(rs.getString("SSYZZY"));//31天内再住院计划
-                homePageVO.setAgainBehospitalGoal(rs.getString("SSYZZYMD"));//再住院目的
-                homePageVO.setTbiBeforeDay(rs.getString("RYQHMTS"));//颅脑损伤患者昏迷前天数
-                homePageVO.setTbiBeforeHour(rs.getString("RYQHMXS"));//颅脑损伤患者昏迷前小时
-                homePageVO.setTbiBeforeMinute(rs.getString("RYQHMFZ"));//颅脑损伤患者昏迷前分钟
-                homePageVO.setTbiAfterDay(rs.getString("RYQHMFZ"));//颅脑损伤患者昏迷后天数
-                homePageVO.setTbiAfterHour(rs.getString("RYHHMXS"));//颅脑损伤患者昏迷后小时
-                homePageVO.setTbiAfterMinute(rs.getString("RYQHMFZ"));//颅脑损伤患者昏迷后分钟
-                homePageVO.setTotalFee(rs.getString("ZFY"));//总费用
-                homePageVO.setOwnFee(rs.getString("ZFJE"));//自付金额
-                homePageVO.setGeneralFee(rs.getString("YBYLFWF"));//一般医疗服务费
-                homePageVO.setServiceFee(rs.getString("YBZLCZF"));//一般治疗服务费
-                homePageVO.setNurseFee(rs.getString("HLF"));//护理费
-                //homePageVO.setOtherFee(rs.getString("QTFY"));//其他费用
-                homePageVO.setPathologyFee(rs.getString("BLZDF"));//病理诊断费
-                homePageVO.setLabFee(rs.getString("SYSZDF"));//实验室诊断费
-                homePageVO.setPacsFee(rs.getString("YXXZDF"));//影像学诊断费
-                homePageVO.setClinicDiagnoseFee(rs.getString("LCZDXMF"));//临床诊断项目费
-                homePageVO.setNotOperationFee(rs.getString("FSSZLXMF"));//非手术治疗项目费
-                homePageVO.setClinicPhysicFee(rs.getString("LCWLZLF"));//临床物理治疗费
-                homePageVO.setOperationTreatFee(rs.getString("SSZLF"));//手术治疗费
-                homePageVO.setAnaesthesiaFee(rs.getString("MZF"));//麻醉费
-                homePageVO.setOperationFee(rs.getString("SSF"));//手术费
-                homePageVO.setHealthTypeFee(rs.getString("KFF"));//康复类
-                homePageVO.setChnTreatFee(rs.getString("ZYZLF"));//中医治疗费
-                homePageVO.setWesternMedFee(rs.getString("XYF"));//西药费
-                homePageVO.setAntibiosisFee(rs.getString("KJYWF"));//抗菌药物费用
-                homePageVO.setChnMedFee(rs.getString("ZCYF"));//中成药费
-                homePageVO.setChnHerbFee(rs.getString("CYF"));//中草药费
-                homePageVO.setBloodFee(rs.getString("XF"));//血费
-                homePageVO.setAlbumenFee(rs.getString("BDBLZPF"));//白蛋白类制品费
-                homePageVO.setGlobulinFee(rs.getString("QDBLZPF"));//球蛋白类制品费
-                homePageVO.setBloodFactorFee(rs.getString("NXYZLZPF"));//凝血因子类制品费
-                homePageVO.setCellFactorFee(rs.getString("XBYZLZPF"));//细胞因子类制品费
-                homePageVO.setCheckMaterialFee(rs.getString("JCYYCXYYCLF"));//检查用一次性医用材料费
-                homePageVO.setTreatMaterialFee(rs.getString("ZLYYCXYYCLF"));//治疗用一次性医用材料费
-                homePageVO.setOperationMaterialFee(rs.getString("SSYYCXYYCLF"));//手术用一次性医用材料费
-                homePageVO.setOtherTypeFee(rs.getString("QTF"));//其他类其他费
-                homePageVO.setSingleDiagManage(rs.getString("DBZGL"));//单病种管理
-                homePageVO.setClinicPathwayManage(rs.getString("SSLCLJGL"));//临床路径管理
-                homePageVO.setIsOutpatientBehospital(rs.getString("MZZYFH"));//门诊与住院
-                homePageVO.setIsLeaveBehospital(rs.getString("RYCYFH"));//入院与出院
-                homePageVO.setIsOperationBeforeAfter(rs.getString("SQSHFH"));//术前与术后
-                homePageVO.setIsClinicPathology(rs.getString("LCBLFH"));//临床与病理
-                homePageVO.setIsRadiatePathology(rs.getString("FSBLFH"));//放射与病理
-                homePageVO.setRescueSuccessNum(rs.getString("BRQJCS"));//病人抢救次数
-                homePageVO.setRescueSuccessNum(rs.getString("QJCGCS"));//病人抢救成功次数
-                homePageVO.setIsAutoLeavehospital(rs.getString("ZDCYPB"));//是否为自动出院
-                homePageVO.setReturnToType(rs.getString("CYQKDM"));//转归情况HomePage homePageVO=new HomePage();
-
+                homePageVO.setLeaveHospitalType(rs.getString("LEAVEHOSPITALTYPE"));//离院方式
+                homePageVO.setAcceptOrgCode(rs.getString("ACCEPTORGCODE"));//接收机构名称
+                homePageVO.setAgainBehospitalPlan(rs.getString("AGAINBEHOSPITALPLAN"));//31天内再住院计划
+                homePageVO.setAgainBehospitalGoal(rs.getString("AGAINBEHOSPITALGOAL"));//再住院目的
+                homePageVO.setTbiBeforeDay(rs.getString("TBIBEFOREDAY"));//颅脑损伤患者昏迷前天数
+                homePageVO.setTbiBeforeHour(rs.getString("TBIBEFOREHOUR"));//颅脑损伤患者昏迷前小时
+                homePageVO.setTbiBeforeMinute(rs.getString("TBIBEFOREMINUTE"));//颅脑损伤患者昏迷前分钟
+                homePageVO.setTbiAfterDay(rs.getString("TBIAFTERDAY"));//颅脑损伤患者昏迷后天数
+                homePageVO.setTbiAfterHour(rs.getString("TBIAFTERHOUR"));//颅脑损伤患者昏迷后小时
+                homePageVO.setTbiAfterMinute(rs.getString("TBIAFTERMINUTE"));//颅脑损伤患者昏迷后分钟
+                homePageVO.setTotalFee(rs.getString("TOTALFEE"));//总费用
+                homePageVO.setOwnFee(rs.getString("OWNFEE"));//自付金额
+                homePageVO.setGeneralFee(rs.getString("GENERALFEE"));//一般医疗服务费
+                homePageVO.setServiceFee(rs.getString("SERVICEFEE"));//一般治疗服务费
+                homePageVO.setNurseFee(rs.getString("NURSEFEE"));//护理费
+                homePageVO.setOtherFee(rs.getString("OTHERFEE"));//其他费用
+                homePageVO.setPathologyFee(rs.getString("PATHOLOGYFEE"));//病理诊断费
+                homePageVO.setLabFee(rs.getString("LABFEE"));//实验室诊断费
+                homePageVO.setPacsFee(rs.getString("PACSFEE"));//影像学诊断费
+                homePageVO.setClinicDiagnoseFee(rs.getString("CLINICDIAGNOSEFEE"));//临床诊断项目费
+                homePageVO.setNotOperationFee(rs.getString("NOTOPERATIONFEE"));//非手术治疗项目费
+                homePageVO.setClinicPhysicFee(rs.getString("CLINICPHYSICFEE"));//临床物理治疗费
+                homePageVO.setOperationTreatFee(rs.getString("OPERATIONTREATFEE"));//手术治疗费
+                homePageVO.setAnaesthesiaFee(rs.getString("ANAESTHESIAFEE"));//麻醉费
+                homePageVO.setOperationFee(rs.getString("OPERATIONFEE"));//手术费
+                homePageVO.setHealthTypeFee(rs.getString("HEALTHTYPEFEE"));//康复类
+                homePageVO.setChnTreatFee(rs.getString("CHNTREATFEE"));//中医治疗费
+                homePageVO.setWesternMedFee(rs.getString("WESTERNMEDFEE"));//西药费
+                homePageVO.setAntibiosisFee(rs.getString("ANTIBIOSISFEE"));//抗菌药物费用
+                homePageVO.setChnMedFee(rs.getString("CHNMEDFEE"));//中成药费
+                homePageVO.setChnHerbFee(rs.getString("CHNHERBFEE"));//中草药费
+                homePageVO.setBloodFee(rs.getString("BLOODFEE"));//血费
+                homePageVO.setAlbumenFee(rs.getString("ALBUMENFEE"));//白蛋白类制品费
+                homePageVO.setGlobulinFee(rs.getString("GLOBULINFEE"));//球蛋白类制品费
+                homePageVO.setBloodFactorFee(rs.getString("BLOODFACTORFEE"));//凝血因子类制品费
+                homePageVO.setCellFactorFee(rs.getString("CELLFACTORFEE"));//细胞因子类制品费
+                homePageVO.setCheckMaterialFee(rs.getString("CHECKMATERIALFEE"));//检查用一次性医用材料费
+                homePageVO.setTreatMaterialFee(rs.getString("TREATMATERIALFEE"));//治疗用一次性医用材料费
+                homePageVO.setOperationMaterialFee(rs.getString("OPERATIONMATERIALFEE"));//手术用一次性医用材料费
+                homePageVO.setOtherTypeFee(rs.getString("OTHERTYPEFEE"));//其他类其他费
+                homePageVO.setSingleDiagManage(rs.getString("SINGLEDIAGMANAGE"));//单病种管理
+                homePageVO.setClinicPathwayManage(rs.getString("CLINICPATHWAYMANAGE"));//临床路径管理
+                homePageVO.setIsOutpatientBehospital(rs.getString("ISOUTPATIENTBEHOSPITAL"));//门诊与住院
+                homePageVO.setIsLeaveBehospital(rs.getString("ISLEAVEBEHOSPITAL"));//入院与出院
+                homePageVO.setIsOperationBeforeAfter(rs.getString("ISOPERATIONBEFOREAFTER"));//术前与术后
+                homePageVO.setIsClinicPathology(rs.getString("ISCLINICPATHOLOGY"));//临床与病理
+                homePageVO.setIsRadiatePathology(rs.getString("ISRADIATEPATHOLOGY"));//放射与病理
+                homePageVO.setRescueNum(rs.getString("RESCUENUM"));//病人抢救次数
+                homePageVO.setRescueSuccessNum(rs.getString("RESCUESUCCESSNUM"));//病人抢救成功次数
+                homePageVO.setIsAutoLeavehospital(rs.getString("ISAUTOLEAVEHOSPITAL"));//是否为自动出院
+                homePageVO.setReturnToType(rs.getString("RETURNTOTYPE"));//转归情况HomePage homePageVO=new HomePage();
                 homePageList.add(homePageVO);
-				
 			}
 		} catch (Exception e) {
 			e.printStackTrace();
@@ -394,30 +397,40 @@ public class TZDBConn {
 			ResultSet rs =dbconn.Query(sql, null);
 			while(rs.next()){
 				BehospitalInfo behospitalInfo=new BehospitalInfo();
-				behospitalInfo.setBehospitalCode(rs.getString("BRZYID"));//病人住院ID
+				behospitalInfo.setBehospitalCode(rs.getString("BEHOSPITALCODE"));//病人住院ID
 				behospitalInfo.setHospitalId(HOSPITAL_ID);//医院ID
-				behospitalInfo.setName(rs.getString("BRDAXM"));//姓名
-				behospitalInfo.setSex(rs.getString("BRDAXB").equals("M")?"男":"女");//性别
-				behospitalInfo.setBirthday(rs.getDate("BRCSRQ"));//出生日期
-				behospitalInfo.setFileCode(rs.getString("BRDABH"));//档案号
-				behospitalInfo.setWardCode(rs.getString("ZYBQID"));//病区编码
-				behospitalInfo.setWardName(rs.getString("ZYBQMC"));//病区名称
-				behospitalInfo.setBehDeptId(rs.getString("ZYKSID"));//住院科室ID
-				behospitalInfo.setBehDeptName(rs.getString("ZYKSMC"));//住院科室名称
-				behospitalInfo.setBedCode(rs.getString("ZYCWID"));//床位号
-				behospitalInfo.setBedName(rs.getString("ZYCWHM"));//床位名称
-				behospitalInfo.setInsuranceName(rs.getString("BRLBID"));//医保类别
-				behospitalInfo.setJobType(rs.getString("BRXZID"));//职业
-				behospitalInfo.setBehospitalDate(rs.getDate("BRRYRQ"));//入院时间
-				behospitalInfo.setLeaveHospitalDate(rs.getDate("BRCYRQ"));//出院时间
-				behospitalInfo.setDiagnoseIcd(rs.getString("JBDMID"));//疾病ICD编码
-				behospitalInfo.setDiagnose(rs.getString("JBMSXX"));//疾病名称
-				behospitalInfo.setDoctorId(rs.getString("ZZYSID"));//医生ID
-				behospitalInfo.setDoctorName(rs.getString("ZZYSXM"));//医生姓名
-				behospitalInfo.setIsPlacefile(rs.getString("requestflag"));
-				if(StringUtil.isNotBlank(rs.getString("cjcxrq"))){
-					behospitalInfo.setPlacefileDate(DateUtil.parseDateTime(rs.getString("cjcxrq")));
+				behospitalInfo.setName(rs.getString("NAME"));//姓名
+				behospitalInfo.setSex(rs.getString("SEX"));//性别
+				behospitalInfo.setBirthday(DateUtil.parseDate(rs.getString("BIRTHDAY")));//出生日期
+				behospitalInfo.setFileCode(rs.getString("FILECODE"));//档案号
+				behospitalInfo.setWardCode(rs.getString("WARDCODE"));//病区编码
+				behospitalInfo.setWardName(rs.getString("WARDNAME"));//病区名称
+				behospitalInfo.setBehDeptId(rs.getString("BEHDEPTID"));//住院科室ID
+				behospitalInfo.setBehDeptName(rs.getString("BEHDEPTNAME"));//住院科室名称
+				behospitalInfo.setBedCode(rs.getString("BEDCODE"));//床位号
+				behospitalInfo.setBedName(rs.getString("BEDNAME"));
+				behospitalInfo.setInsuranceName(rs.getString("INSURANCENAME"));//医保类别
+				behospitalInfo.setJobType(rs.getString("JOBTYPE"));//职业
+				Date behospitaldate = DateUtil.parseDateTime(rs.getString("BEHOSPITALDATE"));//入院时间
+				Date leavehospitaldate = DateUtil.parseDateTime(rs.getString("LEAVEHOSPITALDATE"));//出院时间
+				behospitalInfo.setBehospitalDate(behospitaldate);
+				behospitalInfo.setLeaveHospitalDate(leavehospitaldate);
+				//日间病历不质控
+				if(StringUtil.isNotEmpty(rs.getString("BEHOSPITALDATE")) && StringUtil.isNotEmpty(rs.getString("LEAVEHOSPITALDATE"))){
+					if(leavehospitaldate.getTime() - behospitaldate.getTime() < 24){
+						behospitalInfo.setIsDeleted("Y");
+					}
 				}
+				behospitalInfo.setDiagnoseIcd(rs.getString("DIAGNOSEICD"));//疾病ICD编码
+				behospitalInfo.setDiagnose(rs.getString("DIAGNOSE"));//疾病名称
+				behospitalInfo.setBehDoctorId(rs.getString("BEHDOCTORID"));
+				behospitalInfo.setBehDoctorName(rs.getString("BEHDOCTORNAME"));
+				behospitalInfo.setDirectorDoctorId(rs.getString("DIRECTORDOCTORID"));
+				behospitalInfo.setDirectorDoctorName(rs.getString("DIRECTORDOCTORNAME"));
+				behospitalInfo.setDoctorId(rs.getString("DOCTORID"));//医生ID
+				behospitalInfo.setDoctorName(rs.getString("DOCTORNAME"));//医生姓名
+				behospitalInfo.setIsPlacefile(rs.getString("ISPLACEFILE"));
+				behospitalInfo.setPlacefileDate(DateUtil.parseDateTime(rs.getString("PLACEFILEDATE")));
 				behospitalInfoList.add(behospitalInfo);
 			}
 		} catch (Exception e) {
@@ -440,32 +453,38 @@ public class TZDBConn {
 			ResultSet rs =dbconn.Query(sql, null);
 			while(rs.next()){
 				DoctorAdvice doctorAdviceVO=new DoctorAdvice();
-				doctorAdviceVO.setDoctorAdviceId(rs.getString("BRYZID"));//病人医嘱ID
+				doctorAdviceVO.setDoctorAdviceId(rs.getString("DOCTORADVICEID"));//病人医嘱ID
 				doctorAdviceVO.setHospitalId(HOSPITAL_ID);//医院ID
-				doctorAdviceVO.setBehospitalCode(rs.getString("BRZYID"));//病人ID
-				doctorAdviceVO.setOrderDoctorName(rs.getString("YSKDPB"));//医生开单判别
-				doctorAdviceVO.setFrequency(rs.getString("YZPLPB"));//医嘱频率判别
-				doctorAdviceVO.setParentTypeId(rs.getString("FLYZID"));//父类医嘱ID
-				doctorAdviceVO.setDoctorAdviceType(rs.getString("YZLXPB"));//医嘱类型判别
-				doctorAdviceVO.setUsageNum(rs.getString("YCSYSL"));//一次使用数量
-				doctorAdviceVO.setUsageUnit(rs.getString("YCYLDW"));//一次用量单位
-				doctorAdviceVO.setDose(rs.getString("YZDCJL"));//医嘱单次剂量
-				doctorAdviceVO.setDoseUnit(rs.getString("DCJLDW"));//单次剂量单位
-				doctorAdviceVO.setMedModeType(rs.getString("GYFSID"));//给药方式
-				doctorAdviceVO.setDaFrequency(rs.getString("YZPLID"));//医嘱频率
-				doctorAdviceVO.setDaDealType(rs.getString("YZCLLX"));//医嘱处理类型
-				doctorAdviceVO.setDaStartDate(rs.getDate("YZKSSJ"));//医嘱开始时间
-				doctorAdviceVO.setDaItemName(rs.getString("YZXMMC"));//医嘱项目名称
-				doctorAdviceVO.setDaStatus(rs.getString("YZZTPB"));//医嘱状态判别
-				doctorAdviceVO.setDaStopDate(rs.getDate("YZJSSJ"));//医嘱结束时间
-				doctorAdviceVO.setDaGroupNo(rs.getString("YZTZXH"));//医嘱同组序号
-				doctorAdviceVO.setDaPrescriptionType(rs.getString("YZCFLX"));//医嘱处方类型
-				doctorAdviceVO.setDaMedType(rs.getString("YZLYLX"));//医嘱领药类型
-				doctorAdviceVO.setDoctorNotice(rs.getString("YSZTSM"));//医生嘱托
-				doctorAdviceVO.setDoctorId(rs.getString("KDYSID"));//开单医生ID
-				doctorAdviceVO.setDoctorName(rs.getString("KDYSMC"));//开单医生姓名
-				//doctorAdviceVO.setMedicineType();
-
+				doctorAdviceVO.setBehospitalCode(rs.getString("BEHOSPITALCODE"));//病人ID
+				doctorAdviceVO.setOrderDoctorName(rs.getString("ORDERDOCTORNAME"));//医生开单判别
+				doctorAdviceVO.setFrequency(rs.getString("FREQUENCY"));//医嘱频率判别
+				doctorAdviceVO.setParentTypeId(rs.getString("PARENTTYPEID"));//父类医嘱ID
+				doctorAdviceVO.setDoctorAdviceType(rs.getString("DOCTORADVICETYPE"));//医嘱类型判别
+				doctorAdviceVO.setUsageNum(String.valueOf(rs.getDouble("USAGENUM")));//一次使用数量
+				doctorAdviceVO.setUsageUnit(rs.getString("USAGEUNIT"));//一次用量单位
+				doctorAdviceVO.setDose(String.valueOf(rs.getDouble("DOSE")));//医嘱单次剂量
+				doctorAdviceVO.setDoseUnit(rs.getString("DOSEUNIT"));//单次剂量单位
+				doctorAdviceVO.setMedModeType(rs.getString("MEDMODETYPE"));//给药方式
+				doctorAdviceVO.setMedicineType(rs.getString("MEDICINETYPE"));//药品类型
+				doctorAdviceVO.setDaFrequency(rs.getString("DAFREQUENCY"));//医嘱频率
+				doctorAdviceVO.setDaDealType(rs.getString("DADEALTYPE"));//医嘱处理类型
+				if (StringUtil.isNotEmpty(rs.getString("DASTARTDATE"))){
+					doctorAdviceVO.setDaStartDate(DateUtil.parseDate(rs.getString("DASTARTDATE"),DateUtil.DATE_TIME_FORMAT));//医嘱开始时间
+				}
+				doctorAdviceVO.setDaItemName(rs.getString("DAITEMNAME"));//医嘱项目名称
+				doctorAdviceVO.setDaStatus(DoctorAdviceStatusEnum.getName(rs.getString("DASTATUS")));//医嘱状态判别
+				if (StringUtil.isNotEmpty(rs.getString("DASTOPDATE"))){
+					doctorAdviceVO.setDaStartDate(DateUtil.parseDate(rs.getString("DASTOPDATE"),DateUtil.DATE_TIME_FORMAT));//医嘱结束时间
+				}
+				doctorAdviceVO.setDaGroupNo(rs.getString("DAGROUPNO"));//医嘱同组序号
+				doctorAdviceVO.setDaPrescriptionType(rs.getString("DAPRESCRIPTIONTYPE"));//医嘱处方类型
+				doctorAdviceVO.setDaMedType(rs.getString("DAMEDTYPE"));//医嘱领药类型
+				doctorAdviceVO.setDoctorNotice(rs.getString("DOCTORNOTICE"));//医生嘱托
+				doctorAdviceVO.setDoctorId(rs.getString("DOCTORID"));//开单医生ID
+				doctorAdviceVO.setDoctorName(rs.getString("DOCTORNAME"));//开单医生姓名
+				if(rs.getString("DASTATUS").equals("CA") || rs.getString("DASTATUS").equals("HD")){
+					doctorAdviceVO.setIsDeleted("Y");
+				}
 				doctorAdviceList.add(doctorAdviceVO);
 			}
 		} catch (Exception e) {
@@ -487,16 +506,15 @@ public class TZDBConn {
 			ResultSet rs =dbconn.Query(sql, null);
 			while(rs.next()){
 				MedicalRecord medicalRecord=new MedicalRecord();
-				medicalRecord.setRecId(rs.getString("BLJLID"));
+				medicalRecord.setRecId(rs.getString("RECID"));
 				medicalRecord.setHospitalId(HOSPITAL_ID);//医院ID
-				medicalRecord.setBehospitalCode(rs.getString("BRZYID"));//病人住院ID
-				medicalRecord.setOrgCode(rs.getString("ZZJGDM"));//组织机构代码
-				medicalRecord.setRecTypeId(rs.getString("BLMBID"));//对应his模板ID
+				medicalRecord.setBehospitalCode(rs.getString("BEHOSPITALCODE"));//病人住院ID
+				medicalRecord.setOrgCode(rs.getString("ORGCODE"));//组织机构代码
+				medicalRecord.setRecTypeId(rs.getString("RECTYPEID"));//对应his模板ID
 
-				medicalRecord.setRecDate(rs.getString("BCJLSJ")!=null?DateUtil.parseDateTime(rs.getString("BCJLSJ")):null);//病历日期
-				medicalRecord.setRecTitle(rs.getString("BLJLMC"));//病历标题
-				medicalRecord.setModeId(Long.valueOf(rs.getString("BLLBID")));//对应his类别ID
-				
+				medicalRecord.setRecDate(rs.getString("RECDATE")!=null?DateUtil.parseDateTime(rs.getString("RECDATE")):null);//病历日期
+				medicalRecord.setRecTitle(rs.getString("RECTITLE"));//病历标题
+				//medicalRecord.setModeId(Long.valueOf(rs.getString("BLLBID")));//对应his类别ID
 				medicalRecordList.add(medicalRecord);
 			}
 		} catch (Exception e) {
@@ -520,10 +538,9 @@ public class TZDBConn {
 			while(rs.next()){
 				MedicalRecordContent mrContent=new MedicalRecordContent();
 				mrContent.setHospitalId(HOSPITAL_ID);
-				mrContent.setRecId(rs.getString("BLJLID"));
+				mrContent.setRecId(rs.getString("RECID"));
 				//mrContent.setHtmlText(rs.getString("HTMLSJ"));
-				mrContent.setXmlText(rs.getString("BLJLNR"));
-
+				mrContent.setXmlText(rs.getString("CONTENTS"));
 				mrContentList.add(mrContent);
 			}
 		} catch (Exception e) {
@@ -545,12 +562,12 @@ public class TZDBConn {
 			ResultSet rs =dbconn.Query(sql, null);
 			while(rs.next()){
 				MedRecordType mrType=new MedRecordType();
-				mrType.setTypeId(rs.getString("BLLBID"));
+				mrType.setTypeId(rs.getString("TYPEID"));
 				mrType.setHospitalId(HOSPITAL_ID);
-				mrType.setTypeName(rs.getString("BLLBMC"));
-				mrType.setParentTypeId(rs.getString("SJLBID"));
-				mrType.setObjName(rs.getString("BLLBFW"));
-				mrType.setSpell(rs.getString("HZSRM1"));
+				mrType.setTypeName(rs.getString("MOBANLXMC"));
+				mrType.setParentTypeId(rs.getString("FULEIMBLX"));
+				mrType.setObjName(rs.getString("OBJNAME"));
+				mrType.setSpell(rs.getString("SPELL"));
 				mrTypeList.add(mrType);
 			}
 		} catch (Exception e) {
@@ -573,18 +590,18 @@ public class TZDBConn {
 			ResultSet rs =dbconn.Query(sql, null);
 			while(rs.next()){
 				MedLisResult medLisResult=new MedLisResult();
-				medLisResult.setReptNo(1);
+				medLisResult.setRepNo(rs.getString("REPTNO"));
 				medLisResult.setHospitalId(HOSPITAL_ID);
-				medLisResult.setBehospitalCode("");
-				medLisResult.setItemCode("");
-				medLisResult.setItemName("");
-				medLisResult.setResult("");
-				medLisResult.setReferenceMin("");
-				medLisResult.setReferenceMax("");
-				medLisResult.setUnit("");
-				medLisResult.setAbnormal("");
-				medLisResult.setColor("");
-
+				medLisResult.setBehospitalCode(rs.getString("BEHOSPITALCODE"));
+				medLisResult.setItemCode(rs.getString("ITEMCODE"));
+				medLisResult.setItemName(rs.getString("ITEMNAME"));
+				medLisResult.setResult(rs.getString("RESULT"));
+				medLisResult.setReference(rs.getString("CANKAOFW"));
+//				medLisResult.setReferenceMin(rs.getString("REFERENCEMIN"));
+//				medLisResult.setReferenceMax(rs.getString("REFERENCEMAX"));
+				medLisResult.setUnit(rs.getString("UNIT"));
+				medLisResult.setAbnormal(rs.getString("ABNORMAL"));
+				medLisResult.setColor(rs.getString("COLOR"));
 				medLisResultList.add(medLisResult);
 			}
 		} catch (Exception e) {
@@ -608,20 +625,19 @@ public class TZDBConn {
 			ResultSet rs =dbconn.Query(sql, null);
 			while(rs.next()){
 				MedPacsResult medPacsResult=new MedPacsResult();
-				medPacsResult.setReptNo(rs.getString(""));
+				medPacsResult.setRepNo(rs.getString("REPTNO"));
 				medPacsResult.setHospitalId(HOSPITAL_ID);
-				medPacsResult.setBehospitalCode("");
-				medPacsResult.setReptName("");
-				medPacsResult.setPart("");
-				medPacsResult.setClinicSight("");
-				medPacsResult.setReptDiag("");
-				medPacsResult.setRemark("");
-				medPacsResult.setClinicDiag("");
-				medPacsResult.setApplyDoctor("");
-				medPacsResult.setCheckerDoctor("");
-				medPacsResult.setReportDoctor("");
-				medPacsResult.setDeptName("");
-
+				medPacsResult.setBehospitalCode(rs.getString("BEHOSPITALCODE"));
+				medPacsResult.setReptName(rs.getString("REPTNAME"));
+				medPacsResult.setPart(rs.getString("PART"));
+				medPacsResult.setClinicSight(rs.getString("CLINICSIGHT"));
+				medPacsResult.setReptDiag(rs.getString("REPTDIAG"));
+				medPacsResult.setRemark(rs.getString("REMARK"));
+				medPacsResult.setClinicDiag(rs.getString("CLINICDIAG"));
+				medPacsResult.setApplyDoctor(rs.getString("APPLYDOCTOR"));
+				medPacsResult.setCheckerDoctor(rs.getString("CHECKERDOCTOR"));
+				medPacsResult.setReportDoctor(rs.getString("REPORTDOCTOR"));
+				medPacsResult.setDeptName(rs.getString("DEPTNAME"));
 				medPacsResultList.add(medPacsResult);
 			}
 		} catch (Exception e) {
@@ -631,4 +647,43 @@ public class TZDBConn {
 		}
 		return medPacsResultList;
 	}
+
+	/**
+	 * 从视图获取危急值
+	 * @param sql
+	 * @return
+	 */
+	public List<MedCrisisInfo> getMedCrisisInfo(String sql){
+		List<MedCrisisInfo> medCheckInfoList = Lists.newLinkedList();
+		try {
+			TZDBConn dbconn=new TZDBConn();
+			ResultSet rs =dbconn.Query(sql, null);
+			while(rs.next()){
+				MedCrisisInfo medCrisisInfo = new MedCrisisInfo();
+				medCrisisInfo.setRecId(rs.getString("RECID"));
+				medCrisisInfo.setHospitalId(HOSPITAL_ID);
+				medCrisisInfo.setBehospitalCode(rs.getString("BEHOSPITALCODE"));
+				medCrisisInfo.setRecType(rs.getString("RECTYPE"));
+				medCrisisInfo.setCrisisId(rs.getString("CRISISID"));
+				medCrisisInfo.setCrisisName(rs.getString("CRISISNAME"));
+				medCrisisInfo.setDeptId(rs.getString("DEPTID"));
+				medCrisisInfo.setDeptName(rs.getString("DEPTNAME"));
+				medCrisisInfo.setDoctorId(rs.getString("DOCTORID"));
+				medCrisisInfo.setDoctorName(rs.getString("DOCTORNAME"));
+				medCrisisInfo.setCrisisValue(rs.getString("CRISISVALUE"));
+				medCrisisInfo.setCrisisDesc(rs.getString("CRISISDESC"));
+				medCrisisInfo.setCrisisStatus(rs.getString("CRISISSTATUS"));
+				medCrisisInfo.setCrisisTopValue(rs.getString("CRISISTOPVALUE"));
+				medCrisisInfo.setCrisisLowerValue(rs.getString("CRISISLOWERVALUE"));
+				medCrisisInfo.setSendDate(rs.getDate("SENDDATE"));
+				medCrisisInfo.setRepDate(rs.getDate("REPDATE"));
+				medCheckInfoList.add(medCrisisInfo);
+			}
+		}catch (Exception e) {
+			e.printStackTrace();
+		}finally {
+			close();
+		}
+		return medCheckInfoList;
+	}
 }

+ 279 - 0
src/main/java/com/diagbot/util/YWAnalysis.java

@@ -0,0 +1,279 @@
+package com.diagbot.util;
+
+import ca.uhn.hl7v2.model.Message;
+import ca.uhn.hl7v2.parser.PipeParser;
+import ca.uhn.hl7v2.util.Terser;
+import com.alibaba.fastjson.JSON;
+import com.diagbot.entity.*;
+import com.diagbot.enums.data.DoctorAdviceStatusEnum;
+import com.diagbot.facade.data.*;
+import com.google.common.collect.Lists;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import java.util.List;
+
+@Component
+public class YWAnalysis {
+
+    @Autowired
+    private ABehospitalInfoFacade aBehospitalInfoFacade;
+    @Autowired
+    private AMedAbnormalInfoFacade aMedAbnormalInfoFacade;
+    @Autowired
+    private ADoctorAdviceFacade aDoctorAdviceFacade;
+    @Autowired
+    private AMedPacsResultFacade aMedPacsResultFacade;
+    @Autowired
+    private AMedLisResultFacade aMedLisResultFacade;
+    @Autowired
+    private AMedCrisisFacade aMedCrisisFacade;
+    @Autowired
+    private AMedicalRecordFacade aMedicalRecordFacade;
+    @Autowired
+    private AMedicalRecordContentFacade aMedicalRecordContentFacade;
+
+    private TZDBConn tzDBConn = new TZDBConn();
+
+    private PipeParser pipeParser = PipeParser.getInstanceWithNoValidation();
+
+    public static final Long HOSPITAL_ID = Long.valueOf("5");//1:长兴,2:邵逸夫,3:台州市立医院,5义乌妇幼医院
+
+    public void executeAnalysis(String hisMessage) {
+        try {
+            Message message = pipeParser.parse(hisMessage);
+            Terser terser = new Terser(message);
+            //住院登记
+            if (message.getName().equals("ADT_A01")) {
+                aBehospitalInfoFacade.execute(getBehospitalInfoToView(terser.get("/.PV1-19-1")));
+            }
+            //医嘱
+            if (message.getName().equals("OMP_O09")) {
+                aDoctorAdviceFacade.execute(getDoctorAdviceToView(terser.get("/.ORC-2-1")));
+            }
+            //检查结果
+            if (message.getName().equals("ORU_R01")) {
+                aMedPacsResultFacade.execute(getPacsResultToView(terser.get("/.ORC-2-1")));
+            }
+            //化验
+            if (message.getName().equals("OUL_R21")) {
+                aMedLisResultFacade.execute(getLisResultToView(terser.get("/.OBR-2-3")));
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 解析入院登记信息(视图获取/消息解析)
+     * @param queryParam
+     * @return
+     */
+    public List<BehospitalInfo> getBehospitalInfoToView(String queryParam) {
+        String queryLisResultSql = "SELECT * FROM AI_V_SENDPATIENTINFO t WHERE t.BEHOSPITALCODE='"+queryParam+"'";
+        List<BehospitalInfo> behospitalInfoList  = tzDBConn.getBehospitalInfo(queryLisResultSql);
+        return behospitalInfoList;
+    }
+    public List<BehospitalInfo> getBehospitalInfoToMsg(String hisMessage) {
+        List<BehospitalInfo> behospitalInfoList = Lists.newLinkedList();
+        BehospitalInfo behospitalInfo = new BehospitalInfo();
+        try {
+            Message message = pipeParser.parse(hisMessage);
+            Terser terser = new Terser(message);
+            /**表示位置*/
+            //String station = "Z2B-3";//
+            /**该位置的字段值*/
+            //String val = terser.get("/." + station);
+            behospitalInfo.setBehospitalCode(terser.get("/.PV1-19-1"));
+            behospitalInfo.setHospitalId(HOSPITAL_ID);
+            behospitalInfo.setName(terser.get("/.PID-5-2"));
+            behospitalInfo.setSex(terser.get("/.PID-8").equals("F") ? "女" : "男");
+            behospitalInfo.setBirthday(DateUtil.parseDate(YWDateUtils.convJsonDateToString(terser.get("/.PID-7"), DateUtil.DATE_FORMAT)));
+            behospitalInfo.setFileCode(terser.get("/.PID-3(1)-1"));
+            behospitalInfo.setWardCode(terser.get("/.PV1-3-1"));
+            behospitalInfo.setWardName(terser.get("/.PV1-3-6"));
+            behospitalInfo.setBehDeptId(terser.get("/.PV1-3-4-1"));
+            behospitalInfo.setBehDeptName(terser.get("/.PV1-3-4-2"));
+            //behospitalInfo.setBedCode();
+            //behospitalInfo.setBedName();
+            behospitalInfo.setInsuranceName(terser.get("/.PV1-18"));
+            //behospitalInfo.setJobType();
+            //behospitalInfo.setBehospitalDate();
+            //behospitalInfo.setLeaveHospitalDate();
+            //behospitalInfo.setDiagnoseIcd();
+            behospitalInfo.setDiagnose(terser.get("/.DG1-4"));
+            //behospitalInfo.setBehDoctorId();
+            //behospitalInfo.setBehDoctorName();
+            behospitalInfo.setDoctorId(terser.get("/.PV1-7-1"));
+            behospitalInfo.setDoctorName(terser.get("/.PV1-7-3"));
+            //behospitalInfo.setDirectorDoctorId();
+            //behospitalInfo.setDirectorDoctorName();
+            behospitalInfo.setIsPlacefile("0");
+            //behospitalInfo.setPlacefileDate();
+        } catch (Exception e) {
+            e.printStackTrace();
+            aMedAbnormalInfoFacade.saveAbnormalInfo("socketMsg病人住院登记", JSON.toJSONString(hisMessage), "", e.getMessage());
+        }
+        behospitalInfoList.add(behospitalInfo);
+        return behospitalInfoList;
+    }
+
+    /**
+     * 解析医嘱(视图获取/消息解析)
+     * @param hisMessage
+     * @return
+     */
+    public List<DoctorAdvice> getDoctorAdviceToMsg(String hisMessage) {
+        List<DoctorAdvice> doctorAdviceList = Lists.newLinkedList();
+        DoctorAdvice doctorAdviceVO = new DoctorAdvice();
+        try {
+            Message message = pipeParser.parse(hisMessage);
+            Terser terser = new Terser(message);
+            doctorAdviceVO.setDoctorAdviceId(terser.get("/.ORC-2-1"));
+            doctorAdviceVO.setHospitalId(HOSPITAL_ID);
+            doctorAdviceVO.setBehospitalCode(terser.get("/.PV1-19-1"));
+            doctorAdviceVO.setOrderDoctorName(terser.get("/.ORC-12-3"));
+            doctorAdviceVO.setFrequency(terser.get("/.ORC-7-2-1"));
+//            doctorAdviceVO.setParentTypeId("");
+            doctorAdviceVO.setDoctorAdviceType(terser.get("/.ORC-16-2"));//待更改
+            doctorAdviceVO.setUsageNum(terser.get("/.ORC-7-1-1"));
+            doctorAdviceVO.setUsageUnit(terser.get("/.ORC-7-6"));
+            doctorAdviceVO.setDose(terser.get("/.RXO-11"));
+            doctorAdviceVO.setDoseUnit(terser.get("/.RXO-12-2"));
+            doctorAdviceVO.setMedModeType(terser.get("/.RXR-1-1"));
+//            doctorAdviceVO.setMedicineType("");//待定
+
+            doctorAdviceVO.setDaFrequency(terser.get("/.ORC-7-2-1"));
+//            doctorAdviceVO.setDaDealType("");
+            if(StringUtils.isNotEmpty(terser.get("/.ORC-7-4-1"))){
+                doctorAdviceVO.setDaStartDate(DateUtil.parseDate(YWDateUtils.convJsonDateToString(terser.get("/.ORC-7-4-1"), DateUtil.DATE_TIME_FORMAT), DateUtil.DATE_TIME_FORMAT));
+            }
+            doctorAdviceVO.setDaItemName(terser.get("/.RXO-1-2"));
+            doctorAdviceVO.setDaStatus(DoctorAdviceStatusEnum.getName(terser.get("/.ORC-5")));
+            if(StringUtils.isNotEmpty(terser.get("/.ORC-7-5-1"))){
+                doctorAdviceVO.setDaStopDate(DateUtil.parseDate(YWDateUtils.convJsonDateToString(terser.get("/.ORC-7-5-1"), DateUtil.DATE_TIME_FORMAT), DateUtil.DATE_TIME_FORMAT));
+            }
+            doctorAdviceVO.setDaGroupNo(terser.get("/.ORC-4-1"));
+            doctorAdviceVO.setDaPrescriptionType(terser.get("/.ORC-16-2"));
+//            doctorAdviceVO.setDaMedType("");待定
+            doctorAdviceVO.setDoctorNotice(terser.get("/.RXO-7-2"));
+            doctorAdviceVO.setDoctorId(terser.get("/.ORC-12-1"));
+            doctorAdviceVO.setDoctorName(terser.get("/.ORC-12-3"));
+            if(terser.get("/.ORC-5").equals("CA") || terser.get("/.ORC-5").equals("HD")){
+                doctorAdviceVO.setIsDeleted("Y");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        doctorAdviceList.add(doctorAdviceVO);
+        return doctorAdviceList;
+    }
+    public List<DoctorAdvice> getDoctorAdviceToView(String queryParam){
+        String queryDoctorAdviceSql = "SELECT * FROM AI_V_SENDDOCTORADVICE t WHERE t.DOCTORADVICEID='"+queryParam+"'";
+        List<DoctorAdvice> doctorAdviceList = tzDBConn.getDoctorAdvice(queryDoctorAdviceSql);
+        return doctorAdviceList;
+    }
+
+    /**
+     * 解析检查结果消息(视图获取/消息解析)
+     * @param queryParam
+     * @return
+     */
+    public List<MedPacsResult> getPacsResultToView(String queryParam) {
+        String queryLisResultSql = "SELECT * FROM AI_V_SENDPACSRESULTS t WHERE t.REPTNO='"+queryParam+"'";
+        List<MedPacsResult> medPacsResultList = tzDBConn.getPacsResult(queryLisResultSql);
+        return medPacsResultList;
+    }
+    public List<MedPacsResult> getPacsResultToMsg(String hisMessage) {
+        List<MedPacsResult> medPacsResultList = Lists.newLinkedList();
+        MedPacsResult medPacsResult = new MedPacsResult();
+        try {
+            Message message = pipeParser.parse(hisMessage);
+            Terser terser = new Terser(message);
+            medPacsResult.setRepNo(terser.get("/.ORC-2-1"));
+            medPacsResult.setHospitalId(HOSPITAL_ID);
+            medPacsResult.setBehospitalCode("");
+            medPacsResult.setReptName(terser.get("/.OBR-4-5"));
+            medPacsResult.setPart(terser.get("/.OBR-4-2"));
+            medPacsResult.setClinicSight("");
+            medPacsResult.setReptDiag("");
+            medPacsResult.setRemark("");
+            medPacsResult.setClinicDiag("");
+            medPacsResult.setApplyDoctor(terser.get("/.ORC-12-1"));
+            medPacsResult.setCheckerDoctor(terser.get("/.OBR-34-1-1"));
+            medPacsResult.setReportDoctor(terser.get("/.ORC-10-1"));
+            medPacsResult.setDeptName(terser.get("/.ORC-17-2"));
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        medPacsResultList.add(medPacsResult);
+        return medPacsResultList;
+    }
+
+    /**
+     * 化验结果消息(视图获取/消息解析)
+     * @param queryParam
+     * @return
+     */
+    public List<MedLisResult> getLisResultToView(String queryParam) {
+        String queryLisResultSql = "SELECT * FROM AI_V_SENDLISRESULTS t WHERE t.REPTNO='"+queryParam+"'";
+        List<MedLisResult> medLisResultList = tzDBConn.getLisResult(queryLisResultSql);
+        return medLisResultList;
+    }
+
+    public List<MedLisResult> getLisResultToMsg(String hisMessage) {
+        List<MedLisResult> medLisResultList = Lists.newLinkedList();
+        try {
+            Message message = pipeParser.parse(hisMessage);
+            Terser terser = new Terser(message);
+            int OBXCounts = hisMsgHeaderCounts(hisMessage, "OBX|");
+            System.out.println(terser);
+            for (int i = 0; i < OBXCounts; i++) {
+                MedLisResult medLisResult = new MedLisResult();
+                medLisResult.setRepNo(terser.get("/.OBR-2-3"));
+                medLisResult.setHospitalId(HOSPITAL_ID);
+                //medLisResult.setBehospitalCode("");
+                medLisResult.setItemCode(terser.get("/.OBSERVATION(" + i + ")/OBX-3-1"));
+                medLisResult.setItemName(terser.get("/.OBSERVATION(" + i + ")/OBX-3-2"));
+                medLisResult.setResult(terser.get("/.OBSERVATION(" + i + ")/OBX-5"));
+                //medLisResult.setReferenceMin("");
+                //medLisResult.setReferenceMax("");
+                //medLisResult.setUnit("");
+                //medLisResult.setAbnormal("");
+                //medLisResult.setColor("");
+                medLisResultList.add(medLisResult);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return medLisResultList;
+    }
+
+    /**
+     * 解析危急值结果(视图获取/消息解析)
+     * @param queryParam
+     * @return
+     */
+    public List<MedCrisisInfo> getMedCrisisInfo(String queryParam) {
+        String queryLisResultSql = "SELECT * FROM AI_V_SENDCRISIS t WHERE t.REPTNO='"+queryParam+"'";
+        List<MedCrisisInfo> medCrisisInfoList = tzDBConn.getMedCrisisInfo(queryLisResultSql);
+        return medCrisisInfoList;
+    }
+
+    /**
+     *消息段循环
+     */
+    public int hisMsgHeaderCounts(String s, String ch) {
+        //定义计数
+        int count = 0;
+        //判断出现次数
+        for (int i = 0; i < s.length() - 1; i++) {
+            if (s.indexOf(ch, i) >= 0) {
+                count++;
+                i = s.indexOf(ch, i) + ch.length() - 1;
+            }
+        }
+        //返回次数
+        return count;
+    }
+}

+ 77 - 0
src/main/java/com/diagbot/util/YWDateUtils.java

@@ -0,0 +1,77 @@
+package com.diagbot.util;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.Locale;
+
+public class YWDateUtils {
+    public static void main(String[] args) {
+//        String strDateTime="20150206201756";
+//        System.out.println(convJsonDateToString(strDateTime,"yyyy-MM-dd HH:mm:ss"));
+        System.out.println(getCurrentTime());
+    }
+    public static String convJsonDateToString(String jsonDate,String stringTemplate){
+        String resultString=null;
+        try {
+            Calendar cldCalendar=convToCalender(jsonDate, "yyyyMMddhhmmss");
+            resultString=convToString(cldCalendar, stringTemplate);
+        } catch (Exception e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+        return resultString;
+    }
+    public static String convJsonDateToString(String jsonDate,String jsonTemplate,String stringTemplate){
+
+        String resultString=null;
+        try {
+            Calendar cldCalendar=convToCalender(jsonDate, jsonTemplate);
+            resultString=convToString(cldCalendar, stringTemplate);
+        } catch (Exception e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+        return resultString;
+    }
+    // 把指定格式的日期字符串转日期类型
+    public static Calendar convToCalender(String str,String template){
+
+        SimpleDateFormat sdf;
+        Date date;
+        Calendar cltResult = Calendar.getInstance();
+
+        sdf = new SimpleDateFormat(template, Locale.getDefault());
+        try {
+            date = sdf.parse(str);
+
+            cltResult.setTime(date);
+
+        } catch (Exception ex) {
+            // TODO Auto-generated catch block
+            ex.printStackTrace();
+        }
+
+        return cltResult;
+    }
+    // 把日期转指定格式字符串
+    public static String convToString(Calendar cld,String template){
+        String resultString=null;
+        try {
+            Date date=cld.getTime();
+            SimpleDateFormat sdf=new SimpleDateFormat(template,Locale.getDefault());
+            resultString=sdf.format(date);
+        } catch (Exception e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+        return resultString;
+    }
+    public static String getCurrentTime(){
+        DateFormat df = new SimpleDateFormat(DateUtil.DATE_TIME_FORMAT_NO_SPLIT);
+        Calendar calendar = Calendar.getInstance();
+        return df.format(calendar.getTime());
+    }
+
+}

+ 1 - 1
src/main/java/com/diagbot/vo/data/ADeleteFlagVO.java

@@ -27,6 +27,6 @@ public class ADeleteFlagVO {
 
     private String recId;
 
-    private String reptNo;
+    private String repNo;
 
 }

+ 1 - 1
src/main/java/com/diagbot/vo/data/AMedLisResultVO.java

@@ -10,7 +10,7 @@ public class AMedLisResultVO {
     /**
      * 报告单号
      */
-    private String reptNo;
+    private String repNo;
 
     /**
      * 医院ID

+ 1 - 1
src/main/java/com/diagbot/vo/data/AMedPacsResultVO.java

@@ -9,7 +9,7 @@ public class AMedPacsResultVO {
     /**
      * 报告单号
      */
-    private String reptNo;
+    private String repNo;
 
     /**
      * 医院ID

+ 4 - 0
src/main/java/com/diagbot/vo/data/AMedicalRecordContentVO.java

@@ -6,6 +6,10 @@ import java.sql.Blob;
 
 @Data
 public class AMedicalRecordContentVO {
+    /**
+     * oldRecId
+     */
+    private String oldRecId;
     /**
      * 病历ID
      */

+ 5 - 0
src/main/java/com/diagbot/vo/data/AMedicalRecordVO.java

@@ -9,6 +9,11 @@ import lombok.Setter;
 @Setter
 public class AMedicalRecordVO {
 
+    /*
+     * 历史recId
+     */
+    private String oldRecId;
+
 	private String recId;
 
     /**

+ 1 - 0
src/main/java/com/diagbot/vo/data/APlaceFileVO.java

@@ -9,4 +9,5 @@ public class APlaceFileVO {
     private String behospitalCode;//病人住院ID
     private Long hospitalId;//医院编码
     private String placeFileDate;//归档时间
+    private String isProfile;//是否归档
 }

+ 4 - 4
src/main/resources/application-local.yml

@@ -59,9 +59,9 @@ spring:
     druid:
       driver-class-name: com.mysql.cj.jdbc.Driver
       platform: mysql
-      url: jdbc:mysql://192.168.2.132:3306/qc?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+      url: jdbc:mysql://172.17.14.227:3306/qc_data?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
       username: root
-      password: zjltzk@2020
+      password: lantone
       # 连接池的配置信息
       # 初始化大小,最小,最大
       initialSize: 5
@@ -111,7 +111,7 @@ spring:
     database:
       cache: 8 # cache索引
       token: 8 # Token索引
-    host: 192.168.2.132  #Redis服务器地址
+    host: 172.17.14.227  #Redis服务器地址
     port: 6379 # Redis服务器连接端口(本地环境端口6378,其他环境端口是6379)
     password: lantone # Redis服务器连接密码(默认为空)
     lettuce:
@@ -161,7 +161,7 @@ io.github.lvyahui8.spring:
 
 myhost: localhost
 oath.self.address: http://${myhost}:${server.port}
-qc.address: http://192.168.2.132:6009
+qc.address: http://172.17.14.228:6010
 
 # 加解密开关
 encrypt:

+ 11 - 5
src/main/resources/jdbc.properties

@@ -9,16 +9,22 @@
 #jdbc.username=ETRACKMRQC
 #jdbc.password=ETRACKMRQC
 
-jdbc.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
-jdbc.url=jdbc:sqlserver://192.168.100.39\\tzmhemr;DatabaseName=bigemr
-jdbc.username=zjlt
-jdbc.password=zjlt@2020
+#jdbc.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
+#jdbc.url=jdbc:sqlserver://192.168.100.39\\tzmhemr;DatabaseName=bigemr
+#jdbc.username=zjlt
+#jdbc.password=zjlt@2020
+
+##ÒåÎÚ¸¾Ó×
+jdbc.driverClassName=oracle.jdbc.OracleDriver
+jdbc.url=jdbc:oracle:thin:@192.159.4.84:1521/orcl
+jdbc.username=HIS3INTERFACE
+jdbc.password=HIS3INTERFACE
 
 #\u6570\u636e\u670d\u52a1\u6a21\u5f0f
 remote.address.ver=http://192.18.101.207:2030/index.html
 remote.address.hor=http://192.18.101.207:2030/indexHorizontal.html
 
-process.qc.url=http://192.168.100.157:1489/index.html
+process.qc.url=http://172.17.14.228:1489/index.html
 
 #his\u65b9\u60a3\u8005\u63a5\u53e3\u5730\u5740
 his.patient.url=

+ 4 - 1
src/main/resources/mapper/DoctorAdviceMapper.xml

@@ -148,8 +148,11 @@
                     doctor_id = #{item.doctorId},
                     doctor_name = #{item.doctorName},
                     medicine_type = #{item.medicineType},
+                <if test="item.isDeleted != null">
+                    is_deleted = #{item.isDeleted},
+                </if>
                 <if test="item.gmtModified != null">
-                    gmt_modified = #{item.gmtModified},
+                    gmt_modified = #{item.gmtModmasterified},
                 </if>
                 <if test="item.modifier != null">
                     modifier = #{item.modifier},

+ 1 - 1
src/main/resources/mapper/MedLisResultMapper.xml

@@ -91,7 +91,7 @@
                     modifier = #{item.modifier},
                 </if>
             </set>
-            where rept_no = #{item.reptNo} and hospital_id = #{item.hospitalId}
+            where rep_no = #{item.repNo} and hospital_id = #{item.hospitalId} and item_code=#{item.itemCode}
         </foreach>
     </update>
 

+ 1 - 1
src/main/resources/mapper/MedPacsResultMapper.xml

@@ -94,7 +94,7 @@
                     modifier = #{item.modifier},
                 </if>
             </set>
-            where rept_no = #{item.reptNo} and hospital_id = #{item.hospitalId}
+            where rep_no = #{item.repNo} and hospital_id = #{item.hospitalId}
         </foreach>
     </update>
 </mapper>

+ 11 - 0
src/main/resources/sql.properties

@@ -0,0 +1,11 @@
+medical.doctorAdviceSql=SELECT * FROM AI_V_SENDDOCTORADVICE t1 where t1.BEHOSPITALCODE IN (SELECT t2.BEHOSPITALCODE FROM AI_V_SENDPATIENTINFO t2 WHERE t2.BEHOSPITALDATE >= to_date('2018-11-01','yyyy-mm-dd'))
+medical.homePageSql=SELECT * FROM AI_V_SENDHOMEPAGEING t1 where t1.BEHOSPITALCODE IN (SELECT t2.BEHOSPITALCODE FROM AI_V_SENDPATIENTINFO t2 WHERE t2.BEHOSPITALDATE >= to_date('2018-11-01','yyyy-mm-dd'))
+medical.lisResultSql=SELECT * FROM AI_V_SENDLISRESULTS t1 where t1.BEHOSPITALCODE IN (SELECT t2.BEHOSPITALCODE FROM AI_V_SENDPATIENTINFO t2 WHERE t2.BEHOSPITALDATE >= to_date('2018-11-01','yyyy-mm-dd'))
+medical.pacsResultSql=SELECT * FROM AI_V_SENDPACSRESULTS
+medical.homeDiagnoseInfoSql=SELECT * FROM AI_V_SENDHOMEPAGE_CYZD
+medical.homeOperationInfoSql=SELECT * FROM AI_V_SENDHOMEPAGE_CYZD
+medical.recordTypeSql=select * from AI_V_SENDRECORDTYPES t
+medical.crisisSql=select * from AI_V_SENDCRISIS t
+medical.beHospitalInfoSql=SELECT * FROM AI_V_SENDPATIENTINFO t WHERE t.BEHOSPITALCODE 
+medical.recordInfoSql=SELECT * FROM AI_V_SENDMRRECORDING t WHERE t.BEHOSPITALCODE IN ()
+medical.recordContentSql=SELECT * FROM AI_V_SENDMRRECORDING t WHERE t.BEHOSPITALCODE IN ()