Partager via


Fonctionnement du Désassembleur EDI

BizTalk Server effectue la plupart du traitement des échanges encodés edi reçus dans le pipeline de réception EDI (Microsoft.BizTalk.DefaultPipelines.EDIReceivePipeline). Ce pipeline inclut le composant de pipeline Désassembleur EDI, qui effectue le traitement suivant :

  • Fractionne plusieurs échanges d'un seul message en échanges distincts (si la propriété de pipeline « DetectMID » pour l'emplacement de réception est définie sur True). Pour ce faire, le Désassembleur EDI recherche un en-tête de contrôle de l'échange (ISA, UNA ou UNB) même après avoir rencontré un code de fin de contrôle de l'échange (IEA ou UNZ).

  • Valide l'enveloppe.

  • Désassemble l’échange.

  • Traite les champs déclencheurs pour les échanges HIPAA.

  • Valide les propriétés EDI et spécifiques au partenaire, selon le cas. Il effectue notamment une validation du schéma EDI, une validation de champ croisé pour les messages X12 (si configurée), une validation structurelle EDI et une validation étendue de schéma (si le schéma est personnalisé avec un nœud qui a un type de données non EDI). Pour plus d’informations, consultez Validation des messages EDI reçus.

  • Vérifie que les numéros de contrôle de l’échange, du groupe et du jeu de transactions ne sont pas des doublons, si les vérifications sont activées dans la page Validation (sous Paramètres d’échange) de l’onglet Contrat bidirectionnel de la boîte de dialogue Propriétés de l’accord. Vérifie le numéro de contrôle de l'échange par rapport aux échanges reçus précédemment. Vérifie le numéro de contrôle du groupe par rapport aux autres numéros de contrôle de groupe dans l’échange. Vérifie le numéro de contrôle du document informatisé par rapport aux autres numéros de contrôle de document informatisé dans ce groupe. Si un doublon est découvert, le rapport d'état indique qu'il existe un enregistrement en double.

  • Génère un document XML pour chaque document informatisé. Sur chaque fichier XML, promeut la propriété de contexte de BTS.MessageType, en la définissant sur le nom de schéma avec l'espace de noms.

  • Convertit l’intégralité de l’échange en XML si la propriété d’option de traitement par lot entrant est définie sur l’une des deux valeurs Preserve Interchange . Cette propriété peut être définie à partir de la page Paramètres de l’hôte local sous Paramètres d’échange de l’onglet Contrat bidirectionnel de la boîte de dialogue Propriétés de l’accord. Le pipeline de réception promeut la propriété ReuseEnvelope pour identifier l'échange comme conservé.

  • Génère un accusé de réception fonctionnel et/ou technique (si configuré). Cela peut inclure le traitement par lot des accusés de réception (si configuré). Promeut la propriété de contexte de BTS. MessageType, en le définissant comme le schéma de contrôle dans l’espace http://schemas.microsoft.com/EDI/{X12 or EDIFACT} de noms (par exemple, X12_997_Root pour un accusé de réception 997). Promeut également la propriété de contexte EDI.DestinationPartyName, ce qui garantit que l'accusé de réception est récupéré pour l'envoi. Pour plus d’informations, consultez Envoi d’un accusé de réception EDI.

  • Fractionne des documents HIPAA 276/277 (version 5010 uniquement) 834, 835 (version 4010 uniquement) et 837, le cas échéant.

  • Promeut ou écrit des propriétés dans le contexte de message (consultez la section suivante).

Promotion ou écriture de propriétés dans le contexte

