Funzionamento del disassembler EDI
BizTalk Server esegue la maggior parte dell'elaborazione per gli interscambi con codifica EDI ricevuti nella pipeline di ricezione EDI (Microsoft.BizTalk.DefaultPipelines.EDIReceivePipeline
). Questa pipeline include il componente della pipeline disassembler EDI, che esegue le operazioni di elaborazione seguenti:
Suddivide più interscambi presenti in un unico messaggio in interscambi distinti, se la proprietà "DetectMID" della pipeline per l'indirizzo di ricezione è impostata su True. Il disassembler EDI esegue questa operazione cercando un'intestazione di controllo dell'interscambio (ISA, UNA o UNB), anche dopo avere incontrato un trailer di controllo dell'interscambio (IEA o UNZ).
Convalida la busta.
Disassembla l'interscambio.
Elabora i campi trigger per gli interscambi HIPAA.
Convalida le proprietà EDI e specifiche del partner, se applicabile. Sono incluse la convalida dello schema EDI, la convalida campi incrociata per i messaggi con codifica X12 (se configurata), la convalida strutturale EDI e la convalida estesa dello schema, se lo schema è stato personalizzato con un nodo con un tipo di dati non EDI. Per altre informazioni, vedere Convalida dei messaggi EDI ricevuti.
Verifica che i numeri di controllo interscambio, gruppo e set di transazioni non siano duplicati, se i controlli sono abilitati nella pagina Convalida (in Impostazioni interscambio) della scheda Contratto bidirezionale della finestra di dialogo Proprietà contratto . Confronta il numero di controllo dell'interscambio con quello degli interscambi ricevuti in precedenza. Controlla il numero di controllo del gruppo con gli altri numeri di controllo del gruppo dell'interscambio. Controlla il numero di controllo del set di transazioni con gli altri numeri di controllo del set transazioni in tale gruppo. Se viene rilevato un duplicato, il rapporto di stato indicherà che esiste un record duplicato.
Genera un documento XML per ogni set di transazioni. In ogni file XML alza di livello la proprietà di contesto di BTS.MessageType, impostandola sul nome dello schema con lo spazio dei nomi.
Converte l'intero interscambio in XML se la proprietà dell'opzione elaborazione batch in ingresso è impostata su uno dei due valori preserve interscambio . Questa proprietà può essere impostata dalla pagina Impostazioni host locale in Impostazioni interscambio della scheda Contratto bidirezionale della finestra di dialogo Proprietà contratto . La pipeline di ricezione alza di livello la proprietà ReuseEnvelope per identificare l'interscambio come mantenuto.
Genera un riconoscimento tecnico e/o funzionale (se configurata). Può essere inclusa la creazione di batch dei riconoscimenti, se configurata. Promuove la proprietà di contesto di BTS. MessageType, impostandolo sullo schema del
http://schemas.microsoft.com/EDI/{X12 or EDIFACT}
controllo nello spazio dei nomi (ad esempio, X12_997_Root per un riconoscimento 997). Alza inoltre di livello la proprietà di contesto EDI.DestinationPartyName, che garantisce che il riconoscimento verrà prelevato per essere inviato. Per altre informazioni, vedere Invio di un riconoscimento EDI.Esegue la suddivisione di documenti HIPAA 276/277 (solo versione 5010) 834, 835 (solo versione 4010) e 837, se applicabile.
Alza di livello o scrive le proprietà nel contesto del messaggio (vedere la sezione successiva).
Innalzamento di livello o scrittura di proprietà nel contesto
Quando il disassembler EDI elabora un messaggio ricevuto, alza di livello o scrive le proprietà seguenti nel contesto del messaggio:
Per un messaggio senza codifica X12, promuove le proprietà seguenti dalla busta: ISA06, ISA08, ISA15; GS01, GS02, GS03, GS08; ST03 e ST01.
Nota
Per un interscambio HIPAA 837 in ingresso, BizTalk Server supporta tre schemi HIPAA 837: Claim-Dental_837D, Claim-Institutional_837I e Claim-Professional_837P. St01 per ognuno di questi è "837". Questi tre schemi hanno valori diversi per GS08 nella versione 5010: "005010X223A1" per 837I, "005010X224A1" per 837D e "005010X222" per 837P. Gli schemi hanno valori diversi per GS08 nella versione 4010: "004010X096A1" per 837I, "004010X097A1" per 837D e "004010X098A1" per 837P.
Per un messaggio senza codifica EDIFACT, promuove le proprietà seguenti dalla busta: UNB2.1, UNB2.3, UNB3.1, UNB11; UNG1, UNG2.1, UNG3.1; UNH2.1, UNH2.2, UNH2.3.
Se un interscambio in modalità batch viene suddiviso, scrive ISA_Segment e GS_Segment nel contesto dei messaggi con codifica X12 o scrive UNA_Segment, UNB_Segment e UNG_Segment nel contesto dei messaggi con codifica EDIFACT.
Nota
I segmenti sopra riportati vengono scritti nel contesto. Non vengono alzati di livello nel contesto. È tuttavia possibile aggiungere questi segmenti a un set di transazioni utilizzando l'esempio Message Enrichment. È inoltre possibile aggiungere il codice disponibile negli esempi a un componente personalizzato della pipeline. Per altre informazioni, vedere Esempio di arricchimento dei messaggi (esempio BizTalk Server).
Nota
La proprietà ISA_Segment alzata di livello contiene informazioni di sicurezza/autorizzazione (ISA02, informazioni di autorizzazione e ISA04, informazioni di sicurezza) che possono causare la divulgazione di informazioni. È possibile utilizzare la proprietà Mask security/authorization/password information nella proprietà context (nella pagina Impostazioni host locali per le proprietà del contratto bidirezionale) per sostituire il carattere nei campi ISA02 e ISA04 con un carattere '#'. Si tratta di un processo unidirezionale: i caratteri '#' non possono essere convertiti in caratteri effettivi.
Per i messaggi con codifica X12 ed EDIFACT, alza di livello ReuseEnvelope, che indica se un interscambio in modalità batch viene suddiviso o mantenuto.
Se un interscambio in modalità batch viene mantenuto, alza di livello le proprietà seguenti:
InboundTransportatLocation
InboundTransportType
ISA05
ISA07
ISA06
ISA08
ISA15
LastInterchangeMessage = {True|False}
MessageType
ReceivePortID
ReceivePortName
ReuseEnvelope
Analisi della busta
La pipeline di ricezione EDI utilizza lo schema di controllo dell'intestazione per analizzare la busta di un messaggio EDI ricevuto e lo schema documento EDI per analizzare i set di transazioni o i messaggi dell'interscambio.
Se un messaggio con codifica EDIINT/AS2 è stato ricevuto tramite il trasporto HTTP/HTTPS, il disassembler EDI esamina la proprietà di contesto BTS. MessageDestination. Se tale proprietà è impostata su SuspendQueue, a indicare che si è verificato un errore nell'elaborazione AS2 e che il messaggio deve essere sospeso, il disassembler EDI fungerà da componente della pipeline pass-through e sospende il messaggio in MessageBox.
Durante l'analisi degli interscambi EDIFACT, la pipeline di ricezione EDI rimuove l'indicatore di rilascio utilizzato per i caratteri di escape. L'indicatore di rilascio non è incluso nella convalida EDI. La pipeline di ricezione EDI non include l'indicatore di rilascio quando calcola le limitazioni di lunghezza.
Set di caratteri
Per gli interscambi X12, le proprietà del componente della pipeline determinano il set di caratteri che verranno utilizzati dal disassembler EDI durante l'elaborazione dell'interscambio. Può essere Di base, Esteso o UTF8/Unicode. Il valore predefinito è UTF8 per gli interscambi EDIFACT. Il campo UNB1.1 determina il set di caratteri.
Individuazione dinamica del separatore
Quando BizTalk Server riceve un interscambio EDI, nessuna proprietà di accordo indica quali devono essere i separatori nell'interscambio. È compito del disassembler EDI rilevare i delimitatori (sia per X12 che per EDIFACT) in fase di esecuzione.
Per i messaggi X12, il disassembler EDI utilizza i caratteri seguenti dall'interno dell'interscambio:
Separatore | Carattere |
---|---|
Data Element Separator | 4° carattere di ISA |
Separatore elementi componenti | ISA16 |
Separatore segmenti | 106° carattere di ISA |
Segment Terminator Suffix | Carattere tra segmento ISA e segmento GS Valori: Nessuna, CR, LF o CRLF Nota: il separatore può accettare solo i valori precedenti. |
Separatore ripetizioni o identificatore standard (a seconda della proprietà del contratto "UTILIZZO ISA11" nella pagina Buste della scheda contratto bidirezionale) |
ISA11 |
Per gli interscambi EDIFACT, il disassembler EDI verifica il segmento UNA che definisce i separatori dell'interscambio. Se l'interscambio non include un segmento UNA, che è facoltativo, il disassembler utilizzerà i valori predefiniti definiti nelle proprietà del componente della pipeline.
Separatore | Carattere di UNA |
---|---|
Separatore elementi componenti | 4° |
Data Element Separator | 5° |
Notazione decimale | 6° |
Carattere di rilascio | 7° |
Carattere ripetizioni | 8° |
Separatore segmenti | 9° |
Suffisso separatore segmenti | Carattere tra segmento UNA e segmento UNB Valori: Nessuna, CR, LF o CRLF Nota: il separatore può accettare solo i valori precedenti. |
La stringa UNA è facoltativa. Se è presente, definisce tutti i delimitatori per il file. Se non è presente, il disassembler EDI utilizzerà la proprietà EfactDelimiters del componente della pipeline per determinare i delimitatori. Per altre informazioni, vedere Configurazione delle proprietà della pipeline EDI.
Inserimento di errori
Se il disassembler EDI rileva un errore di elaborazione EDI, BizTalk Server pubblica i due errori seguenti nel Visualizzatore eventi (se tale registrazione è abilitata):
Errore registrato dal BizTalk Server di origine durante la sospensione del messaggio. Si tratta di un errore obbligatorio relativo all'elaborazione BizTalk Server.
Errore che segnala problemi nel set di transazioni, come registrato dall'BizTalk Server EDI di origine. Questo errore è specifico di EDI.
Utilizzo delle proprietà dell'accordo
Il disassembler EDI userà le proprietà del contratto se è in grado di identificare il contratto (vedere Risoluzione degli accordi, individuazione dello schema e autorizzazione per i messaggi EDI ricevuti). Se non è possibile trovare un contratto corrispondente e i valori corrispondenti non sono disponibili anche nel contratto di fallback, verranno usate le proprietà del disassembler EDI impostate nella finestra Proprietà di Visual Studio. Tuttavia, questo fallback non si verificherà se l'autenticazione è necessaria nelle proprietà della porta di ricezione (se l'eliminazione dei messaggi ha esito negativo o Mantieni messaggi se l'autenticazione non riesce è selezionata). In questo caso, è necessario configurare un accordo. In caso contrario, l'interscambio verrà sospeso.
Quando il disassembler EDI utilizza le proprietà dell'accordo, richiede l'impostazione delle proprietà seguenti dell'accordo:
Proprietà | Pagina Proprietà accordo |
---|---|
Separatore ripetizioni | Pagina Buste (in Impostazioni interscambio) nella scheda Contratto bidirezionale |
Esegui convalida del tipo di dati EDI | Pagina Convalida in Impostazioni set di transazioni nella scheda Contratto bidirezionale (per i contratti X12 ed EDIFACT) |
Convalida estesa | Pagina Convalida in Impostazioni set di transazioni nella scheda Contratto bidirezionale (per i contratti X12 ed EDIFACT) |
Consenti zeri e spazi iniziali e finali | Pagina Convalida in Impostazioni set di transazioni nella scheda Contratto bidirezionale (per i contratti X12 ed EDIFACT) |
Crea tag XML vuoti se sono consentiti separatori finali | Pagina Impostazioni host locale in Impostazioni set di transazioni nella scheda Contratto bidirezionale (per i contratti X12 ed EDIFACT) |
Opzione di elaborazione batch in ingresso | Pagina Impostazioni host locale (in Impostazioni interscambio) nella scheda Contratto bidirezionale (per i contratti X12 ed EDIFACT) |
Separatori EDIFACT predefiniti | - |
Filtra informazioni password/autorizzazione/protezione | Pagina Impostazioni host locale (in Impostazioni interscambio) nella scheda Contratto bidirezionale (per i contratti X12 ed EDIFACT) |
Converti formato decimale implicito Nn in valore numerico in base 10 | Pagina Impostazioni host locale in Impostazioni set di transazioni nella scheda Contratto bidirezionale (per i contratti X12) |
Esegui il routing di ACK alla pipeline di trasmissione sulla porta di ricezione richiesta-risposta | Pagina Impostazioni host locale (sezione Impostazioni ricevitore ) in Impostazioni interscambio nella scheda Contratto bidirezionale (per i contratti X12 ed EDIFACT) |
Set di caratteri X12 | Nota di generazione busta interscambio X12 : questa impostazione viene usata solo per convalidare i valori immessi per le proprietà del contratto. Il set di caratteri 12X utilizzato per l'elaborazione in fase di esecuzione viene selezionato nelle proprietà della pipeline. Per altre informazioni, vedere Set di caratteri EDI. |
Utilizzo di campi trigger HIPAA
I segmenti EDI contengono spesso valori di qualificatore che ne modificano il significato. Ad esempio, un segmento N1 può contenere un elemento di qualificazione "BT" che significa "bill-to", ovvero il nome da utilizzare per la fatturazione, oppure un elemento "ST" per indicare "ship-to", ovvero il nome da utilizzare per la spedizione. In genere viene lasciata la logica di business per determinare come interpretare questi campi e il disassembler risolve tutte le istanze del segmento N1 nello stesso nome di record XML; Tuttavia, gli schemi HIPAA forniti con BizTalk Server contengono annotazioni che consentono al disassembler EDI di creare record XML univoci in base alla presenza di un valore idoneo (vedere Annotazioni campo trigger dello schema HIPAA).
Se, quando riceve un set di transazioni HIPAA, il disassembler EDI rileva un segmento contenente un campo trigger, utilizza le informazioni di tale campo per generare un record XML specifico per la combinazione di segmento e trigger.
Nella tabella riportata di seguito viene illustrato come un segmento N1 viene convertito in un record XML in base al valore di N101:
Segmento N1 | Dati XML risultanti |
---|---|
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> |