2013-12-17 9 views
0

2 년 전이 질문을했습니다 (Problem with BizTalk multi-input map). 그러나 프로젝트가 중단되어 더 이상 테스트를 수행하지 않았습니다. 좀 더 자세한 내용과 스크린 샷으로 다시 먼지를 털어 야합니다.BizTalk HIPAA EDI 다중 입력 맵이 노드를 생성하지 않습니다

우리 시스템의 일부 데이터와 837 클레임 스키마를 병합해야하는 BizTalk HIPAA 솔루션이 있습니다. 다음과 같이 우리는 두 개의 입력 스키마를 가진지도이 일을하고 있습니다 :

enter image description here

(나는 크게 테스트 목적으로 스키마를 단순화했습니다). 필자의 원래 게시물에 대한 대답 (동일한 펑 토이 드 및 값 매퍼 사용)은 처음에 본 것처럼 단순한 스키마에서도 잘 작동하지만 실제 EDI 스키마에서는 실패합니다.

첫 번째 입력 메시지에서 IsRepriced = 1 인 경우 HCP_01, HCP_02 및 HCP_03에 대한 값을 사용하고 싶습니다. 0 인 경우 두 번째 메시지의 값 (원래 837 개의 주장)을 사용하십시오. 원래의 837 주장이 실제로 HCP 노드 (세그먼트)를 포함하고있는 한 펑 토이 드는 잘 작동하지만 거기에 없으면 데이터에서 생성 할 수 없습니다.

일부 if-then-else C# 코드를 사용하여 스크립트 펑 토이 드로 바꾸면 동일한 효과가 나타납니다.

그래서 펑 토이 드를 사용하여이 작업을 수행 할 수 있습니까? 아니면 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> 

답변

2

나는 자주지도의 경우 실종 다른 paradign와 함께 벽돌 벽에 충돌. 때때로 Looping Functioids가 속임수를 쓰는 경우가 있습니다. 간혹 신중하게 배치 된 논리 존재 -> 작동하지 않음, 때로는 아니오.

원본 레코드 중 하나가 minOccurs = 0 인 경우 매퍼가 for-each의 모든 내용을 래핑하므로 주로 발생합니다. 요소가 존재하지 않으므로 코드가 실행되지 않습니다.

필자가 50 %를 넘는다면 필자는 인라인 Xslt에 의지하게됩니다. 왜냐하면 어떤 시점에서는 대부분 중복 Functoid 그룹의 페이지보다 깨끗하기 때문입니다.

그러나 Xslt는 생각만큼 어려운 제안이 아닐 것입니다. 매퍼는 당신을 위해 대부분의 작업을 수행 할 수 있습니다. 펑 토이 드 (Functoids)를 사용하여 맵의 대부분을 빌드 한 다음 결과 Xslt를 복사 할 수 있습니다. 네임 스페이스와 같은 몇 가지 사항을 수정해야합니다.

(동일한 대답)

+0

그래, 최대 xslt 경로를 ... –