Lorsque le Désassembleur EDI traite un message reçu, il promeut ou écrit les propriétés suivantes dans le contexte de message :

  • Pour un message non codé en X12, promeut les propriétés suivantes à partir de l’enveloppe : ISA06, ISA08, ISA15 ; GS01, GS02, GS03, GS08 ; ST03 et ST01.

    Notes

    Pour un échange HIPAA 837 entrant, BizTalk Server prend en charge trois schémas HIPAA 837 : Claim-Dental_837D, Claim-Institutional_837I et Claim-Professional_837P. Le ST01 pour chacun d’entre eux est « 837 ». Ces trois schémas ont des valeurs différentes pour GS08 dans la version 5010 : « 005010X223A1 » pour 837I, « 005010X224A1 » pour 837D et « 005010X222 » pour 837P. Les schémas ont des valeurs différentes pour GS08 dans la version 4010 : « 004010X096A1 » pour 837I, « 004010X097A1 » pour 837D et « 004010X098A1 » pour 837P.

  • Pour un message non codé en EDIFACT, promeut les propriétés suivantes à partir de l’enveloppe : UNB2.1, UNB2.3, UNB3.1, UNB11 ; UNG1, UNG2.1, UNG3.1 ; UNH2.1, UNH2.2, UNH2.3.

  • Si un échange par lot est fractionné, écrit ISA_Segment et GS_Segment dans le contexte pour les messages X12 ou écrit UNA_Segment, UNB_Segment et UNG_Segment dans le contexte pour les messages EDIFACT.

    Notes

    Les segments ci-avant sont écrits dans le contexte. Ils n'y sont pas promus. Vous pouvez, toutefois, ajouter ces segments à un document informatisé à l'aide de l'exemple d'enrichissement de message. Vous pouvez également prendre le code qui ajoute les exemples et l'ajouter à un composant de pipeline personnalisé. Pour plus d’informations, consultez Exemple d’enrichissement de message (exemple BizTalk Server).

    Notes

    La propriété ISA_Segment promue contient des informations de sécurité ou d'autorisation (ISA02, informations d'autorisation, et ISA04, informations de sécurité) qui peuvent entraîner une divulgation d'informations. Vous pouvez utiliser la propriété Mask security/authorization/password information in context (in Local Host Settings page for Interchange Settings for Bi-directional agreement properties) pour remplacer chaque caractère dans les champs ISA02 et ISA04 par un caractère « # ». Il s’agit d’un processus unidirectionnel : les caractères « # » ne peuvent pas être convertis en caractères réels.

  • Pour les messages X12 et EDIFACT, promeut ReuseEnvelope qui indique si un échange par lot est fractionné ou conservé.

  • Si un échange par lot est conservé, promeut les propriétés suivantes :

    • InboundTransportatLocation

    • InboundTransportType

    • ISA05

    • ISA07

    • ISA06

    • ISA08

    • ISA15

    • LastInterchangeMessage = {True|False}

    • MessageType

    • ReceivePortID

    • ReceivePortName

    • ReuseEnvelope

Analyse de l'enveloppe

Le pipeline de réception EDI utilise le schéma de contrôle d'en-tête pour analyser l'enveloppe d'un message EDI reçu et le schéma de document EDI pour analyser les documents informatisés / messages dans l'échange.

Si un message EDIINT/AS2 est reçu via le transport HTTP/HTTPS, le Désassembleur EDI inspecte la propriété de contexte BTS.MessageDestination. Si cette propriété est définie sur SuspendQueue, indiquant qu'une erreur s'est produite dans le traitement AS2 et que le message doit être interrompu, le Désassembleur EDI agit comme un composant de pipeline PassThrough et interrompt le message dans la MessageBox.

Lors de l'analyse des échanges EDIFACT, le pipeline de réception EDI supprime l'indicateur de version utilisé pour échapper des caractères. L’indicateur de mise en production n’est pas inclus dans la validation EDI. Le pipeline de réception EDI n'inclut pas l'indicateur de version lorsqu'il calcule des restrictions de longueur.

Jeu de caractères

Pour les échanges X12, les propriétés de composant de pipeline déterminent le jeu de caractères que le Désassembleur EDI utilise pour traiter l'échange. Il peut être Basic, Extended ou UTF8/Unicode. La valeur par défaut est UTF8. Pour les échanges EDIFACT, le champ UNB1.1 détermine le jeu de caractères.

Détection de séparateur dynamique

Lorsque BizTalk Server reçoit un échange EDI, aucune propriété d’accord n’indique les séparateurs dans l’échange. Au lieu de cela, le Désassembleur EDI détecte les délimiteurs (pour X12 ou EDIFACT) au moment de l'exécution.

Pour les messages X12, le Désassembleur EDI utilise les caractères suivants à partir de l'échange :

Séparateur Caractère
Séparateur d'éléments de données 4e caractère de l'ISA
Séparateur d'éléments de composant ISA16
Séparateur de segments 106e caractère de l'ISA
Suffixe du terminateur de segment Caractère situé entre le segment ISA et le segment GS

Valeurs: None, CR, LF ou CRLF Remarque : le séparateur peut prendre uniquement les valeurs ci-dessus.
Séparateur de répétition ou identificateur standard

(en fonction de la propriété de contrat « UTILISATION ISA11 » dans la page Enveloppes de l’onglet Contrat bidirectionnel)
ISA11

Pour les échanges EDIFACT, le Désassembleur EDI vérifie le segment UNA qui définit les séparateurs dans l'échange. Si l'échange n'a pas de segment UNA, qui est facultatif, le Désassembleur utilise les valeurs par défaut définies dans les propriétés de composant de pipeline.

Séparateur Caractère de l'UNA
Séparateur d'éléments de composant 4e
Séparateur d'éléments de données 5e
Notation décimale 6e
Caractère de mise en production 7e
Caractère de répétition 8e
Séparateur de segments 9e
Suffixe séparateur de segment Caractère situé entre le segment UNA et le segment UNB

Valeurs: None, CR, LF ou CRLF Remarque : le séparateur ne peut prendre que les valeurs ci-dessus.

La chaîne UNA est facultative. Si elle est présente, elle définit tous les délimiteurs pour le fichier. En son absence, le Désassembleur EDI utilise la propriété de composant de pipeline EfactDelimiters pour déterminer les délimiteurs. Pour plus d’informations, consultez Configuration des propriétés du pipeline EDI.

