private static void DemonstrateConfigurableContextPidSegmentIsMissing() { try { //ADT A01 message with missing PID segment const string adtMessageWithPidSegmentMissing = "MSH|^~\\&|SENDING_APPLICATION|SENDING_FACILITY|RECEIVING_APPLICATION|RECEIVING_FACILITY|" + "20110613083617||ADT^A01|2323232223232|P|2.3||||\r" + "EVN|A01|20110613083617||Some Reason|\r" + "PV1|1|O|||||^^^^^^^^|^^^^^^^^";; LogToDebugConsole("Demonstration of NHAPI Tools Configurable Context..."); LogToDebugConsole("Validation rule specified in app.config called 'MandatorySegmentADT_A01_PID' should fail here..."); var parser = new PipeParser(); //this should load the var context = new ConfigurableContext(parser.ValidationContext); parser.ValidationContext = context; //parse the message containing PID message segment //this should trigger a validation exception parser.Parse(adtMessageWithPidSegmentMissing); } catch (System.Exception ex) { LogToDebugConsole("Validation exception thrown..."); if (ex.InnerException != null) { LogToDebugConsole("Configurable Context-based Validation: Message failed during parsing:" + ex.InnerException.Message); } } }
private static void TestParserConfigurableContext() { if (_messages.Count > 0) { Console.WriteLine("\n==============================================\nTesting parsing with configurable context."); var parser = new PipeParser(); var context = new ConfigurableContext(parser.ValidationContext); parser.ValidationContext = context; Console.WriteLine("Encodingrules added:\t {0}", context.EncodingRuleCount); Console.WriteLine("Messagerules added:\t {0}", context.MessageRuleCount); Console.WriteLine("PrimitiveTyperules added: {0}", context.PrimitiveRuleCount); Console.WriteLine(); var count = 0; foreach (var m in _messages) { var im = parser.Parse(m); _parsedMessages.Add(im); var structure = im.GetStructureName(); Console.WriteLine("Parsed {0}, V{1}.", structure, im.Version); count++; } Console.WriteLine("\nDone! (Parsed {0})", count); } }
public HL7RequestInfo ParseRequestInfo(string message, string protocol) { HL7RequestInfo result = new HL7RequestInfo(); PipeParser parser = new PipeParser(); try { ConfigurableContext configContext = new ConfigurableContext(parser.ValidationContext); parser.ValidationContext = configContext; } catch { // Ignore any error, since the config is probably missing } try { IMessage hl7Message = parser.Parse(message); result = new HL7RequestInfo(); if (HandleEachMessageAsEvent) { result.Key = "V" + hl7Message.Version.Replace(".", "") + "." + hl7Message.GetStructureName(); } else { result.Key = "V" + hl7Message.Version.Replace(".", "") + ".MessageFactory"; } if (!string.IsNullOrEmpty(protocol)) { result.Key += protocol; } result.Message = hl7Message; // Parse the message return(result); } catch (Exception ex) { var location = ConfigurationManager.AppSettings["ParseErrorLogDirectory"]; if (!string.IsNullOrEmpty(location)) { if (!Directory.Exists(location)) { Directory.CreateDirectory(location); } string filename = string.Format("{0}_{1}_{2}", DateTime.Now.ToString("yyyyMMdd"), DateTime.Now.ToString("HHmmssfff"), Guid.NewGuid()); string fullPath = Path.Combine(location, filename); File.WriteAllText(fullPath + ".HL7", message); string errorMessage = ex.ToString(); File.WriteAllText(fullPath + ".log", errorMessage); } throw; } }
public HL7RequestInfo ParseRequestInfo(string message, string protocol) { HL7RequestInfo result = new HL7RequestInfo(); PipeParser parser = new PipeParser(); try { ConfigurableContext configContext = new ConfigurableContext(parser.ValidationContext); parser.ValidationContext = configContext; } catch (Exception ex) { // Ignore any error, since the config is probably missing } try { IMessage hl7Message = parser.Parse(message); result = new HL7RequestInfo(); if (HandleEachMessageAsEvent) { result.Key = "V" + hl7Message.Version.Replace(".", "") + "." + hl7Message.GetStructureName(); } else { result.Key = "V" + hl7Message.Version.Replace(".", "") + ".MessageFactory"; } if (!string.IsNullOrEmpty(protocol)) { result.Key += protocol; } result.Message = hl7Message; } catch (Exception ex) { XmlDocument xml = HL7ToXmlConverter.ConvertToXml(message); var version = xml.GetElementsByTagName("MSH.11").Item(0); result.versionname = Convert.ToString(version.InnerText); result.feild10 = Convert.ToString(xml.GetElementsByTagName("MSH.9").Item(0).InnerText); result.sendingapp = Convert.ToString(xml.GetElementsByTagName("MSH.2").Item(0).InnerText); result.sendingEnvironment = Convert.ToString(xml.GetElementsByTagName("MSH.3").Item(0).InnerText); result.feild11 = Convert.ToString(xml.GetElementsByTagName("MSH.10").Item(0).InnerText); result.feild15 = Convert.ToString(xml.GetElementsByTagName("MSH.14").Item(0).InnerText); result.feild16 = Convert.ToString(xml.GetElementsByTagName("MSH.15").Item(0).InnerText); } // Parse the message return(result); }
public async Task Can_retrieve_record_using_first_or_Default_asynchronously() { var configContext = new ConfigurableContext<TestDbContext>(ctx => { ctx.Setup(x => x.TestRecords, new TestRecord { Id = 1, Name = "A" }, new TestRecord { Id = 2, Name = "B" }); }); var opHelper = new DbOperationsHelper(configContext); var result = await opHelper.GetRecordAsync(t => t.Id == 1); result.Should().NotBeNull(); result.Id.Should().Be(1); result.Name.Should().Be("A"); }
public void Can_retrieve_records_using_where_method() { var configContext = new ConfigurableContext<TestDbContext>(ctx => { ctx.Setup(x => x.TestRecords, new TestRecord { Id = 1, Name = "A" }, new TestRecord { Id = 2, Name = "B" }, new TestRecord { Id = 1, Name = "C" }); }); var opHelper = new DbOperationsHelper(configContext); var results = opHelper.GetRecords(t => t.Id == 1)?.ToArray(); results.Should().HaveCount(2); results.Should().Contain(t => t.Id == 1 && t.Name == "A"); results.Should().Contain(t => t.Id == 1 && t.Name == "C"); }
public void ParsesAllHl7MessagesWithConfigurableContext() { Console.WriteLine("\n==============================================\nTesting parsing with configurable context."); // Arrange var expectedEncodingRulesCount = 1; var expectedMessageRulesCount = 5; var expectedPrimitiveTypeRulesCount = 0; var expectedParse = new List <ParseResult> { new ParseResult("ADT_A01", "2.5"), new ParseResult("ADT_A08", "2.3"), new ParseResult("ADT_A08", "2.3"), new ParseResult("DFT_P03", "2.3"), new ParseResult("ORU_R01", "2.4"), new ParseResult("SIU_S12", "2.3") }; var messages = GetHl7Strings(); var parser = new PipeParser(); var context = new ConfigurableContext(parser.ValidationContext); parser.ValidationContext = context; Console.WriteLine("Encoding Rules added:\t\t{0}", context.EncodingRuleCount); Console.WriteLine("Message Rules added:\t\t{0}", context.MessageRuleCount); Console.WriteLine("PrimitiveType Rules added:\t{0}\n", context.PrimitiveRuleCount); var parsed = new List <ParseResult>(); foreach (var m in messages) { var im = parser.Parse(m); var structure = im.GetStructureName(); Console.WriteLine("Parsed {0}, V{1}.", structure, im.Version); parsed.Add(new ParseResult(structure, im.Version)); } Assert.AreEqual(expectedEncodingRulesCount, context.EncodingRuleCount); Assert.AreEqual(expectedMessageRulesCount, context.MessageRuleCount); Assert.AreEqual(expectedPrimitiveTypeRulesCount, context.PrimitiveRuleCount); Assert.AreEqual(expectedParse, parsed); Console.WriteLine("\nDone! (Parsed {0})", parsed.Count); }
public async Task Can_retrieve_records_with_async() { var configContext = new ConfigurableContext<TestDbContext>(ctx => { ctx.Setup(x => x.TestRecords, new TestRecord { Id = 1, Name = "A" }, new TestRecord { Id = 2, Name = "B" }, new TestRecord { Id = 1, Name = "C" }); }); var opHelper = new DbOperationsHelper(configContext); var results = await opHelper.GetRecordsAsync(t => t.Id == 1); results.Should().HaveCount(2); results.Should().Contain(t => t.Id == 1 && t.Name == "A"); results.Should().Contain(t => t.Id == 1 && t.Name == "C"); }
public void Can_verify_specific_entity_was_not_saved() { var testContext = new ConfigurableContext<TestDbContext>(ctx => { ctx.Setup(x => x.TestRecords, new TestRecord { Id = 1, Name = "Not Joe"}); }); var dbOperationHelper = new DbOperationsHelper(testContext); var testRecord = new TestRecord { Id = 2, Name = "Anything" }; dbOperationHelper.CreateInvalidTestRecord(testRecord); testContext.HasNotBeenSaved<TestRecord>(x => x.Id == 1 && x.Name == "Anything"); }
public void Can_verify_no_entities_of_type_were_saved() { var testContext = new ConfigurableContext<TestDbContext>(ctx => { ctx.Setup(x => x.TestRecords, new List<TestRecord>()); }); var dbOperationHelper = new DbOperationsHelper(testContext); var testRecord = new TestRecord { Id = 1, Name = "Anything" }; dbOperationHelper.CreateInvalidTestRecord(testRecord); testContext.HasNotBeenSaved<TestRecord>(); }
public void Can_verify_new_entity_has_been_saved_with_correct_properties() { var testContext = new ConfigurableContext<TestDbContext>(ctx => { ctx.Setup(x => x.TestRecords, new List<TestRecord>()); }); var dbOperationHelper = new DbOperationsHelper(testContext); var testRecord = new TestRecord { Id = 1, Name = "Anything" }; dbOperationHelper.CreateTestRecord(testRecord); testContext.HasBeenSaved<TestRecord>(x => x.Id == 1 && x.Name == "Anything"); }
public void Can_remove_existing_entity() { var testRecord = new TestRecord { Id = 1, Name = "Anything" }; var testContext = new ConfigurableContext<TestDbContext>(ctx => { ctx.Setup(x => x.TestRecords, testRecord); }); var dbOperationHelper = new DbOperationsHelper(testContext); dbOperationHelper.RemoveTestRecord(1); testContext.HasNotBeenSaved<TestRecord>(x => x.Id == 1); }
public HL7RequestInfo ParseRequestInfo(string message, string protocol) { HL7RequestInfo result = new HL7RequestInfo(); PipeParser parser = new PipeParser(); try { ConfigurableContext configContext = new ConfigurableContext(parser.ValidationContext); parser.ValidationContext = configContext; } catch { // Ignore any error, since the config is probably missing } IMessage hl7Message = parser.Parse(message); result = new HL7RequestInfo(); if (HandleEachMessageAsEvent) { result.Key = "V" + hl7Message.Version.Replace(".", "") + "." + hl7Message.GetStructureName(); } else { result.Key = "V" + hl7Message.Version.Replace(".", "") + ".MessageFactory"; } if (!string.IsNullOrEmpty(protocol)) { result.Key += protocol; } result.Message = hl7Message; // Parse the message return(result); }
private static void DemonstrateConfigurableContextEvn4FieldIsEmpty() { try { //ADT A01 message with ENV-4 field data left empty const string adtMessageToValidateAgainst = "MSH|^~\\&|SENDING_APPLICATION|SENDING_FACILITY|RECEIVING_APPLICATION|RECEIVING_FACILITY|" + "20110613083617||ADT^A01|2323232223232|P|2.3||||\r" + "EVN|A01|20110613083617|||\r" + "PID|1||135769||MOUSE^MICKEY^||19281118|M|||123 Main St.^^Lake Buena Vista^FL^32830|" + "|(407)939-1289^^^[email protected]|||||1719|99999999||||||||||||||||||||\r" + "PV1|1|O|||||^^^^^^^^|^^^^^^^^";; LogToDebugConsole("Demonstration of NHAPI Tools Configurable Context..."); LogToDebugConsole("Validation rule specified in app.config called 'MandatoryFieldADT_EVN-4' should fail here..."); var parser = new PipeParser(); //this should load the var context = new ConfigurableContext(parser.ValidationContext); parser.ValidationContext = context; //parse the message containing no event reason code data (EVN-4) //this should trigger a validation exception parser.Parse(adtMessageToValidateAgainst); } catch (System.Exception ex) { LogToDebugConsole("Validation exception thrown..."); if (ex.InnerException != null) { LogToDebugConsole("Configurable Context-based Validation: Message failed during parsing:" + ex.InnerException.Message); } } }
public void Can_verify_updated_entity_has_been_saved_with_modified_properties() { var testRecord = new TestRecord { Id = 1, Name = "Anything" }; var testContext = new ConfigurableContext<TestDbContext>(ctx => { ctx.Setup(x => x.TestRecords, testRecord); }); var dbOperationHelper = new DbOperationsHelper(testContext); dbOperationHelper.UpdateTestRecordName(1, "Joe"); testContext.HasBeenSaved<TestRecord>(x => x.Name == "Joe"); }
private static void TestParserConfigurableContext() { if (messages.Count > 0) { Console.WriteLine("\n==============================================\nTesting parsing with configurable context."); PipeParser parser = new PipeParser(); ConfigurableContext context = new ConfigurableContext(parser.ValidationContext); parser.ValidationContext = context; Console.WriteLine("Encodingrules added:\t {0}", context.EncodingRuleCount); Console.WriteLine("Messagerules added:\t {0}", context.MessageRuleCount); Console.WriteLine("PrimitiveTyperules added: {0}", context.PrimitiveRuleCount); Console.WriteLine(); int count = 0; foreach (string m in messages) { IMessage im = parser.Parse(m); parsedMessages.Add(im); string structure = im.GetStructureName(); Console.WriteLine("Parsed {0}, V{1}.", structure, im.Version); count++; } Console.WriteLine("\nDone! (Parsed {0})", count); } }