From 0690982f1b56b902cfd2b376b722212b7998d7f9 Mon Sep 17 00:00:00 2001 From: Albert Hives Date: Tue, 4 Sep 2018 17:38:46 -0700 Subject: [PATCH] failing unit test for issue #58 with condition logic in place fixed test issue add more conditions to X12 maps added conditional logic to several X12 maps created more conditions in maps and created failing unit test for issue #65 added new failing test for issue #65 updated readme and added tests for issue #65 fixed gitter link added appveyor badge added nuget version badge added appveyor test status badge added appveyor test status badge added appveyor test status badge modified the readme added license section to readme modified readme added more stuff to readme modified readme modified readme modified readme and tests updated tests and readme added tests for X12 added more X12 tests fixed issue #68 and added tests fixed issue #69 and added more X12 parsing tests added more tests and fixed some X12 schema issues modified X12 schema and added several tests added more X12 tests added more X12 parser tests made some changes to HL7 schema fixed issue #70 added X12 tests and fixed issue #68 for both HL7 and X12 added more X12 tests made some schema changes and added some tests --- README.md | 845 ++++++- src/.gitignore | 12 + .../EscapeCharacterTests.cs | 21 +- .../FormatterTests/LayoutFormattingTests.cs | 1 + .../QueryTests/AdvancedQueryTests.cs | 11 + .../QueryTests/FirstOrDefaultQueryTests.cs | 42 + .../QueryTests/SelectManyQueryTests.cs | 34 + .../QueryTests/SingleOrDefaultQueryTests.cs | 34 + .../TestSchema/CNEComponent.cs | 16 + .../TestSchema/CNEComponentMap.cs | 19 + .../TestSchema/MSASegment.cs | 18 + .../TestSchema/MSASegmentMap.cs | 22 + src/Machete.HL7/HL7LayoutExtensions.cs | 5 + src/Machete.HL7/HL7SegmentExtensions.cs | 21 +- src/Machete.HL7/SegmentValue.cs | 27 + .../Segments/MissingSegmentList.cs | 12 +- src/Machete.HL7/TX.cs | 1 - .../Generated/V26/Components/AD.cs | 6 +- .../Generated/V26/Components/AUI.cs | 6 +- .../Generated/V26/Components/CCD.cs | 6 +- .../Generated/V26/Components/CCP.cs | 6 +- .../Generated/V26/Components/CD.cs | 6 +- .../Generated/V26/Components/CE.cs | 6 +- .../Generated/V26/Components/CNE.cs | 6 +- .../Generated/V26/Components/CNN.cs | 8 +- .../Generated/V26/Components/CP.cs | 6 +- .../Generated/V26/Components/CQ.cs | 6 +- .../Generated/V26/Components/CSU.cs | 6 +- .../Generated/V26/Components/CWE.cs | 6 +- .../Generated/V26/Components/CX.cs | 6 +- .../Generated/V26/Components/DDI.cs | 6 +- .../Generated/V26/Components/DIN.cs | 6 +- .../Generated/V26/Components/DLD.cs | 6 +- .../Generated/V26/Components/DLN.cs | 6 +- .../Generated/V26/Components/DLT.cs | 6 +- .../Generated/V26/Components/DR.cs | 6 +- .../Generated/V26/Components/DTN.cs | 6 +- .../Generated/V26/Components/EI.cs | 6 +- .../Generated/V26/Components/EIP.cs | 6 +- .../Generated/V26/Components/ELD.cs | 6 +- .../Generated/V26/Components/ERL.cs | 6 +- .../Generated/V26/Components/FC.cs | 6 +- .../Generated/V26/Components/FN.cs | 6 +- .../Generated/V26/Components/HD.cs | 6 +- .../Generated/V26/Components/ICD.cs | 6 +- .../Generated/V26/Components/LA1.cs | 6 +- .../Generated/V26/Components/LA2.cs | 6 +- .../Generated/V26/Components/MA.cs | 6 +- .../Generated/V26/Components/MO.cs | 6 +- .../Generated/V26/Components/MOC.cs | 6 +- .../Generated/V26/Components/MOP.cs | 6 +- .../Generated/V26/Components/MSG.cs | 6 +- .../Generated/V26/Components/Maps/CNNMap.cs | 52 +- .../Generated/V26/Components/Maps/XADMap.cs | 76 +- .../Generated/V26/Components/Maps/XCNMap.cs | 76 +- .../Generated/V26/Components/Maps/XPNMap.cs | 58 +- .../Generated/V26/Components/Maps/XTNMap.cs | 10 +- .../Generated/V26/Components/NA.cs | 6 +- .../Generated/V26/Components/NDL.cs | 6 +- .../Generated/V26/Components/NR.cs | 6 +- .../Generated/V26/Components/OCD.cs | 6 +- .../Generated/V26/Components/OSD.cs | 6 +- .../Generated/V26/Components/OSP.cs | 6 +- .../Generated/V26/Components/PIP.cs | 6 +- .../Generated/V26/Components/PL.cs | 6 +- .../Generated/V26/Components/PLN.cs | 6 +- .../Generated/V26/Components/PPN.cs | 6 +- .../Generated/V26/Components/PT.cs | 6 +- .../Generated/V26/Components/PTA.cs | 6 +- .../Generated/V26/Components/QIP.cs | 6 +- .../Generated/V26/Components/QSC.cs | 6 +- .../Generated/V26/Components/RCD.cs | 6 +- .../Generated/V26/Components/RI.cs | 6 +- .../Generated/V26/Components/RMC.cs | 6 +- .../Generated/V26/Components/RP.cs | 6 +- .../Generated/V26/Components/RPT.cs | 6 +- .../Generated/V26/Components/SAD.cs | 6 +- .../Generated/V26/Components/SCV.cs | 6 +- .../Generated/V26/Components/SN.cs | 6 +- .../Generated/V26/Components/SPD.cs | 6 +- .../Generated/V26/Components/SRT.cs | 6 +- .../Generated/V26/Components/TS.cs | 6 +- .../Generated/V26/Components/UVC.cs | 6 +- .../Generated/V26/Components/VH.cs | 6 +- .../Generated/V26/Components/VID.cs | 6 +- .../Generated/V26/Components/VR.cs | 6 +- .../Generated/V26/Components/WVI.cs | 6 +- .../Generated/V26/Components/WVS.cs | 6 +- .../Generated/V26/Components/XAD.cs | 8 +- .../Generated/V26/Components/XCN.cs | 8 +- .../Generated/V26/Components/XON.cs | 6 +- .../Generated/V26/Components/XPN.cs | 8 +- .../Generated/V26/Components/XTN.cs | 8 +- .../V26/Groups/Maps/ORM_O01_INSURANCEMap.cs | 6 +- .../Groups/Maps/ORM_O01_ORDER_DETAILMap.cs | 20 +- .../V26/Groups/Maps/ORM_O01_PATIENTMap.cs | 6 +- .../Groups/Maps/ORM_O01_PATIENT_VISITMap.cs | 6 +- .../V26/Groups/Maps/ORR_O02_ORDERMap.cs | 18 +- .../V26/Groups/Maps/OSR_Q06_ORDERMap.cs | 18 +- .../V26/Groups/ORM_O01_ORDER_DETAIL.cs | 29 +- .../Generated/V26/Groups/ORR_O02_ORDER.cs | 29 +- .../Generated/V26/Groups/ORR_O02_RESPONSE.cs | 6 +- .../Generated/V26/Groups/OSR_Q06_ORDER.cs | 29 +- .../Generated/V26/Groups/OSR_Q06_RESPONSE.cs | 6 +- .../Generated/V26/Segments/ABS.cs | 10 +- .../Generated/V26/Segments/ACC.cs | 6 +- .../Generated/V26/Segments/ADD.cs | 6 +- .../Generated/V26/Segments/ADJ.cs | 6 +- .../Generated/V26/Segments/AFF.cs | 6 +- .../Generated/V26/Segments/AIG.cs | 6 +- .../Generated/V26/Segments/AIL.cs | 6 +- .../Generated/V26/Segments/AIP.cs | 6 +- .../Generated/V26/Segments/AIS.cs | 6 +- .../Generated/V26/Segments/AL1.cs | 6 +- .../Generated/V26/Segments/APR.cs | 6 +- .../Generated/V26/Segments/ARQ.cs | 6 +- .../Generated/V26/Segments/ARV.cs | 14 +- .../Generated/V26/Segments/AUT.cs | 8 +- .../Generated/V26/Segments/BHS.cs | 6 +- .../Generated/V26/Segments/BLC.cs | 6 +- .../Generated/V26/Segments/BLG.cs | 6 +- .../Generated/V26/Segments/BPO.cs | 6 +- .../Generated/V26/Segments/BPX.cs | 6 +- .../Generated/V26/Segments/BTS.cs | 6 +- .../Generated/V26/Segments/BTX.cs | 6 +- .../Generated/V26/Segments/CDM.cs | 6 +- .../Generated/V26/Segments/CER.cs | 6 +- .../Generated/V26/Segments/CM0.cs | 6 +- .../Generated/V26/Segments/CM1.cs | 6 +- .../Generated/V26/Segments/CM2.cs | 6 +- .../Generated/V26/Segments/CNS.cs | 6 +- .../Generated/V26/Segments/CSP.cs | 6 +- .../Generated/V26/Segments/CSR.cs | 6 +- .../Generated/V26/Segments/CSS.cs | 6 +- .../Generated/V26/Segments/CTD.cs | 6 +- .../Generated/V26/Segments/CTI.cs | 6 +- .../Generated/V26/Segments/DB1.cs | 6 +- .../Generated/V26/Segments/DG1.cs | 26 +- .../Generated/V26/Segments/DMI.cs | 6 +- .../Generated/V26/Segments/DRG.cs | 26 +- .../Generated/V26/Segments/DSC.cs | 6 +- .../Generated/V26/Segments/EDU.cs | 6 +- .../Generated/V26/Segments/EQU.cs | 6 +- .../Generated/V26/Segments/EVN.cs | 6 +- .../Generated/V26/Segments/FAC.cs | 6 +- .../Generated/V26/Segments/FHS.cs | 6 +- .../Generated/V26/Segments/FT1.cs | 8 +- .../Generated/V26/Segments/FTS.cs | 6 +- .../Generated/V26/Segments/GOL.cs | 8 +- .../Generated/V26/Segments/GP1.cs | 6 +- .../Generated/V26/Segments/GP2.cs | 6 +- .../Generated/V26/Segments/GT1.cs | 12 +- .../Generated/V26/Segments/IAM.cs | 6 +- .../Generated/V26/Segments/IIM.cs | 6 +- .../Generated/V26/Segments/ILT.cs | 6 +- .../Generated/V26/Segments/IN1.cs | 40 +- .../Generated/V26/Segments/IN2.cs | 42 +- .../Generated/V26/Segments/IN3.cs | 6 +- .../Generated/V26/Segments/INV.cs | 6 +- .../Generated/V26/Segments/IPC.cs | 6 +- .../Generated/V26/Segments/IPR.cs | 6 +- .../Generated/V26/Segments/ISD.cs | 6 +- .../Generated/V26/Segments/ITM.cs | 6 +- .../Generated/V26/Segments/IVC.cs | 6 +- .../Generated/V26/Segments/IVT.cs | 8 +- .../Generated/V26/Segments/LAN.cs | 6 +- .../Generated/V26/Segments/LCC.cs | 6 +- .../Generated/V26/Segments/LCH.cs | 6 +- .../Generated/V26/Segments/LDP.cs | 6 +- .../Generated/V26/Segments/LOC.cs | 6 +- .../Generated/V26/Segments/LRL.cs | 6 +- .../Generated/V26/Segments/MFA.cs | 6 +- .../Generated/V26/Segments/MFE.cs | 6 +- .../Generated/V26/Segments/MFI.cs | 6 +- .../Generated/V26/Segments/MRG.cs | 6 +- .../Generated/V26/Segments/MSA.cs | 6 +- .../Generated/V26/Segments/MSH.cs | 6 +- .../Generated/V26/Segments/Maps/ABSMap.cs | 66 +- .../Generated/V26/Segments/Maps/ADJMap.cs | 18 +- .../Generated/V26/Segments/Maps/AFFMap.cs | 8 +- .../Generated/V26/Segments/Maps/AIGMap.cs | 8 +- .../Generated/V26/Segments/Maps/AILMap.cs | 8 +- .../Generated/V26/Segments/Maps/AIPMap.cs | 8 +- .../Generated/V26/Segments/Maps/AISMap.cs | 10 +- .../Generated/V26/Segments/Maps/AL1Map.cs | 10 +- .../Generated/V26/Segments/Maps/ARQMap.cs | 10 +- .../Generated/V26/Segments/Maps/ARVMap.cs | 50 +- .../Generated/V26/Segments/Maps/AUTMap.cs | 58 +- .../Generated/V26/Segments/Maps/BHSMap.cs | 10 +- .../Generated/V26/Segments/Maps/BPOMap.cs | 14 +- .../Generated/V26/Segments/Maps/BPXMap.cs | 20 +- .../Generated/V26/Segments/Maps/BTXMap.cs | 22 +- .../Generated/V26/Segments/Maps/CDMMap.cs | 8 +- .../Generated/V26/Segments/Maps/CERMap.cs | 22 +- .../Generated/V26/Segments/Maps/CM0Map.cs | 12 +- .../Generated/V26/Segments/Maps/CM1Map.cs | 10 +- .../Generated/V26/Segments/Maps/CM2Map.cs | 8 +- .../Generated/V26/Segments/Maps/CNSMap.cs | 8 +- .../Generated/V26/Segments/Maps/CSPMap.cs | 14 +- .../Generated/V26/Segments/Maps/CSRMap.cs | 22 +- .../Generated/V26/Segments/Maps/CSSMap.cs | 8 +- .../Generated/V26/Segments/Maps/CTDMap.cs | 6 +- .../Generated/V26/Segments/Maps/CTIMap.cs | 6 +- .../Generated/V26/Segments/Maps/DB1Map.cs | 14 +- .../Generated/V26/Segments/Maps/DG1Map.cs | 90 +- .../Generated/V26/Segments/Maps/DRGMap.cs | 104 +- .../Generated/V26/Segments/Maps/DSPMap.cs | 6 +- .../Generated/V26/Segments/Maps/ECDMap.cs | 8 +- .../Generated/V26/Segments/Maps/ECRMap.cs | 12 +- .../Generated/V26/Segments/Maps/EDUMap.cs | 8 +- .../Generated/V26/Segments/Maps/EQPMap.cs | 16 +- .../Generated/V26/Segments/Maps/EQUMap.cs | 12 +- .../Generated/V26/Segments/Maps/ERRMap.cs | 8 +- .../Generated/V26/Segments/Maps/EVNMap.cs | 14 +- .../Generated/V26/Segments/Maps/FACMap.cs | 12 +- .../Generated/V26/Segments/Maps/FHSMap.cs | 10 +- .../Generated/V26/Segments/Maps/FT1Map.cs | 100 +- .../Generated/V26/Segments/Maps/GOLMap.cs | 82 +- .../Generated/V26/Segments/Maps/GP1Map.cs | 6 +- .../Generated/V26/Segments/Maps/GT1Map.cs | 152 +- .../Generated/V26/Segments/Maps/IAMMap.cs | 16 +- .../Generated/V26/Segments/Maps/IIMMap.cs | 14 +- .../Generated/V26/Segments/Maps/ILTMap.cs | 14 +- .../Generated/V26/Segments/Maps/IN1Map.cs | 144 +- .../Generated/V26/Segments/Maps/IN2Map.cs | 182 +- .../Generated/V26/Segments/Maps/IN3Map.cs | 18 +- .../Generated/V26/Segments/Maps/INVMap.cs | 12 +- .../Generated/V26/Segments/Maps/IPCMap.cs | 12 +- .../Generated/V26/Segments/Maps/IPRMap.cs | 22 +- .../Generated/V26/Segments/Maps/ISDMap.cs | 8 +- .../Generated/V26/Segments/Maps/ITMMap.cs | 6 +- .../Generated/V26/Segments/Maps/IVCMap.cs | 26 +- .../Generated/V26/Segments/Maps/IVTMap.cs | 90 +- .../Generated/V26/Segments/Maps/LANMap.cs | 8 +- .../Generated/V26/Segments/Maps/LCCMap.cs | 10 +- .../Generated/V26/Segments/Maps/LCHMap.cs | 10 +- .../Generated/V26/Segments/Maps/LDPMap.cs | 12 +- .../Generated/V26/Segments/Maps/LOCMap.cs | 8 +- .../Generated/V26/Segments/Maps/LRLMap.cs | 8 +- .../Generated/V26/Segments/Maps/MFAMap.cs | 14 +- .../Generated/V26/Segments/Maps/MFEMap.cs | 14 +- .../Generated/V26/Segments/Maps/MFIMap.cs | 14 +- .../Generated/V26/Segments/Maps/MRGMap.cs | 6 +- .../Generated/V26/Segments/Maps/MSAMap.cs | 10 +- .../Generated/V26/Segments/Maps/MSHMap.cs | 20 +- .../Generated/V26/Segments/Maps/NCKMap.cs | 10 +- .../Generated/V26/Segments/Maps/NDSMap.cs | 16 +- .../Generated/V26/Segments/Maps/NK1Map.cs | 116 +- .../Generated/V26/Segments/Maps/NPUMap.cs | 6 +- .../Generated/V26/Segments/Maps/NSCMap.cs | 56 +- .../Generated/V26/Segments/Maps/NSTMap.cs | 10 +- .../Generated/V26/Segments/Maps/NTEMap.cs | 10 +- .../Generated/V26/Segments/Maps/OBRMap.cs | 138 +- .../Generated/V26/Segments/Maps/OBXMap.cs | 14 +- .../Generated/V26/Segments/Maps/ODSMap.cs | 8 +- .../Generated/V26/Segments/Maps/ODTMap.cs | 6 +- .../Generated/V26/Segments/Maps/OM1Map.cs | 20 +- .../Generated/V26/Segments/Maps/OM7Map.cs | 18 +- .../Generated/V26/Segments/Maps/ORCMap.cs | 12 +- .../Generated/V26/Segments/Maps/ORGMap.cs | 6 +- .../Generated/V26/Segments/Maps/OVRMap.cs | 48 +- .../Generated/V26/Segments/Maps/PCEMap.cs | 6 +- .../Generated/V26/Segments/Maps/PCRMap.cs | 84 +- .../Generated/V26/Segments/Maps/PD1Map.cs | 12 +- .../Generated/V26/Segments/Maps/PDAMap.cs | 6 +- .../Generated/V26/Segments/Maps/PDCMap.cs | 14 +- .../Generated/V26/Segments/Maps/PEOMap.cs | 18 +- .../Generated/V26/Segments/Maps/PESMap.cs | 12 +- .../Generated/V26/Segments/Maps/PIDMap.cs | 14 +- .../Generated/V26/Segments/Maps/PKGMap.cs | 8 +- .../Generated/V26/Segments/Maps/PMTMap.cs | 30 +- .../Generated/V26/Segments/Maps/PR1Map.cs | 24 +- .../Generated/V26/Segments/Maps/PRAMap.cs | 8 +- .../Generated/V26/Segments/Maps/PRBMap.cs | 26 +- .../Generated/V26/Segments/Maps/PRCMap.cs | 10 +- .../Generated/V26/Segments/Maps/PRDMap.cs | 10 +- .../Generated/V26/Segments/Maps/PSGMap.cs | 14 +- .../Generated/V26/Segments/Maps/PSHMap.cs | 16 +- .../Generated/V26/Segments/Maps/PSLMap.cs | 18 +- .../Generated/V26/Segments/Maps/PSSMap.cs | 12 +- .../Generated/V26/Segments/Maps/PTHMap.cs | 18 +- .../Generated/V26/Segments/Maps/PV1Map.cs | 142 +- .../Generated/V26/Segments/Maps/PV2Map.cs | 138 +- .../Generated/V26/Segments/Maps/PYEMap.cs | 8 +- .../Generated/V26/Segments/Maps/QAKMap.cs | 50 +- .../Generated/V26/Segments/Maps/QIDMap.cs | 8 +- .../Generated/V26/Segments/Maps/QPDMap.cs | 44 +- .../Generated/V26/Segments/Maps/QRDMap.cs | 26 +- .../Generated/V26/Segments/Maps/QRFMap.cs | 10 +- .../Generated/V26/Segments/Maps/RCPMap.cs | 6 +- .../Generated/V26/Segments/Maps/RDFMap.cs | 8 +- .../Generated/V26/Segments/Maps/RDTMap.cs | 6 +- .../Generated/V26/Segments/Maps/RELMap.cs | 70 +- .../Generated/V26/Segments/Maps/RF1Map.cs | 12 +- .../Generated/V26/Segments/Maps/RFIMap.cs | 18 +- .../Generated/V26/Segments/Maps/RGSMap.cs | 6 +- .../Generated/V26/Segments/Maps/RMIMap.cs | 6 +- .../Generated/V26/Segments/Maps/ROLMap.cs | 64 +- .../Generated/V26/Segments/Maps/RQDMap.cs | 6 +- .../Generated/V26/Segments/Maps/RXAMap.cs | 28 +- .../Generated/V26/Segments/Maps/RXCMap.cs | 12 +- .../Generated/V26/Segments/Maps/RXDMap.cs | 104 +- .../Generated/V26/Segments/Maps/RXEMap.cs | 126 +- .../Generated/V26/Segments/Maps/RXGMap.cs | 98 +- .../Generated/V26/Segments/Maps/RXOMap.cs | 108 +- .../Generated/V26/Segments/Maps/RXRMap.cs | 6 +- .../Generated/V26/Segments/Maps/SACMap.cs | 6 +- .../Generated/V26/Segments/Maps/SCDMap.cs | 10 +- .../Generated/V26/Segments/Maps/SCHMap.cs | 10 +- .../Generated/V26/Segments/Maps/SFTMap.cs | 14 +- .../Generated/V26/Segments/Maps/SPMMap.cs | 10 +- .../Generated/V26/Segments/Maps/STFMap.cs | 16 +- .../Generated/V26/Segments/Maps/TCCMap.cs | 8 +- .../Generated/V26/Segments/Maps/TCDMap.cs | 54 +- .../Generated/V26/Segments/Maps/TQ1Map.cs | 10 +- .../Generated/V26/Segments/Maps/TXAMap.cs | 84 +- .../Generated/V26/Segments/Maps/UACMap.cs | 8 +- .../Generated/V26/Segments/Maps/UB1Map.cs | 16 +- .../Generated/V26/Segments/Maps/UB2Map.cs | 30 +- .../Generated/V26/Segments/Maps/URDMap.cs | 8 +- .../Generated/V26/Segments/Maps/URSMap.cs | 10 +- .../Generated/V26/Segments/Maps/VARMap.cs | 14 +- .../Generated/V26/Segments/Maps/VNDMap.cs | 8 +- .../Generated/V26/Segments/NCK.cs | 6 +- .../Generated/V26/Segments/NDS.cs | 6 +- .../Generated/V26/Segments/NK1.cs | 8 +- .../Generated/V26/Segments/NPU.cs | 6 +- .../Generated/V26/Segments/NSC.cs | 10 +- .../Generated/V26/Segments/NST.cs | 6 +- .../Generated/V26/Segments/OBR.cs | 12 +- .../Generated/V26/Segments/OBX.cs | 6 +- .../Generated/V26/Segments/ODS.cs | 6 +- .../Generated/V26/Segments/ODT.cs | 6 +- .../Generated/V26/Segments/OM3.cs | 6 +- .../Generated/V26/Segments/OM5.cs | 6 +- .../Generated/V26/Segments/ORC.cs | 6 +- .../Generated/V26/Segments/ORG.cs | 6 +- .../Generated/V26/Segments/OVR.cs | 8 +- .../Generated/V26/Segments/PCE.cs | 6 +- .../Generated/V26/Segments/PCR.cs | 10 +- .../Generated/V26/Segments/PD1.cs | 6 +- .../Generated/V26/Segments/PDA.cs | 6 +- .../Generated/V26/Segments/PDC.cs | 6 +- .../Generated/V26/Segments/PID.cs | 6 +- .../Generated/V26/Segments/PKG.cs | 6 +- .../Generated/V26/Segments/PMT.cs | 6 +- .../Generated/V26/Segments/PR1.cs | 6 +- .../Generated/V26/Segments/PRA.cs | 6 +- .../Generated/V26/Segments/PRB.cs | 6 +- .../Generated/V26/Segments/PRC.cs | 6 +- .../Generated/V26/Segments/PRD.cs | 6 +- .../Generated/V26/Segments/PSG.cs | 6 +- .../Generated/V26/Segments/PSL.cs | 6 +- .../Generated/V26/Segments/PSS.cs | 6 +- .../Generated/V26/Segments/PTH.cs | 6 +- .../Generated/V26/Segments/PV1.cs | 14 +- .../Generated/V26/Segments/PV2.cs | 8 +- .../Generated/V26/Segments/PYE.cs | 6 +- .../Generated/V26/Segments/QAK.cs | 8 +- .../Generated/V26/Segments/QID.cs | 6 +- .../Generated/V26/Segments/QPD.cs | 8 +- .../Generated/V26/Segments/QRD.cs | 6 +- .../Generated/V26/Segments/QRF.cs | 6 +- .../Generated/V26/Segments/QRI.cs | 6 +- .../Generated/V26/Segments/RCP.cs | 6 +- .../Generated/V26/Segments/RDF.cs | 6 +- .../Generated/V26/Segments/RDT.cs | 6 +- .../Generated/V26/Segments/REL.cs | 12 +- .../Generated/V26/Segments/RF1.cs | 6 +- .../Generated/V26/Segments/RFI.cs | 6 +- .../Generated/V26/Segments/RGS.cs | 6 +- .../Generated/V26/Segments/RMI.cs | 6 +- .../Generated/V26/Segments/ROL.cs | 8 +- .../Generated/V26/Segments/RQ1.cs | 6 +- .../Generated/V26/Segments/RQD.cs | 6 +- .../Generated/V26/Segments/RXA.cs | 6 +- .../Generated/V26/Segments/RXC.cs | 6 +- .../Generated/V26/Segments/RXD.cs | 8 +- .../Generated/V26/Segments/RXE.cs | 14 +- .../Generated/V26/Segments/RXG.cs | 8 +- .../Generated/V26/Segments/RXO.cs | 12 +- .../Generated/V26/Segments/RXR.cs | 6 +- .../Generated/V26/Segments/SAC.cs | 6 +- .../Generated/V26/Segments/SCD.cs | 6 +- .../Generated/V26/Segments/SCH.cs | 6 +- .../Generated/V26/Segments/SCP.cs | 6 +- .../Generated/V26/Segments/SDD.cs | 6 +- .../Generated/V26/Segments/SID.cs | 6 +- .../Generated/V26/Segments/SLT.cs | 6 +- .../Generated/V26/Segments/SPM.cs | 6 +- .../Generated/V26/Segments/STF.cs | 6 +- .../Generated/V26/Segments/STZ.cs | 6 +- .../Generated/V26/Segments/TCD.cs | 8 +- .../Generated/V26/Segments/TQ2.cs | 6 +- .../Generated/V26/Segments/TXA.cs | 8 +- .../Generated/V26/Segments/UAC.cs | 6 +- .../Generated/V26/Segments/UB1.cs | 18 +- .../Generated/V26/Segments/UB2.cs | 32 +- .../Generated/V26/Segments/URD.cs | 6 +- .../Generated/V26/Segments/URS.cs | 6 +- .../Generated/V26/Segments/VAR.cs | 6 +- .../Generated/V26/Segments/VND.cs | 6 +- .../Layouts/Layout277Tests.cs | 592 +++++ .../Layouts/Layout835Tests.cs | 273 ++- .../Layouts/MissingLayoutListTests.cs | 147 ++ .../Parsing277AckL2000BConditionalTests.cs | 557 +++++ .../Parsing277AckL2000DConditionalTests.cs | 735 ++++++ .../Parsing277AckL2010BAConditionalTests.cs | 428 ++++ .../Parsing277AckL2200AConditionalTests.cs | 81 + .../Parsing277AckL2200BConditionalTests.cs | 708 ++++++ .../Layouts/Parsing277ConditionalTests.cs | 759 ++++++ .../Parsing277L2200DConditionalTests.cs | 1917 +++++++++++++++ ...Parsing837DentalL2010AAConditionalTests.cs | 304 +++ ...Parsing837DentalL2010ACConditionalTests.cs | 342 +++ ...g837ProfessionalL2010AAConditionalTests.cs | 584 +++++ ...g837ProfessionalL2010ACConditionalTests.cs | 334 +++ ...g837ProfessionalL2010BAConditionalTests.cs | 357 +++ ...g837ProfessionalL2010BBConditionalTests.cs | 1781 ++++++++++++++ ...g837ProfessionalL2010CAConditionalTests.cs | 534 +++++ ...837ProfessionalL2300P10ConditionalTests.cs | 2045 +++++++++++++++++ ...837ProfessionalL2300P11ConditionalTests.cs | 1210 ++++++++++ ...837ProfessionalL2300P12ConditionalTests.cs | 854 +++++++ ...837ProfessionalL2300P13ConditionalTests.cs | 1590 +++++++++++++ ...837ProfessionalL2300P14ConditionalTests.cs | 1090 +++++++++ ...g837ProfessionalL2300P1ConditionalTests.cs | 1644 +++++++++++++ ...g837ProfessionalL2300P2ConditionalTests.cs | 819 +++++++ ...g837ProfessionalL2300P3ConditionalTests.cs | 813 +++++++ ...g837ProfessionalL2300P4ConditionalTests.cs | 807 +++++++ ...g837ProfessionalL2300P5ConditionalTests.cs | 801 +++++++ ...g837ProfessionalL2300P6ConditionalTests.cs | 795 +++++++ ...g837ProfessionalL2300P7ConditionalTests.cs | 789 +++++++ ...g837ProfessionalL2300P8ConditionalTests.cs | 777 +++++++ ...g837ProfessionalL2300P9ConditionalTests.cs | 1739 ++++++++++++++ ...ng837ProfessionalL2330BConditionalTests.cs | 954 ++++++++ ...g837ProfessionalL2400P1ConditionalTests.cs | 978 ++++++++ ...g837ProfessionalL2400P2ConditionalTests.cs | 695 ++++++ ...g837ProfessionalL2400P3ConditionalTests.cs | 916 ++++++++ ...g837ProfessionalL2400P4ConditionalTests.cs | 465 ++++ ...g837ProfessionalL2400P5ConditionalTests.cs | 508 ++++ ...g837ProfessionalL2400P6ConditionalTests.cs | 514 +++++ ...g837ProfessionalL2400P7ConditionalTests.cs | 782 +++++++ ...g837ProfessionalL2400P8ConditionalTests.cs | 243 ++ .../ParsingMultipleSegmentOfSameTypeTests.cs | 305 +++ .../Layouts/SegmentMissingExceptionTests.cs | 53 + .../TestSchema/LayoutCondition2Issue.cs | 22 + .../TestSchema/LayoutCondition2IssueMap.cs | 26 + .../TestSchema/LayoutCondition3Issue.cs | 24 + .../TestSchema/LayoutCondition3IssueMap.cs | 28 + .../TestSchema/LayoutConditionIssue.cs | 24 + .../TestSchema/LayoutConditionIssueMap.cs | 28 + .../TestSchema/PERSegment.cs | 22 + .../TestSchema/PERSegmentMap.cs | 24 + src/Machete.X12/SegmentValue.cs | 27 + src/Machete.X12/Segments/MissingSegment.cs | 5 +- .../Segments/MissingSegmentList.cs | 19 +- src/Machete.X12/X12LayoutExtensions.cs | 9 +- src/Machete.X12/X12ResultExtensions.cs | 13 +- src/Machete.X12/X12SegmentExtensions.cs | 42 +- .../V5010/Layouts/{T277.cs => CAT277.cs} | 2 +- .../Generated/V5010/Layouts/ISNT277.cs | 2 +- .../Generated/V5010/Layouts/L2000A_837D.cs | 4 +- .../Generated/V5010/Layouts/L2000A_837P.cs | 6 +- .../Generated/V5010/Layouts/L2000B_837P.cs | 8 +- .../Generated/V5010/Layouts/L2000C_277ACK.cs | 2 +- .../Generated/V5010/Layouts/L2000C_837P.cs | 4 +- .../Generated/V5010/Layouts/L2000D_277ACK.cs | 2 +- .../Generated/V5010/Layouts/L2100A_277.cs | 2 - .../Generated/V5010/Layouts/L2200D_277.cs | 2 +- .../Generated/V5010/Layouts/L2200D_277ACK.cs | 2 +- .../Generated/V5010/Layouts/L2220D_277.cs | 2 + .../Generated/V5010/Layouts/L2220D_277ACK.cs | 2 - .../Generated/V5010/Layouts/L2300_837P.cs | 4 +- .../Generated/V5010/Layouts/L2310A_837P.cs | 2 +- .../Generated/V5010/Layouts/L2320_837P.cs | 14 +- .../Generated/V5010/Layouts/L2330C_837P.cs | 2 +- .../Generated/V5010/Layouts/L2330D_837P.cs | 2 +- .../Generated/V5010/Layouts/L2330F_837P.cs | 2 +- .../Generated/V5010/Layouts/L2330G_837P.cs | 2 +- .../Generated/V5010/Layouts/L2400_837P.cs | 8 +- .../Generated/V5010/Layouts/L2420D_837P.cs | 2 +- .../Generated/V5010/Layouts/L2420E_837P.cs | 2 +- .../Generated/V5010/Layouts/L2420F_837P.cs | 2 +- .../Layouts/Maps/{T277Map.cs => CAT277Map.cs} | 6 +- .../V5010/Layouts/Maps/ISNT277Map.cs | 2 +- .../V5010/Layouts/Maps/L1000A_835Map.cs | 9 +- .../V5010/Layouts/Maps/L2000A_277ACKMap.cs | 3 +- .../V5010/Layouts/Maps/L2000A_277Map.cs | 3 +- .../V5010/Layouts/Maps/L2000A_837DMap.cs | 6 +- .../V5010/Layouts/Maps/L2000A_837PMap.cs | 6 +- .../V5010/Layouts/Maps/L2000B_277ACKMap.cs | 3 +- .../V5010/Layouts/Maps/L2000B_277Map.cs | 3 +- .../V5010/Layouts/Maps/L2000B_837PMap.cs | 8 +- .../V5010/Layouts/Maps/L2000C_277ACKMap.cs | 3 +- .../V5010/Layouts/Maps/L2000C_277Map.cs | 3 +- .../V5010/Layouts/Maps/L2000C_837PMap.cs | 4 +- .../V5010/Layouts/Maps/L2000D_277ACKMap.cs | 5 +- .../V5010/Layouts/Maps/L2000D_277Map.cs | 3 +- .../V5010/Layouts/Maps/L2010AA_837DMap.cs | 8 +- .../V5010/Layouts/Maps/L2010AA_837PMap.cs | 8 +- .../V5010/Layouts/Maps/L2010AC_837DMap.cs | 8 +- .../V5010/Layouts/Maps/L2010AC_837IMap.cs | 8 +- .../V5010/Layouts/Maps/L2010AC_837PMap.cs | 8 +- .../V5010/Layouts/Maps/L2010BA_837DMap.cs | 9 +- .../V5010/Layouts/Maps/L2010BA_837IMap.cs | 6 +- .../V5010/Layouts/Maps/L2010BA_837PMap.cs | 6 +- .../V5010/Layouts/Maps/L2010BB_837DMap.cs | 10 +- .../V5010/Layouts/Maps/L2010BB_837IMap.cs | 10 +- .../V5010/Layouts/Maps/L2010BB_837PMap.cs | 10 +- .../V5010/Layouts/Maps/L2010CA_837DMap.cs | 7 +- .../V5010/Layouts/Maps/L2010CA_837IMap.cs | 7 +- .../V5010/Layouts/Maps/L2010CA_837PMap.cs | 7 +- .../V5010/Layouts/Maps/L2100A_277Map.cs | 1 - .../V5010/Layouts/Maps/L2110C_270Map.cs | 4 +- .../V5010/Layouts/Maps/L2200A_277ACKMap.cs | 6 +- .../V5010/Layouts/Maps/L2200B_277ACKMap.cs | 8 +- .../V5010/Layouts/Maps/L2200C_277ACKMap.cs | 8 +- .../V5010/Layouts/Maps/L2200D_277ACKMap.cs | 9 +- .../V5010/Layouts/Maps/L2200D_277Map.cs | 20 +- .../V5010/Layouts/Maps/L2220D_277ACKMap.cs | 7 +- .../V5010/Layouts/Maps/L2220D_277Map.cs | 7 +- .../V5010/Layouts/Maps/L2300_837DMap.cs | 36 +- .../V5010/Layouts/Maps/L2300_837PMap.cs | 121 +- .../V5010/Layouts/Maps/L2310A_837IMap.cs | 6 +- .../V5010/Layouts/Maps/L2310A_837PMap.cs | 6 +- .../V5010/Layouts/Maps/L2310B_837IMap.cs | 6 +- .../V5010/Layouts/Maps/L2310C_837IMap.cs | 6 +- .../V5010/Layouts/Maps/L2320_837DMap.cs | 9 +- .../V5010/Layouts/Maps/L2320_837PMap.cs | 14 +- .../V5010/Layouts/Maps/L2330B_837DMap.cs | 21 +- .../V5010/Layouts/Maps/L2330B_837PMap.cs | 21 +- .../V5010/Layouts/Maps/L2330C_837DMap.cs | 5 +- .../V5010/Layouts/Maps/L2330C_837PMap.cs | 11 +- .../V5010/Layouts/Maps/L2330D_837DMap.cs | 6 +- .../V5010/Layouts/Maps/L2330D_837IMap.cs | 6 +- .../V5010/Layouts/Maps/L2330D_837PMap.cs | 10 +- .../V5010/Layouts/Maps/L2330E_837DMap.cs | 6 +- .../V5010/Layouts/Maps/L2330E_837IMap.cs | 6 +- .../V5010/Layouts/Maps/L2330E_837PMap.cs | 9 +- .../V5010/Layouts/Maps/L2330F_837DMap.cs | 4 +- .../V5010/Layouts/Maps/L2330F_837IMap.cs | 5 +- .../V5010/Layouts/Maps/L2330F_837PMap.cs | 10 +- .../V5010/Layouts/Maps/L2330G_837DMap.cs | 5 +- .../V5010/Layouts/Maps/L2330G_837IMap.cs | 6 +- .../V5010/Layouts/Maps/L2330G_837PMap.cs | 8 +- .../V5010/Layouts/Maps/L2330H_837DMap.cs | 6 +- .../V5010/Layouts/Maps/L2330H_837IMap.cs | 5 +- .../V5010/Layouts/Maps/L2330I_837IMap.cs | 4 +- .../V5010/Layouts/Maps/L2400_837DMap.cs | 54 +- .../V5010/Layouts/Maps/L2400_837IMap.cs | 15 +- .../V5010/Layouts/Maps/L2400_837PMap.cs | 136 +- .../V5010/Layouts/Maps/L2410_837IMap.cs | 4 +- .../V5010/Layouts/Maps/L2420A_837DMap.cs | 6 +- .../V5010/Layouts/Maps/L2420A_837IMap.cs | 6 +- .../V5010/Layouts/Maps/L2420A_837PMap.cs | 3 +- .../V5010/Layouts/Maps/L2420B_837DMap.cs | 6 +- .../V5010/Layouts/Maps/L2420B_837IMap.cs | 6 +- .../V5010/Layouts/Maps/L2420B_837PMap.cs | 3 +- .../V5010/Layouts/Maps/L2420C_837DMap.cs | 6 +- .../V5010/Layouts/Maps/L2420C_837IMap.cs | 6 +- .../V5010/Layouts/Maps/L2420C_837PMap.cs | 3 +- .../V5010/Layouts/Maps/L2420D_837DMap.cs | 5 +- .../V5010/Layouts/Maps/L2420D_837IMap.cs | 5 +- .../V5010/Layouts/Maps/L2420D_837PMap.cs | 3 +- .../V5010/Layouts/Maps/L2420E_837PMap.cs | 3 +- .../V5010/Layouts/Maps/L2420F_837PMap.cs | 4 +- .../V5010/Layouts/Maps/L2420G_837PMap.cs | 3 +- .../V5010/Layouts/Maps/L2420H_837PMap.cs | 3 +- .../V5010/Layouts/Maps/L2430_837IMap.cs | 3 +- .../Generated/V5010/Layouts/Maps/T835Map.cs | 6 +- .../Generated/V5010/Layouts/Maps/T837DMap.cs | 2 +- .../Generated/V5010/Layouts/Maps/T837PMap.cs | 12 +- .../Generated/V5010/Layouts/T837D.cs | 2 +- .../Generated/V5010/Layouts/T837P.cs | 6 +- .../Generated/V5010/Segments/Maps/HIMap.cs | 24 +- .../Generated/V5010/Segments/Maps/NM1Map.cs | 7 +- .../Generated/V5010/Segments/Maps/PWKMap.cs | 2 +- .../Generated/V5010/Segments/NM1.cs | 8 +- .../Generated/V5010/Segments/PWK.cs | 2 +- src/Machete.sln.DotSettings | 1 + src/Machete/DateTimeValueExtensions.cs | 2 +- src/Machete/IQueryBuilder.cs | 8 +- src/Machete/IQueryParser.cs | 19 + src/Machete/LayoutValue.cs | 26 + src/Machete/Layouts/MissingLayoutList.cs | 9 +- .../Layouts/Properties/PropertyList.cs | 2 +- src/Machete/Querying/SelectExtensions.cs | 163 +- src/Machete/Querying/SeriesExtensions.cs | 10 +- src/Machete/Querying/SkipExtensions.cs | 8 +- src/Machete/Querying/ThenExtensions.cs | 1 + src/Machete/Querying/WhereExtensions.cs | 10 + src/Machete/ResultExtensions.cs | 51 +- src/Machete/TextParsers/SelectTextParser.cs | 2 +- src/Machete/TranslateContext.cs | 4 +- .../EntityTranslateContext.cs | 8 +- src/Machete/readme.md | 11 - 595 files changed, 37930 insertions(+), 3626 deletions(-) create mode 100644 src/.gitignore create mode 100644 src/Machete.HL7.Tests/QueryTests/FirstOrDefaultQueryTests.cs create mode 100644 src/Machete.HL7.Tests/QueryTests/SelectManyQueryTests.cs create mode 100644 src/Machete.HL7.Tests/QueryTests/SingleOrDefaultQueryTests.cs create mode 100644 src/Machete.HL7.Tests/TestSchema/CNEComponent.cs create mode 100644 src/Machete.HL7.Tests/TestSchema/CNEComponentMap.cs create mode 100644 src/Machete.HL7.Tests/TestSchema/MSASegment.cs create mode 100644 src/Machete.HL7.Tests/TestSchema/MSASegmentMap.cs create mode 100644 src/Machete.HL7/SegmentValue.cs create mode 100644 src/Machete.X12.Tests/Layouts/Layout277Tests.cs create mode 100644 src/Machete.X12.Tests/Layouts/MissingLayoutListTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing277AckL2000BConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing277AckL2000DConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing277AckL2010BAConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing277AckL2200AConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing277AckL2200BConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing277ConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing277L2200DConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing837DentalL2010AAConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing837DentalL2010ACConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2010AAConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2010ACConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2010BAConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2010BBConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2010CAConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P10ConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P11ConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P12ConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P13ConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P14ConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P1ConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P2ConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P3ConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P4ConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P5ConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P6ConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P7ConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P8ConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P9ConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2330BConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2400P1ConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2400P2ConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2400P3ConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2400P4ConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2400P5ConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2400P6ConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2400P7ConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2400P8ConditionalTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/ParsingMultipleSegmentOfSameTypeTests.cs create mode 100644 src/Machete.X12.Tests/Layouts/SegmentMissingExceptionTests.cs create mode 100644 src/Machete.X12.Tests/TestSchema/LayoutCondition2Issue.cs create mode 100644 src/Machete.X12.Tests/TestSchema/LayoutCondition2IssueMap.cs create mode 100644 src/Machete.X12.Tests/TestSchema/LayoutCondition3Issue.cs create mode 100644 src/Machete.X12.Tests/TestSchema/LayoutCondition3IssueMap.cs create mode 100644 src/Machete.X12.Tests/TestSchema/LayoutConditionIssue.cs create mode 100644 src/Machete.X12.Tests/TestSchema/LayoutConditionIssueMap.cs create mode 100644 src/Machete.X12.Tests/TestSchema/PERSegment.cs create mode 100644 src/Machete.X12.Tests/TestSchema/PERSegmentMap.cs create mode 100644 src/Machete.X12/SegmentValue.cs rename src/Machete.X12Schema/Generated/V5010/Layouts/{T277.cs => CAT277.cs} (91%) rename src/Machete.X12Schema/Generated/V5010/Layouts/Maps/{T277Map.cs => CAT277Map.cs} (86%) create mode 100644 src/Machete/LayoutValue.cs delete mode 100644 src/Machete/readme.md diff --git a/README.md b/README.md index 21aa5e5d6..7922e62a6 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ -# Machete + +## Machete ### Cut through the Crap! ![Machete](machete_thin_outline_small.png) @@ -9,21 +10,851 @@ Machete is a parser, object mapper, and query engine for processing sophisticate Machete is highly optimized and leverages efficient parsing algorithms combined with lazy text evaluation, which reduce memory usage, limit garbage collection, and defer string allocations, resulting in blazing fast performance. -Machete fully supports asynchronous processing of text, including streams, making it a perfect for building high-volume, multi-threaded, and distributed systems. - +Machete fully supports asynchronous processing of text, including streams, making it perfect for building high-volume, multi-threaded, distributed systems. -## HL7 +**HL7** Machete was designed from the ground up to support HL7 messages and can parse and map segments, fields, components, and subcomponents. Machete supports multiple HL7 versions, which can be used simultaneously without conflict. +
+ +**X12** + +Machete was also designed from the ground up to support X12 transactions and can parse and map segments, elements, and sub-elements. Machete supports multiple X12 versions, which can be used simultaneously without conflict. In addition, loops and conditional parsing is also supported. + +
+ + +[![nuget](https://img.shields.io/nuget/v/Machete.NET.svg)](https://www.nuget.org/packages/Machete.NET/) +[![Join the chat at https://gitter.im/PhatBoyG-Machete/Lobby](https://badges.gitter.im/PhatBoyG-Machete/Lobby.svg)](https://gitter.im/PhatBoyG-Machete/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) +[![Build status](https://ci.appveyor.com/api/projects/status/github/phatboyg/machete?branch=develop&svg=true)](https://ci.appveyor.com/api/projects/status/github/phatboyg/machete) +[![Test status](https://img.shields.io/appveyor/tests/phatboyg/machete/develop.svg)](https://ci.appveyor.com/project/phatboyg/machete/build) + + +## Design Principles + +Machete was born out of more than 10 years of R&D and in that time period, we have established some unwritten rules around how we chose to implement certain APIs and functionality that we will formalize here. + +##### Use proven Computer Science + +The challenge of translating healthcare specifications to parsing libraries written in specific programming languages can be challenging at times. +Not only does one have to deal with the challenges associated with the specification, there are many challenges around choosing a particular language or using particular algorithms to solve problems. +That said, most parsing libraries tend to favor using particular programming paradigms throughout, even when it doesn't make sense to do so. Our philosophy is simple, do whatever makes the most sense for the situation. +Although we chose to implement Machete in an Object Oriented Programming (OOP) language, we recognize that sometimes it will make sense to use OOP and other times it will make sense to use other paradigms like Functional Programming (FP). That said, we chose to implement Machete using mainly FP concepts. +The rationale behind this was that FP provides some really powerful concepts and metaphors around speed and reliability that we felt were paramount to building a high performance healthcare parsing library. +From monads, applicative functors, and higher-order functions, to functional purity, function honesty, and lazy evaluation, Machete is based on 70 years of mathematical theory and computer science. -## X12 -Machete was also designed to support X12 messages, support will be coming soon. +##### Make it difficult to fail +- Maintain data fidelity during parsing operations (i.e. you are not allowed to operate directly on source data) +- Enforce user-defined immutable in-memory data structures +- Model classes are generated at runtime by Machete +- APIs should be singularly focused on doing one thing well (e.g. you cannot manipulate data from the parsing API) + + +##### Do no harm +- Throw exceptions only in exceptional cases (e.g. when message headers are missing, etc.) +- Always return an object to the caller even in situations when the input is invalid + + +##### Fast but predictable +- Parsing must be fast but consistently evaluate to the same output given the same input +- Small memory footprint ## Developing Machete -Machete is written entirely in C# and was developed using JetBrains Rider. It supports the standard .NET framework, as well as .NET Standard, allowing it to be used on any .NET compatible platform. +Machete is written entirely in C# and was developed using JetBrains Rider. It supports the standard .NET framework (>= 4.5.2), as well as .NET Standard (>= 2.1.0), allowing it to be used on any .NET compatible platform (e.g. Windows, macOS, Linux, etc.). Machete has been tested on Windows 7, 8, and 10 (.NET Framework and .NET Core) macOS (Mono and .NET Core) + + +## NuGet the Bits + +If you are working in HL7, you need the following NuGet packages:
+Machete.NET
+Machete.HL7
+Machete.HL7Schema +

+If you are working in X12, you need the following NuGet packaged:
+Machete.NET
+Machete.X12
+Machete.X12Schema + + +## Registering Machete Components + +Before using any of Machete's APIs, components must be registered. Below represents which components that must be registered and in what scenarios should they be registered. + +
+ +**Step 1:** Register the Machete components you need

+*If parsing and/or translating a message, register a schema and parser like so...* + +**HL7** +```c# +var schema = Machete.Schema.Factory.CreateHL7(cfg => cfg.AddFromNamespaceContaining()); +var parser = Machete.Parser.Factory.CreateHL7(schema); +``` +**X12** +```c# +var schema = Machete.Schema.Factory.CreateX12(cfg => cfg.AddFromNamespaceContaining()); +var parser = Machete.Parser.Factory.CreateX12(schema); +``` + +
+ +Please note that calling the *AddFromNamespaceContaining* method assumes that your schema entities are in the same namespace. So, the above examples will register the default schema, which is in the same namespace by convention. However, if you wanted to register your schema entities alongside the default schema then you would do something like this... + +```c# +var schema = Machete.Schema.Factory.CreateHL7(cfg => + { + cfg.AddFromNamespaceContaining()); + cfg.AddFromNamespaceContaining(); + }; +``` + +Since registering the schema is expensive, consider using the singleton pattern. In other words, the schema should only be registered once in your application. You can use your favorite DI container or those do it yourselfers, you can look at HL7MacheteTestHarness or X12MacheteTestHarness for examples. +

+ +*If using the formatter to encode in-memory schema objects into other formats, register these formatters like so...* + +**HL7** +```c# +var formatter = Machete.Formatter.Factory.CreateHL7(schema); +``` +**X12** +```c# +var formatter = Machete.Formatter.Factory.CreateX12(schema); +``` +
+ +DI container example (**Autofac**) +```c# +public class MacheteModule : + Module +{ + protected override void Load(ContainerBuilder builder) + { + builder.Register(context => Machete.Schema.Factory.CreateHL7(x => x.AddFromNamespaceContaining())) + .SingleInstance() + .As>(); + + builder.Register(context => + { + var schema = context.Resolve>(); + + return Machete.Formatter.Factory.CreateHL7(schema); + }) + .SingleInstance() + .As>(); + + builder.Register(context => + { + var schema = context.Resolve>(); + + return Machete.Parser.Factory.CreateHL7(schema); + }) + .SingleInstance() + .As>(); + } +} +``` + +
+ +# Parsing Text + +Parsing is the most fundamental operation that can be performed within Machete. Machete defines four Higher-order Parsers (HOP) that are publicly accessible through the parsing API. In particular, Machete implements the following HOPs: + +| HOP | Description | +|:----------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Layout | Parses and returns predefined data structures given a pattern T of *Layout\* | +| LINQ | Given an ad hoc query pattern expressed with LINQ to HL7/X12, parses and returns either anonymous or predefined data structures | +| Entity | Given an exact location within source data scoped by a transaction, parses and returns predefined data structures T of type *Entity\* or *EntityList\* | +| Streaming | Parses either a random block of data or a block of data defined by a transaction within a set from a large data file into predefined data structures T of type *Entity\*, *EntityList\*, *Layout\*, or *LayoutList\* | + +Similar to the functional programming concept Higher-order Functions (HOF), we refer to the aforementioned parsers as being higher-order because each is composed of lower level parsers that exhibit characteristics specific to their function. For example, assume we wanted to express collecting the insurance information—that is, either an IN1 or IN2 segment—from an ORM R01 (i.e. Order) message, we might +write a query that looks like this... + +```c# +var query = parse.Query(q => + from msh in q.Select() + from pid in q.Select() + from insurance in q.Select().Or(q.Select()) + select insurance); +``` + +The HOP defined above is composed of at least five parsers that are visible (e.g. *Select* and *Or*). What you don't see is the text parsers underneath doing things like parsing line terminators, delimiters, etc. Each parser understands how to do its job without understanding anything about the other. The HOP—LINQ to HL7 parser in our example—is responsible for binding lower level parsers together with the intent of returning a single result so that the data can be subsequently be accessed. + + +
+ +**Step 1:** Initialize a Higher-order Parser + +*If parsing a single message, then call the parser like so...* +```c# +var parse = parser.Parse(message); +``` + +Note that the above code snippet works for initializing *Entity*, *Layout*, and *LINQ* parsers. + +
+ +*If parsing a string of multiple messages, then call the streaming parser like so...* +```c# +using (var stream = new StringReader(message)) +{ + StreamText text = await new TextReaderStreamTextReader(stream, Environment.NewLine).Text; + var parse = await parser.ParseStream(text, new TextSpan(0, text.Length)); + + ... +} +``` +
+ +*If parsing a file of a single message or multiple messages, then call the streaming parser like so...* +```c# +using (var stream = File.OpenRead(file)) +{ + StreamText text = await new StreamTextReader(stream).Text; + var parse = await parser.ParseStream(text, new TextSpan(0, text.Length)); + + ... +} +``` +
+ +**Step 2:** Query the message + +*If querying entities, then you can do something like this...* + +```c# +while (parse.HasResult) +{ + while (parse.TryGetEntity(index, out HL7Segment segment)) + { + ... + } + + result = await parse.NextAsync(); +} +``` + +
+ +*If querying using layout patterns, then you can do something like this...* + +```c# +using (var stream = File.OpenRead(file)) +{ + var text = await new StreamTextReader(stream).Text; + var parse = await parser.ParseStream(text, new TextSpan(0, text.Length)); + + if (!schema.TryGetLayout(out ILayoutParserFactory layout)) + return; + + while (parse.HasResult) + { + IParser query = parse.CreateQuery(layout); + Result, HCPA835> queryResult = parse.Query(query); + + if (queryResult.HasResult) + { + ... + } + + result = await result.NextAsync(); + } +} +``` + +
+ +*If querying using LINQ, then you can do something like this...* + +###### LINQ to HL7 +```c# +var query = parse.Query(q => + from msh in q.Select() + from skip in q.Except().ZeroOrMore() + from orc in q.Select().ZeroOrMore() + select orc); +``` + +###### LINQ to X12 +```c# +var query = schema.CreateQuery(q => + from isa in q.Select() + from skip in q.Except().ZeroOrMore() + from nm1 in q.Select() + select nm1); +``` + +
+ +#### Advanced LINQ + +Below is a more advanced example of the LINQ parser in action. Notice that there are several sub-queries within the query that is eventually returned. +```c# +var query = parse.Query(q => + { + var obxQuery = from obx in q.Select() + from nte in q.Select().ZeroOrMore() + select new + { + OBX = obx, + NTE = nte + }; + + var obrQuery = from obr in q.Select() + from dg1 in q.Select().Optional() + from obx in obxQuery.Optional() + select new + { + OBR = obr, + DG1 = dg1, + OBX = obx + }; + + var testQuery = from orc in q.Select() + from obr in obrQuery.ZeroOrMore() + select new + { + ORC = orc, + OBR = obr + }; + + return from msh in q.Select() + from nte in q.Select().ZeroOrMore() + from skip in q.Except().ZeroOrMore() + from tests in testQuery.ZeroOrMore() + select new + { + MSH = msh, + Notes = nte, + Tests = tests + }; + }); +``` + +
+ +Unlike other parsing libraries that provide LINQ support through returning POCOs and encouraging the use of .NET's LINQ facility to query over said objects, Machete extends LINQ to provide a mechanism to compose parsers for specific use cases. + +| Parser | Description | Example | +|:---------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:----------------------------------------| +| **Select** | Iterate over several items in a set, projecting them onto a defined variable. | [example](#using-the-select-parser) | +| **SelectMany** | Iterate over an array of parsed entities, within a field of *ValueList\*, then iterate over a structure that has one or more entities (e.g. segment), *Entity\*, returning a one-dimensional array of projected items. | [example](#using-the-selectmany-parser) | +| **Except** | Iterate over an array of entities excluding them all until reaching the specified entity, subsequently returning a one-dimensional array of excluded entities. | [example](#using-the-except-parser) | +| **Where** | Returns a parser if the filter condition evaluates to true. | [example](#using-the-where-parser) | + +
+ +Machete provides the below extensions for the above parsers. + +| Extension | Description | Example | +|:--------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:----------------------------------| +| **Skip** | Skip over one or more entities, moving the cursor to the matched location and returning a list of skipped entities up to the match point. | [example](#using-skip) | +| **SkipUntil** | Skip until the specified entity is matched, moving the cursor to the matched location and returning a list of skipped entities including the entity that serves as the match condition. | [example](#using-skipuntil) | +| **Take** | Return a list of *n* entities after the entity has been selected. | [example](#using-take) | +| **TakeWhile** | Take the specified entities from the message starting from the current position of the cursor so long as the condition is true. | [example](#using-takewhile) | +| **OneOrMore** | Return a list of 1 or *n* parsed entities. | [example](#using-oneormore) | +| **ZeroOrMore** | Return a list of 0 or *n* parsed entities. | [example](#using-zeroormore) | +| **Optional** | Returns zero or exactly one parsed entity. | [example](#using-optional) | +| **Or** | Return an alternative element if the Select parser does not return with a valid item. | [example](#using-or) | +| **Then** | Return a different item after the entity has been selected. | [example]() | +| **SingleOrDefault** | Returns the single parsed entity from the list, if there is only a single entity, otherwise, it returns the default value. | [example](#using-singleordefault) | +| **FirstOrDefault** | Returns the first parsed entity in the list, or the default value if the list is empty. The entire list is parsed, but only the first item is returned. The remaining items are ignored. | [example](#using-firstordefault) | +| **One** | Returns a parsed entity as a singular list instead of a single entity. | [example](#using-one) | +| **Peek** | | [example](#using-one) | + + + +**Step 3:** Accessing data + +```c# +string placerGroupNumber = result.Result.Tests[0].ORC.PlacerGroupNumber.Select(x => x.EntityIdentifier).ValueOrDefault(); +``` + +Note: Use the *Select* and *ValueOrDefault* methods to prevent exceptions from bubbling up to the caller when attempting to access fields. + + +#### Parser Examples + +###### Using the WHERE parser + +```c# +var result = entityResult.Query(q => + from msh in q.Select() + from obr in q.Select() + .Select(x => x.PlacerOrderNumber) + .Select(x => x.UniversalId) + .Where(x => x.IsEqualTo("PRO2350")) + .ZeroOrMore() + select new + { + MSH = msh, + Tests = obr + }); +``` + +###### Using the Select parser + +```c# +var result = parsed.Query(q => + from msh in q.Select() + select msh); +``` + +###### Using the Except parser + +```c# +var result = parsed.Query(q => + from ignored in q.Except().ZeroOrMore() + from nm1 in q.Select() + select nm1; +``` + +###### Using the SelectMany parser + +```c# + +``` + +###### Using Skip + +```c# +var result = parse.Query(q => from msh in q.Select() + from ignored in q.Select().Skip(q.Select()) + from notes in q.Select() + select notes); +``` + +###### Using SkipUntil + +```c# +var result = parse.Query(q => + from msh in q.Select() + from orc in q.Select().SkipUntil(q.Select()).ZeroOrMore() + select orc); +``` + +###### Using Take + +```c# +var result = parse.Query(q => + from msh in q.Select() + from pid in q.Select() + from insurance in q.Select().Take(2) + select insurance); +``` + +###### Using TakeWhile + +```c# +var result = parse.Query(q => + from msh in q.Select() + from pid in q.Select() + from insurance in q.Select().TakeWhile(x => x.GroupNumber.HasValue) + select insurance); +``` + +###### Using OneOrMore + +```c# +var result = parse.Query(q => + from msh in q.Select() + from notes in q.Select().OneOrMore() + select notes); + +``` + +###### Using ZeroOrMore + +```c# +var result = parse.Query(q => + from msh in q.Select() + from notes in q.Select().ZeroOrMore() + select notes); +``` + +###### Using One + +```c# +var result = parse.Query(q => + from msh in q.Select() + from notes in q.Select().One() + select notes); +``` + +###### Using Or + +```c# +var query = entityResult.Query(q => + from msh in q.Select() + from pid in q.Select() + from insurance in q.Select().Or(q.Select()) + select insurance); +``` + +###### Using FirstOrDefault + +```c# +var result = parse.Query(q => + from msh in q.Select() + from pid in q.Select() + from insurance in q.Select().ZeroOrMore().FirstOrDefault() + select insurance); +``` + +###### Using SingleOrDefault + +```c# +var result = parse.Query(q => + from msh in q.Select() + from pid in q.Select() + from insurance in q.Select().ZeroOrMore().SingleOrDefault() + select insurance); +``` + +###### Using Optional + +```c# +var result = parse.Query(q => + from msh in q.Select() + from evn in q.Select().Optional() + select new { MSH = msh, EVN = evn }); +``` + + +
+ +## Translating Parsed Data + +If you need to change the parsed data, then Machete provides a separate API from the parsing API since the message being parsed is immutable. Below are the steps necessary to translate the data. + +
+ +**Step 1:** Define a translate +```c# +public class MessageTranslation : + HL7Translation +{ + public MessageTranslation() + { + Translate(x => x.Using()); + } +} + +public class ReplaceSendingApplication : + HL7SegmentTranslation +{ + public ReplaceSendingApplication() + { + Copy(x => x.ReceivingApplication, x => x.SendingApplication); + + Set(x => x.CreationDateTime, x => DateTimeOffset.UtcNow); + } +} +``` + +
+ +**Step 2:** Get a translator from the schema based on the translate defined in step 1 +```c# +var translator = schema.GetTranslator(); +``` + +
+ +**Step 3:** Translate the parsed data using the translator created in step 2 + + +```c# +var translateResult = await translator.Translate(parse); +``` + +
+ +## Formatting Objects + +It is common to use in-memory objects within algorithms but those objects need to encoded before they can be transmitted with other systems. In Machete, this is how you would use the default formatter to output a text string representation of in-memory objects. +```c# +using (var memoryStream = new MemoryStream()) +{ + var formatted = await formatter.FormatAsync(memoryStream, input); + + string text = Encoding.UTF8.GetString(memoryStream.ToArray()); + + ... +} +``` + +If you just want to cut through the crap, you can just call the extension method that ships with Machete like so... + +```c# +var formatted = await Formatter.FormatToStringAsync(parse); +``` +Currently, the formatter supports ParseResult, EntityResult, and TranslateResult. + + +
+ +## Creating Schema + +Although Machete ships with default schemas in both HL7 and X12 that adhere to those corresponding specifications, we felt that it was equally necessary to provide a mechanism to generate your own schema. + +
+ +*If defining a data type, follow the below steps.* + +**Step 1:** Define the data type +```c# +public interface ID : + HL7Component +{ + Value Identifier { get; } + Value AssigningAuthority { get; } + Value IdentifierTypeCode { get; } + Value IssueDateTime { get; } +} +``` + +
+ +**Step 2:** Define the data configurator +```c# +public class IDMap : + HL7ComponentMap +{ + public IDMap() + { + Value(x => x.Identifier, 0, x => x.IsRequired()); + Entity(x => x.AssigningAuthority, 1); + Value(x => x.IdentifierTypeCode, 2); + Value(x => x.IssueDateTime, 3, x => x.IsRequired()); + } +} +``` +Please note that when configuring components the first available index is 0 since field components do not have identifiers like segments (e.g. PID, MSH, etc.). + +
+ + +*If defining a segment, follow the below steps.* + +**Step 1:** Define a segment +```c# +public interface PatientDemographics : + HL7Segment +{ + Value AccountIdentifier { get; } + Value SSN { get; } + Value FirstName { get; } + Value LastName { get; } + Value MiddleName { get; } + Value Suffix { get; } + Value Prefix { get; } + Value Gender { get; } + Value DateOfBirth { get; } + Value Address { get; } + Value City { get; } + Value Region { get; } + Value ZipCode { get; } +} +``` + +
+ +**Step 2:** Define the data configurator +```c# +public class PatientDemographicsMap : + HL7SegmentMap +{ + public PatientDemographicsMap() + { + Id = "ZPD"; + Name = "Patient Demographics"; + + Entity(x => x.AccountIdentifier, 1, x => x.IsRequired()); + Entity(x => x.SSN, 2, x => x.IsRequired()); + Value(x => x.FirstName, 3, x => x.IsRequired()); + Value(x => x.LastName, 4, x => x.IsRequired()); + Value(x => x.MiddleName, 5); + Value(x => x.Suffix, 6); + Value(x => x.Prefix, 7); + Value(x => x.Gender, 8, x => x.IsRequired()); + Value(x => x.DateOfBirth, 9, x => x.IsRequired()); + Value(x => x.Address, 9, x => x.IsRequired()); + Value(x => x.City, 9, x => x.IsRequired()); + Value(x => x.Region, 9, x => x.IsRequired()); + Value(x => x.ZipCode, 9, x => x.IsRequired()); + } +} +``` + +
+ +*If defining a layout, follow the below steps.* + +**Step 1:** Define the layout +```c# +public interface Order : + HL7Layout +{ + Segment ORC { get; } + Segment OBR { get; } + Segment DG1 { get; } + Segment OBX { get; } + SegmentList Notes { get; } + Segment ZPD { get; } +} +``` + +
+ +**Step 2:** Define the data configurator +```c# +public class OrderMap : + HL7LayoutMap +{ + public OrderMap() + { + Segment(x => x.ORC, 0, x => x.IsRequired()); + Segment(x => x.OBR, 1, x => x.IsRequired()); + Segment(x => x.DG1, 2); + Segment(x => x.OBX, 3, x => x.IsRequired()); + Segment(x => x.Notes, 4); + Segment(x => x.ZPD, 5, x => x.IsRequired()); + } +} +``` + +
+ +Please note that all defined schema is immutable. We enforce this during initialization of the schema at runtime, which is the reason for the initial performance hit and why the Machete components should be registered only once. Due to this design, you are not allowed to add setters to the backing class, which means that if you were to add a setter to the defined schema it would not have a supporting implementation. Therefore, we are able to enforce and maintain data fidelity throughout parsing operations. For the caller, this translates into faster and more consistent execution. For the developer, this means you never have to debug the parsing operation for bugs that might have been injected by custom logic in the caller. + +
+ +*Registering your new schema is easy, just do the following...* +```c# +var schema = Machete.Schema.Factory.CreateHL7(cfg => + { + cfg.AddFromNamespaceContaining()); + cfg.AddFromNamespaceContaining(); + }; +``` +This will register both entity and corresponding data configurator for your schema because, by convention, they should all be in the same base namespace. + +## Enforcing Data Fidelity + +Enforcing data fidelity is paramount in Machete. It's not good enough to be fast if the parser reinforces state mutation by design. Parsing and manipulating source data through the same API construct within the same context can lead to state mutation. State mutation happens when a mutable object is changed unpredictably during execution causing side effects in the caller, which can result in the caller executing randomly. This is the worst possible outcome in the context of debugging large scale, data-driven healthcare systems. When we say we enforce this by design we mean the following: + +*1. Parsing is immutable and so are the returned objects.* Machete enforces this characteristic through the introduction of the below monadic algebraic data types. + +| Type | Description | Example | +|:--------------------|:------------------------------------------------------------------------------------------------------------------------------------------------|:------------------------------| +| **Value\** | This data type represents a single value, which can be of any allowed value type (e.g. string, int, long, bool, DateTime, DateTimeOffset, etc.) | [example](#using-valuet) | +| **ValueList\** | This data type represents a read-only list of Value\ | [example](#using-valuelistt) | +| **Layout\** | This data type encapsulates a single layout, which is composed of Entity\ and EntityList\ | [example](#using-layoutt) | +| **LayoutList\** | This data type represents a read-only list of Layout\ | [example](#using-layoutlistt) | +| **Entity\** | This data type encapsulates a single entity (i.e. complex type), which is composed of Value\ and ValueList\ | [example](#using-entityt) | +| **EntityList\** | This data type represents a read-only list of Entity\ | [example](#using-entitylistt) | + + +Each of the above data types are self composable. For example, a Layout\ data type can be composed of other Layout\ data types. That said, depth and breath of defining composable models are limited only by the associated rules as implemented by the parser. The six aforementioned data types fall into the following categories: +- **Complex**—data types (i.e. Layout\ and Entity\) that are used to model a message within a transaction set or a group of entities within a single message. These data types are composed of other container data types (e.g. Layout\ and Entity\). +- **Primitive**—data types (i.e. Value\) that are used to define entity containers—that is, containers that implement Entity\. These data types are composed of language primitives (e.g. int, bool, etc.), value types (e.g. DateTimeOffset, etc.), and complex data types (e.g. Entity\). + +Complex data types are configured by data configurators describing the structure of the contained data types. In contrast, primitive data types are not required to be configured. + +The model remains immutable because the schema is implemented at runtime by Machete based on the defined entities (i.e. Entity\ and Layout\) so there is no opportunity to inject code that can eventually be used to mutate the state of the parse in the caller. + +
+ +*2. Changes to the parse can only be made through the Translation API, which works off of a copy of the parsed data.* This is extremely important because Machete does not allow source data to manipulated by design. While other parsing libraries make it simple to manipulate data through the parsing API, Machete's approach effectively makes debugging caller code easier since the only place where data is manipulated is explicitly in the translates you build. + +
+ +*3. Since Machete parses text data through the lens of an object, it is plausible that the text data will not always match the defined schema model, which means that there must be a mechanism to get at the raw source data.* An example of this would be if a model was defined to have a field of, say, type integer, and the text consists of alphanumeric data. When attempts are made to access the data an exception will be thrown and bubbled up to the caller because it cannot strongly type the returned text into an integer. In such a case, you would probably want access to the raw text data. In such a scenario, Machete provides two mechanisms to facilitate the creation of stable parsing algorithms in the caller: + +- **Select**-an applicative functor (aka *applicative*) that guarentees that accessing the field in situations where it is missing will not throw an exception. +- **ValueOrDefault**-a method that safely executes the chain by attempting to call the Value property, swallowing any and all exceptions thrown and returning a type default or user-defined default to the caller. + +```c# +string messageCode = result + .Select(x => x.MessageType) + .Select(x => x.MessageCode) + .ValueOrDefault(); +``` +
+ + +#### Monadic Algebraic Data Type Examples + + +###### Using Value\ + +```c# +public interface ID : + HL7Component +{ + Value Identifier { get; } +} +``` + +###### Using ValueList\ + +```c# +public interface ID : + HL7Component +{ + ValueList Names { get; } +} +``` + +###### Using Layout\ + +```c# +public interface OrderTest : + HL7Layout +{ + Segment ORC { get; } + Segment OBR { get; } +} +``` + +###### Using LayoutList\ + +```c# +public interface Order : + HL7Layout +{ + Segment PID { get; } + LayoutList Tests { get; } +} +``` + +###### Using Entity\ + +```c# +public interface IN1 : + HL7Segment +{ + Value SetId { get; } + Value InsurancePlanId { get; } +} +``` + +###### Using EntityList\ + +```c# +public interface Order : + HL7Layout +{ + SegmentList Insurance { get; } +} +``` +## License +Licensed under the terms of [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0) \ No newline at end of file diff --git a/src/.gitignore b/src/.gitignore new file mode 100644 index 000000000..d85ff4db3 --- /dev/null +++ b/src/.gitignore @@ -0,0 +1,12 @@ +# Default ignored files +/.idea/shelf/ +/.idea/workspace.xml + +# Datasource local storage ignored files +/.idea/.idea.Machete/.idea/dataSources/ +dataSources.local.xml + +# Editor-based HTTP Client requests +/.idea/httpRequests/ +rest-client.private.env.json +http-client.private.env.json \ No newline at end of file diff --git a/src/Machete.HL7.Tests/EntityFieldAccessTests/EscapeCharacterTests.cs b/src/Machete.HL7.Tests/EntityFieldAccessTests/EscapeCharacterTests.cs index e94dc3f7e..a07abaf9f 100644 --- a/src/Machete.HL7.Tests/EntityFieldAccessTests/EscapeCharacterTests.cs +++ b/src/Machete.HL7.Tests/EntityFieldAccessTests/EscapeCharacterTests.cs @@ -17,8 +17,10 @@ public void Should_be_able_to_parse_subcomponent_escape_sequence() PTS|Johnson \T\ Johnson|"; var parsed = Parser.Parse(message); - var result = parsed.Query(q => from msh in q.Select() - from pts in q.Select() from st in pts.StandardText + var result = parsed.Query(q => + from msh in q.Select() + from pts in q.Select() + from st in pts.StandardText select st); string standardText = result.ValueOrDefault(); @@ -34,7 +36,8 @@ public void Should_be_able_to_parse_field_separator_escape_sequence() PTS|Johnson \F\ Johnson|"; var parsed = Parser.Parse(message); - var result = parsed.Query(q => from msh in q.Select() + var result = parsed.Query(q => + from msh in q.Select() from pts in q.Select().Select(x => x.StandardText) select pts); @@ -51,7 +54,8 @@ public void Should_be_able_to_parse_component_separator_escape_sequence() PTS|Johnson \S\ Johnson|"; var parsed = Parser.Parse(message); - var result = parsed.Query(q => from msh in q.Select() + var result = parsed.Query(q => + from msh in q.Select() from pts in q.Select() select pts); @@ -68,7 +72,8 @@ public void Should_be_able_to_parse_escape_separator_escape_sequence() PTS|Johnson \E\ Johnson|"; var parsed = Parser.Parse(message); - var result = parsed.Query(q => from msh in q.Select() + var result = parsed.Query(q => + from msh in q.Select() from pts in q.Select() select pts); @@ -85,7 +90,8 @@ public void Should_be_able_to_parse_highlight_escape_sequence() PTS|Johnson \H\ Johnson|"; var parsed = Parser.Parse(message); - var result = parsed.Query(q => from msh in q.Select() + var result = parsed.Query(q => + from msh in q.Select() from pts in q.Select() select pts); @@ -102,7 +108,8 @@ public void Should_be_able_to_parse_repetition_separator_escape_sequence() PTS|Johnson \R\ Johnson|"; var parsed = Parser.Parse(message); - var result = parsed.Query(q => from msh in q.Select() + var result = parsed.Query(q => + from msh in q.Select() from pts in q.Select() select pts); diff --git a/src/Machete.HL7.Tests/FormatterTests/LayoutFormattingTests.cs b/src/Machete.HL7.Tests/FormatterTests/LayoutFormattingTests.cs index ba029ce09..36ef3ba7d 100644 --- a/src/Machete.HL7.Tests/FormatterTests/LayoutFormattingTests.cs +++ b/src/Machete.HL7.Tests/FormatterTests/LayoutFormattingTests.cs @@ -59,6 +59,7 @@ public void Should_be_able_to_format_layout() Assert.That(Schema.TryGetLayoutFormatter(out ILayoutFormatter formatter), Is.True); +// var formatted = await Formatter.FormatToStringAsync(result); var context = new StringBuilderFormatContext(); formatter.Format(context, orders[0].Value); diff --git a/src/Machete.HL7.Tests/QueryTests/AdvancedQueryTests.cs b/src/Machete.HL7.Tests/QueryTests/AdvancedQueryTests.cs index 699dd5da5..aebe0168c 100644 --- a/src/Machete.HL7.Tests/QueryTests/AdvancedQueryTests.cs +++ b/src/Machete.HL7.Tests/QueryTests/AdvancedQueryTests.cs @@ -86,6 +86,17 @@ select new }; }); + foreach (var orc in result.Result.Tests) + { + if (orc.ORC.PlacerGroupNumber.Select(x => x.EntityIdentifier).IsEqualTo("X0934N")) + { + string placerGroupNumber = orc.ORC + .PlacerGroupNumber + .Select(x => x.EntityIdentifier) + .ValueOrDefault(); + } + } + Assert.That(result.HasResult, Is.True); Assert.AreEqual(3, result.Result.Tests.Count); Assert.AreEqual(4, result.Result.Notes.Count); diff --git a/src/Machete.HL7.Tests/QueryTests/FirstOrDefaultQueryTests.cs b/src/Machete.HL7.Tests/QueryTests/FirstOrDefaultQueryTests.cs new file mode 100644 index 000000000..926cda5c5 --- /dev/null +++ b/src/Machete.HL7.Tests/QueryTests/FirstOrDefaultQueryTests.cs @@ -0,0 +1,42 @@ +namespace Machete.HL7.Tests.QueryTests +{ + using NUnit.Framework; + using Testing; + using TestSchema; + + + [TestFixture] + public class FirstOrDefaultQueryTests : + HL7MacheteTestHarness + { + [Test] + public void Test() + { + const string message = @"MSH|^~\&|MACHETELAB|^DOSC|MACHETE|18779|20130405125146269||ORM^O01|1999077678|P|2.3|||AL|AL +PID|1|000000000026|60043^^^MACHETE^MRN||MACHETE^JOE||19890909|F|||123 SEASAME STREET^^Oakland^CA^94600||5101234567|5101234567||||||||||||||||N +VL1|a~b~c +VL1|d~e~f +VL1|g~h~i +VL1|j~k~l +VL1|m~n~o +VL1|p~q~r +VL1|s~t~u +VL1|v~w~x +VL1|y~z"; + + var parse = Parser.Parse(message); + + var result = parse.Query(q => + from msh in q.Select() + from pid in q.Select() + from vls in q.Select().ZeroOrMore().FirstOrDefault() + select vls); + + Assert.IsTrue(result.HasResult); + + int count = result.Select(x => x.RepeatedString).Count(); + + Assert.AreEqual(3, count); + } + } +} \ No newline at end of file diff --git a/src/Machete.HL7.Tests/QueryTests/SelectManyQueryTests.cs b/src/Machete.HL7.Tests/QueryTests/SelectManyQueryTests.cs new file mode 100644 index 000000000..46a6141bc --- /dev/null +++ b/src/Machete.HL7.Tests/QueryTests/SelectManyQueryTests.cs @@ -0,0 +1,34 @@ +namespace Machete.HL7.Tests.QueryTests +{ + using NUnit.Framework; + using Testing; + using TestSchema; + + + [TestFixture] + public class SelectManyQueryTests : + HL7MacheteTestHarness + { + [Test] + public void Test() + { + const string message = @"MSH|^~\&|MACHETELAB|^DOSC|MACHETE|18779|20130405125146269||ORM^O01|1999077678|P|2.3|||AL|AL +PID|1|000000000026|60043^^^MACHETE^MRN||MACHETE^JOE||19890909|F|||123 SEASAME STREET^^Oakland^CA^94600||5101234567|5101234567||||||||||||||||N +VL1|a~b~c +VL1|d~e~f +VL1|g~h~i +VL1|j~k~l +VL1|m~n~o +VL1|p~q~r +VL1|s~t~u +VL1|v~w~x +VL1|y~z"; + + var parse = Parser.Parse(message); + +// var result = parse.Query(q => from msh in q.Select() +// from pid in q.Select() +// from vls in q.Select().SelectMany(q.Select(), x => x.RepeatedString).ZeroOrMore()) + } + } +} \ No newline at end of file diff --git a/src/Machete.HL7.Tests/QueryTests/SingleOrDefaultQueryTests.cs b/src/Machete.HL7.Tests/QueryTests/SingleOrDefaultQueryTests.cs new file mode 100644 index 000000000..c4235cbad --- /dev/null +++ b/src/Machete.HL7.Tests/QueryTests/SingleOrDefaultQueryTests.cs @@ -0,0 +1,34 @@ +namespace Machete.HL7.Tests.QueryTests +{ + using NUnit.Framework; + using Testing; + using TestSchema; + + + [TestFixture] + public class SingleOrDefaultQueryTests : + HL7MacheteTestHarness + { + [Test] + public void Test() + { + const string message = @"MSH|^~\&|MACHETELAB|^DOSC|MACHETE|18779|20130405125146269||ORM^O01|1999077678|P|2.3|||AL|AL +PID|1|000000000026|60043^^^MACHETE^MRN||MACHETE^JOE||19890909|F|||123 SEASAME STREET^^Oakland^CA^94600||5101234567|5101234567||||||||||||||||N +VL1|a~b~c"; + + var parse = Parser.Parse(message); + + var result = parse.Query(q => + from msh in q.Select() + from pid in q.Select() + from vls in q.Select().ZeroOrMore().SingleOrDefault() + select vls); + + Assert.IsTrue(result.HasResult); + + int count = result.Select(x => x.RepeatedString).Count(); + + Assert.AreEqual(3, count); + } + } +} \ No newline at end of file diff --git a/src/Machete.HL7.Tests/TestSchema/CNEComponent.cs b/src/Machete.HL7.Tests/TestSchema/CNEComponent.cs new file mode 100644 index 000000000..d1fae7323 --- /dev/null +++ b/src/Machete.HL7.Tests/TestSchema/CNEComponent.cs @@ -0,0 +1,16 @@ +namespace Machete.HL7.Tests.TestSchema +{ + public interface CNEComponent : + HL7Component + { + Value Identifier { get; } + Value Text { get; } + Value NameOfCodingSystem { get; } + Value AlternateIdentifier { get; } + Value AlternateText { get; } + Value NameOfAlternateCodingSystem { get; } + Value CodingSystemVersionId { get; } + Value AlternateCodingSystemVersionId { get; } + Value OriginalText { get; } + } +} \ No newline at end of file diff --git a/src/Machete.HL7.Tests/TestSchema/CNEComponentMap.cs b/src/Machete.HL7.Tests/TestSchema/CNEComponentMap.cs new file mode 100644 index 000000000..dcd152938 --- /dev/null +++ b/src/Machete.HL7.Tests/TestSchema/CNEComponentMap.cs @@ -0,0 +1,19 @@ +namespace Machete.HL7.Tests.TestSchema +{ + public class CNEComponentMap : + HL7ComponentMap + { + public CNEComponentMap() + { + Value(x => x.Identifier, 0); + Value(x => x.Text, 1); + Value(x => x.NameOfCodingSystem, 2); + Value(x => x.AlternateIdentifier, 3); + Value(x => x.AlternateText, 4); + Value(x => x.NameOfAlternateCodingSystem, 5); + Value(x => x.CodingSystemVersionId, 6); + Value(x => x.AlternateCodingSystemVersionId, 7); + Value(x => x.OriginalText, 8); + } + } +} \ No newline at end of file diff --git a/src/Machete.HL7.Tests/TestSchema/MSASegment.cs b/src/Machete.HL7.Tests/TestSchema/MSASegment.cs new file mode 100644 index 000000000..bb341e93f --- /dev/null +++ b/src/Machete.HL7.Tests/TestSchema/MSASegment.cs @@ -0,0 +1,18 @@ +namespace Machete.HL7.Tests.TestSchema +{ + using System; + + + public interface MSASegment : + HL7Segment + { + Value AcknowledgmentCode { get; } + Value MessageControlId { get; } + Value TextMessage { get; } + Value ExpectedSequenceNumber { get; } + Value DelayedAcknowledgmentType { get; } + Value ErrorCondition { get; } + Value MessageWaitingNumber { get; } + Value MessageWaitingPriority { get; } + } +} \ No newline at end of file diff --git a/src/Machete.HL7.Tests/TestSchema/MSASegmentMap.cs b/src/Machete.HL7.Tests/TestSchema/MSASegmentMap.cs new file mode 100644 index 000000000..f02596131 --- /dev/null +++ b/src/Machete.HL7.Tests/TestSchema/MSASegmentMap.cs @@ -0,0 +1,22 @@ +namespace Machete.HL7.Tests.TestSchema +{ + public class MSASegmentMap : + HL7SegmentMap + { + public MSASegmentMap() + { + Id = "MSA"; + + Name = "Message Acknowledgment"; + + Value(x => x.AcknowledgmentCode, 1, x => x.IsRequired()); + Value(x => x.MessageControlId, 2, x => x.IsRequired()); + Value(x => x.TextMessage, 3); + Value(x => x.ExpectedSequenceNumber, 4); + Value(x => x.DelayedAcknowledgmentType, 5, x => {x.Converter = HL7ValueConverters.VariableLongDateTime;}); + Entity(x => x.ErrorCondition, 6); + Value(x => x.MessageWaitingNumber, 7); + Value(x => x.MessageWaitingPriority, 8); + } + } +} \ No newline at end of file diff --git a/src/Machete.HL7/HL7LayoutExtensions.cs b/src/Machete.HL7/HL7LayoutExtensions.cs index 0c8168be3..6443cdaff 100644 --- a/src/Machete.HL7/HL7LayoutExtensions.cs +++ b/src/Machete.HL7/HL7LayoutExtensions.cs @@ -1,6 +1,7 @@ namespace Machete.HL7 { using System; + using System.Diagnostics; public static class HL7LayoutExtensions @@ -17,6 +18,8 @@ public static class HL7LayoutExtensions where TLayout : Layout where TSegment : HL7Segment { + Debug.Assert(source != null); + if (source == null || !source.HasValue) return Segment.Missing(); @@ -35,6 +38,8 @@ public static class HL7LayoutExtensions where TLayout : Layout where TSegment : HL7Segment { + Debug.Assert(source != null); + if (source == null || !source.HasValue) return SegmentList.Missing(); diff --git a/src/Machete.HL7/HL7SegmentExtensions.cs b/src/Machete.HL7/HL7SegmentExtensions.cs index 29661d9c2..773897a7f 100644 --- a/src/Machete.HL7/HL7SegmentExtensions.cs +++ b/src/Machete.HL7/HL7SegmentExtensions.cs @@ -1,6 +1,7 @@ namespace Machete.HL7 { using System; + using System.Diagnostics; public static class HL7SegmentExtensions @@ -17,6 +18,8 @@ public static class HL7SegmentExtensions where TSegment : HL7Segment where T : HL7Segment { + Debug.Assert(source != null); + if (source == null || !source.HasValue) return Segment.Missing(); @@ -35,6 +38,8 @@ public static class HL7SegmentExtensions where TSegment : HL7Segment where T : HL7Segment { + Debug.Assert(source != null); + if (source == null || !source.HasValue) return SegmentList.Missing(); @@ -48,19 +53,29 @@ public static class HL7SegmentExtensions /// public static bool IsEmpty(this HL7Segment segment) { + Debug.Assert(segment != null); + + if (segment == null) + return true; + return !segment.ParsedText.TryGetSlice(1, out _); } /// /// Returns true if the component is empty (doesn't contain any text beyond the segmentId) /// - /// + /// /// - public static bool IsEmpty(this HL7Component segment) + public static bool IsEmpty(this HL7Component component) { + Debug.Assert(component != null); + + if (component == null) + return true; + for (int i = 0;; i++) { - if (!segment.ParsedText.TryGetSlice(i, out var nextSlice)) + if (!component.ParsedText.TryGetSlice(i, out var nextSlice)) return true; if (nextSlice.TryGetSlice(0, out _)) diff --git a/src/Machete.HL7/SegmentValue.cs b/src/Machete.HL7/SegmentValue.cs new file mode 100644 index 000000000..9d3c45958 --- /dev/null +++ b/src/Machete.HL7/SegmentValue.cs @@ -0,0 +1,27 @@ +namespace Machete +{ + using HL7; + using HL7.Segments; + + + public static class SegmentValue + { + /// + /// A missing value is one that has no value. + /// + /// + /// + public static Segment Missing() + where T : HL7Segment + { + return Cached.Missing; + } + + + static class Cached + where T : HL7Segment + { + public static readonly Segment Missing = new MissingSegment(); + } + } +} \ No newline at end of file diff --git a/src/Machete.HL7/Segments/MissingSegmentList.cs b/src/Machete.HL7/Segments/MissingSegmentList.cs index 96a6f18b6..0957f6c59 100644 --- a/src/Machete.HL7/Segments/MissingSegmentList.cs +++ b/src/Machete.HL7/Segments/MissingSegmentList.cs @@ -14,18 +14,20 @@ public class MissingSegmentList : Type IEntity.EntityType => typeof(TSegment); bool IEntity.HasValue => false; - public Segment this[int index] => throw new SegmentMissingException("The segment is missing."); + public Segment this[int index] => SegmentValue.Missing(); bool SegmentList.TryGetValue(int index, out Segment segment) { - throw new ValueMissingException("The segment is missing."); + segment = SegmentValue.Missing(); + return false; } - bool EntityList.TryGetValue(int index, out Entity value) + bool EntityList.TryGetValue(int index, out Entity segment) { - throw new ValueMissingException("The segment is missing."); + segment = SegmentValue.Missing(); + return false; } - Entity EntityList.this[int index] => throw new ValueMissingException("The segment is missing."); + Entity EntityList.this[int index] => SegmentValue.Missing(); } } \ No newline at end of file diff --git a/src/Machete.HL7/TX.cs b/src/Machete.HL7/TX.cs index 7ccb161bd..046b35bb1 100644 --- a/src/Machete.HL7/TX.cs +++ b/src/Machete.HL7/TX.cs @@ -25,7 +25,6 @@ protected TX(SerializationInfo info, StreamingContext context) { } - public int CompareTo(TX other) { return string.Compare(Text, other.Text, StringComparison.Ordinal); diff --git a/src/Machete.HL7Schema/Generated/V26/Components/AD.cs b/src/Machete.HL7Schema/Generated/V26/Components/AD.cs index fe88b3de9..94b1d9833 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/AD.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/AD.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// AD (Component) - Address /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/AUI.cs b/src/Machete.HL7Schema/Generated/V26/Components/AUI.cs index dae9fe1a9..0041d5f48 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/AUI.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/AUI.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// AUI (Component) - Authorization Information diff --git a/src/Machete.HL7Schema/Generated/V26/Components/CCD.cs b/src/Machete.HL7Schema/Generated/V26/Components/CCD.cs index 5240d79ca..a45ab2a7c 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/CCD.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/CCD.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// CCD (Component) - Charge Code and Date diff --git a/src/Machete.HL7Schema/Generated/V26/Components/CCP.cs b/src/Machete.HL7Schema/Generated/V26/Components/CCP.cs index 98b5a40fe..a23aa9df9 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/CCP.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/CCP.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// CCP (Component) - Channel Calibration Parameters /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/CD.cs b/src/Machete.HL7Schema/Generated/V26/Components/CD.cs index 8bc5a267f..ca4902764 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/CD.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/CD.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// CD (Component) - Channel Definition /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/CE.cs b/src/Machete.HL7Schema/Generated/V26/Components/CE.cs index 3e5975a90..1a57e9006 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/CE.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/CE.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// CE (Component) - Coded Element diff --git a/src/Machete.HL7Schema/Generated/V26/Components/CNE.cs b/src/Machete.HL7Schema/Generated/V26/Components/CNE.cs index 81c4bf914..47350ea79 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/CNE.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/CNE.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// CNE (Component) - Coded with No Exceptions /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/CNN.cs b/src/Machete.HL7Schema/Generated/V26/Components/CNN.cs index 338e68443..38c88c6a4 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/CNN.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/CNN.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// CNN (Component) - Composite ID Number and Name Simplified /// @@ -33,7 +31,7 @@ public interface CNN : /// CNN-4 Second and Further Given Names or Initials Thereof /// /// The string value - Value SecondAndFurtherGivenNamesOrInitialsreof { get; } + Value SecondAndFurtherGivenNamesOrInitialsThereof { get; } /// /// CNN-5 Suffix (e.g., JR or III) diff --git a/src/Machete.HL7Schema/Generated/V26/Components/CP.cs b/src/Machete.HL7Schema/Generated/V26/Components/CP.cs index 5520a8629..3bf0bd199 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/CP.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/CP.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// CP (Component) - Composite Price /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/CQ.cs b/src/Machete.HL7Schema/Generated/V26/Components/CQ.cs index fee3d5a0e..b4e78035c 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/CQ.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/CQ.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// CQ (Component) - Composite Quantity with Units /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/CSU.cs b/src/Machete.HL7Schema/Generated/V26/Components/CSU.cs index cecb03a06..507609069 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/CSU.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/CSU.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// CSU (Component) - Channel Sensitivity and Units /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/CWE.cs b/src/Machete.HL7Schema/Generated/V26/Components/CWE.cs index 3a1e8cc6d..7e7a575ea 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/CWE.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/CWE.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// CWE (Component) - Coded with Exceptions /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/CX.cs b/src/Machete.HL7Schema/Generated/V26/Components/CX.cs index 535839994..f351ce880 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/CX.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/CX.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// CX (Component) - Extended Composite ID with Check Digit diff --git a/src/Machete.HL7Schema/Generated/V26/Components/DDI.cs b/src/Machete.HL7Schema/Generated/V26/Components/DDI.cs index eb0915d60..8c9608fdc 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/DDI.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/DDI.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// DDI (Component) - Daily Deductible Information /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/DIN.cs b/src/Machete.HL7Schema/Generated/V26/Components/DIN.cs index 231614291..6c852ea04 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/DIN.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/DIN.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// DIN (Component) - Date and Institution Name diff --git a/src/Machete.HL7Schema/Generated/V26/Components/DLD.cs b/src/Machete.HL7Schema/Generated/V26/Components/DLD.cs index 47c809250..f97e799e5 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/DLD.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/DLD.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// DLD (Component) - Discharge to Location and Date diff --git a/src/Machete.HL7Schema/Generated/V26/Components/DLN.cs b/src/Machete.HL7Schema/Generated/V26/Components/DLN.cs index 3a7a78939..35a8eacdc 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/DLN.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/DLN.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// DLN (Component) - Driver's License Number diff --git a/src/Machete.HL7Schema/Generated/V26/Components/DLT.cs b/src/Machete.HL7Schema/Generated/V26/Components/DLT.cs index 1abfb107a..07e54c5ef 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/DLT.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/DLT.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// DLT (Component) - Delta /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/DR.cs b/src/Machete.HL7Schema/Generated/V26/Components/DR.cs index 9312f90d7..c6620517c 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/DR.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/DR.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// DR (Component) - Date/Time Range diff --git a/src/Machete.HL7Schema/Generated/V26/Components/DTN.cs b/src/Machete.HL7Schema/Generated/V26/Components/DTN.cs index 9dfd3cd87..3f8b9e5d9 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/DTN.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/DTN.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// DTN (Component) - Day Type and Number /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/EI.cs b/src/Machete.HL7Schema/Generated/V26/Components/EI.cs index 7a1e21cf5..888185d96 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/EI.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/EI.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// EI (Component) - Entity Identifier /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/EIP.cs b/src/Machete.HL7Schema/Generated/V26/Components/EIP.cs index bf387b1db..bdd9f23ca 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/EIP.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/EIP.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// EIP (Component) - Entity Identifier Pair /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/ELD.cs b/src/Machete.HL7Schema/Generated/V26/Components/ELD.cs index c1c2dd758..9411aaae5 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/ELD.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/ELD.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// ELD (Component) - Error Location and Description /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/ERL.cs b/src/Machete.HL7Schema/Generated/V26/Components/ERL.cs index 72b9cd577..b342dbe2c 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/ERL.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/ERL.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// ERL (Component) - Error Location /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/FC.cs b/src/Machete.HL7Schema/Generated/V26/Components/FC.cs index f95b79a1d..327a0b483 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/FC.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/FC.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// FC (Component) - Financial Class diff --git a/src/Machete.HL7Schema/Generated/V26/Components/FN.cs b/src/Machete.HL7Schema/Generated/V26/Components/FN.cs index 30aeaad57..a79bcda41 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/FN.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/FN.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// FN (Component) - Family Name /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/HD.cs b/src/Machete.HL7Schema/Generated/V26/Components/HD.cs index d2ee7e74b..a8f4c6424 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/HD.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/HD.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// HD (Component) - Hierarchic Designator /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/ICD.cs b/src/Machete.HL7Schema/Generated/V26/Components/ICD.cs index 6d4667880..d731e294e 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/ICD.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/ICD.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// ICD (Component) - Insurance Certification Definition diff --git a/src/Machete.HL7Schema/Generated/V26/Components/LA1.cs b/src/Machete.HL7Schema/Generated/V26/Components/LA1.cs index 312d715d5..a57b2c1a7 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/LA1.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/LA1.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// LA1 (Component) - Location with Address Variation 1 /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/LA2.cs b/src/Machete.HL7Schema/Generated/V26/Components/LA2.cs index 97e763e3f..33443c5ed 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/LA2.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/LA2.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// LA2 (Component) - Location with Address Variation 2 /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/MA.cs b/src/Machete.HL7Schema/Generated/V26/Components/MA.cs index 3243cf4e3..874b2873f 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/MA.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/MA.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// MA (Component) - Multiplexed Array /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/MO.cs b/src/Machete.HL7Schema/Generated/V26/Components/MO.cs index 5a204c611..16a380729 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/MO.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/MO.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// MO (Component) - Money /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/MOC.cs b/src/Machete.HL7Schema/Generated/V26/Components/MOC.cs index db4088b11..681a1f8cf 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/MOC.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/MOC.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// MOC (Component) - Money and Code /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/MOP.cs b/src/Machete.HL7Schema/Generated/V26/Components/MOP.cs index 27fc898f9..7b743aeb7 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/MOP.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/MOP.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// MOP (Component) - Money or Percentage /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/MSG.cs b/src/Machete.HL7Schema/Generated/V26/Components/MSG.cs index 5a9eea062..378a360f0 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/MSG.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/MSG.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// MSG (Component) - Message Type /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/Maps/CNNMap.cs b/src/Machete.HL7Schema/Generated/V26/Components/Maps/CNNMap.cs index 551cd5877..59065e2c9 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/Maps/CNNMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/Maps/CNNMap.cs @@ -1,29 +1,29 @@ // This file was automatically generated and may be regenerated at any // time. To ensure any changes are retained, modify the tool with any segment/component/group/field name -// or type changes. -namespace Machete.HL7Schema.V26.Maps -{ - using V26; - - /// - /// CNN (ComponentMap) - Composite ID Number and Name Simplified - /// - public class CNNMap : - HL7V26ComponentMap - { - public CNNMap() - { - Value(x => x.IdNumber, 0); - Value(x => x.FamilyName, 1); - Value(x => x.GivenName, 2); - Value(x => x.SecondAndFurtherGivenNamesOrInitialsreof, 3); - Value(x => x.Suffix, 4); - Value(x => x.Prefix, 5); - Value(x => x.Degree, 6); - Value(x => x.SourceTable, 7); - Value(x => x.AssigningAuthorityNamespaceId, 8); - Value(x => x.AssigningAuthorityUniversalId, 9); - Value(x => x.AssigningAuthorityUniversalIdType, 10); - } - } +// or type changes. +namespace Machete.HL7Schema.V26.Maps +{ + using V26; + + /// + /// CNN (ComponentMap) - Composite ID Number and Name Simplified + /// + public class CNNMap : + HL7V26ComponentMap + { + public CNNMap() + { + Value(x => x.IdNumber, 0); + Value(x => x.FamilyName, 1); + Value(x => x.GivenName, 2); + Value(x => x.SecondAndFurtherGivenNamesOrInitialsThereof, 3); + Value(x => x.Suffix, 4); + Value(x => x.Prefix, 5); + Value(x => x.Degree, 6); + Value(x => x.SourceTable, 7); + Value(x => x.AssigningAuthorityNamespaceId, 8); + Value(x => x.AssigningAuthorityUniversalId, 9); + Value(x => x.AssigningAuthorityUniversalIdType, 10); + } + } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Components/Maps/XADMap.cs b/src/Machete.HL7Schema/Generated/V26/Components/Maps/XADMap.cs index 83e6ad6ab..7686fc68a 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/Maps/XADMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/Maps/XADMap.cs @@ -1,41 +1,41 @@ // This file was automatically generated and may be regenerated at any // time. To ensure any changes are retained, modify the tool with any segment/component/group/field name -// or type changes. -namespace Machete.HL7Schema.V26.Maps -{ - using V26; - - /// - /// XAD (ComponentMap) - Extended Address - /// - public class XADMap : - HL7V26ComponentMap - { - public XADMap() - { - Entity(x => x.StreetAddress, 0); - Value(x => x.OtherDesignation, 1); - Value(x => x.City, 2); - Value(x => x.StateOrProvince, 3); - Value(x => x.ZipOrPostalCode, 4); - Value(x => x.Country, 5); - Value(x => x.AddressType, 6); - Value(x => x.OtherGeographicDesignation, 7); - Value(x => x.CountyParishCode, 8); - Value(x => x.CensuTract, 9); - Value(x => x.AddressRepresentationCode, 10); - Entity(x => x.AddressValidityRange, 11); - Value(x => x.EffectiveDate, 12, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.ExpirationDate, 13, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Entity(x => x.ExpirationReason, 14); - Value(x => x.TemporaryIndicator, 15); - Value(x => x.BadAddressIndicator, 16); - Value(x => x.AddressUsage, 17); - Value(x => x.Addressee, 18); - Value(x => x.Comment, 19); - Value(x => x.PreferenceOrder, 20); - Entity(x => x.ProtectionCode, 21); - Entity(x => x.AddressIdentifier, 22); - } - } +// or type changes. +namespace Machete.HL7Schema.V26.Maps +{ + using V26; + + /// + /// XAD (ComponentMap) - Extended Address + /// + public class XADMap : + HL7V26ComponentMap + { + public XADMap() + { + Entity(x => x.StreetAddress, 0); + Value(x => x.OtherDesignation, 1); + Value(x => x.City, 2); + Value(x => x.StateOrProvince, 3); + Value(x => x.ZipOrPostalCode, 4); + Value(x => x.Country, 5); + Value(x => x.AddressType, 6); + Value(x => x.OtherGeographicDesignation, 7); + Value(x => x.CountyParishCode, 8); + Value(x => x.CensusTract, 9); + Value(x => x.AddressRepresentationCode, 10); + Entity(x => x.AddressValidityRange, 11); + Value(x => x.EffectiveDate, 12, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.ExpirationDate, 13, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Entity(x => x.ExpirationReason, 14); + Value(x => x.TemporaryIndicator, 15); + Value(x => x.BadAddressIndicator, 16); + Value(x => x.AddressUsage, 17); + Value(x => x.Addressee, 18); + Value(x => x.Comment, 19); + Value(x => x.PreferenceOrder, 20); + Entity(x => x.ProtectionCode, 21); + Entity(x => x.AddressIdentifier, 22); + } + } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Components/Maps/XCNMap.cs b/src/Machete.HL7Schema/Generated/V26/Components/Maps/XCNMap.cs index c48aeeb6b..395de92b6 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/Maps/XCNMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/Maps/XCNMap.cs @@ -1,41 +1,41 @@ // This file was automatically generated and may be regenerated at any // time. To ensure any changes are retained, modify the tool with any segment/component/group/field name -// or type changes. -namespace Machete.HL7Schema.V26.Maps -{ - using V26; - - /// - /// XCN (ComponentMap) - Extended Composite ID Number and Name for Persons - /// - public class XCNMap : - HL7V26ComponentMap - { - public XCNMap() - { - Value(x => x.IdNumber, 0); - Entity(x => x.FamilyName, 1); - Value(x => x.GivenName, 2); - Value(x => x.SecondAndFurtherGivenNamesOrInitialsreof, 3); - Value(x => x.Suffix, 4); - Value(x => x.Prefix, 5); - Value(x => x.Degree, 6); - Value(x => x.SourceTable, 7); - Entity(x => x.AssigningAuthority, 8); - Value(x => x.NameTypeCode, 9); - Value(x => x.IdentifierCheckDigit, 10); - Value(x => x.CheckDigitScheme, 11); - Value(x => x.IdentifierTypeCode, 12); - Entity(x => x.AssigningFacility, 13); - Value(x => x.NameRepresentationCode, 14); - Entity(x => x.NameContext, 15); - Entity(x => x.NameValidityRange, 16); - Value(x => x.NameAssemblyOrder, 17); - Value(x => x.EffectiveDate, 18, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.ExpirationDate, 19, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.ProfessionalSuffix, 20); - Entity(x => x.AssigningJurisdiction, 21); - Entity(x => x.AssigningAgencyOrDepartment, 22); - } - } +// or type changes. +namespace Machete.HL7Schema.V26.Maps +{ + using V26; + + /// + /// XCN (ComponentMap) - Extended Composite ID Number and Name for Persons + /// + public class XCNMap : + HL7V26ComponentMap + { + public XCNMap() + { + Value(x => x.IdNumber, 0); + Entity(x => x.FamilyName, 1); + Value(x => x.GivenName, 2); + Value(x => x.SecondAndFurtherGivenNamesOrInitialsThereof, 3); + Value(x => x.Suffix, 4); + Value(x => x.Prefix, 5); + Value(x => x.Degree, 6); + Value(x => x.SourceTable, 7); + Entity(x => x.AssigningAuthority, 8); + Value(x => x.NameTypeCode, 9); + Value(x => x.IdentifierCheckDigit, 10); + Value(x => x.CheckDigitScheme, 11); + Value(x => x.IdentifierTypeCode, 12); + Entity(x => x.AssigningFacility, 13); + Value(x => x.NameRepresentationCode, 14); + Entity(x => x.NameContext, 15); + Entity(x => x.NameValidityRange, 16); + Value(x => x.NameAssemblyOrder, 17); + Value(x => x.EffectiveDate, 18, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.ExpirationDate, 19, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.ProfessionalSuffix, 20); + Entity(x => x.AssigningJurisdiction, 21); + Entity(x => x.AssigningAgencyOrDepartment, 22); + } + } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Components/Maps/XPNMap.cs b/src/Machete.HL7Schema/Generated/V26/Components/Maps/XPNMap.cs index 57f8384cd..49c5d7a2d 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/Maps/XPNMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/Maps/XPNMap.cs @@ -1,32 +1,32 @@ // This file was automatically generated and may be regenerated at any // time. To ensure any changes are retained, modify the tool with any segment/component/group/field name -// or type changes. -namespace Machete.HL7Schema.V26.Maps -{ - using V26; - - /// - /// XPN (ComponentMap) - Extended Person Name - /// - public class XPNMap : - HL7V26ComponentMap - { - public XPNMap() - { - Entity(x => x.FamilyName, 0); - Value(x => x.GivenName, 1); - Value(x => x.SecondAndFurtherGivenNamesOrInitialsreof, 2); - Value(x => x.Suffix, 3); - Value(x => x.Prefix, 4); - Value(x => x.Degree, 5); - Value(x => x.NameTypeCode, 6); - Value(x => x.NameRepresentationCode, 7); - Entity(x => x.NameContext, 8); - Entity(x => x.NameValidityRange, 9); - Value(x => x.NameAssemblyOrder, 10); - Value(x => x.EffectiveDate, 11, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.ExpirationDate, 12, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.ProfessionalSuffix, 13); - } - } +// or type changes. +namespace Machete.HL7Schema.V26.Maps +{ + using V26; + + /// + /// XPN (ComponentMap) - Extended Person Name + /// + public class XPNMap : + HL7V26ComponentMap + { + public XPNMap() + { + Entity(x => x.FamilyName, 0); + Value(x => x.GivenName, 1); + Value(x => x.SecondAndFurtherGivenNamesOrInitialsThereof, 2); + Value(x => x.Suffix, 3); + Value(x => x.Prefix, 4); + Value(x => x.Degree, 5); + Value(x => x.NameTypeCode, 6); + Value(x => x.NameRepresentationCode, 7); + Entity(x => x.NameContext, 8); + Entity(x => x.NameValidityRange, 9); + Value(x => x.NameAssemblyOrder, 10); + Value(x => x.EffectiveDate, 11, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.ExpirationDate, 12, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.ProfessionalSuffix, 13); + } + } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Components/Maps/XTNMap.cs b/src/Machete.HL7Schema/Generated/V26/Components/Maps/XTNMap.cs index 34874cc42..25b6f4dab 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/Maps/XTNMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/Maps/XTNMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -13,7 +13,7 @@ public class XTNMap : { public XTNMap() { - Value(x => x.TelephoneNumber, 0, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.TelephoneNumber, 0); Value(x => x.TelecommunicationUseCode, 1); Value(x => x.TelecommunicationEquipmentType, 2); Value(x => x.CommunicationAddress, 3); @@ -25,8 +25,8 @@ public XTNMap() Value(x => x.ExtensionPrefix, 9); Value(x => x.SpeedDialCode, 10); Value(x => x.UnformattedTelephoneNumber, 11); - Value(x => x.EffectiveStartDate, 12, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.ExpirationDate, 13, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.EffectiveStartDate, 12, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.ExpirationDate, 13, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.ExpirationReason, 14); Entity(x => x.ProtectionCode, 15); Entity(x => x.SharedTelecommunicationIdentifier, 16); diff --git a/src/Machete.HL7Schema/Generated/V26/Components/NA.cs b/src/Machete.HL7Schema/Generated/V26/Components/NA.cs index 74aac177e..30fd55ec4 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/NA.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/NA.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// NA (Component) - Numeric Array /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/NDL.cs b/src/Machete.HL7Schema/Generated/V26/Components/NDL.cs index 86e389d6d..20cfd2258 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/NDL.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/NDL.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// NDL (Component) - Name with Date and Location diff --git a/src/Machete.HL7Schema/Generated/V26/Components/NR.cs b/src/Machete.HL7Schema/Generated/V26/Components/NR.cs index eeed205b9..83a836501 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/NR.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/NR.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// NR (Component) - Numeric Range /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/OCD.cs b/src/Machete.HL7Schema/Generated/V26/Components/OCD.cs index 0b2180ba7..2db4f9579 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/OCD.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/OCD.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// OCD (Component) - Occurrence Code and Date diff --git a/src/Machete.HL7Schema/Generated/V26/Components/OSD.cs b/src/Machete.HL7Schema/Generated/V26/Components/OSD.cs index 242f6e415..f5fdb93fc 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/OSD.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/OSD.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// OSD (Component) - Order Sequence Definition /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/OSP.cs b/src/Machete.HL7Schema/Generated/V26/Components/OSP.cs index ab028d8d2..652a5c724 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/OSP.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/OSP.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// OSP (Component) - Occurrence Span Code and Date diff --git a/src/Machete.HL7Schema/Generated/V26/Components/PIP.cs b/src/Machete.HL7Schema/Generated/V26/Components/PIP.cs index 47d899e85..2e4b6260c 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/PIP.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/PIP.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// PIP (Component) - Practitioner Institutional Privileges diff --git a/src/Machete.HL7Schema/Generated/V26/Components/PL.cs b/src/Machete.HL7Schema/Generated/V26/Components/PL.cs index f05a4899e..60f5e6fda 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/PL.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/PL.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// PL (Component) - Person Location /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/PLN.cs b/src/Machete.HL7Schema/Generated/V26/Components/PLN.cs index b838d7710..25470ba17 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/PLN.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/PLN.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// PLN (Component) - Practitioner License or Other ID Number diff --git a/src/Machete.HL7Schema/Generated/V26/Components/PPN.cs b/src/Machete.HL7Schema/Generated/V26/Components/PPN.cs index 618e367ce..bc9c6ff1b 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/PPN.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/PPN.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// PPN (Component) - Performing Person Time Stamp diff --git a/src/Machete.HL7Schema/Generated/V26/Components/PT.cs b/src/Machete.HL7Schema/Generated/V26/Components/PT.cs index 7ececb930..67c5aed25 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/PT.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/PT.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// PT (Component) - Processing Type /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/PTA.cs b/src/Machete.HL7Schema/Generated/V26/Components/PTA.cs index d7a9ad9ab..a37561818 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/PTA.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/PTA.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// PTA (Component) - Policy Type and Amount /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/QIP.cs b/src/Machete.HL7Schema/Generated/V26/Components/QIP.cs index 6edb009eb..60262d9aa 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/QIP.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/QIP.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// QIP (Component) - Query Input Parameter List /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/QSC.cs b/src/Machete.HL7Schema/Generated/V26/Components/QSC.cs index 32b65dfdc..58c12b477 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/QSC.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/QSC.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// QSC (Component) - Query Selection Criteria /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/RCD.cs b/src/Machete.HL7Schema/Generated/V26/Components/RCD.cs index 0512647e3..9f2e47c08 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/RCD.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/RCD.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// RCD (Component) - Row Column Definition /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/RI.cs b/src/Machete.HL7Schema/Generated/V26/Components/RI.cs index 7aed90914..c95b6593b 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/RI.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/RI.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// RI (Component) - Repeat Interval /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/RMC.cs b/src/Machete.HL7Schema/Generated/V26/Components/RMC.cs index a9375e49a..8e66ce4f1 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/RMC.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/RMC.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// RMC (Component) - Room Coverage /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/RP.cs b/src/Machete.HL7Schema/Generated/V26/Components/RP.cs index 97e7a837d..a6b935734 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/RP.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/RP.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// RP (Component) - Reference Pointer /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/RPT.cs b/src/Machete.HL7Schema/Generated/V26/Components/RPT.cs index 48f091b20..0d64a832e 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/RPT.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/RPT.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// RPT (Component) - Repeat Pattern /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/SAD.cs b/src/Machete.HL7Schema/Generated/V26/Components/SAD.cs index 61eac1e93..22b61b30c 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/SAD.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/SAD.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// SAD (Component) - Street Address /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/SCV.cs b/src/Machete.HL7Schema/Generated/V26/Components/SCV.cs index 7e9487d84..34b87ae24 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/SCV.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/SCV.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// SCV (Component) - Scheduling Class Value Pair /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/SN.cs b/src/Machete.HL7Schema/Generated/V26/Components/SN.cs index 7feb3e226..725c7273b 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/SN.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/SN.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// SN (Component) - Structured Numeric /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/SPD.cs b/src/Machete.HL7Schema/Generated/V26/Components/SPD.cs index 5c88f2e6c..c3aa257b2 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/SPD.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/SPD.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// SPD (Component) - Specialty Description diff --git a/src/Machete.HL7Schema/Generated/V26/Components/SRT.cs b/src/Machete.HL7Schema/Generated/V26/Components/SRT.cs index 31da50245..d528484c8 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/SRT.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/SRT.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// SRT (Component) - Sort Order /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/TS.cs b/src/Machete.HL7Schema/Generated/V26/Components/TS.cs index ab25c3240..d92ba69fc 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/TS.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/TS.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// TS (Component) - Time Stamp diff --git a/src/Machete.HL7Schema/Generated/V26/Components/UVC.cs b/src/Machete.HL7Schema/Generated/V26/Components/UVC.cs index d20096c8c..eca1c0786 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/UVC.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/UVC.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// UVC (Component) - UB Value Code and Amount /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/VH.cs b/src/Machete.HL7Schema/Generated/V26/Components/VH.cs index 057a74600..a21ced200 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/VH.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/VH.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// VH (Component) - Visiting Hours diff --git a/src/Machete.HL7Schema/Generated/V26/Components/VID.cs b/src/Machete.HL7Schema/Generated/V26/Components/VID.cs index e4fe135df..c2c682394 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/VID.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/VID.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// VID (Component) - Version Identifier /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/VR.cs b/src/Machete.HL7Schema/Generated/V26/Components/VR.cs index 4504ce5e3..8168d172e 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/VR.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/VR.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// VR (Component) - Value Range /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/WVI.cs b/src/Machete.HL7Schema/Generated/V26/Components/WVI.cs index 552546ebc..6aa86eae2 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/WVI.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/WVI.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// WVI (Component) - Channel Identifier /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/WVS.cs b/src/Machete.HL7Schema/Generated/V26/Components/WVS.cs index 71a64c8ab..d4424082e 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/WVS.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/WVS.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// WVS (Component) - Waveform Source /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/XAD.cs b/src/Machete.HL7Schema/Generated/V26/Components/XAD.cs index 4f0ee04d3..0825540e0 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/XAD.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/XAD.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// XAD (Component) - Extended Address @@ -70,7 +70,7 @@ public interface XAD : /// XAD-10 Census Tract /// /// The string value - Value CensuTract { get; } + Value CensusTract { get; } /// /// XAD-11 Address Representation Code diff --git a/src/Machete.HL7Schema/Generated/V26/Components/XCN.cs b/src/Machete.HL7Schema/Generated/V26/Components/XCN.cs index 39a9573fd..991c73577 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/XCN.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/XCN.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// XCN (Component) - Extended Composite ID Number and Name for Persons @@ -34,7 +34,7 @@ public interface XCN : /// XCN-4 Second and Further Given Names or Initials Thereof /// /// The string value - Value SecondAndFurtherGivenNamesOrInitialsreof { get; } + Value SecondAndFurtherGivenNamesOrInitialsThereof { get; } /// /// XCN-5 Suffix (e.g., JR or III) diff --git a/src/Machete.HL7Schema/Generated/V26/Components/XON.cs b/src/Machete.HL7Schema/Generated/V26/Components/XON.cs index 86d064897..62e917737 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/XON.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/XON.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// XON (Component) - Extended Composite Name and Identification Number for Organizations /// diff --git a/src/Machete.HL7Schema/Generated/V26/Components/XPN.cs b/src/Machete.HL7Schema/Generated/V26/Components/XPN.cs index 2b7f34a8c..4a466f56f 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/XPN.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/XPN.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// XPN (Component) - Extended Person Name @@ -28,7 +28,7 @@ public interface XPN : /// XPN-3 Second and Further Given Names or Initials Thereof /// /// The string value - Value SecondAndFurtherGivenNamesOrInitialsreof { get; } + Value SecondAndFurtherGivenNamesOrInitialsThereof { get; } /// /// XPN-4 Suffix (e.g., JR or III) diff --git a/src/Machete.HL7Schema/Generated/V26/Components/XTN.cs b/src/Machete.HL7Schema/Generated/V26/Components/XTN.cs index 7b9bebf84..d9540b95d 100644 --- a/src/Machete.HL7Schema/Generated/V26/Components/XTN.cs +++ b/src/Machete.HL7Schema/Generated/V26/Components/XTN.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// XTN (Component) - Extended Telecommunication Number @@ -16,7 +16,7 @@ public interface XTN : /// XTN-1 Telephone Number /// /// The DateTimeOffset value - Value TelephoneNumber { get; } + Value TelephoneNumber { get; } /// /// XTN-2 Telecommunication Use Code diff --git a/src/Machete.HL7Schema/Generated/V26/Groups/Maps/ORM_O01_INSURANCEMap.cs b/src/Machete.HL7Schema/Generated/V26/Groups/Maps/ORM_O01_INSURANCEMap.cs index 4306cb0d7..1c3519e5b 100644 --- a/src/Machete.HL7Schema/Generated/V26/Groups/Maps/ORM_O01_INSURANCEMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Groups/Maps/ORM_O01_INSURANCEMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -13,7 +13,7 @@ public class ORM_O01_INSURANCEMap : { public ORM_O01_INSURANCEMap() { - Segment(x => x.IN1, 0, x => x.Required = true); + Segment(x => x.IN1, 0, x => x.IsRequired()); Segment(x => x.IN2, 1); Segment(x => x.IN3, 2); } diff --git a/src/Machete.HL7Schema/Generated/V26/Groups/Maps/ORM_O01_ORDER_DETAILMap.cs b/src/Machete.HL7Schema/Generated/V26/Groups/Maps/ORM_O01_ORDER_DETAILMap.cs index 81b902851..8abacd4f2 100644 --- a/src/Machete.HL7Schema/Generated/V26/Groups/Maps/ORM_O01_ORDER_DETAILMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Groups/Maps/ORM_O01_ORDER_DETAILMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -13,16 +13,12 @@ public class ORM_O01_ORDER_DETAILMap : { public ORM_O01_ORDER_DETAILMap() { - Segment(x => x.OBR, 0, x => x.Required = true); - Segment(x => x.RQD, 1, x => x.Required = true); - Segment(x => x.RQ1, 2, x => x.Required = true); - Segment(x => x.RXO, 3, x => x.Required = true); - Segment(x => x.ODS, 4, x => x.Required = true); - Segment(x => x.ODT, 5, x => x.Required = true); - Segment(x => x.NTE, 6); - Segment(x => x.CTD, 7); - Segment(x => x.DG1, 8); - Layout(x => x.Observation, 9); + // TODO: need to make this optional as part of Issue #39 + Segment(x => x.OBR, 0, x => x.IsRequired()); + Segment(x => x.NTE, 1); + Segment(x => x.CTD, 2); + Segment(x => x.DG1, 3); + Layout(x => x.Observation, 4); } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Groups/Maps/ORM_O01_PATIENTMap.cs b/src/Machete.HL7Schema/Generated/V26/Groups/Maps/ORM_O01_PATIENTMap.cs index b846d1e73..eb39b29dc 100644 --- a/src/Machete.HL7Schema/Generated/V26/Groups/Maps/ORM_O01_PATIENTMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Groups/Maps/ORM_O01_PATIENTMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -13,7 +13,7 @@ public class ORM_O01_PATIENTMap : { public ORM_O01_PATIENTMap() { - Segment(x => x.PID, 0, x => x.Required = true); + Segment(x => x.PID, 0, x => x.IsRequired()); Segment(x => x.PD1, 1); Segment(x => x.NTE, 2); Layout(x => x.PatientVisit, 3); diff --git a/src/Machete.HL7Schema/Generated/V26/Groups/Maps/ORM_O01_PATIENT_VISITMap.cs b/src/Machete.HL7Schema/Generated/V26/Groups/Maps/ORM_O01_PATIENT_VISITMap.cs index 63c069bc8..afb089ff6 100644 --- a/src/Machete.HL7Schema/Generated/V26/Groups/Maps/ORM_O01_PATIENT_VISITMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Groups/Maps/ORM_O01_PATIENT_VISITMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -13,7 +13,7 @@ public class ORM_O01_PATIENT_VISITMap : { public ORM_O01_PATIENT_VISITMap() { - Segment(x => x.PV1, 0, x => x.Required = true); + Segment(x => x.PV1, 0, x => x.IsRequired()); Segment(x => x.PV2, 1); } } diff --git a/src/Machete.HL7Schema/Generated/V26/Groups/Maps/ORR_O02_ORDERMap.cs b/src/Machete.HL7Schema/Generated/V26/Groups/Maps/ORR_O02_ORDERMap.cs index 4ab1b3688..0c0592c40 100644 --- a/src/Machete.HL7Schema/Generated/V26/Groups/Maps/ORR_O02_ORDERMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Groups/Maps/ORR_O02_ORDERMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -13,15 +13,11 @@ public class ORR_O02_ORDERMap : { public ORR_O02_ORDERMap() { - Segment(x => x.ORC, 0, x => x.Required = true); - Segment(x => x.OBR, 1, x => x.Required = true); - Segment(x => x.RQD, 2, x => x.Required = true); - Segment(x => x.RQ1, 3, x => x.Required = true); - Segment(x => x.RXO, 4, x => x.Required = true); - Segment(x => x.ODS, 5, x => x.Required = true); - Segment(x => x.ODT, 6, x => x.Required = true); - Segment(x => x.NTE, 7); - Segment(x => x.CTI, 8); + Segment(x => x.ORC, 0, x => x.IsRequired()); + // TODO: need to make this optional as part of Issue #39 + Segment(x => x.OBR, 1, x => x.IsRequired()); + Segment(x => x.NTE, 2); + Segment(x => x.CTI, 3); } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Groups/Maps/OSR_Q06_ORDERMap.cs b/src/Machete.HL7Schema/Generated/V26/Groups/Maps/OSR_Q06_ORDERMap.cs index 497b169b5..c1382adb9 100644 --- a/src/Machete.HL7Schema/Generated/V26/Groups/Maps/OSR_Q06_ORDERMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Groups/Maps/OSR_Q06_ORDERMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -13,16 +13,12 @@ public class OSR_Q06_ORDERMap : { public OSR_Q06_ORDERMap() { - Segment(x => x.ORC, 0, x => x.Required = true); + Segment(x => x.ORC, 0, x => x.IsRequired()); Layout(x => x.Timing, 1); - Segment(x => x.OBR, 2, x => x.Required = true); - Segment(x => x.RQD, 3, x => x.Required = true); - Segment(x => x.RQ1, 4, x => x.Required = true); - Segment(x => x.RXO, 5, x => x.Required = true); - Segment(x => x.ODS, 6, x => x.Required = true); - Segment(x => x.ODT, 7, x => x.Required = true); - Segment(x => x.NTE, 8); - Segment(x => x.CTI, 9); + // TODO: need to make this optional as part of Issue #39 + Segment(x => x.OBR, 2, x => x.IsRequired()); + Segment(x => x.NTE, 3); + Segment(x => x.CTI, 4); } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Groups/ORM_O01_ORDER_DETAIL.cs b/src/Machete.HL7Schema/Generated/V26/Groups/ORM_O01_ORDER_DETAIL.cs index c22c8c5c5..5168cd855 100644 --- a/src/Machete.HL7Schema/Generated/V26/Groups/ORM_O01_ORDER_DETAIL.cs +++ b/src/Machete.HL7Schema/Generated/V26/Groups/ORM_O01_ORDER_DETAIL.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { @@ -16,31 +16,6 @@ public interface ORM_O01_ORDER_DETAIL : /// Segment OBR { get; } - /// - /// RQD - /// - Segment RQD { get; } - - /// - /// RQ1 - /// - Segment RQ1 { get; } - - /// - /// RXO - /// - Segment RXO { get; } - - /// - /// ODS - /// - Segment ODS { get; } - - /// - /// ODT - /// - Segment ODT { get; } - /// /// NTE /// diff --git a/src/Machete.HL7Schema/Generated/V26/Groups/ORR_O02_ORDER.cs b/src/Machete.HL7Schema/Generated/V26/Groups/ORR_O02_ORDER.cs index c3803c840..c0fe672c9 100644 --- a/src/Machete.HL7Schema/Generated/V26/Groups/ORR_O02_ORDER.cs +++ b/src/Machete.HL7Schema/Generated/V26/Groups/ORR_O02_ORDER.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { @@ -21,31 +21,6 @@ public interface ORR_O02_ORDER : /// Segment OBR { get; } - /// - /// RQD - /// - Segment RQD { get; } - - /// - /// RQ1 - /// - Segment RQ1 { get; } - - /// - /// RXO - /// - Segment RXO { get; } - - /// - /// ODS - /// - Segment ODS { get; } - - /// - /// ODT - /// - Segment ODT { get; } - /// /// NTE /// diff --git a/src/Machete.HL7Schema/Generated/V26/Groups/ORR_O02_RESPONSE.cs b/src/Machete.HL7Schema/Generated/V26/Groups/ORR_O02_RESPONSE.cs index 5ed265c82..08bc094d0 100644 --- a/src/Machete.HL7Schema/Generated/V26/Groups/ORR_O02_RESPONSE.cs +++ b/src/Machete.HL7Schema/Generated/V26/Groups/ORR_O02_RESPONSE.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// ORR_O02_RESPONSE (Group) - /// diff --git a/src/Machete.HL7Schema/Generated/V26/Groups/OSR_Q06_ORDER.cs b/src/Machete.HL7Schema/Generated/V26/Groups/OSR_Q06_ORDER.cs index a7f703f4f..5132e4a69 100644 --- a/src/Machete.HL7Schema/Generated/V26/Groups/OSR_Q06_ORDER.cs +++ b/src/Machete.HL7Schema/Generated/V26/Groups/OSR_Q06_ORDER.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { @@ -26,31 +26,6 @@ public interface OSR_Q06_ORDER : /// Segment OBR { get; } - /// - /// RQD - /// - Segment RQD { get; } - - /// - /// RQ1 - /// - Segment RQ1 { get; } - - /// - /// RXO - /// - Segment RXO { get; } - - /// - /// ODS - /// - Segment ODS { get; } - - /// - /// ODT - /// - Segment ODT { get; } - /// /// NTE /// diff --git a/src/Machete.HL7Schema/Generated/V26/Groups/OSR_Q06_RESPONSE.cs b/src/Machete.HL7Schema/Generated/V26/Groups/OSR_Q06_RESPONSE.cs index 447c2b10c..04eaf0d49 100644 --- a/src/Machete.HL7Schema/Generated/V26/Groups/OSR_Q06_RESPONSE.cs +++ b/src/Machete.HL7Schema/Generated/V26/Groups/OSR_Q06_RESPONSE.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// OSR_Q06_RESPONSE (Group) - /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/ABS.cs b/src/Machete.HL7Schema/Generated/V26/Segments/ABS.cs index a1978aa7b..bd0082acc 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/ABS.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/ABS.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// ABS (Segment) - Abstract @@ -58,9 +58,9 @@ public interface ABS : Value CaseCategoryCode { get; } /// - /// ABS-10: Caesarian Section Indicator + /// ABS-10: Caesarean Section Indicator /// - Value CaesarianSectionIndicator { get; } + Value CaesareanSectionIndicator { get; } /// /// ABS-11: Gestation Category Code diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/ACC.cs b/src/Machete.HL7Schema/Generated/V26/Segments/ACC.cs index 10c87284d..cb065b546 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/ACC.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/ACC.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// ACC (Segment) - Accident diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/ADD.cs b/src/Machete.HL7Schema/Generated/V26/Segments/ADD.cs index 0e4fc2e94..dd16a43e6 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/ADD.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/ADD.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// ADD (Segment) - Addendum /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/ADJ.cs b/src/Machete.HL7Schema/Generated/V26/Segments/ADJ.cs index f843dde84..cba9a5d2c 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/ADJ.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/ADJ.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// ADJ (Segment) - Adjustment diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/AFF.cs b/src/Machete.HL7Schema/Generated/V26/Segments/AFF.cs index 1e4e68324..5ed91b90c 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/AFF.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/AFF.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// AFF (Segment) - Professional Affiliation /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/AIG.cs b/src/Machete.HL7Schema/Generated/V26/Segments/AIG.cs index b09151611..3ea017e8c 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/AIG.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/AIG.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// AIG (Segment) - Appointment Information - General Resource diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/AIL.cs b/src/Machete.HL7Schema/Generated/V26/Segments/AIL.cs index 1c350a1e0..8ca220596 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/AIL.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/AIL.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// AIL (Segment) - Appointment Information - Location Resource diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/AIP.cs b/src/Machete.HL7Schema/Generated/V26/Segments/AIP.cs index 3c7bec854..b0e403be6 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/AIP.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/AIP.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// AIP (Segment) - Appointment Information - Personnel Resource diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/AIS.cs b/src/Machete.HL7Schema/Generated/V26/Segments/AIS.cs index 498288730..6f7a024d6 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/AIS.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/AIS.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// AIS (Segment) - Appointment Information diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/AL1.cs b/src/Machete.HL7Schema/Generated/V26/Segments/AL1.cs index 2797c3952..7eff6c255 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/AL1.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/AL1.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// AL1 (Segment) - Patient Allergy Information diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/APR.cs b/src/Machete.HL7Schema/Generated/V26/Segments/APR.cs index 5533c782d..7abcae252 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/APR.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/APR.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// APR (Segment) - Appointment Preferences /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/ARQ.cs b/src/Machete.HL7Schema/Generated/V26/Segments/ARQ.cs index b9d7a47e4..9a69cd3f6 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/ARQ.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/ARQ.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// ARQ (Segment) - Appointment Request /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/ARV.cs b/src/Machete.HL7Schema/Generated/V26/Segments/ARV.cs index ad169b7a7..68d708223 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/ARV.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/ARV.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// ARV (Segment) - Access Restriction /// @@ -19,17 +17,17 @@ public interface ARV : /// /// ARV-2: Access Restriction Action Code /// - Value AcceRestrictionActionCode { get; } + Value AccessRestrictionActionCode { get; } /// /// ARV-3: Access Restriction Value /// - Value AcceRestrictionValue { get; } + Value AccessRestrictionValue { get; } /// /// ARV-4: Access Restriction Reason /// - ValueList AcceRestrictionReason { get; } + ValueList AccessRestrictionReason { get; } /// /// ARV-5: Special Access Restriction Instructions @@ -39,6 +37,6 @@ public interface ARV : /// /// ARV-6: Access Restriction Date Range /// - Value AcceRestrictionDateRange { get; } + Value AccessRestrictionDateRange { get; } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/AUT.cs b/src/Machete.HL7Schema/Generated/V26/Segments/AUT.cs index ff8d833dd..2695792bc 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/AUT.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/AUT.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// AUT (Segment) - Authorization Information @@ -60,6 +60,6 @@ public interface AUT : /// /// AUT-10: Process Date /// - Value ProceDate { get; } + Value ProcessDate { get; } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/BHS.cs b/src/Machete.HL7Schema/Generated/V26/Segments/BHS.cs index fe5e9df07..f4567bd9b 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/BHS.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/BHS.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// BHS (Segment) - Batch Header diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/BLC.cs b/src/Machete.HL7Schema/Generated/V26/Segments/BLC.cs index 2aa64a9db..fdac6c31e 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/BLC.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/BLC.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// BLC (Segment) - Blood Code /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/BLG.cs b/src/Machete.HL7Schema/Generated/V26/Segments/BLG.cs index b5cf137d0..6f3e7798c 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/BLG.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/BLG.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// BLG (Segment) - Billing /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/BPO.cs b/src/Machete.HL7Schema/Generated/V26/Segments/BPO.cs index 32e1ad9d0..ea26d5916 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/BPO.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/BPO.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// BPO (Segment) - Blood product order diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/BPX.cs b/src/Machete.HL7Schema/Generated/V26/Segments/BPX.cs index c10063709..57550b328 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/BPX.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/BPX.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// BPX (Segment) - Blood product dispense status diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/BTS.cs b/src/Machete.HL7Schema/Generated/V26/Segments/BTS.cs index 02027fa2a..9530d88b6 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/BTS.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/BTS.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// BTS (Segment) - Batch Trailer /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/BTX.cs b/src/Machete.HL7Schema/Generated/V26/Segments/BTX.cs index 0b2ebf127..849549def 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/BTX.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/BTX.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// BTX (Segment) - Blood Product Transfusion/Disposition diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/CDM.cs b/src/Machete.HL7Schema/Generated/V26/Segments/CDM.cs index 63bcb72ba..331f58590 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/CDM.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/CDM.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// CDM (Segment) - Charge Description Master /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/CER.cs b/src/Machete.HL7Schema/Generated/V26/Segments/CER.cs index 410ce3a15..13adc2a94 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/CER.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/CER.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// CER (Segment) - Certificate Detail diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/CM0.cs b/src/Machete.HL7Schema/Generated/V26/Segments/CM0.cs index c3cc6023c..ed341af53 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/CM0.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/CM0.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// CM0 (Segment) - Clinical Study Master diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/CM1.cs b/src/Machete.HL7Schema/Generated/V26/Segments/CM1.cs index 40befb4f5..d4e65c253 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/CM1.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/CM1.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// CM1 (Segment) - Clinical Study Phase Master /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/CM2.cs b/src/Machete.HL7Schema/Generated/V26/Segments/CM2.cs index 846afcad9..7704c56e6 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/CM2.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/CM2.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// CM2 (Segment) - Clinical Study Schedule Master /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/CNS.cs b/src/Machete.HL7Schema/Generated/V26/Segments/CNS.cs index 6f62d787f..92e0c643d 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/CNS.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/CNS.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// CNS (Segment) - Clear Notification diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/CSP.cs b/src/Machete.HL7Schema/Generated/V26/Segments/CSP.cs index 871f831a0..3e1ae43ca 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/CSP.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/CSP.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// CSP (Segment) - Clinical Study Phase diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/CSR.cs b/src/Machete.HL7Schema/Generated/V26/Segments/CSR.cs index 04faea5f5..e0f57ba9a 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/CSR.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/CSR.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// CSR (Segment) - Clinical Study Registration diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/CSS.cs b/src/Machete.HL7Schema/Generated/V26/Segments/CSS.cs index 1f1aabcb1..4d008ebd0 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/CSS.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/CSS.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// CSS (Segment) - Clinical Study Data Schedule Segment diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/CTD.cs b/src/Machete.HL7Schema/Generated/V26/Segments/CTD.cs index a08260813..6ba3ed96b 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/CTD.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/CTD.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// CTD (Segment) - Contact Data /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/CTI.cs b/src/Machete.HL7Schema/Generated/V26/Segments/CTI.cs index f1244f996..fcb600eab 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/CTI.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/CTI.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// CTI (Segment) - Clinical Trial Identification /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/DB1.cs b/src/Machete.HL7Schema/Generated/V26/Segments/DB1.cs index 716bb50a7..0120752b8 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/DB1.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/DB1.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// DB1 (Segment) - Disability diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/DG1.cs b/src/Machete.HL7Schema/Generated/V26/Segments/DG1.cs index 26ecde3b1..5eb12cad0 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/DG1.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/DG1.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// DG1 (Segment) - Diagnosis @@ -20,27 +20,27 @@ public interface DG1 : /// /// DG1-2: Diagnosis Coding Method /// - Value DiagnosiCodingMethod { get; } + Value DiagnosisCodingMethod { get; } /// /// DG1-3: Diagnosis Code - DG1 /// - Value DiagnosiCode { get; } + Value DiagnosisCode { get; } /// /// DG1-4: Diagnosis Description /// - Value DiagnosiDescription { get; } + Value DiagnosisDescription { get; } /// /// DG1-5: Diagnosis Date/Time /// - Value DiagnosiDateTime { get; } + Value DiagnosisDateTime { get; } /// /// DG1-6: Diagnosis Type /// - Value DiagnosiType { get; } + Value DiagnosisType { get; } /// /// DG1-7: Major Diagnostic Category @@ -85,7 +85,7 @@ public interface DG1 : /// /// DG1-15: Diagnosis Priority /// - Value DiagnosiPriority { get; } + Value DiagnosisPriority { get; } /// /// DG1-16: Diagnosing Clinician @@ -95,7 +95,7 @@ public interface DG1 : /// /// DG1-17: Diagnosis Classification /// - Value DiagnosiClassification { get; } + Value DiagnosisClassification { get; } /// /// DG1-18: Confidential Indicator @@ -110,12 +110,12 @@ public interface DG1 : /// /// DG1-20: Diagnosis Identifier /// - Value DiagnosiIdentifier { get; } + Value DiagnosisIdentifier { get; } /// /// DG1-21: Diagnosis Action Code /// - Value DiagnosiActionCode { get; } + Value DiagnosisActionCode { get; } /// /// DG1-22: Parent Diagnosis @@ -135,7 +135,7 @@ public interface DG1 : /// /// DG1-25: DRG Diagnosis Determination Status /// - Value DRGDiagnosiDeterminationStatus { get; } + Value DRGDiagnosisDeterminationStatus { get; } /// /// DG1-26: Present On Admission (POA) Indicator diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/DMI.cs b/src/Machete.HL7Schema/Generated/V26/Segments/DMI.cs index e91519ad3..35003183a 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/DMI.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/DMI.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// DMI (Segment) - DRG Master File Information /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/DRG.cs b/src/Machete.HL7Schema/Generated/V26/Segments/DRG.cs index bbc42067c..77b6bcce8 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/DRG.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/DRG.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// DRG (Segment) - Diagnosis Related Group @@ -95,7 +95,7 @@ public interface DRG : /// /// DRG-17: Status Patient /// - Value StatuPatient { get; } + Value StatusPatient { get; } /// /// DRG-18: Grouper Software Name @@ -110,7 +110,7 @@ public interface DRG : /// /// DRG-20: Status Financial Calculation /// - Value StatuFinancialCalculation { get; } + Value StatusFinancialCalculation { get; } /// /// DRG-21: Relative Discount/Surcharge @@ -140,41 +140,41 @@ public interface DRG : /// /// DRG-26: Status Gender /// - Value StatuGender { get; } + Value StatusGender { get; } /// /// DRG-27: Status Age /// - Value StatuAge { get; } + Value StatusAge { get; } /// /// DRG-28: Status Length of Stay /// - Value StatuLengthOfStay { get; } + Value StatusLengthOfStay { get; } /// /// DRG-29: Status Same Day Flag /// - Value StatuSameDayFlag { get; } + Value StatusSameDayFlag { get; } /// /// DRG-30: Status Separation Mode /// - Value StatuSeparationMode { get; } + Value StatusSeparationMode { get; } /// /// DRG-31: Status Weight at Birth /// - Value StatuWeightAtBirth { get; } + Value StatusWeightAtBirth { get; } /// /// DRG-32: Status Respiration Minutes /// - Value StatuRespirationMinutes { get; } + Value StatusRespirationMinutes { get; } /// /// DRG-33: Status Admission /// - Value StatuAdmission { get; } + Value StatusAdmission { get; } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/DSC.cs b/src/Machete.HL7Schema/Generated/V26/Segments/DSC.cs index 5999c6e5a..6cc9cc798 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/DSC.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/DSC.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// DSC (Segment) - Continuation Pointer /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/EDU.cs b/src/Machete.HL7Schema/Generated/V26/Segments/EDU.cs index 14917fe99..89bc20f00 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/EDU.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/EDU.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// EDU (Segment) - Educational Detail diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/EQU.cs b/src/Machete.HL7Schema/Generated/V26/Segments/EQU.cs index a4e35aabe..c1cd6a1ab 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/EQU.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/EQU.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// EQU (Segment) - Equipment Detail diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/EVN.cs b/src/Machete.HL7Schema/Generated/V26/Segments/EVN.cs index 0cde84371..dea901018 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/EVN.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/EVN.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// EVN (Segment) - Event Type diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/FAC.cs b/src/Machete.HL7Schema/Generated/V26/Segments/FAC.cs index a8978b10e..133709d45 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/FAC.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/FAC.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// FAC (Segment) - Facility /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/FHS.cs b/src/Machete.HL7Schema/Generated/V26/Segments/FHS.cs index a19283d26..b89ebd970 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/FHS.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/FHS.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// FHS (Segment) - File Header diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/FT1.cs b/src/Machete.HL7Schema/Generated/V26/Segments/FT1.cs index ec5ff41fa..550d2dc29 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/FT1.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/FT1.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// FT1 (Segment) - Financial Transaction @@ -105,7 +105,7 @@ public interface FT1 : /// /// FT1-19: Diagnosis Code - FT1 /// - ValueList DiagnosiCode { get; } + ValueList DiagnosisCode { get; } /// /// FT1-20: Performed By Code diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/FTS.cs b/src/Machete.HL7Schema/Generated/V26/Segments/FTS.cs index 1cbca875d..ef0347673 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/FTS.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/FTS.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// FTS (Segment) - File Trailer /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/GOL.cs b/src/Machete.HL7Schema/Generated/V26/Segments/GOL.cs index 50850cd75..a7e29d4fd 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/GOL.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/GOL.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// GOL (Segment) - Goal Detail @@ -80,7 +80,7 @@ public interface GOL : /// /// GOL-14: Previous Goal Review Date/Time /// - Value PreviouGoalReviewDateTime { get; } + Value PreviousGoalReviewDateTime { get; } /// /// GOL-15: Goal Review Interval diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/GP1.cs b/src/Machete.HL7Schema/Generated/V26/Segments/GP1.cs index da2908141..f1d080fe3 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/GP1.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/GP1.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// GP1 (Segment) - Grouping/Reimbursement - Visit /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/GP2.cs b/src/Machete.HL7Schema/Generated/V26/Segments/GP2.cs index 3356840c7..cde6a5ecf 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/GP2.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/GP2.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// GP2 (Segment) - Grouping/Reimbursement - Procedure Line Item /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/GT1.cs b/src/Machete.HL7Schema/Generated/V26/Segments/GT1.cs index e88211c4c..a3c098621 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/GT1.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/GT1.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// GT1 (Segment) - Guarantor @@ -220,7 +220,7 @@ public interface GT1 : /// /// GT1-42: Mother's Maiden Name /// - ValueList MotherSMaidenName { get; } + ValueList MotherMaidenName { get; } /// /// GT1-43: Nationality @@ -240,7 +240,7 @@ public interface GT1 : /// /// GT1-46: Contact Person's Telephone Number /// - ValueList ContactPersonSTelephoneNumber { get; } + ValueList ContactPersonTelephoneNumber { get; } /// /// GT1-47: Contact Reason @@ -265,7 +265,7 @@ public interface GT1 : /// /// GT1-51: Guarantor Employer's Organization Name /// - ValueList GuarantorEmployerSOrganizationName { get; } + ValueList GuarantorEmployerOrganizationName { get; } /// /// GT1-52: Handicap diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/IAM.cs b/src/Machete.HL7Schema/Generated/V26/Segments/IAM.cs index a71230158..02cb1b1f9 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/IAM.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/IAM.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// IAM (Segment) - Patient Adverse Reaction Information diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/IIM.cs b/src/Machete.HL7Schema/Generated/V26/Segments/IIM.cs index 73a80d3c8..3ff9c5279 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/IIM.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/IIM.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// IIM (Segment) - Inventory Item Master diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/ILT.cs b/src/Machete.HL7Schema/Generated/V26/Segments/ILT.cs index bab3c72e7..864c86a91 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/ILT.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/ILT.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// ILT (Segment) - Material Lot diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/IN1.cs b/src/Machete.HL7Schema/Generated/V26/Segments/IN1.cs index df2344c60..2dba14d4f 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/IN1.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/IN1.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// IN1 (Segment) - Insurance @@ -38,14 +38,14 @@ public interface IN1 : ValueList InsuranceCompanyAddress { get; } /// - /// IN1-6: Insurance Co Contact Person + /// IN1-6: Insurance Company Contact Person /// - ValueList InsuranceCoContactPerson { get; } + ValueList InsuranceCompanyContactPerson { get; } /// - /// IN1-7: Insurance Co Phone Number + /// IN1-7: Insurance Company Phone Number /// - ValueList InsuranceCoPhoneNumber { get; } + ValueList InsuranceCompanyPhoneNumber { get; } /// /// IN1-8: Group Number @@ -58,14 +58,14 @@ public interface IN1 : ValueList GroupName { get; } /// - /// IN1-10: Insured's Group Emp ID + /// IN1-10: Insured's Group Employer ID /// - ValueList InsuredSGroupEmpId { get; } + ValueList InsuredGroupEmployerId { get; } /// - /// IN1-11: Insured's Group Emp Name + /// IN1-11: Insured's Group Employer Name /// - ValueList InsuredSGroupEmpName { get; } + ValueList InsuredGroupEmployerName { get; } /// /// IN1-12: Plan Effective Date @@ -95,12 +95,12 @@ public interface IN1 : /// /// IN1-17: Insured's Relationship To Patient /// - Value InsuredSRelationshipToPatient { get; } + Value InsuredRelationshipToPatient { get; } /// /// IN1-18: Insured's Date Of Birth /// - Value InsuredSDateOfBirth { get; } + Value InsuredDateOfBirth { get; } /// /// IN1-19: Insured's Address @@ -118,9 +118,9 @@ public interface IN1 : Value CoordinationOfBenefits { get; } /// - /// IN1-22: Coord Of Ben. Priority + /// IN1-22: Coordination Of Benefit Priority /// - Value CoordOfBenPriority { get; } + Value CoordinationOfBenefitPriority { get; } /// /// IN1-23: Notice Of Admission Flag @@ -220,17 +220,17 @@ public interface IN1 : /// /// IN1-42: Insured's Employment Status /// - Value InsuredSEmploymentStatus { get; } + Value InsuredEmploymentStatus { get; } /// /// IN1-43: Insured's Administrative Sex /// - Value InsuredSAdministrativeSex { get; } + Value InsuredAdministrativeSex { get; } /// /// IN1-44: Insured's Employer's Address /// - ValueList InsuredSEmployerSAddress { get; } + ValueList InsuredEmployerAddress { get; } /// /// IN1-45: Verification Status @@ -255,7 +255,7 @@ public interface IN1 : /// /// IN1-49: Insured's ID Number /// - ValueList InsuredSIdNumber { get; } + ValueList InsuredIdNumber { get; } /// /// IN1-50: Signature Code @@ -270,7 +270,7 @@ public interface IN1 : /// /// IN1-52: Insured's Birth Place /// - Value InsuredSBirthPlace { get; } + Value InsuredBirthPlace { get; } /// /// IN1-53: VIP Indicator diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/IN2.cs b/src/Machete.HL7Schema/Generated/V26/Segments/IN2.cs index 4e4379642..fd4a59e3f 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/IN2.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/IN2.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// IN2 (Segment) - Insurance Additional Information @@ -15,17 +15,17 @@ public interface IN2 : /// /// IN2-1: Insured's Employee ID /// - ValueList InsuredSEmployeeId { get; } + ValueList InsuredEmployeeId { get; } /// /// IN2-2: Insured's Social Security Number /// - Value InsuredSSocialSecurityNumber { get; } + Value InsuredSocialSecurityNumber { get; } /// /// IN2-3: Insured's Employer's Name and ID /// - ValueList InsuredSEmployerSNameAndId { get; } + ValueList InsuredEmployerNameAndId { get; } /// /// IN2-4: Employer Information Data @@ -210,7 +210,7 @@ public interface IN2 : /// /// IN2-40: Mother's Maiden Name /// - ValueList MotherSMaidenName { get; } + ValueList MotherMaidenName { get; } /// /// IN2-41: Nationality @@ -230,7 +230,7 @@ public interface IN2 : /// /// IN2-44: Insured's Employment Start Date /// - Value InsuredSEmploymentStartDate { get; } + Value InsuredEmploymentStartDate { get; } /// /// IN2-45: Employment Stop Date @@ -270,17 +270,17 @@ public interface IN2 : /// /// IN2-52: Insured's Contact Person's Name /// - ValueList InsuredSContactPersonSName { get; } + ValueList InsuredContactPersonSName { get; } /// /// IN2-53: Insured's Contact Person Phone Number /// - ValueList InsuredSContactPersonPhoneNumber { get; } + ValueList InsuredContactPersonPhoneNumber { get; } /// /// IN2-54: Insured's Contact Person Reason /// - ValueList InsuredSContactPersonReason { get; } + ValueList InsuredContactPersonReason { get; } /// /// IN2-55: Relationship to the Patient Start Date @@ -293,14 +293,14 @@ public interface IN2 : ValueList RelationshipToPatientStopDate { get; } /// - /// IN2-57: Insurance Co Contact Reason + /// IN2-57: Insurance Company Contact Reason /// - Value InsuranceCoContactReason { get; } + Value InsuranceCompanyContactReason { get; } /// - /// IN2-58: Insurance Co Contact Phone Number + /// IN2-58: Insurance Company Contact Phone Number /// - ValueList InsuranceCoContactPhoneNumber { get; } + ValueList InsuranceCompanyContactPhoneNumber { get; } /// /// IN2-59: Policy Scope @@ -320,17 +320,17 @@ public interface IN2 : /// /// IN2-62: Guarantor's Relationship to Insured /// - Value GuarantorSRelationshipToInsured { get; } + Value GuarantorRelationshipToInsured { get; } /// /// IN2-63: Insured's Phone Number - Home /// - ValueList InsuredSPhoneNumberHome { get; } + ValueList InsuredPhoneNumberHome { get; } /// /// IN2-64: Insured's Employer Phone Number /// - ValueList InsuredSEmployerPhoneNumber { get; } + ValueList InsuredEmployerPhoneNumber { get; } /// /// IN2-65: Military Handicapped Program @@ -348,9 +348,9 @@ public interface IN2 : Value CopayLimitFlag { get; } /// - /// IN2-68: Stoploss Limit Flag + /// IN2-68: Stop/Loss Limit Flag /// - Value StoploLimitFlag { get; } + Value StopLossLimitFlag { get; } /// /// IN2-69: Insured Organization Name and ID @@ -370,6 +370,6 @@ public interface IN2 : /// /// IN2-72: Patient's Relationship to Insured /// - Value PatientSRelationshipToInsured { get; } + Value PatientRelationshipToInsured { get; } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/IN3.cs b/src/Machete.HL7Schema/Generated/V26/Segments/IN3.cs index b62f530f6..e309e985c 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/IN3.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/IN3.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// IN3 (Segment) - Insurance Additional Information, Certification diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/INV.cs b/src/Machete.HL7Schema/Generated/V26/Segments/INV.cs index e3dcfd0e7..0afdf36f7 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/INV.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/INV.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// INV (Segment) - Inventory Detail diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/IPC.cs b/src/Machete.HL7Schema/Generated/V26/Segments/IPC.cs index 5488c2440..31ad7a160 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/IPC.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/IPC.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// IPC (Segment) - Imaging Procedure Control Segment /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/IPR.cs b/src/Machete.HL7Schema/Generated/V26/Segments/IPR.cs index 3fb9ab141..65e80c540 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/IPR.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/IPR.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// IPR (Segment) - Invoice Processing Results diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/ISD.cs b/src/Machete.HL7Schema/Generated/V26/Segments/ISD.cs index 8dc8f3b8a..3b9848c5e 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/ISD.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/ISD.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// ISD (Segment) - Interaction Status Detail /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/ITM.cs b/src/Machete.HL7Schema/Generated/V26/Segments/ITM.cs index 16783f5f0..60c2debc9 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/ITM.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/ITM.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// ITM (Segment) - Material Item /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/IVC.cs b/src/Machete.HL7Schema/Generated/V26/Segments/IVC.cs index e203eeee2..68ff9024d 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/IVC.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/IVC.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// IVC (Segment) - Invoice Segment diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/IVT.cs b/src/Machete.HL7Schema/Generated/V26/Segments/IVT.cs index c99c10d02..c7d8d2d16 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/IVT.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/IVT.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// IVT (Segment) - Material Location /// @@ -114,7 +112,7 @@ public interface IVT : /// /// IVT-21: Recommended Reorder Theory /// - Value RecommendedReorderory { get; } + Value RecommendedReorderTheory { get; } /// /// IVT-22: Recommended Safety Stock Days diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/LAN.cs b/src/Machete.HL7Schema/Generated/V26/Segments/LAN.cs index b4abc5aff..165ff0e62 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/LAN.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/LAN.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// LAN (Segment) - Language Detail /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/LCC.cs b/src/Machete.HL7Schema/Generated/V26/Segments/LCC.cs index 359891964..f72795c5f 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/LCC.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/LCC.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// LCC (Segment) - Location Charge Code /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/LCH.cs b/src/Machete.HL7Schema/Generated/V26/Segments/LCH.cs index f72ce0801..98b44b8cf 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/LCH.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/LCH.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// LCH (Segment) - Location Characteristic /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/LDP.cs b/src/Machete.HL7Schema/Generated/V26/Segments/LDP.cs index 1038135ce..7fb8faf2e 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/LDP.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/LDP.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// LDP (Segment) - Location Department diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/LOC.cs b/src/Machete.HL7Schema/Generated/V26/Segments/LOC.cs index 5586e5294..12481068e 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/LOC.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/LOC.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// LOC (Segment) - Location Identification /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/LRL.cs b/src/Machete.HL7Schema/Generated/V26/Segments/LRL.cs index 01bea0e52..6dc42faee 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/LRL.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/LRL.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// LRL (Segment) - Location Relationship /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/MFA.cs b/src/Machete.HL7Schema/Generated/V26/Segments/MFA.cs index 1499ce113..4c79e1c61 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/MFA.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/MFA.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// MFA (Segment) - Master File Acknowledgment diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/MFE.cs b/src/Machete.HL7Schema/Generated/V26/Segments/MFE.cs index bdd252960..5c92118a9 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/MFE.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/MFE.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// MFE (Segment) - Master File Entry diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/MFI.cs b/src/Machete.HL7Schema/Generated/V26/Segments/MFI.cs index 6613d6568..3b3bec765 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/MFI.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/MFI.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// MFI (Segment) - Master File Identification diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/MRG.cs b/src/Machete.HL7Schema/Generated/V26/Segments/MRG.cs index 755c72351..cdcb65508 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/MRG.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/MRG.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// MRG (Segment) - Merge Patient Information /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/MSA.cs b/src/Machete.HL7Schema/Generated/V26/Segments/MSA.cs index 5eb6aadf0..53c4218c0 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/MSA.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/MSA.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// MSA (Segment) - Message Acknowledgment diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/MSH.cs b/src/Machete.HL7Schema/Generated/V26/Segments/MSH.cs index 45c048b33..3a55f1af1 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/MSH.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/MSH.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// MSH (Segment) - Message Header diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ABSMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ABSMap.cs index 6704ecd72..948f2496a 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ABSMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ABSMap.cs @@ -1,36 +1,36 @@ // This file was automatically generated and may be regenerated at any // time. To ensure any changes are retained, modify the tool with any segment/component/group/field name -// or type changes. -namespace Machete.HL7Schema.V26.Maps -{ - using V26; - - /// - /// ABS (SegmentMap) - Abstract - /// - public class ABSMap : - HL7V26SegmentMap - { - public ABSMap() - { - Id = "ABS"; - - Name = "Abstract"; - - Entity(x => x.DischargeCareProvider, 1); - Entity(x => x.TransferMedicalServiceCode, 2); - Entity(x => x.SeverityOfIllnessCode, 3); - Value(x => x.DateTimeOfAttestation, 4, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Entity(x => x.AttestedBy, 5); - Entity(x => x.TriageCode, 6); - Value(x => x.AbstractCompletionDateTime, 7, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Entity(x => x.AbstractedBy, 8); - Entity(x => x.CaseCategoryCode, 9); - Value(x => x.CaesarianSectionIndicator, 10); - Entity(x => x.GestationCategoryCode, 11); - Value(x => x.GestationPeriodWeeks, 12); - Entity(x => x.NewbornCode, 13); - Value(x => x.StillbornIndicator, 14); - } - } +// or type changes. +namespace Machete.HL7Schema.V26.Maps +{ + using V26; + + /// + /// ABS (SegmentMap) - Abstract + /// + public class ABSMap : + HL7V26SegmentMap + { + public ABSMap() + { + Id = "ABS"; + + Name = "Abstract"; + + Entity(x => x.DischargeCareProvider, 1); + Entity(x => x.TransferMedicalServiceCode, 2); + Entity(x => x.SeverityOfIllnessCode, 3); + Value(x => x.DateTimeOfAttestation, 4, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Entity(x => x.AttestedBy, 5); + Entity(x => x.TriageCode, 6); + Value(x => x.AbstractCompletionDateTime, 7, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Entity(x => x.AbstractedBy, 8); + Entity(x => x.CaseCategoryCode, 9); + Value(x => x.CaesareanSectionIndicator, 10); + Entity(x => x.GestationCategoryCode, 11); + Value(x => x.GestationPeriodWeeks, 12); + Entity(x => x.NewbornCode, 13); + Value(x => x.StillbornIndicator, 14); + } + } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ADJMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ADJMap.cs index 8e54e7c3f..631fa8d82 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ADJMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ADJMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,10 +17,10 @@ public ADJMap() Name = "Adjustment"; - Entity(x => x.ProviderAdjustmentNumber, 1, x => {x.Required = true;}); - Entity(x => x.PayerAdjustmentNumber, 2, x => {x.Required = true;}); - Value(x => x.AdjustmentSequenceNumber, 3, x => {x.Required = true;}); - Value(x => x.AdjustmentCategory, 4, x => {x.Required = true;}); + Entity(x => x.ProviderAdjustmentNumber, 1, x => x.IsRequired()); + Entity(x => x.PayerAdjustmentNumber, 2, x => x.IsRequired()); + Value(x => x.AdjustmentSequenceNumber, 3, x => x.IsRequired()); + Value(x => x.AdjustmentCategory, 4, x => x.IsRequired()); Entity(x => x.AdjustmentAmount, 5); Entity(x => x.AdjustmentQuantity, 6); Entity(x => x.AdjustmentReasonPA, 7); @@ -30,7 +30,11 @@ public ADJMap() Value(x => x.AdjustmentAction, 11); Entity(x => x.ProviderAdjustmentNumberCrossReference, 12); Entity(x => x.ProviderProductServiceLineItemNumberCrossReference, 13); - Value(x => x.AdjustmentDate, 14, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;x.Required = true;}); + Value(x => x.AdjustmentDate, 14, x => + { + x.Converter = HL7.HL7ValueConverters.VariableLongDateTime; + x.IsRequired(); + }); Entity(x => x.ResponsibleOrganization, 15); } } diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/AFFMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/AFFMap.cs index f5f2cd803..763f020cd 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/AFFMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/AFFMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,8 +17,8 @@ public AFFMap() Name = "Professional Affiliation"; - Value(x => x.SetId, 1, x => {x.Required = true;}); - Entity(x => x.ProfessionalOrganization, 2, x => {x.Required = true;}); + Value(x => x.SetId, 1, x => x.IsRequired()); + Entity(x => x.ProfessionalOrganization, 2, x => x.IsRequired()); Entity(x => x.ProfessionalOrganizationAddress, 3); Entity(x => x.ProfessionalOrganizationAffiliationDateRange, 4); Value(x => x.ProfessionalAffiliationAdditionalInformation, 5); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/AIGMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/AIGMap.cs index 0040faf49..f428c122a 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/AIGMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/AIGMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,10 +17,10 @@ public AIGMap() Name = "Appointment Information - General Resource"; - Value(x => x.SetId, 1, x => {x.Required = true;}); + Value(x => x.SetId, 1, x => x.IsRequired()); Value(x => x.SegmentActionCode, 2); Entity(x => x.ResourceId, 3); - Entity(x => x.ResourceType, 4, x => {x.Required = true;}); + Entity(x => x.ResourceType, 4, x => x.IsRequired()); Entity(x => x.ResourceGroup, 5); Value(x => x.ResourceQuantity, 6); Entity(x => x.ResourceQuantityUnits, 7); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/AILMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/AILMap.cs index 3abec6e9d..f81263623 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/AILMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/AILMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,12 +17,12 @@ public AILMap() Name = "Appointment Information - Location Resource"; - Value(x => x.SetId, 1, x => {x.Required = true;}); + Value(x => x.SetId, 1, x => x.IsRequired()); Value(x => x.SegmentActionCode, 2); Entity(x => x.LocationResourceId, 3); Entity(x => x.LocationType, 4); Entity(x => x.LocationGroup, 5); - Value(x => x.StartDateTime, 6, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.StartDateTime, 6, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.StartDateTimeOffset, 7); Entity(x => x.StartDateTimeOffsetUnits, 8); Value(x => x.Duration, 9); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/AIPMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/AIPMap.cs index ea510e640..d90186f87 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/AIPMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/AIPMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,12 +17,12 @@ public AIPMap() Name = "Appointment Information - Personnel Resource"; - Value(x => x.SetId, 1, x => {x.Required = true;}); + Value(x => x.SetId, 1, x => x.IsRequired()); Value(x => x.SegmentActionCode, 2); Entity(x => x.PersonnelResourceId, 3); Entity(x => x.ResourceType, 4); Entity(x => x.ResourceGroup, 5); - Value(x => x.StartDateTime, 6, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.StartDateTime, 6, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.StartDateTimeOffset, 7); Entity(x => x.StartDateTimeOffsetUnits, 8); Value(x => x.Duration, 9); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/AISMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/AISMap.cs index f34aba318..8c652f7b3 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/AISMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/AISMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,10 +17,10 @@ public AISMap() Name = "Appointment Information"; - Value(x => x.SetId, 1, x => {x.Required = true;}); + Value(x => x.SetId, 1, x => x.IsRequired()); Value(x => x.SegmentActionCode, 2); - Entity(x => x.UniversalServiceIdentifier, 3, x => {x.Required = true;}); - Value(x => x.StartDateTime, 4, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Entity(x => x.UniversalServiceIdentifier, 3, x => x.IsRequired()); + Value(x => x.StartDateTime, 4, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.StartDateTimeOffset, 5); Entity(x => x.StartDateTimeOffsetUnits, 6); Value(x => x.Duration, 7); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/AL1Map.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/AL1Map.cs index 93d47a34c..dd7566a50 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/AL1Map.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/AL1Map.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,12 +17,12 @@ public AL1Map() Name = "Patient Allergy Information"; - Value(x => x.SetId, 1, x => {x.Required = true;}); + Value(x => x.SetId, 1, x => x.IsRequired()); Entity(x => x.AllergenTypeCode, 2); - Entity(x => x.AllergenCodeMnemonicDescription, 3, x => {x.Required = true;}); + Entity(x => x.AllergenCodeMnemonicDescription, 3, x => x.IsRequired()); Entity(x => x.AllergySeverityCode, 4); Value(x => x.AllergyReactionCode, 5); - Value(x => x.IdentificationDate, 6, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.IdentificationDate, 6, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ARQMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ARQMap.cs index 403882e34..f06bbb1d6 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ARQMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ARQMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,7 +17,7 @@ public ARQMap() Name = "Appointment Request"; - Entity(x => x.PlacerAppointmentId, 1, x => {x.Required = true;}); + Entity(x => x.PlacerAppointmentId, 1, x => x.IsRequired()); Entity(x => x.FillerAppointmentId, 2); Value(x => x.OccurrenceNumber, 3); Entity(x => x.PlacerGroupNumber, 4); @@ -31,11 +31,11 @@ public ARQMap() Value(x => x.Priority, 12); Entity(x => x.RepeatingInterval, 13); Value(x => x.RepeatingIntervalDuration, 14); - Entity(x => x.PlacerContactPerson, 15, x => {x.Required = true;}); + Entity(x => x.PlacerContactPerson, 15, x => x.IsRequired()); Entity(x => x.PlacerContactPhoneNumber, 16); Entity(x => x.PlacerContactAddress, 17); Entity(x => x.PlacerContactLocation, 18); - Entity(x => x.EnteredByPerson, 19, x => {x.Required = true;}); + Entity(x => x.EnteredByPerson, 19, x => x.IsRequired()); Entity(x => x.EnteredByPhoneNumber, 20); Entity(x => x.EnteredByLocation, 21); Entity(x => x.ParentPlacerAppointmentId, 22); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ARVMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ARVMap.cs index 70de683a7..74fe9d090 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ARVMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ARVMap.cs @@ -1,28 +1,28 @@ // This file was automatically generated and may be regenerated at any // time. To ensure any changes are retained, modify the tool with any segment/component/group/field name -// or type changes. -namespace Machete.HL7Schema.V26.Maps -{ - using V26; - - /// - /// ARV (SegmentMap) - Access Restriction - /// - public class ARVMap : - HL7V26SegmentMap - { - public ARVMap() - { - Id = "ARV"; - - Name = "Access Restriction"; - - Value(x => x.SetId, 1); - Entity(x => x.AcceRestrictionActionCode, 2, x => {x.Required = true;}); - Entity(x => x.AcceRestrictionValue, 3, x => {x.Required = true;}); - Entity(x => x.AcceRestrictionReason, 4); - Value(x => x.SpecialAccessRestrictionInstructions, 5); - Entity(x => x.AcceRestrictionDateRange, 6); - } - } +// or type changes. +namespace Machete.HL7Schema.V26.Maps +{ + using V26; + + /// + /// ARV (SegmentMap) - Access Restriction + /// + public class ARVMap : + HL7V26SegmentMap + { + public ARVMap() + { + Id = "ARV"; + + Name = "Access Restriction"; + + Value(x => x.SetId, 1); + Entity(x => x.AccessRestrictionActionCode, 2, x => {x.Required = true;}); + Entity(x => x.AccessRestrictionValue, 3, x => {x.Required = true;}); + Entity(x => x.AccessRestrictionReason, 4); + Value(x => x.SpecialAccessRestrictionInstructions, 5); + Entity(x => x.AccessRestrictionDateRange, 6); + } + } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/AUTMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/AUTMap.cs index 3e5a1f656..76aa431ae 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/AUTMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/AUTMap.cs @@ -1,32 +1,32 @@ // This file was automatically generated and may be regenerated at any // time. To ensure any changes are retained, modify the tool with any segment/component/group/field name -// or type changes. -namespace Machete.HL7Schema.V26.Maps -{ - using V26; - - /// - /// AUT (SegmentMap) - Authorization Information - /// - public class AUTMap : - HL7V26SegmentMap - { - public AUTMap() - { - Id = "AUT"; - - Name = "Authorization Information"; - - Entity(x => x.AuthorizingPayorPlanId, 1); - Entity(x => x.AuthorizingPayorCompanyId, 2, x => {x.Required = true;}); - Value(x => x.AuthorizingPayorCompanyName, 3); - Value(x => x.AuthorizationEffectiveDate, 4, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.AuthorizationExpirationDate, 5, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Entity(x => x.AuthorizationIdentifier, 6); - Entity(x => x.ReimbursementLimit, 7); - Value(x => x.RequestedNumberOfTreatments, 8); - Value(x => x.AuthorizedNumberOfTreatments, 9); - Value(x => x.ProceDate, 10, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - } - } +// or type changes. +namespace Machete.HL7Schema.V26.Maps +{ + using V26; + + /// + /// AUT (SegmentMap) - Authorization Information + /// + public class AUTMap : + HL7V26SegmentMap + { + public AUTMap() + { + Id = "AUT"; + + Name = "Authorization Information"; + + Entity(x => x.AuthorizingPayorPlanId, 1); + Entity(x => x.AuthorizingPayorCompanyId, 2, x => {x.Required = true;}); + Value(x => x.AuthorizingPayorCompanyName, 3); + Value(x => x.AuthorizationEffectiveDate, 4, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.AuthorizationExpirationDate, 5, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Entity(x => x.AuthorizationIdentifier, 6); + Entity(x => x.ReimbursementLimit, 7); + Value(x => x.RequestedNumberOfTreatments, 8); + Value(x => x.AuthorizedNumberOfTreatments, 9); + Value(x => x.ProcessDate, 10, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + } + } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/BHSMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/BHSMap.cs index 5bcae475b..46f0f7d93 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/BHSMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/BHSMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,13 +17,13 @@ public BHSMap() Name = "Batch Header"; - Value(x => x.BatchFieldSeparator, 1, x => {x.Required = true;}); - Value(x => x.BatchEncodingCharacters, 2, x => {x.Required = true;}); + Value(x => x.BatchFieldSeparator, 1, x => x.IsRequired()); + Value(x => x.BatchEncodingCharacters, 2, x => x.IsRequired()); Entity(x => x.BatchSendingApplication, 3); Entity(x => x.BatchSendingFacility, 4); Entity(x => x.BatchReceivingApplication, 5); Entity(x => x.BatchReceivingFacility, 6); - Value(x => x.BatchCreationDateTime, 7, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.BatchCreationDateTime, 7, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.BatchSecurity, 8); Value(x => x.BatchNameIdType, 9); Value(x => x.BatchComment, 10); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/BPOMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/BPOMap.cs index 67e385319..92c24be59 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/BPOMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/BPOMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,16 +17,16 @@ public BPOMap() Name = "Blood product order"; - Value(x => x.SetId, 1, x => {x.Required = true;}); - Entity(x => x.BPUniversalServiceIdentifier, 2, x => {x.Required = true;}); + Value(x => x.SetId, 1, x => x.IsRequired()); + Entity(x => x.BPUniversalServiceIdentifier, 2, x => x.IsRequired()); Entity(x => x.BPProcessingRequirements, 3); - Value(x => x.BPQuantity, 4, x => {x.Required = true;}); + Value(x => x.BPQuantity, 4, x => x.IsRequired()); Value(x => x.BPAmount, 5); Entity(x => x.BPUnits, 6); - Value(x => x.BPIntendedUseDateTime, 7, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.BPIntendedUseDateTime, 7, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.BPIntendedDispenseFromLocation, 8); Entity(x => x.BPIntendedDispenseFromAddress, 9); - Value(x => x.BPRequestedDispenseDateTime, 10, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.BPRequestedDispenseDateTime, 10, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.BPRequestedDispenseToLocation, 11); Entity(x => x.BPRequestedDispenseToAddress, 12); Entity(x => x.BPIndicationForUse, 13); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/BPXMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/BPXMap.cs index a7a733c92..9aab29bf3 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/BPXMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/BPXMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,10 +17,14 @@ public BPXMap() Name = "Blood product dispense status"; - Value(x => x.SetId, 1, x => {x.Required = true;}); - Entity(x => x.BPDispenseStatus, 2, x => {x.Required = true;}); - Value(x => x.BPStatus, 3, x => {x.Required = true;}); - Value(x => x.BPDateTimeOfStatus, 4, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;x.Required = true;}); + Value(x => x.SetId, 1, x => x.IsRequired()); + Entity(x => x.BPDispenseStatus, 2, x => x.IsRequired()); + Value(x => x.BPStatus, 3, x => x.IsRequired()); + Value(x => x.BPDateTimeOfStatus, 4, x => + { + x.Converter = HL7.HL7ValueConverters.VariableLongDateTime; + x.IsRequired(); + }); Entity(x => x.BCDonationId, 5); Entity(x => x.BCComponent, 6); Entity(x => x.BCDonationTypeIntendedUse, 7); @@ -29,8 +33,8 @@ public BPXMap() Entity(x => x.CPLotNumber, 10); Entity(x => x.BPBloodGroup, 11); Entity(x => x.BCSpecialTesting, 12); - Value(x => x.BPExpirationDateTime, 13, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.BPQuantity, 14, x => {x.Required = true;}); + Value(x => x.BPExpirationDateTime, 13, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.BPQuantity, 14, x => x.IsRequired()); Value(x => x.BPAmount, 15); Entity(x => x.BPUnits, 16); Entity(x => x.BPUniqueId, 17); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/BTXMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/BTXMap.cs index 41ad7d4c9..77542ff83 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/BTXMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/BTXMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,23 +17,27 @@ public BTXMap() Name = "Blood Product Transfusion/Disposition"; - Value(x => x.SetId, 1, x => {x.Required = true;}); + Value(x => x.SetId, 1, x => x.IsRequired()); Entity(x => x.BCDonationId, 2); Entity(x => x.BCComponent, 3); Entity(x => x.BCBloodGroup, 4); Entity(x => x.CPCommercialProduct, 5); Entity(x => x.CPManufacturer, 6); Entity(x => x.CPLotNumber, 7); - Value(x => x.BPQuantity, 8, x => {x.Required = true;}); + Value(x => x.BPQuantity, 8, x => x.IsRequired()); Value(x => x.BPAmount, 9); Entity(x => x.BPUnits, 10); - Entity(x => x.BPTransfusionDispositionStatus, 11, x => {x.Required = true;}); - Value(x => x.BPMessageStatus, 12, x => {x.Required = true;}); - Value(x => x.BPDateTimeOfStatus, 13, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;x.Required = true;}); + Entity(x => x.BPTransfusionDispositionStatus, 11, x => x.IsRequired()); + Value(x => x.BPMessageStatus, 12, x => x.IsRequired()); + Value(x => x.BPDateTimeOfStatus, 13, x => + { + x.Converter = HL7.HL7ValueConverters.VariableLongDateTime; + x.IsRequired(); + }); Entity(x => x.BPTransfusionAdministrator, 14); Entity(x => x.BPTransfusionVerifier, 15); - Value(x => x.BPTransfusionStartDateTimeOfStatus, 16, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.BPTransfusionEndDateTimeOfStatus, 17, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.BPTransfusionStartDateTimeOfStatus, 16, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.BPTransfusionEndDateTimeOfStatus, 17, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.BPAdverseReactionType, 18); Entity(x => x.BPTransfusionInterruptedReason, 19); } diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CDMMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CDMMap.cs index 1262951ba..4831ee245 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CDMMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CDMMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,9 +17,9 @@ public CDMMap() Name = "Charge Description Master"; - Entity(x => x.PrimaryKeyValue, 1, x => {x.Required = true;}); + Entity(x => x.PrimaryKeyValue, 1, x => x.IsRequired()); Entity(x => x.ChargeCodeAlias, 2); - Value(x => x.ChargeDescriptionShort, 3, x => {x.Required = true;}); + Value(x => x.ChargeDescriptionShort, 3, x => x.IsRequired()); Value(x => x.ChargeDescriptionLong, 4); Value(x => x.DescriptionOverrideIndicator, 5); Entity(x => x.ExplodingCharges, 6); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CERMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CERMap.cs index 318f9ace9..fba1d53dd 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CERMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CERMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,7 +17,7 @@ public CERMap() Name = "Certificate Detail"; - Value(x => x.SetId, 1, x => {x.Required = true;}); + Value(x => x.SetId, 1, x => x.IsRequired()); Value(x => x.SerialNumber, 2); Value(x => x.Version, 3); Entity(x => x.GrantingAuthority, 4); @@ -29,7 +29,7 @@ public CERMap() Entity(x => x.CertificateType, 10); Entity(x => x.CertificateDomain, 11); Value(x => x.SubjectId, 12); - Value(x => x.SubjectName, 13, x => {x.Required = true;}); + Value(x => x.SubjectName, 13, x => x.IsRequired()); Entity(x => x.SubjectDirectoryAttributeExtension, 14); Entity(x => x.SubjectPublicKeyInfo, 15); Entity(x => x.AuthorityKeyIdentifier, 16); @@ -39,13 +39,13 @@ public CERMap() Entity(x => x.JurisdictionStateProvince, 20); Entity(x => x.JurisdictionCountyParish, 21); Entity(x => x.JurisdictionBreadth, 22); - Value(x => x.GrantingDate, 23, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.IssuingDate, 24, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.ActivationDate, 25, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.InactivationDate, 26, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.ExpirationDate, 27, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.RenewalDate, 28, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.RevocationDate, 29, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.GrantingDate, 23, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.IssuingDate, 24, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.ActivationDate, 25, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.InactivationDate, 26, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.ExpirationDate, 27, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.RenewalDate, 28, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.RevocationDate, 29, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.RevocationReasonCode, 30); Entity(x => x.CertificateStatusCode, 31); } diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CM0Map.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CM0Map.cs index 9129ff1d5..9c0d88894 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CM0Map.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CM0Map.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -18,13 +18,13 @@ public CM0Map() Name = "Clinical Study Master"; Value(x => x.SetId, 1); - Entity(x => x.SponsorStudyId, 2, x => {x.Required = true;}); + Entity(x => x.SponsorStudyId, 2, x => x.IsRequired()); Entity(x => x.AlternateStudyId, 3); - Value(x => x.TitleOfStudy, 4, x => {x.Required = true;}); + Value(x => x.TitleOfStudy, 4, x => x.IsRequired()); Entity(x => x.ChairmanOfStudy, 5); - Value(x => x.LastIRBApprovalDate, 6, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.LastIRBApprovalDate, 6, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.TotalAccrualToDate, 7); - Value(x => x.LastAccrualDate, 8, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.LastAccrualDate, 8, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.ContactForStudy, 9); Entity(x => x.ContactSTelephoneNumber, 10); Entity(x => x.ContactSAddress, 11); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CM1Map.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CM1Map.cs index f2a85c050..bb074c203 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CM1Map.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CM1Map.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,9 +17,9 @@ public CM1Map() Name = "Clinical Study Phase Master"; - Value(x => x.SetId, 1, x => {x.Required = true;}); - Entity(x => x.StudyPhaseIdentifier, 2, x => {x.Required = true;}); - Value(x => x.DescriptionOfStudyPhase, 3, x => {x.Required = true;}); + Value(x => x.SetId, 1, x => x.IsRequired()); + Entity(x => x.StudyPhaseIdentifier, 2, x => x.IsRequired()); + Value(x => x.DescriptionOfStudyPhase, 3, x => x.IsRequired()); } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CM2Map.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CM2Map.cs index dd6648e26..a861cf2ed 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CM2Map.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CM2Map.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -18,9 +18,9 @@ public CM2Map() Name = "Clinical Study Schedule Master"; Value(x => x.SetId, 1); - Entity(x => x.ScheduledTimePoint, 2, x => {x.Required = true;}); + Entity(x => x.ScheduledTimePoint, 2, x => x.IsRequired()); Value(x => x.DescriptionOfTimePoint, 3); - Entity(x => x.EventScheduledThisTimePoint, 4, x => {x.Required = true;}); + Entity(x => x.EventScheduledThisTimePoint, 4, x => x.IsRequired()); } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CNSMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CNSMap.cs index b5de4c332..22d7c7497 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CNSMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CNSMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -19,8 +19,8 @@ public CNSMap() Value(x => x.StartingNotificationReferenceNumber, 1); Value(x => x.EndingNotificationReferenceNumber, 2); - Value(x => x.StartingNotificationDateTime, 3, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.EndingNotificationDateTime, 4, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.StartingNotificationDateTime, 3, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.EndingNotificationDateTime, 4, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.StartingNotificationCode, 5); Entity(x => x.EndingNotificationCode, 6); } diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CSPMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CSPMap.cs index 0eecf382b..3d2702efb 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CSPMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CSPMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,9 +17,13 @@ public CSPMap() Name = "Clinical Study Phase"; - Entity(x => x.StudyPhaseIdentifier, 1, x => {x.Required = true;}); - Value(x => x.DateTimeStudyPhaseBegan, 2, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;x.Required = true;}); - Value(x => x.DateTimeStudyPhaseEnded, 3, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Entity(x => x.StudyPhaseIdentifier, 1, x => x.IsRequired()); + Value(x => x.DateTimeStudyPhaseBegan, 2, x => + { + x.Converter = HL7.HL7ValueConverters.VariableLongDateTime; + x.IsRequired(); + }); + Value(x => x.DateTimeStudyPhaseEnded, 3, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.StudyPhaseEvaluability, 4); } } diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CSRMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CSRMap.cs index e4f7116ff..f067f5c0a 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CSRMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CSRMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,21 +17,25 @@ public CSRMap() Name = "Clinical Study Registration"; - Entity(x => x.SponsorStudyId, 1, x => {x.Required = true;}); + Entity(x => x.SponsorStudyId, 1, x => x.IsRequired()); Entity(x => x.AlternateStudyId, 2); Entity(x => x.InstitutionRegisteringPatient, 3); - Entity(x => x.SponsorPatientId, 4, x => {x.Required = true;}); + Entity(x => x.SponsorPatientId, 4, x => x.IsRequired()); Entity(x => x.AlternatePatientId, 5); - Value(x => x.DateTimeOfPatientStudyRegistration, 6, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;x.Required = true;}); + Value(x => x.DateTimeOfPatientStudyRegistration, 6, x => + { + x.Converter = HL7.HL7ValueConverters.VariableLongDateTime; + x.IsRequired(); + }); Entity(x => x.PersonPerformingStudyRegistration, 7); - Entity(x => x.StudyAuthorizingProvider, 8, x => {x.Required = true;}); - Value(x => x.DateTimePatientStudyConsentSigned, 9, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Entity(x => x.StudyAuthorizingProvider, 8, x => x.IsRequired()); + Value(x => x.DateTimePatientStudyConsentSigned, 9, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.PatientStudyEligibilityStatus, 10); - Value(x => x.StudyRandomizationDateTime, 11, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.StudyRandomizationDateTime, 11, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.RandomizedStudyArm, 12); Entity(x => x.StratumForStudyRandomization, 13); Entity(x => x.PatientEvaluabilityStatus, 14); - Value(x => x.DateTimeEndedStudy, 15, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.DateTimeEndedStudy, 15, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.ReasonEndedStudy, 16); } } diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CSSMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CSSMap.cs index 3f0d36be7..655f53500 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CSSMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CSSMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,8 +17,8 @@ public CSSMap() Name = "Clinical Study Data Schedule Segment"; - Entity(x => x.StudyScheduledTimePoint, 1, x => {x.Required = true;}); - Value(x => x.StudyScheduledPatientTimePoint, 2, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Entity(x => x.StudyScheduledTimePoint, 1, x => x.IsRequired()); + Value(x => x.StudyScheduledPatientTimePoint, 2, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.StudyQualityControlCodes, 3); } } diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CTDMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CTDMap.cs index f53c17393..601ef1e5a 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CTDMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CTDMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,7 +17,7 @@ public CTDMap() Name = "Contact Data"; - Entity(x => x.ContactRole, 1, x => {x.Required = true;}); + Entity(x => x.ContactRole, 1, x => x.IsRequired()); Entity(x => x.ContactName, 2); Entity(x => x.ContactAddress, 3); Entity(x => x.ContactLocation, 4); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CTIMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CTIMap.cs index 79aa4a2c5..452ee25d0 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CTIMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/CTIMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,7 +17,7 @@ public CTIMap() Name = "Clinical Trial Identification"; - Entity(x => x.SponsorStudyId, 1, x => {x.Required = true;}); + Entity(x => x.SponsorStudyId, 1, x => x.IsRequired()); Entity(x => x.StudyPhaseIdentifier, 2); Entity(x => x.StudyScheduledTimePoint, 3); } diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/DB1Map.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/DB1Map.cs index d4e61d8a1..a78a95411 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/DB1Map.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/DB1Map.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,14 +17,14 @@ public DB1Map() Name = "Disability"; - Value(x => x.SetId, 1, x => {x.Required = true;}); + Value(x => x.SetId, 1, x => x.IsRequired()); Value(x => x.DisabledPersonCode, 2); Entity(x => x.DisabledPersonIdentifier, 3); Value(x => x.DisabilityIndicator, 4); - Value(x => x.DisabilityStartDate, 5, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.DisabilityEndDate, 6, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.DisabilityReturnToWorkDate, 7, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.DisabilityUnableToWorkDate, 8, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.DisabilityStartDate, 5, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.DisabilityEndDate, 6, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.DisabilityReturnToWorkDate, 7, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.DisabilityUnableToWorkDate, 8, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/DG1Map.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/DG1Map.cs index 987a75538..f18eca8dc 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/DG1Map.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/DG1Map.cs @@ -1,48 +1,48 @@ // This file was automatically generated and may be regenerated at any // time. To ensure any changes are retained, modify the tool with any segment/component/group/field name -// or type changes. -namespace Machete.HL7Schema.V26.Maps -{ - using V26; - - /// - /// DG1 (SegmentMap) - Diagnosis - /// - public class DG1Map : - HL7V26SegmentMap - { - public DG1Map() - { - Id = "DG1"; - - Name = "Diagnosis"; - - Value(x => x.SetId, 1, x => {x.Required = true;}); - Value(x => x.DiagnosiCodingMethod, 2, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Entity(x => x.DiagnosiCode, 3, x => {x.Required = true;}); - Value(x => x.DiagnosiDescription, 4, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.DiagnosiDateTime, 5, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.DiagnosiType, 6, x => {x.Required = true;}); - Entity(x => x.MajorDiagnosticCategory, 7); - Entity(x => x.DiagnosticRelatedGroup, 8); - Value(x => x.DRGApprovalIndicator, 9); - Value(x => x.DRGGrouperReviewCode, 10); - Entity(x => x.OutlierType, 11); - Value(x => x.OutlierDays, 12); - Entity(x => x.OutlierCost, 13); - Value(x => x.GrouperVersionAndType, 14, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.DiagnosiPriority, 15); - Entity(x => x.DiagnosingClinician, 16); - Value(x => x.DiagnosiClassification, 17); - Value(x => x.ConfidentialIndicator, 18); - Value(x => x.AttestationDateTime, 19, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Entity(x => x.DiagnosiIdentifier, 20); - Value(x => x.DiagnosiActionCode, 21); - Entity(x => x.ParentDiagnosis, 22); - Entity(x => x.DRGCCLValueCode, 23); - Value(x => x.DRGGroupingUsage, 24); - Value(x => x.DRGDiagnosiDeterminationStatus, 25); - Value(x => x.PresentOnAdmissionIndicator, 26); - } - } +// or type changes. +namespace Machete.HL7Schema.V26.Maps +{ + using V26; + + /// + /// DG1 (SegmentMap) - Diagnosis + /// + public class DG1Map : + HL7V26SegmentMap + { + public DG1Map() + { + Id = "DG1"; + + Name = "Diagnosis"; + + Value(x => x.SetId, 1, x => {x.Required = true;}); + Value(x => x.DiagnosisCodingMethod, 2, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Entity(x => x.DiagnosisCode, 3, x => {x.Required = true;}); + Value(x => x.DiagnosisDescription, 4, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.DiagnosisDateTime, 5, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.DiagnosisType, 6, x => {x.Required = true;}); + Entity(x => x.MajorDiagnosticCategory, 7); + Entity(x => x.DiagnosticRelatedGroup, 8); + Value(x => x.DRGApprovalIndicator, 9); + Value(x => x.DRGGrouperReviewCode, 10); + Entity(x => x.OutlierType, 11); + Value(x => x.OutlierDays, 12); + Entity(x => x.OutlierCost, 13); + Value(x => x.GrouperVersionAndType, 14, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.DiagnosisPriority, 15); + Entity(x => x.DiagnosingClinician, 16); + Value(x => x.DiagnosisClassification, 17); + Value(x => x.ConfidentialIndicator, 18); + Value(x => x.AttestationDateTime, 19, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Entity(x => x.DiagnosisIdentifier, 20); + Value(x => x.DiagnosisActionCode, 21); + Entity(x => x.ParentDiagnosis, 22); + Entity(x => x.DRGCCLValueCode, 23); + Value(x => x.DRGGroupingUsage, 24); + Value(x => x.DRGDiagnosisDeterminationStatus, 25); + Value(x => x.PresentOnAdmissionIndicator, 26); + } + } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/DRGMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/DRGMap.cs index 13e8d07a4..538b00366 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/DRGMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/DRGMap.cs @@ -1,55 +1,55 @@ // This file was automatically generated and may be regenerated at any // time. To ensure any changes are retained, modify the tool with any segment/component/group/field name -// or type changes. -namespace Machete.HL7Schema.V26.Maps -{ - using V26; - - /// - /// DRG (SegmentMap) - Diagnosis Related Group - /// - public class DRGMap : - HL7V26SegmentMap - { - public DRGMap() - { - Id = "DRG"; - - Name = "Diagnosis Related Group"; - - Entity(x => x.DiagnosticRelatedGroup, 1); - Value(x => x.DRGAssignedDateTime, 2, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.DRGApprovalIndicator, 3); - Value(x => x.DRGGrouperReviewCode, 4); - Entity(x => x.OutlierType, 5); - Value(x => x.OutlierDays, 6); - Entity(x => x.OutlierCost, 7); - Value(x => x.DRGPayor, 8); - Entity(x => x.OutlierReimbursement, 9); - Value(x => x.ConfidentialIndicator, 10); - Value(x => x.DRGTransferType, 11); - Entity(x => x.NameOfCoder, 12); - Entity(x => x.GrouperStatus, 13); - Entity(x => x.PCCLValueCode, 14); - Value(x => x.EffectiveWeight, 15); - Entity(x => x.MonetaryAmount, 16); - Value(x => x.StatuPatient, 17); - Value(x => x.GrouperSoftwareName, 18); - Value(x => x.GrouperSoftwareVersion, 19); - Value(x => x.StatuFinancialCalculation, 20); - Entity(x => x.RelativeDiscountSurcharge, 21); - Entity(x => x.BasicCharge, 22); - Entity(x => x.TotalCharge, 23); - Entity(x => x.DiscountSurcharge, 24); - Value(x => x.CalculatedDays, 25); - Value(x => x.StatuGender, 26); - Value(x => x.StatuAge, 27); - Value(x => x.StatuLengthOfStay, 28); - Value(x => x.StatuSameDayFlag, 29); - Value(x => x.StatuSeparationMode, 30); - Value(x => x.StatuWeightAtBirth, 31); - Value(x => x.StatuRespirationMinutes, 32); - Value(x => x.StatuAdmission, 33); - } - } +// or type changes. +namespace Machete.HL7Schema.V26.Maps +{ + using V26; + + /// + /// DRG (SegmentMap) - Diagnosis Related Group + /// + public class DRGMap : + HL7V26SegmentMap + { + public DRGMap() + { + Id = "DRG"; + + Name = "Diagnosis Related Group"; + + Entity(x => x.DiagnosticRelatedGroup, 1); + Value(x => x.DRGAssignedDateTime, 2, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.DRGApprovalIndicator, 3); + Value(x => x.DRGGrouperReviewCode, 4); + Entity(x => x.OutlierType, 5); + Value(x => x.OutlierDays, 6); + Entity(x => x.OutlierCost, 7); + Value(x => x.DRGPayor, 8); + Entity(x => x.OutlierReimbursement, 9); + Value(x => x.ConfidentialIndicator, 10); + Value(x => x.DRGTransferType, 11); + Entity(x => x.NameOfCoder, 12); + Entity(x => x.GrouperStatus, 13); + Entity(x => x.PCCLValueCode, 14); + Value(x => x.EffectiveWeight, 15); + Entity(x => x.MonetaryAmount, 16); + Value(x => x.StatusPatient, 17); + Value(x => x.GrouperSoftwareName, 18); + Value(x => x.GrouperSoftwareVersion, 19); + Value(x => x.StatusFinancialCalculation, 20); + Entity(x => x.RelativeDiscountSurcharge, 21); + Entity(x => x.BasicCharge, 22); + Entity(x => x.TotalCharge, 23); + Entity(x => x.DiscountSurcharge, 24); + Value(x => x.CalculatedDays, 25); + Value(x => x.StatusGender, 26); + Value(x => x.StatusAge, 27); + Value(x => x.StatusLengthOfStay, 28); + Value(x => x.StatusSameDayFlag, 29); + Value(x => x.StatusSeparationMode, 30); + Value(x => x.StatusWeightAtBirth, 31); + Value(x => x.StatusRespirationMinutes, 32); + Value(x => x.StatusAdmission, 33); + } + } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/DSPMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/DSPMap.cs index 791711dd3..0d667a4ec 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/DSPMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/DSPMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -19,7 +19,7 @@ public DSPMap() Value(x => x.SetId, 1); Value(x => x.DisplayLevel, 2); - Value(x => x.DataLine, 3, x => {x.Required = true;}); + Value(x => x.DataLine, 3, x => x.IsRequired()); Value(x => x.LogicalBreakPoint, 4); Value(x => x.ResultId, 5); } diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ECDMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ECDMap.cs index e5b73622e..873fcc6bb 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ECDMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ECDMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,8 +17,8 @@ public ECDMap() Name = "Equipment Command"; - Value(x => x.ReferenceCommandNumber, 1, x => {x.Required = true;}); - Entity(x => x.RemoteControlCommand, 2, x => {x.Required = true;}); + Value(x => x.ReferenceCommandNumber, 1, x => x.IsRequired()); + Entity(x => x.RemoteControlCommand, 2, x => x.IsRequired()); Value(x => x.ResponseRequired, 3); Entity(x => x.RequestedCompletionTime, 4); Value(x => x.Parameters, 5); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ECRMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ECRMap.cs index 21f8202f9..83d2d092f 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ECRMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ECRMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,8 +17,12 @@ public ECRMap() Name = "Equipment Command Response"; - Entity(x => x.CommandResponse, 1, x => {x.Required = true;}); - Value(x => x.DateTimeCompleted, 2, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;x.Required = true;}); + Entity(x => x.CommandResponse, 1, x => x.IsRequired()); + Value(x => x.DateTimeCompleted, 2, x => + { + x.Converter = HL7.HL7ValueConverters.VariableLongDateTime; + x.IsRequired(); + }); Value(x => x.CommandResponseParameters, 3); } } diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/EDUMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/EDUMap.cs index 539f784d3..e07b4524e 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/EDUMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/EDUMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,11 +17,11 @@ public EDUMap() Name = "Educational Detail"; - Value(x => x.SetId, 1, x => {x.Required = true;}); + Value(x => x.SetId, 1, x => x.IsRequired()); Value(x => x.AcademicDegree, 2); Entity(x => x.AcademicDegreeProgramDateRange, 3); Entity(x => x.AcademicDegreeProgramParticipationDateRange, 4); - Value(x => x.AcademicDegreeGrantedDate, 5, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.AcademicDegreeGrantedDate, 5, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.School, 6); Entity(x => x.SchoolTypeCode, 7); Entity(x => x.SchoolAddress, 8); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/EQPMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/EQPMap.cs index 5af7a5b8a..8b28eda03 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/EQPMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/EQPMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,11 +17,15 @@ public EQPMap() Name = "Equipment/log Service"; - Entity(x => x.EventType, 1, x => {x.Required = true;}); + Entity(x => x.EventType, 1, x => x.IsRequired()); Value(x => x.FileName, 2); - Value(x => x.StartDateTime, 3, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;x.Required = true;}); - Value(x => x.EndDateTime, 4, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.TransactionData, 5, x => {x.Required = true;}); + Value(x => x.StartDateTime, 3, x => + { + x.Converter = HL7.HL7ValueConverters.VariableLongDateTime; + x.IsRequired(); + }); + Value(x => x.EndDateTime, 4, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.TransactionData, 5, x => x.IsRequired()); } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/EQUMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/EQUMap.cs index dfcb4d1bf..cd85f5fa1 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/EQUMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/EQUMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,8 +17,12 @@ public EQUMap() Name = "Equipment Detail"; - Entity(x => x.EquipmentInstanceIdentifier, 1, x => {x.Required = true;}); - Value(x => x.EventDateTime, 2, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;x.Required = true;}); + Entity(x => x.EquipmentInstanceIdentifier, 1, x => x.IsRequired()); + Value(x => x.EventDateTime, 2, x => + { + x.Converter = HL7.HL7ValueConverters.VariableLongDateTime; + x.IsRequired(); + }); Entity(x => x.EquipmentState, 3); Entity(x => x.LocalRemoteControlState, 4); Entity(x => x.AlertLevel, 5); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ERRMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ERRMap.cs index 94a9cf6ec..e944b6fda 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ERRMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ERRMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -19,8 +19,8 @@ public ERRMap() Entity(x => x.ErrorCodeAndLocation, 1); Entity(x => x.ErrorLocation, 2); - Entity(x => x.HL7ErrorCode, 3, x => {x.Required = true;}); - Value(x => x.Severity, 4, x => {x.Required = true;}); + Entity(x => x.HL7ErrorCode, 3, x => x.IsRequired()); + Value(x => x.Severity, 4, x => x.IsRequired()); Entity(x => x.ApplicationErrorCode, 5); Value(x => x.ApplicationErrorParameter, 6); Value(x => x.DiagnosticInformation, 7); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/EVNMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/EVNMap.cs index 9579d37c0..7b5b41063 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/EVNMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/EVNMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -18,11 +18,15 @@ public EVNMap() Name = "Event Type"; Value(x => x.EventTypeCode, 1); - Value(x => x.RecordedDateTime, 2, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;x.Required = true;}); - Value(x => x.DateTimePlannedEvent, 3, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.RecordedDateTime, 2, x => + { + x.Converter = HL7.HL7ValueConverters.VariableLongDateTime; + x.IsRequired(); + }); + Value(x => x.DateTimePlannedEvent, 3, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.EventReasonCode, 4); Entity(x => x.OperatorId, 5); - Value(x => x.EventOccurred, 6, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.EventOccurred, 6, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.EventFacility, 7); } } diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/FACMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/FACMap.cs index 0d043306e..b09dc63c4 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/FACMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/FACMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,15 +17,15 @@ public FACMap() Name = "Facility"; - Entity(x => x.FacilityId, 1, x => {x.Required = true;}); + Entity(x => x.FacilityId, 1, x => x.IsRequired()); Value(x => x.FacilityType, 2); - Entity(x => x.FacilityAddress, 3, x => {x.Required = true;}); - Entity(x => x.FacilityTelecommunication, 4, x => {x.Required = true;}); + Entity(x => x.FacilityAddress, 3, x => x.IsRequired()); + Entity(x => x.FacilityTelecommunication, 4, x => x.IsRequired()); Entity(x => x.ContactPerson, 5); Value(x => x.ContactTitle, 6); Entity(x => x.ContactAddress, 7); Entity(x => x.ContactTelecommunication, 8); - Entity(x => x.SignatureAuthority, 9, x => {x.Required = true;}); + Entity(x => x.SignatureAuthority, 9, x => x.IsRequired()); Value(x => x.SignatureAuthorityTitle, 10); Entity(x => x.SignatureAuthorityAddress, 11); Entity(x => x.SignatureAuthorityTelecommunication, 12); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/FHSMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/FHSMap.cs index 4bf54569e..e38240018 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/FHSMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/FHSMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,13 +17,13 @@ public FHSMap() Name = "File Header"; - Value(x => x.FileFieldSeparator, 1, x => {x.Required = true;}); - Value(x => x.FileEncodingCharacters, 2, x => {x.Required = true;}); + Value(x => x.FileFieldSeparator, 1, x => x.IsRequired()); + Value(x => x.FileEncodingCharacters, 2, x => x.IsRequired()); Entity(x => x.FileSendingApplication, 3); Entity(x => x.FileSendingFacility, 4); Entity(x => x.FileReceivingApplication, 5); Entity(x => x.FileReceivingFacility, 6); - Value(x => x.FileCreationDateTime, 7, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.FileCreationDateTime, 7, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.FileSecurity, 8); Value(x => x.FileNameId, 9); Value(x => x.FileHeaderComment, 10); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/FT1Map.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/FT1Map.cs index ba2627cb6..80119d212 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/FT1Map.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/FT1Map.cs @@ -1,53 +1,53 @@ // This file was automatically generated and may be regenerated at any // time. To ensure any changes are retained, modify the tool with any segment/component/group/field name -// or type changes. -namespace Machete.HL7Schema.V26.Maps -{ - using V26; - - /// - /// FT1 (SegmentMap) - Financial Transaction - /// - public class FT1Map : - HL7V26SegmentMap - { - public FT1Map() - { - Id = "FT1"; - - Name = "Financial Transaction"; - - Value(x => x.SetId, 1); - Value(x => x.TransactionId, 2); - Value(x => x.TransactionBatchId, 3); - Entity(x => x.TransactionDate, 4, x => {x.Required = true;}); - Value(x => x.TransactionPostingDate, 5, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.TransactionType, 6, x => {x.Required = true;}); - Entity(x => x.TransactionCode, 7, x => {x.Required = true;}); - Value(x => x.TransactionDescription, 8, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.TransactionDescriptionAlt, 9, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.TransactionQuantity, 10); - Entity(x => x.TransactionAmountExtended, 11); - Entity(x => x.TransactionAmountUnit, 12); - Entity(x => x.DepartmentCode, 13); - Entity(x => x.InsurancePlanId, 14); - Entity(x => x.InsuranceAmount, 15); - Entity(x => x.AssignedPatientLocation, 16); - Value(x => x.FeeSchedule, 17); - Value(x => x.PatientType, 18); - Entity(x => x.DiagnosiCode, 19); - Entity(x => x.PerformedByCode, 20); - Entity(x => x.OrderedByCode, 21); - Entity(x => x.UnitCost, 22); - Entity(x => x.FillerOrderNumber, 23); - Entity(x => x.EnteredByCode, 24); - Entity(x => x.ProcedureCode, 25); - Entity(x => x.ProcedureCodeModifier, 26); - Entity(x => x.AdvancedBeneficiaryNoticeCode, 27); - Entity(x => x.MedicallyNecessaryDuplicateProcedureReason, 28); - Entity(x => x.NDCCode, 29); - Entity(x => x.PaymentReferenceId, 30); - Value(x => x.TransactionReferenceKey, 31); - } - } +// or type changes. +namespace Machete.HL7Schema.V26.Maps +{ + using V26; + + /// + /// FT1 (SegmentMap) - Financial Transaction + /// + public class FT1Map : + HL7V26SegmentMap + { + public FT1Map() + { + Id = "FT1"; + + Name = "Financial Transaction"; + + Value(x => x.SetId, 1); + Value(x => x.TransactionId, 2); + Value(x => x.TransactionBatchId, 3); + Entity(x => x.TransactionDate, 4, x => {x.Required = true;}); + Value(x => x.TransactionPostingDate, 5, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.TransactionType, 6, x => {x.Required = true;}); + Entity(x => x.TransactionCode, 7, x => {x.Required = true;}); + Value(x => x.TransactionDescription, 8, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.TransactionDescriptionAlt, 9, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.TransactionQuantity, 10); + Entity(x => x.TransactionAmountExtended, 11); + Entity(x => x.TransactionAmountUnit, 12); + Entity(x => x.DepartmentCode, 13); + Entity(x => x.InsurancePlanId, 14); + Entity(x => x.InsuranceAmount, 15); + Entity(x => x.AssignedPatientLocation, 16); + Value(x => x.FeeSchedule, 17); + Value(x => x.PatientType, 18); + Entity(x => x.DiagnosisCode, 19); + Entity(x => x.PerformedByCode, 20); + Entity(x => x.OrderedByCode, 21); + Entity(x => x.UnitCost, 22); + Entity(x => x.FillerOrderNumber, 23); + Entity(x => x.EnteredByCode, 24); + Entity(x => x.ProcedureCode, 25); + Entity(x => x.ProcedureCodeModifier, 26); + Entity(x => x.AdvancedBeneficiaryNoticeCode, 27); + Entity(x => x.MedicallyNecessaryDuplicateProcedureReason, 28); + Entity(x => x.NDCCode, 29); + Entity(x => x.PaymentReferenceId, 30); + Value(x => x.TransactionReferenceKey, 31); + } + } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/GOLMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/GOLMap.cs index 7a1198bc7..6593f5600 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/GOLMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/GOLMap.cs @@ -1,44 +1,44 @@ // This file was automatically generated and may be regenerated at any // time. To ensure any changes are retained, modify the tool with any segment/component/group/field name -// or type changes. -namespace Machete.HL7Schema.V26.Maps -{ - using V26; - - /// - /// GOL (SegmentMap) - Goal Detail - /// - public class GOLMap : - HL7V26SegmentMap - { - public GOLMap() - { - Id = "GOL"; - - Name = "Goal Detail"; - - Value(x => x.ActionCode, 1, x => {x.Required = true;}); - Value(x => x.ActionDateTime, 2, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;x.Required = true;}); - Entity(x => x.GoalId, 3, x => {x.Required = true;}); - Entity(x => x.GoalInstanceId, 4, x => {x.Required = true;}); - Entity(x => x.EpisodeOfCareId, 5); - Value(x => x.GoalListPriority, 6); - Value(x => x.GoalEstablishedDateTime, 7, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.ExpectedGoalAchieveDateTime, 8, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Entity(x => x.GoalClassification, 9); - Entity(x => x.GoalManagementDiscipline, 10); - Entity(x => x.CurrentGoalReviewStatus, 11); - Value(x => x.CurrentGoalReviewDateTime, 12, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.NextGoalReviewDateTime, 13, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.PreviouGoalReviewDateTime, 14, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Entity(x => x.GoalReviewInterval, 15); - Entity(x => x.GoalEvaluation, 16); - Value(x => x.GoalEvaluationComment, 17); - Entity(x => x.GoalLifeCycleStatus, 18); - Value(x => x.GoalLifeCycleStatusDateTime, 19, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Entity(x => x.GoalTargetType, 20); - Entity(x => x.GoalTargetName, 21); - Entity(x => x.MoodCode, 22); - } - } +// or type changes. +namespace Machete.HL7Schema.V26.Maps +{ + using V26; + + /// + /// GOL (SegmentMap) - Goal Detail + /// + public class GOLMap : + HL7V26SegmentMap + { + public GOLMap() + { + Id = "GOL"; + + Name = "Goal Detail"; + + Value(x => x.ActionCode, 1, x => {x.Required = true;}); + Value(x => x.ActionDateTime, 2, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;x.Required = true;}); + Entity(x => x.GoalId, 3, x => {x.Required = true;}); + Entity(x => x.GoalInstanceId, 4, x => {x.Required = true;}); + Entity(x => x.EpisodeOfCareId, 5); + Value(x => x.GoalListPriority, 6); + Value(x => x.GoalEstablishedDateTime, 7, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.ExpectedGoalAchieveDateTime, 8, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Entity(x => x.GoalClassification, 9); + Entity(x => x.GoalManagementDiscipline, 10); + Entity(x => x.CurrentGoalReviewStatus, 11); + Value(x => x.CurrentGoalReviewDateTime, 12, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.NextGoalReviewDateTime, 13, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.PreviousGoalReviewDateTime, 14, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Entity(x => x.GoalReviewInterval, 15); + Entity(x => x.GoalEvaluation, 16); + Value(x => x.GoalEvaluationComment, 17); + Entity(x => x.GoalLifeCycleStatus, 18); + Value(x => x.GoalLifeCycleStatusDateTime, 19, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Entity(x => x.GoalTargetType, 20); + Entity(x => x.GoalTargetName, 21); + Entity(x => x.MoodCode, 22); + } + } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/GP1Map.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/GP1Map.cs index cdc0f2621..0fd2addb3 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/GP1Map.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/GP1Map.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,7 +17,7 @@ public GP1Map() Name = "Grouping/Reimbursement - Visit"; - Value(x => x.TypeOfBillCode, 1, x => {x.Required = true;}); + Value(x => x.TypeOfBillCode, 1, x => x.IsRequired()); Value(x => x.RevenueCode, 2); Value(x => x.OverallClaimDispositionCode, 3); Value(x => x.OCEEditPerVisitCode, 4); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/GT1Map.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/GT1Map.cs index 525e08614..bda761802 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/GT1Map.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/GT1Map.cs @@ -1,79 +1,79 @@ // This file was automatically generated and may be regenerated at any // time. To ensure any changes are retained, modify the tool with any segment/component/group/field name -// or type changes. -namespace Machete.HL7Schema.V26.Maps -{ - using V26; - - /// - /// GT1 (SegmentMap) - Guarantor - /// - public class GT1Map : - HL7V26SegmentMap - { - public GT1Map() - { - Id = "GT1"; - - Name = "Guarantor"; - - Value(x => x.SetId, 1, x => {x.Required = true;}); - Entity(x => x.GuarantorNumber, 2); - Entity(x => x.GuarantorName, 3, x => {x.Required = true;}); - Entity(x => x.GuarantorSpouseName, 4); - Entity(x => x.GuarantorAddress, 5); - Entity(x => x.GuarantorPhNumHome, 6); - Entity(x => x.GuarantorPhNumBusiness, 7); - Value(x => x.GuarantorDateTimeOfBirth, 8, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.GuarantorAdministrativeSex, 9); - Value(x => x.GuarantorType, 10); - Entity(x => x.GuarantorRelationship, 11); - Value(x => x.GuarantorSSN, 12); - Value(x => x.GuarantorDateBegin, 13, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.GuarantorDateEnd, 14, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.GuarantorPriority, 15); - Entity(x => x.GuarantorEmployerName, 16); - Entity(x => x.GuarantorEmployerAddress, 17); - Entity(x => x.GuarantorEmployerPhoneNumber, 18); - Entity(x => x.GuarantorEmployeeIdNumber, 19); - Value(x => x.GuarantorEmploymentStatus, 20); - Entity(x => x.GuarantorOrganizationName, 21); - Value(x => x.GuarantorBillingHoldFlag, 22); - Entity(x => x.GuarantorCreditRatingCode, 23); - Value(x => x.GuarantorDeathDateAndTime, 24, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.GuarantorDeathFlag, 25); - Entity(x => x.GuarantorChargeAdjustmentCode, 26); - Entity(x => x.GuarantorHouseholdAnnualIncome, 27); - Value(x => x.GuarantorHouseholdSize, 28); - Entity(x => x.GuarantorEmployerIdNumber, 29); - Entity(x => x.GuarantorMaritalStatusCode, 30); - Value(x => x.GuarantorHireEffectiveDate, 31, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.EmploymentStopDate, 32, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.LivingDependency, 33); - Value(x => x.AmbulatoryStatus, 34); - Entity(x => x.Citizenship, 35); - Entity(x => x.PrimaryLanguage, 36); - Value(x => x.LivingArrangement, 37); - Entity(x => x.PublicityCode, 38); - Value(x => x.ProtectionIndicator, 39); - Value(x => x.StudentIndicator, 40); - Entity(x => x.Religion, 41); - Entity(x => x.MotherSMaidenName, 42); - Entity(x => x.Nationality, 43); - Entity(x => x.EthnicGroup, 44); - Entity(x => x.ContactPersonSName, 45); - Entity(x => x.ContactPersonSTelephoneNumber, 46); - Entity(x => x.ContactReason, 47); - Value(x => x.ContactRelationship, 48); - Value(x => x.JobTitle, 49); - Entity(x => x.JobCodeClass, 50); - Entity(x => x.GuarantorEmployerSOrganizationName, 51); - Value(x => x.Handicap, 52); - Value(x => x.JobStatus, 53); - Entity(x => x.GuarantorFinancialClass, 54); - Entity(x => x.GuarantorRace, 55); - Value(x => x.GuarantorBirthPlace, 56); - Value(x => x.VIPIndicator, 57); - } - } +// or type changes. +namespace Machete.HL7Schema.V26.Maps +{ + using V26; + + /// + /// GT1 (SegmentMap) - Guarantor + /// + public class GT1Map : + HL7V26SegmentMap + { + public GT1Map() + { + Id = "GT1"; + + Name = "Guarantor"; + + Value(x => x.SetId, 1, x => {x.Required = true;}); + Entity(x => x.GuarantorNumber, 2); + Entity(x => x.GuarantorName, 3, x => {x.Required = true;}); + Entity(x => x.GuarantorSpouseName, 4); + Entity(x => x.GuarantorAddress, 5); + Entity(x => x.GuarantorPhNumHome, 6); + Entity(x => x.GuarantorPhNumBusiness, 7); + Value(x => x.GuarantorDateTimeOfBirth, 8, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.GuarantorAdministrativeSex, 9); + Value(x => x.GuarantorType, 10); + Entity(x => x.GuarantorRelationship, 11); + Value(x => x.GuarantorSSN, 12); + Value(x => x.GuarantorDateBegin, 13, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.GuarantorDateEnd, 14, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.GuarantorPriority, 15); + Entity(x => x.GuarantorEmployerName, 16); + Entity(x => x.GuarantorEmployerAddress, 17); + Entity(x => x.GuarantorEmployerPhoneNumber, 18); + Entity(x => x.GuarantorEmployeeIdNumber, 19); + Value(x => x.GuarantorEmploymentStatus, 20); + Entity(x => x.GuarantorOrganizationName, 21); + Value(x => x.GuarantorBillingHoldFlag, 22); + Entity(x => x.GuarantorCreditRatingCode, 23); + Value(x => x.GuarantorDeathDateAndTime, 24, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.GuarantorDeathFlag, 25); + Entity(x => x.GuarantorChargeAdjustmentCode, 26); + Entity(x => x.GuarantorHouseholdAnnualIncome, 27); + Value(x => x.GuarantorHouseholdSize, 28); + Entity(x => x.GuarantorEmployerIdNumber, 29); + Entity(x => x.GuarantorMaritalStatusCode, 30); + Value(x => x.GuarantorHireEffectiveDate, 31, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.EmploymentStopDate, 32, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.LivingDependency, 33); + Value(x => x.AmbulatoryStatus, 34); + Entity(x => x.Citizenship, 35); + Entity(x => x.PrimaryLanguage, 36); + Value(x => x.LivingArrangement, 37); + Entity(x => x.PublicityCode, 38); + Value(x => x.ProtectionIndicator, 39); + Value(x => x.StudentIndicator, 40); + Entity(x => x.Religion, 41); + Entity(x => x.MotherMaidenName, 42); + Entity(x => x.Nationality, 43); + Entity(x => x.EthnicGroup, 44); + Entity(x => x.ContactPersonSName, 45); + Entity(x => x.ContactPersonTelephoneNumber, 46); + Entity(x => x.ContactReason, 47); + Value(x => x.ContactRelationship, 48); + Value(x => x.JobTitle, 49); + Entity(x => x.JobCodeClass, 50); + Entity(x => x.GuarantorEmployerOrganizationName, 51); + Value(x => x.Handicap, 52); + Value(x => x.JobStatus, 53); + Entity(x => x.GuarantorFinancialClass, 54); + Entity(x => x.GuarantorRace, 55); + Value(x => x.GuarantorBirthPlace, 56); + Value(x => x.VIPIndicator, 57); + } + } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/IAMMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/IAMMap.cs index 129a6eebe..5fa7bce0c 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/IAMMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/IAMMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,26 +17,26 @@ public IAMMap() Name = "Patient Adverse Reaction Information"; - Value(x => x.SetId, 1, x => {x.Required = true;}); + Value(x => x.SetId, 1, x => x.IsRequired()); Entity(x => x.AllergenTypeCode, 2); - Entity(x => x.AllergenCodeMnemonicDescription, 3, x => {x.Required = true;}); + Entity(x => x.AllergenCodeMnemonicDescription, 3, x => x.IsRequired()); Entity(x => x.AllergySeverityCode, 4); Value(x => x.AllergyReactionCode, 5); - Entity(x => x.AllergyActionCode, 6, x => {x.Required = true;}); + Entity(x => x.AllergyActionCode, 6, x => x.IsRequired()); Entity(x => x.AllergyUniqueIdentifier, 7); Value(x => x.ActionReason, 8); Entity(x => x.SensitivityToCausativeAgentCode, 9); Entity(x => x.AllergenGroupCodeMnemonicDescription, 10); - Value(x => x.OnsetDate, 11, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.OnsetDate, 11, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.OnsetDateText, 12); - Value(x => x.ReportedDateTime, 13, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.ReportedDateTime, 13, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.ReportedBy, 14); Entity(x => x.RelationshipToPatientCode, 15); Entity(x => x.AlertDeviceCode, 16); Entity(x => x.AllergyClinicalStatusCode, 17); Entity(x => x.StatusedByPerson, 18); Entity(x => x.StatusedByOrganization, 19); - Value(x => x.StatusedAtDateTime, 20, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.StatusedAtDateTime, 20, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/IIMMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/IIMMap.cs index dece79e43..5cc11810f 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/IIMMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/IIMMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,17 +17,17 @@ public IIMMap() Name = "Inventory Item Master"; - Entity(x => x.PrimaryKeyValue, 1, x => {x.Required = true;}); - Entity(x => x.ServiceItemCode, 2, x => {x.Required = true;}); + Entity(x => x.PrimaryKeyValue, 1, x => x.IsRequired()); + Entity(x => x.ServiceItemCode, 2, x => x.IsRequired()); Value(x => x.InventoryLotNumber, 3); - Value(x => x.InventoryExpirationDate, 4, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.InventoryExpirationDate, 4, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.InventoryManufacturerName, 5); Entity(x => x.InventoryLocation, 6); - Value(x => x.InventoryReceivedDate, 7, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.InventoryReceivedDate, 7, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.InventoryReceivedQuantity, 8); Entity(x => x.InventoryReceivedQuantityUnit, 9); Entity(x => x.InventoryReceivedItemCost, 10); - Value(x => x.InventoryOnHandDate, 11, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.InventoryOnHandDate, 11, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.InventoryOnHandQuantity, 12); Entity(x => x.InventoryOnHandQuantityUnit, 13); Entity(x => x.ProcedureCode, 14); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ILTMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ILTMap.cs index 145e994e9..1ee2a3dd0 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ILTMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ILTMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,14 +17,14 @@ public ILTMap() Name = "Material Lot"; - Value(x => x.SetId, 1, x => {x.Required = true;}); - Value(x => x.InventoryLotNumber, 2, x => {x.Required = true;}); - Value(x => x.InventoryExpirationDate, 3, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.InventoryReceivedDate, 4, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.SetId, 1, x => x.IsRequired()); + Value(x => x.InventoryLotNumber, 2, x => x.IsRequired()); + Value(x => x.InventoryExpirationDate, 3, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.InventoryReceivedDate, 4, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.InventoryReceivedQuantity, 5); Entity(x => x.InventoryReceivedQuantityUnit, 6); Entity(x => x.InventoryReceivedItemCost, 7); - Value(x => x.InventoryOnHandDate, 8, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.InventoryOnHandDate, 8, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.InventoryOnHandQuantity, 9); Entity(x => x.InventoryOnHandQuantityUnit, 10); } diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/IN1Map.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/IN1Map.cs index f745a0562..79bd94a94 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/IN1Map.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/IN1Map.cs @@ -1,75 +1,75 @@ // This file was automatically generated and may be regenerated at any // time. To ensure any changes are retained, modify the tool with any segment/component/group/field name -// or type changes. -namespace Machete.HL7Schema.V26.Maps -{ - using V26; - - /// - /// IN1 (SegmentMap) - Insurance - /// - public class IN1Map : - HL7V26SegmentMap - { - public IN1Map() - { - Id = "IN1"; - - Name = "Insurance"; - - Value(x => x.SetId, 1, x => {x.Required = true;}); - Entity(x => x.InsurancePlanId, 2, x => {x.Required = true;}); - Entity(x => x.InsuranceCompanyId, 3, x => {x.Required = true;}); - Entity(x => x.InsuranceCompanyName, 4); - Entity(x => x.InsuranceCompanyAddress, 5); - Entity(x => x.InsuranceCoContactPerson, 6); - Entity(x => x.InsuranceCoPhoneNumber, 7); - Value(x => x.GroupNumber, 8); - Entity(x => x.GroupName, 9); - Entity(x => x.InsuredSGroupEmpId, 10); - Entity(x => x.InsuredSGroupEmpName, 11); - Value(x => x.PlanEffectiveDate, 12, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.PlanExpirationDate, 13, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Entity(x => x.AuthorizationInformation, 14); - Value(x => x.PlanType, 15); - Entity(x => x.NameOfInsured, 16); - Entity(x => x.InsuredSRelationshipToPatient, 17); - Value(x => x.InsuredSDateOfBirth, 18, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Entity(x => x.InsuredSAddress, 19); - Value(x => x.AssignmentOfBenefits, 20); - Value(x => x.CoordinationOfBenefits, 21); - Value(x => x.CoordOfBenPriority, 22); - Value(x => x.NoticeOfAdmissionFlag, 23); - Value(x => x.NoticeOfAdmissionDate, 24, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.ReportOfEligibilityFlag, 25); - Value(x => x.ReportOfEligibilityDate, 26, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.ReleaseInformationCode, 27); - Value(x => x.PreAdmitCert, 28); - Value(x => x.VerificationDateTime, 29, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Entity(x => x.VerificationBy, 30); - Value(x => x.TypeOfAgreementCode, 31); - Value(x => x.BillingStatus, 32); - Value(x => x.LifetimeReserveDays, 33); - Value(x => x.DelayBeforeLRDay, 34); - Value(x => x.CompanyPlanCode, 35); - Value(x => x.PolicyNumber, 36); - Entity(x => x.PolicyDeductible, 37); - Value(x => x.PolicyLimitAmount, 38, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.PolicyLimitDays, 39); - Value(x => x.RoomRateSemiPrivate, 40, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.RoomRatePrivate, 41, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Entity(x => x.InsuredSEmploymentStatus, 42); - Value(x => x.InsuredSAdministrativeSex, 43); - Entity(x => x.InsuredSEmployerSAddress, 44); - Value(x => x.VerificationStatus, 45); - Value(x => x.PriorInsurancePlanId, 46); - Value(x => x.CoverageType, 47); - Value(x => x.Handicap, 48); - Entity(x => x.InsuredSIdNumber, 49); - Value(x => x.SignatureCode, 50); - Value(x => x.SignatureCodeDate, 51, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.InsuredSBirthPlace, 52); - Value(x => x.VIPIndicator, 53); - } - } +// or type changes. +namespace Machete.HL7Schema.V26.Maps +{ + using V26; + + /// + /// IN1 (SegmentMap) - Insurance + /// + public class IN1Map : + HL7V26SegmentMap + { + public IN1Map() + { + Id = "IN1"; + + Name = "Insurance"; + + Value(x => x.SetId, 1, x => {x.Required = true;}); + Entity(x => x.InsurancePlanId, 2, x => {x.Required = true;}); + Entity(x => x.InsuranceCompanyId, 3, x => {x.Required = true;}); + Entity(x => x.InsuranceCompanyName, 4); + Entity(x => x.InsuranceCompanyAddress, 5); + Entity(x => x.InsuranceCompanyContactPerson, 6); + Entity(x => x.InsuranceCompanyPhoneNumber, 7); + Value(x => x.GroupNumber, 8); + Entity(x => x.GroupName, 9); + Entity(x => x.InsuredGroupEmployerId, 10); + Entity(x => x.InsuredGroupEmployerName, 11); + Value(x => x.PlanEffectiveDate, 12, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.PlanExpirationDate, 13, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Entity(x => x.AuthorizationInformation, 14); + Value(x => x.PlanType, 15); + Entity(x => x.NameOfInsured, 16); + Entity(x => x.InsuredRelationshipToPatient, 17); + Value(x => x.InsuredDateOfBirth, 18, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Entity(x => x.InsuredSAddress, 19); + Value(x => x.AssignmentOfBenefits, 20); + Value(x => x.CoordinationOfBenefits, 21); + Value(x => x.CoordinationOfBenefitPriority, 22); + Value(x => x.NoticeOfAdmissionFlag, 23); + Value(x => x.NoticeOfAdmissionDate, 24, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.ReportOfEligibilityFlag, 25); + Value(x => x.ReportOfEligibilityDate, 26, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.ReleaseInformationCode, 27); + Value(x => x.PreAdmitCert, 28); + Value(x => x.VerificationDateTime, 29, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Entity(x => x.VerificationBy, 30); + Value(x => x.TypeOfAgreementCode, 31); + Value(x => x.BillingStatus, 32); + Value(x => x.LifetimeReserveDays, 33); + Value(x => x.DelayBeforeLRDay, 34); + Value(x => x.CompanyPlanCode, 35); + Value(x => x.PolicyNumber, 36); + Entity(x => x.PolicyDeductible, 37); + Value(x => x.PolicyLimitAmount, 38, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.PolicyLimitDays, 39); + Value(x => x.RoomRateSemiPrivate, 40, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.RoomRatePrivate, 41, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Entity(x => x.InsuredEmploymentStatus, 42); + Value(x => x.InsuredAdministrativeSex, 43); + Entity(x => x.InsuredEmployerAddress, 44); + Value(x => x.VerificationStatus, 45); + Value(x => x.PriorInsurancePlanId, 46); + Value(x => x.CoverageType, 47); + Value(x => x.Handicap, 48); + Entity(x => x.InsuredIdNumber, 49); + Value(x => x.SignatureCode, 50); + Value(x => x.SignatureCodeDate, 51, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.InsuredBirthPlace, 52); + Value(x => x.VIPIndicator, 53); + } + } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/IN2Map.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/IN2Map.cs index ce74ec44a..06d141ced 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/IN2Map.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/IN2Map.cs @@ -1,94 +1,94 @@ // This file was automatically generated and may be regenerated at any // time. To ensure any changes are retained, modify the tool with any segment/component/group/field name -// or type changes. -namespace Machete.HL7Schema.V26.Maps -{ - using V26; - - /// - /// IN2 (SegmentMap) - Insurance Additional Information - /// - public class IN2Map : - HL7V26SegmentMap - { - public IN2Map() - { - Id = "IN2"; - - Name = "Insurance Additional Information"; - - Entity(x => x.InsuredSEmployeeId, 1); - Value(x => x.InsuredSSocialSecurityNumber, 2); - Entity(x => x.InsuredSEmployerSNameAndId, 3); - Value(x => x.EmployerInformationData, 4); - Value(x => x.MailClaimParty, 5); - Value(x => x.MedicareHealthInsCardNumber, 6); - Entity(x => x.MedicaidCaseName, 7); - Value(x => x.MedicaidCaseNumber, 8); - Entity(x => x.MilitarySponsorName, 9); - Value(x => x.MilitaryIdNumber, 10); - Entity(x => x.DependentOfMilitaryRecipient, 11); - Value(x => x.MilitaryOrganization, 12); - Value(x => x.MilitaryStation, 13); - Value(x => x.MilitaryService, 14); - Value(x => x.MilitaryRankGrade, 15); - Value(x => x.MilitaryStatus, 16); - Value(x => x.MilitaryRetireDate, 17, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.MilitaryNonAvailCertOnFile, 18); - Value(x => x.BabyCoverage, 19); - Value(x => x.CombineBabyBill, 20); - Value(x => x.BloodDeductible, 21); - Entity(x => x.SpecialCoverageApprovalName, 22); - Value(x => x.SpecialCoverageApprovalTitle, 23); - Value(x => x.NonCoveredInsuranceCode, 24); - Entity(x => x.PayorId, 25); - Entity(x => x.PayorSubscriberId, 26); - Value(x => x.EligibilitySource, 27); - Entity(x => x.RoomCoverageTypeAmount, 28); - Entity(x => x.PolicyTypeAmount, 29); - Entity(x => x.DailyDeductible, 30); - Value(x => x.LivingDependency, 31); - Value(x => x.AmbulatoryStatus, 32); - Entity(x => x.Citizenship, 33); - Entity(x => x.PrimaryLanguage, 34); - Value(x => x.LivingArrangement, 35); - Entity(x => x.PublicityCode, 36); - Value(x => x.ProtectionIndicator, 37); - Value(x => x.StudentIndicator, 38); - Entity(x => x.Religion, 39); - Entity(x => x.MotherSMaidenName, 40); - Entity(x => x.Nationality, 41); - Entity(x => x.EthnicGroup, 42); - Entity(x => x.MaritalStatus, 43); - Value(x => x.InsuredSEmploymentStartDate, 44, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.EmploymentStopDate, 45, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.JobTitle, 46); - Entity(x => x.JobCodeClass, 47); - Value(x => x.JobStatus, 48); - Entity(x => x.EmployerContactPersonName, 49); - Entity(x => x.EmployerContactPersonPhoneNumber, 50); - Value(x => x.EmployerContactReason, 51); - Entity(x => x.InsuredSContactPersonSName, 52); - Entity(x => x.InsuredSContactPersonPhoneNumber, 53); - Value(x => x.InsuredSContactPersonReason, 54); - Value(x => x.RelationshipToPatientStartDate, 55, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.RelationshipToPatientStopDate, 56, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.InsuranceCoContactReason, 57); - Entity(x => x.InsuranceCoContactPhoneNumber, 58); - Value(x => x.PolicyScope, 59); - Value(x => x.PolicySource, 60); - Entity(x => x.PatientMemberNumber, 61); - Entity(x => x.GuarantorSRelationshipToInsured, 62); - Entity(x => x.InsuredSPhoneNumberHome, 63); - Entity(x => x.InsuredSEmployerPhoneNumber, 64); - Entity(x => x.MilitaryHandicappedProgram, 65); - Value(x => x.SuspendFlag, 66); - Value(x => x.CopayLimitFlag, 67); - Value(x => x.StoploLimitFlag, 68); - Entity(x => x.InsuredOrganizationNameAndId, 69); - Entity(x => x.InsuredEmployerOrganizationNameAndId, 70); - Entity(x => x.Race, 71); - Entity(x => x.PatientSRelationshipToInsured, 72); - } - } +// or type changes. +namespace Machete.HL7Schema.V26.Maps +{ + using V26; + + /// + /// IN2 (SegmentMap) - Insurance Additional Information + /// + public class IN2Map : + HL7V26SegmentMap + { + public IN2Map() + { + Id = "IN2"; + + Name = "Insurance Additional Information"; + + Entity(x => x.InsuredEmployeeId, 1); + Value(x => x.InsuredSocialSecurityNumber, 2); + Entity(x => x.InsuredEmployerNameAndId, 3); + Value(x => x.EmployerInformationData, 4); + Value(x => x.MailClaimParty, 5); + Value(x => x.MedicareHealthInsCardNumber, 6); + Entity(x => x.MedicaidCaseName, 7); + Value(x => x.MedicaidCaseNumber, 8); + Entity(x => x.MilitarySponsorName, 9); + Value(x => x.MilitaryIdNumber, 10); + Entity(x => x.DependentOfMilitaryRecipient, 11); + Value(x => x.MilitaryOrganization, 12); + Value(x => x.MilitaryStation, 13); + Value(x => x.MilitaryService, 14); + Value(x => x.MilitaryRankGrade, 15); + Value(x => x.MilitaryStatus, 16); + Value(x => x.MilitaryRetireDate, 17, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.MilitaryNonAvailCertOnFile, 18); + Value(x => x.BabyCoverage, 19); + Value(x => x.CombineBabyBill, 20); + Value(x => x.BloodDeductible, 21); + Entity(x => x.SpecialCoverageApprovalName, 22); + Value(x => x.SpecialCoverageApprovalTitle, 23); + Value(x => x.NonCoveredInsuranceCode, 24); + Entity(x => x.PayorId, 25); + Entity(x => x.PayorSubscriberId, 26); + Value(x => x.EligibilitySource, 27); + Entity(x => x.RoomCoverageTypeAmount, 28); + Entity(x => x.PolicyTypeAmount, 29); + Entity(x => x.DailyDeductible, 30); + Value(x => x.LivingDependency, 31); + Value(x => x.AmbulatoryStatus, 32); + Entity(x => x.Citizenship, 33); + Entity(x => x.PrimaryLanguage, 34); + Value(x => x.LivingArrangement, 35); + Entity(x => x.PublicityCode, 36); + Value(x => x.ProtectionIndicator, 37); + Value(x => x.StudentIndicator, 38); + Entity(x => x.Religion, 39); + Entity(x => x.MotherMaidenName, 40); + Entity(x => x.Nationality, 41); + Entity(x => x.EthnicGroup, 42); + Entity(x => x.MaritalStatus, 43); + Value(x => x.InsuredEmploymentStartDate, 44, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.EmploymentStopDate, 45, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.JobTitle, 46); + Entity(x => x.JobCodeClass, 47); + Value(x => x.JobStatus, 48); + Entity(x => x.EmployerContactPersonName, 49); + Entity(x => x.EmployerContactPersonPhoneNumber, 50); + Value(x => x.EmployerContactReason, 51); + Entity(x => x.InsuredContactPersonSName, 52); + Entity(x => x.InsuredContactPersonPhoneNumber, 53); + Value(x => x.InsuredContactPersonReason, 54); + Value(x => x.RelationshipToPatientStartDate, 55, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.RelationshipToPatientStopDate, 56, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.InsuranceCompanyContactReason, 57); + Entity(x => x.InsuranceCompanyContactPhoneNumber, 58); + Value(x => x.PolicyScope, 59); + Value(x => x.PolicySource, 60); + Entity(x => x.PatientMemberNumber, 61); + Entity(x => x.GuarantorRelationshipToInsured, 62); + Entity(x => x.InsuredPhoneNumberHome, 63); + Entity(x => x.InsuredEmployerPhoneNumber, 64); + Entity(x => x.MilitaryHandicappedProgram, 65); + Value(x => x.SuspendFlag, 66); + Value(x => x.CopayLimitFlag, 67); + Value(x => x.StopLossLimitFlag, 68); + Entity(x => x.InsuredOrganizationNameAndId, 69); + Entity(x => x.InsuredEmployerOrganizationNameAndId, 70); + Entity(x => x.Race, 71); + Entity(x => x.PatientRelationshipToInsured, 72); + } + } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/IN3Map.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/IN3Map.cs index 2dfef949c..120599889 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/IN3Map.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/IN3Map.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,19 +17,19 @@ public IN3Map() Name = "Insurance Additional Information, Certification"; - Value(x => x.SetId, 1, x => {x.Required = true;}); + Value(x => x.SetId, 1, x => x.IsRequired()); Entity(x => x.CertificationNumber, 2); Entity(x => x.CertifiedBy, 3); Value(x => x.CertificationRequired, 4); Entity(x => x.Penalty, 5); - Value(x => x.CertificationDateTime, 6, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.CertificationModifyDateTime, 7, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.CertificationDateTime, 6, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.CertificationModifyDateTime, 7, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.Operator, 8); - Value(x => x.CertificationBeginDate, 9, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.CertificationEndDate, 10, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.CertificationBeginDate, 9, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.CertificationEndDate, 10, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.Days, 11); Entity(x => x.NonConcurCodeDescription, 12); - Value(x => x.NonConcurEffectiveDateTime, 13, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.NonConcurEffectiveDateTime, 13, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.PhysicianReviewer, 14); Value(x => x.CertificationContact, 15); Entity(x => x.CertificationContactPhoneNumber, 16); @@ -38,7 +38,7 @@ public IN3Map() Entity(x => x.CertificationAgencyPhoneNumber, 19); Entity(x => x.PreCertificationRequirement, 20); Value(x => x.CaseManager, 21); - Value(x => x.SecondOpinionDate, 22, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.SecondOpinionDate, 22, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.SecondOpinionStatus, 23); Value(x => x.SecondOpinionDocumentationReceived, 24); Entity(x => x.SecondOpinionPhysician, 25); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/INVMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/INVMap.cs index 8928451ed..4450e17d5 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/INVMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/INVMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,8 +17,8 @@ public INVMap() Name = "Inventory Detail"; - Entity(x => x.SubstanceIdentifier, 1, x => {x.Required = true;}); - Entity(x => x.SubstanceStatus, 2, x => {x.Required = true;}); + Entity(x => x.SubstanceIdentifier, 1, x => x.IsRequired()); + Entity(x => x.SubstanceStatus, 2, x => x.IsRequired()); Entity(x => x.SubstanceType, 3); Entity(x => x.InventoryContainerIdentifier, 4); Entity(x => x.ContainerCarrierIdentifier, 5); @@ -28,8 +28,8 @@ public INVMap() Value(x => x.AvailableQuantity, 9); Value(x => x.ConsumptionQuantity, 10); Entity(x => x.QuantityUnits, 11); - Value(x => x.ExpirationDateTime, 12, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.FirstUsedDateTime, 13, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.ExpirationDateTime, 12, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.FirstUsedDateTime, 13, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.OnBoardStabilityDuration, 14); Entity(x => x.TestFluidIdentifierS, 15); Value(x => x.ManufacturerLotNumber, 16); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/IPCMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/IPCMap.cs index ad209370b..fe7170ade 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/IPCMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/IPCMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,10 +17,10 @@ public IPCMap() Name = "Imaging Procedure Control Segment"; - Entity(x => x.AccessionIdentifier, 1, x => {x.Required = true;}); - Entity(x => x.RequestedProcedureId, 2, x => {x.Required = true;}); - Entity(x => x.StudyInstanceUId, 3, x => {x.Required = true;}); - Entity(x => x.ScheduledProcedureStepId, 4, x => {x.Required = true;}); + Entity(x => x.AccessionIdentifier, 1, x => x.IsRequired()); + Entity(x => x.RequestedProcedureId, 2, x => x.IsRequired()); + Entity(x => x.StudyInstanceUId, 3, x => x.IsRequired()); + Entity(x => x.ScheduledProcedureStepId, 4, x => x.IsRequired()); Entity(x => x.Modality, 5); Entity(x => x.ProtocolCode, 6); Entity(x => x.ScheduledStationName, 7); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/IPRMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/IPRMap.cs index 82b08bc1b..a458b4a67 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/IPRMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/IPRMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,14 +17,18 @@ public IPRMap() Name = "Invoice Processing Results"; - Entity(x => x.IPRIdentifier, 1, x => {x.Required = true;}); - Entity(x => x.ProviderCrossReferenceIdentifier, 2, x => {x.Required = true;}); - Entity(x => x.PayerCrossReferenceIdentifier, 3, x => {x.Required = true;}); - Entity(x => x.IPRStatus, 4, x => {x.Required = true;}); - Value(x => x.IPRDateTime, 5, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;x.Required = true;}); + Entity(x => x.IPRIdentifier, 1, x => x.IsRequired()); + Entity(x => x.ProviderCrossReferenceIdentifier, 2, x => x.IsRequired()); + Entity(x => x.PayerCrossReferenceIdentifier, 3, x => x.IsRequired()); + Entity(x => x.IPRStatus, 4, x => x.IsRequired()); + Value(x => x.IPRDateTime, 5, x => + { + x.Converter = HL7.HL7ValueConverters.VariableLongDateTime; + x.IsRequired(); + }); Entity(x => x.AdjudicatedPaidAmount, 6); - Value(x => x.ExpectedPaymentDateTime, 7, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.IPRChecksum, 8, x => {x.Required = true;}); + Value(x => x.ExpectedPaymentDateTime, 7, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.IPRChecksum, 8, x => x.IsRequired()); } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ISDMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ISDMap.cs index d0270b094..06879c073 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ISDMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ISDMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,9 +17,9 @@ public ISDMap() Name = "Interaction Status Detail"; - Value(x => x.ReferenceInteractionNumber, 1, x => {x.Required = true;}); + Value(x => x.ReferenceInteractionNumber, 1, x => x.IsRequired()); Entity(x => x.InteractionTypeIdentifier, 2); - Entity(x => x.InteractionActiveState, 3, x => {x.Required = true;}); + Entity(x => x.InteractionActiveState, 3, x => x.IsRequired()); } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ITMMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ITMMap.cs index b6a273b83..977064e16 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ITMMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ITMMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,7 +17,7 @@ public ITMMap() Name = "Material Item"; - Entity(x => x.ItemIdentifier, 1, x => {x.Required = true;}); + Entity(x => x.ItemIdentifier, 1, x => x.IsRequired()); Value(x => x.ItemDescription, 2); Entity(x => x.ItemStatus, 3); Entity(x => x.ItemType, 4); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/IVCMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/IVCMap.cs index c4f4171ab..b0250a4e4 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/IVCMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/IVCMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,20 +17,24 @@ public IVCMap() Name = "Invoice Segment"; - Entity(x => x.ProviderInvoiceNumber, 1, x => {x.Required = true;}); + Entity(x => x.ProviderInvoiceNumber, 1, x => x.IsRequired()); Entity(x => x.PayerInvoiceNumber, 2); Entity(x => x.ContractAgreementNumber, 3); - Value(x => x.InvoiceControl, 4, x => {x.Required = true;}); - Value(x => x.InvoiceReason, 5, x => {x.Required = true;}); - Value(x => x.InvoiceType, 6, x => {x.Required = true;}); - Value(x => x.InvoiceDateTime, 7, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;x.Required = true;}); - Entity(x => x.InvoiceAmount, 8, x => {x.Required = true;}); + Value(x => x.InvoiceControl, 4, x => x.IsRequired()); + Value(x => x.InvoiceReason, 5, x => x.IsRequired()); + Value(x => x.InvoiceType, 6, x => x.IsRequired()); + Value(x => x.InvoiceDateTime, 7, x => + { + x.Converter = HL7.HL7ValueConverters.VariableLongDateTime; + x.IsRequired(); + }); + Entity(x => x.InvoiceAmount, 8, x => x.IsRequired()); Value(x => x.PaymentTerms, 9); - Entity(x => x.ProviderOrganization, 10, x => {x.Required = true;}); - Entity(x => x.PayerOrganization, 11, x => {x.Required = true;}); + Entity(x => x.ProviderOrganization, 10, x => x.IsRequired()); + Entity(x => x.PayerOrganization, 11, x => x.IsRequired()); Entity(x => x.Attention, 12); Value(x => x.LastInvoiceIndicator, 13); - Value(x => x.InvoiceBookingPeriod, 14, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.InvoiceBookingPeriod, 14, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.Origin, 15); Entity(x => x.InvoiceFixedAmount, 16); Entity(x => x.SpecialCosts, 17); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/IVTMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/IVTMap.cs index eea5bf071..484282358 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/IVTMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/IVTMap.cs @@ -1,48 +1,48 @@ // This file was automatically generated and may be regenerated at any // time. To ensure any changes are retained, modify the tool with any segment/component/group/field name -// or type changes. -namespace Machete.HL7Schema.V26.Maps -{ - using V26; - - /// - /// IVT (SegmentMap) - Material Location - /// - public class IVTMap : - HL7V26SegmentMap - { - public IVTMap() - { - Id = "IVT"; - - Name = "Material Location"; - - Value(x => x.SetId, 1, x => {x.Required = true;}); - Entity(x => x.InventoryLocationIdentifier, 2, x => {x.Required = true;}); - Value(x => x.InventoryLocationName, 3); - Entity(x => x.SourceLocationIdentifier, 4); - Value(x => x.SourceLocationName, 5); - Entity(x => x.ItemStatus, 6); - Entity(x => x.BinLocationIdentifier, 7); - Entity(x => x.OrderPackaging, 8); - Entity(x => x.IssuePackaging, 9); - Entity(x => x.DefaultInventoryAssetAccount, 10); - Entity(x => x.PatientChargeableIndicator, 11); - Entity(x => x.TransactionCode, 12); - Entity(x => x.TransactionAmountUnit, 13); - Entity(x => x.ItemImportanceCode, 14); - Entity(x => x.StockedItemIndicator, 15); - Entity(x => x.ConsignmentItemIndicator, 16); - Entity(x => x.ReusableItemIndicator, 17); - Entity(x => x.ReusableCost, 18); - Entity(x => x.SubstituteItemIdentifier, 19); - Entity(x => x.LatexFreeSubstituteItemIdentifier, 20); - Entity(x => x.RecommendedReorderory, 21); - Value(x => x.RecommendedSafetyStockDays, 22); - Value(x => x.RecommendedMaximumDaysInventory, 23); - Value(x => x.RecommendedOrderPoint, 24); - Value(x => x.RecommendedOrderAmount, 25); - Entity(x => x.OperatingRoomParLevelIndicator, 26); - } - } +// or type changes. +namespace Machete.HL7Schema.V26.Maps +{ + using V26; + + /// + /// IVT (SegmentMap) - Material Location + /// + public class IVTMap : + HL7V26SegmentMap + { + public IVTMap() + { + Id = "IVT"; + + Name = "Material Location"; + + Value(x => x.SetId, 1, x => {x.Required = true;}); + Entity(x => x.InventoryLocationIdentifier, 2, x => {x.Required = true;}); + Value(x => x.InventoryLocationName, 3); + Entity(x => x.SourceLocationIdentifier, 4); + Value(x => x.SourceLocationName, 5); + Entity(x => x.ItemStatus, 6); + Entity(x => x.BinLocationIdentifier, 7); + Entity(x => x.OrderPackaging, 8); + Entity(x => x.IssuePackaging, 9); + Entity(x => x.DefaultInventoryAssetAccount, 10); + Entity(x => x.PatientChargeableIndicator, 11); + Entity(x => x.TransactionCode, 12); + Entity(x => x.TransactionAmountUnit, 13); + Entity(x => x.ItemImportanceCode, 14); + Entity(x => x.StockedItemIndicator, 15); + Entity(x => x.ConsignmentItemIndicator, 16); + Entity(x => x.ReusableItemIndicator, 17); + Entity(x => x.ReusableCost, 18); + Entity(x => x.SubstituteItemIdentifier, 19); + Entity(x => x.LatexFreeSubstituteItemIdentifier, 20); + Entity(x => x.RecommendedReorderTheory, 21); + Value(x => x.RecommendedSafetyStockDays, 22); + Value(x => x.RecommendedMaximumDaysInventory, 23); + Value(x => x.RecommendedOrderPoint, 24); + Value(x => x.RecommendedOrderAmount, 25); + Entity(x => x.OperatingRoomParLevelIndicator, 26); + } + } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/LANMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/LANMap.cs index 719e3e19a..c770f8f3d 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/LANMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/LANMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,8 +17,8 @@ public LANMap() Name = "Language Detail"; - Value(x => x.SetId, 1, x => {x.Required = true;}); - Entity(x => x.LanguageCode, 2, x => {x.Required = true;}); + Value(x => x.SetId, 1, x => x.IsRequired()); + Entity(x => x.LanguageCode, 2, x => x.IsRequired()); Entity(x => x.LanguageAbilityCode, 3); Entity(x => x.LanguageProficiencyCode, 4); } diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/LCCMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/LCCMap.cs index e4d618c98..1b5327f0c 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/LCCMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/LCCMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,10 +17,10 @@ public LCCMap() Name = "Location Charge Code"; - Entity(x => x.PrimaryKeyValue, 1, x => {x.Required = true;}); - Entity(x => x.LocationDepartment, 2, x => {x.Required = true;}); + Entity(x => x.PrimaryKeyValue, 1, x => x.IsRequired()); + Entity(x => x.LocationDepartment, 2, x => x.IsRequired()); Entity(x => x.AccommodationType, 3); - Entity(x => x.ChargeCode, 4, x => {x.Required = true;}); + Entity(x => x.ChargeCode, 4, x => x.IsRequired()); } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/LCHMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/LCHMap.cs index 0f6555f6e..cbbacafe0 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/LCHMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/LCHMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,11 +17,11 @@ public LCHMap() Name = "Location Characteristic"; - Entity(x => x.PrimaryKeyValue, 1, x => {x.Required = true;}); + Entity(x => x.PrimaryKeyValue, 1, x => x.IsRequired()); Value(x => x.SegmentActionCode, 2); Entity(x => x.SegmentUniqueKey, 3); - Entity(x => x.LocationCharacteristicId, 4, x => {x.Required = true;}); - Entity(x => x.LocationCharacteristicValue, 5, x => {x.Required = true;}); + Entity(x => x.LocationCharacteristicId, 4, x => x.IsRequired()); + Entity(x => x.LocationCharacteristicValue, 5, x => x.IsRequired()); } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/LDPMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/LDPMap.cs index 3ef34c51a..3c4efff9d 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/LDPMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/LDPMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,14 +17,14 @@ public LDPMap() Name = "Location Department"; - Entity(x => x.PrimaryKeyValue, 1, x => {x.Required = true;}); - Entity(x => x.LocationDepartment, 2, x => {x.Required = true;}); + Entity(x => x.PrimaryKeyValue, 1, x => x.IsRequired()); + Entity(x => x.LocationDepartment, 2, x => x.IsRequired()); Value(x => x.LocationService, 3); Entity(x => x.SpecialtyType, 4); Value(x => x.ValidPatientClasses, 5); Value(x => x.ActiveInactiveFlag, 6); - Value(x => x.ActivationDate, 7, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.InactivationDate, 8, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.ActivationDate, 7, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.InactivationDate, 8, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.InactivatedReason, 9); Entity(x => x.VisitingHours, 10); Entity(x => x.ContactPhone, 11); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/LOCMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/LOCMap.cs index b78417703..3a1b0e56a 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/LOCMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/LOCMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,9 +17,9 @@ public LOCMap() Name = "Location Identification"; - Entity(x => x.PrimaryKeyValue, 1, x => {x.Required = true;}); + Entity(x => x.PrimaryKeyValue, 1, x => x.IsRequired()); Value(x => x.LocationDescription, 2); - Value(x => x.LocationType, 3, x => {x.Required = true;}); + Value(x => x.LocationType, 3, x => x.IsRequired()); Entity(x => x.OrganizationName, 4); Entity(x => x.LocationAddress, 5); Entity(x => x.LocationPhone, 6); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/LRLMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/LRLMap.cs index 0a330b847..2353ebf11 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/LRLMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/LRLMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,10 +17,10 @@ public LRLMap() Name = "Location Relationship"; - Entity(x => x.PrimaryKeyValue, 1, x => {x.Required = true;}); + Entity(x => x.PrimaryKeyValue, 1, x => x.IsRequired()); Value(x => x.SegmentActionCode, 2); Entity(x => x.SegmentUniqueKey, 3); - Entity(x => x.LocationRelationshipId, 4, x => {x.Required = true;}); + Entity(x => x.LocationRelationshipId, 4, x => x.IsRequired()); Entity(x => x.OrganizationalLocationRelationshipValue, 5); Entity(x => x.PatientLocationRelationshipValue, 6); } diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/MFAMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/MFAMap.cs index b69481916..50eff4059 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/MFAMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/MFAMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,12 +17,12 @@ public MFAMap() Name = "Master File Acknowledgment"; - Value(x => x.RecordLevelEventCode, 1, x => {x.Required = true;}); + Value(x => x.RecordLevelEventCode, 1, x => x.IsRequired()); Value(x => x.MFNControlId, 2); - Value(x => x.EventCompletionDateTime, 3, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Entity(x => x.MFNRecordLevelErrorReturn, 4, x => {x.Required = true;}); - Value(x => x.PrimaryKeyValue, 5, x => {x.Required = true;}); - Value(x => x.PrimaryKeyValueType, 6, x => {x.Required = true;}); + Value(x => x.EventCompletionDateTime, 3, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Entity(x => x.MFNRecordLevelErrorReturn, 4, x => x.IsRequired()); + Value(x => x.PrimaryKeyValue, 5, x => x.IsRequired()); + Value(x => x.PrimaryKeyValueType, 6, x => x.IsRequired()); } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/MFEMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/MFEMap.cs index 734c760c5..81b13d06b 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/MFEMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/MFEMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,12 +17,12 @@ public MFEMap() Name = "Master File Entry"; - Value(x => x.RecordLevelEventCode, 1, x => {x.Required = true;}); + Value(x => x.RecordLevelEventCode, 1, x => x.IsRequired()); Value(x => x.MFNControlId, 2); - Value(x => x.EffectiveDateTime, 3, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.PrimaryKeyValue, 4, x => {x.Required = true;}); - Value(x => x.PrimaryKeyValueType, 5, x => {x.Required = true;}); - Value(x => x.EnteredDateTime, 6, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.EffectiveDateTime, 3, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.PrimaryKeyValue, 4, x => x.IsRequired()); + Value(x => x.PrimaryKeyValueType, 5, x => x.IsRequired()); + Value(x => x.EnteredDateTime, 6, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.EnteredBy, 7); } } diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/MFIMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/MFIMap.cs index 85a47982e..c41f12b0c 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/MFIMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/MFIMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,12 +17,12 @@ public MFIMap() Name = "Master File Identification"; - Entity(x => x.MasterFileIdentifier, 1, x => {x.Required = true;}); + Entity(x => x.MasterFileIdentifier, 1, x => x.IsRequired()); Entity(x => x.MasterFileApplicationIdentifier, 2); - Value(x => x.FileLevelEventCode, 3, x => {x.Required = true;}); - Value(x => x.EnteredDateTime, 4, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.EffectiveDateTime, 5, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.ResponseLevelCode, 6, x => {x.Required = true;}); + Value(x => x.FileLevelEventCode, 3, x => x.IsRequired()); + Value(x => x.EnteredDateTime, 4, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.EffectiveDateTime, 5, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.ResponseLevelCode, 6, x => x.IsRequired()); } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/MRGMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/MRGMap.cs index b98a80bf9..912bcb973 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/MRGMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/MRGMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,7 +17,7 @@ public MRGMap() Name = "Merge Patient Information"; - Entity(x => x.PriorPatientIdentifierList, 1, x => {x.Required = true;}); + Entity(x => x.PriorPatientIdentifierList, 1, x => x.IsRequired()); Entity(x => x.PriorAlternatePatientId, 2); Entity(x => x.PriorPatientAccountNumber, 3); Entity(x => x.PriorPatientId, 4); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/MSAMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/MSAMap.cs index c1d7e74bd..99a18cdc2 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/MSAMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/MSAMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,11 +17,11 @@ public MSAMap() Name = "Message Acknowledgment"; - Value(x => x.AcknowledgmentCode, 1, x => {x.Required = true;}); - Value(x => x.MessageControlId, 2, x => {x.Required = true;}); + Value(x => x.AcknowledgmentCode, 1, x => x.IsRequired()); + Value(x => x.MessageControlId, 2, x => x.IsRequired()); Value(x => x.TextMessage, 3); Value(x => x.ExpectedSequenceNumber, 4); - Value(x => x.DelayedAcknowledgmentType, 5, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.DelayedAcknowledgmentType, 5, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.ErrorCondition, 6); Value(x => x.MessageWaitingNumber, 7); Value(x => x.MessageWaitingPriority, 8); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/MSHMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/MSHMap.cs index c21eded52..a58594b2e 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/MSHMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/MSHMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,17 +17,21 @@ public MSHMap() Name = "Message Header"; - Value(x => x.EncodingCharacters, 1, x => {x.Required = true;}); + Value(x => x.EncodingCharacters, 1, x => x.IsRequired()); Entity(x => x.SendingApplication, 2); Entity(x => x.SendingFacility, 3); Entity(x => x.ReceivingApplication, 4); Entity(x => x.ReceivingFacility, 5); - Value(x => x.DateTimeOfMessage, 6, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;x.Required = true;}); + Value(x => x.DateTimeOfMessage, 6, x => + { + x.Converter = HL7.HL7ValueConverters.VariableLongDateTime; + x.IsRequired(); + }); Value(x => x.Security, 7); - Entity(x => x.MessageType, 8, x => {x.Required = true;}); - Value(x => x.MessageControlId, 9, x => {x.Required = true;}); - Entity(x => x.ProcessingId, 10, x => {x.Required = true;}); - Entity(x => x.VersionId, 11, x => {x.Required = true;}); + Entity(x => x.MessageType, 8, x => x.IsRequired()); + Value(x => x.MessageControlId, 9, x => x.IsRequired()); + Entity(x => x.ProcessingId, 10, x => x.IsRequired()); + Entity(x => x.VersionId, 11, x => x.IsRequired()); Value(x => x.SequenceNumber, 12); Value(x => x.ContinuationPointer, 13); Value(x => x.AcceptAcknowledgmentType, 14); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/NCKMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/NCKMap.cs index f5d5fc444..85fc1b0b4 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/NCKMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/NCKMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,7 +17,11 @@ public NCKMap() Name = "System Clock"; - Value(x => x.SystemDateTime, 1, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;x.Required = true;}); + Value(x => x.SystemDateTime, 1, x => + { + x.Converter = HL7.HL7ValueConverters.VariableLongDateTime; + x.IsRequired(); + }); } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/NDSMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/NDSMap.cs index be1407af5..d280f8f04 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/NDSMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/NDSMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,10 +17,14 @@ public NDSMap() Name = "Notification Detail"; - Value(x => x.NotificationReferenceNumber, 1, x => {x.Required = true;}); - Value(x => x.NotificationDateTime, 2, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;x.Required = true;}); - Entity(x => x.NotificationAlertSeverity, 3, x => {x.Required = true;}); - Entity(x => x.NotificationCode, 4, x => {x.Required = true;}); + Value(x => x.NotificationReferenceNumber, 1, x => x.IsRequired()); + Value(x => x.NotificationDateTime, 2, x => + { + x.Converter = HL7.HL7ValueConverters.VariableLongDateTime; + x.IsRequired(); + }); + Entity(x => x.NotificationAlertSeverity, 3, x => x.IsRequired()); + Entity(x => x.NotificationCode, 4, x => x.IsRequired()); } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/NK1Map.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/NK1Map.cs index 040bf244d..3a52fc67d 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/NK1Map.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/NK1Map.cs @@ -1,61 +1,61 @@ // This file was automatically generated and may be regenerated at any // time. To ensure any changes are retained, modify the tool with any segment/component/group/field name -// or type changes. -namespace Machete.HL7Schema.V26.Maps -{ - using V26; - - /// - /// NK1 (SegmentMap) - Next of Kin / Associated Parties - /// - public class NK1Map : - HL7V26SegmentMap - { - public NK1Map() - { - Id = "NK1"; - - Name = "Next of Kin / Associated Parties"; - - Value(x => x.SetId, 1, x => {x.Required = true;}); - Entity(x => x.Name, 2); - Entity(x => x.Relationship, 3); - Entity(x => x.Address, 4); - Entity(x => x.PhoneNumber, 5); - Entity(x => x.BusinePhoneNumber, 6); - Entity(x => x.ContactRole, 7); - Value(x => x.StartDate, 8, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.EndDate, 9, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.NextOfKinAssociatedPartiesJobTitle, 10); - Entity(x => x.NextOfKinAssociatedPartiesJobCodeClass, 11); - Entity(x => x.NextOfKinAssociatedPartiesEmployeeNumber, 12); - Entity(x => x.OrganizationName, 13); - Entity(x => x.MaritalStatus, 14); - Value(x => x.AdministrativeSex, 15); - Value(x => x.DateTimeOfBirth, 16, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.LivingDependency, 17); - Value(x => x.AmbulatoryStatus, 18); - Entity(x => x.Citizenship, 19); - Entity(x => x.PrimaryLanguage, 20); - Value(x => x.LivingArrangement, 21); - Entity(x => x.PublicityCode, 22); - Value(x => x.ProtectionIndicator, 23); - Value(x => x.StudentIndicator, 24); - Entity(x => x.Religion, 25); - Entity(x => x.MotherSMaidenName, 26); - Entity(x => x.Nationality, 27); - Entity(x => x.EthnicGroup, 28); - Entity(x => x.ContactReason, 29); - Entity(x => x.ContactPersonSName, 30); - Entity(x => x.ContactPersonSTelephoneNumber, 31); - Entity(x => x.ContactPersonSAddress, 32); - Entity(x => x.NextOfKinAssociatedPartySIdentifiers, 33); - Value(x => x.JobStatus, 34); - Entity(x => x.Race, 35); - Value(x => x.Handicap, 36); - Value(x => x.ContactPersonSocialSecurityNumber, 37); - Value(x => x.NextOfKinBirthPlace, 38); - Value(x => x.VIPIndicator, 39); - } - } +// or type changes. +namespace Machete.HL7Schema.V26.Maps +{ + using V26; + + /// + /// NK1 (SegmentMap) - Next of Kin / Associated Parties + /// + public class NK1Map : + HL7V26SegmentMap + { + public NK1Map() + { + Id = "NK1"; + + Name = "Next of Kin / Associated Parties"; + + Value(x => x.SetId, 1, x => {x.Required = true;}); + Entity(x => x.Name, 2); + Entity(x => x.Relationship, 3); + Entity(x => x.Address, 4); + Entity(x => x.PhoneNumber, 5); + Entity(x => x.BusinessPhoneNumber, 6); + Entity(x => x.ContactRole, 7); + Value(x => x.StartDate, 8, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.EndDate, 9, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.NextOfKinAssociatedPartiesJobTitle, 10); + Entity(x => x.NextOfKinAssociatedPartiesJobCodeClass, 11); + Entity(x => x.NextOfKinAssociatedPartiesEmployeeNumber, 12); + Entity(x => x.OrganizationName, 13); + Entity(x => x.MaritalStatus, 14); + Value(x => x.AdministrativeSex, 15); + Value(x => x.DateTimeOfBirth, 16, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.LivingDependency, 17); + Value(x => x.AmbulatoryStatus, 18); + Entity(x => x.Citizenship, 19); + Entity(x => x.PrimaryLanguage, 20); + Value(x => x.LivingArrangement, 21); + Entity(x => x.PublicityCode, 22); + Value(x => x.ProtectionIndicator, 23); + Value(x => x.StudentIndicator, 24); + Entity(x => x.Religion, 25); + Entity(x => x.MotherSMaidenName, 26); + Entity(x => x.Nationality, 27); + Entity(x => x.EthnicGroup, 28); + Entity(x => x.ContactReason, 29); + Entity(x => x.ContactPersonSName, 30); + Entity(x => x.ContactPersonSTelephoneNumber, 31); + Entity(x => x.ContactPersonSAddress, 32); + Entity(x => x.NextOfKinAssociatedPartySIdentifiers, 33); + Value(x => x.JobStatus, 34); + Entity(x => x.Race, 35); + Value(x => x.Handicap, 36); + Value(x => x.ContactPersonSocialSecurityNumber, 37); + Value(x => x.NextOfKinBirthPlace, 38); + Value(x => x.VIPIndicator, 39); + } + } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/NPUMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/NPUMap.cs index c0e7ec0e2..3b317ca64 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/NPUMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/NPUMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,7 +17,7 @@ public NPUMap() Name = "Bed Status Update"; - Entity(x => x.BedLocation, 1, x => {x.Required = true;}); + Entity(x => x.BedLocation, 1, x => x.IsRequired()); Value(x => x.BedStatus, 2); } } diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/NSCMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/NSCMap.cs index 4cb05f2c1..7e3950b60 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/NSCMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/NSCMap.cs @@ -1,31 +1,31 @@ // This file was automatically generated and may be regenerated at any // time. To ensure any changes are retained, modify the tool with any segment/component/group/field name -// or type changes. -namespace Machete.HL7Schema.V26.Maps -{ - using V26; - - /// - /// NSC (SegmentMap) - Application Status Change - /// - public class NSCMap : - HL7V26SegmentMap - { - public NSCMap() - { - Id = "NSC"; - - Name = "Application Status Change"; - - Value(x => x.ApplicationChangeType, 1, x => {x.Required = true;}); - Value(x => x.CurrentCPU, 2); - Value(x => x.CurrentFileserver, 3); - Entity(x => x.CurrentApplication, 4); - Entity(x => x.CurrentFacility, 5); - Value(x => x.NewCPU, 6); - Value(x => x.NewFileserver, 7); - Entity(x => x.NewApplication, 8); - Entity(x => x.NewFacility, 9); - } - } +// or type changes. +namespace Machete.HL7Schema.V26.Maps +{ + using V26; + + /// + /// NSC (SegmentMap) - Application Status Change + /// + public class NSCMap : + HL7V26SegmentMap + { + public NSCMap() + { + Id = "NSC"; + + Name = "Application Status Change"; + + Value(x => x.ApplicationChangeType, 1, x => {x.Required = true;}); + Value(x => x.CurrentCPU, 2); + Value(x => x.CurrentFileServer, 3); + Entity(x => x.CurrentApplication, 4); + Entity(x => x.CurrentFacility, 5); + Value(x => x.NewCPU, 6); + Value(x => x.NewFileServer, 7); + Entity(x => x.NewApplication, 8); + Entity(x => x.NewFacility, 9); + } + } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/NSTMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/NSTMap.cs index 0fad4b14d..9bd3b5ec1 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/NSTMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/NSTMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,11 +17,11 @@ public NSTMap() Name = "Application control level statistics"; - Value(x => x.StatisticAvailable, 1, x => {x.Required = true;}); + Value(x => x.StatisticAvailable, 1, x => x.IsRequired()); Value(x => x.SourceIdentifier, 2); Value(x => x.SourceType, 3); - Value(x => x.StatisticStart, 4, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.StatisticEnd, 5, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.StatisticStart, 4, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.StatisticEnd, 5, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.ReceiveCharacterCount, 6); Value(x => x.SendCharacterCount, 7); Value(x => x.MessageReceived, 8); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/NTEMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/NTEMap.cs index 47ea76d79..090db5293 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/NTEMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/NTEMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -22,9 +22,9 @@ public NTEMap() Value(x => x.Comment, 3); Entity(x => x.CommentType, 4); Entity(x => x.EnteredBy, 5); - Value(x => x.EnteredDateTime, 6, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.EffectiveStartDate, 7, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.ExpirationDate, 8, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.EnteredDateTime, 6, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.EffectiveStartDate, 7, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.ExpirationDate, 8, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/OBRMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/OBRMap.cs index 995a4dfb3..fc9ede299 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/OBRMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/OBRMap.cs @@ -1,72 +1,72 @@ // This file was automatically generated and may be regenerated at any // time. To ensure any changes are retained, modify the tool with any segment/component/group/field name -// or type changes. -namespace Machete.HL7Schema.V26.Maps -{ - using V26; - - /// - /// OBR (SegmentMap) - Observation Request - /// - public class OBRMap : - HL7V26SegmentMap - { - public OBRMap() - { - Id = "OBR"; - - Name = "Observation Request"; - - Value(x => x.SetId, 1); - Entity(x => x.PlacerOrderNumber, 2); - Entity(x => x.FillerOrderNumber, 3); - Entity(x => x.UniversalServiceIdentifier, 4, x => {x.Required = true;}); - Value(x => x.Priority, 5); - Value(x => x.RequestedDateTime, 6, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.ObservationDateTime, 7, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.ObservationEndDateTime, 8, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Entity(x => x.CollectionVolume, 9); - Entity(x => x.CollectorIdentifier, 10); - Value(x => x.SpecimenActionCode, 11); - Entity(x => x.DangerCode, 12); - Value(x => x.RelevantClinicalInformation, 13); - Value(x => x.SpecimenReceivedDateTime, 14, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Entity(x => x.SpecimenSource, 15); - Entity(x => x.OrderingProvider, 16); - Entity(x => x.OrderCallbackPhoneNumber, 17); - Value(x => x.PlacerField1, 18); - Value(x => x.PlacerField2, 19); - Value(x => x.FillerField1, 20); - Value(x => x.FillerField2, 21); - Value(x => x.ResultRptStatusChngDateTime, 22, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Entity(x => x.ChargeToPractice, 23); - Value(x => x.DiagnosticServSectId, 24); - Value(x => x.ResultStatus, 25); - Entity(x => x.ParentResult, 26); - Entity(x => x.QuantityTiming, 27); - Entity(x => x.ResultCopiesTo, 28); - Entity(x => x.Parent, 29); - Value(x => x.TransportationMode, 30); - Entity(x => x.ReasonForStudy, 31); - Entity(x => x.PrincipalResultInterpreter, 32); - Entity(x => x.AssistantResultInterpreter, 33); - Entity(x => x.Technician, 34); - Entity(x => x.Transcriptionist, 35); - Value(x => x.ScheduledDateTime, 36, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.NumberOfSampleContainers, 37); - Entity(x => x.TransportLogisticsOfCollectedSample, 38); - Entity(x => x.CollectorSComment, 39); - Entity(x => x.TransportArrangementResponsibility, 40); - Value(x => x.TransportArranged, 41); - Value(x => x.EscortRequired, 42); - Entity(x => x.PlannedPatientTransportComment, 43); - Entity(x => x.ProcedureCode, 44); - Entity(x => x.ProcedureCodeModifier, 45); - Entity(x => x.PlacerSupplementalServiceInformation, 46); - Entity(x => x.FillerSupplementalServiceInformation, 47); - Entity(x => x.MedicallyNecessaryDuplicateProcedureReason, 48); - Value(x => x.ResultHandling, 49); - Entity(x => x.ParentUniversalServiceIdentifier, 50); - } - } +// or type changes. +namespace Machete.HL7Schema.V26.Maps +{ + using V26; + + /// + /// OBR (SegmentMap) - Observation Request + /// + public class OBRMap : + HL7V26SegmentMap + { + public OBRMap() + { + Id = "OBR"; + + Name = "Observation Request"; + + Value(x => x.SetId, 1); + Entity(x => x.PlacerOrderNumber, 2); + Entity(x => x.FillerOrderNumber, 3); + Entity(x => x.UniversalServiceIdentifier, 4, x => {x.Required = true;}); + Value(x => x.Priority, 5); + Value(x => x.RequestedDateTime, 6, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.ObservationDateTime, 7, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.ObservationEndDateTime, 8, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Entity(x => x.CollectionVolume, 9); + Entity(x => x.CollectorIdentifier, 10); + Value(x => x.SpecimenActionCode, 11); + Entity(x => x.DangerCode, 12); + Value(x => x.RelevantClinicalInformation, 13); + Value(x => x.SpecimenReceivedDateTime, 14, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Entity(x => x.SpecimenSource, 15); + Entity(x => x.OrderingProvider, 16); + Entity(x => x.OrderCallbackPhoneNumber, 17); + Value(x => x.PlacerField1, 18); + Value(x => x.PlacerField2, 19); + Value(x => x.FillerField1, 20); + Value(x => x.FillerField2, 21); + Value(x => x.ResultReportedStatusChangeDateTime, 22, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Entity(x => x.ChargeToPractice, 23); + Value(x => x.DiagnosticServiceSectionId, 24); + Value(x => x.ResultStatus, 25); + Entity(x => x.ParentResult, 26); + Entity(x => x.QuantityTiming, 27); + Entity(x => x.ResultCopiesTo, 28); + Entity(x => x.Parent, 29); + Value(x => x.TransportationMode, 30); + Entity(x => x.ReasonForStudy, 31); + Entity(x => x.PrincipalResultInterpreter, 32); + Entity(x => x.AssistantResultInterpreter, 33); + Entity(x => x.Technician, 34); + Entity(x => x.Transcriptionist, 35); + Value(x => x.ScheduledDateTime, 36, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.NumberOfSampleContainers, 37); + Entity(x => x.TransportLogisticsOfCollectedSample, 38); + Entity(x => x.CollectorSComment, 39); + Entity(x => x.TransportArrangementResponsibility, 40); + Value(x => x.TransportArranged, 41); + Value(x => x.EscortRequired, 42); + Entity(x => x.PlannedPatientTransportComment, 43); + Entity(x => x.ProcedureCode, 44); + Entity(x => x.ProcedureCodeModifier, 45); + Entity(x => x.PlacerSupplementalServiceInformation, 46); + Entity(x => x.FillerSupplementalServiceInformation, 47); + Entity(x => x.MedicallyNecessaryDuplicateProcedureReason, 48); + Value(x => x.ResultHandling, 49); + Entity(x => x.ParentUniversalServiceIdentifier, 50); + } + } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/OBXMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/OBXMap.cs index 3676c0107..0af9eb0e3 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/OBXMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/OBXMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -19,7 +19,7 @@ public OBXMap() Value(x => x.SetId, 1); Value(x => x.ValueType, 2); - Entity(x => x.ObservationIdentifier, 3, x => {x.Required = true;}); + Entity(x => x.ObservationIdentifier, 3, x => x.IsRequired()); Value(x => x.ObservationSubId, 4); Value(x => x.ObservationValue, 5); Entity(x => x.Units, 6); @@ -27,15 +27,15 @@ public OBXMap() Value(x => x.AbnormalFlags, 8); Value(x => x.Probability, 9); Value(x => x.NatureOfAbnormalTest, 10); - Value(x => x.ObservationResultStatus, 11, x => {x.Required = true;}); - Value(x => x.EffectiveDateOfReferenceRange, 12, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.ObservationResultStatus, 11, x => x.IsRequired()); + Value(x => x.EffectiveDateOfReferenceRange, 12, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.UserDefinedAccessChecks, 13); - Value(x => x.DateTimeOfObservation, 14, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.DateTimeOfObservation, 14, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.ProducerSId, 15); Entity(x => x.ResponsibleObserver, 16); Entity(x => x.ObservationMethod, 17); Entity(x => x.EquipmentInstanceIdentifier, 18); - Value(x => x.DateTimeOfAnalysis, 19, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.DateTimeOfAnalysis, 19, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.ObservationSite, 20); Entity(x => x.ObservationInstanceIdentifier, 21); Entity(x => x.MoodCode, 22); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ODSMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ODSMap.cs index 384ad8aac..0b4911840 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ODSMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ODSMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,9 +17,9 @@ public ODSMap() Name = "Dietary Orders, Supplements, and Preferences"; - Value(x => x.Type, 1, x => {x.Required = true;}); + Value(x => x.Type, 1, x => x.IsRequired()); Entity(x => x.ServicePeriod, 2); - Entity(x => x.DietSupplementOrPreferenceCode, 3, x => {x.Required = true;}); + Entity(x => x.DietSupplementOrPreferenceCode, 3, x => x.IsRequired()); Value(x => x.TextInstruction, 4); } } diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ODTMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ODTMap.cs index fcc3dbcd3..4253b65f2 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ODTMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ODTMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,7 +17,7 @@ public ODTMap() Name = "Diet Tray Instructions"; - Entity(x => x.TrayType, 1, x => {x.Required = true;}); + Entity(x => x.TrayType, 1, x => x.IsRequired()); Entity(x => x.ServicePeriod, 2); Value(x => x.TextInstruction, 3); } diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/OM1Map.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/OM1Map.cs index d30b6be1a..890c3b881 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/OM1Map.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/OM1Map.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,14 +17,14 @@ public OM1Map() Name = "General Segment"; - Value(x => x.SequenceNumberTestObservationMasterFile, 1, x => {x.Required = true;}); - Entity(x => x.ProducerSServiceTestObservationId, 2, x => {x.Required = true;}); + Value(x => x.SequenceNumberTestObservationMasterFile, 1, x => x.IsRequired()); + Entity(x => x.ProducerSServiceTestObservationId, 2, x => x.IsRequired()); Value(x => x.PermittedDataTypes, 3); - Value(x => x.SpecimenRequired, 4, x => {x.Required = true;}); - Entity(x => x.ProducerId, 5, x => {x.Required = true;}); + Value(x => x.SpecimenRequired, 4, x => x.IsRequired()); + Entity(x => x.ProducerId, 5, x => x.IsRequired()); Value(x => x.ObservationDescription, 6); Entity(x => x.OtherServiceTestObservationIdsForObservation, 7); - Value(x => x.OtherNames, 8, x => {x.Required = true;}); + Value(x => x.OtherNames, 8, x => x.IsRequired()); Value(x => x.PreferredReportNameForObservation, 9); Value(x => x.PreferredShortNameOrMnemonicForObservation, 10); Value(x => x.PreferredLongNameForObservation, 11); @@ -34,11 +34,11 @@ public OM1Map() Value(x => x.PortableDeviceIndicator, 15); Entity(x => x.ObservationProducingDepartmentSection, 16); Entity(x => x.TelephoneNumberOfSection, 17); - Value(x => x.NatureOfServiceTestObservation, 18, x => {x.Required = true;}); + Value(x => x.NatureOfServiceTestObservation, 18, x => x.IsRequired()); Entity(x => x.ReportSubheader, 19); Value(x => x.ReportDisplayOrder, 20); - Value(x => x.DateTimeStampForAnyChangeInDefinitionForObservation, 21, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.EffectiveDateTimeOfChange, 22, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.DateTimeStampForAnyChangeInDefinitionForObservation, 21, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.EffectiveDateTimeOfChange, 22, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.TypicalTurnAroundTime, 23); Value(x => x.ProcessingTime, 24); Value(x => x.ProcessingPriority, 25); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/OM7Map.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/OM7Map.cs index 3a2d1ae42..6795dba0e 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/OM7Map.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/OM7Map.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,25 +17,25 @@ public OM7Map() Name = "Additional Basic Attributes"; - Value(x => x.SequenceNumberTestObservationMasterFile, 1, x => {x.Required = true;}); - Entity(x => x.UniversalServiceIdentifier, 2, x => {x.Required = true;}); + Value(x => x.SequenceNumberTestObservationMasterFile, 1, x => x.IsRequired()); + Entity(x => x.UniversalServiceIdentifier, 2, x => x.IsRequired()); Entity(x => x.CategoryIdentifier, 3); Value(x => x.CategoryDescription, 4); Value(x => x.CategorySynonym, 5); - Value(x => x.EffectiveTestServiceStartDateTime, 6, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.EffectiveTestServiceEndDateTime, 7, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.EffectiveTestServiceStartDateTime, 6, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.EffectiveTestServiceEndDateTime, 7, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.TestServiceDefaultDurationQuantity, 8); Entity(x => x.TestServiceDefaultDurationUnits, 9); Value(x => x.TestServiceDefaultFrequency, 10); Value(x => x.ConsentIndicator, 11); Entity(x => x.ConsentIdentifier, 12); - Value(x => x.ConsentEffectiveStartDateTime, 13, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.ConsentEffectiveEndDateTime, 14, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.ConsentEffectiveStartDateTime, 13, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.ConsentEffectiveEndDateTime, 14, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.ConsentIntervalQuantity, 15); Entity(x => x.ConsentIntervalUnits, 16); Value(x => x.ConsentWaitingPeriodQuantity, 17); Entity(x => x.ConsentWaitingPeriodUnits, 18); - Value(x => x.EffectiveDateTimeOfChange, 19, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.EffectiveDateTimeOfChange, 19, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.EnteredBy, 20); Entity(x => x.OrderableAtLocation, 21); Value(x => x.FormularyStatus, 22); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ORCMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ORCMap.cs index 83a84c3ad..055bc5477 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ORCMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ORCMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,7 +17,7 @@ public ORCMap() Name = "Common Order"; - Value(x => x.OrderControl, 1, x => {x.Required = true;}); + Value(x => x.OrderControl, 1, x => x.IsRequired()); Entity(x => x.PlacerOrderNumber, 2); Entity(x => x.FillerOrderNumber, 3); Entity(x => x.PlacerGroupNumber, 4); @@ -25,13 +25,13 @@ public ORCMap() Value(x => x.ResponseFlag, 6); Entity(x => x.QuantityTiming, 7); Entity(x => x.Parent, 8); - Value(x => x.DateTimeOfTransaction, 9, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.DateTimeOfTransaction, 9, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.EnteredBy, 10); Entity(x => x.VerifiedBy, 11); Entity(x => x.OrderingProvider, 12); Entity(x => x.EntererSLocation, 13); Entity(x => x.CallBackPhoneNumber, 14); - Value(x => x.OrderEffectiveDateTime, 15, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.OrderEffectiveDateTime, 15, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.OrderControlCodeReason, 16); Entity(x => x.EnteringOrganization, 17); Entity(x => x.EnteringDevice, 18); @@ -43,7 +43,7 @@ public ORCMap() Entity(x => x.OrderingProviderAddress, 24); Entity(x => x.OrderStatusModifier, 25); Entity(x => x.AdvancedBeneficiaryNoticeOverrideReason, 26); - Value(x => x.FillerSExpectedAvailabilityDateTime, 27, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.FillerSExpectedAvailabilityDateTime, 27, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.ConfidentialityCode, 28); Entity(x => x.OrderType, 29); Entity(x => x.EntererAuthorizationMode, 30); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ORGMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ORGMap.cs index b4af963b8..2e4edd394 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ORGMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ORGMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,7 +17,7 @@ public ORGMap() Name = "Practitioner Organization Unit"; - Value(x => x.SetId, 1, x => {x.Required = true;}); + Value(x => x.SetId, 1, x => x.IsRequired()); Entity(x => x.OrganizationUnitCode, 2); Entity(x => x.OrganizationUnitTypeCode, 3); Value(x => x.PrimaryOrgUnitIndicator, 4); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/OVRMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/OVRMap.cs index ad7fbd363..0ff64a9c1 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/OVRMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/OVRMap.cs @@ -1,27 +1,27 @@ // This file was automatically generated and may be regenerated at any // time. To ensure any changes are retained, modify the tool with any segment/component/group/field name -// or type changes. -namespace Machete.HL7Schema.V26.Maps -{ - using V26; - - /// - /// OVR (SegmentMap) - Override Segment - /// - public class OVRMap : - HL7V26SegmentMap - { - public OVRMap() - { - Id = "OVR"; - - Name = "Override Segment"; - - Entity(x => x.BusineRuleOverrideType, 1); - Entity(x => x.BusineRuleOverrideCode, 2); - Value(x => x.OverrideComments, 3); - Entity(x => x.OverrideEnteredBy, 4); - Entity(x => x.OverrideAuthorizedBy, 5); - } - } +// or type changes. +namespace Machete.HL7Schema.V26.Maps +{ + using V26; + + /// + /// OVR (SegmentMap) - Override Segment + /// + public class OVRMap : + HL7V26SegmentMap + { + public OVRMap() + { + Id = "OVR"; + + Name = "Override Segment"; + + Entity(x => x.BusinessRuleOverrideType, 1); + Entity(x => x.BusinessRuleOverrideCode, 2); + Value(x => x.OverrideComments, 3); + Entity(x => x.OverrideEnteredBy, 4); + Entity(x => x.OverrideAuthorizedBy, 5); + } + } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PCEMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PCEMap.cs index 32a6d3415..73c4f142f 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PCEMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PCEMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,7 +17,7 @@ public PCEMap() Name = "Patient Charge Cost Center Exceptions"; - Value(x => x.SetId, 1, x => {x.Required = true;}); + Value(x => x.SetId, 1, x => x.IsRequired()); Value(x => x.CostCenterAccountNumber, 2); Entity(x => x.TransactionCode, 3); Entity(x => x.TransactionAmountUnit, 4); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PCRMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PCRMap.cs index 229001637..65b3ca95d 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PCRMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PCRMap.cs @@ -1,45 +1,45 @@ // This file was automatically generated and may be regenerated at any // time. To ensure any changes are retained, modify the tool with any segment/component/group/field name -// or type changes. -namespace Machete.HL7Schema.V26.Maps -{ - using V26; - - /// - /// PCR (SegmentMap) - Possible Causal Relationship - /// - public class PCRMap : - HL7V26SegmentMap - { - public PCRMap() - { - Id = "PCR"; - - Name = "Possible Causal Relationship"; - - Entity(x => x.ImplicatedProduct, 1, x => {x.Required = true;}); - Value(x => x.GenericProduct, 2); - Entity(x => x.ProductClass, 3); - Entity(x => x.TotalDurationOfrapy, 4); - Value(x => x.ProductManufactureDate, 5, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.ProductExpirationDate, 6, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.ProductImplantationDate, 7, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.ProductExplantationDate, 8, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.SingleUseDevice, 9); - Entity(x => x.IndicationForProductUse, 10); - Value(x => x.ProductProblem, 11); - Value(x => x.ProductSerialLotNumber, 12); - Value(x => x.ProductAvailableForInspection, 13); - Entity(x => x.ProductEvaluationPerformed, 14); - Entity(x => x.ProductEvaluationStatus, 15); - Entity(x => x.ProductEvaluationResults, 16); - Value(x => x.EvaluatedProductSource, 17); - Value(x => x.DateProductReturnedToManufacturer, 18, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.DeviceOperatorQualifications, 19); - Value(x => x.RelatedneAssessment, 20); - Value(x => x.ActionTakenInResponseToEvent, 21); - Value(x => x.EventCausalityObservations, 22); - Value(x => x.IndirectExposureMechanism, 23); - } - } +// or type changes. +namespace Machete.HL7Schema.V26.Maps +{ + using V26; + + /// + /// PCR (SegmentMap) - Possible Causal Relationship + /// + public class PCRMap : + HL7V26SegmentMap + { + public PCRMap() + { + Id = "PCR"; + + Name = "Possible Causal Relationship"; + + Entity(x => x.ImplicatedProduct, 1, x => {x.Required = true;}); + Value(x => x.GenericProduct, 2); + Entity(x => x.ProductClass, 3); + Entity(x => x.TotalDurationOfTherapy, 4); + Value(x => x.ProductManufactureDate, 5, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.ProductExpirationDate, 6, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.ProductImplantationDate, 7, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.ProductExplantationDate, 8, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.SingleUseDevice, 9); + Entity(x => x.IndicationForProductUse, 10); + Value(x => x.ProductProblem, 11); + Value(x => x.ProductSerialLotNumber, 12); + Value(x => x.ProductAvailableForInspection, 13); + Entity(x => x.ProductEvaluationPerformed, 14); + Entity(x => x.ProductEvaluationStatus, 15); + Entity(x => x.ProductEvaluationResults, 16); + Value(x => x.EvaluatedProductSource, 17); + Value(x => x.DateProductReturnedToManufacturer, 18, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.DeviceOperatorQualifications, 19); + Value(x => x.RelatednessAssessment, 20); + Value(x => x.ActionTakenInResponseToEvent, 21); + Value(x => x.EventCausalityObservations, 22); + Value(x => x.IndirectExposureMechanism, 23); + } + } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PD1Map.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PD1Map.cs index 760e080ad..f8bd2a2df 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PD1Map.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PD1Map.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -29,16 +29,16 @@ public PD1Map() Entity(x => x.DuplicatePatient, 10); Entity(x => x.PublicityCode, 11); Value(x => x.ProtectionIndicator, 12); - Value(x => x.ProtectionIndicatorEffectiveDate, 13, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.ProtectionIndicatorEffectiveDate, 13, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.PlaceOfWorship, 14); Entity(x => x.AdvanceDirectiveCode, 15); Value(x => x.ImmunizationRegistryStatus, 16); - Value(x => x.ImmunizationRegistryStatusEffectiveDate, 17, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.PublicityCodeEffectiveDate, 18, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.ImmunizationRegistryStatusEffectiveDate, 17, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.PublicityCodeEffectiveDate, 18, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.MilitaryBranch, 19); Value(x => x.MilitaryRankGrade, 20); Value(x => x.MilitaryStatus, 21); - Value(x => x.AdvanceDirectiveLastVerifiedDate, 22, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.AdvanceDirectiveLastVerifiedDate, 22, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PDAMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PDAMap.cs index 7a19a6cc3..05c82c3b8 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PDAMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PDAMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -20,7 +20,7 @@ public PDAMap() Entity(x => x.DeathCauseCode, 1); Entity(x => x.DeathLocation, 2); Value(x => x.DeathCertifiedIndicator, 3); - Value(x => x.DeathCertificateSignedDateTime, 4, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.DeathCertificateSignedDateTime, 4, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.DeathCertifiedBy, 5); Value(x => x.AutopsyIndicator, 6); Entity(x => x.AutopsyStartAndEndDateTime, 7); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PDCMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PDCMap.cs index 98d88a650..335d46da7 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PDCMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PDCMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,9 +17,9 @@ public PDCMap() Name = "Product Detail Country"; - Entity(x => x.ManufacturerDistributor, 1, x => {x.Required = true;}); - Entity(x => x.Country, 2, x => {x.Required = true;}); - Value(x => x.BrandName, 3, x => {x.Required = true;}); + Entity(x => x.ManufacturerDistributor, 1, x => x.IsRequired()); + Entity(x => x.Country, 2, x => x.IsRequired()); + Value(x => x.BrandName, 3, x => x.IsRequired()); Value(x => x.DeviceFamilyName, 4); Entity(x => x.GenericName, 5); Value(x => x.ModelIdentifier, 6); @@ -30,8 +30,8 @@ public PDCMap() Value(x => x.MarketingApprovalId, 11); Entity(x => x.LabeledShelfLife, 12); Entity(x => x.ExpectedShelfLife, 13); - Value(x => x.DateFirstMarketed, 14, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.DateLastMarketed, 15, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.DateFirstMarketed, 14, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.DateLastMarketed, 15, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PEOMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PEOMap.cs index 0c955218f..cb2552ad7 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PEOMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PEOMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -19,10 +19,14 @@ public PEOMap() Entity(x => x.EventIdentifiersUsed, 1); Entity(x => x.EventSymptomDiagnosisCode, 2); - Value(x => x.EventOnsetDateTime, 3, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;x.Required = true;}); - Value(x => x.EventExacerbationDateTime, 4, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.EventImprovedDateTime, 5, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.EventEndedDataTime, 6, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.EventOnsetDateTime, 3, x => + { + x.Converter = HL7.HL7ValueConverters.VariableLongDateTime; + x.IsRequired(); + }); + Value(x => x.EventExacerbationDateTime, 4, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.EventImprovedDateTime, 5, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.EventEndedDataTime, 6, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.EventLocationOccurredAddress, 7); Value(x => x.EventQualification, 8); Value(x => x.EventSerious, 9); @@ -40,7 +44,7 @@ public PEOMap() Entity(x => x.PrimaryObserverTelephone, 21); Value(x => x.PrimaryObserverSQualification, 22); Value(x => x.ConfirmationProvidedBy, 23); - Value(x => x.PrimaryObserverAwareDateTime, 24, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.PrimaryObserverAwareDateTime, 24, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.PrimaryObserverSIdentityMayBeDivulged, 25); } } diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PESMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PESMap.cs index d4b9a4b23..ef5e58388 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PESMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PESMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -25,8 +25,12 @@ public PESMap() Value(x => x.SenderSequenceNumber, 6); Value(x => x.SenderEventDescription, 7); Value(x => x.SenderComment, 8); - Value(x => x.SenderAwareDateTime, 9, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.EventReportDate, 10, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;x.Required = true;}); + Value(x => x.SenderAwareDateTime, 9, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.EventReportDate, 10, x => + { + x.Converter = HL7.HL7ValueConverters.VariableLongDateTime; + x.IsRequired(); + }); Value(x => x.EventReportTimingType, 11); Value(x => x.EventReportSource, 12); Value(x => x.EventReportedTo, 13); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PIDMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PIDMap.cs index 0b90309a1..af4b4975f 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PIDMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PIDMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -19,11 +19,11 @@ public PIDMap() Value(x => x.SetId, 1); Entity(x => x.PatientId, 2); - Entity(x => x.PatientIdentifierList, 3, x => {x.Required = true;}); + Entity(x => x.PatientIdentifierList, 3, x => x.IsRequired()); Entity(x => x.AlternatePatientId, 4); - Entity(x => x.PatientName, 5, x => {x.Required = true;}); + Entity(x => x.PatientName, 5, x => x.IsRequired()); Entity(x => x.MotherSMaidenName, 6); - Value(x => x.DateTimeOfBirth, 7, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.DateTimeOfBirth, 7, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.AdministrativeSex, 8); Entity(x => x.PatientAlias, 9); Entity(x => x.Race, 10); @@ -45,11 +45,11 @@ public PIDMap() Entity(x => x.Citizenship, 26); Entity(x => x.VeteranMilitaryStatus, 27); Entity(x => x.Nationality, 28); - Value(x => x.PatientDeathDateAndTime, 29, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.PatientDeathDateAndTime, 29, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.PatientDeathIndicator, 30); Value(x => x.IdentityUnknownIndicator, 31); Value(x => x.IdentityReliabilityCode, 32); - Value(x => x.LastUpdateDateTime, 33, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.LastUpdateDateTime, 33, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.LastUpdateFacility, 34); Entity(x => x.SpecieCode, 35); Entity(x => x.BreedCode, 36); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PKGMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PKGMap.cs index 5d92530ad..662b3c2cf 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PKGMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PKGMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,13 +17,13 @@ public PKGMap() Name = "Item Packaging"; - Value(x => x.SetId, 1, x => {x.Required = true;}); + Value(x => x.SetId, 1, x => x.IsRequired()); Entity(x => x.PackagingUnits, 2); Entity(x => x.DefaultOrderUnitOfMeasureIndicator, 3); Value(x => x.PackageQuantity, 4); Entity(x => x.Price, 5); Entity(x => x.FutureItemPrice, 6); - Value(x => x.FutureItemPriceEffectiveDate, 7, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.FutureItemPriceEffectiveDate, 7, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PMTMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PMTMap.cs index ea681ab36..adac61cb8 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PMTMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PMTMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,17 +17,29 @@ public PMTMap() Name = "Payment Information"; - Entity(x => x.PaymentRemittanceAdviceNumber, 1, x => {x.Required = true;}); - Value(x => x.PaymentRemittanceEffectiveDateTime, 2, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;x.Required = true;}); - Value(x => x.PaymentRemittanceExpirationDateTime, 3, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;x.Required = true;}); - Entity(x => x.PaymentMethod, 4, x => {x.Required = true;}); - Value(x => x.PaymentRemittanceDateTime, 5, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;x.Required = true;}); - Entity(x => x.PaymentRemittanceAmount, 6, x => {x.Required = true;}); + Entity(x => x.PaymentRemittanceAdviceNumber, 1, x => x.IsRequired()); + Value(x => x.PaymentRemittanceEffectiveDateTime, 2, x => + { + x.Converter = HL7.HL7ValueConverters.VariableLongDateTime; + x.IsRequired(); + }); + Value(x => x.PaymentRemittanceExpirationDateTime, 3, x => + { + x.Converter = HL7.HL7ValueConverters.VariableLongDateTime; + x.IsRequired(); + }); + Entity(x => x.PaymentMethod, 4, x => x.IsRequired()); + Value(x => x.PaymentRemittanceDateTime, 5, x => + { + x.Converter = HL7.HL7ValueConverters.VariableLongDateTime; + x.IsRequired(); + }); + Entity(x => x.PaymentRemittanceAmount, 6, x => x.IsRequired()); Entity(x => x.CheckNumber, 7); Entity(x => x.PayeeBankIdentification, 8); Value(x => x.PayeeTransitNumber, 9); Entity(x => x.PayeeBankAccountId, 10); - Entity(x => x.PaymentOrganization, 11, x => {x.Required = true;}); + Entity(x => x.PaymentOrganization, 11, x => x.IsRequired()); Value(x => x.ESRCodeLine, 12); } } diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PR1Map.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PR1Map.cs index 24cdaf665..9660a81ba 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PR1Map.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PR1Map.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,18 +17,22 @@ public PR1Map() Name = "Procedures"; - Value(x => x.SetId, 1, x => {x.Required = true;}); - Value(x => x.ProcedureCodingMethod, 2, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Entity(x => x.ProcedureCode, 3, x => {x.Required = true;}); - Value(x => x.ProcedureDescription, 4, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.ProcedureDateTime, 5, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;x.Required = true;}); + Value(x => x.SetId, 1, x => x.IsRequired()); + Value(x => x.ProcedureCodingMethod, 2, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Entity(x => x.ProcedureCode, 3, x => x.IsRequired()); + Value(x => x.ProcedureDescription, 4, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.ProcedureDateTime, 5, x => + { + x.Converter = HL7.HL7ValueConverters.VariableLongDateTime; + x.IsRequired(); + }); Value(x => x.ProcedureFunctionalType, 6); Value(x => x.ProcedureMinutes, 7); - Value(x => x.Anesthesiologist, 8, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.Anesthesiologist, 8, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.AnesthesiaCode, 9); Value(x => x.AnesthesiaMinutes, 10); - Value(x => x.Surgeon, 11, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.ProcedurePractitioner, 12, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.Surgeon, 11, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.ProcedurePractitioner, 12, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.ConsentCode, 13); Value(x => x.ProcedurePriority, 14); Entity(x => x.AssociatedDiagnosisCode, 15); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PRAMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PRAMap.cs index 2000acbe4..e6cddb98c 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PRAMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PRAMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -24,9 +24,9 @@ public PRAMap() Entity(x => x.Specialty, 5); Entity(x => x.PractitionerIdNumbers, 6); Entity(x => x.Privileges, 7); - Value(x => x.DateEnteredPractice, 8, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.DateEnteredPractice, 8, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.Institution, 9); - Value(x => x.DateLeftPractice, 10, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.DateLeftPractice, 10, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.GovernmentReimbursementBillingEligibility, 11); Value(x => x.SetId, 12); } diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PRBMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PRBMap.cs index 0835065ac..5b0a00d00 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PRBMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PRBMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,22 +17,26 @@ public PRBMap() Name = "Problem Details"; - Value(x => x.ActionCode, 1, x => {x.Required = true;}); - Value(x => x.ActionDateTime, 2, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;x.Required = true;}); - Entity(x => x.ProblemId, 3, x => {x.Required = true;}); - Entity(x => x.ProblemInstanceId, 4, x => {x.Required = true;}); + Value(x => x.ActionCode, 1, x => x.IsRequired()); + Value(x => x.ActionDateTime, 2, x => + { + x.Converter = HL7.HL7ValueConverters.VariableLongDateTime; + x.Required = true; + }); + Entity(x => x.ProblemId, 3, x => x.IsRequired()); + Entity(x => x.ProblemInstanceId, 4, x => x.IsRequired()); Entity(x => x.EpisodeOfCareId, 5); Value(x => x.ProblemListPriority, 6); - Value(x => x.ProblemEstablishedDateTime, 7, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.AnticipatedProblemResolutionDateTime, 8, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.ActualProblemResolutionDateTime, 9, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.ProblemEstablishedDateTime, 7, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.AnticipatedProblemResolutionDateTime, 8, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.ActualProblemResolutionDateTime, 9, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.ProblemClassification, 10); Entity(x => x.ProblemManagementDiscipline, 11); Entity(x => x.ProblemPersistence, 12); Entity(x => x.ProblemConfirmationStatus, 13); Entity(x => x.ProblemLifeCycleStatus, 14); - Value(x => x.ProblemLifeCycleStatusDateTime, 15, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.ProblemDateOfOnset, 16, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.ProblemLifeCycleStatusDateTime, 15, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.ProblemDateOfOnset, 16, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.ProblemOnsetText, 17); Entity(x => x.ProblemRanking, 18); Entity(x => x.CertaintyOfProblem, 19); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PRCMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PRCMap.cs index 4281798fa..43823c220 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PRCMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PRCMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,7 +17,7 @@ public PRCMap() Name = "Pricing"; - Entity(x => x.PrimaryKeyValue, 1, x => {x.Required = true;}); + Entity(x => x.PrimaryKeyValue, 1, x => x.IsRequired()); Entity(x => x.FacilityId, 2); Entity(x => x.Department, 3); Value(x => x.ValidPatientClasses, 4); @@ -27,8 +27,8 @@ public PRCMap() Value(x => x.MaximumQuantity, 8); Entity(x => x.MinimumPrice, 9); Entity(x => x.MaximumPrice, 10); - Value(x => x.EffectiveStartDate, 11, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.EffectiveEndDate, 12, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.EffectiveStartDate, 11, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.EffectiveEndDate, 12, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.PriceOverrideFlag, 13); Entity(x => x.BillingCategory, 14); Value(x => x.ChargeableFlag, 15); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PRDMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PRDMap.cs index 68ee59da0..a80068e39 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PRDMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PRDMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,15 +17,15 @@ public PRDMap() Name = "Provider Data"; - Entity(x => x.ProviderRole, 1, x => {x.Required = true;}); + Entity(x => x.ProviderRole, 1, x => x.IsRequired()); Entity(x => x.ProviderName, 2); Entity(x => x.ProviderAddress, 3); Entity(x => x.ProviderLocation, 4); Entity(x => x.ProviderCommunicationInformation, 5); Entity(x => x.PreferredMethodOfContact, 6); Entity(x => x.ProviderIdentifiers, 7); - Value(x => x.EffectiveStartDateOfProviderRole, 8, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.EffectiveEndDateOfProviderRole, 9, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.EffectiveStartDateOfProviderRole, 8, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.EffectiveEndDateOfProviderRole, 9, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.ProviderOrganizationNameAndIdentifier, 10); Entity(x => x.ProviderOrganizationAddress, 11); Entity(x => x.ProviderOrganizationLocationInformation, 12); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PSGMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PSGMap.cs index f4b6e49f3..bb4aa5540 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PSGMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PSGMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,12 +17,12 @@ public PSGMap() Name = "Product/Service Group"; - Entity(x => x.ProviderProductServiceGroupNumber, 1, x => {x.Required = true;}); + Entity(x => x.ProviderProductServiceGroupNumber, 1, x => x.IsRequired()); Entity(x => x.PayerProductServiceGroupNumber, 2); - Value(x => x.ProductServiceGroupSequenceNumber, 3, x => {x.Required = true;}); - Value(x => x.AdjudicateAsGroup, 4, x => {x.Required = true;}); - Entity(x => x.ProductServiceGroupBilledAmount, 5, x => {x.Required = true;}); - Value(x => x.ProductServiceGroupDescription, 6, x => {x.Required = true;}); + Value(x => x.ProductServiceGroupSequenceNumber, 3, x => x.IsRequired()); + Value(x => x.AdjudicateAsGroup, 4, x => x.IsRequired()); + Entity(x => x.ProductServiceGroupBilledAmount, 5, x => x.IsRequired()); + Value(x => x.ProductServiceGroupDescription, 6, x => x.IsRequired()); } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PSHMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PSHMap.cs index b3803ec6b..9a6efa2f4 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PSHMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PSHMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,11 +17,15 @@ public PSHMap() Name = "Product Summary Header"; - Value(x => x.ReportType, 1, x => {x.Required = true;}); + Value(x => x.ReportType, 1, x => x.IsRequired()); Value(x => x.ReportFormIdentifier, 2); - Value(x => x.ReportDate, 3, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;x.Required = true;}); - Value(x => x.ReportIntervalStartDate, 4, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.ReportIntervalEndDate, 5, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.ReportDate, 3, x => + { + x.Converter = HL7.HL7ValueConverters.VariableLongDateTime; + x.IsRequired(); + }); + Value(x => x.ReportIntervalStartDate, 4, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.ReportIntervalEndDate, 5, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.QuantityManufactured, 6); Entity(x => x.QuantityDistributed, 7); Value(x => x.QuantityDistributedMethod, 8); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PSLMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PSLMap.cs index 0ceebdbc9..92dc4d9bc 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PSLMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PSLMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,17 +17,17 @@ public PSLMap() Name = "Product/Service Line Item"; - Entity(x => x.ProviderProductServiceLineItemNumber, 1, x => {x.Required = true;}); + Entity(x => x.ProviderProductServiceLineItemNumber, 1, x => x.IsRequired()); Entity(x => x.PayerProductServiceLineItemNumber, 2); - Value(x => x.ProductServiceLineItemSequenceNumber, 3, x => {x.Required = true;}); + Value(x => x.ProductServiceLineItemSequenceNumber, 3, x => x.IsRequired()); Entity(x => x.ProviderTrackingId, 4); Entity(x => x.PayerTrackingId, 5); - Entity(x => x.ProductServiceLineItemStatus, 6, x => {x.Required = true;}); - Entity(x => x.ProductServiceCode, 7, x => {x.Required = true;}); + Entity(x => x.ProductServiceLineItemStatus, 6, x => x.IsRequired()); + Entity(x => x.ProductServiceCode, 7, x => x.IsRequired()); Entity(x => x.ProductServiceCodeModifier, 8); Value(x => x.ProductServiceCodeDescription, 9); - Value(x => x.ProductServiceEffectiveDate, 10, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.ProductServiceExpirationDate, 11, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.ProductServiceEffectiveDate, 10, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.ProductServiceExpirationDate, 11, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.ProductServiceQuantity, 12); Entity(x => x.ProductServiceUnitCost, 13); Value(x => x.NumberOfItemsPerUnit, 14); @@ -37,7 +37,7 @@ public PSLMap() Value(x => x.ProductServiceClarificationCodeValue, 18); Entity(x => x.HealthDocumentReferenceIdentifier, 19); Value(x => x.ProcessingConsiderationCode, 20); - Value(x => x.RestrictedDisclosureIndicator, 21, x => {x.Required = true;}); + Value(x => x.RestrictedDisclosureIndicator, 21, x => x.IsRequired()); Entity(x => x.RelatedProductServiceCodeIndicator, 22); Entity(x => x.ProductServiceAmountForPhysician, 23); Value(x => x.ProductServiceCostFactor, 24); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PSSMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PSSMap.cs index b293a78a6..70c50b4bb 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PSSMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PSSMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,11 +17,11 @@ public PSSMap() Name = "Product/Service Section"; - Entity(x => x.ProviderProductServiceSectionNumber, 1, x => {x.Required = true;}); + Entity(x => x.ProviderProductServiceSectionNumber, 1, x => x.IsRequired()); Entity(x => x.PayerProductServiceSectionNumber, 2); - Value(x => x.ProductServiceSectionSequenceNumber, 3, x => {x.Required = true;}); - Entity(x => x.BilledAmount, 4, x => {x.Required = true;}); - Value(x => x.SectionDescriptionOrHeading, 5, x => {x.Required = true;}); + Value(x => x.ProductServiceSectionSequenceNumber, 3, x => x.IsRequired()); + Entity(x => x.BilledAmount, 4, x => x.IsRequired()); + Value(x => x.SectionDescriptionOrHeading, 5, x => x.IsRequired()); } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PTHMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PTHMap.cs index fdc89fbbf..8ee981191 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PTHMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PTHMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,12 +17,16 @@ public PTHMap() Name = "Pathway"; - Value(x => x.ActionCode, 1, x => {x.Required = true;}); - Entity(x => x.PathwayId, 2, x => {x.Required = true;}); - Entity(x => x.PathwayInstanceId, 3, x => {x.Required = true;}); - Value(x => x.PathwayEstablishedDateTime, 4, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;x.Required = true;}); + Value(x => x.ActionCode, 1, x => x.IsRequired()); + Entity(x => x.PathwayId, 2, x => x.IsRequired()); + Entity(x => x.PathwayInstanceId, 3, x => x.IsRequired()); + Value(x => x.PathwayEstablishedDateTime, 4, x => + { + x.Converter = HL7.HL7ValueConverters.VariableLongDateTime; + x.IsRequired(); + }); Entity(x => x.PathwayLifeCycleStatus, 5); - Value(x => x.ChangePathwayLifeCycleStatusDateTime, 6, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.ChangePathwayLifeCycleStatusDateTime, 6, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.MoodCode, 7); } } diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PV1Map.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PV1Map.cs index 993978e32..8caa6ec26 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PV1Map.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PV1Map.cs @@ -1,74 +1,74 @@ // This file was automatically generated and may be regenerated at any // time. To ensure any changes are retained, modify the tool with any segment/component/group/field name -// or type changes. -namespace Machete.HL7Schema.V26.Maps -{ - using V26; - - /// - /// PV1 (SegmentMap) - Patient Visit - /// - public class PV1Map : - HL7V26SegmentMap - { - public PV1Map() - { - Id = "PV1"; - - Name = "Patient Visit"; - - Value(x => x.SetId, 1); - Value(x => x.PatientClass, 2, x => {x.Required = true;}); - Entity(x => x.AssignedPatientLocation, 3); - Value(x => x.AdmissionType, 4); - Entity(x => x.PreadmitNumber, 5); - Entity(x => x.PriorPatientLocation, 6); - Entity(x => x.AttendingDoctor, 7); - Entity(x => x.ReferringDoctor, 8); - Entity(x => x.ConsultingDoctor, 9); - Value(x => x.HospitalService, 10); - Entity(x => x.TemporaryLocation, 11); - Value(x => x.PreadmitTestIndicator, 12); - Value(x => x.ReAdmissionIndicator, 13); - Value(x => x.AdmitSource, 14); - Value(x => x.AmbulatoryStatus, 15); - Value(x => x.VIPIndicator, 16); - Entity(x => x.AdmittingDoctor, 17); - Value(x => x.PatientType, 18); - Entity(x => x.VisitNumber, 19); - Entity(x => x.FinancialClass, 20); - Value(x => x.ChargePriceIndicator, 21); - Value(x => x.CourtesyCode, 22); - Value(x => x.CreditRating, 23); - Value(x => x.ContractCode, 24); - Value(x => x.ContractEffectiveDate, 25, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.ContractAmount, 26); - Value(x => x.ContractPeriod, 27); - Value(x => x.InterestCode, 28); - Value(x => x.TransferToBadDebtCode, 29); - Value(x => x.TransferToBadDebtDate, 30, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.BadDebtAgencyCode, 31); - Value(x => x.BadDebtTransferAmount, 32); - Value(x => x.BadDebtRecoveryAmount, 33); - Value(x => x.DeleteAccountIndicator, 34); - Value(x => x.DeleteAccountDate, 35, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.DischargeDisposition, 36); - Entity(x => x.DischargedToLocation, 37); - Entity(x => x.DietType, 38); - Value(x => x.ServicingFacility, 39); - Value(x => x.BedStatus, 40); - Value(x => x.AccountStatus, 41); - Entity(x => x.PendingLocation, 42); - Entity(x => x.PriorTemporaryLocation, 43); - Value(x => x.AdmitDateTime, 44, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.DischargeDateTime, 45, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.CurrentPatientBalance, 46); - Value(x => x.TotalCharges, 47); - Value(x => x.TotalAdjustments, 48); - Value(x => x.TotalPayments, 49); - Entity(x => x.AlternateVisitId, 50); - Value(x => x.VisitIndicator, 51); - Entity(x => x.OtherHealthcareProvider, 52); - } - } +// or type changes. +namespace Machete.HL7Schema.V26.Maps +{ + using V26; + + /// + /// PV1 (SegmentMap) - Patient Visit + /// + public class PV1Map : + HL7V26SegmentMap + { + public PV1Map() + { + Id = "PV1"; + + Name = "Patient Visit"; + + Value(x => x.SetId, 1); + Value(x => x.PatientClass, 2, x => {x.Required = true;}); + Entity(x => x.AssignedPatientLocation, 3); + Value(x => x.AdmissionType, 4); + Entity(x => x.PreAdmitNumber, 5); + Entity(x => x.PriorPatientLocation, 6); + Entity(x => x.AttendingDoctor, 7); + Entity(x => x.ReferringDoctor, 8); + Entity(x => x.ConsultingDoctor, 9); + Value(x => x.HospitalService, 10); + Entity(x => x.TemporaryLocation, 11); + Value(x => x.PreAdmitTestIndicator, 12); + Value(x => x.ReAdmissionIndicator, 13); + Value(x => x.AdmitSource, 14); + Value(x => x.AmbulatoryStatus, 15); + Value(x => x.VIPIndicator, 16); + Entity(x => x.AdmittingDoctor, 17); + Value(x => x.PatientType, 18); + Entity(x => x.VisitNumber, 19); + Entity(x => x.FinancialClass, 20); + Value(x => x.ChargePriceIndicator, 21); + Value(x => x.CourtesyCode, 22); + Value(x => x.CreditRating, 23); + Value(x => x.ContractCode, 24); + Value(x => x.ContractEffectiveDate, 25, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.ContractAmount, 26); + Value(x => x.ContractPeriod, 27); + Value(x => x.InterestCode, 28); + Value(x => x.TransferToBadDebtCode, 29); + Value(x => x.TransferToBadDebtDate, 30, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.BadDebtAgencyCode, 31); + Value(x => x.BadDebtTransferAmount, 32); + Value(x => x.BadDebtRecoveryAmount, 33); + Value(x => x.DeleteAccountIndicator, 34); + Value(x => x.DeleteAccountDate, 35, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.DischargeDisposition, 36); + Entity(x => x.DischargedToLocation, 37); + Entity(x => x.DietType, 38); + Value(x => x.ServicingFacility, 39); + Value(x => x.BedStatus, 40); + Value(x => x.AccountStatus, 41); + Entity(x => x.PendingLocation, 42); + Entity(x => x.PriorTemporaryLocation, 43); + Value(x => x.AdmitDateTime, 44, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.DischargeDateTime, 45, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.CurrentPatientBalance, 46); + Value(x => x.TotalCharges, 47); + Value(x => x.TotalAdjustments, 48); + Value(x => x.TotalPayments, 49); + Entity(x => x.AlternateVisitId, 50); + Value(x => x.VisitIndicator, 51); + Entity(x => x.OtherHealthcareProvider, 52); + } + } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PV2Map.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PV2Map.cs index 49b2d9417..71dfa696c 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PV2Map.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PV2Map.cs @@ -1,72 +1,72 @@ // This file was automatically generated and may be regenerated at any // time. To ensure any changes are retained, modify the tool with any segment/component/group/field name -// or type changes. -namespace Machete.HL7Schema.V26.Maps -{ - using V26; - - /// - /// PV2 (SegmentMap) - Patient Visit - Additional Information - /// - public class PV2Map : - HL7V26SegmentMap - { - public PV2Map() - { - Id = "PV2"; - - Name = "Patient Visit - Additional Information"; - - Entity(x => x.PriorPendingLocation, 1); - Entity(x => x.AccommodationCode, 2); - Entity(x => x.AdmitReason, 3); - Entity(x => x.TransferReason, 4); - Value(x => x.PatientValuables, 5); - Value(x => x.PatientValuablesLocation, 6); - Value(x => x.VisitUserCode, 7); - Value(x => x.ExpectedAdmitDateTime, 8, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.ExpectedDischargeDateTime, 9, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.EstimatedLengthOfInpatientStay, 10); - Value(x => x.ActualLengthOfInpatientStay, 11); - Value(x => x.VisitDescription, 12); - Entity(x => x.ReferralSourceCode, 13); - Value(x => x.PreviouServiceDate, 14, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.EmploymentIllnessRelatedIndicator, 15); - Value(x => x.PurgeStatusCode, 16); - Value(x => x.PurgeStatusDate, 17, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.SpecialProgramCode, 18); - Value(x => x.RetentionIndicator, 19); - Value(x => x.ExpectedNumberOfInsurancePlans, 20); - Value(x => x.VisitPublicityCode, 21); - Value(x => x.VisitProtectionIndicator, 22); - Entity(x => x.ClinicOrganizationName, 23); - Value(x => x.PatientStatusCode, 24); - Value(x => x.VisitPriorityCode, 25); - Value(x => x.PreviouTreatmentDate, 26, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.ExpectedDischargeDisposition, 27); - Value(x => x.SignatureOnFileDate, 28, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.FirstSimilarIllnessDate, 29, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Entity(x => x.PatientChargeAdjustmentCode, 30); - Value(x => x.RecurringServiceCode, 31); - Value(x => x.BillingMediaCode, 32); - Value(x => x.ExpectedSurgeryDateAndTime, 33, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.MilitaryPartnershipCode, 34); - Value(x => x.MilitaryNonAvailabilityCode, 35); - Value(x => x.NewbornBabyIndicator, 36); - Value(x => x.BabyDetainedIndicator, 37); - Entity(x => x.ModeOfArrivalCode, 38); - Entity(x => x.RecreationalDrugUseCode, 39); - Entity(x => x.AdmissionLevelOfCareCode, 40); - Entity(x => x.PrecautionCode, 41); - Entity(x => x.PatientConditionCode, 42); - Value(x => x.LivingWillCode, 43); - Value(x => x.OrganDonorCode, 44); - Entity(x => x.AdvanceDirectiveCode, 45); - Value(x => x.PatientStatusEffectiveDate, 46, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.ExpectedLOAReturnDateTime, 47, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.ExpectedPreAdmissionTestingDateTime, 48, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.NotifyClergyCode, 49); - Value(x => x.AdvanceDirectiveLastVerifiedDate, 50, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - } - } +// or type changes. +namespace Machete.HL7Schema.V26.Maps +{ + using V26; + + /// + /// PV2 (SegmentMap) - Patient Visit - Additional Information + /// + public class PV2Map : + HL7V26SegmentMap + { + public PV2Map() + { + Id = "PV2"; + + Name = "Patient Visit - Additional Information"; + + Entity(x => x.PriorPendingLocation, 1); + Entity(x => x.AccommodationCode, 2); + Entity(x => x.AdmitReason, 3); + Entity(x => x.TransferReason, 4); + Value(x => x.PatientValuables, 5); + Value(x => x.PatientValuablesLocation, 6); + Value(x => x.VisitUserCode, 7); + Value(x => x.ExpectedAdmitDateTime, 8, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.ExpectedDischargeDateTime, 9, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.EstimatedLengthOfInpatientStay, 10); + Value(x => x.ActualLengthOfInpatientStay, 11); + Value(x => x.VisitDescription, 12); + Entity(x => x.ReferralSourceCode, 13); + Value(x => x.PreviousServiceDate, 14, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.EmploymentIllnessRelatedIndicator, 15); + Value(x => x.PurgeStatusCode, 16); + Value(x => x.PurgeStatusDate, 17, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.SpecialProgramCode, 18); + Value(x => x.RetentionIndicator, 19); + Value(x => x.ExpectedNumberOfInsurancePlans, 20); + Value(x => x.VisitPublicityCode, 21); + Value(x => x.VisitProtectionIndicator, 22); + Entity(x => x.ClinicOrganizationName, 23); + Value(x => x.PatientStatusCode, 24); + Value(x => x.VisitPriorityCode, 25); + Value(x => x.PreviouTreatmentDate, 26, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.ExpectedDischargeDisposition, 27); + Value(x => x.SignatureOnFileDate, 28, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.FirstSimilarIllnessDate, 29, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Entity(x => x.PatientChargeAdjustmentCode, 30); + Value(x => x.RecurringServiceCode, 31); + Value(x => x.BillingMediaCode, 32); + Value(x => x.ExpectedSurgeryDateAndTime, 33, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.MilitaryPartnershipCode, 34); + Value(x => x.MilitaryNonAvailabilityCode, 35); + Value(x => x.NewbornBabyIndicator, 36); + Value(x => x.BabyDetainedIndicator, 37); + Entity(x => x.ModeOfArrivalCode, 38); + Entity(x => x.RecreationalDrugUseCode, 39); + Entity(x => x.AdmissionLevelOfCareCode, 40); + Entity(x => x.PrecautionCode, 41); + Entity(x => x.PatientConditionCode, 42); + Value(x => x.LivingWillCode, 43); + Value(x => x.OrganDonorCode, 44); + Entity(x => x.AdvanceDirectiveCode, 45); + Value(x => x.PatientStatusEffectiveDate, 46, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.ExpectedLOAReturnDateTime, 47, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.ExpectedPreAdmissionTestingDateTime, 48, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.NotifyClergyCode, 49); + Value(x => x.AdvanceDirectiveLastVerifiedDate, 50, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + } + } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PYEMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PYEMap.cs index 5a483874d..b16bc8561 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PYEMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/PYEMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,8 +17,8 @@ public PYEMap() Name = "Payee Information"; - Value(x => x.SetId, 1, x => {x.Required = true;}); - Value(x => x.PayeeType, 2, x => {x.Required = true;}); + Value(x => x.SetId, 1, x => x.IsRequired()); + Value(x => x.PayeeType, 2, x => x.IsRequired()); Value(x => x.PayeeRelationshipToInvoicePatient, 3); Entity(x => x.PayeeIdentificationList, 4); Entity(x => x.PayeePersonName, 5); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/QAKMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/QAKMap.cs index 01e849080..3636aabef 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/QAKMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/QAKMap.cs @@ -1,28 +1,28 @@ // This file was automatically generated and may be regenerated at any // time. To ensure any changes are retained, modify the tool with any segment/component/group/field name -// or type changes. -namespace Machete.HL7Schema.V26.Maps -{ - using V26; - - /// - /// QAK (SegmentMap) - Query Acknowledgment - /// - public class QAKMap : - HL7V26SegmentMap - { - public QAKMap() - { - Id = "QAK"; - - Name = "Query Acknowledgment"; - - Value(x => x.QueryTag, 1); - Value(x => x.QueryResponseStatus, 2); - Entity(x => x.MessageQueryName, 3); - Value(x => x.HitCountTotal, 4); - Value(x => x.ThiPayload, 5); - Value(x => x.HitRemaining, 6); - } - } +// or type changes. +namespace Machete.HL7Schema.V26.Maps +{ + using V26; + + /// + /// QAK (SegmentMap) - Query Acknowledgment + /// + public class QAKMap : + HL7V26SegmentMap + { + public QAKMap() + { + Id = "QAK"; + + Name = "Query Acknowledgment"; + + Value(x => x.QueryTag, 1); + Value(x => x.QueryResponseStatus, 2); + Entity(x => x.MessageQueryName, 3); + Value(x => x.HitCountTotal, 4); + Value(x => x.ThiPayload, 5); + Value(x => x.HitsRemaining, 6); + } + } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/QIDMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/QIDMap.cs index ef795c354..33d482454 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/QIDMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/QIDMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,8 +17,8 @@ public QIDMap() Name = "Query Identification"; - Value(x => x.QueryTag, 1, x => {x.Required = true;}); - Entity(x => x.MessageQueryName, 2, x => {x.Required = true;}); + Value(x => x.QueryTag, 1, x => x.IsRequired()); + Entity(x => x.MessageQueryName, 2, x => x.IsRequired()); } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/QPDMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/QPDMap.cs index 74fd8c9c0..9d06c955d 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/QPDMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/QPDMap.cs @@ -1,25 +1,25 @@ // This file was automatically generated and may be regenerated at any // time. To ensure any changes are retained, modify the tool with any segment/component/group/field name -// or type changes. -namespace Machete.HL7Schema.V26.Maps -{ - using V26; - - /// - /// QPD (SegmentMap) - Query Parameter Definition - /// - public class QPDMap : - HL7V26SegmentMap - { - public QPDMap() - { - Id = "QPD"; - - Name = "Query Parameter Definition"; - - Entity(x => x.MessageQueryName, 1, x => {x.Required = true;}); - Value(x => x.QueryTag, 2); - Value(x => x.UserParametersInsuccessivefields, 3); - } - } +// or type changes. +namespace Machete.HL7Schema.V26.Maps +{ + using V26; + + /// + /// QPD (SegmentMap) - Query Parameter Definition + /// + public class QPDMap : + HL7V26SegmentMap + { + public QPDMap() + { + Id = "QPD"; + + Name = "Query Parameter Definition"; + + Entity(x => x.MessageQueryName, 1, x => {x.Required = true;}); + Value(x => x.QueryTag, 2); + Value(x => x.UserParametersInSuccessivefields, 3); + } + } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/QRDMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/QRDMap.cs index 65f03c09d..653d2df1b 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/QRDMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/QRDMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,16 +17,20 @@ public QRDMap() Name = "Original-Style Query Definition"; - Value(x => x.QueryDateTime, 1, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;x.Required = true;}); - Value(x => x.QueryFormatCode, 2, x => {x.Required = true;}); - Value(x => x.QueryPriority, 3, x => {x.Required = true;}); - Value(x => x.QueryId, 4, x => {x.Required = true;}); + Value(x => x.QueryDateTime, 1, x => + { + x.Converter = HL7.HL7ValueConverters.VariableLongDateTime; + x.IsRequired(); + }); + Value(x => x.QueryFormatCode, 2, x => x.IsRequired()); + Value(x => x.QueryPriority, 3, x => x.IsRequired()); + Value(x => x.QueryId, 4, x => x.IsRequired()); Value(x => x.DeferredResponseType, 5); - Value(x => x.DeferredResponseDateTime, 6, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Entity(x => x.QuantityLimitedRequest, 7, x => {x.Required = true;}); - Entity(x => x.WhoSubjectFilter, 8, x => {x.Required = true;}); - Entity(x => x.WhatSubjectFilter, 9, x => {x.Required = true;}); - Entity(x => x.WhatDepartmentDataCode, 10, x => {x.Required = true;}); + Value(x => x.DeferredResponseDateTime, 6, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Entity(x => x.QuantityLimitedRequest, 7, x => x.IsRequired()); + Entity(x => x.WhoSubjectFilter, 8, x => x.IsRequired()); + Entity(x => x.WhatSubjectFilter, 9, x => x.IsRequired()); + Entity(x => x.WhatDepartmentDataCode, 10, x => x.IsRequired()); Entity(x => x.WhatDataCodeValueQual, 11); Value(x => x.QueryResultsLevel, 12); } diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/QRFMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/QRFMap.cs index 85af89ed8..998659b19 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/QRFMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/QRFMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,9 +17,9 @@ public QRFMap() Name = "Original style query filter"; - Value(x => x.WhereSubjectFilter, 1, x => {x.Required = true;}); - Value(x => x.WhenDataStartDateTime, 2, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.WhenDataEndDateTime, 3, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.WhereSubjectFilter, 1, x => x.IsRequired()); + Value(x => x.WhenDataStartDateTime, 2, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.WhenDataEndDateTime, 3, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.WhatUserQualifier, 4); Value(x => x.OtherQRYSubjectFilter, 5); Value(x => x.WhichDateTimeQualifier, 6); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RCPMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RCPMap.cs index a11bb1431..e3309fee3 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RCPMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RCPMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -20,7 +20,7 @@ public RCPMap() Value(x => x.QueryPriority, 1); Entity(x => x.QuantityLimitedRequest, 2); Entity(x => x.ResponseModality, 3); - Value(x => x.ExecutionAndDeliveryTime, 4, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.ExecutionAndDeliveryTime, 4, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.ModifyIndicator, 5); Entity(x => x.SortByField, 6); Value(x => x.SegmentGroupInclusion, 7); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RDFMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RDFMap.cs index 4d13d9dfc..a3f9eea92 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RDFMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RDFMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,8 +17,8 @@ public RDFMap() Name = "Table Row Definition"; - Value(x => x.NumberOfColumnsPerRow, 1, x => {x.Required = true;}); - Entity(x => x.ColumnDescription, 2, x => {x.Required = true;}); + Value(x => x.NumberOfColumnsPerRow, 1, x => x.IsRequired()); + Entity(x => x.ColumnDescription, 2, x => x.IsRequired()); } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RDTMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RDTMap.cs index a410c0585..fb726df6a 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RDTMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RDTMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,7 +17,7 @@ public RDTMap() Name = "Table Row Data"; - Value(x => x.ColumnValue, 1, x => {x.Required = true;}); + Value(x => x.ColumnValue, 1, x => x.IsRequired()); } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RELMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RELMap.cs index 552e15801..cac3844ab 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RELMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RELMap.cs @@ -1,38 +1,38 @@ // This file was automatically generated and may be regenerated at any // time. To ensure any changes are retained, modify the tool with any segment/component/group/field name -// or type changes. -namespace Machete.HL7Schema.V26.Maps -{ - using V26; - - /// - /// REL (SegmentMap) - Clinical Relationship Segment - /// - public class RELMap : - HL7V26SegmentMap - { - public RELMap() - { - Id = "REL"; - - Name = "Clinical Relationship Segment"; - - Value(x => x.SetId, 1); - Entity(x => x.RelationshipType, 2, x => {x.Required = true;}); - Entity(x => x.ThiRelationshipInstanceIdentifier, 3, x => {x.Required = true;}); - Entity(x => x.SourceInformationInstanceIdentifier, 4, x => {x.Required = true;}); - Entity(x => x.TargetInformationInstanceIdentifier, 5, x => {x.Required = true;}); - Entity(x => x.AssertingEntityInstanceId, 6); - Entity(x => x.AssertingPerson, 7); - Entity(x => x.AssertingOrganization, 8); - Entity(x => x.AssertorAddress, 9); - Entity(x => x.AssertorContact, 10); - Entity(x => x.AssertionDateRange, 11); - Value(x => x.NegationIndicator, 12); - Entity(x => x.CertaintyOfRelationship, 13); - Value(x => x.PriorityNo, 14); - Value(x => x.PrioritySequenceNoRelpreferenceforconsideration, 15); - Value(x => x.SeparabilityIndicator, 16); - } - } +// or type changes. +namespace Machete.HL7Schema.V26.Maps +{ + using V26; + + /// + /// REL (SegmentMap) - Clinical Relationship Segment + /// + public class RELMap : + HL7V26SegmentMap + { + public RELMap() + { + Id = "REL"; + + Name = "Clinical Relationship Segment"; + + Value(x => x.SetId, 1); + Entity(x => x.RelationshipType, 2, x => {x.Required = true;}); + Entity(x => x.ThiRelationshipInstanceIdentifier, 3, x => {x.Required = true;}); + Entity(x => x.SourceInformationInstanceIdentifier, 4, x => {x.Required = true;}); + Entity(x => x.TargetInformationInstanceIdentifier, 5, x => {x.Required = true;}); + Entity(x => x.AssertingEntityInstanceId, 6); + Entity(x => x.AssertingPerson, 7); + Entity(x => x.AssertingOrganization, 8); + Entity(x => x.AssertorAddress, 9); + Entity(x => x.AssertorContact, 10); + Entity(x => x.AssertionDateRange, 11); + Value(x => x.NegationIndicator, 12); + Entity(x => x.CertaintyOfRelationship, 13); + Value(x => x.PriorityNumber, 14); + Value(x => x.PrioritySequenceNumber, 15); + Value(x => x.SeparabilityIndicator, 16); + } + } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RF1Map.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RF1Map.cs index 95f6c6dd2..6af1ae41f 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RF1Map.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RF1Map.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -22,10 +22,10 @@ public RF1Map() Entity(x => x.ReferralType, 3); Entity(x => x.ReferralDisposition, 4); Entity(x => x.ReferralCategory, 5); - Entity(x => x.OriginatingReferralIdentifier, 6, x => {x.Required = true;}); - Value(x => x.EffectiveDate, 7, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.ExpirationDate, 8, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.ProceDate, 9, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Entity(x => x.OriginatingReferralIdentifier, 6, x => x.IsRequired()); + Value(x => x.EffectiveDate, 7, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.ExpirationDate, 8, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.ProceDate, 9, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.ReferralReason, 10); Entity(x => x.ExternalReferralIdentifier, 11); Entity(x => x.ReferralDocumentationCompletionStatus, 12); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RFIMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RFIMap.cs index e04fdafc6..9e925332a 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RFIMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RFIMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,10 +17,18 @@ public RFIMap() Name = "Request for Information"; - Value(x => x.RequestDate, 1, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;x.Required = true;}); - Value(x => x.ResponseDueDate, 2, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;x.Required = true;}); + Value(x => x.RequestDate, 1, x => + { + x.Converter = HL7.HL7ValueConverters.VariableLongDateTime; + x.IsRequired(); + }); + Value(x => x.ResponseDueDate, 2, x => + { + x.Converter = HL7.HL7ValueConverters.VariableLongDateTime; + x.IsRequired(); + }); Value(x => x.PatientConsent, 3); - Value(x => x.DateAdditionalInformationWasSubmitted, 4, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.DateAdditionalInformationWasSubmitted, 4, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RGSMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RGSMap.cs index eab014929..9d0a6a6b4 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RGSMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RGSMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,7 +17,7 @@ public RGSMap() Name = "Resource Group"; - Value(x => x.SetId, 1, x => {x.Required = true;}); + Value(x => x.SetId, 1, x => x.IsRequired()); Value(x => x.SegmentActionCode, 2); Entity(x => x.ResourceGroupId, 3); } diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RMIMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RMIMap.cs index 8f59bb9c8..76867e86d 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RMIMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RMIMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -18,7 +18,7 @@ public RMIMap() Name = "Risk Management Incident"; Entity(x => x.RiskManagementIncidentCode, 1); - Value(x => x.DateTimeIncident, 2, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.DateTimeIncident, 2, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.IncidentTypeCode, 3); } } diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ROLMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ROLMap.cs index e31bcad35..74167cdd2 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ROLMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/ROLMap.cs @@ -1,35 +1,35 @@ // This file was automatically generated and may be regenerated at any // time. To ensure any changes are retained, modify the tool with any segment/component/group/field name -// or type changes. -namespace Machete.HL7Schema.V26.Maps -{ - using V26; - - /// - /// ROL (SegmentMap) - Role - /// - public class ROLMap : - HL7V26SegmentMap - { - public ROLMap() - { - Id = "ROL"; - - Name = "Role"; - - Entity(x => x.RoleInstanceId, 1); - Value(x => x.ActionCode, 2, x => {x.Required = true;}); - Entity(x => x.Role, 3, x => {x.Required = true;}); - Entity(x => x.RolePerson, 4, x => {x.Required = true;}); - Value(x => x.RoleBeginDateTime, 5, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.RoleEndDateTime, 6, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Entity(x => x.RoleDuration, 7); - Entity(x => x.RoleActionReason, 8); - Entity(x => x.ProviderType, 9); - Entity(x => x.OrganizationUnitType, 10); - Entity(x => x.OfficeHomeAddressBirthplace, 11); - Entity(x => x.Phone, 12); - Entity(x => x.PersonSLocation, 13); - } - } +// or type changes. +namespace Machete.HL7Schema.V26.Maps +{ + using V26; + + /// + /// ROL (SegmentMap) - Role + /// + public class ROLMap : + HL7V26SegmentMap + { + public ROLMap() + { + Id = "ROL"; + + Name = "Role"; + + Entity(x => x.RoleInstanceId, 1); + Value(x => x.ActionCode, 2, x => {x.Required = true;}); + Entity(x => x.Role, 3, x => {x.Required = true;}); + Entity(x => x.RolePerson, 4, x => {x.Required = true;}); + Value(x => x.RoleBeginDateTime, 5, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.RoleEndDateTime, 6, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Entity(x => x.RoleDuration, 7); + Entity(x => x.RoleActionReason, 8); + Entity(x => x.ProviderType, 9); + Entity(x => x.OrganizationUnitType, 10); + Entity(x => x.OfficeHomeAddressBirthplace, 11); + Entity(x => x.Phone, 12); + Entity(x => x.PersonLocation, 13); + } + } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RQDMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RQDMap.cs index 7a06b621b..3d3fc7b92 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RQDMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RQDMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -26,7 +26,7 @@ public RQDMap() Value(x => x.CostCenterAccountNumber, 7); Value(x => x.ItemNaturalAccountCode, 8); Entity(x => x.DeliverToId, 9); - Value(x => x.DateNeeded, 10, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.DateNeeded, 10, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RXAMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RXAMap.cs index bb541593b..4e39ac01e 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RXAMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RXAMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,12 +17,20 @@ public RXAMap() Name = "Pharmacy/Treatment Administration"; - Value(x => x.GiveSubIdCounter, 1, x => {x.Required = true;}); - Value(x => x.AdministrationSubIdCounter, 2, x => {x.Required = true;}); - Value(x => x.DateTimeStartOfAdministration, 3, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;x.Required = true;}); - Value(x => x.DateTimeEndOfAdministration, 4, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;x.Required = true;}); - Entity(x => x.AdministeredCode, 5, x => {x.Required = true;}); - Value(x => x.AdministeredAmount, 6, x => {x.Required = true;}); + Value(x => x.GiveSubIdCounter, 1, x => x.IsRequired()); + Value(x => x.AdministrationSubIdCounter, 2, x => x.IsRequired()); + Value(x => x.DateTimeStartOfAdministration, 3, x => + { + x.Converter = HL7.HL7ValueConverters.VariableLongDateTime; + x.IsRequired(); + }); + Value(x => x.DateTimeEndOfAdministration, 4, x => + { + x.Converter = HL7.HL7ValueConverters.VariableLongDateTime; + x.IsRequired(); + }); + Entity(x => x.AdministeredCode, 5, x => x.IsRequired()); + Value(x => x.AdministeredAmount, 6, x => x.IsRequired()); Entity(x => x.AdministeredUnits, 7); Entity(x => x.AdministeredDosageForm, 8); Entity(x => x.AdministrationNotes, 9); @@ -32,13 +40,13 @@ public RXAMap() Value(x => x.AdministeredStrength, 13); Entity(x => x.AdministeredStrengthUnits, 14); Value(x => x.SubstanceLotNumber, 15); - Value(x => x.SubstanceExpirationDate, 16, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.SubstanceExpirationDate, 16, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.SubstanceManufacturerName, 17); Entity(x => x.SubstanceTreatmentRefusalReason, 18); Entity(x => x.Indication, 19); Value(x => x.CompletionStatus, 20); Value(x => x.ActionCode, 21); - Value(x => x.SystemEntryDateTime, 22, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.SystemEntryDateTime, 22, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.AdministeredDrugStrengthVolume, 23); Entity(x => x.AdministeredDrugStrengthVolumeUnits, 24); Entity(x => x.AdministeredBarcodeIdentifier, 25); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RXCMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RXCMap.cs index 22f7bcbe1..22ca4e849 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RXCMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RXCMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,10 +17,10 @@ public RXCMap() Name = "Pharmacy/Treatment Component Order"; - Value(x => x.RXComponentType, 1, x => {x.Required = true;}); - Entity(x => x.ComponentCode, 2, x => {x.Required = true;}); - Value(x => x.ComponentAmount, 3, x => {x.Required = true;}); - Entity(x => x.ComponentUnits, 4, x => {x.Required = true;}); + Value(x => x.RXComponentType, 1, x => x.IsRequired()); + Entity(x => x.ComponentCode, 2, x => x.IsRequired()); + Value(x => x.ComponentAmount, 3, x => x.IsRequired()); + Entity(x => x.ComponentUnits, 4, x => x.IsRequired()); Value(x => x.ComponentStrength, 5); Entity(x => x.ComponentStrengthUnits, 6); Entity(x => x.SupplementaryCode, 7); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RXDMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RXDMap.cs index 5000e6a1c..67f913a95 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RXDMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RXDMap.cs @@ -1,55 +1,55 @@ // This file was automatically generated and may be regenerated at any // time. To ensure any changes are retained, modify the tool with any segment/component/group/field name -// or type changes. -namespace Machete.HL7Schema.V26.Maps -{ - using V26; - - /// - /// RXD (SegmentMap) - Pharmacy/Treatment Dispense - /// - public class RXDMap : - HL7V26SegmentMap - { - public RXDMap() - { - Id = "RXD"; - - Name = "Pharmacy/Treatment Dispense"; - - Value(x => x.DispenseSubIdCounter, 1, x => {x.Required = true;}); - Entity(x => x.DispenseGiveCode, 2, x => {x.Required = true;}); - Value(x => x.DateTimeDispensed, 3, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;x.Required = true;}); - Value(x => x.ActualDispenseAmount, 4, x => {x.Required = true;}); - Entity(x => x.ActualDispenseUnits, 5); - Entity(x => x.ActualDosageForm, 6); - Value(x => x.PrescriptionNumber, 7, x => {x.Required = true;}); - Value(x => x.NumberOfRefillsRemaining, 8); - Value(x => x.DispenseNotes, 9); - Entity(x => x.DispensingProvider, 10); - Value(x => x.SubstitutionStatus, 11); - Entity(x => x.TotalDailyDose, 12); - Entity(x => x.DispenseToLocation, 13); - Value(x => x.NeedHumanReview, 14); - Entity(x => x.PharmacyTreatmentSupplierSSpecialDispensingInstructions, 15); - Value(x => x.ActualStrength, 16); - Entity(x => x.ActualStrengthUnit, 17); - Value(x => x.SubstanceLotNumber, 18); - Value(x => x.SubstanceExpirationDate, 19, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Entity(x => x.SubstanceManufacturerName, 20); - Entity(x => x.Indication, 21); - Value(x => x.DispensePackageSize, 22); - Entity(x => x.DispensePackageSizeUnit, 23); - Value(x => x.DispensePackageMethod, 24); - Entity(x => x.SupplementaryCode, 25); - Entity(x => x.InitiatingLocation, 26); - Entity(x => x.PackagingAssemblyLocation, 27); - Value(x => x.ActualDrugStrengthVolume, 28); - Entity(x => x.ActualDrugStrengthVolumeUnits, 29); - Entity(x => x.DispenseToPharmacy, 30); - Entity(x => x.DispenseToPharmacyAddress, 31); - Value(x => x.PharmacyOrderType, 32); - Entity(x => x.DispenseType, 33); - } - } +// or type changes. +namespace Machete.HL7Schema.V26.Maps +{ + using V26; + + /// + /// RXD (SegmentMap) - Pharmacy/Treatment Dispense + /// + public class RXDMap : + HL7V26SegmentMap + { + public RXDMap() + { + Id = "RXD"; + + Name = "Pharmacy/Treatment Dispense"; + + Value(x => x.DispenseSubIdCounter, 1, x => {x.Required = true;}); + Entity(x => x.DispenseGiveCode, 2, x => {x.Required = true;}); + Value(x => x.DateTimeDispensed, 3, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;x.Required = true;}); + Value(x => x.ActualDispenseAmount, 4, x => {x.Required = true;}); + Entity(x => x.ActualDispenseUnits, 5); + Entity(x => x.ActualDosageForm, 6); + Value(x => x.PrescriptionNumber, 7, x => {x.Required = true;}); + Value(x => x.NumberOfRefillsRemaining, 8); + Value(x => x.DispenseNotes, 9); + Entity(x => x.DispensingProvider, 10); + Value(x => x.SubstitutionStatus, 11); + Entity(x => x.TotalDailyDose, 12); + Entity(x => x.DispenseToLocation, 13); + Value(x => x.NeedHumanReview, 14); + Entity(x => x.PharmacyTreatmentSupplierSpecialDispensingInstructions, 15); + Value(x => x.ActualStrength, 16); + Entity(x => x.ActualStrengthUnit, 17); + Value(x => x.SubstanceLotNumber, 18); + Value(x => x.SubstanceExpirationDate, 19, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Entity(x => x.SubstanceManufacturerName, 20); + Entity(x => x.Indication, 21); + Value(x => x.DispensePackageSize, 22); + Entity(x => x.DispensePackageSizeUnit, 23); + Value(x => x.DispensePackageMethod, 24); + Entity(x => x.SupplementaryCode, 25); + Entity(x => x.InitiatingLocation, 26); + Entity(x => x.PackagingAssemblyLocation, 27); + Value(x => x.ActualDrugStrengthVolume, 28); + Entity(x => x.ActualDrugStrengthVolumeUnits, 29); + Entity(x => x.DispenseToPharmacy, 30); + Entity(x => x.DispenseToPharmacyAddress, 31); + Value(x => x.PharmacyOrderType, 32); + Entity(x => x.DispenseType, 33); + } + } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RXEMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RXEMap.cs index 87928da64..2c5018292 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RXEMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RXEMap.cs @@ -1,66 +1,66 @@ // This file was automatically generated and may be regenerated at any // time. To ensure any changes are retained, modify the tool with any segment/component/group/field name -// or type changes. -namespace Machete.HL7Schema.V26.Maps -{ - using V26; - - /// - /// RXE (SegmentMap) - Pharmacy/Treatment Encoded Order - /// - public class RXEMap : - HL7V26SegmentMap - { - public RXEMap() - { - Id = "RXE"; - - Name = "Pharmacy/Treatment Encoded Order"; - - Entity(x => x.QuantityTiming, 1); - Entity(x => x.GiveCode, 2, x => {x.Required = true;}); - Value(x => x.GiveAmountMinimum, 3, x => {x.Required = true;}); - Value(x => x.GiveAmountMaximum, 4); - Entity(x => x.GiveUnits, 5, x => {x.Required = true;}); - Entity(x => x.GiveDosageForm, 6); - Entity(x => x.ProviderSAdministrationInstructions, 7); - Entity(x => x.DeliverToLocation, 8); - Value(x => x.SubstitutionStatus, 9); - Value(x => x.DispenseAmount, 10); - Entity(x => x.DispenseUnits, 11); - Value(x => x.NumberOfRefills, 12); - Entity(x => x.OrderingProviderSDEANumber, 13); - Entity(x => x.PharmacistTreatmentSupplierSVerifierId, 14); - Value(x => x.PrescriptionNumber, 15); - Value(x => x.NumberOfRefillsRemaining, 16); - Value(x => x.NumberOfRefillsDosesDispensed, 17); - Value(x => x.DTOfMostRecentRefillOrDoseDispensed, 18, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Entity(x => x.TotalDailyDose, 19); - Value(x => x.NeedHumanReview, 20); - Entity(x => x.PharmacyTreatmentSupplierSSpecialDispensingInstructions, 21); - Value(x => x.GivePerTimeUnit, 22); - Value(x => x.GiveRateAmount, 23); - Entity(x => x.GiveRateUnits, 24); - Value(x => x.GiveStrength, 25); - Entity(x => x.GiveStrengthUnits, 26); - Entity(x => x.GiveIndication, 27); - Value(x => x.DispensePackageSize, 28); - Entity(x => x.DispensePackageSizeUnit, 29); - Value(x => x.DispensePackageMethod, 30); - Entity(x => x.SupplementaryCode, 31); - Value(x => x.OriginalOrderDateTime, 32, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.GiveDrugStrengthVolume, 33); - Entity(x => x.GiveDrugStrengthVolumeUnits, 34); - Entity(x => x.ControlledSubstanceSchedule, 35); - Value(x => x.FormularyStatus, 36); - Entity(x => x.PharmaceuticalSubstanceAlternative, 37); - Entity(x => x.PharmacyOfMostRecentFill, 38); - Value(x => x.InitialDispenseAmount, 39); - Entity(x => x.DispensingPharmacy, 40); - Entity(x => x.DispensingPharmacyAddress, 41); - Entity(x => x.DeliverToPatientLocation, 42); - Entity(x => x.DeliverToAddress, 43); - Value(x => x.PharmacyOrderType, 44); - } - } +// or type changes. +namespace Machete.HL7Schema.V26.Maps +{ + using V26; + + /// + /// RXE (SegmentMap) - Pharmacy/Treatment Encoded Order + /// + public class RXEMap : + HL7V26SegmentMap + { + public RXEMap() + { + Id = "RXE"; + + Name = "Pharmacy/Treatment Encoded Order"; + + Entity(x => x.QuantityTiming, 1); + Entity(x => x.GiveCode, 2, x => {x.Required = true;}); + Value(x => x.GiveAmountMinimum, 3, x => {x.Required = true;}); + Value(x => x.GiveAmountMaximum, 4); + Entity(x => x.GiveUnits, 5, x => {x.Required = true;}); + Entity(x => x.GiveDosageForm, 6); + Entity(x => x.ProviderAdministrationInstructions, 7); + Entity(x => x.DeliverToLocation, 8); + Value(x => x.SubstitutionStatus, 9); + Value(x => x.DispenseAmount, 10); + Entity(x => x.DispenseUnits, 11); + Value(x => x.NumberOfRefills, 12); + Entity(x => x.OrderingProviderDEANumber, 13); + Entity(x => x.PharmacistTreatmentSupplierVerifierId, 14); + Value(x => x.PrescriptionNumber, 15); + Value(x => x.NumberOfRefillsRemaining, 16); + Value(x => x.NumberOfRefillsDosesDispensed, 17); + Value(x => x.DTOfMostRecentRefillOrDoseDispensed, 18, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Entity(x => x.TotalDailyDose, 19); + Value(x => x.NeedHumanReview, 20); + Entity(x => x.PharmacyTreatmentSupplierSpecialDispensingInstructions, 21); + Value(x => x.GivePerTimeUnit, 22); + Value(x => x.GiveRateAmount, 23); + Entity(x => x.GiveRateUnits, 24); + Value(x => x.GiveStrength, 25); + Entity(x => x.GiveStrengthUnits, 26); + Entity(x => x.GiveIndication, 27); + Value(x => x.DispensePackageSize, 28); + Entity(x => x.DispensePackageSizeUnit, 29); + Value(x => x.DispensePackageMethod, 30); + Entity(x => x.SupplementaryCode, 31); + Value(x => x.OriginalOrderDateTime, 32, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.GiveDrugStrengthVolume, 33); + Entity(x => x.GiveDrugStrengthVolumeUnits, 34); + Entity(x => x.ControlledSubstanceSchedule, 35); + Value(x => x.FormularyStatus, 36); + Entity(x => x.PharmaceuticalSubstanceAlternative, 37); + Entity(x => x.PharmacyOfMostRecentFill, 38); + Value(x => x.InitialDispenseAmount, 39); + Entity(x => x.DispensingPharmacy, 40); + Entity(x => x.DispensingPharmacyAddress, 41); + Entity(x => x.DeliverToPatientLocation, 42); + Entity(x => x.DeliverToAddress, 43); + Value(x => x.PharmacyOrderType, 44); + } + } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RXGMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RXGMap.cs index 1cb0a26e8..ba92ce51f 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RXGMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RXGMap.cs @@ -1,52 +1,52 @@ // This file was automatically generated and may be regenerated at any // time. To ensure any changes are retained, modify the tool with any segment/component/group/field name -// or type changes. -namespace Machete.HL7Schema.V26.Maps -{ - using V26; - - /// - /// RXG (SegmentMap) - Pharmacy/Treatment Give - /// - public class RXGMap : - HL7V26SegmentMap - { - public RXGMap() - { - Id = "RXG"; - - Name = "Pharmacy/Treatment Give"; - - Value(x => x.GiveSubIdCounter, 1, x => {x.Required = true;}); - Value(x => x.DispenseSubIdCounter, 2); - Entity(x => x.QuantityTiming, 3); - Entity(x => x.GiveCode, 4, x => {x.Required = true;}); - Value(x => x.GiveAmountMinimum, 5, x => {x.Required = true;}); - Value(x => x.GiveAmountMaximum, 6); - Entity(x => x.GiveUnits, 7, x => {x.Required = true;}); - Entity(x => x.GiveDosageForm, 8); - Entity(x => x.AdministrationNotes, 9); - Value(x => x.SubstitutionStatus, 10); - Entity(x => x.DispenseToLocation, 11); - Value(x => x.NeedHumanReview, 12); - Entity(x => x.PharmacyTreatmentSupplierSSpecialAdministrationInstructions, 13); - Value(x => x.GivePerTimeUnit, 14); - Value(x => x.GiveRateAmount, 15); - Entity(x => x.GiveRateUnits, 16); - Value(x => x.GiveStrength, 17); - Entity(x => x.GiveStrengthUnits, 18); - Value(x => x.SubstanceLotNumber, 19); - Value(x => x.SubstanceExpirationDate, 20, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Entity(x => x.SubstanceManufacturerName, 21); - Entity(x => x.Indication, 22); - Value(x => x.GiveDrugStrengthVolume, 23); - Entity(x => x.GiveDrugStrengthVolumeUnits, 24); - Entity(x => x.GiveBarcodeIdentifier, 25); - Value(x => x.PharmacyOrderType, 26); - Entity(x => x.DispenseToPharmacy, 27); - Entity(x => x.DispenseToPharmacyAddress, 28); - Entity(x => x.DeliverToPatientLocation, 29); - Entity(x => x.DeliverToAddress, 30); - } - } +// or type changes. +namespace Machete.HL7Schema.V26.Maps +{ + using V26; + + /// + /// RXG (SegmentMap) - Pharmacy/Treatment Give + /// + public class RXGMap : + HL7V26SegmentMap + { + public RXGMap() + { + Id = "RXG"; + + Name = "Pharmacy/Treatment Give"; + + Value(x => x.GiveSubIdCounter, 1, x => {x.Required = true;}); + Value(x => x.DispenseSubIdCounter, 2); + Entity(x => x.QuantityTiming, 3); + Entity(x => x.GiveCode, 4, x => {x.Required = true;}); + Value(x => x.GiveAmountMinimum, 5, x => {x.Required = true;}); + Value(x => x.GiveAmountMaximum, 6); + Entity(x => x.GiveUnits, 7, x => {x.Required = true;}); + Entity(x => x.GiveDosageForm, 8); + Entity(x => x.AdministrationNotes, 9); + Value(x => x.SubstitutionStatus, 10); + Entity(x => x.DispenseToLocation, 11); + Value(x => x.NeedHumanReview, 12); + Entity(x => x.PharmacyTreatmentSupplierSpecialAdministrationInstructions, 13); + Value(x => x.GivePerTimeUnit, 14); + Value(x => x.GiveRateAmount, 15); + Entity(x => x.GiveRateUnits, 16); + Value(x => x.GiveStrength, 17); + Entity(x => x.GiveStrengthUnits, 18); + Value(x => x.SubstanceLotNumber, 19); + Value(x => x.SubstanceExpirationDate, 20, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Entity(x => x.SubstanceManufacturerName, 21); + Entity(x => x.Indication, 22); + Value(x => x.GiveDrugStrengthVolume, 23); + Entity(x => x.GiveDrugStrengthVolumeUnits, 24); + Entity(x => x.GiveBarcodeIdentifier, 25); + Value(x => x.PharmacyOrderType, 26); + Entity(x => x.DispenseToPharmacy, 27); + Entity(x => x.DispenseToPharmacyAddress, 28); + Entity(x => x.DeliverToPatientLocation, 29); + Entity(x => x.DeliverToAddress, 30); + } + } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RXOMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RXOMap.cs index 99e9210c5..1922dd5b0 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RXOMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RXOMap.cs @@ -1,57 +1,57 @@ // This file was automatically generated and may be regenerated at any // time. To ensure any changes are retained, modify the tool with any segment/component/group/field name -// or type changes. -namespace Machete.HL7Schema.V26.Maps -{ - using V26; - - /// - /// RXO (SegmentMap) - Pharmacy/Treatment Order - /// - public class RXOMap : - HL7V26SegmentMap - { - public RXOMap() - { - Id = "RXO"; - - Name = "Pharmacy/Treatment Order"; - - Entity(x => x.RequestedGiveCode, 1); - Value(x => x.RequestedGiveAmountMinimum, 2); - Value(x => x.RequestedGiveAmountMaximum, 3); - Entity(x => x.RequestedGiveUnits, 4); - Entity(x => x.RequestedDosageForm, 5); - Entity(x => x.ProviderSPharmacyTreatmentInstructions, 6); - Entity(x => x.ProviderSAdministrationInstructions, 7); - Entity(x => x.DeliverToLocation, 8); - Value(x => x.AllowSubstitutions, 9); - Entity(x => x.RequestedDispenseCode, 10); - Value(x => x.RequestedDispenseAmount, 11); - Entity(x => x.RequestedDispenseUnits, 12); - Value(x => x.NumberOfRefills, 13); - Entity(x => x.OrderingProviderSDEANumber, 14); - Entity(x => x.PharmacistTreatmentSupplierSVerifierId, 15); - Value(x => x.NeedHumanReview, 16); - Value(x => x.RequestedGivePerTimeUnit, 17); - Value(x => x.RequestedGiveStrength, 18); - Entity(x => x.RequestedGiveStrengthUnits, 19); - Entity(x => x.Indication, 20); - Value(x => x.RequestedGiveRateAmount, 21); - Entity(x => x.RequestedGiveRateUnits, 22); - Entity(x => x.TotalDailyDose, 23); - Entity(x => x.SupplementaryCode, 24); - Value(x => x.RequestedDrugStrengthVolume, 25); - Entity(x => x.RequestedDrugStrengthVolumeUnits, 26); - Value(x => x.PharmacyOrderType, 27); - Value(x => x.DispensingInterval, 28); - Entity(x => x.MedicationInstanceIdentifier, 29); - Entity(x => x.SegmentInstanceIdentifier, 30); - Entity(x => x.MoodCode, 31); - Entity(x => x.DispensingPharmacy, 32); - Entity(x => x.DispensingPharmacyAddress, 33); - Entity(x => x.DeliverToPatientLocation, 34); - Entity(x => x.DeliverToAddress, 35); - } - } +// or type changes. +namespace Machete.HL7Schema.V26.Maps +{ + using V26; + + /// + /// RXO (SegmentMap) - Pharmacy/Treatment Order + /// + public class RXOMap : + HL7V26SegmentMap + { + public RXOMap() + { + Id = "RXO"; + + Name = "Pharmacy/Treatment Order"; + + Entity(x => x.RequestedGiveCode, 1); + Value(x => x.RequestedGiveAmountMinimum, 2); + Value(x => x.RequestedGiveAmountMaximum, 3); + Entity(x => x.RequestedGiveUnits, 4); + Entity(x => x.RequestedDosageForm, 5); + Entity(x => x.ProviderPharmacyTreatmentInstructions, 6); + Entity(x => x.ProviderSAdministrationInstructions, 7); + Entity(x => x.DeliverToLocation, 8); + Value(x => x.AllowSubstitutions, 9); + Entity(x => x.RequestedDispenseCode, 10); + Value(x => x.RequestedDispenseAmount, 11); + Entity(x => x.RequestedDispenseUnits, 12); + Value(x => x.NumberOfRefills, 13); + Entity(x => x.OrderingProviderDEANumber, 14); + Entity(x => x.PharmacistTreatmentSupplierVerifierId, 15); + Value(x => x.NeedHumanReview, 16); + Value(x => x.RequestedGivePerTimeUnit, 17); + Value(x => x.RequestedGiveStrength, 18); + Entity(x => x.RequestedGiveStrengthUnits, 19); + Entity(x => x.Indication, 20); + Value(x => x.RequestedGiveRateAmount, 21); + Entity(x => x.RequestedGiveRateUnits, 22); + Entity(x => x.TotalDailyDose, 23); + Entity(x => x.SupplementaryCode, 24); + Value(x => x.RequestedDrugStrengthVolume, 25); + Entity(x => x.RequestedDrugStrengthVolumeUnits, 26); + Value(x => x.PharmacyOrderType, 27); + Value(x => x.DispensingInterval, 28); + Entity(x => x.MedicationInstanceIdentifier, 29); + Entity(x => x.SegmentInstanceIdentifier, 30); + Entity(x => x.MoodCode, 31); + Entity(x => x.DispensingPharmacy, 32); + Entity(x => x.DispensingPharmacyAddress, 33); + Entity(x => x.DeliverToPatientLocation, 34); + Entity(x => x.DeliverToAddress, 35); + } + } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RXRMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RXRMap.cs index 47cb1f786..76edc6d88 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RXRMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/RXRMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,7 +17,7 @@ public RXRMap() Name = "Pharmacy/Treatment Route"; - Entity(x => x.Route, 1, x => {x.Required = true;}); + Entity(x => x.Route, 1, x => x.IsRequired()); Entity(x => x.AdministrationSite, 2); Entity(x => x.AdministrationDevice, 3); Entity(x => x.AdministrationMethod, 4); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/SACMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/SACMap.cs index 01762314a..67139a74e 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/SACMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/SACMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -23,7 +23,7 @@ public SACMap() Entity(x => x.PrimaryParentContainerIdentifier, 4); Entity(x => x.EquipmentContainerIdentifier, 5); Entity(x => x.SpecimenSource, 6); - Value(x => x.RegistrationDateTime, 7, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.RegistrationDateTime, 7, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.ContainerStatus, 8); Entity(x => x.CarrierType, 9); Entity(x => x.CarrierIdentifier, 10); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/SCDMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/SCDMap.cs index 5b923a750..661f5cb2c 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/SCDMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/SCDMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,7 +17,7 @@ public SCDMap() Name = "Anti-Microbial Cycle Data"; - Value(x => x.CycleStartTime, 1, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.CycleStartTime, 1, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.CycleCount, 2); Entity(x => x.TempMax, 3); Entity(x => x.TempMin, 4); @@ -27,12 +27,12 @@ public SCDMap() Entity(x => x.ExhaustTime, 8); Entity(x => x.TotalCycleTime, 9); Entity(x => x.DeviceStatus, 10); - Value(x => x.CycleStartDateTime, 11, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.CycleStartDateTime, 11, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.DryTime, 12); Entity(x => x.LeakRate, 13); Entity(x => x.ControlTemperature, 14); Entity(x => x.SterilizerTemperature, 15); - Value(x => x.CycleCompleteTime, 16, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.CycleCompleteTime, 16, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.UnderTemperature, 17); Entity(x => x.OverTemperature, 18); Entity(x => x.AbortCycle, 19); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/SCHMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/SCHMap.cs index 9e1af9fcf..02b1c7e63 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/SCHMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/SCHMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -22,7 +22,7 @@ public SCHMap() Value(x => x.OccurrenceNumber, 3); Entity(x => x.PlacerGroupNumber, 4); Entity(x => x.ScheduleId, 5); - Entity(x => x.EventReason, 6, x => {x.Required = true;}); + Entity(x => x.EventReason, 6, x => x.IsRequired()); Entity(x => x.AppointmentReason, 7); Entity(x => x.AppointmentType, 8); Value(x => x.AppointmentDuration, 9); @@ -32,11 +32,11 @@ public SCHMap() Entity(x => x.PlacerContactPhoneNumber, 13); Entity(x => x.PlacerContactAddress, 14); Entity(x => x.PlacerContactLocation, 15); - Entity(x => x.FillerContactPerson, 16, x => {x.Required = true;}); + Entity(x => x.FillerContactPerson, 16, x => x.IsRequired()); Entity(x => x.FillerContactPhoneNumber, 17); Entity(x => x.FillerContactAddress, 18); Entity(x => x.FillerContactLocation, 19); - Entity(x => x.EnteredByPerson, 20, x => {x.Required = true;}); + Entity(x => x.EnteredByPerson, 20, x => x.IsRequired()); Entity(x => x.EnteredByPhoneNumber, 21); Entity(x => x.EnteredByLocation, 22); Entity(x => x.ParentPlacerAppointmentId, 23); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/SFTMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/SFTMap.cs index 415f27ba8..e63be6b96 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/SFTMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/SFTMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,12 +17,12 @@ public SFTMap() Name = "Software Segment"; - Entity(x => x.SoftwareVendorOrganization, 1, x => {x.Required = true;}); - Value(x => x.SoftwareCertifiedVersionOrReleaseNumber, 2, x => {x.Required = true;}); - Value(x => x.SoftwareProductName, 3, x => {x.Required = true;}); - Value(x => x.SoftwareBinaryId, 4, x => {x.Required = true;}); + Entity(x => x.SoftwareVendorOrganization, 1, x => x.IsRequired()); + Value(x => x.SoftwareCertifiedVersionOrReleaseNumber, 2, x => x.IsRequired()); + Value(x => x.SoftwareProductName, 3, x => x.IsRequired()); + Value(x => x.SoftwareBinaryId, 4, x => x.IsRequired()); Value(x => x.SoftwareProductInformation, 5); - Value(x => x.SoftwareInstallDate, 6, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.SoftwareInstallDate, 6, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/SPMMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/SPMMap.cs index 9c9fb94a7..497ee9aa8 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/SPMMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/SPMMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -20,7 +20,7 @@ public SPMMap() Value(x => x.SetId, 1); Entity(x => x.SpecimenId, 2); Entity(x => x.SpecimenParentIds, 3); - Entity(x => x.SpecimenType, 4, x => {x.Required = true;}); + Entity(x => x.SpecimenType, 4, x => x.IsRequired()); Entity(x => x.SpecimenTypeModifier, 5); Entity(x => x.SpecimenAdditives, 6); Entity(x => x.SpecimenCollectionMethod, 7); @@ -34,8 +34,8 @@ public SPMMap() Entity(x => x.SpecimenHandlingCode, 15); Entity(x => x.SpecimenRiskCode, 16); Entity(x => x.SpecimenCollectionDateTime, 17); - Value(x => x.SpecimenReceivedDateTime, 18, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.SpecimenExpirationDateTime, 19, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.SpecimenReceivedDateTime, 18, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.SpecimenExpirationDateTime, 19, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.SpecimenAvailability, 20); Entity(x => x.SpecimenRejectReason, 21); Entity(x => x.SpecimenQuality, 22); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/STFMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/STFMap.cs index b7af4fb5e..666130fdd 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/STFMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/STFMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -22,7 +22,7 @@ public STFMap() Entity(x => x.StaffName, 3); Value(x => x.StaffType, 4); Value(x => x.AdministrativeSex, 5); - Value(x => x.DateTimeOfBirth, 6, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.DateTimeOfBirth, 6, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.ActiveInactiveFlag, 7); Entity(x => x.Department, 8); Entity(x => x.HospitalService, 9); @@ -40,18 +40,18 @@ public STFMap() Value(x => x.AdditionalInsuredOnAuto, 21); Entity(x => x.DriverSLicenseNumberStaff, 22); Value(x => x.CopyAutoIns, 23); - Value(x => x.AutoInsExpires, 24, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.DateLastDMVReview, 25, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.DateNextDMVReview, 26, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.AutoInsExpires, 24, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.DateLastDMVReview, 25, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.DateNextDMVReview, 26, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.Race, 27); Entity(x => x.EthnicGroup, 28); Value(x => x.ReActivationApprovalIndicator, 29); Entity(x => x.Citizenship, 30); - Value(x => x.DateTimeOfDeath, 31, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.DateTimeOfDeath, 31, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.DeathIndicator, 32); Entity(x => x.InstitutionRelationshipTypeCode, 33); Entity(x => x.InstitutionRelationshipPeriod, 34); - Value(x => x.ExpectedReturnDate, 35, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.ExpectedReturnDate, 35, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.CostCenterCode, 36); Value(x => x.GenericClassificationIndicator, 37); Entity(x => x.InactiveReasonCode, 38); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/TCCMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/TCCMap.cs index 6f9bbb6b9..e5d753a9f 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/TCCMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/TCCMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,8 +17,8 @@ public TCCMap() Name = "Test Code Configuration"; - Entity(x => x.UniversalServiceIdentifier, 1, x => {x.Required = true;}); - Entity(x => x.EquipmentTestApplicationIdentifier, 2, x => {x.Required = true;}); + Entity(x => x.UniversalServiceIdentifier, 1, x => x.IsRequired()); + Entity(x => x.EquipmentTestApplicationIdentifier, 2, x => x.IsRequired()); Entity(x => x.SpecimenSource, 3); Entity(x => x.AutoDilutionFactorDefault, 4); Entity(x => x.RerunDilutionFactorDefault, 5); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/TCDMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/TCDMap.cs index ab9769e21..711756ec9 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/TCDMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/TCDMap.cs @@ -1,30 +1,30 @@ // This file was automatically generated and may be regenerated at any // time. To ensure any changes are retained, modify the tool with any segment/component/group/field name -// or type changes. -namespace Machete.HL7Schema.V26.Maps -{ - using V26; - - /// - /// TCD (SegmentMap) - Test Code Detail - /// - public class TCDMap : - HL7V26SegmentMap - { - public TCDMap() - { - Id = "TCD"; - - Name = "Test Code Detail"; - - Entity(x => x.UniversalServiceIdentifier, 1, x => {x.Required = true;}); - Entity(x => x.AutoDilutionFactor, 2); - Entity(x => x.RerunDilutionFactor, 3); - Entity(x => x.PreDilutionFactor, 4); - Entity(x => x.EndogenouContentOfPreDilutionDiluent, 5); - Value(x => x.AutomaticRepeatAllowed, 6); - Value(x => x.ReflexAllowed, 7); - Entity(x => x.AnalyteRepeatStatus, 8); - } - } +// or type changes. +namespace Machete.HL7Schema.V26.Maps +{ + using V26; + + /// + /// TCD (SegmentMap) - Test Code Detail + /// + public class TCDMap : + HL7V26SegmentMap + { + public TCDMap() + { + Id = "TCD"; + + Name = "Test Code Detail"; + + Entity(x => x.UniversalServiceIdentifier, 1, x => {x.Required = true;}); + Entity(x => x.AutoDilutionFactor, 2); + Entity(x => x.RerunDilutionFactor, 3); + Entity(x => x.PreDilutionFactor, 4); + Entity(x => x.EndogenousContentOfPreDilutionDiluent, 5); + Value(x => x.AutomaticRepeatAllowed, 6); + Value(x => x.ReflexAllowed, 7); + Entity(x => x.AnalyteRepeatStatus, 8); + } + } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/TQ1Map.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/TQ1Map.cs index 81cbf15b3..aff196cee 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/TQ1Map.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/TQ1Map.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -20,11 +20,11 @@ public TQ1Map() Value(x => x.SetId, 1); Entity(x => x.Quantity, 2); Entity(x => x.RepeatPattern, 3); - Value(x => x.ExplicitTime, 4, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.ExplicitTime, 4, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.RelativeTimeAndUnits, 5); Entity(x => x.ServiceDuration, 6); - Value(x => x.StartDateTime, 7, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.EndDateTime, 8, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.StartDateTime, 7, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.EndDateTime, 8, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.Priority, 9); Value(x => x.ConditionText, 10); Value(x => x.TextInstruction, 11); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/TXAMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/TXAMap.cs index 4feed22a2..57d4dacee 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/TXAMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/TXAMap.cs @@ -1,45 +1,45 @@ // This file was automatically generated and may be regenerated at any // time. To ensure any changes are retained, modify the tool with any segment/component/group/field name -// or type changes. -namespace Machete.HL7Schema.V26.Maps -{ - using V26; - - /// - /// TXA (SegmentMap) - Transcription Document Header - /// - public class TXAMap : - HL7V26SegmentMap - { - public TXAMap() - { - Id = "TXA"; - - Name = "Transcription Document Header"; - - Value(x => x.SetId, 1, x => {x.Required = true;}); - Value(x => x.DocumentType, 2, x => {x.Required = true;}); - Value(x => x.DocumentContentPresentation, 3); - Value(x => x.ActivityDateTime, 4, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Entity(x => x.PrimaryActivityProviderCodeName, 5); - Value(x => x.OriginationDateTime, 6, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.TranscriptionDateTime, 7, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.EditDateTime, 8, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Entity(x => x.OriginatorCodeName, 9); - Entity(x => x.AssignedDocumentAuthenticator, 10); - Entity(x => x.TranscriptionistCodeName, 11); - Entity(x => x.UniqueDocumentNumber, 12, x => {x.Required = true;}); - Entity(x => x.ParentDocumentNumber, 13); - Entity(x => x.PlacerOrderNumber, 14); - Entity(x => x.FillerOrderNumber, 15); - Value(x => x.UniqueDocumentFileName, 16); - Value(x => x.DocumentCompletionStatus, 17, x => {x.Required = true;}); - Value(x => x.DocumentConfidentialityStatus, 18); - Value(x => x.DocumentAvailabilityStatus, 19); - Value(x => x.DocumentStorageStatus, 20); - Value(x => x.DocumentChangeReason, 21); - Entity(x => x.AuthenticationPersonTimeStampSet, 22); - Entity(x => x.DistributedCopiesCodeandNameofRecipients, 23); - } - } +// or type changes. +namespace Machete.HL7Schema.V26.Maps +{ + using V26; + + /// + /// TXA (SegmentMap) - Transcription Document Header + /// + public class TXAMap : + HL7V26SegmentMap + { + public TXAMap() + { + Id = "TXA"; + + Name = "Transcription Document Header"; + + Value(x => x.SetId, 1, x => {x.Required = true;}); + Value(x => x.DocumentType, 2, x => {x.Required = true;}); + Value(x => x.DocumentContentPresentation, 3); + Value(x => x.ActivityDateTime, 4, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Entity(x => x.PrimaryActivityProviderCodeName, 5); + Value(x => x.OriginationDateTime, 6, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.TranscriptionDateTime, 7, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.EditDateTime, 8, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Entity(x => x.OriginatorCodeName, 9); + Entity(x => x.AssignedDocumentAuthenticator, 10); + Entity(x => x.TranscriptionistCodeName, 11); + Entity(x => x.UniqueDocumentNumber, 12, x => {x.Required = true;}); + Entity(x => x.ParentDocumentNumber, 13); + Entity(x => x.PlacerOrderNumber, 14); + Entity(x => x.FillerOrderNumber, 15); + Value(x => x.UniqueDocumentFileName, 16); + Value(x => x.DocumentCompletionStatus, 17, x => {x.Required = true;}); + Value(x => x.DocumentConfidentialityStatus, 18); + Value(x => x.DocumentAvailabilityStatus, 19); + Value(x => x.DocumentStorageStatus, 20); + Value(x => x.DocumentChangeReason, 21); + Entity(x => x.AuthenticationPersonTimeStampSet, 22); + Entity(x => x.DistributedCopies, 23); + } + } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/UACMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/UACMap.cs index 31af610a2..efc383090 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/UACMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/UACMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,8 +17,8 @@ public UACMap() Name = "User Authentication Credential Segment"; - Entity(x => x.UserAuthenticationCredentialTypeCode, 1, x => {x.Required = true;}); - Entity(x => x.UserAuthenticationCredential, 2, x => {x.Required = true;}); + Entity(x => x.UserAuthenticationCredentialTypeCode, 1, x => x.IsRequired()); + Entity(x => x.UserAuthenticationCredential, 2, x => x.IsRequired()); } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/UB1Map.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/UB1Map.cs index ad44dc244..96b40b60b 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/UB1Map.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/UB1Map.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -18,7 +18,7 @@ public UB1Map() Name = "UB82"; Value(x => x.SetId, 1); - Value(x => x.BloodDeductible, 2, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.BloodDeductible, 2, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.BloodFurnishedPints, 3); Value(x => x.BloodReplacedPints, 4); Value(x => x.BloodNotReplacedPints, 5); @@ -29,13 +29,13 @@ public UB1Map() Entity(x => x.ValueAmountCode, 10); Value(x => x.NumberOfGraceDays, 11); Entity(x => x.SpecialProgramIndicator, 12); - Entity(x => x.PSROURApprovalIndicator, 13); - Value(x => x.PSROURApprovedStayFm, 14, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.PSROURApprovedStayTo, 15, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Entity(x => x.PSRO_UR_ApprovalIndicator, 13); + Value(x => x.PSRO_UR_ApprovedStayFm, 14, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.PSRO_UR_ApprovedStayTo, 15, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.Occurrence, 16); Entity(x => x.OccurrenceSpan, 17); - Value(x => x.OccurSpanStartDate, 18, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.OccurSpanEndDate, 19, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.OccurSpanStartDate, 18, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.OccurSpanEndDate, 19, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.UB82Locator2, 20); Value(x => x.UB82Locator9, 21); Value(x => x.UB82Locator27, 22); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/UB2Map.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/UB2Map.cs index 0293fc4e4..b80a29226 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/UB2Map.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/UB2Map.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -18,21 +18,21 @@ public UB2Map() Name = "UB92 Data"; Value(x => x.SetId, 1); - Value(x => x.CoInsuranceDays9, 2); - Value(x => x.ConditionCode2430, 3); - Value(x => x.CoveredDays7, 4); - Value(x => x.NonCoveredDays8, 5); + Value(x => x.CoInsuranceDays, 2); + Value(x => x.ConditionCode, 3); + Value(x => x.CoveredDays, 4); + Value(x => x.NonCoveredDays, 5); Entity(x => x.ValueAmountCode, 6); - Entity(x => x.OccurrenceCodeDate3235, 7); - Entity(x => x.OccurrenceSpanCodeDates, 8); - Value(x => x.UB92Locator2State, 9); - Value(x => x.UB92Locator11State, 10); - Value(x => x.UB92Locator31National, 11); + Entity(x => x.OccurrenceCodeAndDate, 7); + Entity(x => x.OccurrenceSpanCodeOrDates, 8); + Value(x => x.UB92Locator2, 9); + Value(x => x.UB92Locator11, 10); + Value(x => x.UB92Locator31, 11); Value(x => x.DocumentControlNumber, 12); - Value(x => x.UB92Locator49National, 13); - Value(x => x.UB92Locator56State, 14); - Value(x => x.UB92Locator57National, 15); - Value(x => x.UB92Locator78State, 16); + Value(x => x.UB92Locator49, 13); + Value(x => x.UB92Locator56, 14); + Value(x => x.UB92Locator57, 15); + Value(x => x.UB92Locator78, 16); Value(x => x.SpecialVisitCount, 17); } } diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/URDMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/URDMap.cs index 7e8e043b1..602fcdc68 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/URDMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/URDMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,9 +17,9 @@ public URDMap() Name = "Results/update Definition"; - Value(x => x.RUDateTime, 1, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.RUDateTime, 1, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.ReportPriority, 2); - Entity(x => x.RUWhoSubjectDefinition, 3, x => {x.Required = true;}); + Entity(x => x.RUWhoSubjectDefinition, 3, x => x.IsRequired()); Entity(x => x.RUWhatSubjectDefinition, 4); Entity(x => x.RUWhatDepartmentCode, 5); Value(x => x.RUDisplayPrintLocations, 6); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/URSMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/URSMap.cs index a1a826881..71e1f4dd7 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/URSMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/URSMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,9 +17,9 @@ public URSMap() Name = "Unsolicited Selection"; - Value(x => x.RUWhereSubjectDefinition, 1, x => {x.Required = true;}); - Value(x => x.RUWhenDataStartDateTime, 2, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); - Value(x => x.RUWhenDataEndDateTime, 3, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Value(x => x.RUWhereSubjectDefinition, 1, x => x.IsRequired()); + Value(x => x.RUWhenDataStartDateTime, 2, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); + Value(x => x.RUWhenDataEndDateTime, 3, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Value(x => x.RUWhatUserQualifier, 4); Value(x => x.RUOtherResultsSubjectDefinition, 5); Value(x => x.RUWhichDateTimeQualifier, 6); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/VARMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/VARMap.cs index 14f82632c..370f246af 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/VARMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/VARMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,9 +17,13 @@ public VARMap() Name = "Variance"; - Entity(x => x.VarianceInstanceId, 1, x => {x.Required = true;}); - Value(x => x.DocumentedDateTime, 2, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;x.Required = true;}); - Value(x => x.StatedVarianceDateTime, 3, x => {x.Converter = HL7.HL7ValueConverters.VariableLongDateTime;}); + Entity(x => x.VarianceInstanceId, 1, x => x.IsRequired()); + Value(x => x.DocumentedDateTime, 2, x => + { + x.Converter = HL7.HL7ValueConverters.VariableLongDateTime; + x.IsRequired(); + }); + Value(x => x.StatedVarianceDateTime, 3, x => x.Converter = HL7.HL7ValueConverters.VariableLongDateTime); Entity(x => x.VarianceOriginator, 4); Entity(x => x.VarianceClassification, 5); Value(x => x.VarianceDescription, 6); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/VNDMap.cs b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/VNDMap.cs index 57bbaa108..6852457e7 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/Maps/VNDMap.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/Maps/VNDMap.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26.Maps { @@ -17,8 +17,8 @@ public VNDMap() Name = "Purchasing Vendor"; - Value(x => x.SetId, 1, x => {x.Required = true;}); - Entity(x => x.VendorIdentifier, 2, x => {x.Required = true;}); + Value(x => x.SetId, 1, x => x.IsRequired()); + Entity(x => x.VendorIdentifier, 2, x => x.IsRequired()); Value(x => x.VendorName, 3); Entity(x => x.VendorCatalogNumber, 4); Entity(x => x.PrimaryVendorIndicator, 5); diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/NCK.cs b/src/Machete.HL7Schema/Generated/V26/Segments/NCK.cs index 045fbb332..75ae50f06 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/NCK.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/NCK.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// NCK (Segment) - System Clock diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/NDS.cs b/src/Machete.HL7Schema/Generated/V26/Segments/NDS.cs index 16e5221b6..2065d6314 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/NDS.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/NDS.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// NDS (Segment) - Notification Detail diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/NK1.cs b/src/Machete.HL7Schema/Generated/V26/Segments/NK1.cs index 52b37b607..4283dd3bf 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/NK1.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/NK1.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// NK1 (Segment) - Next of Kin / Associated Parties @@ -40,7 +40,7 @@ public interface NK1 : /// /// NK1-6: Business Phone Number /// - ValueList BusinePhoneNumber { get; } + ValueList BusinessPhoneNumber { get; } /// /// NK1-7: Contact Role diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/NPU.cs b/src/Machete.HL7Schema/Generated/V26/Segments/NPU.cs index 18dd01604..64c806530 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/NPU.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/NPU.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// NPU (Segment) - Bed Status Update /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/NSC.cs b/src/Machete.HL7Schema/Generated/V26/Segments/NSC.cs index 2a9957aaa..8d04bd45a 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/NSC.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/NSC.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// NSC (Segment) - Application Status Change /// @@ -24,7 +22,7 @@ public interface NSC : /// /// NSC-3: Current Fileserver /// - Value CurrentFileserver { get; } + Value CurrentFileServer { get; } /// /// NSC-4: Current Application @@ -44,7 +42,7 @@ public interface NSC : /// /// NSC-7: New Fileserver /// - Value NewFileserver { get; } + Value NewFileServer { get; } /// /// NSC-8: New Application diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/NST.cs b/src/Machete.HL7Schema/Generated/V26/Segments/NST.cs index 557818597..141002a15 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/NST.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/NST.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// NST (Segment) - Application control level statistics diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/OBR.cs b/src/Machete.HL7Schema/Generated/V26/Segments/OBR.cs index 1183f21a5..3f1e3c3be 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/OBR.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/OBR.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// OBR (Segment) - Observation Request @@ -118,9 +118,9 @@ public interface OBR : Value FillerField2 { get; } /// - /// OBR-22: Results Rpt/Status Chng - Date/Time + + /// OBR-22: Results Reported/Status Change - Date/Time + /// - Value ResultRptStatusChngDateTime { get; } + Value ResultReportedStatusChangeDateTime { get; } /// /// OBR-23: Charge to Practice + @@ -130,7 +130,7 @@ public interface OBR : /// /// OBR-24: Diagnostic Serv Sect ID /// - Value DiagnosticServSectId { get; } + Value DiagnosticServiceSectionId { get; } /// /// OBR-25: Result Status + diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/OBX.cs b/src/Machete.HL7Schema/Generated/V26/Segments/OBX.cs index e9bfdddc3..77198bcf1 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/OBX.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/OBX.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// OBX (Segment) - Observation/Result diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/ODS.cs b/src/Machete.HL7Schema/Generated/V26/Segments/ODS.cs index d68119e56..68821844f 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/ODS.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/ODS.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// ODS (Segment) - Dietary Orders, Supplements, and Preferences /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/ODT.cs b/src/Machete.HL7Schema/Generated/V26/Segments/ODT.cs index 6ecf8509e..c80eb8281 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/ODT.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/ODT.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// ODT (Segment) - Diet Tray Instructions /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/OM3.cs b/src/Machete.HL7Schema/Generated/V26/Segments/OM3.cs index 0bdc041b7..9aa73bb3a 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/OM3.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/OM3.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// OM3 (Segment) - Categorical Service/Test/Observation /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/OM5.cs b/src/Machete.HL7Schema/Generated/V26/Segments/OM5.cs index 9f29ea32d..461ce060e 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/OM5.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/OM5.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// OM5 (Segment) - Observation Batteries (Sets) /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/ORC.cs b/src/Machete.HL7Schema/Generated/V26/Segments/ORC.cs index ede1a7a52..36cb67f8c 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/ORC.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/ORC.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// ORC (Segment) - Common Order diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/ORG.cs b/src/Machete.HL7Schema/Generated/V26/Segments/ORG.cs index 2470d131f..00b8597f4 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/ORG.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/ORG.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// ORG (Segment) - Practitioner Organization Unit /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/OVR.cs b/src/Machete.HL7Schema/Generated/V26/Segments/OVR.cs index 75a390c9c..4ec4203b8 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/OVR.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/OVR.cs @@ -1,5 +1,5 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { @@ -14,12 +14,12 @@ public interface OVR : /// /// OVR-1: Business Rule Override Type /// - Value BusineRuleOverrideType { get; } + Value BusinessRuleOverrideType { get; } /// /// OVR-2: Business Rule Override Code /// - Value BusineRuleOverrideCode { get; } + Value BusinessRuleOverrideCode { get; } /// /// OVR-3: Override Comments diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/PCE.cs b/src/Machete.HL7Schema/Generated/V26/Segments/PCE.cs index 0f0149ff8..615831407 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/PCE.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/PCE.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// PCE (Segment) - Patient Charge Cost Center Exceptions /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/PCR.cs b/src/Machete.HL7Schema/Generated/V26/Segments/PCR.cs index cb81b2939..e401aeb95 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/PCR.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/PCR.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// PCR (Segment) - Possible Causal Relationship @@ -30,7 +30,7 @@ public interface PCR : /// /// PCR-4: Total Duration Of Therapy /// - Value TotalDurationOfrapy { get; } + Value TotalDurationOfTherapy { get; } /// /// PCR-5: Product Manufacture Date @@ -110,7 +110,7 @@ public interface PCR : /// /// PCR-20: Relatedness Assessment /// - Value RelatedneAssessment { get; } + Value RelatednessAssessment { get; } /// /// PCR-21: Action Taken In Response To The Event diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/PD1.cs b/src/Machete.HL7Schema/Generated/V26/Segments/PD1.cs index 92324c8ca..1a6a341e8 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/PD1.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/PD1.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// PD1 (Segment) - Patient Additional Demographic diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/PDA.cs b/src/Machete.HL7Schema/Generated/V26/Segments/PDA.cs index 2359af2da..8befa9b61 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/PDA.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/PDA.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// PDA (Segment) - Patient Death and Autopsy diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/PDC.cs b/src/Machete.HL7Schema/Generated/V26/Segments/PDC.cs index 118da2f22..13b9c2fed 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/PDC.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/PDC.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// PDC (Segment) - Product Detail Country diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/PID.cs b/src/Machete.HL7Schema/Generated/V26/Segments/PID.cs index b1cac848f..e60ce0f7b 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/PID.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/PID.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// PID (Segment) - Patient Identification diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/PKG.cs b/src/Machete.HL7Schema/Generated/V26/Segments/PKG.cs index 69afc6c2c..4c9b88511 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/PKG.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/PKG.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// PKG (Segment) - Item Packaging diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/PMT.cs b/src/Machete.HL7Schema/Generated/V26/Segments/PMT.cs index 11c399017..42e970f57 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/PMT.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/PMT.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// PMT (Segment) - Payment Information diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/PR1.cs b/src/Machete.HL7Schema/Generated/V26/Segments/PR1.cs index ca14811be..e26edce12 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/PR1.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/PR1.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// PR1 (Segment) - Procedures diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/PRA.cs b/src/Machete.HL7Schema/Generated/V26/Segments/PRA.cs index 380fbaceb..48d8c9c3c 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/PRA.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/PRA.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// PRA (Segment) - Practitioner Detail diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/PRB.cs b/src/Machete.HL7Schema/Generated/V26/Segments/PRB.cs index 31d136d07..573502c7c 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/PRB.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/PRB.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// PRB (Segment) - Problem Details diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/PRC.cs b/src/Machete.HL7Schema/Generated/V26/Segments/PRC.cs index bb7dc2ef8..f01705877 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/PRC.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/PRC.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// PRC (Segment) - Pricing diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/PRD.cs b/src/Machete.HL7Schema/Generated/V26/Segments/PRD.cs index 54cd51699..a1bf61222 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/PRD.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/PRD.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// PRD (Segment) - Provider Data diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/PSG.cs b/src/Machete.HL7Schema/Generated/V26/Segments/PSG.cs index 5814a0a91..b632f29fc 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/PSG.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/PSG.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// PSG (Segment) - Product/Service Group /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/PSL.cs b/src/Machete.HL7Schema/Generated/V26/Segments/PSL.cs index 723eafd6a..e6832d4ef 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/PSL.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/PSL.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// PSL (Segment) - Product/Service Line Item diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/PSS.cs b/src/Machete.HL7Schema/Generated/V26/Segments/PSS.cs index ffdb25f88..fd888a940 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/PSS.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/PSS.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// PSS (Segment) - Product/Service Section /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/PTH.cs b/src/Machete.HL7Schema/Generated/V26/Segments/PTH.cs index 011348c5d..7616fd105 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/PTH.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/PTH.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// PTH (Segment) - Pathway diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/PV1.cs b/src/Machete.HL7Schema/Generated/V26/Segments/PV1.cs index 4ca303d85..2f3a05727 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/PV1.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/PV1.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// PV1 (Segment) - Patient Visit @@ -33,9 +33,9 @@ public interface PV1 : Value AdmissionType { get; } /// - /// PV1-5: Preadmit Number + /// PV1-5: Pre-admit Number /// - Value PreadmitNumber { get; } + Value PreAdmitNumber { get; } /// /// PV1-6: Prior Patient Location @@ -68,9 +68,9 @@ public interface PV1 : Value TemporaryLocation { get; } /// - /// PV1-12: Preadmit Test Indicator + /// PV1-12: Pre-admit Test Indicator /// - Value PreadmitTestIndicator { get; } + Value PreAdmitTestIndicator { get; } /// /// PV1-13: Re-admission Indicator diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/PV2.cs b/src/Machete.HL7Schema/Generated/V26/Segments/PV2.cs index 76cc2c4df..5e0aef903 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/PV2.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/PV2.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// PV2 (Segment) - Patient Visit - Additional Information @@ -80,7 +80,7 @@ public interface PV2 : /// /// PV2-14: Previous Service Date /// - Value PreviouServiceDate { get; } + Value PreviousServiceDate { get; } /// /// PV2-15: Employment Illness Related Indicator diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/PYE.cs b/src/Machete.HL7Schema/Generated/V26/Segments/PYE.cs index 098f827e3..972c8428d 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/PYE.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/PYE.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// PYE (Segment) - Payee Information /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/QAK.cs b/src/Machete.HL7Schema/Generated/V26/Segments/QAK.cs index 82b92bcca..3b5fecac8 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/QAK.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/QAK.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// QAK (Segment) - Query Acknowledgment /// @@ -39,6 +37,6 @@ public interface QAK : /// /// QAK-6: Hits remaining /// - Value HitRemaining { get; } + Value HitsRemaining { get; } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/QID.cs b/src/Machete.HL7Schema/Generated/V26/Segments/QID.cs index 3e6cde1ea..539857774 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/QID.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/QID.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// QID (Segment) - Query Identification /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/QPD.cs b/src/Machete.HL7Schema/Generated/V26/Segments/QPD.cs index aaa9509d3..a11878083 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/QPD.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/QPD.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// QPD (Segment) - Query Parameter Definition /// @@ -24,6 +22,6 @@ public interface QPD : /// /// QPD-3: User Parameters (in successive fields) /// - Value UserParametersInsuccessivefields { get; } + Value UserParametersInSuccessivefields { get; } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/QRD.cs b/src/Machete.HL7Schema/Generated/V26/Segments/QRD.cs index 3df324c07..651e9c355 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/QRD.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/QRD.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// QRD (Segment) - Original-Style Query Definition diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/QRF.cs b/src/Machete.HL7Schema/Generated/V26/Segments/QRF.cs index 3e2985d15..fed740941 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/QRF.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/QRF.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// QRF (Segment) - Original style query filter diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/QRI.cs b/src/Machete.HL7Schema/Generated/V26/Segments/QRI.cs index 3fd882404..23e42667b 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/QRI.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/QRI.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// QRI (Segment) - Query Response Instance /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/RCP.cs b/src/Machete.HL7Schema/Generated/V26/Segments/RCP.cs index b8988bf93..0a7486e76 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/RCP.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/RCP.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// RCP (Segment) - Response Control Parameter diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/RDF.cs b/src/Machete.HL7Schema/Generated/V26/Segments/RDF.cs index 4a6f26d1d..c97b79492 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/RDF.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/RDF.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// RDF (Segment) - Table Row Definition /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/RDT.cs b/src/Machete.HL7Schema/Generated/V26/Segments/RDT.cs index 14994b60f..c61f429cf 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/RDT.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/RDT.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// RDT (Segment) - Table Row Data /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/REL.cs b/src/Machete.HL7Schema/Generated/V26/Segments/REL.cs index 818b1fe9e..5ce1c294e 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/REL.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/REL.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// REL (Segment) - Clinical Relationship Segment /// @@ -79,12 +77,12 @@ public interface REL : /// /// REL-14: Priority No /// - Value PriorityNo { get; } + Value PriorityNumber { get; } /// - /// REL-15: Priority Sequence No (rel preference for consideration) + /// REL-15: Priority Sequence Number (rel preference for consideration) /// - Value PrioritySequenceNoRelpreferenceforconsideration { get; } + Value PrioritySequenceNumber { get; } /// /// REL-16: Separability Indicator diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/RF1.cs b/src/Machete.HL7Schema/Generated/V26/Segments/RF1.cs index 059aeb907..cbe716e9a 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/RF1.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/RF1.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// RF1 (Segment) - Referral Information diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/RFI.cs b/src/Machete.HL7Schema/Generated/V26/Segments/RFI.cs index 7224a9c46..0891b3822 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/RFI.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/RFI.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// RFI (Segment) - Request for Information diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/RGS.cs b/src/Machete.HL7Schema/Generated/V26/Segments/RGS.cs index 4e71c2421..fe1f68bea 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/RGS.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/RGS.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// RGS (Segment) - Resource Group /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/RMI.cs b/src/Machete.HL7Schema/Generated/V26/Segments/RMI.cs index bbedf1c4d..412166e3d 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/RMI.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/RMI.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// RMI (Segment) - Risk Management Incident diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/ROL.cs b/src/Machete.HL7Schema/Generated/V26/Segments/ROL.cs index 59d6ec352..afe75090f 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/ROL.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/ROL.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// ROL (Segment) - Role @@ -75,6 +75,6 @@ public interface ROL : /// /// ROL-13: Person's Location /// - Value PersonSLocation { get; } + Value PersonLocation { get; } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/RQ1.cs b/src/Machete.HL7Schema/Generated/V26/Segments/RQ1.cs index 5b720ca66..f0c5464e9 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/RQ1.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/RQ1.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// RQ1 (Segment) - Requisition Detail-1 /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/RQD.cs b/src/Machete.HL7Schema/Generated/V26/Segments/RQD.cs index 27d015924..ef7f4084c 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/RQD.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/RQD.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// RQD (Segment) - Requisition Detail diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/RXA.cs b/src/Machete.HL7Schema/Generated/V26/Segments/RXA.cs index 8827ec7f9..4e15fb263 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/RXA.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/RXA.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// RXA (Segment) - Pharmacy/Treatment Administration diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/RXC.cs b/src/Machete.HL7Schema/Generated/V26/Segments/RXC.cs index 941ed2536..fdbb0cb7c 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/RXC.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/RXC.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// RXC (Segment) - Pharmacy/Treatment Component Order /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/RXD.cs b/src/Machete.HL7Schema/Generated/V26/Segments/RXD.cs index 777c1d16e..eb0d8fba3 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/RXD.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/RXD.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// RXD (Segment) - Pharmacy/Treatment Dispense @@ -85,7 +85,7 @@ public interface RXD : /// /// RXD-15: Pharmacy/Treatment Supplier's Special Dispensing Instructions /// - ValueList PharmacyTreatmentSupplierSSpecialDispensingInstructions { get; } + ValueList PharmacyTreatmentSupplierSpecialDispensingInstructions { get; } /// /// RXD-16: Actual Strength diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/RXE.cs b/src/Machete.HL7Schema/Generated/V26/Segments/RXE.cs index 0862d1ba4..750e399f5 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/RXE.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/RXE.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// RXE (Segment) - Pharmacy/Treatment Encoded Order @@ -45,7 +45,7 @@ public interface RXE : /// /// RXE-7: Provider's Administration Instructions /// - ValueList ProviderSAdministrationInstructions { get; } + ValueList ProviderAdministrationInstructions { get; } /// /// RXE-8: Deliver-To Location @@ -75,12 +75,12 @@ public interface RXE : /// /// RXE-13: Ordering Provider's DEA Number /// - ValueList OrderingProviderSDEANumber { get; } + ValueList OrderingProviderDEANumber { get; } /// /// RXE-14: Pharmacist/Treatment Supplier's Verifier ID /// - ValueList PharmacistTreatmentSupplierSVerifierId { get; } + ValueList PharmacistTreatmentSupplierVerifierId { get; } /// /// RXE-15: Prescription Number @@ -115,7 +115,7 @@ public interface RXE : /// /// RXE-21: Pharmacy/Treatment Supplier's Special Dispensing Instructions /// - ValueList PharmacyTreatmentSupplierSSpecialDispensingInstructions { get; } + ValueList PharmacyTreatmentSupplierSpecialDispensingInstructions { get; } /// /// RXE-22: Give Per (Time Unit) diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/RXG.cs b/src/Machete.HL7Schema/Generated/V26/Segments/RXG.cs index c9f21b08b..988b112df 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/RXG.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/RXG.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// RXG (Segment) - Pharmacy/Treatment Give @@ -75,7 +75,7 @@ public interface RXG : /// /// RXG-13: Pharmacy/Treatment Supplier's Special Administration Instructions /// - ValueList PharmacyTreatmentSupplierSSpecialAdministrationInstructions { get; } + ValueList PharmacyTreatmentSupplierSpecialAdministrationInstructions { get; } /// /// RXG-14: Give Per (Time Unit) diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/RXO.cs b/src/Machete.HL7Schema/Generated/V26/Segments/RXO.cs index d05d4a7d9..1114ccbcd 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/RXO.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/RXO.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// RXO (Segment) - Pharmacy/Treatment Order /// @@ -39,7 +37,7 @@ public interface RXO : /// /// RXO-6: Provider's Pharmacy/Treatment Instructions /// - ValueList ProviderSPharmacyTreatmentInstructions { get; } + ValueList ProviderPharmacyTreatmentInstructions { get; } /// /// RXO-7: Provider's Administration Instructions @@ -79,12 +77,12 @@ public interface RXO : /// /// RXO-14: Ordering Provider's DEA Number /// - ValueList OrderingProviderSDEANumber { get; } + ValueList OrderingProviderDEANumber { get; } /// /// RXO-15: Pharmacist/Treatment Supplier's Verifier ID /// - ValueList PharmacistTreatmentSupplierSVerifierId { get; } + ValueList PharmacistTreatmentSupplierVerifierId { get; } /// /// RXO-16: Needs Human Review diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/RXR.cs b/src/Machete.HL7Schema/Generated/V26/Segments/RXR.cs index 80f2b974f..c1817ad69 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/RXR.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/RXR.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// RXR (Segment) - Pharmacy/Treatment Route /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/SAC.cs b/src/Machete.HL7Schema/Generated/V26/Segments/SAC.cs index 53a575de1..063f533fe 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/SAC.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/SAC.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// SAC (Segment) - Specimen Container detail diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/SCD.cs b/src/Machete.HL7Schema/Generated/V26/Segments/SCD.cs index 2651deaed..e36446ac8 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/SCD.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/SCD.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// SCD (Segment) - Anti-Microbial Cycle Data diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/SCH.cs b/src/Machete.HL7Schema/Generated/V26/Segments/SCH.cs index fdf8d984d..1fb867cf3 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/SCH.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/SCH.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// SCH (Segment) - Scheduling Activity Information /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/SCP.cs b/src/Machete.HL7Schema/Generated/V26/Segments/SCP.cs index 03f1bfd05..08de1ef4d 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/SCP.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/SCP.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// SCP (Segment) - Sterilizer Configuration Segment /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/SDD.cs b/src/Machete.HL7Schema/Generated/V26/Segments/SDD.cs index 8c7e1989a..64f639781 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/SDD.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/SDD.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// SDD (Segment) - Sterilization Device Data /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/SID.cs b/src/Machete.HL7Schema/Generated/V26/Segments/SID.cs index 6fa7c7ad5..76a562332 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/SID.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/SID.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// SID (Segment) - Substance Identifier /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/SLT.cs b/src/Machete.HL7Schema/Generated/V26/Segments/SLT.cs index 9a6980c24..d49e5276a 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/SLT.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/SLT.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// SLT (Segment) - Sterilization Lot /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/SPM.cs b/src/Machete.HL7Schema/Generated/V26/Segments/SPM.cs index 31a0e26bc..d7c7650ef 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/SPM.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/SPM.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// SPM (Segment) - Specimen diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/STF.cs b/src/Machete.HL7Schema/Generated/V26/Segments/STF.cs index c03c4278e..bb6bf5bc3 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/STF.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/STF.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// STF (Segment) - Staff Identification diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/STZ.cs b/src/Machete.HL7Schema/Generated/V26/Segments/STZ.cs index 64f0ad2ff..6c2ab3d06 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/STZ.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/STZ.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// STZ (Segment) - Sterilization Parameter /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/TCD.cs b/src/Machete.HL7Schema/Generated/V26/Segments/TCD.cs index 71bb12a95..661c23f8f 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/TCD.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/TCD.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// TCD (Segment) - Test Code Detail /// @@ -34,7 +32,7 @@ public interface TCD : /// /// TCD-5: Endogenous Content of Pre-Dilution Diluent /// - Value EndogenouContentOfPreDilutionDiluent { get; } + Value EndogenousContentOfPreDilutionDiluent { get; } /// /// TCD-6: Automatic Repeat Allowed diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/TQ2.cs b/src/Machete.HL7Schema/Generated/V26/Segments/TQ2.cs index e7380658c..72063c724 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/TQ2.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/TQ2.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// TQ2 (Segment) - Timing/Quantity Relationship /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/TXA.cs b/src/Machete.HL7Schema/Generated/V26/Segments/TXA.cs index 307dc463e..b7a3d9186 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/TXA.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/TXA.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// TXA (Segment) - Transcription Document Header @@ -125,6 +125,6 @@ public interface TXA : /// /// TXA-23: Distributed Copies (Code and Name of Recipient(s) ) /// - ValueList DistributedCopiesCodeandNameofRecipients { get; } + ValueList DistributedCopies { get; } } } \ No newline at end of file diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/UAC.cs b/src/Machete.HL7Schema/Generated/V26/Segments/UAC.cs index 5b0270d71..0c2344675 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/UAC.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/UAC.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// UAC (Segment) - User Authentication Credential Segment /// diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/UB1.cs b/src/Machete.HL7Schema/Generated/V26/Segments/UB1.cs index 540575331..cf306b648 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/UB1.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/UB1.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// UB1 (Segment) - UB82 @@ -73,19 +73,19 @@ public interface UB1 : Value SpecialProgramIndicator { get; } /// - /// UB1-13: PSRO/UR Approval Indicator + /// UB1-13: Provider Service Review Organization/Utilization Review Approval Indicator /// - Value PSROURApprovalIndicator { get; } + Value PSRO_UR_ApprovalIndicator { get; } /// - /// UB1-14: PSRO/UR Approved Stay-Fm + /// UB1-14: Provider Service Review Organization/Utilization Review Approved Stay-Fm /// - Value PSROURApprovedStayFm { get; } + Value PSRO_UR_ApprovedStayFm { get; } /// - /// UB1-15: PSRO/UR Approved Stay-To + /// UB1-15: Provider Service Review Organization/Utilization Review Approved Stay-To /// - Value PSROURApprovedStayTo { get; } + Value PSRO_UR_ApprovedStayTo { get; } /// /// UB1-16: Occurrence diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/UB2.cs b/src/Machete.HL7Schema/Generated/V26/Segments/UB2.cs index 78b05636e..11c7f8cf7 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/UB2.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/UB2.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// UB2 (Segment) - UB92 Data /// @@ -19,22 +17,22 @@ public interface UB2 : /// /// UB2-2: Co-Insurance Days (9) /// - Value CoInsuranceDays9 { get; } + Value CoInsuranceDays { get; } /// /// UB2-3: Condition Code (24-30) /// - Value ConditionCode2430 { get; } + Value ConditionCode { get; } /// /// UB2-4: Covered Days (7) /// - Value CoveredDays7 { get; } + Value CoveredDays { get; } /// /// UB2-5: Non-Covered Days (8) /// - Value NonCoveredDays8 { get; } + Value NonCoveredDays { get; } /// /// UB2-6: Value Amount & Code @@ -44,27 +42,27 @@ public interface UB2 : /// /// UB2-7: Occurrence Code & Date (32-35) /// - Value OccurrenceCodeDate3235 { get; } + Value OccurrenceCodeAndDate { get; } /// /// UB2-8: Occurrence Span Code/Dates (36) /// - Value OccurrenceSpanCodeDates { get; } + Value OccurrenceSpanCodeOrDates { get; } /// /// UB2-9: UB92 Locator 2 (State) /// - Value UB92Locator2State { get; } + Value UB92Locator2 { get; } /// /// UB2-10: UB92 Locator 11 (State) /// - Value UB92Locator11State { get; } + Value UB92Locator11 { get; } /// /// UB2-11: UB92 Locator 31 (National) /// - Value UB92Locator31National { get; } + Value UB92Locator31 { get; } /// /// UB2-12: Document Control Number @@ -74,22 +72,22 @@ public interface UB2 : /// /// UB2-13: UB92 Locator 49 (National) /// - Value UB92Locator49National { get; } + Value UB92Locator49 { get; } /// /// UB2-14: UB92 Locator 56 (State) /// - Value UB92Locator56State { get; } + Value UB92Locator56 { get; } /// /// UB2-15: UB92 Locator 57 (National) /// - Value UB92Locator57National { get; } + Value UB92Locator57 { get; } /// /// UB2-16: UB92 Locator 78 (State) /// - Value UB92Locator78State { get; } + Value UB92Locator78 { get; } /// /// UB2-17: Special Visit Count diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/URD.cs b/src/Machete.HL7Schema/Generated/V26/Segments/URD.cs index 7fbbce685..a8d406cd0 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/URD.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/URD.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// URD (Segment) - Results/update Definition diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/URS.cs b/src/Machete.HL7Schema/Generated/V26/Segments/URS.cs index 7805ceae4..e33c3b685 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/URS.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/URS.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// URS (Segment) - Unsolicited Selection diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/VAR.cs b/src/Machete.HL7Schema/Generated/V26/Segments/VAR.cs index 312c0d3bb..cc870c7d6 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/VAR.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/VAR.cs @@ -1,10 +1,10 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { using System; - using HL7; + /// /// VAR (Segment) - Variance diff --git a/src/Machete.HL7Schema/Generated/V26/Segments/VND.cs b/src/Machete.HL7Schema/Generated/V26/Segments/VND.cs index 71e9e92fa..9006cc105 100644 --- a/src/Machete.HL7Schema/Generated/V26/Segments/VND.cs +++ b/src/Machete.HL7Schema/Generated/V26/Segments/VND.cs @@ -1,10 +1,8 @@ -// This file was automatically generated and may be regenerated at any -// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name +// This file was automatically generated and may be regenerated at any +// time. To ensure any changes are retained, modify the tool with any segment/component/group/field name // or type changes. namespace Machete.HL7Schema.V26 { - using HL7; - /// /// VND (Segment) - Purchasing Vendor /// diff --git a/src/Machete.X12.Tests/Layouts/Layout277Tests.cs b/src/Machete.X12.Tests/Layouts/Layout277Tests.cs new file mode 100644 index 000000000..506919e28 --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Layout277Tests.cs @@ -0,0 +1,592 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Layout277Tests : + X12MacheteTestHarness + { + [Test] + public void Verify_can_parse_multiple_REF_segments_condition() + { + string message = @"ISA*03*6327 *01*NFMC01 *ZZ*MACHETE *ZZ*PERSEPVS *090601*0406*^*00501*000026531*0*P*:~ +GS*HB*FL0738*PERSEPVS*20090601*040612*1*X*005010X279~ +ST*277*0001*005010X214~ +BHT*0085*08*277X2140001*20060205*1635*TH~ +HL*1**20*1~ +NM1*AY*2*FIRST CLEARINGHOUSE*****46*CLHR00~ +TRN*1*200102051635S00001ABCDEF~ +DTP*050*D8*20060205~ +DTP*009*D8*20060205~ +HL*2*1*21*1~ +NM1*41*2*BEST BILLING SERVICE*****46*S00001~ +TRN*2*2002020542857~ +STC*A0:16:PR*20060205*WQ*1000~ +QTY*90*1~ +QTY*AA*2~ +AMT*YU*200~ +AMT*YY*800~ +HL*3*2*19*1~ +NM1*85*2*SMITH CLINIC*****FI*123456789~ +HL*4*3*PT~ +NM1*QC*1*DOE*JOHN****MI*00ABCD1234~ +TRN*2*DOE01428~ +STC*A0:16:PR*20060205*WQ*200~ +REF*1K*22029500123407X~ +REF*D9*22029500123407X~ +REF*BLT*22029500123407X~ +DTP*472*RD8*20060128-20060131~ +SVC*HC:22305:22*350*****1~ +STC*A3:122**U*******A3:153:82~ +REF*FJ*11~ +SE*37*0001~ +GE*1*1~ +IEA*1*000026531~"; + + EntityResult entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + IParser query = entityResult.CreateQuery(layout); + + Result, HCA277> result = entityResult.Query(query); + + var interchangeSegment = result.Select(x => x.InterchangeControlHeader); + var transactionSetHeader = result.Select(x => x.Transactions)[0].Select(x => x.TransactionSetHeader); + var groupSegment = result.Select(x => x.Transactions)[0].Select(x => x.FunctionalGroupHeader); + + Assert.IsTrue(result.HasResult); + Assert.IsNotNull(interchangeSegment); + Assert.IsTrue(interchangeSegment.HasValue); + Assert.IsTrue(groupSegment.HasValue); + Assert.IsTrue(transactionSetHeader.HasValue); + + Assert.IsTrue(result.Select(x => x.Transactions).HasValue); + Assert.IsTrue(result.Select(x => x.Transactions)[0].HasValue); + Assert.IsTrue(result.Select(x => x.Transactions)[0].Select(x => x.PatientDetail).HasValue); + Assert.IsTrue(result.Select(x => x.Transactions)[0].Select(x => x.PatientDetail)[0].HasValue); + + string institutionalBillTypeIdentification = result + .Select(x => x.Transactions)[0] + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimStatusTrackingNumber)[0] + .Select(x => x.InstitutionalBillTypeIdentification) + .Select(x => x.ReferenceIdentificationQualifier) + .ValueOrDefault(); + + string payerClaimControlNumber = result + .Select(x => x.Transactions)[0] + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimStatusTrackingNumber)[0] + .Select(x => x.PayerClaimControlNumber) + .Select(x => x.ReferenceIdentificationQualifier) + .ValueOrDefault(); + + string claimIdNumberForClearinghouseAndOtherTransmissionItermediaries = result + .Select(x => x.Transactions)[0] + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimStatusTrackingNumber)[0] + .Select(x => x.ClaimIdNumberForClearinghouseAndOtherTransmissionIntermediaries) + .Select(x => x.ReferenceIdentificationQualifier) + .ValueOrDefault(); + + Assert.IsNotNull(institutionalBillTypeIdentification); + Assert.IsNotNull(payerClaimControlNumber); + Assert.IsNotNull(claimIdNumberForClearinghouseAndOtherTransmissionItermediaries); + Assert.IsNotEmpty(institutionalBillTypeIdentification); + Assert.IsNotEmpty(payerClaimControlNumber); + Assert.IsNotEmpty(claimIdNumberForClearinghouseAndOtherTransmissionItermediaries); + Assert.AreEqual("BLT", institutionalBillTypeIdentification); + Assert.AreEqual("1K", payerClaimControlNumber); + Assert.AreEqual("D9", claimIdNumberForClearinghouseAndOtherTransmissionItermediaries); + } + + [Test] + public void Verify_can_parse_TotalRejectedQuantity_when_TotalAcceptedQuantity_missing_condition() + { + string message = @"ISA*03*6327 *01*NFMC01 *ZZ*MACHETE *ZZ*PERSEPVS *090601*0406*^*00501*000026531*0*P*:~ +GS*HB*FL0738*PERSEPVS*20090601*040612*1*X*005010X279~ +ST*277*0001*005010X214~ +BHT*0085*08*277X2140001*20060205*1635*TH~ +HL*1**20*1~ +NM1*AY*2*FIRST CLEARINGHOUSE*****46*CLHR00~ +TRN*1*200102051635S00001ABCDEF~ +DTP*050*D8*20060205~ +DTP*009*D8*20060205~ +HL*2*1*21*1~ +NM1*41*2*BEST BILLING SERVICE*****46*S00001~ +TRN*2*2002020542857~ +STC*A0:16:PR*20060205*WQ*1000~ +QTY*AA*2~ +AMT*YU*200~ +AMT*YY*800~ +HL*3*2*19*1~ +NM1*85*2*SMITH CLINIC*****FI*123456789~ +HL*4*3*PT~ +NM1*QC*1*DOE*JOHN****MI*00ABCD1234~ +TRN*2*DOE01428~ +STC*A0:16:PR*20060205*WQ*200~ +REF*1K*22029500123407X~ +REF*D9*22029500123407X~ +REF*BLT*22029500123407X~ +DTP*472*RD8*20060128-20060131~ +SVC*HC:22305:22*350*****1~ +STC*A3:122**U*******A3:153:82~ +REF*FJ*11~ +SE*37*0001~ +GE*1*1~ +IEA*1*000026531~"; + + EntityResult entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + IParser query = entityResult.CreateQuery(layout); + + Result, HCA277> result = entityResult.Query(query); + + var interchangeSegment = result.Select(x => x.InterchangeControlHeader); + var transactionSetHeader = result.Select(x => x.Transactions)[0].Select(x => x.TransactionSetHeader); + var groupSegment = result.Select(x => x.Transactions)[0].Select(x => x.FunctionalGroupHeader); + + Assert.IsTrue(result.HasResult); + Assert.IsNotNull(interchangeSegment); + Assert.IsTrue(interchangeSegment.HasValue); + Assert.IsTrue(groupSegment.HasValue); + Assert.IsTrue(transactionSetHeader.HasValue); + + Assert.IsTrue(result.Select(x => x.Transactions).HasValue); + Assert.IsTrue(result.Select(x => x.Transactions)[0].HasValue); + + string totalRejectedQuantity = result + .Select(x => x.Transactions)[0] + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalRejectedQuantity) + .Select(x => x.QuantityQualifier) + .ValueOrDefault(); + + Assert.AreEqual("AA", totalRejectedQuantity); + + Value totalAcceptedQuantity = result + .Select(x => x.Transactions)[0] + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalAcceptedQuantity) + .Select(x => x.QuantityQualifier); + + Assert.IsFalse(totalAcceptedQuantity.HasValue); + } + + [Test] + public void Verify_can_parse_TotalAcceptedQuantity_when_TotalRejectedQuantity_missing_condition() + { + string message = @"ISA*03*6327 *01*NFMC01 *ZZ*MACHETE *ZZ*PERSEPVS *090601*0406*^*00501*000026531*0*P*:~ +GS*HB*FL0738*PERSEPVS*20090601*040612*1*X*005010X279~ +ST*277*0001*005010X214~ +BHT*0085*08*277X2140001*20060205*1635*TH~ +HL*1**20*1~ +NM1*AY*2*FIRST CLEARINGHOUSE*****46*CLHR00~ +TRN*1*200102051635S00001ABCDEF~ +DTP*050*D8*20060205~ +DTP*009*D8*20060205~ +HL*2*1*21*1~ +NM1*41*2*BEST BILLING SERVICE*****46*S00001~ +TRN*2*2002020542857~ +STC*A0:16:PR*20060205*WQ*1000~ +QTY*90*1~ +AMT*YU*200~ +AMT*YY*800~ +HL*3*2*19*1~ +NM1*85*2*SMITH CLINIC*****FI*123456789~ +HL*4*3*PT~ +NM1*QC*1*DOE*JOHN****MI*00ABCD1234~ +TRN*2*DOE01428~ +STC*A0:16:PR*20060205*WQ*200~ +REF*1K*22029500123407X~ +REF*D9*22029500123407X~ +REF*BLT*22029500123407X~ +DTP*472*RD8*20060128-20060131~ +SVC*HC:22305:22*350*****1~ +STC*A3:122**U*******A3:153:82~ +REF*FJ*11~ +SE*37*0001~ +GE*1*1~ +IEA*1*000026531~"; + + EntityResult entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + IParser query = entityResult.CreateQuery(layout); + + Result, HCA277> result = entityResult.Query(query); + + var interchangeSegment = result.Select(x => x.InterchangeControlHeader); + var transactionSetHeader = result.Select(x => x.Transactions)[0].Select(x => x.TransactionSetHeader); + var groupSegment = result.Select(x => x.Transactions)[0].Select(x => x.FunctionalGroupHeader); + + Assert.IsTrue(result.HasResult); + Assert.IsNotNull(interchangeSegment); + Assert.IsTrue(interchangeSegment.HasValue); + Assert.IsTrue(groupSegment.HasValue); + Assert.IsTrue(transactionSetHeader.HasValue); + + Assert.IsTrue(result.Select(x => x.Transactions).HasValue); + Assert.IsTrue(result.Select(x => x.Transactions)[0].HasValue); + + string totalAcceptedQuantity = result + .Select(x => x.Transactions)[0] + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalAcceptedQuantity) + .Select(x => x.QuantityQualifier) + .ValueOrDefault(); + + Assert.AreEqual("90", totalAcceptedQuantity); + + Value totalRejectedQuantity = result + .Select(x => x.Transactions)[0] + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalRejectedQuantity) + .Select(x => x.QuantityQualifier); + + Assert.IsFalse(totalRejectedQuantity.HasValue); + } + + [Test] + public void Verify_can_parse_TotalAcceptedAmount_and_TotalRejectedAmount_condition() + { + string message = @"ISA*03*6327 *01*NFMC01 *ZZ*MACHETE *ZZ*PERSEPVS *090601*0406*^*00501*000026531*0*P*:~ +GS*HB*FL0738*PERSEPVS*20090601*040612*1*X*005010X279~ +ST*277*0001*005010X214~ +BHT*0085*08*277X2140001*20060205*1635*TH~ +HL*1**20*1~ +NM1*AY*2*FIRST CLEARINGHOUSE*****46*CLHR00~ +TRN*1*200102051635S00001ABCDEF~ +DTP*050*D8*20060205~ +DTP*009*D8*20060205~ +HL*2*1*21*1~ +NM1*41*2*BEST BILLING SERVICE*****46*S00001~ +TRN*2*2002020542857~ +STC*A0:16:PR*20060205*WQ*1000~ +QTY*90*1~ +QTY*AA*2~ +AMT*YU*200~ +AMT*YY*800~ +HL*3*2*19*1~ +NM1*85*2*SMITH CLINIC*****FI*123456789~ +HL*4*3*PT~ +NM1*QC*1*DOE*JOHN****MI*00ABCD1234~ +TRN*2*DOE01428~ +STC*A0:16:PR*20060205*WQ*200~ +REF*1K*22029500123407X~ +REF*D9*22029500123407X~ +REF*BLT*22029500123407X~ +DTP*472*RD8*20060128-20060131~ +SVC*HC:22305:22*350*****1~ +STC*A3:122**U*******A3:153:82~ +REF*FJ*11~ +SE*37*0001~ +GE*1*1~ +IEA*1*000026531~"; + + EntityResult entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + IParser query = entityResult.CreateQuery(layout); + + Result, HCA277> result = entityResult.Query(query); + + var interchangeSegment = result.Select(x => x.InterchangeControlHeader); + var transactionSetHeader = result.Select(x => x.Transactions)[0].Select(x => x.TransactionSetHeader); + var groupSegment = result.Select(x => x.Transactions)[0].Select(x => x.FunctionalGroupHeader); + + Assert.IsTrue(result.HasResult); + Assert.IsNotNull(interchangeSegment); + Assert.IsTrue(interchangeSegment.HasValue); + Assert.IsTrue(groupSegment.HasValue); + Assert.IsTrue(transactionSetHeader.HasValue); + + Assert.IsTrue(result.Select(x => x.Transactions).HasValue); + Assert.IsTrue(result.Select(x => x.Transactions)[0].HasValue); + + Value totalAcceptedAmount = result + .Select(x => x.Transactions)[0] + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalAcceptedAmount) + .Select(x => x.AmountQualifierCode); + + Assert.IsTrue(totalAcceptedAmount.HasValue); + Assert.IsTrue(totalAcceptedAmount.IsPresent); + Assert.AreEqual("YU", totalAcceptedAmount.ValueOrDefault()); + + Value totalRejectedAmount = result + .Select(x => x.Transactions)[0] + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalRejectedAmount) + .Select(x => x.AmountQualifierCode); + + Assert.IsTrue(totalRejectedAmount.HasValue); + Assert.IsTrue(totalRejectedAmount.IsPresent); + Assert.AreEqual("YY", totalRejectedAmount.ValueOrDefault()); + } + + [Test] + public void METHOD() + { + string message = @"ISA*03*6327 *01*NFMC01 *ZZ*MACHETE *ZZ*PERSEPVS *090601*0406*^*00501*000026531*0*P*:~ +GS*HB*FL0738*PERSEPVS*20090601*040612*1*X*005010X279~ +ST*277*0001*005010X214~ +BHT*0085*08*277X2140001*20060205*1635*TH~ +HL*1**20*1~ +NM1*AY*2*FIRST CLEARINGHOUSE*****46*CLHR00~ +TRN*1*200102051635S00001ABCDEF~ +DTP*050*D8*20060205~ +DTP*009*D8*20060205~ +HL*2*1*21*1~ +NM1*41*2*BEST BILLING SERVICE*****46*S00001~ +TRN*2*2002020542857~ +STC*A0:16:PR*20060205*WQ*1000~ +QTY*90*1~ +QTY*AA*2~ +AMT*YU*200~ +AMT*YY*800~ +HL*3*2*19*1~ +NM1*85*2*SMITH CLINIC*****FI*123456789~ +HL*4*3*PT~ +NM1*QC*1*DOE*JOHN****MI*00ABCD1234~ +TRN*2*DOE01428~ +STC*A0:16:PR*20060205*WQ*200~ +REF*1K*22029500123407X~ +REF*D9*22029500123407X~ +REF*BLT*22029500123407X~ +DTP*472*RD8*20060128-20060131~ +SVC*HC:22305:22*350*****1~ +STC*A3:122**U*******A3:153:82~ +REF*FJ*11~ +REF*XZ*11~ +SE*37*0001~ +GE*1*1~ +IEA*1*000026531~"; + + EntityResult entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + IParser query = entityResult.CreateQuery(layout); + + Result, HCA277> result = entityResult.Query(query); + + var interchangeSegment = result.Select(x => x.InterchangeControlHeader); + var transactionSetHeader = result.Select(x => x.Transactions)[0].Select(x => x.TransactionSetHeader); + var groupSegment = result.Select(x => x.Transactions)[0].Select(x => x.FunctionalGroupHeader); + + Assert.IsTrue(result.HasResult); + Assert.IsNotNull(interchangeSegment); + Assert.IsTrue(interchangeSegment.HasValue); + Assert.IsTrue(groupSegment.HasValue); + Assert.IsTrue(transactionSetHeader.HasValue); + + Assert.IsTrue(result.Select(x => x.Transactions).HasValue); + Assert.IsTrue(result.Select(x => x.Transactions)[0].HasValue); + + var itemIdentification = result + .Select(x => x.Transactions)[0] + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimStatusTrackingNumber)[0] + .Select(x => x.ServiceLineInformation)[0] + .Select(x => x.ItemIdentification) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(itemIdentification.HasValue); + Assert.IsTrue(itemIdentification.IsPresent); + Assert.AreEqual("FJ", itemIdentification.ValueOrDefault()); + + var pharmacyPrescriptionNumber = result + .Select(x => x.Transactions)[0] + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimStatusTrackingNumber)[0] + .Select(x => x.ServiceLineInformation)[0] + .Select(x => x.PharmacyPrescriptionNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(pharmacyPrescriptionNumber.HasValue); + Assert.IsTrue(pharmacyPrescriptionNumber.IsPresent); + Assert.AreEqual("XZ", pharmacyPrescriptionNumber.ValueOrDefault()); + } + + [Test] + public void Verify_can_parse_ServiceLineItemIdentification_and_PharmacyPresciptionNumber() + { + string message = @"ISA*03*6327 *01*NFMC01 *ZZ*MACHETE *ZZ*PERSEPVS *090601*0406*^*00501*000026531*0*P*:~ +GS*HB*FL0738*PERSEPVS*20090601*040612*1*X*005010X279~ +ST*277*0001*005010X214~ +BHT*0085*08*277X2140001*20060205*1635*TH~ +HL*1**20*1~ +NM1*AY*2*FIRST CLEARINGHOUSE*****46*CLHR00~ +TRN*1*200102051635S00001ABCDEF~ +DTP*050*D8*20060205~ +DTP*009*D8*20060205~ +HL*2*1*21*1~ +NM1*41*2*BEST BILLING SERVICE*****46*S00001~ +TRN*2*2002020542857~ +STC*A0:16:PR*20060205*WQ*1000~ +QTY*90*1~ +QTY*AA*2~ +AMT*YU*200~ +AMT*YY*800~ +HL*3*2*19*1~ +NM1*85*2*SMITH CLINIC*****FI*123456789~ +HL*4*3*PT~ +NM1*QC*1*DOE*JOHN****MI*00ABCD1234~ +TRN*2*DOE01428~ +STC*A0:16:PR*20060205*WQ*200~ +REF*1K*22029500123407X~ +REF*D9*22029500123407X~ +REF*BLT*22029500123407X~ +DTP*472*RD8*20060128-20060131~ +SVC*HC:22305:22*350*****1~ +STC*A3:122**U*******A3:153:82~ +REF*FJ*11~ +REF*XZ*11~ +SE*37*0001~ +GE*1*1~ +IEA*1*000026531~"; + + EntityResult entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + IParser query = entityResult.CreateQuery(layout); + + Result, HCA277> result = entityResult.Query(query); + + var interchangeSegment = result.Select(x => x.InterchangeControlHeader); + var transactionSetHeader = result.Select(x => x.Transactions)[0].Select(x => x.TransactionSetHeader); + var groupSegment = result.Select(x => x.Transactions)[0].Select(x => x.FunctionalGroupHeader); + + Assert.IsTrue(result.HasResult); + Assert.IsNotNull(interchangeSegment); + Assert.IsTrue(interchangeSegment.HasValue); + Assert.IsTrue(groupSegment.HasValue); + Assert.IsTrue(transactionSetHeader.HasValue); + + Assert.IsTrue(result.Select(x => x.Transactions).HasValue); + Assert.IsTrue(result.Select(x => x.Transactions)[0].HasValue); + + var itemIdentification = result + .Select(x => x.Transactions)[0] + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimStatusTrackingNumber)[0] + .Select(x => x.ServiceLineInformation)[0] + .Select(x => x.ItemIdentification) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(itemIdentification.HasValue); + Assert.IsTrue(itemIdentification.IsPresent); + Assert.AreEqual("FJ", itemIdentification.ValueOrDefault()); + + var pharmacyPrescriptionNumber = result + .Select(x => x.Transactions)[0] + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimStatusTrackingNumber)[0] + .Select(x => x.ServiceLineInformation)[0] + .Select(x => x.PharmacyPrescriptionNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(pharmacyPrescriptionNumber.HasValue); + Assert.IsTrue(pharmacyPrescriptionNumber.IsPresent); + Assert.AreEqual("XZ", pharmacyPrescriptionNumber.ValueOrDefault()); + } + + [Test] + public void Verify_can_parse_ServiceLineItemIdentification_with_PharmacyPresciptionNumber_missing() + { + string message = @"ISA*03*6327 *01*NFMC01 *ZZ*MACHETE *ZZ*PERSEPVS *090601*0406*^*00501*000026531*0*P*:~ +GS*HB*FL0738*PERSEPVS*20090601*040612*1*X*005010X279~ +ST*277*0001*005010X214~ +BHT*0085*08*277X2140001*20060205*1635*TH~ +HL*1**20*1~ +NM1*AY*2*FIRST CLEARINGHOUSE*****46*CLHR00~ +TRN*1*200102051635S00001ABCDEF~ +DTP*050*D8*20060205~ +DTP*009*D8*20060205~ +HL*2*1*21*1~ +NM1*41*2*BEST BILLING SERVICE*****46*S00001~ +TRN*2*2002020542857~ +STC*A0:16:PR*20060205*WQ*1000~ +QTY*90*1~ +QTY*AA*2~ +AMT*YU*200~ +AMT*YY*800~ +HL*3*2*19*1~ +NM1*85*2*SMITH CLINIC*****FI*123456789~ +HL*4*3*PT~ +NM1*QC*1*DOE*JOHN****MI*00ABCD1234~ +TRN*2*DOE01428~ +STC*A0:16:PR*20060205*WQ*200~ +REF*1K*22029500123407X~ +REF*D9*22029500123407X~ +REF*BLT*22029500123407X~ +DTP*472*RD8*20060128-20060131~ +SVC*HC:22305:22*350*****1~ +STC*A3:122**U*******A3:153:82~ +REF*FJ*11~ +SE*37*0001~ +GE*1*1~ +IEA*1*000026531~"; + + EntityResult entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + IParser query = entityResult.CreateQuery(layout); + + Result, HCA277> result = entityResult.Query(query); + + var interchangeSegment = result.Select(x => x.InterchangeControlHeader); + var transactionSetHeader = result.Select(x => x.Transactions)[0].Select(x => x.TransactionSetHeader); + var groupSegment = result.Select(x => x.Transactions)[0].Select(x => x.FunctionalGroupHeader); + + Assert.IsTrue(result.HasResult); + Assert.IsNotNull(interchangeSegment); + Assert.IsTrue(interchangeSegment.HasValue); + Assert.IsTrue(groupSegment.HasValue); + Assert.IsTrue(transactionSetHeader.HasValue); + + Assert.IsTrue(result.Select(x => x.Transactions).HasValue); + Assert.IsTrue(result.Select(x => x.Transactions)[0].HasValue); + + var itemIdentification = result + .Select(x => x.Transactions)[0] + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimStatusTrackingNumber)[0] + .Select(x => x.ServiceLineInformation)[0] + .Select(x => x.ItemIdentification) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(itemIdentification.HasValue); + Assert.IsTrue(itemIdentification.IsPresent); + Assert.AreEqual("FJ", itemIdentification.ValueOrDefault()); + + var pharmacyPrescriptionNumber = result + .Select(x => x.Transactions)[0] + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimStatusTrackingNumber)[0] + .Select(x => x.ServiceLineInformation)[0] + .Select(x => x.PharmacyPrescriptionNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(pharmacyPrescriptionNumber.HasValue); + Assert.IsFalse(pharmacyPrescriptionNumber.IsPresent); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Layout835Tests.cs b/src/Machete.X12.Tests/Layouts/Layout835Tests.cs index 32051b0aa..6064100ba 100644 --- a/src/Machete.X12.Tests/Layouts/Layout835Tests.cs +++ b/src/Machete.X12.Tests/Layouts/Layout835Tests.cs @@ -1,5 +1,6 @@ namespace Machete.X12.Tests.Layouts { + using System.Linq; using NUnit.Framework; using Testing; using X12Schema.V5010; @@ -10,13 +11,40 @@ public class Layout835Tests : X12MacheteTestHarness { [Test] - public void Test() + public void Verify_can_parse_optional_segment_succeeded_by_segment_list_of_same_type() { // this data doesn't have a valid PER segment before 'PER*BL*PROVIDER SERVICES*TE*321321321*UR*www.default.org' so it fails // because it is defined in L1000A_835 as Segment BusinessContactInformation { get; } which is optional followed by // SegmentList TechnicalContactInformation { get; } which is required string message = - @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*:~GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1~ST*835*212900796~BPR*I*98229.13*C*ACH*CCP*01*021300556*DA*320993201765*1141797357**01*222370440*DA*7900644837*20180627~TRN*1*021300078111613*1141797357~REF*EV*00DJ~DTM*405*20180611~N1*PR*NYSDOH~N3*OFFICE OF HEALTH INSURANCE PROGRAMS*CORNING TOWER, EMPIRE STATE PLAZA~N4*ALBANY*NY*122370080~PER*BL*PROVIDER SERVICES*TE*321321321*UR*www.default.org~N1*PE*OPERATIONS ASSOCIATES LLC*XX*3333333333~N4*NEW YORK*NY*104701104~REF*TJ*8524556~LX*1~CLP*555555555555*1*1269.55*0**MC*11111111111*21*4~CAS*CO*26*1269.55~NM1*QC*1*SMITH*BOB****MI*CH21785G~NM1*74*1*SMITH*BOB*E~NM1*82*1******XX*8888888888888~REF*EA*00446771~REF*9A*3839~DTM*232*20171216~DTM*233*20171221~QTY*CA*5~SE*1301*212900796~GE*1*176073292~IEA*1*176073292"; + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*835*212900796 +BPR*I*98229.13*C*ACH*CCP*01*021300556*DA*320993201765*1141797357**01*222370440*DA*7900644837*20180627 +TRN*1*021300078111613*1141797357 +REF*EV*00DJ +DTM*405*20180611 +N1*PR*NYSDOH +N3*OFFICE OF HEALTH INSURANCE PROGRAMS*CORNING TOWER, EMPIRE STATE PLAZA +N4*ALBANY*NY*122370080 +PER*BL*PROVIDER SERVICES*TE*321321321*UR*www.default.org +N1*PE*OPERATIONS ASSOCIATES LLC*XX*3333333333 +N4*NEW YORK*NY*104701104 +REF*TJ*8524556 +LX*1 +CLP*555555555555*1*1269.55*0**MC*11111111111*21*4 +CAS*CO*26*1269.55 +NM1*QC*1*SMITH*BOB****MI*CH21785G +NM1*74*1*SMITH*BOB*E +NM1*82*1******XX*8888888888888 +REF*EA*00446771 +REF*9A*3839 +DTM*232*20171216 +DTM*233*20171221 +QTY*CA*5 +SE*1301*212900796 +GE*1*176073292 +IEA*1*176073292"; EntityResult entityResult = Parser.Parse(message); @@ -40,6 +68,247 @@ public void Test() Assert.AreEqual("EMEDNYBAT", functionalIdentifierGroup); } + [Test] + public void Verify_can_parse_VersionIdentification_when_ReceiverIdentification_missing() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*835*212900796 +BPR*I*98229.13*C*ACH*CCP*01*021300556*DA*320993201765*1141797357**01*222370440*DA*7900644837*20180627 +TRN*1*021300078111613*1141797357 +REF*F2*00DJ +DTM*405*20180611 +N1*PR*NYSDOH +N3*OFFICE OF HEALTH INSURANCE PROGRAMS*CORNING TOWER, EMPIRE STATE PLAZA +N4*ALBANY*NY*122370080 +PER*BL*PROVIDER SERVICES*TE*321321321*UR*www.default.org +N1*PE*OPERATIONS ASSOCIATES LLC*XX*3333333333 +N4*NEW YORK*NY*104701104 +REF*TJ*8524556 +LX*1 +CLP*555555555555*1*1269.55*0**MC*11111111111*21*4 +CAS*CO*26*1269.55 +NM1*QC*1*SMITH*BOB****MI*CH21785G +NM1*74*1*SMITH*BOB*E +NM1*82*1******XX*8888888888888 +REF*EA*00446771 +REF*9A*3839 +DTM*232*20171216 +DTM*233*20171221 +QTY*CA*5 +SE*1301*212900796 +GE*1*176073292 +IEA*1*176073292"; + + EntityResult entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + IParser query = entityResult.CreateQuery(layout); + + Result, HCPA835> result = entityResult.Query(query); + + Assert.IsTrue(result.HasResult); + + var transactions = result.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + Value versionIdentification = result + .Select(x => x.Transactions)[0] + .Select(x => x.VersionIdentification) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(versionIdentification.HasValue); + Assert.IsTrue(versionIdentification.IsPresent); + Assert.AreEqual("F2", versionIdentification.ValueOrDefault()); + } + + [Test] + [Explicit("Issue #65")] + public void Verify_can_parse_PayerWebsite_when_multiple_TechnicalContactInformation_segments_present() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*835*212900796 +BPR*I*98229.13*C*ACH*CCP*01*021300556*DA*320993201765*1141797357**01*222370440*DA*7900644837*20180627 +TRN*1*021300078111613*1141797357 +REF*F2*00DJ +DTM*405*20180611 +N1*PR*NYSDOH +N3*OFFICE OF HEALTH INSURANCE PROGRAMS*CORNING TOWER, EMPIRE STATE PLAZA +N4*ALBANY*NY*122370080 +PER*CX*PROVIDER SERVICES*TE*321321321*UR*www.default.org +PER*BL*PROVIDER SERVICES*TE*321321321*UR*www.default.org +PER*BL*PROVIDER SERVICES*TE*321321321*UR*www.default.org +PER*BL*PROVIDER SERVICES*TE*321321321*UR*www.default.org +PER*IC*PROVIDER SERVICES*TE*321321321*UR*www.default.org +N1*PE*OPERATIONS ASSOCIATES LLC*XX*3333333333 +N4*NEW YORK*NY*104701104 +REF*TJ*8524556 +LX*1 +CLP*555555555555*1*1269.55*0**MC*11111111111*21*4 +CAS*CO*26*1269.55 +NM1*QC*1*SMITH*BOB****MI*CH21785G +NM1*74*1*SMITH*BOB*E +NM1*82*1******XX*8888888888888 +REF*EA*00446771 +REF*9A*3839 +DTM*232*20171216 +DTM*233*20171221 +QTY*CA*5 +SE*1301*212900796 +GE*1*176073292 +IEA*1*176073292"; + + EntityResult entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + IParser query = entityResult.CreateQuery(layout); + + Result, HCPA835> result = entityResult.Query(query); + + Assert.IsTrue(result.HasResult); + + var transactions = result.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + Value businessContactInformation = result + .Select(x => x.Transactions)[0] + .Select(x => x.PayerIdentification)[0] + .Select(x => x.BusinessContactInformation) + .Select(x => x.ContactFunctionCode); + + Assert.IsTrue(businessContactInformation.HasValue); + Assert.IsTrue(businessContactInformation.IsPresent); + Assert.AreEqual("CX", businessContactInformation.ValueOrDefault()); + + var contacts = result + .Select(x => x.Transactions)[0] + .Select(x => x.PayerIdentification)[0] + .Select(x => x.TechnicalContactInformation); + + Assert.IsTrue(contacts.HasValue); + + var technicalContacts = contacts.ToEnumerable().ToList(); + + foreach (var contactInfo in technicalContacts) + { + Assert.IsTrue(contactInfo.HasValue); + + var contact = contactInfo.Select(x => x.ContactFunctionCode); + + Assert.IsTrue(contact.HasValue); + Assert.IsTrue(contact.IsPresent); + Assert.AreEqual("BL", contact.ValueOrDefault()); + } + + var payerWebsite = result + .Select(x => x.Transactions)[0] + .Select(x => x.PayerIdentification)[0] + .Select(x => x.PayerWebsite) + .Select(x => x.ContactFunctionCode); + + Assert.IsTrue(payerWebsite.HasValue); + Assert.IsTrue(payerWebsite.IsPresent); + Assert.AreEqual("IC", payerWebsite.ValueOrDefault()); + } + + [Test] + [Explicit("Issue #65")] + public void Verify_can_parse_PayerWebsite_when_single_TechnicalContactInformation_segments_present() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*835*212900796 +BPR*I*98229.13*C*ACH*CCP*01*021300556*DA*320993201765*1141797357**01*222370440*DA*7900644837*20180627 +TRN*1*021300078111613*1141797357 +REF*F2*00DJ +DTM*405*20180611 +N1*PR*NYSDOH +N3*OFFICE OF HEALTH INSURANCE PROGRAMS*CORNING TOWER, EMPIRE STATE PLAZA +N4*ALBANY*NY*122370080 +PER*CX*PROVIDER SERVICES*TE*321321321*UR*www.default.org +PER*BL*PROVIDER SERVICES*TE*321321321*UR*www.default.org +PER*IC*PROVIDER SERVICES*TE*321321321*UR*www.default.org +N1*PE*OPERATIONS ASSOCIATES LLC*XX*3333333333 +N4*NEW YORK*NY*104701104 +REF*TJ*8524556 +LX*1 +CLP*555555555555*1*1269.55*0**MC*11111111111*21*4 +CAS*CO*26*1269.55 +NM1*QC*1*SMITH*BOB****MI*CH21785G +NM1*74*1*SMITH*BOB*E +NM1*82*1******XX*8888888888888 +REF*EA*00446771 +REF*9A*3839 +DTM*232*20171216 +DTM*233*20171221 +QTY*CA*5 +SE*1301*212900796 +GE*1*176073292 +IEA*1*176073292"; + + EntityResult entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + IParser query = entityResult.CreateQuery(layout); + + Result, HCPA835> result = entityResult.Query(query); + + Assert.IsTrue(result.HasResult); + + var transactions = result.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + Value businessContactInformation = result + .Select(x => x.Transactions)[0] + .Select(x => x.PayerIdentification)[0] + .Select(x => x.BusinessContactInformation) + .Select(x => x.ContactFunctionCode); + + Assert.IsTrue(businessContactInformation.HasValue); + Assert.IsTrue(businessContactInformation.IsPresent); + Assert.AreEqual("CX", businessContactInformation.ValueOrDefault()); + + var contacts = result + .Select(x => x.Transactions)[0] + .Select(x => x.PayerIdentification)[0] + .Select(x => x.TechnicalContactInformation); + + Assert.IsTrue(contacts.HasValue); + + var technicalContacts = contacts.ToEnumerable().ToList(); + + foreach (var contactInfo in technicalContacts) + { + Assert.IsTrue(contactInfo.HasValue); + + var contact = contactInfo.Select(x => x.ContactFunctionCode); + + Assert.IsTrue(contact.HasValue); + Assert.IsTrue(contact.IsPresent); + Assert.AreEqual("BL", contact.ValueOrDefault()); + } + + var payerWebsite = result + .Select(x => x.Transactions)[0] + .Select(x => x.PayerIdentification)[0] + .Select(x => x.PayerWebsite) + .Select(x => x.ContactFunctionCode); + + Assert.IsTrue(payerWebsite.HasValue); + Assert.IsTrue(payerWebsite.IsPresent); + Assert.AreEqual("IC", payerWebsite.ValueOrDefault()); + } + [Test] public void Verify_can_parse_segment_succeeded_by_segment_list_of_same_type() { diff --git a/src/Machete.X12.Tests/Layouts/MissingLayoutListTests.cs b/src/Machete.X12.Tests/Layouts/MissingLayoutListTests.cs new file mode 100644 index 000000000..53e8323a2 --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/MissingLayoutListTests.cs @@ -0,0 +1,147 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class MissingLayoutListTests : + X12MacheteTestHarness + { + [Test(Description = "Condition : PatientControlNumber => EJ, InstitutionalTypeOfBill => BLT, MedicalRecordIdentificationNumber => EA, ClaimIdentificationNumber => D9")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +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 +SE*35*0001 +GE*1*1 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + Assert.IsFalse(transactions.Select(x => x.PatientDetail)[0].HasValue); + Assert.IsNull(transactions.Select(x => x.PatientDetail)[0].Value); + } + + [Test(Description = "Condition : PatientControlNumber => EJ, InstitutionalTypeOfBill => BLT, MedicalRecordIdentificationNumber => EA, ClaimIdentificationNumber => D9"), Explicit] + public void Test2() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +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 +SE*35*0001 +GE*1*1 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + Assert.IsFalse(transactions.Select(x => x.PatientDetail).TryGetValue(0, out var layout1)); + + var layout1Value = layout1.Value.ServiceProviderLevel.Value; + +// Assert.Throws(() => +// { +// var patientControlNumber = transactions +// .Select(x => x.PatientDetail)[0]; +// }); + } + + [Test(Description = @"Condition : PatientControlNumber => EJ, + InstitutionalTypeOfBill => BLT, + MedicalRecordIdentificationNumber => EA, + ClaimIdentificationNumber => D9"), Explicit] + public void Test3() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +HL*1**20*1 +NM1*PR*2*ABC INSURANCE*****PI*12345 +SE*35*0001 +GE*1*1 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + +// Assert.IsFalse(transactions.Select(x => x.PatientDetail).TryGetValue(0, out var layout1)); + +// var layout1Value1 = layout1.Value; +// var layout1Value = layout1.Select(x => x.ServiceProviderLevel).Value; + + Assert.Throws(() => + { + var payerName = transactions + .Select(x => x.InformationSourceDetail) + .TryGetValue(-1, out var layout1); + + var layout1Value = layout1.Value; +// .Value; +// .Select(x => x.PayerName) +// .Value; +// var patientControlNumber = transactions +// .Select(x => x.PatientDetail)[0]; + }); + } + + [Test] + public void Test() + { + + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing277AckL2000BConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing277AckL2000BConditionalTests.cs new file mode 100644 index 000000000..d1ddd56c9 --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing277AckL2000BConditionalTests.cs @@ -0,0 +1,557 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing277AckL2000BConditionalTests : + X12MacheteTestHarness + { + [Test(Description = "Condition : InformationSourceDetail.InformationSourceLevel => 20, InformationReceiverDetail.InformationSourceLevel => missing, BillingProviderOfServiceDetail.BillingProviderOfServiceLevel => missing")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +HL*1**20*1 +HL*4*3*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*EJ*SM123456 +REF*BLT*111 +DTP*472*RD8*20070131-20070204 +DTP*050*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*EJ*JO234567 +REF*BLT*111 +DTP*472*RD8*20070201-20070205 +DTP*050*D8*20070206 +HL*6*2*19*1 +NM1*1P*2*HOME HOSPITAL PHYSICIANS*****XX*1666666666 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +SVC*HC:99203*150*****1 +STC*P2:52*20070208 +DTP*472*D8*20070201 +DTP*050*D8*20070206 +SE*35*0001GE*1*176073292 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var levelCode = transactions + .Select(x => x.InformationSourceDetail)[0] + .Select(x => x.InformationSourceLevel) + .Select(x => x.LevelCode); + + Assert.IsTrue(levelCode.HasValue); + Assert.IsTrue(levelCode.IsPresent); + Assert.AreEqual("20", levelCode.ValueOrDefault()); + + var informationSourceLevel = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationSourceLevel) + .Select(x => x.LevelCode); + + Assert.IsFalse(informationSourceLevel.HasValue); + Assert.IsFalse(informationSourceLevel.IsPresent); + + var billingProviderOfServiceLevel = transactions + .Select(x => x.BillingProviderOfServiceDetail)[0] + .Select(x => x.BillingProviderOfServiceLevel) + .Select(x => x.LevelCode); + + Assert.IsFalse(billingProviderOfServiceLevel.HasValue); + Assert.IsFalse(billingProviderOfServiceLevel.IsPresent); + } + + [Test(Description = "Condition : InformationReceiverDetail.InformationSourceLevel => 21, InformationSourceDetail.InformationSourceLevel => missing, BillingProviderOfServiceDetail.BillingProviderOfServiceLevel => missing")] + public void Test2() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +HL*2*1*21*1 +NM1*41*2*XYZ SERVICE*****46*X67E +HL*4*3*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*EJ*SM123456 +REF*BLT*111 +DTP*472*RD8*20070131-20070204 +DTP*050*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*EJ*JO234567 +REF*BLT*111 +DTP*472*RD8*20070201-20070205 +DTP*050*D8*20070206 +HL*6*2*19*1 +NM1*1P*2*HOME HOSPITAL PHYSICIANS*****XX*1666666666 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +SVC*HC:99203*150*****1 +STC*P2:52*20070208 +DTP*472*D8*20070201 +DTP*050*D8*20070206 +SE*35*0001GE*1*176073292 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var levelCode = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationSourceLevel) + .Select(x => x.LevelCode); + + Assert.IsTrue(levelCode.HasValue); + Assert.IsTrue(levelCode.IsPresent); + Assert.AreEqual("21", levelCode.ValueOrDefault()); + + var informationSourceLevel = transactions + .Select(x => x.InformationSourceDetail)[0] + .Select(x => x.InformationSourceLevel) + .Select(x => x.LevelCode); + + Assert.IsFalse(informationSourceLevel.HasValue); + Assert.IsFalse(informationSourceLevel.IsPresent); + + var billingProviderOfServiceLevel = transactions + .Select(x => x.BillingProviderOfServiceDetail)[0] + .Select(x => x.BillingProviderOfServiceLevel) + .Select(x => x.LevelCode); + + Assert.IsFalse(billingProviderOfServiceLevel.HasValue); + Assert.IsFalse(billingProviderOfServiceLevel.IsPresent); + } + + [Test(Description = "Condition : BillingProviderOfServiceDetail.BillingProviderOfServiceLevel => 19, InformationSourceDetail.InformationSourceLevel => missing, InformationReceiverDetail.InformationSourceLevel => missing")] + public void Test3() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +HL*3*2*19*1 +NM1*1P*2*HOME HOSPITAL*****XX*1666666661 +HL*4*3*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*EJ*SM123456 +REF*BLT*111 +DTP*472*RD8*20070131-20070204 +DTP*050*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*EJ*JO234567 +REF*BLT*111 +DTP*472*RD8*20070201-20070205 +DTP*050*D8*20070206 +HL*6*2*19*1 +NM1*1P*2*HOME HOSPITAL PHYSICIANS*****XX*1666666666 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +SVC*HC:99203*150*****1 +STC*P2:52*20070208 +DTP*472*D8*20070201 +DTP*050*D8*20070206 +SE*35*0001GE*1*176073292 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var levelCode = transactions + .Select(x => x.BillingProviderOfServiceDetail)[0] + .Select(x => x.BillingProviderOfServiceLevel) + .Select(x => x.LevelCode); + + Assert.IsTrue(levelCode.HasValue); + Assert.IsTrue(levelCode.IsPresent); + Assert.AreEqual("19", levelCode.ValueOrDefault()); + } + + [Test(Description = "Condition : InformationSourceDetail.InformationSourceLevel => 20, InformationReceiverDetail.InformationSourceLevel => 21, BillingProviderOfServiceDetail.BillingProviderOfServiceLevel => 19")] + public void Test4() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +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*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*EJ*SM123456 +REF*BLT*111 +DTP*472*RD8*20070131-20070204 +DTP*050*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*EJ*JO234567 +REF*BLT*111 +DTP*472*RD8*20070201-20070205 +DTP*050*D8*20070206 +HL*6*2*19*1 +NM1*1P*2*HOME HOSPITAL PHYSICIANS*****XX*1666666666 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +SVC*HC:99203*150*****1 +STC*P2:52*20070208 +DTP*472*D8*20070201 +DTP*050*D8*20070206 +SE*35*0001GE*1*176073292 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var levelCode = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationSourceLevel) + .Select(x => x.LevelCode); + + Assert.IsTrue(levelCode.HasValue); + Assert.IsTrue(levelCode.IsPresent); + Assert.AreEqual("21", levelCode.ValueOrDefault()); + + var billingProviderOfServiceLevel = transactions + .Select(x => x.BillingProviderOfServiceDetail)[0] + .Select(x => x.BillingProviderOfServiceLevel) + .Select(x => x.LevelCode); + + Assert.IsTrue(billingProviderOfServiceLevel.HasValue); + Assert.IsTrue(billingProviderOfServiceLevel.IsPresent); + Assert.AreEqual("19", billingProviderOfServiceLevel.ValueOrDefault()); + + var informationSourceLevel = transactions + .Select(x => x.InformationSourceDetail)[0] + .Select(x => x.InformationSourceLevel) + .Select(x => x.LevelCode); + + Assert.IsTrue(informationSourceLevel.HasValue); + Assert.IsTrue(informationSourceLevel.IsPresent); + Assert.AreEqual("20", informationSourceLevel.ValueOrDefault()); + } + + [Test(Description = "Condition : InformationSourceDetail.InformationSourceLevel => 20, InformationReceiverDetail.InformationSourceLevel => missing, BillingProviderOfServiceDetail.BillingProviderOfServiceLevel => 19")] + public void Test5() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +HL*1**20*1 +NM1*PR*2*ABC INSURANCE*****PI*12345 +HL*3*2*19*1 +NM1*1P*2*HOME HOSPITAL*****XX*1666666661 +HL*4*3*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*EJ*SM123456 +REF*BLT*111 +DTP*472*RD8*20070131-20070204 +DTP*050*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*EJ*JO234567 +REF*BLT*111 +DTP*472*RD8*20070201-20070205 +DTP*050*D8*20070206 +HL*6*2*19*1 +NM1*1P*2*HOME HOSPITAL PHYSICIANS*****XX*1666666666 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +SVC*HC:99203*150*****1 +STC*P2:52*20070208 +DTP*472*D8*20070201 +DTP*050*D8*20070206 +SE*35*0001GE*1*176073292 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var levelCode = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationSourceLevel) + .Select(x => x.LevelCode); + + Assert.IsFalse(levelCode.HasValue); + Assert.IsFalse(levelCode.IsPresent); + + var billingProviderOfServiceLevel = transactions + .Select(x => x.BillingProviderOfServiceDetail)[0] + .Select(x => x.BillingProviderOfServiceLevel) + .Select(x => x.LevelCode); + + Assert.IsTrue(billingProviderOfServiceLevel.HasValue); + Assert.IsTrue(billingProviderOfServiceLevel.IsPresent); + Assert.AreEqual("19", billingProviderOfServiceLevel.ValueOrDefault()); + + var informationSourceLevel = transactions + .Select(x => x.InformationSourceDetail)[0] + .Select(x => x.InformationSourceLevel) + .Select(x => x.LevelCode); + + Assert.IsTrue(informationSourceLevel.HasValue); + Assert.IsTrue(informationSourceLevel.IsPresent); + Assert.AreEqual("20", informationSourceLevel.ValueOrDefault()); + } + + [Test(Description = "Condition : InformationSourceDetail.InformationSourceLevel => 20, InformationReceiverDetail.InformationSourceLevel => 21, BillingProviderOfServiceDetail.BillingProviderOfServiceLevel => missing")] + public void Test6() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +HL*1**20*1 +NM1*PR*2*ABC INSURANCE*****PI*12345 +HL*2*1*21*1 +NM1*41*2*XYZ SERVICE*****46*X67E +HL*4*3*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*EJ*SM123456 +REF*BLT*111 +DTP*472*RD8*20070131-20070204 +DTP*050*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*EJ*JO234567 +REF*BLT*111 +DTP*472*RD8*20070201-20070205 +DTP*050*D8*20070206 +HL*6*2*19*1 +NM1*1P*2*HOME HOSPITAL PHYSICIANS*****XX*1666666666 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +SVC*HC:99203*150*****1 +STC*P2:52*20070208 +DTP*472*D8*20070201 +DTP*050*D8*20070206 +SE*35*0001GE*1*176073292 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var levelCode = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationSourceLevel) + .Select(x => x.LevelCode); + + Assert.IsTrue(levelCode.HasValue); + Assert.IsTrue(levelCode.IsPresent); + Assert.AreEqual("21", levelCode.ValueOrDefault()); + + var billingProviderOfServiceLevel = transactions + .Select(x => x.BillingProviderOfServiceDetail)[0] + .Select(x => x.BillingProviderOfServiceLevel) + .Select(x => x.LevelCode); + + Assert.IsFalse(billingProviderOfServiceLevel.HasValue); + Assert.IsFalse(billingProviderOfServiceLevel.IsPresent); + + var informationSourceLevel = transactions + .Select(x => x.InformationSourceDetail)[0] + .Select(x => x.InformationSourceLevel) + .Select(x => x.LevelCode); + + Assert.IsTrue(informationSourceLevel.HasValue); + Assert.IsTrue(informationSourceLevel.IsPresent); + Assert.AreEqual("20", informationSourceLevel.ValueOrDefault()); + } + + [Test(Description = "Condition : InformationSourceDetail.InformationSourceLevel => missing, InformationReceiverDetail.InformationSourceLevel => missing, BillingProviderOfServiceDetail.BillingProviderOfServiceLevel => missing")] + public void Test7() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +HL*4*3*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*EJ*SM123456 +REF*BLT*111 +DTP*472*RD8*20070131-20070204 +DTP*050*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*EJ*JO234567 +REF*BLT*111 +DTP*472*RD8*20070201-20070205 +DTP*050*D8*20070206 +HL*6*2*19*1 +NM1*1P*2*HOME HOSPITAL PHYSICIANS*****XX*1666666666 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +SVC*HC:99203*150*****1 +STC*P2:52*20070208 +DTP*472*D8*20070201 +DTP*050*D8*20070206 +SE*35*0001GE*1*176073292 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var levelCode = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationSourceLevel) + .Select(x => x.LevelCode); + + Assert.IsFalse(levelCode.HasValue); + Assert.IsFalse(levelCode.IsPresent); + + var billingProviderOfServiceLevel = transactions + .Select(x => x.BillingProviderOfServiceDetail)[0] + .Select(x => x.BillingProviderOfServiceLevel) + .Select(x => x.LevelCode); + + Assert.IsFalse(billingProviderOfServiceLevel.HasValue); + Assert.IsFalse(billingProviderOfServiceLevel.IsPresent); + + var informationSourceLevel = transactions + .Select(x => x.InformationSourceDetail)[0] + .Select(x => x.InformationSourceLevel) + .Select(x => x.LevelCode); + + Assert.IsFalse(informationSourceLevel.HasValue); + Assert.IsFalse(informationSourceLevel.IsPresent); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing277AckL2000DConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing277AckL2000DConditionalTests.cs new file mode 100644 index 000000000..7dcbf1fe3 --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing277AckL2000DConditionalTests.cs @@ -0,0 +1,735 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing277AckL2000DConditionalTests : + X12MacheteTestHarness + { + [Test(Description = "Condition : PatientLevel => PT")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +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*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*EJ*SM123456 +REF*BLT*111 +DTP*472*RD8*20070131-20070204 +DTP*050*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*EJ*JO234567 +REF*BLT*111 +DTP*472*RD8*20070201-20070205 +DTP*050*D8*20070206 +HL*6*2*19*1 +NM1*1P*2*HOME HOSPITAL PHYSICIANS*****XX*1666666666 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +SVC*HC:99203*150*****1 +STC*P2:52*20070208 +DTP*472*D8*20070201 +DTP*050*D8*20070206 +SE*35*0001GE*1*176073292 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var levelCode = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PatientLevel) + .Select(x => x.LevelCode); + + Assert.IsTrue(levelCode.HasValue); + Assert.IsTrue(levelCode.IsPresent); + Assert.AreEqual("PT", levelCode.ValueOrDefault()); + } + + [Test(Description = "Condition : PatientLevel => PT, PayerClaimControlNumber => missing, ClaimIdNumberForClearinghouseAndOtherTransmissionIntermediaries => missing, InstitutionalBillTypeIdentification => BLT"), Explicit("Issue #65")] + public void Test2() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +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*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*BLT*111 +DTP*472*RD8*20070131-20070204 +DTP*050*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*EJ*JO234567 +REF*BLT*111 +DTP*472*RD8*20070201-20070205 +DTP*050*D8*20070206 +HL*6*2*19*1 +NM1*1P*2*HOME HOSPITAL PHYSICIANS*****XX*1666666666 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +SVC*HC:99203*150*****1 +STC*P2:52*20070208 +DTP*472*D8*20070201 +DTP*050*D8*20070206 +SE*35*0001GE*1*176073292 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var levelCode = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PatientLevel) + .Select(x => x.LevelCode); + + Assert.IsTrue(levelCode.HasValue); + Assert.IsTrue(levelCode.IsPresent); + Assert.AreEqual("PT", levelCode.ValueOrDefault()); + + var payerClaimControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimStatusTrackingNumber)[0] + .Select(x => x.PayerClaimControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(payerClaimControlNumber.HasValue); + Assert.IsFalse(payerClaimControlNumber.IsPresent); + + var claimIdNumberForClearinghouseAndOtherTransmissionIntermediaries = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimStatusTrackingNumber)[0] + .Select(x => x.ClaimIdNumberForClearinghouseAndOtherTransmissionIntermediaries) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(claimIdNumberForClearinghouseAndOtherTransmissionIntermediaries.HasValue); + Assert.IsFalse(claimIdNumberForClearinghouseAndOtherTransmissionIntermediaries.IsPresent); + + var institutionalBillTypeIdentification = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimStatusTrackingNumber)[0] + .Select(x => x.InstitutionalBillTypeIdentification) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(institutionalBillTypeIdentification.HasValue); + Assert.IsTrue(institutionalBillTypeIdentification.IsPresent); + Assert.AreEqual("BLT", institutionalBillTypeIdentification.ValueOrDefault()); + } + + [Test(Description = "Condition : PatientLevel => PT, PayerClaimControlNumber => 1K, ClaimIdNumberForClearinghouseAndOtherTransmissionIntermediaries => missing, InstitutionalBillTypeIdentification => missing"), Explicit("Issue #65")] + public void Test3() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +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*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*1K*111 +DTP*472*RD8*20070131-20070204 +DTP*050*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*EJ*JO234567 +REF*BLT*111 +DTP*472*RD8*20070201-20070205 +DTP*050*D8*20070206 +HL*6*2*19*1 +NM1*1P*2*HOME HOSPITAL PHYSICIANS*****XX*1666666666 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +SVC*HC:99203*150*****1 +STC*P2:52*20070208 +DTP*472*D8*20070201 +DTP*050*D8*20070206 +SE*35*0001GE*1*176073292 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var levelCode = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PatientLevel) + .Select(x => x.LevelCode); + + Assert.IsTrue(levelCode.HasValue); + Assert.IsTrue(levelCode.IsPresent); + Assert.AreEqual("PT", levelCode.ValueOrDefault()); + + var payerClaimControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimStatusTrackingNumber)[0] + .Select(x => x.PayerClaimControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(payerClaimControlNumber.HasValue); + Assert.IsTrue(payerClaimControlNumber.IsPresent); + Assert.AreEqual("1K", payerClaimControlNumber.ValueOrDefault()); + + var claimIdNumberForClearinghouseAndOtherTransmissionIntermediaries = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimStatusTrackingNumber)[0] + .Select(x => x.ClaimIdNumberForClearinghouseAndOtherTransmissionIntermediaries) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(claimIdNumberForClearinghouseAndOtherTransmissionIntermediaries.HasValue); + Assert.IsFalse(claimIdNumberForClearinghouseAndOtherTransmissionIntermediaries.IsPresent); + + var institutionalBillTypeIdentification = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimStatusTrackingNumber)[0] + .Select(x => x.InstitutionalBillTypeIdentification) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(institutionalBillTypeIdentification.HasValue); + Assert.IsFalse(institutionalBillTypeIdentification.IsPresent); + } + + [Test(Description = "Condition : PatientLevel => PT, PayerClaimControlNumber => missing, ClaimIdNumberForClearinghouseAndOtherTransmissionIntermediaries => D9, InstitutionalBillTypeIdentification => missing"), Explicit("Issue #65")] + public void Test4() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +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*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*1K*111 +DTP*472*RD8*20070131-20070204 +DTP*050*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*EJ*JO234567 +REF*BLT*111 +DTP*472*RD8*20070201-20070205 +DTP*050*D8*20070206 +HL*6*2*19*1 +NM1*1P*2*HOME HOSPITAL PHYSICIANS*****XX*1666666666 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +SVC*HC:99203*150*****1 +STC*P2:52*20070208 +DTP*472*D8*20070201 +DTP*050*D8*20070206 +SE*35*0001GE*1*176073292 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var levelCode = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PatientLevel) + .Select(x => x.LevelCode); + + Assert.IsTrue(levelCode.HasValue); + Assert.IsTrue(levelCode.IsPresent); + Assert.AreEqual("PT", levelCode.ValueOrDefault()); + + var payerClaimControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimStatusTrackingNumber)[0] + .Select(x => x.PayerClaimControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(payerClaimControlNumber.HasValue); + Assert.IsFalse(payerClaimControlNumber.IsPresent); + + var claimIdNumberForClearinghouseAndOtherTransmissionIntermediaries = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimStatusTrackingNumber)[0] + .Select(x => x.ClaimIdNumberForClearinghouseAndOtherTransmissionIntermediaries) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(claimIdNumberForClearinghouseAndOtherTransmissionIntermediaries.HasValue); + Assert.IsTrue(claimIdNumberForClearinghouseAndOtherTransmissionIntermediaries.IsPresent); + Assert.AreEqual("D9", claimIdNumberForClearinghouseAndOtherTransmissionIntermediaries.ValueOrDefault()); + + var institutionalBillTypeIdentification = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimStatusTrackingNumber)[0] + .Select(x => x.InstitutionalBillTypeIdentification) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(institutionalBillTypeIdentification.HasValue); + Assert.IsFalse(institutionalBillTypeIdentification.IsPresent); + } + + [Test(Description = "Condition : PatientLevel => PT, PayerClaimControlNumber => missing, ClaimIdNumberForClearinghouseAndOtherTransmissionIntermediaries => D9, InstitutionalBillTypeIdentification => BLT"), Explicit("Issue #65")] + public void Test5() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +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*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*1K*111 +DTP*472*RD8*20070131-20070204 +DTP*050*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*D9*JO234567 +REF*BLT*111 +DTP*472*RD8*20070201-20070205 +DTP*050*D8*20070206 +HL*6*2*19*1 +NM1*1P*2*HOME HOSPITAL PHYSICIANS*****XX*1666666666 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +SVC*HC:99203*150*****1 +STC*P2:52*20070208 +DTP*472*D8*20070201 +DTP*050*D8*20070206 +SE*35*0001GE*1*176073292 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var levelCode = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PatientLevel) + .Select(x => x.LevelCode); + + Assert.IsTrue(levelCode.HasValue); + Assert.IsTrue(levelCode.IsPresent); + Assert.AreEqual("PT", levelCode.ValueOrDefault()); + + var payerClaimControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimStatusTrackingNumber)[0] + .Select(x => x.PayerClaimControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(payerClaimControlNumber.HasValue); + Assert.IsFalse(payerClaimControlNumber.IsPresent); + + var claimIdNumberForClearinghouseAndOtherTransmissionIntermediaries = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimStatusTrackingNumber)[0] + .Select(x => x.ClaimIdNumberForClearinghouseAndOtherTransmissionIntermediaries) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(claimIdNumberForClearinghouseAndOtherTransmissionIntermediaries.HasValue); + Assert.IsTrue(claimIdNumberForClearinghouseAndOtherTransmissionIntermediaries.IsPresent); + Assert.AreEqual("D9", claimIdNumberForClearinghouseAndOtherTransmissionIntermediaries.ValueOrDefault()); + + var institutionalBillTypeIdentification = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimStatusTrackingNumber)[0] + .Select(x => x.InstitutionalBillTypeIdentification) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(institutionalBillTypeIdentification.HasValue); + Assert.IsTrue(institutionalBillTypeIdentification.IsPresent); + Assert.AreEqual("BLT", institutionalBillTypeIdentification.ValueOrDefault()); + } + + [Test(Description = "Condition : PatientLevel => PT, PayerClaimControlNumber => 1K, ClaimIdNumberForClearinghouseAndOtherTransmissionIntermediaries => D9, InstitutionalBillTypeIdentification => missing"), Explicit("Issue #65")] + public void Test6() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +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*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*1K*111 +DTP*472*RD8*20070131-20070204 +DTP*050*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*1K*JO234567 +REF*D9*JO234567 +DTP*472*RD8*20070201-20070205 +DTP*050*D8*20070206 +HL*6*2*19*1 +NM1*1P*2*HOME HOSPITAL PHYSICIANS*****XX*1666666666 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +SVC*HC:99203*150*****1 +STC*P2:52*20070208 +DTP*472*D8*20070201 +DTP*050*D8*20070206 +SE*35*0001GE*1*176073292 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var levelCode = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PatientLevel) + .Select(x => x.LevelCode); + + Assert.IsTrue(levelCode.HasValue); + Assert.IsTrue(levelCode.IsPresent); + Assert.AreEqual("PT", levelCode.ValueOrDefault()); + + var payerClaimControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimStatusTrackingNumber)[0] + .Select(x => x.PayerClaimControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(payerClaimControlNumber.HasValue); + Assert.IsTrue(payerClaimControlNumber.IsPresent); + Assert.AreEqual("1K", payerClaimControlNumber.ValueOrDefault()); + + var claimIdNumberForClearinghouseAndOtherTransmissionIntermediaries = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimStatusTrackingNumber)[0] + .Select(x => x.ClaimIdNumberForClearinghouseAndOtherTransmissionIntermediaries) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(claimIdNumberForClearinghouseAndOtherTransmissionIntermediaries.HasValue); + Assert.IsTrue(claimIdNumberForClearinghouseAndOtherTransmissionIntermediaries.IsPresent); + Assert.AreEqual("D9", claimIdNumberForClearinghouseAndOtherTransmissionIntermediaries.ValueOrDefault()); + + var institutionalBillTypeIdentification = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimStatusTrackingNumber)[0] + .Select(x => x.InstitutionalBillTypeIdentification) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(institutionalBillTypeIdentification.HasValue); + Assert.IsFalse(institutionalBillTypeIdentification.IsPresent); + } + + [Test(Description = "Condition : PatientLevel => PT, PayerClaimControlNumber => 1K, ClaimIdNumberForClearinghouseAndOtherTransmissionIntermediaries => missing, InstitutionalBillTypeIdentification => BLT"), Explicit("Issue #65")] + public void Test7() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +HL*1**20*1 +NM1*PR*2*ABC INSURANCE*****PI*12345 +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*1K*111 +DTP*472*RD8*20070131-20070204 +DTP*050*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*1K*JO234567 +REF*BLT*111 +DTP*472*RD8*20070201-20070205 +DTP*050*D8*20070206 +HL*6*2*19*1 +NM1*1P*2*HOME HOSPITAL PHYSICIANS*****XX*1666666666 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +SVC*HC:99203*150*****1 +STC*P2:52*20070208 +DTP*472*D8*20070201 +DTP*050*D8*20070206 +SE*35*0001GE*1*176073292 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var levelCode = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PatientLevel) + .Select(x => x.LevelCode); + + Assert.IsTrue(levelCode.HasValue); + Assert.IsTrue(levelCode.IsPresent); + Assert.AreEqual("PT", levelCode.ValueOrDefault()); + + var payerClaimControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimStatusTrackingNumber)[0] + .Select(x => x.PayerClaimControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(payerClaimControlNumber.HasValue); + Assert.IsTrue(payerClaimControlNumber.IsPresent); + Assert.AreEqual("1K", payerClaimControlNumber.ValueOrDefault()); + + var claimIdNumberForClearinghouseAndOtherTransmissionIntermediaries = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimStatusTrackingNumber)[0] + .Select(x => x.ClaimIdNumberForClearinghouseAndOtherTransmissionIntermediaries) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(claimIdNumberForClearinghouseAndOtherTransmissionIntermediaries.HasValue); + Assert.IsFalse(claimIdNumberForClearinghouseAndOtherTransmissionIntermediaries.IsPresent); + + var institutionalBillTypeIdentification = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimStatusTrackingNumber)[0] + .Select(x => x.InstitutionalBillTypeIdentification) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(institutionalBillTypeIdentification.HasValue); + Assert.IsTrue(institutionalBillTypeIdentification.IsPresent); + Assert.AreEqual("BLT", institutionalBillTypeIdentification.ValueOrDefault()); + } + + [Test, Explicit("Issue #65")] + public void Verify_can_parse_() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +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*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*1K*SM123456 +REF*D9*SM123456 +REF*BLT*111 +DTP*472*RD8*20070131-20070204 +DTP*050*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*EJ*JO234567 +REF*BLT*111 +DTP*472*RD8*20070201-20070205 +DTP*050*D8*20070206 +HL*6*2*19*1 +NM1*1P*2*HOME HOSPITAL PHYSICIANS*****XX*1666666666 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +SVC*HC:99203*150*****1 +STC*P2:52*20070208 +DTP*472*D8*20070201 +DTP*050*D8*20070206 +SE*35*0001GE*1*176073292 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var levelCode = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PatientLevel) + .Select(x => x.LevelCode); + + Assert.IsTrue(levelCode.HasValue); + Assert.IsTrue(levelCode.IsPresent); + Assert.AreEqual("PT", levelCode.ValueOrDefault()); + + string payerClaimControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimStatusTrackingNumber)[0] + .Select(x => x.PayerClaimControlNumber) + .Select(x => x.ReferenceIdentificationQualifier) + .ValueOrDefault(); + + Assert.AreEqual("1K", payerClaimControlNumber); + + string claimIdNumberForClearinghouseAndOtherTransmissionIntermediaries = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimStatusTrackingNumber)[0] + .Select(x => x.ClaimIdNumberForClearinghouseAndOtherTransmissionIntermediaries) + .Select(x => x.ReferenceIdentificationQualifier) + .ValueOrDefault(); + + Assert.AreEqual("D9", claimIdNumberForClearinghouseAndOtherTransmissionIntermediaries); + + string institutionalBillTypeIdentification = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimStatusTrackingNumber)[0] + .Select(x => x.InstitutionalBillTypeIdentification) + .Select(x => x.ReferenceIdentificationQualifier) + .ValueOrDefault(); + + Assert.AreEqual("BLT", institutionalBillTypeIdentification); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing277AckL2010BAConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing277AckL2010BAConditionalTests.cs new file mode 100644 index 000000000..12cb5a406 --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing277AckL2010BAConditionalTests.cs @@ -0,0 +1,428 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing277AckL2010BAConditionalTests : + X12MacheteTestHarness + { + [Test(Description = "Condition : TaxIdNumber => SY, UPINOrLicenseInformation => OB")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*OB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + Segment taxIdNumber = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.BillingProviderName) + .Select(x => x.TaxIdNumber); + + Assert.IsTrue(taxIdNumber.HasValue); + Assert.AreEqual("SY", taxIdNumber.Select(x => x.ReferenceIdentificationQualifier).ValueOrDefault()); + + Segment upin = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.BillingProviderName) + .Select(x => x.UPINOrLicenseInformation); + + Assert.IsTrue(upin.HasValue); + Assert.AreEqual("OB", upin.Select(x => x.ReferenceIdentificationQualifier).ValueOrDefault()); + } + + [Test(Description = "Condition : TaxIdNumber => SY, UPINOrLicenseInformation => 1G")] + public void Test2() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + Segment taxIdNumber = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.BillingProviderName) + .Select(x => x.TaxIdNumber); + + Assert.IsTrue(taxIdNumber.HasValue); + Assert.AreEqual("SY", taxIdNumber.Select(x => x.ReferenceIdentificationQualifier).ValueOrDefault()); + + Segment upin = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.BillingProviderName) + .Select(x => x.UPINOrLicenseInformation); + + Assert.IsTrue(upin.HasValue); + Assert.AreEqual("1G", upin.Select(x => x.ReferenceIdentificationQualifier).ValueOrDefault()); + } + + [Test(Description = "Condition : TaxIdNumber => EI, UPINOrLicenseInformation => OB")] + public void Test3() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*EI*587654321 +REF*OB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + Segment taxIdNumber = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.BillingProviderName) + .Select(x => x.TaxIdNumber); + + Assert.IsTrue(taxIdNumber.HasValue); + Assert.AreEqual("EI", taxIdNumber.Select(x => x.ReferenceIdentificationQualifier).ValueOrDefault()); + + Segment upin = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.BillingProviderName) + .Select(x => x.UPINOrLicenseInformation); + + Assert.IsTrue(upin.HasValue); + Assert.AreEqual("OB", upin.Select(x => x.ReferenceIdentificationQualifier).ValueOrDefault()); + } + + [Test(Description = "Condition : TaxIdNumber => EI, UPINOrLicenseInformation => 1G")] + public void Test4() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*EI*587654321 +REF*1G*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + Segment taxIdNumber = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.BillingProviderName) + .Select(x => x.TaxIdNumber); + + Assert.IsTrue(taxIdNumber.HasValue); + Assert.AreEqual("EI", taxIdNumber.Select(x => x.ReferenceIdentificationQualifier).ValueOrDefault()); + + Segment upin = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.BillingProviderName) + .Select(x => x.UPINOrLicenseInformation); + + Assert.IsTrue(upin.HasValue); + Assert.AreEqual("1G", upin.Select(x => x.ReferenceIdentificationQualifier).ValueOrDefault()); + } + + [Test(Description = "Condition : TaxIdNumber => EI, UPINOrLicenseInformation => missing")] + public void Test5() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*EI*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var taxIdNumber = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.BillingProviderName) + .Select(x => x.TaxIdNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(taxIdNumber.HasValue); + Assert.AreEqual("EI", taxIdNumber.ValueOrDefault()); + + var upin = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.BillingProviderName) + .Select(x => x.UPINOrLicenseInformation) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(upin.HasValue); + Assert.IsFalse(upin.IsPresent); + } + + [Test(Description = "Condition : TaxIdNumber => SY, UPINOrLicenseInformation => missing")] + public void Test6() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var taxIdNumber = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.BillingProviderName) + .Select(x => x.TaxIdNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(taxIdNumber.HasValue); + Assert.AreEqual("SY", taxIdNumber.ValueOrDefault()); + + var upin = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.BillingProviderName) + .Select(x => x.UPINOrLicenseInformation) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(upin.HasValue); + Assert.IsFalse(upin.IsPresent); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing277AckL2200AConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing277AckL2200AConditionalTests.cs new file mode 100644 index 000000000..e94a0c7ca --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing277AckL2200AConditionalTests.cs @@ -0,0 +1,81 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing277AckL2200AConditionalTests : + X12MacheteTestHarness + { + [Test(Description = "Condition : InformationSourceReceiptDate => 050, InformationSourceProcessDate => 009")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +HL*1**20*1 +NM1*PR*2*ABC INSURANCE*****PI*12345 +TRN*1*05347006051 +DTP*050*D8*20070206 +DTP*009*RD8*20070131-20070204 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*EJ*JO234567 +REF*BLT*111 +DTP*472*RD8*20070201-20070205 +DTP*050*D8*20070206 +HL*6*2*19*1 +NM1*1P*2*HOME HOSPITAL PHYSICIANS*****XX*1666666666 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +SVC*HC:99203*150*****1 +STC*P2:52*20070208 +DTP*472*D8*20070201 +DTP*050*D8*20070206 +SE*35*0001GE*1*176073292 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var informationSourceReceiptDate = transactions + .Select(x => x.InformationSourceDetail)[0] + .Select(x => x.TransmissionReceiptControlIdentifier) + .Select(x => x.InformationSourceReceiptDate) + .Select(x => x.DateTimeQualifier); + + Assert.IsTrue(informationSourceReceiptDate.HasValue); + Assert.IsTrue(informationSourceReceiptDate.IsPresent); + Assert.AreEqual("050", informationSourceReceiptDate.ValueOrDefault()); + + var informationSourceProcessDate = transactions + .Select(x => x.InformationSourceDetail)[0] + .Select(x => x.TransmissionReceiptControlIdentifier) + .Select(x => x.InformationSourceProcessDate) + .Select(x => x.DateTimeQualifier); + + Assert.IsTrue(informationSourceProcessDate.HasValue); + Assert.IsTrue(informationSourceProcessDate.IsPresent); + Assert.AreEqual("009", informationSourceProcessDate.ValueOrDefault()); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing277AckL2200BConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing277AckL2200BConditionalTests.cs new file mode 100644 index 000000000..b120a0187 --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing277AckL2200BConditionalTests.cs @@ -0,0 +1,708 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing277AckL2200BConditionalTests : + X12MacheteTestHarness + { + [Test(Description = "Condition : TotalAcceptedQuantity => missing, TotalRejectedQuantity => missing, TotalAcceptedAmount => YU, TotalRejectedAmount => YY")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0002*005010X214 +BHT*0085*08*277X2140002*20060201*0405*TH +HL*1**20*1 +NM1*AY*2*FIRST CLEARINGHOUSE*****46*CLHR00 +TRN*1*200201312005S00002XYZABC +DTP*050*D8*20060131 +DTP*009*D8*20060201 +HL*2*1*21*0 +NM1*41*2*LAST BILLING SERVICE*****46*S00002 +TRN*2*20020131052389 +STC*A3:24:41**U +AMT*YU*800 +AMT*YY*800 +SE *14*00002 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var totalAcceptedQuantity = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalAcceptedQuantity) + .Select(x => x.QuantityQualifier); + + Assert.IsFalse(totalAcceptedQuantity.HasValue); + Assert.IsFalse(totalAcceptedQuantity.IsPresent); + + var totalRejectedQuantity = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalRejectedQuantity) + .Select(x => x.QuantityQualifier); + + Assert.IsFalse(totalRejectedQuantity.HasValue); + Assert.IsFalse(totalRejectedQuantity.IsPresent); + + var totalAcceptedAmount = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalAcceptedAmount) + .Select(x => x.AmountQualifierCode); + + Assert.IsTrue(totalAcceptedAmount.HasValue); + Assert.IsTrue(totalAcceptedAmount.IsPresent); + Assert.AreEqual("YU", totalAcceptedAmount.ValueOrDefault()); + + var totalRejectedAmount = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalRejectedAmount) + .Select(x => x.AmountQualifierCode); + + Assert.IsTrue(totalRejectedAmount.HasValue); + Assert.IsTrue(totalRejectedAmount.IsPresent); + Assert.AreEqual("YY", totalRejectedAmount.ValueOrDefault()); + } + + [Test(Description = "Condition : TotalAcceptedQuantity => 90, TotalRejectedQuantity => AA, TotalAcceptedAmount => YU, TotalRejectedAmount => YY")] + public void Test2() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0002*005010X214 +BHT*0085*08*277X2140002*20060201*0405*TH +HL*1**20*1 +NM1*AY*2*FIRST CLEARINGHOUSE*****46*CLHR00 +TRN*1*200201312005S00002XYZABC +DTP*050*D8*20060131 +DTP*009*D8*20060201 +HL*2*1*21*0 +NM1*41*2*LAST BILLING SERVICE*****46*S00002 +TRN*2*20020131052389 +STC*A3:24:41**U +QTY*90*3 +QTY*AA*3 +AMT*YU*800 +AMT*YY*800 +SE *14*00002 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var totalAcceptedAmount = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalAcceptedAmount) + .Select(x => x.AmountQualifierCode); + + Assert.IsTrue(totalAcceptedAmount.HasValue); + Assert.IsTrue(totalAcceptedAmount.IsPresent); + Assert.AreEqual("YU", totalAcceptedAmount.ValueOrDefault()); + + var totalRejectedAmount = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalRejectedAmount) + .Select(x => x.AmountQualifierCode); + + Assert.IsTrue(totalRejectedAmount.HasValue); + Assert.IsTrue(totalRejectedAmount.IsPresent); + Assert.AreEqual("YY", totalRejectedAmount.ValueOrDefault()); + + var totalAcceptedQuantity = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalAcceptedQuantity) + .Select(x => x.QuantityQualifier); + + Assert.IsTrue(totalAcceptedQuantity.HasValue); + Assert.IsTrue(totalAcceptedQuantity.IsPresent); + Assert.AreEqual("90", totalAcceptedQuantity.ValueOrDefault()); + + var totalRejectedQuantity = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalRejectedQuantity) + .Select(x => x.QuantityQualifier); + + Assert.IsTrue(totalRejectedQuantity.HasValue); + Assert.IsTrue(totalRejectedQuantity.IsPresent); + Assert.AreEqual("AA", totalRejectedQuantity.ValueOrDefault()); + } + + [Test(Description = "Condition : TotalAcceptedQuantity => missing, TotalRejectedQuantity => AA, TotalAcceptedAmount => missing, TotalRejectedAmount => YY")] + public void Test3() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0002*005010X214 +BHT*0085*08*277X2140002*20060201*0405*TH +HL*1**20*1 +NM1*AY*2*FIRST CLEARINGHOUSE*****46*CLHR00 +TRN*1*200201312005S00002XYZABC +DTP*050*D8*20060131 +DTP*009*D8*20060201 +HL*2*1*21*0 +NM1*41*2*LAST BILLING SERVICE*****46*S00002 +TRN*2*20020131052389 +STC*A3:24:41**U +QTY*AA*3 +AMT*YY*800 +SE *14*00002 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var totalAcceptedQuantity = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalAcceptedQuantity) + .Select(x => x.QuantityQualifier); + + Assert.IsFalse(totalAcceptedQuantity.HasValue); + Assert.IsFalse(totalAcceptedQuantity.IsPresent); + + var totalAcceptedAmount = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalAcceptedAmount) + .Select(x => x.AmountQualifierCode); + + Assert.IsFalse(totalAcceptedAmount.HasValue); + Assert.IsFalse(totalAcceptedAmount.IsPresent); + + var totalRejectedQuantity = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalRejectedQuantity) + .Select(x => x.QuantityQualifier); + + Assert.IsTrue(totalRejectedQuantity.HasValue); + Assert.IsTrue(totalRejectedQuantity.IsPresent); + Assert.AreEqual("AA", totalRejectedQuantity.ValueOrDefault()); + + var totalRejectedAmount = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalRejectedAmount) + .Select(x => x.AmountQualifierCode); + + Assert.IsTrue(totalRejectedAmount.HasValue); + Assert.IsTrue(totalRejectedAmount.IsPresent); + Assert.AreEqual("YY", totalRejectedAmount.ValueOrDefault()); + } + + [Test(Description = "Condition : TotalAcceptedQuantity => missing, TotalRejectedQuantity => AA, TotalAcceptedAmount => YU, TotalRejectedAmount => missing")] + public void Test4() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0002*005010X214 +BHT*0085*08*277X2140002*20060201*0405*TH +HL*1**20*1 +NM1*AY*2*FIRST CLEARINGHOUSE*****46*CLHR00 +TRN*1*200201312005S00002XYZABC +DTP*050*D8*20060131 +DTP*009*D8*20060201 +HL*2*1*21*0 +NM1*41*2*LAST BILLING SERVICE*****46*S00002 +TRN*2*20020131052389 +STC*A3:24:41**U +QTY*AA*3 +AMT*YU*800 +SE *14*00002 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var totalAcceptedQuantity = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalAcceptedQuantity) + .Select(x => x.QuantityQualifier); + + Assert.IsFalse(totalAcceptedQuantity.HasValue); + Assert.IsFalse(totalAcceptedQuantity.IsPresent); + + var totalRejectedQuantity = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalRejectedQuantity) + .Select(x => x.QuantityQualifier); + + Assert.IsTrue(totalRejectedQuantity.HasValue); + Assert.IsTrue(totalRejectedQuantity.IsPresent); + Assert.AreEqual("AA", totalRejectedQuantity.ValueOrDefault()); + + var totalRejectedAmount = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalRejectedAmount) + .Select(x => x.AmountQualifierCode); + + Assert.IsFalse(totalRejectedAmount.HasValue); + Assert.IsFalse(totalRejectedAmount.IsPresent); + + var totalAcceptedAmount = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalAcceptedAmount) + .Select(x => x.AmountQualifierCode); + + Assert.IsTrue(totalAcceptedAmount.HasValue); + Assert.IsTrue(totalAcceptedAmount.IsPresent); + Assert.AreEqual("YU", totalAcceptedAmount.ValueOrDefault()); + } + + [Test(Description = "Condition : TotalAcceptedQuantity => 90, TotalRejectedQuantity => missing, TotalAcceptedAmount => missing, TotalRejectedAmount => YY")] + public void Test5() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0002*005010X214 +BHT*0085*08*277X2140002*20060201*0405*TH +HL*1**20*1 +NM1*AY*2*FIRST CLEARINGHOUSE*****46*CLHR00 +TRN*1*200201312005S00002XYZABC +DTP*050*D8*20060131 +DTP*009*D8*20060201 +HL*2*1*21*0 +NM1*41*2*LAST BILLING SERVICE*****46*S00002 +TRN*2*20020131052389 +STC*A3:24:41**U +QTY*90*3 +AMT*YY*800 +SE *14*00002 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var totalRejectedQuantity = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalRejectedQuantity) + .Select(x => x.QuantityQualifier); + + Assert.IsFalse(totalRejectedQuantity.HasValue); + Assert.IsFalse(totalRejectedQuantity.IsPresent); + + var totalAcceptedAmount = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalAcceptedAmount) + .Select(x => x.AmountQualifierCode); + + Assert.IsFalse(totalAcceptedAmount.HasValue); + Assert.IsFalse(totalAcceptedAmount.IsPresent); + + var totalRejectedAmount = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalRejectedAmount) + .Select(x => x.AmountQualifierCode); + + Assert.IsTrue(totalRejectedAmount.HasValue); + Assert.IsTrue(totalRejectedAmount.IsPresent); + Assert.AreEqual("YY", totalRejectedAmount.ValueOrDefault()); + + var totalAcceptedQuantity = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalAcceptedQuantity) + .Select(x => x.QuantityQualifier); + + Assert.IsTrue(totalAcceptedQuantity.HasValue); + Assert.IsTrue(totalAcceptedQuantity.IsPresent); + Assert.AreEqual("90", totalAcceptedQuantity.ValueOrDefault()); + } + + [Test(Description = "Condition : TotalAcceptedQuantity => 90, TotalRejectedQuantity => missing, TotalAcceptedAmount => YU, TotalRejectedAmount => missing")] + public void Test6() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0002*005010X214 +BHT*0085*08*277X2140002*20060201*0405*TH +HL*1**20*1 +NM1*AY*2*FIRST CLEARINGHOUSE*****46*CLHR00 +TRN*1*200201312005S00002XYZABC +DTP*050*D8*20060131 +DTP*009*D8*20060201 +HL*2*1*21*0 +NM1*41*2*LAST BILLING SERVICE*****46*S00002 +TRN*2*20020131052389 +STC*A3:24:41**U +QTY*90*3 +AMT*YU*800 +SE *14*00002 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var totalAcceptedQuantity = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalAcceptedQuantity) + .Select(x => x.QuantityQualifier); + + Assert.IsTrue(totalAcceptedQuantity.HasValue); + Assert.IsTrue(totalAcceptedQuantity.IsPresent); + Assert.AreEqual("90", totalAcceptedQuantity.ValueOrDefault()); + + var totalAcceptedAmount = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalAcceptedAmount) + .Select(x => x.AmountQualifierCode); + + Assert.IsTrue(totalAcceptedAmount.HasValue); + Assert.IsTrue(totalAcceptedAmount.IsPresent); + Assert.AreEqual("YU", totalAcceptedAmount.ValueOrDefault()); + } + + [Test(Description = "Condition : TotalAcceptedQuantity => missing, TotalRejectedQuantity => missing, TotalAcceptedAmount => YY, TotalRejectedAmount => missing")] + public void Test7() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0002*005010X214 +BHT*0085*08*277X2140002*20060201*0405*TH +HL*1**20*1 +NM1*AY*2*FIRST CLEARINGHOUSE*****46*CLHR00 +TRN*1*200201312005S00002XYZABC +DTP*050*D8*20060131 +DTP*009*D8*20060201 +HL*2*1*21*0 +NM1*41*2*LAST BILLING SERVICE*****46*S00002 +TRN*2*20020131052389 +STC*A3:24:41**U +AMT*YY*800 +SE*14*00002 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var totalAcceptedQuantity = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalAcceptedQuantity) + .Select(x => x.QuantityQualifier); + + Assert.IsFalse(totalAcceptedQuantity.HasValue); + Assert.IsFalse(totalAcceptedQuantity.IsPresent); + + var totalRejectedQuantity = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalRejectedQuantity) + .Select(x => x.QuantityQualifier); + + Assert.IsFalse(totalRejectedQuantity.HasValue); + Assert.IsFalse(totalRejectedQuantity.IsPresent); + + var totalRejectedAmount = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalRejectedAmount) + .Select(x => x.AmountQualifierCode); + + Assert.IsTrue(totalRejectedAmount.HasValue); + Assert.IsTrue(totalRejectedAmount.IsPresent); + Assert.AreEqual("YY", totalRejectedAmount.ValueOrDefault()); + } + + [Test(Description = "Condition : TotalAcceptedQuantity => missing, TotalRejectedQuantity => missing, TotalAcceptedAmount => YU, TotalRejectedAmount => missing")] + public void Test8() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0002*005010X214 +BHT*0085*08*277X2140002*20060201*0405*TH +HL*1**20*1 +NM1*AY*2*FIRST CLEARINGHOUSE*****46*CLHR00 +TRN*1*200201312005S00002XYZABC +DTP*050*D8*20060131 +DTP*009*D8*20060201 +HL*2*1*21*0 +NM1*41*2*LAST BILLING SERVICE*****46*S00002 +TRN*2*20020131052389 +STC*A3:24:41**U +AMT*YU*800 +SE*14*00002 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var totalAcceptedAmount = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalAcceptedAmount) + .Select(x => x.AmountQualifierCode); + + Assert.IsTrue(totalAcceptedAmount.HasValue); + Assert.IsTrue(totalAcceptedAmount.IsPresent); + Assert.AreEqual("YU", totalAcceptedAmount.ValueOrDefault()); + } + + [Test(Description = "Condition : TotalAcceptedQuantity => missing, TotalRejectedQuantity => missing, TotalAcceptedAmount => YU, TotalRejectedAmount => YY")] + public void Test9() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0002*005010X214 +BHT*0085*08*277X2140002*20060201*0405*TH +HL*1**20*1 +NM1*AY*2*FIRST CLEARINGHOUSE*****46*CLHR00 +TRN*1*200201312005S00002XYZABC +DTP*050*D8*20060131 +DTP*009*D8*20060201 +HL*2*1*21*0 +NM1*41*2*LAST BILLING SERVICE*****46*S00002 +TRN*2*20020131052389 +STC*A3:24:41**U +AMT*YU*800 +AMT*YY*800 +SE *14*00002 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var totalAcceptedAmount = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalAcceptedAmount) + .Select(x => x.AmountQualifierCode); + + Assert.IsTrue(totalAcceptedAmount.HasValue); + Assert.IsTrue(totalAcceptedAmount.IsPresent); + Assert.AreEqual("YU", totalAcceptedAmount.ValueOrDefault()); + + var totalRejectedAmount = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalRejectedAmount) + .Select(x => x.AmountQualifierCode); + + Assert.IsTrue(totalRejectedAmount.HasValue); + Assert.IsTrue(totalRejectedAmount.IsPresent); + Assert.AreEqual("YY", totalRejectedAmount.ValueOrDefault()); + + var totalAcceptedQuantity = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalAcceptedQuantity) + .Select(x => x.QuantityQualifier); + + Assert.IsFalse(totalAcceptedQuantity.HasValue); + Assert.IsFalse(totalAcceptedQuantity.IsPresent); + + var totalRejectedQuantity = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalRejectedQuantity) + .Select(x => x.QuantityQualifier); + + Assert.IsFalse(totalRejectedQuantity.HasValue); + Assert.IsFalse(totalRejectedQuantity.IsPresent); + } + + [Test(Description = "Condition : TotalAcceptedQuantity => 90, TotalRejectedQuantity => AA, TotalAcceptedAmount => missing, TotalRejectedAmount => missing")] + public void Test10() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0002*005010X214 +BHT*0085*08*277X2140002*20060201*0405*TH +HL*1**20*1 +NM1*AY*2*FIRST CLEARINGHOUSE*****46*CLHR00 +TRN*1*200201312005S00002XYZABC +DTP*050*D8*20060131 +DTP*009*D8*20060201 +HL*2*1*21*0 +NM1*41*2*LAST BILLING SERVICE*****46*S00002 +TRN*2*20020131052389 +STC*A3:24:41**U +QTY*90*3 +QTY*AA*3 +SE *14*00002 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var totalAcceptedAmount = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalAcceptedAmount) + .Select(x => x.AmountQualifierCode); + + Assert.IsFalse(totalAcceptedAmount.HasValue); + Assert.IsFalse(totalAcceptedAmount.IsPresent); + + var totalRejectedAmount = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalRejectedAmount) + .Select(x => x.AmountQualifierCode); + + Assert.IsFalse(totalRejectedAmount.HasValue); + Assert.IsFalse(totalRejectedAmount.IsPresent); + + var totalAcceptedQuantity = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalAcceptedQuantity) + .Select(x => x.QuantityQualifier); + + Assert.IsTrue(totalAcceptedQuantity.HasValue); + Assert.IsTrue(totalAcceptedQuantity.IsPresent); + Assert.AreEqual("90", totalAcceptedQuantity.ValueOrDefault()); + + var totalRejectedQuantity = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverApplicationTraceIdentifier) + .Select(x => x.TotalRejectedQuantity) + .Select(x => x.QuantityQualifier); + + Assert.IsTrue(totalRejectedQuantity.HasValue); + Assert.IsTrue(totalRejectedQuantity.IsPresent); + Assert.AreEqual("AA", totalRejectedQuantity.ValueOrDefault()); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing277ConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing277ConditionalTests.cs new file mode 100644 index 000000000..d0ae78234 --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing277ConditionalTests.cs @@ -0,0 +1,759 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing277ConditionalTests : + X12MacheteTestHarness + { + [Test(Description = "Condition : InformationSourceDetail => 20, InformationReceiverDetail => 21, ServiceProviderDetail => 19")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +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*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*EJ*SM123456 +REF*BLT*111 +REF*EA*111 +REF*D9*111 +DTP*472*RD8*20070131-20070204 +DTP*106*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*EJ*SM123456 +REF*BLT*111 +REF*EA*111 +REF*D9*111 +DTP*472*RD8*20070201-20070205 +DTP*106*D8*20070206 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +REF*EJ*SM123456 +DTP*472*D8*20070201 +DTP*106*D8*20070206 +SE*35*0001 +GE*1*1 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var informationSourceLevel = transactions + .Select(x => x.InformationSourceDetail)[0] + .Select(x => x.InformationSourceLevel) + .Select(x => x.LevelCode); + + Assert.IsTrue(informationSourceLevel.HasValue); + Assert.IsTrue(informationSourceLevel.IsPresent); + Assert.AreEqual("20", informationSourceLevel.ValueOrDefault()); + + var informationReceiverLevel = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverLevel) + .Select(x => x.LevelCode); + + Assert.IsTrue(informationReceiverLevel.HasValue); + Assert.IsTrue(informationReceiverLevel.IsPresent); + Assert.AreEqual("21", informationReceiverLevel.ValueOrDefault()); + + var serviceProviderLevel = transactions + .Select(x => x.ServiceProviderDetail)[0] + .Select(x => x.ServiceProviderLevel) + .Select(x => x.LevelCode); + + Assert.IsTrue(serviceProviderLevel.HasValue); + Assert.IsTrue(serviceProviderLevel.IsPresent); + Assert.AreEqual("19", serviceProviderLevel.ValueOrDefault()); + } + + [Test(Description = "Condition : InformationSourceDetail => 20, InformationReceiverDetail => 21, ServiceProviderDetail => missing")] + public void Test2() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +HL*1**20*1 +NM1*PR*2*ABC INSURANCE*****PI*12345 +HL*2*1*21*1 +NM1*41*2*XYZ SERVICE*****46*X67E +HL*4*3*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*EJ*SM123456 +REF*BLT*111 +REF*EA*111 +REF*D9*111 +DTP*472*RD8*20070131-20070204 +DTP*106*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*EJ*SM123456 +REF*BLT*111 +REF*EA*111 +REF*D9*111 +DTP*472*RD8*20070201-20070205 +DTP*106*D8*20070206 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +REF*EJ*SM123456 +DTP*472*D8*20070201 +DTP*106*D8*20070206 +SE*35*0001 +GE*1*1 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var informationSourceLevel = transactions + .Select(x => x.InformationSourceDetail)[0] + .Select(x => x.InformationSourceLevel) + .Select(x => x.LevelCode); + + Assert.IsTrue(informationSourceLevel.HasValue); + Assert.IsTrue(informationSourceLevel.IsPresent); + Assert.AreEqual("20", informationSourceLevel.ValueOrDefault()); + + var informationReceiverLevel = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverLevel) + .Select(x => x.LevelCode); + + Assert.IsTrue(informationReceiverLevel.HasValue); + Assert.IsTrue(informationReceiverLevel.IsPresent); + Assert.AreEqual("21", informationReceiverLevel.ValueOrDefault()); + + var serviceProviderLevel = transactions + .Select(x => x.ServiceProviderDetail)[0] + .Select(x => x.ServiceProviderLevel) + .Select(x => x.LevelCode); + + Assert.IsFalse(serviceProviderLevel.HasValue); + Assert.IsFalse(serviceProviderLevel.IsPresent); + } + + [Test(Description = "Condition : InformationSourceDetail => 20, InformationReceiverDetail => missing, ServiceProviderDetail => missing")] + public void Test3() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +HL*1**20*1 +NM1*PR*2*ABC INSURANCE*****PI*12345 +HL*4*3*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*EJ*SM123456 +REF*BLT*111 +REF*EA*111 +REF*D9*111 +DTP*472*RD8*20070131-20070204 +DTP*106*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*EJ*SM123456 +REF*BLT*111 +REF*EA*111 +REF*D9*111 +DTP*472*RD8*20070201-20070205 +DTP*106*D8*20070206 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +REF*EJ*SM123456 +DTP*472*D8*20070201 +DTP*106*D8*20070206 +SE*35*0001 +GE*1*1 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var informationSourceLevel = transactions + .Select(x => x.InformationSourceDetail)[0] + .Select(x => x.InformationSourceLevel) + .Select(x => x.LevelCode); + + Assert.IsTrue(informationSourceLevel.HasValue); + Assert.IsTrue(informationSourceLevel.IsPresent); + Assert.AreEqual("20", informationSourceLevel.ValueOrDefault()); + + var informationReceiverLevel = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverLevel) + .Select(x => x.LevelCode); + + Assert.IsFalse(informationReceiverLevel.HasValue); + Assert.IsFalse(informationReceiverLevel.IsPresent); + + var serviceProviderLevel = transactions + .Select(x => x.ServiceProviderDetail)[0] + .Select(x => x.ServiceProviderLevel) + .Select(x => x.LevelCode); + + Assert.IsFalse(serviceProviderLevel.HasValue); + Assert.IsFalse(serviceProviderLevel.IsPresent); + } + + [Test(Description = "Condition : InformationSourceDetail => missing, InformationReceiverDetail => 21, ServiceProviderDetail => missing")] + public void Test4() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +HL*2*1*21*1 +NM1*41*2*XYZ SERVICE*****46*X67E +HL*4*3*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*EJ*SM123456 +REF*BLT*111 +REF*EA*111 +REF*D9*111 +DTP*472*RD8*20070131-20070204 +DTP*106*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*EJ*SM123456 +REF*BLT*111 +REF*EA*111 +REF*D9*111 +DTP*472*RD8*20070201-20070205 +DTP*106*D8*20070206 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +REF*EJ*SM123456 +DTP*472*D8*20070201 +DTP*106*D8*20070206 +SE*35*0001 +GE*1*1 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var informationSourceLevel = transactions + .Select(x => x.InformationSourceDetail)[0] + .Select(x => x.InformationSourceLevel) + .Select(x => x.LevelCode); + + Assert.IsFalse(informationSourceLevel.HasValue); + Assert.IsFalse(informationSourceLevel.IsPresent); + + var informationReceiverLevel = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverLevel) + .Select(x => x.LevelCode); + + Assert.IsTrue(informationReceiverLevel.HasValue); + Assert.IsTrue(informationReceiverLevel.IsPresent); + Assert.AreEqual("21", informationReceiverLevel.ValueOrDefault()); + + var serviceProviderLevel = transactions + .Select(x => x.ServiceProviderDetail)[0] + .Select(x => x.ServiceProviderLevel) + .Select(x => x.LevelCode); + + Assert.IsFalse(serviceProviderLevel.HasValue); + Assert.IsFalse(serviceProviderLevel.IsPresent); + } + + [Test(Description = "Condition : InformationSourceDetail => 20, InformationReceiverDetail => missing, ServiceProviderDetail => 19")] + public void Test5() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +HL*1**20*1 +NM1*PR*2*ABC INSURANCE*****PI*12345 +HL*3*2*19*1 +NM1*1P*2*HOME HOSPITAL*****XX*1666666661 +HL*4*3*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*EJ*SM123456 +REF*BLT*111 +REF*EA*111 +REF*D9*111 +DTP*472*RD8*20070131-20070204 +DTP*106*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*EJ*SM123456 +REF*BLT*111 +REF*EA*111 +REF*D9*111 +DTP*472*RD8*20070201-20070205 +DTP*106*D8*20070206 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +REF*EJ*SM123456 +DTP*472*D8*20070201 +DTP*106*D8*20070206 +SE*35*0001 +GE*1*1 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var informationSourceLevel = transactions + .Select(x => x.InformationSourceDetail)[0] + .Select(x => x.InformationSourceLevel) + .Select(x => x.LevelCode); + + Assert.IsTrue(informationSourceLevel.HasValue); + Assert.IsTrue(informationSourceLevel.IsPresent); + Assert.AreEqual("20", informationSourceLevel.ValueOrDefault()); + + var informationReceiverLevel = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverLevel) + .Select(x => x.LevelCode); + + Assert.IsFalse(informationReceiverLevel.HasValue); + Assert.IsFalse(informationReceiverLevel.IsPresent); + + var serviceProviderLevel = transactions + .Select(x => x.ServiceProviderDetail)[0] + .Select(x => x.ServiceProviderLevel) + .Select(x => x.LevelCode); + + Assert.IsTrue(serviceProviderLevel.HasValue); + Assert.IsTrue(serviceProviderLevel.IsPresent); + Assert.AreEqual("19", serviceProviderLevel.ValueOrDefault()); + } + + [Test(Description = "Condition : InformationSourceDetail => missing, InformationReceiverDetail => 21, ServiceProviderDetail => 19")] + public void Test6() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +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*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*EJ*SM123456 +REF*BLT*111 +REF*EA*111 +REF*D9*111 +DTP*472*RD8*20070131-20070204 +DTP*106*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*EJ*SM123456 +REF*BLT*111 +REF*EA*111 +REF*D9*111 +DTP*472*RD8*20070201-20070205 +DTP*106*D8*20070206 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +REF*EJ*SM123456 +DTP*472*D8*20070201 +DTP*106*D8*20070206 +SE*35*0001 +GE*1*1 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var informationSourceLevel = transactions + .Select(x => x.InformationSourceDetail)[0] + .Select(x => x.InformationSourceLevel) + .Select(x => x.LevelCode); + + Assert.IsFalse(informationSourceLevel.HasValue); + Assert.IsFalse(informationSourceLevel.IsPresent); + + var informationReceiverLevel = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverLevel) + .Select(x => x.LevelCode); + + Assert.IsTrue(informationReceiverLevel.HasValue); + Assert.IsTrue(informationReceiverLevel.IsPresent); + Assert.AreEqual("21", informationReceiverLevel.ValueOrDefault()); + + var serviceProviderLevel = transactions + .Select(x => x.ServiceProviderDetail)[0] + .Select(x => x.ServiceProviderLevel) + .Select(x => x.LevelCode); + + Assert.IsTrue(serviceProviderLevel.HasValue); + Assert.IsTrue(serviceProviderLevel.IsPresent); + Assert.AreEqual("19", serviceProviderLevel.ValueOrDefault()); + } + + [Test(Description = "Condition : InformationSourceDetail => missing, InformationReceiverDetail => missing, ServiceProviderDetail => missing")] + public void Test7() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +HL*4*3*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*EJ*SM123456 +REF*BLT*111 +REF*EA*111 +REF*D9*111 +DTP*472*RD8*20070131-20070204 +DTP*106*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*EJ*SM123456 +REF*BLT*111 +REF*EA*111 +REF*D9*111 +DTP*472*RD8*20070201-20070205 +DTP*106*D8*20070206 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +REF*EJ*SM123456 +DTP*472*D8*20070201 +DTP*106*D8*20070206 +SE*35*0001 +GE*1*1 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var informationSourceLevel = transactions + .Select(x => x.InformationSourceDetail)[0] + .Select(x => x.InformationSourceLevel) + .Select(x => x.LevelCode); + + Assert.IsFalse(informationSourceLevel.HasValue); + Assert.IsFalse(informationSourceLevel.IsPresent); + + var informationReceiverLevel = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverLevel) + .Select(x => x.LevelCode); + + Assert.IsFalse(informationReceiverLevel.HasValue); + Assert.IsFalse(informationReceiverLevel.IsPresent); + + var serviceProviderLevel = transactions + .Select(x => x.ServiceProviderDetail)[0] + .Select(x => x.ServiceProviderLevel) + .Select(x => x.LevelCode); + + Assert.IsFalse(serviceProviderLevel.HasValue); + Assert.IsFalse(serviceProviderLevel.IsPresent); + } + + [Test(Description = "Condition : InformationSourceDetail => missing, InformationReceiverDetail => missing, ServiceProviderDetail => 19")] + public void Test8() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +HL*3*2*19*1 +NM1*1P*2*HOME HOSPITAL*****XX*1666666661 +HL*4*3*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*EJ*SM123456 +REF*BLT*111 +REF*EA*111 +REF*D9*111 +DTP*472*RD8*20070131-20070204 +DTP*106*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*EJ*SM123456 +REF*BLT*111 +REF*EA*111 +REF*D9*111 +DTP*472*RD8*20070201-20070205 +DTP*106*D8*20070206 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +REF*EJ*SM123456 +DTP*472*D8*20070201 +DTP*106*D8*20070206 +SE*35*0001 +GE*1*1 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var informationSourceLevel = transactions + .Select(x => x.InformationSourceDetail)[0] + .Select(x => x.InformationSourceLevel) + .Select(x => x.LevelCode); + + Assert.IsFalse(informationSourceLevel.HasValue); + Assert.IsFalse(informationSourceLevel.IsPresent); + + var informationReceiverLevel = transactions + .Select(x => x.InformationReceiverDetail)[0] + .Select(x => x.InformationReceiverLevel) + .Select(x => x.LevelCode); + + Assert.IsFalse(informationReceiverLevel.HasValue); + Assert.IsFalse(informationReceiverLevel.IsPresent); + + var serviceProviderLevel = transactions + .Select(x => x.ServiceProviderDetail)[0] + .Select(x => x.ServiceProviderLevel) + .Select(x => x.LevelCode); + + Assert.IsTrue(serviceProviderLevel.HasValue); + Assert.IsTrue(serviceProviderLevel.IsPresent); + Assert.AreEqual("19", serviceProviderLevel.ValueOrDefault()); + } + +// [Test(Description = "Condition : InformationSourceDetail => 20, InformationReceiverDetail => 21, ServiceProviderDetail => missing")] +// public void Test() +// { +// string message = +// @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +//GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +//ST*277*0001*005010X228 +//BHT*0085*08*277PEND123*20070210*1635*NO +//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*PT +//NM1*QC*1*SMITH*FRED****MI*123456789A +//TRN*1*05347006051 +//STC*P3:317*20070208**8513.88 +//REF*EJ*SM123456 +//REF*BLT*111 +//REF*EA*111 +//REF*D9*111 +//DTP*472*RD8*20070131-20070204 +//DTP*106*D8*20070206 +//HL*5*3*PT +//NM1*QC*1*JONES*MARY****MI*234567890A +//TRN*1*0529675341 +//STC*P1:20*20070210**7599 +//REF*EJ*SM123456 +//REF*BLT*111 +//REF*EA*111 +//REF*D9*111 +//DTP*472*RD8*20070201-20070205 +//DTP*106*D8*20070206 +//HL*7*6*PT +//NM1*QC*1*MANN*JOSEPH****MI*345678901 +//TRN*1*051681010827 +//STC*P2:247*20070208**150 +//REF*EJ*SM123456 +//DTP*472*D8*20070201 +//DTP*106*D8*20070206 +//SE*35*0001 +//GE*1*1 +//IEA*1*176073292"; +// +// var parseResult = Parser.Parse(message); +// +// Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); +// +// var query = parseResult.CreateQuery(layout); +// +// var queryResult = parseResult.Query(query); +// +// Assert.IsTrue(queryResult.HasResult); +// +// var transactions = queryResult.Select(x => x.Transactions)[0]; +// +// Assert.IsTrue(transactions.HasValue); +// +// var informationSourceLevel = transactions +// .Select(x => x.InformationSourceDetail)[0] +// .Select(x => x.InformationSourceLevel) +// .Select(x => x.LevelCode); +// +// Assert.IsTrue(informationSourceLevel.HasValue); +// Assert.IsTrue(informationSourceLevel.IsPresent); +// Assert.AreEqual("20", informationSourceLevel.ValueOrDefault()); +// +// var informationReceiverLevel = transactions +// .Select(x => x.InformationReceiverDetail)[0] +// .Select(x => x.InformationReceiverLevel) +// .Select(x => x.LevelCode); +// +// Assert.IsTrue(informationReceiverLevel.HasValue); +// Assert.IsTrue(informationReceiverLevel.IsPresent); +// Assert.AreEqual("21", informationReceiverLevel.ValueOrDefault()); +// +// var serviceProviderLevel = transactions +// .Select(x => x.ServiceProviderDetail)[0] +// .Select(x => x.ServiceProviderLevel) +// .Select(x => x.LevelCode); +// +// Assert.IsTrue(serviceProviderLevel.HasValue); +// Assert.IsTrue(serviceProviderLevel.IsPresent); +// Assert.AreEqual("19", serviceProviderLevel.ValueOrDefault()); +// } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing277L2200DConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing277L2200DConditionalTests.cs new file mode 100644 index 000000000..270530637 --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing277L2200DConditionalTests.cs @@ -0,0 +1,1917 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing277L2200DConditionalTests : + X12MacheteTestHarness + { + [Test(Description = "Condition : PatientControlNumber => EJ, InstitutionalTypeOfBill => BLT, MedicalRecordIdentificationNumber => EA, ClaimIdentificationNumber => D9")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +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*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*EJ*SM123456 +REF*BLT*111 +REF*EA*111 +REF*D9*111 +DTP*472*RD8*20070131-20070204 +DTP*106*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*EJ*SM123456 +REF*BLT*111 +REF*EA*111 +REF*D9*111 +DTP*472*RD8*20070201-20070205 +DTP*106*D8*20070206 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +REF*EJ*SM123456 +DTP*472*D8*20070201 +DTP*106*D8*20070206 +SE*35*0001 +GE*1*1 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var patientControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.PatientControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(patientControlNumber.HasValue); + Assert.IsTrue(patientControlNumber.IsPresent); + Assert.AreEqual("EJ", patientControlNumber.ValueOrDefault()); + + var institutionalTypeOfBill = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.InstitutionalTypeOfBill) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(institutionalTypeOfBill.HasValue); + Assert.IsTrue(institutionalTypeOfBill.IsPresent); + Assert.AreEqual("BLT", institutionalTypeOfBill.ValueOrDefault()); + + var medicalRecordIdentificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.MedicalRecordIdentificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(medicalRecordIdentificationNumber.HasValue); + Assert.IsTrue(medicalRecordIdentificationNumber.IsPresent); + Assert.AreEqual("EA", medicalRecordIdentificationNumber.ValueOrDefault()); + + var claimIdentificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.ClaimIdentificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(claimIdentificationNumber.HasValue); + Assert.IsTrue(claimIdentificationNumber.IsPresent); + Assert.AreEqual("D9", claimIdentificationNumber.ValueOrDefault()); + } + + [Test(Description = "Condition : PatientControlNumber => EJ, InstitutionalTypeOfBill => missing, MedicalRecordIdentificationNumber => missing, ClaimIdentificationNumber => missing")] + public void Test2() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +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*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*EJ*SM123456 +DTP*472*RD8*20070131-20070204 +DTP*106*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*EJ*JO234567 +DTP*472*RD8*20070201-20070205 +DTP*106*D8*20070206 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +REF*EJ*SM123456 +DTP*472*D8*20070201 +DTP*106*D8*20070206 +SE*35*0001 +GE*1*1 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var patientControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.PatientControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(patientControlNumber.HasValue); + Assert.IsTrue(patientControlNumber.IsPresent); + Assert.AreEqual("EJ", patientControlNumber.ValueOrDefault()); + + var institutionalTypeOfBill = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.InstitutionalTypeOfBill) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(institutionalTypeOfBill.HasValue); + Assert.IsFalse(institutionalTypeOfBill.IsPresent); + + var medicalRecordIdentificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.MedicalRecordIdentificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(medicalRecordIdentificationNumber.HasValue); + Assert.IsFalse(medicalRecordIdentificationNumber.IsPresent); + + var claimIdentificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.ClaimIdentificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(claimIdentificationNumber.HasValue); + Assert.IsFalse(claimIdentificationNumber.IsPresent); + } + + [Test(Description = "Condition : PatientControlNumber => EJ, InstitutionalTypeOfBill => BLT, MedicalRecordIdentificationNumber => missing, ClaimIdentificationNumber => missing")] + public void Test3() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +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*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*EJ*SM123456 +REF*BLT*111 +DTP*472*RD8*20070131-20070204 +DTP*106*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*EJ*SM123456 +REF*BLT*111 +DTP*472*RD8*20070201-20070205 +DTP*106*D8*20070206 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +REF*EJ*SM123456 +REF*BLT*111 +DTP*472*D8*20070201 +DTP*106*D8*20070206 +SE*35*0001 +GE*1*1 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var patientControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.PatientControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(patientControlNumber.HasValue); + Assert.IsTrue(patientControlNumber.IsPresent); + Assert.AreEqual("EJ", patientControlNumber.ValueOrDefault()); + + var institutionalTypeOfBill = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.InstitutionalTypeOfBill) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(institutionalTypeOfBill.HasValue); + Assert.IsTrue(institutionalTypeOfBill.IsPresent); + Assert.AreEqual("BLT", institutionalTypeOfBill.ValueOrDefault()); + + var medicalRecordIdentificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.MedicalRecordIdentificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(medicalRecordIdentificationNumber.HasValue); + Assert.IsFalse(medicalRecordIdentificationNumber.IsPresent); + + var claimIdentificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.ClaimIdentificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(claimIdentificationNumber.HasValue); + Assert.IsFalse(claimIdentificationNumber.IsPresent); + } + + [Test(Description = "Condition : PatientControlNumber => EJ, InstitutionalTypeOfBill => BLT, MedicalRecordIdentificationNumber => EA, ClaimIdentificationNumber => missing")] + public void Test4() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +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*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*EJ*JO234567 +REF*BLT*111 +REF*EA*111 +DTP*472*RD8*20070131-20070204 +DTP*106*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*EJ*JO234567 +REF*BLT*111 +REF*EA*111 +DTP*472*RD8*20070201-20070205 +DTP*106*D8*20070206 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +REF*EJ*JO234567 +REF*BLT*111 +REF*EA*111 +DTP*472*D8*20070201 +DTP*106*D8*20070206 +SE*35*0001 +GE*1*1 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var patientControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.PatientControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(patientControlNumber.HasValue); + Assert.IsTrue(patientControlNumber.IsPresent); + Assert.AreEqual("EJ", patientControlNumber.ValueOrDefault()); + + var institutionalTypeOfBill = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.InstitutionalTypeOfBill) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(institutionalTypeOfBill.HasValue); + Assert.IsTrue(institutionalTypeOfBill.IsPresent); + Assert.AreEqual("BLT", institutionalTypeOfBill.ValueOrDefault()); + + var medicalRecordIdentificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.MedicalRecordIdentificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(medicalRecordIdentificationNumber.HasValue); + Assert.IsTrue(medicalRecordIdentificationNumber.IsPresent); + Assert.AreEqual("EA", medicalRecordIdentificationNumber.ValueOrDefault()); + + var claimIdentificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.ClaimIdentificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(claimIdentificationNumber.HasValue); + Assert.IsFalse(claimIdentificationNumber.IsPresent); + } + + [Test(Description = "Condition : PatientControlNumber => EJ, InstitutionalTypeOfBill => BLT, MedicalRecordIdentificationNumber => missing, ClaimIdentificationNumber => D9")] + public void Test5() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +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*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*EJ*JO234567 +REF*BLT*111 +REF*D9*111 +DTP*472*RD8*20070131-20070204 +DTP*106*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*EJ*JO234567 +REF*BLT*111 +REF*D9*111 +DTP*472*RD8*20070201-20070205 +DTP*106*D8*20070206 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +REF*EJ*JO234567 +REF*BLT*111 +REF*D9*111 +DTP*472*D8*20070201 +DTP*106*D8*20070206 +SE*35*0001 +GE*1*1 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var patientControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.PatientControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(patientControlNumber.HasValue); + Assert.IsTrue(patientControlNumber.IsPresent); + Assert.AreEqual("EJ", patientControlNumber.ValueOrDefault()); + + var institutionalTypeOfBill = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.InstitutionalTypeOfBill) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(institutionalTypeOfBill.HasValue); + Assert.IsTrue(institutionalTypeOfBill.IsPresent); + Assert.AreEqual("BLT", institutionalTypeOfBill.ValueOrDefault()); + + var medicalRecordIdentificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.MedicalRecordIdentificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(medicalRecordIdentificationNumber.HasValue); + Assert.IsFalse(medicalRecordIdentificationNumber.IsPresent); + + var claimIdentificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.ClaimIdentificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(claimIdentificationNumber.HasValue); + Assert.IsTrue(claimIdentificationNumber.IsPresent); + Assert.AreEqual("D9", claimIdentificationNumber.ValueOrDefault()); + } + + [Test(Description = "Condition : PatientControlNumber => EJ, InstitutionalTypeOfBill => missing, MedicalRecordIdentificationNumber => EA, ClaimIdentificationNumber => D9")] + public void Test6() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +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*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*EJ*JO234567 +REF*EA*111 +REF*D9*111 +DTP*472*RD8*20070131-20070204 +DTP*106*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*EJ*JO234567 +REF*EA*111 +REF*D9*111 +DTP*472*RD8*20070201-20070205 +DTP*106*D8*20070206 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +REF*EJ*JO234567 +REF*EA*111 +REF*D9*111 +DTP*472*D8*20070201 +DTP*106*D8*20070206 +SE*35*0001 +GE*1*1 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var patientControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.PatientControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(patientControlNumber.HasValue); + Assert.IsTrue(patientControlNumber.IsPresent); + Assert.AreEqual("EJ", patientControlNumber.ValueOrDefault()); + + var institutionalTypeOfBill = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.InstitutionalTypeOfBill) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(institutionalTypeOfBill.HasValue); + Assert.IsFalse(institutionalTypeOfBill.IsPresent); + + var medicalRecordIdentificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.MedicalRecordIdentificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(medicalRecordIdentificationNumber.HasValue); + Assert.IsTrue(medicalRecordIdentificationNumber.IsPresent); + Assert.AreEqual("EA", medicalRecordIdentificationNumber.ValueOrDefault()); + + var claimIdentificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.ClaimIdentificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(claimIdentificationNumber.HasValue); + Assert.IsTrue(claimIdentificationNumber.IsPresent); + Assert.AreEqual("D9", claimIdentificationNumber.ValueOrDefault()); + } + + [Test(Description = "Condition : PatientControlNumber => EJ, InstitutionalTypeOfBill => missing, MedicalRecordIdentificationNumber => missing, ClaimIdentificationNumber => D9")] + public void Test7() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +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*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*EJ*JO234567 +REF*D9*111 +DTP*472*RD8*20070131-20070204 +DTP*106*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*EJ*JO234567 +REF*D9*111 +DTP*472*RD8*20070201-20070205 +DTP*106*D8*20070206 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +REF*EJ*JO234567 +REF*D9*111 +DTP*472*D8*20070201 +DTP*106*D8*20070206 +SE*35*0001 +GE*1*1 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var patientControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.PatientControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(patientControlNumber.HasValue); + Assert.IsTrue(patientControlNumber.IsPresent); + Assert.AreEqual("EJ", patientControlNumber.ValueOrDefault()); + + var institutionalTypeOfBill = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.InstitutionalTypeOfBill) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(institutionalTypeOfBill.HasValue); + Assert.IsFalse(institutionalTypeOfBill.IsPresent); + + var medicalRecordIdentificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.MedicalRecordIdentificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(medicalRecordIdentificationNumber.HasValue); + Assert.IsFalse(medicalRecordIdentificationNumber.IsPresent); + + var claimIdentificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.ClaimIdentificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(claimIdentificationNumber.HasValue); + Assert.IsTrue(claimIdentificationNumber.IsPresent); + Assert.AreEqual("D9", claimIdentificationNumber.ValueOrDefault()); + } + + [Test(Description = "Condition : PatientControlNumber => EJ, InstitutionalTypeOfBill => missing, MedicalRecordIdentificationNumber => EA, ClaimIdentificationNumber => missing")] + public void Test8() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +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*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*EJ*JO234567 +REF*EA*111 +DTP*472*RD8*20070131-20070204 +DTP*106*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*EJ*JO234567 +REF*EA*111 +DTP*472*RD8*20070201-20070205 +DTP*106*D8*20070206 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +REF*EJ*JO234567 +REF*EA*111 +DTP*472*D8*20070201 +DTP*106*D8*20070206 +SE*35*0001 +GE*1*1 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var patientControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.PatientControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(patientControlNumber.HasValue); + Assert.IsTrue(patientControlNumber.IsPresent); + Assert.AreEqual("EJ", patientControlNumber.ValueOrDefault()); + + var institutionalTypeOfBill = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.InstitutionalTypeOfBill) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(institutionalTypeOfBill.HasValue); + Assert.IsFalse(institutionalTypeOfBill.IsPresent); + + var medicalRecordIdentificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.MedicalRecordIdentificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(medicalRecordIdentificationNumber.HasValue); + Assert.IsTrue(medicalRecordIdentificationNumber.IsPresent); + Assert.AreEqual("EA", medicalRecordIdentificationNumber.ValueOrDefault()); + + var claimIdentificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.ClaimIdentificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(claimIdentificationNumber.HasValue); + Assert.IsFalse(claimIdentificationNumber.IsPresent); + } + + [Test(Description = "Condition : PatientControlNumber => EJ, InstitutionalTypeOfBill => missing, MedicalRecordIdentificationNumber => missing, ClaimIdentificationNumber => missing")] + public void Test9() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +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*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*EJ*SM123456 +DTP*472*RD8*20070131-20070204 +DTP*106*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*EJ*JO234567 +DTP*472*RD8*20070201-20070205 +DTP*106*D8*20070206 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +REF*EJ*SM123456 +DTP*472*D8*20070201 +DTP*106*D8*20070206 +SE*35*0001 +GE*1*1 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var patientControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.PatientControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(patientControlNumber.HasValue); + Assert.IsTrue(patientControlNumber.IsPresent); + Assert.AreEqual("EJ", patientControlNumber.ValueOrDefault()); + + var institutionalTypeOfBill = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.InstitutionalTypeOfBill) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(institutionalTypeOfBill.HasValue); + Assert.IsFalse(institutionalTypeOfBill.IsPresent); + + var medicalRecordIdentificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.MedicalRecordIdentificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(medicalRecordIdentificationNumber.HasValue); + Assert.IsFalse(medicalRecordIdentificationNumber.IsPresent); + + var claimIdentificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.ClaimIdentificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(claimIdentificationNumber.HasValue); + Assert.IsFalse(claimIdentificationNumber.IsPresent); + } + + [Test(Description = "Condition : PatientControlNumber => missing, InstitutionalTypeOfBill => BLT, MedicalRecordIdentificationNumber => EA, ClaimIdentificationNumber => D9")] + public void Test10() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +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*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*BLT*111 +REF*EA*111 +REF*D9*111 +DTP*472*RD8*20070131-20070204 +DTP*106*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*BLT*111 +REF*EA*111 +REF*D9*111 +DTP*472*RD8*20070201-20070205 +DTP*106*D8*20070206 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +REF*BLT*111 +REF*EA*111 +REF*D9*111 +DTP*472*D8*20070201 +DTP*106*D8*20070206 +SE*35*0001 +GE*1*1 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var patientControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.PatientControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(patientControlNumber.HasValue); + Assert.IsFalse(patientControlNumber.IsPresent); + + var institutionalTypeOfBill = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.InstitutionalTypeOfBill) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(institutionalTypeOfBill.HasValue); + Assert.IsTrue(institutionalTypeOfBill.IsPresent); + Assert.AreEqual("BLT", institutionalTypeOfBill.ValueOrDefault()); + + var medicalRecordIdentificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.MedicalRecordIdentificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(medicalRecordIdentificationNumber.HasValue); + Assert.IsTrue(medicalRecordIdentificationNumber.IsPresent); + Assert.AreEqual("EA", medicalRecordIdentificationNumber.ValueOrDefault()); + + var claimIdentificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.ClaimIdentificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(claimIdentificationNumber.HasValue); + Assert.IsTrue(claimIdentificationNumber.IsPresent); + Assert.AreEqual("D9", claimIdentificationNumber.ValueOrDefault()); + } + + [Test(Description = "Condition : PatientControlNumber => missing, InstitutionalTypeOfBill => missing, MedicalRecordIdentificationNumber => EA, ClaimIdentificationNumber => D9")] + public void Test11() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +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*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*EA*111 +REF*D9*111 +DTP*472*RD8*20070131-20070204 +DTP*106*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*EA*111 +REF*D9*111 +DTP*472*RD8*20070201-20070205 +DTP*106*D8*20070206 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +REF*EA*111 +REF*D9*111 +DTP*472*D8*20070201 +DTP*106*D8*20070206 +SE*35*0001 +GE*1*1 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var patientControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.PatientControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(patientControlNumber.HasValue); + Assert.IsFalse(patientControlNumber.IsPresent); + + var institutionalTypeOfBill = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.InstitutionalTypeOfBill) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(institutionalTypeOfBill.HasValue); + Assert.IsFalse(institutionalTypeOfBill.IsPresent); + + var medicalRecordIdentificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.MedicalRecordIdentificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(medicalRecordIdentificationNumber.HasValue); + Assert.IsTrue(medicalRecordIdentificationNumber.IsPresent); + Assert.AreEqual("EA", medicalRecordIdentificationNumber.ValueOrDefault()); + + var claimIdentificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.ClaimIdentificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(claimIdentificationNumber.HasValue); + Assert.IsTrue(claimIdentificationNumber.IsPresent); + Assert.AreEqual("D9", claimIdentificationNumber.ValueOrDefault()); + } + + [Test(Description = "Condition : PatientControlNumber => missing, InstitutionalTypeOfBill => missing, MedicalRecordIdentificationNumber => missing, ClaimIdentificationNumber => D9")] + public void Test12() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +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*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*D9*111 +DTP*472*RD8*20070131-20070204 +DTP*106*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*D9*111 +DTP*472*RD8*20070201-20070205 +DTP*106*D8*20070206 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +REF*D9*111 +DTP*472*D8*20070201 +DTP*106*D8*20070206 +SE*35*0001 +GE*1*1 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var patientControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.PatientControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(patientControlNumber.HasValue); + Assert.IsFalse(patientControlNumber.IsPresent); + + var institutionalTypeOfBill = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.InstitutionalTypeOfBill) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(institutionalTypeOfBill.HasValue); + Assert.IsFalse(institutionalTypeOfBill.IsPresent); + + var medicalRecordIdentificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.MedicalRecordIdentificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(medicalRecordIdentificationNumber.HasValue); + Assert.IsFalse(medicalRecordIdentificationNumber.IsPresent); + + var claimIdentificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.ClaimIdentificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(claimIdentificationNumber.HasValue); + Assert.IsTrue(claimIdentificationNumber.IsPresent); + Assert.AreEqual("D9", claimIdentificationNumber.ValueOrDefault()); + } + + [Test(Description = "Condition : PatientControlNumber => missing, InstitutionalTypeOfBill => missing, MedicalRecordIdentificationNumber => missing, ClaimIdentificationNumber => missing")] + public void Test13() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +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*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +DTP*472*RD8*20070131-20070204 +DTP*106*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +DTP*472*RD8*20070201-20070205 +DTP*106*D8*20070206 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +DTP*472*D8*20070201 +DTP*106*D8*20070206 +SE*35*0001 +GE*1*1 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var patientControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.PatientControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(patientControlNumber.HasValue); + Assert.IsFalse(patientControlNumber.IsPresent); + + var institutionalTypeOfBill = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.InstitutionalTypeOfBill) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(institutionalTypeOfBill.HasValue); + Assert.IsFalse(institutionalTypeOfBill.IsPresent); + + var medicalRecordIdentificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.MedicalRecordIdentificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(medicalRecordIdentificationNumber.HasValue); + Assert.IsFalse(medicalRecordIdentificationNumber.IsPresent); + + var claimIdentificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.ClaimIdentificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(claimIdentificationNumber.HasValue); + Assert.IsFalse(claimIdentificationNumber.IsPresent); + } + + [Test(Description = "Condition : PatientControlNumber => missing, InstitutionalTypeOfBill => BLT, MedicalRecordIdentificationNumber => EA, ClaimIdentificationNumber => missing")] + public void Test14() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +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*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*BLT*SM123456 +REF*EA*111 +DTP*472*RD8*20070131-20070204 +DTP*106*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*BLT*SM123456 +REF*EA*111 +DTP*472*RD8*20070201-20070205 +DTP*106*D8*20070206 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +REF*BLT*SM123456 +REF*EA*111 +DTP*472*D8*20070201 +DTP*106*D8*20070206 +SE*35*0001 +GE*1*1 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var patientControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.PatientControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(patientControlNumber.HasValue); + Assert.IsFalse(patientControlNumber.IsPresent); + + var institutionalTypeOfBill = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.InstitutionalTypeOfBill) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(institutionalTypeOfBill.HasValue); + Assert.IsTrue(institutionalTypeOfBill.IsPresent); + Assert.AreEqual("BLT", institutionalTypeOfBill.ValueOrDefault()); + + var medicalRecordIdentificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.MedicalRecordIdentificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(medicalRecordIdentificationNumber.HasValue); + Assert.IsTrue(medicalRecordIdentificationNumber.IsPresent); + Assert.AreEqual("EA", medicalRecordIdentificationNumber.ValueOrDefault()); + + var claimIdentificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.ClaimIdentificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(claimIdentificationNumber.HasValue); + Assert.IsFalse(claimIdentificationNumber.IsPresent); + } + + [Test(Description = "Condition : PatientControlNumber => missing, InstitutionalTypeOfBill => BLT, MedicalRecordIdentificationNumber => missing, ClaimIdentificationNumber => D9")] + public void Test15() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +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*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*BLT*111 +REF*D9*111 +DTP*472*RD8*20070131-20070204 +DTP*106*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*BLT*111 +REF*D9*111 +DTP*472*RD8*20070201-20070205 +DTP*106*D8*20070206 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +REF*BLT*111 +REF*D9*111 +DTP*472*D8*20070201 +DTP*106*D8*20070206 +SE*35*0001 +GE*1*1 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var patientControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.PatientControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(patientControlNumber.HasValue); + Assert.IsFalse(patientControlNumber.IsPresent); + + var institutionalTypeOfBill = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.InstitutionalTypeOfBill) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(institutionalTypeOfBill.HasValue); + Assert.IsTrue(institutionalTypeOfBill.IsPresent); + Assert.AreEqual("BLT", institutionalTypeOfBill.ValueOrDefault()); + + var medicalRecordIdentificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.MedicalRecordIdentificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(medicalRecordIdentificationNumber.HasValue); + Assert.IsFalse(medicalRecordIdentificationNumber.IsPresent); + + var claimIdentificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.ClaimIdentificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(claimIdentificationNumber.HasValue); + Assert.IsTrue(claimIdentificationNumber.IsPresent); + Assert.AreEqual("D9", claimIdentificationNumber.ValueOrDefault()); + } + + [Test(Description = "Condition : PatientControlNumber => missing, InstitutionalTypeOfBill => BLT, MedicalRecordIdentificationNumber => missing, ClaimIdentificationNumber => missing")] + public void Test16() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +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*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*BLT*111 +DTP*472*RD8*20070131-20070204 +DTP*106*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*BLT*111 +DTP*472*RD8*20070201-20070205 +DTP*106*D8*20070206 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +REF*BLT*111 +DTP*472*D8*20070201 +DTP*106*D8*20070206 +SE*35*0001 +GE*1*1 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var patientControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.PatientControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(patientControlNumber.HasValue); + Assert.IsFalse(patientControlNumber.IsPresent); + + var institutionalTypeOfBill = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.InstitutionalTypeOfBill) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(institutionalTypeOfBill.HasValue); + Assert.IsTrue(institutionalTypeOfBill.IsPresent); + Assert.AreEqual("BLT", institutionalTypeOfBill.ValueOrDefault()); + + var medicalRecordIdentificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.MedicalRecordIdentificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(medicalRecordIdentificationNumber.HasValue); + Assert.IsFalse(medicalRecordIdentificationNumber.IsPresent); + + var claimIdentificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.ClaimIdentificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsFalse(claimIdentificationNumber.HasValue); + Assert.IsFalse(claimIdentificationNumber.IsPresent); + } + + [Test(Description = "Condition : ClaimServiceDate => 472, ResponseDueDate => 106")] + public void Test17() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +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*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*BLT*111 +DTP*472*RD8*20070131-20070204 +DTP*106*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*BLT*111 +DTP*472*RD8*20070201-20070205 +DTP*106*D8*20070206 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +REF*BLT*111 +DTP*472*D8*20070201 +DTP*106*D8*20070206 +SE*35*0001 +GE*1*1 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var claimServiceDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.ClaimServiceDate) + .Select(x => x.DateTimeQualifier); + + Assert.IsTrue(claimServiceDate.HasValue); + Assert.IsTrue(claimServiceDate.IsPresent); + Assert.AreEqual("472", claimServiceDate.ValueOrDefault()); + + var responseDueDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.ResponseDueDate) + .Select(x => x.DateTimeQualifier); + + Assert.IsTrue(responseDueDate.HasValue); + Assert.IsTrue(responseDueDate.IsPresent); + Assert.AreEqual("106", responseDueDate.ValueOrDefault()); + } + + [Test(Description = "Condition : ClaimServiceDate => unknown, ResponseDueDate => 106")] + public void Test18() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +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*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*BLT*111 +DTP*050*RD8*20070131-20070204 +DTP*106*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*BLT*111 +DTP*050*RD8*20070201-20070205 +DTP*106*D8*20070206 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +REF*BLT*111 +DTP*050*D8*20070201 +DTP*106*D8*20070206 +SE*35*0001 +GE*1*1 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsFalse(transactions.HasValue); + } + + [Test(Description = "Condition : ClaimServiceDate => 472, ResponseDueDate => unknown")] + public void Test19() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +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*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*BLT*111 +DTP*472*RD8*20070131-20070204 +DTP*050*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*BLT*111 +DTP*472*RD8*20070201-20070205 +DTP*050*D8*20070206 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +REF*BLT*111 +DTP*472*D8*20070201 +DTP*050*D8*20070206 +SE*35*0001 +GE*1*1 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsFalse(transactions.HasValue); + } + + [Test(Description = "Condition : ClaimServiceDate => 472, ResponseDueDate => missing")] + public void Test20() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +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*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*BLT*111 +DTP*472*RD8*20070131-20070204 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*BLT*111 +DTP*472*RD8*20070201-20070205 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +REF*BLT*111 +DTP*472*D8*20070201 +SE*35*0001 +GE*1*1 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var claimServiceDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.ClaimServiceDate) + .Select(x => x.DateTimeQualifier); + + Assert.IsTrue(claimServiceDate.HasValue); + Assert.IsTrue(claimServiceDate.IsPresent); + Assert.AreEqual("472", claimServiceDate.ValueOrDefault()); + + var responseDueDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.ResponseDueDate) + .Select(x => x.DateTimeQualifier); + + Assert.IsFalse(responseDueDate.HasValue); + Assert.IsFalse(responseDueDate.IsPresent); + } + + [Test(Description = "Condition : ClaimServiceDate => missing, ResponseDueDate => 106")] + public void Test21() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +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*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*BLT*111 +DTP*106*D8*20070206 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*BLT*111 +DTP*106*D8*20070206 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +REF*BLT*111 +DTP*106*D8*20070206 +SE*35*0001 +GE*1*1 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var claimServiceDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.ClaimServiceDate) + .Select(x => x.DateTimeQualifier); + + Assert.IsFalse(claimServiceDate.HasValue); + Assert.IsFalse(claimServiceDate.IsPresent); + + var responseDueDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.ResponseDueDate) + .Select(x => x.DateTimeQualifier); + + Assert.IsTrue(responseDueDate.HasValue); + Assert.IsTrue(responseDueDate.IsPresent); + Assert.AreEqual("106", responseDueDate.ValueOrDefault()); + } + + [Test(Description = "Condition : ClaimServiceDate => missing, ResponseDueDate => missing")] + public void Test22() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +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*PT +NM1*QC*1*SMITH*FRED****MI*123456789A +TRN*1*05347006051 +STC*P3:317*20070208**8513.88 +REF*BLT*111 +HL*5*3*PT +NM1*QC*1*JONES*MARY****MI*234567890A +TRN*1*0529675341 +STC*P1:20*20070210**7599 +REF*BLT*111 +HL*7*6*PT +NM1*QC*1*MANN*JOSEPH****MI*345678901 +TRN*1*051681010827 +STC*P2:247*20070208**150 +REF*BLT*111 +SE*35*0001 +GE*1*1 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var claimServiceDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.ClaimServiceDate) + .Select(x => x.DateTimeQualifier); + + Assert.IsFalse(claimServiceDate.HasValue); + Assert.IsFalse(claimServiceDate.IsPresent); + + var responseDueDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PayerClaimControlNumber)[0] + .Select(x => x.ResponseDueDate) + .Select(x => x.DateTimeQualifier); + + Assert.IsFalse(responseDueDate.HasValue); + Assert.IsFalse(responseDueDate.IsPresent); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing837DentalL2010AAConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing837DentalL2010AAConditionalTests.cs new file mode 100644 index 000000000..5289e5d1e --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing837DentalL2010AAConditionalTests.cs @@ -0,0 +1,304 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing837DentalL2010AAConditionalTests : + X12MacheteTestHarness + { + [Test(Description = "Condition : TaxIdNumber => EI, UPINOrLicenseInformation => OB")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*EI*587654321 +REF*OB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var taxIdNumber = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.BillingProviderName) + .Select(x => x.TaxIdNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(taxIdNumber.HasValue); + Assert.IsTrue(taxIdNumber.IsPresent); + Assert.AreEqual("EI", taxIdNumber.ValueOrDefault()); + + var upin = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.BillingProviderName) + .Select(x => x.UPINOrLicenseInformation) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(upin.HasValue); + Assert.IsTrue(upin.IsPresent); + Assert.AreEqual("OB", upin.ValueOrDefault()); + } + + [Test(Description = "Condition : TaxIdNumber => EI, UPINOrLicenseInformation => 1G")] + public void Test2() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*EI*587654321 +REF*1G*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var taxIdNumber = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.BillingProviderName) + .Select(x => x.TaxIdNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(taxIdNumber.HasValue); + Assert.IsTrue(taxIdNumber.IsPresent); + Assert.AreEqual("EI", taxIdNumber.ValueOrDefault()); + + var upin = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.BillingProviderName) + .Select(x => x.UPINOrLicenseInformation) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(upin.HasValue); + Assert.IsTrue(upin.IsPresent); + Assert.AreEqual("1G", upin.ValueOrDefault()); + } + + [Test(Description = "Condition : TaxIdNumber => SY, UPINOrLicenseInformation => OB")] + public void Test3() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*OB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var taxIdNumber = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.BillingProviderName) + .Select(x => x.TaxIdNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(taxIdNumber.HasValue); + Assert.IsTrue(taxIdNumber.IsPresent); + Assert.AreEqual("SY", taxIdNumber.ValueOrDefault()); + + var upin = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.BillingProviderName) + .Select(x => x.UPINOrLicenseInformation) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(upin.HasValue); + Assert.IsTrue(upin.IsPresent); + Assert.AreEqual("OB", upin.ValueOrDefault()); + } + + [Test(Description = "Condition : TaxIdNumber => SY, UPINOrLicenseInformation => 1G")] + public void Test4() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + + var taxIdNumber = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.BillingProviderName) + .Select(x => x.TaxIdNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(taxIdNumber.HasValue); + Assert.IsTrue(taxIdNumber.IsPresent); + Assert.AreEqual("SY", taxIdNumber.ValueOrDefault()); + + var upin = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.BillingProviderName) + .Select(x => x.UPINOrLicenseInformation) + .Select(x => x.ReferenceIdentificationQualifier); + + Assert.IsTrue(upin.HasValue); + Assert.IsTrue(upin.IsPresent); + Assert.AreEqual("1G", upin.ValueOrDefault()); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing837DentalL2010ACConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing837DentalL2010ACConditionalTests.cs new file mode 100644 index 000000000..cc685d660 --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing837DentalL2010ACConditionalTests.cs @@ -0,0 +1,342 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing837DentalL2010ACConditionalTests : + X12MacheteTestHarness + { + [Test(Description = "Condition : SecondaryIdentification => 2U, TaxIdNumber => EI")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EI*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var secondaryIdentification = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.PayToPlan) + .Select(x => x.SecondaryIdentification) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsTrue(secondaryIdentification.HasValue); + Assert.IsTrue(secondaryIdentification.IsPresent); + Assert.AreEqual("2U", secondaryIdentification.ValueOrDefault()); + + var taxIdNumber = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.PayToPlan) + .Select(x => x.TaxIdNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(taxIdNumber != null); + Assert.IsTrue(taxIdNumber.HasValue); + Assert.IsTrue(taxIdNumber.IsPresent); + Assert.AreEqual("EI", taxIdNumber.ValueOrDefault()); + } + + [Test(Description = "Condition : SecondaryIdentification => FY, TaxIdNumber => EI")] + public void Test2() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*FY*587654321 +REF*EI*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var secondaryIdentification = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.PayToPlan) + .Select(x => x.SecondaryIdentification) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsTrue(secondaryIdentification.HasValue); + Assert.IsTrue(secondaryIdentification.IsPresent); + Assert.AreEqual("FY", secondaryIdentification.ValueOrDefault()); + + var taxIdNumber = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.PayToPlan) + .Select(x => x.TaxIdNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(taxIdNumber != null); + Assert.IsTrue(taxIdNumber.HasValue); + Assert.IsTrue(taxIdNumber.IsPresent); + Assert.AreEqual("EI", taxIdNumber.ValueOrDefault()); + } + + [Test(Description = "Condition : SecondaryIdentification => NF, TaxIdNumber => EI")] + public void Test3() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*NF*587654321 +REF*EI*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var secondaryIdentification = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.PayToPlan) + .Select(x => x.SecondaryIdentification) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsTrue(secondaryIdentification.HasValue); + Assert.IsTrue(secondaryIdentification.IsPresent); + Assert.AreEqual("NF", secondaryIdentification.ValueOrDefault()); + + var taxIdNumber = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.PayToPlan) + .Select(x => x.TaxIdNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(taxIdNumber != null); + Assert.IsTrue(taxIdNumber.HasValue); + Assert.IsTrue(taxIdNumber.IsPresent); + Assert.AreEqual("EI", taxIdNumber.ValueOrDefault()); + } + + [Test(Description = "Condition : SecondaryIdentification => missing, TaxIdNumber => EI")] + public void Test4() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*EI*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var secondaryIdentification = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.PayToPlan) + .Select(x => x.SecondaryIdentification) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsFalse(secondaryIdentification.HasValue); + Assert.IsFalse(secondaryIdentification.IsPresent); + + var taxIdNumber = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.PayToPlan) + .Select(x => x.TaxIdNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(taxIdNumber != null); + Assert.IsTrue(taxIdNumber.HasValue); + Assert.IsTrue(taxIdNumber.IsPresent); + Assert.AreEqual("EI", taxIdNumber.ValueOrDefault()); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2010AAConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2010AAConditionalTests.cs new file mode 100644 index 000000000..245429bbe --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2010AAConditionalTests.cs @@ -0,0 +1,584 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing837ProfessionalL2010AAConditionalTests : + X12MacheteTestHarness + { + [Test(Description = "Condition : TaxIdNumber => EI, LicenseInformation => OB")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*EI*587654321 +REF*OB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var taxIdNumber = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.BillingProviderName) + .Select(x => x.TaxIdNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(taxIdNumber != null); + Assert.IsTrue(taxIdNumber.HasValue); + Assert.IsTrue(taxIdNumber.IsPresent); + Assert.AreEqual("EI", taxIdNumber.ValueOrDefault()); + + var licenseInformation = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.BillingProviderName) + .Select(x => x.LicenseInformation)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(licenseInformation != null); + Assert.IsTrue(licenseInformation.HasValue); + Assert.IsTrue(licenseInformation.IsPresent); + Assert.AreEqual("OB", licenseInformation.ValueOrDefault()); + } + + [Test(Description = "Condition : TaxIdNumber => EI, LicenseInformation => 1G")] + public void Test2() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*EI*587654321 +REF*1G*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var taxIdNumber = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.BillingProviderName) + .Select(x => x.TaxIdNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(taxIdNumber != null); + Assert.IsTrue(taxIdNumber.HasValue); + Assert.IsTrue(taxIdNumber.IsPresent); + Assert.AreEqual("EI", taxIdNumber.ValueOrDefault()); + + var licenseInformation = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.BillingProviderName) + .Select(x => x.LicenseInformation)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(licenseInformation != null); + Assert.IsTrue(licenseInformation.HasValue); + Assert.IsTrue(licenseInformation.IsPresent); + Assert.AreEqual("1G", licenseInformation.ValueOrDefault()); + } + + [Test(Description = "Condition : TaxIdNumber => SY, LicenseInformation => OB")] + public void Test3() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*OB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var taxIdNumber = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.BillingProviderName) + .Select(x => x.TaxIdNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(taxIdNumber != null); + Assert.IsTrue(taxIdNumber.HasValue); + Assert.IsTrue(taxIdNumber.IsPresent); + Assert.AreEqual("SY", taxIdNumber.ValueOrDefault()); + + var licenseInformation = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.BillingProviderName) + .Select(x => x.LicenseInformation)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(licenseInformation != null); + Assert.IsTrue(licenseInformation.HasValue); + Assert.IsTrue(licenseInformation.IsPresent); + Assert.AreEqual("OB", licenseInformation.ValueOrDefault()); + } + + [Test(Description = "Condition : TaxIdNumber => SY, LicenseInformation => 1G")] + public void Test4() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var taxIdNumber = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.BillingProviderName) + .Select(x => x.TaxIdNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(taxIdNumber != null); + Assert.IsTrue(taxIdNumber.HasValue); + Assert.IsTrue(taxIdNumber.IsPresent); + Assert.AreEqual("SY", taxIdNumber.ValueOrDefault()); + + var licenseInformation = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.BillingProviderName) + .Select(x => x.LicenseInformation)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(licenseInformation != null); + Assert.IsTrue(licenseInformation.HasValue); + Assert.IsTrue(licenseInformation.IsPresent); + Assert.AreEqual("1G", licenseInformation.ValueOrDefault()); + } + + [Test(Description = "Condition : TaxIdNumber => SY, LicenseInformation => array of [1G]")] + public void Test5() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +REF*1G*587654321 +REF*1G*587654321 +REF*1G*587654321 +REF*1G*587654321 +REF*1G*587654321 +REF*1G*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var taxIdNumber = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.BillingProviderName) + .Select(x => x.TaxIdNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(taxIdNumber != null); + Assert.IsTrue(taxIdNumber.HasValue); + Assert.IsTrue(taxIdNumber.IsPresent); + Assert.AreEqual("SY", taxIdNumber.ValueOrDefault()); + + for (int i = 0; ; i++) + { + if (!transactions.Select(x => x.BillingProviderDetail)[0] + .Select(x => x.BillingProviderName) + .Select(x => x.LicenseInformation) + .TryGetValue(i, out Segment segment)) + break; + + var licenseInformation = segment.Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(licenseInformation != null); + Assert.IsTrue(licenseInformation.HasValue); + Assert.IsTrue(licenseInformation.IsPresent); + Assert.AreEqual("1G", licenseInformation.ValueOrDefault()); + } + } + + [Test(Description = "Condition : TaxIdNumber => SY, LicenseInformation => array of [OB]")] + public void Test6() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*OB*587654321 +REF*OB*587654321 +REF*OB*587654321 +REF*OB*587654321 +REF*OB*587654321 +REF*OB*587654321 +REF*OB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var taxIdNumber = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.BillingProviderName) + .Select(x => x.TaxIdNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(taxIdNumber != null); + Assert.IsTrue(taxIdNumber.HasValue); + Assert.IsTrue(taxIdNumber.IsPresent); + Assert.AreEqual("SY", taxIdNumber.ValueOrDefault()); + + for (int i = 0; ; i++) + { + if (!transactions.Select(x => x.BillingProviderDetail)[0] + .Select(x => x.BillingProviderName) + .Select(x => x.LicenseInformation) + .TryGetValue(i, out Segment segment)) + break; + + var licenseInformation = segment.Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(licenseInformation != null); + Assert.IsTrue(licenseInformation.HasValue); + Assert.IsTrue(licenseInformation.IsPresent); + Assert.AreEqual("OB", licenseInformation.ValueOrDefault()); + } + } + + [Test(Description = "Condition : TaxIdNumber => SY, LicenseInformation => array of [OB, 1G]")] + public void Test7() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*OB*587654321 +REF*1G*587654321 +REF*OB*587654321 +REF*1G*587654321 +REF*OB*587654321 +REF*1G*587654321 +REF*OB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var taxIdNumber = transactions + .Select(x => x.BillingProviderDetail)[0] + .Select(x => x.BillingProviderName) + .Select(x => x.TaxIdNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(taxIdNumber != null); + Assert.IsTrue(taxIdNumber.HasValue); + Assert.IsTrue(taxIdNumber.IsPresent); + Assert.AreEqual("SY", taxIdNumber.ValueOrDefault()); + + for (int i = 0; ; i++) + { + if (!transactions.Select(x => x.BillingProviderDetail)[0] + .Select(x => x.BillingProviderName) + .Select(x => x.LicenseInformation) + .TryGetValue(i, out Segment segment)) + break; + + var licenseInformation = segment.Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(licenseInformation != null); + Assert.IsTrue(licenseInformation.HasValue); + Assert.IsTrue(licenseInformation.IsPresent); + Assert.That(licenseInformation.ValueOrDefault(), Is.EqualTo("1G").Or.EqualTo("OB")); + } + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2010ACConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2010ACConditionalTests.cs new file mode 100644 index 000000000..4cf36802f --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2010ACConditionalTests.cs @@ -0,0 +1,334 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing837ProfessionalL2010ACConditionalTests : + X12MacheteTestHarness + { + [Test(Description = "Condition : SecondaryIdentification => 2U, TaxIdNumber => EIB")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var secondaryIdentification = transactions + .Select(x => x.PayToPlanName) + .Select(x => x.SecondaryIdentification) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsTrue(secondaryIdentification.HasValue); + Assert.IsTrue(secondaryIdentification.IsPresent); + Assert.AreEqual("2U", secondaryIdentification.ValueOrDefault()); + + var taxIdNumber = transactions + .Select(x => x.PayToPlanName) + .Select(x => x.TaxIdNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(taxIdNumber != null); + Assert.IsTrue(taxIdNumber.HasValue); + Assert.IsTrue(taxIdNumber.IsPresent); + Assert.AreEqual("EIB", taxIdNumber.ValueOrDefault()); + } + + [Test(Description = "Condition : SecondaryIdentification => FY, TaxIdNumber => EIB")] + public void Test2() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*FY*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var secondaryIdentification = transactions + .Select(x => x.PayToPlanName) + .Select(x => x.SecondaryIdentification) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsTrue(secondaryIdentification.HasValue); + Assert.IsTrue(secondaryIdentification.IsPresent); + Assert.AreEqual("FY", secondaryIdentification.ValueOrDefault()); + + var taxIdNumber = transactions + .Select(x => x.PayToPlanName) + .Select(x => x.TaxIdNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(taxIdNumber != null); + Assert.IsTrue(taxIdNumber.HasValue); + Assert.IsTrue(taxIdNumber.IsPresent); + Assert.AreEqual("EIB", taxIdNumber.ValueOrDefault()); + } + + [Test(Description = "Condition : SecondaryIdentification => NF, TaxIdNumber => EIB")] + public void Test3() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*NF*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var secondaryIdentification = transactions + .Select(x => x.PayToPlanName) + .Select(x => x.SecondaryIdentification) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsTrue(secondaryIdentification.HasValue); + Assert.IsTrue(secondaryIdentification.IsPresent); + Assert.AreEqual("NF", secondaryIdentification.ValueOrDefault()); + + var taxIdNumber = transactions + .Select(x => x.PayToPlanName) + .Select(x => x.TaxIdNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(taxIdNumber != null); + Assert.IsTrue(taxIdNumber.HasValue); + Assert.IsTrue(taxIdNumber.IsPresent); + Assert.AreEqual("EIB", taxIdNumber.ValueOrDefault()); + } + + [Test(Description = "Condition : SecondaryIdentification => missing, TaxIdNumber => EIB")] + public void Test4() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var secondaryIdentification = transactions + .Select(x => x.PayToPlanName) + .Select(x => x.SecondaryIdentification) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsFalse(secondaryIdentification.HasValue); + Assert.IsFalse(secondaryIdentification.IsPresent); + + var taxIdNumber = transactions + .Select(x => x.PayToPlanName) + .Select(x => x.TaxIdNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(taxIdNumber != null); + Assert.IsTrue(taxIdNumber.HasValue); + Assert.IsTrue(taxIdNumber.IsPresent); + Assert.AreEqual("EIB", taxIdNumber.ValueOrDefault()); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2010BAConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2010BAConditionalTests.cs new file mode 100644 index 000000000..9d788ef2f --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2010BAConditionalTests.cs @@ -0,0 +1,357 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing837ProfessionalL2010BAConditionalTests : + X12MacheteTestHarness + { + [Test(Description = "Condition : SecondaryIdentification => SY, PropertyAndCasualtyClaimNumber => Y4")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var secondaryIdentification = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.SubscriberName) + .Select(x => x.SecondaryIdentification) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsTrue(secondaryIdentification.HasValue); + Assert.IsTrue(secondaryIdentification.IsPresent); + Assert.AreEqual("SY", secondaryIdentification.ValueOrDefault()); + + var propertyAndCasualtyClaimNumber = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.SubscriberName) + .Select(x => x.PropertyAndCasualtyClaimNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(propertyAndCasualtyClaimNumber != null); + Assert.IsTrue(propertyAndCasualtyClaimNumber.HasValue); + Assert.IsTrue(propertyAndCasualtyClaimNumber.IsPresent); + Assert.AreEqual("Y4", propertyAndCasualtyClaimNumber.ValueOrDefault()); + } + + [Test(Description = "Condition : SecondaryIdentification => SY, PropertyAndCasualtyClaimNumber => missing"), Explicit("Issue #65")] + public void Test2() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var secondaryIdentification = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.SubscriberName) + .Select(x => x.SecondaryIdentification) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsTrue(secondaryIdentification.HasValue); + Assert.IsTrue(secondaryIdentification.IsPresent); + Assert.AreEqual("SY", secondaryIdentification.ValueOrDefault()); + + var propertyAndCasualtyClaimNumber = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.SubscriberName) + .Select(x => x.PropertyAndCasualtyClaimNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(propertyAndCasualtyClaimNumber != null); + Assert.IsFalse(propertyAndCasualtyClaimNumber.HasValue); + Assert.IsFalse(propertyAndCasualtyClaimNumber.IsPresent); + } + + [Test(Description = "Condition : SecondaryIdentification => missing, PropertyAndCasualtyClaimNumber => Y4")] + public void Test3() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var secondaryIdentification = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.SubscriberName) + .Select(x => x.SecondaryIdentification) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsFalse(secondaryIdentification.HasValue); + Assert.IsFalse(secondaryIdentification.IsPresent); + + var propertyAndCasualtyClaimNumber = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.SubscriberName) + .Select(x => x.PropertyAndCasualtyClaimNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(propertyAndCasualtyClaimNumber != null); + Assert.IsTrue(propertyAndCasualtyClaimNumber.HasValue); + Assert.IsTrue(propertyAndCasualtyClaimNumber.IsPresent); + Assert.AreEqual("Y4", propertyAndCasualtyClaimNumber.ValueOrDefault()); + } + + [Test(Description = "Condition : SecondaryIdentification => missing, PropertyAndCasualtyClaimNumber => missing")] + public void Test4() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var secondaryIdentification = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.SubscriberName) + .Select(x => x.SecondaryIdentification) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsFalse(secondaryIdentification.HasValue); + Assert.IsFalse(secondaryIdentification.IsPresent); + + var propertyAndCasualtyClaimNumber = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.SubscriberName) + .Select(x => x.PropertyAndCasualtyClaimNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(propertyAndCasualtyClaimNumber != null); + Assert.IsFalse(propertyAndCasualtyClaimNumber.HasValue); + Assert.IsFalse(propertyAndCasualtyClaimNumber.IsPresent); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2010BBConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2010BBConditionalTests.cs new file mode 100644 index 000000000..e45e8fb8a --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2010BBConditionalTests.cs @@ -0,0 +1,1781 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing837ProfessionalL2010BBConditionalTests : + X12MacheteTestHarness + { + [Test(Description = "Condition : SecondaryIdentification => 2U, BillingProviderSecondaryIdentification => G2"), Explicit("Issue #65")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var secondaryIdentification = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.PayerName) + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsTrue(secondaryIdentification.HasValue); + Assert.IsTrue(secondaryIdentification.IsPresent); + Assert.AreEqual("2U", secondaryIdentification.ValueOrDefault()); + + var propertyAndCasualtyClaimNumber = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.PayerName) + .Select(x => x.BillingProviderSecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(propertyAndCasualtyClaimNumber != null); + Assert.IsTrue(propertyAndCasualtyClaimNumber.HasValue); + Assert.IsTrue(propertyAndCasualtyClaimNumber.IsPresent); + Assert.AreEqual("G2", propertyAndCasualtyClaimNumber.ValueOrDefault()); + } + + [Test(Description = "Condition : SecondaryIdentification => 2U, BillingProviderSecondaryIdentification => LU"), Explicit("Issue #65")] + public void Test2() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*LU*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var secondaryIdentification = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.PayerName) + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsTrue(secondaryIdentification.HasValue); + Assert.IsTrue(secondaryIdentification.IsPresent); + Assert.AreEqual("2U", secondaryIdentification.ValueOrDefault()); + + var propertyAndCasualtyClaimNumber = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.PayerName) + .Select(x => x.BillingProviderSecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(propertyAndCasualtyClaimNumber != null); + Assert.IsTrue(propertyAndCasualtyClaimNumber.HasValue); + Assert.IsTrue(propertyAndCasualtyClaimNumber.IsPresent); + Assert.AreEqual("LU", propertyAndCasualtyClaimNumber.ValueOrDefault()); + } + + [Test(Description = "Condition : SecondaryIdentification => 2U, BillingProviderSecondaryIdentification => missing")] + public void Test3() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var secondaryIdentification = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.PayerName) + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsTrue(secondaryIdentification.HasValue); + Assert.IsTrue(secondaryIdentification.IsPresent); + Assert.AreEqual("2U", secondaryIdentification.ValueOrDefault()); + + var propertyAndCasualtyClaimNumber = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.PayerName) + .Select(x => x.BillingProviderSecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(propertyAndCasualtyClaimNumber != null); + Assert.IsFalse(propertyAndCasualtyClaimNumber.HasValue); + Assert.IsFalse(propertyAndCasualtyClaimNumber.IsPresent); + } + + [Test(Description = "Condition : SecondaryIdentification => [2U], BillingProviderSecondaryIdentification => missing")] + public void Test4() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*2U*587654321 +REF*2U*587654321 +REF*2U*587654321 +REF*2U*587654321 +REF*2U*587654321 +REF*2U*587654321 +REF*2U*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + for (int i = 0;; i++) + { + if (!transactions.Select(x => x.SubscriberDetail)[0].Select(x => x.PayerName).Select(x => x.SecondaryIdentification).TryGetValue(i, out Segment segment)) + break; + + var secondaryIdentification = segment.Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsTrue(secondaryIdentification.HasValue); + Assert.IsTrue(secondaryIdentification.IsPresent); + Assert.AreEqual("2U", secondaryIdentification.ValueOrDefault()); + } + + var propertyAndCasualtyClaimNumber = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.PayerName) + .Select(x => x.BillingProviderSecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(propertyAndCasualtyClaimNumber != null); + Assert.IsFalse(propertyAndCasualtyClaimNumber.HasValue); + Assert.IsFalse(propertyAndCasualtyClaimNumber.IsPresent); + } + + [Test(Description = "Condition : SecondaryIdentification => missing, BillingProviderSecondaryIdentification => G2"), Explicit("Issue #65")] + public void Test5() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + +// var secondaryIdentification = transactions +// .Select(x => x.SubscriberDetail)[0] +// .Select(x => x.PayerName) +// .Select(x => x.SecondaryIdentification)[0] +// .Select(x => x.ReferenceIdentificationQualifier); +// +// Assume.That(secondaryIdentification != null); +// Assert.IsFalse(secondaryIdentification.HasValue); +// Assert.IsFalse(secondaryIdentification.IsPresent); + + var propertyAndCasualtyClaimNumber = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.PayerName) + .Select(x => x.BillingProviderSecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(propertyAndCasualtyClaimNumber != null); + Assert.IsTrue(propertyAndCasualtyClaimNumber.HasValue); + Assert.IsTrue(propertyAndCasualtyClaimNumber.IsPresent); + Assert.AreEqual("G2", propertyAndCasualtyClaimNumber.ValueOrDefault()); + } + + [Test(Description = "Condition : SecondaryIdentification => missing, BillingProviderSecondaryIdentification => missing")] + public void Test6() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var secondaryIdentification = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.PayerName) + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsFalse(secondaryIdentification.HasValue); + Assert.IsFalse(secondaryIdentification.IsPresent); + + var propertyAndCasualtyClaimNumber = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.PayerName) + .Select(x => x.BillingProviderSecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(propertyAndCasualtyClaimNumber != null); + Assert.IsFalse(propertyAndCasualtyClaimNumber.HasValue); + Assert.IsFalse(propertyAndCasualtyClaimNumber.IsPresent); + } + + [Test(Description = "Condition : SecondaryIdentification => 2U, BillingProviderSecondaryIdentification => LU"), Explicit("Issue #65")] + public void Test7() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*LU*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var secondaryIdentification = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.PayerName) + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsTrue(secondaryIdentification.HasValue); + Assert.IsTrue(secondaryIdentification.IsPresent); + Assert.AreEqual("2U", secondaryIdentification.ValueOrDefault()); + + var propertyAndCasualtyClaimNumber = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.PayerName) + .Select(x => x.BillingProviderSecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(propertyAndCasualtyClaimNumber != null); + Assert.IsTrue(propertyAndCasualtyClaimNumber.HasValue); + Assert.IsTrue(propertyAndCasualtyClaimNumber.IsPresent); + Assert.AreEqual("LU", propertyAndCasualtyClaimNumber.ValueOrDefault()); + } + + [Test(Description = "Condition : SecondaryIdentification => missing, BillingProviderSecondaryIdentification => LU"), Explicit("Issue #65")] + public void Test8() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*LU*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var secondaryIdentification = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.PayerName) + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsFalse(secondaryIdentification.HasValue); + Assert.IsFalse(secondaryIdentification.IsPresent); + + var propertyAndCasualtyClaimNumber = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.PayerName) + .Select(x => x.BillingProviderSecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(propertyAndCasualtyClaimNumber != null); + Assert.IsTrue(propertyAndCasualtyClaimNumber.HasValue); + Assert.IsTrue(propertyAndCasualtyClaimNumber.IsPresent); + Assert.AreEqual("LU", propertyAndCasualtyClaimNumber.ValueOrDefault()); + } + + [Test(Description = "Condition : SecondaryIdentification => EI, BillingProviderSecondaryIdentification => missing")] + public void Test9() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*EI*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var secondaryIdentification = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.PayerName) + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsTrue(secondaryIdentification.HasValue); + Assert.IsTrue(secondaryIdentification.IsPresent); + Assert.AreEqual("EI", secondaryIdentification.ValueOrDefault()); + + var propertyAndCasualtyClaimNumber = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.PayerName) + .Select(x => x.BillingProviderSecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(propertyAndCasualtyClaimNumber != null); + Assert.IsFalse(propertyAndCasualtyClaimNumber.HasValue); + Assert.IsFalse(propertyAndCasualtyClaimNumber.IsPresent); + } + + [Test(Description = "Condition : SecondaryIdentification => [EI], BillingProviderSecondaryIdentification => missing")] + public void Test10() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*EI*587654321 +REF*EI*587654321 +REF*EI*587654321 +REF*EI*587654321 +REF*EI*587654321 +REF*EI*587654321 +REF*EI*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + for (int i = 0;; i++) + { + if (!transactions.Select(x => x.SubscriberDetail)[0].Select(x => x.PayerName).Select(x => x.SecondaryIdentification).TryGetValue(i, out Segment segment)) + break; + + var secondaryIdentification = segment.Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsTrue(secondaryIdentification.HasValue); + Assert.IsTrue(secondaryIdentification.IsPresent); + Assert.AreEqual("EI", secondaryIdentification.ValueOrDefault()); + } + + var propertyAndCasualtyClaimNumber = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.PayerName) + .Select(x => x.BillingProviderSecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(propertyAndCasualtyClaimNumber != null); + Assert.IsFalse(propertyAndCasualtyClaimNumber.HasValue); + Assert.IsFalse(propertyAndCasualtyClaimNumber.IsPresent); + } + + [Test(Description = "Condition : SecondaryIdentification => EI, BillingProviderSecondaryIdentification => G2"), Explicit("Issue #65")] + public void Test11() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*EI*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var secondaryIdentification = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.PayerName) + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsTrue(secondaryIdentification.HasValue); + Assert.IsTrue(secondaryIdentification.IsPresent); + Assert.AreEqual("EI", secondaryIdentification.ValueOrDefault()); + + var propertyAndCasualtyClaimNumber = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.PayerName) + .Select(x => x.BillingProviderSecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(propertyAndCasualtyClaimNumber != null); + Assert.IsFalse(propertyAndCasualtyClaimNumber.HasValue); + Assert.IsFalse(propertyAndCasualtyClaimNumber.IsPresent); + Assert.AreEqual("G2", propertyAndCasualtyClaimNumber.ValueOrDefault()); + } + + [Test(Description = "Condition : SecondaryIdentification => EI, BillingProviderSecondaryIdentification => LU"), Explicit("Issue #65")] + public void Test12() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*EI*587654321 +REF*LU*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var secondaryIdentification = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.PayerName) + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsTrue(secondaryIdentification.HasValue); + Assert.IsTrue(secondaryIdentification.IsPresent); + Assert.AreEqual("EI", secondaryIdentification.ValueOrDefault()); + + var propertyAndCasualtyClaimNumber = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.PayerName) + .Select(x => x.BillingProviderSecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(propertyAndCasualtyClaimNumber != null); + Assert.IsFalse(propertyAndCasualtyClaimNumber.HasValue); + Assert.IsFalse(propertyAndCasualtyClaimNumber.IsPresent); + Assert.AreEqual("LU", propertyAndCasualtyClaimNumber.ValueOrDefault()); + } + + [Test(Description = "Condition : SecondaryIdentification => FY, BillingProviderSecondaryIdentification => missing")] + public void Test13() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*FY*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var secondaryIdentification = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.PayerName) + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsTrue(secondaryIdentification.HasValue); + Assert.IsTrue(secondaryIdentification.IsPresent); + Assert.AreEqual("FY", secondaryIdentification.ValueOrDefault()); + + var propertyAndCasualtyClaimNumber = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.PayerName) + .Select(x => x.BillingProviderSecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(propertyAndCasualtyClaimNumber != null); + Assert.IsFalse(propertyAndCasualtyClaimNumber.HasValue); + Assert.IsFalse(propertyAndCasualtyClaimNumber.IsPresent); + } + + [Test(Description = "Condition : SecondaryIdentification => [FY], BillingProviderSecondaryIdentification => missing")] + public void Test14() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*FY*587654321 +REF*FY*587654321 +REF*FY*587654321 +REF*FY*587654321 +REF*FY*587654321 +REF*FY*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + for (int i = 0;; i++) + { + if (!transactions.Select(x => x.SubscriberDetail)[0].Select(x => x.PayerName).Select(x => x.SecondaryIdentification).TryGetValue(i, out Segment segment)) + break; + + var secondaryIdentification = segment.Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsTrue(secondaryIdentification.HasValue); + Assert.IsTrue(secondaryIdentification.IsPresent); + Assert.AreEqual("FY", secondaryIdentification.ValueOrDefault()); + } + + var propertyAndCasualtyClaimNumber = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.PayerName) + .Select(x => x.BillingProviderSecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(propertyAndCasualtyClaimNumber != null); + Assert.IsFalse(propertyAndCasualtyClaimNumber.HasValue); + Assert.IsFalse(propertyAndCasualtyClaimNumber.IsPresent); + } + + [Test(Description = "Condition : SecondaryIdentification => FY, BillingProviderSecondaryIdentification => G2"), Explicit("Issue #65")] + public void Test15() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*FY*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var secondaryIdentification = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.PayerName) + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsTrue(secondaryIdentification.HasValue); + Assert.IsTrue(secondaryIdentification.IsPresent); + Assert.AreEqual("FY", secondaryIdentification.ValueOrDefault()); + + var propertyAndCasualtyClaimNumber = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.PayerName) + .Select(x => x.BillingProviderSecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(propertyAndCasualtyClaimNumber != null); + Assert.IsFalse(propertyAndCasualtyClaimNumber.HasValue); + Assert.IsFalse(propertyAndCasualtyClaimNumber.IsPresent); + Assert.AreEqual("G2", propertyAndCasualtyClaimNumber.ValueOrDefault()); + } + + [Test(Description = "Condition : SecondaryIdentification => FY, BillingProviderSecondaryIdentification => LU"), Explicit("Issue #65")] + public void Test16() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*FY*587654321 +REF*LU*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var secondaryIdentification = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.PayerName) + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsTrue(secondaryIdentification.HasValue); + Assert.IsTrue(secondaryIdentification.IsPresent); + Assert.AreEqual("FY", secondaryIdentification.ValueOrDefault()); + + var propertyAndCasualtyClaimNumber = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.PayerName) + .Select(x => x.BillingProviderSecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(propertyAndCasualtyClaimNumber != null); + Assert.IsFalse(propertyAndCasualtyClaimNumber.HasValue); + Assert.IsFalse(propertyAndCasualtyClaimNumber.IsPresent); + Assert.AreEqual("LU", propertyAndCasualtyClaimNumber.ValueOrDefault()); + } + + [Test(Description = "Condition : SecondaryIdentification => NF, BillingProviderSecondaryIdentification => missing")] + public void Test17() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*NF*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var secondaryIdentification = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.PayerName) + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsTrue(secondaryIdentification.HasValue); + Assert.IsTrue(secondaryIdentification.IsPresent); + Assert.AreEqual("NF", secondaryIdentification.ValueOrDefault()); + + var propertyAndCasualtyClaimNumber = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.PayerName) + .Select(x => x.BillingProviderSecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(propertyAndCasualtyClaimNumber != null); + Assert.IsFalse(propertyAndCasualtyClaimNumber.HasValue); + Assert.IsFalse(propertyAndCasualtyClaimNumber.IsPresent); + } + + [Test(Description = "Condition : SecondaryIdentification => [NF], BillingProviderSecondaryIdentification => missing")] + public void Test18() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*NF*587654321 +REF*NF*587654321 +REF*NF*587654321 +REF*NF*587654321 +REF*NF*587654321 +REF*NF*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + for (int i = 0;; i++) + { + if (!transactions.Select(x => x.SubscriberDetail)[0].Select(x => x.PayerName).Select(x => x.SecondaryIdentification).TryGetValue(i, out Segment segment)) + break; + + var secondaryIdentification = segment.Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsTrue(secondaryIdentification.HasValue); + Assert.IsTrue(secondaryIdentification.IsPresent); + Assert.AreEqual("NF", secondaryIdentification.ValueOrDefault()); + } + + var propertyAndCasualtyClaimNumber = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.PayerName) + .Select(x => x.BillingProviderSecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(propertyAndCasualtyClaimNumber != null); + Assert.IsFalse(propertyAndCasualtyClaimNumber.HasValue); + Assert.IsFalse(propertyAndCasualtyClaimNumber.IsPresent); + } + + [Test(Description = "Condition : SecondaryIdentification => NF, BillingProviderSecondaryIdentification => G2"), Explicit("Issue #65")] + public void Test19() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*NF*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var secondaryIdentification = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.PayerName) + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsTrue(secondaryIdentification.HasValue); + Assert.IsTrue(secondaryIdentification.IsPresent); + Assert.AreEqual("NF", secondaryIdentification.ValueOrDefault()); + + var propertyAndCasualtyClaimNumber = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.PayerName) + .Select(x => x.BillingProviderSecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(propertyAndCasualtyClaimNumber != null); + Assert.IsFalse(propertyAndCasualtyClaimNumber.HasValue); + Assert.IsFalse(propertyAndCasualtyClaimNumber.IsPresent); + Assert.AreEqual("G2", propertyAndCasualtyClaimNumber.ValueOrDefault()); + } + + [Test(Description = "Condition : SecondaryIdentification => NF, BillingProviderSecondaryIdentification => LU"), Explicit("Issue #65")] + public void Test20() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*NF*587654321 +REF*LU*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var secondaryIdentification = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.PayerName) + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsTrue(secondaryIdentification.HasValue); + Assert.IsTrue(secondaryIdentification.IsPresent); + Assert.AreEqual("NF", secondaryIdentification.ValueOrDefault()); + + var propertyAndCasualtyClaimNumber = transactions + .Select(x => x.SubscriberDetail)[0] + .Select(x => x.PayerName) + .Select(x => x.BillingProviderSecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(propertyAndCasualtyClaimNumber != null); + Assert.IsFalse(propertyAndCasualtyClaimNumber.HasValue); + Assert.IsFalse(propertyAndCasualtyClaimNumber.IsPresent); + Assert.AreEqual("LU", propertyAndCasualtyClaimNumber.ValueOrDefault()); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2010CAConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2010CAConditionalTests.cs new file mode 100644 index 000000000..c4ee6a7dc --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2010CAConditionalTests.cs @@ -0,0 +1,534 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing837ProfessionalL2010CAConditionalTests : + X12MacheteTestHarness + { + [Test(Description = "Condition : PropertyAndCasualtyClaimNumber => Y4, PropertyAndCasualtyPatientIdentifier => 1W")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var propertyAndCasualtyClaimNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PatientName) + .Select(x => x.PropertyAndCasualtyClaimNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(propertyAndCasualtyClaimNumber != null); + Assert.IsTrue(propertyAndCasualtyClaimNumber.HasValue); + Assert.IsTrue(propertyAndCasualtyClaimNumber.IsPresent); + Assert.AreEqual("Y4", propertyAndCasualtyClaimNumber.ValueOrDefault()); + + var propertyAndCasualtyPatientIdentifier = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PatientName) + .Select(x => x.PropertyAndCasualtyPatientIdentifier) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(propertyAndCasualtyPatientIdentifier != null); + Assert.IsTrue(propertyAndCasualtyPatientIdentifier.HasValue); + Assert.IsTrue(propertyAndCasualtyPatientIdentifier.IsPresent); + Assert.AreEqual("1W", propertyAndCasualtyPatientIdentifier.ValueOrDefault()); + } + + [Test(Description = "Condition : PropertyAndCasualtyClaimNumber => Y4, PropertyAndCasualtyPatientIdentifier => SY")] + public void Test2() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*SY*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var propertyAndCasualtyClaimNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PatientName) + .Select(x => x.PropertyAndCasualtyClaimNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(propertyAndCasualtyClaimNumber != null); + Assert.IsTrue(propertyAndCasualtyClaimNumber.HasValue); + Assert.IsTrue(propertyAndCasualtyClaimNumber.IsPresent); + Assert.AreEqual("Y4", propertyAndCasualtyClaimNumber.ValueOrDefault()); + + var propertyAndCasualtyPatientIdentifier = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PatientName) + .Select(x => x.PropertyAndCasualtyPatientIdentifier) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(propertyAndCasualtyPatientIdentifier != null); + Assert.IsTrue(propertyAndCasualtyPatientIdentifier.HasValue); + Assert.IsTrue(propertyAndCasualtyPatientIdentifier.IsPresent); + Assert.AreEqual("SY", propertyAndCasualtyPatientIdentifier.ValueOrDefault()); + } + + [Test(Description = "Condition : PropertyAndCasualtyClaimNumber => Y4, PropertyAndCasualtyPatientIdentifier => missing")] + public void Test3() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var propertyAndCasualtyClaimNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PatientName) + .Select(x => x.PropertyAndCasualtyClaimNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(propertyAndCasualtyClaimNumber != null); + Assert.IsTrue(propertyAndCasualtyClaimNumber.HasValue); + Assert.IsTrue(propertyAndCasualtyClaimNumber.IsPresent); + Assert.AreEqual("Y4", propertyAndCasualtyClaimNumber.ValueOrDefault()); + + var propertyAndCasualtyPatientIdentifier = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PatientName) + .Select(x => x.PropertyAndCasualtyPatientIdentifier) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(propertyAndCasualtyPatientIdentifier != null); + Assert.IsFalse(propertyAndCasualtyPatientIdentifier.HasValue); + Assert.IsFalse(propertyAndCasualtyPatientIdentifier.IsPresent); + } + + [Test(Description = "Condition : PropertyAndCasualtyClaimNumber => missing, PropertyAndCasualtyPatientIdentifier => 1W")] + public void Test4() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var propertyAndCasualtyClaimNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PatientName) + .Select(x => x.PropertyAndCasualtyClaimNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(propertyAndCasualtyClaimNumber != null); + Assert.IsFalse(propertyAndCasualtyClaimNumber.HasValue); + Assert.IsFalse(propertyAndCasualtyClaimNumber.IsPresent); + + var propertyAndCasualtyPatientIdentifier = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PatientName) + .Select(x => x.PropertyAndCasualtyPatientIdentifier) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(propertyAndCasualtyPatientIdentifier != null); + Assert.IsTrue(propertyAndCasualtyPatientIdentifier.HasValue); + Assert.IsTrue(propertyAndCasualtyPatientIdentifier.IsPresent); + Assert.AreEqual("1W", propertyAndCasualtyPatientIdentifier.ValueOrDefault()); + } + + [Test(Description = "Condition : PropertyAndCasualtyClaimNumber => missing, PropertyAndCasualtyPatientIdentifier => SY")] + public void Test5() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*SY*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var propertyAndCasualtyClaimNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PatientName) + .Select(x => x.PropertyAndCasualtyClaimNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(propertyAndCasualtyClaimNumber != null); + Assert.IsFalse(propertyAndCasualtyClaimNumber.HasValue); + Assert.IsFalse(propertyAndCasualtyClaimNumber.IsPresent); + + var propertyAndCasualtyPatientIdentifier = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PatientName) + .Select(x => x.PropertyAndCasualtyPatientIdentifier) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(propertyAndCasualtyPatientIdentifier != null); + Assert.IsTrue(propertyAndCasualtyPatientIdentifier.HasValue); + Assert.IsTrue(propertyAndCasualtyPatientIdentifier.IsPresent); + Assert.AreEqual("SY", propertyAndCasualtyPatientIdentifier.ValueOrDefault()); + } + + [Test(Description = "Condition : PropertyAndCasualtyClaimNumber => missing, PropertyAndCasualtyPatientIdentifier => missing")] + public void Test6() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +CLM*26403774*200***11:B:1*Y**Y*I +DTP*472*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var propertyAndCasualtyClaimNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PatientName) + .Select(x => x.PropertyAndCasualtyClaimNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(propertyAndCasualtyClaimNumber != null); + Assert.IsFalse(propertyAndCasualtyClaimNumber.HasValue); + Assert.IsFalse(propertyAndCasualtyClaimNumber.IsPresent); + + var propertyAndCasualtyPatientIdentifier = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.PatientName) + .Select(x => x.PropertyAndCasualtyPatientIdentifier) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(propertyAndCasualtyPatientIdentifier != null); + Assert.IsFalse(propertyAndCasualtyPatientIdentifier.HasValue); + Assert.IsFalse(propertyAndCasualtyPatientIdentifier.IsPresent); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P10ConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P10ConditionalTests.cs new file mode 100644 index 000000000..12b01fc8b --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P10ConditionalTests.cs @@ -0,0 +1,2045 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing837ProfessionalL2300P10ConditionalTests : + X12MacheteTestHarness + { + [Test(Description = @"Condition : ServiceAuthorizationExceptionCode => 4N, + MandatoryMedicareCrossoverIndicator => F5, + MammographyCertificationNumber => EW, + ReferralNumber => 9F, + PriorAuthorization => G1, + PayerClaimControlNumber => F8, + CLIANumber => X4, + RepricedClaimNumber => 9A, + AdjustedRepricedClaimNumber => 9C, + InvestigationalDeviceExemptionNumber => LX, + ClaimIdentifierForTransmissionIntermediaries => D9, + MedicalRecordNumber => E4, + DemonstrationProjectIdentifier => P4, + CarePlanOversight => 1J")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*314*D8*20061109 +DTP*297*D8*20061109 +DTP*296*D8*20061109 +DTP*435*D8*20061109 +DTP*096*D8*20061109 +DTP*090*D8*20061109 +DTP*444*D8*20061109 +DTP*050*D8*20061109 +REF*4N*111222333444 +REF*F5*111222333444 +REF*EW*111222333444 +REF*9F*111222333444 +REF*G1*111222333444 +REF*F8*111222333444 +REF*X4*111222333444 +REF*9A*111222333444 +REF*9C*111222333444 +REF*LX*111222333444 +REF*D9*111222333444 +REF*EA*111222333444 +REF*P4*111222333444 +REF*1J*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var serviceAuthorizationExceptionCode = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceAuthorizationExceptionCode) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(serviceAuthorizationExceptionCode != null); + Assert.IsTrue(serviceAuthorizationExceptionCode.HasValue); + Assert.IsTrue(serviceAuthorizationExceptionCode.IsPresent); + Assert.AreEqual("4N", serviceAuthorizationExceptionCode.ValueOrDefault()); + + var mandatoryMedicareCrossoverIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MandatoryMedicareCrossoverIndicator) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(mandatoryMedicareCrossoverIndicator != null); + Assert.IsTrue(mandatoryMedicareCrossoverIndicator.HasValue); + Assert.IsTrue(mandatoryMedicareCrossoverIndicator.IsPresent); + Assert.AreEqual("F5", mandatoryMedicareCrossoverIndicator.ValueOrDefault()); + + var mammographyCertificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MammographyCertificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(mammographyCertificationNumber != null); + Assert.IsTrue(mammographyCertificationNumber.HasValue); + Assert.IsTrue(mammographyCertificationNumber.IsPresent); + Assert.AreEqual("EW", mammographyCertificationNumber.ValueOrDefault()); + + var referralNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ReferralNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(referralNumber != null); + Assert.IsTrue(referralNumber.HasValue); + Assert.IsTrue(referralNumber.IsPresent); + Assert.AreEqual("9F", referralNumber.ValueOrDefault()); + + var priorAuthorization = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PriorAuthorization) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(priorAuthorization != null); + Assert.IsTrue(priorAuthorization.HasValue); + Assert.IsTrue(priorAuthorization.IsPresent); + Assert.AreEqual("G1", priorAuthorization.ValueOrDefault()); + + var payerClaimControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PayerClaimControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(payerClaimControlNumber != null); + Assert.IsTrue(payerClaimControlNumber.HasValue); + Assert.IsTrue(payerClaimControlNumber.IsPresent); + Assert.AreEqual("F8", payerClaimControlNumber.ValueOrDefault()); + + var cliaNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.CLIANumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(cliaNumber != null); + Assert.IsTrue(cliaNumber.HasValue); + Assert.IsTrue(cliaNumber.IsPresent); + Assert.AreEqual("X4", cliaNumber.ValueOrDefault()); + + var repricedClaimNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricedClaimNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(repricedClaimNumber != null); + Assert.IsTrue(repricedClaimNumber.HasValue); + Assert.IsTrue(repricedClaimNumber.IsPresent); + Assert.AreEqual("9A", repricedClaimNumber.ValueOrDefault()); + + var adjustedRepricedClaimNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdjustedRepricedClaimNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(adjustedRepricedClaimNumber != null); + Assert.IsTrue(adjustedRepricedClaimNumber.HasValue); + Assert.IsTrue(adjustedRepricedClaimNumber.IsPresent); + Assert.AreEqual("9C", adjustedRepricedClaimNumber.ValueOrDefault()); + + var investigationalDeviceExemptionNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InvestigationalDeviceExemptionNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(investigationalDeviceExemptionNumber != null); + Assert.IsTrue(investigationalDeviceExemptionNumber.HasValue); + Assert.IsTrue(investigationalDeviceExemptionNumber.IsPresent); + Assert.AreEqual("LX", investigationalDeviceExemptionNumber.ValueOrDefault()); + + var claimIdentifierForTransmissionIntermediaries = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ClaimIdentifierForTransmissionIntermediaries) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(claimIdentifierForTransmissionIntermediaries != null); + Assert.IsTrue(claimIdentifierForTransmissionIntermediaries.HasValue); + Assert.IsTrue(claimIdentifierForTransmissionIntermediaries.IsPresent); + Assert.AreEqual("D9", claimIdentifierForTransmissionIntermediaries.ValueOrDefault()); + + var medicalRecordNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MedicalRecordNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(medicalRecordNumber != null); + Assert.IsTrue(medicalRecordNumber.HasValue); + Assert.IsTrue(medicalRecordNumber.IsPresent); + Assert.AreEqual("EA", medicalRecordNumber.ValueOrDefault()); + + var demonstrationProjectIdentifier = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DemonstrationProjectIdentifier) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(demonstrationProjectIdentifier != null); + Assert.IsTrue(demonstrationProjectIdentifier.HasValue); + Assert.IsTrue(demonstrationProjectIdentifier.IsPresent); + Assert.AreEqual("P4", demonstrationProjectIdentifier.ValueOrDefault()); + + var carePlanOversight = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.CarePlanOversight) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(carePlanOversight != null); + Assert.IsTrue(carePlanOversight.HasValue); + Assert.IsTrue(carePlanOversight.IsPresent); + Assert.AreEqual("1J", carePlanOversight.ValueOrDefault()); + } + + [Test(Description = @"Condition : ServiceAuthorizationExceptionCode => 4N, + MandatoryMedicareCrossoverIndicator => F5, + MammographyCertificationNumber => EW, + ReferralNumber => 9F, + PriorAuthorization => G1, + PayerClaimControlNumber => F8, + CLIANumber => X4, + RepricedClaimNumber => 9A, + AdjustedRepricedClaimNumber => 9C, + InvestigationalDeviceExemptionNumber => LX, + ClaimIdentifierForTransmissionIntermediaries => D9, + MedicalRecordNumber => E4, + DemonstrationProjectIdentifier => P4, + CarePlanOversight => missing")] + public void Test2() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*314*D8*20061109 +DTP*297*D8*20061109 +DTP*296*D8*20061109 +DTP*435*D8*20061109 +DTP*096*D8*20061109 +DTP*090*D8*20061109 +DTP*444*D8*20061109 +DTP*050*D8*20061109 +REF*4N*111222333444 +REF*F5*111222333444 +REF*EW*111222333444 +REF*9F*111222333444 +REF*G1*111222333444 +REF*F8*111222333444 +REF*X4*111222333444 +REF*9A*111222333444 +REF*9C*111222333444 +REF*LX*111222333444 +REF*D9*111222333444 +REF*EA*111222333444 +REF*P4*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var serviceAuthorizationExceptionCode = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceAuthorizationExceptionCode) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(serviceAuthorizationExceptionCode != null); + Assert.IsTrue(serviceAuthorizationExceptionCode.HasValue); + Assert.IsTrue(serviceAuthorizationExceptionCode.IsPresent); + Assert.AreEqual("4N", serviceAuthorizationExceptionCode.ValueOrDefault()); + + var mandatoryMedicareCrossoverIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MandatoryMedicareCrossoverIndicator) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(mandatoryMedicareCrossoverIndicator != null); + Assert.IsTrue(mandatoryMedicareCrossoverIndicator.HasValue); + Assert.IsTrue(mandatoryMedicareCrossoverIndicator.IsPresent); + Assert.AreEqual("F5", mandatoryMedicareCrossoverIndicator.ValueOrDefault()); + + var mammographyCertificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MammographyCertificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(mammographyCertificationNumber != null); + Assert.IsTrue(mammographyCertificationNumber.HasValue); + Assert.IsTrue(mammographyCertificationNumber.IsPresent); + Assert.AreEqual("EW", mammographyCertificationNumber.ValueOrDefault()); + + var referralNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ReferralNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(referralNumber != null); + Assert.IsTrue(referralNumber.HasValue); + Assert.IsTrue(referralNumber.IsPresent); + Assert.AreEqual("9F", referralNumber.ValueOrDefault()); + + var priorAuthorization = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PriorAuthorization) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(priorAuthorization != null); + Assert.IsTrue(priorAuthorization.HasValue); + Assert.IsTrue(priorAuthorization.IsPresent); + Assert.AreEqual("G1", priorAuthorization.ValueOrDefault()); + + var payerClaimControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PayerClaimControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(payerClaimControlNumber != null); + Assert.IsTrue(payerClaimControlNumber.HasValue); + Assert.IsTrue(payerClaimControlNumber.IsPresent); + Assert.AreEqual("F8", payerClaimControlNumber.ValueOrDefault()); + + var cliaNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.CLIANumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(cliaNumber != null); + Assert.IsTrue(cliaNumber.HasValue); + Assert.IsTrue(cliaNumber.IsPresent); + Assert.AreEqual("X4", cliaNumber.ValueOrDefault()); + + var repricedClaimNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricedClaimNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(repricedClaimNumber != null); + Assert.IsTrue(repricedClaimNumber.HasValue); + Assert.IsTrue(repricedClaimNumber.IsPresent); + Assert.AreEqual("9A", repricedClaimNumber.ValueOrDefault()); + + var adjustedRepricedClaimNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdjustedRepricedClaimNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(adjustedRepricedClaimNumber != null); + Assert.IsTrue(adjustedRepricedClaimNumber.HasValue); + Assert.IsTrue(adjustedRepricedClaimNumber.IsPresent); + Assert.AreEqual("9C", adjustedRepricedClaimNumber.ValueOrDefault()); + + var investigationalDeviceExemptionNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InvestigationalDeviceExemptionNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(investigationalDeviceExemptionNumber != null); + Assert.IsTrue(investigationalDeviceExemptionNumber.HasValue); + Assert.IsTrue(investigationalDeviceExemptionNumber.IsPresent); + Assert.AreEqual("LX", investigationalDeviceExemptionNumber.ValueOrDefault()); + + var claimIdentifierForTransmissionIntermediaries = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ClaimIdentifierForTransmissionIntermediaries) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(claimIdentifierForTransmissionIntermediaries != null); + Assert.IsTrue(claimIdentifierForTransmissionIntermediaries.HasValue); + Assert.IsTrue(claimIdentifierForTransmissionIntermediaries.IsPresent); + Assert.AreEqual("D9", claimIdentifierForTransmissionIntermediaries.ValueOrDefault()); + + var medicalRecordNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MedicalRecordNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(medicalRecordNumber != null); + Assert.IsTrue(medicalRecordNumber.HasValue); + Assert.IsTrue(medicalRecordNumber.IsPresent); + Assert.AreEqual("EA", medicalRecordNumber.ValueOrDefault()); + + var demonstrationProjectIdentifier = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DemonstrationProjectIdentifier) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(demonstrationProjectIdentifier != null); + Assert.IsTrue(demonstrationProjectIdentifier.HasValue); + Assert.IsTrue(demonstrationProjectIdentifier.IsPresent); + Assert.AreEqual("P4", demonstrationProjectIdentifier.ValueOrDefault()); + + var carePlanOversight = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.CarePlanOversight) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(carePlanOversight != null); + Assert.IsFalse(carePlanOversight.HasValue); + Assert.IsFalse(carePlanOversight.IsPresent); + } + + [Test(Description = @"Condition : ServiceAuthorizationExceptionCode => 4N, + MandatoryMedicareCrossoverIndicator => F5, + MammographyCertificationNumber => EW, + ReferralNumber => 9F, + PriorAuthorization => G1, + PayerClaimControlNumber => F8, + CLIANumber => X4, + RepricedClaimNumber => 9A, + AdjustedRepricedClaimNumber => 9C, + InvestigationalDeviceExemptionNumber => LX, + ClaimIdentifierForTransmissionIntermediaries => D9, + MedicalRecordNumber => E4, + DemonstrationProjectIdentifier => missing, + CarePlanOversight => missing")] + public void Test3() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*314*D8*20061109 +DTP*297*D8*20061109 +DTP*296*D8*20061109 +DTP*435*D8*20061109 +DTP*096*D8*20061109 +DTP*090*D8*20061109 +DTP*444*D8*20061109 +DTP*050*D8*20061109 +REF*4N*111222333444 +REF*F5*111222333444 +REF*EW*111222333444 +REF*9F*111222333444 +REF*G1*111222333444 +REF*F8*111222333444 +REF*X4*111222333444 +REF*9A*111222333444 +REF*9C*111222333444 +REF*LX*111222333444 +REF*D9*111222333444 +REF*EA*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var serviceAuthorizationExceptionCode = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceAuthorizationExceptionCode) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(serviceAuthorizationExceptionCode != null); + Assert.IsTrue(serviceAuthorizationExceptionCode.HasValue); + Assert.IsTrue(serviceAuthorizationExceptionCode.IsPresent); + Assert.AreEqual("4N", serviceAuthorizationExceptionCode.ValueOrDefault()); + + var mandatoryMedicareCrossoverIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MandatoryMedicareCrossoverIndicator) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(mandatoryMedicareCrossoverIndicator != null); + Assert.IsTrue(mandatoryMedicareCrossoverIndicator.HasValue); + Assert.IsTrue(mandatoryMedicareCrossoverIndicator.IsPresent); + Assert.AreEqual("F5", mandatoryMedicareCrossoverIndicator.ValueOrDefault()); + + var mammographyCertificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MammographyCertificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(mammographyCertificationNumber != null); + Assert.IsTrue(mammographyCertificationNumber.HasValue); + Assert.IsTrue(mammographyCertificationNumber.IsPresent); + Assert.AreEqual("EW", mammographyCertificationNumber.ValueOrDefault()); + + var referralNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ReferralNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(referralNumber != null); + Assert.IsTrue(referralNumber.HasValue); + Assert.IsTrue(referralNumber.IsPresent); + Assert.AreEqual("9F", referralNumber.ValueOrDefault()); + + var priorAuthorization = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PriorAuthorization) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(priorAuthorization != null); + Assert.IsTrue(priorAuthorization.HasValue); + Assert.IsTrue(priorAuthorization.IsPresent); + Assert.AreEqual("G1", priorAuthorization.ValueOrDefault()); + + var payerClaimControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PayerClaimControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(payerClaimControlNumber != null); + Assert.IsTrue(payerClaimControlNumber.HasValue); + Assert.IsTrue(payerClaimControlNumber.IsPresent); + Assert.AreEqual("F8", payerClaimControlNumber.ValueOrDefault()); + + var cliaNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.CLIANumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(cliaNumber != null); + Assert.IsTrue(cliaNumber.HasValue); + Assert.IsTrue(cliaNumber.IsPresent); + Assert.AreEqual("X4", cliaNumber.ValueOrDefault()); + + var repricedClaimNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricedClaimNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(repricedClaimNumber != null); + Assert.IsTrue(repricedClaimNumber.HasValue); + Assert.IsTrue(repricedClaimNumber.IsPresent); + Assert.AreEqual("9A", repricedClaimNumber.ValueOrDefault()); + + var adjustedRepricedClaimNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdjustedRepricedClaimNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(adjustedRepricedClaimNumber != null); + Assert.IsTrue(adjustedRepricedClaimNumber.HasValue); + Assert.IsTrue(adjustedRepricedClaimNumber.IsPresent); + Assert.AreEqual("9C", adjustedRepricedClaimNumber.ValueOrDefault()); + + var investigationalDeviceExemptionNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InvestigationalDeviceExemptionNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(investigationalDeviceExemptionNumber != null); + Assert.IsTrue(investigationalDeviceExemptionNumber.HasValue); + Assert.IsTrue(investigationalDeviceExemptionNumber.IsPresent); + Assert.AreEqual("LX", investigationalDeviceExemptionNumber.ValueOrDefault()); + + var claimIdentifierForTransmissionIntermediaries = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ClaimIdentifierForTransmissionIntermediaries) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(claimIdentifierForTransmissionIntermediaries != null); + Assert.IsTrue(claimIdentifierForTransmissionIntermediaries.HasValue); + Assert.IsTrue(claimIdentifierForTransmissionIntermediaries.IsPresent); + Assert.AreEqual("D9", claimIdentifierForTransmissionIntermediaries.ValueOrDefault()); + + var medicalRecordNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MedicalRecordNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(medicalRecordNumber != null); + Assert.IsTrue(medicalRecordNumber.HasValue); + Assert.IsTrue(medicalRecordNumber.IsPresent); + Assert.AreEqual("EA", medicalRecordNumber.ValueOrDefault()); + + var demonstrationProjectIdentifier = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DemonstrationProjectIdentifier) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(demonstrationProjectIdentifier != null); + Assert.IsFalse(demonstrationProjectIdentifier.HasValue); + Assert.IsFalse(demonstrationProjectIdentifier.IsPresent); + + var carePlanOversight = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.CarePlanOversight) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(carePlanOversight != null); + Assert.IsFalse(carePlanOversight.HasValue); + Assert.IsFalse(carePlanOversight.IsPresent); + } + + [Test(Description = @"Condition : ServiceAuthorizationExceptionCode => 4N, + MandatoryMedicareCrossoverIndicator => F5, + MammographyCertificationNumber => EW, + ReferralNumber => 9F, + PriorAuthorization => G1, + PayerClaimControlNumber => F8, + CLIANumber => X4, + RepricedClaimNumber => 9A, + AdjustedRepricedClaimNumber => 9C, + InvestigationalDeviceExemptionNumber => LX, + ClaimIdentifierForTransmissionIntermediaries => D9, + MedicalRecordNumber => missing, + DemonstrationProjectIdentifier => missing, + CarePlanOversight => missing")] + public void Test4() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*314*D8*20061109 +DTP*297*D8*20061109 +DTP*296*D8*20061109 +DTP*435*D8*20061109 +DTP*096*D8*20061109 +DTP*090*D8*20061109 +DTP*444*D8*20061109 +DTP*050*D8*20061109 +REF*4N*111222333444 +REF*F5*111222333444 +REF*EW*111222333444 +REF*9F*111222333444 +REF*G1*111222333444 +REF*F8*111222333444 +REF*X4*111222333444 +REF*9A*111222333444 +REF*9C*111222333444 +REF*LX*111222333444 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var serviceAuthorizationExceptionCode = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceAuthorizationExceptionCode) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(serviceAuthorizationExceptionCode != null); + Assert.IsTrue(serviceAuthorizationExceptionCode.HasValue); + Assert.IsTrue(serviceAuthorizationExceptionCode.IsPresent); + Assert.AreEqual("4N", serviceAuthorizationExceptionCode.ValueOrDefault()); + + var mandatoryMedicareCrossoverIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MandatoryMedicareCrossoverIndicator) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(mandatoryMedicareCrossoverIndicator != null); + Assert.IsTrue(mandatoryMedicareCrossoverIndicator.HasValue); + Assert.IsTrue(mandatoryMedicareCrossoverIndicator.IsPresent); + Assert.AreEqual("F5", mandatoryMedicareCrossoverIndicator.ValueOrDefault()); + + var mammographyCertificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MammographyCertificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(mammographyCertificationNumber != null); + Assert.IsTrue(mammographyCertificationNumber.HasValue); + Assert.IsTrue(mammographyCertificationNumber.IsPresent); + Assert.AreEqual("EW", mammographyCertificationNumber.ValueOrDefault()); + + var referralNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ReferralNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(referralNumber != null); + Assert.IsTrue(referralNumber.HasValue); + Assert.IsTrue(referralNumber.IsPresent); + Assert.AreEqual("9F", referralNumber.ValueOrDefault()); + + var priorAuthorization = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PriorAuthorization) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(priorAuthorization != null); + Assert.IsTrue(priorAuthorization.HasValue); + Assert.IsTrue(priorAuthorization.IsPresent); + Assert.AreEqual("G1", priorAuthorization.ValueOrDefault()); + + var payerClaimControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PayerClaimControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(payerClaimControlNumber != null); + Assert.IsTrue(payerClaimControlNumber.HasValue); + Assert.IsTrue(payerClaimControlNumber.IsPresent); + Assert.AreEqual("F8", payerClaimControlNumber.ValueOrDefault()); + + var cliaNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.CLIANumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(cliaNumber != null); + Assert.IsTrue(cliaNumber.HasValue); + Assert.IsTrue(cliaNumber.IsPresent); + Assert.AreEqual("X4", cliaNumber.ValueOrDefault()); + + var repricedClaimNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricedClaimNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(repricedClaimNumber != null); + Assert.IsTrue(repricedClaimNumber.HasValue); + Assert.IsTrue(repricedClaimNumber.IsPresent); + Assert.AreEqual("9A", repricedClaimNumber.ValueOrDefault()); + + var adjustedRepricedClaimNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdjustedRepricedClaimNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(adjustedRepricedClaimNumber != null); + Assert.IsTrue(adjustedRepricedClaimNumber.HasValue); + Assert.IsTrue(adjustedRepricedClaimNumber.IsPresent); + Assert.AreEqual("9C", adjustedRepricedClaimNumber.ValueOrDefault()); + + var investigationalDeviceExemptionNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InvestigationalDeviceExemptionNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(investigationalDeviceExemptionNumber != null); + Assert.IsTrue(investigationalDeviceExemptionNumber.HasValue); + Assert.IsTrue(investigationalDeviceExemptionNumber.IsPresent); + Assert.AreEqual("LX", investigationalDeviceExemptionNumber.ValueOrDefault()); + + var claimIdentifierForTransmissionIntermediaries = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ClaimIdentifierForTransmissionIntermediaries) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(claimIdentifierForTransmissionIntermediaries != null); + Assert.IsTrue(claimIdentifierForTransmissionIntermediaries.HasValue); + Assert.IsTrue(claimIdentifierForTransmissionIntermediaries.IsPresent); + Assert.AreEqual("D9", claimIdentifierForTransmissionIntermediaries.ValueOrDefault()); + + var medicalRecordNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MedicalRecordNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(medicalRecordNumber != null); + Assert.IsFalse(medicalRecordNumber.HasValue); + Assert.IsFalse(medicalRecordNumber.IsPresent); + + var demonstrationProjectIdentifier = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DemonstrationProjectIdentifier) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(demonstrationProjectIdentifier != null); + Assert.IsFalse(demonstrationProjectIdentifier.HasValue); + Assert.IsFalse(demonstrationProjectIdentifier.IsPresent); + + var carePlanOversight = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.CarePlanOversight) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(carePlanOversight != null); + Assert.IsFalse(carePlanOversight.HasValue); + Assert.IsFalse(carePlanOversight.IsPresent); + } + + [Test(Description = @"Condition : ServiceAuthorizationExceptionCode => 4N, + MandatoryMedicareCrossoverIndicator => F5, + MammographyCertificationNumber => EW, + ReferralNumber => 9F, + PriorAuthorization => G1, + PayerClaimControlNumber => F8, + CLIANumber => X4, + RepricedClaimNumber => 9A, + AdjustedRepricedClaimNumber => 9C, + InvestigationalDeviceExemptionNumber => missing, + ClaimIdentifierForTransmissionIntermediaries => missing, + MedicalRecordNumber => missing, + DemonstrationProjectIdentifier => missing, + CarePlanOversight => missing")] + public void Test5() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*314*D8*20061109 +DTP*297*D8*20061109 +DTP*296*D8*20061109 +DTP*435*D8*20061109 +DTP*096*D8*20061109 +DTP*090*D8*20061109 +DTP*444*D8*20061109 +DTP*050*D8*20061109 +REF*4N*111222333444 +REF*F5*111222333444 +REF*EW*111222333444 +REF*9F*111222333444 +REF*G1*111222333444 +REF*F8*111222333444 +REF*X4*111222333444 +REF*9A*111222333444 +REF*9C*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var serviceAuthorizationExceptionCode = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceAuthorizationExceptionCode) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(serviceAuthorizationExceptionCode != null); + Assert.IsTrue(serviceAuthorizationExceptionCode.HasValue); + Assert.IsTrue(serviceAuthorizationExceptionCode.IsPresent); + Assert.AreEqual("4N", serviceAuthorizationExceptionCode.ValueOrDefault()); + + var mandatoryMedicareCrossoverIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MandatoryMedicareCrossoverIndicator) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(mandatoryMedicareCrossoverIndicator != null); + Assert.IsTrue(mandatoryMedicareCrossoverIndicator.HasValue); + Assert.IsTrue(mandatoryMedicareCrossoverIndicator.IsPresent); + Assert.AreEqual("F5", mandatoryMedicareCrossoverIndicator.ValueOrDefault()); + + var mammographyCertificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MammographyCertificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(mammographyCertificationNumber != null); + Assert.IsTrue(mammographyCertificationNumber.HasValue); + Assert.IsTrue(mammographyCertificationNumber.IsPresent); + Assert.AreEqual("EW", mammographyCertificationNumber.ValueOrDefault()); + + var referralNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ReferralNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(referralNumber != null); + Assert.IsTrue(referralNumber.HasValue); + Assert.IsTrue(referralNumber.IsPresent); + Assert.AreEqual("9F", referralNumber.ValueOrDefault()); + + var priorAuthorization = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PriorAuthorization) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(priorAuthorization != null); + Assert.IsTrue(priorAuthorization.HasValue); + Assert.IsTrue(priorAuthorization.IsPresent); + Assert.AreEqual("G1", priorAuthorization.ValueOrDefault()); + + var payerClaimControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PayerClaimControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(payerClaimControlNumber != null); + Assert.IsTrue(payerClaimControlNumber.HasValue); + Assert.IsTrue(payerClaimControlNumber.IsPresent); + Assert.AreEqual("F8", payerClaimControlNumber.ValueOrDefault()); + + var cliaNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.CLIANumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(cliaNumber != null); + Assert.IsTrue(cliaNumber.HasValue); + Assert.IsTrue(cliaNumber.IsPresent); + Assert.AreEqual("X4", cliaNumber.ValueOrDefault()); + + var repricedClaimNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricedClaimNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(repricedClaimNumber != null); + Assert.IsTrue(repricedClaimNumber.HasValue); + Assert.IsTrue(repricedClaimNumber.IsPresent); + Assert.AreEqual("9A", repricedClaimNumber.ValueOrDefault()); + + var adjustedRepricedClaimNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdjustedRepricedClaimNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(adjustedRepricedClaimNumber != null); + Assert.IsTrue(adjustedRepricedClaimNumber.HasValue); + Assert.IsTrue(adjustedRepricedClaimNumber.IsPresent); + Assert.AreEqual("9C", adjustedRepricedClaimNumber.ValueOrDefault()); + + var investigationalDeviceExemptionNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InvestigationalDeviceExemptionNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(investigationalDeviceExemptionNumber != null); + Assert.IsFalse(investigationalDeviceExemptionNumber.HasValue); + Assert.IsFalse(investigationalDeviceExemptionNumber.IsPresent); + + var claimIdentifierForTransmissionIntermediaries = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ClaimIdentifierForTransmissionIntermediaries) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(claimIdentifierForTransmissionIntermediaries != null); + Assert.IsFalse(claimIdentifierForTransmissionIntermediaries.HasValue); + Assert.IsFalse(claimIdentifierForTransmissionIntermediaries.IsPresent); + + var medicalRecordNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MedicalRecordNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(medicalRecordNumber != null); + Assert.IsFalse(medicalRecordNumber.HasValue); + Assert.IsFalse(medicalRecordNumber.IsPresent); + + var demonstrationProjectIdentifier = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DemonstrationProjectIdentifier) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(demonstrationProjectIdentifier != null); + Assert.IsFalse(demonstrationProjectIdentifier.HasValue); + Assert.IsFalse(demonstrationProjectIdentifier.IsPresent); + + var carePlanOversight = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.CarePlanOversight) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(carePlanOversight != null); + Assert.IsFalse(carePlanOversight.HasValue); + Assert.IsFalse(carePlanOversight.IsPresent); + } + + [Test(Description = @"Condition : ServiceAuthorizationExceptionCode => 4N, + MandatoryMedicareCrossoverIndicator => F5, + MammographyCertificationNumber => EW, + ReferralNumber => 9F, + PriorAuthorization => G1, + PayerClaimControlNumber => F8, + CLIANumber => X4, + RepricedClaimNumber => 9A, + AdjustedRepricedClaimNumber => missing, + InvestigationalDeviceExemptionNumber => missing, + ClaimIdentifierForTransmissionIntermediaries => missing, + MedicalRecordNumber => missing, + DemonstrationProjectIdentifier => missing, + CarePlanOversight => missing")] + public void Test6() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*314*D8*20061109 +DTP*297*D8*20061109 +DTP*296*D8*20061109 +DTP*435*D8*20061109 +DTP*096*D8*20061109 +DTP*090*D8*20061109 +DTP*444*D8*20061109 +DTP*050*D8*20061109 +REF*4N*111222333444 +REF*F5*111222333444 +REF*EW*111222333444 +REF*9F*111222333444 +REF*G1*111222333444 +REF*F8*111222333444 +REF*X4*111222333444 +REF*9A*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var serviceAuthorizationExceptionCode = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceAuthorizationExceptionCode) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(serviceAuthorizationExceptionCode != null); + Assert.IsTrue(serviceAuthorizationExceptionCode.HasValue); + Assert.IsTrue(serviceAuthorizationExceptionCode.IsPresent); + Assert.AreEqual("4N", serviceAuthorizationExceptionCode.ValueOrDefault()); + + var mandatoryMedicareCrossoverIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MandatoryMedicareCrossoverIndicator) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(mandatoryMedicareCrossoverIndicator != null); + Assert.IsTrue(mandatoryMedicareCrossoverIndicator.HasValue); + Assert.IsTrue(mandatoryMedicareCrossoverIndicator.IsPresent); + Assert.AreEqual("F5", mandatoryMedicareCrossoverIndicator.ValueOrDefault()); + + var mammographyCertificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MammographyCertificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(mammographyCertificationNumber != null); + Assert.IsTrue(mammographyCertificationNumber.HasValue); + Assert.IsTrue(mammographyCertificationNumber.IsPresent); + Assert.AreEqual("EW", mammographyCertificationNumber.ValueOrDefault()); + + var referralNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ReferralNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(referralNumber != null); + Assert.IsTrue(referralNumber.HasValue); + Assert.IsTrue(referralNumber.IsPresent); + Assert.AreEqual("9F", referralNumber.ValueOrDefault()); + + var priorAuthorization = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PriorAuthorization) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(priorAuthorization != null); + Assert.IsTrue(priorAuthorization.HasValue); + Assert.IsTrue(priorAuthorization.IsPresent); + Assert.AreEqual("G1", priorAuthorization.ValueOrDefault()); + + var payerClaimControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PayerClaimControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(payerClaimControlNumber != null); + Assert.IsTrue(payerClaimControlNumber.HasValue); + Assert.IsTrue(payerClaimControlNumber.IsPresent); + Assert.AreEqual("F8", payerClaimControlNumber.ValueOrDefault()); + + var cliaNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.CLIANumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(cliaNumber != null); + Assert.IsTrue(cliaNumber.HasValue); + Assert.IsTrue(cliaNumber.IsPresent); + Assert.AreEqual("X4", cliaNumber.ValueOrDefault()); + + var repricedClaimNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricedClaimNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(repricedClaimNumber != null); + Assert.IsTrue(repricedClaimNumber.HasValue); + Assert.IsTrue(repricedClaimNumber.IsPresent); + Assert.AreEqual("9A", repricedClaimNumber.ValueOrDefault()); + + var adjustedRepricedClaimNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdjustedRepricedClaimNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(adjustedRepricedClaimNumber != null); + Assert.IsFalse(adjustedRepricedClaimNumber.HasValue); + Assert.IsFalse(adjustedRepricedClaimNumber.IsPresent); + + var investigationalDeviceExemptionNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InvestigationalDeviceExemptionNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(investigationalDeviceExemptionNumber != null); + Assert.IsFalse(investigationalDeviceExemptionNumber.HasValue); + Assert.IsFalse(investigationalDeviceExemptionNumber.IsPresent); + + var claimIdentifierForTransmissionIntermediaries = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ClaimIdentifierForTransmissionIntermediaries) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(claimIdentifierForTransmissionIntermediaries != null); + Assert.IsFalse(claimIdentifierForTransmissionIntermediaries.HasValue); + Assert.IsFalse(claimIdentifierForTransmissionIntermediaries.IsPresent); + + var medicalRecordNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MedicalRecordNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(medicalRecordNumber != null); + Assert.IsFalse(medicalRecordNumber.HasValue); + Assert.IsFalse(medicalRecordNumber.IsPresent); + + var demonstrationProjectIdentifier = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DemonstrationProjectIdentifier) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(demonstrationProjectIdentifier != null); + Assert.IsFalse(demonstrationProjectIdentifier.HasValue); + Assert.IsFalse(demonstrationProjectIdentifier.IsPresent); + + var carePlanOversight = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.CarePlanOversight) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(carePlanOversight != null); + Assert.IsFalse(carePlanOversight.HasValue); + Assert.IsFalse(carePlanOversight.IsPresent); + } + + [Test(Description = @"Condition : ServiceAuthorizationExceptionCode => 4N, + MandatoryMedicareCrossoverIndicator => F5, + MammographyCertificationNumber => EW, + ReferralNumber => 9F, + PriorAuthorization => G1, + PayerClaimControlNumber => F8, + CLIANumber => X4, + RepricedClaimNumber => missing, + AdjustedRepricedClaimNumber => missing, + InvestigationalDeviceExemptionNumber => missing, + ClaimIdentifierForTransmissionIntermediaries => missing, + MedicalRecordNumber => missing, + DemonstrationProjectIdentifier => missing, + CarePlanOversight => missing")] + public void Test7() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*314*D8*20061109 +DTP*297*D8*20061109 +DTP*296*D8*20061109 +DTP*435*D8*20061109 +DTP*096*D8*20061109 +DTP*090*D8*20061109 +DTP*444*D8*20061109 +DTP*050*D8*20061109 +REF*4N*111222333444 +REF*F5*111222333444 +REF*EW*111222333444 +REF*9F*111222333444 +REF*G1*111222333444 +REF*F8*111222333444 +REF*X4*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var serviceAuthorizationExceptionCode = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceAuthorizationExceptionCode) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(serviceAuthorizationExceptionCode != null); + Assert.IsTrue(serviceAuthorizationExceptionCode.HasValue); + Assert.IsTrue(serviceAuthorizationExceptionCode.IsPresent); + Assert.AreEqual("4N", serviceAuthorizationExceptionCode.ValueOrDefault()); + + var mandatoryMedicareCrossoverIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MandatoryMedicareCrossoverIndicator) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(mandatoryMedicareCrossoverIndicator != null); + Assert.IsTrue(mandatoryMedicareCrossoverIndicator.HasValue); + Assert.IsTrue(mandatoryMedicareCrossoverIndicator.IsPresent); + Assert.AreEqual("F5", mandatoryMedicareCrossoverIndicator.ValueOrDefault()); + + var mammographyCertificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MammographyCertificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(mammographyCertificationNumber != null); + Assert.IsTrue(mammographyCertificationNumber.HasValue); + Assert.IsTrue(mammographyCertificationNumber.IsPresent); + Assert.AreEqual("EW", mammographyCertificationNumber.ValueOrDefault()); + + var referralNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ReferralNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(referralNumber != null); + Assert.IsTrue(referralNumber.HasValue); + Assert.IsTrue(referralNumber.IsPresent); + Assert.AreEqual("9F", referralNumber.ValueOrDefault()); + + var priorAuthorization = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PriorAuthorization) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(priorAuthorization != null); + Assert.IsTrue(priorAuthorization.HasValue); + Assert.IsTrue(priorAuthorization.IsPresent); + Assert.AreEqual("G1", priorAuthorization.ValueOrDefault()); + + var payerClaimControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PayerClaimControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(payerClaimControlNumber != null); + Assert.IsTrue(payerClaimControlNumber.HasValue); + Assert.IsTrue(payerClaimControlNumber.IsPresent); + Assert.AreEqual("F8", payerClaimControlNumber.ValueOrDefault()); + + var cliaNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.CLIANumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(cliaNumber != null); + Assert.IsTrue(cliaNumber.HasValue); + Assert.IsTrue(cliaNumber.IsPresent); + Assert.AreEqual("X4", cliaNumber.ValueOrDefault()); + + var repricedClaimNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricedClaimNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(repricedClaimNumber != null); + Assert.IsFalse(repricedClaimNumber.HasValue); + Assert.IsFalse(repricedClaimNumber.IsPresent); + + var adjustedRepricedClaimNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdjustedRepricedClaimNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(adjustedRepricedClaimNumber != null); + Assert.IsFalse(adjustedRepricedClaimNumber.HasValue); + Assert.IsFalse(adjustedRepricedClaimNumber.IsPresent); + + var investigationalDeviceExemptionNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InvestigationalDeviceExemptionNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(investigationalDeviceExemptionNumber != null); + Assert.IsFalse(investigationalDeviceExemptionNumber.HasValue); + Assert.IsFalse(investigationalDeviceExemptionNumber.IsPresent); + + var claimIdentifierForTransmissionIntermediaries = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ClaimIdentifierForTransmissionIntermediaries) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(claimIdentifierForTransmissionIntermediaries != null); + Assert.IsFalse(claimIdentifierForTransmissionIntermediaries.HasValue); + Assert.IsFalse(claimIdentifierForTransmissionIntermediaries.IsPresent); + + var medicalRecordNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MedicalRecordNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(medicalRecordNumber != null); + Assert.IsFalse(medicalRecordNumber.HasValue); + Assert.IsFalse(medicalRecordNumber.IsPresent); + + var demonstrationProjectIdentifier = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DemonstrationProjectIdentifier) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(demonstrationProjectIdentifier != null); + Assert.IsFalse(demonstrationProjectIdentifier.HasValue); + Assert.IsFalse(demonstrationProjectIdentifier.IsPresent); + + var carePlanOversight = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.CarePlanOversight) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(carePlanOversight != null); + Assert.IsFalse(carePlanOversight.HasValue); + Assert.IsFalse(carePlanOversight.IsPresent); + } + + [Test(Description = @"Condition : ServiceAuthorizationExceptionCode => 4N, + MandatoryMedicareCrossoverIndicator => F5, + MammographyCertificationNumber => EW, + ReferralNumber => 9F, + PriorAuthorization => G1, + PayerClaimControlNumber => F8, + CLIANumber => missing, + RepricedClaimNumber => missing, + AdjustedRepricedClaimNumber => missing, + InvestigationalDeviceExemptionNumber => missing, + ClaimIdentifierForTransmissionIntermediaries => missing, + MedicalRecordNumber => missing, + DemonstrationProjectIdentifier => missing, + CarePlanOversight => missing")] + public void Test() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*314*D8*20061109 +DTP*297*D8*20061109 +DTP*296*D8*20061109 +DTP*435*D8*20061109 +DTP*096*D8*20061109 +DTP*090*D8*20061109 +DTP*444*D8*20061109 +DTP*050*D8*20061109 +REF*4N*111222333444 +REF*F5*111222333444 +REF*EW*111222333444 +REF*9F*111222333444 +REF*G1*111222333444 +REF*F8*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var serviceAuthorizationExceptionCode = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceAuthorizationExceptionCode) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(serviceAuthorizationExceptionCode != null); + Assert.IsTrue(serviceAuthorizationExceptionCode.HasValue); + Assert.IsTrue(serviceAuthorizationExceptionCode.IsPresent); + Assert.AreEqual("4N", serviceAuthorizationExceptionCode.ValueOrDefault()); + + var mandatoryMedicareCrossoverIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MandatoryMedicareCrossoverIndicator) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(mandatoryMedicareCrossoverIndicator != null); + Assert.IsTrue(mandatoryMedicareCrossoverIndicator.HasValue); + Assert.IsTrue(mandatoryMedicareCrossoverIndicator.IsPresent); + Assert.AreEqual("F5", mandatoryMedicareCrossoverIndicator.ValueOrDefault()); + + var mammographyCertificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MammographyCertificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(mammographyCertificationNumber != null); + Assert.IsTrue(mammographyCertificationNumber.HasValue); + Assert.IsTrue(mammographyCertificationNumber.IsPresent); + Assert.AreEqual("EW", mammographyCertificationNumber.ValueOrDefault()); + + var referralNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ReferralNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(referralNumber != null); + Assert.IsTrue(referralNumber.HasValue); + Assert.IsTrue(referralNumber.IsPresent); + Assert.AreEqual("9F", referralNumber.ValueOrDefault()); + + var priorAuthorization = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PriorAuthorization) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(priorAuthorization != null); + Assert.IsTrue(priorAuthorization.HasValue); + Assert.IsTrue(priorAuthorization.IsPresent); + Assert.AreEqual("G1", priorAuthorization.ValueOrDefault()); + + var payerClaimControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PayerClaimControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(payerClaimControlNumber != null); + Assert.IsTrue(payerClaimControlNumber.HasValue); + Assert.IsTrue(payerClaimControlNumber.IsPresent); + Assert.AreEqual("F8", payerClaimControlNumber.ValueOrDefault()); + + var cliaNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.CLIANumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(cliaNumber != null); + Assert.IsFalse(cliaNumber.HasValue); + Assert.IsFalse(cliaNumber.IsPresent); + + var repricedClaimNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricedClaimNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(repricedClaimNumber != null); + Assert.IsFalse(repricedClaimNumber.HasValue); + Assert.IsFalse(repricedClaimNumber.IsPresent); + + var adjustedRepricedClaimNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdjustedRepricedClaimNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(adjustedRepricedClaimNumber != null); + Assert.IsFalse(adjustedRepricedClaimNumber.HasValue); + Assert.IsFalse(adjustedRepricedClaimNumber.IsPresent); + + var investigationalDeviceExemptionNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InvestigationalDeviceExemptionNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(investigationalDeviceExemptionNumber != null); + Assert.IsFalse(investigationalDeviceExemptionNumber.HasValue); + Assert.IsFalse(investigationalDeviceExemptionNumber.IsPresent); + + var claimIdentifierForTransmissionIntermediaries = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ClaimIdentifierForTransmissionIntermediaries) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(claimIdentifierForTransmissionIntermediaries != null); + Assert.IsFalse(claimIdentifierForTransmissionIntermediaries.HasValue); + Assert.IsFalse(claimIdentifierForTransmissionIntermediaries.IsPresent); + + var medicalRecordNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MedicalRecordNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(medicalRecordNumber != null); + Assert.IsFalse(medicalRecordNumber.HasValue); + Assert.IsFalse(medicalRecordNumber.IsPresent); + + var demonstrationProjectIdentifier = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DemonstrationProjectIdentifier) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(demonstrationProjectIdentifier != null); + Assert.IsFalse(demonstrationProjectIdentifier.HasValue); + Assert.IsFalse(demonstrationProjectIdentifier.IsPresent); + + var carePlanOversight = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.CarePlanOversight) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(carePlanOversight != null); + Assert.IsFalse(carePlanOversight.HasValue); + Assert.IsFalse(carePlanOversight.IsPresent); + } + + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P11ConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P11ConditionalTests.cs new file mode 100644 index 000000000..914cd260f --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P11ConditionalTests.cs @@ -0,0 +1,1210 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing837ProfessionalL2300P11ConditionalTests : + X12MacheteTestHarness + { + [Test(Description = @"Condition : ServiceAuthorizationExceptionCode => 4N, + MandatoryMedicareCrossoverIndicator => F5, + MammographyCertificationNumber => EW, + ReferralNumber => 9F, + PriorAuthorization => G1, + PayerClaimControlNumber => missing, + CLIANumber => missing, + RepricedClaimNumber => missing, + AdjustedRepricedClaimNumber => missing, + InvestigationalDeviceExemptionNumber => missing, + ClaimIdentifierForTransmissionIntermediaries => missing, + MedicalRecordNumber => missing, + DemonstrationProjectIdentifier => missing, + CarePlanOversight => missing")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*314*D8*20061109 +DTP*297*D8*20061109 +DTP*296*D8*20061109 +DTP*435*D8*20061109 +DTP*096*D8*20061109 +DTP*090*D8*20061109 +DTP*444*D8*20061109 +DTP*050*D8*20061109 +REF*4N*111222333444 +REF*F5*111222333444 +REF*EW*111222333444 +REF*9F*111222333444 +REF*G1*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var serviceAuthorizationExceptionCode = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceAuthorizationExceptionCode) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(serviceAuthorizationExceptionCode != null); + Assert.IsTrue(serviceAuthorizationExceptionCode.HasValue); + Assert.IsTrue(serviceAuthorizationExceptionCode.IsPresent); + Assert.AreEqual("4N", serviceAuthorizationExceptionCode.ValueOrDefault()); + + var mandatoryMedicareCrossoverIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MandatoryMedicareCrossoverIndicator) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(mandatoryMedicareCrossoverIndicator != null); + Assert.IsTrue(mandatoryMedicareCrossoverIndicator.HasValue); + Assert.IsTrue(mandatoryMedicareCrossoverIndicator.IsPresent); + Assert.AreEqual("F5", mandatoryMedicareCrossoverIndicator.ValueOrDefault()); + + var mammographyCertificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MammographyCertificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(mammographyCertificationNumber != null); + Assert.IsTrue(mammographyCertificationNumber.HasValue); + Assert.IsTrue(mammographyCertificationNumber.IsPresent); + Assert.AreEqual("EW", mammographyCertificationNumber.ValueOrDefault()); + + var referralNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ReferralNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(referralNumber != null); + Assert.IsTrue(referralNumber.HasValue); + Assert.IsTrue(referralNumber.IsPresent); + Assert.AreEqual("9F", referralNumber.ValueOrDefault()); + + var priorAuthorization = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PriorAuthorization) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(priorAuthorization != null); + Assert.IsTrue(priorAuthorization.HasValue); + Assert.IsTrue(priorAuthorization.IsPresent); + Assert.AreEqual("G1", priorAuthorization.ValueOrDefault()); + + var payerClaimControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PayerClaimControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(payerClaimControlNumber != null); + Assert.IsFalse(payerClaimControlNumber.HasValue); + Assert.IsFalse(payerClaimControlNumber.IsPresent); + + var cliaNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.CLIANumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(cliaNumber != null); + Assert.IsFalse(cliaNumber.HasValue); + Assert.IsFalse(cliaNumber.IsPresent); + + var repricedClaimNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricedClaimNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(repricedClaimNumber != null); + Assert.IsFalse(repricedClaimNumber.HasValue); + Assert.IsFalse(repricedClaimNumber.IsPresent); + + var adjustedRepricedClaimNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdjustedRepricedClaimNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(adjustedRepricedClaimNumber != null); + Assert.IsFalse(adjustedRepricedClaimNumber.HasValue); + Assert.IsFalse(adjustedRepricedClaimNumber.IsPresent); + + var investigationalDeviceExemptionNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InvestigationalDeviceExemptionNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(investigationalDeviceExemptionNumber != null); + Assert.IsFalse(investigationalDeviceExemptionNumber.HasValue); + Assert.IsFalse(investigationalDeviceExemptionNumber.IsPresent); + + var claimIdentifierForTransmissionIntermediaries = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ClaimIdentifierForTransmissionIntermediaries) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(claimIdentifierForTransmissionIntermediaries != null); + Assert.IsFalse(claimIdentifierForTransmissionIntermediaries.HasValue); + Assert.IsFalse(claimIdentifierForTransmissionIntermediaries.IsPresent); + + var medicalRecordNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MedicalRecordNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(medicalRecordNumber != null); + Assert.IsFalse(medicalRecordNumber.HasValue); + Assert.IsFalse(medicalRecordNumber.IsPresent); + + var demonstrationProjectIdentifier = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DemonstrationProjectIdentifier) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(demonstrationProjectIdentifier != null); + Assert.IsFalse(demonstrationProjectIdentifier.HasValue); + Assert.IsFalse(demonstrationProjectIdentifier.IsPresent); + + var carePlanOversight = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.CarePlanOversight) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(carePlanOversight != null); + Assert.IsFalse(carePlanOversight.HasValue); + Assert.IsFalse(carePlanOversight.IsPresent); + } + + [Test(Description = @"Condition : ServiceAuthorizationExceptionCode => 4N, + MandatoryMedicareCrossoverIndicator => F5, + MammographyCertificationNumber => EW, + ReferralNumber => 9F, + PriorAuthorization => missing, + PayerClaimControlNumber => missing, + CLIANumber => missing, + RepricedClaimNumber => missing, + AdjustedRepricedClaimNumber => missing, + InvestigationalDeviceExemptionNumber => missing, + ClaimIdentifierForTransmissionIntermediaries => missing, + MedicalRecordNumber => missing, + DemonstrationProjectIdentifier => missing, + CarePlanOversight => missing")] + public void Test2() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*314*D8*20061109 +DTP*297*D8*20061109 +DTP*296*D8*20061109 +DTP*435*D8*20061109 +DTP*096*D8*20061109 +DTP*090*D8*20061109 +DTP*444*D8*20061109 +DTP*050*D8*20061109 +REF*4N*111222333444 +REF*F5*111222333444 +REF*EW*111222333444 +REF*9F*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var serviceAuthorizationExceptionCode = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceAuthorizationExceptionCode) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(serviceAuthorizationExceptionCode != null); + Assert.IsTrue(serviceAuthorizationExceptionCode.HasValue); + Assert.IsTrue(serviceAuthorizationExceptionCode.IsPresent); + Assert.AreEqual("4N", serviceAuthorizationExceptionCode.ValueOrDefault()); + + var mandatoryMedicareCrossoverIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MandatoryMedicareCrossoverIndicator) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(mandatoryMedicareCrossoverIndicator != null); + Assert.IsTrue(mandatoryMedicareCrossoverIndicator.HasValue); + Assert.IsTrue(mandatoryMedicareCrossoverIndicator.IsPresent); + Assert.AreEqual("F5", mandatoryMedicareCrossoverIndicator.ValueOrDefault()); + + var mammographyCertificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MammographyCertificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(mammographyCertificationNumber != null); + Assert.IsTrue(mammographyCertificationNumber.HasValue); + Assert.IsTrue(mammographyCertificationNumber.IsPresent); + Assert.AreEqual("EW", mammographyCertificationNumber.ValueOrDefault()); + + var referralNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ReferralNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(referralNumber != null); + Assert.IsTrue(referralNumber.HasValue); + Assert.IsTrue(referralNumber.IsPresent); + Assert.AreEqual("9F", referralNumber.ValueOrDefault()); + + var priorAuthorization = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PriorAuthorization) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(priorAuthorization != null); + Assert.IsFalse(priorAuthorization.HasValue); + Assert.IsFalse(priorAuthorization.IsPresent); + + var payerClaimControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PayerClaimControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(payerClaimControlNumber != null); + Assert.IsFalse(payerClaimControlNumber.HasValue); + Assert.IsFalse(payerClaimControlNumber.IsPresent); + + var cliaNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.CLIANumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(cliaNumber != null); + Assert.IsFalse(cliaNumber.HasValue); + Assert.IsFalse(cliaNumber.IsPresent); + + var repricedClaimNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricedClaimNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(repricedClaimNumber != null); + Assert.IsFalse(repricedClaimNumber.HasValue); + Assert.IsFalse(repricedClaimNumber.IsPresent); + + var adjustedRepricedClaimNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdjustedRepricedClaimNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(adjustedRepricedClaimNumber != null); + Assert.IsFalse(adjustedRepricedClaimNumber.HasValue); + Assert.IsFalse(adjustedRepricedClaimNumber.IsPresent); + + var investigationalDeviceExemptionNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InvestigationalDeviceExemptionNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(investigationalDeviceExemptionNumber != null); + Assert.IsFalse(investigationalDeviceExemptionNumber.HasValue); + Assert.IsFalse(investigationalDeviceExemptionNumber.IsPresent); + + var claimIdentifierForTransmissionIntermediaries = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ClaimIdentifierForTransmissionIntermediaries) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(claimIdentifierForTransmissionIntermediaries != null); + Assert.IsFalse(claimIdentifierForTransmissionIntermediaries.HasValue); + Assert.IsFalse(claimIdentifierForTransmissionIntermediaries.IsPresent); + + var medicalRecordNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MedicalRecordNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(medicalRecordNumber != null); + Assert.IsFalse(medicalRecordNumber.HasValue); + Assert.IsFalse(medicalRecordNumber.IsPresent); + + var demonstrationProjectIdentifier = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DemonstrationProjectIdentifier) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(demonstrationProjectIdentifier != null); + Assert.IsFalse(demonstrationProjectIdentifier.HasValue); + Assert.IsFalse(demonstrationProjectIdentifier.IsPresent); + + var carePlanOversight = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.CarePlanOversight) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(carePlanOversight != null); + Assert.IsFalse(carePlanOversight.HasValue); + Assert.IsFalse(carePlanOversight.IsPresent); + } + + [Test(Description = @"Condition : ServiceAuthorizationExceptionCode => 4N, + MandatoryMedicareCrossoverIndicator => F5, + MammographyCertificationNumber => EW, + ReferralNumber => missing, + PriorAuthorization => missing, + PayerClaimControlNumber => missing, + CLIANumber => missing, + RepricedClaimNumber => missing, + AdjustedRepricedClaimNumber => missing, + InvestigationalDeviceExemptionNumber => missing, + ClaimIdentifierForTransmissionIntermediaries => missing, + MedicalRecordNumber => missing, + DemonstrationProjectIdentifier => missing, + CarePlanOversight => missing")] + public void Test3() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*314*D8*20061109 +DTP*297*D8*20061109 +DTP*296*D8*20061109 +DTP*435*D8*20061109 +DTP*096*D8*20061109 +DTP*090*D8*20061109 +DTP*444*D8*20061109 +DTP*050*D8*20061109 +REF*4N*111222333444 +REF*F5*111222333444 +REF*EW*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var serviceAuthorizationExceptionCode = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceAuthorizationExceptionCode) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(serviceAuthorizationExceptionCode != null); + Assert.IsTrue(serviceAuthorizationExceptionCode.HasValue); + Assert.IsTrue(serviceAuthorizationExceptionCode.IsPresent); + Assert.AreEqual("4N", serviceAuthorizationExceptionCode.ValueOrDefault()); + + var mandatoryMedicareCrossoverIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MandatoryMedicareCrossoverIndicator) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(mandatoryMedicareCrossoverIndicator != null); + Assert.IsTrue(mandatoryMedicareCrossoverIndicator.HasValue); + Assert.IsTrue(mandatoryMedicareCrossoverIndicator.IsPresent); + Assert.AreEqual("F5", mandatoryMedicareCrossoverIndicator.ValueOrDefault()); + + var mammographyCertificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MammographyCertificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(mammographyCertificationNumber != null); + Assert.IsTrue(mammographyCertificationNumber.HasValue); + Assert.IsTrue(mammographyCertificationNumber.IsPresent); + Assert.AreEqual("EW", mammographyCertificationNumber.ValueOrDefault()); + + var referralNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ReferralNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(referralNumber != null); + Assert.IsFalse(referralNumber.HasValue); + Assert.IsFalse(referralNumber.IsPresent); + + var priorAuthorization = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PriorAuthorization) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(priorAuthorization != null); + Assert.IsFalse(priorAuthorization.HasValue); + Assert.IsFalse(priorAuthorization.IsPresent); + + var payerClaimControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PayerClaimControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(payerClaimControlNumber != null); + Assert.IsFalse(payerClaimControlNumber.HasValue); + Assert.IsFalse(payerClaimControlNumber.IsPresent); + + var cliaNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.CLIANumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(cliaNumber != null); + Assert.IsFalse(cliaNumber.HasValue); + Assert.IsFalse(cliaNumber.IsPresent); + + var repricedClaimNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricedClaimNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(repricedClaimNumber != null); + Assert.IsFalse(repricedClaimNumber.HasValue); + Assert.IsFalse(repricedClaimNumber.IsPresent); + + var adjustedRepricedClaimNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdjustedRepricedClaimNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(adjustedRepricedClaimNumber != null); + Assert.IsFalse(adjustedRepricedClaimNumber.HasValue); + Assert.IsFalse(adjustedRepricedClaimNumber.IsPresent); + + var investigationalDeviceExemptionNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InvestigationalDeviceExemptionNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(investigationalDeviceExemptionNumber != null); + Assert.IsFalse(investigationalDeviceExemptionNumber.HasValue); + Assert.IsFalse(investigationalDeviceExemptionNumber.IsPresent); + + var claimIdentifierForTransmissionIntermediaries = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ClaimIdentifierForTransmissionIntermediaries) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(claimIdentifierForTransmissionIntermediaries != null); + Assert.IsFalse(claimIdentifierForTransmissionIntermediaries.HasValue); + Assert.IsFalse(claimIdentifierForTransmissionIntermediaries.IsPresent); + + var medicalRecordNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MedicalRecordNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(medicalRecordNumber != null); + Assert.IsFalse(medicalRecordNumber.HasValue); + Assert.IsFalse(medicalRecordNumber.IsPresent); + + var demonstrationProjectIdentifier = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DemonstrationProjectIdentifier) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(demonstrationProjectIdentifier != null); + Assert.IsFalse(demonstrationProjectIdentifier.HasValue); + Assert.IsFalse(demonstrationProjectIdentifier.IsPresent); + + var carePlanOversight = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.CarePlanOversight) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(carePlanOversight != null); + Assert.IsFalse(carePlanOversight.HasValue); + Assert.IsFalse(carePlanOversight.IsPresent); + } + + [Test(Description = @"Condition : ServiceAuthorizationExceptionCode => 4N, + MandatoryMedicareCrossoverIndicator => F5, + MammographyCertificationNumber => missing, + ReferralNumber => missing, + PriorAuthorization => missing, + PayerClaimControlNumber => missing, + CLIANumber => missing, + RepricedClaimNumber => missing, + AdjustedRepricedClaimNumber => missing, + InvestigationalDeviceExemptionNumber => missing, + ClaimIdentifierForTransmissionIntermediaries => missing, + MedicalRecordNumber => missing, + DemonstrationProjectIdentifier => missing, + CarePlanOversight => missing")] + public void Test4() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*314*D8*20061109 +DTP*297*D8*20061109 +DTP*296*D8*20061109 +DTP*435*D8*20061109 +DTP*096*D8*20061109 +DTP*090*D8*20061109 +DTP*444*D8*20061109 +DTP*050*D8*20061109 +REF*4N*111222333444 +REF*F5*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var serviceAuthorizationExceptionCode = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceAuthorizationExceptionCode) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(serviceAuthorizationExceptionCode != null); + Assert.IsTrue(serviceAuthorizationExceptionCode.HasValue); + Assert.IsTrue(serviceAuthorizationExceptionCode.IsPresent); + Assert.AreEqual("4N", serviceAuthorizationExceptionCode.ValueOrDefault()); + + var mandatoryMedicareCrossoverIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MandatoryMedicareCrossoverIndicator) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(mandatoryMedicareCrossoverIndicator != null); + Assert.IsTrue(mandatoryMedicareCrossoverIndicator.HasValue); + Assert.IsTrue(mandatoryMedicareCrossoverIndicator.IsPresent); + Assert.AreEqual("F5", mandatoryMedicareCrossoverIndicator.ValueOrDefault()); + + var mammographyCertificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MammographyCertificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(mammographyCertificationNumber != null); + Assert.IsFalse(mammographyCertificationNumber.HasValue); + Assert.IsFalse(mammographyCertificationNumber.IsPresent); + + var referralNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ReferralNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(referralNumber != null); + Assert.IsFalse(referralNumber.HasValue); + Assert.IsFalse(referralNumber.IsPresent); + + var priorAuthorization = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PriorAuthorization) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(priorAuthorization != null); + Assert.IsFalse(priorAuthorization.HasValue); + Assert.IsFalse(priorAuthorization.IsPresent); + + var payerClaimControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PayerClaimControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(payerClaimControlNumber != null); + Assert.IsFalse(payerClaimControlNumber.HasValue); + Assert.IsFalse(payerClaimControlNumber.IsPresent); + + var cliaNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.CLIANumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(cliaNumber != null); + Assert.IsFalse(cliaNumber.HasValue); + Assert.IsFalse(cliaNumber.IsPresent); + + var repricedClaimNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricedClaimNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(repricedClaimNumber != null); + Assert.IsFalse(repricedClaimNumber.HasValue); + Assert.IsFalse(repricedClaimNumber.IsPresent); + + var adjustedRepricedClaimNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdjustedRepricedClaimNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(adjustedRepricedClaimNumber != null); + Assert.IsFalse(adjustedRepricedClaimNumber.HasValue); + Assert.IsFalse(adjustedRepricedClaimNumber.IsPresent); + + var investigationalDeviceExemptionNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InvestigationalDeviceExemptionNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(investigationalDeviceExemptionNumber != null); + Assert.IsFalse(investigationalDeviceExemptionNumber.HasValue); + Assert.IsFalse(investigationalDeviceExemptionNumber.IsPresent); + + var claimIdentifierForTransmissionIntermediaries = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ClaimIdentifierForTransmissionIntermediaries) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(claimIdentifierForTransmissionIntermediaries != null); + Assert.IsFalse(claimIdentifierForTransmissionIntermediaries.HasValue); + Assert.IsFalse(claimIdentifierForTransmissionIntermediaries.IsPresent); + + var medicalRecordNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MedicalRecordNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(medicalRecordNumber != null); + Assert.IsFalse(medicalRecordNumber.HasValue); + Assert.IsFalse(medicalRecordNumber.IsPresent); + + var demonstrationProjectIdentifier = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DemonstrationProjectIdentifier) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(demonstrationProjectIdentifier != null); + Assert.IsFalse(demonstrationProjectIdentifier.HasValue); + Assert.IsFalse(demonstrationProjectIdentifier.IsPresent); + + var carePlanOversight = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.CarePlanOversight) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(carePlanOversight != null); + Assert.IsFalse(carePlanOversight.HasValue); + Assert.IsFalse(carePlanOversight.IsPresent); + } + + [Test(Description = @"Condition : ServiceAuthorizationExceptionCode => missing, + MandatoryMedicareCrossoverIndicator => missing, + MammographyCertificationNumber => missing, + ReferralNumber => missing, + PriorAuthorization => missing, + PayerClaimControlNumber => missing, + CLIANumber => missing, + RepricedClaimNumber => missing, + AdjustedRepricedClaimNumber => missing, + InvestigationalDeviceExemptionNumber => missing, + ClaimIdentifierForTransmissionIntermediaries => missing, + MedicalRecordNumber => missing, + DemonstrationProjectIdentifier => missing, + CarePlanOversight => missing")] + public void Test5() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*314*D8*20061109 +DTP*297*D8*20061109 +DTP*296*D8*20061109 +DTP*435*D8*20061109 +DTP*096*D8*20061109 +DTP*090*D8*20061109 +DTP*444*D8*20061109 +DTP*050*D8*20061109 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var serviceAuthorizationExceptionCode = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceAuthorizationExceptionCode) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(serviceAuthorizationExceptionCode != null); + Assert.IsFalse(serviceAuthorizationExceptionCode.HasValue); + Assert.IsFalse(serviceAuthorizationExceptionCode.IsPresent); + + var mandatoryMedicareCrossoverIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MandatoryMedicareCrossoverIndicator) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(mandatoryMedicareCrossoverIndicator != null); + Assert.IsFalse(mandatoryMedicareCrossoverIndicator.HasValue); + Assert.IsFalse(mandatoryMedicareCrossoverIndicator.IsPresent); + + var mammographyCertificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MammographyCertificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(mammographyCertificationNumber != null); + Assert.IsFalse(mammographyCertificationNumber.HasValue); + Assert.IsFalse(mammographyCertificationNumber.IsPresent); + + var referralNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ReferralNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(referralNumber != null); + Assert.IsFalse(referralNumber.HasValue); + Assert.IsFalse(referralNumber.IsPresent); + + var priorAuthorization = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PriorAuthorization) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(priorAuthorization != null); + Assert.IsFalse(priorAuthorization.HasValue); + Assert.IsFalse(priorAuthorization.IsPresent); + + var payerClaimControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PayerClaimControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(payerClaimControlNumber != null); + Assert.IsFalse(payerClaimControlNumber.HasValue); + Assert.IsFalse(payerClaimControlNumber.IsPresent); + + var cliaNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.CLIANumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(cliaNumber != null); + Assert.IsFalse(cliaNumber.HasValue); + Assert.IsFalse(cliaNumber.IsPresent); + + var repricedClaimNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricedClaimNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(repricedClaimNumber != null); + Assert.IsFalse(repricedClaimNumber.HasValue); + Assert.IsFalse(repricedClaimNumber.IsPresent); + + var adjustedRepricedClaimNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdjustedRepricedClaimNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(adjustedRepricedClaimNumber != null); + Assert.IsFalse(adjustedRepricedClaimNumber.HasValue); + Assert.IsFalse(adjustedRepricedClaimNumber.IsPresent); + + var investigationalDeviceExemptionNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InvestigationalDeviceExemptionNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(investigationalDeviceExemptionNumber != null); + Assert.IsFalse(investigationalDeviceExemptionNumber.HasValue); + Assert.IsFalse(investigationalDeviceExemptionNumber.IsPresent); + + var claimIdentifierForTransmissionIntermediaries = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ClaimIdentifierForTransmissionIntermediaries) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(claimIdentifierForTransmissionIntermediaries != null); + Assert.IsFalse(claimIdentifierForTransmissionIntermediaries.HasValue); + Assert.IsFalse(claimIdentifierForTransmissionIntermediaries.IsPresent); + + var medicalRecordNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.MedicalRecordNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(medicalRecordNumber != null); + Assert.IsFalse(medicalRecordNumber.HasValue); + Assert.IsFalse(medicalRecordNumber.IsPresent); + + var demonstrationProjectIdentifier = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DemonstrationProjectIdentifier) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(demonstrationProjectIdentifier != null); + Assert.IsFalse(demonstrationProjectIdentifier.HasValue); + Assert.IsFalse(demonstrationProjectIdentifier.IsPresent); + + var carePlanOversight = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.CarePlanOversight) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(carePlanOversight != null); + Assert.IsFalse(carePlanOversight.HasValue); + Assert.IsFalse(carePlanOversight.IsPresent); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P12ConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P12ConditionalTests.cs new file mode 100644 index 000000000..7ea011161 --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P12ConditionalTests.cs @@ -0,0 +1,854 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing837ProfessionalL2300P12ConditionalTests : + X12MacheteTestHarness + { + [Test(Description = @"Condition : HealthCareDiagnosisCode => ABK, + AnesthesiaRelatedProcedure => BP, + ConditionInfo => BG"), Explicit("Issue #65")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var healthCareDiagnosisCode = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HealthCareDiagnosisCode) + .Select(x => x.HealthCareCodeInformation1) + .Select(x => x.DiagnosisTypeCode); + + Assume.That(healthCareDiagnosisCode != null); + Assert.IsTrue(healthCareDiagnosisCode.HasValue); + Assert.IsTrue(healthCareDiagnosisCode.IsPresent); + Assert.AreEqual("ABK", healthCareDiagnosisCode.ValueOrDefault()); + + var anesthesiaRelatedProcedure = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AnesthesiaRelatedProcedure) + .Select(x => x.HealthCareCodeInformation1) + .Select(x => x.DiagnosisTypeCode); + + Assume.That(anesthesiaRelatedProcedure != null); + Assert.IsTrue(anesthesiaRelatedProcedure.HasValue); + Assert.IsTrue(anesthesiaRelatedProcedure.IsPresent); + Assert.AreEqual("BP", anesthesiaRelatedProcedure.ValueOrDefault()); + + var conditionInfo = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ConditionInfo)[0] + .Select(x => x.HealthCareCodeInformation1) + .Select(x => x.DiagnosisTypeCode); + + Assume.That(conditionInfo != null); + Assert.IsTrue(conditionInfo.HasValue); + Assert.IsTrue(conditionInfo.IsPresent); + Assert.AreEqual("BG", conditionInfo.ValueOrDefault()); + } + + [Test(Description = @"Condition : HealthCareDiagnosisCode => ABK, + AnesthesiaRelatedProcedure => missing, + ConditionInfo => missing"), Explicit("Issue #65")] + public void Test2() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var healthCareDiagnosisCode = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HealthCareDiagnosisCode) + .Select(x => x.HealthCareCodeInformation1) + .Select(x => x.DiagnosisTypeCode); + + Assume.That(healthCareDiagnosisCode != null); + Assert.IsTrue(healthCareDiagnosisCode.HasValue); + Assert.IsTrue(healthCareDiagnosisCode.IsPresent); + Assert.AreEqual("ABK", healthCareDiagnosisCode.ValueOrDefault()); + + var anesthesiaRelatedProcedure = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AnesthesiaRelatedProcedure) + .Select(x => x.HealthCareCodeInformation1) + .Select(x => x.DiagnosisTypeCode); + + Assume.That(anesthesiaRelatedProcedure != null); + Assert.IsFalse(anesthesiaRelatedProcedure.HasValue); + Assert.IsFalse(anesthesiaRelatedProcedure.IsPresent); + + var conditionInfo = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ConditionInfo)[0] + .Select(x => x.HealthCareCodeInformation1) + .Select(x => x.DiagnosisTypeCode); + + Assume.That(conditionInfo != null); + Assert.IsFalse(conditionInfo.HasValue); + Assert.IsFalse(conditionInfo.IsPresent); + } + + [Test(Description = @"Condition : HealthCareDiagnosisCode => BK, + AnesthesiaRelatedProcedure => missing, + ConditionInfo => missing"), Explicit("Issue #65")] + public void Test3() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽BK:8901✽BF:87200✽BF:5559 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var healthCareDiagnosisCode = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HealthCareDiagnosisCode) + .Select(x => x.HealthCareCodeInformation1) + .Select(x => x.DiagnosisTypeCode); + + Assume.That(healthCareDiagnosisCode != null); + Assert.IsTrue(healthCareDiagnosisCode.HasValue); + Assert.IsTrue(healthCareDiagnosisCode.IsPresent); + Assert.AreEqual("BK", healthCareDiagnosisCode.ValueOrDefault()); + + var anesthesiaRelatedProcedure = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AnesthesiaRelatedProcedure) + .Select(x => x.HealthCareCodeInformation1) + .Select(x => x.DiagnosisTypeCode); + + Assume.That(anesthesiaRelatedProcedure != null); + Assert.IsFalse(anesthesiaRelatedProcedure.HasValue); + Assert.IsFalse(anesthesiaRelatedProcedure.IsPresent); + + var conditionInfo = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ConditionInfo)[0] + .Select(x => x.HealthCareCodeInformation1) + .Select(x => x.DiagnosisTypeCode); + + Assume.That(conditionInfo != null); + Assert.IsFalse(conditionInfo.HasValue); + Assert.IsFalse(conditionInfo.IsPresent); + } + + [Test(Description = @"Condition : HealthCareDiagnosisCode => BK, + AnesthesiaRelatedProcedure => missing, + ConditionInfo => BG"), Explicit("Issue #65")] + public void Test4() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽BK:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var healthCareDiagnosisCode = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HealthCareDiagnosisCode) + .Select(x => x.HealthCareCodeInformation1) + .Select(x => x.DiagnosisTypeCode); + + Assume.That(healthCareDiagnosisCode != null); + Assert.IsTrue(healthCareDiagnosisCode.HasValue); + Assert.IsTrue(healthCareDiagnosisCode.IsPresent); + Assert.AreEqual("BK", healthCareDiagnosisCode.ValueOrDefault()); + + var anesthesiaRelatedProcedure = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AnesthesiaRelatedProcedure) + .Select(x => x.HealthCareCodeInformation1) + .Select(x => x.DiagnosisTypeCode); + + Assume.That(anesthesiaRelatedProcedure != null); + Assert.IsFalse(anesthesiaRelatedProcedure.HasValue); + Assert.IsFalse(anesthesiaRelatedProcedure.IsPresent); + + var conditionInfo = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ConditionInfo)[0] + .Select(x => x.HealthCareCodeInformation1) + .Select(x => x.DiagnosisTypeCode); + + Assume.That(conditionInfo != null); + Assert.IsTrue(conditionInfo.HasValue); + Assert.IsTrue(conditionInfo.IsPresent); + Assert.AreEqual("BG", conditionInfo.ValueOrDefault()); + } + + [Test(Description = @"Condition : HealthCareDiagnosisCode => ABK, + AnesthesiaRelatedProcedure => missing, + ConditionInfo => BG"), Explicit("Issue #65")] + public void Test5() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var healthCareDiagnosisCode = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HealthCareDiagnosisCode) + .Select(x => x.HealthCareCodeInformation1) + .Select(x => x.DiagnosisTypeCode); + + Assume.That(healthCareDiagnosisCode != null); + Assert.IsTrue(healthCareDiagnosisCode.HasValue); + Assert.IsTrue(healthCareDiagnosisCode.IsPresent); + Assert.AreEqual("ABK", healthCareDiagnosisCode.ValueOrDefault()); + + var anesthesiaRelatedProcedure = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AnesthesiaRelatedProcedure) + .Select(x => x.HealthCareCodeInformation1) + .Select(x => x.DiagnosisTypeCode); + + Assume.That(anesthesiaRelatedProcedure != null); + Assert.IsFalse(anesthesiaRelatedProcedure.HasValue); + Assert.IsFalse(anesthesiaRelatedProcedure.IsPresent); + + var conditionInfo = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ConditionInfo)[0] + .Select(x => x.HealthCareCodeInformation1) + .Select(x => x.DiagnosisTypeCode); + + Assume.That(conditionInfo != null); + Assert.IsTrue(conditionInfo.HasValue); + Assert.IsTrue(conditionInfo.IsPresent); + Assert.AreEqual("BG", conditionInfo.ValueOrDefault()); + } + + [Test(Description = @"Condition : HealthCareDiagnosisCode => BK, + AnesthesiaRelatedProcedure => BP, + ConditionInfo => missing"), Explicit("Issue #65")] + public void Test6() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽BK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var healthCareDiagnosisCode = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HealthCareDiagnosisCode) + .Select(x => x.HealthCareCodeInformation1) + .Select(x => x.DiagnosisTypeCode); + + Assume.That(healthCareDiagnosisCode != null); + Assert.IsTrue(healthCareDiagnosisCode.HasValue); + Assert.IsTrue(healthCareDiagnosisCode.IsPresent); + Assert.AreEqual("BK", healthCareDiagnosisCode.ValueOrDefault()); + + var anesthesiaRelatedProcedure = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AnesthesiaRelatedProcedure) + .Select(x => x.HealthCareCodeInformation1) + .Select(x => x.DiagnosisTypeCode); + + Assume.That(anesthesiaRelatedProcedure != null); + Assert.IsTrue(anesthesiaRelatedProcedure.HasValue); + Assert.IsTrue(anesthesiaRelatedProcedure.IsPresent); + Assert.AreEqual("BP", anesthesiaRelatedProcedure.ValueOrDefault()); + + var conditionInfo = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ConditionInfo)[0] + .Select(x => x.HealthCareCodeInformation1) + .Select(x => x.DiagnosisTypeCode); + + Assume.That(conditionInfo != null); + Assert.IsFalse(conditionInfo.HasValue); + Assert.IsFalse(conditionInfo.IsPresent); + } + + [Test(Description = @"Condition : HealthCareDiagnosisCode => ABK, + AnesthesiaRelatedProcedure => BP, + ConditionInfo => missing"), Explicit("Issue #65")] + public void Test7() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var healthCareDiagnosisCode = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HealthCareDiagnosisCode) + .Select(x => x.HealthCareCodeInformation1) + .Select(x => x.DiagnosisTypeCode); + + Assume.That(healthCareDiagnosisCode != null); + Assert.IsTrue(healthCareDiagnosisCode.HasValue); + Assert.IsTrue(healthCareDiagnosisCode.IsPresent); + Assert.AreEqual("ABK", healthCareDiagnosisCode.ValueOrDefault()); + + var anesthesiaRelatedProcedure = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AnesthesiaRelatedProcedure) + .Select(x => x.HealthCareCodeInformation1) + .Select(x => x.DiagnosisTypeCode); + + Assume.That(anesthesiaRelatedProcedure != null); + Assert.IsTrue(anesthesiaRelatedProcedure.HasValue); + Assert.IsTrue(anesthesiaRelatedProcedure.IsPresent); + Assert.AreEqual("BP", anesthesiaRelatedProcedure.ValueOrDefault()); + + var conditionInfo = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ConditionInfo)[0] + .Select(x => x.HealthCareCodeInformation1) + .Select(x => x.DiagnosisTypeCode); + + Assume.That(conditionInfo != null); + Assert.IsFalse(conditionInfo.HasValue); + Assert.IsFalse(conditionInfo.IsPresent); + } + + [Test(Description = @"Condition : HealthCareDiagnosisCode => missing, + AnesthesiaRelatedProcedure => missing, + ConditionInfo => missing")] + public void Test8() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var healthCareDiagnosisCode = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HealthCareDiagnosisCode) + .Select(x => x.HealthCareCodeInformation1) + .Select(x => x.DiagnosisTypeCode); + + Assume.That(healthCareDiagnosisCode != null); + Assert.IsFalse(healthCareDiagnosisCode.HasValue); + Assert.IsFalse(healthCareDiagnosisCode.IsPresent); + + var anesthesiaRelatedProcedure = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AnesthesiaRelatedProcedure) + .Select(x => x.HealthCareCodeInformation1) + .Select(x => x.DiagnosisTypeCode); + + Assume.That(anesthesiaRelatedProcedure != null); + Assert.IsFalse(anesthesiaRelatedProcedure.HasValue); + Assert.IsFalse(anesthesiaRelatedProcedure.IsPresent); + + var conditionInfo = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ConditionInfo)[0] + .Select(x => x.HealthCareCodeInformation1) + .Select(x => x.DiagnosisTypeCode); + + Assume.That(conditionInfo != null); + Assert.IsFalse(conditionInfo.HasValue); + Assert.IsFalse(conditionInfo.IsPresent); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P13ConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P13ConditionalTests.cs new file mode 100644 index 000000000..975d9dbe4 --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P13ConditionalTests.cs @@ -0,0 +1,1590 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing837ProfessionalL2300P13ConditionalTests : + X12MacheteTestHarness + { + [Test(Description = @"Condition : AmbulanceCertification => 07, + PatientConditionInfo => E1, + HomeboundIndicator => 75, + EPSDTReferral => ZZ"), Explicit("Issue #65")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +CRC✽07✽Y✽65 +CRC✽E1✽Y✽65 +CRC✽75✽Y✽65 +CRC✽ZZ✽Y✽65 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var ambulanceCertification = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AmbulanceCertification)[0] + .Select(x => x.CodeCategory); + + Assume.That(ambulanceCertification != null); + Assert.IsTrue(ambulanceCertification.HasValue); + Assert.IsTrue(ambulanceCertification.IsPresent); + Assert.AreEqual("07", ambulanceCertification.ValueOrDefault()); + + var patientConditionInfo = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PatientConditionInfo)[0] + .Select(x => x.CodeCategory); + + Assume.That(patientConditionInfo != null); + Assert.IsTrue(patientConditionInfo.HasValue); + Assert.IsTrue(patientConditionInfo.IsPresent); + Assert.AreEqual("E1", patientConditionInfo.ValueOrDefault()); + + var homeboundIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HomeboundIndicator) + .Select(x => x.CodeCategory); + + Assume.That(homeboundIndicator != null); + Assert.IsTrue(homeboundIndicator.HasValue); + Assert.IsTrue(homeboundIndicator.IsPresent); + Assert.AreEqual("75", homeboundIndicator.ValueOrDefault()); + + var epsdtReferral = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.EPSDTReferral) + .Select(x => x.CodeCategory); + + Assume.That(epsdtReferral != null); + Assert.IsTrue(epsdtReferral.HasValue); + Assert.IsTrue(epsdtReferral.IsPresent); + Assert.AreEqual("ZZ", epsdtReferral.ValueOrDefault()); + } + + [Test(Description = @"Condition : AmbulanceCertification => [07], + PatientConditionInfo => missing, + HomeboundIndicator => missing, + EPSDTReferral => missing"), Explicit("Issue #65")] + public void Test2() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +CRC✽07✽Y✽65 +CRC✽07✽Y✽65 +CRC✽07✽Y✽65 +CRC✽07✽Y✽65 +CRC✽07✽Y✽65 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + for (int i = 0;; i++) + { + if (!transactions.Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AmbulanceCertification) + .TryGetValue(i, out Segment segment)) + break; + + var ambulanceCertification = segment.Select(x => x.CodeCategory); + + Assume.That(ambulanceCertification != null); + Assert.IsTrue(ambulanceCertification.HasValue); + Assert.IsTrue(ambulanceCertification.IsPresent); + Assert.AreEqual("07", ambulanceCertification.ValueOrDefault()); + } + + var patientConditionInfo = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PatientConditionInfo)[0] + .Select(x => x.CodeCategory); + + Assume.That(patientConditionInfo != null); + Assert.IsFalse(patientConditionInfo.HasValue); + Assert.IsFalse(patientConditionInfo.IsPresent); + + var homeboundIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HomeboundIndicator) + .Select(x => x.CodeCategory); + + Assume.That(homeboundIndicator != null); + Assert.IsFalse(homeboundIndicator.HasValue); + Assert.IsFalse(homeboundIndicator.IsPresent); + + var epsdtReferral = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.EPSDTReferral) + .Select(x => x.CodeCategory); + + Assume.That(epsdtReferral != null); + Assert.IsFalse(epsdtReferral.HasValue); + Assert.IsFalse(epsdtReferral.IsPresent); + } + + [Test(Description = @"Condition : AmbulanceCertification => [07], + PatientConditionInfo => [E1], + HomeboundIndicator => missing, + EPSDTReferral => missing"), Explicit("Issue #65")] + public void Test3() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +CRC✽07✽Y✽65 +CRC✽07✽Y✽65 +CRC✽07✽Y✽65 +CRC✽07✽Y✽65 +CRC✽07✽Y✽65 +CRC✽E1✽Y✽65 +CRC✽E1✽Y✽65 +CRC✽E1✽Y✽65 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + for (int i = 0;; i++) + { + if (!transactions.Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AmbulanceCertification) + .TryGetValue(i, out Segment segment)) + break; + + var ambulanceCertification = segment.Select(x => x.CodeCategory); + + Assume.That(ambulanceCertification != null); + Assert.IsTrue(ambulanceCertification.HasValue); + Assert.IsTrue(ambulanceCertification.IsPresent); + Assert.AreEqual("07", ambulanceCertification.ValueOrDefault()); + } + + for (int i = 0;; i++) + { + if (!transactions.Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PatientConditionInfo) + .TryGetValue(i, out Segment segment)) + break; + + var patientConditionInfo = segment.Select(x => x.CodeCategory); + + Assume.That(patientConditionInfo != null); + Assert.IsTrue(patientConditionInfo.HasValue); + Assert.IsTrue(patientConditionInfo.IsPresent); + Assert.AreEqual("E1", patientConditionInfo.ValueOrDefault()); + } + + var homeboundIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HomeboundIndicator) + .Select(x => x.CodeCategory); + + Assume.That(homeboundIndicator != null); + Assert.IsFalse(homeboundIndicator.HasValue); + Assert.IsFalse(homeboundIndicator.IsPresent); + + var epsdtReferral = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.EPSDTReferral) + .Select(x => x.CodeCategory); + + Assume.That(epsdtReferral != null); + Assert.IsFalse(epsdtReferral.HasValue); + Assert.IsFalse(epsdtReferral.IsPresent); + } + + [Test(Description = @"Condition : AmbulanceCertification => [07], + PatientConditionInfo => [E1, E2, E3], + HomeboundIndicator => missing, + EPSDTReferral => missing"), Explicit("Issue #65")] + public void Test4() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +CRC✽07✽Y✽65 +CRC✽07✽Y✽65 +CRC✽07✽Y✽65 +CRC✽07✽Y✽65 +CRC✽07✽Y✽65 +CRC✽E1✽Y✽65 +CRC✽E2✽Y✽65 +CRC✽E3✽Y✽65 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + for (int i = 0;; i++) + { + if (!transactions.Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AmbulanceCertification) + .TryGetValue(i, out Segment segment)) + break; + + var ambulanceCertification = segment.Select(x => x.CodeCategory); + + Assume.That(ambulanceCertification != null); + Assert.IsTrue(ambulanceCertification.HasValue); + Assert.IsTrue(ambulanceCertification.IsPresent); + Assert.AreEqual("07", ambulanceCertification.ValueOrDefault()); + } + + for (int i = 0;; i++) + { + if (!transactions.Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PatientConditionInfo) + .TryGetValue(i, out Segment segment)) + break; + + var patientConditionInfo = segment.Select(x => x.CodeCategory); + + Assume.That(patientConditionInfo != null); + Assert.IsTrue(patientConditionInfo.HasValue); + Assert.IsTrue(patientConditionInfo.IsPresent); + Assert.That(patientConditionInfo.ValueOrDefault(), Is.EqualTo("E1").Or.EqualTo("E2").Or.EqualTo("E3")); + } + + var homeboundIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HomeboundIndicator) + .Select(x => x.CodeCategory); + + Assume.That(homeboundIndicator != null); + Assert.IsFalse(homeboundIndicator.HasValue); + Assert.IsFalse(homeboundIndicator.IsPresent); + + var epsdtReferral = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.EPSDTReferral) + .Select(x => x.CodeCategory); + + Assume.That(epsdtReferral != null); + Assert.IsFalse(epsdtReferral.HasValue); + Assert.IsFalse(epsdtReferral.IsPresent); + } + + [Test(Description = @"Condition : AmbulanceCertification => [07], + PatientConditionInfo => [E1, E2, E3], + HomeboundIndicator => 75, + EPSDTReferral => missing"), Explicit("Issue #65")] + public void Test5() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +CRC✽07✽Y✽65 +CRC✽07✽Y✽65 +CRC✽07✽Y✽65 +CRC✽07✽Y✽65 +CRC✽07✽Y✽65 +CRC✽E1✽Y✽65 +CRC✽E2✽Y✽65 +CRC✽E3✽Y✽65 +CRC✽75✽Y✽65 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + for (int i = 0;; i++) + { + if (!transactions.Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AmbulanceCertification) + .TryGetValue(i, out Segment segment)) + break; + + var ambulanceCertification = segment.Select(x => x.CodeCategory); + + Assume.That(ambulanceCertification != null); + Assert.IsTrue(ambulanceCertification.HasValue); + Assert.IsTrue(ambulanceCertification.IsPresent); + Assert.AreEqual("07", ambulanceCertification.ValueOrDefault()); + } + + for (int i = 0;; i++) + { + if (!transactions.Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PatientConditionInfo) + .TryGetValue(i, out Segment segment)) + break; + + var patientConditionInfo = segment.Select(x => x.CodeCategory); + + Assume.That(patientConditionInfo != null); + Assert.IsTrue(patientConditionInfo.HasValue); + Assert.IsTrue(patientConditionInfo.IsPresent); + Assert.That(patientConditionInfo.ValueOrDefault(), Is.EqualTo("E1").Or.EqualTo("E2").Or.EqualTo("E3")); + } + + var homeboundIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HomeboundIndicator) + .Select(x => x.CodeCategory); + + Assume.That(homeboundIndicator != null); + Assert.IsTrue(homeboundIndicator.HasValue); + Assert.IsTrue(homeboundIndicator.IsPresent); + Assert.AreEqual("75", homeboundIndicator.ValueOrDefault()); + + var epsdtReferral = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.EPSDTReferral) + .Select(x => x.CodeCategory); + + Assume.That(epsdtReferral != null); + Assert.IsFalse(epsdtReferral.HasValue); + Assert.IsFalse(epsdtReferral.IsPresent); + } + + [Test(Description = @"Condition : AmbulanceCertification => [07], + PatientConditionInfo => [E1, E2, E3], + HomeboundIndicator => 75, + EPSDTReferral => ZZ"), Explicit("Issue #65")] + public void Test6() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +CRC✽07✽Y✽65 +CRC✽07✽Y✽65 +CRC✽07✽Y✽65 +CRC✽07✽Y✽65 +CRC✽07✽Y✽65 +CRC✽E1✽Y✽65 +CRC✽E2✽Y✽65 +CRC✽E3✽Y✽65 +CRC✽75✽Y✽65 +CRC✽ZZ✽Y✽65 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + for (int i = 0;; i++) + { + if (!transactions.Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AmbulanceCertification) + .TryGetValue(i, out Segment segment)) + break; + + var ambulanceCertification = segment.Select(x => x.CodeCategory); + + Assume.That(ambulanceCertification != null); + Assert.IsTrue(ambulanceCertification.HasValue); + Assert.IsTrue(ambulanceCertification.IsPresent); + Assert.AreEqual("07", ambulanceCertification.ValueOrDefault()); + } + + for (int i = 0;; i++) + { + if (!transactions.Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PatientConditionInfo) + .TryGetValue(i, out Segment segment)) + break; + + var patientConditionInfo = segment.Select(x => x.CodeCategory); + + Assume.That(patientConditionInfo != null); + Assert.IsTrue(patientConditionInfo.HasValue); + Assert.IsTrue(patientConditionInfo.IsPresent); + Assert.That(patientConditionInfo.ValueOrDefault(), Is.EqualTo("E1").Or.EqualTo("E2").Or.EqualTo("E3")); + } + + var homeboundIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HomeboundIndicator) + .Select(x => x.CodeCategory); + + Assume.That(homeboundIndicator != null); + Assert.IsTrue(homeboundIndicator.HasValue); + Assert.IsTrue(homeboundIndicator.IsPresent); + Assert.AreEqual("75", homeboundIndicator.ValueOrDefault()); + + var epsdtReferral = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.EPSDTReferral) + .Select(x => x.CodeCategory); + + Assume.That(epsdtReferral != null); + Assert.IsTrue(epsdtReferral.HasValue); + Assert.IsTrue(epsdtReferral.IsPresent); + Assert.AreEqual("ZZ", epsdtReferral.ValueOrDefault()); + } + + [Test(Description = @"Condition : AmbulanceCertification => missing, + PatientConditionInfo => [E1, E2, E3], + HomeboundIndicator => 75, + EPSDTReferral => missing"), Explicit("Issue #65")] + public void Test7() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +CRC✽E1✽Y✽65 +CRC✽E2✽Y✽65 +CRC✽E3✽Y✽65 +CRC✽75✽Y✽65 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var ambulanceCertification = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AmbulanceCertification)[0] + .Select(x => x.CodeCategory); + + Assume.That(ambulanceCertification != null); + Assert.IsFalse(ambulanceCertification.HasValue); + Assert.IsFalse(ambulanceCertification.IsPresent); + + for (int i = 0;; i++) + { + if (!transactions.Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PatientConditionInfo) + .TryGetValue(i, out Segment segment)) + break; + + var patientConditionInfo = segment.Select(x => x.CodeCategory); + + Assume.That(patientConditionInfo != null); + Assert.IsTrue(patientConditionInfo.HasValue); + Assert.IsTrue(patientConditionInfo.IsPresent); + Assert.That(patientConditionInfo.ValueOrDefault(), Is.EqualTo("E1").Or.EqualTo("E2").Or.EqualTo("E3")); + } + + var homeboundIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HomeboundIndicator) + .Select(x => x.CodeCategory); + + Assume.That(homeboundIndicator != null); + Assert.IsTrue(homeboundIndicator.HasValue); + Assert.IsTrue(homeboundIndicator.IsPresent); + Assert.AreEqual("75", homeboundIndicator.ValueOrDefault()); + + var epsdtReferral = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.EPSDTReferral) + .Select(x => x.CodeCategory); + + Assume.That(epsdtReferral != null); + Assert.IsFalse(epsdtReferral.HasValue); + Assert.IsFalse(epsdtReferral.IsPresent); + } + + [Test(Description = @"Condition : AmbulanceCertification => missing, + PatientConditionInfo => [E1, E2, E3], + HomeboundIndicator => missing, + EPSDTReferral => missing"), Explicit("Issue #65")] + public void Test8() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +CRC✽E1✽Y✽65 +CRC✽E2✽Y✽65 +CRC✽E3✽Y✽65 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var ambulanceCertification = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AmbulanceCertification)[0] + .Select(x => x.CodeCategory); + + Assume.That(ambulanceCertification != null); + Assert.IsFalse(ambulanceCertification.HasValue); + Assert.IsFalse(ambulanceCertification.IsPresent); + + for (int i = 0;; i++) + { + if (!transactions.Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PatientConditionInfo) + .TryGetValue(i, out Segment segment)) + break; + + var patientConditionInfo = segment.Select(x => x.CodeCategory); + + Assume.That(patientConditionInfo != null); + Assert.IsTrue(patientConditionInfo.HasValue); + Assert.IsTrue(patientConditionInfo.IsPresent); + Assert.That(patientConditionInfo.ValueOrDefault(), Is.EqualTo("E1").Or.EqualTo("E2").Or.EqualTo("E3")); + } + + var homeboundIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HomeboundIndicator) + .Select(x => x.CodeCategory); + + Assume.That(homeboundIndicator != null); + Assert.IsFalse(homeboundIndicator.HasValue); + Assert.IsFalse(homeboundIndicator.IsPresent); + + var epsdtReferral = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.EPSDTReferral) + .Select(x => x.CodeCategory); + + Assume.That(epsdtReferral != null); + Assert.IsFalse(epsdtReferral.HasValue); + Assert.IsFalse(epsdtReferral.IsPresent); + } + + [Test(Description = @"Condition : AmbulanceCertification => [07], + PatientConditionInfo => missing, + HomeboundIndicator => missing, + EPSDTReferral => missing"), Explicit("Issue #65")] + public void Test9() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +CRC✽07✽Y✽65 +CRC✽07✽Y✽65 +CRC✽07✽Y✽65 +CRC✽07✽Y✽65 +CRC✽07✽Y✽65 +CRC✽E1✽Y✽65 +CRC✽E1✽Y✽65 +CRC✽E1✽Y✽65 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + for (int i = 0;; i++) + { + if (!transactions.Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AmbulanceCertification) + .TryGetValue(i, out Segment segment)) + break; + + var ambulanceCertification = segment.Select(x => x.CodeCategory); + + Assume.That(ambulanceCertification != null); + Assert.IsTrue(ambulanceCertification.HasValue); + Assert.IsTrue(ambulanceCertification.IsPresent); + Assert.AreEqual("07", ambulanceCertification.ValueOrDefault()); + } + + var patientConditionInfo = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PatientConditionInfo)[0] + .Select(x => x.CodeCategory); + + Assume.That(patientConditionInfo != null); + Assert.IsFalse(patientConditionInfo.HasValue); + Assert.IsFalse(patientConditionInfo.IsPresent); + + var homeboundIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HomeboundIndicator) + .Select(x => x.CodeCategory); + + Assume.That(homeboundIndicator != null); + Assert.IsFalse(homeboundIndicator.HasValue); + Assert.IsFalse(homeboundIndicator.IsPresent); + + var epsdtReferral = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.EPSDTReferral) + .Select(x => x.CodeCategory); + + Assume.That(epsdtReferral != null); + Assert.IsFalse(epsdtReferral.HasValue); + Assert.IsFalse(epsdtReferral.IsPresent); + } + + [Test(Description = @"Condition : AmbulanceCertification => missing, + PatientConditionInfo => missing, + HomeboundIndicator => 75, + EPSDTReferral => ZZ"), Explicit("Issue #65")] + public void Test10() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +CRC✽75✽Y✽65 +CRC✽ZZ✽Y✽65 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var ambulanceCertification = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AmbulanceCertification)[0] + .Select(x => x.CodeCategory); + + Assume.That(ambulanceCertification != null); + Assert.IsFalse(ambulanceCertification.HasValue); + Assert.IsFalse(ambulanceCertification.IsPresent); + + var patientConditionInfo = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PatientConditionInfo)[0] + .Select(x => x.CodeCategory); + + Assume.That(patientConditionInfo != null); + Assert.IsFalse(patientConditionInfo.HasValue); + Assert.IsFalse(patientConditionInfo.IsPresent); + + var homeboundIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HomeboundIndicator) + .Select(x => x.CodeCategory); + + Assume.That(homeboundIndicator != null); + Assert.IsTrue(homeboundIndicator.HasValue); + Assert.IsTrue(homeboundIndicator.IsPresent); + Assert.AreEqual("75", homeboundIndicator.ValueOrDefault()); + + var epsdtReferral = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.EPSDTReferral) + .Select(x => x.CodeCategory); + + Assume.That(epsdtReferral != null); + Assert.IsTrue(epsdtReferral.HasValue); + Assert.IsTrue(epsdtReferral.IsPresent); + Assert.AreEqual("ZZ", epsdtReferral.ValueOrDefault()); + } + + [Test(Description = @"Condition : AmbulanceCertification => missing, + PatientConditionInfo => missing, + HomeboundIndicator => missing, + EPSDTReferral => ZZ"), Explicit("Issue #65")] + public void Test11() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +CRC✽ZZ✽Y✽65 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var ambulanceCertification = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AmbulanceCertification)[0] + .Select(x => x.CodeCategory); + + Assume.That(ambulanceCertification != null); + Assert.IsFalse(ambulanceCertification.HasValue); + Assert.IsFalse(ambulanceCertification.IsPresent); + + var patientConditionInfo = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PatientConditionInfo)[0] + .Select(x => x.CodeCategory); + + Assume.That(patientConditionInfo != null); + Assert.IsFalse(patientConditionInfo.HasValue); + Assert.IsFalse(patientConditionInfo.IsPresent); + + var homeboundIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HomeboundIndicator) + .Select(x => x.CodeCategory); + + Assume.That(homeboundIndicator != null); + Assert.IsTrue(homeboundIndicator.HasValue); + Assert.IsTrue(homeboundIndicator.IsPresent); + Assert.AreEqual("75", homeboundIndicator.ValueOrDefault()); + + var epsdtReferral = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.EPSDTReferral) + .Select(x => x.CodeCategory); + + Assume.That(epsdtReferral != null); + Assert.IsTrue(epsdtReferral.HasValue); + Assert.IsTrue(epsdtReferral.IsPresent); + Assert.AreEqual("ZZ", epsdtReferral.ValueOrDefault()); + } + + [Test(Description = @"Condition : AmbulanceCertification => missing, + PatientConditionInfo => missing, + HomeboundIndicator => 75, + EPSDTReferral => missing"), Explicit("Issue #65")] + public void Test12() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +CRC✽75✽Y✽65 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var ambulanceCertification = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AmbulanceCertification)[0] + .Select(x => x.CodeCategory); + + Assume.That(ambulanceCertification != null); + Assert.IsFalse(ambulanceCertification.HasValue); + Assert.IsFalse(ambulanceCertification.IsPresent); + + var patientConditionInfo = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PatientConditionInfo)[0] + .Select(x => x.CodeCategory); + + Assume.That(patientConditionInfo != null); + Assert.IsFalse(patientConditionInfo.HasValue); + Assert.IsFalse(patientConditionInfo.IsPresent); + + var homeboundIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HomeboundIndicator) + .Select(x => x.CodeCategory); + + Assume.That(homeboundIndicator != null); + Assert.IsTrue(homeboundIndicator.HasValue); + Assert.IsTrue(homeboundIndicator.IsPresent); + Assert.AreEqual("75", homeboundIndicator.ValueOrDefault()); + + var epsdtReferral = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.EPSDTReferral) + .Select(x => x.CodeCategory); + + Assume.That(epsdtReferral != null); + Assert.IsFalse(epsdtReferral.HasValue); + Assert.IsFalse(epsdtReferral.IsPresent); + } + + [Test(Description = @"Condition : AmbulanceCertification => missing, + PatientConditionInfo => missing, + HomeboundIndicator => missing, + EPSDTReferral => missing")] + public void Test13() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var ambulanceCertification = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AmbulanceCertification)[0] + .Select(x => x.CodeCategory); + + Assume.That(ambulanceCertification != null); + Assert.IsFalse(ambulanceCertification.HasValue); + Assert.IsFalse(ambulanceCertification.IsPresent); + + var patientConditionInfo = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PatientConditionInfo)[0] + .Select(x => x.CodeCategory); + + Assume.That(patientConditionInfo != null); + Assert.IsFalse(patientConditionInfo.HasValue); + Assert.IsFalse(patientConditionInfo.IsPresent); + + var homeboundIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HomeboundIndicator) + .Select(x => x.CodeCategory); + + Assume.That(homeboundIndicator != null); + Assert.IsFalse(homeboundIndicator.HasValue); + Assert.IsFalse(homeboundIndicator.IsPresent); + + var epsdtReferral = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.EPSDTReferral) + .Select(x => x.CodeCategory); + + Assume.That(epsdtReferral != null); + Assert.IsFalse(epsdtReferral.HasValue); + Assert.IsFalse(epsdtReferral.IsPresent); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P14ConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P14ConditionalTests.cs new file mode 100644 index 000000000..2057f6e7c --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P14ConditionalTests.cs @@ -0,0 +1,1090 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing837ProfessionalL2300P14ConditionalTests : + X12MacheteTestHarness + { + [Test(Description = @"Condition : L2330A => present, + L2330B => present, + L2330C => present, + L2330D => present, + L2330E => present, + L2330F => present, + L2330G => present")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*77*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*DQ*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + // L2330A + var otherSubscriberName = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherSubscriberName); + + var subscribingProvider = otherSubscriberName + .Select(x => x.Subscriber) + .Select(x => x.EntityIdentifierCode); + + var subscriberProviderSecondaryIdentification = otherSubscriberName + .Select(x => x.SecondaryIdentification) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(otherSubscriberName != null); + Assume.That(subscribingProvider != null); + Assume.That(subscriberProviderSecondaryIdentification != null); + Assert.IsTrue(otherSubscriberName.HasValue); + Assert.IsTrue(subscribingProvider.HasValue); + Assert.IsTrue(subscriberProviderSecondaryIdentification.HasValue); + Assert.IsTrue(subscribingProvider.IsPresent); + Assert.IsTrue(subscriberProviderSecondaryIdentification.IsPresent); + Assert.AreEqual("IL", subscribingProvider.ValueOrDefault()); + Assert.AreEqual("SY", subscriberProviderSecondaryIdentification.ValueOrDefault()); + + // L2330B + var otherPayerName = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerName); + + var payer = otherPayerName + .Select(x => x.Payer) + .Select(x => x.EntityIdentifierCode); + + var payerSecondaryIdentification = otherPayerName + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(otherPayerName != null); + Assume.That(payer != null); + Assume.That(payerSecondaryIdentification != null); + Assert.IsTrue(otherPayerName.HasValue); + Assert.IsTrue(payer.HasValue); + Assert.IsTrue(payerSecondaryIdentification.HasValue); + Assert.IsTrue(payer.IsPresent); + Assert.IsTrue(payerSecondaryIdentification.IsPresent); + Assert.AreEqual("PR", payer.ValueOrDefault()); + Assert.AreEqual("2U", payerSecondaryIdentification.ValueOrDefault()); + + // L2330C + var otherPayerReferringProvider = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerReferringProvider)[0]; + + var referringProvider = otherPayerReferringProvider + .Select(x => x.Provider) + .Select(x => x.EntityIdentifierCode); + + var referringProviderSecondaryIdentification = otherPayerReferringProvider + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(otherPayerReferringProvider != null); + Assume.That(referringProvider != null); + Assume.That(referringProviderSecondaryIdentification != null); + Assert.IsTrue(otherPayerReferringProvider.HasValue); + Assert.IsTrue(referringProvider.HasValue); + Assert.IsTrue(referringProviderSecondaryIdentification.HasValue); + Assert.IsTrue(referringProvider.IsPresent); + Assert.IsTrue(referringProviderSecondaryIdentification.IsPresent); + Assert.AreEqual("DN", referringProvider.ValueOrDefault()); + Assert.AreEqual("0B", referringProviderSecondaryIdentification.ValueOrDefault()); + + // L2330D + var otherPayerRenderingProvider = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerRenderingProvider); + + var payerRenderingProvider = otherPayerRenderingProvider + .Select(x => x.Provider) + .Select(x => x.EntityIdentifierCode); + + var payerRenderingProviderSecondaryIdentification = otherPayerRenderingProvider + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(otherPayerRenderingProvider != null); + Assume.That(payerRenderingProvider != null); + Assume.That(payerRenderingProviderSecondaryIdentification != null); + Assert.IsTrue(otherPayerRenderingProvider.HasValue); + Assert.IsTrue(payerRenderingProvider.HasValue); + Assert.IsTrue(payerRenderingProviderSecondaryIdentification.HasValue); + Assert.IsTrue(payerRenderingProvider.IsPresent); + Assert.IsTrue(payerRenderingProviderSecondaryIdentification.IsPresent); + Assert.AreEqual("82", payerRenderingProvider.ValueOrDefault()); + Assert.AreEqual("0B", payerRenderingProviderSecondaryIdentification.ValueOrDefault()); + + // L2330E + var otherPayerServiceFacilityLocation = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerServiceFacilityLocation); + + var facilityLocation = otherPayerServiceFacilityLocation + .Select(x => x.FacilityLocation) + .Select(x => x.EntityIdentifierCode); + + var payerServiceFacilityLocationSecondaryIdentification = otherPayerServiceFacilityLocation + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(otherPayerServiceFacilityLocation != null); + Assume.That(facilityLocation != null); + Assume.That(payerServiceFacilityLocationSecondaryIdentification != null); + Assert.IsTrue(otherPayerServiceFacilityLocation.HasValue); + Assert.IsTrue(facilityLocation.HasValue); + Assert.IsTrue(payerServiceFacilityLocationSecondaryIdentification.HasValue); + Assert.IsTrue(facilityLocation.IsPresent); + Assert.IsTrue(payerServiceFacilityLocationSecondaryIdentification.IsPresent); + Assert.AreEqual("77", facilityLocation.ValueOrDefault()); + Assert.AreEqual("0B", payerServiceFacilityLocationSecondaryIdentification.ValueOrDefault()); + + // L2330F + var otherPayerSupervisingProvider = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerSupervisingProvider); + + var payerSupervisingProvider = otherPayerSupervisingProvider + .Select(x => x.Provider) + .Select(x => x.EntityIdentifierCode); + + var payerSupervisingProviderSecondaryIdentification = otherPayerSupervisingProvider + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(otherPayerSupervisingProvider != null); + Assume.That(payerSupervisingProvider != null); + Assume.That(payerSupervisingProviderSecondaryIdentification != null); + Assert.IsTrue(otherPayerSupervisingProvider.HasValue); + Assert.IsTrue(payerSupervisingProvider.HasValue); + Assert.IsTrue(payerSupervisingProviderSecondaryIdentification.HasValue); + Assert.IsTrue(payerSupervisingProvider.IsPresent); + Assert.IsTrue(payerSupervisingProviderSecondaryIdentification.IsPresent); + Assert.AreEqual("DQ", payerSupervisingProvider.ValueOrDefault()); + Assert.AreEqual("0B", payerSupervisingProviderSecondaryIdentification.ValueOrDefault()); + + // L2330G + var otherPayerBillingProvider = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerBillingProvider); + + var payerBillingProvider = otherPayerBillingProvider + .Select(x => x.Provider) + .Select(x => x.EntityIdentifierCode); + + var otherPayerBillingProviderSecondaryIdentification = otherPayerBillingProvider + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(otherPayerBillingProvider != null); + Assume.That(payerBillingProvider != null); + Assume.That(otherPayerBillingProviderSecondaryIdentification != null); + Assert.IsTrue(otherPayerBillingProvider.HasValue); + Assert.IsTrue(payerBillingProvider.HasValue); + Assert.IsTrue(otherPayerBillingProviderSecondaryIdentification.HasValue); + Assert.IsTrue(payerBillingProvider.IsPresent); + Assert.IsTrue(otherPayerBillingProviderSecondaryIdentification.IsPresent); + Assert.AreEqual("85", payerBillingProvider.ValueOrDefault()); + Assert.AreEqual("G2", otherPayerBillingProviderSecondaryIdentification.ValueOrDefault()); + } + + [Test(Description = @"Condition : L2330A => present, + L2330B => missing, + L2330C => missing, + L2330D => missing, + L2330E => missing, + L2330F => missing, + L2330G => present")] + public void Test2() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + // L2330A + var otherSubscriberName = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherSubscriberName); + + var subscribingProvider = otherSubscriberName + .Select(x => x.Subscriber) + .Select(x => x.EntityIdentifierCode); + + var subscriberProviderSecondaryIdentification = otherSubscriberName + .Select(x => x.SecondaryIdentification) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(otherSubscriberName != null); + Assume.That(subscribingProvider != null); + Assume.That(subscriberProviderSecondaryIdentification != null); + Assert.IsTrue(otherSubscriberName.HasValue); + Assert.IsTrue(subscribingProvider.HasValue); + Assert.IsTrue(subscriberProviderSecondaryIdentification.HasValue); + Assert.IsTrue(subscribingProvider.IsPresent); + Assert.IsTrue(subscriberProviderSecondaryIdentification.IsPresent); + Assert.AreEqual("IL", subscribingProvider.ValueOrDefault()); + Assert.AreEqual("SY", subscriberProviderSecondaryIdentification.ValueOrDefault()); + + // L2330B + var otherPayerName = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerName); + + var payer = otherPayerName + .Select(x => x.Payer) + .Select(x => x.EntityIdentifierCode); + + var payerSecondaryIdentification = otherPayerName + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(otherPayerName != null); + Assume.That(payer != null); + Assume.That(payerSecondaryIdentification != null); + Assert.IsFalse(otherPayerName.HasValue); + Assert.IsFalse(payer.HasValue); + Assert.IsFalse(payerSecondaryIdentification.HasValue); + Assert.IsFalse(payer.IsPresent); + Assert.IsFalse(payerSecondaryIdentification.IsPresent); + + // L2330C + var otherPayerReferringProvider = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerReferringProvider)[0]; + + var referringProvider = otherPayerReferringProvider + .Select(x => x.Provider) + .Select(x => x.EntityIdentifierCode); + + var referringProviderSecondaryIdentification = otherPayerReferringProvider + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(otherPayerReferringProvider != null); + Assume.That(referringProvider != null); + Assume.That(referringProviderSecondaryIdentification != null); + Assert.IsFalse(otherPayerReferringProvider.HasValue); + Assert.IsFalse(referringProvider.HasValue); + Assert.IsFalse(referringProviderSecondaryIdentification.HasValue); + Assert.IsFalse(referringProvider.IsPresent); + Assert.IsFalse(referringProviderSecondaryIdentification.IsPresent); + + // L2330D + var otherPayerRenderingProvider = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerRenderingProvider); + + var payerRenderingProvider = otherPayerRenderingProvider + .Select(x => x.Provider) + .Select(x => x.EntityIdentifierCode); + + var payerRenderingProviderSecondaryIdentification = otherPayerRenderingProvider + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(otherPayerRenderingProvider != null); + Assume.That(payerRenderingProvider != null); + Assume.That(payerRenderingProviderSecondaryIdentification != null); + Assert.IsFalse(otherPayerRenderingProvider.HasValue); + Assert.IsFalse(payerRenderingProvider.HasValue); + Assert.IsFalse(payerRenderingProviderSecondaryIdentification.HasValue); + Assert.IsFalse(payerRenderingProvider.IsPresent); + Assert.IsFalse(payerRenderingProviderSecondaryIdentification.IsPresent); + + // L2330E + var otherPayerServiceFacilityLocation = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerServiceFacilityLocation); + + var facilityLocation = otherPayerServiceFacilityLocation + .Select(x => x.FacilityLocation) + .Select(x => x.EntityIdentifierCode); + + var payerServiceFacilityLocationSecondaryIdentification = otherPayerServiceFacilityLocation + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(otherPayerServiceFacilityLocation != null); + Assume.That(facilityLocation != null); + Assume.That(payerServiceFacilityLocationSecondaryIdentification != null); + Assert.IsFalse(otherPayerServiceFacilityLocation.HasValue); + Assert.IsFalse(facilityLocation.HasValue); + Assert.IsFalse(payerServiceFacilityLocationSecondaryIdentification.HasValue); + Assert.IsFalse(facilityLocation.IsPresent); + Assert.IsFalse(payerServiceFacilityLocationSecondaryIdentification.IsPresent); + + // L2330F + var otherPayerSupervisingProvider = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerSupervisingProvider); + + var payerSupervisingProvider = otherPayerSupervisingProvider + .Select(x => x.Provider) + .Select(x => x.EntityIdentifierCode); + + var payerSupervisingProviderSecondaryIdentification = otherPayerSupervisingProvider + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(otherPayerSupervisingProvider != null); + Assume.That(payerSupervisingProvider != null); + Assume.That(payerSupervisingProviderSecondaryIdentification != null); + Assert.IsFalse(otherPayerSupervisingProvider.HasValue); + Assert.IsFalse(payerSupervisingProvider.HasValue); + Assert.IsFalse(payerSupervisingProviderSecondaryIdentification.HasValue); + Assert.IsFalse(payerSupervisingProvider.IsPresent); + Assert.IsFalse(payerSupervisingProviderSecondaryIdentification.IsPresent); + + // L2330G + var otherPayerBillingProvider = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerBillingProvider); + + var payerBillingProvider = otherPayerBillingProvider + .Select(x => x.Provider) + .Select(x => x.EntityIdentifierCode); + + var otherPayerBillingProviderSecondaryIdentification = otherPayerBillingProvider + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(otherPayerBillingProvider != null); + Assume.That(payerBillingProvider != null); + Assume.That(otherPayerBillingProviderSecondaryIdentification != null); + Assert.IsTrue(otherPayerBillingProvider.HasValue); + Assert.IsTrue(payerBillingProvider.HasValue); + Assert.IsTrue(otherPayerBillingProviderSecondaryIdentification.HasValue); + Assert.IsTrue(payerBillingProvider.IsPresent); + Assert.IsTrue(otherPayerBillingProviderSecondaryIdentification.IsPresent); + Assert.AreEqual("85", payerBillingProvider.ValueOrDefault()); + Assert.AreEqual("G2", otherPayerBillingProviderSecondaryIdentification.ValueOrDefault()); + } + + [Test(Description = @"Condition : L2330A => missing, + L2330B => missing, + L2330C => missing, + L2330D => missing, + L2330E => missing, + L2330F => missing, + L2330G => missing")] + public void Test3() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + // L2330A + var otherSubscriberName = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherSubscriberName); + + var subscribingProvider = otherSubscriberName + .Select(x => x.Subscriber) + .Select(x => x.EntityIdentifierCode); + + var subscriberProviderSecondaryIdentification = otherSubscriberName + .Select(x => x.SecondaryIdentification) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(otherSubscriberName != null); + Assume.That(subscribingProvider != null); + Assume.That(subscriberProviderSecondaryIdentification != null); + Assert.IsFalse(otherSubscriberName.HasValue); + Assert.IsFalse(subscribingProvider.HasValue); + Assert.IsFalse(subscriberProviderSecondaryIdentification.HasValue); + Assert.IsFalse(subscribingProvider.IsPresent); + Assert.IsFalse(subscriberProviderSecondaryIdentification.IsPresent); + + // L2330B + var otherPayerName = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerName); + + var payer = otherPayerName + .Select(x => x.Payer) + .Select(x => x.EntityIdentifierCode); + + var payerSecondaryIdentification = otherPayerName + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(otherPayerName != null); + Assume.That(payer != null); + Assume.That(payerSecondaryIdentification != null); + Assert.IsFalse(otherPayerName.HasValue); + Assert.IsFalse(payer.HasValue); + Assert.IsFalse(payerSecondaryIdentification.HasValue); + Assert.IsFalse(payer.IsPresent); + Assert.IsFalse(payerSecondaryIdentification.IsPresent); + + // L2330C + var otherPayerReferringProvider = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerReferringProvider)[0]; + + var referringProvider = otherPayerReferringProvider + .Select(x => x.Provider) + .Select(x => x.EntityIdentifierCode); + + var referringProviderSecondaryIdentification = otherPayerReferringProvider + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(otherPayerReferringProvider != null); + Assume.That(referringProvider != null); + Assume.That(referringProviderSecondaryIdentification != null); + Assert.IsFalse(otherPayerReferringProvider.HasValue); + Assert.IsFalse(referringProvider.HasValue); + Assert.IsFalse(referringProviderSecondaryIdentification.HasValue); + Assert.IsFalse(referringProvider.IsPresent); + Assert.IsFalse(referringProviderSecondaryIdentification.IsPresent); + + // L2330D + var otherPayerRenderingProvider = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerRenderingProvider); + + var payerRenderingProvider = otherPayerRenderingProvider + .Select(x => x.Provider) + .Select(x => x.EntityIdentifierCode); + + var payerRenderingProviderSecondaryIdentification = otherPayerRenderingProvider + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(otherPayerRenderingProvider != null); + Assume.That(payerRenderingProvider != null); + Assume.That(payerRenderingProviderSecondaryIdentification != null); + Assert.IsFalse(otherPayerRenderingProvider.HasValue); + Assert.IsFalse(payerRenderingProvider.HasValue); + Assert.IsFalse(payerRenderingProviderSecondaryIdentification.HasValue); + Assert.IsFalse(payerRenderingProvider.IsPresent); + Assert.IsFalse(payerRenderingProviderSecondaryIdentification.IsPresent); + + // L2330E + var otherPayerServiceFacilityLocation = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerServiceFacilityLocation); + + var facilityLocation = otherPayerServiceFacilityLocation + .Select(x => x.FacilityLocation) + .Select(x => x.EntityIdentifierCode); + + var payerServiceFacilityLocationSecondaryIdentification = otherPayerServiceFacilityLocation + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(otherPayerServiceFacilityLocation != null); + Assume.That(facilityLocation != null); + Assume.That(payerServiceFacilityLocationSecondaryIdentification != null); + Assert.IsFalse(otherPayerServiceFacilityLocation.HasValue); + Assert.IsFalse(facilityLocation.HasValue); + Assert.IsFalse(payerServiceFacilityLocationSecondaryIdentification.HasValue); + Assert.IsFalse(facilityLocation.IsPresent); + Assert.IsFalse(payerServiceFacilityLocationSecondaryIdentification.IsPresent); + + // L2330F + var otherPayerSupervisingProvider = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerSupervisingProvider); + + var payerSupervisingProvider = otherPayerSupervisingProvider + .Select(x => x.Provider) + .Select(x => x.EntityIdentifierCode); + + var payerSupervisingProviderSecondaryIdentification = otherPayerSupervisingProvider + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(otherPayerSupervisingProvider != null); + Assume.That(payerSupervisingProvider != null); + Assume.That(payerSupervisingProviderSecondaryIdentification != null); + Assert.IsFalse(otherPayerSupervisingProvider.HasValue); + Assert.IsFalse(payerSupervisingProvider.HasValue); + Assert.IsFalse(payerSupervisingProviderSecondaryIdentification.HasValue); + Assert.IsFalse(payerSupervisingProvider.IsPresent); + Assert.IsFalse(payerSupervisingProviderSecondaryIdentification.IsPresent); + + // L2330G + var otherPayerBillingProvider = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerBillingProvider); + + var payerBillingProvider = otherPayerBillingProvider + .Select(x => x.Provider) + .Select(x => x.EntityIdentifierCode); + + var otherPayerBillingProviderSecondaryIdentification = otherPayerBillingProvider + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(otherPayerBillingProvider != null); + Assume.That(payerBillingProvider != null); + Assume.That(otherPayerBillingProviderSecondaryIdentification != null); + Assert.IsFalse(otherPayerBillingProvider.HasValue); + Assert.IsFalse(payerBillingProvider.HasValue); + Assert.IsFalse(otherPayerBillingProviderSecondaryIdentification.HasValue); + Assert.IsFalse(payerBillingProvider.IsPresent); + Assert.IsFalse(otherPayerBillingProviderSecondaryIdentification.IsPresent); + } + + [Test(Description = @"Condition : L2330A => present, + L2330B => present, + L2330C => present, + L2330D => missing, + L2330E => present, + L2330F => missing, + L2330G => present")] + public void Test4() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*77*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + // L2330A + var otherSubscriberName = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherSubscriberName); + + var subscribingProvider = otherSubscriberName + .Select(x => x.Subscriber) + .Select(x => x.EntityIdentifierCode); + + var subscriberProviderSecondaryIdentification = otherSubscriberName + .Select(x => x.SecondaryIdentification) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(otherSubscriberName != null); + Assume.That(subscribingProvider != null); + Assume.That(subscriberProviderSecondaryIdentification != null); + Assert.IsTrue(otherSubscriberName.HasValue); + Assert.IsTrue(subscribingProvider.HasValue); + Assert.IsTrue(subscriberProviderSecondaryIdentification.HasValue); + Assert.IsTrue(subscribingProvider.IsPresent); + Assert.IsTrue(subscriberProviderSecondaryIdentification.IsPresent); + Assert.AreEqual("IL", subscribingProvider.ValueOrDefault()); + Assert.AreEqual("SY", subscriberProviderSecondaryIdentification.ValueOrDefault()); + + // L2330B + var otherPayerName = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerName); + + var payer = otherPayerName + .Select(x => x.Payer) + .Select(x => x.EntityIdentifierCode); + + var payerSecondaryIdentification = otherPayerName + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(otherPayerName != null); + Assume.That(payer != null); + Assume.That(payerSecondaryIdentification != null); + Assert.IsTrue(otherPayerName.HasValue); + Assert.IsTrue(payer.HasValue); + Assert.IsTrue(payerSecondaryIdentification.HasValue); + Assert.IsTrue(payer.IsPresent); + Assert.IsTrue(payerSecondaryIdentification.IsPresent); + Assert.AreEqual("PR", payer.ValueOrDefault()); + Assert.AreEqual("2U", payerSecondaryIdentification.ValueOrDefault()); + + // L2330C + var otherPayerReferringProvider = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerReferringProvider)[0]; + + var referringProvider = otherPayerReferringProvider + .Select(x => x.Provider) + .Select(x => x.EntityIdentifierCode); + + var referringProviderSecondaryIdentification = otherPayerReferringProvider + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(otherPayerReferringProvider != null); + Assume.That(referringProvider != null); + Assume.That(referringProviderSecondaryIdentification != null); + Assert.IsTrue(otherPayerReferringProvider.HasValue); + Assert.IsTrue(referringProvider.HasValue); + Assert.IsTrue(referringProviderSecondaryIdentification.HasValue); + Assert.IsTrue(referringProvider.IsPresent); + Assert.IsTrue(referringProviderSecondaryIdentification.IsPresent); + Assert.AreEqual("DN", referringProvider.ValueOrDefault()); + Assert.AreEqual("0B", referringProviderSecondaryIdentification.ValueOrDefault()); + + // L2330D + var otherPayerRenderingProvider = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerRenderingProvider); + + var payerRenderingProvider = otherPayerRenderingProvider + .Select(x => x.Provider) + .Select(x => x.EntityIdentifierCode); + + var payerRenderingProviderSecondaryIdentification = otherPayerRenderingProvider + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(otherPayerRenderingProvider != null); + Assume.That(payerRenderingProvider != null); + Assume.That(payerRenderingProviderSecondaryIdentification != null); + Assert.IsFalse(otherPayerRenderingProvider.HasValue); + Assert.IsFalse(payerRenderingProvider.HasValue); + Assert.IsFalse(payerRenderingProviderSecondaryIdentification.HasValue); + Assert.IsFalse(payerRenderingProvider.IsPresent); + Assert.IsFalse(payerRenderingProviderSecondaryIdentification.IsPresent); + + // L2330E + var otherPayerServiceFacilityLocation = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerServiceFacilityLocation); + + var facilityLocation = otherPayerServiceFacilityLocation + .Select(x => x.FacilityLocation) + .Select(x => x.EntityIdentifierCode); + + var payerServiceFacilityLocationSecondaryIdentification = otherPayerServiceFacilityLocation + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(otherPayerServiceFacilityLocation != null); + Assume.That(facilityLocation != null); + Assume.That(payerServiceFacilityLocationSecondaryIdentification != null); + Assert.IsTrue(otherPayerServiceFacilityLocation.HasValue); + Assert.IsTrue(facilityLocation.HasValue); + Assert.IsTrue(payerServiceFacilityLocationSecondaryIdentification.HasValue); + Assert.IsTrue(facilityLocation.IsPresent); + Assert.IsTrue(payerServiceFacilityLocationSecondaryIdentification.IsPresent); + Assert.AreEqual("77", facilityLocation.ValueOrDefault()); + Assert.AreEqual("0B", payerServiceFacilityLocationSecondaryIdentification.ValueOrDefault()); + + // L2330F + var otherPayerSupervisingProvider = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerSupervisingProvider); + + var payerSupervisingProvider = otherPayerSupervisingProvider + .Select(x => x.Provider) + .Select(x => x.EntityIdentifierCode); + + var payerSupervisingProviderSecondaryIdentification = otherPayerSupervisingProvider + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(otherPayerSupervisingProvider != null); + Assume.That(payerSupervisingProvider != null); + Assume.That(payerSupervisingProviderSecondaryIdentification != null); + Assert.IsFalse(otherPayerSupervisingProvider.HasValue); + Assert.IsFalse(payerSupervisingProvider.HasValue); + Assert.IsFalse(payerSupervisingProviderSecondaryIdentification.HasValue); + Assert.IsFalse(payerSupervisingProvider.IsPresent); + Assert.IsFalse(payerSupervisingProviderSecondaryIdentification.IsPresent); + + // L2330G + var otherPayerBillingProvider = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerBillingProvider); + + var payerBillingProvider = otherPayerBillingProvider + .Select(x => x.Provider) + .Select(x => x.EntityIdentifierCode); + + var otherPayerBillingProviderSecondaryIdentification = otherPayerBillingProvider + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(otherPayerBillingProvider != null); + Assume.That(payerBillingProvider != null); + Assume.That(otherPayerBillingProviderSecondaryIdentification != null); + Assert.IsTrue(otherPayerBillingProvider.HasValue); + Assert.IsTrue(payerBillingProvider.HasValue); + Assert.IsTrue(otherPayerBillingProviderSecondaryIdentification.HasValue); + Assert.IsTrue(payerBillingProvider.IsPresent); + Assert.IsTrue(otherPayerBillingProviderSecondaryIdentification.IsPresent); + Assert.AreEqual("85", payerBillingProvider.ValueOrDefault()); + Assert.AreEqual("G2", otherPayerBillingProviderSecondaryIdentification.ValueOrDefault()); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P1ConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P1ConditionalTests.cs new file mode 100644 index 000000000..5bc0e962e --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P1ConditionalTests.cs @@ -0,0 +1,1644 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing837ProfessionalL2300P1ConditionalTests : + X12MacheteTestHarness + { + [Test(Description = @"Condition : OnsetOfCurrentIllnessDate => 431, + InitialTreatmentDate => 454, + LastSeenDate => 304, + AcuteManifestationDate => 453, + AccidentDate => 439, + LastMensrualPeriod => 484, + LastXRayDate => 455, + HearingVisionPrescriptionDate => 471, + DisabilityDates => 314, + LastWorkedDate => 297, + AuthorizedReturnToWork => 296, + AdmissionDate => 435, + DischargeDate => 096, + AssumedRelinquishedCareDates => 090, + PropertyAndCasualtyDateOfFirstContact => 444, + RepricerReceivedDate => 050")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*314*D8*20061109 +DTP*297*D8*20061109 +DTP*296*D8*20061109 +DTP*435*D8*20061109 +DTP*096*D8*20061109 +DTP*090*D8*20061109 +DTP*444*D8*20061109 +DTP*050*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var onsetOfCurrentIllnessDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OnsetOfCurrentIllnessDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(onsetOfCurrentIllnessDate != null); + Assert.IsTrue(onsetOfCurrentIllnessDate.HasValue); + Assert.IsTrue(onsetOfCurrentIllnessDate.IsPresent); + Assert.AreEqual("431", onsetOfCurrentIllnessDate.ValueOrDefault()); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsTrue(initialTreatmentDate.HasValue); + Assert.IsTrue(initialTreatmentDate.IsPresent); + Assert.AreEqual("454", initialTreatmentDate.ValueOrDefault()); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsTrue(lastSeenDate.HasValue); + Assert.IsTrue(lastSeenDate.IsPresent); + Assert.AreEqual("304", lastSeenDate.ValueOrDefault()); + + var acuteManifestationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AcuteManifestationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(acuteManifestationDate != null); + Assert.IsTrue(acuteManifestationDate.HasValue); + Assert.IsTrue(acuteManifestationDate.IsPresent); + Assert.AreEqual("453", acuteManifestationDate.ValueOrDefault()); + + var accidentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AccidentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(accidentDate != null); + Assert.IsTrue(accidentDate.HasValue); + Assert.IsTrue(accidentDate.IsPresent); + Assert.AreEqual("439", accidentDate.ValueOrDefault()); + + var lastMensrualPeriod = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastMensrualPeriod) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastMensrualPeriod != null); + Assert.IsTrue(lastMensrualPeriod.HasValue); + Assert.IsTrue(lastMensrualPeriod.IsPresent); + Assert.AreEqual("484", lastMensrualPeriod.ValueOrDefault()); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsTrue(lastXRayDate.HasValue); + Assert.IsTrue(lastXRayDate.IsPresent); + Assert.AreEqual("455", lastXRayDate.ValueOrDefault()); + + var hearingVisionPrescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HearingVisionPrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(hearingVisionPrescriptionDate != null); + Assert.IsTrue(hearingVisionPrescriptionDate.HasValue); + Assert.IsTrue(hearingVisionPrescriptionDate.IsPresent); + Assert.AreEqual("471", hearingVisionPrescriptionDate.ValueOrDefault()); + + var disabilityDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DisabilityDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(disabilityDates != null); + Assert.IsTrue(disabilityDates.HasValue); + Assert.IsTrue(disabilityDates.IsPresent); + Assert.AreEqual("314", disabilityDates.ValueOrDefault()); + + var lastWorkedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastWorkedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastWorkedDate != null); + Assert.IsTrue(lastWorkedDate.HasValue); + Assert.IsTrue(lastWorkedDate.IsPresent); + Assert.AreEqual("297", lastWorkedDate.ValueOrDefault()); + + var authorizedReturnToWork = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AuthorizedReturnToWork) + .Select(x => x.DateTimeQualifier); + + Assume.That(authorizedReturnToWork != null); + Assert.IsTrue(authorizedReturnToWork.HasValue); + Assert.IsTrue(authorizedReturnToWork.IsPresent); + Assert.AreEqual("296", authorizedReturnToWork.ValueOrDefault()); + + var admissionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdmissionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(admissionDate != null); + Assert.IsTrue(admissionDate.HasValue); + Assert.IsTrue(admissionDate.IsPresent); + Assert.AreEqual("435", admissionDate.ValueOrDefault()); + + var dischargeDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DischargeDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(dischargeDate != null); + Assert.IsTrue(dischargeDate.HasValue); + Assert.IsTrue(dischargeDate.IsPresent); + Assert.AreEqual("096", dischargeDate.ValueOrDefault()); + + var assumedRelinquishedCareDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AssumedRelinquishedCareDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(assumedRelinquishedCareDates != null); + Assert.IsTrue(assumedRelinquishedCareDates.HasValue); + Assert.IsTrue(assumedRelinquishedCareDates.IsPresent); + Assert.AreEqual("090", assumedRelinquishedCareDates.ValueOrDefault()); + + var propertyAndCasualtyDateOfFirstContact = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PropertyAndCasualtyDateOfFirstContact) + .Select(x => x.DateTimeQualifier); + + Assume.That(propertyAndCasualtyDateOfFirstContact != null); + Assert.IsTrue(propertyAndCasualtyDateOfFirstContact.HasValue); + Assert.IsTrue(propertyAndCasualtyDateOfFirstContact.IsPresent); + Assert.AreEqual("444", propertyAndCasualtyDateOfFirstContact.ValueOrDefault()); + + var repricerReceivedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricerReceivedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(repricerReceivedDate != null); + Assert.IsTrue(repricerReceivedDate.HasValue); + Assert.IsTrue(repricerReceivedDate.IsPresent); + Assert.AreEqual("050", repricerReceivedDate.ValueOrDefault()); + } + + [Test(Description = @"Condition : OnsetOfCurrentIllnessDate => 431, + InitialTreatmentDate => 454, + LastSeenDate => 304, + AcuteManifestationDate => 453, + AccidentDate => 439, + LastMensrualPeriod => 484, + LastXRayDate => 455, + HearingVisionPrescriptionDate => 471, + DisabilityDates => 314, + LastWorkedDate => 297, + AuthorizedReturnToWork => 296, + AdmissionDate => 435, + DischargeDate => 096, + AssumedRelinquishedCareDates => 090, + PropertyAndCasualtyDateOfFirstContact => 444, + RepricerReceivedDate => missing")] + public void Test2() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*314*D8*20061109 +DTP*297*D8*20061109 +DTP*296*D8*20061109 +DTP*435*D8*20061109 +DTP*096*D8*20061109 +DTP*090*D8*20061109 +DTP*444*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var onsetOfCurrentIllnessDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OnsetOfCurrentIllnessDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(onsetOfCurrentIllnessDate != null); + Assert.IsTrue(onsetOfCurrentIllnessDate.HasValue); + Assert.IsTrue(onsetOfCurrentIllnessDate.IsPresent); + Assert.AreEqual("431", onsetOfCurrentIllnessDate.ValueOrDefault()); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsTrue(initialTreatmentDate.HasValue); + Assert.IsTrue(initialTreatmentDate.IsPresent); + Assert.AreEqual("454", initialTreatmentDate.ValueOrDefault()); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsTrue(lastSeenDate.HasValue); + Assert.IsTrue(lastSeenDate.IsPresent); + Assert.AreEqual("304", lastSeenDate.ValueOrDefault()); + + var acuteManifestationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AcuteManifestationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(acuteManifestationDate != null); + Assert.IsTrue(acuteManifestationDate.HasValue); + Assert.IsTrue(acuteManifestationDate.IsPresent); + Assert.AreEqual("453", acuteManifestationDate.ValueOrDefault()); + + var accidentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AccidentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(accidentDate != null); + Assert.IsTrue(accidentDate.HasValue); + Assert.IsTrue(accidentDate.IsPresent); + Assert.AreEqual("439", accidentDate.ValueOrDefault()); + + var lastMensrualPeriod = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastMensrualPeriod) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastMensrualPeriod != null); + Assert.IsTrue(lastMensrualPeriod.HasValue); + Assert.IsTrue(lastMensrualPeriod.IsPresent); + Assert.AreEqual("484", lastMensrualPeriod.ValueOrDefault()); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsTrue(lastXRayDate.HasValue); + Assert.IsTrue(lastXRayDate.IsPresent); + Assert.AreEqual("455", lastXRayDate.ValueOrDefault()); + + var hearingVisionPrescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HearingVisionPrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(hearingVisionPrescriptionDate != null); + Assert.IsTrue(hearingVisionPrescriptionDate.HasValue); + Assert.IsTrue(hearingVisionPrescriptionDate.IsPresent); + Assert.AreEqual("471", hearingVisionPrescriptionDate.ValueOrDefault()); + + var disabilityDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DisabilityDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(disabilityDates != null); + Assert.IsTrue(disabilityDates.HasValue); + Assert.IsTrue(disabilityDates.IsPresent); + Assert.AreEqual("314", disabilityDates.ValueOrDefault()); + + var lastWorkedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastWorkedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastWorkedDate != null); + Assert.IsTrue(lastWorkedDate.HasValue); + Assert.IsTrue(lastWorkedDate.IsPresent); + Assert.AreEqual("297", lastWorkedDate.ValueOrDefault()); + + var authorizedReturnToWork = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AuthorizedReturnToWork) + .Select(x => x.DateTimeQualifier); + + Assume.That(authorizedReturnToWork != null); + Assert.IsTrue(authorizedReturnToWork.HasValue); + Assert.IsTrue(authorizedReturnToWork.IsPresent); + Assert.AreEqual("296", authorizedReturnToWork.ValueOrDefault()); + + var admissionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdmissionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(admissionDate != null); + Assert.IsTrue(admissionDate.HasValue); + Assert.IsTrue(admissionDate.IsPresent); + Assert.AreEqual("435", admissionDate.ValueOrDefault()); + + var dischargeDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DischargeDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(dischargeDate != null); + Assert.IsTrue(dischargeDate.HasValue); + Assert.IsTrue(dischargeDate.IsPresent); + Assert.AreEqual("096", dischargeDate.ValueOrDefault()); + + var assumedRelinquishedCareDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AssumedRelinquishedCareDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(assumedRelinquishedCareDates != null); + Assert.IsTrue(assumedRelinquishedCareDates.HasValue); + Assert.IsTrue(assumedRelinquishedCareDates.IsPresent); + Assert.AreEqual("090", assumedRelinquishedCareDates.ValueOrDefault()); + + var propertyAndCasualtyDateOfFirstContact = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PropertyAndCasualtyDateOfFirstContact) + .Select(x => x.DateTimeQualifier); + + Assume.That(propertyAndCasualtyDateOfFirstContact != null); + Assert.IsTrue(propertyAndCasualtyDateOfFirstContact.HasValue); + Assert.IsTrue(propertyAndCasualtyDateOfFirstContact.IsPresent); + Assert.AreEqual("444", propertyAndCasualtyDateOfFirstContact.ValueOrDefault()); + + var repricerReceivedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricerReceivedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(repricerReceivedDate != null); + Assert.IsFalse(repricerReceivedDate.HasValue); + Assert.IsFalse(repricerReceivedDate.IsPresent); + } + + [Test(Description = @"Condition : OnsetOfCurrentIllnessDate => 431, + InitialTreatmentDate => 454, + LastSeenDate => 304, + AcuteManifestationDate => 453, + AccidentDate => 439, + LastMensrualPeriod => 484, + LastXRayDate => 455, + HearingVisionPrescriptionDate => 471, + DisabilityDates => 360, + LastWorkedDate => 297, + AuthorizedReturnToWork => 296, + AdmissionDate => 435, + DischargeDate => 096, + AssumedRelinquishedCareDates => 090, + PropertyAndCasualtyDateOfFirstContact => 444, + RepricerReceivedDate => 050")] + public void Test3() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*360*D8*20061109 +DTP*297*D8*20061109 +DTP*296*D8*20061109 +DTP*435*D8*20061109 +DTP*096*D8*20061109 +DTP*090*D8*20061109 +DTP*444*D8*20061109 +DTP*050*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var onsetOfCurrentIllnessDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OnsetOfCurrentIllnessDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(onsetOfCurrentIllnessDate != null); + Assert.IsTrue(onsetOfCurrentIllnessDate.HasValue); + Assert.IsTrue(onsetOfCurrentIllnessDate.IsPresent); + Assert.AreEqual("431", onsetOfCurrentIllnessDate.ValueOrDefault()); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsTrue(initialTreatmentDate.HasValue); + Assert.IsTrue(initialTreatmentDate.IsPresent); + Assert.AreEqual("454", initialTreatmentDate.ValueOrDefault()); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsTrue(lastSeenDate.HasValue); + Assert.IsTrue(lastSeenDate.IsPresent); + Assert.AreEqual("304", lastSeenDate.ValueOrDefault()); + + var acuteManifestationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AcuteManifestationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(acuteManifestationDate != null); + Assert.IsTrue(acuteManifestationDate.HasValue); + Assert.IsTrue(acuteManifestationDate.IsPresent); + Assert.AreEqual("453", acuteManifestationDate.ValueOrDefault()); + + var accidentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AccidentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(accidentDate != null); + Assert.IsTrue(accidentDate.HasValue); + Assert.IsTrue(accidentDate.IsPresent); + Assert.AreEqual("439", accidentDate.ValueOrDefault()); + + var lastMensrualPeriod = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastMensrualPeriod) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastMensrualPeriod != null); + Assert.IsTrue(lastMensrualPeriod.HasValue); + Assert.IsTrue(lastMensrualPeriod.IsPresent); + Assert.AreEqual("484", lastMensrualPeriod.ValueOrDefault()); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsTrue(lastXRayDate.HasValue); + Assert.IsTrue(lastXRayDate.IsPresent); + Assert.AreEqual("455", lastXRayDate.ValueOrDefault()); + + var hearingVisionPrescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HearingVisionPrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(hearingVisionPrescriptionDate != null); + Assert.IsTrue(hearingVisionPrescriptionDate.HasValue); + Assert.IsTrue(hearingVisionPrescriptionDate.IsPresent); + Assert.AreEqual("471", hearingVisionPrescriptionDate.ValueOrDefault()); + + var disabilityDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DisabilityDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(disabilityDates != null); + Assert.IsTrue(disabilityDates.HasValue); + Assert.IsTrue(disabilityDates.IsPresent); + Assert.AreEqual("360", disabilityDates.ValueOrDefault()); + + var lastWorkedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastWorkedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastWorkedDate != null); + Assert.IsTrue(lastWorkedDate.HasValue); + Assert.IsTrue(lastWorkedDate.IsPresent); + Assert.AreEqual("297", lastWorkedDate.ValueOrDefault()); + + var authorizedReturnToWork = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AuthorizedReturnToWork) + .Select(x => x.DateTimeQualifier); + + Assume.That(authorizedReturnToWork != null); + Assert.IsTrue(authorizedReturnToWork.HasValue); + Assert.IsTrue(authorizedReturnToWork.IsPresent); + Assert.AreEqual("296", authorizedReturnToWork.ValueOrDefault()); + + var admissionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdmissionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(admissionDate != null); + Assert.IsTrue(admissionDate.HasValue); + Assert.IsTrue(admissionDate.IsPresent); + Assert.AreEqual("435", admissionDate.ValueOrDefault()); + + var dischargeDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DischargeDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(dischargeDate != null); + Assert.IsTrue(dischargeDate.HasValue); + Assert.IsTrue(dischargeDate.IsPresent); + Assert.AreEqual("096", dischargeDate.ValueOrDefault()); + + var assumedRelinquishedCareDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AssumedRelinquishedCareDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(assumedRelinquishedCareDates != null); + Assert.IsTrue(assumedRelinquishedCareDates.HasValue); + Assert.IsTrue(assumedRelinquishedCareDates.IsPresent); + Assert.AreEqual("090", assumedRelinquishedCareDates.ValueOrDefault()); + + var propertyAndCasualtyDateOfFirstContact = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PropertyAndCasualtyDateOfFirstContact) + .Select(x => x.DateTimeQualifier); + + Assume.That(propertyAndCasualtyDateOfFirstContact != null); + Assert.IsTrue(propertyAndCasualtyDateOfFirstContact.HasValue); + Assert.IsTrue(propertyAndCasualtyDateOfFirstContact.IsPresent); + Assert.AreEqual("444", propertyAndCasualtyDateOfFirstContact.ValueOrDefault()); + + var repricerReceivedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricerReceivedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(repricerReceivedDate != null); + Assert.IsTrue(repricerReceivedDate.HasValue); + Assert.IsTrue(repricerReceivedDate.IsPresent); + Assert.AreEqual("050", repricerReceivedDate.ValueOrDefault()); + } + + [Test(Description = @"Condition : OnsetOfCurrentIllnessDate => 431, + InitialTreatmentDate => 454, + LastSeenDate => 304, + AcuteManifestationDate => 453, + AccidentDate => 439, + LastMensrualPeriod => 484, + LastXRayDate => 455, + HearingVisionPrescriptionDate => 471, + DisabilityDates => 360, + LastWorkedDate => 297, + AuthorizedReturnToWork => 296, + AdmissionDate => 435, + DischargeDate => 096, + AssumedRelinquishedCareDates => 090, + PropertyAndCasualtyDateOfFirstContact => 444, + RepricerReceivedDate => missing")] + public void Test4() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*360*D8*20061109 +DTP*297*D8*20061109 +DTP*296*D8*20061109 +DTP*435*D8*20061109 +DTP*096*D8*20061109 +DTP*090*D8*20061109 +DTP*444*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var onsetOfCurrentIllnessDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OnsetOfCurrentIllnessDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(onsetOfCurrentIllnessDate != null); + Assert.IsTrue(onsetOfCurrentIllnessDate.HasValue); + Assert.IsTrue(onsetOfCurrentIllnessDate.IsPresent); + Assert.AreEqual("431", onsetOfCurrentIllnessDate.ValueOrDefault()); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsTrue(initialTreatmentDate.HasValue); + Assert.IsTrue(initialTreatmentDate.IsPresent); + Assert.AreEqual("454", initialTreatmentDate.ValueOrDefault()); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsTrue(lastSeenDate.HasValue); + Assert.IsTrue(lastSeenDate.IsPresent); + Assert.AreEqual("304", lastSeenDate.ValueOrDefault()); + + var acuteManifestationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AcuteManifestationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(acuteManifestationDate != null); + Assert.IsTrue(acuteManifestationDate.HasValue); + Assert.IsTrue(acuteManifestationDate.IsPresent); + Assert.AreEqual("453", acuteManifestationDate.ValueOrDefault()); + + var accidentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AccidentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(accidentDate != null); + Assert.IsTrue(accidentDate.HasValue); + Assert.IsTrue(accidentDate.IsPresent); + Assert.AreEqual("439", accidentDate.ValueOrDefault()); + + var lastMensrualPeriod = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastMensrualPeriod) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastMensrualPeriod != null); + Assert.IsTrue(lastMensrualPeriod.HasValue); + Assert.IsTrue(lastMensrualPeriod.IsPresent); + Assert.AreEqual("484", lastMensrualPeriod.ValueOrDefault()); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsTrue(lastXRayDate.HasValue); + Assert.IsTrue(lastXRayDate.IsPresent); + Assert.AreEqual("455", lastXRayDate.ValueOrDefault()); + + var hearingVisionPrescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HearingVisionPrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(hearingVisionPrescriptionDate != null); + Assert.IsTrue(hearingVisionPrescriptionDate.HasValue); + Assert.IsTrue(hearingVisionPrescriptionDate.IsPresent); + Assert.AreEqual("471", hearingVisionPrescriptionDate.ValueOrDefault()); + + var disabilityDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DisabilityDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(disabilityDates != null); + Assert.IsTrue(disabilityDates.HasValue); + Assert.IsTrue(disabilityDates.IsPresent); + Assert.AreEqual("360", disabilityDates.ValueOrDefault()); + + var lastWorkedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastWorkedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastWorkedDate != null); + Assert.IsTrue(lastWorkedDate.HasValue); + Assert.IsTrue(lastWorkedDate.IsPresent); + Assert.AreEqual("297", lastWorkedDate.ValueOrDefault()); + + var authorizedReturnToWork = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AuthorizedReturnToWork) + .Select(x => x.DateTimeQualifier); + + Assume.That(authorizedReturnToWork != null); + Assert.IsTrue(authorizedReturnToWork.HasValue); + Assert.IsTrue(authorizedReturnToWork.IsPresent); + Assert.AreEqual("296", authorizedReturnToWork.ValueOrDefault()); + + var admissionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdmissionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(admissionDate != null); + Assert.IsTrue(admissionDate.HasValue); + Assert.IsTrue(admissionDate.IsPresent); + Assert.AreEqual("435", admissionDate.ValueOrDefault()); + + var dischargeDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DischargeDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(dischargeDate != null); + Assert.IsTrue(dischargeDate.HasValue); + Assert.IsTrue(dischargeDate.IsPresent); + Assert.AreEqual("096", dischargeDate.ValueOrDefault()); + + var assumedRelinquishedCareDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AssumedRelinquishedCareDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(assumedRelinquishedCareDates != null); + Assert.IsTrue(assumedRelinquishedCareDates.HasValue); + Assert.IsTrue(assumedRelinquishedCareDates.IsPresent); + Assert.AreEqual("090", assumedRelinquishedCareDates.ValueOrDefault()); + + var propertyAndCasualtyDateOfFirstContact = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PropertyAndCasualtyDateOfFirstContact) + .Select(x => x.DateTimeQualifier); + + Assume.That(propertyAndCasualtyDateOfFirstContact != null); + Assert.IsTrue(propertyAndCasualtyDateOfFirstContact.HasValue); + Assert.IsTrue(propertyAndCasualtyDateOfFirstContact.IsPresent); + Assert.AreEqual("444", propertyAndCasualtyDateOfFirstContact.ValueOrDefault()); + + var repricerReceivedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricerReceivedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(repricerReceivedDate != null); + Assert.IsFalse(repricerReceivedDate.HasValue); + Assert.IsFalse(repricerReceivedDate.IsPresent); + } + + [Test(Description = @"Condition : OnsetOfCurrentIllnessDate => 431, + InitialTreatmentDate => 454, + LastSeenDate => 304, + AcuteManifestationDate => 453, + AccidentDate => 439, + LastMensrualPeriod => 484, + LastXRayDate => 455, + HearingVisionPrescriptionDate => 471, + DisabilityDates => 361, + LastWorkedDate => 297, + AuthorizedReturnToWork => 296, + AdmissionDate => 435, + DischargeDate => 096, + AssumedRelinquishedCareDates => 090, + PropertyAndCasualtyDateOfFirstContact => 444, + RepricerReceivedDate => 050")] + public void Test5() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*361*D8*20061109 +DTP*297*D8*20061109 +DTP*296*D8*20061109 +DTP*435*D8*20061109 +DTP*096*D8*20061109 +DTP*090*D8*20061109 +DTP*444*D8*20061109 +DTP*050*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var onsetOfCurrentIllnessDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OnsetOfCurrentIllnessDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(onsetOfCurrentIllnessDate != null); + Assert.IsTrue(onsetOfCurrentIllnessDate.HasValue); + Assert.IsTrue(onsetOfCurrentIllnessDate.IsPresent); + Assert.AreEqual("431", onsetOfCurrentIllnessDate.ValueOrDefault()); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsTrue(initialTreatmentDate.HasValue); + Assert.IsTrue(initialTreatmentDate.IsPresent); + Assert.AreEqual("454", initialTreatmentDate.ValueOrDefault()); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsTrue(lastSeenDate.HasValue); + Assert.IsTrue(lastSeenDate.IsPresent); + Assert.AreEqual("304", lastSeenDate.ValueOrDefault()); + + var acuteManifestationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AcuteManifestationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(acuteManifestationDate != null); + Assert.IsTrue(acuteManifestationDate.HasValue); + Assert.IsTrue(acuteManifestationDate.IsPresent); + Assert.AreEqual("453", acuteManifestationDate.ValueOrDefault()); + + var accidentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AccidentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(accidentDate != null); + Assert.IsTrue(accidentDate.HasValue); + Assert.IsTrue(accidentDate.IsPresent); + Assert.AreEqual("439", accidentDate.ValueOrDefault()); + + var lastMensrualPeriod = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastMensrualPeriod) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastMensrualPeriod != null); + Assert.IsTrue(lastMensrualPeriod.HasValue); + Assert.IsTrue(lastMensrualPeriod.IsPresent); + Assert.AreEqual("484", lastMensrualPeriod.ValueOrDefault()); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsTrue(lastXRayDate.HasValue); + Assert.IsTrue(lastXRayDate.IsPresent); + Assert.AreEqual("455", lastXRayDate.ValueOrDefault()); + + var hearingVisionPrescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HearingVisionPrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(hearingVisionPrescriptionDate != null); + Assert.IsTrue(hearingVisionPrescriptionDate.HasValue); + Assert.IsTrue(hearingVisionPrescriptionDate.IsPresent); + Assert.AreEqual("471", hearingVisionPrescriptionDate.ValueOrDefault()); + + var disabilityDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DisabilityDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(disabilityDates != null); + Assert.IsTrue(disabilityDates.HasValue); + Assert.IsTrue(disabilityDates.IsPresent); + Assert.AreEqual("361", disabilityDates.ValueOrDefault()); + + var lastWorkedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastWorkedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastWorkedDate != null); + Assert.IsTrue(lastWorkedDate.HasValue); + Assert.IsTrue(lastWorkedDate.IsPresent); + Assert.AreEqual("297", lastWorkedDate.ValueOrDefault()); + + var authorizedReturnToWork = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AuthorizedReturnToWork) + .Select(x => x.DateTimeQualifier); + + Assume.That(authorizedReturnToWork != null); + Assert.IsTrue(authorizedReturnToWork.HasValue); + Assert.IsTrue(authorizedReturnToWork.IsPresent); + Assert.AreEqual("296", authorizedReturnToWork.ValueOrDefault()); + + var admissionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdmissionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(admissionDate != null); + Assert.IsTrue(admissionDate.HasValue); + Assert.IsTrue(admissionDate.IsPresent); + Assert.AreEqual("435", admissionDate.ValueOrDefault()); + + var dischargeDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DischargeDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(dischargeDate != null); + Assert.IsTrue(dischargeDate.HasValue); + Assert.IsTrue(dischargeDate.IsPresent); + Assert.AreEqual("096", dischargeDate.ValueOrDefault()); + + var assumedRelinquishedCareDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AssumedRelinquishedCareDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(assumedRelinquishedCareDates != null); + Assert.IsTrue(assumedRelinquishedCareDates.HasValue); + Assert.IsTrue(assumedRelinquishedCareDates.IsPresent); + Assert.AreEqual("090", assumedRelinquishedCareDates.ValueOrDefault()); + + var propertyAndCasualtyDateOfFirstContact = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PropertyAndCasualtyDateOfFirstContact) + .Select(x => x.DateTimeQualifier); + + Assume.That(propertyAndCasualtyDateOfFirstContact != null); + Assert.IsTrue(propertyAndCasualtyDateOfFirstContact.HasValue); + Assert.IsTrue(propertyAndCasualtyDateOfFirstContact.IsPresent); + Assert.AreEqual("444", propertyAndCasualtyDateOfFirstContact.ValueOrDefault()); + + var repricerReceivedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricerReceivedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(repricerReceivedDate != null); + Assert.IsTrue(repricerReceivedDate.HasValue); + Assert.IsTrue(repricerReceivedDate.IsPresent); + Assert.AreEqual("050", repricerReceivedDate.ValueOrDefault()); + } + + [Test(Description = @"Condition : OnsetOfCurrentIllnessDate => 431, + InitialTreatmentDate => 454, + LastSeenDate => 304, + AcuteManifestationDate => 453, + AccidentDate => 439, + LastMensrualPeriod => 484, + LastXRayDate => 455, + HearingVisionPrescriptionDate => 471, + DisabilityDates => 361, + LastWorkedDate => 297, + AuthorizedReturnToWork => 296, + AdmissionDate => 435, + DischargeDate => 096, + AssumedRelinquishedCareDates => 090, + PropertyAndCasualtyDateOfFirstContact => 444, + RepricerReceivedDate => 050")] + public void Test6() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*361*D8*20061109 +DTP*297*D8*20061109 +DTP*296*D8*20061109 +DTP*435*D8*20061109 +DTP*096*D8*20061109 +DTP*090*D8*20061109 +DTP*444*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var onsetOfCurrentIllnessDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OnsetOfCurrentIllnessDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(onsetOfCurrentIllnessDate != null); + Assert.IsTrue(onsetOfCurrentIllnessDate.HasValue); + Assert.IsTrue(onsetOfCurrentIllnessDate.IsPresent); + Assert.AreEqual("431", onsetOfCurrentIllnessDate.ValueOrDefault()); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsTrue(initialTreatmentDate.HasValue); + Assert.IsTrue(initialTreatmentDate.IsPresent); + Assert.AreEqual("454", initialTreatmentDate.ValueOrDefault()); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsTrue(lastSeenDate.HasValue); + Assert.IsTrue(lastSeenDate.IsPresent); + Assert.AreEqual("304", lastSeenDate.ValueOrDefault()); + + var acuteManifestationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AcuteManifestationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(acuteManifestationDate != null); + Assert.IsTrue(acuteManifestationDate.HasValue); + Assert.IsTrue(acuteManifestationDate.IsPresent); + Assert.AreEqual("453", acuteManifestationDate.ValueOrDefault()); + + var accidentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AccidentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(accidentDate != null); + Assert.IsTrue(accidentDate.HasValue); + Assert.IsTrue(accidentDate.IsPresent); + Assert.AreEqual("439", accidentDate.ValueOrDefault()); + + var lastMensrualPeriod = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastMensrualPeriod) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastMensrualPeriod != null); + Assert.IsTrue(lastMensrualPeriod.HasValue); + Assert.IsTrue(lastMensrualPeriod.IsPresent); + Assert.AreEqual("484", lastMensrualPeriod.ValueOrDefault()); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsTrue(lastXRayDate.HasValue); + Assert.IsTrue(lastXRayDate.IsPresent); + Assert.AreEqual("455", lastXRayDate.ValueOrDefault()); + + var hearingVisionPrescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HearingVisionPrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(hearingVisionPrescriptionDate != null); + Assert.IsTrue(hearingVisionPrescriptionDate.HasValue); + Assert.IsTrue(hearingVisionPrescriptionDate.IsPresent); + Assert.AreEqual("471", hearingVisionPrescriptionDate.ValueOrDefault()); + + var disabilityDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DisabilityDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(disabilityDates != null); + Assert.IsTrue(disabilityDates.HasValue); + Assert.IsTrue(disabilityDates.IsPresent); + Assert.AreEqual("361", disabilityDates.ValueOrDefault()); + + var lastWorkedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastWorkedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastWorkedDate != null); + Assert.IsTrue(lastWorkedDate.HasValue); + Assert.IsTrue(lastWorkedDate.IsPresent); + Assert.AreEqual("297", lastWorkedDate.ValueOrDefault()); + + var authorizedReturnToWork = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AuthorizedReturnToWork) + .Select(x => x.DateTimeQualifier); + + Assume.That(authorizedReturnToWork != null); + Assert.IsTrue(authorizedReturnToWork.HasValue); + Assert.IsTrue(authorizedReturnToWork.IsPresent); + Assert.AreEqual("296", authorizedReturnToWork.ValueOrDefault()); + + var admissionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdmissionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(admissionDate != null); + Assert.IsTrue(admissionDate.HasValue); + Assert.IsTrue(admissionDate.IsPresent); + Assert.AreEqual("435", admissionDate.ValueOrDefault()); + + var dischargeDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DischargeDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(dischargeDate != null); + Assert.IsTrue(dischargeDate.HasValue); + Assert.IsTrue(dischargeDate.IsPresent); + Assert.AreEqual("096", dischargeDate.ValueOrDefault()); + + var assumedRelinquishedCareDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AssumedRelinquishedCareDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(assumedRelinquishedCareDates != null); + Assert.IsTrue(assumedRelinquishedCareDates.HasValue); + Assert.IsTrue(assumedRelinquishedCareDates.IsPresent); + Assert.AreEqual("090", assumedRelinquishedCareDates.ValueOrDefault()); + + var propertyAndCasualtyDateOfFirstContact = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PropertyAndCasualtyDateOfFirstContact) + .Select(x => x.DateTimeQualifier); + + Assume.That(propertyAndCasualtyDateOfFirstContact != null); + Assert.IsTrue(propertyAndCasualtyDateOfFirstContact.HasValue); + Assert.IsTrue(propertyAndCasualtyDateOfFirstContact.IsPresent); + Assert.AreEqual("444", propertyAndCasualtyDateOfFirstContact.ValueOrDefault()); + + var repricerReceivedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricerReceivedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(repricerReceivedDate != null); + Assert.IsFalse(repricerReceivedDate.HasValue); + Assert.IsFalse(repricerReceivedDate.IsPresent); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P2ConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P2ConditionalTests.cs new file mode 100644 index 000000000..5b0b1e46b --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P2ConditionalTests.cs @@ -0,0 +1,819 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing837ProfessionalL2300P2ConditionalTests : + X12MacheteTestHarness + { + [Test(Description = @"Condition : OnsetOfCurrentIllnessDate => 431, + InitialTreatmentDate => 454, + LastSeenDate => 304, + AcuteManifestationDate => 453, + AccidentDate => 439, + LastMensrualPeriod => 484, + LastXRayDate => 455, + HearingVisionPrescriptionDate => 471, + DisabilityDates => 314, + LastWorkedDate => 297, + AuthorizedReturnToWork => 296, + AdmissionDate => 435, + DischargeDate => 096, + AssumedRelinquishedCareDates => 090, + PropertyAndCasualtyDateOfFirstContact => missing, + RepricerReceivedDate => missing")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*314*D8*20061109 +DTP*297*D8*20061109 +DTP*296*D8*20061109 +DTP*435*D8*20061109 +DTP*096*D8*20061109 +DTP*090*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var onsetOfCurrentIllnessDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OnsetOfCurrentIllnessDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(onsetOfCurrentIllnessDate != null); + Assert.IsTrue(onsetOfCurrentIllnessDate.HasValue); + Assert.IsTrue(onsetOfCurrentIllnessDate.IsPresent); + Assert.AreEqual("431", onsetOfCurrentIllnessDate.ValueOrDefault()); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsTrue(initialTreatmentDate.HasValue); + Assert.IsTrue(initialTreatmentDate.IsPresent); + Assert.AreEqual("454", initialTreatmentDate.ValueOrDefault()); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsTrue(lastSeenDate.HasValue); + Assert.IsTrue(lastSeenDate.IsPresent); + Assert.AreEqual("304", lastSeenDate.ValueOrDefault()); + + var acuteManifestationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AcuteManifestationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(acuteManifestationDate != null); + Assert.IsTrue(acuteManifestationDate.HasValue); + Assert.IsTrue(acuteManifestationDate.IsPresent); + Assert.AreEqual("453", acuteManifestationDate.ValueOrDefault()); + + var accidentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AccidentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(accidentDate != null); + Assert.IsTrue(accidentDate.HasValue); + Assert.IsTrue(accidentDate.IsPresent); + Assert.AreEqual("439", accidentDate.ValueOrDefault()); + + var lastMensrualPeriod = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastMensrualPeriod) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastMensrualPeriod != null); + Assert.IsTrue(lastMensrualPeriod.HasValue); + Assert.IsTrue(lastMensrualPeriod.IsPresent); + Assert.AreEqual("484", lastMensrualPeriod.ValueOrDefault()); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsTrue(lastXRayDate.HasValue); + Assert.IsTrue(lastXRayDate.IsPresent); + Assert.AreEqual("455", lastXRayDate.ValueOrDefault()); + + var hearingVisionPrescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HearingVisionPrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(hearingVisionPrescriptionDate != null); + Assert.IsTrue(hearingVisionPrescriptionDate.HasValue); + Assert.IsTrue(hearingVisionPrescriptionDate.IsPresent); + Assert.AreEqual("471", hearingVisionPrescriptionDate.ValueOrDefault()); + + var disabilityDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DisabilityDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(disabilityDates != null); + Assert.IsTrue(disabilityDates.HasValue); + Assert.IsTrue(disabilityDates.IsPresent); + Assert.AreEqual("314", disabilityDates.ValueOrDefault()); + + var lastWorkedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastWorkedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastWorkedDate != null); + Assert.IsTrue(lastWorkedDate.HasValue); + Assert.IsTrue(lastWorkedDate.IsPresent); + Assert.AreEqual("297", lastWorkedDate.ValueOrDefault()); + + var authorizedReturnToWork = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AuthorizedReturnToWork) + .Select(x => x.DateTimeQualifier); + + Assume.That(authorizedReturnToWork != null); + Assert.IsTrue(authorizedReturnToWork.HasValue); + Assert.IsTrue(authorizedReturnToWork.IsPresent); + Assert.AreEqual("296", authorizedReturnToWork.ValueOrDefault()); + + var admissionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdmissionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(admissionDate != null); + Assert.IsTrue(admissionDate.HasValue); + Assert.IsTrue(admissionDate.IsPresent); + Assert.AreEqual("435", admissionDate.ValueOrDefault()); + + var dischargeDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DischargeDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(dischargeDate != null); + Assert.IsTrue(dischargeDate.HasValue); + Assert.IsTrue(dischargeDate.IsPresent); + Assert.AreEqual("096", dischargeDate.ValueOrDefault()); + + var assumedRelinquishedCareDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AssumedRelinquishedCareDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(assumedRelinquishedCareDates != null); + Assert.IsTrue(assumedRelinquishedCareDates.HasValue); + Assert.IsTrue(assumedRelinquishedCareDates.IsPresent); + Assert.AreEqual("090", assumedRelinquishedCareDates.ValueOrDefault()); + + var propertyAndCasualtyDateOfFirstContact = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PropertyAndCasualtyDateOfFirstContact) + .Select(x => x.DateTimeQualifier); + + Assume.That(propertyAndCasualtyDateOfFirstContact != null); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.HasValue); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.IsPresent); + + var repricerReceivedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricerReceivedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(repricerReceivedDate != null); + Assert.IsFalse(repricerReceivedDate.HasValue); + Assert.IsFalse(repricerReceivedDate.IsPresent); + } + + [Test(Description = @"Condition : OnsetOfCurrentIllnessDate => 431, + InitialTreatmentDate => 454, + LastSeenDate => 304, + AcuteManifestationDate => 453, + AccidentDate => 439, + LastMensrualPeriod => 484, + LastXRayDate => 455, + HearingVisionPrescriptionDate => 471, + DisabilityDates => 360, + LastWorkedDate => 297, + AuthorizedReturnToWork => 296, + AdmissionDate => 435, + DischargeDate => 096, + AssumedRelinquishedCareDates => 090, + PropertyAndCasualtyDateOfFirstContact => missing, + RepricerReceivedDate => missing")] + public void Test2() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*360*D8*20061109 +DTP*297*D8*20061109 +DTP*296*D8*20061109 +DTP*435*D8*20061109 +DTP*096*D8*20061109 +DTP*090*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var onsetOfCurrentIllnessDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OnsetOfCurrentIllnessDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(onsetOfCurrentIllnessDate != null); + Assert.IsTrue(onsetOfCurrentIllnessDate.HasValue); + Assert.IsTrue(onsetOfCurrentIllnessDate.IsPresent); + Assert.AreEqual("431", onsetOfCurrentIllnessDate.ValueOrDefault()); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsTrue(initialTreatmentDate.HasValue); + Assert.IsTrue(initialTreatmentDate.IsPresent); + Assert.AreEqual("454", initialTreatmentDate.ValueOrDefault()); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsTrue(lastSeenDate.HasValue); + Assert.IsTrue(lastSeenDate.IsPresent); + Assert.AreEqual("304", lastSeenDate.ValueOrDefault()); + + var acuteManifestationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AcuteManifestationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(acuteManifestationDate != null); + Assert.IsTrue(acuteManifestationDate.HasValue); + Assert.IsTrue(acuteManifestationDate.IsPresent); + Assert.AreEqual("453", acuteManifestationDate.ValueOrDefault()); + + var accidentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AccidentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(accidentDate != null); + Assert.IsTrue(accidentDate.HasValue); + Assert.IsTrue(accidentDate.IsPresent); + Assert.AreEqual("439", accidentDate.ValueOrDefault()); + + var lastMensrualPeriod = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastMensrualPeriod) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastMensrualPeriod != null); + Assert.IsTrue(lastMensrualPeriod.HasValue); + Assert.IsTrue(lastMensrualPeriod.IsPresent); + Assert.AreEqual("484", lastMensrualPeriod.ValueOrDefault()); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsTrue(lastXRayDate.HasValue); + Assert.IsTrue(lastXRayDate.IsPresent); + Assert.AreEqual("455", lastXRayDate.ValueOrDefault()); + + var hearingVisionPrescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HearingVisionPrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(hearingVisionPrescriptionDate != null); + Assert.IsTrue(hearingVisionPrescriptionDate.HasValue); + Assert.IsTrue(hearingVisionPrescriptionDate.IsPresent); + Assert.AreEqual("471", hearingVisionPrescriptionDate.ValueOrDefault()); + + var disabilityDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DisabilityDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(disabilityDates != null); + Assert.IsTrue(disabilityDates.HasValue); + Assert.IsTrue(disabilityDates.IsPresent); + Assert.AreEqual("360", disabilityDates.ValueOrDefault()); + + var lastWorkedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastWorkedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastWorkedDate != null); + Assert.IsTrue(lastWorkedDate.HasValue); + Assert.IsTrue(lastWorkedDate.IsPresent); + Assert.AreEqual("297", lastWorkedDate.ValueOrDefault()); + + var authorizedReturnToWork = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AuthorizedReturnToWork) + .Select(x => x.DateTimeQualifier); + + Assume.That(authorizedReturnToWork != null); + Assert.IsTrue(authorizedReturnToWork.HasValue); + Assert.IsTrue(authorizedReturnToWork.IsPresent); + Assert.AreEqual("296", authorizedReturnToWork.ValueOrDefault()); + + var admissionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdmissionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(admissionDate != null); + Assert.IsTrue(admissionDate.HasValue); + Assert.IsTrue(admissionDate.IsPresent); + Assert.AreEqual("435", admissionDate.ValueOrDefault()); + + var dischargeDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DischargeDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(dischargeDate != null); + Assert.IsTrue(dischargeDate.HasValue); + Assert.IsTrue(dischargeDate.IsPresent); + Assert.AreEqual("096", dischargeDate.ValueOrDefault()); + + var assumedRelinquishedCareDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AssumedRelinquishedCareDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(assumedRelinquishedCareDates != null); + Assert.IsTrue(assumedRelinquishedCareDates.HasValue); + Assert.IsTrue(assumedRelinquishedCareDates.IsPresent); + Assert.AreEqual("090", assumedRelinquishedCareDates.ValueOrDefault()); + + var propertyAndCasualtyDateOfFirstContact = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PropertyAndCasualtyDateOfFirstContact) + .Select(x => x.DateTimeQualifier); + + Assume.That(propertyAndCasualtyDateOfFirstContact != null); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.HasValue); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.IsPresent); + + var repricerReceivedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricerReceivedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(repricerReceivedDate != null); + Assert.IsFalse(repricerReceivedDate.HasValue); + Assert.IsFalse(repricerReceivedDate.IsPresent); + } + + [Test(Description = @"Condition : OnsetOfCurrentIllnessDate => 431, + InitialTreatmentDate => 454, + LastSeenDate => 304, + AcuteManifestationDate => 453, + AccidentDate => 439, + LastMensrualPeriod => 484, + LastXRayDate => 455, + HearingVisionPrescriptionDate => 471, + DisabilityDates => 361, + LastWorkedDate => 297, + AuthorizedReturnToWork => 296, + AdmissionDate => 435, + DischargeDate => 096, + AssumedRelinquishedCareDates => 090, + PropertyAndCasualtyDateOfFirstContact => missing, + RepricerReceivedDate => missing")] + public void Test3() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*361*D8*20061109 +DTP*297*D8*20061109 +DTP*296*D8*20061109 +DTP*435*D8*20061109 +DTP*096*D8*20061109 +DTP*090*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var onsetOfCurrentIllnessDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OnsetOfCurrentIllnessDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(onsetOfCurrentIllnessDate != null); + Assert.IsTrue(onsetOfCurrentIllnessDate.HasValue); + Assert.IsTrue(onsetOfCurrentIllnessDate.IsPresent); + Assert.AreEqual("431", onsetOfCurrentIllnessDate.ValueOrDefault()); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsTrue(initialTreatmentDate.HasValue); + Assert.IsTrue(initialTreatmentDate.IsPresent); + Assert.AreEqual("454", initialTreatmentDate.ValueOrDefault()); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsTrue(lastSeenDate.HasValue); + Assert.IsTrue(lastSeenDate.IsPresent); + Assert.AreEqual("304", lastSeenDate.ValueOrDefault()); + + var acuteManifestationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AcuteManifestationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(acuteManifestationDate != null); + Assert.IsTrue(acuteManifestationDate.HasValue); + Assert.IsTrue(acuteManifestationDate.IsPresent); + Assert.AreEqual("453", acuteManifestationDate.ValueOrDefault()); + + var accidentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AccidentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(accidentDate != null); + Assert.IsTrue(accidentDate.HasValue); + Assert.IsTrue(accidentDate.IsPresent); + Assert.AreEqual("439", accidentDate.ValueOrDefault()); + + var lastMensrualPeriod = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastMensrualPeriod) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastMensrualPeriod != null); + Assert.IsTrue(lastMensrualPeriod.HasValue); + Assert.IsTrue(lastMensrualPeriod.IsPresent); + Assert.AreEqual("484", lastMensrualPeriod.ValueOrDefault()); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsTrue(lastXRayDate.HasValue); + Assert.IsTrue(lastXRayDate.IsPresent); + Assert.AreEqual("455", lastXRayDate.ValueOrDefault()); + + var hearingVisionPrescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HearingVisionPrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(hearingVisionPrescriptionDate != null); + Assert.IsTrue(hearingVisionPrescriptionDate.HasValue); + Assert.IsTrue(hearingVisionPrescriptionDate.IsPresent); + Assert.AreEqual("471", hearingVisionPrescriptionDate.ValueOrDefault()); + + var disabilityDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DisabilityDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(disabilityDates != null); + Assert.IsTrue(disabilityDates.HasValue); + Assert.IsTrue(disabilityDates.IsPresent); + Assert.AreEqual("361", disabilityDates.ValueOrDefault()); + + var lastWorkedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastWorkedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastWorkedDate != null); + Assert.IsTrue(lastWorkedDate.HasValue); + Assert.IsTrue(lastWorkedDate.IsPresent); + Assert.AreEqual("297", lastWorkedDate.ValueOrDefault()); + + var authorizedReturnToWork = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AuthorizedReturnToWork) + .Select(x => x.DateTimeQualifier); + + Assume.That(authorizedReturnToWork != null); + Assert.IsTrue(authorizedReturnToWork.HasValue); + Assert.IsTrue(authorizedReturnToWork.IsPresent); + Assert.AreEqual("296", authorizedReturnToWork.ValueOrDefault()); + + var admissionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdmissionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(admissionDate != null); + Assert.IsTrue(admissionDate.HasValue); + Assert.IsTrue(admissionDate.IsPresent); + Assert.AreEqual("435", admissionDate.ValueOrDefault()); + + var dischargeDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DischargeDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(dischargeDate != null); + Assert.IsTrue(dischargeDate.HasValue); + Assert.IsTrue(dischargeDate.IsPresent); + Assert.AreEqual("096", dischargeDate.ValueOrDefault()); + + var assumedRelinquishedCareDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AssumedRelinquishedCareDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(assumedRelinquishedCareDates != null); + Assert.IsTrue(assumedRelinquishedCareDates.HasValue); + Assert.IsTrue(assumedRelinquishedCareDates.IsPresent); + Assert.AreEqual("090", assumedRelinquishedCareDates.ValueOrDefault()); + + var propertyAndCasualtyDateOfFirstContact = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PropertyAndCasualtyDateOfFirstContact) + .Select(x => x.DateTimeQualifier); + + Assume.That(propertyAndCasualtyDateOfFirstContact != null); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.HasValue); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.IsPresent); + + var repricerReceivedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricerReceivedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(repricerReceivedDate != null); + Assert.IsFalse(repricerReceivedDate.HasValue); + Assert.IsFalse(repricerReceivedDate.IsPresent); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P3ConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P3ConditionalTests.cs new file mode 100644 index 000000000..84182bcf5 --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P3ConditionalTests.cs @@ -0,0 +1,813 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing837ProfessionalL2300P3ConditionalTests : + X12MacheteTestHarness + { + [Test(Description = @"Condition : OnsetOfCurrentIllnessDate => 431, + InitialTreatmentDate => 454, + LastSeenDate => 304, + AcuteManifestationDate => 453, + AccidentDate => 439, + LastMensrualPeriod => 484, + LastXRayDate => 455, + HearingVisionPrescriptionDate => 471, + DisabilityDates => 314, + LastWorkedDate => 297, + AuthorizedReturnToWork => 296, + AdmissionDate => 435, + DischargeDate => 096, + AssumedRelinquishedCareDates => missing, + PropertyAndCasualtyDateOfFirstContact => missing, + RepricerReceivedDate => missing")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*314*D8*20061109 +DTP*297*D8*20061109 +DTP*296*D8*20061109 +DTP*435*D8*20061109 +DTP*096*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var onsetOfCurrentIllnessDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OnsetOfCurrentIllnessDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(onsetOfCurrentIllnessDate != null); + Assert.IsTrue(onsetOfCurrentIllnessDate.HasValue); + Assert.IsTrue(onsetOfCurrentIllnessDate.IsPresent); + Assert.AreEqual("431", onsetOfCurrentIllnessDate.ValueOrDefault()); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsTrue(initialTreatmentDate.HasValue); + Assert.IsTrue(initialTreatmentDate.IsPresent); + Assert.AreEqual("454", initialTreatmentDate.ValueOrDefault()); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsTrue(lastSeenDate.HasValue); + Assert.IsTrue(lastSeenDate.IsPresent); + Assert.AreEqual("304", lastSeenDate.ValueOrDefault()); + + var acuteManifestationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AcuteManifestationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(acuteManifestationDate != null); + Assert.IsTrue(acuteManifestationDate.HasValue); + Assert.IsTrue(acuteManifestationDate.IsPresent); + Assert.AreEqual("453", acuteManifestationDate.ValueOrDefault()); + + var accidentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AccidentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(accidentDate != null); + Assert.IsTrue(accidentDate.HasValue); + Assert.IsTrue(accidentDate.IsPresent); + Assert.AreEqual("439", accidentDate.ValueOrDefault()); + + var lastMensrualPeriod = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastMensrualPeriod) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastMensrualPeriod != null); + Assert.IsTrue(lastMensrualPeriod.HasValue); + Assert.IsTrue(lastMensrualPeriod.IsPresent); + Assert.AreEqual("484", lastMensrualPeriod.ValueOrDefault()); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsTrue(lastXRayDate.HasValue); + Assert.IsTrue(lastXRayDate.IsPresent); + Assert.AreEqual("455", lastXRayDate.ValueOrDefault()); + + var hearingVisionPrescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HearingVisionPrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(hearingVisionPrescriptionDate != null); + Assert.IsTrue(hearingVisionPrescriptionDate.HasValue); + Assert.IsTrue(hearingVisionPrescriptionDate.IsPresent); + Assert.AreEqual("471", hearingVisionPrescriptionDate.ValueOrDefault()); + + var disabilityDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DisabilityDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(disabilityDates != null); + Assert.IsTrue(disabilityDates.HasValue); + Assert.IsTrue(disabilityDates.IsPresent); + Assert.AreEqual("314", disabilityDates.ValueOrDefault()); + + var lastWorkedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastWorkedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastWorkedDate != null); + Assert.IsTrue(lastWorkedDate.HasValue); + Assert.IsTrue(lastWorkedDate.IsPresent); + Assert.AreEqual("297", lastWorkedDate.ValueOrDefault()); + + var authorizedReturnToWork = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AuthorizedReturnToWork) + .Select(x => x.DateTimeQualifier); + + Assume.That(authorizedReturnToWork != null); + Assert.IsTrue(authorizedReturnToWork.HasValue); + Assert.IsTrue(authorizedReturnToWork.IsPresent); + Assert.AreEqual("296", authorizedReturnToWork.ValueOrDefault()); + + var admissionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdmissionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(admissionDate != null); + Assert.IsTrue(admissionDate.HasValue); + Assert.IsTrue(admissionDate.IsPresent); + Assert.AreEqual("435", admissionDate.ValueOrDefault()); + + var dischargeDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DischargeDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(dischargeDate != null); + Assert.IsTrue(dischargeDate.HasValue); + Assert.IsTrue(dischargeDate.IsPresent); + Assert.AreEqual("096", dischargeDate.ValueOrDefault()); + + var assumedRelinquishedCareDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AssumedRelinquishedCareDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(assumedRelinquishedCareDates != null); + Assert.IsFalse(assumedRelinquishedCareDates.HasValue); + Assert.IsFalse(assumedRelinquishedCareDates.IsPresent); + + var propertyAndCasualtyDateOfFirstContact = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PropertyAndCasualtyDateOfFirstContact) + .Select(x => x.DateTimeQualifier); + + Assume.That(propertyAndCasualtyDateOfFirstContact != null); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.HasValue); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.IsPresent); + + var repricerReceivedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricerReceivedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(repricerReceivedDate != null); + Assert.IsFalse(repricerReceivedDate.HasValue); + Assert.IsFalse(repricerReceivedDate.IsPresent); + } + + [Test(Description = @"Condition : OnsetOfCurrentIllnessDate => 431, + InitialTreatmentDate => 454, + LastSeenDate => 304, + AcuteManifestationDate => 453, + AccidentDate => 439, + LastMensrualPeriod => 484, + LastXRayDate => 455, + HearingVisionPrescriptionDate => 471, + DisabilityDates => 360, + LastWorkedDate => 297, + AuthorizedReturnToWork => 296, + AdmissionDate => 435, + DischargeDate => 096, + AssumedRelinquishedCareDates => missing, + PropertyAndCasualtyDateOfFirstContact => missing, + RepricerReceivedDate => missing")] + public void Test2() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*360*D8*20061109 +DTP*297*D8*20061109 +DTP*296*D8*20061109 +DTP*435*D8*20061109 +DTP*096*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var onsetOfCurrentIllnessDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OnsetOfCurrentIllnessDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(onsetOfCurrentIllnessDate != null); + Assert.IsTrue(onsetOfCurrentIllnessDate.HasValue); + Assert.IsTrue(onsetOfCurrentIllnessDate.IsPresent); + Assert.AreEqual("431", onsetOfCurrentIllnessDate.ValueOrDefault()); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsTrue(initialTreatmentDate.HasValue); + Assert.IsTrue(initialTreatmentDate.IsPresent); + Assert.AreEqual("454", initialTreatmentDate.ValueOrDefault()); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsTrue(lastSeenDate.HasValue); + Assert.IsTrue(lastSeenDate.IsPresent); + Assert.AreEqual("304", lastSeenDate.ValueOrDefault()); + + var acuteManifestationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AcuteManifestationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(acuteManifestationDate != null); + Assert.IsTrue(acuteManifestationDate.HasValue); + Assert.IsTrue(acuteManifestationDate.IsPresent); + Assert.AreEqual("453", acuteManifestationDate.ValueOrDefault()); + + var accidentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AccidentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(accidentDate != null); + Assert.IsTrue(accidentDate.HasValue); + Assert.IsTrue(accidentDate.IsPresent); + Assert.AreEqual("439", accidentDate.ValueOrDefault()); + + var lastMensrualPeriod = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastMensrualPeriod) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastMensrualPeriod != null); + Assert.IsTrue(lastMensrualPeriod.HasValue); + Assert.IsTrue(lastMensrualPeriod.IsPresent); + Assert.AreEqual("484", lastMensrualPeriod.ValueOrDefault()); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsTrue(lastXRayDate.HasValue); + Assert.IsTrue(lastXRayDate.IsPresent); + Assert.AreEqual("455", lastXRayDate.ValueOrDefault()); + + var hearingVisionPrescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HearingVisionPrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(hearingVisionPrescriptionDate != null); + Assert.IsTrue(hearingVisionPrescriptionDate.HasValue); + Assert.IsTrue(hearingVisionPrescriptionDate.IsPresent); + Assert.AreEqual("471", hearingVisionPrescriptionDate.ValueOrDefault()); + + var disabilityDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DisabilityDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(disabilityDates != null); + Assert.IsTrue(disabilityDates.HasValue); + Assert.IsTrue(disabilityDates.IsPresent); + Assert.AreEqual("360", disabilityDates.ValueOrDefault()); + + var lastWorkedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastWorkedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastWorkedDate != null); + Assert.IsTrue(lastWorkedDate.HasValue); + Assert.IsTrue(lastWorkedDate.IsPresent); + Assert.AreEqual("297", lastWorkedDate.ValueOrDefault()); + + var authorizedReturnToWork = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AuthorizedReturnToWork) + .Select(x => x.DateTimeQualifier); + + Assume.That(authorizedReturnToWork != null); + Assert.IsTrue(authorizedReturnToWork.HasValue); + Assert.IsTrue(authorizedReturnToWork.IsPresent); + Assert.AreEqual("296", authorizedReturnToWork.ValueOrDefault()); + + var admissionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdmissionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(admissionDate != null); + Assert.IsTrue(admissionDate.HasValue); + Assert.IsTrue(admissionDate.IsPresent); + Assert.AreEqual("435", admissionDate.ValueOrDefault()); + + var dischargeDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DischargeDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(dischargeDate != null); + Assert.IsTrue(dischargeDate.HasValue); + Assert.IsTrue(dischargeDate.IsPresent); + Assert.AreEqual("096", dischargeDate.ValueOrDefault()); + + var assumedRelinquishedCareDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AssumedRelinquishedCareDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(assumedRelinquishedCareDates != null); + Assert.IsFalse(assumedRelinquishedCareDates.HasValue); + Assert.IsFalse(assumedRelinquishedCareDates.IsPresent); + + var propertyAndCasualtyDateOfFirstContact = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PropertyAndCasualtyDateOfFirstContact) + .Select(x => x.DateTimeQualifier); + + Assume.That(propertyAndCasualtyDateOfFirstContact != null); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.HasValue); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.IsPresent); + + var repricerReceivedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricerReceivedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(repricerReceivedDate != null); + Assert.IsFalse(repricerReceivedDate.HasValue); + Assert.IsFalse(repricerReceivedDate.IsPresent); + } + + [Test(Description = @"Condition : OnsetOfCurrentIllnessDate => 431, + InitialTreatmentDate => 454, + LastSeenDate => 304, + AcuteManifestationDate => 453, + AccidentDate => 439, + LastMensrualPeriod => 484, + LastXRayDate => 455, + HearingVisionPrescriptionDate => 471, + DisabilityDates => 361, + LastWorkedDate => 297, + AuthorizedReturnToWork => 296, + AdmissionDate => 435, + DischargeDate => 096, + AssumedRelinquishedCareDates => missing, + PropertyAndCasualtyDateOfFirstContact => missing, + RepricerReceivedDate => missing")] + public void Test3() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*361*D8*20061109 +DTP*297*D8*20061109 +DTP*296*D8*20061109 +DTP*435*D8*20061109 +DTP*096*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var onsetOfCurrentIllnessDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OnsetOfCurrentIllnessDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(onsetOfCurrentIllnessDate != null); + Assert.IsTrue(onsetOfCurrentIllnessDate.HasValue); + Assert.IsTrue(onsetOfCurrentIllnessDate.IsPresent); + Assert.AreEqual("431", onsetOfCurrentIllnessDate.ValueOrDefault()); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsTrue(initialTreatmentDate.HasValue); + Assert.IsTrue(initialTreatmentDate.IsPresent); + Assert.AreEqual("454", initialTreatmentDate.ValueOrDefault()); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsTrue(lastSeenDate.HasValue); + Assert.IsTrue(lastSeenDate.IsPresent); + Assert.AreEqual("304", lastSeenDate.ValueOrDefault()); + + var acuteManifestationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AcuteManifestationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(acuteManifestationDate != null); + Assert.IsTrue(acuteManifestationDate.HasValue); + Assert.IsTrue(acuteManifestationDate.IsPresent); + Assert.AreEqual("453", acuteManifestationDate.ValueOrDefault()); + + var accidentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AccidentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(accidentDate != null); + Assert.IsTrue(accidentDate.HasValue); + Assert.IsTrue(accidentDate.IsPresent); + Assert.AreEqual("439", accidentDate.ValueOrDefault()); + + var lastMensrualPeriod = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastMensrualPeriod) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastMensrualPeriod != null); + Assert.IsTrue(lastMensrualPeriod.HasValue); + Assert.IsTrue(lastMensrualPeriod.IsPresent); + Assert.AreEqual("484", lastMensrualPeriod.ValueOrDefault()); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsTrue(lastXRayDate.HasValue); + Assert.IsTrue(lastXRayDate.IsPresent); + Assert.AreEqual("455", lastXRayDate.ValueOrDefault()); + + var hearingVisionPrescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HearingVisionPrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(hearingVisionPrescriptionDate != null); + Assert.IsTrue(hearingVisionPrescriptionDate.HasValue); + Assert.IsTrue(hearingVisionPrescriptionDate.IsPresent); + Assert.AreEqual("471", hearingVisionPrescriptionDate.ValueOrDefault()); + + var disabilityDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DisabilityDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(disabilityDates != null); + Assert.IsTrue(disabilityDates.HasValue); + Assert.IsTrue(disabilityDates.IsPresent); + Assert.AreEqual("361", disabilityDates.ValueOrDefault()); + + var lastWorkedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastWorkedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastWorkedDate != null); + Assert.IsTrue(lastWorkedDate.HasValue); + Assert.IsTrue(lastWorkedDate.IsPresent); + Assert.AreEqual("297", lastWorkedDate.ValueOrDefault()); + + var authorizedReturnToWork = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AuthorizedReturnToWork) + .Select(x => x.DateTimeQualifier); + + Assume.That(authorizedReturnToWork != null); + Assert.IsTrue(authorizedReturnToWork.HasValue); + Assert.IsTrue(authorizedReturnToWork.IsPresent); + Assert.AreEqual("296", authorizedReturnToWork.ValueOrDefault()); + + var admissionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdmissionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(admissionDate != null); + Assert.IsTrue(admissionDate.HasValue); + Assert.IsTrue(admissionDate.IsPresent); + Assert.AreEqual("435", admissionDate.ValueOrDefault()); + + var dischargeDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DischargeDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(dischargeDate != null); + Assert.IsTrue(dischargeDate.HasValue); + Assert.IsTrue(dischargeDate.IsPresent); + Assert.AreEqual("096", dischargeDate.ValueOrDefault()); + + var assumedRelinquishedCareDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AssumedRelinquishedCareDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(assumedRelinquishedCareDates != null); + Assert.IsFalse(assumedRelinquishedCareDates.HasValue); + Assert.IsFalse(assumedRelinquishedCareDates.IsPresent); + + var propertyAndCasualtyDateOfFirstContact = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PropertyAndCasualtyDateOfFirstContact) + .Select(x => x.DateTimeQualifier); + + Assume.That(propertyAndCasualtyDateOfFirstContact != null); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.HasValue); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.IsPresent); + + var repricerReceivedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricerReceivedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(repricerReceivedDate != null); + Assert.IsFalse(repricerReceivedDate.HasValue); + Assert.IsFalse(repricerReceivedDate.IsPresent); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P4ConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P4ConditionalTests.cs new file mode 100644 index 000000000..d23d04ea8 --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P4ConditionalTests.cs @@ -0,0 +1,807 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing837ProfessionalL2300P4ConditionalTests : + X12MacheteTestHarness + { + [Test(Description = @"Condition : OnsetOfCurrentIllnessDate => 431, + InitialTreatmentDate => 454, + LastSeenDate => 304, + AcuteManifestationDate => 453, + AccidentDate => 439, + LastMensrualPeriod => 484, + LastXRayDate => 455, + HearingVisionPrescriptionDate => 471, + DisabilityDates => 314, + LastWorkedDate => 297, + AuthorizedReturnToWork => 296, + AdmissionDate => 435, + DischargeDate => missing, + AssumedRelinquishedCareDates => missing, + PropertyAndCasualtyDateOfFirstContact => missing, + RepricerReceivedDate => missing")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*314*D8*20061109 +DTP*297*D8*20061109 +DTP*296*D8*20061109 +DTP*435*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var onsetOfCurrentIllnessDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OnsetOfCurrentIllnessDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(onsetOfCurrentIllnessDate != null); + Assert.IsTrue(onsetOfCurrentIllnessDate.HasValue); + Assert.IsTrue(onsetOfCurrentIllnessDate.IsPresent); + Assert.AreEqual("431", onsetOfCurrentIllnessDate.ValueOrDefault()); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsTrue(initialTreatmentDate.HasValue); + Assert.IsTrue(initialTreatmentDate.IsPresent); + Assert.AreEqual("454", initialTreatmentDate.ValueOrDefault()); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsTrue(lastSeenDate.HasValue); + Assert.IsTrue(lastSeenDate.IsPresent); + Assert.AreEqual("304", lastSeenDate.ValueOrDefault()); + + var acuteManifestationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AcuteManifestationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(acuteManifestationDate != null); + Assert.IsTrue(acuteManifestationDate.HasValue); + Assert.IsTrue(acuteManifestationDate.IsPresent); + Assert.AreEqual("453", acuteManifestationDate.ValueOrDefault()); + + var accidentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AccidentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(accidentDate != null); + Assert.IsTrue(accidentDate.HasValue); + Assert.IsTrue(accidentDate.IsPresent); + Assert.AreEqual("439", accidentDate.ValueOrDefault()); + + var lastMensrualPeriod = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastMensrualPeriod) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastMensrualPeriod != null); + Assert.IsTrue(lastMensrualPeriod.HasValue); + Assert.IsTrue(lastMensrualPeriod.IsPresent); + Assert.AreEqual("484", lastMensrualPeriod.ValueOrDefault()); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsTrue(lastXRayDate.HasValue); + Assert.IsTrue(lastXRayDate.IsPresent); + Assert.AreEqual("455", lastXRayDate.ValueOrDefault()); + + var hearingVisionPrescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HearingVisionPrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(hearingVisionPrescriptionDate != null); + Assert.IsTrue(hearingVisionPrescriptionDate.HasValue); + Assert.IsTrue(hearingVisionPrescriptionDate.IsPresent); + Assert.AreEqual("471", hearingVisionPrescriptionDate.ValueOrDefault()); + + var disabilityDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DisabilityDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(disabilityDates != null); + Assert.IsTrue(disabilityDates.HasValue); + Assert.IsTrue(disabilityDates.IsPresent); + Assert.AreEqual("314", disabilityDates.ValueOrDefault()); + + var lastWorkedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastWorkedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastWorkedDate != null); + Assert.IsTrue(lastWorkedDate.HasValue); + Assert.IsTrue(lastWorkedDate.IsPresent); + Assert.AreEqual("297", lastWorkedDate.ValueOrDefault()); + + var authorizedReturnToWork = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AuthorizedReturnToWork) + .Select(x => x.DateTimeQualifier); + + Assume.That(authorizedReturnToWork != null); + Assert.IsTrue(authorizedReturnToWork.HasValue); + Assert.IsTrue(authorizedReturnToWork.IsPresent); + Assert.AreEqual("296", authorizedReturnToWork.ValueOrDefault()); + + var admissionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdmissionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(admissionDate != null); + Assert.IsTrue(admissionDate.HasValue); + Assert.IsTrue(admissionDate.IsPresent); + Assert.AreEqual("435", admissionDate.ValueOrDefault()); + + var dischargeDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DischargeDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(dischargeDate != null); + Assert.IsFalse(dischargeDate.HasValue); + Assert.IsFalse(dischargeDate.IsPresent); + + var assumedRelinquishedCareDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AssumedRelinquishedCareDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(assumedRelinquishedCareDates != null); + Assert.IsFalse(assumedRelinquishedCareDates.HasValue); + Assert.IsFalse(assumedRelinquishedCareDates.IsPresent); + + var propertyAndCasualtyDateOfFirstContact = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PropertyAndCasualtyDateOfFirstContact) + .Select(x => x.DateTimeQualifier); + + Assume.That(propertyAndCasualtyDateOfFirstContact != null); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.HasValue); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.IsPresent); + + var repricerReceivedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricerReceivedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(repricerReceivedDate != null); + Assert.IsFalse(repricerReceivedDate.HasValue); + Assert.IsFalse(repricerReceivedDate.IsPresent); + } + + [Test(Description = @"Condition : OnsetOfCurrentIllnessDate => 431, + InitialTreatmentDate => 454, + LastSeenDate => 304, + AcuteManifestationDate => 453, + AccidentDate => 439, + LastMensrualPeriod => 484, + LastXRayDate => 455, + HearingVisionPrescriptionDate => 471, + DisabilityDates => 360, + LastWorkedDate => 297, + AuthorizedReturnToWork => 296, + AdmissionDate => 435, + DischargeDate => missing, + AssumedRelinquishedCareDates => missing, + PropertyAndCasualtyDateOfFirstContact => missing, + RepricerReceivedDate => missing")] + public void Test2() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*360*D8*20061109 +DTP*297*D8*20061109 +DTP*296*D8*20061109 +DTP*435*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var onsetOfCurrentIllnessDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OnsetOfCurrentIllnessDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(onsetOfCurrentIllnessDate != null); + Assert.IsTrue(onsetOfCurrentIllnessDate.HasValue); + Assert.IsTrue(onsetOfCurrentIllnessDate.IsPresent); + Assert.AreEqual("431", onsetOfCurrentIllnessDate.ValueOrDefault()); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsTrue(initialTreatmentDate.HasValue); + Assert.IsTrue(initialTreatmentDate.IsPresent); + Assert.AreEqual("454", initialTreatmentDate.ValueOrDefault()); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsTrue(lastSeenDate.HasValue); + Assert.IsTrue(lastSeenDate.IsPresent); + Assert.AreEqual("304", lastSeenDate.ValueOrDefault()); + + var acuteManifestationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AcuteManifestationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(acuteManifestationDate != null); + Assert.IsTrue(acuteManifestationDate.HasValue); + Assert.IsTrue(acuteManifestationDate.IsPresent); + Assert.AreEqual("453", acuteManifestationDate.ValueOrDefault()); + + var accidentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AccidentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(accidentDate != null); + Assert.IsTrue(accidentDate.HasValue); + Assert.IsTrue(accidentDate.IsPresent); + Assert.AreEqual("439", accidentDate.ValueOrDefault()); + + var lastMensrualPeriod = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastMensrualPeriod) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastMensrualPeriod != null); + Assert.IsTrue(lastMensrualPeriod.HasValue); + Assert.IsTrue(lastMensrualPeriod.IsPresent); + Assert.AreEqual("484", lastMensrualPeriod.ValueOrDefault()); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsTrue(lastXRayDate.HasValue); + Assert.IsTrue(lastXRayDate.IsPresent); + Assert.AreEqual("455", lastXRayDate.ValueOrDefault()); + + var hearingVisionPrescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HearingVisionPrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(hearingVisionPrescriptionDate != null); + Assert.IsTrue(hearingVisionPrescriptionDate.HasValue); + Assert.IsTrue(hearingVisionPrescriptionDate.IsPresent); + Assert.AreEqual("471", hearingVisionPrescriptionDate.ValueOrDefault()); + + var disabilityDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DisabilityDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(disabilityDates != null); + Assert.IsTrue(disabilityDates.HasValue); + Assert.IsTrue(disabilityDates.IsPresent); + Assert.AreEqual("360", disabilityDates.ValueOrDefault()); + + var lastWorkedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastWorkedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastWorkedDate != null); + Assert.IsTrue(lastWorkedDate.HasValue); + Assert.IsTrue(lastWorkedDate.IsPresent); + Assert.AreEqual("297", lastWorkedDate.ValueOrDefault()); + + var authorizedReturnToWork = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AuthorizedReturnToWork) + .Select(x => x.DateTimeQualifier); + + Assume.That(authorizedReturnToWork != null); + Assert.IsTrue(authorizedReturnToWork.HasValue); + Assert.IsTrue(authorizedReturnToWork.IsPresent); + Assert.AreEqual("296", authorizedReturnToWork.ValueOrDefault()); + + var admissionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdmissionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(admissionDate != null); + Assert.IsTrue(admissionDate.HasValue); + Assert.IsTrue(admissionDate.IsPresent); + Assert.AreEqual("435", admissionDate.ValueOrDefault()); + + var dischargeDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DischargeDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(dischargeDate != null); + Assert.IsFalse(dischargeDate.HasValue); + Assert.IsFalse(dischargeDate.IsPresent); + + var assumedRelinquishedCareDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AssumedRelinquishedCareDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(assumedRelinquishedCareDates != null); + Assert.IsFalse(assumedRelinquishedCareDates.HasValue); + Assert.IsFalse(assumedRelinquishedCareDates.IsPresent); + + var propertyAndCasualtyDateOfFirstContact = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PropertyAndCasualtyDateOfFirstContact) + .Select(x => x.DateTimeQualifier); + + Assume.That(propertyAndCasualtyDateOfFirstContact != null); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.HasValue); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.IsPresent); + + var repricerReceivedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricerReceivedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(repricerReceivedDate != null); + Assert.IsFalse(repricerReceivedDate.HasValue); + Assert.IsFalse(repricerReceivedDate.IsPresent); + } + + [Test(Description = @"Condition : OnsetOfCurrentIllnessDate => 431, + InitialTreatmentDate => 454, + LastSeenDate => 304, + AcuteManifestationDate => 453, + AccidentDate => 439, + LastMensrualPeriod => 484, + LastXRayDate => 455, + HearingVisionPrescriptionDate => 471, + DisabilityDates => 361, + LastWorkedDate => 297, + AuthorizedReturnToWork => 296, + AdmissionDate => 435, + DischargeDate => missing, + AssumedRelinquishedCareDates => missing, + PropertyAndCasualtyDateOfFirstContact => missing, + RepricerReceivedDate => missing")] + public void Test3() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*361*D8*20061109 +DTP*297*D8*20061109 +DTP*296*D8*20061109 +DTP*435*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var onsetOfCurrentIllnessDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OnsetOfCurrentIllnessDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(onsetOfCurrentIllnessDate != null); + Assert.IsTrue(onsetOfCurrentIllnessDate.HasValue); + Assert.IsTrue(onsetOfCurrentIllnessDate.IsPresent); + Assert.AreEqual("431", onsetOfCurrentIllnessDate.ValueOrDefault()); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsTrue(initialTreatmentDate.HasValue); + Assert.IsTrue(initialTreatmentDate.IsPresent); + Assert.AreEqual("454", initialTreatmentDate.ValueOrDefault()); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsTrue(lastSeenDate.HasValue); + Assert.IsTrue(lastSeenDate.IsPresent); + Assert.AreEqual("304", lastSeenDate.ValueOrDefault()); + + var acuteManifestationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AcuteManifestationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(acuteManifestationDate != null); + Assert.IsTrue(acuteManifestationDate.HasValue); + Assert.IsTrue(acuteManifestationDate.IsPresent); + Assert.AreEqual("453", acuteManifestationDate.ValueOrDefault()); + + var accidentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AccidentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(accidentDate != null); + Assert.IsTrue(accidentDate.HasValue); + Assert.IsTrue(accidentDate.IsPresent); + Assert.AreEqual("439", accidentDate.ValueOrDefault()); + + var lastMensrualPeriod = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastMensrualPeriod) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastMensrualPeriod != null); + Assert.IsTrue(lastMensrualPeriod.HasValue); + Assert.IsTrue(lastMensrualPeriod.IsPresent); + Assert.AreEqual("484", lastMensrualPeriod.ValueOrDefault()); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsTrue(lastXRayDate.HasValue); + Assert.IsTrue(lastXRayDate.IsPresent); + Assert.AreEqual("455", lastXRayDate.ValueOrDefault()); + + var hearingVisionPrescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HearingVisionPrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(hearingVisionPrescriptionDate != null); + Assert.IsTrue(hearingVisionPrescriptionDate.HasValue); + Assert.IsTrue(hearingVisionPrescriptionDate.IsPresent); + Assert.AreEqual("471", hearingVisionPrescriptionDate.ValueOrDefault()); + + var disabilityDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DisabilityDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(disabilityDates != null); + Assert.IsTrue(disabilityDates.HasValue); + Assert.IsTrue(disabilityDates.IsPresent); + Assert.AreEqual("361", disabilityDates.ValueOrDefault()); + + var lastWorkedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastWorkedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastWorkedDate != null); + Assert.IsTrue(lastWorkedDate.HasValue); + Assert.IsTrue(lastWorkedDate.IsPresent); + Assert.AreEqual("297", lastWorkedDate.ValueOrDefault()); + + var authorizedReturnToWork = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AuthorizedReturnToWork) + .Select(x => x.DateTimeQualifier); + + Assume.That(authorizedReturnToWork != null); + Assert.IsTrue(authorizedReturnToWork.HasValue); + Assert.IsTrue(authorizedReturnToWork.IsPresent); + Assert.AreEqual("296", authorizedReturnToWork.ValueOrDefault()); + + var admissionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdmissionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(admissionDate != null); + Assert.IsTrue(admissionDate.HasValue); + Assert.IsTrue(admissionDate.IsPresent); + Assert.AreEqual("435", admissionDate.ValueOrDefault()); + + var dischargeDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DischargeDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(dischargeDate != null); + Assert.IsFalse(dischargeDate.HasValue); + Assert.IsFalse(dischargeDate.IsPresent); + + var assumedRelinquishedCareDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AssumedRelinquishedCareDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(assumedRelinquishedCareDates != null); + Assert.IsFalse(assumedRelinquishedCareDates.HasValue); + Assert.IsFalse(assumedRelinquishedCareDates.IsPresent); + + var propertyAndCasualtyDateOfFirstContact = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PropertyAndCasualtyDateOfFirstContact) + .Select(x => x.DateTimeQualifier); + + Assume.That(propertyAndCasualtyDateOfFirstContact != null); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.HasValue); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.IsPresent); + + var repricerReceivedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricerReceivedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(repricerReceivedDate != null); + Assert.IsFalse(repricerReceivedDate.HasValue); + Assert.IsFalse(repricerReceivedDate.IsPresent); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P5ConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P5ConditionalTests.cs new file mode 100644 index 000000000..a1f25fe4e --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P5ConditionalTests.cs @@ -0,0 +1,801 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing837ProfessionalL2300P5ConditionalTests : + X12MacheteTestHarness + { + [Test(Description = @"Condition : OnsetOfCurrentIllnessDate => 431, + InitialTreatmentDate => 454, + LastSeenDate => 304, + AcuteManifestationDate => 453, + AccidentDate => 439, + LastMensrualPeriod => 484, + LastXRayDate => 455, + HearingVisionPrescriptionDate => 471, + DisabilityDates => 314, + LastWorkedDate => 297, + AuthorizedReturnToWork => 296, + AdmissionDate => missing, + DischargeDate => missing, + AssumedRelinquishedCareDates => missing, + PropertyAndCasualtyDateOfFirstContact => missing, + RepricerReceivedDate => missing")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*314*D8*20061109 +DTP*297*D8*20061109 +DTP*296*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var onsetOfCurrentIllnessDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OnsetOfCurrentIllnessDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(onsetOfCurrentIllnessDate != null); + Assert.IsTrue(onsetOfCurrentIllnessDate.HasValue); + Assert.IsTrue(onsetOfCurrentIllnessDate.IsPresent); + Assert.AreEqual("431", onsetOfCurrentIllnessDate.ValueOrDefault()); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsTrue(initialTreatmentDate.HasValue); + Assert.IsTrue(initialTreatmentDate.IsPresent); + Assert.AreEqual("454", initialTreatmentDate.ValueOrDefault()); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsTrue(lastSeenDate.HasValue); + Assert.IsTrue(lastSeenDate.IsPresent); + Assert.AreEqual("304", lastSeenDate.ValueOrDefault()); + + var acuteManifestationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AcuteManifestationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(acuteManifestationDate != null); + Assert.IsTrue(acuteManifestationDate.HasValue); + Assert.IsTrue(acuteManifestationDate.IsPresent); + Assert.AreEqual("453", acuteManifestationDate.ValueOrDefault()); + + var accidentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AccidentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(accidentDate != null); + Assert.IsTrue(accidentDate.HasValue); + Assert.IsTrue(accidentDate.IsPresent); + Assert.AreEqual("439", accidentDate.ValueOrDefault()); + + var lastMensrualPeriod = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastMensrualPeriod) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastMensrualPeriod != null); + Assert.IsTrue(lastMensrualPeriod.HasValue); + Assert.IsTrue(lastMensrualPeriod.IsPresent); + Assert.AreEqual("484", lastMensrualPeriod.ValueOrDefault()); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsTrue(lastXRayDate.HasValue); + Assert.IsTrue(lastXRayDate.IsPresent); + Assert.AreEqual("455", lastXRayDate.ValueOrDefault()); + + var hearingVisionPrescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HearingVisionPrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(hearingVisionPrescriptionDate != null); + Assert.IsTrue(hearingVisionPrescriptionDate.HasValue); + Assert.IsTrue(hearingVisionPrescriptionDate.IsPresent); + Assert.AreEqual("471", hearingVisionPrescriptionDate.ValueOrDefault()); + + var disabilityDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DisabilityDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(disabilityDates != null); + Assert.IsTrue(disabilityDates.HasValue); + Assert.IsTrue(disabilityDates.IsPresent); + Assert.AreEqual("314", disabilityDates.ValueOrDefault()); + + var lastWorkedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastWorkedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastWorkedDate != null); + Assert.IsTrue(lastWorkedDate.HasValue); + Assert.IsTrue(lastWorkedDate.IsPresent); + Assert.AreEqual("297", lastWorkedDate.ValueOrDefault()); + + var authorizedReturnToWork = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AuthorizedReturnToWork) + .Select(x => x.DateTimeQualifier); + + Assume.That(authorizedReturnToWork != null); + Assert.IsTrue(authorizedReturnToWork.HasValue); + Assert.IsTrue(authorizedReturnToWork.IsPresent); + Assert.AreEqual("296", authorizedReturnToWork.ValueOrDefault()); + + var admissionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdmissionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(admissionDate != null); + Assert.IsFalse(admissionDate.HasValue); + Assert.IsFalse(admissionDate.IsPresent); + + var dischargeDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DischargeDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(dischargeDate != null); + Assert.IsFalse(dischargeDate.HasValue); + Assert.IsFalse(dischargeDate.IsPresent); + + var assumedRelinquishedCareDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AssumedRelinquishedCareDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(assumedRelinquishedCareDates != null); + Assert.IsFalse(assumedRelinquishedCareDates.HasValue); + Assert.IsFalse(assumedRelinquishedCareDates.IsPresent); + + var propertyAndCasualtyDateOfFirstContact = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PropertyAndCasualtyDateOfFirstContact) + .Select(x => x.DateTimeQualifier); + + Assume.That(propertyAndCasualtyDateOfFirstContact != null); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.HasValue); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.IsPresent); + + var repricerReceivedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricerReceivedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(repricerReceivedDate != null); + Assert.IsFalse(repricerReceivedDate.HasValue); + Assert.IsFalse(repricerReceivedDate.IsPresent); + } + + [Test(Description = @"Condition : OnsetOfCurrentIllnessDate => 431, + InitialTreatmentDate => 454, + LastSeenDate => 304, + AcuteManifestationDate => 453, + AccidentDate => 439, + LastMensrualPeriod => 484, + LastXRayDate => 455, + HearingVisionPrescriptionDate => 471, + DisabilityDates => 360, + LastWorkedDate => 297, + AuthorizedReturnToWork => 296, + AdmissionDate => missing, + DischargeDate => missing, + AssumedRelinquishedCareDates => missing, + PropertyAndCasualtyDateOfFirstContact => missing, + RepricerReceivedDate => missing")] + public void Test2() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*360*D8*20061109 +DTP*297*D8*20061109 +DTP*296*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var onsetOfCurrentIllnessDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OnsetOfCurrentIllnessDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(onsetOfCurrentIllnessDate != null); + Assert.IsTrue(onsetOfCurrentIllnessDate.HasValue); + Assert.IsTrue(onsetOfCurrentIllnessDate.IsPresent); + Assert.AreEqual("431", onsetOfCurrentIllnessDate.ValueOrDefault()); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsTrue(initialTreatmentDate.HasValue); + Assert.IsTrue(initialTreatmentDate.IsPresent); + Assert.AreEqual("454", initialTreatmentDate.ValueOrDefault()); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsTrue(lastSeenDate.HasValue); + Assert.IsTrue(lastSeenDate.IsPresent); + Assert.AreEqual("304", lastSeenDate.ValueOrDefault()); + + var acuteManifestationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AcuteManifestationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(acuteManifestationDate != null); + Assert.IsTrue(acuteManifestationDate.HasValue); + Assert.IsTrue(acuteManifestationDate.IsPresent); + Assert.AreEqual("453", acuteManifestationDate.ValueOrDefault()); + + var accidentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AccidentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(accidentDate != null); + Assert.IsTrue(accidentDate.HasValue); + Assert.IsTrue(accidentDate.IsPresent); + Assert.AreEqual("439", accidentDate.ValueOrDefault()); + + var lastMensrualPeriod = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastMensrualPeriod) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastMensrualPeriod != null); + Assert.IsTrue(lastMensrualPeriod.HasValue); + Assert.IsTrue(lastMensrualPeriod.IsPresent); + Assert.AreEqual("484", lastMensrualPeriod.ValueOrDefault()); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsTrue(lastXRayDate.HasValue); + Assert.IsTrue(lastXRayDate.IsPresent); + Assert.AreEqual("455", lastXRayDate.ValueOrDefault()); + + var hearingVisionPrescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HearingVisionPrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(hearingVisionPrescriptionDate != null); + Assert.IsTrue(hearingVisionPrescriptionDate.HasValue); + Assert.IsTrue(hearingVisionPrescriptionDate.IsPresent); + Assert.AreEqual("471", hearingVisionPrescriptionDate.ValueOrDefault()); + + var disabilityDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DisabilityDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(disabilityDates != null); + Assert.IsTrue(disabilityDates.HasValue); + Assert.IsTrue(disabilityDates.IsPresent); + Assert.AreEqual("360", disabilityDates.ValueOrDefault()); + + var lastWorkedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastWorkedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastWorkedDate != null); + Assert.IsTrue(lastWorkedDate.HasValue); + Assert.IsTrue(lastWorkedDate.IsPresent); + Assert.AreEqual("297", lastWorkedDate.ValueOrDefault()); + + var authorizedReturnToWork = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AuthorizedReturnToWork) + .Select(x => x.DateTimeQualifier); + + Assume.That(authorizedReturnToWork != null); + Assert.IsTrue(authorizedReturnToWork.HasValue); + Assert.IsTrue(authorizedReturnToWork.IsPresent); + Assert.AreEqual("296", authorizedReturnToWork.ValueOrDefault()); + + var admissionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdmissionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(admissionDate != null); + Assert.IsFalse(admissionDate.HasValue); + Assert.IsFalse(admissionDate.IsPresent); + + var dischargeDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DischargeDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(dischargeDate != null); + Assert.IsFalse(dischargeDate.HasValue); + Assert.IsFalse(dischargeDate.IsPresent); + + var assumedRelinquishedCareDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AssumedRelinquishedCareDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(assumedRelinquishedCareDates != null); + Assert.IsFalse(assumedRelinquishedCareDates.HasValue); + Assert.IsFalse(assumedRelinquishedCareDates.IsPresent); + + var propertyAndCasualtyDateOfFirstContact = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PropertyAndCasualtyDateOfFirstContact) + .Select(x => x.DateTimeQualifier); + + Assume.That(propertyAndCasualtyDateOfFirstContact != null); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.HasValue); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.IsPresent); + + var repricerReceivedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricerReceivedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(repricerReceivedDate != null); + Assert.IsFalse(repricerReceivedDate.HasValue); + Assert.IsFalse(repricerReceivedDate.IsPresent); + } + + [Test(Description = @"Condition : OnsetOfCurrentIllnessDate => 431, + InitialTreatmentDate => 454, + LastSeenDate => 304, + AcuteManifestationDate => 453, + AccidentDate => 439, + LastMensrualPeriod => 484, + LastXRayDate => 455, + HearingVisionPrescriptionDate => 471, + DisabilityDates => 361, + LastWorkedDate => 297, + AuthorizedReturnToWork => 296, + AdmissionDate => missing, + DischargeDate => missing, + AssumedRelinquishedCareDates => missing, + PropertyAndCasualtyDateOfFirstContact => missing, + RepricerReceivedDate => missing")] + public void Test3() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*361*D8*20061109 +DTP*297*D8*20061109 +DTP*296*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var onsetOfCurrentIllnessDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OnsetOfCurrentIllnessDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(onsetOfCurrentIllnessDate != null); + Assert.IsTrue(onsetOfCurrentIllnessDate.HasValue); + Assert.IsTrue(onsetOfCurrentIllnessDate.IsPresent); + Assert.AreEqual("431", onsetOfCurrentIllnessDate.ValueOrDefault()); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsTrue(initialTreatmentDate.HasValue); + Assert.IsTrue(initialTreatmentDate.IsPresent); + Assert.AreEqual("454", initialTreatmentDate.ValueOrDefault()); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsTrue(lastSeenDate.HasValue); + Assert.IsTrue(lastSeenDate.IsPresent); + Assert.AreEqual("304", lastSeenDate.ValueOrDefault()); + + var acuteManifestationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AcuteManifestationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(acuteManifestationDate != null); + Assert.IsTrue(acuteManifestationDate.HasValue); + Assert.IsTrue(acuteManifestationDate.IsPresent); + Assert.AreEqual("453", acuteManifestationDate.ValueOrDefault()); + + var accidentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AccidentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(accidentDate != null); + Assert.IsTrue(accidentDate.HasValue); + Assert.IsTrue(accidentDate.IsPresent); + Assert.AreEqual("439", accidentDate.ValueOrDefault()); + + var lastMensrualPeriod = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastMensrualPeriod) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastMensrualPeriod != null); + Assert.IsTrue(lastMensrualPeriod.HasValue); + Assert.IsTrue(lastMensrualPeriod.IsPresent); + Assert.AreEqual("484", lastMensrualPeriod.ValueOrDefault()); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsTrue(lastXRayDate.HasValue); + Assert.IsTrue(lastXRayDate.IsPresent); + Assert.AreEqual("455", lastXRayDate.ValueOrDefault()); + + var hearingVisionPrescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HearingVisionPrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(hearingVisionPrescriptionDate != null); + Assert.IsTrue(hearingVisionPrescriptionDate.HasValue); + Assert.IsTrue(hearingVisionPrescriptionDate.IsPresent); + Assert.AreEqual("471", hearingVisionPrescriptionDate.ValueOrDefault()); + + var disabilityDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DisabilityDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(disabilityDates != null); + Assert.IsTrue(disabilityDates.HasValue); + Assert.IsTrue(disabilityDates.IsPresent); + Assert.AreEqual("361", disabilityDates.ValueOrDefault()); + + var lastWorkedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastWorkedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastWorkedDate != null); + Assert.IsTrue(lastWorkedDate.HasValue); + Assert.IsTrue(lastWorkedDate.IsPresent); + Assert.AreEqual("297", lastWorkedDate.ValueOrDefault()); + + var authorizedReturnToWork = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AuthorizedReturnToWork) + .Select(x => x.DateTimeQualifier); + + Assume.That(authorizedReturnToWork != null); + Assert.IsTrue(authorizedReturnToWork.HasValue); + Assert.IsTrue(authorizedReturnToWork.IsPresent); + Assert.AreEqual("296", authorizedReturnToWork.ValueOrDefault()); + + var admissionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdmissionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(admissionDate != null); + Assert.IsFalse(admissionDate.HasValue); + Assert.IsFalse(admissionDate.IsPresent); + + var dischargeDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DischargeDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(dischargeDate != null); + Assert.IsFalse(dischargeDate.HasValue); + Assert.IsFalse(dischargeDate.IsPresent); + + var assumedRelinquishedCareDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AssumedRelinquishedCareDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(assumedRelinquishedCareDates != null); + Assert.IsFalse(assumedRelinquishedCareDates.HasValue); + Assert.IsFalse(assumedRelinquishedCareDates.IsPresent); + + var propertyAndCasualtyDateOfFirstContact = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PropertyAndCasualtyDateOfFirstContact) + .Select(x => x.DateTimeQualifier); + + Assume.That(propertyAndCasualtyDateOfFirstContact != null); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.HasValue); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.IsPresent); + + var repricerReceivedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricerReceivedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(repricerReceivedDate != null); + Assert.IsFalse(repricerReceivedDate.HasValue); + Assert.IsFalse(repricerReceivedDate.IsPresent); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P6ConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P6ConditionalTests.cs new file mode 100644 index 000000000..5b9b23d00 --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P6ConditionalTests.cs @@ -0,0 +1,795 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing837ProfessionalL2300P6ConditionalTests : + X12MacheteTestHarness + { + [Test(Description = @"Condition : OnsetOfCurrentIllnessDate => 431, + InitialTreatmentDate => 454, + LastSeenDate => 304, + AcuteManifestationDate => 453, + AccidentDate => 439, + LastMensrualPeriod => 484, + LastXRayDate => 455, + HearingVisionPrescriptionDate => 471, + DisabilityDates => 314, + LastWorkedDate => 297, + AuthorizedReturnToWork => missing, + AdmissionDate => missing, + DischargeDate => missing, + AssumedRelinquishedCareDates => missing, + PropertyAndCasualtyDateOfFirstContact => missing, + RepricerReceivedDate => missing")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*314*D8*20061109 +DTP*297*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var onsetOfCurrentIllnessDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OnsetOfCurrentIllnessDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(onsetOfCurrentIllnessDate != null); + Assert.IsTrue(onsetOfCurrentIllnessDate.HasValue); + Assert.IsTrue(onsetOfCurrentIllnessDate.IsPresent); + Assert.AreEqual("431", onsetOfCurrentIllnessDate.ValueOrDefault()); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsTrue(initialTreatmentDate.HasValue); + Assert.IsTrue(initialTreatmentDate.IsPresent); + Assert.AreEqual("454", initialTreatmentDate.ValueOrDefault()); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsTrue(lastSeenDate.HasValue); + Assert.IsTrue(lastSeenDate.IsPresent); + Assert.AreEqual("304", lastSeenDate.ValueOrDefault()); + + var acuteManifestationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AcuteManifestationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(acuteManifestationDate != null); + Assert.IsTrue(acuteManifestationDate.HasValue); + Assert.IsTrue(acuteManifestationDate.IsPresent); + Assert.AreEqual("453", acuteManifestationDate.ValueOrDefault()); + + var accidentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AccidentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(accidentDate != null); + Assert.IsTrue(accidentDate.HasValue); + Assert.IsTrue(accidentDate.IsPresent); + Assert.AreEqual("439", accidentDate.ValueOrDefault()); + + var lastMensrualPeriod = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastMensrualPeriod) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastMensrualPeriod != null); + Assert.IsTrue(lastMensrualPeriod.HasValue); + Assert.IsTrue(lastMensrualPeriod.IsPresent); + Assert.AreEqual("484", lastMensrualPeriod.ValueOrDefault()); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsTrue(lastXRayDate.HasValue); + Assert.IsTrue(lastXRayDate.IsPresent); + Assert.AreEqual("455", lastXRayDate.ValueOrDefault()); + + var hearingVisionPrescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HearingVisionPrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(hearingVisionPrescriptionDate != null); + Assert.IsTrue(hearingVisionPrescriptionDate.HasValue); + Assert.IsTrue(hearingVisionPrescriptionDate.IsPresent); + Assert.AreEqual("471", hearingVisionPrescriptionDate.ValueOrDefault()); + + var disabilityDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DisabilityDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(disabilityDates != null); + Assert.IsTrue(disabilityDates.HasValue); + Assert.IsTrue(disabilityDates.IsPresent); + Assert.AreEqual("314", disabilityDates.ValueOrDefault()); + + var lastWorkedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastWorkedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastWorkedDate != null); + Assert.IsTrue(lastWorkedDate.HasValue); + Assert.IsTrue(lastWorkedDate.IsPresent); + Assert.AreEqual("297", lastWorkedDate.ValueOrDefault()); + + var authorizedReturnToWork = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AuthorizedReturnToWork) + .Select(x => x.DateTimeQualifier); + + Assume.That(authorizedReturnToWork != null); + Assert.IsFalse(authorizedReturnToWork.HasValue); + Assert.IsFalse(authorizedReturnToWork.IsPresent); + + var admissionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdmissionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(admissionDate != null); + Assert.IsFalse(admissionDate.HasValue); + Assert.IsFalse(admissionDate.IsPresent); + + var dischargeDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DischargeDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(dischargeDate != null); + Assert.IsFalse(dischargeDate.HasValue); + Assert.IsFalse(dischargeDate.IsPresent); + + var assumedRelinquishedCareDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AssumedRelinquishedCareDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(assumedRelinquishedCareDates != null); + Assert.IsFalse(assumedRelinquishedCareDates.HasValue); + Assert.IsFalse(assumedRelinquishedCareDates.IsPresent); + + var propertyAndCasualtyDateOfFirstContact = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PropertyAndCasualtyDateOfFirstContact) + .Select(x => x.DateTimeQualifier); + + Assume.That(propertyAndCasualtyDateOfFirstContact != null); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.HasValue); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.IsPresent); + + var repricerReceivedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricerReceivedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(repricerReceivedDate != null); + Assert.IsFalse(repricerReceivedDate.HasValue); + Assert.IsFalse(repricerReceivedDate.IsPresent); + } + + [Test(Description = @"Condition : OnsetOfCurrentIllnessDate => 431, + InitialTreatmentDate => 454, + LastSeenDate => 304, + AcuteManifestationDate => 453, + AccidentDate => 439, + LastMensrualPeriod => 484, + LastXRayDate => 455, + HearingVisionPrescriptionDate => 471, + DisabilityDates => 360, + LastWorkedDate => 297, + AuthorizedReturnToWork => missing, + AdmissionDate => missing, + DischargeDate => missing, + AssumedRelinquishedCareDates => missing, + PropertyAndCasualtyDateOfFirstContact => missing, + RepricerReceivedDate => missing")] + public void Test2() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*360*D8*20061109 +DTP*297*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var onsetOfCurrentIllnessDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OnsetOfCurrentIllnessDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(onsetOfCurrentIllnessDate != null); + Assert.IsTrue(onsetOfCurrentIllnessDate.HasValue); + Assert.IsTrue(onsetOfCurrentIllnessDate.IsPresent); + Assert.AreEqual("431", onsetOfCurrentIllnessDate.ValueOrDefault()); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsTrue(initialTreatmentDate.HasValue); + Assert.IsTrue(initialTreatmentDate.IsPresent); + Assert.AreEqual("454", initialTreatmentDate.ValueOrDefault()); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsTrue(lastSeenDate.HasValue); + Assert.IsTrue(lastSeenDate.IsPresent); + Assert.AreEqual("304", lastSeenDate.ValueOrDefault()); + + var acuteManifestationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AcuteManifestationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(acuteManifestationDate != null); + Assert.IsTrue(acuteManifestationDate.HasValue); + Assert.IsTrue(acuteManifestationDate.IsPresent); + Assert.AreEqual("453", acuteManifestationDate.ValueOrDefault()); + + var accidentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AccidentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(accidentDate != null); + Assert.IsTrue(accidentDate.HasValue); + Assert.IsTrue(accidentDate.IsPresent); + Assert.AreEqual("439", accidentDate.ValueOrDefault()); + + var lastMensrualPeriod = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastMensrualPeriod) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastMensrualPeriod != null); + Assert.IsTrue(lastMensrualPeriod.HasValue); + Assert.IsTrue(lastMensrualPeriod.IsPresent); + Assert.AreEqual("484", lastMensrualPeriod.ValueOrDefault()); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsTrue(lastXRayDate.HasValue); + Assert.IsTrue(lastXRayDate.IsPresent); + Assert.AreEqual("455", lastXRayDate.ValueOrDefault()); + + var hearingVisionPrescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HearingVisionPrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(hearingVisionPrescriptionDate != null); + Assert.IsTrue(hearingVisionPrescriptionDate.HasValue); + Assert.IsTrue(hearingVisionPrescriptionDate.IsPresent); + Assert.AreEqual("471", hearingVisionPrescriptionDate.ValueOrDefault()); + + var disabilityDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DisabilityDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(disabilityDates != null); + Assert.IsTrue(disabilityDates.HasValue); + Assert.IsTrue(disabilityDates.IsPresent); + Assert.AreEqual("360", disabilityDates.ValueOrDefault()); + + var lastWorkedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastWorkedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastWorkedDate != null); + Assert.IsTrue(lastWorkedDate.HasValue); + Assert.IsTrue(lastWorkedDate.IsPresent); + Assert.AreEqual("297", lastWorkedDate.ValueOrDefault()); + + var authorizedReturnToWork = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AuthorizedReturnToWork) + .Select(x => x.DateTimeQualifier); + + Assume.That(authorizedReturnToWork != null); + Assert.IsFalse(authorizedReturnToWork.HasValue); + Assert.IsFalse(authorizedReturnToWork.IsPresent); + + var admissionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdmissionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(admissionDate != null); + Assert.IsFalse(admissionDate.HasValue); + Assert.IsFalse(admissionDate.IsPresent); + + var dischargeDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DischargeDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(dischargeDate != null); + Assert.IsFalse(dischargeDate.HasValue); + Assert.IsFalse(dischargeDate.IsPresent); + + var assumedRelinquishedCareDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AssumedRelinquishedCareDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(assumedRelinquishedCareDates != null); + Assert.IsFalse(assumedRelinquishedCareDates.HasValue); + Assert.IsFalse(assumedRelinquishedCareDates.IsPresent); + + var propertyAndCasualtyDateOfFirstContact = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PropertyAndCasualtyDateOfFirstContact) + .Select(x => x.DateTimeQualifier); + + Assume.That(propertyAndCasualtyDateOfFirstContact != null); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.HasValue); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.IsPresent); + + var repricerReceivedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricerReceivedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(repricerReceivedDate != null); + Assert.IsFalse(repricerReceivedDate.HasValue); + Assert.IsFalse(repricerReceivedDate.IsPresent); + } + + [Test(Description = @"Condition : OnsetOfCurrentIllnessDate => 431, + InitialTreatmentDate => 454, + LastSeenDate => 304, + AcuteManifestationDate => 453, + AccidentDate => 439, + LastMensrualPeriod => 484, + LastXRayDate => 455, + HearingVisionPrescriptionDate => 471, + DisabilityDates => 361, + LastWorkedDate => 297, + AuthorizedReturnToWork => missing, + AdmissionDate => missing, + DischargeDate => missing, + AssumedRelinquishedCareDates => missing, + PropertyAndCasualtyDateOfFirstContact => missing, + RepricerReceivedDate => missing")] + public void Test3() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*361*D8*20061109 +DTP*297*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var onsetOfCurrentIllnessDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OnsetOfCurrentIllnessDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(onsetOfCurrentIllnessDate != null); + Assert.IsTrue(onsetOfCurrentIllnessDate.HasValue); + Assert.IsTrue(onsetOfCurrentIllnessDate.IsPresent); + Assert.AreEqual("431", onsetOfCurrentIllnessDate.ValueOrDefault()); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsTrue(initialTreatmentDate.HasValue); + Assert.IsTrue(initialTreatmentDate.IsPresent); + Assert.AreEqual("454", initialTreatmentDate.ValueOrDefault()); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsTrue(lastSeenDate.HasValue); + Assert.IsTrue(lastSeenDate.IsPresent); + Assert.AreEqual("304", lastSeenDate.ValueOrDefault()); + + var acuteManifestationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AcuteManifestationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(acuteManifestationDate != null); + Assert.IsTrue(acuteManifestationDate.HasValue); + Assert.IsTrue(acuteManifestationDate.IsPresent); + Assert.AreEqual("453", acuteManifestationDate.ValueOrDefault()); + + var accidentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AccidentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(accidentDate != null); + Assert.IsTrue(accidentDate.HasValue); + Assert.IsTrue(accidentDate.IsPresent); + Assert.AreEqual("439", accidentDate.ValueOrDefault()); + + var lastMensrualPeriod = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastMensrualPeriod) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastMensrualPeriod != null); + Assert.IsTrue(lastMensrualPeriod.HasValue); + Assert.IsTrue(lastMensrualPeriod.IsPresent); + Assert.AreEqual("484", lastMensrualPeriod.ValueOrDefault()); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsTrue(lastXRayDate.HasValue); + Assert.IsTrue(lastXRayDate.IsPresent); + Assert.AreEqual("455", lastXRayDate.ValueOrDefault()); + + var hearingVisionPrescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HearingVisionPrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(hearingVisionPrescriptionDate != null); + Assert.IsTrue(hearingVisionPrescriptionDate.HasValue); + Assert.IsTrue(hearingVisionPrescriptionDate.IsPresent); + Assert.AreEqual("471", hearingVisionPrescriptionDate.ValueOrDefault()); + + var disabilityDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DisabilityDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(disabilityDates != null); + Assert.IsTrue(disabilityDates.HasValue); + Assert.IsTrue(disabilityDates.IsPresent); + Assert.AreEqual("361", disabilityDates.ValueOrDefault()); + + var lastWorkedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastWorkedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastWorkedDate != null); + Assert.IsTrue(lastWorkedDate.HasValue); + Assert.IsTrue(lastWorkedDate.IsPresent); + Assert.AreEqual("297", lastWorkedDate.ValueOrDefault()); + + var authorizedReturnToWork = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AuthorizedReturnToWork) + .Select(x => x.DateTimeQualifier); + + Assume.That(authorizedReturnToWork != null); + Assert.IsFalse(authorizedReturnToWork.HasValue); + Assert.IsFalse(authorizedReturnToWork.IsPresent); + + var admissionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdmissionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(admissionDate != null); + Assert.IsFalse(admissionDate.HasValue); + Assert.IsFalse(admissionDate.IsPresent); + + var dischargeDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DischargeDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(dischargeDate != null); + Assert.IsFalse(dischargeDate.HasValue); + Assert.IsFalse(dischargeDate.IsPresent); + + var assumedRelinquishedCareDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AssumedRelinquishedCareDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(assumedRelinquishedCareDates != null); + Assert.IsFalse(assumedRelinquishedCareDates.HasValue); + Assert.IsFalse(assumedRelinquishedCareDates.IsPresent); + + var propertyAndCasualtyDateOfFirstContact = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PropertyAndCasualtyDateOfFirstContact) + .Select(x => x.DateTimeQualifier); + + Assume.That(propertyAndCasualtyDateOfFirstContact != null); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.HasValue); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.IsPresent); + + var repricerReceivedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricerReceivedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(repricerReceivedDate != null); + Assert.IsFalse(repricerReceivedDate.HasValue); + Assert.IsFalse(repricerReceivedDate.IsPresent); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P7ConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P7ConditionalTests.cs new file mode 100644 index 000000000..9fdceca50 --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P7ConditionalTests.cs @@ -0,0 +1,789 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing837ProfessionalL2300P7ConditionalTests : + X12MacheteTestHarness + { + [Test(Description = @"Condition : OnsetOfCurrentIllnessDate => 431, + InitialTreatmentDate => 454, + LastSeenDate => 304, + AcuteManifestationDate => 453, + AccidentDate => 439, + LastMensrualPeriod => 484, + LastXRayDate => 455, + HearingVisionPrescriptionDate => 471, + DisabilityDates => 314, + LastWorkedDate => missing, + AuthorizedReturnToWork => missing, + AdmissionDate => missing, + DischargeDate => missing, + AssumedRelinquishedCareDates => missing, + PropertyAndCasualtyDateOfFirstContact => missing, + RepricerReceivedDate => missing")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*314*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var onsetOfCurrentIllnessDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OnsetOfCurrentIllnessDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(onsetOfCurrentIllnessDate != null); + Assert.IsTrue(onsetOfCurrentIllnessDate.HasValue); + Assert.IsTrue(onsetOfCurrentIllnessDate.IsPresent); + Assert.AreEqual("431", onsetOfCurrentIllnessDate.ValueOrDefault()); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsTrue(initialTreatmentDate.HasValue); + Assert.IsTrue(initialTreatmentDate.IsPresent); + Assert.AreEqual("454", initialTreatmentDate.ValueOrDefault()); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsTrue(lastSeenDate.HasValue); + Assert.IsTrue(lastSeenDate.IsPresent); + Assert.AreEqual("304", lastSeenDate.ValueOrDefault()); + + var acuteManifestationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AcuteManifestationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(acuteManifestationDate != null); + Assert.IsTrue(acuteManifestationDate.HasValue); + Assert.IsTrue(acuteManifestationDate.IsPresent); + Assert.AreEqual("453", acuteManifestationDate.ValueOrDefault()); + + var accidentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AccidentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(accidentDate != null); + Assert.IsTrue(accidentDate.HasValue); + Assert.IsTrue(accidentDate.IsPresent); + Assert.AreEqual("439", accidentDate.ValueOrDefault()); + + var lastMensrualPeriod = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastMensrualPeriod) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastMensrualPeriod != null); + Assert.IsTrue(lastMensrualPeriod.HasValue); + Assert.IsTrue(lastMensrualPeriod.IsPresent); + Assert.AreEqual("484", lastMensrualPeriod.ValueOrDefault()); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsTrue(lastXRayDate.HasValue); + Assert.IsTrue(lastXRayDate.IsPresent); + Assert.AreEqual("455", lastXRayDate.ValueOrDefault()); + + var hearingVisionPrescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HearingVisionPrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(hearingVisionPrescriptionDate != null); + Assert.IsTrue(hearingVisionPrescriptionDate.HasValue); + Assert.IsTrue(hearingVisionPrescriptionDate.IsPresent); + Assert.AreEqual("471", hearingVisionPrescriptionDate.ValueOrDefault()); + + var disabilityDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DisabilityDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(disabilityDates != null); + Assert.IsTrue(disabilityDates.HasValue); + Assert.IsTrue(disabilityDates.IsPresent); + Assert.AreEqual("314", disabilityDates.ValueOrDefault()); + + var lastWorkedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastWorkedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastWorkedDate != null); + Assert.IsFalse(lastWorkedDate.HasValue); + Assert.IsFalse(lastWorkedDate.IsPresent); + + var authorizedReturnToWork = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AuthorizedReturnToWork) + .Select(x => x.DateTimeQualifier); + + Assume.That(authorizedReturnToWork != null); + Assert.IsFalse(authorizedReturnToWork.HasValue); + Assert.IsFalse(authorizedReturnToWork.IsPresent); + + var admissionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdmissionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(admissionDate != null); + Assert.IsFalse(admissionDate.HasValue); + Assert.IsFalse(admissionDate.IsPresent); + + var dischargeDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DischargeDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(dischargeDate != null); + Assert.IsFalse(dischargeDate.HasValue); + Assert.IsFalse(dischargeDate.IsPresent); + + var assumedRelinquishedCareDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AssumedRelinquishedCareDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(assumedRelinquishedCareDates != null); + Assert.IsFalse(assumedRelinquishedCareDates.HasValue); + Assert.IsFalse(assumedRelinquishedCareDates.IsPresent); + + var propertyAndCasualtyDateOfFirstContact = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PropertyAndCasualtyDateOfFirstContact) + .Select(x => x.DateTimeQualifier); + + Assume.That(propertyAndCasualtyDateOfFirstContact != null); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.HasValue); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.IsPresent); + + var repricerReceivedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricerReceivedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(repricerReceivedDate != null); + Assert.IsFalse(repricerReceivedDate.HasValue); + Assert.IsFalse(repricerReceivedDate.IsPresent); + } + + [Test(Description = @"Condition : OnsetOfCurrentIllnessDate => 431, + InitialTreatmentDate => 454, + LastSeenDate => 304, + AcuteManifestationDate => 453, + AccidentDate => 439, + LastMensrualPeriod => 484, + LastXRayDate => 455, + HearingVisionPrescriptionDate => 471, + DisabilityDates => 360, + LastWorkedDate => missing, + AuthorizedReturnToWork => missing, + AdmissionDate => missing, + DischargeDate => missing, + AssumedRelinquishedCareDates => missing, + PropertyAndCasualtyDateOfFirstContact => missing, + RepricerReceivedDate => missing")] + public void Test2() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*360*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var onsetOfCurrentIllnessDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OnsetOfCurrentIllnessDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(onsetOfCurrentIllnessDate != null); + Assert.IsTrue(onsetOfCurrentIllnessDate.HasValue); + Assert.IsTrue(onsetOfCurrentIllnessDate.IsPresent); + Assert.AreEqual("431", onsetOfCurrentIllnessDate.ValueOrDefault()); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsTrue(initialTreatmentDate.HasValue); + Assert.IsTrue(initialTreatmentDate.IsPresent); + Assert.AreEqual("454", initialTreatmentDate.ValueOrDefault()); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsTrue(lastSeenDate.HasValue); + Assert.IsTrue(lastSeenDate.IsPresent); + Assert.AreEqual("304", lastSeenDate.ValueOrDefault()); + + var acuteManifestationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AcuteManifestationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(acuteManifestationDate != null); + Assert.IsTrue(acuteManifestationDate.HasValue); + Assert.IsTrue(acuteManifestationDate.IsPresent); + Assert.AreEqual("453", acuteManifestationDate.ValueOrDefault()); + + var accidentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AccidentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(accidentDate != null); + Assert.IsTrue(accidentDate.HasValue); + Assert.IsTrue(accidentDate.IsPresent); + Assert.AreEqual("439", accidentDate.ValueOrDefault()); + + var lastMensrualPeriod = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastMensrualPeriod) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastMensrualPeriod != null); + Assert.IsTrue(lastMensrualPeriod.HasValue); + Assert.IsTrue(lastMensrualPeriod.IsPresent); + Assert.AreEqual("484", lastMensrualPeriod.ValueOrDefault()); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsTrue(lastXRayDate.HasValue); + Assert.IsTrue(lastXRayDate.IsPresent); + Assert.AreEqual("455", lastXRayDate.ValueOrDefault()); + + var hearingVisionPrescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HearingVisionPrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(hearingVisionPrescriptionDate != null); + Assert.IsTrue(hearingVisionPrescriptionDate.HasValue); + Assert.IsTrue(hearingVisionPrescriptionDate.IsPresent); + Assert.AreEqual("471", hearingVisionPrescriptionDate.ValueOrDefault()); + + var disabilityDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DisabilityDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(disabilityDates != null); + Assert.IsTrue(disabilityDates.HasValue); + Assert.IsTrue(disabilityDates.IsPresent); + Assert.AreEqual("360", disabilityDates.ValueOrDefault()); + + var lastWorkedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastWorkedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastWorkedDate != null); + Assert.IsFalse(lastWorkedDate.HasValue); + Assert.IsFalse(lastWorkedDate.IsPresent); + + var authorizedReturnToWork = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AuthorizedReturnToWork) + .Select(x => x.DateTimeQualifier); + + Assume.That(authorizedReturnToWork != null); + Assert.IsFalse(authorizedReturnToWork.HasValue); + Assert.IsFalse(authorizedReturnToWork.IsPresent); + + var admissionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdmissionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(admissionDate != null); + Assert.IsFalse(admissionDate.HasValue); + Assert.IsFalse(admissionDate.IsPresent); + + var dischargeDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DischargeDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(dischargeDate != null); + Assert.IsFalse(dischargeDate.HasValue); + Assert.IsFalse(dischargeDate.IsPresent); + + var assumedRelinquishedCareDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AssumedRelinquishedCareDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(assumedRelinquishedCareDates != null); + Assert.IsFalse(assumedRelinquishedCareDates.HasValue); + Assert.IsFalse(assumedRelinquishedCareDates.IsPresent); + + var propertyAndCasualtyDateOfFirstContact = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PropertyAndCasualtyDateOfFirstContact) + .Select(x => x.DateTimeQualifier); + + Assume.That(propertyAndCasualtyDateOfFirstContact != null); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.HasValue); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.IsPresent); + + var repricerReceivedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricerReceivedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(repricerReceivedDate != null); + Assert.IsFalse(repricerReceivedDate.HasValue); + Assert.IsFalse(repricerReceivedDate.IsPresent); + } + + [Test(Description = @"Condition : OnsetOfCurrentIllnessDate => 431, + InitialTreatmentDate => 454, + LastSeenDate => 304, + AcuteManifestationDate => 453, + AccidentDate => 439, + LastMensrualPeriod => 484, + LastXRayDate => 455, + HearingVisionPrescriptionDate => 471, + DisabilityDates => 361, + LastWorkedDate => missing, + AuthorizedReturnToWork => missing, + AdmissionDate => missing, + DischargeDate => missing, + AssumedRelinquishedCareDates => missing, + PropertyAndCasualtyDateOfFirstContact => missing, + RepricerReceivedDate => missing")] + public void Test3() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +DTP*361*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var onsetOfCurrentIllnessDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OnsetOfCurrentIllnessDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(onsetOfCurrentIllnessDate != null); + Assert.IsTrue(onsetOfCurrentIllnessDate.HasValue); + Assert.IsTrue(onsetOfCurrentIllnessDate.IsPresent); + Assert.AreEqual("431", onsetOfCurrentIllnessDate.ValueOrDefault()); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsTrue(initialTreatmentDate.HasValue); + Assert.IsTrue(initialTreatmentDate.IsPresent); + Assert.AreEqual("454", initialTreatmentDate.ValueOrDefault()); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsTrue(lastSeenDate.HasValue); + Assert.IsTrue(lastSeenDate.IsPresent); + Assert.AreEqual("304", lastSeenDate.ValueOrDefault()); + + var acuteManifestationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AcuteManifestationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(acuteManifestationDate != null); + Assert.IsTrue(acuteManifestationDate.HasValue); + Assert.IsTrue(acuteManifestationDate.IsPresent); + Assert.AreEqual("453", acuteManifestationDate.ValueOrDefault()); + + var accidentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AccidentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(accidentDate != null); + Assert.IsTrue(accidentDate.HasValue); + Assert.IsTrue(accidentDate.IsPresent); + Assert.AreEqual("439", accidentDate.ValueOrDefault()); + + var lastMensrualPeriod = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastMensrualPeriod) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastMensrualPeriod != null); + Assert.IsTrue(lastMensrualPeriod.HasValue); + Assert.IsTrue(lastMensrualPeriod.IsPresent); + Assert.AreEqual("484", lastMensrualPeriod.ValueOrDefault()); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsTrue(lastXRayDate.HasValue); + Assert.IsTrue(lastXRayDate.IsPresent); + Assert.AreEqual("455", lastXRayDate.ValueOrDefault()); + + var hearingVisionPrescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HearingVisionPrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(hearingVisionPrescriptionDate != null); + Assert.IsTrue(hearingVisionPrescriptionDate.HasValue); + Assert.IsTrue(hearingVisionPrescriptionDate.IsPresent); + Assert.AreEqual("471", hearingVisionPrescriptionDate.ValueOrDefault()); + + var disabilityDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DisabilityDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(disabilityDates != null); + Assert.IsTrue(disabilityDates.HasValue); + Assert.IsTrue(disabilityDates.IsPresent); + Assert.AreEqual("361", disabilityDates.ValueOrDefault()); + + var lastWorkedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastWorkedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastWorkedDate != null); + Assert.IsFalse(lastWorkedDate.HasValue); + Assert.IsFalse(lastWorkedDate.IsPresent); + + var authorizedReturnToWork = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AuthorizedReturnToWork) + .Select(x => x.DateTimeQualifier); + + Assume.That(authorizedReturnToWork != null); + Assert.IsFalse(authorizedReturnToWork.HasValue); + Assert.IsFalse(authorizedReturnToWork.IsPresent); + + var admissionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdmissionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(admissionDate != null); + Assert.IsFalse(admissionDate.HasValue); + Assert.IsFalse(admissionDate.IsPresent); + + var dischargeDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DischargeDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(dischargeDate != null); + Assert.IsFalse(dischargeDate.HasValue); + Assert.IsFalse(dischargeDate.IsPresent); + + var assumedRelinquishedCareDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AssumedRelinquishedCareDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(assumedRelinquishedCareDates != null); + Assert.IsFalse(assumedRelinquishedCareDates.HasValue); + Assert.IsFalse(assumedRelinquishedCareDates.IsPresent); + + var propertyAndCasualtyDateOfFirstContact = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PropertyAndCasualtyDateOfFirstContact) + .Select(x => x.DateTimeQualifier); + + Assume.That(propertyAndCasualtyDateOfFirstContact != null); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.HasValue); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.IsPresent); + + var repricerReceivedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricerReceivedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(repricerReceivedDate != null); + Assert.IsFalse(repricerReceivedDate.HasValue); + Assert.IsFalse(repricerReceivedDate.IsPresent); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P8ConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P8ConditionalTests.cs new file mode 100644 index 000000000..9695a104b --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P8ConditionalTests.cs @@ -0,0 +1,777 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing837ProfessionalL2300P8ConditionalTests : + X12MacheteTestHarness + { + [Test(Description = @"Condition : OnsetOfCurrentIllnessDate => 431, + InitialTreatmentDate => 454, + LastSeenDate => 304, + AcuteManifestationDate => 453, + AccidentDate => 439, + LastMensrualPeriod => 484, + LastXRayDate => 455, + HearingVisionPrescriptionDate => 471, + DisabilityDates => missing, + LastWorkedDate => missing, + AuthorizedReturnToWork => missing, + AdmissionDate => missing, + DischargeDate => missing, + AssumedRelinquishedCareDates => missing, + PropertyAndCasualtyDateOfFirstContact => missing, + RepricerReceivedDate => missing")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +DTP*471*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var onsetOfCurrentIllnessDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OnsetOfCurrentIllnessDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(onsetOfCurrentIllnessDate != null); + Assert.IsTrue(onsetOfCurrentIllnessDate.HasValue); + Assert.IsTrue(onsetOfCurrentIllnessDate.IsPresent); + Assert.AreEqual("431", onsetOfCurrentIllnessDate.ValueOrDefault()); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsTrue(initialTreatmentDate.HasValue); + Assert.IsTrue(initialTreatmentDate.IsPresent); + Assert.AreEqual("454", initialTreatmentDate.ValueOrDefault()); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsTrue(lastSeenDate.HasValue); + Assert.IsTrue(lastSeenDate.IsPresent); + Assert.AreEqual("304", lastSeenDate.ValueOrDefault()); + + var acuteManifestationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AcuteManifestationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(acuteManifestationDate != null); + Assert.IsTrue(acuteManifestationDate.HasValue); + Assert.IsTrue(acuteManifestationDate.IsPresent); + Assert.AreEqual("453", acuteManifestationDate.ValueOrDefault()); + + var accidentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AccidentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(accidentDate != null); + Assert.IsTrue(accidentDate.HasValue); + Assert.IsTrue(accidentDate.IsPresent); + Assert.AreEqual("439", accidentDate.ValueOrDefault()); + + var lastMensrualPeriod = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastMensrualPeriod) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastMensrualPeriod != null); + Assert.IsTrue(lastMensrualPeriod.HasValue); + Assert.IsTrue(lastMensrualPeriod.IsPresent); + Assert.AreEqual("484", lastMensrualPeriod.ValueOrDefault()); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsTrue(lastXRayDate.HasValue); + Assert.IsTrue(lastXRayDate.IsPresent); + Assert.AreEqual("455", lastXRayDate.ValueOrDefault()); + + var hearingVisionPrescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HearingVisionPrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(hearingVisionPrescriptionDate != null); + Assert.IsTrue(hearingVisionPrescriptionDate.HasValue); + Assert.IsTrue(hearingVisionPrescriptionDate.IsPresent); + Assert.AreEqual("471", hearingVisionPrescriptionDate.ValueOrDefault()); + + var disabilityDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DisabilityDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(disabilityDates != null); + Assert.IsFalse(disabilityDates.HasValue); + Assert.IsFalse(disabilityDates.IsPresent); + + var lastWorkedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastWorkedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastWorkedDate != null); + Assert.IsFalse(lastWorkedDate.HasValue); + Assert.IsFalse(lastWorkedDate.IsPresent); + + var authorizedReturnToWork = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AuthorizedReturnToWork) + .Select(x => x.DateTimeQualifier); + + Assume.That(authorizedReturnToWork != null); + Assert.IsFalse(authorizedReturnToWork.HasValue); + Assert.IsFalse(authorizedReturnToWork.IsPresent); + + var admissionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdmissionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(admissionDate != null); + Assert.IsFalse(admissionDate.HasValue); + Assert.IsFalse(admissionDate.IsPresent); + + var dischargeDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DischargeDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(dischargeDate != null); + Assert.IsFalse(dischargeDate.HasValue); + Assert.IsFalse(dischargeDate.IsPresent); + + var assumedRelinquishedCareDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AssumedRelinquishedCareDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(assumedRelinquishedCareDates != null); + Assert.IsFalse(assumedRelinquishedCareDates.HasValue); + Assert.IsFalse(assumedRelinquishedCareDates.IsPresent); + + var propertyAndCasualtyDateOfFirstContact = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PropertyAndCasualtyDateOfFirstContact) + .Select(x => x.DateTimeQualifier); + + Assume.That(propertyAndCasualtyDateOfFirstContact != null); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.HasValue); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.IsPresent); + + var repricerReceivedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricerReceivedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(repricerReceivedDate != null); + Assert.IsFalse(repricerReceivedDate.HasValue); + Assert.IsFalse(repricerReceivedDate.IsPresent); + } + + [Test(Description = @"Condition : OnsetOfCurrentIllnessDate => 431, + InitialTreatmentDate => 454, + LastSeenDate => 304, + AcuteManifestationDate => 453, + AccidentDate => 439, + LastMensrualPeriod => 484, + LastXRayDate => 455, + HearingVisionPrescriptionDate => missing, + DisabilityDates => missing, + LastWorkedDate => missing, + AuthorizedReturnToWork => missing, + AdmissionDate => missing, + DischargeDate => missing, + AssumedRelinquishedCareDates => missing, + PropertyAndCasualtyDateOfFirstContact => missing, + RepricerReceivedDate => missing")] + public void Test2() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +DTP*455*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var onsetOfCurrentIllnessDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OnsetOfCurrentIllnessDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(onsetOfCurrentIllnessDate != null); + Assert.IsTrue(onsetOfCurrentIllnessDate.HasValue); + Assert.IsTrue(onsetOfCurrentIllnessDate.IsPresent); + Assert.AreEqual("431", onsetOfCurrentIllnessDate.ValueOrDefault()); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsTrue(initialTreatmentDate.HasValue); + Assert.IsTrue(initialTreatmentDate.IsPresent); + Assert.AreEqual("454", initialTreatmentDate.ValueOrDefault()); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsTrue(lastSeenDate.HasValue); + Assert.IsTrue(lastSeenDate.IsPresent); + Assert.AreEqual("304", lastSeenDate.ValueOrDefault()); + + var acuteManifestationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AcuteManifestationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(acuteManifestationDate != null); + Assert.IsTrue(acuteManifestationDate.HasValue); + Assert.IsTrue(acuteManifestationDate.IsPresent); + Assert.AreEqual("453", acuteManifestationDate.ValueOrDefault()); + + var accidentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AccidentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(accidentDate != null); + Assert.IsTrue(accidentDate.HasValue); + Assert.IsTrue(accidentDate.IsPresent); + Assert.AreEqual("439", accidentDate.ValueOrDefault()); + + var lastMensrualPeriod = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastMensrualPeriod) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastMensrualPeriod != null); + Assert.IsTrue(lastMensrualPeriod.HasValue); + Assert.IsTrue(lastMensrualPeriod.IsPresent); + Assert.AreEqual("484", lastMensrualPeriod.ValueOrDefault()); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsTrue(lastXRayDate.HasValue); + Assert.IsTrue(lastXRayDate.IsPresent); + Assert.AreEqual("455", lastXRayDate.ValueOrDefault()); + + var hearingVisionPrescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HearingVisionPrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(hearingVisionPrescriptionDate != null); + Assert.IsFalse(hearingVisionPrescriptionDate.HasValue); + Assert.IsFalse(hearingVisionPrescriptionDate.IsPresent); + + var disabilityDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DisabilityDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(disabilityDates != null); + Assert.IsFalse(disabilityDates.HasValue); + Assert.IsFalse(disabilityDates.IsPresent); + + var lastWorkedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastWorkedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastWorkedDate != null); + Assert.IsFalse(lastWorkedDate.HasValue); + Assert.IsFalse(lastWorkedDate.IsPresent); + + var authorizedReturnToWork = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AuthorizedReturnToWork) + .Select(x => x.DateTimeQualifier); + + Assume.That(authorizedReturnToWork != null); + Assert.IsFalse(authorizedReturnToWork.HasValue); + Assert.IsFalse(authorizedReturnToWork.IsPresent); + + var admissionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdmissionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(admissionDate != null); + Assert.IsFalse(admissionDate.HasValue); + Assert.IsFalse(admissionDate.IsPresent); + + var dischargeDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DischargeDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(dischargeDate != null); + Assert.IsFalse(dischargeDate.HasValue); + Assert.IsFalse(dischargeDate.IsPresent); + + var assumedRelinquishedCareDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AssumedRelinquishedCareDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(assumedRelinquishedCareDates != null); + Assert.IsFalse(assumedRelinquishedCareDates.HasValue); + Assert.IsFalse(assumedRelinquishedCareDates.IsPresent); + + var propertyAndCasualtyDateOfFirstContact = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PropertyAndCasualtyDateOfFirstContact) + .Select(x => x.DateTimeQualifier); + + Assume.That(propertyAndCasualtyDateOfFirstContact != null); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.HasValue); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.IsPresent); + + var repricerReceivedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricerReceivedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(repricerReceivedDate != null); + Assert.IsFalse(repricerReceivedDate.HasValue); + Assert.IsFalse(repricerReceivedDate.IsPresent); + } + + [Test(Description = @"Condition : OnsetOfCurrentIllnessDate => 431, + InitialTreatmentDate => 454, + LastSeenDate => 304, + AcuteManifestationDate => 453, + AccidentDate => 439, + LastMensrualPeriod => 484, + LastXRayDate => missing, + HearingVisionPrescriptionDate => missing, + DisabilityDates => missing, + LastWorkedDate => missing, + AuthorizedReturnToWork => missing, + AdmissionDate => missing, + DischargeDate => missing, + AssumedRelinquishedCareDates => missing, + PropertyAndCasualtyDateOfFirstContact => missing, + RepricerReceivedDate => missing")] + public void Test3() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +DTP*484*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var onsetOfCurrentIllnessDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OnsetOfCurrentIllnessDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(onsetOfCurrentIllnessDate != null); + Assert.IsTrue(onsetOfCurrentIllnessDate.HasValue); + Assert.IsTrue(onsetOfCurrentIllnessDate.IsPresent); + Assert.AreEqual("431", onsetOfCurrentIllnessDate.ValueOrDefault()); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsTrue(initialTreatmentDate.HasValue); + Assert.IsTrue(initialTreatmentDate.IsPresent); + Assert.AreEqual("454", initialTreatmentDate.ValueOrDefault()); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsTrue(lastSeenDate.HasValue); + Assert.IsTrue(lastSeenDate.IsPresent); + Assert.AreEqual("304", lastSeenDate.ValueOrDefault()); + + var acuteManifestationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AcuteManifestationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(acuteManifestationDate != null); + Assert.IsTrue(acuteManifestationDate.HasValue); + Assert.IsTrue(acuteManifestationDate.IsPresent); + Assert.AreEqual("453", acuteManifestationDate.ValueOrDefault()); + + var accidentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AccidentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(accidentDate != null); + Assert.IsTrue(accidentDate.HasValue); + Assert.IsTrue(accidentDate.IsPresent); + Assert.AreEqual("439", accidentDate.ValueOrDefault()); + + var lastMensrualPeriod = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastMensrualPeriod) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastMensrualPeriod != null); + Assert.IsTrue(lastMensrualPeriod.HasValue); + Assert.IsTrue(lastMensrualPeriod.IsPresent); + Assert.AreEqual("484", lastMensrualPeriod.ValueOrDefault()); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsFalse(lastXRayDate.HasValue); + Assert.IsFalse(lastXRayDate.IsPresent); + + var hearingVisionPrescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HearingVisionPrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(hearingVisionPrescriptionDate != null); + Assert.IsFalse(hearingVisionPrescriptionDate.HasValue); + Assert.IsFalse(hearingVisionPrescriptionDate.IsPresent); + + var disabilityDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DisabilityDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(disabilityDates != null); + Assert.IsFalse(disabilityDates.HasValue); + Assert.IsFalse(disabilityDates.IsPresent); + + var lastWorkedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastWorkedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastWorkedDate != null); + Assert.IsFalse(lastWorkedDate.HasValue); + Assert.IsFalse(lastWorkedDate.IsPresent); + + var authorizedReturnToWork = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AuthorizedReturnToWork) + .Select(x => x.DateTimeQualifier); + + Assume.That(authorizedReturnToWork != null); + Assert.IsFalse(authorizedReturnToWork.HasValue); + Assert.IsFalse(authorizedReturnToWork.IsPresent); + + var admissionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdmissionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(admissionDate != null); + Assert.IsFalse(admissionDate.HasValue); + Assert.IsFalse(admissionDate.IsPresent); + + var dischargeDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DischargeDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(dischargeDate != null); + Assert.IsFalse(dischargeDate.HasValue); + Assert.IsFalse(dischargeDate.IsPresent); + + var assumedRelinquishedCareDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AssumedRelinquishedCareDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(assumedRelinquishedCareDates != null); + Assert.IsFalse(assumedRelinquishedCareDates.HasValue); + Assert.IsFalse(assumedRelinquishedCareDates.IsPresent); + + var propertyAndCasualtyDateOfFirstContact = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PropertyAndCasualtyDateOfFirstContact) + .Select(x => x.DateTimeQualifier); + + Assume.That(propertyAndCasualtyDateOfFirstContact != null); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.HasValue); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.IsPresent); + + var repricerReceivedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricerReceivedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(repricerReceivedDate != null); + Assert.IsFalse(repricerReceivedDate.HasValue); + Assert.IsFalse(repricerReceivedDate.IsPresent); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P9ConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P9ConditionalTests.cs new file mode 100644 index 000000000..33d7b01eb --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2300P9ConditionalTests.cs @@ -0,0 +1,1739 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing837ProfessionalL2300P9ConditionalTests : + X12MacheteTestHarness + { + [Test(Description = @"Condition : OnsetOfCurrentIllnessDate => 431, + InitialTreatmentDate => 454, + LastSeenDate => 304, + AcuteManifestationDate => 453, + AccidentDate => 439, + LastMensrualPeriod => missing, + LastXRayDate => missing, + HearingVisionPrescriptionDate => missing, + DisabilityDates => missing, + LastWorkedDate => missing, + AuthorizedReturnToWork => missing, + AdmissionDate => missing, + DischargeDate => missing, + AssumedRelinquishedCareDates => missing, + PropertyAndCasualtyDateOfFirstContact => missing, + RepricerReceivedDate => missing")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +DTP*439*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var onsetOfCurrentIllnessDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OnsetOfCurrentIllnessDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(onsetOfCurrentIllnessDate != null); + Assert.IsTrue(onsetOfCurrentIllnessDate.HasValue); + Assert.IsTrue(onsetOfCurrentIllnessDate.IsPresent); + Assert.AreEqual("431", onsetOfCurrentIllnessDate.ValueOrDefault()); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsTrue(initialTreatmentDate.HasValue); + Assert.IsTrue(initialTreatmentDate.IsPresent); + Assert.AreEqual("454", initialTreatmentDate.ValueOrDefault()); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsTrue(lastSeenDate.HasValue); + Assert.IsTrue(lastSeenDate.IsPresent); + Assert.AreEqual("304", lastSeenDate.ValueOrDefault()); + + var acuteManifestationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AcuteManifestationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(acuteManifestationDate != null); + Assert.IsTrue(acuteManifestationDate.HasValue); + Assert.IsTrue(acuteManifestationDate.IsPresent); + Assert.AreEqual("453", acuteManifestationDate.ValueOrDefault()); + + var accidentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AccidentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(accidentDate != null); + Assert.IsTrue(accidentDate.HasValue); + Assert.IsTrue(accidentDate.IsPresent); + Assert.AreEqual("439", accidentDate.ValueOrDefault()); + + var lastMensrualPeriod = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastMensrualPeriod) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastMensrualPeriod != null); + Assert.IsFalse(lastMensrualPeriod.HasValue); + Assert.IsFalse(lastMensrualPeriod.IsPresent); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsFalse(lastXRayDate.HasValue); + Assert.IsFalse(lastXRayDate.IsPresent); + + var hearingVisionPrescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HearingVisionPrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(hearingVisionPrescriptionDate != null); + Assert.IsFalse(hearingVisionPrescriptionDate.HasValue); + Assert.IsFalse(hearingVisionPrescriptionDate.IsPresent); + + var disabilityDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DisabilityDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(disabilityDates != null); + Assert.IsFalse(disabilityDates.HasValue); + Assert.IsFalse(disabilityDates.IsPresent); + + var lastWorkedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastWorkedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastWorkedDate != null); + Assert.IsFalse(lastWorkedDate.HasValue); + Assert.IsFalse(lastWorkedDate.IsPresent); + + var authorizedReturnToWork = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AuthorizedReturnToWork) + .Select(x => x.DateTimeQualifier); + + Assume.That(authorizedReturnToWork != null); + Assert.IsFalse(authorizedReturnToWork.HasValue); + Assert.IsFalse(authorizedReturnToWork.IsPresent); + + var admissionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdmissionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(admissionDate != null); + Assert.IsFalse(admissionDate.HasValue); + Assert.IsFalse(admissionDate.IsPresent); + + var dischargeDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DischargeDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(dischargeDate != null); + Assert.IsFalse(dischargeDate.HasValue); + Assert.IsFalse(dischargeDate.IsPresent); + + var assumedRelinquishedCareDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AssumedRelinquishedCareDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(assumedRelinquishedCareDates != null); + Assert.IsFalse(assumedRelinquishedCareDates.HasValue); + Assert.IsFalse(assumedRelinquishedCareDates.IsPresent); + + var propertyAndCasualtyDateOfFirstContact = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PropertyAndCasualtyDateOfFirstContact) + .Select(x => x.DateTimeQualifier); + + Assume.That(propertyAndCasualtyDateOfFirstContact != null); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.HasValue); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.IsPresent); + + var repricerReceivedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricerReceivedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(repricerReceivedDate != null); + Assert.IsFalse(repricerReceivedDate.HasValue); + Assert.IsFalse(repricerReceivedDate.IsPresent); + } + + [Test(Description = @"Condition : OnsetOfCurrentIllnessDate => 431, + InitialTreatmentDate => 454, + LastSeenDate => 304, + AcuteManifestationDate => 453, + AccidentDate => missing, + LastMensrualPeriod => missing, + LastXRayDate => missing, + HearingVisionPrescriptionDate => missing, + DisabilityDates => missing, + LastWorkedDate => missing, + AuthorizedReturnToWork => missing, + AdmissionDate => missing, + DischargeDate => missing, + AssumedRelinquishedCareDates => missing, + PropertyAndCasualtyDateOfFirstContact => missing, + RepricerReceivedDate => missing")] + public void Test2() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +DTP*453*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var onsetOfCurrentIllnessDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OnsetOfCurrentIllnessDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(onsetOfCurrentIllnessDate != null); + Assert.IsTrue(onsetOfCurrentIllnessDate.HasValue); + Assert.IsTrue(onsetOfCurrentIllnessDate.IsPresent); + Assert.AreEqual("431", onsetOfCurrentIllnessDate.ValueOrDefault()); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsTrue(initialTreatmentDate.HasValue); + Assert.IsTrue(initialTreatmentDate.IsPresent); + Assert.AreEqual("454", initialTreatmentDate.ValueOrDefault()); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsTrue(lastSeenDate.HasValue); + Assert.IsTrue(lastSeenDate.IsPresent); + Assert.AreEqual("304", lastSeenDate.ValueOrDefault()); + + var acuteManifestationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AcuteManifestationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(acuteManifestationDate != null); + Assert.IsTrue(acuteManifestationDate.HasValue); + Assert.IsTrue(acuteManifestationDate.IsPresent); + Assert.AreEqual("453", acuteManifestationDate.ValueOrDefault()); + + var accidentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AccidentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(accidentDate != null); + Assert.IsFalse(accidentDate.HasValue); + Assert.IsFalse(accidentDate.IsPresent); + + var lastMensrualPeriod = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastMensrualPeriod) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastMensrualPeriod != null); + Assert.IsFalse(lastMensrualPeriod.HasValue); + Assert.IsFalse(lastMensrualPeriod.IsPresent); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsFalse(lastXRayDate.HasValue); + Assert.IsFalse(lastXRayDate.IsPresent); + + var hearingVisionPrescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HearingVisionPrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(hearingVisionPrescriptionDate != null); + Assert.IsFalse(hearingVisionPrescriptionDate.HasValue); + Assert.IsFalse(hearingVisionPrescriptionDate.IsPresent); + + var disabilityDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DisabilityDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(disabilityDates != null); + Assert.IsFalse(disabilityDates.HasValue); + Assert.IsFalse(disabilityDates.IsPresent); + + var lastWorkedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastWorkedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastWorkedDate != null); + Assert.IsFalse(lastWorkedDate.HasValue); + Assert.IsFalse(lastWorkedDate.IsPresent); + + var authorizedReturnToWork = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AuthorizedReturnToWork) + .Select(x => x.DateTimeQualifier); + + Assume.That(authorizedReturnToWork != null); + Assert.IsFalse(authorizedReturnToWork.HasValue); + Assert.IsFalse(authorizedReturnToWork.IsPresent); + + var admissionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdmissionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(admissionDate != null); + Assert.IsFalse(admissionDate.HasValue); + Assert.IsFalse(admissionDate.IsPresent); + + var dischargeDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DischargeDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(dischargeDate != null); + Assert.IsFalse(dischargeDate.HasValue); + Assert.IsFalse(dischargeDate.IsPresent); + + var assumedRelinquishedCareDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AssumedRelinquishedCareDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(assumedRelinquishedCareDates != null); + Assert.IsFalse(assumedRelinquishedCareDates.HasValue); + Assert.IsFalse(assumedRelinquishedCareDates.IsPresent); + + var propertyAndCasualtyDateOfFirstContact = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PropertyAndCasualtyDateOfFirstContact) + .Select(x => x.DateTimeQualifier); + + Assume.That(propertyAndCasualtyDateOfFirstContact != null); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.HasValue); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.IsPresent); + + var repricerReceivedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricerReceivedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(repricerReceivedDate != null); + Assert.IsFalse(repricerReceivedDate.HasValue); + Assert.IsFalse(repricerReceivedDate.IsPresent); + } + + [Test(Description = @"Condition : OnsetOfCurrentIllnessDate => 431, + InitialTreatmentDate => 454, + LastSeenDate => 304, + AcuteManifestationDate => missing, + AccidentDate => missing, + LastMensrualPeriod => missing, + LastXRayDate => missing, + HearingVisionPrescriptionDate => missing, + DisabilityDates => missing, + LastWorkedDate => missing, + AuthorizedReturnToWork => missing, + AdmissionDate => missing, + DischargeDate => missing, + AssumedRelinquishedCareDates => missing, + PropertyAndCasualtyDateOfFirstContact => missing, + RepricerReceivedDate => missing")] + public void Test3() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*454*D8*20061109 +DTP*304*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var onsetOfCurrentIllnessDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OnsetOfCurrentIllnessDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(onsetOfCurrentIllnessDate != null); + Assert.IsTrue(onsetOfCurrentIllnessDate.HasValue); + Assert.IsTrue(onsetOfCurrentIllnessDate.IsPresent); + Assert.AreEqual("431", onsetOfCurrentIllnessDate.ValueOrDefault()); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsTrue(initialTreatmentDate.HasValue); + Assert.IsTrue(initialTreatmentDate.IsPresent); + Assert.AreEqual("454", initialTreatmentDate.ValueOrDefault()); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsTrue(lastSeenDate.HasValue); + Assert.IsTrue(lastSeenDate.IsPresent); + Assert.AreEqual("304", lastSeenDate.ValueOrDefault()); + + var acuteManifestationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AcuteManifestationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(acuteManifestationDate != null); + Assert.IsFalse(acuteManifestationDate.HasValue); + Assert.IsFalse(acuteManifestationDate.IsPresent); + + var accidentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AccidentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(accidentDate != null); + Assert.IsFalse(accidentDate.HasValue); + Assert.IsFalse(accidentDate.IsPresent); + + var lastMensrualPeriod = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastMensrualPeriod) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastMensrualPeriod != null); + Assert.IsFalse(lastMensrualPeriod.HasValue); + Assert.IsFalse(lastMensrualPeriod.IsPresent); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsFalse(lastXRayDate.HasValue); + Assert.IsFalse(lastXRayDate.IsPresent); + + var hearingVisionPrescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HearingVisionPrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(hearingVisionPrescriptionDate != null); + Assert.IsFalse(hearingVisionPrescriptionDate.HasValue); + Assert.IsFalse(hearingVisionPrescriptionDate.IsPresent); + + var disabilityDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DisabilityDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(disabilityDates != null); + Assert.IsFalse(disabilityDates.HasValue); + Assert.IsFalse(disabilityDates.IsPresent); + + var lastWorkedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastWorkedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastWorkedDate != null); + Assert.IsFalse(lastWorkedDate.HasValue); + Assert.IsFalse(lastWorkedDate.IsPresent); + + var authorizedReturnToWork = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AuthorizedReturnToWork) + .Select(x => x.DateTimeQualifier); + + Assume.That(authorizedReturnToWork != null); + Assert.IsFalse(authorizedReturnToWork.HasValue); + Assert.IsFalse(authorizedReturnToWork.IsPresent); + + var admissionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdmissionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(admissionDate != null); + Assert.IsFalse(admissionDate.HasValue); + Assert.IsFalse(admissionDate.IsPresent); + + var dischargeDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DischargeDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(dischargeDate != null); + Assert.IsFalse(dischargeDate.HasValue); + Assert.IsFalse(dischargeDate.IsPresent); + + var assumedRelinquishedCareDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AssumedRelinquishedCareDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(assumedRelinquishedCareDates != null); + Assert.IsFalse(assumedRelinquishedCareDates.HasValue); + Assert.IsFalse(assumedRelinquishedCareDates.IsPresent); + + var propertyAndCasualtyDateOfFirstContact = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PropertyAndCasualtyDateOfFirstContact) + .Select(x => x.DateTimeQualifier); + + Assume.That(propertyAndCasualtyDateOfFirstContact != null); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.HasValue); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.IsPresent); + + var repricerReceivedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricerReceivedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(repricerReceivedDate != null); + Assert.IsFalse(repricerReceivedDate.HasValue); + Assert.IsFalse(repricerReceivedDate.IsPresent); + } + + [Test(Description = @"Condition : OnsetOfCurrentIllnessDate => 431, + InitialTreatmentDate => missing, + LastSeenDate => missing, + AcuteManifestationDate => missing, + AccidentDate => missing, + LastMensrualPeriod => missing, + LastXRayDate => missing, + HearingVisionPrescriptionDate => missing, + DisabilityDates => missing, + LastWorkedDate => missing, + AuthorizedReturnToWork => missing, + AdmissionDate => missing, + DischargeDate => missing, + AssumedRelinquishedCareDates => missing, + PropertyAndCasualtyDateOfFirstContact => missing, + RepricerReceivedDate => missing")] + public void Test4() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var onsetOfCurrentIllnessDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OnsetOfCurrentIllnessDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(onsetOfCurrentIllnessDate != null); + Assert.IsTrue(onsetOfCurrentIllnessDate.HasValue); + Assert.IsTrue(onsetOfCurrentIllnessDate.IsPresent); + Assert.AreEqual("431", onsetOfCurrentIllnessDate.ValueOrDefault()); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsFalse(initialTreatmentDate.HasValue); + Assert.IsFalse(initialTreatmentDate.IsPresent); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsFalse(lastSeenDate.HasValue); + Assert.IsFalse(lastSeenDate.IsPresent); + + var acuteManifestationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AcuteManifestationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(acuteManifestationDate != null); + Assert.IsFalse(acuteManifestationDate.HasValue); + Assert.IsFalse(acuteManifestationDate.IsPresent); + + var accidentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AccidentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(accidentDate != null); + Assert.IsFalse(accidentDate.HasValue); + Assert.IsFalse(accidentDate.IsPresent); + + var lastMensrualPeriod = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastMensrualPeriod) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastMensrualPeriod != null); + Assert.IsFalse(lastMensrualPeriod.HasValue); + Assert.IsFalse(lastMensrualPeriod.IsPresent); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsFalse(lastXRayDate.HasValue); + Assert.IsFalse(lastXRayDate.IsPresent); + + var hearingVisionPrescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HearingVisionPrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(hearingVisionPrescriptionDate != null); + Assert.IsFalse(hearingVisionPrescriptionDate.HasValue); + Assert.IsFalse(hearingVisionPrescriptionDate.IsPresent); + + var disabilityDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DisabilityDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(disabilityDates != null); + Assert.IsFalse(disabilityDates.HasValue); + Assert.IsFalse(disabilityDates.IsPresent); + + var lastWorkedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastWorkedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastWorkedDate != null); + Assert.IsFalse(lastWorkedDate.HasValue); + Assert.IsFalse(lastWorkedDate.IsPresent); + + var authorizedReturnToWork = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AuthorizedReturnToWork) + .Select(x => x.DateTimeQualifier); + + Assume.That(authorizedReturnToWork != null); + Assert.IsFalse(authorizedReturnToWork.HasValue); + Assert.IsFalse(authorizedReturnToWork.IsPresent); + + var admissionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdmissionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(admissionDate != null); + Assert.IsFalse(admissionDate.HasValue); + Assert.IsFalse(admissionDate.IsPresent); + + var dischargeDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DischargeDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(dischargeDate != null); + Assert.IsFalse(dischargeDate.HasValue); + Assert.IsFalse(dischargeDate.IsPresent); + + var assumedRelinquishedCareDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AssumedRelinquishedCareDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(assumedRelinquishedCareDates != null); + Assert.IsFalse(assumedRelinquishedCareDates.HasValue); + Assert.IsFalse(assumedRelinquishedCareDates.IsPresent); + + var propertyAndCasualtyDateOfFirstContact = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PropertyAndCasualtyDateOfFirstContact) + .Select(x => x.DateTimeQualifier); + + Assume.That(propertyAndCasualtyDateOfFirstContact != null); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.HasValue); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.IsPresent); + + var repricerReceivedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricerReceivedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(repricerReceivedDate != null); + Assert.IsFalse(repricerReceivedDate.HasValue); + Assert.IsFalse(repricerReceivedDate.IsPresent); + } + + [Test(Description = @"Condition : OnsetOfCurrentIllnessDate => 431, + InitialTreatmentDate => missing, + LastSeenDate => missing, + AcuteManifestationDate => missing, + AccidentDate => missing, + LastMensrualPeriod => missing, + LastXRayDate => missing, + HearingVisionPrescriptionDate => missing, + DisabilityDates => missing, + LastWorkedDate => missing, + AuthorizedReturnToWork => missing, + AdmissionDate => missing, + DischargeDate => missing, + AssumedRelinquishedCareDates => missing, + PropertyAndCasualtyDateOfFirstContact => missing, + RepricerReceivedDate => 050")] + public void Test5() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*050*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var onsetOfCurrentIllnessDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OnsetOfCurrentIllnessDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(onsetOfCurrentIllnessDate != null); + Assert.IsTrue(onsetOfCurrentIllnessDate.HasValue); + Assert.IsTrue(onsetOfCurrentIllnessDate.IsPresent); + Assert.AreEqual("431", onsetOfCurrentIllnessDate.ValueOrDefault()); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsFalse(initialTreatmentDate.HasValue); + Assert.IsFalse(initialTreatmentDate.IsPresent); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsFalse(lastSeenDate.HasValue); + Assert.IsFalse(lastSeenDate.IsPresent); + + var acuteManifestationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AcuteManifestationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(acuteManifestationDate != null); + Assert.IsFalse(acuteManifestationDate.HasValue); + Assert.IsFalse(acuteManifestationDate.IsPresent); + + var accidentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AccidentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(accidentDate != null); + Assert.IsFalse(accidentDate.HasValue); + Assert.IsFalse(accidentDate.IsPresent); + + var lastMensrualPeriod = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastMensrualPeriod) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastMensrualPeriod != null); + Assert.IsFalse(lastMensrualPeriod.HasValue); + Assert.IsFalse(lastMensrualPeriod.IsPresent); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsFalse(lastXRayDate.HasValue); + Assert.IsFalse(lastXRayDate.IsPresent); + + var hearingVisionPrescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HearingVisionPrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(hearingVisionPrescriptionDate != null); + Assert.IsFalse(hearingVisionPrescriptionDate.HasValue); + Assert.IsFalse(hearingVisionPrescriptionDate.IsPresent); + + var disabilityDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DisabilityDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(disabilityDates != null); + Assert.IsFalse(disabilityDates.HasValue); + Assert.IsFalse(disabilityDates.IsPresent); + + var lastWorkedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastWorkedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastWorkedDate != null); + Assert.IsFalse(lastWorkedDate.HasValue); + Assert.IsFalse(lastWorkedDate.IsPresent); + + var authorizedReturnToWork = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AuthorizedReturnToWork) + .Select(x => x.DateTimeQualifier); + + Assume.That(authorizedReturnToWork != null); + Assert.IsFalse(authorizedReturnToWork.HasValue); + Assert.IsFalse(authorizedReturnToWork.IsPresent); + + var admissionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdmissionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(admissionDate != null); + Assert.IsFalse(admissionDate.HasValue); + Assert.IsFalse(admissionDate.IsPresent); + + var dischargeDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DischargeDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(dischargeDate != null); + Assert.IsFalse(dischargeDate.HasValue); + Assert.IsFalse(dischargeDate.IsPresent); + + var assumedRelinquishedCareDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AssumedRelinquishedCareDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(assumedRelinquishedCareDates != null); + Assert.IsFalse(assumedRelinquishedCareDates.HasValue); + Assert.IsFalse(assumedRelinquishedCareDates.IsPresent); + + var propertyAndCasualtyDateOfFirstContact = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PropertyAndCasualtyDateOfFirstContact) + .Select(x => x.DateTimeQualifier); + + Assume.That(propertyAndCasualtyDateOfFirstContact != null); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.HasValue); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.IsPresent); + + var repricerReceivedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricerReceivedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(repricerReceivedDate != null); + Assert.IsTrue(repricerReceivedDate.HasValue); + Assert.IsTrue(repricerReceivedDate.IsPresent); + Assert.AreEqual("050", repricerReceivedDate.ValueOrDefault()); + } + + [Test(Description = @"Condition : OnsetOfCurrentIllnessDate => 431, + InitialTreatmentDate => missing, + LastSeenDate => missing, + AcuteManifestationDate => missing, + AccidentDate => missing, + LastMensrualPeriod => missing, + LastXRayDate => missing, + HearingVisionPrescriptionDate => 471, + DisabilityDates => missing, + LastWorkedDate => missing, + AuthorizedReturnToWork => missing, + AdmissionDate => missing, + DischargeDate => missing, + AssumedRelinquishedCareDates => missing, + PropertyAndCasualtyDateOfFirstContact => missing, + RepricerReceivedDate => 050")] + public void Test6() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +DTP*471*D8*20061109 +DTP*050*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var onsetOfCurrentIllnessDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OnsetOfCurrentIllnessDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(onsetOfCurrentIllnessDate != null); + Assert.IsTrue(onsetOfCurrentIllnessDate.HasValue); + Assert.IsTrue(onsetOfCurrentIllnessDate.IsPresent); + Assert.AreEqual("431", onsetOfCurrentIllnessDate.ValueOrDefault()); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsFalse(initialTreatmentDate.HasValue); + Assert.IsFalse(initialTreatmentDate.IsPresent); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsFalse(lastSeenDate.HasValue); + Assert.IsFalse(lastSeenDate.IsPresent); + + var acuteManifestationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AcuteManifestationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(acuteManifestationDate != null); + Assert.IsFalse(acuteManifestationDate.HasValue); + Assert.IsFalse(acuteManifestationDate.IsPresent); + + var accidentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AccidentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(accidentDate != null); + Assert.IsFalse(accidentDate.HasValue); + Assert.IsFalse(accidentDate.IsPresent); + + var lastMensrualPeriod = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastMensrualPeriod) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastMensrualPeriod != null); + Assert.IsFalse(lastMensrualPeriod.HasValue); + Assert.IsFalse(lastMensrualPeriod.IsPresent); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsFalse(lastXRayDate.HasValue); + Assert.IsFalse(lastXRayDate.IsPresent); + + var hearingVisionPrescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HearingVisionPrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(hearingVisionPrescriptionDate != null); + Assert.IsTrue(hearingVisionPrescriptionDate.HasValue); + Assert.IsTrue(hearingVisionPrescriptionDate.IsPresent); + Assert.AreEqual("471", hearingVisionPrescriptionDate.ValueOrDefault()); + + var disabilityDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DisabilityDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(disabilityDates != null); + Assert.IsFalse(disabilityDates.HasValue); + Assert.IsFalse(disabilityDates.IsPresent); + + var lastWorkedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastWorkedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastWorkedDate != null); + Assert.IsFalse(lastWorkedDate.HasValue); + Assert.IsFalse(lastWorkedDate.IsPresent); + + var authorizedReturnToWork = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AuthorizedReturnToWork) + .Select(x => x.DateTimeQualifier); + + Assume.That(authorizedReturnToWork != null); + Assert.IsFalse(authorizedReturnToWork.HasValue); + Assert.IsFalse(authorizedReturnToWork.IsPresent); + + var admissionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdmissionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(admissionDate != null); + Assert.IsFalse(admissionDate.HasValue); + Assert.IsFalse(admissionDate.IsPresent); + + var dischargeDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DischargeDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(dischargeDate != null); + Assert.IsFalse(dischargeDate.HasValue); + Assert.IsFalse(dischargeDate.IsPresent); + + var assumedRelinquishedCareDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AssumedRelinquishedCareDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(assumedRelinquishedCareDates != null); + Assert.IsFalse(assumedRelinquishedCareDates.HasValue); + Assert.IsFalse(assumedRelinquishedCareDates.IsPresent); + + var propertyAndCasualtyDateOfFirstContact = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PropertyAndCasualtyDateOfFirstContact) + .Select(x => x.DateTimeQualifier); + + Assume.That(propertyAndCasualtyDateOfFirstContact != null); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.HasValue); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.IsPresent); + + var repricerReceivedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricerReceivedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(repricerReceivedDate != null); + Assert.IsTrue(repricerReceivedDate.HasValue); + Assert.IsTrue(repricerReceivedDate.IsPresent); + Assert.AreEqual("050", repricerReceivedDate.ValueOrDefault()); + } + + [Test(Description = @"Condition : OnsetOfCurrentIllnessDate => missing, + InitialTreatmentDate => missing, + LastSeenDate => missing, + AcuteManifestationDate => missing, + AccidentDate => missing, + LastMensrualPeriod => missing, + LastXRayDate => missing, + HearingVisionPrescriptionDate => 471, + DisabilityDates => missing, + LastWorkedDate => missing, + AuthorizedReturnToWork => missing, + AdmissionDate => missing, + DischargeDate => missing, + AssumedRelinquishedCareDates => missing, + PropertyAndCasualtyDateOfFirstContact => missing, + RepricerReceivedDate => 050")] + public void Test7() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*471*D8*20061109 +DTP*050*D8*20061109 +REF*D9*111222333444 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var onsetOfCurrentIllnessDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OnsetOfCurrentIllnessDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(onsetOfCurrentIllnessDate != null); + Assert.IsFalse(onsetOfCurrentIllnessDate.HasValue); + Assert.IsFalse(onsetOfCurrentIllnessDate.IsPresent); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsFalse(initialTreatmentDate.HasValue); + Assert.IsFalse(initialTreatmentDate.IsPresent); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsFalse(lastSeenDate.HasValue); + Assert.IsFalse(lastSeenDate.IsPresent); + + var acuteManifestationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AcuteManifestationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(acuteManifestationDate != null); + Assert.IsFalse(acuteManifestationDate.HasValue); + Assert.IsFalse(acuteManifestationDate.IsPresent); + + var accidentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AccidentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(accidentDate != null); + Assert.IsFalse(accidentDate.HasValue); + Assert.IsFalse(accidentDate.IsPresent); + + var lastMensrualPeriod = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastMensrualPeriod) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastMensrualPeriod != null); + Assert.IsFalse(lastMensrualPeriod.HasValue); + Assert.IsFalse(lastMensrualPeriod.IsPresent); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsFalse(lastXRayDate.HasValue); + Assert.IsFalse(lastXRayDate.IsPresent); + + var hearingVisionPrescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.HearingVisionPrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(hearingVisionPrescriptionDate != null); + Assert.IsTrue(hearingVisionPrescriptionDate.HasValue); + Assert.IsTrue(hearingVisionPrescriptionDate.IsPresent); + Assert.AreEqual("471", hearingVisionPrescriptionDate.ValueOrDefault()); + + var disabilityDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DisabilityDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(disabilityDates != null); + Assert.IsFalse(disabilityDates.HasValue); + Assert.IsFalse(disabilityDates.IsPresent); + + var lastWorkedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.LastWorkedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastWorkedDate != null); + Assert.IsFalse(lastWorkedDate.HasValue); + Assert.IsFalse(lastWorkedDate.IsPresent); + + var authorizedReturnToWork = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AuthorizedReturnToWork) + .Select(x => x.DateTimeQualifier); + + Assume.That(authorizedReturnToWork != null); + Assert.IsFalse(authorizedReturnToWork.HasValue); + Assert.IsFalse(authorizedReturnToWork.IsPresent); + + var admissionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AdmissionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(admissionDate != null); + Assert.IsFalse(admissionDate.HasValue); + Assert.IsFalse(admissionDate.IsPresent); + + var dischargeDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.DischargeDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(dischargeDate != null); + Assert.IsFalse(dischargeDate.HasValue); + Assert.IsFalse(dischargeDate.IsPresent); + + var assumedRelinquishedCareDates = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.AssumedRelinquishedCareDates) + .Select(x => x.DateTimeQualifier); + + Assume.That(assumedRelinquishedCareDates != null); + Assert.IsFalse(assumedRelinquishedCareDates.HasValue); + Assert.IsFalse(assumedRelinquishedCareDates.IsPresent); + + var propertyAndCasualtyDateOfFirstContact = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.PropertyAndCasualtyDateOfFirstContact) + .Select(x => x.DateTimeQualifier); + + Assume.That(propertyAndCasualtyDateOfFirstContact != null); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.HasValue); + Assert.IsFalse(propertyAndCasualtyDateOfFirstContact.IsPresent); + + var repricerReceivedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.RepricerReceivedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(repricerReceivedDate != null); + Assert.IsTrue(repricerReceivedDate.HasValue); + Assert.IsTrue(repricerReceivedDate.IsPresent); + Assert.AreEqual("050", repricerReceivedDate.ValueOrDefault()); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2330BConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2330BConditionalTests.cs new file mode 100644 index 000000000..c2cfce7a5 --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2330BConditionalTests.cs @@ -0,0 +1,954 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing837ProfessionalL2330BConditionalTests : + X12MacheteTestHarness + { + [Test(Description = @"Condition : SecondaryIdentification => 2U, + PriorAuthorizationNumber => G1, + ReferralNumber => 9F, + ClaimAdjustmentIndicator => T4, + ClaimControlNumber => F8"), Explicit("Issue #65")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +REF*G1*AB333-Y5 +REF*9F*12345 +REF*T4*Y +REF*F8*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var secondaryIdentification = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerName) + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsTrue(secondaryIdentification.HasValue); + Assert.IsTrue(secondaryIdentification.IsPresent); + Assert.AreEqual("2U", secondaryIdentification.ValueOrDefault()); + + var priorAuthorizationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerName) + .Select(x => x.PriorAuthorizationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(priorAuthorizationNumber != null); + Assert.IsTrue(priorAuthorizationNumber.HasValue); + Assert.IsTrue(priorAuthorizationNumber.IsPresent); + Assert.AreEqual("G1", priorAuthorizationNumber.ValueOrDefault()); + + var referralNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerName) + .Select(x => x.ReferralNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(referralNumber != null); + Assert.IsTrue(referralNumber.HasValue); + Assert.IsTrue(referralNumber.IsPresent); + Assert.AreEqual("9F", referralNumber.ValueOrDefault()); + + var claimAdjustmentIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerName) + .Select(x => x.ClaimAdjustmentIndicator) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(claimAdjustmentIndicator != null); + Assert.IsTrue(claimAdjustmentIndicator.HasValue); + Assert.IsTrue(claimAdjustmentIndicator.IsPresent); + Assert.AreEqual("T4", claimAdjustmentIndicator.ValueOrDefault()); + + var claimControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerName) + .Select(x => x.ClaimControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(claimControlNumber != null); + Assert.IsTrue(claimControlNumber.HasValue); + Assert.IsTrue(claimControlNumber.IsPresent); + Assert.AreEqual("F8", claimControlNumber.ValueOrDefault()); + } + + [Test(Description = @"Condition : SecondaryIdentification => 2U, + PriorAuthorizationNumber => missing, + ReferralNumber => missing, + ClaimAdjustmentIndicator => missing, + ClaimControlNumber => missing"), Explicit("Issue #65")] + public void Test2() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +REF*2U*98765 +REF*2U*98765 +REF*2U*98765 +REF*2U*98765 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var secondaryIdentification = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerName) + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsTrue(secondaryIdentification.HasValue); + Assert.IsTrue(secondaryIdentification.IsPresent); + Assert.AreEqual("2U", secondaryIdentification.ValueOrDefault()); + + var priorAuthorizationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerName) + .Select(x => x.PriorAuthorizationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(priorAuthorizationNumber != null); + Assert.IsFalse(priorAuthorizationNumber.HasValue); + Assert.IsFalse(priorAuthorizationNumber.IsPresent); + + var referralNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerName) + .Select(x => x.ReferralNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(referralNumber != null); + Assert.IsFalse(referralNumber.HasValue); + Assert.IsFalse(referralNumber.IsPresent); + + var claimAdjustmentIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerName) + .Select(x => x.ClaimAdjustmentIndicator) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(claimAdjustmentIndicator != null); + Assert.IsFalse(claimAdjustmentIndicator.HasValue); + Assert.IsFalse(claimAdjustmentIndicator.IsPresent); + + var claimControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerName) + .Select(x => x.ClaimControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(claimControlNumber != null); + Assert.IsFalse(claimControlNumber.HasValue); + Assert.IsFalse(claimControlNumber.IsPresent); + } + + [Test(Description = @"Condition : SecondaryIdentification => [2U|EI|FY|NF], + PriorAuthorizationNumber => missing, + ReferralNumber => missing, + ClaimAdjustmentIndicator => missing, + ClaimControlNumber => missing")] + public void Test3() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +REF*NF*98765 +REF*2U*98765 +REF*FY*98765 +REF*2U*98765 +REF*EI*98765 +REF*2U*98765 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + for (int i = 0;; i++) + { + if (!transactions.Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerName) + .Select(x => x.SecondaryIdentification) + .TryGetValue(i, out var segment)) + break; + + var secondaryIdentification = segment.Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsTrue(secondaryIdentification.HasValue); + Assert.IsTrue(secondaryIdentification.IsPresent); + Assert.That(secondaryIdentification.ValueOrDefault(), Is.EqualTo("2U").Or.EqualTo("EI").Or.EqualTo("FY").Or.EqualTo("NF")); + } + + var priorAuthorizationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerName) + .Select(x => x.PriorAuthorizationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(priorAuthorizationNumber != null); + Assert.IsFalse(priorAuthorizationNumber.HasValue); + Assert.IsFalse(priorAuthorizationNumber.IsPresent); + + var referralNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerName) + .Select(x => x.ReferralNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(referralNumber != null); + Assert.IsFalse(referralNumber.HasValue); + Assert.IsFalse(referralNumber.IsPresent); + + var claimAdjustmentIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerName) + .Select(x => x.ClaimAdjustmentIndicator) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(claimAdjustmentIndicator != null); + Assert.IsFalse(claimAdjustmentIndicator.HasValue); + Assert.IsFalse(claimAdjustmentIndicator.IsPresent); + + var claimControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerName) + .Select(x => x.ClaimControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(claimControlNumber != null); + Assert.IsFalse(claimControlNumber.HasValue); + Assert.IsFalse(claimControlNumber.IsPresent); + } + + [Test(Description = @"Condition : SecondaryIdentification => [2U], + PriorAuthorizationNumber => missing, + ReferralNumber => missing, + ClaimAdjustmentIndicator => missing, + ClaimControlNumber => missing")] + public void Test4() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +REF*2U*98765 +REF*2U*98765 +REF*2U*98765 +REF*2U*98765 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + for (int i = 0;; i++) + { + if (!transactions.Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerName) + .Select(x => x.SecondaryIdentification) + .TryGetValue(i, out var segment)) + break; + + var secondaryIdentification = segment.Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsTrue(secondaryIdentification.HasValue); + Assert.IsTrue(secondaryIdentification.IsPresent); + Assert.AreEqual("2U", secondaryIdentification.ValueOrDefault()); + } + + var priorAuthorizationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerName) + .Select(x => x.PriorAuthorizationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(priorAuthorizationNumber != null); + Assert.IsFalse(priorAuthorizationNumber.HasValue); + Assert.IsFalse(priorAuthorizationNumber.IsPresent); + + var referralNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerName) + .Select(x => x.ReferralNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(referralNumber != null); + Assert.IsFalse(referralNumber.HasValue); + Assert.IsFalse(referralNumber.IsPresent); + + var claimAdjustmentIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerName) + .Select(x => x.ClaimAdjustmentIndicator) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(claimAdjustmentIndicator != null); + Assert.IsFalse(claimAdjustmentIndicator.HasValue); + Assert.IsFalse(claimAdjustmentIndicator.IsPresent); + + var claimControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerName) + .Select(x => x.ClaimControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(claimControlNumber != null); + Assert.IsFalse(claimControlNumber.HasValue); + Assert.IsFalse(claimControlNumber.IsPresent); + } + + [Test(Description = @"Condition : SecondaryIdentification => missing, + PriorAuthorizationNumber => G1, + ReferralNumber => 9F, + ClaimAdjustmentIndicator => T4, + ClaimControlNumber => F8"), Explicit("Issue #65")] + public void Test5() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*G1*AB333-Y5 +REF*9F*12345 +REF*T4*Y +REF*F8*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var secondaryIdentification = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerName) + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsFalse(secondaryIdentification.HasValue); + Assert.IsFalse(secondaryIdentification.IsPresent); + + var priorAuthorizationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerName) + .Select(x => x.PriorAuthorizationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(priorAuthorizationNumber != null); + Assert.IsTrue(priorAuthorizationNumber.HasValue); + Assert.IsTrue(priorAuthorizationNumber.IsPresent); + Assert.AreEqual("G1", priorAuthorizationNumber.ValueOrDefault()); + + var referralNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerName) + .Select(x => x.ReferralNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(referralNumber != null); + Assert.IsTrue(referralNumber.HasValue); + Assert.IsTrue(referralNumber.IsPresent); + Assert.AreEqual("9F", referralNumber.ValueOrDefault()); + + var claimAdjustmentIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerName) + .Select(x => x.ClaimAdjustmentIndicator) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(claimAdjustmentIndicator != null); + Assert.IsTrue(claimAdjustmentIndicator.HasValue); + Assert.IsTrue(claimAdjustmentIndicator.IsPresent); + Assert.AreEqual("T4", claimAdjustmentIndicator.ValueOrDefault()); + + var claimControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerName) + .Select(x => x.ClaimControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(claimControlNumber != null); + Assert.IsTrue(claimControlNumber.HasValue); + Assert.IsTrue(claimControlNumber.IsPresent); + Assert.AreEqual("F8", claimControlNumber.ValueOrDefault()); + } + + [Test(Description = @"Condition : SecondaryIdentification => missing, + PriorAuthorizationNumber => missing, + ReferralNumber => missing, + ClaimAdjustmentIndicator => missing, + ClaimControlNumber => missing"), Explicit("Issue #65")] + public void Test6() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +NM1*82*1*KILDARE*BEN****XX*6789012345 +PRV*PE*PXC*1223P0221X +LX*1 +SV3*AD:D3320*200****1 +TOO*JP*5 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var secondaryIdentification = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerName) + .Select(x => x.SecondaryIdentification)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(secondaryIdentification != null); + Assert.IsFalse(secondaryIdentification.HasValue); + Assert.IsFalse(secondaryIdentification.IsPresent); + + var priorAuthorizationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerName) + .Select(x => x.PriorAuthorizationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(priorAuthorizationNumber != null); + Assert.IsFalse(priorAuthorizationNumber.HasValue); + Assert.IsFalse(priorAuthorizationNumber.IsPresent); + + var referralNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerName) + .Select(x => x.ReferralNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(referralNumber != null); + Assert.IsFalse(referralNumber.HasValue); + Assert.IsFalse(referralNumber.IsPresent); + + var claimAdjustmentIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerName) + .Select(x => x.ClaimAdjustmentIndicator) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(claimAdjustmentIndicator != null); + Assert.IsFalse(claimAdjustmentIndicator.HasValue); + Assert.IsFalse(claimAdjustmentIndicator.IsPresent); + + var claimControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.OtherSubscriberInfo)[0] + .Select(x => x.OtherPayerName) + .Select(x => x.ClaimControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(claimControlNumber != null); + Assert.IsFalse(claimControlNumber.HasValue); + Assert.IsFalse(claimControlNumber.IsPresent); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2400P1ConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2400P1ConditionalTests.cs new file mode 100644 index 000000000..1be5ff823 --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2400P1ConditionalTests.cs @@ -0,0 +1,978 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing837ProfessionalL2400P1ConditionalTests : + X12MacheteTestHarness + { + [Test(Description = @"Condition : LineSupplementalInformation => AA, + DurableMedicalEquipmentCertificateOfMedicalNecessityIndicator => AB"), Explicit("Issue #65")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*77*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*DQ*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +LX*1 +SV1*HC:99211:25*12.25*UN*1*11**1:2:3**Y +PWK*OZ*AA***AC*DMN0012 +PWK*OZ*AB***AC*DMN0012 +DTP*472*RD8*20050314-20050325 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var lineSupplementalInformation = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.LineSupplementalInformation)[0] + .Select(x => x.ReportTransmissionCode); + + Assume.That(lineSupplementalInformation != null); + Assert.IsTrue(lineSupplementalInformation.HasValue); + Assert.AreEqual("AA", lineSupplementalInformation.ValueOrDefault()); + + var durableMedicalEquipmentCertificateOfMedicalNecessityIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.DurableMedicalEquipmentCertificateOfMedicalNecessityIndicator) + .Select(x => x.ReportTransmissionCode); + + Assume.That(durableMedicalEquipmentCertificateOfMedicalNecessityIndicator != null); + Assert.IsTrue(durableMedicalEquipmentCertificateOfMedicalNecessityIndicator.HasValue); + Assert.AreEqual("AB", durableMedicalEquipmentCertificateOfMedicalNecessityIndicator.ValueOrDefault()); + } + + [Test(Description = @"Condition : LineSupplementalInformation => BM, + DurableMedicalEquipmentCertificateOfMedicalNecessityIndicator => AB"), Explicit("Issue #65")] + public void Test2() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*77*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*DQ*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +LX*1 +SV1*HC:99211:25*12.25*UN*1*11**1:2:3**Y +PWK*OZ*BM***AC*DMN0012 +PWK*OZ*AB***AC*DMN0012 +DTP*472*RD8*20050314-20050325 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var lineSupplementalInformation = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.LineSupplementalInformation)[0] + .Select(x => x.ReportTransmissionCode); + + Assume.That(lineSupplementalInformation != null); + Assert.IsTrue(lineSupplementalInformation.HasValue); + Assert.AreEqual("BM", lineSupplementalInformation.ValueOrDefault()); + + var durableMedicalEquipmentCertificateOfMedicalNecessityIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.DurableMedicalEquipmentCertificateOfMedicalNecessityIndicator) + .Select(x => x.ReportTransmissionCode); + + Assume.That(durableMedicalEquipmentCertificateOfMedicalNecessityIndicator != null); + Assert.IsTrue(durableMedicalEquipmentCertificateOfMedicalNecessityIndicator.HasValue); + Assert.AreEqual("AB", durableMedicalEquipmentCertificateOfMedicalNecessityIndicator.ValueOrDefault()); + } + + [Test(Description = @"Condition : LineSupplementalInformation => EL, + DurableMedicalEquipmentCertificateOfMedicalNecessityIndicator => AB"), Explicit("Issue #65")] + public void Test3() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*77*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*DQ*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +LX*1 +SV1*HC:99211:25*12.25*UN*1*11**1:2:3**Y +PWK*OZ*EL***AC*DMN0012 +PWK*OZ*AB***AC*DMN0012 +DTP*472*RD8*20050314-20050325 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var lineSupplementalInformation = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.LineSupplementalInformation)[0] + .Select(x => x.ReportTransmissionCode); + + Assume.That(lineSupplementalInformation != null); + Assert.IsTrue(lineSupplementalInformation.HasValue); + Assert.AreEqual("EL", lineSupplementalInformation.ValueOrDefault()); + + var durableMedicalEquipmentCertificateOfMedicalNecessityIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.DurableMedicalEquipmentCertificateOfMedicalNecessityIndicator) + .Select(x => x.ReportTransmissionCode); + + Assume.That(durableMedicalEquipmentCertificateOfMedicalNecessityIndicator != null); + Assert.IsTrue(durableMedicalEquipmentCertificateOfMedicalNecessityIndicator.HasValue); + Assert.AreEqual("AB", durableMedicalEquipmentCertificateOfMedicalNecessityIndicator.ValueOrDefault()); + } + + [Test(Description = @"Condition : LineSupplementalInformation => EM, + DurableMedicalEquipmentCertificateOfMedicalNecessityIndicator => AB"), Explicit("Issue #65")] + public void Test4() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*77*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*DQ*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +LX*1 +SV1*HC:99211:25*12.25*UN*1*11**1:2:3**Y +PWK*OZ*EM***AC*DMN0012 +PWK*OZ*AB***AC*DMN0012 +DTP*472*RD8*20050314-20050325 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var lineSupplementalInformation = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.LineSupplementalInformation)[0] + .Select(x => x.ReportTransmissionCode); + + Assume.That(lineSupplementalInformation != null); + Assert.IsTrue(lineSupplementalInformation.HasValue); + Assert.AreEqual("EM", lineSupplementalInformation.ValueOrDefault()); + + var durableMedicalEquipmentCertificateOfMedicalNecessityIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.DurableMedicalEquipmentCertificateOfMedicalNecessityIndicator) + .Select(x => x.ReportTransmissionCode); + + Assume.That(durableMedicalEquipmentCertificateOfMedicalNecessityIndicator != null); + Assert.IsTrue(durableMedicalEquipmentCertificateOfMedicalNecessityIndicator.HasValue); + Assert.AreEqual("AB", durableMedicalEquipmentCertificateOfMedicalNecessityIndicator.ValueOrDefault()); + } + + [Test(Description = @"Condition : LineSupplementalInformation => FT, + DurableMedicalEquipmentCertificateOfMedicalNecessityIndicator => AB"), Explicit("Issue #65")] + public void Test5() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*77*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*DQ*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +LX*1 +SV1*HC:99211:25*12.25*UN*1*11**1:2:3**Y +PWK*OZ*FT***AC*DMN0012 +PWK*OZ*AB***AC*DMN0012 +DTP*472*RD8*20050314-20050325 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var lineSupplementalInformation = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.LineSupplementalInformation)[0] + .Select(x => x.ReportTransmissionCode); + + Assume.That(lineSupplementalInformation != null); + Assert.IsTrue(lineSupplementalInformation.HasValue); + Assert.AreEqual("FT", lineSupplementalInformation.ValueOrDefault()); + + var durableMedicalEquipmentCertificateOfMedicalNecessityIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.DurableMedicalEquipmentCertificateOfMedicalNecessityIndicator) + .Select(x => x.ReportTransmissionCode); + + Assume.That(durableMedicalEquipmentCertificateOfMedicalNecessityIndicator != null); + Assert.IsTrue(durableMedicalEquipmentCertificateOfMedicalNecessityIndicator.HasValue); + Assert.AreEqual("AB", durableMedicalEquipmentCertificateOfMedicalNecessityIndicator.ValueOrDefault()); + } + + [Test(Description = @"Condition : LineSupplementalInformation => FX, + DurableMedicalEquipmentCertificateOfMedicalNecessityIndicator => AB"), Explicit("Issue #65")] + public void Test6() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*77*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*DQ*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +LX*1 +SV1*HC:99211:25*12.25*UN*1*11**1:2:3**Y +PWK*OZ*FX***AC*DMN0012 +PWK*OZ*AB***AC*DMN0012 +DTP*472*RD8*20050314-20050325 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var lineSupplementalInformation = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.LineSupplementalInformation)[0] + .Select(x => x.ReportTransmissionCode); + + Assume.That(lineSupplementalInformation != null); + Assert.IsTrue(lineSupplementalInformation.HasValue); + Assert.AreEqual("FX", lineSupplementalInformation.ValueOrDefault()); + + var durableMedicalEquipmentCertificateOfMedicalNecessityIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.DurableMedicalEquipmentCertificateOfMedicalNecessityIndicator) + .Select(x => x.ReportTransmissionCode); + + Assume.That(durableMedicalEquipmentCertificateOfMedicalNecessityIndicator != null); + Assert.IsTrue(durableMedicalEquipmentCertificateOfMedicalNecessityIndicator.HasValue); + Assert.AreEqual("AB", durableMedicalEquipmentCertificateOfMedicalNecessityIndicator.ValueOrDefault()); + } + + [Test(Description = @"Condition : LineSupplementalInformation => [AA, BM, EL, EM, FT, FX], + DurableMedicalEquipmentCertificateOfMedicalNecessityIndicator => missing")] + public void Test7() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*77*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*DQ*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +LX*1 +SV1*HC:99211:25*12.25*UN*1*11**1:2:3**Y +PWK*OZ*AA***AC*DMN0012 +PWK*OZ*BM***AC*DMN0012 +PWK*OZ*EL***AC*DMN0012 +PWK*OZ*EM***AC*DMN0012 +PWK*OZ*FT***AC*DMN0012 +PWK*OZ*FX***AC*DMN0012 +DTP*472*RD8*20050314-20050325 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + for (int i = 0;; i++) + { + if (!transactions.Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.LineSupplementalInformation) + .TryGetValue(i, out Segment segment)) + break; + + var lineSupplementalInformation = segment.Select(x => x.ReportTransmissionCode); + + Assume.That(lineSupplementalInformation != null); + Assert.IsTrue(lineSupplementalInformation.HasValue); + Assert.That(lineSupplementalInformation.ValueOrDefault(), + Is.EqualTo("AA").Or.EqualTo("BM").Or.EqualTo("EL").Or.EqualTo("EM").Or.EqualTo("FT").Or.EqualTo("FX")); + } + + var durableMedicalEquipmentCertificateOfMedicalNecessityIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.DurableMedicalEquipmentCertificateOfMedicalNecessityIndicator) + .Select(x => x.ReportTransmissionCode); + + Assume.That(durableMedicalEquipmentCertificateOfMedicalNecessityIndicator != null); + Assert.IsFalse(durableMedicalEquipmentCertificateOfMedicalNecessityIndicator.HasValue); + } + + [Test(Description = @"Condition : LineSupplementalInformation => missing, + DurableMedicalEquipmentCertificateOfMedicalNecessityIndicator => AB"), Explicit("Issue #65")] + public void Test8() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*77*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*DQ*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +LX*1 +SV1*HC:99211:25*12.25*UN*1*11**1:2:3**Y +PWK*OZ*AB***AC*DMN0012 +DTP*472*RD8*20050314-20050325 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var lineSupplementalInformation = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.LineSupplementalInformation); + + Assume.That(lineSupplementalInformation != null); + Assert.IsFalse(lineSupplementalInformation.HasValue); + + var durableMedicalEquipmentCertificateOfMedicalNecessityIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.DurableMedicalEquipmentCertificateOfMedicalNecessityIndicator) + .Select(x => x.ReportTransmissionCode); + + Assume.That(durableMedicalEquipmentCertificateOfMedicalNecessityIndicator != null); + Assert.IsTrue(durableMedicalEquipmentCertificateOfMedicalNecessityIndicator.HasValue); + Assert.AreEqual("AB", durableMedicalEquipmentCertificateOfMedicalNecessityIndicator.ValueOrDefault()); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2400P2ConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2400P2ConditionalTests.cs new file mode 100644 index 000000000..9b25158d9 --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2400P2ConditionalTests.cs @@ -0,0 +1,695 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing837ProfessionalL2400P2ConditionalTests : + X12MacheteTestHarness + { + [Test(Description = @"Condition : AmbulanceCertification => 07, + HospiceEmployeeIndicator = 70, + ConditionIndicatorDurableMedicalEquipment => 09"), Explicit("Issue #65")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*77*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*DQ*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +LX*1 +SV1*HC:99211:25*12.25*UN*1*11**1:2:3**Y +PWK*OZ*FX***AC*DMN0012 +PWK*OZ*AB***AC*DMN0012 +CRC*07*Y*01 +CRC*70*Y*65 +CRC*09*N*ZV +DTP*472*RD8*20050314-20050325 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var ambulanceCertification = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.AmbulanceCertification)[0] + .Select(x => x.CodeCategory); + + Assume.That(ambulanceCertification != null); + Assert.IsTrue(ambulanceCertification.HasValue); + Assert.IsTrue(ambulanceCertification.IsPresent); + Assert.AreEqual("07", ambulanceCertification.ValueOrDefault()); + + var hospiceEmployeeIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.HospiceEmployeeIndicator) + .Select(x => x.CodeCategory); + + Assume.That(hospiceEmployeeIndicator != null); + Assert.IsTrue(hospiceEmployeeIndicator.HasValue); + Assert.IsTrue(hospiceEmployeeIndicator.IsPresent); + Assert.AreEqual("70", hospiceEmployeeIndicator.ValueOrDefault()); + + var conditionIndicatorDurableMedicalEquipment = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.ConditionIndicatorDurableMedicalEquipment) + .Select(x => x.CodeCategory); + + Assume.That(conditionIndicatorDurableMedicalEquipment != null); + Assert.IsTrue(conditionIndicatorDurableMedicalEquipment.HasValue); + Assert.IsTrue(conditionIndicatorDurableMedicalEquipment.IsPresent); + Assert.AreEqual("09", conditionIndicatorDurableMedicalEquipment.ValueOrDefault()); + } + + [Test(Description = @"Condition : AmbulanceCertification => missing, + HospiceEmployeeIndicator = missing, + ConditionIndicatorDurableMedicalEquipment => 09"), Explicit("Issue #65")] + public void Test2() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*77*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*DQ*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +LX*1 +SV1*HC:99211:25*12.25*UN*1*11**1:2:3**Y +PWK*OZ*FX***AC*DMN0012 +PWK*OZ*AB***AC*DMN0012 +CRC*07*Y*01 +CRC*70*Y*65 +CRC*09*N*ZV +DTP*472*RD8*20050314-20050325 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var ambulanceCertification = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.AmbulanceCertification)[0] + .Select(x => x.CodeCategory); + + Assume.That(ambulanceCertification != null); + Assert.IsFalse(ambulanceCertification.HasValue); + Assert.IsFalse(ambulanceCertification.IsPresent); + + var hospiceEmployeeIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.HospiceEmployeeIndicator) + .Select(x => x.CodeCategory); + + Assume.That(hospiceEmployeeIndicator != null); + Assert.IsFalse(hospiceEmployeeIndicator.HasValue); + Assert.IsFalse(hospiceEmployeeIndicator.IsPresent); + + var conditionIndicatorDurableMedicalEquipment = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.ConditionIndicatorDurableMedicalEquipment) + .Select(x => x.CodeCategory); + + Assume.That(conditionIndicatorDurableMedicalEquipment != null); + Assert.IsTrue(conditionIndicatorDurableMedicalEquipment.HasValue); + Assert.IsTrue(conditionIndicatorDurableMedicalEquipment.IsPresent); + Assert.AreEqual("09", conditionIndicatorDurableMedicalEquipment.ValueOrDefault()); + } + + [Test(Description = @"Condition : AmbulanceCertification => missing, + HospiceEmployeeIndicator = 70, + ConditionIndicatorDurableMedicalEquipment => missing"), Explicit("Issue #65")] + public void Test3() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*77*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*DQ*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +LX*1 +SV1*HC:99211:25*12.25*UN*1*11**1:2:3**Y +PWK*OZ*FX***AC*DMN0012 +PWK*OZ*AB***AC*DMN0012 +CRC*70*Y*65 +DTP*472*RD8*20050314-20050325 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var ambulanceCertification = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.AmbulanceCertification)[0] + .Select(x => x.CodeCategory); + + Assume.That(ambulanceCertification != null); + Assert.IsFalse(ambulanceCertification.HasValue); + Assert.IsFalse(ambulanceCertification.IsPresent); + + var hospiceEmployeeIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.HospiceEmployeeIndicator) + .Select(x => x.CodeCategory); + + Assume.That(hospiceEmployeeIndicator != null); + Assert.IsTrue(hospiceEmployeeIndicator.HasValue); + Assert.IsTrue(hospiceEmployeeIndicator.IsPresent); + Assert.AreEqual("70", hospiceEmployeeIndicator.ValueOrDefault()); + + var conditionIndicatorDurableMedicalEquipment = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.ConditionIndicatorDurableMedicalEquipment) + .Select(x => x.CodeCategory); + + Assume.That(conditionIndicatorDurableMedicalEquipment != null); + Assert.IsFalse(conditionIndicatorDurableMedicalEquipment.HasValue); + Assert.IsFalse(conditionIndicatorDurableMedicalEquipment.IsPresent); + } + + [Test(Description = @"Condition : AmbulanceCertification => [07], + HospiceEmployeeIndicator = missing, + ConditionIndicatorDurableMedicalEquipment => missing")] + public void Test4() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*77*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*DQ*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +LX*1 +SV1*HC:99211:25*12.25*UN*1*11**1:2:3**Y +PWK*OZ*FX***AC*DMN0012 +PWK*OZ*AB***AC*DMN0012 +CRC*07*Y*01 +CRC*07*Y*01 +CRC*07*Y*01 +CRC*07*Y*01 +CRC*07*Y*01 +DTP*472*RD8*20050314-20050325 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + for (int i = 0;; i++) + { + if (!transactions.Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.AmbulanceCertification) + .TryGetValue(i, out Segment segment)) + break; + + var ambulanceCertification = segment.Select(x => x.CodeCategory); + + Assume.That(ambulanceCertification != null); + Assert.IsTrue(ambulanceCertification.HasValue); + Assert.IsTrue(ambulanceCertification.IsPresent); + Assert.AreEqual("07", ambulanceCertification.ValueOrDefault()); + } + + var hospiceEmployeeIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.HospiceEmployeeIndicator) + .Select(x => x.CodeCategory); + + Assume.That(hospiceEmployeeIndicator != null); + Assert.IsFalse(hospiceEmployeeIndicator.HasValue); + Assert.IsFalse(hospiceEmployeeIndicator.IsPresent); + + var conditionIndicatorDurableMedicalEquipment = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.ConditionIndicatorDurableMedicalEquipment) + .Select(x => x.CodeCategory); + + Assume.That(conditionIndicatorDurableMedicalEquipment != null); + Assert.IsFalse(conditionIndicatorDurableMedicalEquipment.HasValue); + Assert.IsFalse(conditionIndicatorDurableMedicalEquipment.IsPresent); + } + + [Test(Description = @"Condition : AmbulanceCertification => missing, + HospiceEmployeeIndicator = missing, + ConditionIndicatorDurableMedicalEquipment => missing")] + public void Test5() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*77*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*DQ*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +LX*1 +SV1*HC:99211:25*12.25*UN*1*11**1:2:3**Y +PWK*OZ*FX***AC*DMN0012 +PWK*OZ*AB***AC*DMN0012 +DTP*472*RD8*20050314-20050325 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var ambulanceCertification = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.AmbulanceCertification)[0] + .Select(x => x.CodeCategory); + + Assume.That(ambulanceCertification != null); + Assert.IsFalse(ambulanceCertification.HasValue); + Assert.IsFalse(ambulanceCertification.IsPresent); + + var hospiceEmployeeIndicator = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.HospiceEmployeeIndicator) + .Select(x => x.CodeCategory); + + Assume.That(hospiceEmployeeIndicator != null); + Assert.IsFalse(hospiceEmployeeIndicator.HasValue); + Assert.IsFalse(hospiceEmployeeIndicator.IsPresent); + + var conditionIndicatorDurableMedicalEquipment = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.ConditionIndicatorDurableMedicalEquipment) + .Select(x => x.CodeCategory); + + Assume.That(conditionIndicatorDurableMedicalEquipment != null); + Assert.IsFalse(conditionIndicatorDurableMedicalEquipment.HasValue); + Assert.IsFalse(conditionIndicatorDurableMedicalEquipment.IsPresent); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2400P3ConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2400P3ConditionalTests.cs new file mode 100644 index 000000000..b62b0ee55 --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2400P3ConditionalTests.cs @@ -0,0 +1,916 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing837ProfessionalL2400P3ConditionalTests : + X12MacheteTestHarness + { + [Test(Description = @"Condition : ServiceDate => 472, + PrescriptionDate = 471, + CertificationRevisionDate = 607, + BeginTherapyDate = 463, + LastCertificationDate = 461, + LastSeenDate = 304, + TestDate = 738, + ShippedDate = 011, + LastXRayDate = 455, + InitialTreatmentDate => 454")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*77*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*DQ*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +LX*1 +SV1*HC:99211:25*12.25*UN*1*11**1:2:3**Y +PWK*OZ*FX***AC*DMN0012 +PWK*OZ*AB***AC*DMN0012 +CRC*07*Y*01 +CRC*70*Y*65 +CRC*09*N*ZV +DTP*472*RD8*20050314-20050325 +DTP*471*RD8*20050314-20050325 +DTP*607*RD8*20050314-20050325 +DTP*463*RD8*20050314-20050325 +DTP*461*RD8*20050314-20050325 +DTP*304*RD8*20050314-20050325 +DTP*738*RD8*20050314-20050325 +DTP*011*RD8*20050314-20050325 +DTP*455*RD8*20050314-20050325 +DTP*454*RD8*20050314-20050325 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var serviceDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.ServiceDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(serviceDate != null); + Assert.IsTrue(serviceDate.HasValue); + Assert.IsTrue(serviceDate.IsPresent); + Assert.AreEqual("472", serviceDate.ValueOrDefault()); + + var prescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.PrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(prescriptionDate != null); + Assert.IsTrue(prescriptionDate.HasValue); + Assert.IsTrue(prescriptionDate.IsPresent); + Assert.AreEqual("471", prescriptionDate.ValueOrDefault()); + + var certificationRevisionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.CertificationRevisionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(certificationRevisionDate != null); + Assert.IsTrue(certificationRevisionDate.HasValue); + Assert.IsTrue(certificationRevisionDate.IsPresent); + Assert.AreEqual("607", certificationRevisionDate.ValueOrDefault()); + + var beginTherapyDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.BeginTherapyDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(beginTherapyDate != null); + Assert.IsTrue(beginTherapyDate.HasValue); + Assert.IsTrue(beginTherapyDate.IsPresent); + Assert.AreEqual("463", beginTherapyDate.ValueOrDefault()); + + var lastCertificationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.LastCertificationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastCertificationDate != null); + Assert.IsTrue(lastCertificationDate.HasValue); + Assert.IsTrue(lastCertificationDate.IsPresent); + Assert.AreEqual("461", lastCertificationDate.ValueOrDefault()); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsTrue(lastSeenDate.HasValue); + Assert.IsTrue(lastSeenDate.IsPresent); + Assert.AreEqual("304", lastSeenDate.ValueOrDefault()); + + var testDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.TestDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(testDate != null); + Assert.IsTrue(testDate.HasValue); + Assert.IsTrue(testDate.IsPresent); + Assert.AreEqual("738", testDate.ValueOrDefault()); + + var shippedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.ShippedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(shippedDate != null); + Assert.IsTrue(shippedDate.HasValue); + Assert.IsTrue(shippedDate.IsPresent); + Assert.AreEqual("011", shippedDate.ValueOrDefault()); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsTrue(lastXRayDate.HasValue); + Assert.IsTrue(lastXRayDate.IsPresent); + Assert.AreEqual("455", lastXRayDate.ValueOrDefault()); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsTrue(initialTreatmentDate.HasValue); + Assert.IsTrue(initialTreatmentDate.IsPresent); + Assert.AreEqual("454", initialTreatmentDate.ValueOrDefault()); + } + + [Test(Description = @"Condition : ServiceDate => 472, + PrescriptionDate = missing, + CertificationRevisionDate = missing, + BeginTherapyDate = missing, + LastCertificationDate = missing, + LastSeenDate = missing, + TestDate = missing, + ShippedDate = missing, + LastXRayDate = missing, + InitialTreatmentDate => 454")] + public void Test2() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*77*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*DQ*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +LX*1 +SV1*HC:99211:25*12.25*UN*1*11**1:2:3**Y +PWK*OZ*FX***AC*DMN0012 +PWK*OZ*AB***AC*DMN0012 +CRC*07*Y*01 +CRC*70*Y*65 +CRC*09*N*ZV +DTP*472*RD8*20050314-20050325 +DTP*454*RD8*20050314-20050325 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var serviceDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.ServiceDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(serviceDate != null); + Assert.IsTrue(serviceDate.HasValue); + Assert.IsTrue(serviceDate.IsPresent); + Assert.AreEqual("472", serviceDate.ValueOrDefault()); + + var prescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.PrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(prescriptionDate != null); + Assert.IsFalse(prescriptionDate.HasValue); + Assert.IsFalse(prescriptionDate.IsPresent); + + var certificationRevisionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.CertificationRevisionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(certificationRevisionDate != null); + Assert.IsFalse(certificationRevisionDate.HasValue); + Assert.IsFalse(certificationRevisionDate.IsPresent); + + var beginTherapyDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.BeginTherapyDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(beginTherapyDate != null); + Assert.IsFalse(beginTherapyDate.HasValue); + Assert.IsFalse(beginTherapyDate.IsPresent); + + var lastCertificationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.LastCertificationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastCertificationDate != null); + Assert.IsFalse(lastCertificationDate.HasValue); + Assert.IsFalse(lastCertificationDate.IsPresent); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsFalse(lastSeenDate.HasValue); + Assert.IsFalse(lastSeenDate.IsPresent); + + var testDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.TestDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(testDate != null); + Assert.IsFalse(testDate.HasValue); + Assert.IsFalse(testDate.IsPresent); + + var shippedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.ShippedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(shippedDate != null); + Assert.IsFalse(shippedDate.HasValue); + Assert.IsFalse(shippedDate.IsPresent); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsFalse(lastXRayDate.HasValue); + Assert.IsFalse(lastXRayDate.IsPresent); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsTrue(initialTreatmentDate.HasValue); + Assert.IsTrue(initialTreatmentDate.IsPresent); + Assert.AreEqual("454", initialTreatmentDate.ValueOrDefault()); + } + + [Test(Description = @"Condition : ServiceDate => 472, + PrescriptionDate = missing, + CertificationRevisionDate = missing, + BeginTherapyDate = missing, + LastCertificationDate = missing, + LastSeenDate = missing, + TestDate = missing, + ShippedDate = 011, + LastXRayDate = missing, + InitialTreatmentDate => 454")] + public void Test3() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*77*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*DQ*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +LX*1 +SV1*HC:99211:25*12.25*UN*1*11**1:2:3**Y +PWK*OZ*FX***AC*DMN0012 +PWK*OZ*AB***AC*DMN0012 +CRC*07*Y*01 +CRC*70*Y*65 +CRC*09*N*ZV +DTP*472*RD8*20050314-20050325 +DTP*011*RD8*20050314-20050325 +DTP*454*RD8*20050314-20050325 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var serviceDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.ServiceDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(serviceDate != null); + Assert.IsTrue(serviceDate.HasValue); + Assert.IsTrue(serviceDate.IsPresent); + Assert.AreEqual("472", serviceDate.ValueOrDefault()); + + var prescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.PrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(prescriptionDate != null); + Assert.IsFalse(prescriptionDate.HasValue); + Assert.IsFalse(prescriptionDate.IsPresent); + + var certificationRevisionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.CertificationRevisionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(certificationRevisionDate != null); + Assert.IsFalse(certificationRevisionDate.HasValue); + Assert.IsFalse(certificationRevisionDate.IsPresent); + + var beginTherapyDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.BeginTherapyDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(beginTherapyDate != null); + Assert.IsFalse(beginTherapyDate.HasValue); + Assert.IsFalse(beginTherapyDate.IsPresent); + + var lastCertificationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.LastCertificationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastCertificationDate != null); + Assert.IsFalse(lastCertificationDate.HasValue); + Assert.IsFalse(lastCertificationDate.IsPresent); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsFalse(lastSeenDate.HasValue); + Assert.IsFalse(lastSeenDate.IsPresent); + + var testDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.TestDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(testDate != null); + Assert.IsFalse(testDate.HasValue); + Assert.IsFalse(testDate.IsPresent); + + var shippedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.ShippedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(shippedDate != null); + Assert.IsTrue(shippedDate.HasValue); + Assert.IsTrue(shippedDate.IsPresent); + Assert.AreEqual("011", shippedDate.ValueOrDefault()); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsFalse(lastXRayDate.HasValue); + Assert.IsFalse(lastXRayDate.IsPresent); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsTrue(initialTreatmentDate.HasValue); + Assert.IsTrue(initialTreatmentDate.IsPresent); + Assert.AreEqual("454", initialTreatmentDate.ValueOrDefault()); + } + + [Test(Description = @"Condition : ServiceDate => 472, + PrescriptionDate = missing, + CertificationRevisionDate = missing, + BeginTherapyDate = missing, + LastCertificationDate = missing, + LastSeenDate = missing, + TestDate = missing, + ShippedDate = missing, + LastXRayDate = missing, + InitialTreatmentDate => missing")] + public void Test4() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*77*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*DQ*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +LX*1 +SV1*HC:99211:25*12.25*UN*1*11**1:2:3**Y +PWK*OZ*FX***AC*DMN0012 +PWK*OZ*AB***AC*DMN0012 +CRC*07*Y*01 +CRC*70*Y*65 +CRC*09*N*ZV +DTP*472*RD8*20050314-20050325 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var serviceDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.ServiceDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(serviceDate != null); + Assert.IsTrue(serviceDate.HasValue); + Assert.IsTrue(serviceDate.IsPresent); + Assert.AreEqual("472", serviceDate.ValueOrDefault()); + + var prescriptionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.PrescriptionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(prescriptionDate != null); + Assert.IsFalse(prescriptionDate.HasValue); + Assert.IsFalse(prescriptionDate.IsPresent); + + var certificationRevisionDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.CertificationRevisionDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(certificationRevisionDate != null); + Assert.IsFalse(certificationRevisionDate.HasValue); + Assert.IsFalse(certificationRevisionDate.IsPresent); + + var beginTherapyDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.BeginTherapyDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(beginTherapyDate != null); + Assert.IsFalse(beginTherapyDate.HasValue); + Assert.IsFalse(beginTherapyDate.IsPresent); + + var lastCertificationDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.LastCertificationDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastCertificationDate != null); + Assert.IsFalse(lastCertificationDate.HasValue); + Assert.IsFalse(lastCertificationDate.IsPresent); + + var lastSeenDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.LastSeenDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastSeenDate != null); + Assert.IsFalse(lastSeenDate.HasValue); + Assert.IsFalse(lastSeenDate.IsPresent); + + var testDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.TestDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(testDate != null); + Assert.IsFalse(testDate.HasValue); + Assert.IsFalse(testDate.IsPresent); + + var shippedDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.ShippedDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(shippedDate != null); + Assert.IsFalse(shippedDate.HasValue); + Assert.IsFalse(shippedDate.IsPresent); + + var lastXRayDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.LastXRayDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(lastXRayDate != null); + Assert.IsFalse(lastXRayDate.HasValue); + Assert.IsFalse(lastXRayDate.IsPresent); + + var initialTreatmentDate = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.InitialTreatmentDate) + .Select(x => x.DateTimeQualifier); + + Assume.That(initialTreatmentDate != null); + Assert.IsFalse(initialTreatmentDate.HasValue); + Assert.IsFalse(initialTreatmentDate.IsPresent); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2400P4ConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2400P4ConditionalTests.cs new file mode 100644 index 000000000..9ce643495 --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2400P4ConditionalTests.cs @@ -0,0 +1,465 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing837ProfessionalL2400P4ConditionalTests : + X12MacheteTestHarness + { + [Test(Description = @"Condition : RepricedLineItemReferenceNumber => 9B, + AdjustedRepricedLineItemReferenceNumber = 9D, + PriorAuthorization = G1, + LineItemControlNumber = 6R, + MammographyCertificationNumber = EW, + CLIANumber = X4, + ReferringCLIAFacilityIdentification = F4, + ImmunizationBatchNumber = BT, + ReferralNumber => 9F"), Explicit("Issue #65")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*77*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*DQ*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +LX*1 +SV1*HC:99211:25*12.25*UN*1*11**1:2:3**Y +PWK*OZ*FX***AC*DMN0012 +PWK*OZ*AB***AC*DMN0012 +CRC*07*Y*01 +CRC*70*Y*65 +CRC*09*N*ZV +DTP*472*RD8*20050314-20050325 +REF*9B*444444 +REF*9D*444444 +REF*G1*444444 +REF*6R*444444 +REF*EW*444444 +REF*X4*444444 +REF*F4*444444 +REF*BT*444444 +REF*9F*444444 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var repricedLineItemReferenceNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.RepricedLineItemReferenceNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(repricedLineItemReferenceNumber != null); + Assert.IsTrue(repricedLineItemReferenceNumber.HasValue); + Assert.IsTrue(repricedLineItemReferenceNumber.IsPresent); + Assert.AreEqual("9B", repricedLineItemReferenceNumber.ValueOrDefault()); + + var adjustedRepricedLineItemReferenceNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.AdjustedRepricedLineItemReferenceNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(adjustedRepricedLineItemReferenceNumber != null); + Assert.IsTrue(adjustedRepricedLineItemReferenceNumber.HasValue); + Assert.IsTrue(adjustedRepricedLineItemReferenceNumber.IsPresent); + Assert.AreEqual("9D", adjustedRepricedLineItemReferenceNumber.ValueOrDefault()); + + var priorAuthorization = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.PriorAuthorization)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(priorAuthorization != null); + Assert.IsTrue(priorAuthorization.HasValue); + Assert.IsTrue(priorAuthorization.IsPresent); + Assert.AreEqual("G1", priorAuthorization.ValueOrDefault()); + + var lineItemControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.LineItemControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(lineItemControlNumber != null); + Assert.IsTrue(lineItemControlNumber.HasValue); + Assert.IsTrue(lineItemControlNumber.IsPresent); + Assert.AreEqual("6R", lineItemControlNumber.ValueOrDefault()); + + var mammographyCertificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.MammographyCertificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(mammographyCertificationNumber != null); + Assert.IsTrue(mammographyCertificationNumber.HasValue); + Assert.IsTrue(mammographyCertificationNumber.IsPresent); + Assert.AreEqual("EW", mammographyCertificationNumber.ValueOrDefault()); + + var cliaNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.CLIANumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(cliaNumber != null); + Assert.IsTrue(cliaNumber.HasValue); + Assert.IsTrue(cliaNumber.IsPresent); + Assert.AreEqual("X4", cliaNumber.ValueOrDefault()); + + var referringCLIAFacilityIdentification = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.ReferringCLIAFacilityIdentification) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(referringCLIAFacilityIdentification != null); + Assert.IsTrue(referringCLIAFacilityIdentification.HasValue); + Assert.IsTrue(referringCLIAFacilityIdentification.IsPresent); + Assert.AreEqual("F4", referringCLIAFacilityIdentification.ValueOrDefault()); + + var immunizationBatchNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.ImmunizationBatchNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(immunizationBatchNumber != null); + Assert.IsTrue(immunizationBatchNumber.HasValue); + Assert.IsTrue(immunizationBatchNumber.IsPresent); + Assert.AreEqual("BT", immunizationBatchNumber.ValueOrDefault()); + + var referralNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.ReferralNumber)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(referralNumber != null); + Assert.IsTrue(referralNumber.HasValue); + Assert.IsTrue(referralNumber.IsPresent); + Assert.AreEqual("9F", referralNumber.ValueOrDefault()); + } + + [Test(Description = @"Condition : RepricedLineItemReferenceNumber => 9B, + AdjustedRepricedLineItemReferenceNumber = 9D, + PriorAuthorization = [G1], + LineItemControlNumber = 6R, + MammographyCertificationNumber = EW, + CLIANumber = X4, + ReferringCLIAFacilityIdentification = F4, + ImmunizationBatchNumber = BT, + ReferralNumber => 9F"), Explicit("Issue #65")] + public void Test() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*77*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*DQ*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +LX*1 +SV1*HC:99211:25*12.25*UN*1*11**1:2:3**Y +PWK*OZ*FX***AC*DMN0012 +PWK*OZ*AB***AC*DMN0012 +CRC*07*Y*01 +CRC*70*Y*65 +CRC*09*N*ZV +DTP*472*RD8*20050314-20050325 +REF*9B*444444 +REF*9D*444444 +REF*G1*444444 +REF*G1*444444 +REF*G1*444444 +REF*G1*444444 +REF*6R*444444 +REF*EW*444444 +REF*X4*444444 +REF*F4*444444 +REF*BT*444444 +REF*9F*444444 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var repricedLineItemReferenceNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.RepricedLineItemReferenceNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(repricedLineItemReferenceNumber != null); + Assert.IsTrue(repricedLineItemReferenceNumber.HasValue); + Assert.IsTrue(repricedLineItemReferenceNumber.IsPresent); + Assert.AreEqual("9B", repricedLineItemReferenceNumber.ValueOrDefault()); + + var adjustedRepricedLineItemReferenceNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.AdjustedRepricedLineItemReferenceNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(adjustedRepricedLineItemReferenceNumber != null); + Assert.IsTrue(adjustedRepricedLineItemReferenceNumber.HasValue); + Assert.IsTrue(adjustedRepricedLineItemReferenceNumber.IsPresent); + Assert.AreEqual("9D", adjustedRepricedLineItemReferenceNumber.ValueOrDefault()); + + var priorAuthorization = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.PriorAuthorization)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(priorAuthorization != null); + Assert.IsTrue(priorAuthorization.HasValue); + Assert.IsTrue(priorAuthorization.IsPresent); + Assert.AreEqual("G1", priorAuthorization.ValueOrDefault()); + + var lineItemControlNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.LineItemControlNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(lineItemControlNumber != null); + Assert.IsTrue(lineItemControlNumber.HasValue); + Assert.IsTrue(lineItemControlNumber.IsPresent); + Assert.AreEqual("6R", lineItemControlNumber.ValueOrDefault()); + + var mammographyCertificationNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.MammographyCertificationNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(mammographyCertificationNumber != null); + Assert.IsTrue(mammographyCertificationNumber.HasValue); + Assert.IsTrue(mammographyCertificationNumber.IsPresent); + Assert.AreEqual("EW", mammographyCertificationNumber.ValueOrDefault()); + + var cliaNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.CLIANumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(cliaNumber != null); + Assert.IsTrue(cliaNumber.HasValue); + Assert.IsTrue(cliaNumber.IsPresent); + Assert.AreEqual("X4", cliaNumber.ValueOrDefault()); + + var referringCLIAFacilityIdentification = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.ReferringCLIAFacilityIdentification) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(referringCLIAFacilityIdentification != null); + Assert.IsTrue(referringCLIAFacilityIdentification.HasValue); + Assert.IsTrue(referringCLIAFacilityIdentification.IsPresent); + Assert.AreEqual("F4", referringCLIAFacilityIdentification.ValueOrDefault()); + + var immunizationBatchNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.ImmunizationBatchNumber) + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(immunizationBatchNumber != null); + Assert.IsTrue(immunizationBatchNumber.HasValue); + Assert.IsTrue(immunizationBatchNumber.IsPresent); + Assert.AreEqual("BT", immunizationBatchNumber.ValueOrDefault()); + + var referralNumber = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.ReferralNumber)[0] + .Select(x => x.ReferenceIdentificationQualifier); + + Assume.That(referralNumber != null); + Assert.IsTrue(referralNumber.HasValue); + Assert.IsTrue(referralNumber.IsPresent); + Assert.AreEqual("9F", referralNumber.ValueOrDefault()); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2400P5ConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2400P5ConditionalTests.cs new file mode 100644 index 000000000..25ca322f4 --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2400P5ConditionalTests.cs @@ -0,0 +1,508 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing837ProfessionalL2400P5ConditionalTests : + X12MacheteTestHarness + { + [Test(Description = @"Condition : AmbulancePatientCount => PT, ObstetricAnesthesiaAdditionalUnits => FL")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*77*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*DQ*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +LX*1 +SV1*HC:99211:25*12.25*UN*1*11**1:2:3**Y +PWK*OZ*FX***AC*DMN0012 +PWK*OZ*AB***AC*DMN0012 +CRC*07*Y*01 +CRC*70*Y*65 +CRC*09*N*ZV +DTP*472*RD8*20050314-20050325 +QTY*PT*2 +QTY*FL*3 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var ambulancePatientCount = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.AmbulancePatientCount) + .Select(x => x.QuantityQualifier); + + Assume.That(ambulancePatientCount != null); + Assert.IsTrue(ambulancePatientCount.HasValue); + Assert.IsTrue(ambulancePatientCount.IsPresent); + Assert.AreEqual("PT", ambulancePatientCount.ValueOrDefault()); + + var obstetricAnesthesiaAdditionalUnits = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.ObstetricAnesthesiaAdditionalUnits) + .Select(x => x.QuantityQualifier); + + Assume.That(obstetricAnesthesiaAdditionalUnits != null); + Assert.IsTrue(obstetricAnesthesiaAdditionalUnits.HasValue); + Assert.IsTrue(obstetricAnesthesiaAdditionalUnits.IsPresent); + Assert.AreEqual("FL", obstetricAnesthesiaAdditionalUnits.ValueOrDefault()); + } + + [Test(Description = @"Condition : AmbulancePatientCount => PT, ObstetricAnesthesiaAdditionalUnits => missing")] + public void Test2() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*77*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*DQ*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +LX*1 +SV1*HC:99211:25*12.25*UN*1*11**1:2:3**Y +PWK*OZ*FX***AC*DMN0012 +PWK*OZ*AB***AC*DMN0012 +CRC*07*Y*01 +CRC*70*Y*65 +CRC*09*N*ZV +DTP*472*RD8*20050314-20050325 +QTY*PT*2 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var ambulancePatientCount = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.AmbulancePatientCount) + .Select(x => x.QuantityQualifier); + + Assume.That(ambulancePatientCount != null); + Assert.IsTrue(ambulancePatientCount.HasValue); + Assert.IsTrue(ambulancePatientCount.IsPresent); + Assert.AreEqual("PT", ambulancePatientCount.ValueOrDefault()); + + var obstetricAnesthesiaAdditionalUnits = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.ObstetricAnesthesiaAdditionalUnits) + .Select(x => x.QuantityQualifier); + + Assume.That(obstetricAnesthesiaAdditionalUnits != null); + Assert.IsFalse(obstetricAnesthesiaAdditionalUnits.HasValue); + Assert.IsFalse(obstetricAnesthesiaAdditionalUnits.IsPresent); + } + + [Test(Description = @"Condition : AmbulancePatientCount => missing, ObstetricAnesthesiaAdditionalUnits => FL")] + public void Test3() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*77*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*DQ*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +LX*1 +SV1*HC:99211:25*12.25*UN*1*11**1:2:3**Y +PWK*OZ*FX***AC*DMN0012 +PWK*OZ*AB***AC*DMN0012 +CRC*07*Y*01 +CRC*70*Y*65 +CRC*09*N*ZV +DTP*472*RD8*20050314-20050325 +QTY*FL*3 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var ambulancePatientCount = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.AmbulancePatientCount) + .Select(x => x.QuantityQualifier); + + Assume.That(ambulancePatientCount != null); + Assert.IsFalse(ambulancePatientCount.HasValue); + Assert.IsFalse(ambulancePatientCount.IsPresent); + + var obstetricAnesthesiaAdditionalUnits = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.ObstetricAnesthesiaAdditionalUnits) + .Select(x => x.QuantityQualifier); + + Assume.That(obstetricAnesthesiaAdditionalUnits != null); + Assert.IsTrue(obstetricAnesthesiaAdditionalUnits.HasValue); + Assert.IsTrue(obstetricAnesthesiaAdditionalUnits.IsPresent); + Assert.AreEqual("FL", obstetricAnesthesiaAdditionalUnits.ValueOrDefault()); + } + + [Test(Description = @"Condition : AmbulancePatientCount => missing, ObstetricAnesthesiaAdditionalUnits => missing")] + public void Test4() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*77*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*DQ*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +LX*1 +SV1*HC:99211:25*12.25*UN*1*11**1:2:3**Y +PWK*OZ*FX***AC*DMN0012 +PWK*OZ*AB***AC*DMN0012 +CRC*07*Y*01 +CRC*70*Y*65 +CRC*09*N*ZV +DTP*472*RD8*20050314-20050325 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var ambulancePatientCount = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.AmbulancePatientCount) + .Select(x => x.QuantityQualifier); + + Assume.That(ambulancePatientCount != null); + Assert.IsFalse(ambulancePatientCount.HasValue); + Assert.IsFalse(ambulancePatientCount.IsPresent); + + var obstetricAnesthesiaAdditionalUnits = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.ObstetricAnesthesiaAdditionalUnits) + .Select(x => x.QuantityQualifier); + + Assume.That(obstetricAnesthesiaAdditionalUnits != null); + Assert.IsFalse(obstetricAnesthesiaAdditionalUnits.HasValue); + Assert.IsFalse(obstetricAnesthesiaAdditionalUnits.IsPresent); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2400P6ConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2400P6ConditionalTests.cs new file mode 100644 index 000000000..d91050337 --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2400P6ConditionalTests.cs @@ -0,0 +1,514 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing837ProfessionalL2400P6ConditionalTests : + X12MacheteTestHarness + { + [Test(Description = @"Condition : SalesTaxAmount => T, PostageClaimedAmount => F4")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*77*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*DQ*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +LX*1 +SV1*HC:99211:25*12.25*UN*1*11**1:2:3**Y +PWK*OZ*FX***AC*DMN0012 +PWK*OZ*AB***AC*DMN0012 +CRC*07*Y*01 +CRC*70*Y*65 +CRC*09*N*ZV +DTP*472*RD8*20050314-20050325 +QTY*PT*2 +QTY*FL*3 +AMT*T*45 +AMT*F4*56.78 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var salesTaxAmount = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.SalesTaxAmount) + .Select(x => x.AmountQualifierCode); + + Assume.That(salesTaxAmount != null); + Assert.IsTrue(salesTaxAmount.HasValue); + Assert.IsTrue(salesTaxAmount.IsPresent); + Assert.AreEqual("T", salesTaxAmount.ValueOrDefault()); + + var postageClaimedAmount = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.PostageClaimedAmount) + .Select(x => x.AmountQualifierCode); + + Assume.That(postageClaimedAmount != null); + Assert.IsTrue(postageClaimedAmount.HasValue); + Assert.IsTrue(postageClaimedAmount.IsPresent); + Assert.AreEqual("F4", postageClaimedAmount.ValueOrDefault()); + } + + [Test(Description = @"Condition : SalesTaxAmount => missing, PostageClaimedAmount => F4")] + public void Test2() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*77*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*DQ*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +LX*1 +SV1*HC:99211:25*12.25*UN*1*11**1:2:3**Y +PWK*OZ*FX***AC*DMN0012 +PWK*OZ*AB***AC*DMN0012 +CRC*07*Y*01 +CRC*70*Y*65 +CRC*09*N*ZV +DTP*472*RD8*20050314-20050325 +QTY*PT*2 +QTY*FL*3 +AMT*F4*56.78 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var salesTaxAmount = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.SalesTaxAmount) + .Select(x => x.AmountQualifierCode); + + Assume.That(salesTaxAmount != null); + Assert.IsFalse(salesTaxAmount.HasValue); + Assert.IsFalse(salesTaxAmount.IsPresent); + + var postageClaimedAmount = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.PostageClaimedAmount) + .Select(x => x.AmountQualifierCode); + + Assume.That(postageClaimedAmount != null); + Assert.IsTrue(postageClaimedAmount.HasValue); + Assert.IsTrue(postageClaimedAmount.IsPresent); + Assert.AreEqual("F4", postageClaimedAmount.ValueOrDefault()); + } + + [Test(Description = @"Condition : SalesTaxAmount => T, PostageClaimedAmount => missing")] + public void Test3() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*77*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*DQ*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +LX*1 +SV1*HC:99211:25*12.25*UN*1*11**1:2:3**Y +PWK*OZ*FX***AC*DMN0012 +PWK*OZ*AB***AC*DMN0012 +CRC*07*Y*01 +CRC*70*Y*65 +CRC*09*N*ZV +DTP*472*RD8*20050314-20050325 +QTY*PT*2 +AMT*T*45 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var salesTaxAmount = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.SalesTaxAmount) + .Select(x => x.AmountQualifierCode); + + Assume.That(salesTaxAmount != null); + Assert.IsTrue(salesTaxAmount.HasValue); + Assert.IsTrue(salesTaxAmount.IsPresent); + Assert.AreEqual("T", salesTaxAmount.ValueOrDefault()); + + var postageClaimedAmount = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.PostageClaimedAmount) + .Select(x => x.AmountQualifierCode); + + Assume.That(postageClaimedAmount != null); + Assert.IsFalse(postageClaimedAmount.HasValue); + Assert.IsFalse(postageClaimedAmount.IsPresent); + } + + [Test(Description = @"Condition : SalesTaxAmount => missing, PostageClaimedAmount => missing")] + public void Test4() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*77*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*DQ*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +LX*1 +SV1*HC:99211:25*12.25*UN*1*11**1:2:3**Y +PWK*OZ*FX***AC*DMN0012 +PWK*OZ*AB***AC*DMN0012 +CRC*07*Y*01 +CRC*70*Y*65 +CRC*09*N*ZV +DTP*472*RD8*20050314-20050325 +QTY*PT*2 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var salesTaxAmount = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.SalesTaxAmount) + .Select(x => x.AmountQualifierCode); + + Assume.That(salesTaxAmount != null); + Assert.IsFalse(salesTaxAmount.HasValue); + Assert.IsFalse(salesTaxAmount.IsPresent); + + var postageClaimedAmount = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.PostageClaimedAmount) + .Select(x => x.AmountQualifierCode); + + Assume.That(postageClaimedAmount != null); + Assert.IsFalse(postageClaimedAmount.HasValue); + Assert.IsFalse(postageClaimedAmount.IsPresent); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2400P7ConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2400P7ConditionalTests.cs new file mode 100644 index 000000000..c0548834b --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2400P7ConditionalTests.cs @@ -0,0 +1,782 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing837ProfessionalL2400P7ConditionalTests : + X12MacheteTestHarness + { + [Test(Description = @"Condition : LineNote => ADD, ThirdPartyOrganizationNotes => TPO")] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*77*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*DQ*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +LX*1 +SV1*HC:99211:25*12.25*UN*1*11**1:2:3**Y +PWK*OZ*FX***AC*DMN0012 +PWK*OZ*AB***AC*DMN0012 +CRC*07*Y*01 +CRC*70*Y*65 +CRC*09*N*ZV +DTP*472*RD8*20050314-20050325 +QTY*PT*2 +QTY*FL*3 +AMT*T*45 +AMT*F4*56.78 +NTE*ADD*PATIENTGOALTOBEOFFOXYGENBYENDOFMONTH +NTE*TPO*STATE REGULATION 123 WAS APPLIED DURING THE PRICING OF THIS CLAIM +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var lineNote = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.LineNote) + .Select(x => x.NoteReferenceCode); + + Assume.That(lineNote != null); + Assert.IsTrue(lineNote.HasValue); + Assert.IsTrue(lineNote.IsPresent); + Assert.AreEqual("ADD", lineNote.ValueOrDefault()); + + var thirdPartyOrganizationNotes = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.ThirdPartyOrganizationNotes) + .Select(x => x.NoteReferenceCode); + + Assume.That(thirdPartyOrganizationNotes != null); + Assert.IsTrue(thirdPartyOrganizationNotes.HasValue); + Assert.IsTrue(thirdPartyOrganizationNotes.IsPresent); + Assert.AreEqual("TPO", thirdPartyOrganizationNotes.ValueOrDefault()); + } + + [Test(Description = @"Condition : LineNote => ADD, ThirdPartyOrganizationNotes => missing")] + public void Test2() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*77*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*DQ*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +LX*1 +SV1*HC:99211:25*12.25*UN*1*11**1:2:3**Y +PWK*OZ*FX***AC*DMN0012 +PWK*OZ*AB***AC*DMN0012 +CRC*07*Y*01 +CRC*70*Y*65 +CRC*09*N*ZV +DTP*472*RD8*20050314-20050325 +QTY*PT*2 +QTY*FL*3 +AMT*T*45 +AMT*F4*56.78 +NTE*ADD*PATIENTGOALTOBEOFFOXYGENBYENDOFMONTH +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var lineNote = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.LineNote) + .Select(x => x.NoteReferenceCode); + + Assume.That(lineNote != null); + Assert.IsTrue(lineNote.HasValue); + Assert.IsTrue(lineNote.IsPresent); + Assert.AreEqual("ADD", lineNote.ValueOrDefault()); + + var thirdPartyOrganizationNotes = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.ThirdPartyOrganizationNotes) + .Select(x => x.NoteReferenceCode); + + Assume.That(thirdPartyOrganizationNotes != null); + Assert.IsFalse(thirdPartyOrganizationNotes.HasValue); + Assert.IsFalse(thirdPartyOrganizationNotes.IsPresent); + } + + [Test(Description = @"Condition : LineNote => missing, ThirdPartyOrganizationNotes => TPO")] + public void Test3() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*77*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*DQ*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +LX*1 +SV1*HC:99211:25*12.25*UN*1*11**1:2:3**Y +PWK*OZ*FX***AC*DMN0012 +PWK*OZ*AB***AC*DMN0012 +CRC*07*Y*01 +CRC*70*Y*65 +CRC*09*N*ZV +DTP*472*RD8*20050314-20050325 +QTY*PT*2 +QTY*FL*3 +AMT*T*45 +AMT*F4*56.78 +NTE*TPO*STATE REGULATION 123 WAS APPLIED DURING THE PRICING OF THIS CLAIM +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var lineNote = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.LineNote) + .Select(x => x.NoteReferenceCode); + + Assume.That(lineNote != null); + Assert.IsFalse(lineNote.HasValue); + Assert.IsFalse(lineNote.IsPresent); + + var thirdPartyOrganizationNotes = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.ThirdPartyOrganizationNotes) + .Select(x => x.NoteReferenceCode); + + Assume.That(thirdPartyOrganizationNotes != null); + Assert.IsTrue(thirdPartyOrganizationNotes.HasValue); + Assert.IsTrue(thirdPartyOrganizationNotes.IsPresent); + Assert.AreEqual("TPO", thirdPartyOrganizationNotes.ValueOrDefault()); + } + + [Test(Description = @"Condition : LineNote => DCP, ThirdPartyOrganizationNotes => TPO")] + public void Test4() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*77*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*DQ*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +LX*1 +SV1*HC:99211:25*12.25*UN*1*11**1:2:3**Y +PWK*OZ*FX***AC*DMN0012 +PWK*OZ*AB***AC*DMN0012 +CRC*07*Y*01 +CRC*70*Y*65 +CRC*09*N*ZV +DTP*472*RD8*20050314-20050325 +QTY*PT*2 +QTY*FL*3 +AMT*T*45 +AMT*F4*56.78 +NTE*DCP*PATIENTGOALTOBEOFFOXYGENBYENDOFMONTH +NTE*TPO*STATE REGULATION 123 WAS APPLIED DURING THE PRICING OF THIS CLAIM +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var lineNote = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.LineNote) + .Select(x => x.NoteReferenceCode); + + Assume.That(lineNote != null); + Assert.IsTrue(lineNote.HasValue); + Assert.IsTrue(lineNote.IsPresent); + Assert.AreEqual("DCP", lineNote.ValueOrDefault()); + + var thirdPartyOrganizationNotes = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.ThirdPartyOrganizationNotes) + .Select(x => x.NoteReferenceCode); + + Assume.That(thirdPartyOrganizationNotes != null); + Assert.IsTrue(thirdPartyOrganizationNotes.HasValue); + Assert.IsTrue(thirdPartyOrganizationNotes.IsPresent); + Assert.AreEqual("TPO", thirdPartyOrganizationNotes.ValueOrDefault()); + } + + [Test(Description = @"Condition : LineNote => DCP, ThirdPartyOrganizationNotes => missing")] + public void Test5() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*77*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*DQ*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +LX*1 +SV1*HC:99211:25*12.25*UN*1*11**1:2:3**Y +PWK*OZ*FX***AC*DMN0012 +PWK*OZ*AB***AC*DMN0012 +CRC*07*Y*01 +CRC*70*Y*65 +CRC*09*N*ZV +DTP*472*RD8*20050314-20050325 +QTY*PT*2 +QTY*FL*3 +AMT*T*45 +AMT*F4*56.78 +NTE*DCP*PATIENTGOALTOBEOFFOXYGENBYENDOFMONTH +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var lineNote = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.LineNote) + .Select(x => x.NoteReferenceCode); + + Assume.That(lineNote != null); + Assert.IsTrue(lineNote.HasValue); + Assert.IsTrue(lineNote.IsPresent); + Assert.AreEqual("DCP", lineNote.ValueOrDefault()); + + var thirdPartyOrganizationNotes = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.ThirdPartyOrganizationNotes) + .Select(x => x.NoteReferenceCode); + + Assume.That(thirdPartyOrganizationNotes != null); + Assert.IsFalse(thirdPartyOrganizationNotes.HasValue); + Assert.IsFalse(thirdPartyOrganizationNotes.IsPresent); + } + + [Test(Description = @"Condition : LineNote => missing, ThirdPartyOrganizationNotes => missing")] + public void Test6() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*77*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*DQ*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +LX*1 +SV1*HC:99211:25*12.25*UN*1*11**1:2:3**Y +PWK*OZ*FX***AC*DMN0012 +PWK*OZ*AB***AC*DMN0012 +CRC*07*Y*01 +CRC*70*Y*65 +CRC*09*N*ZV +DTP*472*RD8*20050314-20050325 +QTY*PT*2 +QTY*FL*3 +AMT*T*45 +AMT*F4*56.78 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var lineNote = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.LineNote) + .Select(x => x.NoteReferenceCode); + + Assume.That(lineNote != null); + Assert.IsFalse(lineNote.HasValue); + Assert.IsFalse(lineNote.IsPresent); + + var thirdPartyOrganizationNotes = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.ThirdPartyOrganizationNotes) + .Select(x => x.NoteReferenceCode); + + Assume.That(thirdPartyOrganizationNotes != null); + Assert.IsFalse(thirdPartyOrganizationNotes.HasValue); + Assert.IsFalse(thirdPartyOrganizationNotes.IsPresent); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2400P8ConditionalTests.cs b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2400P8ConditionalTests.cs new file mode 100644 index 000000000..670c04249 --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/Parsing837ProfessionalL2400P8ConditionalTests.cs @@ -0,0 +1,243 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class Parsing837ProfessionalL2400P8ConditionalTests : + X12MacheteTestHarness + { + [Test(Description = @"Condition : RenderingProvider => 82, + PurchasedServiceProvider => QB, + ServiceFacilityLocation => 77, + SupervisingProvider => DQ, + OrderingProvider => DK, + ReferringProvider => DN, + AmbulancePickUpLocation => PW, + AmbulanceDropOffLocation => 45")] + public void Test() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*837*0002*005010X224A3 +BHT*0019*00*0123*20061123*1023*CH +NM1*41*2*PREMIER BILLING SERVICE*****46*567890 +PER*IC*JERRY*TE*7176149999 +NM1*40*2*KEY INSURANCE COMPANY*****46*999996666 +HL*1**20*1 +NM1*85*2*DENTAL ASSOCIATES*****XX*4567890123 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*SY*587654321 +REF*1G*587654321 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +N3*234 SEAWAY ST +N4*MIAMI*FL*33111 +REF*2U*587654321 +REF*EIB*587654321 +HL*2*1*22*1 +SBR*P********CI +NM1*IL*1*SMITH*JANE****MI*JS00111223333 +REF*SY*587654321 +REF*Y4*587654321 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*587654321 +REF*G2*587654321 +HL*3*2*23*0 +PAT*19 +NM1*QC*1*SMITH*TED +N3*236 N MAIN ST +N4*MIAMI*FL*33413 +DMG*D8*19920501*M +REF*Y4*587654321 +REF*1W*587654321 +CLM*26403774*200***11:B:1*Y**Y*I +DTP*431*D8*20061109 +REF*G1*111222333444 +HI✽ABK:8901✽BF:87200✽BF:5559 +HI✽BP:8901✽BF:87200✽BF:5559 +HI✽BG:8901✽BF:87200✽BF:5559 +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +NM1*77*2*KILDARE ASSOCIATES*****XX*1581234567 +N3*2345 OCEAN BLVD +N4*MI +SBR*S*01*******CI +AMT*D*411 +AMT*A8*273 +AMT*EAF*75 +OI***Y*P**Y +NM1*IL*1*SMITH*JACK****MI*T55TY666 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +REF*SY*R555588 +NM1*PR*2*KEY INSURANCE COMPANY*****PI*999996666 +REF*2U*98765 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*82*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*77*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*DQ*1*KILDARE*BEN****XX*6789012345 +REF*0B*R555588 +NM1*85*1*KILDARE*BEN****XX*6789012345 +REF*G2*R555588 +LX*1 +SV1*HC:99211:25*12.25*UN*1*11**1:2:3**Y +PWK*OZ*FX***AC*DMN0012 +PWK*OZ*AB***AC*DMN0012 +CRC*07*Y*01 +CRC*70*Y*65 +CRC*09*N*ZV +DTP*472*RD8*20050314-20050325 +QTY*PT*2 +QTY*FL*3 +AMT*T*45 +AMT*F4*56.78 +NTE*ADD*PATIENTGOALTOBEOFFOXYGENBYENDOFMONTH +NTE*TPO*STATE REGULATION 123 WAS APPLIED DURING THE PRICING OF THIS CLAIM +NM1*82*1*KILDARE*BEN****XX*6789012345 +NM1*QB*1*KILDARE*BEN****XX*6789012345 +NM1*77*1*KILDARE*BEN****XX*6789012345 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +NM1*DQ*1*KILDARE*BEN****XX*6789012345 +NM1*DK*1*KILDARE*BEN****XX*6789012345 +NM1*DN*1*KILDARE*BEN****XX*6789012345 +NM1*PW*1*KILDARE*BEN****XX*6789012345 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +NM1*45*1*KILDARE*BEN****XX*6789012345 +N3*236 N MAIN ST +N4*MIAMI*FL*33111 +SE*29*0002 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assume.That(queryResult != null); + Assume.That(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assume.That(transactions != null); + Assume.That(transactions.HasValue); + + var renderingProvider = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.RenderingProvider) + .Select(x => x.Provider) + .Select(x => x.EntityIdentifierCode); + + Assume.That(renderingProvider != null); + Assert.IsTrue(renderingProvider.HasValue); + Assert.IsTrue(renderingProvider.IsPresent); + Assert.AreEqual("82", renderingProvider.ValueOrDefault()); + + var purchasedServiceProvider = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.PurchasedServiceProvider) + .Select(x => x.Provider) + .Select(x => x.EntityIdentifierCode); + + Assume.That(purchasedServiceProvider != null); + Assert.IsTrue(purchasedServiceProvider.HasValue); + Assert.IsTrue(purchasedServiceProvider.IsPresent); + Assert.AreEqual("QB", purchasedServiceProvider.ValueOrDefault()); + + var serviceFacilityLocation = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.ServiceFacilityLocation) + .Select(x => x.LocationName) + .Select(x => x.EntityIdentifierCode); + + Assume.That(serviceFacilityLocation != null); + Assert.IsTrue(serviceFacilityLocation.HasValue); + Assert.IsTrue(serviceFacilityLocation.IsPresent); + Assert.AreEqual("77", serviceFacilityLocation.ValueOrDefault()); + + var supervisingProvider = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.SupervisingProvider) + .Select(x => x.Provider) + .Select(x => x.EntityIdentifierCode); + + Assume.That(supervisingProvider != null); + Assert.IsTrue(supervisingProvider.HasValue); + Assert.IsTrue(supervisingProvider.IsPresent); + Assert.AreEqual("DQ", supervisingProvider.ValueOrDefault()); + + var orderingProvider = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.OrderingProvider) + .Select(x => x.Provider) + .Select(x => x.EntityIdentifierCode); + + Assume.That(orderingProvider != null); + Assert.IsTrue(orderingProvider.HasValue); + Assert.IsTrue(orderingProvider.IsPresent); + Assert.AreEqual("DK", orderingProvider.ValueOrDefault()); + + var referringProvider = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.ReferringProvider)[0] + .Select(x => x.Provider) + .Select(x => x.EntityIdentifierCode); + + Assume.That(referringProvider != null); + Assert.IsTrue(referringProvider.HasValue); + Assert.IsTrue(referringProvider.IsPresent); + Assert.AreEqual("DN", referringProvider.ValueOrDefault()); + + var ambulancePickUpLocation = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.AmbulancePickUpLocation) + .Select(x => x.PickUpLocation) + .Select(x => x.EntityIdentifierCode); + + Assume.That(ambulancePickUpLocation != null); + Assert.IsTrue(ambulancePickUpLocation.HasValue); + Assert.IsTrue(ambulancePickUpLocation.IsPresent); + Assert.AreEqual("PW", ambulancePickUpLocation.ValueOrDefault()); + + var ambulanceDropOffLocation = transactions + .Select(x => x.PatientDetail)[0] + .Select(x => x.ClaimInformation)[0] + .Select(x => x.ServiceLineNumber)[0] + .Select(x => x.AmbulanceDropOffLocation) + .Select(x => x.DropOffLocation) + .Select(x => x.EntityIdentifierCode); + + Assume.That(ambulanceDropOffLocation != null); + Assert.IsTrue(ambulanceDropOffLocation.HasValue); + Assert.IsTrue(ambulanceDropOffLocation.IsPresent); + Assert.AreEqual("45", ambulanceDropOffLocation.ValueOrDefault()); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/ParsingMultipleSegmentOfSameTypeTests.cs b/src/Machete.X12.Tests/Layouts/ParsingMultipleSegmentOfSameTypeTests.cs new file mode 100644 index 000000000..074fbb6c7 --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/ParsingMultipleSegmentOfSameTypeTests.cs @@ -0,0 +1,305 @@ +namespace Machete.X12.Tests.Layouts +{ + using NUnit.Framework; + using Testing; + using TestSchema; + + + [TestFixture] + public class ParsingMultipleSegmentOfSameType : + X12MacheteTestHarness + { + [Test] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*835*212900796 +PER*CX*PROVIDER SERVICES*TE*321321321*UR*www.default.org +PER*BL*PROVIDER SERVICES*TE*321321321*UR*www.default.org +PER*IC*PROVIDER SERVICES*TE*321321321*UR*www.default.org +SE*1301*212900796 +GE*1*176073292 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var businessContactInformation = queryResult + .Select(x => x.BusinessContactInformation) + .Select(x => x.ContactFunctionCode); + + Assert.IsTrue(businessContactInformation.HasValue); + Assert.IsTrue(businessContactInformation.IsPresent); + Assert.AreEqual("CX", businessContactInformation.ValueOrDefault()); + + var technicalContact = queryResult + .Select(x => x.TechnicalContactInformation) + .Select(x => x.ContactFunctionCode); + + Assert.IsTrue(technicalContact.HasValue); + Assert.IsTrue(technicalContact.IsPresent); + Assert.AreEqual("BL", technicalContact.ValueOrDefault()); + + var payerWebsite = queryResult + .Select(x => x.PayerWebsite) + .Select(x => x.ContactFunctionCode); + + Assert.IsTrue(payerWebsite.HasValue); + Assert.IsTrue(payerWebsite.IsPresent); + Assert.AreEqual("IC", payerWebsite.ValueOrDefault()); + } + + [Test] + public void Test2() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*835*212900796 +PER*CX*PROVIDER SERVICES*TE*321321321*UR*www.default.org +PER*BL*PROVIDER SERVICES 1*TE*321321321*UR*www.default.org +PER*BL*PROVIDER SERVICES 2*TE*321321321*UR*www.default.org +PER*BL*PROVIDER SERVICES 3*TE*321321321*UR*www.default.org +SE*1301*212900796 +GE*1*176073292 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var businessContactInformation = queryResult + .Select(x => x.BusinessContactInformation) + .Select(x => x.ContactFunctionCode); + + Assert.IsTrue(businessContactInformation.HasValue); + Assert.IsTrue(businessContactInformation.IsPresent); + Assert.AreEqual("CX", businessContactInformation.ValueOrDefault()); + + Assert.IsTrue(queryResult.Select(x => x.TechnicalContactInformation).HasValue); + + foreach (var contact in queryResult.Select(x => x.TechnicalContactInformation).ToEnumerable()) + { + Assert.IsTrue(contact.Select(x => x.ContactFunctionCode).HasValue); + Assert.IsTrue(contact.Select(x => x.ContactFunctionCode).IsPresent); + Assert.AreEqual("BL", contact.Select(x => x.ContactFunctionCode).ValueOrDefault()); + } + } + + [Test, Explicit("should run green when issue ##65 is fixed")] + public void Test3() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*835*212900796 +PER*CX*PROVIDER SERVICES*TE*321321321*UR*www.default.org +PER*BL*PROVIDER SERVICES 1*TE*321321321*UR*www.default.org +PER*BL*PROVIDER SERVICES 2*TE*321321321*UR*www.default.org +PER*BL*PROVIDER SERVICES 3*TE*321321321*UR*www.default.org +PER*IC*PROVIDER SERVICES*TE*321321321*UR*www.default.org +SE*1301*212900796 +GE*1*176073292 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var businessContactInformation = queryResult + .Select(x => x.BusinessContactInformation) + .Select(x => x.ContactFunctionCode); + + Assert.IsTrue(businessContactInformation.HasValue); + Assert.IsTrue(businessContactInformation.IsPresent); + Assert.AreEqual("CX", businessContactInformation.ValueOrDefault()); + + Assert.IsTrue(queryResult.Select(x => x.TechnicalContactInformation).HasValue); + + foreach (var contact in queryResult.Select(x => x.TechnicalContactInformation).ToEnumerable()) + { + Assert.IsTrue(contact.Select(x => x.ContactFunctionCode).HasValue); + Assert.IsTrue(contact.Select(x => x.ContactFunctionCode).IsPresent); + Assert.AreEqual("BL", contact.Select(x => x.ContactFunctionCode).ValueOrDefault()); + } + + var payerWebsite = queryResult + .Select(x => x.PayerWebsite) + .Select(x => x.ContactFunctionCode); + + Assert.IsTrue(payerWebsite.HasValue); + Assert.IsTrue(payerWebsite.IsPresent); + Assert.AreEqual("IC", payerWebsite.ValueOrDefault()); + } + + [Test] + public void Test4() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*835*212900796 +PER*CX*PROVIDER SERVICES*TE*321321321*UR*www.default.org +PER*BL*PROVIDER SERVICES 1*TE*321321321*UR*www.default.org +PER*BL*PROVIDER SERVICES 2*TE*321321321*UR*www.default.org +PER*BL*PROVIDER SERVICES 3*TE*321321321*UR*www.default.org +SE*1301*212900796 +GE*1*176073292 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var businessContactInformation = queryResult + .Select(x => x.BusinessContactInformation) + .Select(x => x.ContactFunctionCode); + + Assert.IsTrue(businessContactInformation.HasValue); + Assert.IsTrue(businessContactInformation.IsPresent); + Assert.AreEqual("CX", businessContactInformation.ValueOrDefault()); + + Assert.IsTrue(queryResult.Select(x => x.TechnicalContactInformation).HasValue); + + foreach (var contact in queryResult.Select(x => x.TechnicalContactInformation).ToEnumerable()) + { + Assert.IsTrue(contact.Select(x => x.ContactFunctionCode).HasValue); + Assert.IsTrue(contact.Select(x => x.ContactFunctionCode).IsPresent); + Assert.AreEqual("BL", contact.Select(x => x.ContactFunctionCode).ValueOrDefault()); + } + + var payerWebsite = queryResult + .Select(x => x.PayerWebsite) + .Select(x => x.ContactFunctionCode); + + Assert.IsFalse(payerWebsite.HasValue); + Assert.IsFalse(payerWebsite.IsPresent); + } + + [Test, Explicit("should run green when issue ##65 is fixed")] + public void Test5() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*835*212900796 +PER*BL*PROVIDER SERVICES 1*TE*321321321*UR*www.default.org +PER*BL*PROVIDER SERVICES 2*TE*321321321*UR*www.default.org +PER*BL*PROVIDER SERVICES 3*TE*321321321*UR*www.default.org +PER*IC*PROVIDER SERVICES*TE*321321321*UR*www.default.org +SE*1301*212900796 +GE*1*176073292 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var businessContactInformation = queryResult + .Select(x => x.BusinessContactInformation) + .Select(x => x.ContactFunctionCode); + + Assert.IsFalse(businessContactInformation.HasValue); + Assert.IsFalse(businessContactInformation.IsPresent); + + Assert.IsTrue(queryResult.Select(x => x.TechnicalContactInformation).HasValue); + + foreach (var contact in queryResult.Select(x => x.TechnicalContactInformation).ToEnumerable()) + { + Assert.IsTrue(contact.Select(x => x.ContactFunctionCode).HasValue); + Assert.IsTrue(contact.Select(x => x.ContactFunctionCode).IsPresent); + Assert.AreEqual("BL", contact.Select(x => x.ContactFunctionCode).ValueOrDefault()); + } + + var payerWebsite = queryResult + .Select(x => x.PayerWebsite) + .Select(x => x.ContactFunctionCode); + + Assert.IsTrue(payerWebsite.HasValue); + Assert.IsTrue(payerWebsite.IsPresent); + Assert.AreEqual("IC", payerWebsite.ValueOrDefault()); + } + + [Test] + public void Test6() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*835*212900796 +PER*CX*PROVIDER SERVICES*TE*321321321*UR*www.default.org +PER*BL*PROVIDER SERVICES*TE*321321321*UR*www.default.org +PER*IC*PROVIDER SERVICES*TE*321321321*UR*www.default.org +SE*1301*212900796 +GE*1*176073292 +IEA*1*176073292"; + + var entityResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = entityResult.CreateQuery(layout); + + var queryResult = entityResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var businessContactInformation = queryResult + .Select(x => x.BusinessContactInformation) + .Select(x => x.ContactFunctionCode); + + Assert.IsTrue(businessContactInformation.HasValue); + Assert.IsTrue(businessContactInformation.IsPresent); + Assert.AreEqual("CX", businessContactInformation.ValueOrDefault()); + + var technicalContact = queryResult + .Select(x => x.TechnicalContactInformation) + .Select(x => x.ContactFunctionCode); + + Assert.IsTrue(technicalContact.HasValue); + Assert.IsTrue(technicalContact.IsPresent); + Assert.AreEqual("BL", technicalContact.ValueOrDefault()); + + var payerWebsite = queryResult + .Select(x => x.PayerWebsite) + .Select(x => x.ContactFunctionCode); + + Assert.IsTrue(payerWebsite.HasValue); + Assert.IsTrue(payerWebsite.IsPresent); + Assert.AreEqual("IC", payerWebsite.ValueOrDefault()); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/Layouts/SegmentMissingExceptionTests.cs b/src/Machete.X12.Tests/Layouts/SegmentMissingExceptionTests.cs new file mode 100644 index 000000000..19a724268 --- /dev/null +++ b/src/Machete.X12.Tests/Layouts/SegmentMissingExceptionTests.cs @@ -0,0 +1,53 @@ +namespace Machete.X12.Tests.Layouts +{ + using Exceptions; + using NUnit.Framework; + using Testing; + using X12Schema.V5010; + + + [TestFixture] + public class SegmentMissingExceptionTests : + X12MacheteTestHarness + { + [Test] + public void Test1() + { + string message = + @"ISA*00* *00* *ZZ*EMEDNYBAT *ZZ*00DJ *180625*0712*^*00501*176073292*0*P*: +GS*HP*EMEDNYBAT*00DJ*20180625*07121200*176073292*X*005010X221A1 +ST*277*0001*005010X228 +BHT*0085*08*277PEND123*20070210*1635*NO +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 +SE*35*0001 +GE*1*1 +IEA*1*176073292"; + + var parseResult = Parser.Parse(message); + + Assert.IsTrue(Schema.TryGetLayout(out ILayoutParserFactory layout)); + + var query = parseResult.CreateQuery(layout); + + var queryResult = parseResult.Query(query); + + Assert.IsTrue(queryResult.HasResult); + + var transactions = queryResult.Select(x => x.Transactions)[0]; + + Assert.IsTrue(transactions.HasValue); + Assert.IsFalse(transactions.Select(x => x.PatientDetail).TryGetValue(0, out var layout1)); + + Assert.Throws(() => + { + var layout1Value = layout1.Select(x => x.ServiceProviderLevel).Value; + }); + } + + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/TestSchema/LayoutCondition2Issue.cs b/src/Machete.X12.Tests/TestSchema/LayoutCondition2Issue.cs new file mode 100644 index 000000000..06589bf1f --- /dev/null +++ b/src/Machete.X12.Tests/TestSchema/LayoutCondition2Issue.cs @@ -0,0 +1,22 @@ +namespace Machete.X12.Tests.TestSchema +{ + public interface LayoutCondition2Issue : + X12Layout + { + Segment InterchangeControlHeader { get; } + + Segment FunctionalGroupHeader { get; } + + Segment TransactionSetHeader { get; } + + Segment BusinessContactInformation { get; } + + SegmentList TechnicalContactInformation { get; } + + Segment TransactionSetTrailer { get; } + + Segment FunctionalGroupTrailer { get; } + + Segment InterchangeControlTrailer { get; } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/TestSchema/LayoutCondition2IssueMap.cs b/src/Machete.X12.Tests/TestSchema/LayoutCondition2IssueMap.cs new file mode 100644 index 000000000..8a335526b --- /dev/null +++ b/src/Machete.X12.Tests/TestSchema/LayoutCondition2IssueMap.cs @@ -0,0 +1,26 @@ +namespace Machete.X12.Tests.TestSchema +{ + using Configuration; + + + public class LayoutCondition2IssueMap : + X12LayoutMap + { + public LayoutCondition2IssueMap() + { + Id = "LayoutConditionIssue"; + Name = "Payer Identification"; + + Segment(x => x.InterchangeControlHeader, 0); + Segment(x => x.FunctionalGroupHeader, 1); + Segment(x => x.TransactionSetHeader, 2, x => x.IsRequired()); + Segment(x => x.BusinessContactInformation, 3, + x => x.Condition = parser => parser.Where(p => p.ContactFunctionCode.IsEqualTo("CX"))); + Segment(x => x.TechnicalContactInformation, 4, + x => x.IsRequired().Condition = parser => parser.Where(p => p.ContactFunctionCode.IsEqualTo("BL"))); + Segment(x => x.TransactionSetTrailer, 5, x => x.IsRequired()); + Segment(x => x.FunctionalGroupTrailer, 6); + Segment(x => x.InterchangeControlTrailer, 7); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/TestSchema/LayoutCondition3Issue.cs b/src/Machete.X12.Tests/TestSchema/LayoutCondition3Issue.cs new file mode 100644 index 000000000..3b2142103 --- /dev/null +++ b/src/Machete.X12.Tests/TestSchema/LayoutCondition3Issue.cs @@ -0,0 +1,24 @@ +namespace Machete.X12.Tests.TestSchema +{ + public interface LayoutCondition3Issue : + X12Layout + { + Segment InterchangeControlHeader { get; } + + Segment FunctionalGroupHeader { get; } + + Segment TransactionSetHeader { get; } + + Segment BusinessContactInformation { get; } + + SegmentList TechnicalContactInformation { get; } + + Segment PayerWebsite { get; } + + Segment TransactionSetTrailer { get; } + + Segment FunctionalGroupTrailer { get; } + + Segment InterchangeControlTrailer { get; } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/TestSchema/LayoutCondition3IssueMap.cs b/src/Machete.X12.Tests/TestSchema/LayoutCondition3IssueMap.cs new file mode 100644 index 000000000..b5a641504 --- /dev/null +++ b/src/Machete.X12.Tests/TestSchema/LayoutCondition3IssueMap.cs @@ -0,0 +1,28 @@ +namespace Machete.X12.Tests.TestSchema +{ + using Configuration; + + + public class LayoutCondition3IssueMap : + X12LayoutMap + { + public LayoutCondition3IssueMap() + { + Id = "LayoutConditionIssue"; + Name = "Payer Identification"; + + Segment(x => x.InterchangeControlHeader, 0); + Segment(x => x.FunctionalGroupHeader, 1); + Segment(x => x.TransactionSetHeader, 2, x => x.IsRequired()); + Segment(x => x.BusinessContactInformation, 3, + x => x.Condition = parser => parser.Where(p => p.ContactFunctionCode.IsEqualTo("CX"))); + Segment(x => x.TechnicalContactInformation, 4, + x => x.IsRequired().Condition = parser => parser.Where(p => p.ContactFunctionCode.IsEqualTo("BL"))); + Segment(x => x.PayerWebsite, 5, + x => x.Condition = parser => parser.Where(p => p.ContactFunctionCode.IsEqualTo("IC"))); + Segment(x => x.TransactionSetTrailer, 6, x => x.IsRequired()); + Segment(x => x.FunctionalGroupTrailer, 7); + Segment(x => x.InterchangeControlTrailer, 8); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/TestSchema/LayoutConditionIssue.cs b/src/Machete.X12.Tests/TestSchema/LayoutConditionIssue.cs new file mode 100644 index 000000000..86f485a42 --- /dev/null +++ b/src/Machete.X12.Tests/TestSchema/LayoutConditionIssue.cs @@ -0,0 +1,24 @@ +namespace Machete.X12.Tests.TestSchema +{ + public interface LayoutCondition1Issue : + X12Layout + { + Segment InterchangeControlHeader { get; } + + Segment FunctionalGroupHeader { get; } + + Segment TransactionSetHeader { get; } + + Segment BusinessContactInformation { get; } + + Segment TechnicalContactInformation { get; } + + Segment PayerWebsite { get; } + + Segment TransactionSetTrailer { get; } + + Segment FunctionalGroupTrailer { get; } + + Segment InterchangeControlTrailer { get; } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/TestSchema/LayoutConditionIssueMap.cs b/src/Machete.X12.Tests/TestSchema/LayoutConditionIssueMap.cs new file mode 100644 index 000000000..c57d00ecc --- /dev/null +++ b/src/Machete.X12.Tests/TestSchema/LayoutConditionIssueMap.cs @@ -0,0 +1,28 @@ +namespace Machete.X12.Tests.TestSchema +{ + using Configuration; + + + public class LayoutCondition1IssueMap : + X12LayoutMap + { + public LayoutCondition1IssueMap() + { + Id = "LayoutConditionIssue"; + Name = "Payer Identification"; + + Segment(x => x.InterchangeControlHeader, 0); + Segment(x => x.FunctionalGroupHeader, 1); + Segment(x => x.TransactionSetHeader, 2, x => x.IsRequired()); + Segment(x => x.BusinessContactInformation, 3, + x => x.Condition = parser => parser.Where(p => p.ContactFunctionCode.IsEqualTo("CX"))); + Segment(x => x.TechnicalContactInformation, 4, + x => x.IsRequired().Condition = parser => parser.Where(p => p.ContactFunctionCode.IsEqualTo("BL"))); + Segment(x => x.PayerWebsite, 5, + x => x.Condition = parser => parser.Where(p => p.ContactFunctionCode.IsEqualTo("IC"))); + Segment(x => x.TransactionSetTrailer, 6, x => x.IsRequired()); + Segment(x => x.FunctionalGroupTrailer, 7); + Segment(x => x.InterchangeControlTrailer, 8); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/TestSchema/PERSegment.cs b/src/Machete.X12.Tests/TestSchema/PERSegment.cs new file mode 100644 index 000000000..c84d58cb3 --- /dev/null +++ b/src/Machete.X12.Tests/TestSchema/PERSegment.cs @@ -0,0 +1,22 @@ +namespace Machete.X12.Tests.TestSchema +{ + public interface PERSegment : + X12Segment + { + Value ContactFunctionCode { get; } + + Value Name { get; } + + Value CommunicationNumberQualifier1 { get; } + + Value CommunicationNumber1 { get; } + + Value CommunicationNumberQualifier2 { get; } + + Value CommunicationNumber2 { get; } + + Value CommunicationNumberQualifier3 { get; } + + Value CommunicationNumber3 { get; } + } +} \ No newline at end of file diff --git a/src/Machete.X12.Tests/TestSchema/PERSegmentMap.cs b/src/Machete.X12.Tests/TestSchema/PERSegmentMap.cs new file mode 100644 index 000000000..0939f83dc --- /dev/null +++ b/src/Machete.X12.Tests/TestSchema/PERSegmentMap.cs @@ -0,0 +1,24 @@ +namespace Machete.X12.Tests.TestSchema +{ + using Configuration; + + + public class PERSegmentMap : + X12SegmentMap + { + public PERSegmentMap() + { + Id = "PER"; + Name = "Administrative Communications Contact"; + + Value(x => x.ContactFunctionCode, 1, x => x.FixedLength(2).IsRequired()); + Value(x => x.Name, 2, x => x.MinLength(1).MaxLength(60)); + Value(x => x.CommunicationNumberQualifier1, 3, x => x.FixedLength(2)); + Value(x => x.CommunicationNumber1, 4, x => x.MinLength(1).MaxLength(80)); + Value(x => x.CommunicationNumberQualifier2, 5, x => x.FixedLength(2)); + Value(x => x.CommunicationNumber2, 6, x => x.MinLength(1).MaxLength(80)); + Value(x => x.CommunicationNumberQualifier3, 7, x => x.FixedLength(2)); + Value(x => x.CommunicationNumber3, 8, x => x.MinLength(1).MaxLength(80)); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12/SegmentValue.cs b/src/Machete.X12/SegmentValue.cs new file mode 100644 index 000000000..4dee88ba0 --- /dev/null +++ b/src/Machete.X12/SegmentValue.cs @@ -0,0 +1,27 @@ +namespace Machete +{ + using X12; + using X12.Segments; + + + public static class SegmentValue + { + /// + /// A missing value is one that has no value. + /// + /// + /// + public static Segment Missing() + where T : X12Segment + { + return Cached.Missing; + } + + + static class Cached + where T : X12Segment + { + public static readonly Segment Missing = new MissingSegment(); + } + } +} \ No newline at end of file diff --git a/src/Machete.X12/Segments/MissingSegment.cs b/src/Machete.X12/Segments/MissingSegment.cs index b9d458f3d..de5b603f5 100644 --- a/src/Machete.X12/Segments/MissingSegment.cs +++ b/src/Machete.X12/Segments/MissingSegment.cs @@ -12,9 +12,6 @@ public class MissingSegment : public bool IsPresent => false; public bool HasValue => false; - public TSegment Value - { - get { throw new SegmentMissingException("The segment is missing."); } - } + public TSegment Value => throw new SegmentMissingException("The segment is missing."); } } \ No newline at end of file diff --git a/src/Machete.X12/Segments/MissingSegmentList.cs b/src/Machete.X12/Segments/MissingSegmentList.cs index 4e26209c5..5e52b942e 100644 --- a/src/Machete.X12/Segments/MissingSegmentList.cs +++ b/src/Machete.X12/Segments/MissingSegmentList.cs @@ -1,7 +1,6 @@ namespace Machete.X12.Segments { using System; - using Exceptions; /// @@ -15,24 +14,20 @@ public class MissingSegmentList : Type IEntity.EntityType => typeof(TSegment); bool IEntity.HasValue => false; - public Segment this[int index] - { - get { throw new SegmentMissingException("The segment is missing."); } - } + public Segment this[int index] => SegmentValue.Missing(); bool SegmentList.TryGetValue(int index, out Segment segment) { - throw new ValueMissingException("The segment is missing."); + segment = SegmentValue.Missing(); + return false; } - bool EntityList.TryGetValue(int index, out Entity value) + bool EntityList.TryGetValue(int index, out Entity segment) { - throw new ValueMissingException("The segment is missing."); + segment = SegmentValue.Missing(); + return false; } - Entity EntityList.this[int index] - { - get { throw new ValueMissingException("The segment is missing."); } - } + Entity EntityList.this[int index] => SegmentValue.Missing(); } } \ No newline at end of file diff --git a/src/Machete.X12/X12LayoutExtensions.cs b/src/Machete.X12/X12LayoutExtensions.cs index e2f1d7262..10976e508 100644 --- a/src/Machete.X12/X12LayoutExtensions.cs +++ b/src/Machete.X12/X12LayoutExtensions.cs @@ -1,6 +1,7 @@ namespace Machete.X12 { using System; + using System.Diagnostics; public static class X12LayoutExtensions @@ -17,7 +18,9 @@ public static class X12LayoutExtensions where TLayout : Layout where TSegment : X12Segment { - if (source == null) + Debug.Assert(source != null); + + if (source == null || !source.HasValue) return Segment.Missing(); return getter(source.Value) ?? Segment.Missing(); @@ -35,7 +38,9 @@ public static class X12LayoutExtensions where TLayout : Layout where TSegment : X12Segment { - if (source == null) + Debug.Assert(source != null); + + if (source == null || !source.HasValue) return SegmentList.Missing(); return getter(source.Value) ?? SegmentList.Missing(); diff --git a/src/Machete.X12/X12ResultExtensions.cs b/src/Machete.X12/X12ResultExtensions.cs index 8872b5a9f..e18be4340 100644 --- a/src/Machete.X12/X12ResultExtensions.cs +++ b/src/Machete.X12/X12ResultExtensions.cs @@ -1,6 +1,7 @@ namespace Machete.X12 { using System; + using System.Diagnostics; public static class X12ResultExtensions @@ -18,6 +19,8 @@ public static class X12ResultExtensions where TLayout : X12Layout where TSegment : X12Segment { + Debug.Assert(source != null); + if (source == null || !source.HasResult) return Segment.Missing(); @@ -27,20 +30,22 @@ public static class X12ResultExtensions /// /// Safely returns the from the parsed result. /// - /// + /// /// /// /// /// /// - public static SegmentList Select(this Result, TLayout> result, Func> projector) + public static SegmentList Select(this Result, TLayout> source, Func> projector) where TLayout : X12Layout where TSegment : X12Segment { - if (result == null || !result.HasResult) + Debug.Assert(source != null); + + if (source == null || !source.HasResult) return SegmentList.Missing(); - return projector(result.Result) ?? SegmentList.Missing(); + return projector(source.Result) ?? SegmentList.Missing(); } } } \ No newline at end of file diff --git a/src/Machete.X12/X12SegmentExtensions.cs b/src/Machete.X12/X12SegmentExtensions.cs index 035b869e0..9d119c99e 100644 --- a/src/Machete.X12/X12SegmentExtensions.cs +++ b/src/Machete.X12/X12SegmentExtensions.cs @@ -1,6 +1,7 @@ namespace Machete.X12 { using System; + using System.Diagnostics; public static class X12SegmentExtensions @@ -16,6 +17,8 @@ public static class X12SegmentExtensions public static Value Select(this Segment source, Func> projector) where TSegment : X12Segment { + Debug.Assert(source != null); + if (source == null || !source.HasValue) return Value.Missing(); @@ -33,6 +36,8 @@ public static class X12SegmentExtensions public static ValueList Select(this Segment source, Func> projector) where TSegment : X12Segment { + Debug.Assert(source != null); + if (source == null || !source.HasValue) return ValueList.Missing(); @@ -51,6 +56,8 @@ public static class X12SegmentExtensions where TSegment : X12Segment where T : X12Segment { + Debug.Assert(source != null); + if (source == null || !source.HasValue) return Segment.Missing(); @@ -69,6 +76,8 @@ public static class X12SegmentExtensions where TSegment : X12Segment where T : X12Segment { + Debug.Assert(source != null); + if (source == null || !source.HasValue) return SegmentList.Missing(); @@ -78,11 +87,38 @@ public static class X12SegmentExtensions /// /// Returns true if the entity is empty (doesn't contain any text beyond the segmentId) /// - /// + /// + /// + public static bool IsEmpty(this X12Segment segment) + { + Debug.Assert(segment != null); + + if (segment == null) + return true; + + return !segment.ParsedText.TryGetSlice(1, out _); + } + + /// + /// Returns true if the component is empty (doesn't contain any text beyond the segmentId) + /// + /// /// - public static bool IsEmpty(this X12Entity entity) + public static bool IsEmpty(this X12Component component) { - return !entity.ParsedText.TryGetSlice(1, out _); + Debug.Assert(component != null); + + if (component == null) + return true; + + for (int i = 0;; i++) + { + if (!component.ParsedText.TryGetSlice(i, out var nextSlice)) + return true; + + if (nextSlice.TryGetSlice(0, out _)) + return false; + } } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/T277.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/CAT277.cs similarity index 91% rename from src/Machete.X12Schema/Generated/V5010/Layouts/T277.cs rename to src/Machete.X12Schema/Generated/V5010/Layouts/CAT277.cs index 6b39122b4..c9869a3c8 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/T277.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/CAT277.cs @@ -13,7 +13,7 @@ public interface CAT277 : Segment TransactionSetHeader { get; } - Segment BeginningOfHeirarchicalTransaction { get; } + Segment BeginningOfHierarchicalTransaction { get; } LayoutList InformationSourceDetail { get; } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/ISNT277.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/ISNT277.cs index 031c83bab..a929fd457 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/ISNT277.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/ISNT277.cs @@ -13,7 +13,7 @@ public interface ISNT277 : Segment TransactionSetHeader { get; } - Segment BeginningOfHeirarchicalTransaction { get; } + Segment BeginningOfHierarchicalTransaction { get; } LayoutList InformationSourceDetail { get; } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/L2000A_837D.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/L2000A_837D.cs index 19ae308a7..67f8b6714 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/L2000A_837D.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/L2000A_837D.cs @@ -6,13 +6,13 @@ public interface L2000A_837D : X12Layout { - Segment BillingProviderHeirarchicalLevel { get; } + Segment BillingProviderHierarchicalLevel { get; } Segment BillingProviderSpecialtyInformation { get; } Segment ForeignCurrencyInformation { get; } - Layout BillingProvider { get; } + Layout BillingProviderName { get; } Layout PayToAddress { get; } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/L2000A_837P.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/L2000A_837P.cs index f6211f061..6ffbdbdf1 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/L2000A_837P.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/L2000A_837P.cs @@ -6,16 +6,12 @@ public interface L2000A_837P : X12Layout { - Segment BillingProviderHeirarchicalLevel { get; } + Segment BillingProviderHierarchicalLevel { get; } Segment BillingProviderSpecialtyInformation { get; } Segment ForeignCurrencyInformation { get; } Layout BillingProviderName { get; } - - Layout PayToAddress { get; } - - Layout PayToPlan { get; } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/L2000B_837P.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/L2000B_837P.cs index 4146a4282..e75b8c7c7 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/L2000B_837P.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/L2000B_837P.cs @@ -6,14 +6,14 @@ public interface L2000B_837P : X12Layout { - Segment SubscriberHeirarchicalLevel { get; } + Segment SubscriberHierarchicalLevel { get; } - Segment SubscriberInformtion { get; } + Segment SubscriberInformation { get; } Segment PatientInformation { get; } - Layout Subscriber { get; } + Layout SubscriberName { get; } - Layout Payer { get; } + Layout PayerName { get; } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/L2000C_277ACK.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/L2000C_277ACK.cs index 927c091ec..72f4ce3c2 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/L2000C_277ACK.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/L2000C_277ACK.cs @@ -6,7 +6,7 @@ public interface L2000C_277ACK : X12Layout { - Segment BillingPRoviderOfServiceLevel { get; } + Segment BillingProviderOfServiceLevel { get; } Layout BillingProviderName { get; } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/L2000C_837P.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/L2000C_837P.cs index 0c1077819..c4c4b27d9 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/L2000C_837P.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/L2000C_837P.cs @@ -6,11 +6,11 @@ public interface L2000C_837P : X12Layout { - Segment PatientHeirarchicalLevel { get; } + Segment PatientHierarchicalLevel { get; } Segment PatientInformation { get; } - Layout Patient { get; } + Layout PatientName { get; } LayoutList ClaimInformation { get; } } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/L2000D_277ACK.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/L2000D_277ACK.cs index 13288edd4..bf0b4bbf5 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/L2000D_277ACK.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/L2000D_277ACK.cs @@ -10,6 +10,6 @@ public interface L2000D_277ACK : Layout PatientName { get; } - LayoutList ProviderOfServiceInformationTraceIdentifier { get; } + LayoutList ClaimStatusTrackingNumber { get; } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/L2100A_277.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/L2100A_277.cs index 3c3165c5b..371e30ee7 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/L2100A_277.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/L2100A_277.cs @@ -7,7 +7,5 @@ public interface L2100A_277 : X12Layout { Segment PayerName { get; } - - Segment ContactInformation { get; } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/L2200D_277.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/L2200D_277.cs index 75b61733c..5d6da7f29 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/L2200D_277.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/L2200D_277.cs @@ -16,7 +16,7 @@ public interface L2200D_277 : Segment MedicalRecordIdentificationNumber { get; } - Segment ClaimIdentificationNumberForClearinghousesAndOtherTransmissionIntermediaries { get; } + Segment ClaimIdentificationNumber { get; } Segment ClaimServiceDate { get; } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/L2200D_277ACK.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/L2200D_277ACK.cs index 7f00b77cb..056bbb7ee 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/L2200D_277ACK.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/L2200D_277ACK.cs @@ -12,7 +12,7 @@ public interface L2200D_277ACK : Segment PayerClaimControlNumber { get; } - Segment ClaimIdentifierNumberForClearinghouseAndOtherTransmissionIternmediaries { get; } + Segment ClaimIdNumberForClearinghouseAndOtherTransmissionIntermediaries { get; } Segment InstitutionalBillTypeIdentification { get; } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/L2220D_277.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/L2220D_277.cs index e051be733..4e047debb 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/L2220D_277.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/L2220D_277.cs @@ -12,6 +12,8 @@ public interface L2220D_277 : Segment ItemIdentification { get; } + Segment PharmacyPrescriptionNumber { get; } + Segment Date { get; } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/L2220D_277ACK.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/L2220D_277ACK.cs index 438f87a11..63b33acfc 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/L2220D_277ACK.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/L2220D_277ACK.cs @@ -14,8 +14,6 @@ public interface L2220D_277ACK : Segment PharmacyPrescriptionNumber { get; } - Segment InstitutionalBillTypeIdentification { get; } - Segment Date { get; } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/L2300_837P.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/L2300_837P.cs index dd15609a3..4bae8be37 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/L2300_837P.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/L2300_837P.cs @@ -36,7 +36,7 @@ public interface L2300_837P : Segment AssumedRelinquishedCareDates { get; } - Segment PropertyAndCasaultyDateOfFirstContact { get; } + Segment PropertyAndCasualtyDateOfFirstContact { get; } Segment RepricerReceivedDate { get; } @@ -102,7 +102,7 @@ public interface L2300_837P : Layout RenderingProvider { get; } - Layout SerivceFacilityLocation { get; } + Layout ServiceFacilityLocation { get; } Layout SupervisingProvider { get; } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/L2310A_837P.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/L2310A_837P.cs index 1aafdc6d2..a016f0b75 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/L2310A_837P.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/L2310A_837P.cs @@ -6,7 +6,7 @@ public interface L2310A_837P : X12Layout { - Segment ReferringProvider { get; } + Segment Provider { get; } SegmentList SecondaryIdentification { get; } } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/L2320_837P.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/L2320_837P.cs index 62e423a8e..f501cba71 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/L2320_837P.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/L2320_837P.cs @@ -20,18 +20,18 @@ public interface L2320_837P : Segment OutpatientAdjudicationInfo { get; } - Layout Subscriber { get; } + Layout OtherSubscriberName { get; } - Layout Payer { get; } + Layout OtherPayerName { get; } - LayoutList PayerReferringProvider { get; } + LayoutList OtherPayerReferringProvider { get; } - Layout PayerRenderingProvider { get; } + Layout OtherPayerRenderingProvider { get; } - Layout PayerServiceFacilityLocation { get; } + Layout OtherPayerServiceFacilityLocation { get; } - Layout PayerSupervisingProvider { get; } + Layout OtherPayerSupervisingProvider { get; } - Layout PayerBillingProvider { get; } + Layout OtherPayerBillingProvider { get; } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/L2330C_837P.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/L2330C_837P.cs index 1096e30b6..755e65914 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/L2330C_837P.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/L2330C_837P.cs @@ -6,7 +6,7 @@ public interface L2330C_837P : X12Layout { - Segment ReferringProvider { get; } + Segment Provider { get; } SegmentList SecondaryIdentification { get; } } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/L2330D_837P.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/L2330D_837P.cs index abd4df455..2f3fa08cf 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/L2330D_837P.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/L2330D_837P.cs @@ -6,7 +6,7 @@ public interface L2330D_837P : X12Layout { - Segment RenderingProvider { get; } + Segment Provider { get; } SegmentList SecondaryIdentification { get; } } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/L2330F_837P.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/L2330F_837P.cs index 696563da7..2698f601c 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/L2330F_837P.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/L2330F_837P.cs @@ -6,7 +6,7 @@ public interface L2330F_837P : X12Layout { - Segment SupervisingProvider { get; } + Segment Provider { get; } SegmentList SecondaryIdentification { get; } } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/L2330G_837P.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/L2330G_837P.cs index 8a1a091e3..610d36552 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/L2330G_837P.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/L2330G_837P.cs @@ -6,7 +6,7 @@ public interface L2330G_837P : X12Layout { - Segment BillingProvider { get; } + Segment Provider { get; } SegmentList SecondaryIdentification { get; } } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/L2400_837P.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/L2400_837P.cs index 9e2f5b02c..6b63957f0 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/L2400_837P.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/L2400_837P.cs @@ -18,9 +18,9 @@ public interface L2400_837P : SegmentList AmbulanceTransportInformation { get; } - Segment DurableMedicalEqumentCertification { get; } + Segment DurableMedicalEquipmentCertification { get; } - Segment AmbulanceCertification { get; } + SegmentList AmbulanceCertification { get; } Segment HospiceEmployeeIndicator { get; } @@ -62,7 +62,7 @@ public interface L2400_837P : Segment LineItemControlNumber { get; } - Segment MammographyCerficationNumber { get; } + Segment MammographyCertificationNumber { get; } Segment CLIANumber { get; } @@ -92,7 +92,7 @@ public interface L2400_837P : Layout PurchasedServiceProvider { get; } - Layout SerivceFacilityLocation { get; } + Layout ServiceFacilityLocation { get; } Layout SupervisingProvider { get; } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/L2420D_837P.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/L2420D_837P.cs index b953dac4b..29ad4692f 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/L2420D_837P.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/L2420D_837P.cs @@ -6,7 +6,7 @@ public interface L2420D_837P : X12Layout { - Segment SupervisingProvider { get; } + Segment Provider { get; } SegmentList SecondaryIdentification { get; } } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/L2420E_837P.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/L2420E_837P.cs index 36af3ca51..14fafd3ce 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/L2420E_837P.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/L2420E_837P.cs @@ -6,7 +6,7 @@ public interface L2420E_837P : X12Layout { - Segment OrderingProvider { get; } + Segment Provider { get; } Segment Address { get; } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/L2420F_837P.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/L2420F_837P.cs index 260c5d29c..644c3f2a7 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/L2420F_837P.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/L2420F_837P.cs @@ -6,7 +6,7 @@ public interface L2420F_837P : X12Layout { - Segment Name { get; } + Segment Provider { get; } SegmentList SecondaryIdentification { get; } } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/T277Map.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/CAT277Map.cs similarity index 86% rename from src/Machete.X12Schema/Generated/V5010/Layouts/Maps/T277Map.cs rename to src/Machete.X12Schema/Generated/V5010/Layouts/Maps/CAT277Map.cs index 149339a94..022daacd5 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/T277Map.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/CAT277Map.cs @@ -4,17 +4,17 @@ namespace Machete.X12Schema.V5010.Layouts.Maps using X12.Configuration; - public class T277Map : + public class CAT277Map : X12LayoutMap { - public T277Map() + public CAT277Map() { Id = "277"; Name = "Healthcare Claim Acknowledgement"; Segment(x => x.FunctionalGroupHeader, 0); Segment(x => x.TransactionSetHeader, 1, x => x.IsRequired()); - Segment(x => x.BeginningOfHeirarchicalTransaction, 2, x => x.IsRequired()); + Segment(x => x.BeginningOfHierarchicalTransaction, 2, x => x.IsRequired()); Layout(x => x.InformationSourceDetail, 3); Layout(x => x.InformationReceiverDetail, 4); Layout(x => x.BillingProviderOfServiceDetail, 5); diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/ISNT277Map.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/ISNT277Map.cs index ef82412dc..3d3635d83 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/ISNT277Map.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/ISNT277Map.cs @@ -14,7 +14,7 @@ public ISNT277Map() Segment(x => x.FunctionalGroupHeader, 0); Segment(x => x.TransactionSetHeader, 1, x => x.IsRequired()); - Segment(x => x.BeginningOfHeirarchicalTransaction, 2, x => x.IsRequired()); + Segment(x => x.BeginningOfHierarchicalTransaction, 2, x => x.IsRequired()); Layout(x => x.InformationSourceDetail, 3); Layout(x => x.InformationReceiverDetail, 4); Layout(x => x.ServiceProviderDetail, 5); diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L1000A_835Map.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L1000A_835Map.cs index aa4001f84..650228fd3 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L1000A_835Map.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L1000A_835Map.cs @@ -16,9 +16,12 @@ public L1000A_835Map() Segment(x => x.Address, 1, x => x.IsRequired()); Segment(x => x.GeographicInformation, 2, x => x.IsRequired()); Segment(x => x.AdditionalIdentification, 3); - Segment(x => x.BusinessContactInformation, 4, x => x.Condition = parser => parser.Where(p => p.ContactFunctionCode.IsEqualTo("CX"))); - Segment(x => x.TechnicalContactInformation, 5, x => x.IsRequired().Condition = parser => parser.Where(p => p.ContactFunctionCode.IsEqualTo("BL"))); - Segment(x => x.PayerWebsite, 6); + Segment(x => x.BusinessContactInformation, 4, + x => x.Condition = parser => parser.Where(p => p.ContactFunctionCode.IsEqualTo("CX"))); + Segment(x => x.TechnicalContactInformation, 5, + x => x.IsRequired().Condition = parser => parser.Where(p => p.ContactFunctionCode.IsEqualTo("BL"))); + Segment(x => x.PayerWebsite, 6, + x => x.Condition = parser => parser.Where(p => p.ContactFunctionCode.IsEqualTo("IC"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000A_277ACKMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000A_277ACKMap.cs index fa99d0926..41a323223 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000A_277ACKMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000A_277ACKMap.cs @@ -12,7 +12,8 @@ public L2000A_277ACKMap() Id = "277ACK"; Name = "Information Source Detail"; - Segment(x => x.InformationSourceLevel, 0, x => x.IsRequired()); + Segment(x => x.InformationSourceLevel, 0, + x => x.IsRequired().Condition = parser => parser.Where(p => p.LevelCode.IsEqualTo("20"))); Layout(x => x.InformationSourceName, 1); Layout(x => x.TransmissionReceiptControlIdentifier, 2); } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000A_277Map.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000A_277Map.cs index dddfab081..f2129c52f 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000A_277Map.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000A_277Map.cs @@ -12,7 +12,8 @@ public L2000A_277Map() Id = "2000A"; Name = "Information Source Name"; - Segment(x => x.InformationSourceLevel, 0, x => x.IsRequired()); + Segment(x => x.InformationSourceLevel, 0, + x => x.IsRequired().Condition = parser => parser.Where(p => p.LevelCode.IsEqualTo("20"))); Layout(x => x.PayerName, 1); } } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000A_837DMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000A_837DMap.cs index f2bf52668..e87ee8efc 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000A_837DMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000A_837DMap.cs @@ -10,12 +10,12 @@ public class L2000A_837DMap : public L2000A_837DMap() { Id = "2000A"; - Name = "Billing Provider Heirarchical Level"; + Name = "Billing Provider Hierarchical Level"; - Segment(x => x.BillingProviderHeirarchicalLevel, 0, x => x.IsRequired()); + Segment(x => x.BillingProviderHierarchicalLevel, 0, x => x.IsRequired()); Segment(x => x.BillingProviderSpecialtyInformation, 1); Segment(x => x.ForeignCurrencyInformation, 2); - Layout(x => x.BillingProvider, 3); + Layout(x => x.BillingProviderName, 3); Layout(x => x.PayToAddress, 4); Layout(x => x.PayToPlan, 5); } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000A_837PMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000A_837PMap.cs index 94d563946..b5be9772a 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000A_837PMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000A_837PMap.cs @@ -10,14 +10,12 @@ public class L2000A_837PMap : public L2000A_837PMap() { Id = "2000A"; - Name = "Subscriber Heirarchical Level"; + Name = "Subscriber Hierarchical Level"; - Segment(x => x.BillingProviderHeirarchicalLevel, 0, x => x.IsRequired()); + Segment(x => x.BillingProviderHierarchicalLevel, 0, x => x.IsRequired()); Segment(x => x.BillingProviderSpecialtyInformation, 1); Segment(x => x.ForeignCurrencyInformation, 2); Layout(x => x.BillingProviderName, 3); - Layout(x => x.PayToAddress, 4); - Layout(x => x.PayToPlan, 5); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000B_277ACKMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000B_277ACKMap.cs index a2183d4f6..cd307262c 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000B_277ACKMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000B_277ACKMap.cs @@ -12,7 +12,8 @@ public L2000B_277ACKMap() Id = "2000B"; Name = "Information Receiver Detail"; - Segment(x => x.InformationSourceLevel, 0, x => x.IsRequired()); + Segment(x => x.InformationSourceLevel, 0, + x => x.IsRequired().Condition = parser => parser.Where(p => p.LevelCode.IsEqualTo("21"))); Layout(x => x.InformationSourceName, 1); Layout(x => x.InformationReceiverApplicationTraceIdentifier, 2); } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000B_277Map.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000B_277Map.cs index bb4908d27..9419553ad 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000B_277Map.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000B_277Map.cs @@ -12,7 +12,8 @@ public L2000B_277Map() Id = "2000B"; Name = "Information Receiver Detail"; - Segment(x => x.InformationReceiverLevel, 0, x => x.IsRequired()); + Segment(x => x.InformationReceiverLevel, 0, + x => x.IsRequired().Condition = parser => parser.Where(p => p.LevelCode.IsEqualTo("21"))); Layout(x => x.InformationReceiverName, 1); } } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000B_837PMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000B_837PMap.cs index 154a4de25..34ee7251e 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000B_837PMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000B_837PMap.cs @@ -12,11 +12,11 @@ public L2000B_837PMap() Id = "2000B"; Name = "Subscriber Heirarchical Level"; - Segment(x => x.SubscriberHeirarchicalLevel, 0, x => x.IsRequired()); - Segment(x => x.SubscriberInformtion, 1, x => x.IsRequired()); + Segment(x => x.SubscriberHierarchicalLevel, 0, x => x.IsRequired()); + Segment(x => x.SubscriberInformation, 1, x => x.IsRequired()); Segment(x => x.PatientInformation, 2); - Layout(x => x.Subscriber, 3); - Layout(x => x.Payer, 4); + Layout(x => x.SubscriberName, 3); + Layout(x => x.PayerName, 4); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000C_277ACKMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000C_277ACKMap.cs index 20484da6c..afee529de 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000C_277ACKMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000C_277ACKMap.cs @@ -12,7 +12,8 @@ public L2000C_277ACKMap() Id = "2000C"; Name = "Billing Provider of Service Detail"; - Segment(x => x.BillingPRoviderOfServiceLevel, 0); + Segment(x => x.BillingProviderOfServiceLevel, 0, + x => x.Condition = parser => parser.Where(p => p.LevelCode.IsEqualTo("19"))); Layout(x => x.BillingProviderName, 1); Layout(x => x.ProviderOfServiceInformationTraceIdentifier, 2); } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000C_277Map.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000C_277Map.cs index 48b0460ee..786913081 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000C_277Map.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000C_277Map.cs @@ -12,7 +12,8 @@ public L2000C_277Map() Id = "2000C"; Name = "Service Provider Detail"; - Segment(x => x.ServiceProviderLevel, 0, x => x.IsRequired()); + Segment(x => x.ServiceProviderLevel, 0, + x => x.IsRequired().Condition = parser => parser.Where(p => p.LevelCode.IsEqualTo("19"))); Layout(x => x.ServiceProviderName, 1); } } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000C_837PMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000C_837PMap.cs index f565fee52..3a5f5d83d 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000C_837PMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000C_837PMap.cs @@ -12,9 +12,9 @@ public L2000C_837PMap() Id = "2000C"; Name = "Patient Heirarchical Level"; - Segment(x => x.PatientHeirarchicalLevel, 0); + Segment(x => x.PatientHierarchicalLevel, 0); Segment(x => x.PatientInformation, 1, x => x.IsRequired()); - Layout(x => x.Patient, 2); + Layout(x => x.PatientName, 2); Layout(x => x.ClaimInformation, 3); } } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000D_277ACKMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000D_277ACKMap.cs index c62b5ca3b..822b67eb7 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000D_277ACKMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000D_277ACKMap.cs @@ -12,9 +12,10 @@ public L2000D_277ACKMap() Id = "2000D"; Name = "Patient Level"; - Segment(x => x.PatientLevel, 0); + Segment(x => x.PatientLevel, 0, + x => x.Condition = parser => parser.Where(p => p.LevelCode.IsEqualTo("PT"))); Layout(x => x.PatientName, 1); - Layout(x => x.ProviderOfServiceInformationTraceIdentifier, 2); + Layout(x => x.ClaimStatusTrackingNumber, 2); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000D_277Map.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000D_277Map.cs index 9f564f4c6..349a721a4 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000D_277Map.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2000D_277Map.cs @@ -12,7 +12,8 @@ public L2000D_277Map() Id = "2000D"; Name = "Patient Level"; - Segment(x => x.ServiceProviderLevel, 0, x => x.IsRequired()); + Segment(x => x.ServiceProviderLevel, 0, + x => x.IsRequired().Condition = parser => parser.Where(p => p.LevelCode.IsEqualTo("PT"))); Layout(x => x.ServiceProviderName, 1); Layout(x => x.PayerClaimControlNumber, 2); } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010AA_837DMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010AA_837DMap.cs index 92bc143f2..efc160567 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010AA_837DMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010AA_837DMap.cs @@ -15,8 +15,12 @@ public L2010AA_837DMap() Segment(x => x.BillingProvider, 0, x => x.IsRequired()); Segment(x => x.Address, 1, x => x.IsRequired()); Segment(x => x.GeographicInformation, 2, x => x.IsRequired()); - Segment(x => x.TaxIdNumber, 3, x => x.IsRequired()); - Segment(x => x.UPINOrLicenseInformation, 4); + Segment(x => x.TaxIdNumber, 3, + x => x.IsRequired().Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("EI") || + p.ReferenceIdentificationQualifier.IsEqualTo("SY"))); + Segment(x => x.UPINOrLicenseInformation, 4, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("OB") || + p.ReferenceIdentificationQualifier.IsEqualTo("1G"))); Segment(x => x.ContactInformation, 5); } } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010AA_837PMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010AA_837PMap.cs index 5e2d34a29..54b0af64b 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010AA_837PMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010AA_837PMap.cs @@ -15,8 +15,12 @@ public L2010AA_837PMap() Segment(x => x.BillingProvider, 0, x => x.IsRequired()); Segment(x => x.Address, 1, x => x.IsRequired()); Segment(x => x.GeographicInformation, 2, x => x.IsRequired()); - Segment(x => x.TaxIdNumber, 3, x => x.IsRequired()); - Segment(x => x.LicenseInformation, 4); + Segment(x => x.TaxIdNumber, 3, + x => x.IsRequired().Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("EI") || + p.ReferenceIdentificationQualifier.IsEqualTo("SY"))); + Segment(x => x.LicenseInformation, 4, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("O8") || + p.ReferenceIdentificationQualifier.IsEqualTo("1G"))); Segment(x => x.ContactInformation, 5); } } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010AC_837DMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010AC_837DMap.cs index aa79659b2..783c4032c 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010AC_837DMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010AC_837DMap.cs @@ -15,8 +15,12 @@ public L2010AC_837DMap() Segment(x => x.Plan, 0); Segment(x => x.Address, 1, x => x.IsRequired()); Segment(x => x.GeographicInformation, 2, x => x.IsRequired()); - Segment(x => x.SecondaryIdentification, 3); - Segment(x => x.TaxIdNumber, 4, x => x.IsRequired()); + Segment(x => x.SecondaryIdentification, 3, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("2U") || + p.ReferenceIdentificationQualifier.IsEqualTo("FY") || + p.ReferenceIdentificationQualifier.IsEqualTo("NF"))); + Segment(x => x.TaxIdNumber, 4, + x => x.IsRequired().Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("EI"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010AC_837IMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010AC_837IMap.cs index e0cce54d1..a7f22ffea 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010AC_837IMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010AC_837IMap.cs @@ -15,8 +15,12 @@ public L2010AC_837IMap() Segment(x => x.Plan, 0); Segment(x => x.Address, 1, x => x.IsRequired()); Segment(x => x.GeographicInformation, 2, x => x.IsRequired()); - Segment(x => x.SecondaryIdentification, 3); - Segment(x => x.TaxIdNumber, 4, x => x.IsRequired()); + Segment(x => x.SecondaryIdentification, 3, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("2U") || + p.ReferenceIdentificationQualifier.IsEqualTo("FY") || + p.ReferenceIdentificationQualifier.IsEqualTo("NF"))); + Segment(x => x.TaxIdNumber, 4, + x => x.IsRequired().Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("EI"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010AC_837PMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010AC_837PMap.cs index 5d3500b6d..fb793002f 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010AC_837PMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010AC_837PMap.cs @@ -15,8 +15,12 @@ public L2010AC_837PMap() Segment(x => x.Plan, 0); Segment(x => x.Address, 1, x => x.IsRequired()); Segment(x => x.GeographicInformation, 2, x => x.IsRequired()); - Segment(x => x.SecondaryIdentification, 3); - Segment(x => x.TaxIdNumber, 4, x => x.IsRequired()); + Segment(x => x.SecondaryIdentification, 3, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("2U") || + p.ReferenceIdentificationQualifier.IsEqualTo("FY") || + p.ReferenceIdentificationQualifier.IsEqualTo("NF"))); + Segment(x => x.TaxIdNumber, 4, + x => x.IsRequired().Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("EIB"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010BA_837DMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010BA_837DMap.cs index 2d9d2edbe..20d0116a2 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010BA_837DMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010BA_837DMap.cs @@ -16,8 +16,13 @@ public L2010BA_837DMap() Segment(x => x.Address, 1); Segment(x => x.GeographicInformation, 2); Segment(x => x.DemographicInformation, 3); - Segment(x => x.SecondaryIdentification, 4); - Segment(x => x.PropertyAndCasualtyClaimNumber, 5); + Segment(x => x.SecondaryIdentification, 4, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("2U") || + p.ReferenceIdentificationQualifier.IsEqualTo("EI") || + p.ReferenceIdentificationQualifier.IsEqualTo("FY") || + p.ReferenceIdentificationQualifier.IsEqualTo("NF"))); + Segment(x => x.PropertyAndCasualtyClaimNumber, 5, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("Y4"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010BA_837IMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010BA_837IMap.cs index 8999e505b..8743ae619 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010BA_837IMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010BA_837IMap.cs @@ -16,8 +16,10 @@ public L2010BA_837IMap() Segment(x => x.Address, 1); Segment(x => x.GeographicInformation, 2); Segment(x => x.DemographicInformation, 3); - Segment(x => x.SecondaryIdentification, 4); - Segment(x => x.PropertyAndCasualtyClaimNumber, 5); + Segment(x => x.SecondaryIdentification, 4, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("SY"))); + Segment(x => x.PropertyAndCasualtyClaimNumber, 5, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("Y4"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010BA_837PMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010BA_837PMap.cs index 82c45002f..7441ec688 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010BA_837PMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010BA_837PMap.cs @@ -16,8 +16,10 @@ public L2010BA_837PMap() Segment(x => x.Address, 1); Segment(x => x.GeographicInformation, 2); Segment(x => x.DemographicInformation, 3); - Segment(x => x.SecondaryIdentification, 4); - Segment(x => x.PropertyAndCasualtyClaimNumber, 5); + Segment(x => x.SecondaryIdentification, 4, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("SY"))); + Segment(x => x.PropertyAndCasualtyClaimNumber, 5, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("Y4"))); Segment(x => x.PropertyAndCasualtyContactInformation, 6); } } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010BB_837DMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010BB_837DMap.cs index 95866399e..b519659d4 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010BB_837DMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010BB_837DMap.cs @@ -15,8 +15,14 @@ public L2010BB_837DMap() Segment(x => x.Payer, 0, x => x.IsRequired()); Segment(x => x.Address, 1); Segment(x => x.GeographicInformation, 2); - Segment(x => x.SecondaryIdentification, 3); - Segment(x => x.BillingProviderSecondaryIdentification, 4); + Segment(x => x.SecondaryIdentification, 3, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("2U") || + p.ReferenceIdentificationQualifier.IsEqualTo("EI") || + p.ReferenceIdentificationQualifier.IsEqualTo("FY") || + p.ReferenceIdentificationQualifier.IsEqualTo("NF"))); + Segment(x => x.BillingProviderSecondaryIdentification, 4, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("G2") || + p.ReferenceIdentificationQualifier.IsEqualTo("LU"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010BB_837IMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010BB_837IMap.cs index 8673643bc..adbbe6d02 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010BB_837IMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010BB_837IMap.cs @@ -15,8 +15,14 @@ public L2010BB_837IMap() Segment(x => x.Payer, 0, x => x.IsRequired()); Segment(x => x.Address, 1); Segment(x => x.GeographicInformation, 2); - Segment(x => x.SecondaryIdentification, 3); - Segment(x => x.BillingProviderSecondaryIdentification, 4); + Segment(x => x.SecondaryIdentification, 3, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("2U") || + p.ReferenceIdentificationQualifier.IsEqualTo("EI") || + p.ReferenceIdentificationQualifier.IsEqualTo("FY") || + p.ReferenceIdentificationQualifier.IsEqualTo("NF"))); + Segment(x => x.BillingProviderSecondaryIdentification, 4, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("G2") || + p.ReferenceIdentificationQualifier.IsEqualTo("LU"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010BB_837PMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010BB_837PMap.cs index eb90e7754..f224be4a0 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010BB_837PMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010BB_837PMap.cs @@ -15,8 +15,14 @@ public L2010BB_837PMap() Segment(x => x.Payer, 0, x => x.IsRequired()); Segment(x => x.Address, 1); Segment(x => x.GeographicInformation, 2); - Segment(x => x.SecondaryIdentification, 3); - Segment(x => x.BillingProviderSecondaryIdentification, 4); + Segment(x => x.SecondaryIdentification, 3, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("2U") || + p.ReferenceIdentificationQualifier.IsEqualTo("EI") || + p.ReferenceIdentificationQualifier.IsEqualTo("FY") || + p.ReferenceIdentificationQualifier.IsEqualTo("NF"))); + Segment(x => x.BillingProviderSecondaryIdentification, 4, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("G2") || + p.ReferenceIdentificationQualifier.IsEqualTo("LU"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010CA_837DMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010CA_837DMap.cs index f85a84392..5073ad6f3 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010CA_837DMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010CA_837DMap.cs @@ -16,8 +16,11 @@ public L2010CA_837DMap() Segment(x => x.Address, 1, x => x.IsRequired()); Segment(x => x.GeographicInformation, 2, x => x.IsRequired()); Segment(x => x.DemographicInformation, 3, x => x.IsRequired()); - Segment(x => x.PropertyAndCasualtyClaimNumber, 4); - Segment(x => x.PropertyAndCasualtyPatientIdentifier, 5); + Segment(x => x.PropertyAndCasualtyClaimNumber, 4, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("Y4"))); + Segment(x => x.PropertyAndCasualtyPatientIdentifier, 5, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("1W") || + p.ReferenceIdentificationQualifier.IsEqualTo("SY"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010CA_837IMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010CA_837IMap.cs index 03b7b9708..a7bef47da 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010CA_837IMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010CA_837IMap.cs @@ -16,8 +16,11 @@ public L2010CA_837IMap() Segment(x => x.Address, 1, x => x.IsRequired()); Segment(x => x.GeographicInformation, 2, x => x.IsRequired()); Segment(x => x.DemographicInformation, 3, x => x.IsRequired()); - Segment(x => x.PropertyAndCasualtyClaimNumber, 4); - Segment(x => x.PropertyAndCasualtyPatientIdentifier, 5); + Segment(x => x.PropertyAndCasualtyClaimNumber, 4, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("Y4"))); + Segment(x => x.PropertyAndCasualtyPatientIdentifier, 5, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("1W") || + p.ReferenceIdentificationQualifier.IsEqualTo("SY"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010CA_837PMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010CA_837PMap.cs index cb6fc43ea..56af19932 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010CA_837PMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2010CA_837PMap.cs @@ -16,8 +16,11 @@ public L2010CA_837PMap() Segment(x => x.Address, 1, x => x.IsRequired()); Segment(x => x.GeographicInformation, 2, x => x.IsRequired()); Segment(x => x.DemographicInformation, 3, x => x.IsRequired()); - Segment(x => x.PropertyAndCasualtyClaimNumber, 4); - Segment(x => x.PropertyAndCasualtyPatientIdentifier, 5); + Segment(x => x.PropertyAndCasualtyClaimNumber, 4, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("Y4"))); + Segment(x => x.PropertyAndCasualtyPatientIdentifier, 5, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("1W") || + p.ReferenceIdentificationQualifier.IsEqualTo("SY"))); Segment(x => x.PropertyAndCasualtyPatientContactInformation, 6); } } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2100A_277Map.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2100A_277Map.cs index e094196a9..b1ba697f4 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2100A_277Map.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2100A_277Map.cs @@ -13,7 +13,6 @@ public L2100A_277Map() Name = "Payer Name"; Segment(x => x.PayerName, 0, x => x.IsRequired()); - Segment(x => x.ContactInformation, 1); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2110C_270Map.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2110C_270Map.cs index 0f9262573..db5091702 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2110C_270Map.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2110C_270Map.cs @@ -13,8 +13,8 @@ public L2110C_270Map() Name = "Subscriber Eligibility or Benefit Inquiry"; Segment(x => x.EligibilityOrBenefitInquiry, 0); - Segment(x => x.SpendDownAmount, 1); - Segment(x => x.SpendDownTotalBilledAmount, 2); + Segment(x => x.SpendDownAmount, 1, x => x.Condition = parser => parser.Where(p => p.AmountQualifierCode.IsEqualTo("R"))); + Segment(x => x.SpendDownTotalBilledAmount, 2, x => x.Condition = parser => parser.Where(p => p.AmountQualifierCode.IsEqualTo("PB"))); Segment(x => x.AdditionalInquiryInformation, 3); Segment(x => x.AdditionalInformation, 4); Segment(x => x.EligibilityOrBenefitDate, 5); diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2200A_277ACKMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2200A_277ACKMap.cs index 0ed355869..7033e809b 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2200A_277ACKMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2200A_277ACKMap.cs @@ -13,8 +13,10 @@ public L2200A_277ACKMap() Name = "Transmission Receipt Control Identifier"; Segment(x => x.TransmissionReceiptControlIdentifier, 0, x => x.IsRequired()); - Segment(x => x.InformationSourceReceiptDate, 1, x => x.IsRequired()); - Segment(x => x.InformationSourceProcessDate, 2, x => x.IsRequired()); + Segment(x => x.InformationSourceReceiptDate, 1, + x => x.IsRequired().Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("050"))); + Segment(x => x.InformationSourceProcessDate, 2, + x => x.IsRequired().Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("009"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2200B_277ACKMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2200B_277ACKMap.cs index 44136ca30..1e194df7c 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2200B_277ACKMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2200B_277ACKMap.cs @@ -14,10 +14,10 @@ public L2200B_277ACKMap() Segment(x => x.ApplicationTraceIdentifier, 0, x => x.IsRequired()); Segment(x => x.StatusInformation, 1, x => x.IsRequired()); - Segment(x => x.TotalAcceptedQuantity, 2); - Segment(x => x.TotalRejectedQuantity, 3); - Segment(x => x.TotalAcceptedAmount, 4); - Segment(x => x.TotalRejectedAmount, 5); + Segment(x => x.TotalAcceptedQuantity, 2, x => x.Condition = parser => parser.Where(p => p.QuantityQualifier.IsEqualTo("90"))); + Segment(x => x.TotalRejectedQuantity, 3, x => x.Condition = parser => parser.Where(p => p.QuantityQualifier.IsEqualTo("AA"))); + Segment(x => x.TotalAcceptedAmount, 4, x => x.Condition = parser => parser.Where(p => p.AmountQualifierCode.IsEqualTo("YU"))); + Segment(x => x.TotalRejectedAmount, 5, x => x.Condition = parser => parser.Where(p => p.AmountQualifierCode.IsEqualTo("YY"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2200C_277ACKMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2200C_277ACKMap.cs index 6beeaad9a..14fd65b36 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2200C_277ACKMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2200C_277ACKMap.cs @@ -15,10 +15,10 @@ public L2200C_277ACKMap() Segment(x => x.ProviderOfServiceInformationTraceIdentifier, 0); Segment(x => x.StatusInformation, 1); Segment(x => x.SecondaryIdentifier, 2); - Segment(x => x.TotalAcceptedQuantity, 3); - Segment(x => x.TotalRejectedQuantity, 4); - Segment(x => x.TotalAcceptedAmount, 5); - Segment(x => x.TotalRejectedAmount, 6); + Segment(x => x.TotalAcceptedQuantity, 3, x => x.Condition = parser => parser.Where(p => p.QuantityQualifier.IsEqualTo("QA"))); + Segment(x => x.TotalRejectedQuantity, 4, x => x.Condition = parser => parser.Where(p => p.QuantityQualifier.IsEqualTo("QC"))); + Segment(x => x.TotalAcceptedAmount, 5, x => x.Condition = parser => parser.Where(p => p.AmountQualifierCode.IsEqualTo("YU"))); + Segment(x => x.TotalRejectedAmount, 6, x => x.Condition = parser => parser.Where(p => p.AmountQualifierCode.IsEqualTo("YY"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2200D_277ACKMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2200D_277ACKMap.cs index 4a2bb3419..daa23a557 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2200D_277ACKMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2200D_277ACKMap.cs @@ -14,9 +14,12 @@ public L2200D_277ACKMap() Segment(x => x.TrackingNumber, 0, x => x.IsRequired()); Segment(x => x.StatusInformation, 1, x => x.IsRequired()); - Segment(x => x.PayerClaimControlNumber, 2); - Segment(x => x.ClaimIdentifierNumberForClearinghouseAndOtherTransmissionIternmediaries, 3); - Segment(x => x.InstitutionalBillTypeIdentification, 4); + Segment(x => x.PayerClaimControlNumber, 2, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("1K"))); + Segment(x => x.ClaimIdNumberForClearinghouseAndOtherTransmissionIntermediaries, 3, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("D9"))); + Segment(x => x.InstitutionalBillTypeIdentification, 4, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("BLT"))); Segment(x => x.ClaimLevelServiceDate, 5); Layout(x => x.ServiceLineInformation, 6, x => x.IsRequired()); } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2200D_277Map.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2200D_277Map.cs index 88336e307..ae78a5e5d 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2200D_277Map.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2200D_277Map.cs @@ -14,14 +14,20 @@ public L2200D_277Map() Segment(x => x.PayerClaimControlNumber, 0, x => x.IsRequired()); Segment(x => x.ClaimLevelStatusInformation, 1); - Segment(x => x.PatientControlNumber, 2, x => x.IsRequired()); - Segment(x => x.InstitutionalTypeOfBill, 3); - Segment(x => x.MedicalRecordIdentificationNumber, 4); - Segment(x => x.ClaimIdentificationNumberForClearinghousesAndOtherTransmissionIntermediaries, 5); - Segment(x => x.ClaimServiceDate, 6); - Segment(x => x.ResponseDueDate, 7); + Segment(x => x.PatientControlNumber, 2, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("EJ"))); + Segment(x => x.InstitutionalTypeOfBill, 3, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("BLT"))); + Segment(x => x.MedicalRecordIdentificationNumber, 4, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("EA"))); + Segment(x => x.ClaimIdentificationNumber, 5, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("D9"))); + Segment(x => x.ClaimServiceDate, 6, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("472"))); + Segment(x => x.ResponseDueDate, 7, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("106"))); Layout(x => x.ClaimSupplementalInformation, 8); - Layout(x => x.ServiceLineInformation, 9, x => x.IsRequired()); + Layout(x => x.ServiceLineInformation, 9); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2220D_277ACKMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2220D_277ACKMap.cs index 3b9a23cf3..818993c8b 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2220D_277ACKMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2220D_277ACKMap.cs @@ -14,9 +14,10 @@ public L2220D_277ACKMap() Segment(x => x.Information, 0); Segment(x => x.LevelStatusInformation, 1, x => x.IsRequired()); - Segment(x => x.ItemIdentification, 2, x => x.IsRequired()); - Segment(x => x.PharmacyPrescriptionNumber, 3); - Segment(x => x.InstitutionalBillTypeIdentification, 4); + Segment(x => x.ItemIdentification, 2, + x => x.IsRequired().Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("FJ"))); + Segment(x => x.PharmacyPrescriptionNumber, 3, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("XZ"))); Segment(x => x.Date, 5); } } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2220D_277Map.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2220D_277Map.cs index 38cf710c9..8034e9365 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2220D_277Map.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2220D_277Map.cs @@ -14,8 +14,11 @@ public L2220D_277Map() Segment(x => x.Information, 0); Segment(x => x.StatusInformation, 1, x => x.IsRequired()); - Segment(x => x.ItemIdentification, 2, x => x.IsRequired()); - Segment(x => x.Date, 3, x => x.IsRequired()); + Segment(x => x.ItemIdentification, 2, + x => x.IsRequired().Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("FJ"))); + Segment(x => x.PharmacyPrescriptionNumber, 3, + x => x.IsRequired().Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("XZ"))); + Segment(x => x.Date, 4, x => x.IsRequired()); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2300_837DMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2300_837DMap.cs index f9ceaeae9..eb75d9255 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2300_837DMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2300_837DMap.cs @@ -13,23 +13,35 @@ public L2300_837DMap() Name = "Claim Information"; Segment(x => x.ClaimInformation, 0, x => x.IsRequired()); - Segment(x => x.AccidentDate, 1); - Segment(x => x.AppliancePlacementDate, 2); - Segment(x => x.ServiceDate, 3); - Segment(x => x.RepricerReceivedDate, 4); + Segment(x => x.AccidentDate, 1, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("439"))); + Segment(x => x.AppliancePlacementDate, 2, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("452"))); + Segment(x => x.ServiceDate, 3, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("472"))); + Segment(x => x.RepricerReceivedDate, 4, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("050"))); Segment(x => x.OrthodonticTotalMonthsOfTretment, 5); Segment(x => x.ToothStatus, 6); Segment(x => x.ClaimSupplementalInformation, 7); Segment(x => x.ContractInformation, 8); Segment(x => x.PatientAmountPaid, 9); - Segment(x => x.PredeterminationIdentification, 10); - Segment(x => x.ServiceAuthorizationExceptionCode, 11); - Segment(x => x.PayerClaimControlNumber, 12); - Segment(x => x.ReferralNumber, 13); - Segment(x => x.PriorAuthorization, 14); - Segment(x => x.RepricedClaimNumber, 15); - Segment(x => x.AdjustedRepricedClaimNumber, 16); - Segment(x => x.ClaimIdentifierForTransmissionIntermediaries, 17); + Segment(x => x.PredeterminationIdentification, 10, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("G3"))); + Segment(x => x.ServiceAuthorizationExceptionCode, 11, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("4N"))); + Segment(x => x.PayerClaimControlNumber, 12, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("F8"))); + Segment(x => x.ReferralNumber, 13, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("9F"))); + Segment(x => x.PriorAuthorization, 14, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("G1"))); + Segment(x => x.RepricedClaimNumber, 15, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("9A"))); + Segment(x => x.AdjustedRepricedClaimNumber, 16, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("9C"))); + Segment(x => x.ClaimIdentifierForTransmissionIntermediaries, 17, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("D9"))); Segment(x => x.FileInformation, 18); Segment(x => x.ClaimNote, 19); Segment(x => x.HealthcareDiagnosisCode, 20); diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2300_837PMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2300_837PMap.cs index 57f969ce6..8bad22fe1 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2300_837PMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2300_837PMap.cs @@ -13,54 +13,99 @@ public L2300_837PMap() Name = "Claim Information"; Segment(x => x.ClaimInformation, 0, x => x.IsRequired()); - Segment(x => x.OnsetOfCurrentIllnessDate, 1); - Segment(x => x.InitialTreatmentDate, 2); - Segment(x => x.LastSeenDate, 3); - Segment(x => x.AcuteManifestationDate, 4); - Segment(x => x.AccidentDate, 5); - Segment(x => x.LastMensrualPeriod, 6); - Segment(x => x.LastXRayDate, 7); - Segment(x => x.HearingVisionPrescriptionDate, 8); - Segment(x => x.DisabilityDates, 9); - Segment(x => x.LastWorkedDate, 10); - Segment(x => x.AuthorizedReturnToWork, 11); - Segment(x => x.AdmissionDate, 12); - Segment(x => x.DischargeDate, 13); - Segment(x => x.AssumedRelinquishedCareDates, 14); - Segment(x => x.PropertyAndCasaultyDateOfFirstContact, 15); - Segment(x => x.RepricerReceivedDate, 16); + Segment(x => x.OnsetOfCurrentIllnessDate, 1, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("431"))); + Segment(x => x.InitialTreatmentDate, 2, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("454"))); + Segment(x => x.LastSeenDate, 3, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("304"))); + Segment(x => x.AcuteManifestationDate, 4, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("453"))); + Segment(x => x.AccidentDate, 5, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("439"))); + Segment(x => x.LastMensrualPeriod, 6, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("484"))); + Segment(x => x.LastXRayDate, 7, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("455"))); + Segment(x => x.HearingVisionPrescriptionDate, 8, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("471"))); + Segment(x => x.DisabilityDates, 9, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("314") || + p.DateTimeQualifier.IsEqualTo("360") || + p.DateTimeQualifier.IsEqualTo("361"))); + Segment(x => x.LastWorkedDate, 10, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("297"))); + Segment(x => x.AuthorizedReturnToWork, 11, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("296"))); + Segment(x => x.AdmissionDate, 12, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("435"))); + Segment(x => x.DischargeDate, 13, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("096"))); + Segment(x => x.AssumedRelinquishedCareDates, 14, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("090"))); + Segment(x => x.PropertyAndCasualtyDateOfFirstContact, 15, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("444"))); + Segment(x => x.RepricerReceivedDate, 16, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("050"))); Segment(x => x.ClaimSupplementalInfo, 17); Segment(x => x.ContractInfo, 18); Segment(x => x.PatientAmountPaid, 19); - Segment(x => x.ServiceAuthorizationExceptionCode, 20); - Segment(x => x.MandatoryMedicareCrossoverIndicator, 21); - Segment(x => x.MammographyCertificationNumber, 22); - Segment(x => x.ReferralNumber, 23); - Segment(x => x.PriorAuthorization, 24); - Segment(x => x.PayerClaimControlNumber, 25); - Segment(x => x.CLIANumber, 26); - Segment(x => x.RepricedClaimNumber, 27); - Segment(x => x.AdjustedRepricedClaimNumber, 28); - Segment(x => x.InvestigationalDeviceExemptionNumber, 29); - Segment(x => x.ClaimIdentifierForTransmissionIntermediaries, 30); - Segment(x => x.MedicalRecordNumber, 31); - Segment(x => x.DemonstrationProjectIdentifier, 32); - Segment(x => x.CarePlanOversight, 33); + Segment(x => x.ServiceAuthorizationExceptionCode, 20, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("4N"))); + Segment(x => x.MandatoryMedicareCrossoverIndicator, 21, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("F5"))); + Segment(x => x.MammographyCertificationNumber, 22, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("EW"))); + Segment(x => x.ReferralNumber, 23, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("9F"))); + Segment(x => x.PriorAuthorization, 24, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("G1"))); + Segment(x => x.PayerClaimControlNumber, 25, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("F8"))); + Segment(x => x.CLIANumber, 26, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("X4"))); + Segment(x => x.RepricedClaimNumber, 27, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("9A"))); + Segment(x => x.AdjustedRepricedClaimNumber, 28, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("9C"))); + Segment(x => x.InvestigationalDeviceExemptionNumber, 29, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("LX"))); + Segment(x => x.ClaimIdentifierForTransmissionIntermediaries, 30, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("D9"))); + Segment(x => x.MedicalRecordNumber, 31, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("EA"))); + Segment(x => x.DemonstrationProjectIdentifier, 32, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("P4"))); + Segment(x => x.CarePlanOversight, 33, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("1J"))); Segment(x => x.FileInfo, 34); Segment(x => x.ClaimNote, 35); Segment(x => x.AmbulanceTransportInfo, 36); Segment(x => x.SpinalManipulationServiceInfo, 37); - Segment(x => x.AmbulanceCertification, 38); - Segment(x => x.PatientConditionInfo, 39); - Segment(x => x.HomeboundIndicator, 40); - Segment(x => x.EPSDTReferral, 41); - Segment(x => x.HealthCareDiagnosisCode, 42); - Segment(x => x.AnesthesiaRelatedProcedure, 43); - Segment(x => x.ConditionInfo, 44); + Segment(x => x.AmbulanceCertification, 38, + x => x.Condition = parser => parser.Where(p => p.CodeCategory.IsEqualTo("07"))); + Segment(x => x.PatientConditionInfo, 39, + x => x.Condition = parser => parser.Where(p => p.CodeCategory.IsEqualTo("E1") || + p.CodeCategory.IsEqualTo("E2") || + p.CodeCategory.IsEqualTo("E3"))); + Segment(x => x.HomeboundIndicator, 40, + x => x.Condition = parser => parser.Where(p => p.CodeCategory.IsEqualTo("75"))); + Segment(x => x.EPSDTReferral, 41, + x => x.Condition = parser => parser.Where(p => p.CodeCategory.IsEqualTo("ZZ"))); + Segment(x => x.HealthCareDiagnosisCode, 42, + x => x.Condition = parser => parser.Where(p => + p.HealthCareCodeInformation1.Select(s => s.DiagnosisTypeCode).IsEqualTo("ABK") || + p.HealthCareCodeInformation1.Select(s => s.DiagnosisTypeCode).IsEqualTo("BK"))); + Segment(x => x.AnesthesiaRelatedProcedure, 43, + x => x.Condition = parser => parser.Where(p => + p.HealthCareCodeInformation1.Select(s => s.DiagnosisTypeCode).IsEqualTo("BP"))); + Segment(x => x.ConditionInfo, 44, + x => x.Condition = parser => parser.Where(p => + p.HealthCareCodeInformation1.Select(s => s.DiagnosisTypeCode).IsEqualTo("BG"))); Segment(x => x.ClaimPricingOrRepricingInfo, 45); Layout(x => x.ReferringProvider, 46); Layout(x => x.RenderingProvider, 47); - Layout(x => x.SerivceFacilityLocation, 48); + Layout(x => x.ServiceFacilityLocation, 48); Layout(x => x.SupervisingProvider, 49); Layout(x => x.AmbulancePickUpLocation, 50); Layout(x => x.AmbulanceDropOffLocation, 51); diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2310A_837IMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2310A_837IMap.cs index 5dd2662fa..f92a61b54 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2310A_837IMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2310A_837IMap.cs @@ -14,7 +14,11 @@ public L2310A_837IMap() Segment(x => x.AttendingProvider, 0); Segment(x => x.SpecialtyInformation, 1); - Segment(x => x.SecondaryIdentification, 2); + Segment(x => x.SecondaryIdentification, 2, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("OB") || + p.ReferenceIdentificationQualifier.IsEqualTo("1G") || + p.ReferenceIdentificationQualifier.IsEqualTo("G2") || + p.ReferenceIdentificationQualifier.IsEqualTo("LU"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2310A_837PMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2310A_837PMap.cs index 3c02d442f..e37a9bd48 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2310A_837PMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2310A_837PMap.cs @@ -12,8 +12,10 @@ public L2310A_837PMap() Id = "2310A"; Name = "Referring Provider Name"; - Segment(x => x.ReferringProvider, 0); - Segment(x => x.SecondaryIdentification, 1); + Segment(x => x.Provider, 0, + x => x.Condition = parser => parser.Where(p => p.EntityIdentifierCode.IsEqualTo("IL"))); + Segment(x => x.SecondaryIdentification, 1, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("SY"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2310B_837IMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2310B_837IMap.cs index 0bab242ce..220bdf8a3 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2310B_837IMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2310B_837IMap.cs @@ -13,7 +13,11 @@ public L2310B_837IMap() Name = "Operating Physician Name"; Segment(x => x.RenderingProvider, 0); - Segment(x => x.SecondaryIdentification, 1); + Segment(x => x.SecondaryIdentification, 1, + X => X.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("0B") || + p.ReferenceIdentificationQualifier.IsEqualTo("1G") || + p.ReferenceIdentificationQualifier.IsEqualTo("G2") || + p.ReferenceIdentificationQualifier.IsEqualTo("LU"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2310C_837IMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2310C_837IMap.cs index c4e8c0707..ccf9cb9c4 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2310C_837IMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2310C_837IMap.cs @@ -13,7 +13,11 @@ public L2310C_837IMap() Name = "Other Operating Physician Name"; Segment(x => x.OperatingPhysician, 0); - Segment(x => x.SecondaryIdentification, 1); + Segment(x => x.SecondaryIdentification, 1, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("0B") || + p.ReferenceIdentificationQualifier.IsEqualTo("1G") || + p.ReferenceIdentificationQualifier.IsEqualTo("G2") || + p.ReferenceIdentificationQualifier.IsEqualTo("LU"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2320_837DMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2320_837DMap.cs index 346788d73..37f253d26 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2320_837DMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2320_837DMap.cs @@ -14,9 +14,12 @@ public L2320_837DMap() Segment(x => x.SubscriberInformation, 0); Segment(x => x.ClaimLevelAdjustments, 1); - Segment(x => x.CoordinationOfBenefitsPayerPaidAmount, 2); - Segment(x => x.RemainingPatientLiability, 3); - Segment(x => x.CoordinationOfBenefitsTotalNonCoveredAmount, 4); + Segment(x => x.CoordinationOfBenefitsPayerPaidAmount, 2, + x => x.Condition = parser => parser.Where(p => p.AmountQualifierCode.IsEqualTo("D"))); + Segment(x => x.RemainingPatientLiability, 3, + x => x.Condition = parser => parser.Where(p => p.AmountQualifierCode.IsEqualTo("EAF"))); + Segment(x => x.CoordinationOfBenefitsTotalNonCoveredAmount, 4, + x => x.Condition = parser => parser.Where(p => p.AmountQualifierCode.IsEqualTo("A8"))); Segment(x => x.InsuranceCoverageInformation, 5, x => x.IsRequired()); Segment(x => x.OutpatientAdjudicationInformation, 6); Layout(x => x.Subscriber, 7); diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2320_837PMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2320_837PMap.cs index e728b1f19..666c1abbd 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2320_837PMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2320_837PMap.cs @@ -19,13 +19,13 @@ public L2320_837PMap() Segment(x => x.RemainingPatientLiability, 4); Segment(x => x.InsuranceCoverageInfo, 5, x => x.IsRequired()); Segment(x => x.OutpatientAdjudicationInfo, 6); - Layout(x => x.Subscriber, 7); - Layout(x => x.Payer, 8); - Layout(x => x.PayerReferringProvider, 9); - Layout(x => x.PayerRenderingProvider, 10); - Layout(x => x.PayerServiceFacilityLocation, 11); - Layout(x => x.PayerSupervisingProvider, 12); - Layout(x => x.PayerBillingProvider, 13); + Layout(x => x.OtherSubscriberName, 7); + Layout(x => x.OtherPayerName, 8); + Layout(x => x.OtherPayerReferringProvider, 9); + Layout(x => x.OtherPayerRenderingProvider, 10); + Layout(x => x.OtherPayerServiceFacilityLocation, 11); + Layout(x => x.OtherPayerSupervisingProvider, 12); + Layout(x => x.OtherPayerBillingProvider, 13); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330B_837DMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330B_837DMap.cs index 35f75037f..117d78f15 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330B_837DMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330B_837DMap.cs @@ -16,12 +16,21 @@ public L2330B_837DMap() Segment(x => x.Address, 1); Segment(x => x.GeographicInformation, 2); Segment(x => x.ClaimCheckOrRemittanceDate, 3); - Segment(x => x.SecondaryIdentification, 4); - Segment(x => x.PriorAuthorizationNumber, 5); - Segment(x => x.ReferralNumber, 6); - Segment(x => x.ClaimAdjustmentIndicator, 7); - Segment(x => x.PredeterminationIdentification, 8); - Segment(x => x.ClaimControlNumber, 9); + Segment(x => x.SecondaryIdentification, 4, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("2U") || + p.ReferenceIdentificationQualifier.IsEqualTo("EI") || + p.ReferenceIdentificationQualifier.IsEqualTo("FY") || + p.ReferenceIdentificationQualifier.IsEqualTo("NF"))); + Segment(x => x.PriorAuthorizationNumber, 5, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("G1"))); + Segment(x => x.ReferralNumber, 6, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("9F"))); + Segment(x => x.ClaimAdjustmentIndicator, 7, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("T4"))); + Segment(x => x.PredeterminationIdentification, 8, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("G3"))); + Segment(x => x.ClaimControlNumber, 9, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("F8"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330B_837PMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330B_837PMap.cs index f8c1b71fa..c2878948a 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330B_837PMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330B_837PMap.cs @@ -12,15 +12,24 @@ public L2330B_837PMap() Id = "2330B"; Name = "Other Payer Name"; - Segment(x => x.Payer, 0, x => x.IsRequired()); + Segment(x => x.Payer, 0, + x => x.IsRequired().Condition = parser => parser.Where(p => p.EntityIdentifierCode.IsEqualTo("PR"))); Segment(x => x.Address, 1); Segment(x => x.GeographicInfo, 2); Segment(x => x.ClaimCheckOrRemittanceDate, 3); - Segment(x => x.SecondaryIdentification, 4); - Segment(x => x.PriorAuthorizationNumber, 5); - Segment(x => x.ReferralNumber, 6); - Segment(x => x.ClaimAdjustmentIndicator, 7); - Segment(x => x.ClaimControlNumber, 8); + Segment(x => x.SecondaryIdentification, 4, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("2U") || + p.ReferenceIdentificationQualifier.IsEqualTo("EI") || + p.ReferenceIdentificationQualifier.IsEqualTo("FY") || + p.ReferenceIdentificationQualifier.IsEqualTo("NF"))); + Segment(x => x.PriorAuthorizationNumber, 5, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("G1"))); + Segment(x => x.ReferralNumber, 6, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("9F"))); + Segment(x => x.ClaimAdjustmentIndicator, 7, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("T4"))); + Segment(x => x.ClaimControlNumber, 8, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("F8"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330C_837DMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330C_837DMap.cs index 96430655b..ef9dce9a6 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330C_837DMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330C_837DMap.cs @@ -13,7 +13,10 @@ public L2330C_837DMap() Name = "Other Payer Referring Provider"; Segment(x => x.ReferringProvider, 0); - Segment(x => x.SecondaryIdentification, 1, x => x.IsRequired()); + Segment(x => x.SecondaryIdentification, 1, + x => x.IsRequired().Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("0B") || + p.ReferenceIdentificationQualifier.IsEqualTo("G2") || + p.ReferenceIdentificationQualifier.IsEqualTo("LU"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330C_837PMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330C_837PMap.cs index f6876643f..3d21e46de 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330C_837PMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330C_837PMap.cs @@ -11,9 +11,14 @@ public L2330C_837PMap() { Id = "2330C"; Name = "Other Payer Referring Provider"; - - Segment(x => x.ReferringProvider, 0); - Segment(x => x.SecondaryIdentification, 1, x => x.IsRequired()); + + Segment(x => x.Provider, 0, + x => x.Condition = parser => parser.Where(p => p.EntityIdentifierCode.IsEqualTo("DN") || + p.EntityIdentifierCode.IsEqualTo("P3"))); + Segment(x => x.SecondaryIdentification, 1, + x => x.IsRequired().Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("0B") || + p.ReferenceIdentificationQualifier.IsEqualTo("1G") || + p.ReferenceIdentificationQualifier.IsEqualTo("G2"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330D_837DMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330D_837DMap.cs index 198d6964b..44fe611f9 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330D_837DMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330D_837DMap.cs @@ -13,7 +13,11 @@ public L2330D_837DMap() Name = "Other Payer Rendering Provider"; Segment(x => x.RenderingProvider, 0); - Segment(x => x.SecondaryIdentification, 1, x => x.IsRequired()); + Segment(x => x.SecondaryIdentification, 1, + x => x.IsRequired().Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("0B") || + p.ReferenceIdentificationQualifier.IsEqualTo("1G") || + p.ReferenceIdentificationQualifier.IsEqualTo("G2") || + p.ReferenceIdentificationQualifier.IsEqualTo("LU"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330D_837IMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330D_837IMap.cs index 4508144e4..feb225281 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330D_837IMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330D_837IMap.cs @@ -13,7 +13,11 @@ public L2330D_837IMap() Name = "Other Payer Operating Physician"; Segment(x => x.OperatingPhysician, 0); - Segment(x => x.SecondaryIdentification, 1, x => x.IsRequired()); + Segment(x => x.SecondaryIdentification, 1, + x => x.IsRequired().Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("0B") || + p.ReferenceIdentificationQualifier.IsEqualTo("1G") || + p.ReferenceIdentificationQualifier.IsEqualTo("G2") || + p.ReferenceIdentificationQualifier.IsEqualTo("LU"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330D_837PMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330D_837PMap.cs index 219ca1301..91b868bf3 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330D_837PMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330D_837PMap.cs @@ -12,8 +12,14 @@ public L2330D_837PMap() Id = "2330D"; Name = "Other Payer Rendering Provider"; - Segment(x => x.RenderingProvider, 0); - Segment(x => x.SecondaryIdentification, 1, x => x.IsRequired()); + Segment(x => x.Provider, 0, + x => x.Condition = parser => parser.Where(p => p.EntityIdentifierCode.IsEqualTo("82"))); + Segment(x => x.SecondaryIdentification, 1, + x => x.IsRequired().Condition = parser => parser.Where(p => + p.ReferenceIdentificationQualifier.IsEqualTo("0B") || + p.ReferenceIdentificationQualifier.IsEqualTo("1G") || + p.ReferenceIdentificationQualifier.IsEqualTo("G2") || + p.ReferenceIdentificationQualifier.IsEqualTo("LU"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330E_837DMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330E_837DMap.cs index 61b7c8065..a32b5e872 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330E_837DMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330E_837DMap.cs @@ -13,7 +13,11 @@ public L2330E_837DMap() Name = "Other Payer Supervising Provider"; Segment(x => x.SupervisingProvider, 0); - Segment(x => x.SecondaryIdentification, 1, x => x.IsRequired()); + Segment(x => x.SecondaryIdentification, 1, + x => x.IsRequired().Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("0B") || + p.ReferenceIdentificationQualifier.IsEqualTo("1G") || + p.ReferenceIdentificationQualifier.IsEqualTo("G2") || + p.ReferenceIdentificationQualifier.IsEqualTo("LU"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330E_837IMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330E_837IMap.cs index 95a7963af..050134e50 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330E_837IMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330E_837IMap.cs @@ -13,7 +13,11 @@ public L2330E_837IMap() Name = "Other Payer Other Operating Physician"; Segment(x => x.OperatingPhysician, 0); - Segment(x => x.SecondaryIdentification, 1, x => x.IsRequired()); + Segment(x => x.SecondaryIdentification, 1, + x => x.IsRequired().Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("0B") || + p.ReferenceIdentificationQualifier.IsEqualTo("1G") || + p.ReferenceIdentificationQualifier.IsEqualTo("G2") || + p.ReferenceIdentificationQualifier.IsEqualTo("LU"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330E_837PMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330E_837PMap.cs index e159b8e0b..bda312d2a 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330E_837PMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330E_837PMap.cs @@ -12,8 +12,13 @@ public L2330E_837PMap() Id = "2330E"; Name = "Other Payer Service Facility Location"; - Segment(x => x.FacilityLocation, 0); - Segment(x => x.SecondaryIdentification, 1, x => x.IsRequired()); + Segment(x => x.FacilityLocation, 0, + x => x.Condition = parser => parser.Where(p => p.EntityIdentifierCode.IsEqualTo("77"))); + Segment(x => x.SecondaryIdentification, 1, + x => x.IsRequired().Condition = parser => parser.Where(p => + p.ReferenceIdentificationQualifier.IsEqualTo("0B") || + p.ReferenceIdentificationQualifier.IsEqualTo("G2") || + p.ReferenceIdentificationQualifier.IsEqualTo("LU"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330F_837DMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330F_837DMap.cs index dfb9e5ded..4ef37aec7 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330F_837DMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330F_837DMap.cs @@ -13,7 +13,9 @@ public L2330F_837DMap() Name = "Other Payer Billing Provider"; Segment(x => x.BillingProvider, 0); - Segment(x => x.SecondaryIdentification, 1, x => x.IsRequired()); + Segment(x => x.SecondaryIdentification, 1, + x => x.IsRequired().Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("G2") || + p.ReferenceIdentificationQualifier.IsEqualTo("LU"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330F_837IMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330F_837IMap.cs index 43cd92467..0a9f51d19 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330F_837IMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330F_837IMap.cs @@ -13,7 +13,10 @@ public L2330F_837IMap() Name = "Other Payer Service Facility Location"; Segment(x => x.ServiceFacilityLocation, 0); - Segment(x => x.SecondaryIdentification, 1, x => x.IsRequired()); + Segment(x => x.SecondaryIdentification, 1, + x => x.IsRequired().Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("0B") || + p.ReferenceIdentificationQualifier.IsEqualTo("G2") || + p.ReferenceIdentificationQualifier.IsEqualTo("LU"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330F_837PMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330F_837PMap.cs index 09139c605..fe6dde476 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330F_837PMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330F_837PMap.cs @@ -12,8 +12,14 @@ public L2330F_837PMap() Id = "2330F"; Name = "Other Payer Supervising Provider"; - Segment(x => x.SupervisingProvider, 0); - Segment(x => x.SecondaryIdentification, 1, x => x.IsRequired()); + Segment(x => x.Provider, 0, + x => x.Condition = parser => parser.Where(p => p.EntityIdentifierCode.IsEqualTo("DQ"))); + Segment(x => x.SecondaryIdentification, 1, + x => x.IsRequired().Condition = parser => parser.Where(p => + p.ReferenceIdentificationQualifier.IsEqualTo("0B") || + p.ReferenceIdentificationQualifier.IsEqualTo("1G") || + p.ReferenceIdentificationQualifier.IsEqualTo("G2") || + p.ReferenceIdentificationQualifier.IsEqualTo("LU"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330G_837DMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330G_837DMap.cs index 55604865f..cf56b1c4c 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330G_837DMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330G_837DMap.cs @@ -13,7 +13,10 @@ public L2330G_837DMap() Name = "Other Payer Service Facility Location"; Segment(x => x.ServiceFacilityLocation, 0); - Segment(x => x.SecondaryIdentification, 1, x => x.IsRequired()); + Segment(x => x.SecondaryIdentification, 1, + x => x.IsRequired().Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("0B") || + p.ReferenceIdentificationQualifier.IsEqualTo("G2") || + p.ReferenceIdentificationQualifier.IsEqualTo("LU"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330G_837IMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330G_837IMap.cs index d8b805e63..083e37ab7 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330G_837IMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330G_837IMap.cs @@ -13,7 +13,11 @@ public L2330G_837IMap() Name = "Other Payer Rendering Provider Name"; Segment(x => x.RenderingProvider, 0); - Segment(x => x.SecondaryIdentification, 1, x => x.IsRequired()); + Segment(x => x.SecondaryIdentification, 1, + x => x.IsRequired().Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("0B") || + p.ReferenceIdentificationQualifier.IsEqualTo("1G") || + p.ReferenceIdentificationQualifier.IsEqualTo("G2") || + p.ReferenceIdentificationQualifier.IsEqualTo("LU"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330G_837PMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330G_837PMap.cs index 7745c0995..f9ba01b46 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330G_837PMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330G_837PMap.cs @@ -12,8 +12,12 @@ public L2330G_837PMap() Id = "2330G"; Name = "Other Payer Billing Provider"; - Segment(x => x.BillingProvider, 0); - Segment(x => x.SecondaryIdentification, 1, x => x.IsRequired()); + Segment(x => x.Provider, 0, + x => x.Condition = parser => parser.Where(p => p.EntityIdentifierCode.IsEqualTo("85"))); + Segment(x => x.SecondaryIdentification, 1, + x => x.IsRequired().Condition = parser => parser.Where(p => + p.ReferenceIdentificationQualifier.IsEqualTo("G2") || + p.ReferenceIdentificationQualifier.IsEqualTo("LU"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330H_837DMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330H_837DMap.cs index 101025b2f..12de4d82c 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330H_837DMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330H_837DMap.cs @@ -13,7 +13,11 @@ public L2330H_837DMap() Name = "Other Payer Assistant Surgeon"; Segment(x => x.AssistantSurgeon, 0); - Segment(x => x.SecondaryIdentification, 1, x => x.IsRequired()); + Segment(x => x.SecondaryIdentification, 1, + x => x.IsRequired().Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("0B") || + p.ReferenceIdentificationQualifier.IsEqualTo("1G") || + p.ReferenceIdentificationQualifier.IsEqualTo("G2") || + p.ReferenceIdentificationQualifier.IsEqualTo("LU"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330H_837IMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330H_837IMap.cs index e1166b7bf..afd526d4e 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330H_837IMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330H_837IMap.cs @@ -13,7 +13,10 @@ public L2330H_837IMap() Name = "Other Payer Referring Provider"; Segment(x => x.ReferringProvider, 0); - Segment(x => x.SecondaryIdentification, 1, x => x.IsRequired()); + Segment(x => x.SecondaryIdentification, 1, + x => x.IsRequired().Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("0B") || + p.ReferenceIdentificationQualifier.IsEqualTo("1G") || + p.ReferenceIdentificationQualifier.IsEqualTo("G2"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330I_837IMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330I_837IMap.cs index f9d181d0c..282c5ff3d 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330I_837IMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2330I_837IMap.cs @@ -13,7 +13,9 @@ public L2330I_837IMap() Name = "Other Payer Billing Provider"; Segment(x => x.BillingProvider, 0); - Segment(x => x.SecondaryIdentification, 1); + Segment(x => x.SecondaryIdentification, 1, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("G2") || + p.ReferenceIdentificationQualifier.IsEqualTo("LU"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2400_837DMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2400_837DMap.cs index 6187d96a4..7c41e4483 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2400_837DMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2400_837DMap.cs @@ -15,27 +15,39 @@ public L2400_837DMap() Segment(x => x.ServiceLineNumber, 0, x => x.IsRequired()); Segment(x => x.DentalService, 1, x => x.IsRequired()); Segment(x => x.ToothInformation, 2); - Segment(x => x.ServiceDate, 3); - Segment(x => x.PriorPlacementDate, 4); - Segment(x => x.AppliancePlacementDate, 5); - Segment(x => x.ReplacementDate, 6); - Segment(x => x.TreatmentStartDate, 7); - Segment(x => x.TreatmentCompletionDate, 8); - Segment(x => x.ContractInformation, 16); - Segment(x => x.ServicePredeterminationIndentification, 9); - Segment(x => x.PriorAuthorization, 10); - Segment(x => x.LineItemControlNumber, 11); - Segment(x => x.RepricedClaimNumber, 12); - Segment(x => x.AdjustedRepricedClaimNumber, 13); - Segment(x => x.ReferralNumber, 14); - Segment(x => x.SalesTaxAmount, 15); - Segment(x => x.FileInformation, 16); - Segment(x => x.LinePricingOrRepricingInfo, 17); - Layout(x => x.RenderingProvider, 18); - Layout(x => x.AssistantSurgeon, 19); - Layout(x => x.SupervisingProvider, 20); - Layout(x => x.ServiceFacilityLocation, 21); - Layout(x => x.LineAdjudicationInformation, 22); + Segment(x => x.ServiceDate, 3, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("472"))); + Segment(x => x.PriorPlacementDate, 4, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("139") || p.DateTimeQualifier.IsEqualTo("441"))); + Segment(x => x.AppliancePlacementDate, 5, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("452"))); + Segment(x => x.ReplacementDate, 6, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("446"))); + Segment(x => x.TreatmentStartDate, 7, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("196"))); + Segment(x => x.TreatmentCompletionDate, 8, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("198"))); + Segment(x => x.ContractInformation, 9); + Segment(x => x.ServicePredeterminationIndentification, 10, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("G3"))); + Segment(x => x.PriorAuthorization, 11, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("G1"))); + Segment(x => x.LineItemControlNumber, 12, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("6R"))); + Segment(x => x.RepricedClaimNumber, 13, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("9A"))); + Segment(x => x.AdjustedRepricedClaimNumber, 14, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("9C"))); + Segment(x => x.ReferralNumber, 15, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("9F"))); + Segment(x => x.SalesTaxAmount, 16); + Segment(x => x.FileInformation, 17); + Segment(x => x.LinePricingOrRepricingInfo, 18); + Layout(x => x.RenderingProvider, 19); + Layout(x => x.AssistantSurgeon, 20); + Layout(x => x.SupervisingProvider, 21); + Layout(x => x.ServiceFacilityLocation, 22); + Layout(x => x.LineAdjudicationInformation, 23); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2400_837IMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2400_837IMap.cs index b6bdb96e8..09a5461e0 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2400_837IMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2400_837IMap.cs @@ -16,11 +16,16 @@ public L2400_837IMap() Segment(x => x.InstitutionalServiceLine, 1, x => x.IsRequired()); Segment(x => x.LineSupplementalInformation, 2); Segment(x => x.ServiceDate, 3, x => x.IsRequired()); - Segment(x => x.LineItemControlNumber, 4); - Segment(x => x.RepricedLineItemReferenceNumber, 5); - Segment(x => x.AdjustedRepricedLineItemReferenceNumber, 6); - Segment(x => x.ServiceTaxAmount, 7); - Segment(x => x.FacilityTaxAmount, 8); + Segment(x => x.LineItemControlNumber, 4, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("6R"))); + Segment(x => x.RepricedLineItemReferenceNumber, 5, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("9B"))); + Segment(x => x.AdjustedRepricedLineItemReferenceNumber, 6, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("9D"))); + Segment(x => x.ServiceTaxAmount, 7, + x => x.Condition = parser => parser.Where(p => p.AmountQualifierCode.IsEqualTo("GT"))); + Segment(x => x.FacilityTaxAmount, 8, + x => x.Condition = parser => parser.Where(p => p.AmountQualifierCode.IsEqualTo("N8"))); Segment(x => x.ThirdPartyOrganizationNotes, 9); Segment(x => x.LinePricingOrRepricingInformation, 10); Layout(x => x.DrugIdentification, 11); diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2400_837PMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2400_837PMap.cs index 328d003e9..aacc99727 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2400_837PMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2400_837PMap.cs @@ -15,55 +15,95 @@ public L2400_837PMap() Segment(x => x.ServiceLineNumber, 0, x => x.IsRequired()); Segment(x => x.ProfessionalService, 1, x => x.IsRequired()); Segment(x => x.DurableMedicalEquipmentService, 2); - Segment(x => x.LineSupplementalInformation, 3); - Segment(x => x.DurableMedicalEquipmentCertificateOfMedicalNecessityIndicator, 4); + Segment(x => x.LineSupplementalInformation, 3, + x => x.Condition = parser => parser.Where(p => p.ReportTransmissionCode.IsEqualTo("AA") || + p.ReportTransmissionCode.IsEqualTo("BM") || + p.ReportTransmissionCode.IsEqualTo("EL") || + p.ReportTransmissionCode.IsEqualTo("EM") || + p.ReportTransmissionCode.IsEqualTo("FT") || + p.ReportTransmissionCode.IsEqualTo("FX"))); + Segment(x => x.DurableMedicalEquipmentCertificateOfMedicalNecessityIndicator, 4, + x => x.Condition = parser => parser.Where(p => p.ReportTransmissionCode.IsEqualTo("AB") || + p.ReportTransmissionCode.IsEqualTo("AD") || + p.ReportTransmissionCode.IsEqualTo("AF") || + p.ReportTransmissionCode.IsEqualTo("AG") || + p.ReportTransmissionCode.IsEqualTo("NS"))); Segment(x => x.AmbulanceTransportInformation, 5); - Segment(x => x.DurableMedicalEqumentCertification, 6); - Segment(x => x.AmbulanceCertification, 7); - Segment(x => x.HospiceEmployeeIndicator, 8); - Segment(x => x.ConditionIndicatorDurableMedicalEquipment, 9); - Segment(x => x.ServiceDate, 10, x => x.IsRequired()); - Segment(x => x.PrescriptionDate, 11); - Segment(x => x.CertificationRevisionDate, 12); - Segment(x => x.BeginTherapyDate, 13); - Segment(x => x.LastCertificationDate, 14); - Segment(x => x.LastSeenDate, 15); - Segment(x => x.TestDate, 16); - Segment(x => x.ShippedDate, 17); - Segment(x => x.LastXRayDate, 18); - Segment(x => x.LastSeenDate, 19); - Segment(x => x.InitialTreatmentDate, 20); - Segment(x => x.AmbulancePatientCount, 21); - Segment(x => x.ObstetricAnesthesiaAdditionalUnits, 22); - Segment(x => x.TestResult, 23); - Segment(x => x.ContractInformation, 24); - Segment(x => x.RepricedLineItemReferenceNumber, 25); - Segment(x => x.AdjustedRepricedLineItemReferenceNumber, 26); - Segment(x => x.PriorAuthorization, 27); - Segment(x => x.LineItemControlNumber, 28); - Segment(x => x.MammographyCerficationNumber, 29); - Segment(x => x.CLIANumber, 30); - Segment(x => x.ReferringCLIAFacilityIdentification, 31); - Segment(x => x.ImmunizationBatchNumber, 32); - Segment(x => x.ReferralNumber, 33); - Segment(x => x.SalesTaxAmount, 34); - Segment(x => x.PostageClaimedAmount, 35); - Segment(x => x.FileInformation, 36); - Segment(x => x.LineNote, 37); - Segment(x => x.ThirdPartyOrganizationNotes, 38); - Segment(x => x.PurchasedServiceInformation, 39); - Segment(x => x.LinePricingInformation, 40); - Layout(x => x.DrugIdentification, 41); - Layout(x => x.RenderingProvider, 42); - Layout(x => x.PurchasedServiceProvider, 43); - Layout(x => x.SerivceFacilityLocation, 44); - Layout(x => x.SupervisingProvider, 45); - Layout(x => x.OrderingProvider, 46); - Layout(x => x.ReferringProvider, 47); - Layout(x => x.AmbulancePickUpLocation, 48); - Layout(x => x.AmbulanceDropOffLocation, 49); - Layout(x => x.LineAdjudicationInformation, 50); - Layout(x => x.FormIdentificationCode, 51); + Segment(x => x.DurableMedicalEquipmentCertification, 6); + Segment(x => x.AmbulanceCertification, 7, + x => x.Condition = parser => parser.Where(p => p.CodeCategory.IsEqualTo("07"))); + Segment(x => x.HospiceEmployeeIndicator, 8, + x => x.Condition = parser => parser.Where(p => p.CodeCategory.IsEqualTo("70"))); + Segment(x => x.ConditionIndicatorDurableMedicalEquipment, 9, + x => x.Condition = parser => parser.Where(p => p.CodeCategory.IsEqualTo("09"))); + Segment(x => x.ServiceDate, 10, + x => x.IsRequired().Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("472"))); + Segment(x => x.PrescriptionDate, 11, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("471"))); + Segment(x => x.CertificationRevisionDate, 12, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("607"))); + Segment(x => x.BeginTherapyDate, 13, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("463"))); + Segment(x => x.LastCertificationDate, 14, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("461"))); + Segment(x => x.LastSeenDate, 15, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("304"))); + Segment(x => x.TestDate, 16, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("738") || + p.DateTimeQualifier.IsEqualTo("739"))); + Segment(x => x.ShippedDate, 17, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("011"))); + Segment(x => x.LastXRayDate, 18, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("455"))); + Segment(x => x.InitialTreatmentDate, 19, + x => x.Condition = parser => parser.Where(p => p.DateTimeQualifier.IsEqualTo("454"))); + Segment(x => x.AmbulancePatientCount, 20, + x => x.Condition = parser => parser.Where(p => p.QuantityQualifier.IsEqualTo("PT"))); + Segment(x => x.ObstetricAnesthesiaAdditionalUnits, 21, + x => x.Condition = parser => parser.Where(p => p.QuantityQualifier.IsEqualTo("FL"))); + Segment(x => x.TestResult, 22); + Segment(x => x.ContractInformation, 23); + Segment(x => x.RepricedLineItemReferenceNumber, 24, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("9B"))); + Segment(x => x.AdjustedRepricedLineItemReferenceNumber, 25, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("9D"))); + Segment(x => x.PriorAuthorization, 26, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("G1"))); + Segment(x => x.LineItemControlNumber, 27, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("6R"))); + Segment(x => x.MammographyCertificationNumber, 28, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("EW"))); + Segment(x => x.CLIANumber, 29, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("X4"))); + Segment(x => x.ReferringCLIAFacilityIdentification, 30, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("F4"))); + Segment(x => x.ImmunizationBatchNumber, 31, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("BT"))); + Segment(x => x.ReferralNumber, 32, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("9F"))); + Segment(x => x.SalesTaxAmount, 33, + x => x.Condition = parser => parser.Where(p => p.AmountQualifierCode.IsEqualTo("T"))); + Segment(x => x.PostageClaimedAmount, 34, + x => x.Condition = parser => parser.Where(p => p.AmountQualifierCode.IsEqualTo("F4"))); + Segment(x => x.FileInformation, 35); + Segment(x => x.LineNote, 36, + x => x.Condition = parser => parser.Where(p => p.NoteReferenceCode.IsEqualTo("ADD") || + p.NoteReferenceCode.IsEqualTo("DCP"))); + Segment(x => x.ThirdPartyOrganizationNotes, 37, + x => x.Condition = parser => parser.Where(p => p.NoteReferenceCode.IsEqualTo("TPO"))); + Segment(x => x.PurchasedServiceInformation, 38); + Segment(x => x.LinePricingInformation, 39); + Layout(x => x.DrugIdentification, 40); + Layout(x => x.RenderingProvider, 41); + Layout(x => x.PurchasedServiceProvider, 42); + Layout(x => x.ServiceFacilityLocation, 43); + Layout(x => x.SupervisingProvider, 44); + Layout(x => x.OrderingProvider, 45); + Layout(x => x.ReferringProvider, 46); + Layout(x => x.AmbulancePickUpLocation, 47); + Layout(x => x.AmbulanceDropOffLocation, 48); + Layout(x => x.LineAdjudicationInformation, 49); + Layout(x => x.FormIdentificationCode, 50); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2410_837IMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2410_837IMap.cs index 8434a82dc..09f07d1bf 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2410_837IMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2410_837IMap.cs @@ -14,7 +14,9 @@ public L2410_837IMap() Segment(x => x.DrugIdentification, 0); Segment(x => x.DrugQuantity, 1, x => x.IsRequired()); - Segment(x => x.PrescriptionOrCompoundDrugAssociationNumber, 2); + Segment(x => x.PrescriptionOrCompoundDrugAssociationNumber, 2, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("VY") || + p.ReferenceIdentificationQualifier.IsEqualTo("XZ"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420A_837DMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420A_837DMap.cs index bfb09b586..f2a89f168 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420A_837DMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420A_837DMap.cs @@ -14,7 +14,11 @@ public L2420A_837DMap() Segment(x => x.RenderingProvider, 0); Segment(x => x.SpecialtyInformation, 1, x => x.IsRequired()); - Segment(x => x.SecondaryIdentification, 2); + Segment(x => x.SecondaryIdentification, 2, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("0B") || + p.ReferenceIdentificationQualifier.IsEqualTo("1G") || + p.ReferenceIdentificationQualifier.IsEqualTo("G2") || + p.ReferenceIdentificationQualifier.IsEqualTo("LU"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420A_837IMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420A_837IMap.cs index c34a9723a..2ad8976ec 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420A_837IMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420A_837IMap.cs @@ -13,7 +13,11 @@ public L2420A_837IMap() Name = "Operating Physician Name"; Segment(x => x.Physician, 0); - Segment(x => x.SecondaryIdentification, 1); + Segment(x => x.SecondaryIdentification, 1, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("0B") || + p.ReferenceIdentificationQualifier.IsEqualTo("1G") || + p.ReferenceIdentificationQualifier.IsEqualTo("G2") || + p.ReferenceIdentificationQualifier.IsEqualTo("LU"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420A_837PMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420A_837PMap.cs index 94ca5f6af..1c06b26df 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420A_837PMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420A_837PMap.cs @@ -12,7 +12,8 @@ public L2420A_837PMap() Id = "2420A"; Name = "Rendering Provider Name"; - Segment(x => x.Provider, 0); + Segment(x => x.Provider, 0, + x => x.Condition = parser => parser.Where(p => p.EntityIdentifierCode.IsEqualTo("82"))); Segment(x => x.SpecialtyInformation, 1); Segment(x => x.SecondaryIdentification, 2); } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420B_837DMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420B_837DMap.cs index 6b74735cb..27ed88296 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420B_837DMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420B_837DMap.cs @@ -14,7 +14,11 @@ public L2420B_837DMap() Segment(x => x.AssistantSurgeon, 0); Segment(x => x.SpecialtyInformation, 1); - Segment(x => x.SecondaryIdentification, 2); + Segment(x => x.SecondaryIdentification, 2, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("0B") || + p.ReferenceIdentificationQualifier.IsEqualTo("1G") || + p.ReferenceIdentificationQualifier.IsEqualTo("G2") || + p.ReferenceIdentificationQualifier.IsEqualTo("LU"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420B_837IMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420B_837IMap.cs index 5c09edc26..8f2a8c142 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420B_837IMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420B_837IMap.cs @@ -13,7 +13,11 @@ public L2420B_837IMap() Name = "Other Operating Physician Name"; Segment(x => x.Physician, 0); - Segment(x => x.SecondaryIdentification, 1); + Segment(x => x.SecondaryIdentification, 1, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("0B") || + p.ReferenceIdentificationQualifier.IsEqualTo("1G") || + p.ReferenceIdentificationQualifier.IsEqualTo("G2") || + p.ReferenceIdentificationQualifier.IsEqualTo("LU"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420B_837PMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420B_837PMap.cs index b11954153..aea92c437 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420B_837PMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420B_837PMap.cs @@ -12,7 +12,8 @@ public L2420B_837PMap() Id = "2420B"; Name = "Purchased Service Provider Name"; - Segment(x => x.Provider, 0); + Segment(x => x.Provider, 0, + x => x.Condition = parser => parser.Where(p => p.EntityIdentifierCode.IsEqualTo("QB"))); Segment(x => x.SecondaryIdentification, 1); } } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420C_837DMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420C_837DMap.cs index 267aacb65..ab6a7ca0b 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420C_837DMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420C_837DMap.cs @@ -13,7 +13,11 @@ public L2420C_837DMap() Name = "Supervising Provider Name"; Segment(x => x.SupervisingProvider, 0); - Segment(x => x.SecondaryIdentification, 1); + Segment(x => x.SecondaryIdentification, 1, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("0B") || + p.ReferenceIdentificationQualifier.IsEqualTo("1G") || + p.ReferenceIdentificationQualifier.IsEqualTo("G2") || + p.ReferenceIdentificationQualifier.IsEqualTo("LU"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420C_837IMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420C_837IMap.cs index 3dd0d8329..28d874110 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420C_837IMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420C_837IMap.cs @@ -13,7 +13,11 @@ public L2420C_837IMap() Name = "Rendering Provider Name"; Segment(x => x.ProviderName, 0); - Segment(x => x.SecondaryIdentification, 1); + Segment(x => x.SecondaryIdentification, 1, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("0B") || + p.ReferenceIdentificationQualifier.IsEqualTo("1G") || + p.ReferenceIdentificationQualifier.IsEqualTo("G2") || + p.ReferenceIdentificationQualifier.IsEqualTo("LU"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420C_837PMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420C_837PMap.cs index 02a123241..5b840a421 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420C_837PMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420C_837PMap.cs @@ -12,7 +12,8 @@ public L2420C_837PMap() Id = "2420C"; Name = "Service Facility Location Name"; - Segment(x => x.LocationName, 0); + Segment(x => x.LocationName, 0, + x => x.Condition = parser => parser.Where(p => p.EntityIdentifierCode.IsEqualTo("77"))); Segment(x => x.Address, 1, x => x.IsRequired()); Segment(x => x.GeographicInfo, 2, x => x.IsRequired()); Segment(x => x.SecondaryIdentification, 3); diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420D_837DMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420D_837DMap.cs index 88a08ab25..378dfdda1 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420D_837DMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420D_837DMap.cs @@ -15,7 +15,10 @@ public L2420D_837DMap() Segment(x => x.FacilityLocation, 0); Segment(x => x.Address, 1, x => x.IsRequired()); Segment(x => x.GeographicInformation, 2, x => x.IsRequired()); - Segment(x => x.SecondaryIdentification, 3); + Segment(x => x.SecondaryIdentification, 3, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("1G") || + p.ReferenceIdentificationQualifier.IsEqualTo("G2") || + p.ReferenceIdentificationQualifier.IsEqualTo("LU"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420D_837IMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420D_837IMap.cs index c475c05c2..66fc29566 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420D_837IMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420D_837IMap.cs @@ -13,7 +13,10 @@ public L2420D_837IMap() Name = "Rendering Provider Name"; Segment(x => x.ReferringProvider, 0); - Segment(x => x.SecondaryIdentification, 1); + Segment(x => x.SecondaryIdentification, 1, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("0B") || + p.ReferenceIdentificationQualifier.IsEqualTo("1G") || + p.ReferenceIdentificationQualifier.IsEqualTo("G2"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420D_837PMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420D_837PMap.cs index 0227ee114..f7e286247 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420D_837PMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420D_837PMap.cs @@ -12,7 +12,8 @@ public L2420D_837PMap() Id = "2420D"; Name = "Supervising Provider Name"; - Segment(x => x.SupervisingProvider, 0); + Segment(x => x.Provider, 0, + x => x.Condition = parser => parser.Where(p => p.EntityIdentifierCode.IsEqualTo("DQ"))); Segment(x => x.SecondaryIdentification, 1); } } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420E_837PMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420E_837PMap.cs index bbbbc1fcb..7d7326613 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420E_837PMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420E_837PMap.cs @@ -12,7 +12,8 @@ public L2420E_837PMap() Id = "2420E"; Name = "Ordering Provider Name"; - Segment(x => x.OrderingProvider, 0); + Segment(x => x.Provider, 0, + x => x.Condition = parser => parser.Where(p => p.EntityIdentifierCode.IsEqualTo("DK"))); Segment(x => x.Address, 1); Segment(x => x.GeographicInfo, 2); Segment(x => x.SecondaryIdentification, 3); diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420F_837PMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420F_837PMap.cs index a3463ee5b..56f1542da 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420F_837PMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420F_837PMap.cs @@ -12,7 +12,9 @@ public L2420F_837PMap() Id = "2420F"; Name = "Referring Provider Name"; - Segment(x => x.Name, 0); + Segment(x => x.Provider, 0, + x => x.Condition = parser => parser.Where(p => p.EntityIdentifierCode.IsEqualTo("DN") || + p.EntityIdentifierCode.IsEqualTo("P3"))); Segment(x => x.SecondaryIdentification, 1); } } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420G_837PMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420G_837PMap.cs index 754d04949..2959c1f63 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420G_837PMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420G_837PMap.cs @@ -12,7 +12,8 @@ public L2420G_837PMap() Id = "2420G"; Name = "Ambulance Pick Up Location"; - Segment(x => x.PickUpLocation, 0); + Segment(x => x.PickUpLocation, 0, + x => x.Condition = parser => parser.Where(p => p.EntityIdentifierCode.IsEqualTo("PW"))); Segment(x => x.Address, 1, x => x.IsRequired()); Segment(x => x.GeographicInfo, 2, x => x.IsRequired()); } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420H_837PMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420H_837PMap.cs index 3872c36e6..36f4ceee5 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420H_837PMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2420H_837PMap.cs @@ -12,7 +12,8 @@ public L2420H_837PMap() Id = "2420H"; Name = "Ambulance Drop Off Location"; - Segment(x => x.DropOffLocation, 0); + Segment(x => x.DropOffLocation, 0, + x => x.Condition = parser => parser.Where(p => p.EntityIdentifierCode.IsEqualTo("45"))); Segment(x => x.Address, 1, x => x.IsRequired()); Segment(x => x.GeographicInfo, 2, x => x.IsRequired()); } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2430_837IMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2430_837IMap.cs index d9e70ed13..57cd0f679 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2430_837IMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/L2430_837IMap.cs @@ -15,7 +15,8 @@ public L2430_837IMap() Segment(x => x.LineAdjudicationInformation, 0); Segment(x => x.LineAdjustment, 1); Segment(x => x.LineCheckOrRemittanceDate, 2, x => x.IsRequired()); - Segment(x => x.RemainingPatientLiability, 3); + Segment(x => x.RemainingPatientLiability, 3, + x => x.Condition = parser => parser.Where(p => p.AmountQualifierCode.IsEqualTo("EAF"))); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/T835Map.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/T835Map.cs index 96e84e037..378d42089 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/T835Map.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/T835Map.cs @@ -17,8 +17,10 @@ public T835Map() Segment(x => x.FinancialInformation, 2, x => x.IsRequired()); Segment(x => x.ReassociationTraceNumber, 3, x => x.IsRequired()); Segment(x => x.ForeignCurrencyInformation, 4); - Segment(x => x.ReceiverIdentification, 5); - Segment(x => x.VersionIdentification, 6); + Segment(x => x.ReceiverIdentification, 5, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("EV"))); + Segment(x => x.VersionIdentification, 6, + x => x.Condition = parser => parser.Where(p => p.ReferenceIdentificationQualifier.IsEqualTo("F2"))); Segment(x => x.ProductionDate, 7); Layout(x => x.PayerIdentification, 8); Layout(x => x.PayeeIdentification, 9); diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/T837DMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/T837DMap.cs index 28ce47fc3..064227cb4 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/T837DMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/T837DMap.cs @@ -14,7 +14,7 @@ public T837DMap() Segment(x => x.FunctionalGroupHeader, 0); Segment(x => x.TransactionSetHeader, 1, x => x.IsRequired()); - Segment(x => x.BeginningOfHeirarchicalTransaction, 2, x => x.IsRequired()); + Segment(x => x.BeginningOfHierarchicalTransaction, 2, x => x.IsRequired()); Layout(x => x.Submitter, 3); Layout(x => x.Receiver, 4); Layout(x => x.BillingProviderDetail, 5); diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/T837PMap.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/T837PMap.cs index a1413bef3..9092c511f 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/T837PMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/Maps/T837PMap.cs @@ -14,15 +14,17 @@ public T837PMap() Segment(x => x.FunctionalGroupHeader, 0); Segment(x => x.TransactionSetHeader, 1, x => x.IsRequired()); - Segment(x => x.BeginningOfHeirarchicalTransaction, 2, x => x.IsRequired()); + Segment(x => x.BeginningOfHierarchicalTransaction, 2, x => x.IsRequired()); Layout(x => x.Submitter, 3); Layout(x => x.Receiver, 4); Layout(x => x.BillingProviderDetail, 5); Layout(x => x.Receiver, 6); - Layout(x => x.SubscriberDetail, 7); - Layout(x => x.PatientDetail, 8); - Segment(x => x.TransactionSetTrailer, 9); - Segment(x => x.FunctionalGroupTrailer, 10); + Layout(x => x.PayToAddressName, 7); + Layout(x => x.PayToPlanName, 8); + Layout(x => x.SubscriberDetail, 9); + Layout(x => x.PatientDetail, 10); + Segment(x => x.TransactionSetTrailer, 11); + Segment(x => x.FunctionalGroupTrailer, 12); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/T837D.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/T837D.cs index 41ff35942..bc4e35d8a 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/T837D.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/T837D.cs @@ -13,7 +13,7 @@ public interface T837D : Segment TransactionSetHeader { get; } - Segment BeginningOfHeirarchicalTransaction { get; } + Segment BeginningOfHierarchicalTransaction { get; } LayoutList Submitter { get; } diff --git a/src/Machete.X12Schema/Generated/V5010/Layouts/T837P.cs b/src/Machete.X12Schema/Generated/V5010/Layouts/T837P.cs index cf817a917..481ca2242 100644 --- a/src/Machete.X12Schema/Generated/V5010/Layouts/T837P.cs +++ b/src/Machete.X12Schema/Generated/V5010/Layouts/T837P.cs @@ -13,7 +13,7 @@ public interface T837P : Segment TransactionSetHeader { get; } - Segment BeginningOfHeirarchicalTransaction { get; } + Segment BeginningOfHierarchicalTransaction { get; } LayoutList Submitter { get; } @@ -21,6 +21,10 @@ public interface T837P : LayoutList BillingProviderDetail { get; } + Layout PayToAddressName { get; } + + Layout PayToPlanName { get; } + LayoutList SubscriberDetail { get; } LayoutList PatientDetail { get; } diff --git a/src/Machete.X12Schema/Generated/V5010/Segments/Maps/HIMap.cs b/src/Machete.X12Schema/Generated/V5010/Segments/Maps/HIMap.cs index aead85e17..0ed6d87fc 100644 --- a/src/Machete.X12Schema/Generated/V5010/Segments/Maps/HIMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Segments/Maps/HIMap.cs @@ -12,18 +12,18 @@ public HIMap() Id = "HI"; Name = "Health Care Information Codes"; - Entity(x => x.HealthCareCodeInformation1, 1, x => x.FixedLength(1).IsRequired()); - Entity(x => x.HealthCareCodeInformation2, 2, x => x.FixedLength(1)); - Entity(x => x.HealthCareCodeInformation3, 3, x => x.FixedLength(1)); - Entity(x => x.HealthCareCodeInformation4, 4, x => x.FixedLength(1)); - Entity(x => x.HealthCareCodeInformation5, 5, x => x.FixedLength(1)); - Entity(x => x.HealthCareCodeInformation6, 6, x => x.FixedLength(1)); - Entity(x => x.HealthCareCodeInformation7, 7, x => x.FixedLength(1)); - Entity(x => x.HealthCareCodeInformation8, 8, x => x.FixedLength(1)); - Entity(x => x.HealthCareCodeInformation9, 9, x => x.FixedLength(1)); - Entity(x => x.HealthCareCodeInformation10, 10, x => x.FixedLength(1)); - Entity(x => x.HealthCareCodeInformation11, 11, x => x.FixedLength(1)); - Entity(x => x.HealthCareCodeInformation12, 12, x => x.FixedLength(1)); + Entity(x => x.HealthCareCodeInformation1, 1, x => x.IsRequired()); + Entity(x => x.HealthCareCodeInformation2, 2); + Entity(x => x.HealthCareCodeInformation3, 3); + Entity(x => x.HealthCareCodeInformation4, 4); + Entity(x => x.HealthCareCodeInformation5, 5); + Entity(x => x.HealthCareCodeInformation6, 6); + Entity(x => x.HealthCareCodeInformation7, 7); + Entity(x => x.HealthCareCodeInformation8, 8); + Entity(x => x.HealthCareCodeInformation9, 9); + Entity(x => x.HealthCareCodeInformation10, 10); + Entity(x => x.HealthCareCodeInformation11, 11); + Entity(x => x.HealthCareCodeInformation12, 12); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Segments/Maps/NM1Map.cs b/src/Machete.X12Schema/Generated/V5010/Segments/Maps/NM1Map.cs index 9a6a986cd..d1fc29003 100644 --- a/src/Machete.X12Schema/Generated/V5010/Segments/Maps/NM1Map.cs +++ b/src/Machete.X12Schema/Generated/V5010/Segments/Maps/NM1Map.cs @@ -12,14 +12,15 @@ public NM1Map() Id = "NM1"; Name = "Individual Or Organizational Name"; - Value(x => x.EntityIdCode, 1, x => x.MinLength(2).MaxLength(3).IsRequired()); + Value(x => x.EntityIdentifierCode, 1, x => x.MinLength(2).MaxLength(3).IsRequired()); Value(x => x.EntityTypeQualifier, 2, x => x.FixedLength(1).IsRequired()); Value(x => x.LastNameOrOrganizationName, 3, x => x.MinLength(1).MaxLength(35)); Value(x => x.FirstName, 4, x => x.MinLength(1).MaxLength(25)); Value(x => x.MiddleName, 5, x => x.MinLength(1).MaxLength(25)); + Value(x => x.NamePrefix, 6, x => x.MinLength(1).MaxLength(10)); Value(x => x.NameSuffix, 7, x => x.MinLength(1).MaxLength(10)); - Value(x => x.IdCodeQualifier, 8, x => x.MinLength(1).MaxLength(2)); - Value(x => x.IdCode, 9, x => x.MinLength(2).MaxLength(80)); + Value(x => x.IdentifierCodeQualifier, 8, x => x.MinLength(1).MaxLength(2)); + Value(x => x.IdentifierCode, 9, x => x.MinLength(2).MaxLength(80)); } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Segments/Maps/PWKMap.cs b/src/Machete.X12Schema/Generated/V5010/Segments/Maps/PWKMap.cs index 1e751666d..512dd3d2b 100644 --- a/src/Machete.X12Schema/Generated/V5010/Segments/Maps/PWKMap.cs +++ b/src/Machete.X12Schema/Generated/V5010/Segments/Maps/PWKMap.cs @@ -13,7 +13,7 @@ public PWKMap() Name = "Paperwork"; Value(x => x.AttachmentReportType, 1, x => x.FixedLength(2).IsRequired()); - Value(x => x.AttachmentTransmissionCode, 2, x => x.MinLength(1).MaxLength(2).IsRequired()); + Value(x => x.ReportTransmissionCode, 2, x => x.MinLength(1).MaxLength(2).IsRequired()); Value(x => x.IdentificationCodeQualifier, 5, x => x.MinLength(1).MaxLength(2)); Value(x => x.AttachmentControlNumber, 6, x => x.MinLength(2).MaxLength(80)); Value(x => x.AttachmentDescription, 7, x => x.MinLength(1).MaxLength(80)); diff --git a/src/Machete.X12Schema/Generated/V5010/Segments/NM1.cs b/src/Machete.X12Schema/Generated/V5010/Segments/NM1.cs index 57d6e941c..ac4d314bc 100644 --- a/src/Machete.X12Schema/Generated/V5010/Segments/NM1.cs +++ b/src/Machete.X12Schema/Generated/V5010/Segments/NM1.cs @@ -6,7 +6,7 @@ namespace Machete.X12Schema.V5010 public interface NM1 : X12Segment { - Value EntityIdCode { get; } + Value EntityIdentifierCode { get; } Value EntityTypeQualifier { get; } @@ -16,10 +16,12 @@ public interface NM1 : Value MiddleName { get; } + Value NamePrefix { get; } + Value NameSuffix { get; } - Value IdCodeQualifier { get; } + Value IdentifierCodeQualifier { get; } - Value IdCode { get; } + Value IdentifierCode { get; } } } \ No newline at end of file diff --git a/src/Machete.X12Schema/Generated/V5010/Segments/PWK.cs b/src/Machete.X12Schema/Generated/V5010/Segments/PWK.cs index a3976a5dc..f5031cf6a 100644 --- a/src/Machete.X12Schema/Generated/V5010/Segments/PWK.cs +++ b/src/Machete.X12Schema/Generated/V5010/Segments/PWK.cs @@ -8,7 +8,7 @@ public interface PWK : { Value AttachmentReportType { get; } - Value AttachmentTransmissionCode { get; } + Value ReportTransmissionCode { get; } Value IdentificationCodeQualifier { get; } diff --git a/src/Machete.sln.DotSettings b/src/Machete.sln.DotSettings index 663c5bd1f..8929cfffd 100644 --- a/src/Machete.sln.DotSettings +++ b/src/Machete.sln.DotSettings @@ -31,6 +31,7 @@ True True True + True True True True diff --git a/src/Machete/DateTimeValueExtensions.cs b/src/Machete/DateTimeValueExtensions.cs index fa742c8c5..76cbcb4ac 100644 --- a/src/Machete/DateTimeValueExtensions.cs +++ b/src/Machete/DateTimeValueExtensions.cs @@ -113,7 +113,7 @@ public static Value ToDateTimeOffset(this Value dateTi /// /// Converts the current date/time with offset to /// - /// + /// /// /// /// diff --git a/src/Machete/IQueryBuilder.cs b/src/Machete/IQueryBuilder.cs index 2f0bf67ee..7db2617f8 100644 --- a/src/Machete/IQueryBuilder.cs +++ b/src/Machete/IQueryBuilder.cs @@ -4,7 +4,7 @@ public interface IQueryBuilder where TSchema : Entity { /// - /// + /// Return a parser that will return exactly one entity. /// /// /// @@ -12,7 +12,7 @@ public interface IQueryBuilder where T : TSchema; /// - /// + /// Return a parser that will return all entities of T until the entity of TExcept is reached. /// /// /// @@ -22,7 +22,7 @@ public interface IQueryBuilder where TExcept : T; /// - /// + /// Return a parser that will return all entities of T until the entity of TExcept is reached. /// /// /// @@ -33,7 +33,7 @@ public interface IQueryBuilder where TExcept : T; /// - /// + /// Return a parser that matches on the layout of T. /// /// /// diff --git a/src/Machete/IQueryParser.cs b/src/Machete/IQueryParser.cs index e2d005afd..c1f48f871 100644 --- a/src/Machete/IQueryParser.cs +++ b/src/Machete/IQueryParser.cs @@ -7,10 +7,29 @@ public interface IQueryParser : IParser where TSchema : Entity { + /// + /// Returns a if the filter condition evaluates to true. + /// + /// + /// IQueryParser Where(Func predicate); + /// + /// Returns a parser + /// + /// + /// + /// IQueryParser Select(Func selector); + /// + /// + /// + /// + /// + /// + /// + /// IQueryParser SelectMany(Func> selector, Func projector); IQueryParser SelectMany(Func> selector, Func projector); diff --git a/src/Machete/LayoutValue.cs b/src/Machete/LayoutValue.cs new file mode 100644 index 000000000..c3df1af7b --- /dev/null +++ b/src/Machete/LayoutValue.cs @@ -0,0 +1,26 @@ +namespace Machete +{ + using Layouts; + + + public static class LayoutValue + { + /// + /// A missing value is one that has no value. + /// + /// + /// + public static Layout Missing() + where T : Layout + { + return Cached.Missing; + } + + + static class Cached + where T : Layout + { + public static readonly Layout Missing = new MissingLayout(); + } + } +} \ No newline at end of file diff --git a/src/Machete/Layouts/MissingLayoutList.cs b/src/Machete/Layouts/MissingLayoutList.cs index ada1f2bf5..3f7464e5f 100644 --- a/src/Machete/Layouts/MissingLayoutList.cs +++ b/src/Machete/Layouts/MissingLayoutList.cs @@ -13,12 +13,13 @@ public class MissingLayoutList : { public Type LayoutType => typeof(TLayout); public bool HasValue => false; - - public Layout this[int index] => throw new ValueMissingException("The layout is missing."); - bool LayoutList.TryGetValue(int index, out Layout value) + public Layout this[int index] => LayoutValue.Missing(); + + bool LayoutList.TryGetValue(int index, out Layout layout) { - throw new ValueMissingException("The layout is missing."); + layout = LayoutValue.Missing(); + return false; } } } \ No newline at end of file diff --git a/src/Machete/Layouts/Properties/PropertyList.cs b/src/Machete/Layouts/Properties/PropertyList.cs index 9f6e7bfa6..f2a64543e 100644 --- a/src/Machete/Layouts/Properties/PropertyList.cs +++ b/src/Machete/Layouts/Properties/PropertyList.cs @@ -36,7 +36,7 @@ protected PropertyList(IPropertyListItemFactory itemFactory, IRead public bool TryGetValue(int index, out TProperty value) { - if (index < _values.Count) + if (index >= 0 && index < _values.Count) { value = _properties[index] ?? (_properties[index] = _itemFactory.Create(_values[index])); return true; diff --git a/src/Machete/Querying/SelectExtensions.cs b/src/Machete/Querying/SelectExtensions.cs index 9a9b8b6d7..1b1549628 100644 --- a/src/Machete/Querying/SelectExtensions.cs +++ b/src/Machete/Querying/SelectExtensions.cs @@ -7,119 +7,206 @@ public static class SelectExtensions { - public static IParser Select(this IParser parser, Func projection) + /// + /// Selects a property from the current parser and returns the parser for that value. + /// + /// + /// + /// + /// + /// + /// + /// + public static IParser Select(this IParser parser, Func projector) { if (parser == null) throw new ArgumentNullException(nameof(parser)); - if (projection == null) - throw new ArgumentNullException(nameof(projection)); - return new SelectParser(parser, projection); + if (projector == null) + throw new ArgumentNullException(nameof(projector)); + + return new SelectParser(parser, projector); } /// - /// Selects a value property from the current value parser, and returns the parser for that value + /// Selects a value property from the current value parser and returns the parser for that value. /// /// - /// + /// /// /// /// /// - public static IParser> Select(this IParser> parser, Func> projection) + public static IParser> Select(this IParser> parser, Func> projector) where TInput : Entity where T : Entity { if (parser == null) throw new ArgumentNullException(nameof(parser)); - if (projection == null) - throw new ArgumentNullException(nameof(projection)); - return new SelectValueParser(parser, projection); + if (projector == null) + throw new ArgumentNullException(nameof(projector)); + + return new SelectValueParser(parser, projector); } - public static ITextParser Select(this ITextParser parser, Func projection) + /// + /// Selects a matching result from a text parser and applies a projection to the result type returning a new parser. + /// + /// + /// + /// + /// + public static ITextParser Select(this ITextParser parser, Func projector) { if (parser == null) throw new ArgumentNullException(nameof(parser)); - if (projection == null) - throw new ArgumentNullException(nameof(projection)); - return new SelectTextParser(parser, projection); + if (projector == null) + throw new ArgumentNullException(nameof(projector)); + + return new SelectTextParser(parser, projector); } + /// + /// Applies a projection to a list of parsers who maintain a list of parsers, returning a flattened list of parsers. + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// public static IParser SelectMany( this IParser parser, Func> selection, - Func projection) + Func projector) { if (parser == null) throw new ArgumentNullException(nameof(parser)); + if (selection == null) throw new ArgumentNullException(nameof(selection)); - if (projection == null) - throw new ArgumentNullException(nameof(projection)); + + if (projector == null) + throw new ArgumentNullException(nameof(projector)); - return new SelectManyParser(parser, selection, projection); + return new SelectManyParser(parser, selection, projector); } - public static ITextParser SelectMany(this ITextParser parser, Func selection, Func projection) + /// + /// Applies a projection to a list of text parsers who maintain a list of parsers, returning a flattened list of parsers. + /// + /// + /// + /// + /// + /// + public static ITextParser SelectMany(this ITextParser parser, Func selection, Func projector) { if (parser == null) throw new ArgumentNullException(nameof(parser)); + if (selection == null) throw new ArgumentNullException(nameof(selection)); - if (projection == null) - throw new ArgumentNullException(nameof(projection)); + + if (projector == null) + throw new ArgumentNullException(nameof(projector)); - return new SelectManyTextParser(parser, selection, projection); + return new SelectManyTextParser(parser, selection, projector); } - public static ITextParser SelectMany(this ITextParser parser, Func selection, Func projection) + /// + /// Applies a projection to a list of text parsers who maintain a list of parsers, returning a flattened list of parsers. + /// + /// + /// + /// + /// + /// + /// + public static ITextParser SelectMany(this ITextParser parser, Func selection, Func projector) { if (parser == null) throw new ArgumentNullException(nameof(parser)); + if (selection == null) throw new ArgumentNullException(nameof(selection)); - if (projection == null) - throw new ArgumentNullException(nameof(projection)); + + if (projector == null) + throw new ArgumentNullException(nameof(projector)); - return new SelectManyTextParser(parser, selection, projection); + return new SelectManyTextParser(parser, selection, projector); } - public static ITextParser SelectMany(this ITextParser parser, Func selection, Func projection) + /// + /// Applies a projection to a list of text parsers who maintain a list of parsers, returning a flattened list of parsers. + /// + /// + /// + /// + /// + /// + /// + public static ITextParser SelectMany(this ITextParser parser, Func selection, Func projector) { if (parser == null) throw new ArgumentNullException(nameof(parser)); + if (selection == null) throw new ArgumentNullException(nameof(selection)); - if (projection == null) - throw new ArgumentNullException(nameof(projection)); + + if (projector == null) + throw new ArgumentNullException(nameof(projector)); - return new SelectManyTextParser(parser, selection, projection); + return new SelectManyTextParser(parser, selection, projector); } - public static ITextParser SelectMany(this ITextParser parser, Func selection, Func projection) + /// + /// Applies a projection to a list of text parsers who maintain a list of parsers, returning a flattened list of parsers. + /// + /// + /// + /// + /// + /// + /// + /// + public static ITextParser SelectMany(this ITextParser parser, Func selection, Func projector) { if (parser == null) throw new ArgumentNullException(nameof(parser)); if (selection == null) throw new ArgumentNullException(nameof(selection)); - if (projection == null) - throw new ArgumentNullException(nameof(projection)); + if (projector == null) + throw new ArgumentNullException(nameof(projector)); - return new SelectManyTextParser(parser, selection, projection); + return new SelectManyTextParser(parser, selection, projector); } - public static ITextParser SelectMany(this ITextParser parser, Func> selection, Func projection) + /// + /// Applies a projection to a list of text parsers who maintain a list of parsers, returning a flattened list of parsers. + /// + /// + /// + /// + /// + /// + /// + /// + /// + public static ITextParser SelectMany(this ITextParser parser, Func> selection, Func projector) { if (parser == null) throw new ArgumentNullException(nameof(parser)); if (selection == null) throw new ArgumentNullException(nameof(selection)); - if (projection == null) - throw new ArgumentNullException(nameof(projection)); + if (projector == null) + throw new ArgumentNullException(nameof(projector)); - return new SelectManyTextParser(parser, selection, projection); + return new SelectManyTextParser(parser, selection, projector); } } } \ No newline at end of file diff --git a/src/Machete/Querying/SeriesExtensions.cs b/src/Machete/Querying/SeriesExtensions.cs index 111e9fd56..7ed5b935c 100644 --- a/src/Machete/Querying/SeriesExtensions.cs +++ b/src/Machete/Querying/SeriesExtensions.cs @@ -9,7 +9,7 @@ public static class SeriesExtensions { /// - /// Returns zero or exatly one parsed element. + /// Returns zero or exactly one parsed entity. /// /// /// @@ -17,7 +17,7 @@ public static class SeriesExtensions /// /// /// - public static IParser Optional(this IParser parser, T defaultValue = default(T)) + public static IParser Optional(this IParser parser, T defaultValue = default) { if (parser == null) throw new ArgumentNullException(nameof(parser)); @@ -66,7 +66,7 @@ public static class SeriesExtensions /// /// /// - public static IParser FirstOrDefault(this IParser> parser, T defaultValue = default(T)) + public static IParser FirstOrDefault(this IParser> parser, T defaultValue = default) { if (parser == null) throw new ArgumentNullException(nameof(parser)); @@ -81,7 +81,7 @@ public static class SeriesExtensions /// /// The default value if the series if empty. /// - public static ITextParser FirstOrDefault(this ITextParser parser, TextSpan defaultValue = default(TextSpan)) + public static ITextParser FirstOrDefault(this ITextParser parser, TextSpan defaultValue = default) { if (parser == null) throw new ArgumentNullException(nameof(parser)); @@ -98,7 +98,7 @@ public static ITextParser FirstOrDefault(this ITextParser parser, TextSpan defau /// The return type /// /// - public static IParser SingleOrDefault(this IParser> parser, T defaultValue = default(T)) + public static IParser SingleOrDefault(this IParser> parser, T defaultValue = default) { if (parser == null) throw new ArgumentNullException(nameof(parser)); diff --git a/src/Machete/Querying/SkipExtensions.cs b/src/Machete/Querying/SkipExtensions.cs index 92910ab2b..d2c3329d5 100644 --- a/src/Machete/Querying/SkipExtensions.cs +++ b/src/Machete/Querying/SkipExtensions.cs @@ -7,7 +7,7 @@ public static class SkipExtensions { /// - /// Skip until the except parser is not matched (note this is a combined parser, and not a primitive one) -- yea! + /// Skip over one or more entities, moving the cursor to the matched location and returning a list of skipped entities up to the match point. /// /// /// @@ -19,6 +19,7 @@ public static class SkipExtensions { if (parser == null) throw new ArgumentNullException(nameof(parser)); + if (until == null) throw new ArgumentNullException(nameof(until)); @@ -26,7 +27,7 @@ public static class SkipExtensions } /// - /// Skip until the except parser is not matched and then return the until parser + /// Skip until the specified entity is matched, moving the cursor to the matched location and returning a list of skipped entities including the entity that serves as the match condition. /// /// /// @@ -39,6 +40,7 @@ public static class SkipExtensions { if (parser == null) throw new ArgumentNullException(nameof(parser)); + if (until == null) throw new ArgumentNullException(nameof(until)); @@ -62,8 +64,10 @@ public static class SkipExtensions { if (parser == null) throw new ArgumentNullException(nameof(parser)); + if (until == null) throw new ArgumentNullException(nameof(until)); + if (resultParser == null) throw new ArgumentNullException(nameof(resultParser)); diff --git a/src/Machete/Querying/ThenExtensions.cs b/src/Machete/Querying/ThenExtensions.cs index 38d7fcf44..2dd0e8053 100644 --- a/src/Machete/Querying/ThenExtensions.cs +++ b/src/Machete/Querying/ThenExtensions.cs @@ -22,6 +22,7 @@ public static class ThenExtensions { if (first == null) throw new ArgumentNullException(nameof(first)); + if (second == null) throw new ArgumentNullException(nameof(second)); diff --git a/src/Machete/Querying/WhereExtensions.cs b/src/Machete/Querying/WhereExtensions.cs index 041de8908..3c9509730 100644 --- a/src/Machete/Querying/WhereExtensions.cs +++ b/src/Machete/Querying/WhereExtensions.cs @@ -6,10 +6,20 @@ public static class WhereExtensions { + /// + /// Returns a parser if the condition evaluates to true. + /// + /// + /// + /// + /// + /// + /// public static IParser Where(this IParser parser, Func condition) { if (parser == null) throw new ArgumentNullException(nameof(parser)); + if (condition == null) throw new ArgumentNullException(nameof(condition)); diff --git a/src/Machete/ResultExtensions.cs b/src/Machete/ResultExtensions.cs index c05d1c058..94e055930 100644 --- a/src/Machete/ResultExtensions.cs +++ b/src/Machete/ResultExtensions.cs @@ -121,7 +121,7 @@ public static class ResultExtensions } /// - /// Safely returns the from the parsed result. + /// Safely returns the from the parsed result. /// /// /// @@ -139,6 +139,15 @@ public static class ResultExtensions return projector(result.Result) ?? LayoutList.Missing(); } + /// + /// Safely returns the from the parsed result. + /// + /// + /// + /// + /// + /// + /// public static Result, TResult> Select(this Result, T> result, Func projector) { if (result.HasResult) @@ -147,6 +156,15 @@ public static class ResultExtensions return new Unmatched, TResult>(result.Next); } + /// + /// Safely returns the from the parsed result. + /// + /// + /// + /// + /// + /// + /// public static Result, TResult> Select(this Result, T> result, Func, T, Result, TResult>> projector) { if (result.HasResult) @@ -155,6 +173,14 @@ public static class ResultExtensions return new Unmatched, TResult>(result.Next); } + /// + /// Safely returns the from the parsed result. + /// + /// + /// + /// + /// + /// public static Result Select(this Result result, Func projector) { if (result.HasResult) @@ -163,6 +189,14 @@ public static class ResultExtensions return new Unmatched(result.Next); } + /// + /// Safely returns the from the parsed result. + /// + /// + /// + /// + /// + /// public static Result Select(this Result result, Func> projector) { if (result.HasResult) @@ -171,6 +205,14 @@ public static class ResultExtensions return new Unmatched(result.Next); } + /// + /// Returns a parser if the condition evaluates to true. + /// + /// + /// + /// + /// + /// public static Result, TResult> Where(this Result, TResult> result, Func filter) { if (result.HasResult && filter(result.Result)) @@ -179,6 +221,13 @@ public static class ResultExtensions return new Unmatched, TResult>(result.Next); } + /// + /// Returns a parser if the filter condition evaluates to true. + /// + /// + /// + /// + /// public static Result Where(this Result result, Func filter) { if (result.HasResult && filter(result.Result)) diff --git a/src/Machete/TextParsers/SelectTextParser.cs b/src/Machete/TextParsers/SelectTextParser.cs index e2a0dc189..3daf0d368 100644 --- a/src/Machete/TextParsers/SelectTextParser.cs +++ b/src/Machete/TextParsers/SelectTextParser.cs @@ -4,7 +4,7 @@ /// - /// Selects a matching result from the parser, and applies a projection to the result type + /// Selects a matching result from the parser and applies a projection to the result type /// public class SelectTextParser : ITextParser diff --git a/src/Machete/TranslateContext.cs b/src/Machete/TranslateContext.cs index 86468e8c2..31171626e 100644 --- a/src/Machete/TranslateContext.cs +++ b/src/Machete/TranslateContext.cs @@ -58,7 +58,7 @@ public interface TranslateContext : EntityResult Source { get; } /// - /// Create a result, which can be returned by the translater + /// Create a result, which can be returned by the translator /// /// /// @@ -67,7 +67,7 @@ TranslateResult Result(TResult result) where TResult : TSchema; /// - /// Create a result, which is mapped and returned by the translater + /// Create a result, which is mapped and returned by the translator /// /// /// The schema type, which must be derived from the diff --git a/src/Machete/Translators/TranslateContexts/EntityTranslateContext.cs b/src/Machete/Translators/TranslateContexts/EntityTranslateContext.cs index 8addd4b6a..3dcabed56 100644 --- a/src/Machete/Translators/TranslateContexts/EntityTranslateContext.cs +++ b/src/Machete/Translators/TranslateContexts/EntityTranslateContext.cs @@ -16,7 +16,7 @@ public class EntityTranslateContext : { readonly IContext _context; - public EntityTranslateContext(EntityResult source, Result, TInput> input, int? index = default(int?)) + public EntityTranslateContext(EntityResult source, Result, TInput> input, int? index = default) { Source = source; @@ -29,7 +29,7 @@ public EntityTranslateContext(EntityResult source, Result source, TInput input, bool hasInput, int? index = default(int?)) + public EntityTranslateContext(EntityResult source, TInput input, bool hasInput, int? index = default) { Source = source; @@ -40,7 +40,7 @@ public EntityTranslateContext(EntityResult source, TInput input, bool h _context = new BaseContext(); } - public EntityTranslateContext(IContext context, EntityResult source, TInput input, bool hasInput, int? index = default(int?)) + public EntityTranslateContext(IContext context, EntityResult source, TInput input, bool hasInput, int? index = default) { Source = source; @@ -51,7 +51,7 @@ public EntityTranslateContext(IContext context, EntityResult source, TI _context = context; } - EntityTranslateContext(IReadOnlyContextCollection contextCollection, EntityResult source, TInput input, bool hasInput, int? index = default(int?)) + EntityTranslateContext(IReadOnlyContextCollection contextCollection, EntityResult source, TInput input, bool hasInput, int? index = default) { Source = source; diff --git a/src/Machete/readme.md b/src/Machete/readme.md deleted file mode 100644 index 0f3854997..000000000 --- a/src/Machete/readme.md +++ /dev/null @@ -1,11 +0,0 @@ -# Machete - -The core parsing assembly. - -## Supported Frameworks - -The following .NET frameworks are supported: - -- .NET 4.5.2 -- .NET Standard 2.0 -