最近对接医院接口使用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给看看哪里有问题
可能是版本问题,我使用的已经是我能找到最高的版本了
目前数据解析没有问题了,写了个客户端,发送数据中文乱码
消息解析代码
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);