Cómo funciona el ensamblador EDI
BizTalk Server realiza la mayoría del procesamiento de los intercambios codificados con EDI que se enviarán en la canalización de envío EDI (Microsoft.BizTalk.DefaultPipelines.EDISendPipeline
). La canalización incluye el componente de canalización del ensamblador EDI que realiza el siguiente procesamiento:
Serializa el intercambio EDI, convirtiendo los mensajes codificados en XML en conjuntos de transacciones EDI en el intercambio.
Realiza la validación de esquemas EDI, validación de campos cruzados para mensajes con codificación X12 (si está configurado), validación estructural de EDI y validación de esquemas extendida (si el esquema se ha personalizado con un nodo que no sea de tipo EDI).
Aplica un sobre al mensaje EDI.
Procesa las confirmaciones técnicas y funcionales recibidas en respuesta a los mensajes EDI, anulando el procesamiento por lotes de las confirmaciones si está configurado para ello.
Aplicar un sobre a un mensaje EDI saliente
Cuando la canalización de envío EDI genera un mensaje EDI saliente a partir de un archivo XML intermedio, aplica un sobre que contiene encabezados de grupo y de intercambio para el mensaje según las propiedades de EDI establecidas para el acuerdo en el lado de recepción. Si la canalización de envío no ha podido determinar el acuerdo de recepción desde el puerto de envío, usará las propiedades de reserva para aplicar el sobre.
Si la EdiOverride.OverrideEdiHeader
propiedad de contexto se establece en true, la canalización de envío EDI usará los valores especificados en la colección de propiedades EdiOverride para construir el sobre. Si no hay ningún valor en la recopilación, se usará el valor de EDI correspondiente en las propiedades del acuerdo. Si no existe un valor en la recopilación EdiOverride o las propiedades del acuerdo, se usarán las propiedades del acuerdo EDI de reserva.
Si el archivo XML intermedio incluye una etiqueta reservada o la propiedad de contexto ReuseEnvelope, el mensaje es un lote conservado y la lógica de aplicación del sobre no se aplicará.
Orígenes para valores de sobre X12
En la tabla siguiente se muestra de dónde toma la canalización de envío EDI la información que necesita para cada parte de un sobre X12:
Encabezado | Source |
---|---|
Encabezado de control de intercambio (ISA) | - Propiedades de contexto EdiOverride (si EdiOverride.OverrideEdiHeader es true).- Si se define un contrato, las definiciones de segmento ISA de páginas diferentes en la sección Configuración de intercambio de las propiedades del contrato unidireccionales del cuadro de diálogo Propiedades del contrato . - Si no se define ningún contrato, las definiciones de segmento ISA de páginas diferentes en la sección Configuración de intercambio del cuadro de diálogo Configuración de reserva ediFACT . |
Encabezados de grupo funcional (GS) | - Propiedades de contexto EdiOverride (si EdiOverride.OverrideEdiHeader es true)- Si se define un contrato, las definiciones de segmento de GS de la página Sobres (en la sección Configuración del conjunto de transacciones) en las propiedades del contrato unidireccionales del cuadro de diálogo Propiedades del contrato - Si no se define ningún contrato, las definiciones de segmento de GS de la página Sobres (en la sección Configuración del conjunto de transacciones) en el cuadro de diálogo Configuración de reserva X12 Si hay un acuerdo definido, los valores para los elementos de datos GS se determinan según la combinación del identificador del conjunto de transacciones (ST1), la versión y el espacio de nombres de destino. Estos valores se comparan con la cuadrícula de la página Sobres (en la sección Configuración del conjunto de transacciones ) de las propiedades del contrato (si se define un contrato) o las propiedades del contrato de reserva (si no se define ningún contrato): - Si hay una fila coincidente, los valores contenidos en la fila coincidente se usan para el encabezado GS. - Si no hay ninguna coincidencia, pero se define una fila predeterminada, todos los elementos de datos de GS excepto GS01 se rellenan de la fila predeterminada. GS01 se determina dinámicamente basándose en el valor de ST1. - Si no hay ninguna fila coincidente y no hay ninguna fila predeterminada, el mensaje se suspende. Nota: Para que un grupo sea único de otros grupos, no todos estos valores pueden ser los mismos que los de otro grupo. Si no hay ningún acuerdo definido, los elementos de datos GS se rellenan a partir de las propiedades de acuerdo de reserva. |
Orígenes para valores de sobre EDIFACT
En la tabla siguiente se muestra de dónde toma la canalización de envío EDI la información que necesita para cada parte de un sobre EDIFACT:
Encabezado | Source |
---|---|
Notificación del servicio (UNA) | - Propiedades de contexto EdiOverride (si EdiOverride.OverrideEdiHeader es true).- Si se define un contrato, las definiciones de segmento UNA de la página Charset y Separators en las propiedades de acuerdo unidireccionales del cuadro de diálogo Propiedades del contrato . - Si no se define ningún contrato, las definiciones de segmento UNA de la página Charset y Separators del cuadro de diálogo Configuración de reserva EDIFACT . |
Encabezado de control de intercambio (UNB) | - Propiedades de contexto EdiOverride (si EdiOverride.OverrideEdiHeader es true).- Si se define un contrato, las definiciones de segmento UNB de distintas páginas de la sección Configuración de intercambio de las propiedades del contrato unidireccionales del cuadro de diálogo Propiedades del contrato . - Si no se define ningún contrato, las definiciones de segmento UNB de páginas diferentes en la sección Configuración de intercambio del cuadro de diálogo Configuración de reserva ediFACT . |
Encabezados de grupo funcional (UNG) | - Propiedades de contexto EdiOverride (si EdiOverride.OverrideEdiHeader es true).- Si se define un contrato, las definiciones de segmento UNG y UNH de la página Sobres (en la sección Configuración del conjunto de transacciones) en las propiedades del contrato unidireccionales del cuadro de diálogo Propiedades del contrato - Si no se define ningún contrato, las definiciones de segmento UNG y UNH de la página Sobres (en la sección Configuración del conjunto de transacciones) en las propiedades del contrato unidireccionales del cuadro de diálogo Propiedades del contrato en el cuadro de diálogo Configuración de reserva ediFACT Si hay un acuerdo definido, los valores de los elementos de datos UNG se determinan según la combinación del tipo de mensaje (UNH2.1), el número de versión del mensaje (UNH2.3), el código asignado (UNH2.5), la versión y el espacio de nombres de destino. Nota: Para que un grupo sea único de otros grupos, no todos estos valores pueden ser los mismos que los de otro grupo. |
Aplicar segmentos de encabezado y finalizador de conjuntos de transacciones
Un conjunto de transacciones XML que se va a serializar en un intercambio EDI saliente debe tener un encabezado y finalizador del conjunto de transacciones. No obstante, el ensamblador EDI procesará el mensaje si no tiene un encabezado o finalizador del conjunto de transacciones. Los segmentos de encabezado y finalizador del conjunto de transacciones en esquemas X12 y EDIFACT son opcionales para los conjuntos de transacciones XML. Si una transacción no tiene un encabezado ni un finalizador, el ensamblador EDI en la canalización de envío EDISend o AS2EDISend agregará los valores de encabezado y finalizador del conjunto de transacciones a ella. Estos valores se basarán en las asignaciones o los cálculos. El ensamblador EDI lo hará para el intercambio XML (un lote conservado), conjunto de transacciones procesado por lotes XML y un conjunto de transacciones XML.
Si la asignación origina un error de validación, el conjunto de transacciones XML o el XML de intercambio se suspende con el error correspondiente en el visor de eventos como, por ejemplo, que la longitud o el tipo de datos no es válido, o un código de agencia de control no válido.
Segmentos de encabezado y finalizador de conjuntos de transacciones X12
En el caso de conjuntos de transacciones con codificación X12 que no tengan segmentos de encabezado y finalizador, el ensamblador EDI establecerá los segmentos ST y SE del siguiente modo:
Segmento de encabezado y pie de página | Value |
---|---|
Código identificador del conjunto de transacciones (ST01) | Asignado a los tres últimos caracteres del nombre rootNode del conjunto de transacciones XML entrantes. Por ejemplo, "855" de "X12_00401_855". En el caso de reclamaciones HIPAA cuyo código de identificador TS sea 837P, 837D o 837I, se usa "837". |
ST02 (número de control del conjunto de transacciones) | Valor de (si EdiOveride.OverrideEdiHeader es true) o asignado al valor del número de control del conjunto de transacciones (ST02) en la página Configuración deEdiOverride.ST02 host local (en Configuración de intercambio) de la pestaña acuerdo unidireccional en el cuadro de diálogo Propiedades del contrato.Se aplica un número de control nuevo o incrementado independientemente del valor de la propiedad Aplicar nuevo identificador . |
ST03 (identificador de versión) | Asignado al valor de ST03 desde el conjunto de transacciones XML entrante. Por ejemplo, “005010X218” para un documento 820 de 5010 HIPAA (deducción de nómina). ST03 se valida con el esquema que se usa para validar el conjunto de transacciones. Nota: ST03 es obligatorio para todas las transacciones hipaa versión 5010 excepto para 835. |
Número de segmentos incluidos (SE01) | Establecido como el número total de segmentos del conjunto de transacciones, incluidos los segmentos ST y SE. |
Número de control de conjunto de transacciones (SE02) | Asignado al valor de ST02 del conjunto de transacciones. |
Los demás elementos de datos del encabezado del conjunto de transacciones, como ST03, son opcionales y, por lo tanto, no tienen ningún valor asignado en los segmentos generados.
Segmentos de encabezado y finalizador de conjuntos de transacciones EDIFACT
En el caso de conjuntos de transacciones con codificación EDIFACT que no tengan segmentos de encabezado y finalizador, el ensamblador EDI establecerá los segmentos UNH y UNT del siguiente modo:
Segmento de encabezado y pie de página | Value |
---|---|
Número de control de referencia de mensaje (UNH01) | Valor de (si EdiOverride.OverrideEdiHeader es true) o asignado al valor de Número de referencia (UNH1) en la página Configuración de EdiOverride.UNH1 host local (en Configuración de intercambio) de la pestaña acuerdo unidireccional en el cuadro de diálogo Propiedades del contrato. Se aplica un número de control nuevo o incrementado independientemente del valor de la propiedad Aplicar nuevo identificador . |
Tipo de mensaje (UNH2.1) | Asignado a los seis últimos caracteres del nombre RootNode del conjunto de transacciones XML entrante. Por ejemplo, "INVOIC" de "EFACT_D96A_INVOIC". |
Número de versión del mensaje (UNH2.2) | Asignado al séptimo carácter del nombre RootNode del conjunto de transacciones XML entrante. Por ejemplo, "D" de "EFACT_D96A_INVOIC". |
Número de versión del mensaje (UNH2.3) | Asignado a los caracteres octavo, noveno y décimo del nombre RootNode del conjunto de transacciones XML entrante. Por ejemplo, "96A" de "EFACT_D96A_INVOIC". |
Codificación de agencia de control (UNH2.4) | Siempre asignado a la cadena ‘UN’. |
Número de segmentos incluidos (UNT01) | Establecido como el número total de segmentos del conjunto de transacciones, incluidos los segmentos UNH y UNT. |
Número de control de referencia de mensaje (UNT02) | Asignado al valor de Número de referencia (UNH1) en la página Configuración de host local (en Configuración de intercambio) de la pestaña Contrato unidireccional en el cuadro de diálogo Propiedades del contrato |
Los demás elementos de datos del encabezado del conjunto de transacciones UNH, como UNH3 a UNH6, son opcionales y, por lo tanto, no tienen ningún valor asignado en los segmentos generados. Si alguno de estos campos es necesario, debe establecerlos con un valor en el conjunto de transacciones XML entrante.
Procesamiento adicional en el sobre de un mensaje saliente
La canalización de envío EDI lleva a cabo el siguiente procesamiento en el sobre de un mensaje saliente.
Control Numbers (Números de control)
La canalización de envío EDI especificará un número de control de intercambio, un número de control de grupo y un número de control (o referencia) del conjunto de transacciones en los segmentos del sobre de cada intercambio saliente. Estos números se muestran en la siguiente tabla:
Número de control | Campo X12 | Campo EDIFACT |
---|---|---|
Número de control de intercambio. | ISA13 | UNB5 |
Número de control de grupo | GS6 | UNG5 |
Número de control de conjunto de transacciones (X12) Número de referencia de conjunto de transacciones (EDIFACT) |
ST2 | UNH1 |
BizTalk Server establecerá el número de control de intercambio para el siguiente intercambio enviado en función del intervalo de valores especificados en la propiedad Número de control de intercambio (ISA13) en la página Configuración de host local (en Configuración de intercambio) de la pestaña Acuerdo unidireccional en el cuadro de diálogo Propiedades del contrato. Incrementará este número para cada intercambio subsiguiente, hasta que se alcance el valor máximo.
Si el número de control de intercambio se especifica mediante las propiedades de contexto EdiOverride, se usará el valor especificado para este intercambio y no afectará el número de control de intercambio especificado en el acuerdo.
Nota
El número de control de grupo en EDIFACT solo se incrementa si se selecciona la propiedad Aplicar segmentos UNG en la página Sobres de las propiedades del contrato EDIFACT. El valor del segundo campo (número de referencia) se incrementa; los campos de prefijo y sufijo no sufren ningún incremento. Los números de control del conjunto de transacciones solo se incrementan si se selecciona la propiedad Aplicar nuevo identificador .
Nota
En un intercambio por lotes conservado, se puede crear un número de control de intercambio personalizado mediante el ejemplo de enriquecimiento de mensajes. Para obtener más información, vea Ejemplo de enriquecimiento de mensajes (BizTalk Server ejemplo).
Si no se define ningún acuerdo, los números se toman de las mismas páginas del acuerdo de reserva. La canalización de envío almacena el último número de control usado y seguidamente especifica un número incrementado para el intercambio, grupo y conjunto de transacciones siguiente.
Nota
Si algún número de control alcanza el valor máximo del intervalo especificado, BizTalk Server producirá un error y suspenderá el intercambio. Puede restablecer manualmente el número de control o configurar BizTalk Server para restablecer automáticamente el límite inferior, en la página Configuración del host local del cuadro de diálogo Propiedades del contrato para los mensajes X12 y EDIFACT.
Nota
Los números de control se guardan en la tabla dbo.EdiSequenceNumbers de la Base de datos de cuadro de mensajes de BizTalk. Debe administrar esta tabla de base de datos mediante la purga de los números de control de la tabla o el archivado de éstos, según corresponda.
En EDIFACT, los números de control consisten en valores alfanuméricos. Se admiten los siguientes formatos:
Números (por ejemplo, "1")
PrefixNumbersSuffix (por ejemplo, "WA1A")
PrefixNumbers (por ejemplo, "AA1")
NumbersSuffix (por ejemplo, "1AA")
En estos formatos, los caracteres numéricos pueden ir del "0" al "9", mientras que los caracteres de prefijo y sufijo pueden ser cualquier carácter distinto del número. Únicamente se incrementará el número hasta alcanzar el valor máximo.
Recuento de segmentos
Para cada conjunto de transacciones de un intercambio, la canalización de envío EDI verificará el número de segmentos del conjunto de transacciones, como se indica en el elemento de datos SE01 para X12 y el elemento de datos UNT01 para EDIFACT. Si el valor del elemento de datos correspondiente no coincide con el número real, la canalización de envío actualizará el número para que refleje el número de segmentos real. Un número incorrecto no provocará el rechazo del conjunto de transacciones. La actualización del número se registrará en una advertencia en el visor de eventos. Esto no se aplica al procesamiento de los lotes conservados.
Pasos adicionales en la serialización de un intercambio EDI
La canalización de envío EDI también lleva a cabo los pasos siguientes durante la serialización.
Serializar el indicador de versión
Durante la serialización de un mensaje EDIFACT, la canalización de envío EDI insertará cualquier indicador de versión necesario en el intercambio EDI. Se presupone que el XML intermedio enrutado a la canalización de envío no incluye datos con caracteres de escape. Por ejemplo, si los datos XML enrutados a la canalización de envío contienen un indicador de versión, la canalización agregará otro indicador delante del indicador existente para insertar un carácter de escape.
El indicador de versión no se incluirá en la validación EDI. La canalización de envío EDI no incluirá el indicador de versión cuando calcule las restricciones de longitud.
Agregar ceros iniciales para cumplir los requisitos de cifras decimales implícitos
Si el ensamblador EDI detecta un número que tiene una cantidad de dígitos insuficiente después del separador de decimales, agregará ceros finales después del separador para cumplir los requisitos decimales implícitos. Por ejemplo, si el ensamblador EDI detecta la cifra "4.5" cuando el número debe tener el formato N2, el ensamblador cambiará la cifra a "4.50".
Sustitución de separadores en datos de carga
Si los datos del mensaje saliente contienen caracteres que también están configurados como separadores de datos, segmentos o componentes, la canalización de envío EDI puede sustituir esos caracteres. Por ejemplo, si el mensaje contiene el valor “test*data” y el separador de elementos de datos se configura como ‘*’, pueden producirse problemas de análisis en el sistema receptor.
La canalización de envío EDI se puede configurar para reemplazar este carácter habilitando los separadores Replace en la carga con la propiedad y especificando un carácter de reemplazo. Esta propiedad se encuentra en la página Charset y Separators de la pestaña contrato unidireccional del cuadro de diálogo Propiedades del contrato .
Transformación de registros HIPAA basados en campos desencadenadores
Si el documento saliente es un conjunto de transacciones HIPAA, el ensamblador EDI transformará cualquier registro XML único que contenga un campo de desencadenador en el segmento EDI genérico coincidente (consulte Anotaciones de campo de desencadenador de esquema HIPAA). Esto se consigue eliminando el sufijo del nombre de registro XML después del carácter “_”.
Por ejemplo, los elementos <N1_PayerIdentification_TS835W1_1000A> y <N1_PayeeIdentification_TS835W1_1000B> se convertirán en segmentos N1.