///<summary>Supply the transaction header(ST) when creating this object.</summary> public X12Transaction(X12Segment header) { }
///<summary>Supply the functional group header(GS) when creating this object.</summary> public X12FunctionalGroup(X12Segment header) { Header = header.Copy(); }
private static string SegmentToString(X12Segment segment) { string retVal = ""; string rn = "\r\n"; //HL if (segment.SegmentID == "HL") { retVal += rn; //insert a blank line before each loop switch (segment.Get(3)) { case "20": retVal += "Information Source:"; break; case "21": retVal += "Information Receiver:"; break; case "19": retVal += "Service Provider:"; break; case "22": retVal += "Subscriber:"; break; case "23": retVal += "Dependent:"; break; } retVal += rn; } //NM1 else if (segment.SegmentID == "NM1") { switch (segment.Get(1)) //payer ID code { case "PR": retVal = "Payer: "; break; case "41": retVal = "Submitter: "; break; case "1P": retVal = "Provider: "; break; case "IL": retVal = "Insured or Subscriber: "; break; case "QC": retVal = "Patient: "; break; case "85": retVal = "Billing Provider: "; break; } retVal += segment.Get(3) + ", " //LName + segment.Get(4) + " " //Fname + segment.Get(5) + " " //MiddleName + segment.Get(7) + ", " //Suffix + "ID code: " + segment.Get(9) + rn; //ID code } //PER else if (segment.SegmentID == "PER") { retVal = "Information Contact: " + segment.Get(2) + " " //Name + GetPERqualifier(segment.Get(3)) + " " + segment.Get(4) + " " + GetPERqualifier(segment.Get(5)) + " " + segment.Get(6) + " " + GetPERqualifier(segment.Get(7)) + " " + segment.Get(8) + rn; } //TRN else if (segment.SegmentID == "TRN") { retVal = "Trace Number: " + segment.Get(2) + rn; } //STC-Status information else if (segment.SegmentID == "STC") { retVal = "ClaimStatus :" //+segment.Get(1,1)+" "//Industry R code + "LOINC:" + segment.Get(1, 2) + ", " //LOINC code + "DATE: " + ConvertDate(segment.Get(2)) + " " + ConvertCurrency(segment.Get(4)) + " " //monetary amount + segment.Get(10, 2) + " " //LOINC code 2 + segment.Get(11, 2) + rn; //LOINC code 3 } //REF else if (segment.SegmentID == "REF") { switch (segment.Get(1)) { case "EJ": retVal = "Patient Account Number: "; break; case "BLT": retVal = "Billing Type: "; break; case "EA": retVal = "Medical Record ID Number: "; break; case "D9": retVal = "Claim Number: "; break; case "FJ": retVal = "Line Item Control Number: "; break; case "87": //functional category irrelevant return(""); case "9F": retVal = "Referral Number: "; break; case "6R": retVal = "Provider Control Number: "; break; case "G5": retVal = "Provider Site Number: "; break; case "1B": retVal = "Blue Shield Provider Number: "; break; } retVal += segment.Get(2) + rn; } //DTP(x2)-Date or Time period else if (segment.SegmentID == "DTP") { switch (segment.Get(1)) { case "434": retVal = "Statement date: "; break; case "106": retVal = "Required by: "; break; case "472": retVal = "Service date: "; break; } if (segment.Get(2) == "D8") //Date eight char { retVal += ConvertDate(segment.Get(3)) + rn; } else if (segment.Get(2) == "RD8") //Range Date eight char { retVal += ConvertDateRange(segment.Get(3)) + rn; } } //PWK-not very useful here //N1 else if (segment.SegmentID == "N1") { switch (segment.Get(1)) // { case "PR": retVal = "Payer: "; break; } retVal += segment.Get(2) + rn; } //N3 else if (segment.SegmentID == "N3") { retVal = segment.Get(1) + " " //address + segment.Get(2) + rn; //address2 } //N4-CityStateZip else if (segment.SegmentID == "N4") { retVal = segment.Get(1) + ", " //City + segment.Get(2) + " " //State + segment.Get(3) + " "; //Zip if (segment.Get(5) == "B1") //branch { retVal += "Branch " + segment.Get(6); } else if (segment.Get(5) == "DP") //department { retVal += "Department " + segment.Get(6); } retVal += rn; } //SVC-Service Line Information else if (segment.SegmentID == "SVC") { retVal = segment.Get(1, 2) + " " //procedure code + ConvertCurrency(segment.Get(2)) + " " //amount + segment.Get(4) + rn; //national Uniform Billing Code??? on institutional claims. } //SBR-subscriber on 837 //DMG-birthdate,gender on 837 //CLM-claim on 837 //DN2-tooth status on 837 //LX-line counter not needed //SV3-Dental service on 837 //TOO-Tooth info on 837 return(retVal); }