X12 276 Health Care Claim Status Request Last updated: 2026-09-29
The 276 (005010X212) is the HIPAA transaction a provider sends to ask a payer about the status of one or more submitted claims. The payer answers with a 277.
The request identifies the payer, the provider, the subscriber and dependent, and each claim with its patient control number, charge amount and dates of service.
At a glance
- Standard
- X12 HIPAA
- Implementation guide
005010X212- Functional group
HR(GS01)- Sent by
- Provider to payer
- Responses
- 277, 999
- ediFabric .NET template
TS276inEdiFabric.Templates.Hipaa- OpenEDI definition
- View 276 in the spec library
276 structure
The full X12 276 layout from its OpenEDI definition, the same model ediFabric uses to parse, validate and generate it: 14 loops and 41 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 |
|---|---|---|---|
ST | Transaction Set Header | Required | 1 |
BHT | Beginning of Hierarchical Transaction | Required | 1 |
| Loop 2000A | Information Source Level | Required | >1 |
HL | Information Source Level | Required | 1 |
| Loop 2100A | Payer Name | Required | 1 |
NM1 | Payer Name | Required | 1 |
| Loop 2000B | Information Receiver Level | Required | >1 |
HL | Information Receiver Level | Required | 1 |
| Loop 2100B | Information Receiver Name | Required | 1 |
NM1 | Information Receiver Name | Required | 1 |
| Loop 2000C | Service Provider Level | Required | >1 |
HL | Service Provider Level | Required | 1 |
| Loop 2100C | Provider Name | Required | 2 |
NM1 | Provider Name | Required | 1 |
| Loop 2000D | Subscriber Level | Required | >1 |
HL | Subscriber Level | Required | 1 |
DMG | Subscriber Demographic Information | Situational | 1 |
| Loop 2100D | Subscriber Name | Required | 1 |
NM1 | Subscriber Name | Required | 1 |
| Loop 2200D | Claim Status Tracking Number | Situational | >1 |
TRN | Claim Status Tracking Number | Required | 1 |
| Any order | The loops below can appear in any order | Situational | 1 |
REF | Payer Claim Control Number | Situational | 1 |
REF | Institutional Bill Type Identification | Situational | 1 |
REF | Applicationor Location System Identifier | Situational | 1 |
REF | Group Number | Situational | 1 |
REF | Patient Control Number | Situational | 1 |
REF | Pharmacy Prescription Number | Situational | 1 |
REF | Claim Identification Number for Clearinghouses and Other Transmission Intermediaries | Situational | 1 |
AMT | Claim Submitted Charges | Situational | 1 |
DTP | Claim Service Date | Situational | 1 |
| Loop 2210D | Service Line Information | Situational | >1 |
SVC | Service Line Information | Required | 1 |
REF | Service Line Item Identification | Situational | 1 |
DTP | Service Line Date | Required | 1 |
| Loop 2000E | Dependent Level | Situational | >1 |
HL | Dependent Level | Required | 1 |
DMG | Dependent Demographic Information | Required | 1 |
| Loop 2100E | Dependent Name | Required | 1 |
NM1 | Dependent Name | Required | 1 |
| Loop 2200E | Claim Status Tracking Number | Required | >1 |
TRN | Claim Status Tracking Number | Required | 1 |
| Any order | The loops below can appear in any order | Situational | 1 |
REF | Payer Claim Control Number | Situational | 1 |
REF | Institutional Bill Type Identification | Situational | 1 |
REF | Applicationor Location System Identifier | Situational | 1 |
REF | Group Number | Situational | 1 |
REF | Patient Control Number | Situational | 1 |
REF | Pharmacy Prescription Number | Situational | 1 |
REF | Claim Identification Number for Clearinghouses and Other Transmission Intermediaries | Situational | 1 |
AMT | Claim Submitted Charges | Situational | 1 |
DTP | Claim Service Date | Situational | 1 |
| Loop 2210E | Service Line Information | Situational | >1 |
SVC | Service Line Information | Required | 1 |
REF | Service Line Item Identification | Situational | 1 |
DTP | Service Line Date | Required | 1 |
SE | Transaction Set Trailer | Required | 1 |
Sample 276 file
A claim status request for claims under one provider. 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*276*0001*005010X212~ BHT*0010*13*ABC276XXX*20050915*1425~ 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~ DMG*D8*19301210*M~ NM1*IL*1*SMITH*FRED****MI*123456789A~ TRN*1*ABCXYZ1~ REF*BLT*111~ REF*EJ*SM123456~ AMT*T3*8513.88~ DTP*472*RD8*20050831-20050906~ HL*5*3*22*0~ DMG*D8*19301115*F~ NM1*IL*1*JONES*MARY****MI*234567890A~ TRN*1*ABCXYZ2~ REF*BLT*111~ REF*EJ*JO234567~ AMT*T3*7599~ 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~ DMG*D8*19951101*M~ NM1*QC*1*MANN*JOSEPH~ TRN*1*ABCXYZ3~ REF*EJ*MA345678~ SVC*HC:99203*150*****1~ DTP*472*D8*20050501~ SE*36*0001~ GE*1*101~ IEA*1*000000101~
The same 276 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": "276",
"TransactionSetControlNumber_02": "0001",
"ImplementationConventionPreference_03": "005010X212"
},
"BHT_BeginningOfHierarchicalTransaction": {
"HierarchicalStructureCode_01": "0010",
"TransactionSetPurposeCode_02": "13",
"SubmitterTransactionIdentifier_03": "ABC276XXX",
"TransactionSetCreationDate_04": "20050915",
"TransactionSetCreationTime_05": "1425"
},
"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"
},
"DMG_SubscriberDemographicInformation": {
"DateTimePeriodFormatQualifier_01": "D8",
"DependentBirthDate_02": "19301210",
"DependentGenderCode_03": "M"
},
"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": "1",
"CurrentTransactionTraceNumber_02": "ABCXYZ1"
},
"AllREF": {
"REF_InstitutionalBillTypeIdentification": {
"ReferenceIdentificationQualifier_01": "BLT",
"MemberGrouporPolicyNumber_02": "111"
},
"REF_PatientControlNumber": {
"ReferenceIdentificationQualifier_01": "EJ",
"MemberGrouporPolicyNumber_02": "SM123456"
}
},
"AMT_ClaimSubmittedCharges": {
"AmountQualifierCode_01": "T3",
"TotalClaimChargeAmount_02": "8513.88"
},
"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"
},
"DMG_SubscriberDemographicInformation": {
"DateTimePeriodFormatQualifier_01": "D8",
"DependentBirthDate_02": "19301115",
"DependentGenderCode_03": "F"
},
"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": "1",
"CurrentTransactionTraceNumber_02": "ABCXYZ2"
},
"AllREF": {
"REF_InstitutionalBillTypeIdentification": {
"ReferenceIdentificationQualifier_01": "BLT",
"MemberGrouporPolicyNumber_02": "111"
},
"REF_PatientControlNumber": {
"ReferenceIdentificationQualifier_01": "EJ",
"MemberGrouporPolicyNumber_02": "JO234567"
}
},
"AMT_ClaimSubmittedCharges": {
"AmountQualifierCode_01": "T3",
"TotalClaimChargeAmount_02": "7599"
},
"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"
},
"DMG_DependentDemographicInformation": {
"DateTimePeriodFormatQualifier_01": "D8",
"DependentBirthDate_02": "19951101",
"DependentGenderCode_03": "M"
},
"Loop2100E": {
"NM1_DependentName": {
"EntityIdentifierCode_01": "QC",
"EntityTypeQualifier_02": "1",
"ResponseContactLastorOrganizationName_03": "MANN",
"ResponseContactFirstName_04": "JOSEPH"
}
},
"Loop2200E": [
{
"TRN_ClaimStatusTrackingNumber": {
"TraceTypeCode_01": "1",
"CurrentTransactionTraceNumber_02": "ABCXYZ3"
},
"AllREF": {
"REF_PatientControlNumber": {
"ReferenceIdentificationQualifier_01": "EJ",
"MemberGrouporPolicyNumber_02": "MA345678"
}
},
"Loop2210E": [
{
"SVC_ServiceLineInformation": {
"CompositeMedicalProcedureIdentifier_01": {
"ProductorServiceIDQualifier_01": "HC",
"ProcedureCode_02": "99203"
},
"LineItemChargeAmount_02": "150",
"UnitsofServiceCount_07": "1"
},
"DTP_ServiceLineDate": {
"DateTimeQualifier_01": "472",
"DateTimePeriodFormatQualifier_02": "D8",
"DateTimePeriod_03": "20050501"
}
}
]
}
]
}
]
}
]
}
]
}
]
}
],
"SE": {
"NumberofIncludedSegments_01": "36",
"TransactionSetControlNumber_02": "0001"
}
}Parse and validate a 276 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\RequestTransmission.txt")) using (var reader = new X12Reader(stream, "EdiFabric.Templates.Hipaa")) { var items = await reader.ReadToEndAsync(); foreach (var transaction in items.OfType<TS276>()) { 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("RequestTransmission.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("RequestTransmission.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("RequestTransmission.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 '@RequestTransmission.txt'
Generate a 276 file
Populate a TS276 object in .NET, or pass JSON in the shape shown above to ediFabric Native or ediFabric Cloud, and get a valid 276 file back.
using EdiFabric.Templates.Hipaa5010; License.SetSerial("YOUR_SERIAL_KEY"); var transaction = new TS276(); transaction.ST = new ST(); transaction.ST.TransactionSetIdentifierCode_01 = "276"; transaction.ST.TransactionSetControlNumber_02 = "0001"; transaction.ST.ImplementationConventionPreference_03 = "005010X212"; transaction.BHT_BeginningOfHierarchicalTransaction = new BHT_BeginningOfHierarchicalTransaction_3(); transaction.BHT_BeginningOfHierarchicalTransaction.HierarchicalStructureCode_01 = "0010"; transaction.BHT_BeginningOfHierarchicalTransaction.TransactionSetPurposeCode_02 = "13"; transaction.BHT_BeginningOfHierarchicalTransaction.SubmitterTransactionIdentifier_03 = "ABC276XXX"; transaction.BHT_BeginningOfHierarchicalTransaction.TransactionSetCreationDate_04 = "20050915"; transaction.BHT_BeginningOfHierarchicalTransaction.TransactionSetCreationTime_05 = "1425"; // Repeating 2000A Loops transaction.Loop2000A = new List<Loop_2000A_276>(); // Begin 2000A Loop var loop2000A = new Loop_2000A_276(); // ... 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("RequestTransmission.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("RequestTransmission.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("RequestTransmission.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 '@RequestTransmission.json' \ -o 'RequestTransmission.txt'
Complete ediFabric .NET example
A complete C# program for the X12 276, built on TS276 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.T276
{
class Program
{
static void Main(string[] args)
{
SerialKey.Set(Common.SerialKey.Get());
Read();
Write();
}
///
/// Read Request Transmission
///
static void Read()
{
var ediStream = File.OpenRead(Directory.GetCurrentDirectory() + @"\..\..\..\Files\Hipaa\RequestTransmission.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 Request Transmission
///
static void Write()
{
var transaction = BuildRequestTransmission("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 request transmission.
/// Original from http://www.x12.org/examples/005010X212/claim-level-status/x212-276-claim-request/
/// Claim 1
/// Request: Fred Smith is a Medicare enrollee with a health insurance claim number of 123456789A.Mr.Smith's birth date is 12/10/1930.
/// A claim status tracking number of ABCXYZ1 was assigned to the status inquiry for Mr. Smith's claim.
/// Home Hospital requested the status of a claim for inpatient services (bill type 111) for services August 31, 2005 through September 6, 2005 in the amount of $8,513.88.
/// Home Hospital provided a patient control number of SM123456.
/// Claim 2
/// Request: Mary Jones is a Medicare enrollee with a health insurance claim number of 234567890A.Mrs.Jones' birth date is 11/15/1930.
/// A claim status tracking number of ABCXYZ2 was assigned to the status inquiry for Mrs. Jones' claim.
/// Home Hospital requested the status of a claim for inpatient services (bill type 111) from July 31, 2005 through August 9, 2005 in the amount of $7,599.00.
/// Home Hospital provided a patient control number of JO234567.
/// Claim 3
/// Request: Joseph Mann is a dependent under John Mann's PPO plan. John Mann is the insured, or subscriber, and his member identification is 345678901.
/// Joseph Mann's birth date is 11/01/1995. A claim status tracking number of ABCXYZ3 was assigned to the status inquiry for Joseph Mann's claim.
/// Home Hospital Physicians requested the status of a service (99203) on May 1, 2005 in the amount of $150.00.
/// Home Hospital Physicians provided a patient control number of MA345678.
///
static TS276 BuildRequestTransmission(string controlNumber)
{
var result = new TS276();
result.ST = new ST();
result.ST.TransactionSetIdentifierCode_01 = "276";
result.ST.TransactionSetControlNumber_02 = controlNumber.PadLeft(9, '0');
result.ST.ImplementationConventionPreference_03 = "005010X212";
result.BHT_BeginningOfHierarchicalTransaction = new BHT_BeginningOfHierarchicalTransaction_3();
result.BHT_BeginningOfHierarchicalTransaction.HierarchicalStructureCode_01 = "0010";
result.BHT_BeginningOfHierarchicalTransaction.TransactionSetPurposeCode_02 = "13";
result.BHT_BeginningOfHierarchicalTransaction.SubmitterTransactionIdentifier_03 = "ABC276XXX";
result.BHT_BeginningOfHierarchicalTransaction.TransactionSetCreationDate_04 = "20050915";
result.BHT_BeginningOfHierarchicalTransaction.TransactionSetCreationTime_05 = "1425";
// Repeating 2000A Loops
result.Loop2000A = new List();
// Begin 2000A Loop
var loop2000A = new Loop_2000A_276();
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_276();
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_276();
loop2000B.HL_InformationReceiverLevel = new HL_InformationReceiverLevel();
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_276();
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_276();
loop2000C1.HL_ServiceProviderLevel = new HL_ServiceProviderLevel();
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_276();
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_276();
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";
loop2000D1.DMG_SubscriberDemographicInformation = new DMG_DependentDemographicInformation_3();
loop2000D1.DMG_SubscriberDemographicInformation.DateTimePeriodFormatQualifier_01 = "D8";
loop2000D1.DMG_SubscriberDemographicInformation.DependentBirthDate_02 = "19301210";
loop2000D1.DMG_SubscriberDemographicInformation.DependentGenderCode_03 = "M";
// Begin 2100D Loop
loop2000D1.Loop2100D = new Loop_2100D_276();
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_276();
loop2200D.TRN_ClaimStatusTrackingNumber = new TRN_ClaimStatusTrackingNumber();
loop2200D.TRN_ClaimStatusTrackingNumber.TraceTypeCode_01 = "1";
loop2200D.TRN_ClaimStatusTrackingNumber.CurrentTransactionTraceNumber_02 = "ABCXYZ1";
// Occurrence of REF Segments in any order
loop2200D.AllREF = new All_REF_276();
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.AMT_ClaimSubmittedCharges = new AMT_ClaimSubmittedCharges();
loop2200D.AMT_ClaimSubmittedCharges.AmountQualifierCode_01 = "T3";
loop2200D.AMT_ClaimSubmittedCharges.TotalClaimChargeAmount_02 = "8513.88";
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_276();
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";
loop2000D2.DMG_SubscriberDemographicInformation = new DMG_DependentDemographicInformation_3();
loop2000D2.DMG_SubscriberDemographicInformation.DateTimePeriodFormatQualifier_01 = "D8";
loop2000D2.DMG_SubscriberDemographicInformation.DependentBirthDate_02 = "19301115";
loop2000D2.DMG_SubscriberDemographicInformation.DependentGenderCode_03 = "F";
// Begin 2100D Loop
loop2000D2.Loop2100D = new Loop_2100D_276();
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_276();
loop2200D2.TRN_ClaimStatusTrackingNumber = new TRN_ClaimStatusTrackingNumber();
loop2200D2.TRN_ClaimStatusTrackingNumber.TraceTypeCode_01 = "1";
loop2200D2.TRN_ClaimStatusTrackingNumber.CurrentTransactionTraceNumber_02 = "ABCXYZ2";
// Occurrence of REF Segments in any order
loop2200D2.AllREF = new All_REF_276();
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.AMT_ClaimSubmittedCharges = new AMT_ClaimSubmittedCharges();
loop2200D2.AMT_ClaimSubmittedCharges.AmountQualifierCode_01 = "T3";
loop2200D2.AMT_ClaimSubmittedCharges.TotalClaimChargeAmount_02 = "7599";
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_276();
loop2000C2.HL_ServiceProviderLevel = new HL_ServiceProviderLevel();
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_276();
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_276();
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_276();
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_276();
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";
loop2000E.DMG_DependentDemographicInformation = new DMG_DependentDemographicInformation_3();
loop2000E.DMG_DependentDemographicInformation.DateTimePeriodFormatQualifier_01 = "D8";
loop2000E.DMG_DependentDemographicInformation.DependentBirthDate_02 = "19951101";
loop2000E.DMG_DependentDemographicInformation.DependentGenderCode_03 = "M";
// Begin 2100E Loop
loop2000E.Loop2100E = new Loop_2100E_276();
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_276();
loop2200E.TRN_ClaimStatusTrackingNumber = new TRN_ClaimStatusTrackingNumber();
loop2200E.TRN_ClaimStatusTrackingNumber.TraceTypeCode_01 = "1";
loop2200E.TRN_ClaimStatusTrackingNumber.CurrentTransactionTraceNumber_02 = "ABCXYZ3";
// Occurrence of REF Segments in any order
loop2200E.AllREF = new All_REF_276();
loop2200E.AllREF.REF_PatientControlNumber = new REF_PatientControlNumber();
loop2200E.AllREF.REF_PatientControlNumber.ReferenceIdentificationQualifier_01 = "EJ";
loop2200E.AllREF.REF_PatientControlNumber.MemberGrouporPolicyNumber_02 = "MA345678";
// Repeating 2210E Loops
loop2200E.Loop2210E = new List();
// Begin 2210E Loop
var loop2210E = new Loop_2210E_276();
loop2210E.SVC_ServiceLineInformation = new SVC_ServiceLineInformation();
loop2210E.SVC_ServiceLineInformation.CompositeMedicalProcedureIdentifier_01 = new C003_CompositeMedicalProcedureIdentifier_6();
loop2210E.SVC_ServiceLineInformation.CompositeMedicalProcedureIdentifier_01.ProductorServiceIDQualifier_01 = "HC";
loop2210E.SVC_ServiceLineInformation.CompositeMedicalProcedureIdentifier_01.ProcedureCode_02 = "99203";
loop2210E.SVC_ServiceLineInformation.LineItemChargeAmount_02 = "150";
loop2210E.SVC_ServiceLineInformation.UnitsofServiceCount_07 = "1";
loop2210E.DTP_ServiceLineDate = new DTP_ClaimLevelServiceDate();
loop2210E.DTP_ServiceLineDate.DateTimeQualifier_01 = "472";
loop2210E.DTP_ServiceLineDate.DateTimePeriodFormatQualifier_02 = "D8";
loop2210E.DTP_ServiceLineDate.DateTimePeriod_03 = "20050501";
// End 2210E Loop
loop2200E.Loop2210E.Add(loop2210E);
// 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
276 questions
What response does a payer send to a 276?
A 277 claim status response (005010X212) with an STC status for each claim, and a 999 for the file.
How is a claim identified in a 276?
By the TRN trace number, the patient control number in REF, the claim charge amount in AMT and the service dates in DTP. The payer's claim number can be sent in REF*1K when known.
Should I poll with 276 requests?
Payers publish limits. The 277CA and the 835 already report acceptance and payment, so a 276 is usually sent only when a claim has not been reported within the expected time.
How do I parse and generate X12 276 files in .NET, Python, Java and C?
In .NET, install EdiFabric and EdiFabric.Templates.Hipaa, read the file with X12Reader into TS276 objects and write them back with X12Writer. From Python, Java or C, use ediFabric Native, which converts 276 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 276 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