使用 HL7DFDLOutput 节点可以为目标应用程序准备消息。
HL7DFDLOutput 节点接收 DFDL 域中的 HL7 消息,并对在 TCP/IP 端口上进行侦听的目标应用程序打开连接。建立连接后,会发送一条将“记录结束”设置为结尾 MLLP 字节属性定界符(缺省值为 1C0D)的 HL7 消息。如果在节点的发送数据记录超时(秒)属性所指定的时间限制内未能成功地发送数据,那么该消息将传递到 Failure 终端。
成功地发送该消息后,HL7DFDLOutput 节点将等待来自目标应用程序的应答 (ACK)。系统将从 HL7 应答中除去 MLLP 字节,对其进行解析,并检查返回码。如果在 HL7DFDLOutput 节点中发生错误,那么该消息将传递到 Log Retry 终端或 Failure 终端。
如果交付成功且在应答中返回了 AR 代码,并且未超过重试限制,那么消息将传递到 Log Retry 终端。
如果交付了该消息并且在应答中返回了 AE 代码,或者未接收到任何有效应答,那么该消息将传递到 Failure 终端。
如果未交付消息,那么将假定目标不可用,并且如果未超过重试限制,那么会将消息传递到 Log Retry 终端。
如果未连接 Log Retry 终端,或者路径成功结束,那么将重试交付。如果连接了 Log Retry 终端,并且下游抛出了异常,那么不会再次尝试发送该消息,而是将其传递到 Failure 终端。
如果未连接 Failure 终端,那么将抛出异常。
有关 HL7 的信息,请参阅 Health Level Seven International。
HL7DFDLOutput 节点包含在消息流节点选用板的 Healthcare 抽屉中,在 IBM® Integration Toolkit 中由以下图标表示:
“模式资源管理器”视图中的 Healthcare 类别中的“Healthcare:从 HL7 到 HL7”内置模式显示了 HL7DFDLOutput 节点的用法示例。
在消息流中使用 HL7DFDLOutput 节点时,此节点期望在 DFDL 树中找到已根据 DFDL 消息模型中的 HL7 消息进行解析的消息。可使用普通模型,或消息中定义的树的消息类型的特定模型(通过在消息流中的 HL7DFDLInput 节点上配置节点属性使用普通模型来指定格式)。如果您不确定传递到 HL7DFDLOutput 节点的消息是否正确,可以将验证属性设置为在处理开始前强制执行解析。如果成功地将该消息发送到配置的目标,并且目标返回了处理成功应答,那么该应答将传递到此节点的 Out 终端。
如果您希望此节点在发生故障后再次尝试发送该消息,那么必须将重试限制属性的值设置为要让此节点尝试发送该消息的次数。节点每 10 秒重试 1 次,但是您可以通过更改重试时间间隔(秒)属性来更改时间间隔。 如果您还希望记录每次尝试,那么必须选中记录重试属性。如果选中了记录重试属性,那么对于每次重试,该消息都将传递到 Log Retry 终端。“环境”包含可以在日志消息中使用的值,请参阅下面的“环境”表。
如果连接了 Log Retry 终端,那么消息流线程将成功结束,并且将继续尝试发送该消息。如果对此线程抛出了未捕获的异常,那么将不会继续进行重试。
如果消息传递到 Failure 终端,那么消息流将根据错误处理过程执行操作。必须连接 Failure 终端才能记录错误,这将保存数据以及/或者抛出异常。如果未连接 Failure 终端,那么错误将导致静默故障,不会抛出异常,并且不会在事件日志中记录任何事件。要了解可以在错误处理中使用的错误码和其他信息,请参阅下面的“错误”表。
如果 HL7DFDLOutput 节点中发生故障,那么消息将传递到 Failure 终端。LocalEnvironment.HL7 包含以下“环境”表中显示的字段。这些字段提供用于构建否定应答 (NACK) 或创建错误消息的信息。
字段 | 描述 |
---|---|
FlowMilestoneReached | 指示发生错误的位置 |
Retry | 指示此操作能否重试 |
ErrorCondition | 提供有关此错误的文本描述 |
Attempt | 如果此错误在重试循环中发生,那么此变量将包含以下文本:Attempt <i> of <n> |
RetryCount | 指示当前尝试 |
RetryLimit | 指示允许的尝试次数 |
以下“错误”表指示了可能出现的错误码。
错误 | 终端 | 重试 | 代码 | 错误文本 |
---|---|---|---|---|
此节点使用 DFDL 消息模型和 HL7 消息格式解析入局消息失败。 | Failure | 否 | BADHL7 MESSAGE | 无法解析入局 HL7 消息。 |
此节点将消息发送到配置的目标失败。 | Log Retry | 是 | SENDHL7 | TCP/IP 错误。未发送 HL7 消息。 |
此节点解析应答失败。 | Failure | 否 | ACKPARSE ERROR | 解析 ACK 消息时发生 MSH 错误。 |
接收到应答,但不存在应答代码。 | Failure | 否 | ACKERROR | 发生 MSA 解析或验证错误:MSA 1。应答代码为 Null。ACK 包含以下错误消息:error_message |
接收到应答,但不存在消息控制标识。 | Failure | 否 | ACKERROR | 发生 MSA 解析或验证错误:MSA 2。MessageControlID 为 Null。ACK 发送了以下错误消息:error_message |
在超时时间段内未接收到任何应答。 | Failure | 否 | TIMEOUT | 此节点在指定超时时间段内接收 ACK 消息失败。 |
此节点接收应答失败。 | Failure | 否 | RECEIVE ACK | TCPIP 错误。此节点接收 ACK 消息失败。 |
此节点已尝试交付消息,但此节点已达到配置的重试限制。 | Failure | 否 | SENDHL7 TOOMANY REPEATS | 此节点接收 ACK 消息失败。 |
此节点接收到 AR 应答,但此节点已达到配置的重试限制。 | Failure | 否 | ACKAR TOOMANY REPEATS | 此节点已重试发送消息,但无法成功地交付该消息。 |
在将 HL7DFDLOutput 节点的实例添加到消息流后,可以对其进行配置
所有必须输入值(未定义缺省值)的必需属性均以星号标记。
终端 | 描述 |
---|---|
In | 这是输入终端,用于接受 HL7 消息以供此节点处理。 |
Failure | 这是输出终端,如果此节点未能成功地发送消息,或者接收处理成功应答失败,那么该消息将路由到此终端。 |
Out | 这是输出终端,如果将消息发送到目标成功,并接收到处理成功应答,那么该消息将路由到此终端。 |
Log Retry | 这是输出终端,如果此节点未能成功地发送消息,或者接收处理成功应答失败并且未超出重试计数,那么该消息将路由到此终端。 |
下表描述了此节点的属性。标题为 M 的列指示属性是否为必需(如果在未定义缺省值时必须输入值,那么将以星号标记);标题为 C 的列指示属性是否可配置(将消息流添加到 BAR 文件以进行部署时,可以更改该属性的值)。
属性 | M | C | 缺省值 | 描述 |
---|---|---|---|---|
节点名 | 否 | 否 | HL7DFDLOutput | 节点的名称。 |
简短描述 | 否 | 否 | 节点的简要描述。 | |
详细描述 | 否 | 否 | 描述消息流中节点用途的文本。 |
属性 | M | C | 缺省值 | 描述 |
---|---|---|---|---|
连接详细信息 | 是 | 是 | localhost:2222 | 目标应用程序的 TCP/IP 连接,格式为 主机名:端口 |
发送数据记录超时(秒) | 是 | 是 | 60 | 这是此节点尝试发送数据或者接收应答时等待的时间(以秒计)。 |
前导 MLLP 字节 | 是 | 是 | 0B | 这是前导 MLLP 字节,此字节将添加到出局 HL7 记录中,并从入局应答中除去。 |
重试限制 | 是 | 是 | 5 | 这是此节点尝试将 HL7 消息交付到目标应用程序的最大次数。 |
重试时间间隔(秒) | 是 | 是 | 10 | 将 HL7 消息交付到目标应用程序的两次尝试之间的时间间隔(秒)。 |
记录重试 | 否 | 是 | 选中 | 指定是否将每次交付消息的尝试传递到 Log Retry 终端以允许进行日志记录。 |
属性 | M | C | 缺省值 | 描述 |
---|---|---|---|---|
定界符 | 否 | 否 | 定制定界符 | 此属性不可编辑。 |
结尾 MLLP 字节 | 是 | 是 | 1C0D | 这是用作 HL7 记录定界符的结尾 MLLP 字节。TCPIPClientOutput 节点将添加这些结尾 MLLP 字节。 |
属性 | M | C | 缺省值 | 描述 |
---|---|---|---|---|
定界符 | 否 | 否 | 定制定界符 | 此属性不可编辑。 |
结尾 MLLP 字节(应答) | 是 | 否 | 1C0D | 这是用于检测入局应答结束的 HL7 定界符。 |
属性 | M | C | 缺省值 | 描述 |
---|---|---|---|---|
验证 | 否 | 是 | 无 | 此属性确定 DFDL 域中的入局 HL7 消息的验证级别。有效值包括:
|