X12 277 Health Care Claim Status Response Last updated: 2026-09-29

The 277 (005010X212) is the payer's response to a 276 claim status request. It tells the provider where a claim is in adjudication: pending, finalized, paid or denied.

The response follows the request's hierarchy of information source, receiver, service provider, subscriber and dependent, and reports each claim with STC status segments and the payer's claim identifiers.

At a glance

Standard
X12 HIPAA
Implementation guide
005010X212
Functional group
HN (GS01)
Sent by
Payer to provider
Responses
999
ediFabric .NET template
TS277 in EdiFabric.Templates.Hipaa
OpenEDI definition
View 277 in the spec library

277 structure

The full X12 277 layout from its OpenEDI definition, the same model ediFabric uses to parse, validate and generate it: 16 loops and 44 segment positions, in file order. Loops are shaded and their segments indented; Max use is how many times a segment or loop may repeat.

Segment / loop Name Usage Max use
STTransaction Set HeaderRequired1
BHTBeginning of Hierarchical TransactionRequired1
Loop 2000AInformation Source LevelRequired>1
HLInformation Source LevelRequired1
Loop 2100APayer NameRequired1
NM1Payer NameRequired1
PERPayer Contact InformationSituational1
Loop 2000BInformation Receiver LevelRequired>1
HLInformation Receiver LevelRequired1
Loop 2100BInformation Receiver NameRequired1
NM1Information Receiver NameRequired1
Loop 2200BInformation Receiver Trace IdentifierSituational1
TRNInformation Receiver Trace IdentifierRequired1
STCInformation Receiver Status InformationRequired>1
Loop 2000CService Provider LevelSituational>1
HLService Provider LevelRequired1
Loop 2100CProvider NameRequired2
NM1Provider NameRequired1
Loop 2200CProviderof Service Trace IdentifierSituational1
TRNProviderof Service Trace IdentifierRequired1
STCProvider Status InformationRequired>1
Loop 2000DSubscriber LevelSituational>1
HLSubscriber LevelRequired1
Loop 2100DSubscriber NameRequired1
NM1Subscriber NameRequired1
Loop 2200DClaim Status Tracking NumberSituational>1
TRNClaim Status Tracking NumberRequired1
STCClaim Level Status InformationRequired>1
Any orderThe loops below can appear in any orderSituational1
REFPayer Claim Control NumberSituational1
REFInstitutional Bill Type IdentificationSituational1
REFPatient Control NumberSituational1
REFPharmacy Prescription NumberSituational1
REFVoucher IdentifierSituational1
REFClaim Identification Number for Clearinghouses and Other Transmisson IntermediariesSituational1
DTPClaim Service DateSituational1
Loop 2220DService Line InformationSituational>1
SVCService Line InformationRequired1
STCService Line Status InformationRequired>1
REFService Line Item IdentificationSituational1
DTPService Line DateRequired1
Loop 2000EDependent LevelSituational>1
HLDependent LevelRequired1
Loop 2100EDependent NameRequired1
NM1Dependent NameRequired1
Loop 2200EClaim Status Tracking NumberRequired>1
TRNClaim Status Tracking NumberRequired1
STCClaim Level Status InformationRequired>1
Any orderThe loops below can appear in any orderSituational1
REFPayer Claim Control NumberSituational1
REFInstitutional Bill Type IdentificationSituational1
REFPatient Control NumberSituational1
REFPharmacy Prescription NumberSituational1
REFVoucher IdentifierSituational1
REFClaim Identification Number for Clearinghouses and Other Transmisson IntermediariesSituational1
DTPClaim Service DateSituational1
Loop 2220EService Line InformationSituational>1
SVCService Line InformationRequired1
STCService Line Status InformationRequired>1
REFService Line Item IdentificationSituational1
DTPService Line DateRequired1
SETransaction Set TrailerRequired1

Sample 277 file

A claim status response with STC status codes for the requested claims. Paste it into EdiNation to see every element named and validated.

ISA*00*          *00*          *ZZ*1234567        *ZZ*11111          *170508*1141*^*00501*000000101*1*P*:~
GS*HC*XXXXXXX*XXXXX*20170617*1741*101*X*005010X212~
ST*277*0001*005010X212~
BHT*0010*08*277X212*20050916*0810*DG~
HL*1**20*1~
NM1*PR*2*ABC INSURANCE*****PI*12345~
HL*2*1*21*1~
NM1*41*2*XYZ SERVICE*****46*X67E~
HL*3*2*19*1~
NM1*1P*2*HOME HOSPITAL*****XX*1666666661~
HL*4*3*22*0~
NM1*IL*1*SMITH*FRED****MI*123456789A~
TRN*2*ABCXYZ1~
STC*P3:317*20050913**8513.88~
REF*1K*05347006051~
REF*BLT*111~
REF*EJ*SM123456~
DTP*472*RD8*20050831-20050906~
HL*5*3*22*0~
NM1*IL*1*JONES*MARY****MI*234567890A~
TRN*2*ABCXYZ2~
STC*F0:3*20050915**7599*7599~
REF*1K*0529675341~
REF*BLT*111~
REF*EJ*JO234567~
DTP*472*RD8*20050731-20050809~
HL*6*2*19*1~
NM1*1P*2*HOME HOSPITAL PHYSICIANS*****XX*1666666666~
HL*7*6*22*1~
NM1*IL*1*MANN*JOHN****MI*345678901~
HL*8*7*23~
NM1*QC*1*MANN*JOSEPH~
TRN*2*ABCXYC3~
STC*F2:88:QC*20050612**150*0~
REF*1K*051681010827~
REF*EJ*MA345678~
SVC*HC:99203*150*0****1~
STC*F2:88:QC*20050612~
DTP*472*D8*20050501~
SE*38*0001~
GE*1*101~
IEA*1*000000101~

The same 277 as JSON

ediFabric turns every loop, segment and element into a named field. This is the transaction from the sample, in the JSON that ediFabric Native and Cloud return and accept.

