使用自定义文本对字符进行编码

从 BizTalk Server 2013 R2 开始,可以在字段或段中使用“FreeText”。 不分析“FreeText”字段/段中的数据。

需要了解的事项

Separator 行为 示例
~:重复分隔符 在字段中,重复 (~) 被视为重复分隔符。 在非自由段中,重复 (~) 被视为重复分隔符。 在自由段中,重复 (~) 被视为自由文本的一部分,而不是新的重复。 在以下示例中,FRE 为 free Segment。 它可以包含任意字符作为自由文本,包括 ~。 任何其他重复 (~) 不被视为重复分隔符,并被视为自由文本内容。 即使自由段的子级不可重复且包含重复 (~) ,验证也会成功。 FRE 示例:

FRE |Foo&^|Foo&^|Foo&^|Foo&^~Foo&^|Foo&^|Foo&^|Foo&^

在以下示例中,EVN4 定义为自由文本,因为它包含 &^。 遇到“|”分隔符时,它被视为当前自由文本的末尾。 EVN 示例:

EVN||||Foo&^Foo&^Foo&^Foo&^Foo&^||

在以下示例中,EVN5 的第一个子级定义为自由文本,因为它包含 &。 遇到“^”分隔符时,它被视为当前自由文本的末尾。 EVN5 示例:

EVN|||||Foo&Foo&Foo&Foo&Foo&^5.2|

在以下示例中,5.2.1 和 5.2.2 不能有任何分隔符作为自由文本,即使它在架构中定义为 FreeText 也是如此。 5.2.1 和 5.2.2 示例:

EVN|||||Foo1^5.2.1&5.2.2|

在以下示例中,假设 EVN4 可以重复,并且是自由文本类型。 Foo1&^ 被视为第一次重复, Foo2&^ 被视为第二次重复。 如果 EVN4 不可重复 (MaxOccurs = 1) ,则验证失败(如果它包含 ~),即使它是自由文本类型 (类似于非自由文本字段) 。 EVN4 示例:

EVN ||||Foo1&^~ Foo2&^ ||
|:字段分隔符 如果在可用段的段标记之后缺少字段分隔符,则验证成功。 在以下示例中,FRE 是自由文本类型。 可以使用或不带“|”字段分隔符的 FRE 段标记后立即启动自由文本内容。 这两个示例都成功:

FREabc
FRE|abc

在以下示例中,验证成功:

将消息输入到 DASM: FRE|abcd
DASM 的输出: <SegmentData>|abcd</SegmentData>
ASM 的输出: FRE|abcd

将消息输入到 DASM: FREabcd
DASM 的输出: <SegmentData>abcd</SegmentData>
ASM 的输出: FREabcd
Parent-Child 可选 父子可选验证规则仍适用。 假设父级是可选的,其一个子级是必需的,然后:

- 如果未填充其他子级和必需的子级,则消息验证成功。
- 如果至少填充了一个子级,则还应填充强制子级。 否则,消息验证将失败。

在以下示例中,字段 1 作为可选字段。 其 1.a 子级是可选的,是自由文本类型。 其 1.b 子级是必需的:

xyz|1.a^1.b|2

在以下示例消息中, dfssdf&sdf 被视为单个元素 - 1.a。 分析程序检查是否存在 1.b。 |当达到 时,它假定未填充 1.b 并且消息验证失败:

xyz|dfssdf&sdf|2
MSH、FSH 和 BSH 段 对于所有字段,将忽略自由文本。 这些段对应于页眉部分。 验证会像平时一样发生,即使它们被定义为自由文本也是如此。
\:转义字符 如果 元素中有偶数个“\”,则验证成功 (即使它们不是连续) 。 如果有奇数,则验证失败。 对于非自由文本字段,相同的行为将继续存在。 对于“自由文本”字段,没有对数字进行验证;它被视为自由文本内容。

在这些示例中,消息分隔符提供了有关分隔符的详细信息。

使用自由文本

  1. 在 Visual Studio 的项目中,打开架构。

  2. 右键单击记录,选择“ 插入架构节点”,然后选择“ 子字段元素”。

  3. 在“属性”中,选择“ 数据类型”,然后选择“ 自由文本” (SimpleType)

另请参阅

处理 HL7 消息