예제 #1
0
        public async Task WhenSendingMultipleSequentialMessageInNonStrictModeThenGetsAckForAll()
        {
            IMessageControlIdGenerator generator = DefaultMessageControlIdGenerator.Instance;

            await using var client = await MllpClient.Create(
                            IPAddress.Loopback.ToString(),
                            Port,
                            strict : false).ConfigureAwait(false);

            var tasks = Enumerable.Repeat(false, 300)
                        .Select(
                async _ =>
            {
                var request = new QBP_Q11();
                request.MSH.MessageControlID.Value = generator.NextId();
                var response =
                    // ReSharper disable once AccessToDisposedClosure
                    await client.Send(request).ConfigureAwait(false);
                return(response.Message is ACK);
            });

            var results = await Task.WhenAll(tasks).ConfigureAwait(false);

            Assert.All(results, Assert.True);
        }
        public async Task WhenSendingMessageThenGetsAck()
        {
            IMessageControlIdGenerator generator = DefaultMessageControlIdGenerator.Instance;
            var client = await MllpClient.Create(IPAddress.Loopback.ToString(), Port);

            var request = new QBP_Q11();

            request.MSH.MessageControlID.Value = generator.NextId();
            var response = await client.Send(request).ConfigureAwait(false);

            Assert.NotNull(response);
        }
예제 #3
0
            public async Task WhenHandlingMessageThenReturnsResponse()
            {
                IMessageControlIdGenerator generator = DefaultMessageControlIdGenerator.Instance;
                var adt = new ADT_A01();

                adt.MSH.MessageControlID.Value = generator.NextId();

                var msg      = new Hl7Message(adt, "");
                var response = await _defaultHl7MessageMiddleware.Handle(msg).ConfigureAwait(false);

                Assert.NotNull(response);
            }
        public async Task WhenSendingUpdateMessageThenIncludesObserver()
        {
            IMessageControlIdGenerator generator = DefaultMessageControlIdGenerator.Instance;
            var client = await MllpClient.Create(IPAddress.Loopback.ToString(), Port);

            var request = new SSU_U03();

            request.MSH.MessageControlID.Value = generator.NextId();
            var container = request.AddSPECIMEN_CONTAINER();
            var obx       = container.AddOBX();
            var observer  = obx.GetResponsibleObserver(0);

            observer.IDNumber.Value = "operatorId";
            var response = await client.Send(request).ConfigureAwait(false);

            Assert.NotNull(response);
        }
예제 #5
0
        public async Task WhenSendingMultipleParallelMessageThenGetsAckForAll()
        {
            IMessageControlIdGenerator generator = DefaultMessageControlIdGenerator.Instance;

            var tasks = Enumerable.Repeat(false, 5)
                        .Select(
                async _ =>
            {
                await using var client = await MllpClient.Create(
                                IPAddress.Loopback.ToString(),
                                Port).ConfigureAwait(false);
                var request = new QBP_Q11();
                request.MSH.MessageControlID.Value = generator.NextId();
                var response =
                    await client.Send(request).ConfigureAwait(false);
                return(response?.Message is ACK);
            });

            var results = await Task.WhenAll(tasks).ConfigureAwait(false);

            Assert.All(results, Assert.True);
        }