{
  "ST": {
    "TransactionSetIdentifierCode_01": "277",
    "TransactionSetControlNumber_02": "0001",
    "ImplementationConventionPreference_03": "005010X212"
  },
  "BHT_BeginningOfHierarchicalTransaction": {
    "HierarchicalStructureCode_01": "0010",
    "TransactionSetPurposeCode_02": "08",
    "SubmitterTransactionIdentifier_03": "277X212",
    "TransactionSetCreationDate_04": "20050916",
    "TransactionSetCreationTime_05": "0810",
    "TransactionTypeCode_06": "DG"
  },
  "Loop2000A": [
    {
      "HL_InformationSourceLevel": {
        "HierarchicalIDNumber_01": "1",
        "HierarchicalLevelCode_03": "20",
        "HierarchicalChildCode_04": "1"
      },
      "Loop2100A": {
        "NM1_PayerName": {
          "EntityIdentifierCode_01": "PR",
          "EntityTypeQualifier_02": "2",
          "ResponseContactLastorOrganizationName_03": "ABC INSURANCE",
          "IdentificationCodeQualifier_08": "PI",
          "ResponseContactIdentifier_09": "12345"
        }
      },
      "Loop2000B": [
        {
          "HL_InformationReceiverLevel": {
            "HierarchicalIDNumber_01": "2",
            "HierarchicalParentIDNumber_02": "1",
            "HierarchicalLevelCode_03": "21",
            "HierarchicalChildCode_04": "1"
          },
          "Loop2100B": {
            "NM1_InformationReceiverName": {
              "EntityIdentifierCode_01": "41",
              "EntityTypeQualifier_02": "2",
              "ResponseContactLastorOrganizationName_03": "XYZ SERVICE",
              "IdentificationCodeQualifier_08": "46",
              "ResponseContactIdentifier_09": "X67E"
            }
          },
          "Loop2000C": [
            {
              "HL_ServiceProviderLevel": {
                "HierarchicalIDNumber_01": "3",
                "HierarchicalParentIDNumber_02": "2",
                "HierarchicalLevelCode_03": "19",
                "HierarchicalChildCode_04": "1"
              },
              "Loop2100C": [
                {
                  "NM1_ProviderName": {
                    "EntityIdentifierCode_01": "1P",
                    "EntityTypeQualifier_02": "2",
                    "ResponseContactLastorOrganizationName_03": "HOME HOSPITAL",
                    "IdentificationCodeQualifier_08": "XX",
                    "ResponseContactIdentifier_09": "1666666661"
                  }
                }
              ],
              "Loop2000D": [
                {
                  "HL_SubscriberLevel": {
                    "HierarchicalIDNumber_01": "4",
                    "HierarchicalParentIDNumber_02": "3",
                    "HierarchicalLevelCode_03": "22",
                    "HierarchicalChildCode_04": "0"
                  },
                  "Loop2100D": {
                    "NM1_SubscriberName": {
                      "EntityIdentifierCode_01": "IL",
                      "EntityTypeQualifier_02": "1",
                      "ResponseContactLastorOrganizationName_03": "SMITH",
                      "ResponseContactFirstName_04": "FRED",
                      "IdentificationCodeQualifier_08": "MI",
                      "ResponseContactIdentifier_09": "123456789A"
                    }
                  },
                  "Loop2200D": [
                    {
                      "TRN_ClaimStatusTrackingNumber": {
                        "TraceTypeCode_01": "2",
                        "CurrentTransactionTraceNumber_02": "ABCXYZ1"
                      },
                      "STC_ClaimLevelStatusInformation": [
                        {
                          "HealthCareClaimStatus_01": {
                            "HealthCareClaimStatusCategoryCode_01": "P3",
                            "StatusCode_02": "317"
                          },
                          "Date_02": "20050913",
                          "TotalSubmittedChargesForUnitWork_04": "8513.88"
                        }
                      ],
                      "AllREF": {
                        "REF_PayerClaimControlNumber": {
                          "ReferenceIdentificationQualifier_01": "1K",
                          "MemberGrouporPolicyNumber_02": "05347006051"
                        },
                        "REF_InstitutionalBillTypeIdentification": {
                          "ReferenceIdentificationQualifier_01": "BLT",
                          "MemberGrouporPolicyNumber_02": "111"
                        },
                        "REF_PatientControlNumber": {
                          "ReferenceIdentificationQualifier_01": "EJ",
                          "MemberGrouporPolicyNumber_02": "SM123456"
                        }
                      },
                      "DTP_ClaimServiceDate": {
                        "DateTimeQualifier_01": "472",
                        "DateTimePeriodFormatQualifier_02": "RD8",
                        "DateTimePeriod_03": "20050831-20050906"
                      }
                    }
                  ]
                },
                {
                  "HL_SubscriberLevel": {
                    "HierarchicalIDNumber_01": "5",
                    "HierarchicalParentIDNumber_02": "3",
                    "HierarchicalLevelCode_03": "22",
                    "HierarchicalChildCode_04": "0"
                  },
                  "Loop2100D": {
                    "NM1_SubscriberName": {
                      "EntityIdentifierCode_01": "IL",
                      "EntityTypeQualifier_02": "1",
                      "ResponseContactLastorOrganizationName_03": "JONES",
                      "ResponseContactFirstName_04": "MARY",
                      "IdentificationCodeQualifier_08": "MI",
                      "ResponseContactIdentifier_09": "234567890A"
                    }
                  },
                  "Loop2200D": [
                    {
                      "TRN_ClaimStatusTrackingNumber": {
                        "TraceTypeCode_01": "2",
                        "CurrentTransactionTraceNumber_02": "ABCXYZ2"
                      },
                      "STC_ClaimLevelStatusInformation": [
                        {
                          "HealthCareClaimStatus_01": {
                            "HealthCareClaimStatusCategoryCode_01": "F0",
                            "StatusCode_02": "3"
                          },
                          "Date_02": "20050915",
                          "TotalSubmittedChargesForUnitWork_04": "7599",
                          "MonetaryAmount_05": "7599"
                        }
                      ],
                      "AllREF": {
                        "REF_PayerClaimControlNumber": {
                          "ReferenceIdentificationQualifier_01": "1K",
                          "MemberGrouporPolicyNumber_02": "0529675341"
                        },
                        "REF_InstitutionalBillTypeIdentification": {
                          "ReferenceIdentificationQualifier_01": "BLT",
                          "MemberGrouporPolicyNumber_02": "111"
                        },
                        "REF_PatientControlNumber": {
                          "ReferenceIdentificationQualifier_01": "EJ",
                          "MemberGrouporPolicyNumber_02": "JO234567"
                        }
                      },
                      "DTP_ClaimServiceDate": {
                        "DateTimeQualifier_01": "472",
                        "DateTimePeriodFormatQualifier_02": "RD8",
                        "DateTimePeriod_03": "20050731-20050809"
                      }
                    }
                  ]
                }
              ]
            },
            {
              "HL_ServiceProviderLevel": {
                "HierarchicalIDNumber_01": "6",
                "HierarchicalParentIDNumber_02": "2",
                "HierarchicalLevelCode_03": "19",
                "HierarchicalChildCode_04": "1"
              },
              "Loop2100C": [
                {
                  "NM1_ProviderName": {
                    "EntityIdentifierCode_01": "1P",
                    "EntityTypeQualifier_02": "2",
                    "ResponseContactLastorOrganizationName_03": "HOME HOSPITAL PHYSICIANS",
                    "IdentificationCodeQualifier_08": "XX",
                    "ResponseContactIdentifier_09": "1666666666"
                  }
                }
              ],
              "Loop2000D": [
                {
                  "HL_SubscriberLevel": {
                    "HierarchicalIDNumber_01": "7",
                    "HierarchicalParentIDNumber_02": "6",
                    "HierarchicalLevelCode_03": "22",
                    "HierarchicalChildCode_04": "1"
                  },
                  "Loop2100D": {
                    "NM1_SubscriberName": {
                      "EntityIdentifierCode_01": "IL",
                      "EntityTypeQualifier_02": "1",
                      "ResponseContactLastorOrganizationName_03": "MANN",
                      "ResponseContactFirstName_04": "JOHN",
                      "IdentificationCodeQualifier_08": "MI",
                      "ResponseContactIdentifier_09": "345678901"
                    }
                  },
                  "Loop2000E": [
                    {
                      "HL_DependentLevel": {
                        "HierarchicalIDNumber_01": "8",
                        "HierarchicalParentIDNumber_02": "7",
                        "HierarchicalLevelCode_03": "23"
                      },
                      "Loop2100E": {
                        "NM1_DependentName": {
                          "EntityIdentifierCode_01": "QC",
                          "EntityTypeQualifier_02": "1",
                          "ResponseContactLastorOrganizationName_03": "MANN",
                          "ResponseContactFirstName_04": "JOSEPH"
                        }
                      },
                      "Loop2200E": [
                        {
                          "TRN_ClaimStatusTrackingNumber": {
                            "TraceTypeCode_01": "2",
                            "CurrentTransactionTraceNumber_02": "ABCXYC3"
                          },
                          "STC_ClaimLevelStatusInformation": [
                            {
                              "HealthCareClaimStatus_01": {
                                "HealthCareClaimStatusCategoryCode_01": "F2",
                                "StatusCode_02": "88",
                                "EntityIdentifierCode_03": "QC"
                              },
                              "Date_02": "20050612",
                              "TotalSubmittedChargesForUnitWork_04": "150",
                              "MonetaryAmount_05": "0"
                            }
                          ],
                          "AllREF": {
                            "REF_PayerClaimControlNumber": {
                              "ReferenceIdentificationQualifier_01": "1K",
                              "MemberGrouporPolicyNumber_02": "051681010827"
                            },
                            "REF_PatientControlNumber": {
                              "ReferenceIdentificationQualifier_01": "EJ",
                              "MemberGrouporPolicyNumber_02": "MA345678"
                            }
                          },
                          "Loop2220E": [
                            {
                              "SVC_ServiceLineInformation": {
                                "CompositeMedicalProcedureIdentifier_01": {
                                  "ProductorServiceIDQualifier_01": "HC",
                                  "ProcedureCode_02": "99203"
                                },
                                "LineItemChargeAmount_02": "150",
                                "MonetaryAmount_03": "0",
                                "UnitsofServiceCount_07": "1"
                              },
                              "STC_ServiceLineStatusInformation": [
                                {
                                  "HealthCareClaimStatus_01": {
                                    "HealthCareClaimStatusCategoryCode_01": "F2",
                                    "StatusCode_02": "88",
                                    "EntityIdentifierCode_03": "QC"
                                  },
                                  "Date_02": "20050612"
                                }
                              ],
                              "DTP_ServiceLineDate": {
                                "DateTimeQualifier_01": "472",
                                "DateTimePeriodFormatQualifier_02": "D8",
                                "DateTimePeriod_03": "20050501"
                              }
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    }
  ],
  "SE": {
    "NumberofIncludedSegments_01": "38",
    "TransactionSetControlNumber_02": "0001"
  }
}

Parse and validate a 277 file

Read the file into typed objects with ediFabric .NET, convert it to JSON in process with the ediFabric Native bindings for Python, Java and C, or post it to the ediFabric Cloud REST API from any language.

using EdiFabric.Templates.Hipaa5010;

License.SetSerial("YOUR_SERIAL_KEY");

using (var stream = File.OpenRead(@"C:\edi\ResponseTransmission.txt"))
using (var reader = new X12Reader(stream, "EdiFabric.Templates.Hipaa"))
{
    var items = await reader.ReadToEndAsync();
    foreach (var transaction in items.OfType<TS277>())
    {
        if (transaction.IsValid(out MessageErrorContext errors))
            Console.WriteLine($"{transaction.ST.TransactionSetControlNumber_02} is valid");
        else
            Console.WriteLine(string.Join(Environment.NewLine, errors.Flatten()));
    }
}
import json
import edifabric_x12 as ef

serial = "YOUR_SERIAL_KEY"
ef.load_library()
ef.set_serial(serial)
ef.set_map(json.dumps({"default": serial, "maps": {}}))

edi = open("ResponseTransmission.txt", "rb").read()
output, offset = ef.parse(edi, ef.ParseMode.JSON_VALIDATE)
transactions = output[:offset]
report = json.loads(output[offset:])
print(report["errors_count"])
import com.edifabric.nativex12.EdiFabricX12;
import com.edifabric.nativex12.ParseMode;
import com.edifabric.nativex12.ParseResult;

String serial = "YOUR_SERIAL_KEY";
EdiFabricX12.loadLibrary();
EdiFabricX12.setSerial(serial);
EdiFabricX12.setMap("{\"default\":\"" + serial + "\",\"maps\":{}}");

String edi = Files.readString(Path.of("ResponseTransmission.txt"));
ParseResult result = EdiFabricX12.parse(edi, ParseMode.JSON_VALIDATE);
System.out.println(result.getTransactions());
System.out.println(result.getReport());
#include "edifabric_x12.h"

const char *serial = "YOUR_SERIAL_KEY";
ef_parse_result result;

if (ef_load_library(NULL) != 0)
    return 1;
ef_set_serial(serial);
ef_set_map("{\"default\":\"YOUR_SERIAL_KEY\",\"maps\":{}}");

char *edi = read_file("ResponseTransmission.txt", NULL);   /* helper in example_all_functions.c */
if (ef_parse(edi, EF_PARSE_JSON_VALIDATE, NULL, &result) == 0) {
    /* transactions = output[0 .. offset), report = output[offset .. length) */
    fwrite(result.output.data, 1, (size_t)result.output.length, stdout);
    ef_free(result.output.data);
}
curl -X POST 'https://api.edination.com/v2/x12/read' \
-H 'Ocp-Apim-Subscription-Key: YOUR_SERIAL_KEY' \
-H 'Content-Type: application/octet-stream' \
--data-binary '@ResponseTransmission.txt'

Generate a 277 file

Populate a TS277 object in .NET, or pass JSON in the shape shown above to ediFabric Native or ediFabric Cloud, and get a valid 277 file back.

using EdiFabric.Templates.Hipaa5010;

License.SetSerial("YOUR_SERIAL_KEY");

var transaction = new TS277();

transaction.ST = new ST();
transaction.ST.TransactionSetIdentifierCode_01 = "277";
transaction.ST.TransactionSetControlNumber_02 = "0001";
transaction.ST.ImplementationConventionPreference_03 = "005010X212";

transaction.BHT_BeginningOfHierarchicalTransaction = new BHT_BeginningOfHierarchicalTransaction_4();
transaction.BHT_BeginningOfHierarchicalTransaction.HierarchicalStructureCode_01 = "0010";
transaction.BHT_BeginningOfHierarchicalTransaction.TransactionSetPurposeCode_02 = "08";
transaction.BHT_BeginningOfHierarchicalTransaction.SubmitterTransactionIdentifier_03 = "277X212";
transaction.BHT_BeginningOfHierarchicalTransaction.TransactionSetCreationDate_04 = "20050916";
transaction.BHT_BeginningOfHierarchicalTransaction.TransactionSetCreationTime_05 = "0810";
transaction.BHT_BeginningOfHierarchicalTransaction.TransactionTypeCode_06 = "DG";

//  Repeating 2000A Loops
transaction.Loop2000A = new List<Loop_2000A_277>();

//  Begin 2000A Loop
var loop2000A = new Loop_2000A_277();

// ... set the remaining loops and segments the same way

// SegmentBuilders is in the Common project of the example repository
using (var stream = new MemoryStream())
{
    using (var writer = new X12Writer(stream))
    {
        writer.Write(SegmentBuilders.BuildIsa("1"));
        writer.Write(SegmentBuilders.BuildGs("1", "SENDER1", "RECEIVER1", "005010X212"));
        writer.Write(transaction);
    }
    Console.WriteLine(Encoding.UTF8.GetString(stream.ToArray()));
}
import json
import edifabric_x12 as ef

serial = "YOUR_SERIAL_KEY"
ef.load_library()
ef.set_serial(serial)
ef.set_map(json.dumps({"default": serial, "maps": {}}))

# the transactions JSON returned by ef.parse, edited or produced by your application
transactions = open("ResponseTransmission.json", "rb").read()
edi = ef.build(transactions, postfix="\r\n")
print(edi)
import com.edifabric.nativex12.EdiFabricX12;

String serial = "YOUR_SERIAL_KEY";
EdiFabricX12.loadLibrary();
EdiFabricX12.setSerial(serial);
EdiFabricX12.setMap("{\"default\":\"" + serial + "\",\"maps\":{}}");

// the transactions JSON returned by parse, edited or produced by your application
String transactions = Files.readString(Path.of("ResponseTransmission.json"));
String edi = EdiFabricX12.build(transactions, "\r\n");
System.out.println(edi);
#include "edifabric_x12.h"

ef_buffer edi;

if (ef_load_library(NULL) != 0)
    return 1;
ef_set_serial("YOUR_SERIAL_KEY");
ef_set_map("{\"default\":\"YOUR_SERIAL_KEY\",\"maps\":{}}");

/* the transactions JSON returned by ef_parse, edited or produced by your application */
char *transactions = read_file("ResponseTransmission.json", NULL);
if (ef_build(transactions, "\r\n", &edi) == 0) {
    fwrite(edi.data, 1, (size_t)edi.length, stdout);
    ef_free(edi.data);
}
# the JSON returned by /read, edited or produced by your application
curl -X POST 'https://api.edination.com/v2/x12/write' \
-H 'Ocp-Apim-Subscription-Key: YOUR_SERIAL_KEY' \
-H 'Content-Type: application/json' \
--data-binary '@ResponseTransmission.json' \
-o 'ResponseTransmission.txt'

Complete ediFabric .NET example

A complete C# program for the X12 277, built on TS277 in EdiFabric.Templates.Hipaa. The same code is in the ediFabric .NET examples on GitHub.

using EdiFabric.Framework.Readers;
using EdiFabric.Framework.Writers;
using EdiFabric.Templates.Hipaa5010;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using EdiFabric.Core.Model.Edi;
using EdiFabric.Core.Model.Edi.X12;
using EdiFabric.Examples.X12.Common;

namespace EdiFabric.Examples.X12.T277
{
    class Program
    {
        static void Main(string[] args)
        {
            SerialKey.Set(Common.SerialKey.Get());
            Read();
            Write();
        }

        ///
        /// Read Response Transmission
        ///
        static void Read()
        {
            var ediStream = File.OpenRead(Directory.GetCurrentDirectory() + @"\..\..\..\Files\Hipaa\ResponseTransmission.txt");

            List ediItems;
            using (var ediReader = new X12Reader(ediStream, "EdiFabric.Templates.Hipaa"))
                ediItems = ediReader.ReadToEnd().ToList();

            var transactions = ediItems.OfType();

            foreach (var transaction in transactions)
            {
                if (transaction.HasErrors)
                {
                    //  partially parsed
                    var errors = transaction.ErrorContext.Flatten();
                }
            }
        }

        ///
        /// Write Response Transmission
        ///
        static void Write()
        {
            var transaction = BuildResponseTransmission("1");

            using (var stream = new MemoryStream())
            {
                using (var writer = new X12Writer(stream))
                {
                    writer.Write(SegmentBuilders.BuildIsa("1"));
                    writer.Write(SegmentBuilders.BuildGs("1", "SENDER1", "RECEIVER1", "005010X212"));
                    writer.Write(transaction);
                }

                var ediString = stream.LoadToString();
            }
        }

        ///
        /// Builds response transmission.
        /// Original from http://www.x12.org/examples/005010X212/claim-level-status/x212-277-claim-response/
        /// Claim 1
        /// Response: ABC Insurance assigned a payer claim control number of 05347006051 to Mr. Smith's claim.
        /// The claim was pending waiting on additional information that had already been requested.
        /// Claim 2
        /// Response: ABC Insurance assigned a payer claim control number of 0529675341 to Mrs. Jones' claim.
        /// The claim completed adjudication and is awaiting the payment cycle.
        /// Claim 3
        /// Response: ABC Insurance assigned a payer internal control number of 051681010827 to Joseph Mann's claim.
        /// The service was denied because the dependent was not eligible for benefits at the time of service.
        ///
        static TS277 BuildResponseTransmission(string controlNumber)
        {
            var result = new TS277();

            result.ST = new ST();
            result.ST.TransactionSetIdentifierCode_01 = "277";
            result.ST.TransactionSetControlNumber_02 = controlNumber.PadLeft(9, '0');
            result.ST.ImplementationConventionPreference_03 = "005010X212";

            result.BHT_BeginningOfHierarchicalTransaction = new BHT_BeginningOfHierarchicalTransaction_4();
            result.BHT_BeginningOfHierarchicalTransaction.HierarchicalStructureCode_01 = "0010";
            result.BHT_BeginningOfHierarchicalTransaction.TransactionSetPurposeCode_02 = "08";
            result.BHT_BeginningOfHierarchicalTransaction.SubmitterTransactionIdentifier_03 = "277X212";
            result.BHT_BeginningOfHierarchicalTransaction.TransactionSetCreationDate_04 = "20050916";
            result.BHT_BeginningOfHierarchicalTransaction.TransactionSetCreationTime_05 = "0810";
            result.BHT_BeginningOfHierarchicalTransaction.TransactionTypeCode_06 = "DG";

            //  Repeating 2000A Loops
            result.Loop2000A = new List();

            //  Begin 2000A Loop
            var loop2000A = new Loop_2000A_277();

            loop2000A.HL_InformationSourceLevel = new HL_BillingProviderHierarchicalLevel();
            loop2000A.HL_InformationSourceLevel.HierarchicalIDNumber_01 = "1";
            loop2000A.HL_InformationSourceLevel.HierarchicalLevelCode_03 = "20";
            loop2000A.HL_InformationSourceLevel.HierarchicalChildCode_04 = "1";

            //  Begin 2100A Loop
            loop2000A.Loop2100A = new Loop_2100A_277();

            loop2000A.Loop2100A.NM1_PayerName = new NM1_OtherPayerName();
            loop2000A.Loop2100A.NM1_PayerName.EntityIdentifierCode_01 = "PR";
            loop2000A.Loop2100A.NM1_PayerName.EntityTypeQualifier_02 = "2";
            loop2000A.Loop2100A.NM1_PayerName.ResponseContactLastorOrganizationName_03 = "ABC INSURANCE";
            loop2000A.Loop2100A.NM1_PayerName.IdentificationCodeQualifier_08 = "PI";
            loop2000A.Loop2100A.NM1_PayerName.ResponseContactIdentifier_09 = "12345";

            //  End 2100A Loop

            //  Repeating 2000B Loops
            loop2000A.Loop2000B = new List();

            //  Begin 2000B Loop
            var loop2000B = new Loop_2000B_277();

            loop2000B.HL_InformationReceiverLevel = new HL_InformationReceiverLevel_2();
            loop2000B.HL_InformationReceiverLevel.HierarchicalIDNumber_01 = "2";
            loop2000B.HL_InformationReceiverLevel.HierarchicalParentIDNumber_02 = "1";
            loop2000B.HL_InformationReceiverLevel.HierarchicalLevelCode_03 = "21";
            loop2000B.HL_InformationReceiverLevel.HierarchicalChildCode_04 = "1";

            //  Begin 2100B Loop
            loop2000B.Loop2100B = new Loop_2100B_277();

            loop2000B.Loop2100B.NM1_InformationReceiverName = new NM1_InformationReceiverName_3();
            loop2000B.Loop2100B.NM1_InformationReceiverName.EntityIdentifierCode_01 = "41";
            loop2000B.Loop2100B.NM1_InformationReceiverName.EntityTypeQualifier_02 = "2";
            loop2000B.Loop2100B.NM1_InformationReceiverName.ResponseContactLastorOrganizationName_03 = "XYZ SERVICE";
            loop2000B.Loop2100B.NM1_InformationReceiverName.IdentificationCodeQualifier_08 = "46";
            loop2000B.Loop2100B.NM1_InformationReceiverName.ResponseContactIdentifier_09 = "X67E";

            //  End 2100B Loop

            //  Repeating 2000C Loops
            loop2000B.Loop2000C = new List();

            //  Begin 2000C Loop 1
            var loop2000C1 = new Loop_2000C_277();

            loop2000C1.HL_ServiceProviderLevel = new HL_BillingProviderOfServiceLevel();
            loop2000C1.HL_ServiceProviderLevel.HierarchicalIDNumber_01 = "3";
            loop2000C1.HL_ServiceProviderLevel.HierarchicalParentIDNumber_02 = "2";
            loop2000C1.HL_ServiceProviderLevel.HierarchicalLevelCode_03 = "19";
            loop2000C1.HL_ServiceProviderLevel.HierarchicalChildCode_04 = "1";

            //  Repeating 2100C Loops
            loop2000C1.Loop2100C = new List();

            //  Begin 2100C Loop
            var loop2100C = new Loop_2100C_277();

            loop2100C.NM1_ProviderName = new NM1_ProviderName();
            loop2100C.NM1_ProviderName.EntityIdentifierCode_01 = "1P";
            loop2100C.NM1_ProviderName.EntityTypeQualifier_02 = "2";
            loop2100C.NM1_ProviderName.ResponseContactLastorOrganizationName_03 = "HOME HOSPITAL";
            loop2100C.NM1_ProviderName.IdentificationCodeQualifier_08 = "XX";
            loop2100C.NM1_ProviderName.ResponseContactIdentifier_09 = "1666666661";

            //  End 2100C Loop
            loop2000C1.Loop2100C.Add(loop2100C);

            //  Repeating 2000D Loops
            loop2000C1.Loop2000D = new List();

            //  Begin 2000D Loop 1
            var loop2000D1 = new Loop_2000D_277();

            loop2000D1.HL_SubscriberLevel = new HL_SubscriberHierarchicalLevel();
            loop2000D1.HL_SubscriberLevel.HierarchicalIDNumber_01 = "4";
            loop2000D1.HL_SubscriberLevel.HierarchicalParentIDNumber_02 = "3";
            loop2000D1.HL_SubscriberLevel.HierarchicalLevelCode_03 = "22";
            loop2000D1.HL_SubscriberLevel.HierarchicalChildCode_04 = "0";

            //  Begin 2100D Loop
            loop2000D1.Loop2100D = new Loop_2100D_277();

            loop2000D1.Loop2100D.NM1_SubscriberName = new NM1_SubscriberName_2();
            loop2000D1.Loop2100D.NM1_SubscriberName.EntityIdentifierCode_01 = "IL";
            loop2000D1.Loop2100D.NM1_SubscriberName.EntityTypeQualifier_02 = "1";
            loop2000D1.Loop2100D.NM1_SubscriberName.ResponseContactLastorOrganizationName_03 = "SMITH";
            loop2000D1.Loop2100D.NM1_SubscriberName.ResponseContactFirstName_04 = "FRED";
            loop2000D1.Loop2100D.NM1_SubscriberName.IdentificationCodeQualifier_08 = "MI";
            loop2000D1.Loop2100D.NM1_SubscriberName.ResponseContactIdentifier_09 = "123456789A";

            //  End 2100D Loop

            //  Repeating 2200D Loops
            loop2000D1.Loop2200D = new List();

            //  Begin 2200D Loop
            var loop2200D = new Loop_2200D_277();

            loop2200D.TRN_ClaimStatusTrackingNumber = new TRN_ClaimStatusTrackingNumber_2();
            loop2200D.TRN_ClaimStatusTrackingNumber.TraceTypeCode_01 = "2";
            loop2200D.TRN_ClaimStatusTrackingNumber.CurrentTransactionTraceNumber_02 = "ABCXYZ1";

            //  Repeating STC
            loop2200D.STC_ClaimLevelStatusInformation = new List();

            var stc1 = new STC_ClaimLevelStatusInformation();
            stc1.HealthCareClaimStatus_01 = new C043_HealthCareClaimStatus();
            stc1.HealthCareClaimStatus_01.HealthCareClaimStatusCategoryCode_01 = "P3";
            stc1.HealthCareClaimStatus_01.StatusCode_02 = "317";
            stc1.Date_02 = "20050913";
            stc1.TotalSubmittedChargesForUnitWork_04 = "8513.88";
            loop2200D.STC_ClaimLevelStatusInformation.Add(stc1);

            //  Occurrence of REF Segments in any order
            loop2200D.AllREF = new All_REF_277();

            loop2200D.AllREF.REF_PayerClaimControlNumber = new REF_PayerClaimControlNumber();
            loop2200D.AllREF.REF_PayerClaimControlNumber.ReferenceIdentificationQualifier_01 = "1K";
            loop2200D.AllREF.REF_PayerClaimControlNumber.MemberGrouporPolicyNumber_02 = "05347006051";

            loop2200D.AllREF.REF_InstitutionalBillTypeIdentification = new REF_InstitutionalBillTypeIdentification();
            loop2200D.AllREF.REF_InstitutionalBillTypeIdentification.ReferenceIdentificationQualifier_01 = "BLT";
            loop2200D.AllREF.REF_InstitutionalBillTypeIdentification.MemberGrouporPolicyNumber_02 = "111";

            loop2200D.AllREF.REF_PatientControlNumber = new REF_PatientControlNumber();
            loop2200D.AllREF.REF_PatientControlNumber.ReferenceIdentificationQualifier_01 = "EJ";
            loop2200D.AllREF.REF_PatientControlNumber.MemberGrouporPolicyNumber_02 = "SM123456";

            loop2200D.DTP_ClaimServiceDate = new DTP_ClaimLevelServiceDate();
            loop2200D.DTP_ClaimServiceDate.DateTimeQualifier_01 = "472";
            loop2200D.DTP_ClaimServiceDate.DateTimePeriodFormatQualifier_02 = "RD8";
            loop2200D.DTP_ClaimServiceDate.DateTimePeriod_03 = "20050831-20050906";

            //  End 2200D Loop
            loop2000D1.Loop2200D.Add(loop2200D);

            //  End 2000D Loop 1
            loop2000C1.Loop2000D.Add(loop2000D1);

            //  Begin 2000D Loop 2
            var loop2000D2 = new Loop_2000D_277();

            loop2000D2.HL_SubscriberLevel = new HL_SubscriberHierarchicalLevel();
            loop2000D2.HL_SubscriberLevel.HierarchicalIDNumber_01 = "5";
            loop2000D2.HL_SubscriberLevel.HierarchicalParentIDNumber_02 = "3";
            loop2000D2.HL_SubscriberLevel.HierarchicalLevelCode_03 = "22";
            loop2000D2.HL_SubscriberLevel.HierarchicalChildCode_04 = "0";

            //  Begin 2100D Loop
            loop2000D2.Loop2100D = new Loop_2100D_277();

            loop2000D2.Loop2100D.NM1_SubscriberName = new NM1_SubscriberName_2();
            loop2000D2.Loop2100D.NM1_SubscriberName.EntityIdentifierCode_01 = "IL";
            loop2000D2.Loop2100D.NM1_SubscriberName.EntityTypeQualifier_02 = "1";
            loop2000D2.Loop2100D.NM1_SubscriberName.ResponseContactLastorOrganizationName_03 = "JONES";
            loop2000D2.Loop2100D.NM1_SubscriberName.ResponseContactFirstName_04 = "MARY";
            loop2000D2.Loop2100D.NM1_SubscriberName.IdentificationCodeQualifier_08 = "MI";
            loop2000D2.Loop2100D.NM1_SubscriberName.ResponseContactIdentifier_09 = "234567890A";

            //  End 2100D Loop

            //  Repeating 2200D Loops
            loop2000D2.Loop2200D = new List();

            //  Begin 2200D Loop
            var loop2200D2 = new Loop_2200D_277();

            loop2200D2.TRN_ClaimStatusTrackingNumber = new TRN_ClaimStatusTrackingNumber_2();
            loop2200D2.TRN_ClaimStatusTrackingNumber.TraceTypeCode_01 = "2";
            loop2200D2.TRN_ClaimStatusTrackingNumber.CurrentTransactionTraceNumber_02 = "ABCXYZ2";

            //  Repeating STC
            loop2200D2.STC_ClaimLevelStatusInformation = new List();

            var stc2 = new STC_ClaimLevelStatusInformation();
            stc2.HealthCareClaimStatus_01 = new C043_HealthCareClaimStatus();
            stc2.HealthCareClaimStatus_01.HealthCareClaimStatusCategoryCode_01 = "F0";
            stc2.HealthCareClaimStatus_01.StatusCode_02 = "3";
            stc2.Date_02 = "20050915";
            stc2.TotalSubmittedChargesForUnitWork_04 = "7599";
            stc2.MonetaryAmount_05 = "7599";
            loop2200D2.STC_ClaimLevelStatusInformation.Add(stc2);

            //  Occurrence of REF Segments in any order
            loop2200D2.AllREF = new All_REF_277();

            loop2200D2.AllREF.REF_PayerClaimControlNumber = new REF_PayerClaimControlNumber();
            loop2200D2.AllREF.REF_PayerClaimControlNumber.ReferenceIdentificationQualifier_01 = "1K";
            loop2200D2.AllREF.REF_PayerClaimControlNumber.MemberGrouporPolicyNumber_02 = "0529675341";

            loop2200D2.AllREF.REF_InstitutionalBillTypeIdentification = new REF_InstitutionalBillTypeIdentification();
            loop2200D2.AllREF.REF_InstitutionalBillTypeIdentification.ReferenceIdentificationQualifier_01 = "BLT";
            loop2200D2.AllREF.REF_InstitutionalBillTypeIdentification.MemberGrouporPolicyNumber_02 = "111";

            loop2200D2.AllREF.REF_PatientControlNumber = new REF_PatientControlNumber();
            loop2200D2.AllREF.REF_PatientControlNumber.ReferenceIdentificationQualifier_01 = "EJ";
            loop2200D2.AllREF.REF_PatientControlNumber.MemberGrouporPolicyNumber_02 = "JO234567";

            loop2200D2.DTP_ClaimServiceDate = new DTP_ClaimLevelServiceDate();
            loop2200D2.DTP_ClaimServiceDate.DateTimeQualifier_01 = "472";
            loop2200D2.DTP_ClaimServiceDate.DateTimePeriodFormatQualifier_02 = "RD8";
            loop2200D2.DTP_ClaimServiceDate.DateTimePeriod_03 = "20050731-20050809";

            //  End 2200D Loop
            loop2000D2.Loop2200D.Add(loop2200D2);

            //  End 2000D Loop 2
            loop2000C1.Loop2000D.Add(loop2000D2);

            //  End 2000C Loop 1
            loop2000B.Loop2000C.Add(loop2000C1);

            //  Begin 2000C Loop 2
            var loop2000C2 = new Loop_2000C_277();

            loop2000C2.HL_ServiceProviderLevel = new HL_BillingProviderOfServiceLevel();
            loop2000C2.HL_ServiceProviderLevel.HierarchicalIDNumber_01 = "6";
            loop2000C2.HL_ServiceProviderLevel.HierarchicalParentIDNumber_02 = "2";
            loop2000C2.HL_ServiceProviderLevel.HierarchicalLevelCode_03 = "19";
            loop2000C2.HL_ServiceProviderLevel.HierarchicalChildCode_04 = "1";

            //  Repeating 2100C Loops
            loop2000C2.Loop2100C = new List();

            //  Begin 2100C Loop
            var loop2100C2 = new Loop_2100C_277();

            loop2100C2.NM1_ProviderName = new NM1_ProviderName();
            loop2100C2.NM1_ProviderName.EntityIdentifierCode_01 = "1P";
            loop2100C2.NM1_ProviderName.EntityTypeQualifier_02 = "2";
            loop2100C2.NM1_ProviderName.ResponseContactLastorOrganizationName_03 = "HOME HOSPITAL PHYSICIANS";
            loop2100C2.NM1_ProviderName.IdentificationCodeQualifier_08 = "XX";
            loop2100C2.NM1_ProviderName.ResponseContactIdentifier_09 = "1666666666";

            //  End 2100C Loop
            loop2000C2.Loop2100C.Add(loop2100C2);

            //  Repeating 2000D Loops
            loop2000C2.Loop2000D = new List();

            //  Begin 2000D Loop 1
            var loop2000D3 = new Loop_2000D_277();

            loop2000D3.HL_SubscriberLevel = new HL_SubscriberHierarchicalLevel();
            loop2000D3.HL_SubscriberLevel.HierarchicalIDNumber_01 = "7";
            loop2000D3.HL_SubscriberLevel.HierarchicalParentIDNumber_02 = "6";
            loop2000D3.HL_SubscriberLevel.HierarchicalLevelCode_03 = "22";
            loop2000D3.HL_SubscriberLevel.HierarchicalChildCode_04 = "1";

            //  Begin 2100D Loop
            loop2000D3.Loop2100D = new Loop_2100D_277();

            loop2000D3.Loop2100D.NM1_SubscriberName = new NM1_SubscriberName_2();
            loop2000D3.Loop2100D.NM1_SubscriberName.EntityIdentifierCode_01 = "IL";
            loop2000D3.Loop2100D.NM1_SubscriberName.EntityTypeQualifier_02 = "1";
            loop2000D3.Loop2100D.NM1_SubscriberName.ResponseContactLastorOrganizationName_03 = "MANN";
            loop2000D3.Loop2100D.NM1_SubscriberName.ResponseContactFirstName_04 = "JOHN";
            loop2000D3.Loop2100D.NM1_SubscriberName.IdentificationCodeQualifier_08 = "MI";
            loop2000D3.Loop2100D.NM1_SubscriberName.ResponseContactIdentifier_09 = "345678901";

            //  End 2100D Loop

            //  Repeating 2000E Loops
            loop2000D3.Loop2000E = new List();

            //  Begin 2000E Loop
            var loop2000E = new Loop_2000E_277();

            loop2000E.HL_DependentLevel = new HL_DependentLevel_2();
            loop2000E.HL_DependentLevel.HierarchicalIDNumber_01 = "8";
            loop2000E.HL_DependentLevel.HierarchicalParentIDNumber_02 = "7";
            loop2000E.HL_DependentLevel.HierarchicalLevelCode_03 = "23";

            //  Begin 2100E Loop
            loop2000E.Loop2100E = new Loop_2100E_277();

            loop2000E.Loop2100E.NM1_DependentName = new NM1_DependentName_2();
            loop2000E.Loop2100E.NM1_DependentName.EntityIdentifierCode_01 = "QC";
            loop2000E.Loop2100E.NM1_DependentName.EntityTypeQualifier_02 = "1";
            loop2000E.Loop2100E.NM1_DependentName.ResponseContactLastorOrganizationName_03 = "MANN";
            loop2000E.Loop2100E.NM1_DependentName.ResponseContactFirstName_04 = "JOSEPH";

            //  End 2100E Loop

            //  Repeating 2200E Loops
            loop2000E.Loop2200E = new List();

            //  Begin 2200E Loop
            var loop2200E = new Loop_2200E_277();

            loop2200E.TRN_ClaimStatusTrackingNumber = new TRN_ClaimStatusTrackingNumber_2();
            loop2200E.TRN_ClaimStatusTrackingNumber.TraceTypeCode_01 = "2";
            loop2200E.TRN_ClaimStatusTrackingNumber.CurrentTransactionTraceNumber_02 = "ABCXYC3";

            //  Repeating STC
            loop2200E.STC_ClaimLevelStatusInformation = new List();

            var stc3 = new STC_ClaimLevelStatusInformation();
            stc3.HealthCareClaimStatus_01 = new C043_HealthCareClaimStatus();
            stc3.HealthCareClaimStatus_01.HealthCareClaimStatusCategoryCode_01 = "F2";
            stc3.HealthCareClaimStatus_01.StatusCode_02 = "88";
            stc3.HealthCareClaimStatus_01.EntityIdentifierCode_03 = "QC";
            stc3.Date_02 = "20050612";
            stc3.TotalSubmittedChargesForUnitWork_04 = "150";
            stc3.MonetaryAmount_05 = "0";
            loop2200E.STC_ClaimLevelStatusInformation.Add(stc3);

            //  Occurrence of REF Segments in any order
            loop2200E.AllREF = new All_REF_277();

            loop2200E.AllREF.REF_PayerClaimControlNumber = new REF_PayerClaimControlNumber();
            loop2200E.AllREF.REF_PayerClaimControlNumber.ReferenceIdentificationQualifier_01 = "1K";
            loop2200E.AllREF.REF_PayerClaimControlNumber.MemberGrouporPolicyNumber_02 = "051681010827";

            loop2200E.AllREF.REF_PatientControlNumber = new REF_PatientControlNumber();
            loop2200E.AllREF.REF_PatientControlNumber.ReferenceIdentificationQualifier_01 = "EJ";
            loop2200E.AllREF.REF_PatientControlNumber.MemberGrouporPolicyNumber_02 = "MA345678";

            //  Repeating 2220E Loops
            loop2200E.Loop2220E = new List();

            //  Begin 2220E Loop
            var loop2220E = new Loop_2220E_277();

            loop2220E.SVC_ServiceLineInformation = new SVC_ServiceLineInformation_2();
            loop2220E.SVC_ServiceLineInformation.CompositeMedicalProcedureIdentifier_01 = new C003_CompositeMedicalProcedureIdentifier_6();
            loop2220E.SVC_ServiceLineInformation.CompositeMedicalProcedureIdentifier_01.ProductorServiceIDQualifier_01 = "HC";
            loop2220E.SVC_ServiceLineInformation.CompositeMedicalProcedureIdentifier_01.ProcedureCode_02 = "99203";
            loop2220E.SVC_ServiceLineInformation.LineItemChargeAmount_02 = "150";
            loop2220E.SVC_ServiceLineInformation.MonetaryAmount_03 = "0";
            loop2220E.SVC_ServiceLineInformation.UnitsofServiceCount_07 = "1";

            //  Repeating STC
            loop2220E.STC_ServiceLineStatusInformation = new List();

            var stc = new STC_ClaimLevelStatusInformation();
            stc.HealthCareClaimStatus_01 = new C043_HealthCareClaimStatus();
            stc.HealthCareClaimStatus_01.HealthCareClaimStatusCategoryCode_01 = "F2";
            stc.HealthCareClaimStatus_01.StatusCode_02 = "88";
            stc.HealthCareClaimStatus_01.EntityIdentifierCode_03 = "QC";
            stc.Date_02 = "20050612";
            loop2220E.STC_ServiceLineStatusInformation.Add(stc);

            loop2220E.DTP_ServiceLineDate = new DTP_ClaimLevelServiceDate();
            loop2220E.DTP_ServiceLineDate.DateTimeQualifier_01 = "472";
            loop2220E.DTP_ServiceLineDate.DateTimePeriodFormatQualifier_02 = "D8";
            loop2220E.DTP_ServiceLineDate.DateTimePeriod_03 = "20050501";

            //  End 2220E Loop
            loop2200E.Loop2220E.Add(loop2220E);

            //  End 2200E Loop
            loop2000E.Loop2200E.Add(loop2200E);

            //  End 2000E Loop
            loop2000D3.Loop2000E.Add(loop2000E);

            //  End 2000D Loop 2
            loop2000C2.Loop2000D.Add(loop2000D3);

            //  End 2000C Loop 2
            loop2000B.Loop2000C.Add(loop2000C2);

            //  End 2000B Loop
            loop2000A.Loop2000B.Add(loop2000B);

            //  End 2000A Loop
            result.Loop2000A.Add(loop2000A);

            return result;
        }
    }
}

More operations in ediFabric .NET

277 questions

What codes does the 277 use for claim status?

STC01-1 is the claim status category code, for example P1 pending, F1 finalized/payment, F2 finalized/denial. STC01-2 is the detailed claim status code.

Is a 277 always a reply to a 276?

The 005010X212 response is. Payers can also send unsolicited 277 status notifications, and the 277CA (005010X214) acknowledges submitted claims.

Can the 276/277 run in real time?

Yes. Many payers support real-time claim status inquiries in addition to batch files.

How do I parse and generate X12 277 files in .NET, Python, Java and C?

In .NET, install EdiFabric and EdiFabric.Templates.Hipaa, read the file with X12Reader into TS277 objects and write them back with X12Writer. From Python, Java or C, use ediFabric Native, which converts 277 files to JSON and JSON back to X12 inside your process. From any other language, post the file to the ediFabric Cloud REST API.

Resources

Parse your first X12 277 in five minutes

The Community plan is free forever and needs no credit card. It includes ediFabric .NET, Native and Cloud with one serial key.

Sign up free Validate EDI files free