public static string parse_to_billing_provider(string filename) { string returnmessage = ""; string isa_segment = ""; string iea_segment = ""; string gs_segment = ""; string ge_segment = ""; string se_segment = ""; string st_segment = ""; string transaction_set = ""; string line = ""; string segment_type = ""; bool is835 = true; bool fatal = false; bool first = true; string[] output = new string[1000]; string[] provider = new string[1000]; int i = 0; DelimitedFileReader remittance = new DelimitedFileReader(filename, "~\n"); try { line = remittance.Read(); if (line[0] == 'I') { do { string[] segment = line.Replace("~", "*").Split("*".ToCharArray()); segment_type = segment.GetValue(0).ToString(); switch (segment_type) { case "BPR": if (is835 == true) { if (first == false) { i += 1; } first = false; output[i] += line.ToString(); } break; case "GE": ge_segment = line.ToString(); break; case "GS": gs_segment = line.ToString(); break; case "IEA": iea_segment = line.ToString(); for (int ii = 0; ii <= i; ii++) { if (output.GetValue(ii).ToString().Contains("ISA*00") == false) { output[ii] = isa_segment + gs_segment + output.GetValue(ii).ToString() + ge_segment + iea_segment; } } break; case "ISA": isa_segment = line.ToString(); break; case "N1": if (is835 == true) { switch (segment.GetValue(1).ToString()) { case "PE": provider[i] = segment.GetValue(2).ToString(); break; default: break; } output[i] += line.ToString(); } break; case "SE": if (is835 == true) { se_segment = line.ToString(); for (int ii = 0; ii <= i; ii++) { if (output.GetValue(ii).ToString().Contains("ST*835") == false) { output[ii] = st_segment + output.GetValue(ii).ToString() + se_segment; } } } is835 = true; break; case "ST": if (segment.GetValue(1).ToString() != "835") { is835 = false; } else { transaction_set = segment.GetValue(3).ToString(); st_segment = line.ToString(); } break; default: if (is835 == true) { if (line.ToString().Length > 0) { output[i] += line.ToString(); } } break; } }while ((line = remittance.Read()) != "" && fatal == false); int iii = WriteFile(output, provider, filename); if (iii > 0) { returnmessage += "File Processed, " + iii.ToString() + " files created."; } else { returnmessage += "There has been a problem."; } } else { returnmessage += "This is not an X12 5010 file."; } } catch (Exception ex) { returnmessage = ex.ToString(); remittance.Close(); } finally { remittance.Close(); } return(returnmessage); }
public static string parse_to_billing_provider(string filename) { string returnmessage = ""; string isa_segment = ""; string iea_segment = ""; string gs_segment = ""; string ge_segment = ""; string se_segment = ""; string st_segment = ""; string transaction_set = ""; string line = ""; string segment_type = ""; bool is835 = true; bool fatal = false; bool first = true; string[] output = new string[1000]; string[] provider = new string[1000]; int i = 0; DelimitedFileReader remittance = new DelimitedFileReader(filename, "~\n"); try { line = remittance.Read(); if (line[0] == 'I') { do { string[] segment = line.Replace("~", "*").Split("*".ToCharArray()); segment_type = segment.GetValue(0).ToString(); switch (segment_type) { case "BPR": if (is835 == true) { if (first == false) i += 1; first = false; output[i] += line.ToString(); } break; case "GE": ge_segment = line.ToString(); break; case "GS": gs_segment = line.ToString(); break; case "IEA": iea_segment = line.ToString(); for (int ii = 0; ii <= i; ii++) { if (output.GetValue(ii).ToString().Contains("ISA*00") == false) output[ii] = isa_segment + gs_segment + output.GetValue(ii).ToString() + ge_segment + iea_segment; } break; case "ISA": isa_segment = line.ToString(); break; case "N1": if (is835 == true) { switch (segment.GetValue(1).ToString()) { case "PE": provider[i] = segment.GetValue(2).ToString(); break; default: break; } output[i] += line.ToString(); } break; case "SE": if (is835 == true) { se_segment = line.ToString(); for (int ii = 0; ii <= i; ii++) { if (output.GetValue(ii).ToString().Contains("ST*835") == false) output[ii] = st_segment + output.GetValue(ii).ToString() + se_segment; } } is835 = true; break; case "ST": if (segment.GetValue(1).ToString() != "835") { is835 = false; } else { transaction_set = segment.GetValue(3).ToString(); st_segment = line.ToString(); } break; default: if (is835 == true) { if (line.ToString().Length > 0) output[i] += line.ToString(); } break; } } while ((line = remittance.Read()) != "" && fatal == false); int iii = WriteFile(output, provider, filename); if (iii > 0) returnmessage += "File Processed, " + iii.ToString() + " files created."; else returnmessage += "There has been a problem."; } else { returnmessage += "This is not an X12 5010 file."; } } catch (Exception ex) { returnmessage = ex.ToString(); remittance.Close(); } finally { remittance.Close(); } return returnmessage; }