天天看點

BizTalkServer 如何接收 EDI 消息(3)

EDI 拆裝器的工作方式

BizTalk Server 執行 EDI 接收管道 (Microsoft.BizTalk.DefaultPipelines.EDIReceivePipeline) 中接收的 EDI 編碼交換的大多數處理。此管道包括用于執行下列處理的 EDI 拆裝器管道元件:

将單個消息中的多個交換拆分為單獨的交換(條件是接收位置的“DetectMID”管道屬性設定為 True)。EDI 拆裝器執行此操作的方法是:即使在遇到交換控制尾部(IEA 或 UNZ)之後,也仍将搜尋交換控制标頭(ISA、UNA 或 UNB)。

驗證信封。

拆裝交換。

處理 HIPAA 交換的觸發字段。

根據需要驗證 EDI 和特定于合作夥伴的屬性。這包括 EDI 架構驗證、X12 編碼消息的跨字段驗證(如果已配置)、EDI 結構驗證和擴充架構驗證(如果此架構是使用具有非 EDI 資料類型的節點自定義的)。有關詳細資訊,請參閱驗證收到的 EDI 消息。

驗證交換、組和事務集控制編号未重複(如果在“協定屬性”對話框的雙向協定頁籤的“驗證”頁(“交換設定”下方)中啟用了這些檢查)。根據以前收到的交換檢查交換控制編号。根據交換中的其他組控制編号檢查組控制編号。根據該組中的其他事務集控制編号檢查事務集控制編号。如果發現重複項,狀态報告将訓示存在重複記錄。

為每個事務集生成一個 XML 文檔。在每個 XML 檔案中,更新 BTS.MessageType 上下文屬性,将其設定為帶有命名空間的架構名稱。

如果“入站批處理選項”屬性設定為此兩個“保留交換”值之一,則将整個交換轉換為 XML。此屬性可以從“協定屬性”對話框的雙向協定頁籤的“交換設定”下的“本地主機設定”頁進行設定。接收管道将更新     ReuseEnvelope 屬性以将交換辨別為保留。

生成技術确認和/或功能确認(如果已配置)。這包括對确認進行批處理(如果已配置)。更新 BTS.MessageType 上下文屬性,将其設定為 http://schemas.microsoft.com/EDI/<X12 或 EDIFACT> 指令空間中的控制架構(如适用于 997 确認的     X12_997_Root)。同時,還将更新     EDI.DestinationPartyName 上下文屬性,此屬性可確定提取确認以便發送。有關詳細資訊,請參閱發送 EDI 确認。

執行 HIPAA 276/277(僅版本 5010 )834、835(僅版本 4010)和 837 文檔拆分(如果适用)。

将屬性更新或寫入到消息上下文(請參閱下一部分)。

将屬性更新或寫入到上下文

當 EDI 拆裝器處理收到的消息時,該拆裝器會将下列屬性更新或寫入到消息上下文:

對于 X12 編碼的未進行批處理的消息,請從信封更新下列屬性:ISA06、ISA08、ISA15、GS01、GS02、GS03、GS08、ST03 和 ST01。

BizTalkServer 如何接收 EDI 消息(3)

便箋

對于一個傳入 HIPAA 837 交換,BizTalk Server 支援以下三種 HIPAA 837 架構:Claim-Dental_837D、Claim-Institutional_837I 和 Claim-Professional_837P。其中每個架構的 ST01 都是“837”。在版本 5010 中,這三個架構對于 GS08 有不同的值:“005010X223A1”(837I)、“005010X224A1”(837D) 和“005010X222”(837P)。在版本 4010 中,這些架構對于 GS08 有不同的值:“004010X096A1”(837I)、“004010X097A1”(837D) 和“004010X098A1”(837P)。

對于 EDIFACT 編碼的未進行批處理的消息,請從信封更新下列屬性:UNB2.1、UNB2.3、UNB3.1、UNB11;UNG1、UNG2.1、UNG3.1;UNH2.1、UNH2.2 和 UNH2.3。

如果拆分批交換,請将 ISA_Segment 和     GS_Segment 寫入到 X12 編碼消息的上下文,或者将 UNA_Segment、UNB_Segment     和 UNG_Segment 寫入到 EDIFACT 編碼消息的上下文。

