public void Verify_can_convert_DateTime_to_different_time_zone_given_TimeZoneInfo() { const string message = @"MSH|^~\&|MACHETELAB||UBERMED||201701131234||ORU^R01|K113|P| ZHX|20170113|201705221530"; Parsed <HL7Entity> parsed = Parser.Parse(message); var query = parsed.CreateQuery(q => from msh in q.Select <MSHSegment>() from zhx in q.Select <DateTimeSegment>() select new { MSH = msh, ZHX = zhx }); var result = parsed.Query(query); Value <DateTimeOffset> dt = result.Value.ZHX.TestDateTimeOffsetWithTime; TimeSpan offset = new TimeSpan(0, 8, 0, 0); DateTimeOffset dateTime = dt.ValueOrDefault(); DateTimeOffset expected = new DateTimeOffset(dateTime.DateTime, offset); DateTimeOffset actual = dt.ToOffset(offset).ValueOrDefault(); Assert.AreEqual(expected, actual); }
public void Verify_IsEqualTo_can_evaluate_component_field_correctly() { const string message1 = @"MSH|^~\&|LIFTLAB||UBERMED||201701131234||ORU^R01|K113|P|"; Parsed <HL7Entity> parsed1 = Parser.Parse(message1); var query1 = parsed1.CreateQuery(q => from x in q.Select <MSHSegment>() select x); var result1 = parsed1.Query(query1); const string message2 = @"MSH|^~\&|LIFTLAB||UBERMED||201701131234||ORU^R02|K113|P|"; Parsed <HL7Entity> parsed2 = Parser.Parse(message2); var query2 = parsed2.CreateQuery(q => from x in q.Select <MSHSegment>() select x); var result2 = parsed2.Query(query2); bool actual = result1.Value.MessageType.IsEqualTo(result2.Value.MessageType.Value); Assert.AreEqual(false, actual); }
public void Should_pull_the_optional_segments_without_a_glitch() { const string message = @"MSH|^~\&|LIFTLAB||UBERMED||201701131234||ORU^R01|K113|P| EVN|A08|201701131234|||12901"; Parsed <HL7Entity> parsed = Parser.Parse(message); ILayout <MessageLayout, HL7Entity> layout; Assert.That(Structure.TryGetLayout(out layout), Is.True); Parser <HL7Entity, MessageLayout> query = parsed.CreateQuery(q => layout.CreateQuery(TemplateQueryOptions.None, q)); Result <Cursor <HL7Entity>, MessageLayout> result = parsed.Query(query); Assert.That(result.HasValue, Is.True); Assert.That(result.Value.MSH, Is.Not.Null); Assert.That(result.Value.MSH.IsPresent, Is.True); Assert.That(result.Value.Optional.IsPresent, Is.True); Assert.That(result.Value.Optional.Value.EVN, Is.Not.Null); Assert.That(result.Value.Optional.Value.EVN.IsPresent, Is.True); Assert.That(result.Value.Optional.Value.EVN.HasValue, Is.True); Assert.That(result.Value.Optional.Value.EVN.Value.SegmentId.HasValue, Is.True); Assert.That(result.Value.Optional.Value.EVN.Value.RecordedDateTime.HasValue, Is.True); }
public void Should_parse_a_series_of_segments_but_not_match() { const string message = @"MSH|^~\&|MACHETELAB||UBERMED||201701131234||ORU^R01|K113|P|"; Parsed <HL7Entity> parsed = Parser.Parse(message); var result = parsed.Query(q => from msh in q.Select <MSHSegment>() from evn in q.Select <EVNSegment>() select new { MSH = msh, EVN = evn }); Assert.That(result.HasValue, Is.False); }
public void Should_not_blow_up() { const string message = @"MSH|^~\&|MACHETELAB||UBERMED||201701131234|||K113|P|"; Parsed <HL7Entity> parsed = Parser.Parse(message); var mshSegmentQuery = parsed.CreateQuery(q => from x in q.Select <MSHSegment>() select x); var result = parsed.Query(mshSegmentQuery); Assert.That(result.HasValue, Is.True); }
public void Verify_ValueOrEmpty_returns_empty_when_field_missing() { const string message = @"MSH|^~\&|LIFTLAB||UBERMED||201701131234|||K113|P|"; Parsed <HL7Entity> parsed = Parser.Parse(message); var query = parsed.CreateQuery(q => from x in q.Select <MSHSegment>() select x); var result = parsed.Query(query); Assert.AreEqual(string.Empty, result.Value.MessageType.Value.MessageCode.ValueOrEmpty()); }
public void Should_throw_ValueMissingException() { const string message = @"MSH|^~\&|MACHETELAB||UBERMED||201701131234|||K113|P|"; Parsed <HL7Entity> parsed = Parser.Parse(message); var query = Query <HL7Entity> .Create(q => from x in q.Select <MSHSegment>() select new { x.MessageType }); var result = parsed.Query(query); Assert.That(result.HasValue, Is.True); Assert.Throws <ValueMissingException>(() => { string messageCode = result.Value.MessageType.Value.MessageCode.Value; }); }
public void Should_parse_a_segment_and_parse_into_the_component() { const string message = @"MSH|^~\&|MACHETELAB||UBERMED||201701131234||ORU^R01|K113|P|"; Parsed <HL7Entity> parsed = Parser.Parse(message); var result = parsed.Query(q => from msh in q.Select <MSHSegment>() from mt in msh.MessageType from mc in mt.MessageCode from te in mt.TriggerEvent where mc == "ORU" select new { MSH = msh, MT = mt, MC = mc, TE = te }); Assert.That(result.HasValue, Is.True); Assert.That(result.Value.MC, Is.EqualTo("ORU")); Assert.That(result.Value.TE, Is.EqualTo("R01")); }
public void Should_be_possible() { const string message = @"MSH|^~\&|LIFTLAB||UBERMED||201701131234||^R01|K113|P|"; Parsed <HL7Entity> parsed = Parser.Parse(message); var query = parsed.CreateQuery(q => from x in q.Select <MSHSegment>() select x); var result = parsed.Query(query); var messageType = result.Value.MessageType.Value; string messageCode = messageType.MessageCode.ValueOrDefault("ORU"); Assert.IsNotNull(messageType); Assert.That(messageType.MessageCode.HasValue, Is.False); Assert.AreEqual("ORU", messageCode); }
public void Verify_can_convert_datetimeoffset_to_different_time_zone() { const string message = @"MSH|^~\&|MACHETELAB||UBERMED||201701131234||ORU^R01|K113|P|"; Parsed <HL7Entity> parsed = Parser.Parse(message); var query = parsed.CreateQuery(q => from x in q.Select <MSHSegment>() select x); var result = parsed.Query(query); DateTimeOffset dt = result.Value.CreationDateTime.Value; var destinationTimeZone = TimeZoneInfo.CreateCustomTimeZone("Pacific Standard Time", new TimeSpan(0, 8, 0, 0), "PST", "PST"); DateTimeOffset expected = TimeZoneInfo.ConvertTime(dt, destinationTimeZone); DateTimeOffset actual = result.Value.CreationDateTime.ToTimeZone(destinationTimeZone).ValueOrDefault(); Assert.AreEqual(expected, actual); }
public void Should_be_able_to_skip_segments_via_selection() { const string message = @"MSH|^~\&|MACHETELAB||UBERMED||201701131234||ORU^R01|K113|P| EVN|A08|201701131234|||12901"; Parsed <HL7Entity> parsed = Parser.Parse(message); var result = parsed.Query(q => from ignored in q.Except <HL7Segment, EVNSegment>().ZeroOrMore() from segment in q.Select <EVNSegment>() where segment.EntityType.IsUnknown == false select new { segment, ignored }); Assert.That(result.HasValue, Is.True); Assert.That(result.Value.segment.SegmentId, Is.Not.Null); Assert.That(result.Value.segment.SegmentId.HasValue, Is.True); Assert.That(result.Value.segment.SegmentId.Value, Is.EqualTo("EVN")); Assert.That(result.Value.ignored.Count, Is.EqualTo(1)); }
public void Should_parse_a_series_of_segments_using_optional() { const string message = @"MSH|^~\&|MACHETELAB||UBERMED||201701131234||ORU^R01|K113|P|"; Parsed <HL7Entity> parsed = Parser.Parse(message); var mshSegmentQuery = parsed.CreateQuery(q => from msh in q.Select <MSHSegment>() from evn in q.Select <EVNSegment>().Optional() select new { MSH = msh, EVN = evn }); var result = parsed.Query(mshSegmentQuery); Assert.That(result.HasValue, Is.True); Assert.That(result.Value.MSH, Is.Not.Null); Assert.That(result.Value.MSH.MessageType.HasValue, Is.True); Assert.That(result.Value.MSH.MessageType.Value.MessageCode.HasValue, Is.True); Assert.That(result.Value.MSH.MessageType.Value.MessageCode.Value, Is.EqualTo("ORU")); Assert.That(result.Value.EVN, Is.Null); }
public async Task Should_parse_a_series_of_segments() { const string message = @"MSH|^~\&|LIFTLAB||UBERMED||201701131234||ORU^R01|K113|P| EVN|A08|201701131234|||12901"; Parsed <HL7Entity> parsed = Parser.Parse(message); var mshSegmentQuery = parsed.CreateQuery(q => from msh in q.Select <MSH>() from evn in q.Select <EVN>() select new { MSH = msh, EVN = evn }); var result = parsed.Query(mshSegmentQuery); Assert.That(result.HasValue, Is.True); Assert.That(result.Value.MSH, Is.Not.Null); Assert.That(result.Value.MSH.MessageType.HasValue, Is.True); Assert.That(result.Value.MSH.MessageType.Value.MessageCode.HasValue, Is.True); Assert.That(result.Value.MSH.MessageType.Value.MessageCode.Value, Is.EqualTo("ORU")); Assert.That(result.Value.EVN, Is.Not.Null); Assert.That(result.Value.EVN.RecordedDateTime.Value, Is.EqualTo(new DateTimeOffset(2017, 1, 13, 12, 34, 0, TimeSpan.Zero))); }
public void Should_be_possible() { const string message = @"MSH|^~\&|LIFTLAB||UBERMED||201701131234||ORU^R01|K113|P|"; Parsed <HL7Entity> parsed = Parser.Parse(message); ILayout <MessageLayout, HL7Entity> layout; Assert.That(Structure.TryGetLayout(out layout), Is.True); Parser <HL7Entity, MessageLayout> query = parsed.CreateQuery(q => layout.CreateQuery(TemplateQueryOptions.None, q)); Result <Cursor <HL7Entity>, MessageLayout> result = parsed.Query(query); Assert.That(result.HasValue, Is.True); Assert.That(result.Value.MSH, Is.Not.Null); Assert.That(result.Value.MSH.IsPresent, Is.True); Assert.That(result.Value.Optional.IsPresent, Is.True); Assert.That(result.Value.Optional.Value.EVN, Is.Not.Null); Assert.That(result.Value.Optional.Value.EVN.IsPresent, Is.False); }