浏览代码

1、增加hl7对接接口

liuqq 4 年之前
父节点
当前提交
81ec7c916c

+ 12 - 0
pom.xml

@@ -224,16 +224,28 @@
         </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>
+        <dependency>
+            <groupId>ca.uhn.hapi</groupId>
+            <artifactId>hapi-examples</artifactId>
+            <version>1.2</version>
+        </dependency>
+        <dependency>
+            <groupId>ca.uhn.hapi</groupId>
+            <artifactId>hapi-hl7overhttp</artifactId>
+            <version>2.3</version>
+        </dependency>-->
     </dependencies>
 
     <!-- 私有仓库 -->

+ 1 - 0
src/main/java/com/diagbot/config/ResourceServerConfigurer.java

@@ -161,6 +161,7 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/qc/data/placeFile").permitAll()
                 .antMatchers("/qc/data/sendLisResults").permitAll()
                 .antMatchers("/qc/data/sendPacsResults").permitAll()
+                .antMatchers("/qc/hl7/Run").permitAll()
                 .antMatchers("/qc/doctoradvice/getPage").permitAll()
                 .antMatchers("/qc/medPacsInfo/getCheckPage").permitAll()
                 .antMatchers("/qc/medLisInfo/getExaminePage").permitAll()

+ 1 - 0
src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java

@@ -205,6 +205,7 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/qc/data/placeFile", request)
                 || matchers("/qc/data/sendLisResults", request)
                 || matchers("/qc/data/sendPacsResults", request)
+                || matchers("/qc/hl7/Run", request)
                 || matchers("/qc/doctoradvice/getPage", request)
                 || matchers("/qc/medPacsInfo/getCheckPage", request)
                 || matchers("/qc/medLisInfo/getExaminePage", request)

+ 10 - 0
src/main/java/com/diagbot/vo/hl7/Hl7VO.java

@@ -0,0 +1,10 @@
+package com.diagbot.vo.hl7;
+
+import lombok.Data;
+
+@Data
+public class Hl7VO {
+    private String MessageVersion;
+    private String MessageType;
+    private String Message;
+}

+ 81 - 0
src/main/java/com/diagbot/web/DataHl7Controller.java

@@ -0,0 +1,81 @@
+package com.diagbot.web;
+
+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.annotation.SysLogger;
+import com.diagbot.util.YWAnalysis;
+import com.diagbot.util.YWDateUtils;
+import com.diagbot.vo.hl7.Hl7VO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.util.UUID;
+
+@RestController
+@RequestMapping("/qc/hl7")
+@Api(value = "HL7协议-对接接口API", tags = { "HL7协议-对接接口API" })
+public class DataHl7Controller {
+
+    @Autowired
+    private YWAnalysis ywAnalysis;
+
+    @ApiOperation(value = "HL7协议-对接接口API")
+    @PostMapping("/Run")
+    @SysLogger("Run")
+    public String receviceHl7(@RequestParam String hisMessage){
+
+        Hl7VO hl7VO=new Hl7VO();
+        hl7VO=JSON.parseObject(hisMessage,Hl7VO.class);
+
+        try {
+            byte[] bytes = new byte[5120];
+            InputStream is = new ByteArrayInputStream(hl7VO.getMessage().getBytes("UTF-8"));
+            StringBuilder sb = new StringBuilder();
+            sb.append(new String(bytes, 0, is.read(bytes), "UTF-8"));
+
+            //sb= sb.replaceAll("\n", "\r").replace("\u000B", "").replace("\u001C", "").replace("\\\r","");
+            hisMessage.getBytes("UTF-8");
+            ywAnalysis.executeAnalysis(hisMessage);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return getResponseMsg(hisMessage,e.getMessage()).toString();
+        }
+        return getResponseMsg(hisMessage,"成功").toString();
+    }
+
+    private StringBuilder getResponseMsg(String receiveMsg,String msg) {
+        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(msg)
+                    .append("\u001C");
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return responseMsg;
+    }
+}

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

@@ -59,7 +59,7 @@ spring:
     druid:
       driver-class-name: com.mysql.cj.jdbc.Driver
       platform: mysql
-      url: jdbc:mysql://172.17.14.227:3306/qc_data?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
+      url: jdbc:mysql://127.0.0.1:3306/qc?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&allowMultiQueries=true
       username: root
       password: lantone
       # 连接池的配置信息
@@ -111,9 +111,9 @@ spring:
     database:
       cache: 8 # cache索引
       token: 8 # Token索引
-    host: 172.17.14.227  #Redis服务器地址
+    host: 127.0.0.1  #Redis服务器地址
     port: 6379 # Redis服务器连接端口(本地环境端口6378,其他环境端口是6379)
-    password: lantone # Redis服务器连接密码(默认为空)
+    password:  # Redis服务器连接密码(默认为空)
     lettuce:
       pool:
         max-active: 8 # 连接池最大连接数(使用负值表示没有限制)