BizTalkServer 如何接收 EDI 消息(3)

上述各段将被寫入到上下文中,而不是更新。但是,您可以使用消息收集示例将這些段附加到事務集中。您還可以采用附加示例的代碼将其添加到自定義管道元件中。有關詳細資訊,請參閱消息收集示例(BizTalk Server  示例)。

BizTalkServer 如何接收 EDI 消息(3)

更新的 ISA_Segment 屬性包含安全/授權資訊(ISA02 包含授權資訊,ISA04 包含安全資訊),這可能導緻資訊洩漏。您可以使用“上下文屬性中屏蔽安全/授權/密碼資訊屬性”(位于雙向協定屬性的“交換設定”的“本地主機設定”頁)來使用“#”符号替換 ISA02 和 ISA04 字段中的每個字元。這是一個單向過程:“#”字元不能轉換為實際的字元。

對于 X12 和     EDIFACT 編碼的消息,更新     ReuseEnvelope,該屬性訓示拆分或保留批交換。

如果批交換得以保留,請更新下列屬性:

InboundTransportatLocation

InboundTransportType

ISA05

ISA07

ISA06

ISA08

ISA15

LastInterchangeMessage      = {True|False}

MessageType

ReceivePortID

ReceivePortName

ReuseEnvelope

解析信封

EDI 接收管道使用标頭控制架構解析收到的 EDI 消息的信封,并使用 EDI 文檔架構解析交換中的事務集/消息。

如果 EDIINT/AS2 編碼的消息是通過 HTTP/HTTPS 傳輸接收的,EDI 拆裝器将檢查上下文屬性 BTS.MessageDestination。如果該屬性設定為 SuspendQueue,則表示在 AS2 進行中發生錯誤,該消息将被挂起,EDI 拆裝器将充當直通管道元件,并将該消息挂起到 MessageBox。

在解析 EDIFACT 交換期間,EDI 接收管道将删除用于轉義字元的轉義訓示器。轉義訓示器不包括在 EDI 驗證中。EDI 接收管道在計算長度限制時不包括轉義訓示器。

字元集

對于 X12 交換,“管道元件屬性”确定在處理交換時 EDI 拆裝器将使用的字元集。字元集可以是“基本”、“擴充”或“UTF8/Unicode”。EDIFACT 交換的預設值是 UTF8,UNB1.1 字段決定該字元集。

動态發現分隔符

當 BizTalk Server 接收 EDI 交換時,沒有任何協定屬性訓示應在交換中使用哪些分隔符。EDI 拆裝器而是在運作時發現應使用哪些分隔符(對于 X12 或 EDIFACT)。

對于 X12 消息,EDI 拆裝器使用來自交換内部的下列字元:

分隔符

字元

資料元素分隔符

ISA 的第 4 個字元

元件元素分隔符

ISA16

段分隔符

ISA 的第 106 個字元

段終止符字尾

ISA 段和 GS 段之間的字元

值:無、CR、LF 或 CRLF

BizTalkServer 如何接收 EDI 消息(3)

分隔符隻能采用上述值。

重複分隔符或标準辨別符

(取決于雙向協定頁籤的“信封”頁上的“ISA11 用法”協定屬生)

ISA11

對于 EDIFACT 交換,EDI 拆裝器将檢查在交換中定義分隔符的 UNA 段。如果交換沒有 UNA 段(可選),拆裝器将使用在管道元件屬性中定義的預設值。

UNA 的字元

第 4 個字元

第 5 個字元

十進制符号

第 6 個字元

轉義符

第 7 個字元

重複字元

第 8 個字元

第 9 個字元

段分隔符字尾

UNA 段和 UNB 段之間的字元

BizTalkServer 如何接收 EDI 消息(3)

UNA 字元串是可選的。如果存在,它定義檔案的所有分隔符。如果不存在,EDI 拆裝器将使用 EfactDelimiters 管道元件屬性确定分隔符。有關詳細資訊,請參閱配置 EDI 管道屬性。

釋出錯誤

如果 EDI 拆裝器遇到 EDI 處理錯誤,BizTalk Server 将在事件檢視器中釋出以下兩個錯誤(如果已啟用此釋出功能):

源 BizTalk Server 挂起消息時記錄的錯誤。該錯誤是與 BizTalk Server 處理相關的必需錯誤。