Publication d'erreurs

Si le désassembleur EDI rencontre une erreur de traitement EDI, BizTalk Server publie les deux erreurs suivantes dans le observateur d'événements (si cette publication est activée) :

  • Erreur enregistrée par la source BizTalk Server lors de la suspension du message. Il s’agit d’une erreur obligatoire liée au traitement BizTalk Server.

  • Un signalement d’erreurs dans le jeu de transactions, tel que consigné par la source BizTalk Server EDI. Cette erreur est spécifique à EDI.

Utilisation des propriétés de l'accord

Le désassembleur EDI utilise les propriétés du contrat s’il peut identifier le contrat (consultez Résolution du contrat, Découverte de schéma et autorisation pour les messages EDI reçus). Si un accord correspondant est introuvable et que les valeurs correspondantes ne sont pas également disponibles dans le contrat de secours, les propriétés du désassembleur EDI définies dans la fenêtre Propriétés de Visual Studio seront utilisées. Toutefois, ce secours ne se produit pas si l’authentification est requise dans les propriétés du port de réception (si l’option Supprimer les messages si l’authentification échoue ou Conserver les messages en cas d’échec de l’authentification est sélectionnée). Dans ce cas, un accord doit être configuré sinon l'échange est interrompu.

Lorsque le Désassembleur EDI utilise des propriétés de l'accord, il requiert la définition des propriétés de l'accord suivantes :

Propriété Page Propriétés de l'accord
Séparateur de répétition Page Enveloppes (sous Paramètres d’échange) dans l’onglet Contrat bidirectionnel
Effectuer une validation de type de données EDI Page de validation sous Paramètres de l’ensemble de transactions dans l’onglet Contrat bidirectionnel (pour les contrats X12 et EDIFACT)
Validation étendue Page de validation sous Paramètres de l’ensemble de transactions dans l’onglet Contrat bidirectionnel (pour les contrats X12 et EDIFACT)
Autoriser les zéros et les espaces de début et de fin Page de validation sous Paramètres de l’ensemble de transactions dans l’onglet Contrat bidirectionnel (pour les contrats X12 et EDIFACT)
Créer des balises XML vides si les séparateurs de fin sont autorisés Page Paramètres de l’hôte local sous Paramètres de l’ensemble de transactions dans l’onglet Contrat bidirectionnel (pour les contrats X12 et EDIFACT)
Options de traitement des lots entrants Page Paramètres de l’hôte local (sous Paramètres d’échange) dans l’onglet Contrat bidirectionnel (pour les contrats X12 et EDIFACT)
Séparateurs EDIFACT par défaut -
Masquer les informations de sécurité/d'autorisation/de mot de passe Page Paramètres de l’hôte local (sous Paramètres d’échange) dans l’onglet Contrat bidirectionnel (pour les contrats X12 et EDIFACT)
Convertir le format décimal implicite Nn en valeur numérique de base 10 Page Paramètres de l’hôte local sous Paramètres de l’ensemble de transactions dans l’onglet Contrat bidirectionnel (pour les contrats X12)
Router les ACK vers le pipeline d'envoi sur le port de réception demande-réponse Page Paramètres de l’hôte local (section Paramètres du récepteur ) sous Paramètres d’échange sous l’onglet Contrat bidirectionnel (pour les contrats X12 et EDIFACT)
Jeu de caractères X12 Remarque de génération d’enveloppe d’échange X12 : ce paramètre est utilisé uniquement pour valider les valeurs entrées pour les propriétés du contrat. Le jeu de caractères X12 utilisé pour le traitement au moment de l'exécution est sélectionné dans les propriétés de pipeline. Pour plus d’informations, consultez Jeux de caractères EDI.

Utilisation des champs déclencheurs HIPAA

Les segments EDI contiennent souvent des valeurs du qualificateur qui modifient la signification d'un segment. Par exemple, un segment N1 peut contenir un élément de qualification « BT » signifiant « Nom de facturation (bill-to) » ou « ST » pour « Nom de livraison (ship-to) ». Normalement, il appartient à la logique métier de déterminer comment interpréter ces champs et le désassembleur résout toutes les instances du segment N1 au même nom d’enregistrement XML ; toutefois, les schémas HIPAA fournis avec BizTalk Server contiennent des annotations qui permettent au désassembleur EDI de créer des enregistrements XML uniques en fonction de la présence d’une valeur éligible (voir Annotations de champ du déclencheur de schéma HIPAA).

Lors de la réception d'un document informatisé HIPAA, si le Désassembleur EDI rencontre un segment contenant un champ déclencheur, il utilise les informations du déclencheur pour générer un enregistrement XML spécifique à la combinaison segment/déclencheur.

Le tableau suivant montre comment un segment N1 est converti en un enregistrement XML en fonction de la valeur de N101 :

Segment N1 Données XML résultantes
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>

Voir aussi

Réception des messages EDI par BizTalk Server