PDA

Ver la Versión Completa : Necesito leer ficheros de tipo X12


Badillo
22-06-2023, 19:04:05
Saludos, Necesito ayuda para leer el contenido de los ficheros de tipo X12 837 para guardarlo en Sql server.

Nota: El 837 tiene que ver con la salud.

Adjunto:
Fichero fuente: source.x12
Fichero basicmssql.dbs que utilizan para generar la tabla en la BD
Fichero qadbt2a.cfg que imagino que sea para hacer parser

Si conocen alguna función o biblioteca que al menos permita parsearlo, les agradecería

Como siempre muchas gracias de antemano.

Casimiro Notevi
23-06-2023, 09:57:22
Parece un simple "csv" separados por asteriscos.
De todas formas se supone que debes tener por algún sitio la estructura de la cabecera y las líneas para saber a qué corresponde cada dato.

Badillo
23-06-2023, 17:10:55
Uno de los problemas es que no encuentro sitio que me explique o detalle como está conformada la estructura de este tipo de archivos, lo publiqué por si alguien del grupo había visto algo como esto antes.

Gracias

Casimiro Notevi
23-06-2023, 17:51:04
Se supone que si te han pedido que hagas algo con eso entonces te deberían facilitar la estructura y demás, porque no puedes adivinarlo.
¿No sabes si pertenece a algún intercambio de datos, o es una máquina, o son de otro programa, o a qué pertenece?

Badillo
26-06-2023, 16:30:39
Estoy en la busqueda de información sobre este tipo de fichero de intercambio, por el momento esto es lo que interpreto:

X12 es un estándar de formato de mensajes que se utiliza con documentos de intercambio electrónico de datos (EDI) para que los socios comerciales compartan documentos comerciales electrónicos en un formato estándar y acordado . Es el estándar EDI más común utilizado en los Estados Unidos.

Saludos

duilioisola
26-06-2023, 18:32:53
Parece un mensaje EDI y luego el mapeo de campos EDI a campos de una base de datos.

Ten en cuenta que EDI tiene muchos tipos de mensaje (pedido, albaran, factura, reportes, etc.)
Las primeras dos o tres letras identifican al tipo de registro y luego están los datos.
Dependiendo del registro los campos representan un dato u otro.

Mira el ejemplo de factura:
http://smartcustomblocks.com/edi-edifact/segmentos-estructura-intercambio-edifact.html

Esto se parece bastante a lo que envías como ejemplo:
https://x12.org/examples/005010x279/example-1a-generic-request-clinic-patients-subscriber-eligibility

Transmission Explanation
ST*270*1234*005010X279A1~
Transaction Set ID Code = 270 (Eligibility, Coverage or Benefit Inquiry)
Transaction Set Control Number = 1234
Implementation Convention Reference = 005010X279A1
BHT*0022*13*10001234*20060501*1319~
Hierarchical Structure Code = 0022 (Information Source, Information Receiver, Subscriber, Dependent)
Transaction Set Purpose Code = 13 (Request) Identification
Reference Identification = 10001234
Date = 20060501 (May 1, 2006)
Time = 1:19 PM
HL*1**20*1~
Hierarchical ID Number = 1
Hierarchical Parent ID Number = * not used
Hierarchical Level Code = 20 (Information Source)
Hierarchical Child Code = 1

duilioisola
26-06-2023, 18:47:07
Mira esto de la página 13 en adelante:
https://www.cgsmedicare.com/pdf/edi/837p_compguide.pdf

Después de ver que se trataba de EDI he buscado
"EDI 837 standards" en Google.



De aquí me enteré que cada aplicación tiene su tipo de mensaje.
https://www.seeburger.com/info/what-is-ansi-x12/
ANSI X12 Message Type

The following Figure 2 provides an overview of the main ANSI X12 messages.
Each Message type is identified by a 3 digits code number:
Figure 2: ANSI X12 Message TypesEDI 810 Invoice What is an ANSI X12 EDI 810 Message?
EDI 820 Payment order (EFT) What is an ANSI X12 EDI 820 Message?
EDI 830 Delivery forecast What is an ANSI X12 EDI 830 Message?
EDI 832 Price/sales catalogue What is an ANSI X12 EDI 832 Message?
EDI 846 Inventory Inquiry/Advice What is an ANSI X12 EDI 846 Message?
EDI 850 Purchase order What is an ANSI X12 EDI 850 Message?
EDI 855 Purchase order acknowledgement What is an ANSI X12 EDI 855 Message?
EDI 856 Ship Notice/manifest (ASN) What is an ANSI X12 EDI 856 Message?
EDI 860 Purchase order change What is an ANSI X12 EDI 860 Message?
EDI 862 Delivery Just-in-Time What is an ANSI X12 EDI 862 Message?
EDI 997 Functional Acknowledgement What is an ANSI X12 EDI 997 Message?

Badillo
27-06-2023, 15:32:42
La información está muy buena, con esto puedo preparar un parseo e incluso profundizar un poco más y el resultado lo comparto acá.

Muchísimas gracias.

Badillo
25-09-2023, 18:31:00
Saludos,

Les adjuntaré lo que ya logré con el parser de los ficheros X12 para el tipo de archivo 835. Cualquier comentario o mejora que me recomienden será como siempre acaptada.

Ejemplo:

procedure TForm1.ProcessFile;
begin
if FileExists(FFileName) then
begin
scMemoSource.Lines.LoadFromFile(FFileName);

F835File := T835File.Create(FFileName);
F835File.Parse;

LabelLoop0000.Caption := IntToStr(F835File.Loop0000MaxId);
LabelLoop1000.Caption := IntToStr(F835File.Loop1000MaxId);
LabelLoop2000.Caption := IntToStr(F835File.Loop2000MaxId);
LabelLoop2100.Caption := IntToStr(F835File.Loop2100MaxId);
LabelLoop2105.Caption := IntToStr(F835File.Loop2105MaxId);
LabelLoop2110.Caption := IntToStr(F835File.Loop2110MaxId);

if F835File <> nil then
begin
scMemoSchema.Lines.AddStrings(F835File.getSqlSchema);
scMemoDelete.Lines.AddStrings(F835File.getSqlDelete);
scMemoInsert.Lines.AddStrings(F835File.SqlData);
scMemoFileParser.Lines.AddStrings(F835File.ParsedFile);
scMemoLogError.Lines.AddStrings(F835File.LogError);
end;

end;
end;

Gracias a todos.

Casimiro Notevi
25-09-2023, 18:36:56
^\||/^\||/^\||/