如何在BizTalk 2010中从HL7消息段中获取特定值

如何在BizTalk 2010中从HL7消息段中获取特定值,biztalk,hl7,Biztalk,Hl7,我正在BizTalk2010中开发一个与HL7相关的映射,我已经准备好了一切,包括源和目标模式、映射等,并且一切都在正确处理。我试图实现的是从一个所需的片段(即患者标识(PID))中获取一个特定值,并将其传递给目标模式的MemberID字段。这是PID段的外观(仅粘贴特定部分): PID | 1 | | | 000123456 ^先生^马^ 123456789A ^ ^ ^ MC ^ 12345 ^ ^ PT ^ 123456789 ^ ^ SS ^ 000000000001234 ^ ^ ^

我正在BizTalk2010中开发一个与HL7相关的映射,我已经准备好了一切,包括源和目标模式、映射等,并且一切都在正确处理。我试图实现的是从一个所需的片段(即患者标识(PID))中获取一个特定值,并将其传递给目标模式的MemberID字段。这是PID段的外观(仅粘贴特定部分):

PID | 1 | | | 000123456 ^先生^马^ 123456789A ^ ^ ^ MC ^ 12345 ^ ^ PT ^ 123456789 ^ ^ SS ^ 000000000001234 ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^马^ ^ ^ ^马^ ^ ^ ^ ^ ^ ^ ^马^ ^ ^ ^ ^ ^马^ ^ ^ ^|


上面的粗体部分是PID-3患者标识符列表(CX),我需要的值在文本SS~之后,它是000000000001234。如果我简单地映射第一个PID-3患者标识符列表的PID-3-1 ID字段,我会得到第一个值000123456。我需要的值位于第6个PID-3患者标识符列表中(见下图)。请告知

对于您的情况,您可能需要使用索引functoid。此functoid将要映射的元素作为第一个输入,并将要映射的元素的1基索引作为第一个输入

这是BizTalk 2010中的地图的外观:

functoid的配置如下所示:

如果查看生成的映射xslt,您将希望看到类似的内容:

如果“索引”functoid不起作用(因为您不能依赖特定的顺序),您可以尝试在顶层之间连接一个循环functoid,以确保获得所有记录,然后对PT限定符执行逻辑相等操作,并将functoid值映射到id号。逻辑循环中的链接等于根循环,应该阻止空循环


非常感谢,迈克,你建议的解决方案非常有效:)