编程界的小子 2023-06-25 20:15 采纳率: 25%
浏览 33
已结题

HL7协议开发,解析数据错误

最近对接医院接口使用HL7协议
使用springboot+socket

    <dependency>
        <groupId>ca.uhn.hapi</groupId>
        <artifactId>hapi-base</artifactId>
        <version>2.3</version>
    </dependency>
    <dependency>
        <groupId>ca.uhn.hapi</groupId>
        <artifactId>hapi-hl7overhttp</artifactId>
        <version>2.3</version>
    </dependency>
  <dependency>
        <groupId>ca.uhn.hapi</groupId>
        <artifactId>hapi-structures-v26</artifactId>
        <version>2.3</version>
    </dependency>

这个是我这边使用的maven配置,写了一个服务端
在解析数据时报错
解析客户端发过了的数据报这个错误
Primitive value ' 0560150103 ' requires to be empty
because it is withdrawn from the current HL7 version and should not be used
用我本地的客户端解析数据报这个错误
The HL7 version STF is not recognized

客户数据

MSH|^~\&|HERP||HL7LAB|CH|20230607101318||MFN^MO5^MFN_MO5|2ba038f2-6eb1-4d4c-8fa2-9499037828ad |S0006 MFI|STF^Practitioner Mast er File^HL70175||UPD|20230607101318||AL
MFE |MUP|1|20230607101318| 0560150103 ^1880867^|CE||admin^系统管理员^0323^信息运维中心^
LOC | 0560150103 ^1880867^||||胸外科病区^科室名称^XYKBQ^^||^^^^|BZSL^10
LCH| 0560150103 ^1880867||一级|001^医疗“科室类型^004^护理站^特殊科室类型|^^
LRL| 0560150103 ^1880867||1|RX^胸外科病区|05601501^2426
LRL|05601501^2426||2|RX^胸外科总病区|056015^2365
LRL|056015^2365||3|BX"胸外科|0560^2000259
LRL |0560^2000259||4|RX^手术科室|05^2000167
LRL|05^2000167||5|RX^临床医技科室|^
LDP | 0560150103 ^1880867 |||||1|20230607101231|

有没有ds给看看哪里有问题
可能是版本问题,我使用的已经是我能找到最高的版本了

  • 写回答

1条回答 默认 最新

  • 编程界的小子 2023-06-28 09:29
    关注

    目前数据解析没有问题了,写了个客户端,发送数据中文乱码

    消息解析代码
    public void parseHL7Message(String hl7Message) {
        // 分隔符定义
        char fieldSeparator = '|';
        char componentSeparator = '^';
        char subcomponentSeparator = '&';
        char repetitionSeparator = '~';
        char escapeCharacter = '\\';
    
        // 分割消息为段
        String[] segments = hl7Message.split("\r");
    
        // 解析 MSH 段
        String mshSegment = segments[0];
        String[] mshFields = mshSegment.split("\\" + fieldSeparator);
    
        // 获取消息类型
        String messageType = mshFields[8];
    
        // 获取发送方应用程序名称
        String sendingApplication = mshFields[2];
    
        // 其他字段解析...
        
        // 根据需要解析其他段和字段
        
        // 输出解析结果
        System.out.println("解析结果:");
        System.out.println("消息类型:" + messageType);
        System.out.println("发送方应用程序名称:" + sendingApplication);
        // 其他解析结果输出...
    }
    
    // 使用示例
    String hl7Message = "MSH|^~\\&|LIS||HTCIS||20201207101411||OUL^R21|U6680658|P|2.4|||AL|AL\r";
    parseHL7Message(hl7Message);
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 7月7日
  • 已采纳回答 6月29日
  • 创建了问题 6月25日

悬赏问题

  • ¥15 求caverdock使用教程
  • ¥15 Coze智能助手搭建过程中的问题请教
  • ¥15 12864只亮屏 不显示汉字
  • ¥20 三极管1000倍放大电路
  • ¥15 vscode报错如何解决
  • ¥15 前端vue CryptoJS Aes CBC加密后端java解密
  • ¥15 python随机森林对两个excel表格读取,shap报错
  • ¥15 基于STM32心率血氧监测(OLED显示)相关代码运行成功后烧录成功OLED显示屏不显示的原因是什么
  • ¥100 X轴为分离变量(因子变量),如何控制X轴每个分类变量的长度。
  • ¥30 求给定范围的全体素数p的(p-2)/p的连乘积值