Comments (13)
@nycbauer Is this still an issue after our chat room discussion?
from machete.
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.
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.
Right, but my situation is where there is no BusinessContactInformation.
You can try this file
Test835x12.txt
from machete.
fixed in 1.0.239
from machete.
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.
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.
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.
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.
So, this solves the broker test.
from machete.
Dude, you broke the test by putting an invalid character in the time. Look at your diff, that test worked before
from machete.
This is fixed in 1.0.241. Waiting confirmation from @nycbauer
from machete.
Confirmed! Thank you very much!
from machete.
Related Issues (20)
- Add Apache 2.0 license on source code HOT 1
- Documentation and Project Page Update HOT 3
- Cannot stream parse through multiple layouts in the same transaction in X12 HOT 1
- Map condition doesn't work when SegmentList is followed by Segment of same entity type HOT 1
- Create a way to initialize entities through Translate API
- X12 Select applicative throwing NullReferenceException when segment missing HOT 2
- Accessing missing Layout through indexer off of Select applicative throwing ValueMissingException HOT 4
- Fix issues with HL7 2.6 schema HOT 1
- Create way to override entity registration
- DateTimePeriod in X12 Schema not implemented HOT 3
- Layout parser failing to parse X12 loop HOT 1
- Layout parser failing to parse loop 2300 when PAT segment missing
- Not able to add user-defined layouts when registering the schema
- Add ability to return all registered layouts and entities
- Need ability to format a Layout
- Really poor performance with streaming parser HOT 4
- Update 5010 AAA segment HOT 2
- 5010 CTT Segment - Description should be string HOT 2
- Support H3 Segment for 5010 spec HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from machete.