X12 HIPAA 271 Specification
X12 HIPAA 271 specification is available at:
X12 HIPAA 271 Sample File
X12 271 sample file is available at:
EDI Tools for .NET C# Examples
The example below is part of the EDI Tools for .NET C# Code Examples.
The Parse & Generate HIPAA 271 code is also available on GitHub
Additional operations for X12 HIPAA 271
- Parse X12 files
- Generate X12 files
- Validate X12 messages
- Generate X12 acknowledgments
- Save X12 files to DB
- Convert between X12 and JSON
- Convert between X12 and XML
How to parse & generate X12 HIPAA 271 with EDI Tools for .NET
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.T271
{
class Program
{
static void Main(string[] args)
{
SerialKey.Set(Common.SerialKey.Get());
Read();
Write();
}
///
/// Read Generic Response
///
static void Read()
{
var ediStream = File.OpenRead(Directory.GetCurrentDirectory() + @"\..\..\..\Files\Hipaa\GenericResponse.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 Generic Response
///
static void Write()
{
var transaction = BuildGenericResponse("4321");
using (var stream = new MemoryStream())
{
using (var writer = new X12Writer(stream))
{
writer.Write(SegmentBuilders.BuildIsa("1"));
writer.Write(SegmentBuilders.BuildGs("1", "SENDER1", "RECEIVER1", "005010X279A1"));
writer.Write(transaction);
}
var ediString = stream.LoadToString();
}
}
///
/// Builds generic response.
/// Original from http://www.x12.org/examples/005010X279/subscriber-who-is-also-the-patient/response-to-generic-request-by-clinic-for-patient-(subscriber)-eligibility/
///
static TS271 BuildGenericResponse(string controlNumber)
{
var result = new TS271();
// Transaction Set ID Code = 271 (Eligibility, Coverage or Benefit Information)
// Transaction Set Control Number = 4321
// Implementation Convention Reference = 005010X279A1
result.ST = new ST();
result.ST.TransactionSetIdentifierCode_01 = "271";
result.ST.TransactionSetControlNumber_02 = controlNumber.PadLeft(9, '0');
result.ST.ImplementationConventionPreference_03 = "005010X279A1";
// Hierarchical Structure Code = 0022 (Information Source, Information Receiver, Subscriber, Dependent)
// Transaction Set Purpose Code = 11(Response) Identification
// Reference Identification = 10001234
// Date = 20060501(May 1, 2006)
// Time = 1:19 PM
result.BHT_BeginningOfHierarchicalTransaction = new BHT_BeginningOfHierarchicalTransaction_2();
result.BHT_BeginningOfHierarchicalTransaction.HierarchicalStructureCode_01 = "0022";
result.BHT_BeginningOfHierarchicalTransaction.TransactionSetPurposeCode_02 = "11";
result.BHT_BeginningOfHierarchicalTransaction.SubmitterTransactionIdentifier_03 = "10001234";
result.BHT_BeginningOfHierarchicalTransaction.TransactionSetCreationDate_04 = "20060501";
result.BHT_BeginningOfHierarchicalTransaction.TransactionSetCreationTime_05 = "1319";
// Repeating 2000A Loops
result.Loop2000A = new List();
// Begin 2000A Loop
var loop2000A = new Loop_2000A_271();
// Hierarchical ID Number = 1
// Hierarchical Parent ID Number = *not used
// Hierarchical Level Code = 20(Information Source)
// Hierarchical Child Code = 1
loop2000A.HL_InformationSourceLevel = new HL_InformationSourceLevel();
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_271();
// Entity Identifier Code = PR (Payer)
// Entity Type Qualifier = 2(Non - person)
// Last Name = ABC Company
// First Name = *not used
// Middle Name = *not used
// Name Prefix = *not used
// Name Suffix = *not used
// Identification Code Qualifier = PI(Payer Identification)
// Identification Code = 842610001
loop2000A.Loop2100A.NM1_InformationSourceName = new NM1_InformationSourceName();
loop2000A.Loop2100A.NM1_InformationSourceName.EntityIdentifierCode_01 = "PR";
loop2000A.Loop2100A.NM1_InformationSourceName.EntityTypeQualifier_02 = "2";
loop2000A.Loop2100A.NM1_InformationSourceName.ResponseContactLastorOrganizationName_03 = "ABC COMPANY";
loop2000A.Loop2100A.NM1_InformationSourceName.IdentificationCodeQualifier_08 = "PI";
loop2000A.Loop2100A.NM1_InformationSourceName.ResponseContactIdentifier_09 = "842610001";
// End 2100A Loop
// Repeating 2000B Loops
loop2000A.Loop2000B = new List();
// Begin 2000B Loop
var loop2000B = new Loop_2000B_271();
// Hierarchical ID Number = 2
// Hierarchical Parent ID Number = 1
// Hierarchical Level Code = 21(Information Receiver)
// Hierarchical Child Code = 1
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_271();
// Entity Identifier Code = 1P (Provider)
// Entity Type Qualifier = 2(Non - Person Entity)
// Last Name = Bone and Joint Clinic
// First Name = *not used
// Middle Name = *not used
// Name Prefix = *not used
// Name Suffix = *not used
// Identification Code Qualifier = SV(Service Provider Number)
// Identification Code = 2000035
loop2000B.Loop2100B.NM1_InformationReceiverName = new NM1_InformationReceiverName_2();
loop2000B.Loop2100B.NM1_InformationReceiverName.EntityIdentifierCode_01 = "1P";
loop2000B.Loop2100B.NM1_InformationReceiverName.EntityTypeQualifier_02 = "2";
loop2000B.Loop2100B.NM1_InformationReceiverName.ResponseContactLastorOrganizationName_03 = "BONE AND JOINT CLINIC";
loop2000B.Loop2100B.NM1_InformationReceiverName.IdentificationCodeQualifier_08 = "SV";
loop2000B.Loop2100B.NM1_InformationReceiverName.ResponseContactIdentifier_09 = "2000035";
// End 2100B Loop
// Repeating 2000C Loops
loop2000B.Loop2000C = new List();
// Begin 2000C Loop 1
var loop2000C1 = new Loop_2000C_271();
// Hierarchical ID Number = 3
// Hierarchical Parent ID Number = 2
// Hierarchical Level Code = 22(Subscriber)
// Hierarchical Child Code = 0
loop2000C1.HL_SubscriberLevel = new HL_SubscriberHierarchicalLevel();
loop2000C1.HL_SubscriberLevel.HierarchicalIDNumber_01 = "3";
loop2000C1.HL_SubscriberLevel.HierarchicalParentIDNumber_02 = "2";
loop2000C1.HL_SubscriberLevel.HierarchicalLevelCode_03 = "22";
loop2000C1.HL_SubscriberLevel.HierarchicalChildCode_04 = "0";
// Repeating TRN
loop2000C1.TRN_SubscriberTraceNumber = new List();
// Trace Type Code = 2 (Referenced Transaction Trace Number)
// Reference Identification = 93175 - 012547
// Originating Company Identifier = 9877281234
// Reference Identification = *not used
var trn = new TRN_DependentTraceNumber_2();
trn.TraceTypeCode_01 = "2";
trn.CurrentTransactionTraceNumber_02 = "93175-012547";
trn.OriginatingCompanyIdentifier_03 = "9877281234";
loop2000C1.TRN_SubscriberTraceNumber.Add(trn);
// Begin 2100C Loop
loop2000C1.Loop2100C = new Loop_2100C_271();
// Entity Identifier Code = IL (Insured or Subscriber)
// Entity Type Qualifier = 1(Person)
// Last Name = Smith
// First Name = John
// Middle Name = *not used
// Name Prefix = *not used
// Name Suffix = *not used
// Identification Code Qualifier = MI(Member Identification)
// Identification Code = 123456789
loop2000C1.Loop2100C.NM1_SubscriberName = new NM1_SubscriberName();
loop2000C1.Loop2100C.NM1_SubscriberName.EntityIdentifierCode_01 = "IL";
loop2000C1.Loop2100C.NM1_SubscriberName.EntityTypeQualifier_02 = "1";
loop2000C1.Loop2100C.NM1_SubscriberName.ResponseContactLastorOrganizationName_03 = "SMITH";
loop2000C1.Loop2100C.NM1_SubscriberName.ResponseContactFirstName_04 = "JOHN";
loop2000C1.Loop2100C.NM1_SubscriberName.IdentificationCodeQualifier_08 = "MI";
loop2000C1.Loop2100C.NM1_SubscriberName.ResponseContactIdentifier_09 = "123456789";
// Address Information = 15197 BROADWAY AVENUE
// Address Information = APT 215
loop2000C1.Loop2100C.N3_SubscriberAddress = new N3_AdditionalPatientInformationContactAddress();
loop2000C1.Loop2100C.N3_SubscriberAddress.ResponseContactAddressLine_01 = "15197 BROADWAY AVENUE";
loop2000C1.Loop2100C.N3_SubscriberAddress.ResponseContactAddressLine_02 = "APT 215";
// City = KANSAS CITY
// State or Prov Code = MO
// Postal Code = 64108
loop2000C1.Loop2100C.N4_SubscriberCity_State_ZIPCode = new N4_AdditionalPatientInformationContactCity();
loop2000C1.Loop2100C.N4_SubscriberCity_State_ZIPCode.AdditionalPatientInformationContactCityName_01 = "KANSAS CITY";
loop2000C1.Loop2100C.N4_SubscriberCity_State_ZIPCode.AdditionalPatientInformationContactStateCode_02 = "MO";
loop2000C1.Loop2100C.N4_SubscriberCity_State_ZIPCode.AdditionalPatientInformationContactPostalZoneorZIPCode_03 = "64108";
// Date Time Period Format = D8 (Date Expressed in Format CCYYMMDD)
// Date Time Period = 19630519
// Gender Code = M(Male)
loop2000C1.Loop2100C.DMG_SubscriberDemographicInformation = new DMG_DependentDemographicInformation_2();
loop2000C1.Loop2100C.DMG_SubscriberDemographicInformation.DateTimePeriodFormatQualifier_01 = "D8";
loop2000C1.Loop2100C.DMG_SubscriberDemographicInformation.DependentBirthDate_02 = "19630519";
loop2000C1.Loop2100C.DMG_SubscriberDemographicInformation.DependentGenderCode_03 = "M";
// Repeating DTP
loop2000C1.Loop2100C.DTP_SubscriberDate = new List();
// Date/Time Qualifier = 346 (Plan Begin)
// Date Time Period Format Qualifier D8(Dates Expressed in Format CCYYMMDD)
// Date Time Period = 20060101(January 1, 2006)
var dtp = new DTP_EligibilityOrBenefitDate();
dtp.DateTimeQualifier_01 = "346";
dtp.DateTimePeriodFormatQualifier_02 = "D8";
dtp.DateTimePeriod_03 = "20060101";
loop2000C1.Loop2100C.DTP_SubscriberDate.Add(dtp);
// Repeating 2110C Loops
loop2000C1.Loop2100C.Loop2110C = new List();
// Begin 2110C Loop 1
var loop2110C1 = new Loop_2110C_271();
// Eligibility or Benefit Information Code = 1 (Active Coverage)
// Coverage Level Code = *not used
// Service Type Code = 30(Health Benefit Plan Coverage)
// Insurance Type Code = *not used
// Plan Coverage Description = Gold 123 Plan
loop2110C1.EB_SubscriberEligibilityorBenefitInformation = new EB_SubscriberEligibilityorBenefitInformation();
loop2110C1.EB_SubscriberEligibilityorBenefitInformation.EligibilityorBenefitInformation_01 = "1";
loop2110C1.EB_SubscriberEligibilityorBenefitInformation.ServiceTypeCode_03 = new List { "30" };
loop2110C1.EB_SubscriberEligibilityorBenefitInformation.PlanCoverageDescription_05 = "GOLD 123 PLAN";
// End 2110C Loop 1
loop2000C1.Loop2100C.Loop2110C.Add(loop2110C1);
// Begin 2110C Loop 2
var loop2110C2 = new Loop_2110C_271();
// Eligibility or Benefit Information Code = L (Primary Care Provider)
loop2110C2.EB_SubscriberEligibilityorBenefitInformation = new EB_SubscriberEligibilityorBenefitInformation();
loop2110C2.EB_SubscriberEligibilityorBenefitInformation.EligibilityorBenefitInformation_01 = "L";
// End 2110C Loop 2
loop2000C1.Loop2100C.Loop2110C.Add(loop2110C2);
// Begin 2110C Loop 3
var loop2110C3 = new Loop_2110C_271();
// Eligibility or Benefit Information Code = 1 (Active Coverage)
// Coverage Level Code = *not used
// Service Type Code = 1(Medical Care)
// Service Type Code = 33(Chiropractic)
// Service Type Code = 35(Dental Care)
// Service Type Code = 47(Hospital)
// Service Type Code = 86(Emergency Services)
// Service Type Code = 88(Pharmacy)
// Service Type Code = 98(Professional(Physician) Visit - Office)
// Service Type Code = AL(Vision(Optometry))
// Service Type Code = MH(Mental Health)
// Service Type Code = UC(Urgent Care)
loop2110C3.EB_SubscriberEligibilityorBenefitInformation = new EB_SubscriberEligibilityorBenefitInformation();
loop2110C3.EB_SubscriberEligibilityorBenefitInformation.EligibilityorBenefitInformation_01 = "1";
loop2110C3.EB_SubscriberEligibilityorBenefitInformation.ServiceTypeCode_03 = new List { "1", "33", "35", "47", "86", "88", "98", "AL", "MH", "UC" };
// End 2110C Loop 3
loop2000C1.Loop2100C.Loop2110C.Add(loop2110C3);
// Begin 2110C Loop 4
var loop2110C4 = new Loop_2110C_271();
// Eligibility or Benefit Information Code = B (Co-Payment)
// Coverage Level Code = *not used
// Service Type Code = 1(Medical Care)
// Service Type Code = 33(Chiropractic)
// Service Type Code = 35(Dental Care)
// Service Type Code = 47(Hospital)
// Service Type Code = 86(Emergency Services)
// Service Type Code = 88(Pharmacy)
// Service Type Code = 98(Professional(Physician) Visit - Office)
// Service Type Code = AL(Vision(Optometry))
// Service Type Code = MH(Mental Health)
// Service Type Code = UC(Urgent Care)
// Insurance Type Code = HM (Health Management Organization (HMO))
// Plan Coverage Description = GOLD 123 PLAN
// Time Period Qualifier = 27(Visit)
// Monetary Value = 10(Dollar)
// Percent = *not used
// Quantity Qualifier = *not used
// Quantity = *not used
// Yes / No Condition Or Response Code(Certification/ Authorization Indicator) = *not used
// Yes / No Condition Or Response Code(In Plan Network Indicator) = Y(Yes – In Network)
loop2110C4.EB_SubscriberEligibilityorBenefitInformation = new EB_SubscriberEligibilityorBenefitInformation();
loop2110C4.EB_SubscriberEligibilityorBenefitInformation.EligibilityorBenefitInformation_01 = "B";
loop2110C4.EB_SubscriberEligibilityorBenefitInformation.ServiceTypeCode_03 = new List { "1", "33", "35", "47", "86", "88", "98", "AL", "MH", "UC" };
loop2110C4.EB_SubscriberEligibilityorBenefitInformation.InsuranceTypeCode_04 = "HM";
loop2110C4.EB_SubscriberEligibilityorBenefitInformation.PlanCoverageDescription_05 = "GOLD 123 PLAN";
loop2110C4.EB_SubscriberEligibilityorBenefitInformation.TimePeriodQualifier_06 = "27";
loop2110C4.EB_SubscriberEligibilityorBenefitInformation.BenefitAmount_07 = "10";
loop2110C4.EB_SubscriberEligibilityorBenefitInformation.InPlanNetworkIndicator_12 = "Y";
// End 2110C Loop 4
loop2000C1.Loop2100C.Loop2110C.Add(loop2110C4);
// Begin 2110C Loop 5
var loop2110C5 = new Loop_2110C_271();
// Eligibility or Benefit Information Code = B (Co-Payment)
// Coverage Level Code = *not used
// Service Type Code = 1(Medical Care)
// Service Type Code = 33(Chiropractic)
// Service Type Code = 35(Dental Care)
// Service Type Code = 47(Hospital)
// Service Type Code = 86(Emergency Services)
// Service Type Code = 88(Pharmacy)
// Service Type Code = 98(Professional(Physician) Visit - Office)
// Service Type Code = AL(Vision(Optometry))
// Service Type Code = MH(Mental Health)
// Service Type Code = UC(Urgent Care)
// Insurance Type Code = HM (Health Management Organization (HMO))
// Plan Coverage Description = GOLD 123 PLAN
// Time Period Qualifier = 27(Visit)
// Monetary Value = 30(Dollar)
// Percent = *not used
// Quantity Qualifier = *not used
// Quantity = *not used
// Yes/No Condition Or Response Code (Certification/Authorization Indicator) = * not used
// Yes / No Condition Or Response Code(In Plan Network Indicator) = N(No – Out of Network)
loop2110C5.EB_SubscriberEligibilityorBenefitInformation = new EB_SubscriberEligibilityorBenefitInformation();
loop2110C5.EB_SubscriberEligibilityorBenefitInformation.EligibilityorBenefitInformation_01 = "B";
loop2110C5.EB_SubscriberEligibilityorBenefitInformation.ServiceTypeCode_03 = new List { "1", "33", "35", "47", "86", "88", "98", "AL", "MH", "UC" };
loop2110C5.EB_SubscriberEligibilityorBenefitInformation.InsuranceTypeCode_04 = "HM";
loop2110C5.EB_SubscriberEligibilityorBenefitInformation.PlanCoverageDescription_05 = "GOLD 123 PLAN";
loop2110C5.EB_SubscriberEligibilityorBenefitInformation.TimePeriodQualifier_06 = "27";
loop2110C5.EB_SubscriberEligibilityorBenefitInformation.BenefitAmount_07 = "30";
loop2110C5.EB_SubscriberEligibilityorBenefitInformation.InPlanNetworkIndicator_12 = "N";
// Begin LS Loop
loop2110C5.LoopLS = new Loop_LS_271_2();
// Loop Identifier Code = 2120
loop2110C5.LoopLS.LS_Header = new LS_AdditionalReportingCategories();
loop2110C5.LoopLS.LS_Header.LoopIdentifierCode_01 = "2120";
// Repeating 2120C Loops
loop2110C5.LoopLS.Loop2120C = new List();
// Begin 2110C Loop
var loop2120C = new Loop_2120C_271();
// Entity Identifier Code = P3 (Primary Care Provider)
// Entity Type Qualifier = 1(Person)
// Last Name = Jones
// First Name = Marcus
// Middle Name = *not used
// Name Prefix = *not used
// Name Suffix = *not used
// Identification Code Qualifier = SV Service Provider Number
// Identification Code = 0202034
loop2120C.NM1_SubscriberBenefitRelatedEntityName = new NM1_DependentBenefitRelatedEntityName();
loop2120C.NM1_SubscriberBenefitRelatedEntityName.EntityIdentifierCode_01 = "P3";
loop2120C.NM1_SubscriberBenefitRelatedEntityName.EntityTypeQualifier_02 = "1";
loop2120C.NM1_SubscriberBenefitRelatedEntityName.ResponseContactLastorOrganizationName_03 = "JONES";
loop2120C.NM1_SubscriberBenefitRelatedEntityName.ResponseContactFirstName_04 = "MARCUS";
loop2120C.NM1_SubscriberBenefitRelatedEntityName.IdentificationCodeQualifier_08 = "SV";
loop2120C.NM1_SubscriberBenefitRelatedEntityName.ResponseContactIdentifier_09 = "0202034";
// End 2110C Loop
loop2110C5.LoopLS.Loop2120C.Add(loop2120C);
// Loop Identifier Code = 2120
loop2110C5.LoopLS.LE_Trailer = new LE_AdditionalReportingCategoriesTermination();
loop2110C5.LoopLS.LE_Trailer.LoopIdentifierCode_01 = "2120";
// End LS Loop
// End 2110C Loop 5
loop2000C1.Loop2100C.Loop2110C.Add(loop2110C5);
// End 2100C Loop
// End 2000C Loop 1
loop2000B.Loop2000C.Add(loop2000C1);
// End 2000B Loop
loop2000A.Loop2000B.Add(loop2000B);
// End 2000A Loop
result.Loop2000A.Add(loop2000A);
return result;
}
}
}
Comments
0 comments
Please sign in to leave a comment.