源 BizTalk Server EDI 記錄的報告事務集中的問題的錯誤。該錯誤特定于 EDI。

使用協定屬性

如果 EDI 拆裝器可辨別協定,則使用協定屬性(請參閱接收到的 EDI 消息的協定解析、架構發現和授權)。如果無法找到比對協定,而且後備協定中的對應值也不可用,則将使用 Visual Studio 的“屬性”視窗中的 EDI 拆裝器屬性集。但是,如果選擇了“驗證失敗時删除消息”或“驗證失敗時保留消息”,則需要在接收端口屬性中進行驗證,此時将不會出現以上後備機制。在這種情況下,必須配置協定;否則,交換将挂起。

當 EDI 拆裝器使用協定屬性時,需要設定下列協定屬性:

屬性

協定屬性頁

重複分隔符

雙向協定頁籤中的“信封”頁(“交換設定”下)

執行 EDI 資料類型驗證

雙向協定頁籤中“事務集設定”下的“驗證”頁(針對 X12 和 EDIFACT 協定)

擴充驗證

允許出現前導和尾随零及空格

建立空 XML 标記(如果尾部分隔符允許)

雙向協定頁籤中“事務集設定”下的“本地主機設定”頁(針對 X12 和 EDIFACT 協定)

入站批處理選項

雙向協定頁籤中的“本地主機設定”頁(“交換設定”下)(針對 X12 和 EDIFACT 協定)

預設 EDIFACT 分隔符

-

屏蔽安全/授權/密碼資訊

将隐式小數格式 Nn 轉換為十進制數值

雙向協定頁籤中“事務集設定”下的“本地主機設定”頁(針對 X12 協定)

将确認路由到請求-響應接收端口的發送管道

雙向協定頁籤中“交換設定”下的“本地主機設定”頁(“接收方設定”部分)(針對 X12 和 EDIFACT 協定)

X12 字元集

X12 交換信封生成

BizTalkServer 如何接收 EDI 消息(3)

此設定僅用于驗證為協定屬性輸入的值。用于運作時處理的 X12 字元集在管道屬性中選擇。有關詳細資訊,請參閱EDI 字元集。

使用 HIPAA 觸發器字段

EDI 段通常包含修改段含義的限定符值。例如,N1 段可包含一個限定元素“BT”,表示“帳單收件人名字”,或可能包含一個限定元素“ST”,表示“收貨方名字”。通常,由業務邏輯來決定如何解釋這些字段,拆裝器會将 N1 段的所有執行個體解析到相同的 XML 記錄名稱;但是,随 BizTalk Server 2013 一同發售的 HIPAA 架構包含允許 EDI 拆裝器基于是否存在限定值來建立唯一 XML 記錄的批注(請參閱HIPAA 架構觸發器字段批注)。

當收到一個 HIPAA 事務集時,如果 EDI 拆裝器遇到一個包含觸發器字段的段,它将使用觸發器資訊來生成一個特定于該段和觸發器組合的 XML 記錄。

下表顯示了 N1 段是如何基于 N101 值轉化成 XML 記錄的:

N1 段

生成的 XML 資料

N1*PR*Contoso*XV*0000000~

複制

<ns0:TS835W1_1000A_Loop>

 <N1_PayerIdentification_TS835W1_1000A>

   <N101__EntityIdentifierCode>PR</N101__EntityIdentifierCode>  

   <N102__PayerName>Contoso</N102__PayerName>

   <N103__IdentificationCodeQualifier>XV</N103__IdentificationCodeQualifier>  

  <N104__PayerIdentifier>0000000</N104__PayerIdentifier>  

 </N1_PayerIdentification_TS835W1_1000A>

N1*PE*Fabrikam*FI*9999999~

<TS835W1_1000B_Loop>  

 <N1_PayeeIdentification_TS835W1_1000B>  

  <N101__EntityIdentifierCode>PE</N101__EntityIdentifierCode>  

   <N102__PayeeName>Fabrikam</N102__PayeeName>

   <N103__IdentificationCodeQualifier>FI</N103__IdentificationCodeQualifier>  

   <N104__PayeeIdentificationCode>9999999</N104__PayeeIdentificationCode>  

 </N1_PayeeIdentification_TS835W1_1000B>  

上一篇: html 音頻