x12-types 0.9.0

Bindings for the ASC X12 EDI definitions
Documentation
use super::*;

#[test]
fn parse_837() {
    //source: https://www.texaschildrenshealthplan.org/sites/default/files/pdf/5010_X12_837P_Professional_CompGuide_V1.1.pdf
    let str = r#"ISA*00* *00* *ZZ*133052274 *ZZ*TXCSM0001 *160308*2119*^*00501*000005555*0*P*:~
GS*HC*133052274*TXCSM0001*20160308*211916*5555*X*005010X222A1~
ST*837*000000055*005010X222A1~
BHT*0001*00*00011111*20160308*211916*CH~
NM1*41*2*SUBMITTER ABC*****46*111111111~
PER*IC*EMDEON CUSTOMER SOLUTIONS*TE*8008456592~
NM1*40*2*RECEIVER ABC*****46*TXCSM0001~
HL*1**20*1~
PRV*BI*PXC*208000000X~
NM1*85*2*BILLING NAME ABC*****XX*1111111111~
N3*11111 NO NAME ROAD~
N4*HOUSTON*TX*770744336~
REF*EI*111111111~
HL*2*1*22*0~
SBR*P*18*******MC~
NM1*IL*1*LASTNAME*FIRST****MI*111111111~
N3*ADDRESSLINE ONE~
N4*HOUSTON*TX*770744336~
DMG*D8*11111111*M~
NM1*PR*2*TEXAS CHILDRENS WELL*****PI*TXCSM~
CLM*1111111111*210.01***11:B:1*Y*A*Y*Y~
REF*D9*11111111111111~
HI*ABK:Z00129~
NM1*77*2*FACILITY ABC*****XX*1111111111~
N3*11111 NO NAME ROAD~
N4*HOUSTON*TX*770744336~
LX*1~
SV1*HC:99392:AM:25*150*UN*1***1~
DTP*472*D8*20160307~
REF*6R*1~
LX*2~
SV1*HC:96110:U6*20*UN*1***1~
DTP*472*D8*20160307~
REF*6R*2~
LX*3~
SV1*HC:90633*.01*UN*1***1~
DTP*472*D8*20160307~
REF*6R*3~
LX*4~
SV1*HC:90460*40*UN*1***1~
DTP*472*D8*20160307~
REF*6R*4~
SE*41*000000055~
GE*1*5555~
IEA*1*000005555~"#;
    let (rest, obj) = Transmission::<_837>::parse(str).unwrap();
    println!("{rest}");
    println!("{obj:?}");
}

#[test]
fn parse_837_2() {
    //source: https://www.texaschildrenshealthplan.org/sites/default/files/pdf/5010_X12_837P_Professional_CompGuide_V1.1.pdf
    let str = r#"ISA*00* *00* *ZZ*133052274 *ZZ*752280001 *160527*2139*^*00501*000004444*0*P*:~
GS*HC*133052274*752280001*20160527*213905*4444*X*005010X222A1~
ST*837*000000044*005010X222A1~
BHT*0001*00*00018091A*20160527*213905*CH~
NM1*41*2*SUBMITTER ABC*****46*111111111~
PER*IC*EMDEON CUSTOMER SOLUTIONS*TE*8008456592~
NM1*40*2*RECEIVER ABC*****46*TXCSM0001~
HL*1**20*1~
PRV*BI*PXC*208D00000X~
NM1*85*BILLINGNAME*FIRST*M***XX*1111111111~
N3*11111 NO NAME ROAD~
N4*HOUSTON*TX*770744336~
REF*EI*111111111~
PER*IC*BILLINGCONTACT*TE*8321111111~
HL*2*1*22*0~
SBR*P*18**MEDICAID OF TX*****CI~
NM1*IL*1*LASTNAME*FIRST*M***M111111111~
N3*11111 NO NAME ROAD~
N4*HOUSTON*TX*770744336~
DMG*D8*11111111*M~
NM1*PR*2*TCHPCHIP 76048*****PI*75228~
CLM*1111111111*292***11:B:1*Y*A*Y*Y~
REF*D9*111111111111111~
HI*ABK:Z00129*ABF:J309*ABF:J029~
LX*1~
SV1*HC:87880:QW*22*UN*1***1:2:3~
DTP*472*D8*20160525~
REF*6R*1~
NTE*ADD*207R00000X~
LX*2~
SV1*HC:99392:AM*100*UN*1***1:2:3~
DTP*472*D8*20160525~
REF*6R*2~
NTE*ADD*207R00000X~
LX*3~
SV1*HC:99213:25*150*UN*1***1:2:3~
DTP*472*D8*20160525~
REF*6R*3~
NTE*ADD*207R00000X~
LX*4~
SV1*HC:96110:U6*20*UN*1***1:2:3~
DTP*472*D8*20160525~
REF*6R*4~
NTE*ADD*207R00000X~
SE*43*0000000044~
GE*1*4444~
IEA*1*000004444~"#;
    let (rest, obj) = Transmission::<_837>::parse(str).unwrap();
    println!("{rest}");
    println!("{obj:?}");
}

