You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mirth 3.3 TCP源自定义ACK/NAK:缺失PID时返回AR消息

嘿,我明白你现在的需求啦——给那些因为缺PID被过滤的ADT消息发送一条带“Missing Patient ID”的AR响应,对吧?作为Mirth和JS新手,咱们一步步来,保证你能搞定:

实操步骤详解

1. 把源过滤器换成JavaScript类型

原来的规则构建器只能做“要不要过滤”的判断,没法在过滤的时候触发发送AR消息的动作,所以第一步先切换过滤器类型:

  • 打开你的Mirth通道,进入「Source」标签页
  • 在「Filter」区域,把下拉框从「Rule Builder」改成JavaScript

2. 编写过滤器逻辑(自带AR消息发送)

在JavaScript过滤器的编辑框里,写入以下代码,我给你逐行标了注释,方便理解:

// 1. 把收到的原始HL7消息转换成XML格式,方便解析
var msg = new XML(connectorMessage.getRawData());
var hasPatientID = false;

// 2. 检查PID段的第3个字段的第1个组件(也就是PID3.1)是否存在且不为空
if (msg['PID']['PID.3'] && msg['PID']['PID.3']['PID.3.1'].toString().trim() !== '') {
    hasPatientID = true;
}

// 3. 如果没找到有效Patient ID,就构建并发送AR消息
if (!hasPatientID) {
    // 先获取原消息的控制ID(MSH10),用来填到AR消息的MSA段里
    var originalControlId = msg['MSH']['MSH.10'].toString() || 'UNKNOWN';
    
    // 组装HL7格式的AR消息(注意用HL7标准的换行符\r,日期和UUID用Mirth自带工具生成)
    var arMessage = "MSH|^~\&|MIRTH|YOUR_FACILITY|SENDER_FACILITY|RECEIVER_FACILITY|" + DateUtil.getCurrentDate("yyyyMMddHHmmss") + "||ACK^A01|"+ DateUtil.generateUUID() +"|P|2.3\r";
    arMessage += "MSA|AE|" + originalControlId + "|Missing Patient ID\r";
    
    // 发送AR消息:如果是要回复给原TCP发送方,用下面这句
    connectorMessage.getResponseSender().send(arMessage);
    // 如果是要发送到另一个指定的TCP目标通道,就换成 channel.sendMessage('目标通道的ID', arMessage);
    
    // 返回false,告诉Mirth这条消息要被过滤,不进入后续处理流程
    return false;
}

// 如果有有效Patient ID,返回true,让消息正常走后续流程
return true;

3. 调整TCP监听器的响应设置(避免重复回复)

如果你的TCP监听器之前设的是「Respond with ACK」,记得改成Do Not Respond,不然Mirth会自动发默认ACK,和我们手动发的AR消息重复:

  • 在Source的「TCP Listener」设置里,找到「Response」选项,选择「Do Not Respond」

4. 测试验证

  • 模拟发送一条缺PID3.1的ADT消息到你的TCP端口
  • 检查发送方是否收到带“Missing Patient ID”的AR消息
  • 确认这条消息不会进入通道的后续处理(比如目的地)

新手小贴士

  • 写代码的时候可以用Mirth的「Test Filter」功能,输入一条测试消息,实时看逻辑是否生效
  • HL7段的字段索引在Mirth的XML解析里是用.分隔的,比如PID.3.1就对应PID段第3个字段的第1个组件
  • 如果你的全局脚本里已经写了构建HL7消息的工具函数,直接复用就行,不用重复写AR消息的组装代码

内容的提问来源于stack exchange,提问作者mitesh patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:15:44