2年前,我問過這個問題(Problem with BizTalk multi-input map),但項目被擱置了,我從未做過任何進一步的測試。我不得不再次將它擦掉,還有一些細節和截圖。BizTalk HIPAA EDI多輸入映射不會生成節點
我有一個BizTalk HIPAA解決方案需要合併837索賠架構與我們的系統中的一些數據。我們正在與一個地圖有兩個輸入模式這樣做,如下所示:
(我已經大大簡化了用於測試目的的模式)。 對我原來的文章(使用相同的functoid和值映射器)的接受答案工作正常,像我最初顯示的簡單模式,但與實際的EDI模式失敗。
在第一個輸入消息中,如果IsRepriced = 1,我想將我們的值用於HCP_01,HCP_02和HCP_03。如果它是0,則使用第二條消息中的值(原始837聲明)。只要原始837聲明實際上包含HCP節點(片段),顯示的functoids就可以正常工作,但如果它不在那裏,我無法從我們的數據中生成一個。
用一些if-then-else C#代碼替換這些腳本functoid具有相同的效果。
那麼,有沒有辦法做到這一點使用functoids,還是我需要求助於XSLT?不幸的是,我幾乎不知道XSLT,所以這將是困難的...
謝謝!
編輯:我想起來使用內聯XSLT調用模板,使用此代碼:
<xsl:template name="Repricing_2000B_HCP">
<xsl:param name="IsRepriced" />
<xsl:choose>
<xsl:when test="$IsRepriced='1'">
<xsl:for-each select="//InputMessagePart_1/ns0:X12_00401_837_I/ns0:TS837Q3_2000A_Loop/ns0:TS837Q3_2000B_Loop/ns0:TS837Q3_2300_Loop/ns0:HCP_ClaimPricingRepricingInformation_TS837Q3_2300">
<xsl:element name="ns0:HCP_ClaimPricingRepricingInformation_TS837Q3_2300">
<xsl:copy-of select="./@*" />
<xsl:copy-of select="./*" />
</xsl:element>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<xsl:for-each select="//InputMessagePart_0/ns0:X12_00401_837_I/ns0:TS837Q3_2000A_Loop/ns0:TS837Q3_2000B_Loop/ns0:TS837Q3_2300_Loop/ns0:HCP_ClaimPricingRepricingInformation_TS837Q3_2300">
<xsl:element name="ns0:HCP_ClaimPricingRepricingInformation_TS837Q3_2300">
<xsl:copy-of select="./@*" />
<xsl:copy-of select="./*" />
</xsl:element>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
是的,結束了xslt路線... –