#[test]
fn parse_837_3() {
    //source: https://support.edifabric.com/hc/en-us/articles/360000369472-HIPAA-5010-837P-Professional-Claim
    let str = r#"ISA*00*          *00*          *ZZ*1234567        *ZZ*11111          *170508*1141*^*00501*000000101*1*P*:~
GS*HC*XXXXXXX*XXXXX*20170617*1741*101*X*005010X222A1~
ST*837*1239*005010X222A1~
BHT*0019*00*010*20170617*1741*CH~
NM1*41*2*SUBMITTER*****46*ABC123~
PER*IC*BOB SMITH*TE*4805551212~
NM1*40*2*RECEIVER*****46*44556~
HL*1**20*1~
NM1*85*2*BILLING PROVIDER*****XX*1122334455~
N3*1234 SOME ROAD~
N4*CHICAGO*IL*606739999~
REF*EI*999999999~
HL*2*1*22*0~
SBR*P*18*******12~
NM1*IL*1*BLOGGS*JOE****MI*1234567890~
N3*1 SOME BLVD~
N4*CHICAGO*IL*606129998~
DMG*D8*19570111*M~
NM1*PR*2*PAYER*****PI*12345~
N3*1 PAYER WAY~
N4*ST LOUIS*MO*212441850~
REF*2U*W1014~
CLM*1000A*140***19:B:1*Y*A*Y*Y~
HI*ABK:I10~
LX*1~
SV1*HC:99213*140*UN*1***1~
DTP*472*D8*20151124~
HL*3*1*22*0~
SBR*P*18*******12~
NM1*IL*1*BLOGGS*FRED****MI*9876543201~
N3*1 ANOTHER STR~
N4*CHICAGO*IL*606129998~
DMG*D8*19700601*M~
NM1*PR*2*PAYER*****PI*12345~
N3*1 PAYER WAY~
N4*ST LOUIS*MO*212441850~
REF*2U*W1014~
CLM*1001A*140***19:B:1*Y*A*Y*Y~
HI*ABK:I10~
LX*1~
SV1*HC:99213*140*UN*1***1~
DTP*472*D8*20151124~
SE*41*1239~
GE*1*101~
IEA*1*000000101~"#;
    let (rest, obj) = Transmission::<_837>::parse(str).unwrap();
    println!("{rest}");
    println!("{obj:?}");
}

