Giter Site home page Giter Site logo

X12 - incorrect mapping about machete HOT 13 CLOSED

phatboyg avatar phatboyg commented on May 25, 2024
X12 - incorrect mapping

from machete.

Comments (13)

ahives avatar ahives commented on May 25, 2024

@nycbauer Is this still an issue after our chat room discussion?

from machete.

nycbauer avatar nycbauer commented on May 25, 2024

I've investigated this further, and it's a similar but different issue. In the L1000A loop there are two PER sections, the first is the Payer Business Contact Information, which starts as PERCX, and that is an optional segment, while the next one is the Payer Technical Contact Information which comes in as PERBL, which is required.
When the parser gets to the first PER parser, it says it found it, but it found the PERBL, not the PERCX (which is not found, but is OK). It should also be checking the Contact Function Code to determine if it is in fact the correct match.

from machete.

ahives avatar ahives commented on May 25, 2024

If BusinessContactInformation is present it must have at least ContactFunctionCode. Everything else can be empty. Do you have some data that is not real to show the issue so that I can create tests with?

from machete.

nycbauer avatar nycbauer commented on May 25, 2024

Right, but my situation is where there is no BusinessContactInformation.

You can try this file
Test835x12.txt

from machete.

ahives avatar ahives commented on May 25, 2024

fixed in 1.0.239

from machete.

nycbauer avatar nycbauer commented on May 25, 2024

Issue85_passing.txt
Attached is the same file as above but with an added PERCX line above the PERBL so that it will pass.

from machete.

ahives avatar ahives commented on May 25, 2024

If a Layout was defined that has an optional segment of a particular type and the very next property as a required list of segments of the same type the parser gets confused. A good example of this is L1000A_835. It defines a segment BusinessContactInformation that is optional followed by a segment list TechnicalContactInformation that is required. The parser seems to get confused here because if the optional one, BusinessContactInformation, is missing it doesn't understand how to parse the other one. Also, I think this may be a problem moving forward if it confuses these and add BusinessContactInformation into the segment list that is TechnicalContactInformation

from machete.

phatboyg avatar phatboyg commented on May 25, 2024

So, you realize there isn't any way to differentiate between the two different segments at this point, given how the parser is mapping segments right now, right?

With this:

        Segment<PER> BusinessContactInformation { get; }
        
        SegmentList<PER> TechnicalContactInformation { get; }
        
        Segment<PER> PayerWebsite { get; }

There needs to be a way in the mapping to specify a condition beyond just [0] == "PER" - since it depends upon values defined in other elements of the segment.

from machete.

ahives avatar ahives commented on May 25, 2024

Now that I think about it, this is similar to the issue in HL7 for orders where you should be able to OR segments (issue #34). This problem is exceptionally difficult for a couple reasons:

  • Some segments are optional
  • They are of the same type of entity
  • There is a segment list involved
  • They are defined back-to-back

Would it be wrong to just represent it as:
SegmentList<PER> ContactInformation { get; }

I am assuming there is something in the segment that separates them apart anyway.

from machete.

phatboyg avatar phatboyg commented on May 25, 2024

So, this solves the broker test.

from machete.

phatboyg avatar phatboyg commented on May 25, 2024

Dude, you broke the test by putting an invalid character in the time. Look at your diff, that test worked before

from machete.

ahives avatar ahives commented on May 25, 2024

This is fixed in 1.0.241. Waiting confirmation from @nycbauer

from machete.

nycbauer avatar nycbauer commented on May 25, 2024

Confirmed! Thank you very much!

from machete.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.