文章目录
- 第十五章 定义 HL7 的 DTL 数据转换
第十五章 定义 HL7 的 DTL 数据转换
每个接口可能需要一定数量的数据转换。创建转换时,不要使用保留的包名称。
重要提示:请勿在数据转换中手动更改 HL7
转义序列;自动处理这些。
可以使用“数据转换构建器”页面创建数据转换(从主页中选择“互操作性”>“构建”>“数据转换”)。
下图显示了数据转换构建器页面:
请注意以下提示:
- 方便地开发
DTL
转换。解释了如何添加各种DTL
动作。 - 明确想要的数据转换类的创建选项的值。
create
可能具有以下值之一:new
— 在执行数据转换中的元素之前创建目标类型的新对象。任何未明确分配给目标对象的源段都将被忽略。这是默认设置。copy
— 在执行转换中的元素之前,创建源对象的副本以用作目标对象。existing
— 使用数据转换调用方提供的现有对象作为目标对象。
要创建作为源的精确副本的目标对象,请勿使用如下操作:
<assign property='target' value='source' />
而是在数据转换类中使用create='copy'
属性。
-
确保数据转换类标识正确的架构类别:
sourceDocType
属性targetDocType
属性
源对象和目标对象的模式类别可以相同或不同。
-
确保“转换”选项卡指定要用于该数据转换中的所有表达式和代码操作的脚本语言。
ObjectScript
是默认语言。 -
使用分配操作通过拖放操作将源消息中的
HL7
段分配到目标消息。 -
可能想要结合使用多种技术。可以先通过拖动生成一行代码,然后通过编辑文本来微调代码。
-
数据转换可以参考
HL7
消息对象的属性,包括:- 类属性
DocType
、TypeCategory
、BuildMapStatus
和Name
。 - 虚拟文档属性,如在
Productions
.中使用虚拟文档的“语法指南”部分中的“花括号{}
语法”中所述。
在数据转换类代码中,特殊变量
source
和target
表示各自的HL7
消息对象,如下例所示: - 类属性
source.Name
target.DocType
source.{PIDgrp.PV1grp.PV1:18}
target.{PIDgrp.PID:PatientName.familylastname}
source.{ORCgrp(1).OBRuniongrp.OBRunion.OBR:4.3}
- 分配任何文字字符串值,或进行条件分配。
注意:字符串文字不能包含 XML
保留字符。它也不能包含 HL7
使用的分隔符。
此外,HL7
空映射代码“”需要特殊处理。以下示例测试源消息中的空映射代码,并将其替换为目标消息中的空字符串:
<if condition='source.{PV1:7().4}=""""""'>
<true>
<assign property='target.{PV1:7().4}' value='""' />
</true>
</if>
- 对于简单的计算,DTL数据转换可以:
- 调用
ObjectScript
实用函数 - 在
DTL
代码操作中使用ObjectScript
表达式 - 调用
DTL sql
操作
- 调用
对于更复杂的计算,可以编写自己的类方法并从代码操作或另一个 DTL
元素中的值字符串调用它们。
- 包括转换和每个操作的描述。
- 编译数据转换也会保存它。
- 要在生产中使用
DTL
数据转换,只需在路由规则集的Transform
字段中输入其完整的包和类名称即可。