#[test]
fn parse_837_4() {
    //source: https://www.apex-healthsolutions.com/-/media/project/summacare/website/document-library/apex/837-5010-professional-companion-guide.pdf?la=en
    let str = r#"ST*837*000000001*005010X222~
BHT*0019*00*000000001*20170715*0939*CH~
NM1*41*2*CLEARINGHOUSE*****46*999999999~
PER*IC*CLEARINGHOUSE*TE*8005555555~
NM1*40*2*APEX*****46*34196~
HL*1**20*1~
NM1*85*2*SMITHS FAMILY PRACTICE*****XX*1234567890~
N3*123 MEDCENTER DRIVE~
N4*AKRON*OH*44308~
REF*EI*111223333~
PER*IC*SMITHS FAMILY PRACTICE*TE*3305555555~
HL*2*1*22*1~
SBR*P**V99999******CI~
NM1*IL*1*DOE*JONATHAN****MI*98765432100~
DMG*D8*19740405*M~
NM1*PR*2*APEX*****PI*34196~
HL*3*2*23*0~
PAT*19~
NM1*QC*1*DOE*JOHNNY****MI*98765432102~
N3*100 PATIENT RD~
N4*AKRON*OH*44308~
DMG*D8*20021028*M~
CLM*0027833*50***22::1*Y*A*Y*Y*C~
REF*D9*01234567890~
HI*ABK:R509~
NM1*82*1*SMITH*JOEL*C**DO*XX*9876543210~
REF*EI*44455666~
NM1*77*2*SUMMA HEALTH SYSTEMS*****XX*1234567890~
N3*123 SUMMA DRIVE~
N4*AKRON*OH*44308~
LX*1~
SV1*HC:34196*50*UN*1***1~
DTP*472*D8*20170715~
SE*35*000000001~"#;
    let (rest, obj) = _837::parse(str).unwrap();
    println!("{rest}");
    println!("{obj:?}");
}

#[test]
fn parse_837_5() {
    //source: https://www.apex-healthsolutions.com/-/media/project/summacare/website/document-library/apex/837-5010-professional-companion-guide.pdf?la=en
    let str = r#"ST*837*0001*005010X222~
BHT*0019*00*1*20170715*08280000*CH~
NM1*41*2*SUGARHILL BILLING SERVICE*****46*00123~
PER*IC*TECHNOLOGY SUPPORT CENTER*TE*3305554321~
NM1*40*2*MULBERRY HEALTH SYSTEM*****46*441XX234~
HL*1**20*1~
NM1*85*2*JACK SPRAT INC*****XX*300300123~
N3*PO BOX 1687~
N4*FOREST HILL*OH*441234107~
REF*1C*0123456789~
PER*IC* BARBIE*TE*2165552020~
HL*2*1*22*0~
SBR*S*18*731062******ZZ~
NM1*IL*1*GREEN*MARY****MI*98799432100~
N3*1506 MAGIC DR~
N4*AKRON*OH*44308~
DMG*D8*19220101*F~
REF*IG*012345678D~
NM1*PR*2*ABC HEALTH PLAN*****PI*44123C123~
N3*17 TECHNOLOGY~
N4*COLUMBIA*SC*29219~
CLM*TV12345678987654*59.28***12::1*Y*A*Y*Y*C~
REF*F5*N~
HI*ABK:R509~
NM1*82*2*LINUS INC*****XX*300300123~
REF*1C*0123456789~
SBR*P*18***MB****MB~
AMT*D*24.46~
AMT*AAE*30.57~
AMT*B6*30.57~
DMG*D8*19220101*F~
OI***Y*C**Y~
NM1*IL*1*GREEN*MARY****MI*270123456D~
N3*1506 MAGIC DR~
N4*AKRON*OH*443081234~
NM1*PR*2*XYZ HEALTH PLAN, INC *****PI*00123~
PER*IC*COORDINATION OF BENEFITS*TE*8885551105*FX*8885550008~
REF*F8*0123456789000~
NM1*82*2~
REF*1C*1234567890~
LX*1~
SV1*HC:E0434:RR*59.28*UN*1*12**1~
DTP*472*D8*20170715~
AMT*AAE*30.57~
NM1*DK*1*JOHNSON*DAVID~
N3*2400 MONTY RD~
N4*NORFOLK*VA*245510687~
REF*1G*B01234~
SVD*00123*24.46*HC:E0434:RR**1~
CAS*CO*96*28.71~
CAS*PR*2*6.11~
DTP*573*D8*20170715~
SE*54*0001~
GE*1*1~
IEA*1*000000001~"#;
    let (rest, obj) = _837::parse(str).unwrap();
    println!("{rest}");
    println!("{obj:?}");
}